feat(incoming-inspection): 添加检测方式字段及来料检测工单审核功能

- 在QmsIncomingInspectionTask实体中新增检测方式字段testingMethodDictItemId
- 在IncomingInspectionTaskControllerService新增addNewIncomingInspectionTask方法,支持生成新检测任务
- 在来料检测任务创建时设置检测方式字段
- 调整生成任务号时的序列号参数
- 重命名工单审核请求对象为QmsIncomingInspectionIssueTicketAuditQO
- 新增来料检测工单审核接口IncomingInspectionAudit,替代原有审核接口
- 审核通过时触发新任务生成,其他状态时调用异步处理逻辑
- 优化部分代码格式和导入,提升代码规范性
This commit is contained in:
曹鹏飞 2026-05-09 11:41:03 +08:00
parent f3fbc2cc47
commit cf0c66e398
5 changed files with 62 additions and 15 deletions

View File

@ -62,12 +62,11 @@ public class QmsIssueTicketController extends BaseController {
}
/**
* 审核质量问题工单
* 更新审批状态审批意见审批人信息并根据审批结果更新工单状态
* 来料检测工单审核
*/
@PostMapping("audit")
public ApiResult<Void> audit(@Valid @RequestBody QmsIssueTicketAuditQO request) {
issueTicketControllerService.audit(request);
@PostMapping("audit/incoming-inspection")
public ApiResult<Void> IncomingInspectionAudit(@Valid @RequestBody QmsIncomingInspectionIssueTicketAuditQO request) {
issueTicketControllerService.incomingInspectionAudit(request);
return ApiResult.success();
}

View File

@ -188,6 +188,7 @@ public class IncomingInspectionTaskControllerService {
.setTaskNo(taskNo)
.setMaterialId(material.getId())
.setInspectionStandardId(standard.getId())
.setTestingMethodDictItemId(standard.getTestingMethodDictItemId())
.setSupplierCode(request.getSupplierCode())
.setSupplierName(request.getSupplierName())
.setDeliveryOrderNo(request.getDeliveryOrderNo())
@ -301,7 +302,7 @@ public class IncomingInspectionTaskControllerService {
}
// 5. 生成检测单号
String taskNo = basdeSerialNumberControllerService.generateSerialNumber(35);
String taskNo = basdeSerialNumberControllerService.generateSerialNumber(34);
// 6. 计算要求完成时间当前时间 + 检验周期
LocalDateTime now = LocalDateTime.now();
@ -313,6 +314,7 @@ public class IncomingInspectionTaskControllerService {
.setTaskNo(taskNo)
.setMaterialId(material.getId())
.setInspectionStandardId(standard.getId())
.setTestingMethodDictItemId(standard.getTestingMethodDictItemId())
.setFactory(request.getFactory())
.setInspectionType(1)
.setInspectionQty(request.getInspectionQty())
@ -356,6 +358,43 @@ public class IncomingInspectionTaskControllerService {
.update();
}
public String addNewIncomingInspectionTask(Long taskId) {
QmsIncomingInspectionTask task = incomingInspectionTaskService.getById(taskId);
String taskNo = basdeSerialNumberControllerService.generateSerialNumber(34);
Long testingMethodDictItemId = dictionaryItemService.getIdByCode("InspectionStandardTestingMethod","Full");
QmsInspectionStandard standard = inspectionStandardService.getById(task.getInspectionStandardId());
LocalDateTime now = LocalDateTime.now();
LocalDateTime requiredFinishTime = now.plusDays(standard.getInspectionCycle());
QmsIncomingInspectionTask newTask = new QmsIncomingInspectionTask()
.setRequestNo(task.getRequestNo())
.setTaskNo(taskNo)
.setMaterialId(task.getId())
.setInspectionStandardId(task.getId())
.setTestingMethodDictItemId(testingMethodDictItemId)
.setSupplierCode(task.getSupplierCode())
.setSupplierName(task.getSupplierName())
.setDeliveryOrderNo(task.getDeliveryOrderNo())
.setDeliveryOrderLine(task.getDeliveryOrderLine())
.setPurchaseOrderNo(task.getPurchaseOrderNo())
.setPurchaseOrderLine(task.getPurchaseOrderLine())
.setPurchaseGroup(task.getPurchaseGroup())
.setFactory(task.getFactory())
.setWarehouse(task.getWarehouse())
.setStorageLocation(task.getStorageLocation())
.setStorageDays(task.getStorageDays())
.setInspectionType(task.getInspectionType())
.setDataType(task.getDataType())
.setInspectionQty(task.getInspectionQty())
.setInspectionStatus((short) 0)
.setInspectorId(task.getInspectorId())
.setInspectorName(task.getInspectorName())
.setSubmitTime(LocalDateTime.now())
.setRequiredFinishTime(requiredFinishTime)
.setDetectionQty(task.getInspectionQty());
incomingInspectionTaskService.save(newTask);
return taskNo;
}
private DictionaryItem getAql(Long id, List<DictionaryItem> aqls) {
return aqls.stream().filter(aql -> Objects.equals(aql.getId(), id)).findFirst().get();
}

View File

@ -6,7 +6,7 @@ import cn.hutool.core.util.StrUtil;
import com.nflg.wms.common.constant.STATE;
import com.nflg.wms.common.exception.NflgException;
import com.nflg.wms.common.pojo.qo.QmsIssueTicketAddQO;
import com.nflg.wms.common.pojo.qo.QmsIssueTicketAuditQO;
import com.nflg.wms.common.pojo.qo.QmsIncomingInspectionIssueTicketAuditQO;
import com.nflg.wms.common.pojo.qo.QmsIssueTicketPdiAddQO;
import com.nflg.wms.common.pojo.qo.QmsPdiCreateAndQueryTicketQO;
import com.nflg.wms.common.pojo.vo.*;
@ -15,6 +15,7 @@ import com.nflg.wms.common.util.VUtil;
import com.nflg.wms.repository.entity.*;
import com.nflg.wms.repository.service.*;
import jakarta.annotation.Resource;
import org.apache.commons.lang3.tuple.Pair;
import org.springframework.stereotype.Service;
import jakarta.validation.Valid;
import org.springframework.stereotype.Component;
@ -97,7 +98,7 @@ public class QmsIssueTicketControllerService {
QmsIssueTicketPdiAddQO addQO = new QmsIssueTicketPdiAddQO();
addQO.setTaskRecordId(request.getTaskRecordId());
addQO.setIncidentType(request.getIncidentType());
List<QmsIssueTicketPdiAddQO.HandlerItem> handlerItems = request.getHandlers().stream()
.map(h -> {
QmsIssueTicketPdiAddQO.HandlerItem item = new QmsIssueTicketPdiAddQO.HandlerItem();
@ -107,7 +108,7 @@ public class QmsIssueTicketControllerService {
})
.collect(Collectors.toList());
addQO.setHandlers(handlerItems);
addPdiTicket(addQO);
// 2. 查询该任务的不合格检测项
@ -214,7 +215,7 @@ public class QmsIssueTicketControllerService {
* 更新审批状态审批意见审批人信息事故类型并更新工单状态
*/
@Transactional(rollbackFor = Exception.class)
public void audit(@Valid QmsIssueTicketAuditQO request) {
public void incomingInspectionAudit(@Valid QmsIncomingInspectionIssueTicketAuditQO request) {
// 校验工单存在
QmsIssueTicket entity = issueTicketService.getById(request.getId());
VUtil.trueThrowBusinessError(Objects.isNull(entity))
@ -238,10 +239,14 @@ public class QmsIssueTicketControllerService {
.setApprovalUserId(userId)
.setApprovalUserName(userName)
.setApprovalTime(now);
if (request.getApprovalStatus() == 5) {
entity.setAssociationTaskNo(incomingInspectionTaskControllerService.addNewIncomingInspectionTask(entity.getSourceId()));
}
issueTicketService.updateById(entity);
wmsIncomingInspectionTaskCallbackService.processAsync(entity.getSourceId(), request.getApprovalStatus());
if (request.getApprovalStatus() != 5) {
wmsIncomingInspectionTaskCallbackService.processAsync(entity.getSourceId(), request.getApprovalStatus());
}
}
/**
@ -537,7 +542,7 @@ public class QmsIssueTicketControllerService {
records.stream()
.filter(record -> StrUtil.isNotBlank(record.getImageIds()))
.forEach(record -> {
if(StrUtil.isNotBlank(record.getImageIds())) {
if (StrUtil.isNotBlank(record.getImageIds())) {
record.setImages(fileUploadRecordService.lambdaQuery()
.in(FileUploadRecord::getId, Arrays.stream(StrUtil.splitToLong(record.getImageIds(), ",")).boxed().toList())
.list()

View File

@ -1,7 +1,6 @@
package com.nflg.wms.common.pojo.qo;
import jakarta.validation.constraints.Min;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import lombok.experimental.Accessors;
@ -11,7 +10,7 @@ import lombok.experimental.Accessors;
*/
@Data
@Accessors(chain = true)
public class QmsIssueTicketAuditQO {
public class QmsIncomingInspectionIssueTicketAuditQO {
/**
* 工单ID

View File

@ -52,6 +52,11 @@ public class QmsIncomingInspectionTask implements Serializable {
*/
private Long inspectionStandardId;
/**
* 检测方式关联字典项id字典编码InspectionStandardTestingMethod
*/
private Long testingMethodDictItemId;
/**
* 供应商编号
*/