完整性校验增加校验检验检查报告单

master
zengwh 5 years ago
parent 14c3a3d513
commit 7bff4478d8

Binary file not shown.

@ -41,4 +41,10 @@ public interface Archive_DetailMapper {
* @return
*/
List<Archive_Detail> selectAssortIdsByMasterIds(@Param("masterIds") String masterIds);
/**
* masterIdMID
* @param masterIds
* @return
*/
List<Archive_Detail> selectNotInspectionList(@Param("masterIds") String masterIds);
}

@ -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<Archive_Master_Vo> list = selectByColumn(archiveMasterVo);
//组织完整性字段
//list集合的分组分类集合
if(!CollectionUtils.isEmpty(list)){
List<Archive_Detail> details = getArchiveDetailsByMasterIds(list);
//获取masterIds
String masterIds = getMasterIdsByList(list);
//查询缺少检验检查报告masterId集合
List<Archive_Detail> selectNotInspectionList = detailMapper.selectNotInspectionList(masterIds);
//查询需要校验完整性的患者的分类集合
List<Archive_Detail> details = detailMapper.selectAssortIdsByMasterIds(masterIds);
if(!CollectionUtils.isEmpty(details)){
//查询需要校验完整性的分类集合
Zd_Assort assort = new Zd_Assort();
assort.setIsCheck(1);
List<Zd_Assort> 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<Archive_Master_Vo> list, List<Archive_Detail> details, List<Zd_Assort> assortList) {
private void updateMasterBySuccess(List<Archive_Master_Vo> list,List<Archive_Detail> selectNotInspectionList, List<Archive_Detail> details, List<Zd_Assort> 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 {
}
/**
* masterIdsdetail
* masterIds
* @param list
* @return
*/
private List<Archive_Detail> getArchiveDetailsByMasterIds(List<Archive_Master_Vo> list) {
private String getMasterIdsByList(List<Archive_Master_Vo> 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<Archive_Master_Vo> selectUnSuccessAssortByMasterIds(StringBuilder masterIds) {
List<Archive_Master_Vo> list = new ArrayList<>();
if(StringUtils.isNotBlank(masterIds)){
//按masterId分组查询需要已采集的分类集合
List<Archive_Detail> details = detailMapper.selectAssortIdsByMasterIds(masterIds.toString());
//按masterId分组查询是否存在缺少检验检查报告单的masterId集合
List<Archive_Detail> 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);

@ -332,4 +332,17 @@
AssortID,
MasterID
</select>
<!--按masterId分组查询是否缺少检验检查报告MID集合-->
<select id="selectNotInspectionList" resultMap="BaseResultMap">
SELECT
MID AS MasterID
FROM
archive_other_ext
WHERE
sysFlag IN ( 3, 6 )
AND ISNULL( DID, '' )= ''
AND MID IN (${masterIds})
GROUP BY
MID
</select>
</mapper>

@ -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
<choose>
<when test="isSuccess == 1">
@ -251,6 +264,7 @@
WHERE
print_flag = 0
AND is_check = 1)
AND inspectionCount is null
</when>
<otherwise>
ISNULL( count, 0 ) != (
@ -261,6 +275,7 @@
WHERE
print_flag = 0
AND is_check = 1)
OR inspectionCount is not null
</otherwise>
</choose>
<include refid="beHospitalSeach"></include>

Loading…
Cancel
Save