Compare commits
3 Commits
63a0196216
...
afe72bbce9
| Author | SHA1 | Date |
|---|---|---|
|
|
afe72bbce9 | |
|
|
8680c34da9 | |
|
|
793100f124 |
|
|
@ -5,6 +5,8 @@ import com.nflg.wms.common.pojo.ApiResult;
|
|||
import com.nflg.wms.common.pojo.PageData;
|
||||
import com.nflg.wms.common.pojo.qo.EnableQO;
|
||||
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;
|
||||
|
|
@ -40,6 +42,23 @@ public class QmsInspectionStandardController extends BaseController {
|
|||
return ApiResult.success(inspectionStandardControllerService.search(request));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增检验标准
|
||||
*/
|
||||
@PostMapping("add")
|
||||
public ApiResult<Long> add(@Valid @RequestBody QmsInspectionStandardAddQO request) {
|
||||
return ApiResult.success(inspectionStandardControllerService.add(request));
|
||||
}
|
||||
|
||||
/**
|
||||
* 编辑检验标准
|
||||
*/
|
||||
@PostMapping("edit")
|
||||
public ApiResult<Void> edit(@Valid @RequestBody QmsInspectionStandardEditQO request) {
|
||||
inspectionStandardControllerService.edit(request);
|
||||
return ApiResult.success();
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量发布检验标准
|
||||
*/
|
||||
|
|
@ -74,4 +93,13 @@ public class QmsInspectionStandardController extends BaseController {
|
|||
public ApiResult<QmsInspectionStandardDetailVO> detail(@RequestParam @NotNull(message = "ID不能为空") Long id) {
|
||||
return ApiResult.success(inspectionStandardControllerService.getDetail(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除检验标准
|
||||
*/
|
||||
@PostMapping("delete")
|
||||
public ApiResult<Void> delete(@Valid @RequestBody IdsQO request) {
|
||||
inspectionStandardControllerService.delete(request.getIds());
|
||||
return ApiResult.success();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
|
|||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.nflg.wms.common.exception.NflgException;
|
||||
import com.nflg.wms.common.pojo.PageData;
|
||||
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;
|
||||
|
|
@ -81,6 +83,55 @@ public class QmsInspectionStandardControllerService {
|
|||
inspectionStandardService.enable(id, enable);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除检验标准
|
||||
* @param ids 检验标准ID列表
|
||||
*/
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void delete(List<Long> ids) {
|
||||
if (ids == null || ids.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
|
||||
for (Long id : ids) {
|
||||
// 1. 校验检验标准是否存在
|
||||
QmsInspectionStandard standard = inspectionStandardService.getById(id);
|
||||
if (standard == null) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// 2. 已发布的标准不允许删除
|
||||
if (standard.getPublishStatus() != null && standard.getPublishStatus() == 1) {
|
||||
throw new NflgException(com.nflg.wms.common.constant.STATE.BusinessError,
|
||||
"已发布的检验标准不允许删除,ID: " + id);
|
||||
}
|
||||
|
||||
// 3. 查询该检验标准下所有检测项
|
||||
List<QmsInspectionStandardItem> items = inspectionStandardItemService.lambdaQuery()
|
||||
.eq(QmsInspectionStandardItem::getInspectionStandardId, id)
|
||||
.list();
|
||||
|
||||
List<Long> itemIds = items.stream()
|
||||
.map(QmsInspectionStandardItem::getId)
|
||||
.collect(Collectors.toList());
|
||||
|
||||
// 4. 删除检测项内容
|
||||
if (!itemIds.isEmpty()) {
|
||||
inspectionStandardItemContentService.lambdaUpdate()
|
||||
.in(QmsInspectionStandardItemContent::getInspectionStandardItemId, itemIds)
|
||||
.remove();
|
||||
}
|
||||
|
||||
// 5. 删除检测项
|
||||
if (!itemIds.isEmpty()) {
|
||||
inspectionStandardItemService.removeByIds(itemIds);
|
||||
}
|
||||
|
||||
// 6. 删除检验标准
|
||||
inspectionStandardService.removeById(id);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询检验标准详情(包含检测项列表)
|
||||
* @param id 检验标准ID
|
||||
|
|
@ -190,6 +241,150 @@ public class QmsInspectionStandardControllerService {
|
|||
return vo;
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增检验标准(包含检测项列表)
|
||||
* @param qo 新增请求参数
|
||||
* @return 新增的检验标准ID
|
||||
*/
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Long add(QmsInspectionStandardAddQO qo) {
|
||||
Long userId = UserUtil.getUserId();
|
||||
String userName = UserUtil.getUserName();
|
||||
LocalDateTime now = LocalDateTime.now();
|
||||
|
||||
QmsInspectionStandard standard = new QmsInspectionStandard();
|
||||
standard.setMaterialId(qo.getMaterialId());
|
||||
standard.setInspectionTaskItemId(qo.getInspectionTaskItemId());
|
||||
standard.setDrawingUrl(qo.getDrawingUrl());
|
||||
standard.setVersionNo(qo.getVersionNo());
|
||||
standard.setPackagingMethodId(qo.getPackagingMethodId());
|
||||
standard.setInspectionCycle(qo.getInspectionCycle());
|
||||
// 默认值
|
||||
standard.setIsEnabled(true);
|
||||
standard.setPublishStatus((short) 0);
|
||||
// 审计字段
|
||||
standard.setCreateUserId(userId);
|
||||
standard.setCreateUserName(userName);
|
||||
standard.setCreateTime(now);
|
||||
standard.setUpdateUserId(userId);
|
||||
standard.setUpdateUserName(userName);
|
||||
standard.setUpdateTime(now);
|
||||
|
||||
inspectionStandardService.save(standard);
|
||||
|
||||
// 处理检测项列表
|
||||
processItems(standard.getId(), qo.getItems(), userId, userName, now);
|
||||
|
||||
return standard.getId();
|
||||
}
|
||||
|
||||
/**
|
||||
* 编辑检验标准(包含检测项列表)
|
||||
* @param qo 编辑请求参数
|
||||
*/
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void edit(QmsInspectionStandardEditQO qo) {
|
||||
// 1. 校验检验标准是否存在
|
||||
QmsInspectionStandard standard = inspectionStandardService.getById(qo.getId());
|
||||
if (standard == null) {
|
||||
throw new NflgException(com.nflg.wms.common.constant.STATE.BusinessError, "检验标准不存在");
|
||||
}
|
||||
|
||||
// 2. 已发布的标准不允许修改
|
||||
if (standard.getPublishStatus() != null && standard.getPublishStatus() == 1) {
|
||||
throw new NflgException(com.nflg.wms.common.constant.STATE.BusinessError, "已发布的检验标准不允许修改");
|
||||
}
|
||||
|
||||
Long userId = UserUtil.getUserId();
|
||||
String userName = UserUtil.getUserName();
|
||||
LocalDateTime now = LocalDateTime.now();
|
||||
|
||||
// 3. 更新字段
|
||||
standard.setMaterialId(qo.getMaterialId());
|
||||
standard.setInspectionTaskItemId(qo.getInspectionTaskItemId());
|
||||
standard.setDrawingUrl(qo.getDrawingUrl());
|
||||
standard.setVersionNo(qo.getVersionNo());
|
||||
standard.setPackagingMethodId(qo.getPackagingMethodId());
|
||||
standard.setInspectionCycle(qo.getInspectionCycle());
|
||||
// 审计字段
|
||||
standard.setUpdateUserId(userId);
|
||||
standard.setUpdateUserName(userName);
|
||||
standard.setUpdateTime(now);
|
||||
|
||||
inspectionStandardService.updateById(standard);
|
||||
|
||||
// 4. 处理检测项列表
|
||||
processItems(qo.getId(), qo.getItems(), userId, userName, now);
|
||||
}
|
||||
|
||||
/**
|
||||
* 处理检测项列表(新增、更新、删除)
|
||||
* @param inspectionStandardId 检验标准ID
|
||||
* @param items 检测项列表
|
||||
* @param userId 用户ID
|
||||
* @param userName 用户名
|
||||
* @param now 当前时间
|
||||
*/
|
||||
private void processItems(Long inspectionStandardId,
|
||||
List<QmsInspectionStandardSaveQO.InspectionStandardItemQO> items,
|
||||
Long userId, String userName, LocalDateTime now) {
|
||||
if (items == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
// 获取该检验标准下所有现有的检测项ID
|
||||
List<Long> existingItemIds = inspectionStandardItemService.lambdaQuery()
|
||||
.eq(QmsInspectionStandardItem::getInspectionStandardId, inspectionStandardId)
|
||||
.list()
|
||||
.stream()
|
||||
.map(QmsInspectionStandardItem::getId)
|
||||
.collect(Collectors.toList());
|
||||
|
||||
// 处理传入的检测项
|
||||
List<Long> newItemIds = new ArrayList<>();
|
||||
for (QmsInspectionStandardSaveQO.InspectionStandardItemQO itemQO : items) {
|
||||
QmsInspectionStandardItem item;
|
||||
|
||||
if (itemQO.getId() != null) {
|
||||
// 更新现有检测项
|
||||
item = inspectionStandardItemService.getById(itemQO.getId());
|
||||
if (item == null) {
|
||||
throw new NflgException(com.nflg.wms.common.constant.STATE.BusinessError, "检测项不存在:" + itemQO.getId());
|
||||
}
|
||||
|
||||
// 更新字段
|
||||
updateItemFields(item, itemQO, userId, userName, now);
|
||||
inspectionStandardItemService.updateById(item);
|
||||
} else {
|
||||
// 新增检测项
|
||||
item = new QmsInspectionStandardItem()
|
||||
.setInspectionStandardId(inspectionStandardId);
|
||||
updateItemFields(item, itemQO, userId, userName, now);
|
||||
inspectionStandardItemService.save(item);
|
||||
}
|
||||
|
||||
newItemIds.add(item.getId());
|
||||
|
||||
// 处理检测项内容
|
||||
processItemContents(item.getId(), itemQO.getContents(), userId, userName, now);
|
||||
}
|
||||
|
||||
// 删除不在传入列表中的检测项(及其内容)
|
||||
List<Long> itemsToDelete = existingItemIds.stream()
|
||||
.filter(id -> !newItemIds.contains(id))
|
||||
.collect(Collectors.toList());
|
||||
|
||||
if (!itemsToDelete.isEmpty()) {
|
||||
// 先删除检测项内容
|
||||
inspectionStandardItemContentService.lambdaUpdate()
|
||||
.in(QmsInspectionStandardItemContent::getInspectionStandardItemId, itemsToDelete)
|
||||
.remove();
|
||||
|
||||
// 再删除检测项
|
||||
inspectionStandardItemService.removeByIds(itemsToDelete);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 暂存检验标准(检测项和检测项内容)
|
||||
* @param qo 暂存请求参数
|
||||
|
|
@ -211,59 +406,8 @@ public class QmsInspectionStandardControllerService {
|
|||
String userName = UserUtil.getUserName();
|
||||
LocalDateTime now = LocalDateTime.now();
|
||||
|
||||
// 2. 获取该检验标准下所有现有的检测项ID
|
||||
List<Long> existingItemIds = inspectionStandardItemService.lambdaQuery()
|
||||
.eq(QmsInspectionStandardItem::getInspectionStandardId, qo.getInspectionStandardId())
|
||||
.list()
|
||||
.stream()
|
||||
.map(QmsInspectionStandardItem::getId)
|
||||
.collect(Collectors.toList());
|
||||
|
||||
// 3. 处理传入的检测项
|
||||
List<Long> newItemIds = new ArrayList<>();
|
||||
if (qo.getItems() != null && !qo.getItems().isEmpty()) {
|
||||
for (QmsInspectionStandardSaveQO.InspectionStandardItemQO itemQO : qo.getItems()) {
|
||||
QmsInspectionStandardItem item;
|
||||
|
||||
if (itemQO.getId() != null) {
|
||||
// 更新现有检测项
|
||||
item = inspectionStandardItemService.getById(itemQO.getId());
|
||||
if (item == null) {
|
||||
throw new NflgException(com.nflg.wms.common.constant.STATE.BusinessError, "检测项不存在:" + itemQO.getId());
|
||||
}
|
||||
|
||||
// 更新字段
|
||||
updateItemFields(item, itemQO, userId, userName, now);
|
||||
inspectionStandardItemService.updateById(item);
|
||||
} else {
|
||||
// 新增检测项
|
||||
item = new QmsInspectionStandardItem()
|
||||
.setInspectionStandardId(qo.getInspectionStandardId());
|
||||
updateItemFields(item, itemQO, userId, userName, now);
|
||||
inspectionStandardItemService.save(item);
|
||||
}
|
||||
|
||||
newItemIds.add(item.getId());
|
||||
|
||||
// 4. 处理检测项内容
|
||||
processItemContents(item.getId(), itemQO.getContents(), userId, userName, now);
|
||||
}
|
||||
}
|
||||
|
||||
// 5. 删除不在传入列表中的检测项(及其内容)
|
||||
List<Long> itemsToDelete = existingItemIds.stream()
|
||||
.filter(id -> !newItemIds.contains(id))
|
||||
.collect(Collectors.toList());
|
||||
|
||||
if (!itemsToDelete.isEmpty()) {
|
||||
// 先删除检测项内容
|
||||
inspectionStandardItemContentService.lambdaUpdate()
|
||||
.in(QmsInspectionStandardItemContent::getInspectionStandardItemId, itemsToDelete)
|
||||
.remove();
|
||||
|
||||
// 再删除检测项
|
||||
inspectionStandardItemService.removeByIds(itemsToDelete);
|
||||
}
|
||||
// 2. 处理检测项列表
|
||||
processItems(qo.getInspectionStandardId(), qo.getItems(), userId, userName, now);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -103,6 +103,10 @@ public class QmsSamplingPlanControllerService {
|
|||
if (CollectionUtil.isNotEmpty(request.getStrictnessTransferRules())) {
|
||||
List<QmsSamplingStrictnessTransferRule> rules = new ArrayList<>();
|
||||
for (QmsSamplingPlanAddQO.StrictnessTransferRuleQO qo : request.getStrictnessTransferRules()) {
|
||||
// 已启用的规则,连续质检批次数量必填
|
||||
if (Boolean.TRUE.equals(qo.getIsEnabled())) {
|
||||
VUtil.trueThrowBusinessError(qo.getContinuousBatchCount() == null).throwMessage("已启用的严格性转移规则,连续质检批次数量不能为空");
|
||||
}
|
||||
QmsSamplingStrictnessTransferRule entity = new QmsSamplingStrictnessTransferRule()
|
||||
.setSamplingPlanId(planId)
|
||||
.setRuleType(qo.getRuleType())
|
||||
|
|
@ -229,6 +233,10 @@ public class QmsSamplingPlanControllerService {
|
|||
if (CollectionUtil.isNotEmpty(request.getStrictnessTransferRules())) {
|
||||
List<QmsSamplingStrictnessTransferRule> rules = new ArrayList<>();
|
||||
for (QmsSamplingPlanAddQO.StrictnessTransferRuleQO qo : request.getStrictnessTransferRules()) {
|
||||
// 已启用的规则,连续质检批次数量必填
|
||||
if (Boolean.TRUE.equals(qo.getIsEnabled())) {
|
||||
VUtil.trueThrowBusinessError(qo.getContinuousBatchCount() == null).throwMessage("已启用的严格性转移规则,连续质检批次数量不能为空");
|
||||
}
|
||||
QmsSamplingStrictnessTransferRule entity = new QmsSamplingStrictnessTransferRule()
|
||||
.setSamplingPlanId(planId)
|
||||
.setRuleType(qo.getRuleType())
|
||||
|
|
|
|||
|
|
@ -0,0 +1,51 @@
|
|||
package com.nflg.wms.common.pojo.qo;
|
||||
|
||||
import jakarta.validation.Valid;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 检验标准新增参数
|
||||
*/
|
||||
@Data
|
||||
public class QmsInspectionStandardAddQO {
|
||||
|
||||
/**
|
||||
* 物料ID
|
||||
*/
|
||||
@NotNull(message = "物料ID不能为空")
|
||||
private Long materialId;
|
||||
|
||||
/**
|
||||
* 检验任务项ID
|
||||
*/
|
||||
private Long inspectionTaskItemId;
|
||||
|
||||
/**
|
||||
* 图纸URL
|
||||
*/
|
||||
private String drawingUrl;
|
||||
|
||||
/**
|
||||
* 版本号
|
||||
*/
|
||||
private String versionNo;
|
||||
|
||||
/**
|
||||
* 包装方式ID
|
||||
*/
|
||||
private Long packagingMethodId;
|
||||
|
||||
/**
|
||||
* 检验周期
|
||||
*/
|
||||
private Integer inspectionCycle;
|
||||
|
||||
/**
|
||||
* 检测项列表
|
||||
*/
|
||||
@Valid
|
||||
private List<QmsInspectionStandardSaveQO.InspectionStandardItemQO> items;
|
||||
}
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
package com.nflg.wms.common.pojo.qo;
|
||||
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
/**
|
||||
* 检验标准编辑参数
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class QmsInspectionStandardEditQO extends QmsInspectionStandardAddQO {
|
||||
|
||||
/**
|
||||
* 检验标准ID
|
||||
*/
|
||||
@NotNull(message = "检验标准ID不能为空")
|
||||
private Long id;
|
||||
}
|
||||
|
|
@ -93,7 +93,6 @@ public class QmsSamplingPlanAddQO {
|
|||
/**
|
||||
* 连续质检批次数量
|
||||
*/
|
||||
@NotNull(message = "连续质检批次数量不能为空")
|
||||
private Integer continuousBatchCount;
|
||||
|
||||
/**
|
||||
|
|
|
|||
Loading…
Reference in New Issue