整单外协订单接收同步erp、协作外协订单接收同步erp

liweidong
qinyulong 3 weeks ago
parent 00e7859890
commit 90770d318e
  1. 61
      blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataOemClient.java
  2. 10
      blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataOemClientFallback.java
  3. 15
      blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/feign/ErpDataOemClientImpl.java
  4. 47
      blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/IErpDataOemService.java
  5. 171
      blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/impl/ErpDataOemServiceImpl.java

@ -12,6 +12,8 @@ import org.springframework.cloud.openfeign.SpringQueryMap;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.Date;
/**
* 外协相关erp操作Feign接口类
*
@ -27,6 +29,8 @@ public interface IErpDataOemClient {
String API_PREFIX = "/feign/erpdata/oem";
String CLOSE_ERP_ORDER = API_PREFIX + "/closeErpOrder";
String PRICE_SHEET_DATA = API_PREFIX + "/priceSheetData";
String FULL_ORDER_OUTSOURCING = API_PREFIX + "/fullOrderOutsourcing";
String COLLABORATIVE_OUTSOURCING = API_PREFIX + "/collaborativeOutsourcing";
/**
* 关闭erp外协订单
@ -45,4 +49,61 @@ public interface IErpDataOemClient {
@GetMapping(PRICE_SHEET_DATA)
R<Page<PriceSheetVO>> priceSheetData(@SpringQueryMap PriceSheetQuery priceSheetQuery, @SpringQueryMap Query query);
/**
* 协作外协订单接收
*
* @param v_prtno 物料号
* @param v_prtlotno 质量等级
* @param v_splcode 批次号
* @param v_splycode 外协厂家
* @param v_seqcc 工序代码
* @param v_sono 车间订单号
* @param v_planner 计划员
* @param v_pedate 计划完成时间 yyyy-MM-dd HH:mm:ss
* @param v_woporqty 下达数量
* @param v_pricetype 加工类型
* @param v_excnote 返回结果 OUT游标参数非必填
* @param v_excflag 返回状态 OUT游标参数非必填
* @param v_old_wono 老系统生成的外协订单号 OUT游标参数非必填
*/
@GetMapping(FULL_ORDER_OUTSOURCING)
R fullOrderOutsourcing(@RequestParam("v_prtno") String v_prtno, @RequestParam("v_prtlotno") String v_prtlotno, @RequestParam("v_splcode") String v_splcode,
@RequestParam("v_splycode") String v_splycode, @RequestParam("v_seqcc") String v_seqcc, @RequestParam("v_sono") String v_sono,
@RequestParam("v_planner") String v_planner, @RequestParam("v_pedate") String v_pedate, @RequestParam("v_woporqty") Long v_woporqty,
@RequestParam("v_pricetype") String v_pricetype, @RequestParam(value = "v_excnote", defaultValue = "", required = false) String v_excnote, @RequestParam(value = "v_excflag", defaultValue = "", required = false) String v_excflag,
@RequestParam(value = "v_old_wono", defaultValue = "", required = false) String v_old_wono);
/**
* 整单外协订单接收
*
* @param v_prtno 物料号
* @param v_prtlotno 质量等级
* @param v_woreqdat 需求日期 yyyy-MM-dd HH:mm:ss
* @param v_woporqty 下达数量
* @param v_usedeptcode 使用部门代码 非必填
* @param v_usedept 使用部门 非必填
* @param v_splcode 批次号
* @param v_splycode 外协厂家
* @param v_kdofplat 镀钟
* @param v_wono 工作订单号
* @param v_sono 车间订单号
* @param v_mtnman 外协订单下达人
* @param v_planner 计划员
* @param v_yardman 调度员
* @param v_roam_no B号
* @param v_craft_no C号
* @param v_craft_id 零件工艺ID
* @param v_old_wono 老系统生成的外协订单号 OUT游标参数非必填
* @param v_excnote 返回结果 OUT游标参数非必填
* @param v_excflag 返回状态 OUT游标参数非必填
*/
@GetMapping(COLLABORATIVE_OUTSOURCING)
R collaborativeOutsourcing(@RequestParam("v_prtno") String v_prtno, @RequestParam("v_prtlotno") String v_prtlotno, @RequestParam("v_woreqdat") String v_woreqdat,
@RequestParam("v_woporqty") Long v_woporqty, @RequestParam(value = "v_usedeptcode", required = false) String v_usedeptcode, @RequestParam(value = "v_usedept", required = false) String v_usedept,
@RequestParam("v_splcode") String v_splcode, @RequestParam("v_splycode") String v_splycode, @RequestParam("v_kdofplat") String v_kdofplat,
@RequestParam("v_wono") String v_wono, @RequestParam("v_sono") String v_sono, @RequestParam("v_mtnman") String v_mtnman,
@RequestParam("v_planner") String v_planner, @RequestParam("v_yardman") String v_yardman, @RequestParam("v_roam_no") String v_roam_no, @RequestParam("v_craft_no") String v_craft_no,
@RequestParam("v_craft_id") Long v_craft_id, @RequestParam(value = "v_old_wono", defaultValue = "", required = false) String v_old_wono, @RequestParam(value = "v_excnote", defaultValue = "", required = false) String v_excnote,
@RequestParam(value = "v_excflag", defaultValue = "", required = false) String v_excflag);
}

@ -26,4 +26,14 @@ public class IErpDataOemClientFallback implements IErpDataOemClient {
return R.fail("查询报价单 失败");
}
@Override
public R fullOrderOutsourcing(String v_prtno, String v_prtlotno, String v_splcode, String v_splycode, String v_seqcc, String v_sono, String v_planner, String v_pedate, Long v_woporqty, String v_pricetype, String v_excnote, String v_excflag, String v_old_wono) {
return R.fail("协作外协订单接收 失败");
}
@Override
public R collaborativeOutsourcing(String v_prtno, String v_prtlotno, String v_woreqdat, Long v_woporqty, String v_usedeptcode, String v_usedept, String v_splcode, String v_splycode, String v_kdofplat, String v_wono, String v_sono, String v_mtnman, String v_planner, String v_yardman, String v_roam_no, String v_craft_no, Long v_craft_id, String v_old_wono, String v_excnote, String v_excflag) {
return R.fail("整单外协订单接收 失败");
}
}

@ -10,6 +10,7 @@ import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tenant.annotation.NonDS;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.DateUtil;
import org.springblade.desk.oem.pojo.request.PriceSheetQuery;
import org.springblade.desk.oem.pojo.vo.PriceSheetVO;
import org.springblade.erpdata.service.IErpDataOemService;
@ -17,6 +18,8 @@ import org.springframework.cloud.openfeign.SpringQueryMap;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Date;
/**
* 外协相关erp操作Feign实现类
@ -53,4 +56,16 @@ public class ErpDataOemClientImpl implements IErpDataOemClient {
return R.data(pages);
}
@Override
public R fullOrderOutsourcing(String v_prtno, String v_prtlotno, String v_splcode, String v_splycode, String v_seqcc, String v_sono, String v_planner, String v_pedate, Long v_woporqty, String v_pricetype, String v_excnote, String v_excflag, String v_old_wono) {
Date pedate = DateUtil.parse(v_pedate, "yyyy-MM-dd HH:mm:ss");
return erpDataOemService.fullOrderOutsourcing(v_prtno, v_prtlotno, v_splcode, v_splycode, v_seqcc, v_sono, v_planner, pedate, v_woporqty, v_pricetype, v_excnote, v_excflag, v_old_wono);
}
@Override
public R collaborativeOutsourcing(String v_prtno, String v_prtlotno, String v_woreqdat, Long v_woporqty, String v_usedeptcode, String v_usedept, String v_splcode, String v_splycode, String v_kdofplat, String v_wono, String v_sono, String v_mtnman, String v_planner, String v_yardman, String v_roam_no, String v_craft_no, Long v_craft_id, String v_old_wono, String v_excnote, String v_excflag) {
Date woreqdat = DateUtil.parse(v_woreqdat, "yyyy-MM-dd HH:mm:ss");
return erpDataOemService.collaborativeOutsourcing(v_prtno, v_prtlotno, woreqdat, v_woporqty, v_usedeptcode, v_usedept, v_splcode, v_splycode, v_kdofplat, v_wono, v_sono, v_mtnman, v_planner, v_yardman, v_roam_no, v_craft_no, v_craft_id, v_old_wono, v_excnote, v_excflag);
}
}

@ -1,9 +1,12 @@
package org.springblade.erpdata.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.tool.api.R;
import org.springblade.desk.oem.pojo.request.PriceSheetQuery;
import org.springblade.desk.oem.pojo.vo.PriceSheetVO;
import java.util.Date;
/**
* 外协相关erp操作service
*
@ -29,4 +32,48 @@ public interface IErpDataOemService {
*/
IPage<PriceSheetVO> priceSheetData(IPage<PriceSheetVO> page, PriceSheetQuery priceSheetQuery);
/**
* 协作外协订单接收
*
* @param v_prtno 物料号
* @param v_prtlotno 质量等级
* @param v_splcode 批次号
* @param v_splycode 外协厂家
* @param v_seqcc 工序代码
* @param v_sono 车间订单号
* @param v_planner 计划员
* @param v_pedate 计划完成时间
* @param v_woporqty 下达数量
* @param v_pricetype 加工类型
* @param v_excnote 返回结果
* @param v_excflag 返回状态
* @param v_old_wono 老系统生成的外协订单号
*/
R fullOrderOutsourcing(String v_prtno, String v_prtlotno, String v_splcode, String v_splycode, String v_seqcc, String v_sono, String v_planner, Date v_pedate, Long v_woporqty, String v_pricetype, String v_excnote, String v_excflag, String v_old_wono);
/**
* 整单外协订单接收
*
* @param v_prtno 物料号
* @param v_prtlotno 质量等级
* @param v_woreqdat 需求日期
* @param v_woporqty 下达数量
* @param v_usedeptcode 使用部门代码
* @param v_usedept 使用部门
* @param v_splcode 批次号
* @param v_splycode 外协厂家
* @param v_kdofplat 镀钟
* @param v_wono 工作订单号
* @param v_sono 车间订单号
* @param v_mtnman 外协订单下达人
* @param v_planner 计划员
* @param v_yardman 调度员
* @param v_roam_no B号
* @param v_craft_no C号
* @param v_craft_id 零件工艺ID
* @param v_old_wono 老系统生成的外协订单号
* @param v_excnote 返回结果
* @param v_excflag 返回状态
*/
R collaborativeOutsourcing(String v_prtno, String v_prtlotno, Date v_woreqdat, Long v_woporqty, String v_usedeptcode, String v_usedept, String v_splcode, String v_splycode, String v_kdofplat, String v_wono, String v_sono, String v_mtnman, String v_planner, String v_yardman, String v_roam_no, String v_craft_no, Long v_craft_id, String v_old_wono, String v_excnote, String v_excflag);
}

@ -3,6 +3,8 @@ package org.springblade.erpdata.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import oracle.jdbc.internal.OracleTypes;
import org.springblade.core.tool.api.R;
import org.springblade.desk.oem.pojo.request.PriceSheetQuery;
import org.springblade.desk.oem.pojo.vo.PriceSheetVO;
import org.springblade.erpdata.mapper.ErpDataOemMapper;
@ -11,9 +13,9 @@ import org.springblade.erpdata.service.IErpDataOemService;
import org.springframework.stereotype.Service;
import javax.sql.DataSource;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.Timestamp;
import java.sql.*;
import java.util.*;
import java.util.Date;
/**
@ -58,4 +60,167 @@ public class ErpDataOemServiceImpl implements IErpDataOemService {
public IPage<PriceSheetVO> priceSheetData(IPage<PriceSheetVO> page, PriceSheetQuery priceSheetQuery) {
return page.setRecords(erpDataOemMapper.priceSheetData(page, priceSheetQuery));
}
@Override
public R fullOrderOutsourcing(String v_prtno, String v_prtlotno, String v_splcode, String v_splycode, String v_seqcc, String v_sono, String v_planner, Date v_pedate, Long v_woporqty, String v_pricetype, String v_excnote, String v_excflag, String v_old_wono) {
Map<String, Object> result = new HashMap<>();
String sql = "{call dba_mgr.pro_rbwxgensc(" +
"v_prtno => ?, " +
"v_prtlotno => ?, " +
"v_splcode => ?, " +
"v_splycode => ?, " +
"v_seqcc => ?, " +
"v_sono => ?, " +
"v_planner => ?, " +
"v_pedate => ?, " +
"v_woporqty => ?, " +
"v_pricetype => ?, " +
"v_excnote => ?, " +
"v_excflag => ?, " +
"v_old_wono => ?)}";
try (Connection conn = dataSource.getConnection();
CallableStatement cs = conn.prepareCall(sql)) {
// 设置输入参数
cs.setString(1, v_prtno);
cs.setString(2, v_prtlotno);
cs.setString(3, v_splcode);
cs.setString(4, v_splycode);
cs.setString(5, v_seqcc);
cs.setString(6, v_sono);
cs.setString(7, v_planner);
cs.setDate(8, new java.sql.Date(v_pedate.getTime()));
cs.setLong(9, v_woporqty);
cs.setString(10, v_pricetype);
// 注册游标OUT参数
cs.registerOutParameter(11, OracleTypes.CURSOR);
cs.registerOutParameter(12, OracleTypes.CURSOR);
cs.registerOutParameter(13, OracleTypes.CURSOR);
log.debug("协作外协订单接收存储过程输入参数: v_prtno={}, v_prtlotno={}, v_splcode={}, v_splycode={}, v_seqcc={}, " +
"v_sono={}, v_planner={}, v_pedate={}, v_woporqty={}, v_pricetype={}, " +
"v_excnote={}, v_excflag={}, v_old_wono={}",
v_prtno, v_prtlotno, v_splcode, v_splycode, v_seqcc,
v_sono, v_planner, v_pedate, v_woporqty, v_pricetype,
v_excnote, v_excflag, v_old_wono);
// 执行
cs.execute();
// 获取结果
List<Map<String, Object>> excnote = convertResultSetToList((ResultSet) cs.getObject(11));
List<Map<String, Object>> excflag = convertResultSetToList((ResultSet) cs.getObject(12));
List<Map<String, Object>> oldWoNo = convertResultSetToList((ResultSet) cs.getObject(13));
result.put("result", oldWoNo);
log.info("协作外协订单接收成功 - {}", result);
} catch (Exception e) {
log.error("协作外协订单接收失败", e);
return R.fail("协作外协订单接收失败");
}
return R.data(result);
}
@Override
public R collaborativeOutsourcing(String v_prtno, String v_prtlotno, Date v_woreqdat, Long v_woporqty, String v_usedeptcode, String v_usedept, String v_splcode, String v_splycode, String v_kdofplat, String v_wono, String v_sono, String v_mtnman, String v_planner, String v_yardman, String v_roam_no, String v_craft_no, Long v_craft_id, String v_old_wono, String v_excnote, String v_excflag) {
Map<String, Object> result = new HashMap<>();
// SQL语句,注意nvl函数的处理
String sql = "{call dba_mgr.pro_rbwxgen(" +
"v_prtno => ?, " +
"v_prtlotno => ?, " +
"v_woreqdat => ?, " +
"v_woporqty => ?, " +
"nvl(v_usedeptcode, v_usedept) => ?, " + // 注意:Java端需要处理这个逻辑
"v_splcode => ?, " +
"v_splycode => ?, " +
"v_kdofplat => ?, " +
"v_wono => ?, " +
"v_sono => ?, " +
"v_mtnman => ?, " +
"v_planner => ?, " +
"v_yardman => ?, " +
"v_roam_no => ?, " +
"v_craft_no => ?, " +
"v_craft_id => ?, " +
"v_old_wono => ?, " +
"v_excnote => ?, " +
"v_excflag => ?) }"; // 返回游标3
try (Connection conn = dataSource.getConnection();
CallableStatement cs = conn.prepareCall(sql)) {
// 设置输入参数
cs.setString(1, v_prtno);
cs.setString(2, v_prtlotno);
cs.setDate(3, v_woreqdat != null ? new java.sql.Date(v_woreqdat.getTime()) : null);
cs.setLong(4, v_woporqty);
// 处理 nvl(v_usedeptcode, v_usedept)
String deptValue = v_usedeptcode != null ? v_usedeptcode : v_usedept;
cs.setString(5, deptValue);
cs.setString(6, v_splcode);
cs.setString(7, v_splycode);
cs.setString(8, v_kdofplat);
cs.setString(9, v_wono);
cs.setString(10, v_sono);
cs.setString(11, v_mtnman);
cs.setString(12, v_planner);
cs.setString(13, v_yardman);
cs.setString(14, v_roam_no);
cs.setString(15, v_craft_no);
cs.setLong(16, v_craft_id);
// 注册游标OUT参数
cs.registerOutParameter(17, OracleTypes.CURSOR); // cursor1
cs.registerOutParameter(18, OracleTypes.CURSOR); // cursor2
cs.registerOutParameter(19, OracleTypes.CURSOR); // cursor3
log.debug("外协工单生成存储过程输入参数: v_prtno={}, v_prtlotno={}, v_woreqdat={}, v_woporqty={}, " +
"v_usedeptcode={}, v_usedept={}, v_splcode={}, v_splycode={}, v_kdofplat={}, " +
"v_wono={}, v_sono={}, v_mtnman={}, v_planner={}, v_yardman={}, v_roam_no={}, " +
"v_craft_no={}, v_craft_id={}, v_old_wono={}, v_excnote={}, v_excflag={}, deptValue={}",
v_prtno, v_prtlotno, v_woreqdat, v_woporqty,
v_usedeptcode, v_usedept, v_splcode, v_splycode, v_kdofplat,
v_wono, v_sono, v_mtnman, v_planner, v_yardman, v_roam_no,
v_craft_no, v_craft_id, v_old_wono, v_excnote, v_excflag, deptValue);
// 执行存储过程
cs.execute();
// 获取游标结果
List<Map<String, Object>> oldWoNo = convertResultSetToList((ResultSet) cs.getObject(17));
List<Map<String, Object>> excnote = convertResultSetToList((ResultSet) cs.getObject(18));
List<Map<String, Object>> excflag = convertResultSetToList((ResultSet) cs.getObject(19));
result.put("result", oldWoNo);
log.info("整单外协订单接收成功 - {}", result);
} catch (Exception e) {
log.error("整单外协订单接收失败", e);
return R.fail("整单外协订单接收失败");
}
return R.data(result);
}
/**
* 将ResultSet转换为List<Map>的通用方法
*/
private List<Map<String, Object>> convertResultSetToList(ResultSet rs) throws Exception {
List<Map<String, Object>> resultList = new ArrayList<>();
if (rs == null) {
return resultList;
}
ResultSetMetaData metaData = rs.getMetaData();
int columnCount = metaData.getColumnCount();
while (rs.next()) {
Map<String, Object> row = new LinkedHashMap<>();
for (int i = 1; i <= columnCount; i++) {
String columnName = metaData.getColumnLabel(i); // 使用别名或列名
Object value = rs.getObject(i);
row.put(columnName, value);
}
resultList.add(row);
}
return resultList;
}
}

Loading…
Cancel
Save