Jelajahi Sumber

更改病历数据数据恢复逻辑

songxinlu 3 tahun lalu
induk
melakukan
93cb6f9e01

+ 80 - 79
daqe-center/src/main/java/com/lantone/daqe/facade/BlockLossManagementFacade.java

@@ -484,87 +484,88 @@ public class BlockLossManagementFacade {
      * @Return void
      */
     private Boolean upBlockLossStatus(Map<String, List<BlocklossResult>> lossResultMap, Long hospitalId, Long principleId) {
-        AtomicReference<Boolean> flag = new AtomicReference<>(true);
-        //获取已丢失的病历(按照人来更新)
-        if(ListUtil.isNotEmpty(lossResultMap.get(LossTypeEnum.CODE_LOSS.getKey()))){
-            List<String> lossCodes = lossResultMap.get(LossTypeEnum.CODE_LOSS.getKey()).stream().map(BlocklossResult::getBehospitalCode).collect(Collectors.toList());
-            //已经补录的患者信息
-            List<String> behospitalCodes = behospitalInfoFacade.list(new QueryWrapper<BehospitalInfo>()
-                    .eq("hospital_id", hospitalId != null ? hospitalId : 0)
-                    .in("behospital_code", lossCodes)
-                    .eq("is_deleted", IsDeleteEnum.N.getKey()))
-                    .stream().map(BehospitalInfo::getBehospitalCode).collect(Collectors.toList());
-            //有补录的病历时
-            if(ListUtil.isNotEmpty(behospitalCodes)){
-                lossResultMap.keySet().stream().forEach(lossType -> {
-                    //0:文书丢失 1:病案首页丢失 2:患者信息丢失
-                    switch (lossType) {
-                        case "0":
-                            //文书丢失
-                            List<String> redIds = medicalRecordFacade.list(new QueryWrapper<MedicalRecord>()
-                                    .eq("hospital_id", hospitalId != null ? hospitalId : 0)
-                                    .in("rec_id", lossResultMap.get(lossType).stream().map(BlocklossResult::getRecId).collect(Collectors.toList()))
-                                    .in("behospital_code", behospitalCodes)
-                                    .eq("is_deleted", IsDeleteEnum.N.getKey()))
-                                    .stream().map(MedicalRecord::getRecId).collect(Collectors.toList());
-                            //更新状态-已恢复
-                            if (ListUtil.isNotEmpty(redIds)) {
-                                flag.set(blocklossResultFacade.update(new UpdateWrapper<BlocklossResult>()
-                                        .set("solve_time", DateUtil.now())
-                                        .set("gmt_modified", DateUtil.now())
-                                        .set("status", LossStatusEnum.NOT_LOSS.getKey())
-                                        .set("modifier", principleId != null ? principleId + "" : "0")
-                                        .eq("status", LossStatusEnum.IS_LOSS.getKey())
-                                        .eq("loss_type", lossType)
-                                        .eq("is_deleted", IsDeleteEnum.N.getKey())
-                                        .eq("hospital_id", hospitalId != null ? hospitalId : 0)
-                                        .in("rec_id", redIds)));
-                            }
-                            break;
-                        case "1":
-                            //病案首页丢失
-                            List<String> homePages = homePageFacade.list(new QueryWrapper<HomePage>()
-                                    .eq("hospital_id", hospitalId != null ? hospitalId : 0)
-                                    .in("home_page_id", lossResultMap.get(lossType).stream().map(BlocklossResult::getRecId).collect(Collectors.toList()))
-                                    .in("behospital_code", behospitalCodes)
-                                    .eq("is_deleted", IsDeleteEnum.N.getKey()))
-                                    .stream().map(HomePage::getHomePageId).collect(Collectors.toList());
-
-                            //更新状态-已恢复
-                            if (ListUtil.isNotEmpty(homePages)) {
-                                flag.set(blocklossResultFacade.update(new UpdateWrapper<BlocklossResult>()
-                                        .set("solve_time", DateUtil.now())
-                                        .set("gmt_modified", DateUtil.now())
-                                        .set("status", LossStatusEnum.NOT_LOSS.getKey())
-                                        .set("modifier", principleId != null ? principleId + "" : "0")
-                                        .eq("status", LossStatusEnum.IS_LOSS.getKey())
-                                        .eq("loss_type", lossType)
-                                        .eq("hospital_id", hospitalId != null ? hospitalId : 0)
-                                        .in("rec_id", homePages)
-                                        .eq("is_deleted", IsDeleteEnum.N.getKey())));
-                            }
-                            break;
-                        case "2":
-                            //更新状态-已恢复
-                            if (ListUtil.isNotEmpty(behospitalCodes)) {
-                                flag.set(blocklossResultFacade.update(new UpdateWrapper<BlocklossResult>()
-                                        .set("solve_time", DateUtil.now())
-                                        .set("gmt_modified", DateUtil.now())
-                                        .set("status", LossStatusEnum.NOT_LOSS.getKey())
-                                        .set("modifier", principleId != null ? principleId + "" : "0")
-                                        .eq("status", LossStatusEnum.IS_LOSS.getKey())
-                                        .eq("loss_type", lossType)
-                                        .eq("is_deleted", IsDeleteEnum.N.getKey())
-                                        .eq("hospital_id", hospitalId != null ? hospitalId : 0)
-                                        .in("behospital_code", behospitalCodes)));
-                            }
-                            break;
-                        default:
-                            break;
+        //====获取已丢失病历记录
+        List<String> lossCodes = blocklossResultFacade.list(new QueryWrapper<BlocklossResult>()
+                .select("id,behospital_code")
+                .eq(hospitalId != null, "hospital_id", hospitalId)
+                .eq("status", LossStatusEnum.IS_LOSS.getKey())
+                .eq("loss_type", LossTypeEnum.CODE_LOSS.getKey())
+                .eq("is_deleted", IsDeleteEnum.N.getKey())).stream().map(BlocklossResult::getBehospitalCode).collect(Collectors.toList());
+        AtomicReference<Boolean> flag = new AtomicReference<>(false);
+        lossResultMap.keySet().stream().forEach(lossType -> {
+            //0:文书丢失 1:病案首页丢失 2:患者信息丢失
+            switch (lossType) {
+                case "0":
+                    //文书丢失
+                    List<String> redIds = medicalRecordFacade.list(new QueryWrapper<MedicalRecord>()
+                            .eq("hospital_id", hospitalId != null ? hospitalId : 0)
+                            .in("rec_id", lossResultMap.get(lossType).stream().map(BlocklossResult::getRecId).collect(Collectors.toList()))
+                            .in("behospital_code", lossResultMap.get(lossType).stream().map(BlocklossResult::getBehospitalCode).collect(Collectors.toList()))
+                            .notIn(ListUtil.isNotEmpty(lossCodes),"behospital_code",lossCodes)//如果说入院记录丢失了,文书的状态还是已丢失不会更新
+                            .eq("is_deleted", IsDeleteEnum.N.getKey()))
+                            .stream().map(MedicalRecord::getRecId).collect(Collectors.toList());
+                    //更新状态-已恢复
+                    if (ListUtil.isNotEmpty(redIds)) {
+                        flag.set(blocklossResultFacade.update(new UpdateWrapper<BlocklossResult>()
+                                .set("solve_time", DateUtil.now())
+                                .set("gmt_modified", DateUtil.now())
+                                .set("status", LossStatusEnum.NOT_LOSS.getKey())
+                                .set("modifier", principleId != null ? principleId + "" : "0")
+                                .eq("status", LossStatusEnum.IS_LOSS.getKey())
+                                .eq("loss_type", lossType)
+                                .eq("is_deleted", IsDeleteEnum.N.getKey())
+                                .eq("hospital_id", hospitalId != null ? hospitalId : 0)
+                                .in("rec_id", redIds)));
                     }
-                });
+                    break;
+                case "1":
+                    //病案首页丢失
+                    List<String> homePages = homePageFacade.list(new QueryWrapper<HomePage>()
+                            .eq("hospital_id", hospitalId != null ? hospitalId : 0)
+                            .in("home_page_id", lossResultMap.get(lossType).stream().map(BlocklossResult::getRecId).collect(Collectors.toList()))
+                            .in("behospital_code", lossResultMap.get(lossType).stream().map(BlocklossResult::getBehospitalCode).collect(Collectors.toList()))
+                            .notIn(ListUtil.isNotEmpty(lossCodes),"behospital_code",lossCodes)//如果说入院记录丢失了,病案首页的状态还是已丢失不会更新
+                            .eq("is_deleted", IsDeleteEnum.N.getKey()))
+                            .stream().map(HomePage::getHomePageId).collect(Collectors.toList());
+                    //更新状态-已恢复
+                    if (ListUtil.isNotEmpty(homePages)) {
+                        flag.set(blocklossResultFacade.update(new UpdateWrapper<BlocklossResult>()
+                                .set("solve_time", DateUtil.now())
+                                .set("gmt_modified", DateUtil.now())
+                                .set("status", LossStatusEnum.NOT_LOSS.getKey())
+                                .set("modifier", principleId != null ? principleId + "" : "0")
+                                .eq("status", LossStatusEnum.IS_LOSS.getKey())
+                                .eq("loss_type", lossType)
+                                .eq("hospital_id", hospitalId != null ? hospitalId : 0)
+                                .in("rec_id", homePages)
+                                .eq("is_deleted", IsDeleteEnum.N.getKey())));
+                    }
+                    break;
+                case "2":
+                    //患者信息丢失
+                    List<String> behospitalCodes = behospitalInfoFacade.list(new QueryWrapper<BehospitalInfo>()
+                            .eq("hospital_id", hospitalId != null ? hospitalId : 0)
+                            .in("behospital_code", lossResultMap.get(lossType).stream().map(BlocklossResult::getBehospitalCode).collect(Collectors.toList()))
+                            .eq("is_deleted", IsDeleteEnum.N.getKey()))
+                            .stream().map(BehospitalInfo::getBehospitalCode).collect(Collectors.toList());
+                    //更新状态-已恢复
+                    if (ListUtil.isNotEmpty(behospitalCodes)) {
+                        flag.set(blocklossResultFacade.update(new UpdateWrapper<BlocklossResult>()
+                                .set("solve_time", DateUtil.now())
+                                .set("gmt_modified", DateUtil.now())
+                                .set("status", LossStatusEnum.NOT_LOSS.getKey())
+                                .set("modifier", principleId != null ? principleId + "" : "0")
+                                .eq("status", LossStatusEnum.IS_LOSS.getKey())
+                                .eq("loss_type", lossType)
+                                .eq("is_deleted", IsDeleteEnum.N.getKey())
+                                .eq("hospital_id", hospitalId != null ? hospitalId : 0)
+                                .in("behospital_code", behospitalCodes)));
+                    }
+                    break;
+                default:
+                    break;
             }
-        }
+        });
         return flag.get();
     }