|
|
|
@ -1,5 +1,6 @@ |
|
|
|
package com.gaotao.modules.production.service.impl; |
|
|
|
|
|
|
|
import com.gaotao.modules.erp.service.ErpInterfaceService; |
|
|
|
import com.gaotao.modules.production.dao.ProductionIssueReturnMapper; |
|
|
|
import com.gaotao.modules.production.service.ProductionIssueReturnService; |
|
|
|
import com.gaotao.modules.production.vo.IssueReturnVO; |
|
|
|
@ -29,6 +30,9 @@ public class ProductionIssueReturnServiceImpl implements ProductionIssueReturnSe |
|
|
|
@Autowired |
|
|
|
private ProcedureMapper procedureMapper; |
|
|
|
|
|
|
|
@Autowired |
|
|
|
private ErpInterfaceService erpInterfaceService; |
|
|
|
|
|
|
|
@Override |
|
|
|
public List<Map<String, Object>> searchIssueOrders(String site, String buNo, String searchKey, Integer limit) { |
|
|
|
logger.info("搜索领料工单,站点: {}, BU: {}, 搜索关键词: {}, 限制数量: {}", site, buNo, searchKey, limit); |
|
|
|
@ -155,43 +159,118 @@ public class ProductionIssueReturnServiceImpl implements ProductionIssueReturnSe |
|
|
|
logger.info("确认保存生产领退料,站点: {}, BU: {}, 退库工单: {}, 领料工单: {}, 工序: {}, 库位: {}, 用户: {}", |
|
|
|
site, buNo, returnOrderNo, issueOrderNo, operationSeq, locationCode, userName); |
|
|
|
|
|
|
|
// 保存两次存储过程返回的结果,用于异步调用ERP接口 |
|
|
|
Map<String, Object> returnResult = null; |
|
|
|
Map<String, Object> issueResult = null; |
|
|
|
|
|
|
|
try { |
|
|
|
// 调用存储过程 GetSaveLabelVerification |
|
|
|
// EXEC GetSaveLabelVerification site, buNo, '', 退库工单, '', 领料工单, 工序号, 库位, '生产领退料', 当前登陆人 |
|
|
|
List<Object> params = new ArrayList<>(); |
|
|
|
params.add(site); // param1: site |
|
|
|
params.add(buNo); // param2: buNo |
|
|
|
params.add(""); // param3: 空 |
|
|
|
params.add(returnOrderNo); // param4: 退库工单 |
|
|
|
params.add(""); // param5: 空 |
|
|
|
params.add(issueOrderNo != null ? issueOrderNo : ""); // param6: 领料工单 |
|
|
|
params.add(operationSeq != null ? operationSeq : ""); // param7: 工序号 |
|
|
|
params.add(locationCode != null ? locationCode : ""); // param8: 库位 |
|
|
|
params.add("生产领退料"); // param9: 操作类型 |
|
|
|
params.add(userName); // param10: 当前登陆人 |
|
|
|
// ============================================================ |
|
|
|
// 第一步:调用存储过程 GetSaveLabelVerification,传 type = "生产退料" |
|
|
|
// ============================================================ |
|
|
|
logger.info("开始调用生产退料存储过程..."); |
|
|
|
List<Object> returnParams = new ArrayList<>(); |
|
|
|
returnParams.add(site); // param1: site |
|
|
|
returnParams.add(buNo); // param2: buNo |
|
|
|
returnParams.add(""); // param3: 空 |
|
|
|
returnParams.add(returnOrderNo); // param4: 退库工单 |
|
|
|
returnParams.add(""); // param5: 空 |
|
|
|
returnParams.add(issueOrderNo != null ? issueOrderNo : ""); // param6: 领料工单 |
|
|
|
returnParams.add(operationSeq != null ? operationSeq : ""); // param7: 工序号 |
|
|
|
returnParams.add(locationCode != null ? locationCode : ""); // param8: 库位 |
|
|
|
returnParams.add("生产领退料-退料"); // param9: 操作类型(生产退料) |
|
|
|
returnParams.add(userName); // param10: 当前登陆人 |
|
|
|
|
|
|
|
List<Map<String, Object>> resultList = procedureMapper.getProcedureData("GetSaveLabelVerification", params); |
|
|
|
List<Map<String, Object>> returnResultList = procedureMapper.getProcedureData("GetSaveLabelVerification", returnParams); |
|
|
|
|
|
|
|
// 取第一条结果 |
|
|
|
Map<String, Object> result = new HashMap<>(); |
|
|
|
if (resultList != null && !resultList.isEmpty()) { |
|
|
|
result = resultList.get(0); |
|
|
|
if (returnResultList != null && !returnResultList.isEmpty()) { |
|
|
|
returnResult = returnResultList.get(0); |
|
|
|
} else { |
|
|
|
returnResult = new HashMap<>(); |
|
|
|
} |
|
|
|
|
|
|
|
// 检查返回的code,如果不是200则抛出异常 |
|
|
|
Object code = result.get("code"); |
|
|
|
if (code == null || !"200".equals(code.toString())) { |
|
|
|
String msg = result.get("message") != null ? result.get("message").toString() : "保存失败"; |
|
|
|
logger.error("存储过程返回错误: {}", msg); |
|
|
|
Object returnCode = returnResult.get("code"); |
|
|
|
if (returnCode == null || !"200".equals(returnCode.toString())) { |
|
|
|
String msg = returnResult.get("message") != null ? returnResult.get("message").toString() : "生产退料保存失败"; |
|
|
|
logger.error("生产退料存储过程返回错误: {}", msg); |
|
|
|
throw new RuntimeException(msg); |
|
|
|
} |
|
|
|
logger.info("生产退料存储过程调用成功"); |
|
|
|
|
|
|
|
// ============================================================ |
|
|
|
// 第二步:调用存储过程 GetSaveLabelVerification,传 type = "生产领料" |
|
|
|
// ============================================================ |
|
|
|
logger.info("开始调用生产领料存储过程..."); |
|
|
|
List<Object> issueParams = new ArrayList<>(); |
|
|
|
issueParams.add(site); // param1: site |
|
|
|
issueParams.add(buNo); // param2: buNo |
|
|
|
issueParams.add(""); // param3: 空 |
|
|
|
issueParams.add(returnOrderNo); // param4: 退库工单 |
|
|
|
issueParams.add(""); // param5: 空 |
|
|
|
issueParams.add(issueOrderNo != null ? issueOrderNo : ""); // param6: 领料工单 |
|
|
|
issueParams.add(operationSeq != null ? operationSeq : ""); // param7: 工序号 |
|
|
|
issueParams.add(locationCode != null ? locationCode : ""); // param8: 库位 |
|
|
|
issueParams.add("生产领退料-领料"); // param9: 操作类型(生产领料) |
|
|
|
issueParams.add(userName); // param10: 当前登陆人 |
|
|
|
|
|
|
|
List<Map<String, Object>> issueResultList = procedureMapper.getProcedureData("GetSaveLabelVerification", issueParams); |
|
|
|
|
|
|
|
// 取第一条结果 |
|
|
|
if (issueResultList != null && !issueResultList.isEmpty()) { |
|
|
|
issueResult = issueResultList.get(0); |
|
|
|
} else { |
|
|
|
issueResult = new HashMap<>(); |
|
|
|
} |
|
|
|
|
|
|
|
// 检查返回的code,如果不是200则抛出异常 |
|
|
|
Object issueCode = issueResult.get("code"); |
|
|
|
if (issueCode == null || !"200".equals(issueCode.toString())) { |
|
|
|
String msg = issueResult.get("message") != null ? issueResult.get("message").toString() : "生产领料保存失败"; |
|
|
|
logger.error("生产领料存储过程返回错误: {}", msg); |
|
|
|
throw new RuntimeException(msg); |
|
|
|
} |
|
|
|
logger.info("生产领料存储过程调用成功"); |
|
|
|
|
|
|
|
// ============================================================ |
|
|
|
// 第三步:两次存储过程都成功后,异步调用ERP接口 |
|
|
|
// 先调用生产退料接口,再调用生产领料接口 |
|
|
|
// ============================================================ |
|
|
|
|
|
|
|
// 异步调用生产退料ERP接口 |
|
|
|
try { |
|
|
|
String returnSite = String.valueOf(returnResult.get("Site")); |
|
|
|
String returnBuNo = String.valueOf(returnResult.get("buNo")); |
|
|
|
String returnTransNo = String.valueOf(returnResult.get("transNo")); |
|
|
|
|
|
|
|
logger.info("生产退料存储过程执行成功,准备异步调用ERP接口,site={}, buNo={}, transNo={}", |
|
|
|
returnSite, returnBuNo, returnTransNo); |
|
|
|
|
|
|
|
erpInterfaceService.asyncCallErpInterface(returnSite, returnBuNo, returnTransNo); |
|
|
|
} catch (Exception e) { |
|
|
|
logger.error("异步调用生产退料ERP接口触发失败(不影响主流程),退库工单: {}, 错误: {}", returnOrderNo, e.getMessage(), e); |
|
|
|
} |
|
|
|
|
|
|
|
// 异步调用生产领料ERP接口 |
|
|
|
try { |
|
|
|
String issueSite = String.valueOf(issueResult.get("Site")); |
|
|
|
String issueBuNo = String.valueOf(issueResult.get("buNo")); |
|
|
|
String issueTransNo = String.valueOf(issueResult.get("transNo")); |
|
|
|
|
|
|
|
logger.info("生产领料存储过程执行成功,准备异步调用ERP接口,site={}, buNo={}, transNo={}", |
|
|
|
issueSite, issueBuNo, issueTransNo); |
|
|
|
|
|
|
|
erpInterfaceService.asyncCallErpInterface(issueSite, issueBuNo, issueTransNo); |
|
|
|
} catch (Exception e) { |
|
|
|
logger.error("异步调用生产领料ERP接口触发失败(不影响主流程),领料工单: {}, 错误: {}", issueOrderNo, e.getMessage(), e); |
|
|
|
} |
|
|
|
|
|
|
|
logger.info("确认保存成功"); |
|
|
|
logger.info("确认保存生产领退料成功"); |
|
|
|
return true; |
|
|
|
|
|
|
|
} catch (Exception e) { |
|
|
|
logger.error("确认保存失败,错误信息: {}", e.getMessage(), e); |
|
|
|
throw new RuntimeException("确认保存失败: " + e.getMessage(), e); |
|
|
|
throw new RuntimeException(e.getMessage(), e); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|