refactor(qms): 优化检验标准管理和VO数据填充
- 合并和优化控制器导入,注释掉编辑检验标准接口,保留暂存接口 - 在Service层批量查询字典项,提升检测项VO组装的性能和可读性 - 新增检测项VO中相关字典项名称字段,完善展示数据结构 - 检验标准保存时添加唯一版本号校验,防止重复版本的检验标准存在 - 更新检验标准时不修改版本号,补充审计字段更新 - 扩展QmsInspectionStandardSaveQO,新增物料ID、版本、是否启用、图纸URL等字段完善保存逻辑
This commit is contained in:
parent
edda75ff02
commit
ee041cc236
|
|
@ -3,12 +3,7 @@ package com.nflg.qms.admin.controller;
|
||||||
import com.nflg.qms.admin.service.QmsInspectionStandardControllerService;
|
import com.nflg.qms.admin.service.QmsInspectionStandardControllerService;
|
||||||
import com.nflg.wms.common.pojo.ApiResult;
|
import com.nflg.wms.common.pojo.ApiResult;
|
||||||
import com.nflg.wms.common.pojo.PageData;
|
import com.nflg.wms.common.pojo.PageData;
|
||||||
import com.nflg.wms.common.pojo.qo.EnableQO;
|
import com.nflg.wms.common.pojo.qo.*;
|
||||||
import com.nflg.wms.common.pojo.qo.IdsQO;
|
|
||||||
import com.nflg.wms.common.pojo.qo.QmsInspectionStandardAddQO;
|
|
||||||
import com.nflg.wms.common.pojo.qo.QmsInspectionStandardEditQO;
|
|
||||||
import com.nflg.wms.common.pojo.qo.QmsInspectionStandardSaveQO;
|
|
||||||
import com.nflg.wms.common.pojo.qo.QmsInspectionStandardSearchQO;
|
|
||||||
import com.nflg.wms.common.pojo.vo.QmsInspectionStandardDetailVO;
|
import com.nflg.wms.common.pojo.vo.QmsInspectionStandardDetailVO;
|
||||||
import com.nflg.wms.common.pojo.vo.QmsInspectionStandardVO;
|
import com.nflg.wms.common.pojo.vo.QmsInspectionStandardVO;
|
||||||
import com.nflg.wms.starter.BaseController;
|
import com.nflg.wms.starter.BaseController;
|
||||||
|
|
@ -16,12 +11,7 @@ import jakarta.annotation.Resource;
|
||||||
import jakarta.validation.Valid;
|
import jakarta.validation.Valid;
|
||||||
import jakarta.validation.constraints.NotNull;
|
import jakarta.validation.constraints.NotNull;
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.*;
|
||||||
import org.springframework.web.bind.annotation.PostMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RequestBody;
|
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RequestParam;
|
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 检验标准
|
* 检验标准
|
||||||
|
|
@ -50,14 +40,14 @@ public class QmsInspectionStandardController extends BaseController {
|
||||||
return ApiResult.success(inspectionStandardControllerService.add(request));
|
return ApiResult.success(inspectionStandardControllerService.add(request));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
// /**
|
||||||
* 编辑检验标准
|
// * 编辑检验标准
|
||||||
*/
|
// */
|
||||||
@PostMapping("edit")
|
// @PostMapping("edit")
|
||||||
public ApiResult<Void> edit(@Valid @RequestBody QmsInspectionStandardEditQO request) {
|
// public ApiResult<Void> edit(@Valid @RequestBody QmsInspectionStandardEditQO request) {
|
||||||
inspectionStandardControllerService.edit(request);
|
// inspectionStandardControllerService.edit(request);
|
||||||
return ApiResult.success();
|
// return ApiResult.success();
|
||||||
}
|
// }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 批量发布检验标准
|
* 批量发布检验标准
|
||||||
|
|
@ -78,7 +68,7 @@ public class QmsInspectionStandardController extends BaseController {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 暂存检验标准(检测项和检测项内容)
|
* 暂存检验标准
|
||||||
*/
|
*/
|
||||||
@PostMapping("saveDraft")
|
@PostMapping("saveDraft")
|
||||||
public ApiResult<Void> saveDraft(@Valid @RequestBody QmsInspectionStandardSaveQO request) {
|
public ApiResult<Void> saveDraft(@Valid @RequestBody QmsInspectionStandardSaveQO request) {
|
||||||
|
|
|
||||||
|
|
@ -25,9 +25,7 @@ import org.springframework.stereotype.Component;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.ArrayList;
|
import java.util.*;
|
||||||
import java.util.List;
|
|
||||||
import java.util.Objects;
|
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -181,8 +179,20 @@ public class QmsInspectionStandardControllerService {
|
||||||
|
|
||||||
// 4. 转换为VO并填充内容列表
|
// 4. 转换为VO并填充内容列表
|
||||||
List<QmsInspectionStandardItemVO> itemVOs = new ArrayList<>();
|
List<QmsInspectionStandardItemVO> itemVOs = new ArrayList<>();
|
||||||
|
Set<Long> dictionaryItemIds = new HashSet<>();
|
||||||
|
items.forEach(item -> {
|
||||||
|
dictionaryItemIds.add(item.getTestingMethodDictItemId());
|
||||||
|
dictionaryItemIds.add(item.getSamplingMethodDictItemId());
|
||||||
|
dictionaryItemIds.add(item.getInspectionLevelDictItemId());
|
||||||
|
dictionaryItemIds.add(item.getAqlTypeDictItemId());
|
||||||
|
dictionaryItemIds.add(item.getAqlPriorityValueId());
|
||||||
|
dictionaryItemIds.add(item.getInspectionStandardId());
|
||||||
|
});
|
||||||
|
List<DictionaryItem> dictionaryItems = dictionaryItemService.lambdaQuery()
|
||||||
|
.in(DictionaryItem::getId, dictionaryItemIds)
|
||||||
|
.list();
|
||||||
for (QmsInspectionStandardItem item : items) {
|
for (QmsInspectionStandardItem item : items) {
|
||||||
QmsInspectionStandardItemVO itemVO = convertToItemVO(item);
|
QmsInspectionStandardItemVO itemVO = convertToItemVO(item, dictionaryItems);
|
||||||
|
|
||||||
// 查询检测项内容列表
|
// 查询检测项内容列表
|
||||||
List<QmsInspectionStandardItemContent> contents = inspectionStandardItemContentService.lambdaQuery()
|
List<QmsInspectionStandardItemContent> contents = inspectionStandardItemContentService.lambdaQuery()
|
||||||
|
|
@ -205,17 +215,53 @@ public class QmsInspectionStandardControllerService {
|
||||||
/**
|
/**
|
||||||
* 转换检测项实体为VO
|
* 转换检测项实体为VO
|
||||||
*/
|
*/
|
||||||
private QmsInspectionStandardItemVO convertToItemVO(QmsInspectionStandardItem item) {
|
private QmsInspectionStandardItemVO convertToItemVO(QmsInspectionStandardItem item, List<DictionaryItem> dictionaryItems) {
|
||||||
QmsInspectionStandardItemVO vo = new QmsInspectionStandardItemVO();
|
QmsInspectionStandardItemVO vo = new QmsInspectionStandardItemVO();
|
||||||
vo.setId(item.getId());
|
vo.setId(item.getId());
|
||||||
vo.setName(item.getName());
|
vo.setName(item.getName());
|
||||||
vo.setSortNo(item.getSortNo());
|
vo.setSortNo(item.getSortNo());
|
||||||
vo.setTestingMethodDictItemId(item.getTestingMethodDictItemId());
|
vo.setTestingMethodDictItemId(item.getTestingMethodDictItemId());
|
||||||
|
vo.setTestingMethodDictItemName(dictionaryItems.stream()
|
||||||
|
.filter(it -> it.getId().equals(item.getTestingMethodDictItemId()))
|
||||||
|
.findFirst()
|
||||||
|
.map(DictionaryItem::getName)
|
||||||
|
.orElse(null)
|
||||||
|
);
|
||||||
vo.setSamplingMethodDictItemId(item.getSamplingMethodDictItemId());
|
vo.setSamplingMethodDictItemId(item.getSamplingMethodDictItemId());
|
||||||
|
vo.setSamplingMethodDictItemName(dictionaryItems.stream()
|
||||||
|
.filter(it -> it.getId().equals(item.getSamplingMethodDictItemId()))
|
||||||
|
.findFirst()
|
||||||
|
.map(DictionaryItem::getName)
|
||||||
|
.orElse(null)
|
||||||
|
);
|
||||||
vo.setSamplingPlanId(item.getSamplingPlanId());
|
vo.setSamplingPlanId(item.getSamplingPlanId());
|
||||||
|
vo.setSamplingPlanName(dictionaryItems.stream()
|
||||||
|
.filter(it -> it.getId().equals(item.getSamplingPlanId()))
|
||||||
|
.findFirst()
|
||||||
|
.map(DictionaryItem::getName)
|
||||||
|
.orElse(null)
|
||||||
|
);
|
||||||
vo.setInspectionLevelDictItemId(item.getInspectionLevelDictItemId());
|
vo.setInspectionLevelDictItemId(item.getInspectionLevelDictItemId());
|
||||||
|
vo.setInspectionLevelDictItemName(dictionaryItems.stream()
|
||||||
|
.filter(it -> it.getId().equals(item.getInspectionLevelDictItemId()))
|
||||||
|
.findFirst()
|
||||||
|
.map(DictionaryItem::getName)
|
||||||
|
.orElse(null)
|
||||||
|
);
|
||||||
vo.setAqlPriorityValueId(item.getAqlPriorityValueId());
|
vo.setAqlPriorityValueId(item.getAqlPriorityValueId());
|
||||||
|
vo.setAqlPriorityValueName(dictionaryItems.stream()
|
||||||
|
.filter(it -> it.getId().equals(item.getAqlPriorityValueId()))
|
||||||
|
.findFirst()
|
||||||
|
.map(DictionaryItem::getName)
|
||||||
|
.orElse(null)
|
||||||
|
);
|
||||||
vo.setAqlTypeDictItemId(item.getAqlTypeDictItemId());
|
vo.setAqlTypeDictItemId(item.getAqlTypeDictItemId());
|
||||||
|
vo.setAqlTypeDictItemName(dictionaryItems.stream()
|
||||||
|
.filter(it -> it.getId().equals(item.getAqlTypeDictItemId()))
|
||||||
|
.findFirst()
|
||||||
|
.map(DictionaryItem::getName)
|
||||||
|
.orElse(null)
|
||||||
|
);
|
||||||
vo.setItemType(item.getItemType());
|
vo.setItemType(item.getItemType());
|
||||||
vo.setPdfDrawing(item.getPdfDrawing());
|
vo.setPdfDrawing(item.getPdfDrawing());
|
||||||
vo.setCreateUserName(item.getCreateUserName());
|
vo.setCreateUserName(item.getCreateUserName());
|
||||||
|
|
@ -463,7 +509,30 @@ public class QmsInspectionStandardControllerService {
|
||||||
String userName = UserUtil.getUserName();
|
String userName = UserUtil.getUserName();
|
||||||
LocalDateTime now = LocalDateTime.now();
|
LocalDateTime now = LocalDateTime.now();
|
||||||
|
|
||||||
// 2. 处理检测项列表
|
// 2. 更新检验标准信息
|
||||||
|
VUtil.trueThrowBusinessError(
|
||||||
|
inspectionStandardService.lambdaQuery()
|
||||||
|
.ne(QmsInspectionStandard::getId, qo.getInspectionStandardId())
|
||||||
|
.eq(QmsInspectionStandard::getMaterialId, qo.getMaterialId())
|
||||||
|
.eq(QmsInspectionStandard::getVersion, qo.getVersion())
|
||||||
|
.exists()
|
||||||
|
).throwMessage("存在相同版本的检验标准");
|
||||||
|
|
||||||
|
// 3. 更新字段(不修改版本号)
|
||||||
|
standard.setMaterialId(qo.getMaterialId());
|
||||||
|
standard.setDrawingUrl(qo.getDrawingUrl());
|
||||||
|
standard.setPackagingMethodId(qo.getPackagingMethodId());
|
||||||
|
standard.setInspectionCycle(qo.getInspectionCycle());
|
||||||
|
standard.setVersion(qo.getVersion());
|
||||||
|
standard.setIsEnabled(qo.getIsEnabled());
|
||||||
|
// 审计字段
|
||||||
|
standard.setUpdateUserId(userId);
|
||||||
|
standard.setUpdateUserName(userName);
|
||||||
|
standard.setUpdateTime(now);
|
||||||
|
|
||||||
|
inspectionStandardService.updateById(standard);
|
||||||
|
|
||||||
|
// 3. 处理检测项列表
|
||||||
processItems(dictionaryItemService.getListByDictionaryCode(Constant.DICTIONARY_INSPECTION_STANDARD_SAMPLING_METHOD),
|
processItems(dictionaryItemService.getListByDictionaryCode(Constant.DICTIONARY_INSPECTION_STANDARD_SAMPLING_METHOD),
|
||||||
qo.getInspectionStandardId(), qo.getItems(), userId, userName, now);
|
qo.getInspectionStandardId(), qo.getItems(), userId, userName, now);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -19,6 +19,41 @@ public class QmsInspectionStandardSaveQO {
|
||||||
@NotNull(message = "检验标准ID不能为空")
|
@NotNull(message = "检验标准ID不能为空")
|
||||||
private Long inspectionStandardId;
|
private Long inspectionStandardId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 物料ID
|
||||||
|
*/
|
||||||
|
@NotNull(message = "物料ID不能为空")
|
||||||
|
private Long materialId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 版本号
|
||||||
|
*/
|
||||||
|
@NotBlank
|
||||||
|
private String version;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 是否启用
|
||||||
|
*/
|
||||||
|
@NotNull
|
||||||
|
private Boolean isEnabled;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 图纸URL
|
||||||
|
*/
|
||||||
|
private String drawingUrl;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 包装方式ID
|
||||||
|
*/
|
||||||
|
@NotNull
|
||||||
|
private Long packagingMethodId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 检验周期
|
||||||
|
*/
|
||||||
|
@NotNull
|
||||||
|
private Integer inspectionCycle;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 检测项列表
|
* 检测项列表
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -31,31 +31,61 @@ public class QmsInspectionStandardItemVO {
|
||||||
*/
|
*/
|
||||||
private Long testingMethodDictItemId;
|
private Long testingMethodDictItemId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 检测方式字典项名称
|
||||||
|
*/
|
||||||
|
private String testingMethodDictItemName;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 抽样方式字典项ID
|
* 抽样方式字典项ID
|
||||||
*/
|
*/
|
||||||
private Long samplingMethodDictItemId;
|
private Long samplingMethodDictItemId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 抽样方式字典项名称
|
||||||
|
*/
|
||||||
|
private String samplingMethodDictItemName;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 抽样方案ID
|
* 抽样方案ID
|
||||||
*/
|
*/
|
||||||
private Long samplingPlanId;
|
private Long samplingPlanId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 抽样方案名称
|
||||||
|
*/
|
||||||
|
private String samplingPlanName;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 检验水平字典项ID
|
* 检验水平字典项ID
|
||||||
*/
|
*/
|
||||||
private Long inspectionLevelDictItemId;
|
private Long inspectionLevelDictItemId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 检验水平字典项名称
|
||||||
|
*/
|
||||||
|
private String inspectionLevelDictItemName;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* AQL值ID
|
* AQL值ID
|
||||||
*/
|
*/
|
||||||
private Long aqlPriorityValueId;
|
private Long aqlPriorityValueId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* AQL值名称
|
||||||
|
*/
|
||||||
|
private String aqlPriorityValueName;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* AQL类型字典项ID
|
* AQL类型字典项ID
|
||||||
*/
|
*/
|
||||||
private Long aqlTypeDictItemId;
|
private Long aqlTypeDictItemId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* AQL类型字典项名称
|
||||||
|
*/
|
||||||
|
private String aqlTypeDictItemName;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 检验标准项类型:0-标准检测项,1-尺寸检测项
|
* 检验标准项类型:0-标准检测项,1-尺寸检测项
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue