Compare commits

..

3 Commits

Author SHA1 Message Date
曹鹏飞 a5d04d067d fix(qms-sampling-plan): 添加方案名称唯一性校验及细化异常处理
- 在新增抽样方案时校验方案名称是否已存在,防止重复
- 在编辑抽样方案时校验名称唯一性,排除当前方案自身
- 补充编辑和删除操作中方案存在性及发布状态校验
- 优化多个查询接口的空行及格式,提升代码可读性
- 细化字码矩阵及方案检验相关异常抛出信息,增强错误提示准确性
- 删除操作增加关联子表数据的级联清理,防止数据残留
2026-05-09 09:36:52 +08:00
曹鹏飞 c636e24ae3 Merge remote-tracking branch '惠信/qms/develop' into qms/develop 2026-05-09 09:32:07 +08:00
曹鹏飞 769b2fa2df refactor(service): 优化抽样方案查询及图片处理逻辑
- 调整抽样方案控制器的查询条件,增加发布时间和时间范围过滤
- 更新抽样方案搜索实体,添加发布状态字段
- 优化入库质检任务控制器的图片ID转换方法,提高代码简洁性
- 在提交数据实体中添加图片列表的校验注解,提升数据有效性验证
- 统一导入语句,简化代码结构
2026-05-09 09:31:59 +08:00
4 changed files with 43 additions and 27 deletions

View File

@ -26,10 +26,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.Map;
import java.util.Objects;
import java.util.function.Function; import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -1103,7 +1100,7 @@ public class IncomingInspectionTaskControllerService {
if (StrUtil.isNotBlank(data.getImageIds())) { if (StrUtil.isNotBlank(data.getImageIds())) {
dataVO.setImages( dataVO.setImages(
fileUploadRecordService.lambdaQuery() fileUploadRecordService.lambdaQuery()
.in(FileUploadRecord::getId, StrUtil.split(data.getImageIds(), ",")) .in(FileUploadRecord::getId, Arrays.stream(StrUtil.splitToLong(data.getImageIds(), ",")).boxed().toList())
.list() .list()
.stream() .stream()
.map(file -> new FileUploadVO() .map(file -> new FileUploadVO()

View File

@ -63,6 +63,11 @@ public class QmsSamplingPlanControllerService {
*/ */
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void add(@Valid QmsSamplingPlanAddQO request) { public void add(@Valid QmsSamplingPlanAddQO request) {
VUtil.trueThrowBusinessError(samplingPlanService.lambdaQuery()
.eq(QmsSamplingPlan::getPlanName, request.getPlanName())
.exists()
).throwMessage("方案名称已存在");
String operator = UserUtil.getUserName(); String operator = UserUtil.getUserName();
Long operatorId = UserUtil.getUserId(); Long operatorId = UserUtil.getUserId();
LocalDateTime now = LocalDateTime.now(); LocalDateTime now = LocalDateTime.now();
@ -188,6 +193,12 @@ public class QmsSamplingPlanControllerService {
public void edit(@Valid QmsSamplingPlanEditQO request) { public void edit(@Valid QmsSamplingPlanEditQO request) {
Long planId = request.getId(); Long planId = request.getId();
VUtil.trueThrowBusinessError(samplingPlanService.lambdaQuery()
.eq(QmsSamplingPlan::getPlanName, request.getPlanName())
.ne(QmsSamplingPlan::getId, planId)
.exists()
).throwMessage("方案名称已存在");
// 0. 验证抽样方案是否存在 // 0. 验证抽样方案是否存在
QmsSamplingPlan existPlan = samplingPlanService.getById(planId); QmsSamplingPlan existPlan = samplingPlanService.getById(planId);
VUtil.trueThrowBusinessError(ObjectUtil.isNull(existPlan)).throwMessage("抽样方案不存在"); VUtil.trueThrowBusinessError(ObjectUtil.isNull(existPlan)).throwMessage("抽样方案不存在");
@ -392,10 +403,11 @@ public class QmsSamplingPlanControllerService {
Page<QmsSamplingPlan> page = new Page<>(request.getPage(), request.getPageSize()); Page<QmsSamplingPlan> page = new Page<>(request.getPage(), request.getPageSize());
var query = samplingPlanService.lambdaQuery() var query = samplingPlanService.lambdaQuery()
.like(StrUtil.isNotBlank(request.getPlanCode()), QmsSamplingPlan::getPlanCode, request.getPlanCode()) .eq(request.getPublishStatus() != null, QmsSamplingPlan::getPublishStatus, request.getPublishStatus())
.like(StrUtil.isNotBlank(request.getPlanName()), QmsSamplingPlan::getPlanName, request.getPlanName())
.ge(request.getStartDate() != null, QmsSamplingPlan::getCreateTime, request.getStartDate()) .ge(request.getStartDate() != null, QmsSamplingPlan::getCreateTime, request.getStartDate())
.le(request.getEndDate() != null, QmsSamplingPlan::getCreateTime, request.getEndDate()) .le(request.getEndDate() != null, QmsSamplingPlan::getCreateTime, request.getEndDate())
.like(StrUtil.isNotBlank(request.getPlanCode()), QmsSamplingPlan::getPlanCode, request.getPlanCode())
.like(StrUtil.isNotBlank(request.getPlanName()), QmsSamplingPlan::getPlanName, request.getPlanName())
.orderByAsc(QmsSamplingPlan::getPublishStatus) .orderByAsc(QmsSamplingPlan::getPublishStatus)
.orderByDesc(QmsSamplingPlan::getId); .orderByDesc(QmsSamplingPlan::getId);

View File

@ -1,6 +1,7 @@
package com.nflg.wms.common.pojo.qo; package com.nflg.wms.common.pojo.qo;
import com.nflg.wms.common.pojo.vo.FileUploadVO; import com.nflg.wms.common.pojo.vo.FileUploadVO;
import jakarta.validation.Valid;
import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.NotNull;
import lombok.Data; import lombok.Data;
@ -26,5 +27,6 @@ public class QmsIncomingInspectionTaskTodoCheckSubmitItemDataQO {
/** /**
* 图片列表 * 图片列表
*/ */
@Valid
private List<FileUploadVO> images; private List<FileUploadVO> images;
} }

View File

@ -19,4 +19,9 @@ public class QmsSamplingPlanSearchQO extends SearchBaseQO {
* 方案名称 * 方案名称
*/ */
private String planName; private String planName;
/**
* 发布状态0-未发布1-已发布2-已撤回
*/
private Short publishStatus;
} }