pdi查询检测项方法修改

This commit is contained in:
yf001217 2026-06-11 14:07:10 +08:00
parent 869d49941e
commit cc98aef022
1 changed files with 52 additions and 6 deletions

View File

@ -819,7 +819,6 @@ public class QmsPqcInspectionRuleControllerServiceImpl implements QmsPqcInspecti
.one();
Long targetRuleId;
boolean isNewRule = false;
if (Objects.isNull(highestRule)) {
// 该机型无规则新建
@ -834,14 +833,12 @@ public class QmsPqcInspectionRuleControllerServiceImpl implements QmsPqcInspecti
newRule.setCreateTime(now);
ruleService.save(newRule);
targetRuleId = newRule.getId();
isNewRule = true;
} else if (highestRule.getAuditStatus() != null && highestRule.getAuditStatus() == 1) {
// 最高版本已审核fork新版本
if (checkDraftExists(modelNo, null)) {
throw new NflgException(STATE.BusinessError, "机型" + modelNo + "已存在未审核的版本,请先完成审核后再导入");
}
targetRuleId = forkNewVersion(highestRule);
isNewRule = true;
} else {
// 最高版本未审核直接在其上修改
targetRuleId = highestRule.getId();
@ -875,11 +872,10 @@ public class QmsPqcInspectionRuleControllerServiceImpl implements QmsPqcInspecti
appendImportPointsAndItems(targetRuleId, pointGroups, stepDicItems, operator, operatorId, now);
}
if (isNewRule) {
removeRedundantPlaceholderPoints(targetRuleId);
ensurePlaceholderPointsForMissingSteps(targetRuleId, stepDicItems, operator, operatorId, now);
}
}
}
/**
* 保存导入的检查点和检查项覆盖模式
@ -1235,6 +1231,56 @@ public class QmsPqcInspectionRuleControllerServiceImpl implements QmsPqcInspecti
return maxVersion + 1;
}
private void removeRedundantPlaceholderPoints(Long ruleId) {
List<QmsPqcInspectionPoint> points = pointService.lambdaQuery()
.eq(QmsPqcInspectionPoint::getPqcRuleId, ruleId)
.list();
if (CollectionUtil.isEmpty(points)) {
return;
}
List<Long> realStepIds = points.stream()
.filter(point -> point.getStepDicItemId() != null)
.filter(point -> StrUtil.isNotBlank(point.getInspectionPointCode())
|| StrUtil.isNotBlank(point.getInspectionPointName()))
.map(QmsPqcInspectionPoint::getStepDicItemId)
.distinct()
.collect(Collectors.toList());
if (CollectionUtil.isEmpty(realStepIds)) {
return;
}
List<Long> placeholderPointIds = points.stream()
.filter(point -> point.getStepDicItemId() != null)
.filter(point -> realStepIds.contains(point.getStepDicItemId()))
.filter(point -> StrUtil.isBlank(point.getInspectionPointCode()))
.filter(point -> StrUtil.isBlank(point.getInspectionPointName()))
.map(QmsPqcInspectionPoint::getId)
.collect(Collectors.toList());
if (CollectionUtil.isEmpty(placeholderPointIds)) {
return;
}
List<Long> pointIdsWithItems = itemsService.lambdaQuery()
.in(QmsPqcInspectionPointItems::getInspectionCodeId, placeholderPointIds)
.list()
.stream()
.map(QmsPqcInspectionPointItems::getInspectionCodeId)
.distinct()
.collect(Collectors.toList());
placeholderPointIds = placeholderPointIds.stream()
.filter(pointId -> !pointIdsWithItems.contains(pointId))
.collect(Collectors.toList());
if (CollectionUtil.isEmpty(placeholderPointIds)) {
return;
}
itemsService.lambdaUpdate()
.in(QmsPqcInspectionPointItems::getInspectionCodeId, placeholderPointIds)
.remove();
pointService.removeByIds(placeholderPointIds);
}
private void ensurePlaceholderPointsForMissingSteps(Long ruleId,
List<DictionaryItem> stepDicItems,
String operator,