diff --git a/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataProduceClient.java b/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataProduceClient.java index 0848e2ad1..d92c32873 100644 --- a/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataProduceClient.java +++ b/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataProduceClient.java @@ -52,6 +52,7 @@ public interface IErpDataProduceClient { String SELECT_MAX_WOTOTQTY_BY_WONO = API_PREFIX + "/selectMaxWototqtyByWono"; String SELECT_MAX_WOCLSTOTQTY_BY_WONO = API_PREFIX + "/selectMaxWoclstotqtyByWono"; String ERP_UPDATE_MAKE_QTY = API_PREFIX + "/erpUpdateMakeQty"; + String CLOSE_ERP_ORDER = API_PREFIX + "/closeErpOrder"; /** * 缺件申报-通过零件号获取批次号 @@ -249,4 +250,13 @@ public interface IErpDataProduceClient { @GetMapping(ERP_UPDATE_MAKE_QTY) R erpUpdateMakeQty(@RequestParam(value = "woCode") String woCode, @RequestParam(value = "memo", required = false) String memo, @RequestParam(value = "qtyAfter") Double qtyAfter, @RequestParam(value = "userName", required = false) String userName); + + @GetMapping(CLOSE_ERP_ORDER) + R closeErpOrder(@RequestParam(value = "yoCode", required = false) String yoCode, + @RequestParam(value = "cardNo", required = false) String cardNo, + @RequestParam(value = "batchNo", required = false) String batchNo, + @RequestParam(value = "ldapName", required = false) String ldapName, + @RequestParam(value = "recQty", required = false) Double recQty, + @RequestParam(value = "woCode", required = false) String woCode, + @RequestParam(value = "recseqno", required = false) String recseqno); } diff --git a/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataProduceClientFallback.java b/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataProduceClientFallback.java index 1e93d8dfb..cb92a044e 100644 --- a/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataProduceClientFallback.java +++ b/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataProduceClientFallback.java @@ -148,4 +148,9 @@ public class IErpDataProduceClientFallback implements IErpDataProduceClient { return R.fail("获取数据失败"); } + @Override + public R closeErpOrder(String yoCode, String cardNo, String batchNo, String ldapName, Double recQty, String woCode, String recseqno) { + return R.fail("获取数据失败"); + } + } diff --git a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/feign/ErpDataProduceClient.java b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/feign/ErpDataProduceClient.java index aafe553c4..481cc4168 100644 --- a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/feign/ErpDataProduceClient.java +++ b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/feign/ErpDataProduceClient.java @@ -157,5 +157,10 @@ public class ErpDataProduceClient implements IErpDataProduceClient { return R.data(erpDataProduceService.erpUpdateMakeQty(woCode, memo, qtyAfter, userName)); } + @Override + public R closeErpOrder(String yoCode, String cardNo, String batchNo, String ldapName, Double recQty, String woCode, String recseqno) { + return R.data(erpDataProduceService.closeErpOrder(yoCode, cardNo, batchNo, ldapName, recQty, woCode, recseqno)); + } + } diff --git a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/IErpDataProduceService.java b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/IErpDataProduceService.java index 448664079..70b347887 100644 --- a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/IErpDataProduceService.java +++ b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/IErpDataProduceService.java @@ -72,4 +72,6 @@ public interface IErpDataProduceService { Double selectMaxWoclstotqtyByWono(String code); String erpUpdateMakeQty(String woCode, String memo, Double qtyAfter, String userName); + + String closeErpOrder(String yoCode, String cardNo, String batchNo, String ldapName, Double recQty, String woCode, String recseqno); } diff --git a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/impl/ErpDataProduceServiceImpl.java b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/impl/ErpDataProduceServiceImpl.java index f2a411182..615a48f5a 100644 --- a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/impl/ErpDataProduceServiceImpl.java +++ b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/impl/ErpDataProduceServiceImpl.java @@ -625,4 +625,46 @@ public class ErpDataProduceServiceImpl implements IErpDataProduceService { } return excflag; } + + @Override + public String closeErpOrder(String yoCode, String cardNo, String batchNo, String ldapName, Double recQty, String woCode, String recseqno) { + SimpleJdbcCall jdbcCall = new SimpleJdbcCall(jdbcTemplate) + // 指定存储过程名(包含 DB Link) + .withProcedureName("dba_mgr.pro_rbtransferrec") + // 建议关闭元数据访问(通过 DB Link 访问时可避免权限/性能问题) + .withoutProcedureColumnMetaDataAccess() + // 显式声明参数 + .declareParameters( + new SqlParameter("v_sono", Types.VARCHAR), + new SqlParameter("v_rouclp", Types.VARCHAR), + new SqlParameter("v_splcode", Types.VARCHAR), + new SqlParameter("v_recman", Types.VARCHAR), + new SqlParameter("v_recqty", Types.DOUBLE), + new SqlParameter("v_recdate", Types.DATE), + new SqlParameter("v_recsono", Types.VARCHAR), + new SqlParameter("v_seqno", Types.VARCHAR), + new SqlOutParameter("v_excnote", Types.VARCHAR), + new SqlOutParameter("v_excflag", Types.VARCHAR) + ); + // 2. 封装输入参数 + Map inParams = new HashMap<>(); + inParams.put("v_sono", yoCode); + inParams.put("v_rouclp", cardNo); + inParams.put("v_splcode", batchNo); + inParams.put("v_recman", ldapName); + inParams.put("v_recqty", recQty); + inParams.put("v_recdate", new Date()); + inParams.put("v_recsono", woCode); + inParams.put("v_seqno", recseqno == null ? "" : recseqno); + // 3. 执行并获取结果 Map + Map resultMap = jdbcCall.execute(inParams); + + // 4. 提取输出参数 + String excflag = (String) resultMap.get("v_excflag"); + String excnote = (String) resultMap.get("v_excnote"); + if ("0".equals(excflag)) { + throw new ServiceException("大仓接收关闭erp订单接口失败:" + excnote); + } + return excflag; + } } diff --git a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/WorkOrderServiceImpl.java b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/WorkOrderServiceImpl.java index 3b802c01c..e8fb7febd 100644 --- a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/WorkOrderServiceImpl.java +++ b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/WorkOrderServiceImpl.java @@ -50,6 +50,7 @@ import org.springblade.desk.dashboard.constant.DsPartConstant; import org.springblade.desk.dashboard.pojo.entity.DsPartVersionEntity; import org.springblade.desk.order.pojo.enums.YieldOrderEnum; import org.springblade.desk.produce.feign.IDisTaskingClient; +import org.springblade.erpdata.feign.IErpDataProduceClient; import org.springblade.scheduling.pojo.entity.*; import org.springblade.scheduling.pojo.enums.WorkOrderEnum; import org.springblade.scheduling.pojo.vo.WorkOrderVO; @@ -116,6 +117,8 @@ public class WorkOrderServiceImpl extends BaseServiceImpl