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.

1061 lines
51 KiB

  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 ifs.fnd.ap.*;
  6. import java.util.ArrayList;
  7. import java.util.HashMap;
  8. import java.util.List;
  9. import java.util.Map;
  10. /**
  11. * @description: 处理Master业务的底层相关函数
  12. * @author LR
  13. * @date 2024/12/9 10:56
  14. * @version 1.0
  15. */
  16. public class InventoryPartApiTest {
  17. /**
  18. * @description: 查询库存件的信息
  19. * @author LR
  20. * @date 2024/12/11 9:35
  21. * @version 1.0
  22. */
  23. public static Map<String, String> getInventoryPartByPartNo(Server srv, String contract, String partNo) throws APException {
  24. StringBuilder searchSql = new StringBuilder();
  25. searchSql.append("SELECT CONTRACT, PART_NO partNo, OBJID ifsRowId, OBJVERSION ifsRowVersion");
  26. searchSql.append(" FROM IFSAPP.INVENTORY_PART");
  27. searchSql.append(" WHERE CONTRACT = :contract AND PART_NO = :partNo");
  28. //设置查询的入参
  29. Map<String, String> inParam = new HashMap<>();
  30. inParam.put("contract", contract);
  31. inParam.put("partNo", partNo);
  32. //调用查询的通用方法
  33. RecordCollection recordCollection = IfsPlsqlUtils.execSqlSearchGetRecordCollection(srv, searchSql, inParam);
  34. //判断能否返回
  35. if (recordCollection == null) {
  36. return null;
  37. } else {
  38. Record recordData = recordCollection.get(0);
  39. Map<String, String> resultMap = IfsConverterToMap.ConverterIfsToMap(recordData);
  40. return resultMap;
  41. }
  42. }
  43. public static InventoryPart getInventoryPart(Server srv, String contract, String partNo) throws APException {
  44. StringBuilder searchSql = new StringBuilder();
  45. searchSql.append("SELECT CONTRACT, PART_NO, OBJID ifsRowId, OBJVERSION ifsRowVersion");
  46. searchSql.append(" FROM IFSAPP.INVENTORY_PART");
  47. searchSql.append(" WHERE CONTRACT = :contract AND PART_NO = :partNo");
  48. //设置查询的入参
  49. Map<String, String> inParam = new HashMap<>();
  50. inParam.put("contract", contract);
  51. inParam.put("partNo", partNo);
  52. //调用查询的通用方法
  53. RecordCollection recordCollection = IfsPlsqlUtils.execSqlSearchGetRecordCollection(srv, searchSql, inParam);
  54. //判断能否返回
  55. if (recordCollection == null) {
  56. return null;
  57. } else {
  58. Record recordData = recordCollection.get(0);
  59. Map<String, String> resultMap = IfsConverterToMap.ConverterIfsToMap(recordData);
  60. //判断是否存在
  61. if(null == resultMap || resultMap.size() == 0){
  62. return null;
  63. }else {
  64. //解析数据
  65. InventoryPart tempPart = new InventoryPart();
  66. tempPart.setContract(resultMap.get("CONTRACT"));
  67. tempPart.setPartNo(resultMap.get("PART_NO")); //
  68. tempPart.setIfsRowId(resultMap.get("IFSROWID"));
  69. tempPart.setIfsRowVersion(resultMap.get("IFSROWVERSION"));
  70. return tempPart;
  71. }
  72. }
  73. }
  74. /**
  75. * @description: 新增库存件
  76. * @author LR
  77. * @date 2024/12/11 9:51
  78. * @version 1.0
  79. */
  80. public static Map<String, String> insertInventoryPart(Server srv, InventoryPart inData) throws APException {
  81. //公共参数
  82. String contract = inData.getContract();
  83. String partNo = inData.getPartNo().toUpperCase();
  84. String partDesc = inData.getPartDesc();
  85. String typeCode = inData.getTypeCode();
  86. String plannerBuyer = inData.getPlannerBuyer();
  87. String unitMeas = inData.getUnitMeas();
  88. String primeCommodity = inData.getPrimeCommodity();//主分组
  89. String secondCommodity = inData.getSecondCommodity();//第二分组
  90. String assetClass = inData.getAssetClass();
  91. String partStatus = inData.getPartStatus();
  92. String hazardCode = inData.getHazardCode();
  93. String accountingGroup = inData.getAccountingGroup();
  94. String partProductCode = inData.getPartProductCode();
  95. String partProductFamily = inData.getPartProductFamily();
  96. String typeDesignation = inData.getTypeDesignation();
  97. String dimQuality = inData.getDimQuality();
  98. String noteText = inData.getNoteText();
  99. String leadTimeCode = inData.getLeadTimeCode();
  100. String manufLeadtime = inData.getManufLeadtime();
  101. String expectedLeadtime = inData.getExpectedLeadtime();
  102. String durabilityDay = inData.getDurabilityDay();
  103. String countryOfOrigin = inData.getCountryOfOrigin();
  104. String regionOfOrigin = inData.getRegionOfOrigin();
  105. String customsStatNo = inData.getCustomsStatNo();
  106. String intrastatConvFactor = inData.getIntrastatConvFactor();
  107. String inventoryValuationMethod = inData.getInventoryValuationMethod();//
  108. String inventoryPartCostLevel = inData.getInventoryPartCostLevel();//
  109. String invoiceConsideration = inData.getInvoiceConsideration();//
  110. String zeroCostFlag = inData.getZeroCostFlag();//
  111. String partCostGroupId = inData.getPartCostGroupId();//
  112. String engAttribute = inData.getEngAttribute();
  113. //入参
  114. Map<String, String> inParam = new HashMap<>();
  115. //填充参数
  116. inParam.put("OBJID", "");
  117. inParam.put("OBJVERSION", "");
  118. inParam.put("CONTRACT", contract); // ifs域
  119. inParam.put("PART_NO", partNo); // 物料编码
  120. inParam.put("DESCRIPTION", partDesc); // 物料描述
  121. inParam.put("TYPE_CODE", typeCode); // 物料大类
  122. inParam.put("PLANNER_BUYER", plannerBuyer); // 计划购买者
  123. inParam.put("UNIT_MEAS", unitMeas); // 单位
  124. inParam.put("PRIME_COMMODITY", primeCommodity); // 主分组
  125. inParam.put("SECOND_COMMODITY", secondCommodity); // 副分组
  126. inParam.put("ASSET_CLASS", assetClass); // ASSET_CLASS
  127. inParam.put("PART_STATUS", partStatus); // ASSET_CLASS
  128. inParam.put("HAZARD_CODE", hazardCode); // HAZARD_CODE
  129. inParam.put("ACCOUNTING_GROUP", accountingGroup); // 商品属性 半成品 成品 原材料
  130. inParam.put("PART_PRODUCT_CODE", partProductCode); // 产品代码
  131. inParam.put("PART_PRODUCT_FAMILY", partProductFamily); // 零部件标识
  132. inParam.put("TYPE_DESIGNATION", typeDesignation); // 类型标识
  133. inParam.put("DIM_QUALITY", dimQuality); // DIM_QUALITY
  134. inParam.put("NOTE_TEXT", noteText); // 备注
  135. inParam.put("LEAD_TIME_CODE", leadTimeCode); // LEAD_TIME_CODE
  136. inParam.put("MANUF_LEADTIME", manufLeadtime); // MANUF_LEADTIME
  137. inParam.put("EXPECTED_LEADTIME", expectedLeadtime); //
  138. inParam.put("DURABILITY_DAY", durabilityDay); // DURABILITY_DAY
  139. inParam.put("COUNTRY_OF_ORIGIN", countryOfOrigin); // 国家
  140. inParam.put("REGION_OF_ORIGIN", regionOfOrigin); // 区域
  141. inParam.put("CUSTOMS_STAT_NO", customsStatNo); // CUSTOMS_STAT_NO
  142. inParam.put("INTRASTAT_CONV_FACTOR", intrastatConvFactor); // INTRASTAT_CONV_FACTOR
  143. inParam.put("INVENTORY_VALUATION_METHOD", inventoryValuationMethod); // INVENTORY_VALUATION_METHOD
  144. inParam.put("INVENTORY_PART_COST_LEVEL", inventoryPartCostLevel); // INVENTORY_PART_COST_LEVEL
  145. inParam.put("INVOICE_CONSIDERATION", invoiceConsideration); // INVOICE_CONSIDERATION
  146. inParam.put("ZERO_COST_FLAG", zeroCostFlag); // ZERO_COST_FLAG
  147. inParam.put("PART_COST_GROUP_ID", partCostGroupId); // PART_COST_GROUP_ID
  148. inParam.put("ENG_ATTRIBUTE", engAttribute); // 库存件模版
  149. // 固定参数
  150. inParam.put("CATCH_UNIT_MEAS", ""); // 拼接固定值CATCH_UNIT_MEAS
  151. inParam.put("PURCH_LEADTIME", "0"); // 拼接固定值PURCH_LEADTIME
  152. inParam.put("MIN_DURAB_DAYS_CO_DELIV", "0"); // 拼接固定参数
  153. inParam.put("MIN_DURAB_DAYS_PLANNING", "0"); // 拼接固定参数
  154. inParam.put("MANDATORY_EXPIRATION_DATE_DB", "FALSE"); // 拼接固定参数
  155. inParam.put("SUPPLY_CODE", "Inventory Order"); // 拼接固定参数
  156. inParam.put("DOP_CONNECTION", "Automatic DOP"); // 拼接固定参数
  157. inParam.put("DOP_NETTING", "No Netting"); // 拼接固定参数
  158. inParam.put("QTY_CALC_ROUNDING", "16"); // 拼接固定参数
  159. inParam.put("CYCLE_PERIOD", "0"); // 拼接固定参数
  160. inParam.put("CYCLE_CODE_DB", "N"); // 拼接固定参数
  161. inParam.put("STOCK_MANAGEMENT_DB", "SYSTEM MANAGED INVENTORY"); // 固定参数
  162. inParam.put("SPECIAL_CONSUMPTION_TAX_DB", "FALSE"); // SPECIAL_CONSUMPTION_TAX_DB
  163. inParam.put("CUSTOMS_DECL_NO_LEVEL", "Not Used"); // CUSTOMS_DECL_NO_LEVEL
  164. //执行存储过程 获取结果集
  165. //执行check的操作
  166. Map<String, String> checkMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "INVENTORY_PART_API",
  167. "NEW__", PlsqlBaseMethodType.NEW, PlsqlBaseMethodAction.CHECK, inParam);
  168. //执行do的操作
  169. Map<String, String> resultMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "INVENTORY_PART_API",
  170. "NEW__", PlsqlBaseMethodType.NEW, PlsqlBaseMethodAction.DO, inParam);
  171. //返回结果集
  172. return resultMap;
  173. }
  174. /**
  175. * @description: 修改库存件的信息
  176. * @author LR
  177. * @date 2024/12/11 9:59
  178. * @version 1.0
  179. */
  180. public static Map<String, String> modifyInventoryPart(Server srv, InventoryPart inData) throws APException {
  181. //公共参数
  182. String ifsRowId = inData.getIfsRowId();
  183. String ifsRowVersion = inData.getIfsRowVersion();
  184. String partDesc = inData.getPartDesc();
  185. String typeCode = inData.getTypeCode();
  186. String plannerBuyer = inData.getPlannerBuyer();
  187. String primeCommodity = inData.getPrimeCommodity();//主分组
  188. String secondCommodity = inData.getSecondCommodity();//第二分组
  189. String assetClass = inData.getAssetClass();
  190. String partStatus = inData.getPartStatus();
  191. String abcClass = inData.getAbcClass();
  192. String hazardCode = inData.getHazardCode();
  193. String accountingGroup = inData.getAccountingGroup();
  194. String partProductCode = inData.getPartProductCode();
  195. String partProductFamily = inData.getPartProductFamily();
  196. String typeDesignation = inData.getTypeDesignation();
  197. String dimQuality = inData.getDimQuality();
  198. String noteText = inData.getNoteText();
  199. String manufLeadtime = inData.getManufLeadtime();
  200. String expectedLeadtime = inData.getExpectedLeadtime();
  201. String durabilityDay = inData.getDurabilityDay();
  202. String countryOfOrigin = inData.getCountryOfOrigin();
  203. String regionOfOrigin = inData.getRegionOfOrigin();
  204. String customsStatNo = inData.getCustomsStatNo();
  205. String intrastatConvFactor = inData.getIntrastatConvFactor();
  206. String inventoryValuationMethod = inData.getInventoryValuationMethod();//
  207. String inventoryPartCostLevel = inData.getInventoryPartCostLevel();//
  208. String invoiceConsideration = inData.getInvoiceConsideration();//
  209. String zeroCostFlag = inData.getZeroCostFlag();//
  210. String partCostGroupId = inData.getPartCostGroupId();//
  211. String engAttribute = inData.getEngAttribute();
  212. //入参
  213. Map<String, String> inParam = new HashMap<>();
  214. //填充参数
  215. inParam.put("OBJID", ifsRowId);
  216. inParam.put("OBJVERSION", ifsRowVersion);
  217. inParam.put("DESCRIPTION", partDesc); // 物料描述
  218. inParam.put("TYPE_CODE", typeCode); // 物料大类
  219. inParam.put("PLANNER_BUYER", plannerBuyer); // 计划购买者
  220. inParam.put("PRIME_COMMODITY", primeCommodity); // 主分组
  221. inParam.put("SECOND_COMMODITY", secondCommodity); // 副分组
  222. inParam.put("ASSET_CLASS", assetClass); // ASSET_CLASS
  223. inParam.put("PART_STATUS", partStatus); // ASSET_CLASS
  224. inParam.put("ABC_CLASS", abcClass); // ASSET_CLASS
  225. inParam.put("HAZARD_CODE", hazardCode); // HAZARD_CODE
  226. inParam.put("ACCOUNTING_GROUP", accountingGroup); // 商品属性 半成品 成品 原材料
  227. inParam.put("PART_PRODUCT_CODE", partProductCode); // 产品代码
  228. inParam.put("PART_PRODUCT_FAMILY", partProductFamily); // 零部件标识
  229. inParam.put("TYPE_DESIGNATION", typeDesignation); // 类型标识
  230. inParam.put("DIM_QUALITY", dimQuality); // DIM_QUALITY
  231. inParam.put("NOTE_TEXT", noteText); // 备注
  232. inParam.put("MANUF_LEADTIME", manufLeadtime); // MANUF_LEADTIME
  233. inParam.put("EXPECTED_LEADTIME", expectedLeadtime); //
  234. inParam.put("DURABILITY_DAY", durabilityDay); // DURABILITY_DAY
  235. inParam.put("COUNTRY_OF_ORIGIN", countryOfOrigin); // 国家
  236. inParam.put("REGION_OF_ORIGIN", regionOfOrigin); // 区域
  237. inParam.put("CUSTOMS_STAT_NO", customsStatNo); // CUSTOMS_STAT_NO
  238. inParam.put("INTRASTAT_CONV_FACTOR", intrastatConvFactor); // 备注
  239. inParam.put("INVENTORY_VALUATION_METHOD", inventoryValuationMethod); // INVENTORY_VALUATION_METHOD
  240. inParam.put("INVENTORY_PART_COST_LEVEL", inventoryPartCostLevel); // INVENTORY_PART_COST_LEVEL
  241. inParam.put("INVOICE_CONSIDERATION", invoiceConsideration); // INVOICE_CONSIDERATION
  242. inParam.put("ZERO_COST_FLAG", zeroCostFlag); // ZERO_COST_FLAG
  243. inParam.put("PART_COST_GROUP_ID", partCostGroupId); // PART_COST_GROUP_ID
  244. inParam.put("ENG_ATTRIBUTE", engAttribute); // 库存件模版
  245. //执行存储过程 获取结果集
  246. //执行check的操作
  247. Map<String, String> checkMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "INVENTORY_PART_API",
  248. "MODIFY__", PlsqlBaseMethodType.MODIFY, PlsqlBaseMethodAction.CHECK, inParam);
  249. //执行do的操作
  250. Map<String, String> resultMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "INVENTORY_PART_API",
  251. "MODIFY__", PlsqlBaseMethodType.MODIFY, PlsqlBaseMethodAction.DO, inParam);
  252. //返回结果集
  253. return resultMap;
  254. }
  255. /**
  256. * @description: 删除库存件
  257. * @author LR
  258. * @date 2024/12/11 10:04
  259. * @version 1.0
  260. */
  261. public static void removeInventoryPart(Server srv, PartCatalog inData) throws APException {
  262. //公共参数
  263. String ifsRowId = inData.getIfsRowId();
  264. String ifsRowVersion = inData.getIfsRowVersion();
  265. //入参
  266. Map<String, String> inParam = new HashMap<>();
  267. //填充参数
  268. inParam.put("OBJID", ifsRowId);
  269. inParam.put("OBJVERSION", ifsRowVersion);
  270. //执行存储过程 获取结果集
  271. //执行check的操作
  272. Map<String, String> checkMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "INVENTORY_PART_API",
  273. "REMOVE__", PlsqlBaseMethodType.REMOVE, PlsqlBaseMethodAction.CHECK, inParam);
  274. //执行do的操作
  275. Map<String, String> resultMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "INVENTORY_PART_API",
  276. "REMOVE__", PlsqlBaseMethodType.REMOVE, PlsqlBaseMethodAction.DO, inParam);
  277. }
  278. /**
  279. * @description: 查询库存件的cost配置信息
  280. * @author LR
  281. * @date 2024/12/11 10:13
  282. * @version 1.0
  283. */
  284. public static Map<String, String> getInventoryPartConfig(Server srv, String contract, String partNo) throws APException {
  285. StringBuilder searchSql = new StringBuilder();
  286. searchSql.append("SELECT CONTRACT, PART_NO partNo, configuration_id, estimated_material_cost, OBJID ifsRowId, OBJVERSION ifsRowVersion");
  287. searchSql.append(" FROM IFSAPP.INVENTORY_PART_CONFIG");
  288. searchSql.append(" WHERE CONTRACT = :contract AND PART_NO = :partNo");
  289. //设置查询的入参
  290. Map<String, String> inParam = new HashMap<>();
  291. inParam.put("contract", contract);
  292. inParam.put("partNo", partNo);
  293. //调用查询的通用方法
  294. RecordCollection recordCollection = IfsPlsqlUtils.execSqlSearchGetRecordCollection(srv, searchSql, inParam);
  295. //判断能否返回
  296. if (recordCollection == null) {
  297. return null;
  298. } else {
  299. Record recordData = recordCollection.get(0);
  300. Map<String, String> resultMap = IfsConverterToMap.ConverterIfsToMap(recordData);
  301. return resultMap;
  302. }
  303. }
  304. /**
  305. * @description: 修改库存件的cost的信息
  306. * @author LR
  307. * @date 2024/12/11 10:23
  308. * @version 1.0
  309. */
  310. public static Map<String, String> modifyInventoryPartCost(Server srv, InventoryPartConfig inData) throws APException {
  311. //公共参数
  312. String ifsRowId = inData.getIfsRowId();
  313. String ifsRowVersion = inData.getIfsRowVersion();
  314. String estimatedMaterialCost = inData.getEstimatedMaterialCost();
  315. //入参
  316. Map<String, String> inParam = new HashMap<>();
  317. inParam.put("OBJID", ifsRowId);
  318. inParam.put("OBJVERSION", ifsRowVersion);
  319. inParam.put("ESTIMATED_MATERIAL_COST", estimatedMaterialCost); // ESTIMATED_MATERIAL_COST
  320. //执行check的操作
  321. Map<String, String> checkMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "INVENTORY_PART_CONFIG_API",
  322. "MODIFY__", PlsqlBaseMethodType.MODIFY, PlsqlBaseMethodAction.CHECK, inParam);
  323. //执行do的操作
  324. Map<String, String> resultMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "INVENTORY_PART_CONFIG_API",
  325. "MODIFY__", PlsqlBaseMethodType.MODIFY, PlsqlBaseMethodAction.DO, inParam);
  326. //返回结果集
  327. return resultMap;
  328. }
  329. /**
  330. * @description: 获取库存件的计划
  331. * @author LR
  332. * @date 2024/12/11 10:31
  333. * @version 1.0
  334. */
  335. public static Map<String, String> getInventoryPartPlan(Server srv, String contract, String partNo) throws APException {
  336. StringBuilder searchSql = new StringBuilder();
  337. searchSql.append("SELECT CONTRACT, PART_NO partNo, planning_method, safety_stock, OBJID ifsRowId, OBJVERSION ifsRowVersion");
  338. searchSql.append(" FROM IFSAPP.INVENTORY_PART_PLANNING");
  339. searchSql.append(" WHERE CONTRACT = :contract AND PART_NO = :partNo");
  340. //设置查询的入参
  341. Map<String, String> inParam = new HashMap<>();
  342. inParam.put("contract", contract);
  343. inParam.put("partNo", partNo);
  344. //调用查询的通用方法
  345. RecordCollection recordCollection = IfsPlsqlUtils.execSqlSearchGetRecordCollection(srv, searchSql, inParam);
  346. //判断能否返回
  347. if (recordCollection == null) {
  348. return null;
  349. } else {
  350. Record recordData = recordCollection.get(0);
  351. Map<String, String> resultMap = IfsConverterToMap.ConverterIfsToMap(recordData);
  352. return resultMap;
  353. }
  354. }
  355. /**
  356. * @description: 修改库存件的计划
  357. * @author LR
  358. * @date 2024/12/11 10:44
  359. * @version 1.0
  360. */
  361. public static Map<String, String> modifyInventoryPartPlan(Server srv, InventoryPartPlan inData) throws APException {
  362. //公共参数
  363. String ifsRowId = inData.getIfsRowId();
  364. String ifsRowVersion = inData.getIfsRowVersion();
  365. String planningMethod = inData.getPlanningMethod(); //
  366. String safetyStock = inData.getSafetyStock();
  367. String safetyLeadTime = inData.getSafetyLeadTime();
  368. String minOrderQty = inData.getMinOrderQty();
  369. String maxOrderQty = inData.getMaxOrderQty();
  370. String mulOrderQty = inData.getMulOrderQty();
  371. String shrinkageFac = inData.getShrinkageFac();
  372. String stdOrderSize = inData.getStdOrderSize();
  373. //入参
  374. Map<String, String> inParam = new HashMap<>();
  375. inParam.put("OBJID", ifsRowId);
  376. inParam.put("OBJVERSION", ifsRowVersion);
  377. inParam.put("PLANNING_METHOD", planningMethod); // PLANNING_METHOD
  378. inParam.put("SAFETY_STOCK", safetyStock); // SAFETY_STOCK
  379. inParam.put("SAFETY_LEAD_TIME", safetyLeadTime); // SAFETY_LEAD_TIME
  380. inParam.put("MIN_ORDER_QTY", minOrderQty); // MIN_ORDER_QTY
  381. inParam.put("MAX_ORDER_QTY", maxOrderQty); // MAX_ORDER_QTY
  382. inParam.put("MUL_ORDER_QTY", mulOrderQty); // MUL_ORDER_QTY
  383. inParam.put("SHRINKAGE_FAC", shrinkageFac); // SHRINKAGE_FAC
  384. inParam.put("STD_ORDER_SIZE", stdOrderSize); // STD_ORDER_SIZE
  385. //执行check的操作
  386. Map<String, String> checkMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "INVENTORY_PART_PLANNING_API",
  387. "MODIFY__", PlsqlBaseMethodType.MODIFY, PlsqlBaseMethodAction.CHECK, inParam);
  388. //执行do的操作
  389. Map<String, String> resultMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "INVENTORY_PART_PLANNING_API",
  390. "MODIFY__", PlsqlBaseMethodType.MODIFY, PlsqlBaseMethodAction.DO, inParam);
  391. //返回结果集
  392. return resultMap;
  393. }
  394. /**
  395. * @description: 查询库存件的库位信息
  396. * @author LR
  397. * @date 2024/12/11 10:51
  398. * @version 1.0
  399. */
  400. public static Map<String, String> getInventoryPartLocation(Server srv, String contract, String partNo, String locationNo) throws APException {
  401. StringBuilder searchSql = new StringBuilder();
  402. searchSql.append("SELECT CONTRACT, PART_NO partNo, location_no, location_type, OBJID ifsRowId, OBJVERSION ifsRowVersion");
  403. searchSql.append(" FROM IFSAPP.INVENTORY_PART_DEF_LOC");
  404. searchSql.append(" WHERE CONTRACT = :contract AND PART_NO = :partNo AND LOCATION_NO = :locationNo");
  405. //设置查询的入参
  406. Map<String, String> inParam = new HashMap<>();
  407. inParam.put("contract", contract);
  408. inParam.put("partNo", partNo);
  409. inParam.put("locationNo", locationNo);
  410. //调用查询的通用方法
  411. RecordCollection recordCollection = IfsPlsqlUtils.execSqlSearchGetRecordCollection(srv, searchSql, inParam);
  412. //判断能否返回
  413. if (recordCollection == null) {
  414. return null;
  415. } else {
  416. Record recordData = recordCollection.get(0);
  417. Map<String, String> resultMap = IfsConverterToMap.ConverterIfsToMap(recordData);
  418. return resultMap;
  419. }
  420. }
  421. /**
  422. * @description: 插入库存件的库位信息
  423. * @author LR
  424. * @date 2024/12/11 10:52
  425. * @version 1.0
  426. */
  427. public static Map<String, String> insertInventoryPartLocation(Server srv, InventoryPartLocation inData) throws APException {
  428. //公共参数
  429. String contract = inData.getContract();
  430. String partNo = inData.getPartNo().toUpperCase();
  431. String locationNo = inData.getLocationNo();
  432. String locationType = inData.getLocationType();
  433. //入参
  434. Map<String, String> inParam = new HashMap<>();
  435. inParam.put("OBJID", "");
  436. inParam.put("OBJVERSION", "");
  437. inParam.put("CONTRACT", contract); // CONTRACT
  438. inParam.put("PART_NO", partNo); // PART_NO
  439. inParam.put("LOCATION_NO", locationNo); // LOCATION_NO
  440. inParam.put("LOCATION_TYPE", locationType); // LOCATION_TYPE
  441. //执行check的操作
  442. Map<String, String> checkMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "INVENTORY_PART_DEF_LOC_API",
  443. "NEW__", PlsqlBaseMethodType.NEW, PlsqlBaseMethodAction.CHECK, inParam);
  444. //执行do的操作
  445. Map<String, String> resultMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "INVENTORY_PART_DEF_LOC_API",
  446. "NEW__", PlsqlBaseMethodType.NEW, PlsqlBaseMethodAction.DO, inParam);
  447. //返回结果集
  448. return resultMap;
  449. }
  450. /**
  451. * @description: 删除库存件的库位信息
  452. * @author LR
  453. * @date 2024/12/11 10:59
  454. * @version 1.0
  455. */
  456. public static void removeInventoryPartLocation(Server srv, InventoryPartLocation inData) throws APException {
  457. //公共参数
  458. String ifsRowId = inData.getIfsRowId();
  459. String ifsRowVersion = inData.getIfsRowVersion();
  460. //入参
  461. Map<String, String> inParam = new HashMap<>();
  462. inParam.put("OBJID", ifsRowId);
  463. inParam.put("OBJVERSION", ifsRowVersion);
  464. //执行check的操作
  465. Map<String, String> checkMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "INVENTORY_PART_DEF_LOC_API",
  466. "REMOVE__", PlsqlBaseMethodType.REMOVE, PlsqlBaseMethodAction.CHECK, inParam);
  467. //执行do的操作
  468. Map<String, String> resultMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "INVENTORY_PART_DEF_LOC_API",
  469. "REMOVE__", PlsqlBaseMethodType.REMOVE, PlsqlBaseMethodAction.DO, inParam);
  470. }
  471. /**
  472. * @description: 查询库存件的制造商信息
  473. * @author LR
  474. * @date 2024/12/11 11:02
  475. * @version 1.0
  476. */
  477. public static Map<String, String> getInventoryManufacture(Server srv, String contract, String partNo) throws APException {
  478. StringBuilder searchSql = new StringBuilder();
  479. searchSql.append("SELECT CONTRACT, PART_NO partNo, cum_leadtime, density, OBJID ifsRowId, OBJVERSION ifsRowVersion");
  480. searchSql.append(" FROM IFSAPP.MANUF_PART_ATTRIBUTE");
  481. searchSql.append(" WHERE CONTRACT = :contract AND PART_NO = :partNo");
  482. //设置查询的入参
  483. Map<String, String> inParam = new HashMap<>();
  484. inParam.put("contract", contract);
  485. inParam.put("partNo", partNo);
  486. //调用查询的通用方法
  487. RecordCollection recordCollection = IfsPlsqlUtils.execSqlSearchGetRecordCollection(srv, searchSql, inParam);
  488. //判断能否返回
  489. if (recordCollection == null) {
  490. return null;
  491. } else {
  492. Record recordData = recordCollection.get(0);
  493. Map<String, String> resultMap = IfsConverterToMap.ConverterIfsToMap(recordData);
  494. return resultMap;
  495. }
  496. }
  497. /**
  498. * @description: 修改库存件的制造商信息
  499. * @author LR
  500. * @date 2024/12/11 11:11
  501. * @version 1.0
  502. */
  503. public static Map<String, String> modifyInventoryPartManufacture(Server srv, InventoryPartManufacture inData) throws APException {
  504. //公共参数
  505. String ifsRowId = inData.getIfsRowId();
  506. String ifsRowVersion = inData.getIfsRowVersion();
  507. String cumLeadtime = inData.getCumLeadtime();
  508. String unprotectedLeadTime = inData.getUnprotectedLeadTime();
  509. String fixedLeadtimeDay = inData.getFixedLeadtimeDay();
  510. String variableLeadtimeDay = inData.getVariableLeadtimeDay();
  511. String fixedLeadtimeHour = inData.getFixedLeadtimeHour();
  512. String variableLeadtimeHour = inData.getVariableLeadtimeHour();
  513. String backflushPart = inData.getBackflushPart();
  514. String issueType = inData.getIssueType();
  515. String overReporting = inData.getOverReporting();
  516. String overReportTolerance = inData.getOverReportTolerance();
  517. String byProdAsSupplyInMrpDb = inData.getByProdAsSupplyInMrpDb();
  518. String mrpControlFlagDb = inData.getMrpControlFlagDb();
  519. String useTheoriticalDensityDb = inData.getUseTheoriticalDensityDb();
  520. String density = inData.getDensity();
  521. //入参
  522. Map<String, String> inParam = new HashMap<>();
  523. inParam.put("OBJID", ifsRowId);
  524. inParam.put("OBJVERSION", ifsRowVersion);
  525. inParam.put("CUM_LEADTIME", cumLeadtime); // CUM_LEADTIME
  526. inParam.put("UNPROTECTED_LEAD_TIME", unprotectedLeadTime); // UNPROTECTED_LEAD_TIME
  527. inParam.put("FIXED_LEADTIME_DAY", fixedLeadtimeDay); // FIXED_LEADTIME_DAY
  528. inParam.put("VARIABLE_LEADTIME_DAY", variableLeadtimeDay); // VARIABLE_LEADTIME_DAY
  529. inParam.put("FIXED_LEADTIME_HOUR", fixedLeadtimeHour); // FIXED_LEADTIME_HOUR
  530. inParam.put("VARIABLE_LEADTIME_HOUR", variableLeadtimeHour); // VARIABLE_LEADTIME_HOUR
  531. inParam.put("BACKFLUSH_PART", backflushPart); // BACKFLUSH_PART
  532. inParam.put("ISSUE_TYPE", issueType); // ISSUE_TYPE
  533. inParam.put("OVER_REPORTING", overReporting); // OVER_REPORTING
  534. inParam.put("OVER_REPORT_TOLERANCE", overReportTolerance); // OVER_REPORT_TOLERANCE
  535. inParam.put("BY_PROD_AS_SUPPLY_IN_MRP_DB", byProdAsSupplyInMrpDb); // BY_PROD_AS_SUPPLY_IN_MRP_DB
  536. inParam.put("MRP_CONTROL_FLAG_DB", mrpControlFlagDb); // MRP_CONTROL_FLAG_DB
  537. inParam.put("USE_THEORITICAL_DENSITY_DB", useTheoriticalDensityDb); // USE_THEORITICAL_DENSITY_DB
  538. if(!density.equals("")) {
  539. inParam.put("DENSITY", density);
  540. }
  541. //执行check的操作
  542. Map<String, String> checkMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "MANUF_PART_ATTRIBUTE_API",
  543. "MODIFY__", PlsqlBaseMethodType.MODIFY, PlsqlBaseMethodAction.CHECK, inParam);
  544. //执行do的操作
  545. Map<String, String> resultMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "MANUF_PART_ATTRIBUTE_API",
  546. "MODIFY__", PlsqlBaseMethodType.MODIFY, PlsqlBaseMethodAction.DO, inParam);
  547. //返回结果集
  548. return resultMap;
  549. }
  550. /**
  551. * @description: 查询库存件的版本信息
  552. * @author LR
  553. * @date 2024/12/11 11:19
  554. * @version 1.0
  555. */
  556. public static Map<String, String> getInventoryPartRevision(Server srv, String contract, String partNo, String engChgLevel) throws APException {
  557. StringBuilder searchSql = new StringBuilder();
  558. searchSql.append("SELECT CONTRACT, PART_NO partNo, eng_chg_level, revision_text, OBJID ifsRowId, OBJVERSION ifsRowVersion");
  559. searchSql.append(" FROM IFSAPP.PART_REVISION");
  560. searchSql.append(" WHERE CONTRACT = :contract AND PART_NO = :partNo AND ENG_CHG_LEVEL = :engChgLevel");
  561. //设置查询的入参
  562. Map<String, String> inParam = new HashMap<>();
  563. inParam.put("contract", contract);
  564. inParam.put("partNo", partNo);
  565. inParam.put("engChgLevel", engChgLevel);
  566. //调用查询的通用方法
  567. RecordCollection recordCollection = IfsPlsqlUtils.execSqlSearchGetRecordCollection(srv, searchSql, inParam);
  568. //判断能否返回
  569. if (recordCollection == null) {
  570. return null;
  571. } else {
  572. Record recordData = recordCollection.get(0);
  573. Map<String, String> resultMap = IfsConverterToMap.ConverterIfsToMap(recordData);
  574. return resultMap;
  575. }
  576. }
  577. /**
  578. * @description: 插入库存件的版本
  579. * @author LR
  580. * @date 2024/12/11 11:21
  581. * @version 1.0
  582. */
  583. public static Map<String, String> insertInventoryPartRevision(Server srv, InventoryPartRevision inData) throws APException {
  584. //公共参数
  585. String contract = inData.getContract();
  586. String partNo = inData.getPartNo().toUpperCase();
  587. String engChgLevel = inData.getEngChgLevel();
  588. String revisionText = inData.getRevisionText();
  589. String effPhaseInDate = inData.getEffPhaseInDate().substring(0, 10)+"-00.00.00";
  590. String effPhaseOutDate = inData.getEffPhaseOutDate();
  591. //是否存在有效值
  592. if(effPhaseOutDate == null || effPhaseOutDate.equals("")) {
  593. effPhaseOutDate = "";
  594. }else {
  595. effPhaseOutDate = effPhaseOutDate.substring(0, 10)+"-00.00.00";
  596. }
  597. String engRevision = inData.getEngRevision();
  598. String engRevisionDesc = inData.getEngRevisionDesc();
  599. //入参
  600. Map<String, String> inParam = new HashMap<>();
  601. inParam.put("OBJID", "");
  602. inParam.put("OBJVERSION", "");
  603. inParam.put("CONTRACT", contract); // ifs域
  604. inParam.put("PART_NO", partNo); // 物料编码
  605. inParam.put("ENG_CHG_LEVEL", engChgLevel); // 版本信息
  606. inParam.put("REVISION_TEXT", revisionText); // 版本备注
  607. inParam.put("EFF_PHASE_IN_DATE", effPhaseInDate); // 启用日期
  608. inParam.put("EFF_PHASE_OUT_DATE", effPhaseOutDate); // 过期日期
  609. inParam.put("ENG_REVISION", engRevision); // ENG_REVISION
  610. inParam.put("ENG_REVISION_DESC", engRevisionDesc); // 版本描述
  611. inParam.put("EFFECTIVE_STATUS", "Not In Effect"); // 有效状态
  612. inParam.put("EFFECTIVE_REPAIR_STATUS", "Not In Effect"); // 有效维修状态
  613. inParam.put("PART_REVISION_LOCK", "Not locked"); // 版本锁
  614. inParam.put("PART_REVISION_REPORT", "No Report"); // 版本报告
  615. inParam.put("PART_REVISION_STATUS", "Not decided"); // 版本状态
  616. inParam.put("PART_REVISION_USAGE", "Unlimited"); // 版本使用
  617. //执行check的操作
  618. Map<String, String> checkMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "PART_REVISION_API",
  619. "NEW__", PlsqlBaseMethodType.NEW, PlsqlBaseMethodAction.CHECK, inParam);
  620. //执行do的操作
  621. Map<String, String> resultMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "PART_REVISION_API",
  622. "NEW__", PlsqlBaseMethodType.NEW, PlsqlBaseMethodAction.DO, inParam);
  623. //返回结果集
  624. return resultMap;
  625. }
  626. /**
  627. * @description: 修改库存件的版本
  628. * @author LR
  629. * @date 2024/12/11 11:23
  630. * @version 1.0
  631. */
  632. public static Map<String, String> modifyInventoryPartRevision(Server srv, InventoryPartRevision inData) throws APException {
  633. //公共参数
  634. String ifsRowId = inData.getIfsRowId();
  635. String ifsRowVersion = inData.getIfsRowVersion();
  636. String revisionText = inData.getRevisionText();
  637. String effPhaseInDate = inData.getEffPhaseInDate().substring(0, 10)+"-00.00.00";
  638. String effPhaseOutDate = inData.getEffPhaseOutDate();
  639. //是否存在有效值
  640. if(effPhaseOutDate == null || effPhaseOutDate.equals("")) {
  641. effPhaseOutDate = "";
  642. }else {
  643. effPhaseOutDate = effPhaseOutDate.substring(0, 10)+"-00.00.00";
  644. }
  645. String engRevision = inData.getEngRevision();
  646. String engRevisionDesc = inData.getEngRevisionDesc();
  647. //入参
  648. Map<String, String> inParam = new HashMap<>();
  649. //填充参数
  650. inParam.put("OBJID", ifsRowId);
  651. inParam.put("OBJVERSION", ifsRowVersion);
  652. inParam.put("REVISION_TEXT", revisionText); // 版本备注
  653. inParam.put("EFF_PHASE_IN_DATE", effPhaseInDate); // 启用日期
  654. inParam.put("EFF_PHASE_OUT_DATE", effPhaseOutDate); // 过期日期
  655. inParam.put("ENG_REVISION", engRevision); // ENG_REVISION
  656. inParam.put("ENG_REVISION_DESC", engRevisionDesc); // 版本描述
  657. //执行check的操作
  658. Map<String, String> checkMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "PART_REVISION_API",
  659. "MODIFY__", PlsqlBaseMethodType.MODIFY, PlsqlBaseMethodAction.CHECK, inParam);
  660. //执行do的操作
  661. Map<String, String> resultMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "PART_REVISION_API",
  662. "MODIFY__", PlsqlBaseMethodType.MODIFY, PlsqlBaseMethodAction.DO, inParam);
  663. //返回结果集
  664. return resultMap;
  665. }
  666. /**
  667. * @description: 删除库存件的版本信息
  668. * @author LR
  669. * @date 2024/12/11 11:25
  670. * @version 1.0
  671. */
  672. public static void removeInventoryPartRevision(Server srv, InventoryPartRevision inData) throws APException {
  673. //公共参数
  674. String ifsRowId = inData.getIfsRowId();
  675. String ifsRowVersion = inData.getIfsRowVersion();
  676. //入参
  677. Map<String, String> inParam = new HashMap<>();
  678. //填充参数
  679. inParam.put("OBJID", ifsRowId);
  680. inParam.put("OBJVERSION", ifsRowVersion);
  681. //执行存储过程 获取结果集
  682. //执行check的操作
  683. Map<String, String> checkMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "PART_REVISION_API",
  684. "REMOVE__", PlsqlBaseMethodType.REMOVE, PlsqlBaseMethodAction.CHECK, inParam);
  685. //执行do的操作
  686. Map<String, String> resultMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "PART_REVISION_API",
  687. "REMOVE__", PlsqlBaseMethodType.REMOVE, PlsqlBaseMethodAction.DO, inParam);
  688. }
  689. /**
  690. * @description: 查询库存件属性模版
  691. * @author LR
  692. * @date 2024/12/11 11:35
  693. * @version 1.0
  694. */
  695. public static Map<String, String> getInventoryPartCharacteristicTemplate(Server srv, String contract, String partNo) throws APException {
  696. StringBuilder searchSql = new StringBuilder();
  697. searchSql.append("SELECT CONTRACT, PART_NO partNo, eng_attribute, OBJID ifsRowId, OBJVERSION ifsRowVersion");
  698. searchSql.append(" FROM IFSAPP.INVENTORY_PART");
  699. searchSql.append(" WHERE CONTRACT = :contract AND PART_NO = :partNo");
  700. //设置查询的入参
  701. Map<String, String> inParam = new HashMap<>();
  702. inParam.put("contract", contract);
  703. inParam.put("partNo", partNo);
  704. //调用查询的通用方法
  705. RecordCollection recordCollection = IfsPlsqlUtils.execSqlSearchGetRecordCollection(srv, searchSql, inParam);
  706. //判断能否返回
  707. if (recordCollection == null) {
  708. return null;
  709. } else {
  710. Record recordData = recordCollection.get(0);
  711. Map<String, String> resultMap = IfsConverterToMap.ConverterIfsToMap(recordData);
  712. return resultMap;
  713. }
  714. }
  715. /**
  716. * @description: 修改库存件的属性模版
  717. * @author LR
  718. * @date 2024/12/11 11:42
  719. * @version 1.0
  720. */
  721. public static Map<String, String> modifyInventoryPartCharacteristicTemplate(Server srv, CharacteristicTemplate inData) throws APException {
  722. //公共参数
  723. String ifsRowId = inData.getIfsRowId();
  724. String ifsRowVersion = inData.getIfsRowVersion();
  725. String engAttribute = inData.getEngAttribute();
  726. //入参
  727. Map<String, String> inParam = new HashMap<>();
  728. //填充参数
  729. inParam.put("OBJID", ifsRowId);
  730. inParam.put("OBJVERSION", ifsRowVersion);
  731. inParam.put("ENG_ATTRIBUTE", engAttribute);
  732. //执行存储过程 获取结果集
  733. //执行check的操作
  734. Map<String, String> checkMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "INVENTORY_PART_API",
  735. "MODIFY__", PlsqlBaseMethodType.MODIFY, PlsqlBaseMethodAction.CHECK, inParam);
  736. //执行do的操作
  737. Map<String, String> resultMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "INVENTORY_PART_API",
  738. "MODIFY__", PlsqlBaseMethodType.MODIFY, PlsqlBaseMethodAction.DO, inParam);
  739. //返回结果集
  740. return resultMap;
  741. }
  742. /**
  743. * @description: 获取库存件的属性
  744. * @author LR
  745. * @date 2024/12/11 14:24
  746. * @version 1.0
  747. */
  748. public static Map<String, String> getInventoryPartCharacteristicCode(Server srv, String contract, String partNo, String characteristicCode) throws APException {
  749. StringBuilder searchSql = new StringBuilder();
  750. searchSql.append("SELECT OBJID ifsRowId, OBJVERSION ifsRowVersion, CONTRACT, PART_NO, CHARACTERISTIC_CODE,");
  751. searchSql.append(" ifsapp.CHARACTERISTIC_API.Get_Description(CHARACTERISTIC_CODE) characteristicDesc,");
  752. searchSql.append(" ATTR_VALUE_NUMERIC, ATTR_VALUE_ALPHA, UNIT_MEAS");
  753. searchSql.append(" FROM ifsapp.INVENTORY_PART_CHAR_ALL");
  754. searchSql.append(" WHERE CONTRACT = :contract and PART_NO = :partNo AND CHARACTERISTIC_CODE = :characteristicCode");
  755. //设置查询的入参
  756. Map<String, String> inParam = new HashMap<>();
  757. inParam.put("contract", contract);
  758. inParam.put("partNo", partNo);
  759. inParam.put("characteristicCode", characteristicCode);
  760. //调用查询的通用方法
  761. RecordCollection recordCollection = IfsPlsqlUtils.execSqlSearchGetRecordCollection(srv, searchSql, inParam);
  762. //判断能否返回
  763. if (recordCollection == null) {
  764. return null;
  765. } else {
  766. Record recordData = recordCollection.get(0);
  767. Map<String, String> resultMap = IfsConverterToMap.ConverterIfsToMap(recordData);
  768. return resultMap;
  769. }
  770. }
  771. /**
  772. * @description: 查询库存件的属性集合
  773. * @author LR
  774. * @date 2024/12/11 14:27
  775. * @version 1.0
  776. */
  777. public static List<CharacteristicCode> getInventoryPartCharacteristicCodes(Server srv, String contract, String partNo) throws APException {
  778. StringBuilder searchSql = new StringBuilder();
  779. searchSql.append("SELECT OBJID ifsRowId, OBJVERSION ifsRowVersion, CONTRACT, PART_NO, CHARACTERISTIC_CODE,");
  780. searchSql.append(" ifsapp.CHARACTERISTIC_API.Get_Description(CHARACTERISTIC_CODE) characteristicDesc,");
  781. searchSql.append(" ATTR_VALUE_NUMERIC, ATTR_VALUE_ALPHA, UNIT_MEAS");
  782. searchSql.append(" FROM ifsapp.INVENTORY_PART_CHAR_ALL");
  783. searchSql.append(" WHERE CONTRACT = :contract and PART_NO = :partNo");
  784. //设置查询的入参
  785. Map<String, String> inParam = new HashMap<>();
  786. inParam.put("contract", contract);
  787. inParam.put("partNo", partNo);
  788. //调用查询的通用方法
  789. RecordCollection recordCollection = IfsPlsqlUtils.execSqlSearchGetRecordCollection(srv, searchSql, inParam);
  790. //判断能否返回
  791. if (recordCollection == null) {
  792. return null;
  793. } else {
  794. List<CharacteristicCode > resultItems = new ArrayList<>();
  795. List<Map<String, String>> resultList = IfsConverterToMap.ConverterIfsToList(recordCollection);
  796. //判断是否存在数据
  797. if(resultList == null) {
  798. return resultItems;
  799. }
  800. //获取数据转bean
  801. for (int i = 0; i < resultList.size(); i++) {
  802. Map<String, String> tempMap = resultList.get(i);
  803. CharacteristicCode tempItem = new CharacteristicCode();
  804. //设置参数
  805. tempItem.setIfsRowId(tempMap.get("IFSROWID"));
  806. tempItem.setIfsRowVersion(tempMap.get("IFSROWVERSION"));
  807. tempItem.setContract(tempMap.get("CONTRACT"));
  808. tempItem.setPartNo(tempMap.get("PART_NO"));
  809. tempItem.setCharacteristicCode(tempMap.get("CHARACTERISTIC_CODE"));
  810. tempItem.setCharacteristicDesc(tempMap.get("CHARACTERISTICDESC")); // 这个是通过函数获取的描述
  811. tempItem.setAttrValueNumeric(tempMap.get("ATTR_VALUE_NUMERIC"));
  812. tempItem.setAttrValueAlpha(tempMap.get("ATTR_VALUE_ALPHA"));
  813. tempItem.setUnitMeas(tempMap.get("UNIT_MEAS"));
  814. //添加对象
  815. resultItems.add(tempItem);
  816. }
  817. return resultItems;
  818. }
  819. }
  820. /**
  821. * @description: 插入库存件的属性
  822. * @author LR
  823. * @date 2024/12/11 14:31
  824. * @version 1.0
  825. */
  826. public static Map<String, String> insertInventoryPartCharacteristicCode(Server srv, CharacteristicCode inData) throws APException {
  827. //公共参数
  828. String contract = inData.getContract();
  829. String partNo = inData.getPartNo().toUpperCase();
  830. String characteristicCode = inData.getCharacteristicCode();
  831. String unitMeas = inData.getUnitMeas();
  832. String attrValueNumeric = inData.getAttrValueNumeric();
  833. String attrValueAlpha = inData.getAttrValueAlpha();
  834. String characteristicType = inData.getCharacteristicType();
  835. //入参
  836. Map<String, String> inParam = new HashMap<>();
  837. inParam.put("OBJID", "");
  838. inParam.put("OBJVERSION", "");
  839. inParam.put("CONTRACT", contract);
  840. inParam.put("PART_NO", partNo);
  841. inParam.put("CHARACTERISTIC_CODE", characteristicCode);
  842. inParam.put("UNIT_MEAS", unitMeas);
  843. //区分类型
  844. if ("Alpha".equals(characteristicType)) {
  845. inParam.put("ATTR_VALUE_ALPHA", attrValueAlpha);
  846. } else if ("Numeric".equals(characteristicType)) {
  847. inParam.put("ATTR_VALUE_NUMERIC", attrValueNumeric);
  848. }
  849. //执行check的操作
  850. Map<String, String> checkMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "INVENTORY_PART_CHAR_API",
  851. "NEW__", PlsqlBaseMethodType.NEW, PlsqlBaseMethodAction.CHECK, inParam);
  852. //执行do的操作
  853. Map<String, String> resultMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "INVENTORY_PART_CHAR_API",
  854. "NEW__", PlsqlBaseMethodType.NEW, PlsqlBaseMethodAction.DO, inParam);
  855. //返回结果集
  856. return resultMap;
  857. }
  858. /**
  859. * @description: 修改库存件的属性
  860. * @author LR
  861. * @date 2024/12/11 14:37
  862. * @version 1.0
  863. */
  864. public static Map<String, String> modifyInventoryPartCharacteristicCode(Server srv, CharacteristicCode inData) throws APException {
  865. //公共参数
  866. String ifsRowId = inData.getIfsRowId();
  867. String ifsRowVersion = inData.getIfsRowVersion();
  868. String attrValueNumeric = inData.getAttrValueNumeric();
  869. String attrValueAlpha = inData.getAttrValueAlpha();
  870. String characteristicType = inData.getCharacteristicType();
  871. //入参
  872. Map<String, String> inParam = new HashMap<>();
  873. inParam.put("OBJID", ifsRowId);
  874. inParam.put("OBJVERSION", ifsRowVersion);
  875. //区分类型
  876. if ("Alpha".equals(characteristicType)) {
  877. inParam.put("ATTR_VALUE_ALPHA", attrValueAlpha);
  878. } else if ("Numeric".equals(characteristicType)) {
  879. inParam.put("ATTR_VALUE_NUMERIC", attrValueNumeric);
  880. }
  881. //执行check的操作
  882. Map<String, String> checkMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "INVENTORY_PART_CHAR_API",
  883. "MODIFY__", PlsqlBaseMethodType.MODIFY, PlsqlBaseMethodAction.CHECK, inParam);
  884. //执行do的操作
  885. Map<String, String> resultMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "INVENTORY_PART_CHAR_API",
  886. "MODIFY__", PlsqlBaseMethodType.MODIFY, PlsqlBaseMethodAction.DO, inParam);
  887. //返回结果集
  888. return resultMap;
  889. }
  890. /**
  891. * @description: 删除库存件的属性
  892. * @author LR
  893. * @date 2024/12/11 14:38
  894. * @version 1.0
  895. */
  896. public static Map<String, String> removeInventoryPartCharacteristic(Server srv, CharacteristicCode inData) throws APException {
  897. //公共参数
  898. String ifsRowId = inData.getIfsRowId();
  899. String ifsRowVersion = inData.getIfsRowVersion();
  900. //入参
  901. Map<String, String> inParam = new HashMap<>();
  902. inParam.put("OBJID", ifsRowId);
  903. inParam.put("OBJVERSION", ifsRowVersion);
  904. //执行check的操作
  905. Map<String, String> checkMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "INVENTORY_PART_CHAR_API",
  906. "REMOVE__", PlsqlBaseMethodType.REMOVE, PlsqlBaseMethodAction.CHECK, inParam);
  907. //执行do的操作
  908. Map<String, String> resultMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "INVENTORY_PART_CHAR_API",
  909. "REMOVE__", PlsqlBaseMethodType.REMOVE, PlsqlBaseMethodAction.DO, inParam);
  910. //返回结果集
  911. return resultMap;
  912. }
  913. /**
  914. * @description: 获取copy part的事件编码
  915. * @author LR
  916. * @date 2024/12/9 15:56
  917. * @version 1.0
  918. */
  919. public static Map<String, String> getCopyPartEventNo(Server srv) throws APException {
  920. //填充参数
  921. List<IfsParamBean> inParams = new ArrayList<>();
  922. List<IfsParamBean> outParams = new ArrayList<>();
  923. //设置入参和出参
  924. inParams.add(new IfsParamBean("DEFAULT", "TEXT", "FALSE"));
  925. outParams.add(new IfsParamBean("EVENT_NO", "NUMBER", ""));
  926. //调用特殊的存储过程
  927. Map<String, String> resultMap = IfsPlsqlUtils.execProcedureGetRecord(srv,
  928. "Part_Copy_Manager_Partca_API",
  929. "Generate_Copy_Event_Parameters", inParams, outParams);
  930. //返回结果集
  931. return resultMap;
  932. }
  933. /**
  934. * @description: 执行查询的sql语句 获取明细的数据
  935. * @author LR
  936. * @date 2024/12/9 16:35
  937. * @version 1.0
  938. */
  939. public static List<CopyPartItem> getCopyPartItemsByEventNo(Server srv, String eventNo) throws APException {
  940. StringBuilder searchSql = new StringBuilder();
  941. searchSql.append("SELECT OBJID ifsRowId, OBJVERSION ifsRowVersion, ENABLED_DB, CANCEL_WHEN_NO_SOURCE_DB, CANCEL_WHEN_EXISTING_COPY_DB,");
  942. searchSql.append(" ifsapp.Part_Copy_Module_Dataset_API.Get_Dataset_Description(MODULE, DATASET_ID) copyDesc, DATASET_ID, MODULE");
  943. searchSql.append(" FROM ifsapp.PART_COPY_EVENT_PARAMETER_EXT");
  944. searchSql.append(" WHERE EVENT_NO = :eventNo");
  945. searchSql.append(" ORDER BY EXECUTION_ORDER, PRESENTATION_ORDER");
  946. //设置查询的入参
  947. Map<String, String> inParam = new HashMap<>();
  948. inParam.put("eventNo", eventNo);
  949. //调用查询的通用方法
  950. RecordCollection recordCollection = IfsPlsqlUtils.execSqlSearchGetRecordCollection(srv, searchSql, inParam);
  951. //判断能否返回
  952. if (recordCollection == null) {
  953. return null;
  954. } else {
  955. List<CopyPartItem> resultItems = new ArrayList<>();
  956. //调用通用的处理方法 返回Map
  957. List<Map<String, String>> resultList = IfsConverterToMap.ConverterIfsToList(recordCollection);
  958. //获取数据转bean
  959. for (int i = 0; i < resultList.size(); i++) {
  960. Map<String, String> tempMap = resultList.get(i);
  961. CopyPartItem tempItem = new CopyPartItem();
  962. //设置参数
  963. tempItem.setIfsRowId(tempMap.get("IFSROWID"));
  964. tempItem.setIfsRowVersion(tempMap.get("IFSROWVERSION"));
  965. tempItem.setCopyDesc(tempMap.get("COPYDESC"));
  966. //添加对象
  967. resultItems.add(tempItem);
  968. }
  969. return resultItems;
  970. }
  971. }
  972. /**
  973. * @description: 修改Copy Part的选项
  974. * @author LR
  975. * @date 2024/12/9 17:13
  976. * @version 1.0
  977. */
  978. public static void modifyIfsCopyPartItem(Server srv, String ifsRowId, String ifsRowVersion, String enabledDb, String cancelWhenExistingCopyDb) throws APException {
  979. Map<String, String> inParam = new HashMap<>();
  980. //填充参数
  981. inParam.put("OBJID", ifsRowId);
  982. inParam.put("OBJVERSION", ifsRowVersion);
  983. inParam.put("ENABLED_DB", enabledDb);
  984. inParam.put("CANCEL_WHEN_NO_SOURCE_DB", "FALSE");
  985. inParam.put("CANCEL_WHEN_EXISTING_COPY_DB", cancelWhenExistingCopyDb);
  986. //执行存储过程 获取结果集
  987. Map<String, String> resultMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "PART_COPY_EVENT_PARAMETER_API",
  988. "MODIFY__", PlsqlBaseMethodType.MODIFY, PlsqlBaseMethodAction.DO, inParam);
  989. }
  990. /**
  991. * @description: 处理库存件的 Copy Part功能
  992. * @author LR
  993. * @date 2024/12/10 17:53
  994. * @version 1.0
  995. */
  996. public static void processIfsCopyPart(Server srv, String oriContract, String oriPartNo, String contract,
  997. String partNo, String partDesc, String jobFalse, String eventNo) throws APException {
  998. //填充参数
  999. List<IfsParamBean> inParams = new ArrayList<>();
  1000. List<IfsParamBean> outParams = new ArrayList<>();
  1001. //设置入参和出参
  1002. inParams.add(new IfsParamBean("FROM_CONTRACT", "TEXT", oriContract));
  1003. inParams.add(new IfsParamBean("FROM_PART_NO", "TEXT", oriPartNo));
  1004. inParams.add(new IfsParamBean("TO_CONTRACT", "TEXT", contract));
  1005. inParams.add(new IfsParamBean("TO_PART_NO", "TEXT", partNo));
  1006. inParams.add(new IfsParamBean("TO_PART_DESC", "TEXT", partDesc));
  1007. inParams.add(new IfsParamBean("IS_BACKGROUND_JOB", "TEXT", jobFalse));
  1008. inParams.add(new IfsParamBean("EVENT_NO", "TEXT", eventNo));
  1009. //调用特殊的存储过程
  1010. Map<String, String> resultMap = IfsPlsqlUtils.execProcedureGetRecord(srv,
  1011. "Part_Copy_Manager_Partca_API", "Copy", inParams, outParams);
  1012. }
  1013. }