fix:修复国内标准中GB和非GB类在自动变更状态时查询逻辑错误的BUG

This commit is contained in:
zyd
2022-09-28 22:35:37 +08:00
parent 78376b2598
commit e6ab230f88
@@ -110,45 +110,28 @@ public class UpdateStateStandSyncFz implements Runnable {
List<SarStandardsInfo> invalidStandToGBList = new ArrayList<>(); List<SarStandardsInfo> invalidStandToGBList = new ArrayList<>();
List<SarStandardsInfo> bdtStandToGBList = new ArrayList<>(); List<SarStandardsInfo> bdtStandToGBList = new ArrayList<>();
List<SarStandardsInfo> bdtStandToNotGBList = new ArrayList<>();
// 当前标准的标准类别是否是GB类 GB集合逻辑 // 当前标准的标准类别是否是GB类 GB集合逻辑
getStateStandScheduledList.forEach(info -> { getStateStandScheduledList.forEach(info -> {
if(StringUtils.isNotBlank(info.getBDTBZH())){ if(StringUtils.isNotBlank(info.getBDTBZH())){
List<String> bdtList = Arrays.stream(info.getBDTBZH().split(",")).map( List<String> bdtList = Arrays.stream(info.getBDTBZH().split(",")).map(
s -> s.replace(" ","").trim()).collect(Collectors.toList()); s -> s.replace(" ","").trim()).collect(Collectors.toList());
// 查询等于GB的国内标准 int bdtStandNumCount = bdtList.size();
QueryWrapper wrapperGB = new QueryWrapper(); QueryWrapper wrapperGB = new QueryWrapper();
wrapperGB.eq("SAR_STANDARDS_INFO.VALID_FLAG","0"); wrapperGB.eq("SAR_STANDARDS_INFO.VALID_FLAG","0");
wrapperGB.eq("SAR_STANDARDS_INFO.STAND_SORT","GB"); // wrapperGB.eq("SAR_STANDARDS_INFO.STAND_SORT","GB");
wrapperGB.in("trim(replace(concat(SAR_STANDARDS_INFO.STAND_SORT,' ',SAR_STANDARDS_INFO.STAND_NUMBER,'-'," + wrapperGB.in("trim(replace(concat(SAR_STANDARDS_INFO.STAND_SORT,' ',SAR_STANDARDS_INFO.STAND_NUMBER,'-'," +
"SAR_STANDARDS_INFO.STAND_YEAR),' ',''))",bdtList); "SAR_STANDARDS_INFO.STAND_YEAR),' ',''))",bdtList);
List<SarStandardsInfo> queryGBList = sarStandardsInfoDao.selectList(wrapperGB); List<SarStandardsInfo> queryGBList = sarStandardsInfoDao.selectList(wrapperGB);
//被代替标准号中所有有效标准的状态都是现行有效状态
if(!queryGBList.isEmpty()){ List<SarStandardsInfo> fzList = queryGBList.stream().filter(info1 ->
int queryGbCount = queryGBList.size(); "vsaga7nwub".equals(info1.getTextStatus()) || "qke0ckro2p".equals(info1.getTextStatus())
|| "chblaarg77".equals(info1.getTextStatus())).collect(Collectors.toList());
//被代替标准号中所有有效标准的状态都是现行有效状态 // 检查当前标准是否为GB类
List<SarStandardsInfo> fzList = queryGBList.stream().filter(info1 -> if(StringUtils.equals(info.getStandSort(),"GB")){
"vsaga7nwub".equals(info1.getTextStatus()) || "qke0ckro2p".equals(info1.getTextStatus()) if(fzList.size() == bdtStandNumCount){//当所有标准都是现行有效状态时
|| "chblaarg77".equals(info1.getTextStatus())).collect(Collectors.toList());
List<SarStandardsInfo> fzList2 = queryGBList.stream().filter(info1 ->
!"vsaga7nwub".equals(info1.getTextStatus()) && !"qke0ckro2p".equals(info1.getTextStatus())
&& !"chblaarg77".equals(info1.getTextStatus())).collect(Collectors.toList());
// //被代替标准号中所有有效标准的状态都是被代替状态
// List<SarStandardsInfo> bdtStateList = queryGBList.stream().filter(info1 ->
// "qke0ckro2p".equals(info1.getTextStatus())).collect(Collectors.toList());
//
// //被代替标准号中所有有效标准的状态都是废止状态
// List<SarStandardsInfo> fzList = queryGBList.stream().filter(info1 ->
// "chblaarg77".equals(info1.getTextStatus())).collect(Collectors.toList());
// 满足其上存入更新废止逻辑 如果只有一个被代替标准 优先更新废止状态
if(!fzList.isEmpty() && fzList2.isEmpty()){
invalidStandToGBList.add(info); invalidStandToGBList.add(info);
}else { }else{//其中被代替标准号中存在
// 被代替标准号中的有效标准的标准状态中有一个是发布、即将实施、现行有效、被代替状态的
List<SarStandardsInfo> singleList = queryGBList.stream().filter(info1 -> { List<SarStandardsInfo> singleList = queryGBList.stream().filter(info1 -> {
if("hc99551723c".equals(info1.getTextStatus()) || "hb0iy9z23c".equals(info1.getTextStatus()) if("hc99551723c".equals(info1.getTextStatus()) || "hb0iy9z23c".equals(info1.getTextStatus())
|| "vsaga7nwub".equals(info1.getTextStatus()) || "qke0ckro2p".equals(info1.getTextStatus())){ || "vsaga7nwub".equals(info1.getTextStatus()) || "qke0ckro2p".equals(info1.getTextStatus())){
@@ -156,50 +139,19 @@ public class UpdateStateStandSyncFz implements Runnable {
} }
return false; return false;
}).collect(Collectors.toList()); }).collect(Collectors.toList());
// 满足其上存入更新被代替逻辑 // 满足其上存入更新被代替逻辑
if(!singleList.isEmpty()){ if(!singleList.isEmpty()){
bdtStandToGBList.add(info); bdtStandToGBList.add(info);
} }
} }
}else{//非GB类
if(fzList.size()>0){
bdtStandToNotGBList.add(info);
}
} }
} }
}); });
// 当前标准的标准类别是否是GB类 NOT GB集合逻辑
List<SarStandardsInfo> bdtStandToNotGBList = getStateStandScheduledList.stream().filter(info -> {
if(StringUtils.isNotBlank(info.getBDTBZH())){
List<String> bdtList = Arrays.stream(info.getBDTBZH().split(",")).map(
s -> s.replace(" ","").trim()).collect(Collectors.toList());
//发布、即将实施、现行有效、被代替
List<String> bdtStateList = new ArrayList<>();
// 发布
bdtStateList.add("hc99551723c");
// 作废
bdtStateList.add("hb0iy9z23c");
// 即将实施
bdtStateList.add("vsaga7nwub");
// 被代替
bdtStateList.add("qke0ckro2p");
// 查询不等于GB的国内标准 且 有效的被代替标准
QueryWrapper wrapperNotGB = new QueryWrapper();
wrapperNotGB.eq("VALID_FLAG","0");
wrapperNotGB.ne("STAND_SORT","GB");
wrapperNotGB.in("TEXT_STATUS",bdtStateList);
wrapperNotGB.in("trim(replace(concat(SAR_STANDARDS_INFO.STAND_SORT,' ',SAR_STANDARDS_INFO.STAND_NUMBER,'-'," +
"SAR_STANDARDS_INFO.STAND_YEAR),' ',''))",bdtList);
List<SarStandardsInfo> queryNotGBList = sarStandardsInfoDao.selectList(wrapperNotGB);
// 被代替标准号中的有效标准的标准状态中有一个是发布、即将实施、现行有效、被代替状态的
// 满足其上过滤更新被代替数据
return !queryNotGBList.isEmpty();
}
return false;
}).collect(Collectors.toList());
if(!invalidStandToGBList.isEmpty()){ if(!invalidStandToGBList.isEmpty()){
logger.info("=============被代替标准号中所有有效标准的状态都是现行有效、被代替、废止状态 执行============"); logger.info("=============被代替标准号中所有有效标准的状态都是现行有效、被代替、废止状态 执行============");
// 文本状态更为废止状态 // 文本状态更为废止状态
@@ -217,9 +169,6 @@ public class UpdateStateStandSyncFz implements Runnable {
// 文本状态更为被代替 // 文本状态更为被代替
execStandDate(bdtStandToNotGBList,"qke0ckro2p"); execStandDate(bdtStandToNotGBList,"qke0ckro2p");
} }
} }
logger.info("每天0点1分执行 国内标准文本状态被代替逻辑 标准自动变更废止:"+Thread.currentThread().getName() + " cron=0 1 0 * * ? --- " + new Date()+"---End-01"); logger.info("每天0点1分执行 国内标准文本状态被代替逻辑 标准自动变更废止:"+Thread.currentThread().getName() + " cron=0 1 0 * * ? --- " + new Date()+"---End-01");