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