diff --git a/doc/gm_record.bak b/doc/gm_record.bak index d8c174d..1b4cb49 100644 Binary files a/doc/gm_record.bak and b/doc/gm_record.bak differ diff --git a/src/main/java/com/emr/dao/Archive_DetailMapper.java b/src/main/java/com/emr/dao/Archive_DetailMapper.java index ac12def..243db87 100644 --- a/src/main/java/com/emr/dao/Archive_DetailMapper.java +++ b/src/main/java/com/emr/dao/Archive_DetailMapper.java @@ -41,4 +41,10 @@ public interface Archive_DetailMapper { * @return */ List selectAssortIdsByMasterIds(@Param("masterIds") String masterIds); + /** + * 按masterId分组查询是否缺少检验检查报告MID集合 + * @param masterIds + * @return + */ + List selectNotInspectionList(@Param("masterIds") String masterIds); } \ No newline at end of file diff --git a/src/main/java/com/emr/service/ipml/Archive_MasterServiceImpl.java b/src/main/java/com/emr/service/ipml/Archive_MasterServiceImpl.java index 962ffbc..609c4a5 100644 --- a/src/main/java/com/emr/service/ipml/Archive_MasterServiceImpl.java +++ b/src/main/java/com/emr/service/ipml/Archive_MasterServiceImpl.java @@ -68,18 +68,24 @@ public class Archive_MasterServiceImpl implements Archive_MasterService { @Override public OffsetLimitPage selectByColumn(Archive_Master_Vo archiveMasterVo, Integer offset, Integer limit) { PageHelper.offsetPage(offset, limit); + //查询出院集合 List list = selectByColumn(archiveMasterVo); //组织完整性字段 //list集合的分组分类集合 if(!CollectionUtils.isEmpty(list)){ - List details = getArchiveDetailsByMasterIds(list); + //获取masterIds + String masterIds = getMasterIdsByList(list); + //查询缺少检验检查报告masterId集合 + List selectNotInspectionList = detailMapper.selectNotInspectionList(masterIds); + //查询需要校验完整性的患者的分类集合 + List details = detailMapper.selectAssortIdsByMasterIds(masterIds); if(!CollectionUtils.isEmpty(details)){ //查询需要校验完整性的分类集合 Zd_Assort assort = new Zd_Assort(); assort.setIsCheck(1); List assortList = assortMapper.selectAll(assort); //循环遍历list集合判断是否完整,完整isCheck赋值1,且批量更新LockInfo字段为完整 - updateMasterBySuccess(list, details, assortList); + updateMasterBySuccess(list, selectNotInspectionList,details, assortList); } } return new OffsetLimitPage((Page) list); @@ -88,42 +94,57 @@ public class Archive_MasterServiceImpl implements Archive_MasterService { /** * //循环遍历list集合判断是否完整,完整isCheck赋值1,且批量更新LockInfo字段为完整 * @param list + * @param selectNotInspectionList * @param details * @param assortList */ - private void updateMasterBySuccess(List list, List details, List assortList) { + private void updateMasterBySuccess(List list,List selectNotInspectionList, List details, List assortList) { //循环遍历list集合判断是否完整,完整isCheck赋值1,且批量更新LockInfo字段为完整 //定义通过完整性校验的masterIds StringBuilder masterIds = new StringBuilder(); for(Archive_Master_Vo master : list){ - //定义匹配分类成功次数 - int successCount = 0; - for(Zd_Assort assortFor : assortList){ - //定义无匹配的分类 - boolean flag = false; - for(Archive_Detail detail : details){ - //判断主键相同且分类id相同 - if(master.getId().equals(detail.getMasterid()) && assortFor.getAssortId().equals(detail.getAssortid())){ - successCount++; - flag = true; + //定义检验检查报告分类是完整的 + boolean inspectionFlag = true; + //判断是否存在缺少校验检查分类 + if(!CollectionUtils.isEmpty(selectNotInspectionList)){ + for (Archive_Detail detail : selectNotInspectionList) { + if (master.getId().equals(detail.getMasterid())) { + inspectionFlag = false; break; } } - //该分类无匹配直接跳出循环,改主键不完整 - if(!flag){ - break; - } } - //如果成功匹配个数和需校验分类个数相等,全部匹配 - if(successCount == assortList.size()){ - //list的isSuccess字段值赋值1 - master.setIsSuccess("1"); - //不完整的批量更新为完整 - if(!"完整".equals(master.getLockinfo())) { - if (StringUtils.isBlank(masterIds)) { - masterIds.append("'").append(master.getId()).append("'"); - } else { - masterIds.append(",'").append(master.getId()).append("'"); + //检验检查报告分类完整才判断需要校验的分类是否完整 + if(inspectionFlag) { + //定义匹配分类成功次数 + int successCount = 0; + for (Zd_Assort assortFor : assortList) { + //定义无匹配的分类 + boolean flag = false; + for (Archive_Detail detail : details) { + //判断主键相同且分类id相同 + if (master.getId().equals(detail.getMasterid()) && assortFor.getAssortId().equals(detail.getAssortid())) { + successCount++; + flag = true; + break; + } + } + //该分类无匹配直接跳出循环,改主键不完整 + if (!flag) { + break; + } + } + //如果成功匹配个数和需校验分类个数相等,全部匹配 + if (successCount == assortList.size()) { + //list的isSuccess字段值赋值1 + master.setIsSuccess("1"); + //不完整的批量更新为完整 + if (!"完整".equals(master.getLockinfo())) { + if (StringUtils.isBlank(masterIds)) { + masterIds.append("'").append(master.getId()).append("'"); + } else { + masterIds.append(",'").append(master.getId()).append("'"); + } } } } @@ -135,11 +156,11 @@ public class Archive_MasterServiceImpl implements Archive_MasterService { } /** - * 根据masterIds查询分组的需要校验完整性的detail分类集合 + * 组织masterIds集合 * @param list * @return */ - private List getArchiveDetailsByMasterIds(List list) { + private String getMasterIdsByList(List list) { StringBuilder masterIds = new StringBuilder(); for (int i = 0; i < list.size(); i++) { if(i == 0){ @@ -148,8 +169,7 @@ public class Archive_MasterServiceImpl implements Archive_MasterService { masterIds.append(",'").append(list.get(i).getId()).append("'"); } } - //根据id集合查detail明细表分组分类集合 - return detailMapper.selectAssortIdsByMasterIds(masterIds.toString()); + return masterIds.toString(); } /** @@ -735,7 +755,10 @@ public class Archive_MasterServiceImpl implements Archive_MasterService { private List selectUnSuccessAssortByMasterIds(StringBuilder masterIds) { List list = new ArrayList<>(); if(StringUtils.isNotBlank(masterIds)){ + //按masterId分组查询需要已采集的分类集合 List details = detailMapper.selectAssortIdsByMasterIds(masterIds.toString()); + //按masterId分组查询是否存在缺少检验检查报告单的masterId集合 + List inspectionList = detailMapper.selectNotInspectionList(masterIds.toString()); //查询需要校验完整性的分类集合 Zd_Assort assort = new Zd_Assort(); assort.setIsCheck(1); @@ -764,6 +787,23 @@ public class Archive_MasterServiceImpl implements Archive_MasterService { } } } + //判断是否缺少检验检查报告单 + if(!CollectionUtils.isEmpty(inspectionList)){ + //定义存在缺少检验检查报告 + boolean inspectionFlag = true; + for(Archive_Detail detail:inspectionList){ + if(masterId.equals(detail.getMasterid())){ + inspectionFlag = false; + break; + } + } + if(!inspectionFlag){ + if(StringUtils.isNotBlank(unSuccessAssortNames)){ + unSuccessAssortNames.append(","); + } + unSuccessAssortNames.append("检验检查报告单"); + } + } master.setId(masterId); master.setUnSuccessAssortNames(unSuccessAssortNames.toString()); list.add(master); diff --git a/src/main/resources/mapper/Archive_DetailMapper.xml b/src/main/resources/mapper/Archive_DetailMapper.xml index 2a5ad65..d1af515 100644 --- a/src/main/resources/mapper/Archive_DetailMapper.xml +++ b/src/main/resources/mapper/Archive_DetailMapper.xml @@ -332,4 +332,17 @@ AssortID, MasterID + + \ No newline at end of file diff --git a/src/main/resources/mapper/Archive_MasterMapper.xml b/src/main/resources/mapper/Archive_MasterMapper.xml index fc5def7..12d439f 100644 --- a/src/main/resources/mapper/Archive_MasterMapper.xml +++ b/src/main/resources/mapper/Archive_MasterMapper.xml @@ -240,6 +240,19 @@ GROUP BY MasterID ) temp ON m.id = temp.MasterID + LEFT JOIN ( + SELECT + MID, + COUNT( MID ) inspectionCount + FROM + archive_other_ext + WHERE + sysFlag IN ( 3, 6 ) + AND ISNULL( DID, '' )= '' + AND ISNULL( MID, '' )!= '' + GROUP BY + MID + ) archive_other_ext ON m.id = archive_other_ext.MID WHERE @@ -251,6 +264,7 @@ WHERE print_flag = 0 AND is_check = 1) + AND inspectionCount is null ISNULL( count, 0 ) != ( @@ -261,6 +275,7 @@ WHERE print_flag = 0 AND is_check = 1) + OR inspectionCount is not null