Compare commits

..

No commits in common. "fcef1709332335663b703f4cbe6e1deb4f8d3189" and "fa51777d6f95ec860bc8f49db5510c6d6e4b9f86" have entirely different histories.

12 changed files with 48 additions and 175 deletions

View File

@ -7,7 +7,6 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient; import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.ComponentScan;
import org.springframework.retry.annotation.EnableRetry; import org.springframework.retry.annotation.EnableRetry;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.scheduling.annotation.EnableScheduling;
@Slf4j @Slf4j
@ -16,7 +15,6 @@ import org.springframework.scheduling.annotation.EnableScheduling;
@EnableDiscoveryClient @EnableDiscoveryClient
@EnableScheduling @EnableScheduling
@EnableRetry @EnableRetry
@EnableAsync
public class QmsApplication { public class QmsApplication {
public static void main(String[] args) { public static void main(String[] args) {

View File

@ -21,21 +21,4 @@ public class AsyncConfig {
executor.initialize(); executor.initialize();
return executor; return executor;
} }
@Bean(name = "wmsCallbackExecutor")
public Executor getAsyncExecutor() {
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
// 核心线程数平时保持的线程数量
executor.setCorePoolSize(5);
// 最大线程数高峰期最多扩容到这个数量
executor.setMaxPoolSize(20);
// 队列容量核心线程满后任务会放进队列队列满后才扩容最大线程
executor.setQueueCapacity(100);
// 线程空闲存活时间
executor.setKeepAliveSeconds(60);
// 线程名称前缀方便在日志中排查问题
executor.setThreadNamePrefix("wms-callback-async-");
executor.initialize();
return executor;
}
} }

View File

@ -1,7 +1,6 @@
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.*;
@ -29,9 +28,6 @@ public class QmsIncomingInspectionTaskController extends BaseController {
@Resource @Resource
private IncomingInspectionTaskControllerService incomingInspectionTaskControllerService; private IncomingInspectionTaskControllerService incomingInspectionTaskControllerService;
@Resource
private WmsIncomingInspectionTaskCallbackService wmsIncomingInspectionTaskCallbackService;
/** /**
* 分页查询来料检测任务列表 * 分页查询来料检测任务列表
*/ */
@ -135,12 +131,5 @@ public class QmsIncomingInspectionTaskController extends BaseController {
return ApiResult.success(); return ApiResult.success();
} }
/**
* 回调
*/
@PostMapping("callback")
public ApiResult<Void> callback(@RequestParam Long taskId){
wmsIncomingInspectionTaskCallbackService.process(taskId, (short) 0);
return ApiResult.success();
}
} }

View File

@ -110,9 +110,6 @@ public class IncomingInspectionTaskControllerService {
@Resource @Resource
private QmsIssueTicketControllerService issueTicketControllerService; private QmsIssueTicketControllerService issueTicketControllerService;
@Resource
private WmsIncomingInspectionTaskCallbackService wmsIncomingInspectionTaskCallbackService;
/** /**
* 来料检验申请对外接口 * 来料检验申请对外接口
* 业务规则 * 业务规则
@ -957,11 +954,7 @@ public class IncomingInspectionTaskControllerService {
updateWrapper.update(); updateWrapper.update();
if (task.getInspectionResult()) { issueTicketControllerService.initiate(task.getId());
wmsIncomingInspectionTaskCallbackService.process(task.getId(), (short) 0);
} else {
issueTicketControllerService.initiate(task.getId());
}
} }
/** /**

View File

@ -57,9 +57,6 @@ public class QmsIssueTicketControllerService {
@Resource @Resource
private QmsIssueTicketProcessControllerService issueTicketProcessControllerService; private QmsIssueTicketProcessControllerService issueTicketProcessControllerService;
@Resource
private WmsIncomingInspectionTaskCallbackService wmsIncomingInspectionTaskCallbackService;
/** /**
* 审核质量问题工单 * 审核质量问题工单
* 更新审批状态审批意见审批人信息事故类型并更新工单状态 * 更新审批状态审批意见审批人信息事故类型并更新工单状态
@ -91,8 +88,6 @@ public class QmsIssueTicketControllerService {
.setApprovalTime(now); .setApprovalTime(now);
issueTicketService.updateById(entity); issueTicketService.updateById(entity);
wmsIncomingInspectionTaskCallbackService.processAsync(entity.getSourceId(), request.getApprovalStatus());
} }
/** /**

View File

@ -1,9 +1,7 @@
package com.nflg.qms.admin.service; package com.nflg.qms.admin.service;
import cn.dev33.satoken.stp.StpUtil;
import cn.hutool.json.JSONUtil; import cn.hutool.json.JSONUtil;
import com.nflg.wms.common.pojo.ApiResult; import com.nflg.wms.common.pojo.ApiResult;
import com.nflg.wms.common.util.UserUtil;
import com.nflg.wms.common.util.VUtil; import com.nflg.wms.common.util.VUtil;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
@ -35,6 +33,7 @@ public class WmsApiService {
/** /**
* 向WMS系统发送POST请求 * 向WMS系统发送POST请求
*
* @param path 接口路径 * @param path 接口路径
* @param body 请求体 * @param body 请求体
* @param bizDesc 业务描述用于日志和异常提示 * @param bizDesc 业务描述用于日志和异常提示
@ -46,7 +45,6 @@ public class WmsApiService {
HttpHeaders headers = new HttpHeaders(); HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON); headers.setContentType(MediaType.APPLICATION_JSON);
headers.add("Authorization", StpUtil.getTokenValue());
HttpEntity<T> requestEntity = new HttpEntity<>(body, headers); HttpEntity<T> requestEntity = new HttpEntity<>(body, headers);
log.info("{}URL: {},数据: {}", bizDesc, fullUrl, JSONUtil.toJsonStr(body)); log.info("{}URL: {},数据: {}", bizDesc, fullUrl, JSONUtil.toJsonStr(body));

View File

@ -1,19 +1,14 @@
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;
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;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.List; import java.util.List;
@ -43,7 +38,8 @@ public class WmsIncomingInspectionTaskCallbackService {
/** /**
* 向WMS系统发送来料检验任务回调 * 向WMS系统发送来料检验任务回调
*/ */
private void incoming(QmsIncomingInspectionTaskVO taskVO, Short processingResult) { public void incoming(Long taskId) {
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,12 +55,11 @@ public class WmsIncomingInspectionTaskCallbackService {
.setQualifiedQty(taskVO.getQualifiedQty()) .setQualifiedQty(taskVO.getQualifiedQty())
.setUnqualifiedQty(taskVO.getUnqualifiedQty()) .setUnqualifiedQty(taskVO.getUnqualifiedQty())
.setInspectionResult(taskVO.getInspectionResult()) .setInspectionResult(taskVO.getInspectionResult())
.setPurchaseGroup(taskVO.getPurchaseGroup()) .setPurchaseGroup(taskVO.getPurchaseGroup());
.setProcessingResult(processingResult);
List<QmsIncomingInspectionTaskRecord> records = incomingInspectionTaskRecordService.lambdaQuery() List<QmsIncomingInspectionTaskRecord> records = incomingInspectionTaskRecordService.lambdaQuery()
.select(QmsIncomingInspectionTaskRecord::getMaterialUniqueNo, QmsIncomingInspectionTaskRecord::getQualified) .select(QmsIncomingInspectionTaskRecord::getMaterialUniqueNo, QmsIncomingInspectionTaskRecord::getQualified)
.eq(QmsIncomingInspectionTaskRecord::getTaskId, taskVO.getId()) .eq(QmsIncomingInspectionTaskRecord::getTaskId, taskId)
.list(); .list();
qo.setQualifiedMaterialUniqueNo(records.stream() qo.setQualifiedMaterialUniqueNo(records.stream()
.filter(QmsIncomingInspectionTaskRecord::getQualified) .filter(QmsIncomingInspectionTaskRecord::getQualified)
@ -77,25 +72,14 @@ public class WmsIncomingInspectionTaskCallbackService {
.toList() .toList()
); );
boolean callbackResult = true; wmsApiService.post(incomingUrl, qo, "来料检验任务回调WMS");
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系统发送库存检验任务回调
*/ */
private void inventory(QmsIncomingInspectionTaskVO taskVO, Short processingResult) { public void inventory(Long taskId) {
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())
@ -106,12 +90,11 @@ public class WmsIncomingInspectionTaskCallbackService {
.setInspectionQty(taskVO.getInspectionQty()) .setInspectionQty(taskVO.getInspectionQty())
.setQualifiedQty(taskVO.getQualifiedQty()) .setQualifiedQty(taskVO.getQualifiedQty())
.setUnqualifiedQty(taskVO.getUnqualifiedQty()) .setUnqualifiedQty(taskVO.getUnqualifiedQty())
.setInspectionResult(taskVO.getInspectionResult()) .setInspectionResult(taskVO.getInspectionResult());
.setProcessingResult(processingResult);
List<QmsIncomingInspectionTaskRecord> records = incomingInspectionTaskRecordService.lambdaQuery() List<QmsIncomingInspectionTaskRecord> records = incomingInspectionTaskRecordService.lambdaQuery()
.select(QmsIncomingInspectionTaskRecord::getMaterialUniqueNo, QmsIncomingInspectionTaskRecord::getQualified) .select(QmsIncomingInspectionTaskRecord::getMaterialUniqueNo, QmsIncomingInspectionTaskRecord::getQualified)
.eq(QmsIncomingInspectionTaskRecord::getTaskId, taskVO.getId()) .eq(QmsIncomingInspectionTaskRecord::getTaskId, taskId)
.list(); .list();
qo.setQualifiedMaterialUniqueNo(records.stream() qo.setQualifiedMaterialUniqueNo(records.stream()
.filter(QmsIncomingInspectionTaskRecord::getQualified) .filter(QmsIncomingInspectionTaskRecord::getQualified)
@ -124,49 +107,6 @@ public class WmsIncomingInspectionTaskCallbackService {
.toList() .toList()
); );
boolean callbackResult = true; wmsApiService.post(inventoryUrl, qo, "库存检验任务回调WMS");
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();
}
}
/**
* WMS系统来料检验任务回调
* @param taskId 来料检验任务ID
* @param processingResult 处理结果0=通过3=报废4=维修5=挑选使用6=让渡使用
*/
@Async("wmsCallbackExecutor")
public void processAsync(Long taskId, Short processingResult) {
process(taskId, processingResult);
}
/**
* WMS系统来料检验任务回调
* @param taskId 来料检验任务ID
* @param processingResult 处理结果0=通过3=报废4=维修5=挑选使用6=让渡使用
*/
public void process(Long taskId, Short processingResult) {
QmsIncomingInspectionTaskVO taskVO = incomingInspectionTaskService.getDetail(taskId);
VUtil.trueThrowBusinessError(taskVO.getCallbackResult()).throwMessage("请勿重复回调");
switch (taskVO.getInspectionType()) {
case 1:
incoming(taskVO,processingResult);
break;
case 2:
inventory(taskVO,processingResult);
break;
default:
VUtil.trueThrowBusinessError(true).throwMessage("无效的检验类型:" + taskVO.getInspectionType());
break;
}
} }
} }

View File

@ -84,11 +84,6 @@ public class WmsIncomingInspectionTaskCallbackQO {
*/ */
private String purchaseGroup; private String purchaseGroup;
/**
* 处理结果0=通过3=报废4=维修5=挑选使用6=让渡使用
*/
private Short processingResult = 0;
/** /**
* 合格物料唯一编号列表 * 合格物料唯一编号列表
*/ */

View File

@ -59,11 +59,6 @@ public class WmsInventoryInspectionTaskCallbackQO {
*/ */
private Boolean inspectionResult; private Boolean inspectionResult;
/**
* 处理结果0=通过3=报废4=维修5=挑选使用6=让渡使用
*/
private Short processingResult = 0;
/** /**
* 合格物料唯一编号列表 * 合格物料唯一编号列表
*/ */

View File

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

View File

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

View File

@ -4,42 +4,40 @@
<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
@ -211,8 +209,7 @@
t.purchase_group, t.purchase_group,
t.warehouse, t.warehouse,
t.storage_location, t.storage_location,
t.storage_days, t.storage_days
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