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> bdtStandToGBList = new ArrayList<>();
List<SarStandardsInfo> bdtStandToNotGBList = new ArrayList<>();
// 当前标准的标准类别是否是GB类 GB集合逻辑
getStateStandScheduledList.forEach(info -> {
if(StringUtils.isNotBlank(info.getBDTBZH())){
List<String> bdtList = Arrays.stream(info.getBDTBZH().split(",")).map(
s -> s.replace(" ","").trim()).collect(Collectors.toList());
// 查询等于GB的国内标准
int bdtStandNumCount = bdtList.size();
QueryWrapper wrapperGB = new QueryWrapper();
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,'-'," +
"SAR_STANDARDS_INFO.STAND_YEAR),' ',''))",bdtList);
List<SarStandardsInfo> queryGBList = sarStandardsInfoDao.selectList(wrapperGB);
if(!queryGBList.isEmpty()){
int queryGbCount = queryGBList.size();
//被代替标准号中所有有效标准的状态都是现行有效状态
List<SarStandardsInfo> fzList = queryGBList.stream().filter(info1 ->
"vsaga7nwub".equals(info1.getTextStatus()) || "qke0ckro2p".equals(info1.getTextStatus())
|| "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()){
//被代替标准号中所有有效标准的状态都是现行有效状态
List<SarStandardsInfo> fzList = queryGBList.stream().filter(info1 ->
"vsaga7nwub".equals(info1.getTextStatus()) || "qke0ckro2p".equals(info1.getTextStatus())
|| "chblaarg77".equals(info1.getTextStatus())).collect(Collectors.toList());
// 检查当前标准是否为GB类
if(StringUtils.equals(info.getStandSort(),"GB")){
if(fzList.size() == bdtStandNumCount){//当所有标准都是现行有效状态时
invalidStandToGBList.add(info);
}else {
// 被代替标准号中的有效标准的标准状态中有一个是发布、即将实施、现行有效、被代替状态的
}else{//其中被代替标准号中存在
List<SarStandardsInfo> singleList = queryGBList.stream().filter(info1 -> {
if("hc99551723c".equals(info1.getTextStatus()) || "hb0iy9z23c".equals(info1.getTextStatus())
|| "vsaga7nwub".equals(info1.getTextStatus()) || "qke0ckro2p".equals(info1.getTextStatus())){
@@ -156,50 +139,19 @@ public class UpdateStateStandSyncFz implements Runnable {
}
return false;
}).collect(Collectors.toList());
// 满足其上存入更新被代替逻辑
if(!singleList.isEmpty()){
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()){
logger.info("=============被代替标准号中所有有效标准的状态都是现行有效、被代替、废止状态 执行============");
// 文本状态更为废止状态
@@ -217,9 +169,6 @@ public class UpdateStateStandSyncFz implements Runnable {
// 文本状态更为被代替
execStandDate(bdtStandToNotGBList,"qke0ckro2p");
}
}
logger.info("每天0点1分执行 国内标准文本状态被代替逻辑 标准自动变更废止:"+Thread.currentThread().getName() + " cron=0 1 0 * * ? --- " + new Date()+"---End-01");