浏览代码

临时版本

zhoutg 5 年之前
父节点
当前提交
4311aaa252

+ 198 - 0
src/main/java/com/diagbot/facade/DataImportFacade.java

@@ -10,6 +10,7 @@ import com.diagbot.entity.HomePage;
 import com.diagbot.entity.MedCrisisInfo;
 import com.diagbot.entity.MedicalRecord;
 import com.diagbot.entity.MedicalRecordContent;
+import com.diagbot.enums.IsDeleteEnum;
 import com.diagbot.exception.CommonErrorCode;
 import com.diagbot.exception.CommonException;
 import com.diagbot.service.BehospitalInfoService;
@@ -266,6 +267,203 @@ public class DataImportFacade {
     }
 
 
+    /**
+     * 数据导入【效率低,备用】
+     *
+     * @param dataImportVO
+     * @return
+     */
+    public Boolean dataImportPrepareFacade(DataImportVO dataImportVO) {
+        Long hospitalId = dataImportVO.getHospitalId();
+        // 病历信息导入
+        List<BehospitalInfo> behospitalInfoList = dataImportVO.getBehospitalInfoList();
+        if (ListUtil.isNotEmpty(behospitalInfoList)) {
+            behospitalInfoList.forEach(s -> {
+                QueryWrapper<BehospitalInfo> queryWrapper = new QueryWrapper<>();
+                queryWrapper.eq("behospital_code", s.getBehospitalCode());
+                queryWrapper.eq("hospital_id", s.getHospitalId());
+                queryWrapper.eq("is_deleted", IsDeleteEnum.N);
+                // 姓名加密
+                if (StringUtil.isNotBlank(s.getName())) {
+                    s.setName(s.getName().substring(0, 1) + "**");
+                }
+                int count = behospitalInfoService.count(queryWrapper);
+                if (count > 0) {
+                    behospitalInfoService.update(s,queryWrapper);
+                } else {
+                    behospitalInfoService.save(s);
+                }
+            });
+        }
+
+        // 危急值信息
+        List<MedCrisisInfo> medCrisisInfoList = dataImportVO.getMedCrisisInfoList();
+        if (ListUtil.isNotEmpty(medCrisisInfoList)) {
+            List<String> recIdList = medCrisisInfoList.stream().map(r -> r.getRecId()).collect(Collectors.toList());
+            if (ListUtil.isNotEmpty(recIdList)) {
+                // 先删除
+                medCrisisInfoService.remove(new QueryWrapper<MedCrisisInfo>()
+                        .eq("hospital_id", hospitalId)
+                        .in("rec_id", recIdList)
+                );
+                medCrisisInfoService.saveBatch(medCrisisInfoList);
+            }
+        }
+
+        // 病人医嘱
+        List<DoctorAdvice> doctorAdviceList = dataImportVO.getDoctorAdviceList();
+        if (ListUtil.isNotEmpty(doctorAdviceList)) {
+            List<String> doctorAdviceIdList = doctorAdviceList.stream().map(r -> r.getDoctorAdviceId()).collect(Collectors.toList());
+            if (ListUtil.isNotEmpty(doctorAdviceIdList)) {
+                // 先删除
+                doctorAdviceService.remove(new QueryWrapper<DoctorAdvice>()
+                        .eq("hospital_id", hospitalId)
+                        .in("doctor_advice_id", doctorAdviceIdList)
+                );
+                doctorAdviceService.saveBatch(doctorAdviceList);
+            }
+        }
+
+        // 病案首页诊断
+        List<HomeDiagnoseInfo> homeDiagnoseInfoList = dataImportVO.getHomeDiagnoseInfoList();
+        if (ListUtil.isNotEmpty(homeDiagnoseInfoList)) {
+            StringBuffer sb = new StringBuffer();
+            sb.append(" ( ");
+            for (int i = 0; i < homeDiagnoseInfoList.size(); i++) {
+                HomeDiagnoseInfo s = homeDiagnoseInfoList.get(i);
+                if (i == 0) {
+                    sb.append(" (home_page_id = '" + s.getHomePageId() + "'"
+                            + " and diagnose_order_no = '" + s.getDiagnoseOrderNo() + "'"
+                            + ") " );
+                } else {
+                    sb.append(" or ( home_page_id = '" + s.getHomePageId() + "'"
+                            + " and diagnose_order_no = '" + s.getDiagnoseOrderNo() + "'"
+                            + ") " );
+                }
+            }
+            sb.append(")");
+
+            // 先删除
+            homeDiagnoseInfoService.remove(new QueryWrapper<HomeDiagnoseInfo>()
+                    .eq("hospital_id", hospitalId)
+                    .apply(sb.toString())
+            );
+            homeDiagnoseInfoService.saveBatch(homeDiagnoseInfoList);
+        }
+
+        // 病案首页
+        List<HomePage> homePageList = dataImportVO.getHomePageList();
+        if (ListUtil.isNotEmpty(homePageList)) {
+            List<String> homePageIdList = homePageList.stream().map(r -> r.getHomePageId()).collect(Collectors.toList());
+            if (ListUtil.isNotEmpty(homePageIdList)) {
+                // 先删除
+                homePageService.remove(new QueryWrapper<HomePage>()
+                        .eq("hospital_id", hospitalId)
+                        .in("home_page_id", homePageIdList)
+                );
+                // 加密
+                for (HomePage homePage : dataImportVO.getHomePageList()) {
+                    // 姓名
+                    if (StringUtil.isNotBlank(homePage.getName())) {
+                        homePage.setName(homePage.getName().substring(0, 1) + "**");
+                    }
+                    // 身份证
+                    if (StringUtil.isNotBlank(homePage.getIdentityCardNo())) {
+                        homePage.setIdentityCardNo(homePage.getIdentityCardNo().substring(0, 1) + "*****************");
+                    }
+                    // 现住址电话
+                    if (StringUtil.isNotBlank(homePage.getCurPhone())) {
+                        homePage.setCurPhone(homePage.getCurPhone().substring(0, 1) + "**");
+                    }
+                    // 工作单位电话
+                    if (StringUtil.isNotBlank(homePage.getWorkPhone())) {
+                        homePage.setWorkPhone(homePage.getWorkPhone().substring(0, 1) + "**");
+                    }
+                    // 联系人姓名
+                    if (StringUtil.isNotBlank(homePage.getContactName())) {
+                        homePage.setContactName(homePage.getContactName().substring(0, 1) + "**");
+                    }
+                    // 联系人电话
+                    if (StringUtil.isNotBlank(homePage.getContactPhone())) {
+                        homePage.setContactPhone(homePage.getContactPhone().substring(0, 1) + "**");
+                    }
+                }
+                homePageService.saveBatch(homePageList);
+            }
+        }
+
+        // 病案首页手术信息
+        List<HomeOperationInfo> homeOperationInfoList = dataImportVO.getHomeOperationInfoList();
+        if (ListUtil.isNotEmpty(homeOperationInfoList)) {
+            StringBuffer sb = new StringBuffer();
+            sb.append(" ( ");
+            for (int i = 0; i < homeOperationInfoList.size(); i++) {
+                HomeOperationInfo s = homeOperationInfoList.get(i);
+                if (i == 0) {
+                    sb.append(" (home_page_id = '" + s.getHomePageId() + "'"
+                            + " and operation_order_no = '" + s.getOperationOrderNo() + "'"
+                            + ") " );
+                } else {
+                    sb.append(" or ( home_page_id = '" + s.getHomePageId() + "'"
+                            + " and operation_order_no = '" + s.getOperationOrderNo() + "'"
+                            + ") " );
+                }
+            }
+            sb.append(")");
+            // 先删除
+            homeOperationInfoService.remove(new QueryWrapper<HomeOperationInfo>()
+                    .eq("hospital_id", hospitalId)
+                    .apply(sb.toString())
+            );
+            homeOperationInfoService.saveBatch(homeOperationInfoList);
+        }
+
+        // 文书信息
+        List<MedicalRecord> medicalRecordList = dataImportVO.getMedicalRecordList();
+        if (ListUtil.isNotEmpty(medicalRecordList)) {
+            List<String> recIdList = medicalRecordList.stream().map(r -> r.getRecId()).collect(Collectors.toList());
+            if (ListUtil.isNotEmpty(recIdList)) {
+                // 先删除
+                medicalRecordService.remove(new QueryWrapper<MedicalRecord>()
+                        .eq("hospital_id", hospitalId)
+                        .in("rec_id", recIdList)
+                );
+                medicalRecordService.saveBatch(medicalRecordList);
+            }
+        }
+
+        // 文书明细信息
+        List<MedicalRecordContent> medicalRecordContentList = dataImportVO.getMedicalRecordContentList();
+        if (ListUtil.isNotEmpty(medicalRecordContentList)) {
+            List<String> recIdList = medicalRecordContentList.stream().map(r -> r.getRecId()).collect(Collectors.toList());
+            if (ListUtil.isNotEmpty(recIdList)) {
+                // 先删除
+                medicalRecordContentService.remove(new QueryWrapper<MedicalRecordContent>()
+                        .eq("hospital_id", hospitalId)
+                        .in("rec_id", recIdList));
+
+                // 加密数据
+                if (encryptFlag) {
+                    String recId = "";
+                    try {
+                        EncrypDES encrypDES = new EncrypDES();
+                        for (MedicalRecordContent medicalRecordContent : medicalRecordContentList) {
+                            recId = medicalRecordContent.getRecId();
+                            if (StringUtil.isNotBlank(medicalRecordContent.getXmlText())) {
+                                medicalRecordContent.setXmlText(encrypDES.encrytor(medicalRecordContent.getXmlText()));
+                            }
+                        }
+                    } catch (Exception e) {
+                        throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "加密xml错误!recId=【" + recId + "】");
+                    }
+                }
+                medicalRecordContentService.saveBatch(medicalRecordContentList, 100);
+            }
+        }
+        return true;
+    }
+
+
     /**
      * 模拟测试数据
      *

+ 28 - 1
src/main/java/com/diagbot/web/DataImportController.java

@@ -32,7 +32,7 @@ public class DataImportController {
     @Autowired
     DataImportFacade dataImportFacade;
 
-    @ApiOperation(value = "导入数据[by:zhoutg]",
+    @ApiOperation(value = "导入数据【全部删除,全部新增,效率高】[by:zhoutg]",
             notes = "// 医院ID\n" +
                     " Long hospitalId;\n" +
                     "// 病历信息\n" +
@@ -59,6 +59,33 @@ public class DataImportController {
         return RespDTO.onSuc(data);
     }
 
+    @ApiOperation(value = "导入数据【更新数据,单条执行,效率低,备用】[by:zhoutg]",
+            notes = "// 医院ID\n" +
+                    " Long hospitalId;\n" +
+                    "// 病历信息\n" +
+                    "List<BehospitalInfo> behospitalInfoList;\n" +
+                    "// 危急值信息\n" +
+                    "List<MedCrisisInfo> medCrisisInfoList;\n" +
+                    "// 病人医嘱\n" +
+                    "List<DoctorAdvice> doctorAdviceList;\n" +
+                    "// 病案首页诊断\n" +
+                    "List<HomeDiagnoseInfo> homeDiagnoseInfoList;\n" +
+                    "// 病案首页\n" +
+                    "List<HomePage> homePageList;\n" +
+                    "// 病案首页手术信息\n" +
+                    "List<HomeOperationInfo> homeOperationInfoList;\n" +
+                    "// 文书信息\n" +
+                    "List<MedicalRecord> medicalRecordList;\n" +
+                    "// 文书明细信息\n" +
+                    "List<MedicalRecordContent> medicalRecordContentList;")
+    @PostMapping("/dataimportPrepare")
+    @SysLogger("dataimportPrepare")
+    @Transactional
+    public RespDTO<Boolean> dataimportPrepare(@RequestBody @Valid DataImportVO dataImportVO) {
+        Boolean data = dataImportFacade.dataImportPrepareFacade(dataImportVO);
+        return RespDTO.onSuc(data);
+    }
+
     @ApiOperation(value = "模拟测试数据[by:zhoutg]",
             notes = "")
     @PostMapping("/test")