You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

872 lines
42 KiB

1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
7 months ago
1 year ago
1 year ago
1 year ago
1 year ago
7 months ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
  1. package com.spring.ifs.api;
  2. import com.spring.ifs.data.*;
  3. import com.spring.ifs.utils.IfsConverterToMap;
  4. import com.spring.ifs.utils.IfsPlsqlUtils;
  5. import com.spring.modules.base.utils.DateUtils;
  6. import com.spring.modules.part.entity.APIEntity.BomIfsAlternative;
  7. import com.spring.modules.part.entity.APIEntity.BomIfsHeader;
  8. import com.spring.modules.part.entity.APIEntity.BomIfsItem;
  9. import com.spring.modules.part.entity.APIEntity.BomIfsManufStructCostDistrib;
  10. import ifs.fnd.ap.*;
  11. import java.math.BigDecimal;
  12. import java.util.*;
  13. /**
  14. * @description: Bom的api
  15. * @author LR
  16. * @date 2024/12/9 10:56
  17. * @version 1.0
  18. */
  19. public class BomApi {
  20. /**
  21. * @description: 查询Bom Header
  22. * @author LR
  23. * @date 2024/12/11 14:45
  24. * @version 1.0
  25. */
  26. public static Map<String, String> getBomHeader(Server srv, String contract, String partNo, String engChgLevel, String bomType) throws APException {
  27. StringBuilder searchSql = new StringBuilder();
  28. searchSql.append("SELECT OBJID ifsRowId, OBJVERSION ifsRowVersion,");
  29. searchSql.append(" CONTRACT, PART_NO, BOM_TYPE, ENG_CHG_LEVEL, NOTE_TEXT");
  30. searchSql.append(" FROM IFSAPP.PROD_STRUCTURE_HEAD");
  31. searchSql.append(" WHERE CONTRACT = :contract AND PART_NO = :partNo AND ENG_CHG_LEVEL = :engChgLevel AND BOM_TYPE = :bomType");
  32. //设置查询的入参
  33. Map<String, String> inParam = new HashMap<>();
  34. inParam.put("contract", contract);
  35. inParam.put("partNo", partNo);
  36. inParam.put("engChgLevel", engChgLevel);
  37. inParam.put("bomType", bomType);
  38. //调用查询的通用方法
  39. RecordCollection recordCollection = IfsPlsqlUtils.execSqlSearchGetRecordCollection(srv, searchSql, inParam);
  40. //判断能否返回
  41. if (recordCollection == null) {
  42. return null;
  43. } else {
  44. Record recordData = recordCollection.get(0);
  45. Map<String, String> resultMap = IfsConverterToMap.ConverterIfsToMap(recordData);
  46. return resultMap;
  47. }
  48. }
  49. /**
  50. * @description: 按照料号查询Bom Header的集合
  51. * @author LR
  52. * @date 2024/12/12 17:40
  53. * @version 1.0
  54. */
  55. public static List<BomIfsHeader> getBomHeadersByPartNo(Server srv, String contract, String partNo) throws APException {
  56. StringBuilder searchSql = new StringBuilder();
  57. searchSql.append("SELECT OBJID ifsRowId, OBJVERSION ifsRowVersion,");
  58. searchSql.append(" CONTRACT, PART_NO, BOM_TYPE, ENG_CHG_LEVEL, NOTE_TEXT");
  59. searchSql.append(" FROM IFSAPP.PROD_STRUCTURE_HEAD");
  60. searchSql.append(" WHERE CONTRACT = :contract AND PART_NO = :partNo");
  61. //设置查询的入参
  62. Map<String, String> inParam = new HashMap<>();
  63. inParam.put("contract", contract);
  64. inParam.put("partNo", partNo);
  65. //调用查询的通用方法
  66. RecordCollection recordCollection = IfsPlsqlUtils.execSqlSearchGetRecordCollection(srv, searchSql, inParam);
  67. //判断能否返回
  68. if (recordCollection == null) {
  69. return new ArrayList<>();
  70. } else {
  71. List<BomIfsHeader> resultItems = new ArrayList<>();
  72. //调用通用的处理方法 返回Map
  73. List<Map<String, String>> resultList = IfsConverterToMap.ConverterIfsToList(recordCollection);
  74. //判断是否存在数据
  75. if(resultList == null) {
  76. return resultItems;
  77. }
  78. //获取数据转bean
  79. for (int i = 0; i < resultList.size(); i++) {
  80. Map<String, String> tempMap = resultList.get(i);
  81. BomIfsHeader tempItem = new BomIfsHeader();
  82. //设置参数
  83. tempItem.setIfsRowId(tempMap.get("IFSROWID"));
  84. tempItem.setIfsRowVersion(tempMap.get("IFSROWVERSION"));
  85. tempItem.setContract((String) tempMap.get("CONTRACT"));
  86. tempItem.setPartNo((String) tempMap.get("PART_NO"));
  87. tempItem.setBomType((String) tempMap.get("BOM_TYPE"));
  88. tempItem.setEngChgLevel((String) tempMap.get("ENG_CHG_LEVEL"));
  89. tempItem.setNoteText((String) tempMap.get("NOTE_TEXT"));
  90. //添加对象
  91. resultItems.add(tempItem);
  92. }
  93. return resultItems;
  94. }
  95. }
  96. /**
  97. * @description: 插入Bom Header的主表
  98. * @author LR
  99. * @date 2024/12/11 15:08
  100. * @version 1.0
  101. */
  102. public static Map<String, String> insertBomHeader(Server srv, BomIfsHeader inData) throws APException {
  103. //公共参数
  104. String contract = inData.getContract();// 域
  105. String partNo = inData.getPartNo();// 物料编码
  106. String engChgLevel = inData.getEngChgLevel();// 版本
  107. String bomType = inData.getBomType();// 分类
  108. String effPhaseInDate = inData.getEffPhaseInDate().substring(0, 10)+"-00.00.00";// 启用时间-年月日
  109. String effPhaseOutDate = inData.getEffPhaseOutDate();// 结束时间-年月日
  110. if(effPhaseOutDate == null || effPhaseOutDate.equals("")) {
  111. effPhaseOutDate = "";
  112. }else {
  113. effPhaseOutDate = effPhaseOutDate+"-00.00.00";
  114. }
  115. //判断是否存在问题
  116. String noteText = inData.getNoteText();// 备注
  117. String createDate = DateUtils.getStringDate(new Date(), "yyyy-MM-dd")+"-00.00.00";//创建的时间
  118. //入参
  119. Map<String, String> inParam = new HashMap<>();
  120. //填充参数
  121. inParam.put("OBJID", "");
  122. inParam.put("OBJVERSION", "");
  123. inParam.put("PART_NO", partNo); // 物料编码
  124. inParam.put("CONTRACT", contract); // 域
  125. inParam.put("ENG_CHG_LEVEL", engChgLevel); // 物料的版本
  126. inParam.put("BOM_TYPE", bomType); // BOM类型
  127. inParam.put("EFF_PHASE_IN_DATE", effPhaseInDate); // 启用日期
  128. inParam.put("EFF_PHASE_OUT_DATE", effPhaseOutDate); // 到期时间
  129. inParam.put("NOTE_TEXT", noteText); // 备注
  130. inParam.put("CREATE_DATE", createDate); // 创建日期
  131. //执行存储过程 获取结果集
  132. //执行check的操作
  133. Map<String, String> checkMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "PROD_STRUCTURE_HEAD_API",
  134. "NEW__", PlsqlBaseMethodType.NEW, PlsqlBaseMethodAction.CHECK, inParam);
  135. //执行do的操作
  136. Map<String, String> resultMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "PROD_STRUCTURE_HEAD_API",
  137. "NEW__", PlsqlBaseMethodType.NEW, PlsqlBaseMethodAction.DO, inParam);
  138. //返回结果集
  139. return resultMap;
  140. }
  141. /**
  142. * @description: 修改Bom Header的主表信息
  143. * @author LR
  144. * @date 2024/12/11 15:32
  145. * @version 1.0
  146. */
  147. public static Map<String, String> modifyBomHeader(Server srv, BomIfsHeader inData) throws APException {
  148. //公共参数
  149. String ifsRowId = inData.getIfsRowId();
  150. String ifsRowVersion = inData.getIfsRowVersion();
  151. String effPhaseInDate = inData.getEffPhaseInDate().substring(0, 10)+"-00.00.00";// 启用时间-年月日
  152. String effPhaseOutDate = inData.getEffPhaseOutDate();// 结束时间-年月日
  153. if(effPhaseOutDate == null || effPhaseOutDate.equals("")) {
  154. effPhaseOutDate = "";
  155. }else {
  156. effPhaseOutDate = effPhaseOutDate+"-00.00.00";
  157. }
  158. //判断是否存在问题
  159. String noteText = inData.getNoteText();// 备注
  160. //入参
  161. Map<String, String> inParam = new HashMap<>();
  162. //填充参数
  163. inParam.put("OBJID", ifsRowId);
  164. inParam.put("OBJVERSION", ifsRowVersion);
  165. inParam.put("EFF_PHASE_IN_DATE", effPhaseInDate); // 启用日期
  166. inParam.put("EFF_PHASE_OUT_DATE", effPhaseOutDate); // 到期时间
  167. inParam.put("NOTE_TEXT", noteText); // 备注
  168. //执行check的操作
  169. Map<String, String> checkMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "PROD_STRUCTURE_HEAD_API",
  170. "MODIFY__", PlsqlBaseMethodType.MODIFY, PlsqlBaseMethodAction.CHECK, inParam);
  171. //执行do的操作
  172. Map<String, String> resultMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "PROD_STRUCTURE_HEAD_API",
  173. "MODIFY__", PlsqlBaseMethodType.MODIFY, PlsqlBaseMethodAction.DO, inParam);
  174. //返回结果集
  175. return resultMap;
  176. }
  177. /**
  178. * @description: 删除Bom的主表信息
  179. * @author LR
  180. * @date 2024/12/11 15:33
  181. * @version 1.0
  182. */
  183. public static Map<String, String> removeBomHeader(Server srv, BomIfsHeader inData) throws APException {
  184. //公共参数
  185. String ifsRowId = inData.getIfsRowId();
  186. String ifsRowVersion = inData.getIfsRowVersion();
  187. //入参
  188. Map<String, String> inParam = new HashMap<>();
  189. //填充参数
  190. inParam.put("OBJID", ifsRowId);
  191. inParam.put("OBJVERSION", ifsRowVersion);
  192. //执行check的操作
  193. Map<String, String> checkMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "PROD_STRUCTURE_HEAD_API",
  194. "REMOVE__", PlsqlBaseMethodType.REMOVE, PlsqlBaseMethodAction.CHECK, inParam);
  195. //执行do的操作
  196. Map<String, String> resultMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "PROD_STRUCTURE_HEAD_API",
  197. "REMOVE__", PlsqlBaseMethodType.REMOVE, PlsqlBaseMethodAction.DO, inParam);
  198. //返回结果集
  199. return resultMap;
  200. }
  201. /**
  202. * @description: 查询Bom的替代
  203. * @author LR
  204. * @date 2024/12/11 14:48
  205. * @version 1.0
  206. */
  207. public static Map<String, String> getBomAlternative(Server srv, String contract, String partNo, String engChgLevel, String bomType, String alternativeNo) throws APException {
  208. StringBuilder searchSql = new StringBuilder();
  209. searchSql.append("SELECT OBJID ifsRowId, OBJVERSION ifsRowVersion,");
  210. searchSql.append(" CONTRACT, PART_NO, BOM_TYPE, ENG_CHG_LEVEL, ALTERNATIVE_NO, NOTE_TEXT");
  211. searchSql.append(" FROM IFSAPP.PROD_STRUCT_ALTERNATE");
  212. searchSql.append(" WHERE CONTRACT = :contract AND PART_NO = :partNo AND ENG_CHG_LEVEL = :engChgLevel AND BOM_TYPE = :bomType AND ALTERNATIVE_NO = :alternativeNo");
  213. //设置查询的入参
  214. Map<String, String> inParam = new HashMap<>();
  215. inParam.put("contract", contract);
  216. inParam.put("partNo", partNo);
  217. inParam.put("engChgLevel", engChgLevel);
  218. inParam.put("bomType", bomType);
  219. inParam.put("alternativeNo", alternativeNo);
  220. //调用查询的通用方法
  221. RecordCollection recordCollection = IfsPlsqlUtils.execSqlSearchGetRecordCollection(srv, searchSql, inParam);
  222. //判断能否返回
  223. if (recordCollection == null) {
  224. return null;
  225. } else {
  226. Record recordData = recordCollection.get(0);
  227. Map<String, String> resultMap = IfsConverterToMap.ConverterIfsToMap(recordData);
  228. return resultMap;
  229. }
  230. }
  231. /**
  232. * @description: 插入Bom Alternative
  233. * @author LR
  234. * @date 2024/12/11 15:45
  235. * @version 1.0
  236. */
  237. public static Map<String, String> insertBomAlternative(Server srv, BomIfsAlternative inData) throws APException {
  238. //公共参数
  239. String contract = inData.getContract();// 域
  240. String partNo = inData.getPartNo();// 物料编码
  241. String engChgLevel = inData.getEngChgLevel();// 版本
  242. String bomType = inData.getBomType();// 分类
  243. String alternativeNo = inData.getAlternativeNo();
  244. String alternativeDesc = inData.getAlternativeDesc();
  245. //判断是否存在问题
  246. String noteText = inData.getNoteText();// 备注
  247. //入参
  248. Map<String, String> inParam = new HashMap<>();
  249. //填充参数
  250. inParam.put("OBJID", "");
  251. inParam.put("OBJVERSION", "");
  252. inParam.put("PART_NO", partNo); // 物料编码
  253. inParam.put("CONTRACT", contract); // 域
  254. inParam.put("ENG_CHG_LEVEL", engChgLevel); // 物料的版本
  255. inParam.put("BOM_TYPE", bomType); // BOM类型
  256. inParam.put("ALTERNATIVE_NO", alternativeNo); // 替代编码
  257. inParam.put("ALTERNATIVE_DESCRIPTION", alternativeDesc); // 替代编码描述
  258. inParam.put("USE_COST_DISTRIBUTION_DB", "STANDARD"); // 固定值
  259. inParam.put("NOTE_TEXT", noteText); // 备注
  260. //执行存储过程 获取结果集
  261. //执行check的操作
  262. Map<String, String> checkMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "PROD_STRUCT_ALTERNATE_API",
  263. "NEW__", PlsqlBaseMethodType.NEW, PlsqlBaseMethodAction.CHECK, inParam);
  264. //执行do的操作
  265. Map<String, String> resultMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "PROD_STRUCT_ALTERNATE_API",
  266. "NEW__", PlsqlBaseMethodType.NEW, PlsqlBaseMethodAction.DO, inParam);
  267. //返回结果集
  268. return resultMap;
  269. }
  270. /**
  271. * @description: 修改Bom 的替代信息
  272. * @author LR
  273. * @date 2024/12/11 15:47
  274. * @version 1.0
  275. */
  276. public static Map<String, String> modifyBomAlternative(Server srv, BomIfsAlternative inData) throws APException {
  277. //公共参数
  278. String ifsRowId = inData.getIfsRowId();// 域
  279. String ifsRowVersion = inData.getIfsRowVersion();// 物料编码
  280. String alternativeDesc = inData.getAlternativeDesc();
  281. String noteText = inData.getNoteText();// 备注
  282. //入参
  283. Map<String, String> inParam = new HashMap<>();
  284. //填充参数
  285. inParam.put("OBJID", ifsRowId);
  286. inParam.put("OBJVERSION", ifsRowVersion);
  287. inParam.put("ALTERNATIVE_DESCRIPTION", alternativeDesc); // 替代编码描述
  288. inParam.put("NOTE_TEXT", noteText); // 备注
  289. //执行check的操作
  290. Map<String, String> checkMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "PROD_STRUCT_ALTERNATE_API",
  291. "MODIFY__", PlsqlBaseMethodType.MODIFY, PlsqlBaseMethodAction.CHECK, inParam);
  292. //执行do的操作
  293. Map<String, String> resultMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "PROD_STRUCT_ALTERNATE_API",
  294. "MODIFY__", PlsqlBaseMethodType.MODIFY, PlsqlBaseMethodAction.DO, inParam);
  295. //返回结果集
  296. return resultMap;
  297. }
  298. /**
  299. * @description: 删除Bom Alternative
  300. * @author LR
  301. * @date 2024/12/11 15:51
  302. * @version 1.0
  303. */
  304. public static void removeBomAlternative(Server srv, BomIfsAlternative inData) throws APException {
  305. //公共参数
  306. String ifsRowId = inData.getIfsRowId();// 域
  307. String ifsRowVersion = inData.getIfsRowVersion();// 物料编码
  308. //入参
  309. Map<String, String> inParam = new HashMap<>();
  310. //填充参数
  311. inParam.put("OBJID", ifsRowId);
  312. inParam.put("OBJVERSION", ifsRowVersion);
  313. //执行check的操作
  314. Map<String, String> checkMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "PROD_STRUCT_ALTERNATE_API",
  315. "REMOVE__", PlsqlBaseMethodType.REMOVE, PlsqlBaseMethodAction.CHECK, inParam);
  316. //执行do的操作
  317. Map<String, String> resultMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "PROD_STRUCT_ALTERNATE_API",
  318. "REMOVE__", PlsqlBaseMethodType.REMOVE, PlsqlBaseMethodAction.DO, inParam);
  319. }
  320. /**
  321. * @description: Build Bom的信息
  322. * @author LR
  323. * @date 2024/12/11 15:53
  324. * @version 1.0
  325. */
  326. public static Map<String, String> buildBomAlternative(Server srv, BomIfsAlternative inData) throws APException {
  327. //公共参数
  328. String ifsRowId = inData.getIfsRowId();// 域
  329. String ifsRowVersion = inData.getIfsRowVersion();// 物料编码
  330. //入参
  331. Map<String, String> inParam = new HashMap<>();
  332. //填充参数
  333. inParam.put("OBJID", ifsRowId);
  334. inParam.put("OBJVERSION", ifsRowVersion);
  335. //执行check的操作
  336. Map<String, String> checkMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "PROD_STRUCT_ALTERNATE_API",
  337. "BUILD__", PlsqlBaseMethodType.MODIFY, PlsqlBaseMethodAction.CHECK, inParam);
  338. //执行do的操作
  339. Map<String, String> resultMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "PROD_STRUCT_ALTERNATE_API",
  340. "BUILD__", PlsqlBaseMethodType.MODIFY, PlsqlBaseMethodAction.DO, inParam);
  341. //返回结果集
  342. return resultMap;
  343. }
  344. /**
  345. * @description: retire Bom Alternative
  346. * @author LR
  347. * @date 2024/12/11 15:55
  348. * @version 1.0
  349. */
  350. public static Map<String, String> retireBomAlternative(Server srv, BomIfsAlternative inData) throws APException {
  351. //公共参数
  352. String ifsRowId = inData.getIfsRowId();// 域
  353. String ifsRowVersion = inData.getIfsRowVersion();// 物料编码
  354. //入参
  355. Map<String, String> inParam = new HashMap<>();
  356. //填充参数
  357. inParam.put("OBJID", ifsRowId);
  358. inParam.put("OBJVERSION", ifsRowVersion);
  359. //执行check的操作
  360. Map<String, String> checkMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "PROD_STRUCT_ALTERNATE_API",
  361. "RETIRE__", PlsqlBaseMethodType.MODIFY, PlsqlBaseMethodAction.CHECK, inParam);
  362. //执行do的操作
  363. Map<String, String> resultMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "PROD_STRUCT_ALTERNATE_API",
  364. "RETIRE__", PlsqlBaseMethodType.MODIFY, PlsqlBaseMethodAction.DO, inParam);
  365. //返回结果集
  366. return resultMap;
  367. }
  368. /**
  369. * @description: 获取Bom Item
  370. * @author LR
  371. * @date 2024/12/11 16:12
  372. * @version 1.0
  373. */
  374. public static Map<String, String> getBomItem(Server srv, String contract, String partNo, String engChgLevel, String bomType, String alternativeNo, String lineItemNo) throws APException {
  375. StringBuilder searchSql = new StringBuilder();
  376. searchSql.append("SELECT OBJID ifsRowId, OBJVERSION ifsRowVersion, PART_NO, CONTRACT, ENG_CHG_LEVEL, BOM_TYPE, ALTERNATIVE_NO,");
  377. searchSql.append(" LINE_ITEM_NO, LINE_SEQUENCE, COMPONENT_PART, QTY_PER_ASSEMBLY, ISSUE_TYPE, OPERATION_NO,");
  378. searchSql.append(" COMPONENT_SCRAP, SHRINKAGE_FACTOR");
  379. searchSql.append(" FROM IFSAPP.PROD_STRUCTURE");
  380. searchSql.append(" WHERE CONTRACT = :contract AND PART_NO = :partNo AND ENG_CHG_LEVEL = :engChgLevel AND BOM_TYPE = :bomType");
  381. searchSql.append(" AND ALTERNATIVE_NO = :alternativeNo AND LINE_ITEM_NO = :lineItemNo");
  382. //设置查询的入参
  383. Map<String, String> inParam = new HashMap<>();
  384. inParam.put("contract", contract);
  385. inParam.put("partNo", partNo);
  386. inParam.put("engChgLevel", engChgLevel);
  387. inParam.put("bomType", bomType);
  388. inParam.put("alternativeNo", alternativeNo);
  389. inParam.put("lineItemNo", lineItemNo);
  390. //调用查询的通用方法
  391. RecordCollection recordCollection = IfsPlsqlUtils.execSqlSearchGetRecordCollection(srv, searchSql, inParam);
  392. //判断能否返回
  393. if (recordCollection == null) {
  394. return null;
  395. } else {
  396. Record recordData = recordCollection.get(0);
  397. Map<String, String> resultMap = IfsConverterToMap.ConverterIfsToMap(recordData);
  398. return resultMap;
  399. }
  400. }
  401. /**
  402. * @description: 获取Bom Items
  403. * @author LR
  404. * @date 2024/12/11 16:16
  405. * @version 1.0
  406. */
  407. public static List<Map<String, String>> getBomItems(Server srv, String contract, String partNo, String engChgLevel, String bomType, String alternativeNo) throws APException {
  408. StringBuilder searchSql = new StringBuilder();
  409. searchSql.append("SELECT OBJID ifsRowId, OBJVERSION ifsRowVersion, PART_NO, CONTRACT, ENG_CHG_LEVEL, BOM_TYPE, ALTERNATIVE_NO,");
  410. searchSql.append(" LINE_ITEM_NO, LINE_SEQUENCE, COMPONENT_PART, QTY_PER_ASSEMBLY, ISSUE_TYPE, OPERATION_NO,");
  411. searchSql.append(" COMPONENT_SCRAP, SHRINKAGE_FACTOR");
  412. searchSql.append(" FROM IFSAPP.PROD_STRUCTURE");
  413. searchSql.append(" WHERE CONTRACT = :contract AND PART_NO = :partNo AND ENG_CHG_LEVEL = :engChgLevel AND BOM_TYPE = :bomType");
  414. searchSql.append(" AND ALTERNATIVE_NO = :alternativeNo");
  415. //设置查询的入参
  416. Map<String, String> inParam = new HashMap<>();
  417. inParam.put("contract", contract);
  418. inParam.put("partNo", partNo);
  419. inParam.put("engChgLevel", engChgLevel);
  420. inParam.put("bomType", bomType);
  421. inParam.put("alternativeNo", alternativeNo);
  422. //调用查询的通用方法
  423. RecordCollection recordCollection = IfsPlsqlUtils.execSqlSearchGetRecordCollection(srv, searchSql, inParam);
  424. //判断能否返回
  425. if (recordCollection == null) {
  426. return new ArrayList<>();
  427. } else {
  428. List<Map<String, String>> resultList = IfsConverterToMap.ConverterIfsToList(recordCollection);
  429. return resultList;
  430. }
  431. }
  432. /**
  433. * @description: 查询 Bom Item集合
  434. * @author LR
  435. * @date 2024/12/13 9:48
  436. * @version 1.0
  437. */
  438. public static List<BomIfsItem> getBomItems(Server srv, String contract, String partNo, String engChgLevel, String bomType,
  439. String alternativeNo, String lineItemNo) throws APException {
  440. StringBuilder searchSql = new StringBuilder();
  441. searchSql.append("SELECT OBJID ifsRowId, OBJVERSION ifsRowVersion, PART_NO, CONTRACT, ENG_CHG_LEVEL, BOM_TYPE, ALTERNATIVE_NO,");
  442. searchSql.append(" LINE_ITEM_NO, LINE_SEQUENCE, COMPONENT_PART, QTY_PER_ASSEMBLY, ISSUE_TYPE, OPERATION_NO,");
  443. //添加查询字段2025-07-03 新增字段
  444. searchSql.append(" NOTE_TEXT, CONSUMPTION_ITEM, IFSAPP.INVENTORY_PART_API.Get_Unit_Meas(Contract, Component_Part) unitMeas,");
  445. searchSql.append(" COMPONENT_SCRAP, SHRINKAGE_FACTOR");
  446. searchSql.append(" FROM IFSAPP.PROD_STRUCTURE");
  447. searchSql.append(" WHERE CONTRACT = :contract AND PART_NO = :partNo AND ENG_CHG_LEVEL = :engChgLevel AND BOM_TYPE = :bomType");
  448. searchSql.append(" AND ALTERNATIVE_NO = :alternativeNo");
  449. //设置查询的入参
  450. Map<String, String> inParam = new HashMap<>();
  451. inParam.put("contract", contract);
  452. inParam.put("partNo", partNo);
  453. inParam.put("engChgLevel", engChgLevel);
  454. inParam.put("bomType", bomType);
  455. inParam.put("alternativeNo", alternativeNo);
  456. //判断是否需要添加查询的条件
  457. if(!(lineItemNo == null || "".equals(lineItemNo))) {
  458. inParam.put("lineItemNo", lineItemNo);
  459. searchSql.append(" AND LINE_ITEM_NO = :lineItemNo");
  460. }
  461. //调用查询的通用方法
  462. RecordCollection recordCollection = IfsPlsqlUtils.execSqlSearchGetRecordCollection(srv, searchSql, inParam);
  463. //判断能否返回
  464. if (recordCollection == null) {
  465. return new ArrayList<>();
  466. } else {
  467. List<BomIfsItem> resultItems = new ArrayList<>();
  468. //调用通用的处理方法 返回Map
  469. List<Map<String, String>> resultList = IfsConverterToMap.ConverterIfsToList(recordCollection);
  470. //判断是否存在数据
  471. if(resultList == null) {
  472. return resultItems;
  473. }
  474. //获取数据转bean
  475. for (int i = 0; i < resultList.size(); i++) {
  476. Map<String, String> tempMap = resultList.get(i);
  477. BomIfsItem tempItem = new BomIfsItem();
  478. //设置参数
  479. tempItem.setIfsRowId(tempMap.get("IFSROWID"));
  480. tempItem.setIfsRowVersion(tempMap.get("IFSROWVERSION"));
  481. tempItem.setPartNo(tempMap.get("PART_NO"));
  482. tempItem.setContract(tempMap.get("CONTRACT"));
  483. tempItem.setEngChgLevel(tempMap.get("ENG_CHG_LEVEL"));
  484. tempItem.setBomType(tempMap.get("BOM_TYPE"));
  485. tempItem.setAlternativeNo(tempMap.get("ALTERNATIVE_NO"));
  486. BigDecimal itemValue = new BigDecimal(tempMap.get("LINE_ITEM_NO"));
  487. itemValue = itemValue.setScale(0, BigDecimal.ROUND_HALF_UP);
  488. itemValue = itemValue.stripTrailingZeros();
  489. String formatterValue = itemValue.toPlainString();
  490. tempItem.setLineItemNo(formatterValue);
  491. tempItem.setNoteText(tempMap.get("NOTE_TEXT"));
  492. tempItem.setConsumptionItem(tempMap.get("CONSUMPTION_ITEM"));
  493. tempItem.setPrintUnit(tempMap.get("UNITMEAS"));
  494. tempItem.setLineSequence(tempMap.get("LINE_SEQUENCE"));
  495. tempItem.setComponentPart(tempMap.get("COMPONENT_PART"));
  496. tempItem.setQtyPerAssembly(tempMap.get("QTY_PER_ASSEMBLY"));
  497. tempItem.setIssueType(tempMap.get("ISSUE_TYPE"));
  498. tempItem.setOperationNo(tempMap.get("OPERATION_NO"));
  499. tempItem.setComponentScrap(tempMap.get("COMPONENT_SCRAP"));
  500. tempItem.setShrinkageFactor(tempMap.get("SHRINKAGE_FACTOR"));
  501. //添加对象
  502. resultItems.add(tempItem);
  503. }
  504. return resultItems;
  505. }
  506. }
  507. /**
  508. * @description: 插入Bom Item
  509. * @author LR
  510. * @date 2024/12/11 16:17
  511. * @version 1.0
  512. */
  513. public static Map<String, String> insertBomItem(Server srv, BomIfsItem inData) throws APException {
  514. //公共参数
  515. String contract = inData.getContract();
  516. String partNo = inData.getPartNo();// 物料编码
  517. String engChgLevel = inData.getEngChgLevel();// 版本
  518. String bomType = inData.getBomType();// 分类
  519. String alternativeNo = inData.getAlternativeNo();
  520. String operationNo = inData.getOperationNo();
  521. String lineItemNo = inData.getLineItemNo();
  522. String sequenceNo = inData.getLineSequence();
  523. //判断是否存在问题
  524. String componentPart = inData.getComponentPart();//
  525. String qtyPerAssembly = inData.getQtyPerAssembly();
  526. String issueType = inData.getIssueType();
  527. String componentScrap = inData.getComponentScrap();
  528. String shrinkageFactor = inData.getShrinkageFactor();
  529. String noteText = inData.getNoteText();
  530. String consumptionItem = inData.getConsumptionItem();
  531. String createDate = DateUtils.getStringDate(new Date(), "yyyy-MM-dd")+"-00.00.00";
  532. String lastActivityDate = DateUtils.getStringDate(new Date(), "yyyy-MM-dd")+"-00.00.00";
  533. String productFlag = inData.getProductFlag();
  534. //入参
  535. Map<String, String> inParam = new HashMap<>();
  536. //填充参数
  537. inParam.put("OBJID", "");
  538. inParam.put("OBJVERSION", "");
  539. inParam.put("PART_NO", partNo); // 物料编码
  540. inParam.put("CONTRACT", contract); // 域
  541. inParam.put("ENG_CHG_LEVEL", engChgLevel); // 物料的版本
  542. inParam.put("BOM_TYPE", bomType); // BOM类型
  543. inParam.put("ALTERNATIVE_NO", alternativeNo); // 替代编码
  544. inParam.put("LINE_ITEM_NO", lineItemNo); // 行号
  545. inParam.put("LINE_SEQUENCE", sequenceNo); // 序号
  546. inParam.put("COMPONENT_PART", componentPart); // 子零件
  547. inParam.put("QTY_PER_ASSEMBLY", qtyPerAssembly); // 单位用量
  548. if ("byProduct".equalsIgnoreCase(productFlag)) {
  549. inParam.put("CONSUMPTION_ITEM", consumptionItem); // 消耗项目
  550. }else {
  551. inParam.put("ISSUE_TYPE", issueType); // 生产属性
  552. inParam.put("CONSUMPTION_ITEM", consumptionItem); // 消耗项目
  553. }
  554. inParam.put("COMPONENT_SCRAP", componentScrap); // 报废
  555. inParam.put("SHRINKAGE_FACTOR", shrinkageFactor); // 损耗率
  556. inParam.put("NOTE_TEXT", noteText); // 备注
  557. inParam.put("OPERATION_NO", operationNo); // 工序
  558. inParam.put("ISSUE_PLANNED_SCRAP_DB", "TRUE"); // 固定值
  559. inParam.put("ISSUE_OVERREPORTED_QTY_DB", "FALSE"); // 固定值
  560. inParam.put("LEADTIME_OFFSET", "0"); // 固定值
  561. inParam.put("PROMISE_PLANNED", "Promised"); // 固定值
  562. inParam.put("PHANTOM_CONSUME", "Not Phantom Consume"); // 固定值
  563. inParam.put("CHARGED_ITEM", "Item not charged"); // 固定值
  564. inParam.put("CREATE_DATE", createDate); // 创建时间
  565. inParam.put("LAST_ACTIVITY_DATE", lastActivityDate); // 最近更新时间
  566. inParam.put("PURCHASE_COMP_BACKFLUSH_DB", "FALSE"); // 固定值
  567. inParam.put("STD_PLANNED_ITEM", "1"); // 固定值
  568. inParam.put("OPER_COST_DISTRIBUTION", "0"); // 固定值
  569. inParam.put("GEN_OH_COST_DISTRIBUTION", "0"); // 固定值
  570. inParam.put("EXCLUDE_FROM_AS_BUILT_DB", "FALSE"); // 固定值
  571. inParam.put("BY_PROD_AS_SUPPLY_IN_MRP_DB", "FALSE"); // 固定值
  572. inParam.put("STOP_BOM_EXPLOSION_DB", "FALSE"); // 固定值
  573. inParam.put("LOT_BATCH_ORIGIN_DB", "FALSE"); // 固定值
  574. //执行check的操作
  575. Map<String, String> checkMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "PROD_STRUCTURE_API",
  576. "NEW__", PlsqlBaseMethodType.NEW, PlsqlBaseMethodAction.CHECK, inParam);
  577. //执行do的操作
  578. Map<String, String> resultMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "PROD_STRUCTURE_API",
  579. "NEW__", PlsqlBaseMethodType.NEW, PlsqlBaseMethodAction.DO, inParam);
  580. //返回结果集
  581. return resultMap;
  582. }
  583. /**
  584. * @description: 修改 Bom Item
  585. * @author LR
  586. * @date 2024/12/11 16:22
  587. * @version 1.0
  588. */
  589. public static Map<String, String> modifyBomItem(Server srv, BomIfsItem inData) throws APException {
  590. //公共参数
  591. String ifsRowId = inData.getIfsRowId();//
  592. String ifsRowVersion = inData.getIfsRowVersion();//
  593. String sequenceNo = inData.getLineSequence();
  594. String operationNo = inData.getOperationNo();
  595. //判断是否存在问题
  596. String componentPart = inData.getComponentPart();//
  597. String qtyPerAssembly = inData.getQtyPerAssembly();
  598. String issueType = inData.getIssueType();
  599. String componentScrap = inData.getComponentScrap();
  600. String shrinkageFactor = inData.getShrinkageFactor();
  601. String noteText = inData.getNoteText();
  602. String consumptionItem = inData.getConsumptionItem();
  603. String createDate = DateUtils.getStringDate(new Date(), "yyyy-MM-dd")+"-00.00.00";
  604. String lastActivityDate = DateUtils.getStringDate(new Date(), "yyyy-MM-dd")+"-00.00.00";
  605. String productFlag = inData.getProductFlag();
  606. //入参
  607. Map<String, String> inParam = new HashMap<>();
  608. //填充参数
  609. inParam.put("OBJID", ifsRowId);
  610. inParam.put("OBJVERSION", ifsRowVersion);
  611. inParam.put("LINE_SEQUENCE", sequenceNo); // 序号
  612. inParam.put("COMPONENT_PART", componentPart); // 子零件
  613. inParam.put("QTY_PER_ASSEMBLY", qtyPerAssembly); // 单位用量
  614. inParam.put("COMPONENT_SCRAP", componentScrap); // 报废
  615. if ("byProduct".equalsIgnoreCase(productFlag)) {
  616. inParam.put("CONSUMPTION_ITEM", consumptionItem); // 消耗项目
  617. }else {
  618. inParam.put("ISSUE_TYPE", issueType); // 生产属性
  619. inParam.put("CONSUMPTION_ITEM", consumptionItem); // 消耗项目
  620. }
  621. inParam.put("SHRINKAGE_FACTOR", shrinkageFactor); // 损耗率
  622. inParam.put("NOTE_TEXT", noteText); // 备注
  623. inParam.put("CREATE_DATE", createDate); // 创建时间
  624. inParam.put("OPERATION_NO", operationNo); // 工序
  625. inParam.put("LAST_ACTIVITY_DATE", lastActivityDate); // 最近更新时间
  626. //执行check的操作
  627. Map<String, String> checkMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "PROD_STRUCTURE_API",
  628. "MODIFY__", PlsqlBaseMethodType.MODIFY, PlsqlBaseMethodAction.CHECK, inParam);
  629. //执行do的操作
  630. Map<String, String> resultMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "PROD_STRUCTURE_API",
  631. "MODIFY__", PlsqlBaseMethodType.MODIFY, PlsqlBaseMethodAction.DO, inParam);
  632. //返回结果集
  633. return resultMap;
  634. }
  635. /**
  636. * @description: 删除 Bom Item
  637. * @author LR
  638. * @date 2024/12/11 16:24
  639. * @version 1.0
  640. */
  641. public static void removeBomItem(Server srv, BomIfsItem inData) throws APException {
  642. //公共参数
  643. //公共参数
  644. String ifsRowId = inData.getIfsRowId();//
  645. String ifsRowVersion = inData.getIfsRowVersion();//
  646. //入参
  647. Map<String, String> inParam = new HashMap<>();
  648. //填充参数
  649. inParam.put("OBJID", ifsRowId);
  650. inParam.put("OBJVERSION", ifsRowVersion);
  651. //执行check的操作
  652. Map<String, String> checkMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "PROD_STRUCTURE_API",
  653. "REMOVE__", PlsqlBaseMethodType.REMOVE, PlsqlBaseMethodAction.CHECK, inParam);
  654. //执行do的操作
  655. Map<String, String> resultMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "PROD_STRUCTURE_API",
  656. "REMOVE__", PlsqlBaseMethodType.REMOVE, PlsqlBaseMethodAction.DO, inParam);
  657. }
  658. /**
  659. * @description: 查询副产品的信息
  660. * @author LR
  661. * @date 2024/12/11 16:27
  662. * @version 1.0
  663. */
  664. public static Map<String, String> getBomDistribution(Server srv, String contract, String partNo, String engChgLevel, String bomType, String alternativeNo,
  665. String componentLineItemNo, String byProdLineItemNo) throws APException {
  666. StringBuilder searchSql = new StringBuilder();
  667. searchSql.append("SELECT OBJID ifsRowId, OBJVERSION ifsRowVersion, CONTRACT contract, PART_NO partNo, ENG_CHG_LEVEL engChgLevel,");
  668. searchSql.append(" BOM_TYPE bomType, ALTERNATIVE_NO alternativeNo, BYPROD_LINE_ITEM_NO byProdLineItemNo,");
  669. searchSql.append(" IFSAPP.MANUF_STRUCTURE_API.Get_Component_Part(contract,part_no,eng_chg_level,bom_type,alternative_no,BYPROD_LINE_ITEM_NO) byProductPartNo,");
  670. searchSql.append(" COMPONENT_LINE_ITEM_NO componentLineItemNo,");
  671. searchSql.append(" IFSAPP.MANUF_STRUCTURE_API.Get_Component_Part(contract,part_no,eng_chg_level,bom_type,alternative_no,COMPONENT_LINE_ITEM_NO) componentPart,");
  672. searchSql.append(" ITEM_COST_DISTRIBUTION itemCostDistribution");
  673. searchSql.append(" FROM IFSAPP.MANUF_STRUCT_COST_DISTRIB");
  674. searchSql.append(" WHERE CONTRACT = :contract AND PART_NO = :partNo AND ENG_CHG_LEVEL = :engChgLevel AND BOM_TYPE = :bomType AND ALTERNATIVE_NO = :alternativeNo");
  675. searchSql.append(" AND COMPONENT_LINE_ITEM_NO = :componentLineItemNo AND BYPROD_LINE_ITEM_NO = :byProdLineItemNo");
  676. //设置查询的入参
  677. Map<String, String> inParam = new HashMap<>();
  678. inParam.put("contract", contract);
  679. inParam.put("partNo", partNo);
  680. inParam.put("engChgLevel", engChgLevel);
  681. inParam.put("bomType", bomType);
  682. inParam.put("alternativeNo", alternativeNo);
  683. inParam.put("componentLineItemNo", componentLineItemNo);
  684. inParam.put("byProdLineItemNo", byProdLineItemNo);
  685. //调用查询的通用方法
  686. RecordCollection recordCollection = IfsPlsqlUtils.execSqlSearchGetRecordCollection(srv, searchSql, inParam);
  687. //判断能否返回
  688. if (recordCollection == null) {
  689. return null;
  690. } else {
  691. Record record = recordCollection.get(0);
  692. Map<String, String> resultMap = IfsConverterToMap.ConverterIfsToMap(record);
  693. return resultMap;
  694. }
  695. }
  696. /**
  697. * @description: 查询Bom 副产品的所有信息
  698. * @author LR
  699. * @date 2024/12/11 16:30
  700. * @version 1.0
  701. */
  702. public static List<Map<String, String>> getBomDistributions(Server srv, String contract, String partNo, String engChgLevel, String bomType, String alternativeNo) throws APException {
  703. StringBuilder searchSql = new StringBuilder();
  704. searchSql.append("SELECT OBJID ifsRowId, OBJVERSION ifsRowVersion, CONTRACT contract, PART_NO partNo, ENG_CHG_LEVEL engChgLevel,");
  705. searchSql.append(" BOM_TYPE bomType, ALTERNATIVE_NO alternativeNo, BYPROD_LINE_ITEM_NO byProdLineItemNo,");
  706. searchSql.append(" IFSAPP.MANUF_STRUCTURE_API.Get_Component_Part(contract,part_no,eng_chg_level,bom_type,alternative_no,BYPROD_LINE_ITEM_NO) byProductPartNo,");
  707. searchSql.append(" COMPONENT_LINE_ITEM_NO componentLineItemNo,");
  708. searchSql.append(" IFSAPP.MANUF_STRUCTURE_API.Get_Component_Part(contract,part_no,eng_chg_level,bom_type,alternative_no,COMPONENT_LINE_ITEM_NO) componentPart,");
  709. searchSql.append(" ITEM_COST_DISTRIBUTION itemCostDistribution");
  710. searchSql.append(" FROM IFSAPP.MANUF_STRUCT_COST_DISTRIB");
  711. searchSql.append(" WHERE CONTRACT = :contract AND PART_NO = :partNo AND ENG_CHG_LEVEL = :engChgLevel AND BOM_TYPE = :bomType AND ALTERNATIVE_NO = :alternativeNo");
  712. //设置查询的入参
  713. Map<String, String> inParam = new HashMap<>();
  714. inParam.put("contract", contract);
  715. inParam.put("partNo", partNo);
  716. inParam.put("engChgLevel", engChgLevel);
  717. inParam.put("bomType", bomType);
  718. inParam.put("alternativeNo", alternativeNo);
  719. //调用查询的通用方法
  720. RecordCollection recordCollection = IfsPlsqlUtils.execSqlSearchGetRecordCollection(srv, searchSql, inParam);
  721. //判断能否返回
  722. if (recordCollection == null) {
  723. return null;
  724. } else {
  725. List<Map<String, String>> resultList = IfsConverterToMap.ConverterIfsToList(recordCollection);
  726. return resultList;
  727. }
  728. }
  729. /**
  730. * @description: 查询使用的方法
  731. * @author LR
  732. * @date 2025/7/4 09:38
  733. * @version 1.0
  734. */
  735. public static List<BomIfsManufStructCostDistrib> getBomDistributionsForSync(Server srv, String contract, String partNo, String engChgLevel, String bomType, String alternativeNo) throws APException {
  736. StringBuilder searchSql = new StringBuilder();
  737. searchSql.append("SELECT OBJID ifsRowId, OBJVERSION ifsRowVersion, CONTRACT contract, PART_NO partNo, ENG_CHG_LEVEL,");
  738. searchSql.append(" BOM_TYPE bomType, ALTERNATIVE_NO alternativeNo, BYPROD_LINE_ITEM_NO byProdLineItemNo,");
  739. searchSql.append(" IFSAPP.MANUF_STRUCTURE_API.Get_Component_Part(contract,part_no,eng_chg_level,bom_type,alternative_no,BYPROD_LINE_ITEM_NO) byProductPartNo,");
  740. searchSql.append(" COMPONENT_LINE_ITEM_NO componentLineItemNo,");
  741. searchSql.append(" IFSAPP.MANUF_STRUCTURE_API.Get_Component_Part(contract,part_no,eng_chg_level,bom_type,alternative_no,COMPONENT_LINE_ITEM_NO) componentPartNo,");
  742. searchSql.append(" ITEM_COST_DISTRIBUTION itemCostDistribution");
  743. searchSql.append(" FROM IFSAPP.MANUF_STRUCT_COST_DISTRIB");
  744. searchSql.append(" WHERE CONTRACT = :contract AND PART_NO = :partNo AND ENG_CHG_LEVEL = :engChgLevel AND BOM_TYPE = :bomType AND ALTERNATIVE_NO = :alternativeNo");
  745. //设置查询的入参
  746. Map<String, String> inParam = new HashMap<>();
  747. inParam.put("contract", contract);
  748. inParam.put("partNo", partNo);
  749. inParam.put("engChgLevel", engChgLevel);
  750. inParam.put("bomType", bomType);
  751. inParam.put("alternativeNo", alternativeNo);
  752. //调用查询的通用方法
  753. RecordCollection recordCollection = IfsPlsqlUtils.execSqlSearchGetRecordCollection(srv, searchSql, inParam);
  754. //判断能否返回
  755. if (recordCollection == null) {
  756. return new ArrayList<>();
  757. } else {
  758. List<BomIfsManufStructCostDistrib> resultItems = new ArrayList<>();
  759. //调用通用的处理方法 返回Map
  760. List<Map<String, String>> resultList = IfsConverterToMap.ConverterIfsToList(recordCollection);
  761. //判断是否存在数据
  762. if (resultList == null) {
  763. return resultItems;
  764. }
  765. //获取数据转bean
  766. for (int i = 0; i < resultList.size(); i++) {
  767. Map<String, String> tempMap = resultList.get(i);
  768. BomIfsManufStructCostDistrib tempItem = new BomIfsManufStructCostDistrib();
  769. //设置参数
  770. tempItem.setIfsRowId(tempMap.get("IFSROWID"));
  771. tempItem.setIfsRowVersion(tempMap.get("IFSROWVERSION"));
  772. tempItem.setPartNo(tempMap.get("PART_NO"));
  773. tempItem.setContract(tempMap.get("CONTRACT"));
  774. tempItem.setEngChgLevel(tempMap.get("ENG_CHG_LEVEL"));
  775. tempItem.setBomType(tempMap.get("BOM_TYPE"));
  776. tempItem.setAlternativeNo(tempMap.get("ALTERNATIVE_NO"));
  777. BigDecimal itemValue = new BigDecimal(tempMap.get("BYPRODLINEITEMNO"));
  778. itemValue = itemValue.setScale(0, BigDecimal.ROUND_HALF_UP);
  779. itemValue = itemValue.stripTrailingZeros();
  780. String formatterValue = itemValue.toPlainString();
  781. tempItem.setByProdLineItemNo(formatterValue);
  782. BigDecimal componentValue = new BigDecimal(tempMap.get("COMPONENTLINEITEMNO"));
  783. componentValue = componentValue.setScale(0, BigDecimal.ROUND_HALF_UP);
  784. componentValue = componentValue.stripTrailingZeros();
  785. String formatterComponentValue = componentValue.toPlainString();
  786. tempItem.setComponentLineItemNo(formatterComponentValue);
  787. tempItem.setComponentPartNo(tempMap.get("COMPONENTPARTNO"));
  788. tempItem.setItemCostDistribution(tempMap.get("ITEMCOSTDISTRIBUTION"));
  789. //添加对象
  790. resultItems.add(tempItem);
  791. }
  792. return resultItems;
  793. }
  794. }
  795. /**
  796. * @description: 修改 Bom的副产品信息
  797. * @author LR
  798. * @date 2024/12/11 16:47
  799. * @version 1.0
  800. */
  801. public static Map<String, String> modifyBomDistribution(Server srv, BomIfsManufStructCostDistrib inData) throws APException {
  802. //公共参数
  803. String ifsRowId = inData.getIfsRowId();//
  804. String ifsRowVersion = inData.getIfsRowVersion();//
  805. String itemCostDistribution = inData.getItemCostDistribution();
  806. //入参
  807. Map<String, String> inParam = new HashMap<>();
  808. //填充参数
  809. inParam.put("OBJID", ifsRowId);
  810. inParam.put("OBJVERSION", ifsRowVersion);
  811. inParam.put("ITEM_COST_DISTRIBUTION", itemCostDistribution); // 序号
  812. //执行check的操作
  813. Map<String, String> checkMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "MANUF_STRUCT_COST_DISTRIB_API",
  814. "MODIFY__", PlsqlBaseMethodType.MODIFY, PlsqlBaseMethodAction.CHECK, inParam);
  815. //执行do的操作
  816. Map<String, String> resultMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "MANUF_STRUCT_COST_DISTRIB_API",
  817. "MODIFY__", PlsqlBaseMethodType.MODIFY, PlsqlBaseMethodAction.DO, inParam);
  818. //返回结果集
  819. return resultMap;
  820. }
  821. }