From 0b193b98347b5563e59492d8f57eba8f67af6d23 Mon Sep 17 00:00:00 2001
From: liusheng <337615773@qq.com>
Date: 星期二, 27 六月 2023 11:35:54 +0800
Subject: [PATCH] 新增题目

---
 smartor/src/main/java/com/smartor/service/impl/PatArchiveServiceImpl.java |  424 ++++++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 358 insertions(+), 66 deletions(-)

diff --git a/smartor/src/main/java/com/smartor/service/impl/PatArchiveServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/PatArchiveServiceImpl.java
index 59996fc..55eb072 100644
--- a/smartor/src/main/java/com/smartor/service/impl/PatArchiveServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/PatArchiveServiceImpl.java
@@ -1,134 +1,426 @@
 package com.smartor.service.impl;
 
-import java.util.List;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.text.SimpleDateFormat;
+import java.util.*;
+import java.util.stream.Collectors;
+
+import com.ruoyi.common.core.domain.entity.SysUser;
 import com.ruoyi.common.utils.DateUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import java.util.ArrayList;
+import com.ruoyi.common.utils.DtoConversionUtils;
 import com.ruoyi.common.utils.StringUtils;
-import org.springframework.transaction.annotation.Transactional;
-import com.smartor.domain.PatMedOuthosp;
+import com.smartor.domain.*;
+import com.smartor.mapper.BaseTagMapper;
+import com.smartor.mapper.PatArchivetagMapper;
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.lang3.ObjectUtils;
+import org.apache.poi.hssf.usermodel.HSSFDateUtil;
+import org.apache.poi.ss.formula.functions.Now;
+import org.apache.poi.ss.usermodel.*;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.core.parameters.P;
+import org.springframework.stereotype.Service;
 import com.smartor.mapper.PatArchiveMapper;
-import com.smartor.domain.PatArchive;
 import com.smartor.service.IPatArchiveService;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.multipart.MultipartFile;
 
 /**
  * 鎮h�呮。妗圫ervice涓氬姟灞傚鐞�
- * 
- * @author ruoyi
- * @date 2023-02-22
+ *
+ * @author smartor
+ * @date 2023-03-04
  */
 @Service
-public class PatArchiveServiceImpl implements IPatArchiveService 
-{
+public class PatArchiveServiceImpl implements IPatArchiveService {
     @Autowired
     private PatArchiveMapper patArchiveMapper;
 
+    @Autowired
+    private BaseTagMapper baseTagMapper;
+
+    @Autowired
+    private PatArchivetagMapper patArchivetagMapper;
+
+
     /**
      * 鏌ヨ鎮h�呮。妗�
-     * 
-     * @param PatID 鎮h�呮。妗堜富閿�
+     *
+     * @param patid 鎮h�呮。妗堜富閿�
      * @return 鎮h�呮。妗�
      */
     @Override
-    public PatArchive selectPatArchiveByPatID(Long PatID)
-    {
-        return patArchiveMapper.selectPatArchiveByPatID(PatID);
+    public PatArchive selectPatArchiveByPatid(Long patid) {
+        return patArchiveMapper.selectPatArchiveByPatid(patid);
     }
 
     /**
      * 鏌ヨ鎮h�呮。妗堝垪琛�
-     * 
+     *
      * @param patArchive 鎮h�呮。妗�
      * @return 鎮h�呮。妗�
      */
     @Override
-    public List<PatArchive> selectPatArchiveList(PatArchive patArchive)
-    {
+    public List<PatArchive> selectPatArchiveList(PatArchive patArchive) {
         return patArchiveMapper.selectPatArchiveList(patArchive);
     }
 
     /**
      * 鏂板鎮h�呮。妗�
-     * 
+     *
      * @param patArchive 鎮h�呮。妗�
      * @return 缁撴灉
      */
-    @Transactional
     @Override
-    public int insertPatArchive(PatArchive patArchive)
-    {
+    public int insertPatArchive(PatArchive patArchive) {
         patArchive.setCreateTime(DateUtils.getNowDate());
-        int rows = patArchiveMapper.insertPatArchive(patArchive);
-        insertPatMedOuthosp(patArchive);
-        return rows;
+        return patArchiveMapper.insertPatArchive(patArchive);
     }
 
     /**
      * 淇敼鎮h�呮。妗�
-     * 
+     *
      * @param patArchive 鎮h�呮。妗�
      * @return 缁撴灉
      */
-    @Transactional
     @Override
-    public int updatePatArchive(PatArchive patArchive)
-    {
+    public int updatePatArchive(PatArchive patArchive) {
         patArchive.setUpdateTime(DateUtils.getNowDate());
-        patArchiveMapper.deletePatMedOuthospByPatID(patArchive.getPatID());
-        insertPatMedOuthosp(patArchive);
         return patArchiveMapper.updatePatArchive(patArchive);
     }
 
     /**
      * 鎵归噺鍒犻櫎鎮h�呮。妗�
-     * 
-     * @param PatIDs 闇�瑕佸垹闄ょ殑鎮h�呮。妗堜富閿�
+     *
+     * @param patids 闇�瑕佸垹闄ょ殑鎮h�呮。妗堜富閿�
      * @return 缁撴灉
      */
-    @Transactional
     @Override
-    public int deletePatArchiveByPatIDs(Long[] PatIDs)
-    {
-        patArchiveMapper.deletePatMedOuthospByPatIDs(PatIDs);
-        return patArchiveMapper.deletePatArchiveByPatIDs(PatIDs);
+    public int deletePatArchiveByPatids(Long[] patids) {
+        return patArchiveMapper.deletePatArchiveByPatids(patids);
     }
 
     /**
      * 鍒犻櫎鎮h�呮。妗堜俊鎭�
-     * 
-     * @param PatID 鎮h�呮。妗堜富閿�
+     *
+     * @param patid 鎮h�呮。妗堜富閿�
      * @return 缁撴灉
      */
-    @Transactional
     @Override
-    public int deletePatArchiveByPatID(Long PatID)
-    {
-        patArchiveMapper.deletePatMedOuthospByPatID(PatID);
-        return patArchiveMapper.deletePatArchiveByPatID(PatID);
+    public int deletePatArchiveByPatid(Long patid) {
+        return patArchiveMapper.deletePatArchiveByPatid(patid);
     }
 
-    /**
-     * 鏂板鎮h�呴棬璇婅褰曚俊鎭�
-     * 
-     * @param patArchive 鎮h�呮。妗堝璞�
-     */
-    public void insertPatMedOuthosp(PatArchive patArchive)
-    {
-        List<PatMedOuthosp> patMedOuthospList = patArchive.getPatMedOuthospList();
-        Long PatID = patArchive.getPatID();
-        if (StringUtils.isNotNull(patMedOuthospList))
-        {
-            List<PatMedOuthosp> list = new ArrayList<PatMedOuthosp>();
-            for (PatMedOuthosp patMedOuthosp : patMedOuthospList)
-            {
-                patMedOuthosp.setPatID(PatID);
-                list.add(patMedOuthosp);
+    @Override
+    @Transactional
+    public PatUpInfoVO importFilehandle(SysUser user, String tags, MultipartFile file) {
+        PatUpInfoVO patUpInfoVO = new PatUpInfoVO();
+        Integer successNum = 0;
+        Integer failNum = 0;
+
+        List<PatArchive> errorpatArchiveList = new ArrayList<>();
+        try {
+            Workbook workbook = new XSSFWorkbook(file.getInputStream());
+            Sheet sheet = workbook.getSheetAt(0);
+
+            for (int i = sheet.getFirstRowNum() + 1; i < sheet.getLastRowNum(); i++) {
+                Row row = sheet.getRow(i);
+                //濡傛灉琛屼负绌猴紝杩涜涓嬩竴娆″惊鐜�
+                if (ObjectUtils.isEmpty(row)) {
+                    continue;
+                }
+                PatArchive patArchive = new PatArchive();
+                if (ObjectUtils.isEmpty(row.getCell(3)) || StringUtils.isEmpty(row.getCell(3).toString())) {
+                    addRemark("韬唤璇佸彿涓虹┖", patArchive);
+                } else {
+                    patArchive.setIccardno(row.getCell(3).toString());
+                    //鏍规嵁韬唤璇侊紝鍏堝幓鎮h�呯鐞嗚〃閲岀湅鐪嬫湁娌℃湁杩欎釜浜�,濡傛灉鏈夎繖涓汉锛屼篃涓嶉渶瑕佹彃鍏ユ偅鑰呰〃
+                    List<PatArchive> patArchiveList1 = patArchiveMapper.selectPatArchiveList(patArchive);
+                    if (patArchiveList1.size() > 0) {
+                        patArchive.setRemark("璇ユ偅鑰呭凡瀛樺湪");
+                    }
+                }
+
+                //鍒ゆ柇濮撳悕鏄惁涓虹┖
+                if (Objects.isNull(row.getCell(0)) || StringUtils.isEmpty(row.getCell(0).toString())) {
+                    addRemark("濮撳悕涓虹┖", patArchive);
+                } else {
+                    patArchive.setName(row.getCell(0).toString());
+                }
+
+                //鍒ゆ柇鎬у埆鏄惁涓虹┖
+
+                if (ObjectUtils.isEmpty(row.getCell(1)) || StringUtils.isEmpty(row.getCell(1).toString())) {
+                    addRemark("鎬у埆涓虹┖", patArchive);
+                } else {
+                    patArchive.setSex(row.getCell(1).toString().equals("鐢�") ? 1L : 2L);
+                }
+
+                //鍒ゆ柇璇佷欢绫诲瀷鏄惁涓虹┖
+                if (ObjectUtils.isEmpty(row.getCell(2)) || StringUtils.isEmpty(row.getCell(2).toString())) {
+                    addRemark("璇佷欢绫诲瀷涓虹┖", patArchive);
+                } else {
+                    patArchive.setIccardtype(row.getCell(2).toString());
+                }
+
+                //鍒ゆ柇鍑虹敓鏃ユ湡鏄惁涓虹┖
+                if (ObjectUtils.isEmpty(row.getCell(4)) || StringUtils.isEmpty(row.getCell(4).toString())) {
+                    addRemark("鍑虹敓鏃ユ湡涓虹┖", patArchive);
+                } else {
+                    //鏍煎紡杞崲锛岃浆鎴愭棩鏈�
+                    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd");
+                    Date javaDate = new Date();
+                    if (row.getCell(4).getCellType().toString().equals("NUMERIC")) {
+                        javaDate = HSSFDateUtil.getJavaDate(row.getCell(4).getNumericCellValue());
+                    } else {
+                        javaDate = new Date(row.getCell(4).toString());
+                    }
+                    dateFormat.format(javaDate);
+                    patArchive.setBirthdate(javaDate);
+                }
+
+                //鍒ゆ柇鏈汉鑱旂郴鏄惁涓虹┖锛屽拰闀垮害鏄惁姝g‘
+                if (ObjectUtils.isEmpty(row.getCell(5)) || StringUtils.isEmpty(row.getCell(5).toString())) {
+                    addRemark("鏈汉鑱旂郴鐢佃瘽涓虹┖", patArchive);
+                } else {
+                    //鏍煎紡杞崲锛岃浆鎴愭枃鏈�
+                    if (row.getCell(5).getCellType().toString().equals("NUMERIC")) {
+                        String cellData = String.valueOf((long) row.getCell(5).getNumericCellValue());
+                        patArchive.setTelcode(cellData);
+                    } else {
+                        DataFormatter dataFormatter = new DataFormatter();
+                        String cellValue = dataFormatter.formatCellValue(row.getCell(5));
+                        patArchive.setTelcode(cellValue);
+                    }
+                }
+
+                //鍒ゆ柇浜插睘鑱旂郴鏂瑰紡鏄惁涓虹┖锛岄暱搴︽槸鍚︽纭�
+                if (ObjectUtils.isEmpty(row.getCell(6)) || StringUtils.isEmpty(row.getCell(6).toString())) {
+                    addRemark("浜插睘鑱旂郴鏂瑰紡涓虹┖", patArchive);
+                } else {
+                    //鏍煎紡杞崲锛岃浆鎴愭枃鏈�
+                    if (row.getCell(6).getCellType().toString().equals("NUMERIC")) {
+                        String cellData = String.valueOf((long) row.getCell(6).getNumericCellValue());
+                        patArchive.setRelativetelcode(cellData);
+                    } else {
+                        DataFormatter dataFormatter = new DataFormatter();
+                        String cellValue = dataFormatter.formatCellValue(row.getCell(6));
+                        patArchive.setRelativetelcode(cellValue);
+                    }
+                }
+
+                //鎮i兘鏍囩鏄惁涓虹┖
+                if (ObjectUtils.isEmpty(row.getCell(7)) || StringUtils.isEmpty(row.getCell(7).toString())) {
+                    if (StringUtils.isEmpty(tags)) {
+                        addRemark("鎮h�呮爣绛句负绌�", patArchive);
+                    } else {
+                        patArchive.setTag(tags);
+
+                    }
+                } else {
+                    if (StringUtils.isNotEmpty(tags)) {
+                        patArchive.setTag(row.getCell(7).toString() + "," + tags);
+                    } else {
+                        patArchive.setTag(row.getCell(7).toString());
+                    }
+                }
+
+                //鍒ゆ柇澶囨敞鏄惁涓虹┖
+                if (!StringUtils.isEmpty(patArchive.getRemark())) {
+                    //濡傛灉澶囨敞瀛楁涓嶄负绌猴紝璇存湁璇ユ偅鑰呭~鍐欐湁闂
+                    errorpatArchiveList.add(patArchive);
+                    failNum = failNum + 1;
+                    continue;
+                }
+
+                //寰�鎮h�呰〃閲屾柊澧�,骞惰幏鍙栧埌鏂板ID
+                patArchiveMapper.insertPatArchive(patArchive);
+
+                //鏍规嵁鏍囩鍚嶆煡璇㈠嚭鏍囩淇℃伅
+                String s = patArchive.getTag();
+                String[] split = s.split(",");
+                for (String tagName : split) {
+                    BaseTag baseTag = new BaseTag();
+                    baseTag.setTagname(tagName);
+                    List<BaseTag> baseTags = baseTagMapper.selectBaseTagList(baseTag);
+
+                    //濡傛灉璇ユ爣绛句负绌猴紝鐜版爣绛剧鐞嗘病鏈夊嚭鐜拌繃鐨勬柊鏍囩鏃讹紝鑷姩灏嗘爣绛炬坊鍔犲埌"鏍囩绠$悊"鏈垎绫烩�滀腑銆傜紪杈戜汉涓哄鍏ヨ处鍙�
+                    if (CollectionUtils.isEmpty(baseTags)) {
+                        baseTag = new BaseTag();
+                        baseTag.setTagcategoryid(1L);
+                        baseTag.setTagname(tagName);
+                        baseTag.setOrgid(user.getDeptId().toString());
+                        baseTag.setDelFlag("0");
+                        baseTag.setCreateBy(user.getUserName());
+                        baseTag.setCreateTime(new Date());
+                        baseTag.setCreateBy(user.getUserName());
+                        baseTag.setCreateTime(new Date());
+                        baseTagMapper.insertBaseTag(baseTag);
+                    } else {
+                        baseTag = baseTags.get(0);
+                    }
+
+                    // 鏂板鎮h�呮。妗堟爣绛�
+                    PatArchivetag patArchivetag = DtoConversionUtils.sourceToTarget(baseTag, PatArchivetag.class);
+                    patArchivetag.setUpdateBy(user.getUserName());
+                    patArchivetag.setCreateTime(new Date());
+                    patArchivetag.setPatid(patArchive.getPatid());
+                    patArchivetagMapper.insertPatArchivetag(patArchivetag);
+                }
+                successNum = successNum + 1;
             }
-            if (list.size() > 0)
-            {
-                patArchiveMapper.batchPatMedOuthosp(list);
+
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+        patUpInfoVO.setFailNum(failNum);
+        patUpInfoVO.setSuccessNum(successNum);
+        patUpInfoVO.setPatArchiveList(errorpatArchiveList);
+        return patUpInfoVO;
+    }
+
+    @Override
+    public String exportErrPatInfo(List<PatArchive> patArchiveList) {
+        // 鍒涘缓宸ヤ綔绨垮拰宸ヤ綔琛�
+        Workbook workbook = new XSSFWorkbook();
+        Sheet sheet = workbook.createSheet("Sheet1");
+        // 鍒涘缓琛屽拰鍗曞厓鏍硷紝骞惰缃崟鍏冩牸鐨勫��
+        Row row = sheet.createRow(0);
+        getdata(row, null, true);
+
+        for (int i = 0; i < patArchiveList.size(); i++) {
+            row = sheet.createRow(i + 1);
+            getdata(row, patArchiveList.get(i), false);
+        }
+        // 淇濆瓨宸ヤ綔绨垮埌鏂囦欢
+        FileOutputStream outputStream = null;
+        try {
+            outputStream = new FileOutputStream("鎮h�呴敊璇俊鎭�.xlsx");
+            workbook.write(outputStream);
+            outputStream.close();
+            workbook.close();
+        } catch (Exception e) {
+            e.printStackTrace();
+            return "瀵煎嚭澶辫触";
+        }
+        return "瀵煎嚭鎴愬姛";
+    }
+
+    @Override
+    public List<PatArchive> patInfoByContion(PatArchiveReq patArchive) {
+        List<PatArchive> patArchives = new ArrayList<>();
+
+        //鏍规嵁鏉′欢鑾峰彇鎮h�呬俊鎭�
+        List<PatArchive> patArchiveList = patArchiveMapper.patInfoByContion(patArchive);
+        //鏍规嵁鎮h�匢D杩涜鍒嗙粍
+        Map<Long, List<PatArchive>> listMap = patArchiveList.stream().collect(Collectors.groupingBy(PatArchive::getPatid));
+
+        //瀵规暟鎹繘琛屽皝瑁�
+        for (List<PatArchive> list : listMap.values()) {
+            PatArchive patArchive1 = new PatArchive();
+            List<String> stringList = new ArrayList<>();
+            for (int i = 0; i < list.size(); i++) {
+                if (i == 0) {
+                    patArchive1 = DtoConversionUtils.sourceToTarget(list.get(0), PatArchive.class);
+                    //灏嗘爣绛剧疆绌�,涓嶇┖涔熸病鏈夐棶棰�
+                    patArchive1.setTag("");
+                }
+                //灏嗘煡鍑虹殑tag锛屾斁鍒皃atArchive1閲岀殑TagList涓�
+                stringList.add(list.get(i).getTag());
+            }
+            patArchive1.setTagList(stringList);
+            patArchives.add(patArchive1);
+        }
+
+        return patArchives;
+    }
+
+    @Override
+    public List<PatArchivetagAndPatientInfo> patTagByContion(List<Long> tagids) {
+        List<PatArchivetagAndPatientInfo> patArchivetagAndPatientInfos = new ArrayList<>();
+        if (tagids.size() > 0) {
+            for (int i = 0; i < tagids.size(); i++) {
+                PatArchivetag patArchivetag = new PatArchivetag();
+                patArchivetag.setTagid(tagids.get(i));
+                //鑾峰彇鎮h�卲atid
+                List<PatArchivetag> patArchivetags1 = patArchivetagMapper.selectPatArchivetagAndBaseTagList(patArchivetag);
+                for (int j = 0; j < patArchivetags1.size(); j++) {
+                    PatArchivetagAndPatientInfo patArchivetagAndPatientInfo = DtoConversionUtils.sourceToTarget(patArchivetags1.get(j), PatArchivetagAndPatientInfo.class);
+                    PatArchive patArchive = new PatArchive();
+                    patArchive.setPatid(patArchivetagAndPatientInfo.getPatid());
+                    List<PatArchive> patArchiveList = patArchiveMapper.selectPatArchiveList(patArchive);
+                    patArchivetagAndPatientInfo.setPatNum(patArchiveList.size());
+                    // patArchivetagAndPatientInfo.setPatArchives(patArchiveList);
+                    patArchivetagAndPatientInfos.add(patArchivetagAndPatientInfo);
+                }
+            }
+        } else {
+            PatArchivetag patArchivetag = new PatArchivetag();
+            //鑾峰彇鎮h�卲atid
+            List<PatArchivetag> patArchivetags1 = patArchivetagMapper.selectPatArchivetagAndBaseTagList(patArchivetag);
+            for (int j = 0; j < patArchivetags1.size(); j++) {
+                PatArchivetagAndPatientInfo patArchivetagAndPatientInfo = DtoConversionUtils.sourceToTarget(patArchivetags1.get(j), PatArchivetagAndPatientInfo.class);
+                PatArchive patArchive = new PatArchive();
+                patArchive.setPatid(patArchivetagAndPatientInfo.getPatid());
+                List<PatArchive> patArchiveList = patArchiveMapper.selectPatArchiveList(patArchive);
+                //  patArchivetagAndPatientInfo.setPatArchives(patArchiveList);
+                patArchivetagAndPatientInfo.setPatNum(patArchiveList.size());
+                patArchivetagAndPatientInfos.add(patArchivetagAndPatientInfo);
             }
         }
+        return patArchivetagAndPatientInfos;
     }
+
+    @Override
+    public List<PatArchivetagAndPatientInfo> patInfoByTag(List<Long> tagids) {
+
+
+
+
+
+        return null;
+    }
+
+    private void getdata(Row row, PatArchive patArchive, Boolean head) {
+        if (head) {
+            row.createCell(0).setCellValue("濮撳悕");
+            row.createCell(1).setCellValue("鎬у埆");
+            row.createCell(2).setCellValue("璇佷欢绫诲瀷");
+            row.createCell(3).setCellValue("璇佷欢鍙风爜");
+            row.createCell(4).setCellValue("鍑虹敓鏃ユ湡");
+            row.createCell(5).setCellValue("鏈汉鑱旂郴鏂瑰紡");
+            row.createCell(6).setCellValue("浜插睘鑱旂郴鏂瑰紡");
+            row.createCell(7).setCellValue("鎮h�呮爣绛�");
+            row.createCell(8).setCellValue("閿欒鍘熷洜");
+        } else {
+            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy/MM/dd");
+            row.createCell(0).setCellValue(patArchive.getName());
+            row.createCell(1).setCellValue(patArchive.getSex() == 1 ? "鐢�" : "濂�");
+            row.createCell(2).setCellValue(patArchive.getIccardtype());
+            row.createCell(3).setCellValue(patArchive.getIccardno());
+            if (ObjectUtils.isNotEmpty(patArchive.getBirthdate())) {
+                row.createCell(4).setCellValue(simpleDateFormat.format(patArchive.getBirthdate()).toString());
+            }
+            row.createCell(5).setCellValue(patArchive.getTelcode());
+            row.createCell(6).setCellValue(patArchive.getRelativetelcode());
+            row.createCell(7).setCellValue(patArchive.getTag());
+            row.createCell(8).setCellValue(patArchive.getRemark());
+
+
+        }
+
+    }
+
+    public void addRemark(String info, PatArchive patArchive) {
+        if (StringUtils.isNotEmpty(patArchive.getRemark()) == true) {
+            patArchive.setRemark(patArchive.getRemark() + "," + info);
+        } else {
+            patArchive.setRemark(info);
+        }
+    }
+
 }
+

--
Gitblit v1.9.3