Compare commits

...

2 Commits

Author SHA1 Message Date
曹鹏飞 998cbbb074 Merge remote-tracking branch '惠信/qms/develop' into qms/develop 2026-04-29 11:26:54 +08:00
曹鹏飞 61fa709345 refactor(qms-admin): 优化来料检验任务回调处理逻辑
- 将submit方法添加事务注解,确保操作原子性
- 移除控制器层多余的@Transactional注解,精简代码结构
- 修改回调调用方式,去除多余参数,简化接口调用
- 在WmsIncomingInspectionTaskCallbackService中增强回调处理逻辑
- 根据检验结果动态处理回调,避免重复回调
- 新增基于工单状态自动获取处理结果的处理路径
- 修正任务查询SQL,增加detection_qty字段数据支持
- 初始化QmsIncomingInspectionTaskVO已检数量字段防止空指针
2026-04-29 11:26:48 +08:00
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") @PostMapping("pad/add-check-item")
public ApiResult<Void> addCheckItem(@Valid @RequestBody QmsIncomingInspectionTaskTodoCheckSubmitQO request){ public ApiResult<Void> addCheckItem(@Valid @RequestBody QmsIncomingInspectionTaskTodoCheckSubmitQO request){
incomingInspectionTaskControllerService.submitCheckItem(request); incomingInspectionTaskControllerService.submitCheckItem(request);
@ -118,7 +117,6 @@ public class QmsIncomingInspectionTaskController extends BaseController {
/** /**
* 暂存检验结果 * 暂存检验结果
*/ */
@Transactional
@PostMapping("pad/staging") @PostMapping("pad/staging")
public ApiResult<Void> staging(@Valid @RequestBody QmsIncomingInspectionTaskSubmitQO request){ public ApiResult<Void> staging(@Valid @RequestBody QmsIncomingInspectionTaskSubmitQO request){
incomingInspectionTaskControllerService.staging(request); incomingInspectionTaskControllerService.staging(request);
@ -128,7 +126,6 @@ public class QmsIncomingInspectionTaskController extends BaseController {
/** /**
* 提交检验结果 * 提交检验结果
*/ */
@Transactional
@PostMapping("pad/submit") @PostMapping("pad/submit")
public ApiResult<Void> submit(@Valid @RequestBody QmsIncomingInspectionTaskSubmitQO request){ public ApiResult<Void> submit(@Valid @RequestBody QmsIncomingInspectionTaskSubmitQO request){
incomingInspectionTaskControllerService.submit(request); incomingInspectionTaskControllerService.submit(request);
@ -140,7 +137,7 @@ public class QmsIncomingInspectionTaskController extends BaseController {
*/ */
@PostMapping("callback") @PostMapping("callback")
public ApiResult<Void> callback(@RequestParam Long taskId){ public ApiResult<Void> callback(@RequestParam Long taskId){
wmsIncomingInspectionTaskCallbackService.process(taskId, (short) 0); wmsIncomingInspectionTaskCallbackService.process(taskId);
return ApiResult.success(); return ApiResult.success();
} }
} }

View File

@ -943,6 +943,7 @@ public class IncomingInspectionTaskControllerService {
updateWrapper.update(); updateWrapper.update();
} }
@Transactional
public void submit(@Valid QmsIncomingInspectionTaskSubmitQO request) { public void submit(@Valid QmsIncomingInspectionTaskSubmitQO request) {
QmsIncomingInspectionTask task = incomingInspectionTaskService.getById(request.getTaskId()); QmsIncomingInspectionTask task = incomingInspectionTaskService.getById(request.getTaskId());
VUtil.trueThrowBusinessError(Objects.isNull(task)).throwMessage("任务不存在"); VUtil.trueThrowBusinessError(Objects.isNull(task)).throwMessage("任务不存在");
@ -985,7 +986,7 @@ public class IncomingInspectionTaskControllerService {
updateWrapper.update(); updateWrapper.update();
if (task.getInspectionResult()) { if (task.getInspectionResult()) {
wmsIncomingInspectionTaskCallbackService.process(task.getId(), (short) 0); wmsIncomingInspectionTaskCallbackService.process(task.getId());
} else { } else {
issueTicketControllerService.initiate(task.getId()); 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.common.util.VUtil;
import com.nflg.wms.repository.entity.QmsIncomingInspectionTask; import com.nflg.wms.repository.entity.QmsIncomingInspectionTask;
import com.nflg.wms.repository.entity.QmsIncomingInspectionTaskRecord; 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.IQmsIncomingInspectionTaskRecordService;
import com.nflg.wms.repository.service.IQmsIncomingInspectionTaskService; import com.nflg.wms.repository.service.IQmsIncomingInspectionTaskService;
import com.nflg.wms.repository.service.IQmsIssueTicketService;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
@ -17,6 +19,7 @@ import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.List; import java.util.List;
import java.util.Objects;
/** /**
* Wms来料检验任务回调服务 * Wms来料检验任务回调服务
@ -40,6 +43,9 @@ public class WmsIncomingInspectionTaskCallbackService {
@Resource @Resource
private WmsApiService wmsApiService; private WmsApiService wmsApiService;
@Resource
private IQmsIssueTicketService issueTicketService;
/** /**
* 向WMS系统发送来料检验任务回调 * 向WMS系统发送来料检验任务回调
*/ */
@ -152,11 +158,31 @@ public class WmsIncomingInspectionTaskCallbackService {
/** /**
* WMS系统来料检验任务回调 * WMS系统来料检验任务回调
* @param taskId 来料检验任务ID * @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=让渡使用 * @param processingResult 处理结果0=通过3=报废4=维修5=挑选使用6=让渡使用
*/ */
public void process(Long taskId, Short processingResult) { private void process(QmsIncomingInspectionTaskVO taskVO, Short processingResult) {
QmsIncomingInspectionTaskVO taskVO = incomingInspectionTaskService.getDetail(taskId);
VUtil.trueThrowBusinessError(taskVO.getCallbackResult()).throwMessage("请勿重复回调");
switch (taskVO.getInspectionType()) { switch (taskVO.getInspectionType()) {
case 1: case 1:
incoming(taskVO,processingResult); incoming(taskVO,processingResult);
@ -169,4 +195,15 @@ public class WmsIncomingInspectionTaskCallbackService {
break; 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

@ -105,40 +105,41 @@
<select id="todoSearch" resultType="com.nflg.wms.common.pojo.vo.QmsIncomingInspectionTaskVO"> <select id="todoSearch" resultType="com.nflg.wms.common.pojo.vo.QmsIncomingInspectionTaskVO">
SELECT SELECT
t.id, t.id,
t.task_no, t.task_no,
t.material_id, t.material_id,
m.material_no, m.material_no,
m.material_desc, m.material_desc,
m.drawing_no_ver, m.drawing_no_ver,
t.inspection_standard_id, t.inspection_standard_id,
s.version AS standard_version, s.version AS standard_version,
t.supplier_code, t.supplier_code,
t.supplier_name, t.supplier_name,
t.delivery_order_no, t.delivery_order_no,
t.delivery_order_line, t.delivery_order_line,
t.purchase_order_no, t.purchase_order_no,
t.purchase_order_line, t.purchase_order_line,
t.factory, t.factory,
t.inspection_type, t.inspection_type,
t.inspection_qty, t.inspection_qty,
t.qualified_qty, t.qualified_qty,
t.unqualified_qty, t.unqualified_qty,
t.inspection_status, t.inspection_status,
t.inspection_result, t.inspection_result,
t.inspector_id, t.inspector_id,
t.inspector_name, t.inspector_name,
t.agent_id, t.agent_id,
t.agent_name, t.agent_name,
t.submit_time, t.submit_time,
t.inspection_start_time, t.inspection_start_time,
t.inspection_finish_time, t.inspection_finish_time,
t.required_finish_time, t.required_finish_time,
t.is_overdue, t.is_overdue,
t2.task_no as related_task_no, t2.task_no as related_task_no,
t.update_user_id, t.update_user_id,
t.update_user_name, t.update_user_name,
t.update_time t.update_time,
t.detection_qty
FROM qms_incoming_inspection_task t FROM qms_incoming_inspection_task t
LEFT JOIN qms_qc_material m ON t.material_id = m.id 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 LEFT JOIN qms_inspection_standard s ON t.inspection_standard_id = s.id