pdi查询检测项方法修改
This commit is contained in:
parent
f7942576b9
commit
ef483e22a0
|
|
@ -51,6 +51,8 @@ import java.util.stream.Collectors;
|
|||
@RequiredArgsConstructor
|
||||
public class QmsPdiStatusItemControllerService {
|
||||
|
||||
private static final Integer SPECIAL_STATUS = 2;
|
||||
|
||||
private final IQmsPdiDetectionRulesStatusItemService statusItemService;
|
||||
private final QmsPdiDetectionRulesStatusItemMapper statusItemMapper;
|
||||
private final IQmsPdiDetectionRulesService pdiDetectionRulesService;
|
||||
|
|
@ -76,7 +78,7 @@ public class QmsPdiStatusItemControllerService {
|
|||
Long componentsId = null;
|
||||
|
||||
// 处理部件(部件状态复用检测项的status)
|
||||
if (StrUtil.isNotBlank(request.getComponentsDes())) {
|
||||
if (!isSpecialStatus(request.getStatus()) && StrUtil.isNotBlank(request.getComponentsDes())) {
|
||||
// 检查部件是否已存在(按检测规则ID + 名称 + 状态查询)
|
||||
QmsPdiComponentAnagement existingComponent = componentAnagementService.lambdaQuery()
|
||||
.eq(QmsPdiComponentAnagement::getComponentName, request.getComponentsDes())
|
||||
|
|
@ -112,13 +114,7 @@ public class QmsPdiStatusItemControllerService {
|
|||
}
|
||||
|
||||
// 查询该部件下的最大sort值
|
||||
Integer maxItemSort = statusItemService.lambdaQuery()
|
||||
.eq(QmsPdiDetectionRulesStatusItem::getComponentsId, componentsId)
|
||||
.orderByDesc(QmsPdiDetectionRulesStatusItem::getSort)
|
||||
.last("LIMIT 1")
|
||||
.oneOpt()
|
||||
.map(QmsPdiDetectionRulesStatusItem::getSort)
|
||||
.orElse(0);
|
||||
Integer maxItemSort = getMaxItemSort(request.getDetectionRulesId(), request.getStatus(), componentsId);
|
||||
|
||||
// 插入检测项
|
||||
QmsPdiDetectionRulesStatusItem entity = new QmsPdiDetectionRulesStatusItem()
|
||||
|
|
@ -150,7 +146,9 @@ public class QmsPdiStatusItemControllerService {
|
|||
.eq(QmsPdiDetectionRulesStatusItem::getId, request.getId())
|
||||
.set(QmsPdiDetectionRulesStatusItem::getCreateBy, operator)
|
||||
.set(QmsPdiDetectionRulesStatusItem::getCreateTime, LocalDateTime.now());
|
||||
if (request.getComponentsId() != null) {
|
||||
if (isSpecialStatus(existing.getStatus())) {
|
||||
updateChain.set(QmsPdiDetectionRulesStatusItem::getComponentsId, null);
|
||||
} else if (request.getComponentsId() != null) {
|
||||
updateChain.set(QmsPdiDetectionRulesStatusItem::getComponentsId, request.getComponentsId());
|
||||
}
|
||||
if (StrUtil.isNotBlank(request.getInspectionContent())) {
|
||||
|
|
@ -333,13 +331,16 @@ public class QmsPdiStatusItemControllerService {
|
|||
Map<String, Long> componentNameToIdMap = new java.util.LinkedHashMap<>();
|
||||
// 记录每个部件下的检测项数量
|
||||
Map<Long, Integer> componentItemCountMap = new HashMap<>();
|
||||
if (isSpecialStatus(status)) {
|
||||
componentItemCountMap.put(null, getMaxItemSort(detectionRulesId, status, null));
|
||||
}
|
||||
|
||||
// 按Excel顺序处理
|
||||
for (QmsPdiStatusItemImportDTO dto : validData) {
|
||||
Long componentsId;
|
||||
|
||||
// 处理部件
|
||||
if (StrUtil.isNotBlank(dto.getComponentsDes())) {
|
||||
if (!isSpecialStatus(status) && StrUtil.isNotBlank(dto.getComponentsDes())) {
|
||||
if (componentNameToIdMap.containsKey(dto.getComponentsDes())) {
|
||||
// 部件已存在,直接使用
|
||||
componentsId = componentNameToIdMap.get(dto.getComponentsDes());
|
||||
|
|
@ -423,6 +424,16 @@ public class QmsPdiStatusItemControllerService {
|
|||
return pd;
|
||||
}
|
||||
|
||||
if (isSpecialStatus(request.getStatus())) {
|
||||
QmsPdiStatusItemGroupVO groupVO = new QmsPdiStatusItemGroupVO();
|
||||
groupVO.setDetectionRulesId(request.getDetectionRulesId());
|
||||
groupVO.setComponentsId(null);
|
||||
groupVO.setComponentName("特殊检测项");
|
||||
groupVO.setSort(0);
|
||||
groupVO.setItems(items.stream().map(this::toItemVO).collect(Collectors.toList()));
|
||||
return pageGroups(request, List.of(groupVO));
|
||||
}
|
||||
|
||||
// 2. 提取所有componentsId并去重
|
||||
List<Long> componentIds = items.stream()
|
||||
.map(QmsPdiDetectionRulesStatusItem::getComponentsId)
|
||||
|
|
@ -461,7 +472,10 @@ public class QmsPdiStatusItemControllerService {
|
|||
// 6. 按部件sort升序排序
|
||||
voList.sort(Comparator.comparingInt(QmsPdiStatusItemGroupVO::getSort));
|
||||
|
||||
// 7. 分页(按部件分页)
|
||||
return pageGroups(request, voList);
|
||||
}
|
||||
|
||||
private PageData<QmsPdiStatusItemGroupVO> pageGroups(QmsPdiStatusItemSearchQO request, List<QmsPdiStatusItemGroupVO> voList) {
|
||||
int total = voList.size();
|
||||
int pageNum = request.getPage();
|
||||
int pageSize = request.getPageSize();
|
||||
|
|
@ -515,6 +529,26 @@ public class QmsPdiStatusItemControllerService {
|
|||
return vo;
|
||||
}
|
||||
|
||||
private boolean isSpecialStatus(Integer status) {
|
||||
return Objects.equals(status, SPECIAL_STATUS);
|
||||
}
|
||||
|
||||
private Integer getMaxItemSort(Long detectionRulesId, Integer status, Long componentsId) {
|
||||
var query = statusItemService.lambdaQuery()
|
||||
.eq(QmsPdiDetectionRulesStatusItem::getDetectionRulesId, detectionRulesId)
|
||||
.eq(QmsPdiDetectionRulesStatusItem::getStatus, status);
|
||||
if (Objects.isNull(componentsId)) {
|
||||
query.isNull(QmsPdiDetectionRulesStatusItem::getComponentsId);
|
||||
} else {
|
||||
query.eq(QmsPdiDetectionRulesStatusItem::getComponentsId, componentsId);
|
||||
}
|
||||
return query.orderByDesc(QmsPdiDetectionRulesStatusItem::getSort)
|
||||
.last("LIMIT 1")
|
||||
.oneOpt()
|
||||
.map(QmsPdiDetectionRulesStatusItem::getSort)
|
||||
.orElse(0);
|
||||
}
|
||||
|
||||
/**
|
||||
* 若主表维护状态为未维护,则更新为已维护
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
<!-- 导出检测项 -->
|
||||
<select id="listForExport" resultType="com.nflg.wms.common.pojo.dto.QmsPdiStatusItemExportDTO">
|
||||
SELECT
|
||||
c.component_name AS componentsId,
|
||||
COALESCE(c.component_name, CASE WHEN s.status = 2 THEN '特殊检测项' ELSE '' END) AS componentsId,
|
||||
s.inspection_content,
|
||||
s.inspection_image,
|
||||
CASE s.status WHEN 0 THEN '静态' WHEN 1 THEN '动态' WHEN 2 THEN '特殊' ELSE '' END AS status_name,
|
||||
|
|
|
|||
Loading…
Reference in New Issue