Compare commits

...

2 Commits

Author SHA1 Message Date
曹鹏飞 c96aa36683 Merge remote-tracking branch '惠信/qms/develop' into qms/develop 2026-04-20 08:53:55 +08:00
曹鹏飞 f948c667d4 feat(qms): 新增检验标准及抽样方案发布功能
- 添加检验标准实体类 QmsInspectionStandard,包含检验相关字段及元数据
- 新增检验标准新增参数类 QmsInspectionStandardAddQO,支持物料ID、图纸URL等字段校验
- 创建检验标准详情视图类 QmsInspectionStandardDetailVO,包含检验标准信息及检测项列表
- 优化 QmsInspectionStandardControllerService,移除不必要字段,精简代码逻辑
- 在 QmsSamplingPlanController 新增发布抽样方案接口,支持批量发布
- 实现 QmsSamplingPlanControllerService 中发布方法,校验方案状态并批量更新发布状态
- 补充 FilterIdsQO 参数类,支持发布接口的批量ID校验
- 完善抽样方案新增、编辑、删除、查询的业务逻辑及数据完整性校验
- 引入事务管理保证数据操作原子性,提升系统稳定性与数据一致性
2026-04-20 08:52:17 +08:00
7 changed files with 63 additions and 21 deletions

View File

@ -4,6 +4,7 @@ import com.nflg.qms.admin.service.QmsSamplingPlanControllerService;
import com.nflg.wms.common.pojo.ApiResult;
import com.nflg.wms.common.pojo.PageData;
import com.nflg.wms.common.pojo.qo.FilterIdQO;
import com.nflg.wms.common.pojo.qo.FilterIdsQO;
import com.nflg.wms.common.pojo.qo.QmsSamplingPlanAddQO;
import com.nflg.wms.common.pojo.qo.QmsSamplingPlanEditQO;
import com.nflg.wms.common.pojo.qo.QmsSamplingPlanSearchQO;
@ -45,6 +46,15 @@ public class QmsSamplingPlanController extends BaseController {
return ApiResult.success();
}
/**
* 发布抽样方案
*/
@PostMapping("publish")
public ApiResult<Void> publish(@Valid @RequestBody FilterIdsQO request) {
samplingPlanControllerService.publish(request);
return ApiResult.success();
}
/**
* 删除抽样方案
*/

View File

@ -17,9 +17,9 @@ import com.nflg.wms.repository.entity.QmsInspectionStandard;
import com.nflg.wms.repository.entity.QmsInspectionStandardItem;
import com.nflg.wms.repository.entity.QmsInspectionStandardItemContent;
import com.nflg.wms.repository.mapper.QmsInspectionStandardMapper;
import com.nflg.wms.repository.service.IQmsInspectionStandardService;
import com.nflg.wms.repository.service.IQmsInspectionStandardItemContentService;
import com.nflg.wms.repository.service.IQmsInspectionStandardItemService;
import com.nflg.wms.repository.service.IQmsInspectionStandardService;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
@ -27,9 +27,7 @@ import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
/**
@ -153,7 +151,6 @@ public class QmsInspectionStandardControllerService {
// 填充基础字段
detail.setId(standard.getId());
detail.setMaterialId(standard.getMaterialId());
detail.setInspectionTaskItemId(standard.getInspectionTaskItemId());
detail.setDrawingUrl(standard.getDrawingUrl());
detail.setVersionNo(standard.getVersion() != null ? standard.getVersion().toString() : null);
detail.setIsEnabled(standard.getIsEnabled());
@ -257,7 +254,6 @@ public class QmsInspectionStandardControllerService {
QmsInspectionStandard standard = new QmsInspectionStandard();
standard.setMaterialId(qo.getMaterialId());
standard.setInspectionTaskItemId(qo.getInspectionTaskItemId());
standard.setDrawingUrl(qo.getDrawingUrl());
standard.setVersion(versionNo);
standard.setPackagingMethodId(qo.getPackagingMethodId());
@ -330,7 +326,6 @@ public class QmsInspectionStandardControllerService {
// 3. 更新字段不修改版本号
standard.setMaterialId(qo.getMaterialId());
standard.setInspectionTaskItemId(qo.getInspectionTaskItemId());
standard.setDrawingUrl(qo.getDrawingUrl());
standard.setPackagingMethodId(qo.getPackagingMethodId());
standard.setInspectionCycle(qo.getInspectionCycle());

View File

@ -7,6 +7,7 @@ import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.nflg.wms.common.pojo.PageData;
import com.nflg.wms.common.pojo.qo.FilterIdsQO;
import com.nflg.wms.common.pojo.qo.QmsSamplingPlanAddQO;
import com.nflg.wms.common.pojo.qo.QmsSamplingPlanEditQO;
import com.nflg.wms.common.pojo.qo.QmsSamplingPlanSearchQO;
@ -318,6 +319,39 @@ public class QmsSamplingPlanControllerService {
}
}
/**
* 发布抽样方案批量
*/
@Transactional(rollbackFor = Exception.class)
public void publish(FilterIdsQO request) {
List<Long> ids = request.getIds();
// 1. 批量查询抽样方案
List<QmsSamplingPlan> plans = samplingPlanService.listByIds(ids);
VUtil.trueThrowBusinessError(plans.size() != ids.size()).throwMessage("存在不存在的抽样方案,请检查后重试");
// 2. 校验是否存在已发布的方案
List<String> alreadyPublished = plans.stream()
.filter(p -> p.getPublishStatus() != null && p.getPublishStatus() == 1)
.map(QmsSamplingPlan::getPlanName)
.collect(Collectors.toList());
VUtil.trueThrowBusinessError(CollectionUtil.isNotEmpty(alreadyPublished))
.throwMessage("以下方案已发布,不能重复发布:" + String.join("", alreadyPublished));
// 3. 批量更新发布状态为已发布
String operator = UserUtil.getUserName();
Long operatorId = UserUtil.getUserId();
LocalDateTime now = LocalDateTime.now();
samplingPlanService.lambdaUpdate()
.in(QmsSamplingPlan::getId, ids)
.set(QmsSamplingPlan::getPublishStatus, (short) 1)
.set(QmsSamplingPlan::getUpdateUserId, operatorId)
.set(QmsSamplingPlan::getUpdateUserName, operator)
.set(QmsSamplingPlan::getUpdateTime, now)
.update();
}
/**
* 删除抽样方案
*/

View File

@ -0,0 +1,18 @@
package com.nflg.wms.common.pojo.qo;
import jakarta.validation.constraints.NotEmpty;
import lombok.Data;
import lombok.experimental.Accessors;
import java.util.List;
@Data
@Accessors(chain = true)
public class FilterIdsQO {
/**
* 主键ID列表
*/
@NotEmpty
private List<Long> ids;
}

View File

@ -15,11 +15,6 @@ public class QmsInspectionStandardAddQO {
@NotNull(message = "物料ID不能为空")
private Long materialId;
/**
* 检验任务项ID
*/
private Long inspectionTaskItemId;
/**
* 图纸URL
*/

View File

@ -41,11 +41,6 @@ public class QmsInspectionStandardDetailVO {
*/
private String drawingNoVer;
/**
* 检验任务项ID
*/
private Long inspectionTaskItemId;
/**
* 图纸URL
*/

View File

@ -31,11 +31,6 @@ public class QmsInspectionStandard implements Serializable {
*/
private Long materialId;
/**
* 检验任务项ID
*/
private Long inspectionTaskItemId;
/**
* 图纸URL
*/