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.

688 lines
33 KiB

  1. package com.spring.ifs.api;
  2. import com.spring.ifs.utils.IfsConverterToMap;
  3. import com.spring.ifs.utils.IfsPlsqlUtils;
  4. import com.spring.modules.base.utils.DateUtils;
  5. import com.spring.modules.part.entity.APIEntity.*;
  6. import ifs.fnd.ap.*;
  7. import java.util.*;
  8. /**
  9. * @description: 配方的api
  10. * @author LR
  11. * @date 2024/12/9 10:56
  12. * @version 1.0
  13. */
  14. public class RecipeApi {
  15. /**
  16. * @description: 查询 Recipe Header
  17. * @author LR
  18. * @date 2024/12/11 14:45
  19. * @version 1.0
  20. */
  21. public static Map<String, String> getRecipeHeader(Server srv, String contract, String partNo, String engChgLevel, String bomType) throws APException {
  22. StringBuilder searchSql = new StringBuilder();
  23. searchSql.append("SELECT OBJID ifsRowId, OBJVERSION ifsRowVersion,");
  24. searchSql.append(" CONTRACT, PART_NO, BOM_TYPE, ENG_CHG_LEVEL, NOTE_TEXT");
  25. searchSql.append(" FROM IFSAPP.RECIPE_STRUCTURE_HEAD");
  26. searchSql.append(" WHERE CONTRACT = :contract AND PART_NO = :partNo AND ENG_CHG_LEVEL = :engChgLevel AND BOM_TYPE = :bomType");
  27. //设置查询的入参
  28. Map<String, String> inParam = new HashMap<>();
  29. inParam.put("contract", contract);
  30. inParam.put("partNo", partNo);
  31. inParam.put("engChgLevel", engChgLevel);
  32. inParam.put("bomType", bomType);
  33. //调用查询的通用方法
  34. RecordCollection recordCollection = IfsPlsqlUtils.execSqlSearchGetRecordCollection(srv, searchSql, inParam);
  35. //判断能否返回
  36. if (recordCollection == null) {
  37. return null;
  38. } else {
  39. Record recordData = recordCollection.get(0);
  40. Map<String, String> resultMap = IfsConverterToMap.ConverterIfsToMap(recordData);
  41. return resultMap;
  42. }
  43. }
  44. /**
  45. * @description: 插入Recipe Header的主表
  46. * @author LR
  47. * @date 2024/12/11 15:08
  48. * @version 1.0
  49. */
  50. public static Map<String, String> insertRecipeHeader(Server srv, RecipeIfsHeader inData) throws APException {
  51. //公共参数
  52. String contract = inData.getContract();// 域
  53. String partNo = inData.getPartNo();// 物料编码
  54. String engChgLevel = inData.getEngChgLevel();// 版本
  55. String bomType = inData.getBomType();// 分类
  56. String effPhaseInDate = inData.getEffPhaseInDate().substring(0, 10)+"-00.00.00";// 启用时间-年月日
  57. String effPhaseOutDate = inData.getEffPhaseOutDate();// 结束时间-年月日
  58. if(effPhaseOutDate == null || effPhaseOutDate.equals("")) {
  59. effPhaseOutDate = "";
  60. }else {
  61. effPhaseOutDate = effPhaseOutDate+"-00.00.00";
  62. }
  63. //判断是否存在问题
  64. String noteText = inData.getNoteText();// 备注
  65. String createDate = DateUtils.getStringDate(new Date(), "yyyy-MM-dd")+"-00.00.00";//创建的时间
  66. //入参
  67. Map<String, String> inParam = new HashMap<>();
  68. //填充参数
  69. inParam.put("OBJID", "");
  70. inParam.put("OBJVERSION", "");
  71. inParam.put("PART_NO", partNo); // 物料编码
  72. inParam.put("CONTRACT", contract); // 域
  73. inParam.put("ENG_CHG_LEVEL", engChgLevel); // 物料的版本
  74. inParam.put("BOM_TYPE", bomType); // BOM类型
  75. //inParam.put("EFF_PHASE_IN_DATE", effPhaseInDate); // 启用日期
  76. //inParam.put("EFF_PHASE_OUT_DATE", effPhaseOutDate); // 到期时间
  77. inParam.put("NOTE_TEXT", noteText); // 备注
  78. inParam.put("CREATE_DATE", createDate); // 创建日期
  79. //执行存储过程 获取结果集
  80. //执行check的操作
  81. Map<String, String> checkMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "RECIPE_STRUCTURE_HEAD_API",
  82. "NEW__", PlsqlBaseMethodType.NEW, PlsqlBaseMethodAction.CHECK, inParam);
  83. //执行do的操作
  84. Map<String, String> resultMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "RECIPE_STRUCTURE_HEAD_API",
  85. "NEW__", PlsqlBaseMethodType.NEW, PlsqlBaseMethodAction.DO, inParam);
  86. //返回结果集
  87. return resultMap;
  88. }
  89. /**
  90. * @description: 修改Recipe Header的主表信息
  91. * @author LR
  92. * @date 2024/12/11 15:32
  93. * @version 1.0
  94. */
  95. public static Map<String, String> modifyRecipeHeader(Server srv, RecipeIfsHeader inData) throws APException {
  96. //公共参数
  97. String ifsRowId = inData.getIfsRowId();
  98. String ifsRowVersion = inData.getIfsRowVersion();
  99. String effPhaseInDate = inData.getEffPhaseInDate().substring(0, 10)+"-00.00.00";// 启用时间-年月日
  100. String effPhaseOutDate = inData.getEffPhaseOutDate();// 结束时间-年月日
  101. if(effPhaseOutDate == null || effPhaseOutDate.equals("")) {
  102. effPhaseOutDate = "";
  103. }else {
  104. effPhaseOutDate = effPhaseOutDate+"-00.00.00";
  105. }
  106. //判断是否存在问题
  107. String noteText = inData.getNoteText();// 备注
  108. //入参
  109. Map<String, String> inParam = new HashMap<>();
  110. //填充参数
  111. inParam.put("OBJID", ifsRowId);
  112. inParam.put("OBJVERSION", ifsRowVersion);
  113. //inParam.put("EFF_PHASE_IN_DATE", effPhaseInDate); // 启用日期
  114. //inParam.put("EFF_PHASE_OUT_DATE", effPhaseOutDate); // 到期时间
  115. inParam.put("NOTE_TEXT", noteText); // 备注
  116. //执行check的操作
  117. Map<String, String> checkMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "RECIPE_STRUCTURE_HEAD_API",
  118. "MODIFY__", PlsqlBaseMethodType.MODIFY, PlsqlBaseMethodAction.CHECK, inParam);
  119. //执行do的操作
  120. Map<String, String> resultMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "RECIPE_STRUCTURE_HEAD_API",
  121. "MODIFY__", PlsqlBaseMethodType.MODIFY, PlsqlBaseMethodAction.DO, inParam);
  122. //返回结果集
  123. return resultMap;
  124. }
  125. /**
  126. * @description: 删除Recipe的主表信息
  127. * @author LR
  128. * @date 2024/12/11 15:33
  129. * @version 1.0
  130. */
  131. public static Map<String, String> removeRecipeHeader(Server srv, RecipeIfsHeader inData) throws APException {
  132. //公共参数
  133. String ifsRowId = inData.getIfsRowId();
  134. String ifsRowVersion = inData.getIfsRowVersion();
  135. //入参
  136. Map<String, String> inParam = new HashMap<>();
  137. //填充参数
  138. inParam.put("OBJID", ifsRowId);
  139. inParam.put("OBJVERSION", ifsRowVersion);
  140. //执行check的操作
  141. Map<String, String> checkMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "RECIPE_STRUCTURE_HEAD_API",
  142. "REMOVE__", PlsqlBaseMethodType.REMOVE, PlsqlBaseMethodAction.CHECK, inParam);
  143. //执行do的操作
  144. Map<String, String> resultMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "RECIPE_STRUCTURE_HEAD_API",
  145. "REMOVE__", PlsqlBaseMethodType.REMOVE, PlsqlBaseMethodAction.DO, inParam);
  146. //返回结果集
  147. return resultMap;
  148. }
  149. /**
  150. * @description: 查询Recipe Alternative
  151. * @author LR
  152. * @date 2024/12/11 14:48
  153. * @version 1.0
  154. */
  155. public static Map<String, String> getRecipeAlternative(Server srv, String contract, String partNo, String engChgLevel, String bomType, String alternativeNo) throws APException {
  156. StringBuilder searchSql = new StringBuilder();
  157. searchSql.append("SELECT OBJID ifsRowId, OBJVERSION ifsRowVersion, STD_SIZE_KG,");
  158. searchSql.append(" DISPLAY_WEIGHT_UOM, REG_UNIT, DISPLAY_VOLUME_UOM,");
  159. searchSql.append(" CONTRACT, PART_NO, BOM_TYPE, ENG_CHG_LEVEL, ALTERNATIVE_NO, STATE, NOTE_TEXT");
  160. searchSql.append(" FROM IFSAPP.RECIPE_STRUCT_ALTERNATE");
  161. searchSql.append(" WHERE CONTRACT = :contract AND PART_NO = :partNo AND ENG_CHG_LEVEL = :engChgLevel AND BOM_TYPE = :bomType AND ALTERNATIVE_NO = :alternativeNo");
  162. //设置查询的入参
  163. Map<String, String> inParam = new HashMap<>();
  164. inParam.put("contract", contract);
  165. inParam.put("partNo", partNo);
  166. inParam.put("engChgLevel", engChgLevel);
  167. inParam.put("bomType", bomType);
  168. inParam.put("alternativeNo", alternativeNo);
  169. //调用查询的通用方法
  170. RecordCollection recordCollection = IfsPlsqlUtils.execSqlSearchGetRecordCollection(srv, searchSql, inParam);
  171. //判断能否返回
  172. if (recordCollection == null) {
  173. return null;
  174. } else {
  175. Record recordData = recordCollection.get(0);
  176. Map<String, String> resultMap = IfsConverterToMap.ConverterIfsToMap(recordData);
  177. return resultMap;
  178. }
  179. }
  180. /**
  181. * @description: 插入Recipe Alternative
  182. * @author LR
  183. * @date 2024/12/11 15:45
  184. * @version 1.0
  185. */
  186. public static Map<String, String> insertRecipeAlternative(Server srv, RecipeIfsAlternative inData) throws APException {
  187. //公共参数
  188. String contract = inData.getContract();// 域
  189. String partNo = inData.getPartNo();// 物料编码
  190. String engChgLevel = inData.getEngChgLevel();// 版本
  191. String bomType = inData.getBomType();// 分类
  192. String alternativeNo = inData.getAlternativeNo();
  193. String alternativeDesc = inData.getAlternativeDesc();
  194. String displayWeightUom = inData.getDisplayWeightUom();
  195. String displayVolumeUom = inData.getDisplayVolumeUom();
  196. String regUnit = inData.getRegUnit();
  197. //判断是否存在问题
  198. String noteText = inData.getNoteText();// 备注
  199. //入参
  200. Map<String, String> inParam = new HashMap<>();
  201. //填充参数
  202. inParam.put("OBJID", "");
  203. inParam.put("OBJVERSION", "");
  204. inParam.put("PART_NO", partNo); // 物料编码
  205. inParam.put("CONTRACT", contract); // 域
  206. inParam.put("ENG_CHG_LEVEL", engChgLevel); // 物料的版本
  207. inParam.put("BOM_TYPE", bomType); // BOM类型
  208. inParam.put("DISPLAY_WEIGHT_UOM", displayWeightUom); //
  209. inParam.put("DISPLAY_VOLUME_UOM", displayVolumeUom); //
  210. //执行PREPARE的操作
  211. Map<String, String> checkMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "RECIPE_STRUCT_ALTERNATE_API",
  212. "NEW__", PlsqlBaseMethodType.NEW, PlsqlBaseMethodAction.PREPARE, inParam);
  213. //填充PREPARE返回的参数
  214. inParam.put("STD_SIZE_KG", checkMap.get("STD_SIZE_KG")); //
  215. inParam.put("YIELD", checkMap.get("YIELD")); //
  216. inParam.put("USE_COST_DISTRIBUTION_DB", checkMap.get("USE_COST_DISTRIBUTION_DB")); // 替代编码
  217. inParam.put("REWORK_ALTERNATE_DB", checkMap.get("REWORK_ALTERNATE_DB")); // 替代编码
  218. //添加DO的参数
  219. inParam.put("ALTERNATIVE_NO", alternativeNo); // 替代编码
  220. inParam.put("ALTERNATIVE_DESCRIPTION", alternativeDesc); // 替代编码描述
  221. inParam.put("REG_UNIT", regUnit); //
  222. inParam.put("NOTE_TEXT", noteText); // 备注
  223. //执行do的操作
  224. Map<String, String> resultMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "RECIPE_STRUCT_ALTERNATE_API",
  225. "NEW__", PlsqlBaseMethodType.NEW, PlsqlBaseMethodAction.DO, inParam);
  226. //返回结果集
  227. return resultMap;
  228. }
  229. /**
  230. * @description: 修改Recipe Alternative
  231. * @author LR
  232. * @date 2024/12/11 15:47
  233. * @version 1.0
  234. */
  235. public static Map<String, String> modifyRecipeAlternative(Server srv, RecipeIfsAlternative inData) throws APException {
  236. //公共参数
  237. String ifsRowId = inData.getIfsRowId();// 域
  238. String ifsRowVersion = inData.getIfsRowVersion();// 物料编码
  239. String regUnit = inData.getRegUnit();
  240. String alternativeDesc = inData.getAlternativeDesc();
  241. String stdSizeKg = inData.getStdSizeKg();
  242. String noteText = inData.getNoteText();// 备注
  243. //入参
  244. Map<String, String> inParam = new HashMap<>();
  245. //填充参数
  246. inParam.put("OBJID", ifsRowId);
  247. inParam.put("OBJVERSION", ifsRowVersion);
  248. inParam.put("ALTERNATIVE_DESCRIPTION", alternativeDesc); // 替代编码描述
  249. inParam.put("REG_UNIT", regUnit); //类型
  250. inParam.put("STD_SIZE_KG", stdSizeKg); //
  251. inParam.put("NOTE_TEXT", noteText); // 备注
  252. //执行check的操作
  253. Map<String, String> checkMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "RECIPE_STRUCT_ALTERNATE_API",
  254. "MODIFY__", PlsqlBaseMethodType.MODIFY, PlsqlBaseMethodAction.CHECK, inParam);
  255. //执行do的操作
  256. Map<String, String> resultMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "RECIPE_STRUCT_ALTERNATE_API",
  257. "MODIFY__", PlsqlBaseMethodType.MODIFY, PlsqlBaseMethodAction.DO, inParam);
  258. //返回结果集
  259. return resultMap;
  260. }
  261. /**
  262. * @description: 删除Recipe Alternative
  263. * @author LR
  264. * @date 2024/12/11 15:51
  265. * @version 1.0
  266. */
  267. public static void removeRecipeAlternative(Server srv, RecipeIfsAlternative inData) throws APException {
  268. //公共参数
  269. String ifsRowId = inData.getIfsRowId();// 域
  270. String ifsRowVersion = inData.getIfsRowVersion();// 物料编码
  271. //入参
  272. Map<String, String> inParam = new HashMap<>();
  273. //填充参数
  274. inParam.put("OBJID", ifsRowId);
  275. inParam.put("OBJVERSION", ifsRowVersion);
  276. //执行check的操作
  277. Map<String, String> checkMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "RECIPE_STRUCT_ALTERNATE_API",
  278. "REMOVE__", PlsqlBaseMethodType.REMOVE, PlsqlBaseMethodAction.CHECK, inParam);
  279. //执行do的操作
  280. Map<String, String> resultMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "RECIPE_STRUCT_ALTERNATE_API",
  281. "REMOVE__", PlsqlBaseMethodType.REMOVE, PlsqlBaseMethodAction.DO, inParam);
  282. }
  283. /**
  284. * @description: Build Recipe Alternative
  285. * @author LR
  286. * @date 2024/12/11 15:53
  287. * @version 1.0
  288. */
  289. public static Map<String, String> buildRecipeAlternative(Server srv, RecipeIfsAlternative inData) throws APException {
  290. //公共参数
  291. String ifsRowId = inData.getIfsRowId();// 域
  292. String ifsRowVersion = inData.getIfsRowVersion();// 物料编码
  293. //入参
  294. Map<String, String> inParam = new HashMap<>();
  295. //填充参数
  296. inParam.put("OBJID", ifsRowId);
  297. inParam.put("OBJVERSION", ifsRowVersion);
  298. //执行check的操作
  299. Map<String, String> checkMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "RECIPE_STRUCT_ALTERNATE_API",
  300. "BUILD__", PlsqlBaseMethodType.MODIFY, PlsqlBaseMethodAction.CHECK, inParam);
  301. //执行do的操作
  302. Map<String, String> resultMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "RECIPE_STRUCT_ALTERNATE_API",
  303. "BUILD__", PlsqlBaseMethodType.MODIFY, PlsqlBaseMethodAction.DO, inParam);
  304. //返回结果集
  305. return resultMap;
  306. }
  307. /**
  308. * @description: retire Recipe Alternative
  309. * @author LR
  310. * @date 2024/12/11 15:55
  311. * @version 1.0
  312. */
  313. public static Map<String, String> retireRecipeAlternative(Server srv, RecipeIfsAlternative inData) throws APException {
  314. //公共参数
  315. String ifsRowId = inData.getIfsRowId();// 域
  316. String ifsRowVersion = inData.getIfsRowVersion();// 物料编码
  317. //入参
  318. Map<String, String> inParam = new HashMap<>();
  319. //填充参数
  320. inParam.put("OBJID", ifsRowId);
  321. inParam.put("OBJVERSION", ifsRowVersion);
  322. //执行check的操作
  323. Map<String, String> checkMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "RECIPE_STRUCT_ALTERNATE_API",
  324. "RETIRE__", PlsqlBaseMethodType.MODIFY, PlsqlBaseMethodAction.CHECK, inParam);
  325. //执行do的操作
  326. Map<String, String> resultMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "RECIPE_STRUCT_ALTERNATE_API",
  327. "RETIRE__", PlsqlBaseMethodType.MODIFY, PlsqlBaseMethodAction.DO, inParam);
  328. //返回结果集
  329. return resultMap;
  330. }
  331. /**
  332. * @description: 获取Recipe Item
  333. * @author LR
  334. * @date 2024/12/11 16:12
  335. * @version 1.0
  336. */
  337. public static Map<String, String> getRecipeItem(Server srv, String contract, String partNo, String engChgLevel, String bomType, String alternativeNo, String lineItemNo) throws APException {
  338. StringBuilder searchSql = new StringBuilder();
  339. searchSql.append("SELECT OBJID ifsRowId, OBJVERSION ifsRowVersion, PART_NO, CONTRACT, ENG_CHG_LEVEL, BOM_TYPE, ALTERNATIVE_NO,");
  340. searchSql.append(" LINE_ITEM_NO, LINE_SEQUENCE, COMPONENT_PART, QTY_PER_ASSEMBLY, ISSUE_TYPE, WEIGHT_SHARE,");
  341. searchSql.append(" COMPONENT_SCRAP, SHRINKAGE_FACTOR");
  342. searchSql.append(" FROM IFSAPP.RECIPE_STRUCTURE");
  343. searchSql.append(" WHERE CONTRACT = :contract AND PART_NO = :partNo AND ENG_CHG_LEVEL = :engChgLevel AND BOM_TYPE = :bomType");
  344. searchSql.append(" AND ALTERNATIVE_NO = :alternativeNo AND LINE_ITEM_NO = :lineItemNo");
  345. //设置查询的入参
  346. Map<String, String> inParam = new HashMap<>();
  347. inParam.put("contract", contract);
  348. inParam.put("partNo", partNo);
  349. inParam.put("engChgLevel", engChgLevel);
  350. inParam.put("bomType", bomType);
  351. inParam.put("alternativeNo", alternativeNo);
  352. inParam.put("lineItemNo", lineItemNo);
  353. //调用查询的通用方法
  354. RecordCollection recordCollection = IfsPlsqlUtils.execSqlSearchGetRecordCollection(srv, searchSql, inParam);
  355. //判断能否返回
  356. if (recordCollection == null) {
  357. return null;
  358. } else {
  359. Record recordData = recordCollection.get(0);
  360. Map<String, String> resultMap = IfsConverterToMap.ConverterIfsToMap(recordData);
  361. return resultMap;
  362. }
  363. }
  364. /**
  365. * @description: 获取Recipe Items
  366. * @author LR
  367. * @date 2024/12/11 16:16
  368. * @version 1.0
  369. */
  370. public static List<Map<String, String>> getRecipeItems(Server srv, String contract, String partNo, String engChgLevel, String bomType, String alternativeNo) throws APException {
  371. StringBuilder searchSql = new StringBuilder();
  372. searchSql.append("SELECT OBJID ifsRowId, OBJVERSION ifsRowVersion, PART_NO, CONTRACT, ENG_CHG_LEVEL, BOM_TYPE, ALTERNATIVE_NO,");
  373. searchSql.append(" LINE_ITEM_NO, LINE_SEQUENCE, COMPONENT_PART, QTY_PER_ASSEMBLY, ISSUE_TYPE, WEIGHT_SHARE,");
  374. searchSql.append(" COMPONENT_SCRAP, SHRINKAGE_FACTOR");
  375. searchSql.append(" FROM IFSAPP.RECIPE_STRUCTURE");
  376. searchSql.append(" WHERE CONTRACT = :contract AND PART_NO = :partNo AND ENG_CHG_LEVEL = :engChgLevel AND BOM_TYPE = :bomType");
  377. searchSql.append(" AND ALTERNATIVE_NO = :alternativeNo");
  378. //设置查询的入参
  379. Map<String, String> inParam = new HashMap<>();
  380. inParam.put("contract", contract);
  381. inParam.put("partNo", partNo);
  382. inParam.put("engChgLevel", engChgLevel);
  383. inParam.put("bomType", bomType);
  384. inParam.put("alternativeNo", alternativeNo);
  385. //调用查询的通用方法
  386. RecordCollection recordCollection = IfsPlsqlUtils.execSqlSearchGetRecordCollection(srv, searchSql, inParam);
  387. //判断能否返回
  388. if (recordCollection == null) {
  389. return null;
  390. } else {
  391. List<Map<String, String>> resultList = IfsConverterToMap.ConverterIfsToList(recordCollection);
  392. return resultList;
  393. }
  394. }
  395. /**
  396. * @description: 查询 Recipe Item集合
  397. * @author LR
  398. * @date 2024/12/13 9:48
  399. * @version 1.0
  400. */
  401. public static List<RecipeIfsItem> getRecipeItems(Server srv, String contract, String partNo, String engChgLevel, String bomType,
  402. String alternativeNo, String lineItemNo) throws APException {
  403. StringBuilder searchSql = new StringBuilder();
  404. searchSql.append("SELECT OBJID ifsRowId, OBJVERSION ifsRowVersion, PART_NO, CONTRACT, ENG_CHG_LEVEL, BOM_TYPE, ALTERNATIVE_NO,");
  405. searchSql.append(" LINE_ITEM_NO, LINE_SEQUENCE, COMPONENT_PART, QTY_PER_ASSEMBLY, ISSUE_TYPE, WEIGHT_SHARE,");
  406. searchSql.append(" COMPONENT_SCRAP, SHRINKAGE_FACTOR");
  407. searchSql.append(" FROM IFSAPP.RECIPE_STRUCTURE");
  408. searchSql.append(" WHERE CONTRACT = :contract AND PART_NO = :partNo AND ENG_CHG_LEVEL = :engChgLevel AND BOM_TYPE = :bomType");
  409. searchSql.append(" AND ALTERNATIVE_NO = :alternativeNo");
  410. //设置查询的入参
  411. Map<String, String> inParam = new HashMap<>();
  412. inParam.put("contract", contract);
  413. inParam.put("partNo", partNo);
  414. inParam.put("engChgLevel", engChgLevel);
  415. inParam.put("bomType", bomType);
  416. inParam.put("alternativeNo", alternativeNo);
  417. //判断是否需要添加查询的条件
  418. if(!(lineItemNo == null || "".equals(lineItemNo))) {
  419. inParam.put("lineItemNo", lineItemNo);
  420. searchSql.append(" AND LINE_ITEM_NO = :lineItemNo");
  421. }
  422. //调用查询的通用方法
  423. RecordCollection recordCollection = IfsPlsqlUtils.execSqlSearchGetRecordCollection(srv, searchSql, inParam);
  424. //判断能否返回
  425. if (recordCollection == null) {
  426. return new ArrayList<>();
  427. } else {
  428. List<RecipeIfsItem> resultItems = new ArrayList<>();
  429. //调用通用的处理方法 返回Map
  430. List<Map<String, String>> resultList = IfsConverterToMap.ConverterIfsToList(recordCollection);
  431. //判断是否存在数据
  432. if(resultList == null) {
  433. return resultItems;
  434. }
  435. //获取数据转bean
  436. for (int i = 0; i < resultList.size(); i++) {
  437. Map<String, String> tempMap = resultList.get(i);
  438. RecipeIfsItem tempItem = new RecipeIfsItem();
  439. //设置参数
  440. tempItem.setIfsRowId(tempMap.get("IFSROWID"));
  441. tempItem.setIfsRowVersion(tempMap.get("IFSROWVERSION"));
  442. tempItem.setPartNo(tempMap.get("PART_NO"));
  443. tempItem.setContract(tempMap.get("CONTRACT"));
  444. tempItem.setEngChgLevel(tempMap.get("ENG_CHG_LEVEL"));
  445. tempItem.setBomType(tempMap.get("BOM_TYPE"));
  446. tempItem.setAlternativeNo(tempMap.get("ALTERNATIVE_NO"));
  447. tempItem.setLineItemNo(tempMap.get("LINE_ITEM_NO"));
  448. tempItem.setLineSequence(tempMap.get("LINE_SEQUENCE"));
  449. tempItem.setComponentPart(tempMap.get("COMPONENT_PART"));
  450. tempItem.setQtyPerAssembly(tempMap.get("QTY_PER_ASSEMBLY"));
  451. tempItem.setIssueType(tempMap.get("ISSUE_TYPE"));
  452. tempItem.setComponentScrap(tempMap.get("COMPONENT_SCRAP"));
  453. tempItem.setShrinkageFactor(tempMap.get("SHRINKAGE_FACTOR"));
  454. //添加对象
  455. resultItems.add(tempItem);
  456. }
  457. return resultItems;
  458. }
  459. }
  460. /**
  461. * @description: 插入Recipe Item
  462. * @author LR
  463. * @date 2024/12/11 16:17
  464. * @version 1.0
  465. */
  466. public static Map<String, String> insertRecipeItem(Server srv, RecipeIfsItem inData) throws APException {
  467. //公共参数
  468. String contract = inData.getContract();
  469. String partNo = inData.getPartNo();// 物料编码
  470. String engChgLevel = inData.getEngChgLevel();// 版本
  471. String bomType = inData.getBomType();// 分类
  472. String alternativeNo = inData.getAlternativeNo();
  473. String lineItemNo = inData.getLineItemNo();
  474. String lineSequence = inData.getLineSequence();
  475. String componentPart = inData.getComponentPart();//
  476. String weightShare = inData.getWeightShare();
  477. String partsByWeight = inData.getPartsByWeight();
  478. String qtyUom = inData.getQtyUom();
  479. String qtyPerAssembly = inData.getQtyPerAssembly();
  480. String componentScrap = inData.getComponentScrap();
  481. String issueType = inData.getIssueType();
  482. String issuePlannedScrapDb = inData.getIssuePlannedScrapDb();
  483. String issueOverreportedQtyDb = inData.getIssueOverreportedQtyDb();
  484. String fixedQtyFlag = inData.getFixedQtyFlag();
  485. String promisePlanned = inData.getPromisePlanned();
  486. String phantomConsume = inData.getPhantomConsume();
  487. String consumptionItem = inData.getConsumptionItem();
  488. String operCostDistribution = inData.getOperCostDistribution();
  489. String genOhCostDistribution = inData.getGenOhCostDistribution();
  490. String qtyKg = inData.getQtyKg();
  491. String byProdAsSupplyInMrpDb = inData.getByProdAsSupplyInMrpDb();
  492. String leadtimeOffset = inData.getLeadtimeOffset();
  493. String stdPlannedItem = inData.getStdPlannedItem();
  494. String chargedItem = inData.getChargedItem();
  495. String createDate = DateUtils.getStringDate(new Date(), "yyyy-MM-dd")+"-00.00.00";
  496. String lastActivityDate = DateUtils.getStringDate(new Date(), "yyyy-MM-dd")+"-00.00.00";
  497. String excludeFromCalculationsDb = inData.getExcludeFromCalculationsDb();
  498. String excludeFromAsBuiltDb = inData.getExcludeFromAsBuiltDb();
  499. String shrinkageFactor = inData.getShrinkageFactor();
  500. String lotBatchOriginDb = inData.getLotBatchOriginDb();
  501. String noteText = inData.getNoteText();
  502. //入参
  503. Map<String, String> inParam = new HashMap<>();
  504. //填充参数
  505. inParam.put("OBJID", "");
  506. inParam.put("OBJVERSION", "");
  507. inParam.put("CONTRACT", contract); // 域
  508. inParam.put("PART_NO", partNo); // 物料编码
  509. inParam.put("ENG_CHG_LEVEL", engChgLevel); // 物料的版本
  510. inParam.put("BOM_TYPE", bomType); // BOM类型
  511. inParam.put("ALTERNATIVE_NO", alternativeNo); // 替代编码
  512. inParam.put("LINE_ITEM_NO", lineItemNo); // 行号
  513. inParam.put("LINE_SEQUENCE", lineSequence); // 序号
  514. inParam.put("COMPONENT_PART", componentPart); // 子零件
  515. inParam.put("QTY_PER_ASSEMBLY", qtyPerAssembly); // 单位用量
  516. inParam.put("ISSUE_TYPE", issueType); // 域
  517. inParam.put("COMPONENT_SCRAP", componentScrap); // 报废
  518. inParam.put("WEIGHT_SHARE", weightShare); // 损耗率
  519. inParam.put("PARTS_BY_WEIGHT", partsByWeight); // 备注
  520. inParam.put("QTY_UOM", qtyUom); //
  521. inParam.put("ISSUE_PLANNED_SCRAP_DB", issuePlannedScrapDb); //
  522. inParam.put("ISSUE_OVERREPORTED_QTY_DB", issueOverreportedQtyDb); //
  523. inParam.put("FIXED_QTY_FLAG", fixedQtyFlag); //
  524. inParam.put("PROMISE_PLANNED", promisePlanned); //
  525. inParam.put("PHANTOM_CONSUME", phantomConsume); //
  526. inParam.put("CONSUMPTION_ITEM", consumptionItem); //
  527. inParam.put("OPER_COST_DISTRIBUTION", operCostDistribution); //
  528. inParam.put("GEN_OH_COST_DISTRIBUTION", genOhCostDistribution); //
  529. inParam.put("QTY_KG", qtyKg); //
  530. inParam.put("BY_PROD_AS_SUPPLY_IN_MRP_DB", byProdAsSupplyInMrpDb); //
  531. inParam.put("LEADTIME_OFFSET", leadtimeOffset); //
  532. inParam.put("STD_PLANNED_ITEM", stdPlannedItem); // 固定值
  533. inParam.put("CHARGED_ITEM", chargedItem); //
  534. inParam.put("EXCLUDE_FROM_CALCULATIONS_DB", excludeFromCalculationsDb); //
  535. inParam.put("EXCLUDE_FROM_AS_BUILT_DB", excludeFromAsBuiltDb); //
  536. inParam.put("SHRINKAGE_FACTOR", shrinkageFactor); //
  537. inParam.put("LOT_BATCH_ORIGIN_DB", lotBatchOriginDb); //
  538. inParam.put("CREATE_DATE", createDate); // 创建时间
  539. inParam.put("LAST_ACTIVITY_DATE", lastActivityDate); // 最近更新时间
  540. inParam.put("NOTE_TEXT", noteText); // 备注
  541. //执行check的操作
  542. Map<String, String> checkMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "RECIPE_STRUCTURE_API",
  543. "NEW__", PlsqlBaseMethodType.NEW, PlsqlBaseMethodAction.CHECK, inParam);
  544. //执行do的操作
  545. Map<String, String> resultMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "RECIPE_STRUCTURE_API",
  546. "NEW__", PlsqlBaseMethodType.NEW, PlsqlBaseMethodAction.DO, inParam);
  547. //返回结果集
  548. return resultMap;
  549. }
  550. /**
  551. * @description: 修改 Recipe Item
  552. * @author LR
  553. * @date 2024/12/11 16:22
  554. * @version 1.0
  555. */
  556. public static Map<String, String> modifyRecipeItem(Server srv, RecipeIfsItem inData) throws APException {
  557. //公共参数
  558. String ifsRowId = inData.getIfsRowId();//
  559. String ifsRowVersion = inData.getIfsRowVersion();//
  560. String lineItemNo = inData.getLineItemNo();
  561. String lineSequence = inData.getLineSequence();
  562. String componentPart = inData.getComponentPart();//
  563. String weightShare = inData.getWeightShare();
  564. String partsByWeight = inData.getPartsByWeight();
  565. String qtyUom = inData.getQtyUom();
  566. String qtyPerAssembly = inData.getQtyPerAssembly();
  567. String componentScrap = inData.getComponentScrap();
  568. String issueType = inData.getIssueType();
  569. String issuePlannedScrapDb = inData.getIssuePlannedScrapDb();
  570. String issueOverreportedQtyDb = inData.getIssueOverreportedQtyDb();
  571. String fixedQtyFlag = inData.getFixedQtyFlag();
  572. String promisePlanned = inData.getPromisePlanned();
  573. String phantomConsume = inData.getPhantomConsume();
  574. String consumptionItem = inData.getConsumptionItem();
  575. String operCostDistribution = inData.getOperCostDistribution();
  576. String genOhCostDistribution = inData.getGenOhCostDistribution();
  577. String qtyKg = inData.getQtyKg();
  578. String byProdAsSupplyInMrpDb = inData.getByProdAsSupplyInMrpDb();
  579. String leadtimeOffset = inData.getLeadtimeOffset();
  580. String stdPlannedItem = inData.getStdPlannedItem();
  581. String chargedItem = inData.getChargedItem();
  582. String lastActivityDate = DateUtils.getStringDate(new Date(), "yyyy-MM-dd")+"-00.00.00";
  583. String excludeFromCalculationsDb = inData.getExcludeFromCalculationsDb();
  584. String excludeFromAsBuiltDb = inData.getExcludeFromAsBuiltDb();
  585. String shrinkageFactor = inData.getShrinkageFactor();
  586. String lotBatchOriginDb = inData.getLotBatchOriginDb();
  587. //入参
  588. Map<String, String> inParam = new HashMap<>();
  589. //填充参数
  590. inParam.put("OBJID", ifsRowId);
  591. inParam.put("OBJVERSION", ifsRowVersion);
  592. inParam.put("LINE_ITEM_NO", lineItemNo); // 行号
  593. inParam.put("LINE_SEQUENCE", lineSequence); // 序号
  594. inParam.put("COMPONENT_PART", componentPart); // 子零件
  595. inParam.put("QTY_PER_ASSEMBLY", qtyPerAssembly); // 单位用量
  596. inParam.put("ISSUE_TYPE", issueType); // 域
  597. inParam.put("COMPONENT_SCRAP", componentScrap); // 报废
  598. inParam.put("WEIGHT_SHARE", weightShare); // 损耗率
  599. inParam.put("PARTS_BY_WEIGHT", partsByWeight); // 备注
  600. inParam.put("QTY_UOM", qtyUom); //
  601. inParam.put("ISSUE_PLANNED_SCRAP_DB", issuePlannedScrapDb); //
  602. inParam.put("ISSUE_OVERREPORTED_QTY_DB", issueOverreportedQtyDb); //
  603. inParam.put("FIXED_QTY_FLAG", fixedQtyFlag); //
  604. inParam.put("PROMISE_PLANNED", promisePlanned); //
  605. inParam.put("PHANTOM_CONSUME", phantomConsume); //
  606. inParam.put("CONSUMPTION_ITEM", consumptionItem); //
  607. inParam.put("OPER_COST_DISTRIBUTION", operCostDistribution); //
  608. inParam.put("GEN_OH_COST_DISTRIBUTION", genOhCostDistribution); //
  609. inParam.put("QTY_KG", qtyKg); //
  610. inParam.put("BY_PROD_AS_SUPPLY_IN_MRP_DB", byProdAsSupplyInMrpDb); //
  611. inParam.put("LEADTIME_OFFSET", leadtimeOffset); //
  612. inParam.put("STD_PLANNED_ITEM", stdPlannedItem); // 固定值
  613. inParam.put("CHARGED_ITEM", chargedItem); //
  614. inParam.put("EXCLUDE_FROM_CALCULATIONS_DB", excludeFromCalculationsDb); //
  615. inParam.put("EXCLUDE_FROM_AS_BUILT_DB", excludeFromAsBuiltDb); //
  616. inParam.put("SHRINKAGE_FACTOR", shrinkageFactor); //
  617. inParam.put("LOT_BATCH_ORIGIN_DB", lotBatchOriginDb); //
  618. inParam.put("LAST_ACTIVITY_DATE", lastActivityDate); // 最近更新时间
  619. //执行check的操作
  620. Map<String, String> checkMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "RECIPE_STRUCTURE_API",
  621. "MODIFY__", PlsqlBaseMethodType.MODIFY, PlsqlBaseMethodAction.CHECK, inParam);
  622. //执行do的操作
  623. Map<String, String> resultMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "RECIPE_STRUCTURE_API",
  624. "MODIFY__", PlsqlBaseMethodType.MODIFY, PlsqlBaseMethodAction.DO, inParam);
  625. //返回结果集
  626. return resultMap;
  627. }
  628. /**
  629. * @description: 删除 Recipe Item
  630. * @author LR
  631. * @date 2024/12/11 16:24
  632. * @version 1.0
  633. */
  634. public static void removeRecipeItem(Server srv, RecipeIfsItem inData) throws APException {
  635. //公共参数
  636. //公共参数
  637. String ifsRowId = inData.getIfsRowId();//
  638. String ifsRowVersion = inData.getIfsRowVersion();//
  639. //入参
  640. Map<String, String> inParam = new HashMap<>();
  641. //填充参数
  642. inParam.put("OBJID", ifsRowId);
  643. inParam.put("OBJVERSION", ifsRowVersion);
  644. //执行check的操作
  645. Map<String, String> checkMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "RECIPE_STRUCTURE_API",
  646. "REMOVE__", PlsqlBaseMethodType.REMOVE, PlsqlBaseMethodAction.CHECK, inParam);
  647. //执行do的操作
  648. Map<String, String> resultMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "RECIPE_STRUCTURE_API",
  649. "REMOVE__", PlsqlBaseMethodType.REMOVE, PlsqlBaseMethodAction.DO, inParam);
  650. }
  651. }