Ver código fonte

更改病历数据块数据对比方法

songxinlu 3 anos atrás
pai
commit
7d6ec5be0f

+ 65 - 31
daqe-center/src/main/java/com/lantone/daqe/facade/BlockLossManagementFacade.java

@@ -115,25 +115,15 @@ public class BlockLossManagementFacade {
         }
 
 
-        //====1.获取已丢失状态记录,去数据库中对比判断是否补录
-        List<BlocklossResult> lossResults = blocklossResultFacade.list(new QueryWrapper<BlocklossResult>()
-                .select("id,behospital_code,rec_id,loss_type,loss_way")
+        //====1.删除当前时间段的对比记录(未核查的)
+        flag = blocklossResultFacade.remove(new UpdateWrapper<BlocklossResult>()
+                .ge(dataCompareVO.getStartDate() != null && StringUtil.isBlank(dataCompareVO.getBehospitalCode()), "behospital_date", dataCompareVO.getStartDate())
+                .le(dataCompareVO.getEndDate() != null && StringUtil.isBlank(dataCompareVO.getBehospitalCode()), "behospital_date", dataCompareVO.getEndDate())
+                .eq(StringUtil.isNotBlank(dataCompareVO.getBehospitalCode()), "behospital_code", dataCompareVO.getBehospitalCode())
                 .eq(hospitalId != null, "hospital_id", hospitalId)
-                .eq("status", LossStatusEnum.IS_LOSS.getKey())
+                .eq("is_audited", LossIsAuditedEnum.NOT_AUDITED.getKey())
                 .eq("is_deleted", IsDeleteEnum.N.getKey()));
-        if (ListUtil.isNotEmpty(lossResults)) {
-            Map<String, List<BlocklossResult>> lossResultMap = EntityUtil.makeEntityListMap(lossResults, "lossType");
-            //更新以缺失数据的状态
-            flag = upBlockLossStatus(lossResultMap, hospitalId, principleId);
-            //删除当前时间段的对比记录
-            flag = blocklossResultFacade.remove(new UpdateWrapper<BlocklossResult>()
-                    .ge(dataCompareVO.getStartDate() != null && StringUtil.isBlank(dataCompareVO.getBehospitalCode()), "behospital_date", dataCompareVO.getStartDate())
-                    .le(dataCompareVO.getEndDate() != null && StringUtil.isBlank(dataCompareVO.getBehospitalCode()), "behospital_date", dataCompareVO.getEndDate())
-                    .eq(StringUtil.isNotBlank(dataCompareVO.getBehospitalCode()), "behospital_code", dataCompareVO.getBehospitalCode())
-                    .eq(hospitalId != null, "hospital_id", hospitalId)
-                    .eq("is_audited", LossIsAuditedEnum.NOT_AUDITED.getKey())
-                    .eq("is_deleted", IsDeleteEnum.N.getKey()));
-        }
+
         //已核查的数据(筛选区间)
         List<BlocklossResult> auditedResults = blocklossResultFacade.list(new QueryWrapper<BlocklossResult>()
                 .ge(dataCompareVO.getStartDate() != null && StringUtil.isBlank(dataCompareVO.getBehospitalCode()), "behospital_date", dataCompareVO.getStartDate())
@@ -142,19 +132,51 @@ public class BlockLossManagementFacade {
                 .eq(hospitalId != null, "hospital_id", hospitalId)
                 .notIn("is_audited", LossIsAuditedEnum.NOT_AUDITED.getKey())
                 .eq("is_deleted", IsDeleteEnum.N.getKey()));
-        List<String> auditedResultCodes = null;
-        List<String> auditedResultHomePages = null;
-        List<String> auditedResultRecIds = null;
+        //再按照内部|外部区分
+        List<String> inAuditedResultCodes = null;
+        List<String> inAuditedResultHomePages = null;
+        List<String> inAuditedResultRecIds = null;
+        List<String> outAuditedResultCodes = null;
+        List<String> outAuditedResultHomePages = null;
+        List<String> outAuditedResultRecIds = null;
+
         if (ListUtil.isNotEmpty(auditedResults)) {
             Map<String, List<BlocklossResult>> auditedResultMap = EntityUtil.makeEntityListMap(auditedResults, "lossType");
             if (ListUtil.isNotEmpty(auditedResultMap.get(LossTypeEnum.CODE_LOSS.getKey()))) {
-                auditedResultCodes = auditedResultMap.get(LossTypeEnum.CODE_LOSS.getKey()).stream().map(BlocklossResult::getBehospitalCode).collect(Collectors.toList());
+                List<BlocklossResult> auditedResultCodes = auditedResultMap.get(LossTypeEnum.CODE_LOSS.getKey());
+                if(ListUtil.isNotEmpty(auditedResultCodes)){
+                    Map<String, List<BlocklossResult>> tempCodeMap = EntityUtil.makeEntityListMap(auditedResultCodes,"lossWay");
+                    if(ListUtil.isNotEmpty(tempCodeMap.get(LossWayEnum.IN_LOSS.getKey()))){
+                        inAuditedResultCodes = tempCodeMap.get(LossWayEnum.IN_LOSS.getKey()).stream().map(BlocklossResult::getBehospitalCode).collect(Collectors.toList());
+                    }
+                    if(ListUtil.isNotEmpty(tempCodeMap.get(LossWayEnum.OUT_LOSS.getKey()))){
+                        outAuditedResultCodes = tempCodeMap.get(LossWayEnum.OUT_LOSS.getKey()).stream().map(BlocklossResult::getBehospitalCode).collect(Collectors.toList());
+                    }
+                }
             }
             if (ListUtil.isNotEmpty(auditedResultMap.get(LossTypeEnum.HOMEPAGE_LOSS.getKey()))) {
-                auditedResultHomePages = auditedResultMap.get(LossTypeEnum.HOMEPAGE_LOSS.getKey()).stream().map(BlocklossResult::getRecId).collect(Collectors.toList());
+                List<BlocklossResult> auditedResultHomePages = auditedResultMap.get(LossTypeEnum.HOMEPAGE_LOSS.getKey());
+                if(ListUtil.isNotEmpty(auditedResultHomePages)){
+                    Map<String, List<BlocklossResult>> tempHomePageMap = EntityUtil.makeEntityListMap(auditedResultHomePages,"lossWay");
+                    if(ListUtil.isNotEmpty(tempHomePageMap.get(LossWayEnum.IN_LOSS.getKey()))){
+                        inAuditedResultHomePages = tempHomePageMap.get(LossWayEnum.IN_LOSS.getKey()).stream().map(BlocklossResult::getRecId).collect(Collectors.toList());
+                    }
+                    if(ListUtil.isNotEmpty(tempHomePageMap.get(LossWayEnum.OUT_LOSS.getKey()))){
+                        outAuditedResultHomePages = tempHomePageMap.get(LossWayEnum.OUT_LOSS.getKey()).stream().map(BlocklossResult::getRecId).collect(Collectors.toList());
+                    }
+                }
             }
             if (ListUtil.isNotEmpty(auditedResultMap.get(LossTypeEnum.REC_LOSS.getKey()))) {
-                auditedResultRecIds = auditedResultMap.get(LossTypeEnum.REC_LOSS.getKey()).stream().map(BlocklossResult::getRecId).collect(Collectors.toList());
+                List<BlocklossResult> auditedResultRecIds = auditedResultMap.get(LossTypeEnum.REC_LOSS.getKey());
+                if(ListUtil.isNotEmpty(auditedResultRecIds)){
+                    Map<String, List<BlocklossResult>> tempRecMap = EntityUtil.makeEntityListMap(auditedResultRecIds,"lossWay");
+                    if(ListUtil.isNotEmpty(tempRecMap.get(LossWayEnum.IN_LOSS.getKey()))){
+                        inAuditedResultRecIds = tempRecMap.get(LossWayEnum.IN_LOSS.getKey()).stream().map(BlocklossResult::getRecId).collect(Collectors.toList());
+                    }
+                    if(ListUtil.isNotEmpty(tempRecMap.get(LossWayEnum.OUT_LOSS.getKey()))){
+                        outAuditedResultRecIds = tempRecMap.get(LossWayEnum.OUT_LOSS.getKey()).stream().map(BlocklossResult::getRecId).collect(Collectors.toList());
+                    }
+                }
             }
         }
         //定义对应要更新的已核查集合
@@ -243,11 +265,11 @@ public class BlockLossManagementFacade {
             //外部丢失数据集合
             List<BlocklossResult> outInserts = new ArrayList<>();
             //文书数据对比
-            compareHisWithLog(recs, recLogs, LossTypeEnum.REC_LOSS.getKey(), auditedResultRecIds, outInserts, hisMedicalRecordMap, hospitalId, principleId, dataUps);
+            compareHisWithLog(recs, recLogs, LossTypeEnum.REC_LOSS.getKey(), outAuditedResultRecIds, outInserts, hisMedicalRecordMap, hospitalId, principleId, dataUps);
             //病案首页数据对比
-            compareHisWithLog(medicalRecords, homePageLogs, LossTypeEnum.HOMEPAGE_LOSS.getKey(), auditedResultHomePages, outInserts, hisMedicalRecordMap, hospitalId, principleId, dataUps);
+            compareHisWithLog(medicalRecords, homePageLogs, LossTypeEnum.HOMEPAGE_LOSS.getKey(), outAuditedResultHomePages, outInserts, hisMedicalRecordMap, hospitalId, principleId, dataUps);
             //病历数据对比
-            compareHisWithLog(medicalRecords, behospitalCodeLogs, LossTypeEnum.CODE_LOSS.getKey(), auditedResultCodes, outInserts, hisMedicalRecordMap, hospitalId, principleId, dataUps);
+            compareHisWithLog(medicalRecords, behospitalCodeLogs, LossTypeEnum.CODE_LOSS.getKey(), outAuditedResultCodes, outInserts, hisMedicalRecordMap, hospitalId, principleId, dataUps);
 
             flag = blocklossResultServiceImpl.saveBatch(outInserts);
         }
@@ -256,13 +278,13 @@ public class BlockLossManagementFacade {
         //内部丢失数据集合
         List<BlocklossResult> inInserts = new ArrayList<>();
         if (ListUtil.isNotEmpty(recLogs)) {
-            compareLogWithLocal(recLogs, dataBaseRecIds, LossTypeEnum.REC_LOSS.getKey(), auditedResultRecIds, inInserts, hisMedicalRecordMap, hospitalId, principleId, dataUps);
+            compareLogWithLocal(recLogs, dataBaseRecIds, LossTypeEnum.REC_LOSS.getKey(), inAuditedResultRecIds, inInserts, hisMedicalRecordMap, hospitalId, principleId, dataUps);
         }
         if (ListUtil.isNotEmpty(homePageLogs)) {
-            compareLogWithLocal(homePageLogs, dataBaseHomePageIds, LossTypeEnum.HOMEPAGE_LOSS.getKey(), auditedResultHomePages, inInserts, hisMedicalRecordMap, hospitalId, principleId, dataUps);
+            compareLogWithLocal(homePageLogs, dataBaseHomePageIds, LossTypeEnum.HOMEPAGE_LOSS.getKey(), inAuditedResultHomePages, inInserts, hisMedicalRecordMap, hospitalId, principleId, dataUps);
         }
         if (ListUtil.isNotEmpty(behospitalCodeLogs)) {
-            compareLogWithLocal(behospitalCodeLogs, dataBaseBehospitalCodes, LossTypeEnum.CODE_LOSS.getKey(), auditedResultCodes, inInserts, hisMedicalRecordMap, hospitalId, principleId, dataUps);
+            compareLogWithLocal(behospitalCodeLogs, dataBaseBehospitalCodes, LossTypeEnum.CODE_LOSS.getKey(), inAuditedResultCodes, inInserts, hisMedicalRecordMap, hospitalId, principleId, dataUps);
         }
         //更新核查数据的时间
         if (ListUtil.isNotEmpty(dataUps)) {
@@ -278,8 +300,7 @@ public class BlockLossManagementFacade {
                         .eq("is_deleted", IsDeleteEnum.N.getKey())
                         .ge(dataCompareVO.getStartDate() != null , "behospital_date", dataCompareVO.getStartDate())
                         .le(dataCompareVO.getEndDate() != null , "behospital_date", dataCompareVO.getEndDate())
-                        .eq(finalHospitalId != null, "hospital_id", finalHospitalId)
-                        .eq("hospital_id", finalHospitalId != null ? finalHospitalId : 0));
+                        .eq(finalHospitalId != null, "hospital_id", finalHospitalId));
             });
         }
 
@@ -287,6 +308,19 @@ public class BlockLossManagementFacade {
             flag = blocklossResultServiceImpl.saveBatch(inInserts);
         }
 
+        //====3.获取已丢失状态记录,去数据库中对比判断是否补录
+        List<BlocklossResult> lossResults = blocklossResultFacade.list(new QueryWrapper<BlocklossResult>()
+                .select("id,behospital_code,rec_id,loss_type,loss_way")
+                .eq(hospitalId != null, "hospital_id", hospitalId)
+                .eq("status", LossStatusEnum.IS_LOSS.getKey())
+                .eq("is_deleted", IsDeleteEnum.N.getKey()));
+        if (ListUtil.isNotEmpty(lossResults)) {
+            Map<String, List<BlocklossResult>> lossResultMap = EntityUtil.makeEntityListMap(lossResults, "lossType");
+            //更新以缺失数据的状态
+            flag = upBlockLossStatus(lossResultMap, hospitalId, principleId);
+        }
+
+
         return flag;
     }