feat(qms): 新增检验标准及抽样方案发布功能
- 添加检验标准实体类 QmsInspectionStandard,包含检验相关字段及元数据 - 新增检验标准新增参数类 QmsInspectionStandardAddQO,支持物料ID、图纸URL等字段校验 - 创建检验标准详情视图类 QmsInspectionStandardDetailVO,包含检验标准信息及检测项列表 - 优化 QmsInspectionStandardControllerService,移除不必要字段,精简代码逻辑 - 在 QmsSamplingPlanController 新增发布抽样方案接口,支持批量发布 - 实现 QmsSamplingPlanControllerService 中发布方法,校验方案状态并批量更新发布状态 - 补充 FilterIdsQO 参数类,支持发布接口的批量ID校验 - 完善抽样方案新增、编辑、删除、查询的业务逻辑及数据完整性校验 - 引入事务管理保证数据操作原子性,提升系统稳定性与数据一致性
This commit is contained in:
parent
5f8eb1058a
commit
f948c667d4
|
|
@ -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();
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除抽样方案
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -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());
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除抽样方案
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
@ -15,11 +15,6 @@ public class QmsInspectionStandardAddQO {
|
|||
@NotNull(message = "物料ID不能为空")
|
||||
private Long materialId;
|
||||
|
||||
/**
|
||||
* 检验任务项ID
|
||||
*/
|
||||
private Long inspectionTaskItemId;
|
||||
|
||||
/**
|
||||
* 图纸URL
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -41,11 +41,6 @@ public class QmsInspectionStandardDetailVO {
|
|||
*/
|
||||
private String drawingNoVer;
|
||||
|
||||
/**
|
||||
* 检验任务项ID
|
||||
*/
|
||||
private Long inspectionTaskItemId;
|
||||
|
||||
/**
|
||||
* 图纸URL
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -31,11 +31,6 @@ public class QmsInspectionStandard implements Serializable {
|
|||
*/
|
||||
private Long materialId;
|
||||
|
||||
/**
|
||||
* 检验任务项ID
|
||||
*/
|
||||
private Long inspectionTaskItemId;
|
||||
|
||||
/**
|
||||
* 图纸URL
|
||||
*/
|
||||
|
|
|
|||
Loading…
Reference in New Issue