feat(qms-incoming-inspection): 实现来料检验任务回调功能

- 新增来料检验任务实体类 QmsIncomingInspectionTask
- 增加 MyBatis 映射文件 QmsIncomingInspectionTaskMapper.xml 支持多条件查询
- 添加 QmsIncomingInspectionTaskVO 用于查询结果封装
- 在控制器 QmsIncomingInspectionTaskController 中新增回调接口
- 实现 WmsIncomingInspectionTaskCallbackService 服务,支持来料和库存检验回调
- 回调接口添加异常捕获及回调结果状态更新
- 细化查询条件及返回字段,实现任务详情查询和待办任务查询功能
This commit is contained in:
曹鹏飞 2026-04-28 16:39:10 +08:00
parent 771fc37fe4
commit de9799bcb4
5 changed files with 107 additions and 43 deletions

View File

@ -1,6 +1,7 @@
package com.nflg.qms.admin.controller; package com.nflg.qms.admin.controller;
import com.nflg.qms.admin.service.IncomingInspectionTaskControllerService; import com.nflg.qms.admin.service.IncomingInspectionTaskControllerService;
import com.nflg.qms.admin.service.WmsIncomingInspectionTaskCallbackService;
import com.nflg.wms.common.pojo.ApiResult; import com.nflg.wms.common.pojo.ApiResult;
import com.nflg.wms.common.pojo.PageData; import com.nflg.wms.common.pojo.PageData;
import com.nflg.wms.common.pojo.qo.*; import com.nflg.wms.common.pojo.qo.*;
@ -28,6 +29,9 @@ public class QmsIncomingInspectionTaskController extends BaseController {
@Resource @Resource
private IncomingInspectionTaskControllerService incomingInspectionTaskControllerService; private IncomingInspectionTaskControllerService incomingInspectionTaskControllerService;
@Resource
private WmsIncomingInspectionTaskCallbackService wmsIncomingInspectionTaskCallbackService;
/** /**
* 分页查询来料检测任务列表 * 分页查询来料检测任务列表
*/ */
@ -131,5 +135,12 @@ public class QmsIncomingInspectionTaskController extends BaseController {
return ApiResult.success(); return ApiResult.success();
} }
/**
* 回调
*/
@PostMapping("callback")
public ApiResult<Void> callback(@RequestParam Long taskId){
wmsIncomingInspectionTaskCallbackService.process(taskId);
return ApiResult.success();
}
} }

View File

@ -1,8 +1,12 @@
package com.nflg.qms.admin.service; package com.nflg.qms.admin.service;
import com.nflg.wms.common.constant.STATE;
import com.nflg.wms.common.exception.NflgException;
import com.nflg.wms.common.pojo.qo.WmsIncomingInspectionTaskCallbackQO; import com.nflg.wms.common.pojo.qo.WmsIncomingInspectionTaskCallbackQO;
import com.nflg.wms.common.pojo.qo.WmsInventoryInspectionTaskCallbackQO; import com.nflg.wms.common.pojo.qo.WmsInventoryInspectionTaskCallbackQO;
import com.nflg.wms.common.pojo.vo.QmsIncomingInspectionTaskVO; 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.QmsIncomingInspectionTaskRecord;
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;
@ -38,8 +42,7 @@ public class WmsIncomingInspectionTaskCallbackService {
/** /**
* 向WMS系统发送来料检验任务回调 * 向WMS系统发送来料检验任务回调
*/ */
public void incoming(Long taskId) { private void incoming(QmsIncomingInspectionTaskVO taskVO) {
QmsIncomingInspectionTaskVO taskVO = incomingInspectionTaskService.getDetail(taskId);
WmsIncomingInspectionTaskCallbackQO qo = new WmsIncomingInspectionTaskCallbackQO() WmsIncomingInspectionTaskCallbackQO qo = new WmsIncomingInspectionTaskCallbackQO()
.setTaskNo(taskVO.getTaskNo()) .setTaskNo(taskVO.getTaskNo())
.setInspectionType(taskVO.getInspectionType()) .setInspectionType(taskVO.getInspectionType())
@ -59,7 +62,7 @@ public class WmsIncomingInspectionTaskCallbackService {
List<QmsIncomingInspectionTaskRecord> records = incomingInspectionTaskRecordService.lambdaQuery() List<QmsIncomingInspectionTaskRecord> records = incomingInspectionTaskRecordService.lambdaQuery()
.select(QmsIncomingInspectionTaskRecord::getMaterialUniqueNo, QmsIncomingInspectionTaskRecord::getQualified) .select(QmsIncomingInspectionTaskRecord::getMaterialUniqueNo, QmsIncomingInspectionTaskRecord::getQualified)
.eq(QmsIncomingInspectionTaskRecord::getTaskId, taskId) .eq(QmsIncomingInspectionTaskRecord::getTaskId, taskVO.getId())
.list(); .list();
qo.setQualifiedMaterialUniqueNo(records.stream() qo.setQualifiedMaterialUniqueNo(records.stream()
.filter(QmsIncomingInspectionTaskRecord::getQualified) .filter(QmsIncomingInspectionTaskRecord::getQualified)
@ -72,14 +75,25 @@ public class WmsIncomingInspectionTaskCallbackService {
.toList() .toList()
); );
wmsApiService.post(incomingUrl, qo, "来料检验任务回调WMS"); boolean callbackResult = true;
try {
wmsApiService.post(incomingUrl, qo, "来料检验任务回调WMS");
} catch (Exception e) {
callbackResult = false;
throw new NflgException(STATE.BusinessError, "调用WMS接口失败" + e.getMessage());
} finally {
incomingInspectionTaskService.lambdaUpdate()
.eq(QmsIncomingInspectionTask::getId, taskVO.getId())
.ne(QmsIncomingInspectionTask::getCallbackResult, true)
.set(QmsIncomingInspectionTask::getCallbackResult, callbackResult)
.update();
}
} }
/** /**
* 向WMS系统发送库存检验任务回调 * 向WMS系统发送库存检验任务回调
*/ */
public void inventory(Long taskId) { private void inventory(QmsIncomingInspectionTaskVO taskVO) {
QmsIncomingInspectionTaskVO taskVO = incomingInspectionTaskService.getDetail(taskId);
WmsInventoryInspectionTaskCallbackQO qo = new WmsInventoryInspectionTaskCallbackQO() WmsInventoryInspectionTaskCallbackQO qo = new WmsInventoryInspectionTaskCallbackQO()
.setTaskNo(taskVO.getTaskNo()) .setTaskNo(taskVO.getTaskNo())
.setMaterialNo(taskVO.getMaterialNo()) .setMaterialNo(taskVO.getMaterialNo())
@ -94,7 +108,7 @@ public class WmsIncomingInspectionTaskCallbackService {
List<QmsIncomingInspectionTaskRecord> records = incomingInspectionTaskRecordService.lambdaQuery() List<QmsIncomingInspectionTaskRecord> records = incomingInspectionTaskRecordService.lambdaQuery()
.select(QmsIncomingInspectionTaskRecord::getMaterialUniqueNo, QmsIncomingInspectionTaskRecord::getQualified) .select(QmsIncomingInspectionTaskRecord::getMaterialUniqueNo, QmsIncomingInspectionTaskRecord::getQualified)
.eq(QmsIncomingInspectionTaskRecord::getTaskId, taskId) .eq(QmsIncomingInspectionTaskRecord::getTaskId, taskVO.getId())
.list(); .list();
qo.setQualifiedMaterialUniqueNo(records.stream() qo.setQualifiedMaterialUniqueNo(records.stream()
.filter(QmsIncomingInspectionTaskRecord::getQualified) .filter(QmsIncomingInspectionTaskRecord::getQualified)
@ -107,6 +121,33 @@ public class WmsIncomingInspectionTaskCallbackService {
.toList() .toList()
); );
wmsApiService.post(inventoryUrl, qo, "库存检验任务回调WMS"); boolean callbackResult = true;
try {
wmsApiService.post(inventoryUrl, qo, "库存检验任务回调WMS");
} catch (Exception e) {
callbackResult = false;
throw new NflgException(STATE.BusinessError, "调用WMS接口失败" + e.getMessage());
} finally {
incomingInspectionTaskService.lambdaUpdate()
.eq(QmsIncomingInspectionTask::getId, taskVO.getId())
.ne(QmsIncomingInspectionTask::getCallbackResult, true)
.set(QmsIncomingInspectionTask::getCallbackResult, callbackResult)
.update();
}
}
public void process(Long taskId) {
QmsIncomingInspectionTaskVO taskVO = incomingInspectionTaskService.getDetail(taskId);
switch (taskVO.getInspectionType()) {
case 1:
incoming(taskVO);
break;
case 2:
inventory(taskVO);
break;
default:
VUtil.trueThrowBusinessError(true).throwMessage("无效的检验类型:" + taskVO.getInspectionType());
break;
}
} }
} }

View File

@ -182,6 +182,11 @@ public class QmsIncomingInspectionTaskVO {
*/ */
private String purchaseGroup; private String purchaseGroup;
/**
* 回调结果
*/
private Boolean callbackResult;
/** /**
* 最近更新人id * 最近更新人id
*/ */

View File

@ -187,6 +187,11 @@ public class QmsIncomingInspectionTask implements Serializable {
*/ */
private String purchaseGroup; private String purchaseGroup;
/**
* 回调结果
*/
private Boolean callbackResult;
/** /**
* 最近更新人id * 最近更新人id
*/ */

View File

@ -4,40 +4,42 @@
<select id="search" resultType="com.nflg.wms.common.pojo.vo.QmsIncomingInspectionTaskVO"> <select id="search" 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.purchase_group,
t.callback_result
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