Browse Source

数据块对比定时任务空指针异常处理

songxinlu 3 năm trước cách đây
mục cha
commit
de665ddbdc

+ 48 - 33
daqe-center/src/main/java/com/lantone/daqe/facade/BlockLossManagementFacade.java

@@ -104,17 +104,26 @@ public class BlockLossManagementFacade {
      */
     public Boolean dataCompare(DataCompareVO dataCompareVO) {
         Boolean flag = false;
+        Long hospitalId = null;
+        Long principleId = null;
+        //定时任务SysUserUtils取不到医院,操作人
+        if (dataCompareVO.getHospitalId() == null) {
+            hospitalId = SysUserUtils.getCurrentHospitalId();
+            principleId = SysUserUtils.getCurrentPrincipleId();
+        }
+
+
         //====1.获取已丢失状态记录,去数据库中对比判断是否补录
         List<BlocklossResult> lossResults = blocklossResultFacade.list(new QueryWrapper<BlocklossResult>()
                 .select("id,behospital_code,rec_id,loss_type,loss_way")
-                .eq(SysUserUtils.getCurrentHospitalId() != null, "hospital_id", SysUserUtils.getCurrentHospitalId())
+                .eq(hospitalId != null, "hospital_id", hospitalId)
                 .eq("status", LossStatusEnum.IS_LOSS.getKey())
                 .eq("is_deleted", IsDeleteEnum.N.getKey()));
         Map<String, List<BlocklossResult>> lossResultMap = null;
         if (ListUtil.isNotEmpty(lossResults)) {
             lossResultMap = EntityUtil.makeEntityListMap(lossResults, "lossType");
             //更新以缺失数据的状态
-            flag = upBlockLossStatus(lossResultMap);
+            flag = upBlockLossStatus(lossResultMap, hospitalId, principleId);
         }
 
         //====2.某时间的数据对比
@@ -155,7 +164,7 @@ public class BlockLossManagementFacade {
                 .ge(dataCompareVO.getStartDate() != null && StringUtil.isBlank(dataCompareVO.getBehospitalCode()), "gmt_create", dataCompareVO.getStartDate())
                 .le(dataCompareVO.getEndDate() != null && StringUtil.isBlank(dataCompareVO.getBehospitalCode()), "gmt_create", dataCompareVO.getEndDate())
                 .eq(StringUtil.isNotBlank(dataCompareVO.getBehospitalCode()), "behospital_code", dataCompareVO.getBehospitalCode())
-                .eq(SysUserUtils.getCurrentHospitalId() != null, "hospital_id", SysUserUtils.getCurrentHospitalId())
+                .eq(hospitalId != null, "hospital_id", hospitalId)
                 .eq("is_deleted", IsDeleteEnum.N.getKey()))
                 .stream().map(BehospitalInfo::getBehospitalCode).collect(Collectors.toList());
         //病案首页数据
@@ -166,13 +175,13 @@ public class BlockLossManagementFacade {
             dataBaseHomePageIds = homePageFacade.list(new QueryWrapper<HomePage>()
                     .select("home_page_id")
                     .in("behospital_code", dataBaseBehospitalCodes)
-                    .eq(SysUserUtils.getCurrentHospitalId() != null, "hospital_id", SysUserUtils.getCurrentHospitalId())
+                    .eq(hospitalId != null, "hospital_id", hospitalId)
                     .eq("is_deleted", IsDeleteEnum.N.getKey()))
                     .stream().map(HomePage::getHomePageId).collect(Collectors.toList());
             dataBaseRecIds = medicalRecordFacade.list(new QueryWrapper<MedicalRecord>()
                     .select("rec_id")
                     .in("behospital_code", dataBaseBehospitalCodes)
-                    .eq(SysUserUtils.getCurrentHospitalId() != null, "hospital_id", SysUserUtils.getCurrentHospitalId())
+                    .eq(hospitalId != null, "hospital_id", hospitalId)
                     .eq("is_deleted", IsDeleteEnum.N.getKey()))
                     .stream().map(MedicalRecord::getRecId).collect(Collectors.toList());
         }
@@ -238,11 +247,11 @@ public class BlockLossManagementFacade {
             //外部丢失数据集合
             List<BlocklossResult> outInserts = new ArrayList<>();
             //文书数据对比
-            compareHisWithLog(recs, recLogs, LossTypeEnum.REC_LOSS.getKey(), outInserts, outLossRecs, hisMedicalRecordMap);
+            compareHisWithLog(recs, recLogs, LossTypeEnum.REC_LOSS.getKey(), outInserts, outLossRecs, hisMedicalRecordMap, hospitalId, principleId);
             //病案首页数据对比
-            compareHisWithLog(medicalRecords, homePageLogs, LossTypeEnum.HOMEPAGE_LOSS.getKey(), outInserts, outLossHomepages, hisMedicalRecordMap);
+            compareHisWithLog(medicalRecords, homePageLogs, LossTypeEnum.HOMEPAGE_LOSS.getKey(), outInserts, outLossHomepages, hisMedicalRecordMap, hospitalId, principleId);
             //病历数据对比
-            compareHisWithLog(medicalRecords, behospitalCodeLogs, LossTypeEnum.CODE_LOSS.getKey(), outInserts, outLossCodes, hisMedicalRecordMap);
+            compareHisWithLog(medicalRecords, behospitalCodeLogs, LossTypeEnum.CODE_LOSS.getKey(), outInserts, outLossCodes, hisMedicalRecordMap, hospitalId, principleId);
 
             flag = blocklossResultServiceImpl.saveBatch(outInserts);
         }
@@ -251,13 +260,13 @@ public class BlockLossManagementFacade {
         //内部丢失数据集合
         List<BlocklossResult> inInserts = new ArrayList<>();
         if (ListUtil.isNotEmpty(recLogs)) {
-            compareLogWithLocal(recLogs, dataBaseRecIds, LossTypeEnum.REC_LOSS.getKey(), inInserts, inLossRecs, hisMedicalRecordMap);
+            compareLogWithLocal(recLogs, dataBaseRecIds, LossTypeEnum.REC_LOSS.getKey(), inInserts, inLossRecs, hisMedicalRecordMap, hospitalId, principleId);
         }
         if (ListUtil.isNotEmpty(homePageLogs)) {
-            compareLogWithLocal(homePageLogs, dataBaseHomePageIds, LossTypeEnum.HOMEPAGE_LOSS.getKey(), inInserts, inLossHomepages, hisMedicalRecordMap);
+            compareLogWithLocal(homePageLogs, dataBaseHomePageIds, LossTypeEnum.HOMEPAGE_LOSS.getKey(), inInserts, inLossHomepages, hisMedicalRecordMap, hospitalId, principleId);
         }
         if (ListUtil.isNotEmpty(behospitalCodeLogs)) {
-            compareLogWithLocal(behospitalCodeLogs, dataBaseBehospitalCodes, LossTypeEnum.CODE_LOSS.getKey(), inInserts, inLossCodes, hisMedicalRecordMap);
+            compareLogWithLocal(behospitalCodeLogs, dataBaseBehospitalCodes, LossTypeEnum.CODE_LOSS.getKey(), inInserts, inLossCodes, hisMedicalRecordMap, hospitalId, principleId);
         }
         if (ListUtil.isNotEmpty(inInserts)) {
             flag = blocklossResultServiceImpl.saveBatch(inInserts);
@@ -290,11 +299,13 @@ public class BlockLossManagementFacade {
      * @param inInserts           内部丢失插入集合
      * @param havingLossIds       已经插入的id集合
      * @param hisMedicalRecordMap his病历数据map(key-住院序号:value-人的his数据)
+     * @param hospitalId          医院id
+     * @param principleId         操作人id
      * @Return void
      */
     private void compareLogWithLocal(List<GetOperationLogDTO> logs, List<String> dataBases, String type,
                                      List<BlocklossResult> inInserts, List<String> havingLossIds,
-                                     Map<String, HisMedicalRecordDTO> hisMedicalRecordMap) {
+                                     Map<String, HisMedicalRecordDTO> hisMedicalRecordMap, Long hospitalId, Long principleId) {
         switch (type) {
             case "0":
                 //文书丢失
@@ -312,7 +323,7 @@ public class BlockLossManagementFacade {
                                 blocklossResult.setBehospitalDate(hisMedicalRecordMap.get(rec.getBehospitalCode()).getBehospitalDate());
                             }
                             //拼装病历数据块丢失明细其他信息
-                            assembleOtherBlocklossResult(blocklossResult);
+                            assembleOtherBlocklossResult(blocklossResult, hospitalId, principleId);
                             inInserts.add(blocklossResult);
                         }
                     }
@@ -342,7 +353,7 @@ public class BlockLossManagementFacade {
                                 blocklossResult.setBehospitalDate(hisMedicalRecordMap.get(recMap.get(recId).getBehospitalCode()).getBehospitalDate());
                             }
                             //拼装病历数据块丢失明细其他信息
-                            assembleOtherBlocklossResult(blocklossResult);
+                            assembleOtherBlocklossResult(blocklossResult, hospitalId, principleId);
                             inInserts.add(blocklossResult);
                         }
                     });
@@ -365,7 +376,7 @@ public class BlockLossManagementFacade {
                                 blocklossResult.setBehospitalDate(hisMedicalRecordMap.get(homePages.getBehospitalCode()).getBehospitalDate());
                             }
                             //拼装病历数据块丢失明细其他信息
-                            assembleOtherBlocklossResult(blocklossResult);
+                            assembleOtherBlocklossResult(blocklossResult, hospitalId, principleId);
                             inInserts.add(blocklossResult);
                         }
                     }
@@ -385,7 +396,7 @@ public class BlockLossManagementFacade {
                                 blocklossResult.setBehospitalDate(hisMedicalRecordMap.get(beHehospitalInfo.getBehospitalCode()).getBehospitalDate());
                             }
                             //拼装病历数据块丢失明细其他信息
-                            assembleOtherBlocklossResult(blocklossResult);
+                            assembleOtherBlocklossResult(blocklossResult, hospitalId, principleId);
                             inInserts.add(blocklossResult);
                         }
                     }
@@ -403,7 +414,7 @@ public class BlockLossManagementFacade {
      * @param lossResultMap
      * @Return void
      */
-    private Boolean upBlockLossStatus(Map<String, List<BlocklossResult>> lossResultMap) {
+    private Boolean upBlockLossStatus(Map<String, List<BlocklossResult>> lossResultMap, Long hospitalId, Long principleId) {
         AtomicReference<Boolean> flag = new AtomicReference<>(false);
         lossResultMap.keySet().stream().forEach(lossType -> {
             //0:文书丢失 1:病案首页丢失 2:患者信息丢失
@@ -411,7 +422,7 @@ public class BlockLossManagementFacade {
                 case "0":
                     //文书丢失
                     List<String> redIds = medicalRecordFacade.list(new QueryWrapper<MedicalRecord>()
-                            .eq("hospital_id", SysUserUtils.getCurrentHospitalId() != null ? SysUserUtils.getCurrentHospitalId() : 0)
+                            .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()))
                             .eq("is_deleted", IsDeleteEnum.N.getKey()))
@@ -422,18 +433,18 @@ public class BlockLossManagementFacade {
                                 .set("solve_time", DateUtil.now())
                                 .set("gmt_modified", DateUtil.now())
                                 .set("status", LossStatusEnum.NOT_LOSS.getKey())
-                                .set("modifier", SysUserUtils.getCurrentPrincipleId() != null ? SysUserUtils.getCurrentPrincipleId() + "" : "0")
+                                .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", SysUserUtils.getCurrentHospitalId() != null ? SysUserUtils.getCurrentHospitalId() : 0)
+                                .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", SysUserUtils.getCurrentHospitalId() != null ? SysUserUtils.getCurrentHospitalId() : 0)
+                            .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()))
                             .eq("is_deleted", IsDeleteEnum.N.getKey()))
@@ -445,10 +456,10 @@ public class BlockLossManagementFacade {
                                 .set("solve_time", DateUtil.now())
                                 .set("gmt_modified", DateUtil.now())
                                 .set("status", LossStatusEnum.NOT_LOSS.getKey())
-                                .set("modifier", SysUserUtils.getCurrentPrincipleId() != null ? SysUserUtils.getCurrentPrincipleId() + "" : "0")
+                                .set("modifier", principleId != null ? principleId + "" : "0")
                                 .eq("status", LossStatusEnum.IS_LOSS.getKey())
                                 .eq("loss_type", lossType)
-                                .eq("hospital_id", SysUserUtils.getCurrentHospitalId() != null ? SysUserUtils.getCurrentHospitalId() : 0)
+                                .eq("hospital_id", hospitalId != null ? hospitalId : 0)
                                 .in("rec_id", homePages)
                                 .eq("is_deleted", IsDeleteEnum.N.getKey())));
                     }
@@ -456,7 +467,7 @@ public class BlockLossManagementFacade {
                 case "2":
                     //患者信息丢失
                     List<String> behospitalCodes = behospitalInfoFacade.list(new QueryWrapper<BehospitalInfo>()
-                            .eq("hospital_id", SysUserUtils.getCurrentHospitalId() != null ? SysUserUtils.getCurrentHospitalId() : 0)
+                            .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());
@@ -466,11 +477,11 @@ public class BlockLossManagementFacade {
                                 .set("solve_time", DateUtil.now())
                                 .set("gmt_modified", DateUtil.now())
                                 .set("status", LossStatusEnum.NOT_LOSS.getKey())
-                                .set("modifier", SysUserUtils.getCurrentPrincipleId() != null ? SysUserUtils.getCurrentPrincipleId() + "" : "0")
+                                .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", SysUserUtils.getCurrentHospitalId() != null ? SysUserUtils.getCurrentHospitalId() : 0)
+                                .eq("hospital_id", hospitalId != null ? hospitalId : 0)
                                 .in("behospital_code", behospitalCodes)));
                     }
                     break;
@@ -488,11 +499,13 @@ public class BlockLossManagementFacade {
      * @param outInserts          外部丢失插入集合
      * @param havingLossIds       已经插入的id集合
      * @param hisMedicalRecordMap his病历数据map(key-住院序号:value-人的his数据)
+     * @param hospitalId          医院id
+     * @param principleId         操作人id
      * @Return void
      */
     private void compareHisWithLog(List<GetOperationLogDTO> medicalRecords, List<GetOperationLogDTO> logs,
                                    String type, List<BlocklossResult> outInserts, List<String> havingLossIds,
-                                   Map<String, HisMedicalRecordDTO> hisMedicalRecordMap) {
+                                   Map<String, HisMedicalRecordDTO> hisMedicalRecordMap, Long hospitalId, Long principleId) {
         //his数据为空直接返回
         if (ListUtil.isEmpty(medicalRecords)) {
             return;
@@ -514,7 +527,7 @@ public class BlockLossManagementFacade {
                                 blocklossResult.setLossType(LossTypeEnum.REC_LOSS.getKey());
                                 blocklossResult.setBehospitalDate(hisMedicalRecordMap.get(medicalRecord.getBehospitalCode()).getBehospitalDate());
                                 //拼装病历数据块丢失明细其他信息
-                                assembleOtherBlocklossResult(blocklossResult);
+                                assembleOtherBlocklossResult(blocklossResult, hospitalId, principleId);
                                 outInserts.add(blocklossResult);
                             }
                         }
@@ -535,7 +548,7 @@ public class BlockLossManagementFacade {
                             blocklossResult.setLossType(LossTypeEnum.HOMEPAGE_LOSS.getKey());
                             blocklossResult.setBehospitalDate(hisMedicalRecordMap.get(medicalRecord.getBehospitalCode()).getBehospitalDate());
                             //拼装病历数据块丢失明细其他信息
-                            assembleOtherBlocklossResult(blocklossResult);
+                            assembleOtherBlocklossResult(blocklossResult, hospitalId, principleId);
                             outInserts.add(blocklossResult);
                         }
                     }
@@ -553,7 +566,7 @@ public class BlockLossManagementFacade {
                             blocklossResult.setLossType(LossTypeEnum.CODE_LOSS.getKey());
                             blocklossResult.setBehospitalDate(hisMedicalRecordMap.get(medicalRecord.getBehospitalCode()).getBehospitalDate());
                             //拼装病历数据块丢失明细其他信息
-                            assembleOtherBlocklossResult(blocklossResult);
+                            assembleOtherBlocklossResult(blocklossResult, hospitalId, principleId);
                             outInserts.add(blocklossResult);
                         }
                     }
@@ -568,13 +581,15 @@ public class BlockLossManagementFacade {
      * 拼装病历数据块丢失明细其他信息
      *
      * @param blocklossResult
+     * @param hospitalId
+     * @param principleId
      * @Return void
      */
-    private void assembleOtherBlocklossResult(BlocklossResult blocklossResult) {
+    private void assembleOtherBlocklossResult(BlocklossResult blocklossResult, Long hospitalId, Long principleId) {
         blocklossResult.setStatus(LossStatusEnum.IS_LOSS.getKey());
-        blocklossResult.setHospitalId(SysUserUtils.getCurrentHospitalId() != null ? SysUserUtils.getCurrentHospitalId() : 0);
+        blocklossResult.setHospitalId(hospitalId != null ? hospitalId : 0);
         blocklossResult.setGmtCreate(DateUtil.now());
-        blocklossResult.setCreator(SysUserUtils.getCurrentPrincipleId() != null ? SysUserUtils.getCurrentPrincipleId() + "" : "0");
+        blocklossResult.setCreator(principleId != null ? principleId + "" : "0");
         blocklossResult.setGmtModified(DateUtil.now());
     }
 

+ 4 - 0
daqe-center/src/main/java/com/lantone/daqe/task/BlockLossDataCompareTask.java

@@ -28,6 +28,9 @@ public class BlockLossDataCompareTask implements SchedulingConfigurer {
     @Value("${blockloss.compare.use}")
     private String isUsed = "false";
 
+    @Value("${blockloss.compare.hospitalId}")
+    private String hospitalId = "0";
+
     /**
      * 执行定时任务.
      */
@@ -40,6 +43,7 @@ public class BlockLossDataCompareTask implements SchedulingConfigurer {
                     DataCompareVO dataCompareVO = new DataCompareVO();
                     dataCompareVO.setStartDate(DateUtil.addDate(DateUtil.now(),-1));
                     dataCompareVO.setEndDate(DateUtil.now());
+                    dataCompareVO.setHospitalId(Long.parseLong(hospitalId));
                     blockLossManagementFacade.dataCompare(dataCompareVO);
                 }
             }

+ 2 - 1
daqe-center/src/main/resources/bootstrap.yml

@@ -59,8 +59,9 @@ swagger.version: 0.0.1-SNAPSHOT
 #数据比对定时器
 blockloss:
   compare:
-    cron: 0 0 1 * * ?
+    cron: 0 0/1 * * * ?
     use: true
+    hospitalId: 4
 #数据校验定时器
 columnResult:
   compare: