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