排产后关闭erp订单

liweidong
李涛 2 days ago
parent 8dd0d55f5e
commit b5491feb4e
  1. 10
      blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataProduceClient.java
  2. 5
      blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataProduceClientFallback.java
  3. 5
      blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/feign/ErpDataProduceClient.java
  4. 2
      blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/IErpDataProduceService.java
  5. 42
      blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/impl/ErpDataProduceServiceImpl.java
  6. 8
      blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/WorkOrderServiceImpl.java

@ -52,6 +52,7 @@ public interface IErpDataProduceClient {
String SELECT_MAX_WOTOTQTY_BY_WONO = API_PREFIX + "/selectMaxWototqtyByWono"; String SELECT_MAX_WOTOTQTY_BY_WONO = API_PREFIX + "/selectMaxWototqtyByWono";
String SELECT_MAX_WOCLSTOTQTY_BY_WONO = API_PREFIX + "/selectMaxWoclstotqtyByWono"; String SELECT_MAX_WOCLSTOTQTY_BY_WONO = API_PREFIX + "/selectMaxWoclstotqtyByWono";
String ERP_UPDATE_MAKE_QTY = API_PREFIX + "/erpUpdateMakeQty"; 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) @GetMapping(ERP_UPDATE_MAKE_QTY)
R<String> erpUpdateMakeQty(@RequestParam(value = "woCode") String woCode, @RequestParam(value = "memo", required = false) String memo, R<String> 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); @RequestParam(value = "qtyAfter") Double qtyAfter, @RequestParam(value = "userName", required = false) String userName);
@GetMapping(CLOSE_ERP_ORDER)
R<String> 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);
} }

@ -148,4 +148,9 @@ public class IErpDataProduceClientFallback implements IErpDataProduceClient {
return R.fail("获取数据失败"); return R.fail("获取数据失败");
} }
@Override
public R<String> closeErpOrder(String yoCode, String cardNo, String batchNo, String ldapName, Double recQty, String woCode, String recseqno) {
return R.fail("获取数据失败");
}
} }

@ -157,5 +157,10 @@ public class ErpDataProduceClient implements IErpDataProduceClient {
return R.data(erpDataProduceService.erpUpdateMakeQty(woCode, memo, qtyAfter, userName)); return R.data(erpDataProduceService.erpUpdateMakeQty(woCode, memo, qtyAfter, userName));
} }
@Override
public R<String> 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));
}
} }

@ -72,4 +72,6 @@ public interface IErpDataProduceService {
Double selectMaxWoclstotqtyByWono(String code); Double selectMaxWoclstotqtyByWono(String code);
String erpUpdateMakeQty(String woCode, String memo, Double qtyAfter, String userName); 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);
} }

@ -625,4 +625,46 @@ public class ErpDataProduceServiceImpl implements IErpDataProduceService {
} }
return excflag; 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<String, Object> 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<String, Object> 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;
}
} }

@ -50,6 +50,7 @@ import org.springblade.desk.dashboard.constant.DsPartConstant;
import org.springblade.desk.dashboard.pojo.entity.DsPartVersionEntity; import org.springblade.desk.dashboard.pojo.entity.DsPartVersionEntity;
import org.springblade.desk.order.pojo.enums.YieldOrderEnum; import org.springblade.desk.order.pojo.enums.YieldOrderEnum;
import org.springblade.desk.produce.feign.IDisTaskingClient; import org.springblade.desk.produce.feign.IDisTaskingClient;
import org.springblade.erpdata.feign.IErpDataProduceClient;
import org.springblade.scheduling.pojo.entity.*; import org.springblade.scheduling.pojo.entity.*;
import org.springblade.scheduling.pojo.enums.WorkOrderEnum; import org.springblade.scheduling.pojo.enums.WorkOrderEnum;
import org.springblade.scheduling.pojo.vo.WorkOrderVO; import org.springblade.scheduling.pojo.vo.WorkOrderVO;
@ -116,6 +117,8 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
private final IDisTaskingClient disTaskingClient; private final IDisTaskingClient disTaskingClient;
@Resource @Resource
private final StGlassCakeOutClient glassCakeOutClient; private final StGlassCakeOutClient glassCakeOutClient;
@Resource
private IErpDataProduceClient erpDataProduceClient;
@Value("${business.oldMes.url}") @Value("${business.oldMes.url}")
private String oldMesUrl; private String oldMesUrl;
@ -1060,6 +1063,11 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
workOrderList.add(workOrder); workOrderList.add(workOrder);
//生成生产运行记录 //生成生产运行记录
disTaskingClient.saveWorkOrderRun(workOrder.getId().toString()); disTaskingClient.saveWorkOrderRun(workOrder.getId().toString());
// 关闭erp订单
if (StringUtils.isNotBlank(order.getManualIncrease()) && "0".equals(order.getManualIncrease())) {
erpDataProduceClient.closeErpOrder(order.getYoCode(), order.getCardNo(), order.getBatchNo(),
AuthUtil.getUserName(), Double.valueOf(order.getYpQty()), workOrder.getWoCode(), order.getRecseqNo());
}
if(order.getYieldType() == YieldOrderEnum.YIELD_TYPE_3.getCode()){ if(order.getYieldType() == YieldOrderEnum.YIELD_TYPE_3.getCode()){
StGlassCakeOutDTO glassDto = new StGlassCakeOutDTO(); StGlassCakeOutDTO glassDto = new StGlassCakeOutDTO();
glassDto.setCardNo(workOrder.getCardNo()); glassDto.setCardNo(workOrder.getCardNo());

Loading…
Cancel
Save