feat(incoming-inspection): 添加检测方式字段及来料检测工单审核功能
- 在QmsIncomingInspectionTask实体中新增检测方式字段testingMethodDictItemId - 在IncomingInspectionTaskControllerService新增addNewIncomingInspectionTask方法,支持生成新检测任务 - 在来料检测任务创建时设置检测方式字段 - 调整生成任务号时的序列号参数 - 重命名工单审核请求对象为QmsIncomingInspectionIssueTicketAuditQO - 新增来料检测工单审核接口IncomingInspectionAudit,替代原有审核接口 - 审核通过时触发新任务生成,其他状态时调用异步处理逻辑 - 优化部分代码格式和导入,提升代码规范性
This commit is contained in:
parent
f3fbc2cc47
commit
cf0c66e398
|
|
@ -62,12 +62,11 @@ public class QmsIssueTicketController extends BaseController {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 审核质量问题工单
|
* 来料检测工单审核
|
||||||
* 更新审批状态、审批意见、审批人信息,并根据审批结果更新工单状态
|
|
||||||
*/
|
*/
|
||||||
@PostMapping("audit")
|
@PostMapping("audit/incoming-inspection")
|
||||||
public ApiResult<Void> audit(@Valid @RequestBody QmsIssueTicketAuditQO request) {
|
public ApiResult<Void> IncomingInspectionAudit(@Valid @RequestBody QmsIncomingInspectionIssueTicketAuditQO request) {
|
||||||
issueTicketControllerService.audit(request);
|
issueTicketControllerService.incomingInspectionAudit(request);
|
||||||
return ApiResult.success();
|
return ApiResult.success();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -188,6 +188,7 @@ public class IncomingInspectionTaskControllerService {
|
||||||
.setTaskNo(taskNo)
|
.setTaskNo(taskNo)
|
||||||
.setMaterialId(material.getId())
|
.setMaterialId(material.getId())
|
||||||
.setInspectionStandardId(standard.getId())
|
.setInspectionStandardId(standard.getId())
|
||||||
|
.setTestingMethodDictItemId(standard.getTestingMethodDictItemId())
|
||||||
.setSupplierCode(request.getSupplierCode())
|
.setSupplierCode(request.getSupplierCode())
|
||||||
.setSupplierName(request.getSupplierName())
|
.setSupplierName(request.getSupplierName())
|
||||||
.setDeliveryOrderNo(request.getDeliveryOrderNo())
|
.setDeliveryOrderNo(request.getDeliveryOrderNo())
|
||||||
|
|
@ -301,7 +302,7 @@ public class IncomingInspectionTaskControllerService {
|
||||||
}
|
}
|
||||||
|
|
||||||
// 5. 生成检测单号
|
// 5. 生成检测单号
|
||||||
String taskNo = basdeSerialNumberControllerService.generateSerialNumber(35);
|
String taskNo = basdeSerialNumberControllerService.generateSerialNumber(34);
|
||||||
|
|
||||||
// 6. 计算要求完成时间:当前时间 + 检验周期(天)
|
// 6. 计算要求完成时间:当前时间 + 检验周期(天)
|
||||||
LocalDateTime now = LocalDateTime.now();
|
LocalDateTime now = LocalDateTime.now();
|
||||||
|
|
@ -313,6 +314,7 @@ public class IncomingInspectionTaskControllerService {
|
||||||
.setTaskNo(taskNo)
|
.setTaskNo(taskNo)
|
||||||
.setMaterialId(material.getId())
|
.setMaterialId(material.getId())
|
||||||
.setInspectionStandardId(standard.getId())
|
.setInspectionStandardId(standard.getId())
|
||||||
|
.setTestingMethodDictItemId(standard.getTestingMethodDictItemId())
|
||||||
.setFactory(request.getFactory())
|
.setFactory(request.getFactory())
|
||||||
.setInspectionType(1)
|
.setInspectionType(1)
|
||||||
.setInspectionQty(request.getInspectionQty())
|
.setInspectionQty(request.getInspectionQty())
|
||||||
|
|
@ -356,6 +358,43 @@ public class IncomingInspectionTaskControllerService {
|
||||||
.update();
|
.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) {
|
private DictionaryItem getAql(Long id, List<DictionaryItem> aqls) {
|
||||||
return aqls.stream().filter(aql -> Objects.equals(aql.getId(), id)).findFirst().get();
|
return aqls.stream().filter(aql -> Objects.equals(aql.getId(), id)).findFirst().get();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@ import cn.hutool.core.util.StrUtil;
|
||||||
import com.nflg.wms.common.constant.STATE;
|
import com.nflg.wms.common.constant.STATE;
|
||||||
import com.nflg.wms.common.exception.NflgException;
|
import com.nflg.wms.common.exception.NflgException;
|
||||||
import com.nflg.wms.common.pojo.qo.QmsIssueTicketAddQO;
|
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.QmsIssueTicketPdiAddQO;
|
||||||
import com.nflg.wms.common.pojo.qo.QmsPdiCreateAndQueryTicketQO;
|
import com.nflg.wms.common.pojo.qo.QmsPdiCreateAndQueryTicketQO;
|
||||||
import com.nflg.wms.common.pojo.vo.*;
|
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.entity.*;
|
||||||
import com.nflg.wms.repository.service.*;
|
import com.nflg.wms.repository.service.*;
|
||||||
import jakarta.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
|
import org.apache.commons.lang3.tuple.Pair;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import jakarta.validation.Valid;
|
import jakarta.validation.Valid;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
@ -97,7 +98,7 @@ public class QmsIssueTicketControllerService {
|
||||||
QmsIssueTicketPdiAddQO addQO = new QmsIssueTicketPdiAddQO();
|
QmsIssueTicketPdiAddQO addQO = new QmsIssueTicketPdiAddQO();
|
||||||
addQO.setTaskRecordId(request.getTaskRecordId());
|
addQO.setTaskRecordId(request.getTaskRecordId());
|
||||||
addQO.setIncidentType(request.getIncidentType());
|
addQO.setIncidentType(request.getIncidentType());
|
||||||
|
|
||||||
List<QmsIssueTicketPdiAddQO.HandlerItem> handlerItems = request.getHandlers().stream()
|
List<QmsIssueTicketPdiAddQO.HandlerItem> handlerItems = request.getHandlers().stream()
|
||||||
.map(h -> {
|
.map(h -> {
|
||||||
QmsIssueTicketPdiAddQO.HandlerItem item = new QmsIssueTicketPdiAddQO.HandlerItem();
|
QmsIssueTicketPdiAddQO.HandlerItem item = new QmsIssueTicketPdiAddQO.HandlerItem();
|
||||||
|
|
@ -107,7 +108,7 @@ public class QmsIssueTicketControllerService {
|
||||||
})
|
})
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
addQO.setHandlers(handlerItems);
|
addQO.setHandlers(handlerItems);
|
||||||
|
|
||||||
addPdiTicket(addQO);
|
addPdiTicket(addQO);
|
||||||
|
|
||||||
// 2. 查询该任务的不合格检测项
|
// 2. 查询该任务的不合格检测项
|
||||||
|
|
@ -214,7 +215,7 @@ public class QmsIssueTicketControllerService {
|
||||||
* 更新审批状态、审批意见、审批人信息、事故类型,并更新工单状态
|
* 更新审批状态、审批意见、审批人信息、事故类型,并更新工单状态
|
||||||
*/
|
*/
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public void audit(@Valid QmsIssueTicketAuditQO request) {
|
public void incomingInspectionAudit(@Valid QmsIncomingInspectionIssueTicketAuditQO request) {
|
||||||
// 校验工单存在
|
// 校验工单存在
|
||||||
QmsIssueTicket entity = issueTicketService.getById(request.getId());
|
QmsIssueTicket entity = issueTicketService.getById(request.getId());
|
||||||
VUtil.trueThrowBusinessError(Objects.isNull(entity))
|
VUtil.trueThrowBusinessError(Objects.isNull(entity))
|
||||||
|
|
@ -238,10 +239,14 @@ public class QmsIssueTicketControllerService {
|
||||||
.setApprovalUserId(userId)
|
.setApprovalUserId(userId)
|
||||||
.setApprovalUserName(userName)
|
.setApprovalUserName(userName)
|
||||||
.setApprovalTime(now);
|
.setApprovalTime(now);
|
||||||
|
if (request.getApprovalStatus() == 5) {
|
||||||
|
entity.setAssociationTaskNo(incomingInspectionTaskControllerService.addNewIncomingInspectionTask(entity.getSourceId()));
|
||||||
|
}
|
||||||
issueTicketService.updateById(entity);
|
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()
|
records.stream()
|
||||||
.filter(record -> StrUtil.isNotBlank(record.getImageIds()))
|
.filter(record -> StrUtil.isNotBlank(record.getImageIds()))
|
||||||
.forEach(record -> {
|
.forEach(record -> {
|
||||||
if(StrUtil.isNotBlank(record.getImageIds())) {
|
if (StrUtil.isNotBlank(record.getImageIds())) {
|
||||||
record.setImages(fileUploadRecordService.lambdaQuery()
|
record.setImages(fileUploadRecordService.lambdaQuery()
|
||||||
.in(FileUploadRecord::getId, Arrays.stream(StrUtil.splitToLong(record.getImageIds(), ",")).boxed().toList())
|
.in(FileUploadRecord::getId, Arrays.stream(StrUtil.splitToLong(record.getImageIds(), ",")).boxed().toList())
|
||||||
.list()
|
.list()
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
package com.nflg.wms.common.pojo.qo;
|
package com.nflg.wms.common.pojo.qo;
|
||||||
|
|
||||||
import jakarta.validation.constraints.Min;
|
import jakarta.validation.constraints.Min;
|
||||||
import jakarta.validation.constraints.NotBlank;
|
|
||||||
import jakarta.validation.constraints.NotNull;
|
import jakarta.validation.constraints.NotNull;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.experimental.Accessors;
|
import lombok.experimental.Accessors;
|
||||||
|
|
@ -11,7 +10,7 @@ import lombok.experimental.Accessors;
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
@Accessors(chain = true)
|
@Accessors(chain = true)
|
||||||
public class QmsIssueTicketAuditQO {
|
public class QmsIncomingInspectionIssueTicketAuditQO {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 工单ID
|
* 工单ID
|
||||||
|
|
@ -52,6 +52,11 @@ public class QmsIncomingInspectionTask implements Serializable {
|
||||||
*/
|
*/
|
||||||
private Long inspectionStandardId;
|
private Long inspectionStandardId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 检测方式,关联字典项id(字典编码:InspectionStandardTestingMethod)
|
||||||
|
*/
|
||||||
|
private Long testingMethodDictItemId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 供应商编号
|
* 供应商编号
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue