refactor(qms-admin): 优化来料检验任务回调处理逻辑

- 将submit方法添加事务注解,确保操作原子性
- 移除控制器层多余的@Transactional注解,精简代码结构
- 修改回调调用方式,去除多余参数,简化接口调用
- 在WmsIncomingInspectionTaskCallbackService中增强回调处理逻辑
- 根据检验结果动态处理回调,避免重复回调
- 新增基于工单状态自动获取处理结果的处理路径
- 修正任务查询SQL,增加detection_qty字段数据支持
- 初始化QmsIncomingInspectionTaskVO已检数量字段防止空指针
This commit is contained in:
曹鹏飞 2026-04-29 11:26:48 +08:00
parent b17e1fcec8
commit 61fa709345
5 changed files with 79 additions and 43 deletions

View File

@ -108,7 +108,6 @@ public class QmsIncomingInspectionTaskController extends BaseController {
/**
* 提交检测项
*/
@Transactional
@PostMapping("pad/add-check-item")
public ApiResult<Void> addCheckItem(@Valid @RequestBody QmsIncomingInspectionTaskTodoCheckSubmitQO request){
incomingInspectionTaskControllerService.submitCheckItem(request);
@ -118,7 +117,6 @@ public class QmsIncomingInspectionTaskController extends BaseController {
/**
* 暂存检验结果
*/
@Transactional
@PostMapping("pad/staging")
public ApiResult<Void> staging(@Valid @RequestBody QmsIncomingInspectionTaskSubmitQO request){
incomingInspectionTaskControllerService.staging(request);
@ -128,7 +126,6 @@ public class QmsIncomingInspectionTaskController extends BaseController {
/**
* 提交检验结果
*/
@Transactional
@PostMapping("pad/submit")
public ApiResult<Void> submit(@Valid @RequestBody QmsIncomingInspectionTaskSubmitQO request){
incomingInspectionTaskControllerService.submit(request);
@ -140,7 +137,7 @@ public class QmsIncomingInspectionTaskController extends BaseController {
*/
@PostMapping("callback")
public ApiResult<Void> callback(@RequestParam Long taskId){
wmsIncomingInspectionTaskCallbackService.process(taskId, (short) 0);
wmsIncomingInspectionTaskCallbackService.process(taskId);
return ApiResult.success();
}
}

View File

@ -943,6 +943,7 @@ public class IncomingInspectionTaskControllerService {
updateWrapper.update();
}
@Transactional
public void submit(@Valid QmsIncomingInspectionTaskSubmitQO request) {
QmsIncomingInspectionTask task = incomingInspectionTaskService.getById(request.getTaskId());
VUtil.trueThrowBusinessError(Objects.isNull(task)).throwMessage("任务不存在");
@ -985,7 +986,7 @@ public class IncomingInspectionTaskControllerService {
updateWrapper.update();
if (task.getInspectionResult()) {
wmsIncomingInspectionTaskCallbackService.process(task.getId(), (short) 0);
wmsIncomingInspectionTaskCallbackService.process(task.getId());
} else {
issueTicketControllerService.initiate(task.getId());
}

View File

@ -8,8 +8,10 @@ import com.nflg.wms.common.pojo.vo.QmsIncomingInspectionTaskVO;
import com.nflg.wms.common.util.VUtil;
import com.nflg.wms.repository.entity.QmsIncomingInspectionTask;
import com.nflg.wms.repository.entity.QmsIncomingInspectionTaskRecord;
import com.nflg.wms.repository.entity.QmsIssueTicket;
import com.nflg.wms.repository.service.IQmsIncomingInspectionTaskRecordService;
import com.nflg.wms.repository.service.IQmsIncomingInspectionTaskService;
import com.nflg.wms.repository.service.IQmsIssueTicketService;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
@ -17,6 +19,7 @@ import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Objects;
/**
* Wms来料检验任务回调服务
@ -40,6 +43,9 @@ public class WmsIncomingInspectionTaskCallbackService {
@Resource
private WmsApiService wmsApiService;
@Resource
private IQmsIssueTicketService issueTicketService;
/**
* 向WMS系统发送来料检验任务回调
*/
@ -152,11 +158,31 @@ public class WmsIncomingInspectionTaskCallbackService {
/**
* WMS系统来料检验任务回调
* @param taskId 来料检验任务ID
*/
public void process(Long taskId) {
QmsIncomingInspectionTaskVO taskVO = incomingInspectionTaskService.getDetail(taskId);
VUtil.trueThrowBusinessError(Objects.equals(taskVO.getCallbackResult(), true)).throwMessage("请勿重复回调");
VUtil.trueThrowBusinessError(taskVO.getInspectionStatus() != 2).throwMessage("来料检验任务状态不允许回调");
if (taskVO.getInspectionResult()) {
process(taskVO, (short) 0);
} else {
QmsIssueTicket issueTicket = issueTicketService.lambdaQuery()
.eq(QmsIssueTicket::getSourceId, taskId)
.eq(QmsIssueTicket::getStatus, 2)
.orderByDesc(QmsIssueTicket::getId)
.last("limit 1")
.one();
VUtil.trueThrowBusinessError(Objects.isNull(issueTicket)).throwMessage("未找到符合条件的工单");
process(taskVO, issueTicket.getApprovalStatus());
}
}
/**
* WMS系统来料检验任务回调
* @param taskVO 来料检验任务VO
* @param processingResult 处理结果0=通过3=报废4=维修5=挑选使用6=让渡使用
*/
public void process(Long taskId, Short processingResult) {
QmsIncomingInspectionTaskVO taskVO = incomingInspectionTaskService.getDetail(taskId);
VUtil.trueThrowBusinessError(taskVO.getCallbackResult()).throwMessage("请勿重复回调");
private void process(QmsIncomingInspectionTaskVO taskVO, Short processingResult) {
switch (taskVO.getInspectionType()) {
case 1:
incoming(taskVO,processingResult);
@ -169,4 +195,15 @@ public class WmsIncomingInspectionTaskCallbackService {
break;
}
}
/**
* WMS系统来料检验任务回调
* @param taskId 来料检验任务ID
* @param processingResult 处理结果0=通过3=报废4=维修5=挑选使用6=让渡使用
*/
private void process(Long taskId, Short processingResult) {
QmsIncomingInspectionTaskVO taskVO = incomingInspectionTaskService.getDetail(taskId);
VUtil.trueThrowBusinessError(Objects.equals(taskVO.getCallbackResult(),true)).throwMessage("请勿重复回调");
process(taskVO, processingResult);
}
}

View File

@ -125,7 +125,7 @@ public class QmsIncomingInspectionTaskVO {
/**
* 已检数量
*/
private Integer inspectedQty;
private Integer inspectedQty = 0;
/**
* 未检数量

View File

@ -138,7 +138,8 @@
t2.task_no as related_task_no,
t.update_user_id,
t.update_user_name,
t.update_time
t.update_time,
t.detection_qty
FROM qms_incoming_inspection_task t
LEFT JOIN qms_qc_material m ON t.material_id = m.id
LEFT JOIN qms_inspection_standard s ON t.inspection_standard_id = s.id