Browse Source

2025-12-29

优化
master
fengyuan_yang 2 weeks ago
parent
commit
4faa3ba327
  1. 2
      src/main/java/com/gaotao/modules/oa/dto/ProductionOrderItemDto.java
  2. 2
      src/main/java/com/gaotao/modules/production/controller/ProductionIssueReturnController.java
  3. 125
      src/main/java/com/gaotao/modules/production/service/impl/ProductionIssueReturnServiceImpl.java

2
src/main/java/com/gaotao/modules/oa/dto/ProductionOrderItemDto.java

@ -120,7 +120,7 @@ public class ProductionOrderItemDto {
/**
* 客户编码
*/
@NotBlank(message = "客户编码不能为空")
// @NotBlank(message = "客户编码不能为空")
private String customerId;
/**

2
src/main/java/com/gaotao/modules/production/controller/ProductionIssueReturnController.java

@ -272,7 +272,7 @@ public class ProductionIssueReturnController {
} catch (Exception e) {
logger.error("确认保存失败", e);
return R.error("保存失败: " + e.getMessage());
return R.error(e.getMessage());
}
}

125
src/main/java/com/gaotao/modules/production/service/impl/ProductionIssueReturnServiceImpl.java

@ -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);
}
}

Loading…
Cancel
Save