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.

1230 lines
60 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
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. 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: Routing的api
  10. * @author LR
  11. * @date 2024/12/9 10:56
  12. * @version 1.0
  13. */
  14. public class RoutingApi {
  15. /**
  16. * @description: 查询Routing Header
  17. * @author LR
  18. * @date 2024/12/11 14:45
  19. * @version 1.0
  20. */
  21. public static Map<String, String> getRoutingHeader(Server srv, String contract, String partNo, String routingRevision, String routingType) throws APException {
  22. StringBuilder searchSql = new StringBuilder();
  23. searchSql.append("SELECT OBJID ifsRowId, OBJVERSION ifsRowVersion, CONTRACT, PART_NO, BOM_TYPE routingType, ROUTING_REVISION,");
  24. searchSql.append(" PHASE_IN_DATE, PHASE_OUT_DATE, NOTE_TEXT");
  25. searchSql.append(" FROM IFSAPP.ROUTING_HEAD");
  26. searchSql.append(" WHERE CONTRACT = :contract AND PART_NO = :partNo AND ROUTING_REVISION = :routingRevision AND BOM_TYPE = :routingType");
  27. //设置查询的入参
  28. Map<String, String> inParam = new HashMap<>();
  29. inParam.put("contract", contract);
  30. inParam.put("partNo", partNo);
  31. inParam.put("routingRevision", routingRevision);
  32. inParam.put("routingType", routingType);
  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: 查询Routing的主表数据
  46. * @author LR
  47. * @date 2024/12/12 17:48
  48. * @version 1.0
  49. */
  50. public static List<RoutingIfsHeader> getRoutingHeadersByPartNo(Server srv, String contract, String partNo) throws APException {
  51. StringBuilder searchSql = new StringBuilder();
  52. searchSql.append("SELECT OBJID ifsRowId, OBJVERSION ifsRowVersion, CONTRACT, PART_NO, BOM_TYPE, ROUTING_REVISION,");
  53. searchSql.append(" PHASE_IN_DATE, PHASE_OUT_DATE, NOTE_TEXT");
  54. searchSql.append(" FROM IFSAPP.ROUTING_HEAD");
  55. searchSql.append(" WHERE CONTRACT = :contract AND PART_NO = :partNo");
  56. //设置查询的入参
  57. Map<String, String> inParam = new HashMap<>();
  58. inParam.put("contract", contract);
  59. inParam.put("partNo", partNo);
  60. //调用查询的通用方法
  61. RecordCollection recordCollection = IfsPlsqlUtils.execSqlSearchGetRecordCollection(srv, searchSql, inParam);
  62. //判断能否返回
  63. if (recordCollection == null) {
  64. return new ArrayList<>();
  65. } else {
  66. List<RoutingIfsHeader> resultItems = new ArrayList<>();
  67. //调用通用的处理方法 返回Map
  68. List<Map<String, String>> resultList = IfsConverterToMap.ConverterIfsToList(recordCollection);
  69. //判断是否存在数据
  70. if(resultList == null) {
  71. return resultItems;
  72. }
  73. //获取数据转bean
  74. for (int i = 0; i < resultList.size(); i++) {
  75. Map<String, String> tempMap = resultList.get(i);
  76. RoutingIfsHeader tempItem = new RoutingIfsHeader();
  77. //设置参数
  78. tempItem.setIfsRowId(tempMap.get("IFSROWID"));
  79. tempItem.setIfsRowVersion(tempMap.get("IFSROWVERSION"));
  80. tempItem.setContract(tempMap.get("CONTRACT"));
  81. tempItem.setPartNo(tempMap.get("PART_NO"));
  82. tempItem.setRoutingType(tempMap.get("BOM_TYPE"));
  83. tempItem.setRoutingRevision(tempMap.get("ROUTING_REVISION"));
  84. tempItem.setPhaseInDate(tempMap.get("PHASE_IN_DATE")); // 如果 PHASE_IN_DATE 是日期类型,请确保进行适当的类型转换
  85. tempItem.setPhaseOutDate(tempMap.get("PHASE_OUT_DATE")); //
  86. tempItem.setNoteText(tempMap.get("NOTE_TEXT"));
  87. //添加对象
  88. resultItems.add(tempItem);
  89. }
  90. return resultItems;
  91. }
  92. }
  93. /**
  94. * @description: 插入Bom Header的主表
  95. * @author LR
  96. * @date 2024/12/11 15:08
  97. * @version 1.0
  98. */
  99. public static Map<String, String> insertRoutingHeader(Server srv, RoutingIfsHeader inData) throws APException {
  100. //公共参数
  101. //公共参数
  102. String contract = inData.getContract();// 域
  103. String partNo = inData.getPartNo();// 物料编码
  104. String routingRevision = inData.getRoutingRevision();// 版本
  105. String routingType = inData.getRoutingType();
  106. String phaseInDate = inData.getPhaseInDate().substring(0, 10)+"-00.00.00";// 启用时间-年月日
  107. String phaseOutDate = inData.getPhaseOutDate();// 结束时间-年月日
  108. if(phaseOutDate == null || phaseOutDate.equals("")) {
  109. phaseOutDate = "";
  110. }else {
  111. phaseOutDate = phaseOutDate+"-00.00.00";
  112. }
  113. String noteText = inData.getNoteText();// 备注
  114. //入参
  115. Map<String, String> inParam = new HashMap<>();
  116. //填充参数
  117. inParam.put("OBJID", "");
  118. inParam.put("OBJVERSION", "");
  119. inParam.put("PART_NO", partNo); // 物料编码
  120. inParam.put("CONTRACT", contract); // 域
  121. inParam.put("ROUTING_REVISION", routingRevision); // 物料的版本
  122. inParam.put("BOM_TYPE", routingType); // routing类型
  123. inParam.put("PHASE_IN_DATE", phaseInDate); // 启用日期
  124. inParam.put("PHASE_OUT_DATE", phaseOutDate); // 到期时间
  125. inParam.put("NOTE_TEXT", noteText); // 备注
  126. //执行check的操作
  127. Map<String, String> checkMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "ROUTING_HEAD_API",
  128. "NEW__", PlsqlBaseMethodType.NEW, PlsqlBaseMethodAction.CHECK, inParam);
  129. //执行do的操作
  130. Map<String, String> resultMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "ROUTING_HEAD_API",
  131. "NEW__", PlsqlBaseMethodType.NEW, PlsqlBaseMethodAction.DO, inParam);
  132. //返回结果集
  133. return resultMap;
  134. }
  135. /**
  136. * @description: 修改Bom Header的主表信息
  137. * @author LR
  138. * @date 2024/12/11 15:32
  139. * @version 1.0
  140. */
  141. public static Map<String, String> modifyRoutingHeader(Server srv, RoutingIfsHeader inData) throws APException {
  142. //公共参数
  143. String ifsRowId = inData.getIfsRowId();//
  144. String ifsRowVersion = inData.getIfsRowVersion();//
  145. //判断是否存在问题
  146. String phaseInDate = inData.getPhaseInDate().substring(0, 10)+"-00.00.00";// 启用时间-年月日
  147. String phaseOutDate = inData.getPhaseOutDate();// 结束时间-年月日
  148. if(phaseOutDate == null || phaseOutDate.equals("")) {
  149. phaseOutDate = "";
  150. }else {
  151. phaseOutDate = phaseOutDate+"-00.00.00";
  152. }
  153. String noteText = inData.getNoteText();// 备注
  154. //入参
  155. Map<String, String> inParam = new HashMap<>();
  156. //填充参数
  157. inParam.put("OBJID", ifsRowId);
  158. inParam.put("OBJVERSION", ifsRowVersion);
  159. inParam.put("PHASE_IN_DATE", phaseInDate); // 启用日期
  160. inParam.put("PHASE_OUT_DATE", phaseOutDate); // 到期时间
  161. inParam.put("NOTE_TEXT", noteText); // 备注
  162. //执行check的操作
  163. Map<String, String> checkMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "ROUTING_HEAD_API",
  164. "MODIFY__", PlsqlBaseMethodType.MODIFY, PlsqlBaseMethodAction.CHECK, inParam);
  165. //执行do的操作
  166. Map<String, String> resultMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "ROUTING_HEAD_API",
  167. "MODIFY__", PlsqlBaseMethodType.MODIFY, PlsqlBaseMethodAction.DO, inParam);
  168. //返回结果集
  169. return resultMap;
  170. }
  171. /**
  172. * @description: 删除Bom的主表信息
  173. * @author LR
  174. * @date 2024/12/11 15:33
  175. * @version 1.0
  176. */
  177. public static Map<String, String> removeRoutingHeader(Server srv, RoutingIfsHeader inData) throws APException {
  178. //公共参数
  179. String ifsRowId = inData.getIfsRowId();
  180. String ifsRowVersion = inData.getIfsRowVersion();
  181. //入参
  182. Map<String, String> inParam = new HashMap<>();
  183. //填充参数
  184. inParam.put("OBJID", ifsRowId);
  185. inParam.put("OBJVERSION", ifsRowVersion);
  186. //执行check的操作
  187. Map<String, String> checkMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "ROUTING_HEAD_API",
  188. "REMOVE__", PlsqlBaseMethodType.REMOVE, PlsqlBaseMethodAction.CHECK, inParam);
  189. //执行do的操作
  190. Map<String, String> resultMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "ROUTING_HEAD_API",
  191. "REMOVE__", PlsqlBaseMethodType.REMOVE, PlsqlBaseMethodAction.DO, inParam);
  192. //返回结果集
  193. return resultMap;
  194. }
  195. /**
  196. * @description: 查询Bom的替代
  197. * @author LR
  198. * @date 2024/12/11 14:48
  199. * @version 1.0
  200. */
  201. public static Map<String, String> getRoutingAlternative(Server srv, String contract, String partNo, String routingRevision, String routingType, String alternativeNo) throws APException {
  202. StringBuilder searchSql = new StringBuilder();
  203. searchSql.append("SELECT OBJID ifsRowId, OBJVERSION ifsRowVersion, CONTRACT, PART_NO, BOM_TYPE routingType, ROUTING_REVISION,");
  204. searchSql.append(" ALTERNATIVE_NO, NOTE_TEXT");
  205. searchSql.append(" FROM IFSAPP.ROUTING_ALTERNATE");
  206. searchSql.append(" WHERE CONTRACT = :contract AND PART_NO = :partNo AND ROUTING_REVISION = :routingRevision AND BOM_TYPE = :routingType AND ALTERNATIVE_NO = :alternativeNo");
  207. //设置查询的入参
  208. Map<String, String> inParam = new HashMap<>();
  209. inParam.put("contract", contract);
  210. inParam.put("partNo", partNo);
  211. inParam.put("routingRevision", routingRevision);
  212. inParam.put("routingType", routingType);
  213. inParam.put("alternativeNo", alternativeNo);
  214. //调用查询的通用方法
  215. RecordCollection recordCollection = IfsPlsqlUtils.execSqlSearchGetRecordCollection(srv, searchSql, inParam);
  216. //判断能否返回
  217. if (recordCollection == null) {
  218. return null;
  219. } else {
  220. Record recordData = recordCollection.get(0);
  221. Map<String, String> resultMap = IfsConverterToMap.ConverterIfsToMap(recordData);
  222. return resultMap;
  223. }
  224. }
  225. /**
  226. * @description: 插入Bom Alternative
  227. * @author LR
  228. * @date 2024/12/11 15:45
  229. * @version 1.0
  230. */
  231. public static Map<String, String> insertRoutingAlternative(Server srv, RoutingIfsAlternative inData) throws APException {
  232. //公共参数
  233. //公共参数
  234. String contract = inData.getContract();// 域
  235. String partNo = inData.getPartNo();// 物料编码
  236. String routingRevision = inData.getRoutingRevision();// 版本
  237. String routingType = inData.getRoutingType();// 分类
  238. String alternativeNo = inData.getAlternativeNo();
  239. String alternativeDesc = inData.getAlternativeDesc();
  240. String noteText = inData.getNoteText();// 备注
  241. //入参
  242. Map<String, String> inParam = new HashMap<>();
  243. //填充参数
  244. inParam.put("OBJID", "");
  245. inParam.put("OBJVERSION", "");
  246. inParam.put("PART_NO", partNo); // 物料编码
  247. inParam.put("CONTRACT", contract); // 域
  248. inParam.put("ROUTING_REVISION", routingRevision); // 物料的版本
  249. inParam.put("BOM_TYPE", routingType); // BOM类型
  250. inParam.put("ALTERNATIVE_NO", alternativeNo); // 替代编码
  251. inParam.put("ALTERNATIVE_DESCRIPTION", alternativeDesc); // 替代编码描述
  252. inParam.put("FIXED_LEADTIME_DAY", "0"); // 固定值
  253. inParam.put("VARIABLE_LEADTIME_DAY", "0"); // 固定值
  254. inParam.put("FIXED_LEADTIME_HOUR", "0"); // 固定值
  255. inParam.put("VARIABLE_LEADTIME_HOUR", "0"); // 固定值
  256. inParam.put("NOTE_TEXT", noteText); // 备注
  257. //执行check的操作
  258. Map<String, String> checkMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "ROUTING_ALTERNATE_API",
  259. "NEW__", PlsqlBaseMethodType.NEW, PlsqlBaseMethodAction.CHECK, inParam);
  260. //执行do的操作
  261. Map<String, String> resultMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "ROUTING_ALTERNATE_API",
  262. "NEW__", PlsqlBaseMethodType.NEW, PlsqlBaseMethodAction.DO, inParam);
  263. //返回结果集
  264. return resultMap;
  265. }
  266. /**
  267. * @description: 修改Routing Alternative
  268. * @author LR
  269. * @date 2024/12/11 15:47
  270. * @version 1.0
  271. */
  272. public static Map<String, String> modifyRoutingAlternative(Server srv, RoutingIfsAlternative inData) throws APException {
  273. //公共参数
  274. String ifsRowId = inData.getIfsRowId();//
  275. String ifsRowVersion = inData.getIfsRowVersion();//
  276. String alternativeDesc = inData.getAlternativeDesc();
  277. String noteText = inData.getNoteText();// 备注
  278. //入参
  279. Map<String, String> inParam = new HashMap<>();
  280. //填充参数
  281. inParam.put("OBJID", ifsRowId);
  282. inParam.put("OBJVERSION", ifsRowVersion);
  283. inParam.put("ALTERNATIVE_DESCRIPTION", alternativeDesc); // 替代编码描述
  284. inParam.put("NOTE_TEXT", noteText); // 备注
  285. //执行check的操作
  286. Map<String, String> checkMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "ROUTING_ALTERNATE_API",
  287. "MODIFY__", PlsqlBaseMethodType.MODIFY, PlsqlBaseMethodAction.CHECK, inParam);
  288. //执行do的操作
  289. Map<String, String> resultMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "ROUTING_ALTERNATE_API",
  290. "MODIFY__", PlsqlBaseMethodType.MODIFY, PlsqlBaseMethodAction.DO, inParam);
  291. //返回结果集
  292. return resultMap;
  293. }
  294. /**
  295. * @description: 删除Routing Alternative
  296. * @author LR
  297. * @date 2024/12/11 15:51
  298. * @version 1.0
  299. */
  300. public static void removeRoutingAlternative(Server srv, RoutingIfsAlternative inData) throws APException {
  301. //公共参数
  302. String ifsRowId = inData.getIfsRowId();// 域
  303. String ifsRowVersion = inData.getIfsRowVersion();// 物料编码
  304. //入参
  305. Map<String, String> inParam = new HashMap<>();
  306. //填充参数
  307. inParam.put("OBJID", ifsRowId);
  308. inParam.put("OBJVERSION", ifsRowVersion);
  309. //执行check的操作
  310. Map<String, String> checkMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "ROUTING_ALTERNATE_API",
  311. "REMOVE__", PlsqlBaseMethodType.REMOVE, PlsqlBaseMethodAction.CHECK, inParam);
  312. //执行do的操作
  313. Map<String, String> resultMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "ROUTING_ALTERNATE_API",
  314. "REMOVE__", PlsqlBaseMethodType.REMOVE, PlsqlBaseMethodAction.DO, inParam);
  315. }
  316. /**
  317. * @description: Build Routing Alternative
  318. * @author LR
  319. * @date 2024/12/11 15:53
  320. * @version 1.0
  321. */
  322. public static Map<String, String> buildRoutingAlternative(Server srv, RoutingIfsAlternative inData) throws APException {
  323. //公共参数
  324. String ifsRowId = inData.getIfsRowId();// 域
  325. String ifsRowVersion = inData.getIfsRowVersion();// 物料编码
  326. //入参
  327. Map<String, String> inParam = new HashMap<>();
  328. //填充参数
  329. inParam.put("OBJID", ifsRowId);
  330. inParam.put("OBJVERSION", ifsRowVersion);
  331. //执行check的操作
  332. Map<String, String> checkMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "ROUTING_ALTERNATE_API",
  333. "BUILD__", PlsqlBaseMethodType.MODIFY, PlsqlBaseMethodAction.CHECK, inParam);
  334. //执行do的操作
  335. Map<String, String> resultMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "ROUTING_ALTERNATE_API",
  336. "BUILD__", PlsqlBaseMethodType.MODIFY, PlsqlBaseMethodAction.DO, inParam);
  337. //返回结果集
  338. return resultMap;
  339. }
  340. /**
  341. * @description: retire Routing Alternative
  342. * @author LR
  343. * @date 2024/12/11 15:55
  344. * @version 1.0
  345. */
  346. public static Map<String, String> retireRoutingAlternative(Server srv, RoutingIfsAlternative inData) throws APException {
  347. //公共参数
  348. String ifsRowId = inData.getIfsRowId();// 域
  349. String ifsRowVersion = inData.getIfsRowVersion();// 物料编码
  350. //入参
  351. Map<String, String> inParam = new HashMap<>();
  352. //填充参数
  353. inParam.put("OBJID", ifsRowId);
  354. inParam.put("OBJVERSION", ifsRowVersion);
  355. //执行check的操作
  356. Map<String, String> checkMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "ROUTING_ALTERNATE_API",
  357. "RETIRE__", PlsqlBaseMethodType.MODIFY, PlsqlBaseMethodAction.CHECK, inParam);
  358. //执行do的操作
  359. Map<String, String> resultMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "ROUTING_ALTERNATE_API",
  360. "RETIRE__", PlsqlBaseMethodType.MODIFY, PlsqlBaseMethodAction.DO, inParam);
  361. //返回结果集
  362. return resultMap;
  363. }
  364. /**
  365. * @description: 获取Routing Item
  366. * @author LR
  367. * @date 2024/12/11 16:12
  368. * @version 1.0
  369. */
  370. public static Map<String, String> getRoutingItem(Server srv, String ifsRowId, String ifsRowVersion) throws APException {
  371. StringBuilder searchSql = new StringBuilder();
  372. searchSql.append("SELECT OBJID ifsRowId, OBJVERSION ifsRowVersion, CONTRACT, PART_NO, ROUTING_REVISION, BOM_TYPE routingType,");
  373. searchSql.append(" ALTERNATIVE_NO, OPERATION_NO, OPERATION_ID");
  374. searchSql.append(" FROM IFSAPP.ROUTING_OPERATION");
  375. searchSql.append(" WHERE OBJID = :ifsRowId");
  376. //设置查询的入参
  377. Map<String, String> inParam = new HashMap<>();
  378. inParam.put("ifsRowId", ifsRowId);
  379. inParam.put("ifsRowVersion", ifsRowVersion);
  380. //调用查询的通用方法
  381. RecordCollection recordCollection = IfsPlsqlUtils.execSqlSearchGetRecordCollection(srv, searchSql, inParam);
  382. //判断能否返回
  383. if (recordCollection == null) {
  384. return null;
  385. } else {
  386. Record recordData = recordCollection.get(0);
  387. Map<String, String> resultMap = IfsConverterToMap.ConverterIfsToMap(recordData);
  388. return resultMap;
  389. }
  390. }
  391. /**
  392. * @description: 获取Routing Items
  393. * @author LR
  394. * @date 2024/12/11 16:16
  395. * @version 1.0
  396. */
  397. public static List<Map<String, String>> getRoutingItemMaps(Server srv, String contract, String partNo, String routingRevision, String routingType,
  398. String alternativeNo, String operationNo) throws APException {
  399. StringBuilder searchSql = new StringBuilder();
  400. searchSql.append("SELECT CONTRACT, PART_NO, ROUTING_REVISION, BOM_TYPE, ALTERNATIVE_NO,");
  401. searchSql.append(" OPERATION_NO, OPERATION_DESCRIPTION operationDesc, WORK_CENTER_NO, EFFICIENCY_FACTOR, MACH_SETUP_TIME,");
  402. searchSql.append(" MACH_RUN_FACTOR, RUN_TIME_CODE, LABOR_RUN_FACTOR, LABOR_SETUP_TIME, CREW_SIZE, SETUP_CREW_SIZE,");
  403. searchSql.append(" OPERATION_ID, MACHINE_NO, OUTSIDE_OP_ITEM, LABOR_CLASS_NO, SETUP_LABOR_CLASS_NO,");
  404. searchSql.append(" OVERLAP, NOTE_TEXT, objid ifsRowId, objversion ifsRowVersion");
  405. searchSql.append(" FROM ifsapp.ROUTING_OPERATION");
  406. searchSql.append(" WHERE CONTRACT = :contract AND PART_NO = :partNo AND ROUTING_REVISION = :routingRevision AND BOM_TYPE = :routingType");
  407. searchSql.append(" AND ALTERNATIVE_NO = :alternativeNo");
  408. //设置查询的入参
  409. Map<String, String> inParam = new HashMap<>();
  410. inParam.put("contract", contract);
  411. inParam.put("partNo", partNo);
  412. inParam.put("routingRevision", routingRevision);
  413. inParam.put("routingType", routingType);
  414. inParam.put("alternativeNo", alternativeNo);
  415. //添加判断的查询条件
  416. if(!(null == operationNo || "".equals(operationNo))) {
  417. searchSql.append(" AND OPERATION_NO = :operationNo");
  418. inParam.put("operationNo", operationNo);
  419. }
  420. //调用查询的通用方法
  421. RecordCollection recordCollection = IfsPlsqlUtils.execSqlSearchGetRecordCollection(srv, searchSql, inParam);
  422. //判断能否返回
  423. if (recordCollection == null) {
  424. return new ArrayList<>();
  425. } else {
  426. List<Map<String, String>> resultList = IfsConverterToMap.ConverterIfsToList(recordCollection);
  427. return resultList;
  428. }
  429. }
  430. /**
  431. * @description: 查询Routing Item
  432. * @author LR
  433. * @date 2024/12/13 13:35
  434. * @version 1.0
  435. */
  436. public static List<RoutingIfsItem> getRoutingItems(Server srv, String contract, String partNo, String routingRevision, String routingType,
  437. String alternativeNo, String operationNo) throws APException {
  438. StringBuilder searchSql = new StringBuilder();
  439. searchSql.append("SELECT CONTRACT, PART_NO, ROUTING_REVISION, BOM_TYPE, ALTERNATIVE_NO,");
  440. searchSql.append(" OPERATION_NO, OPERATION_DESCRIPTION operationDesc, WORK_CENTER_NO, EFFICIENCY_FACTOR, MACH_SETUP_TIME,");
  441. searchSql.append(" MACH_RUN_FACTOR, RUN_TIME_CODE, LABOR_RUN_FACTOR, LABOR_SETUP_TIME, CREW_SIZE, SETUP_CREW_SIZE,");
  442. searchSql.append(" OPERATION_ID, MACHINE_NO, OUTSIDE_OP_ITEM, LABOR_CLASS_NO, SETUP_LABOR_CLASS_NO,");
  443. searchSql.append(" OVERLAP, NOTE_TEXT, objid ifsRowId, objversion ifsRowVersion");
  444. searchSql.append(" FROM ifsapp.ROUTING_OPERATION");
  445. searchSql.append(" WHERE CONTRACT = :contract AND PART_NO = :partNo AND ROUTING_REVISION = :routingRevision AND BOM_TYPE = :routingType");
  446. searchSql.append(" AND ALTERNATIVE_NO = :alternativeNo");
  447. //设置查询的入参
  448. Map<String, String> inParam = new HashMap<>();
  449. inParam.put("contract", contract);
  450. inParam.put("partNo", partNo);
  451. inParam.put("routingRevision", routingRevision);
  452. inParam.put("routingType", routingType);
  453. inParam.put("alternativeNo", alternativeNo);
  454. //添加判断的查询条件
  455. if(!(null == operationNo || "".equals(operationNo))) {
  456. searchSql.append(" AND OPERATION_NO = :operationNo");
  457. inParam.put("operationNo", operationNo);
  458. }
  459. //调用查询的通用方法
  460. RecordCollection recordCollection = IfsPlsqlUtils.execSqlSearchGetRecordCollection(srv, searchSql, inParam);
  461. //判断能否返回
  462. if (recordCollection == null) {
  463. return new ArrayList<>();
  464. } else {
  465. List<RoutingIfsItem> resultItems = new ArrayList<>();
  466. //调用通用的处理方法 返回Map
  467. List<Map<String, String>> resultList = IfsConverterToMap.ConverterIfsToList(recordCollection);
  468. //获取数据转bean
  469. for (int i = 0; i < resultList.size(); i++) {
  470. Map<String, String> tempMap = resultList.get(i);
  471. RoutingIfsItem tempItem = new RoutingIfsItem();
  472. //设置参数
  473. tempItem.setIfsRowId(tempMap.get("IFSROWID"));
  474. tempItem.setIfsRowVersion(tempMap.get("IFSROWVERSION"));
  475. tempItem.setRoutingRevision(tempMap.get("ROUTING_REVISION"));
  476. tempItem.setRoutingType(tempMap.get("BOM_TYPE"));
  477. tempItem.setAlternativeNo(tempMap.get("ALTERNATIVE_NO"));
  478. tempItem.setOperationNo(tempMap.get("OPERATION_NO"));
  479. tempItem.setOperationDesc(tempMap.get("OPERATION_DESCRIPTION"));
  480. tempItem.setWorkCenterNo(tempMap.get("WORK_CENTER_NO"));
  481. tempItem.setEfficiencyFactor(tempMap.get("EFFICIENCY_FACTOR"));
  482. tempItem.setMachSetupTime(tempMap.get("MACH_SETUP_TIME"));
  483. tempItem.setMachRunFactor(tempMap.get("MACH_RUN_FACTOR"));
  484. tempItem.setRunTimeCode(tempMap.get("RUN_TIME_CODE"));
  485. tempItem.setLaborRunFactor(tempMap.get("LABOR_RUN_FACTOR"));
  486. tempItem.setLaborSetupTime(tempMap.get("LABOR_SETUP_TIME"));
  487. tempItem.setCrewSize(tempMap.get("CREW_SIZE"));
  488. tempItem.setSetupCrewSize(tempMap.get("SETUP_CREW_SIZE"));
  489. tempItem.setOperationId(tempMap.get("OPERATION_ID"));
  490. tempItem.setMachineNo(tempMap.get("MACHINE_NO"));
  491. tempItem.setOutsideOpItem(tempMap.get("OUTSIDE_OP_ITEM"));
  492. tempItem.setLaborClassNo(tempMap.get("LABOR_CLASS_NO"));
  493. tempItem.setSetupLaborClassNo(tempMap.get("SETUP_LABOR_CLASS_NO"));
  494. tempItem.setOverlap(tempMap.get("OVERLAP"));
  495. tempItem.setNoteText(tempMap.get("NOTE_TEXT"));
  496. //添加对象
  497. resultItems.add(tempItem);
  498. }
  499. return resultItems;
  500. }
  501. }
  502. /**
  503. * @description: 仅仅copy part 赋值使用
  504. * @author LR
  505. * @date 2025/5/21 15:56
  506. * @version 1.0
  507. */
  508. public static List<RoutingIfsItem> getRoutingItemsWithCopyPart(Server srv, String contract, String partNo) throws APException {
  509. StringBuilder searchSql = new StringBuilder();
  510. searchSql.append("SELECT CONTRACT, PART_NO, ROUTING_REVISION, BOM_TYPE, ALTERNATIVE_NO,");
  511. searchSql.append(" OPERATION_NO, OPERATION_DESCRIPTION operationDesc, WORK_CENTER_NO, EFFICIENCY_FACTOR, MACH_SETUP_TIME,");
  512. searchSql.append(" MACH_RUN_FACTOR, RUN_TIME_CODE, LABOR_RUN_FACTOR, LABOR_SETUP_TIME, CREW_SIZE, SETUP_CREW_SIZE,");
  513. searchSql.append(" OPERATION_ID, MACHINE_NO, OUTSIDE_OP_ITEM, LABOR_CLASS_NO, SETUP_LABOR_CLASS_NO,");
  514. searchSql.append(" OVERLAP, NOTE_TEXT, objid ifsRowId, objversion ifsRowVersion");
  515. searchSql.append(" FROM ifsapp.ROUTING_OPERATION");
  516. searchSql.append(" WHERE CONTRACT = :contract AND PART_NO = :partNo");
  517. //设置查询的入参
  518. Map<String, String> inParam = new HashMap<>();
  519. inParam.put("contract", contract);
  520. inParam.put("partNo", partNo);
  521. //调用查询的通用方法
  522. RecordCollection recordCollection = IfsPlsqlUtils.execSqlSearchGetRecordCollection(srv, searchSql, inParam);
  523. //判断能否返回
  524. if (recordCollection == null) {
  525. return new ArrayList<>();
  526. } else {
  527. List<RoutingIfsItem> resultItems = new ArrayList<>();
  528. //调用通用的处理方法 返回Map
  529. List<Map<String, String>> resultList = IfsConverterToMap.ConverterIfsToList(recordCollection);
  530. //获取数据转bean
  531. for (int i = 0; i < resultList.size(); i++) {
  532. Map<String, String> tempMap = resultList.get(i);
  533. RoutingIfsItem tempItem = new RoutingIfsItem();
  534. //设置参数
  535. tempItem.setIfsRowId(tempMap.get("IFSROWID"));
  536. tempItem.setIfsRowVersion(tempMap.get("IFSROWVERSION"));
  537. tempItem.setRoutingRevision(tempMap.get("ROUTING_REVISION"));
  538. tempItem.setRoutingType(tempMap.get("BOM_TYPE"));
  539. tempItem.setAlternativeNo(tempMap.get("ALTERNATIVE_NO"));
  540. tempItem.setOperationNo(tempMap.get("OPERATION_NO"));
  541. tempItem.setOperationDesc(tempMap.get("OPERATION_DESCRIPTION"));
  542. tempItem.setWorkCenterNo(tempMap.get("WORK_CENTER_NO"));
  543. tempItem.setEfficiencyFactor(tempMap.get("EFFICIENCY_FACTOR"));
  544. tempItem.setMachSetupTime(tempMap.get("MACH_SETUP_TIME"));
  545. tempItem.setMachRunFactor(tempMap.get("MACH_RUN_FACTOR"));
  546. tempItem.setRunTimeCode(tempMap.get("RUN_TIME_CODE"));
  547. tempItem.setLaborRunFactor(tempMap.get("LABOR_RUN_FACTOR"));
  548. tempItem.setLaborSetupTime(tempMap.get("LABOR_SETUP_TIME"));
  549. tempItem.setCrewSize(tempMap.get("CREW_SIZE"));
  550. tempItem.setSetupCrewSize(tempMap.get("SETUP_CREW_SIZE"));
  551. tempItem.setOperationId(tempMap.get("OPERATION_ID"));
  552. tempItem.setMachineNo(tempMap.get("MACHINE_NO"));
  553. tempItem.setOutsideOpItem(tempMap.get("OUTSIDE_OP_ITEM"));
  554. tempItem.setLaborClassNo(tempMap.get("LABOR_CLASS_NO"));
  555. tempItem.setSetupLaborClassNo(tempMap.get("SETUP_LABOR_CLASS_NO"));
  556. tempItem.setOverlap(tempMap.get("OVERLAP"));
  557. tempItem.setNoteText(tempMap.get("NOTE_TEXT"));
  558. //添加对象
  559. resultItems.add(tempItem);
  560. }
  561. return resultItems;
  562. }
  563. }
  564. /**
  565. * @description: 插入Routing Item
  566. * @author LR
  567. * @date 2024/12/11 16:17
  568. * @version 1.0
  569. */
  570. public static Map<String, String> insertRoutingItem(Server srv, RoutingIfsItem inData) throws APException {
  571. //公共参数
  572. String contract = inData.getContract();// 域
  573. String partNo = inData.getPartNo();// 物料编码
  574. String routingRevision = inData.getRoutingRevision();// 版本
  575. String routingType = inData.getRoutingType();// 分类
  576. String alternativeNo = inData.getAlternativeNo();
  577. String operationNo = inData.getOperationNo();
  578. String operationDesc = inData.getOperationDesc();
  579. String workCenterNo = inData.getWorkCenterNo();//
  580. String efficiencyFactor = inData.getEfficiencyFactor();
  581. String machSetupTime = inData.getMachSetupTime();
  582. String machRunFactor = inData.getMachRunFactor();
  583. String runTimeCode = inData.getRunTimeCode();
  584. String laborRunFactor = inData.getLaborRunFactor();
  585. String laborSetupTime = inData.getLaborSetupTime();
  586. String crewSize = inData.getCrewSize();
  587. String setupCrewSize = inData.getSetupCrewSize();
  588. String machineNo = inData.getMachineNo();
  589. String noteText = inData.getNoteText();
  590. String outsideOpItem = inData.getOutsideOpItem();
  591. String laborClassNo = inData.getLaborClassNo();
  592. String setupLaborClassNo = inData.getSetupLaborClassNo();
  593. String overlap = "0";
  594. String createDate = DateUtils.getStringDate(new Date(), "yyyy-MM-dd")+"-00.00.00";
  595. //入参
  596. Map<String, String> inParam = new HashMap<>();
  597. //填充参数
  598. inParam.put("OBJID", "");
  599. inParam.put("OBJVERSION", "");
  600. inParam.put("PART_NO", partNo); // 物料编码
  601. inParam.put("CONTRACT", contract); // 域
  602. inParam.put("ROUTING_REVISION", routingRevision); // 物料的版本
  603. inParam.put("BOM_TYPE", routingType); // BOM类型
  604. inParam.put("ALTERNATIVE_NO", alternativeNo); // 替代编码
  605. inParam.put("OPERATION_NO", operationNo); // 工序
  606. inParam.put("OPERATION_DESCRIPTION", operationDesc); // 工序描述
  607. inParam.put("LOT_QTY", "1"); // 默认值
  608. inParam.put("WORK_CENTER_NO", workCenterNo); // 加工中心
  609. inParam.put("MACHINE_NO", machineNo); // 机台
  610. inParam.put("EFFICIENCY_FACTOR", efficiencyFactor); // 效率
  611. inParam.put("MACH_SETUP_TIME", machSetupTime); // 机器调机时间
  612. inParam.put("MACH_RUN_FACTOR", machRunFactor); // 机器效率
  613. inParam.put("RUN_TIME_CODE", runTimeCode); // 运行编码
  614. inParam.put("MOVE_TIME", "0"); // 固定值
  615. inParam.put("LABOR_RUN_FACTOR", laborRunFactor); // 人员运行效率
  616. inParam.put("LABOR_SETUP_TIME", laborSetupTime); // 人员调机时间
  617. inParam.put("CREW_SIZE", crewSize); // 生产过程所需人数
  618. inParam.put("SETUP_CREW_SIZE", setupCrewSize); // 调机过程所需人数
  619. inParam.put("NOTE_TEXT", noteText); // 备注
  620. inParam.put("OUTSIDE_OP_ITEM", outsideOpItem); // 外协料号
  621. inParam.put("LABOR_CLASS_NO", laborClassNo); // 人员等级
  622. inParam.put("SETUP_LABOR_CLASS_NO", setupLaborClassNo); // 调机人员等级
  623. inParam.put("OVERLAP", overlap); // OVERLAP
  624. // 固定的数值
  625. inParam.put("FIXED_RESOURCE_SHARE", "1"); // 固定值
  626. inParam.put("PARALLEL_OPERATION", "Not parallel"); // 固定值
  627. inParam.put("MILESTONE_OPERATION_DB", "FALSE"); // 固定值
  628. inParam.put("INCREASE_LOTSIZE_ON_SCRAP_DB", "FALSE"); // 固定值
  629. inParam.put("OVERLAP_UNIT", "Units"); // 固定值
  630. inParam.put("INCLUDE_SETUP_FOR_OVERLAP_DB", "N"); // 固定值
  631. inParam.put("OUTSIDE_OP_SUPPLY_TYPE", "Purchase Requisition"); // 固定值
  632. inParam.put("OUTSIDE_OP_BACKFLUSH", "Disallowed"); // 固定值
  633. inParam.put("SEND_TO_NEXT_SUPPLIER_DB", "FALSE"); // 固定值
  634. inParam.put("OPERATION_USAGE_FACTOR", "1"); // 固定值
  635. inParam.put("PHASE_IN_DATE", createDate); // 固定值
  636. inParam.put("PHASE_OUT_DATE", ""); // 固定值
  637. //执行check的操作
  638. Map<String, String> checkMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "ROUTING_OPERATION_API",
  639. "NEW__", PlsqlBaseMethodType.NEW, PlsqlBaseMethodAction.CHECK, inParam);
  640. //执行do的操作
  641. Map<String, String> resultMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "ROUTING_OPERATION_API",
  642. "NEW__", PlsqlBaseMethodType.NEW, PlsqlBaseMethodAction.DO, inParam);
  643. //返回结果集
  644. return resultMap;
  645. }
  646. /**
  647. * @description: 修改 Routing Item
  648. * @author LR
  649. * @date 2024/12/11 16:22
  650. * @version 1.0
  651. */
  652. public static Map<String, String> modifyRoutingItem(Server srv, RoutingIfsItem inData) throws APException {
  653. //公共参数
  654. String ifsRowId = inData.getIfsRowId();// 域
  655. String ifsRowVersion = inData.getIfsRowVersion();// 物料编码
  656. String operationNo = inData.getOperationNo();
  657. String operationDesc = inData.getOperationDesc();
  658. String workCenterNo = inData.getWorkCenterNo();//
  659. String efficiencyFactor = inData.getEfficiencyFactor();
  660. String machSetupTime = inData.getMachSetupTime();
  661. String machRunFactor = inData.getMachRunFactor();
  662. String runTimeCode = inData.getRunTimeCode();
  663. String laborRunFactor = inData.getLaborRunFactor();
  664. String laborSetupTime = inData.getLaborSetupTime();
  665. String crewSize = inData.getCrewSize();
  666. String setupCrewSize = inData.getSetupCrewSize();
  667. String machineNo = inData.getMachineNo();
  668. String noteText = inData.getNoteText();
  669. String outsideOpItem = inData.getOutsideOpItem();
  670. String laborClassNo = inData.getLaborClassNo();
  671. String setupLaborClassNo = inData.getSetupLaborClassNo();
  672. String overlap = "0";
  673. //入参
  674. Map<String, String> inParam = new HashMap<>();
  675. //填充参数
  676. inParam.put("OBJID", ifsRowId);
  677. inParam.put("OBJVERSION", ifsRowVersion);
  678. inParam.put("OPERATION_NO", operationNo); // 工序
  679. inParam.put("OPERATION_DESCRIPTION", operationDesc); // 工序描述
  680. inParam.put("WORK_CENTER_NO", workCenterNo); // 加工中心
  681. inParam.put("MACHINE_NO", machineNo); // 机台
  682. inParam.put("EFFICIENCY_FACTOR", efficiencyFactor); // 效率
  683. inParam.put("MACH_SETUP_TIME", machSetupTime); // 机器调机时间
  684. inParam.put("MACH_RUN_FACTOR", machRunFactor); // 机器效率
  685. inParam.put("RUN_TIME_CODE", runTimeCode); // 运行编码
  686. inParam.put("MOVE_TIME", "0"); // 固定值
  687. inParam.put("LABOR_RUN_FACTOR", laborRunFactor); // 人员运行效率
  688. inParam.put("LABOR_SETUP_TIME", laborSetupTime); // 人员调机时间
  689. inParam.put("CREW_SIZE", crewSize); // 生产过程所需人数
  690. inParam.put("SETUP_CREW_SIZE", setupCrewSize); // 调机过程所需人数
  691. inParam.put("NOTE_TEXT", noteText); // 备注
  692. inParam.put("OUTSIDE_OP_ITEM", outsideOpItem); // 外协料号
  693. inParam.put("LABOR_CLASS_NO", laborClassNo); // 人员等级
  694. inParam.put("SETUP_LABOR_CLASS_NO", setupLaborClassNo); // 调机人员等级
  695. inParam.put("OVERLAP", overlap); // OVERLAP
  696. //执行check的操作
  697. Map<String, String> checkMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "ROUTING_OPERATION_API",
  698. "MODIFY__", PlsqlBaseMethodType.MODIFY, PlsqlBaseMethodAction.CHECK, inParam);
  699. //执行do的操作
  700. Map<String, String> resultMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "ROUTING_OPERATION_API",
  701. "MODIFY__", PlsqlBaseMethodType.MODIFY, PlsqlBaseMethodAction.DO, inParam);
  702. //返回结果集
  703. return resultMap;
  704. }
  705. /**
  706. * @description: 删除 Routing Item
  707. * @author LR
  708. * @date 2024/12/11 16:24
  709. * @version 1.0
  710. */
  711. public static Map<String, String> removeRoutingItem(Server srv, RoutingIfsItem inData) throws APException {
  712. //公共参数
  713. String ifsRowId = inData.getIfsRowId();//
  714. String ifsRowVersion = inData.getIfsRowVersion();//
  715. //入参
  716. Map<String, String> inParam = new HashMap<>();
  717. //填充参数
  718. inParam.put("OBJID", ifsRowId);
  719. inParam.put("OBJVERSION", ifsRowVersion);
  720. //执行check的操作
  721. Map<String, String> checkMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "ROUTING_OPERATION_API",
  722. "REMOVE__", PlsqlBaseMethodType.REMOVE, PlsqlBaseMethodAction.CHECK, inParam);
  723. //执行do的操作
  724. Map<String, String> resultMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "ROUTING_OPERATION_API",
  725. "REMOVE__", PlsqlBaseMethodType.REMOVE, PlsqlBaseMethodAction.DO, inParam);
  726. //返回结果集
  727. return resultMap;
  728. }
  729. /**
  730. * @description: 查询Routing Tool
  731. * @author LR
  732. * @date 2024/12/11 16:27
  733. * @version 1.0
  734. */
  735. public static Map<String, String> getRoutingTool(Server srv, String contract, String partNo, String routingRevision, String routingType, String alternativeNo,
  736. String toolId) throws APException {
  737. StringBuilder searchSql = new StringBuilder();
  738. searchSql.append("SELECT OBJID ifsRowId, OBJVERSION ifsRowVersion, CONTRACT, PART_NO, ROUTING_REVISION, BOM_TYPE routingType,");
  739. searchSql.append(" ALTERNATIVE_NO, OPERATION_NO, TOOL_ID, TOOL_QUANTITY, NOTE_TEXT");
  740. searchSql.append(" FROM IFSAPP.ROUTING_OPERATION_TOOL");
  741. searchSql.append(" WHERE CONTRACT = :contract AND PART_NO = :partNo AND ROUTING_REVISION = :routingRevision AND BOM_TYPE = :routingType AND ALTERNATIVE_NO = :alternativeNo");
  742. //设置查询的入参
  743. Map<String, String> inParam = new HashMap<>();
  744. inParam.put("contract", contract);
  745. inParam.put("partNo", partNo);
  746. inParam.put("routingRevision", routingRevision);
  747. inParam.put("routingType", routingType);
  748. inParam.put("alternativeNo", alternativeNo);
  749. //添加判断的查询条件
  750. if(!(null == toolId || "".equals(toolId))) {
  751. searchSql.append(" AND TOOL_ID = :toolId");
  752. inParam.put("toolId", toolId);
  753. }
  754. //调用查询的通用方法
  755. RecordCollection recordCollection = IfsPlsqlUtils.execSqlSearchGetRecordCollection(srv, searchSql, inParam);
  756. //判断能否返回
  757. if (recordCollection == null) {
  758. return null;
  759. } else {
  760. Record record = recordCollection.get(0);
  761. Map<String, String> resultMap = IfsConverterToMap.ConverterIfsToMap(record);
  762. return resultMap;
  763. }
  764. }
  765. /**
  766. * @description: copy part 使用的查询方法
  767. * @author LR
  768. * @date 2025/5/21 16:02
  769. * @version 1.0
  770. */
  771. public static List<RoutingIfsTool> getRoutingToolsWithCopyPart(Server srv, String contract, String partNo) throws APException {
  772. StringBuilder searchSql = new StringBuilder();
  773. searchSql.append("SELECT CONTRACT, PART_NO, ROUTING_REVISION, BOM_TYPE, ALTERNATIVE_NO, OPERATION_NO,");
  774. searchSql.append(" TOOL_ID, TOOL_QUANTITY, OBJID ifsRowId, OBJVERSION ifsRowVersion, NOTE_TEXT");
  775. searchSql.append(" FROM IFSAPP.ROUTING_OPERATION_TOOL");
  776. searchSql.append(" WHERE CONTRACT = :contract AND PART_NO = :partNo AND ROUTING_REVISION = :routingRevision AND BOM_TYPE = :routingType AND ALTERNATIVE_NO = :alternativeNo");
  777. //设置查询的入参
  778. Map<String, String> inParam = new HashMap<>();
  779. inParam.put("contract", contract);
  780. inParam.put("partNo", partNo);
  781. //调用查询的通用方法
  782. RecordCollection recordCollection = IfsPlsqlUtils.execSqlSearchGetRecordCollection(srv, searchSql, inParam);
  783. //判断能否返回
  784. if (recordCollection == null) {
  785. return new ArrayList<>();
  786. } else {
  787. List<RoutingIfsTool> resultItems = new ArrayList<>();
  788. //调用通用的处理方法 返回Map
  789. List<Map<String, String>> resultList = IfsConverterToMap.ConverterIfsToList(recordCollection);
  790. //判断是否存在数据
  791. if(resultList == null) {
  792. return resultItems;
  793. }
  794. //获取数据转bean
  795. for (int i = 0; i < resultList.size(); i++) {
  796. Map<String, String> tempMap = resultList.get(i);
  797. RoutingIfsTool tempItem = new RoutingIfsTool();
  798. //设置参数
  799. tempItem.setIfsRowId(tempMap.get("IFSROWID"));
  800. tempItem.setIfsRowVersion(tempMap.get("IFSROWVERSION"));
  801. tempItem.setContract(tempMap.get("CONTRACT"));
  802. tempItem.setPartNo(tempMap.get("PART_NO"));
  803. tempItem.setRoutingType(tempMap.get("BOM_TYPE"));
  804. tempItem.setRoutingRevision(tempMap.get("ROUTING_REVISION"));
  805. tempItem.setAlternativeNo(tempMap.get("ALTERNATIVE_NO"));
  806. tempItem.setOperationNo(tempMap.get("OPERATION_NO")); //
  807. tempItem.setNoteText(tempMap.get("NOTE_TEXT"));
  808. //添加对象
  809. resultItems.add(tempItem);
  810. }
  811. return resultItems;
  812. }
  813. }
  814. /**
  815. * @description: 查询Routing Tool的所有信息
  816. * @author LR
  817. * @date 2024/12/11 16:30
  818. * @version 1.0
  819. */
  820. public static List<Map<String, String>> getRoutingTools(Server srv, String contract, String partNo, String routingRevision, String routingType, String alternativeNo) throws APException {
  821. StringBuilder searchSql = new StringBuilder();
  822. searchSql.append("SELECT OBJID ifsRowId, OBJVERSION ifsRowVersion, CONTRACT, PART_NO, ROUTING_REVISION, BOM_TYPE routingType,");
  823. searchSql.append(" ALTERNATIVE_NO, OPERATION_NO, TOOL_ID, TOOL_QUANTITY, NOTE_TEXT");
  824. searchSql.append(" FROM IFSAPP.ROUTING_OPERATION_TOOL");
  825. searchSql.append(" WHERE CONTRACT = :contract AND PART_NO = :partNo AND ROUTING_REVISION = :routingRevision AND BOM_TYPE = :routingType AND ALTERNATIVE_NO = :alternativeNo");
  826. //设置查询的入参
  827. Map<String, String> inParam = new HashMap<>();
  828. inParam.put("contract", contract);
  829. inParam.put("partNo", partNo);
  830. inParam.put("routingRevision", routingRevision);
  831. inParam.put("routingType", routingType);
  832. inParam.put("alternativeNo", alternativeNo);
  833. //调用查询的通用方法
  834. RecordCollection recordCollection = IfsPlsqlUtils.execSqlSearchGetRecordCollection(srv, searchSql, inParam);
  835. //判断能否返回
  836. if (recordCollection == null) {
  837. return new ArrayList<>();
  838. } else {
  839. List<Map<String, String>> resultList = IfsConverterToMap.ConverterIfsToList(recordCollection);
  840. return resultList;
  841. }
  842. }
  843. /**
  844. * @description: 新增 Routing Tool信息
  845. * @author LR
  846. * @date 2024/12/11 16:47
  847. * @version 1.0
  848. */
  849. public static Map<String, String> insertRoutingTool(Server srv, RoutingIfsTool inData) throws APException {
  850. //公共参数
  851. String contract = inData.getContract();// 域
  852. String partNo = inData.getPartNo();// 物料编码
  853. String routingRevision = inData.getRoutingRevision();// 版本
  854. String routingType = inData.getRoutingType();// 分类
  855. String alternativeNo = inData.getAlternativeNo();
  856. String operationNo = inData.getOperationNo();
  857. String operationId = inData.getOperationId();
  858. String toolId = inData.getToolId();
  859. String toolQuantity = inData.getToolQuantity();
  860. String noteText = inData.getNoteText();
  861. //入参
  862. Map<String, String> inParam = new HashMap<>();
  863. //填充参数
  864. inParam.put("OBJID", "");
  865. inParam.put("OBJVERSION", "");
  866. inParam.put("CONTRACT", contract); // 域
  867. inParam.put("PART_NO", partNo); // 物料编码
  868. inParam.put("BOM_TYPE", routingType); // BOM类型
  869. inParam.put("ROUTING_REVISION", routingRevision); // 物料的版本
  870. inParam.put("ALTERNATIVE_NO", alternativeNo); // 替代编码
  871. inParam.put("OPERATION_NO", operationNo); // 工序
  872. inParam.put("OPERATION_ID", operationId); // 工序ID
  873. inParam.put("TOOL_ID", toolId); // 工具编码
  874. inParam.put("TOOL_QUANTITY", toolQuantity); // 工具数量
  875. inParam.put("NOTE_TEXT", noteText); // 备注
  876. //执行check的操作
  877. Map<String, String> checkMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "ROUTING_OPERATION_TOOL_API",
  878. "NEW__", PlsqlBaseMethodType.NEW, PlsqlBaseMethodAction.CHECK, inParam);
  879. //执行do的操作
  880. Map<String, String> resultMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "ROUTING_OPERATION_TOOL_API",
  881. "NEW__", PlsqlBaseMethodType.NEW, PlsqlBaseMethodAction.DO, inParam);
  882. //返回结果集
  883. return resultMap;
  884. }
  885. /**
  886. * @description: 修改 Routing Tool
  887. * @author LR
  888. * @date 2024/12/11 17:47
  889. * @version 1.0
  890. */
  891. public static Map<String, String> modifyRoutingTool(Server srv, RoutingIfsTool inData) throws APException {
  892. //公共参数
  893. String ifsRowId = inData.getIfsRowId();// 域
  894. String ifsRowVersion = inData.getIfsRowVersion();// 物料编码
  895. String toolId = inData.getToolId();
  896. String toolQuantity = inData.getToolQuantity();
  897. String noteText = inData.getNoteText();
  898. //入参
  899. Map<String, String> inParam = new HashMap<>();
  900. //填充参数
  901. inParam.put("OBJID", ifsRowId);
  902. inParam.put("OBJVERSION", ifsRowVersion);
  903. inParam.put("TOOL_ID", toolId); // 工具编码
  904. inParam.put("TOOL_QUANTITY", toolQuantity); // 工具数量
  905. inParam.put("NOTE_TEXT", noteText); // 备注
  906. //执行check的操作
  907. Map<String, String> checkMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "ROUTING_OPERATION_TOOL_API",
  908. "MODIFY__", PlsqlBaseMethodType.MODIFY, PlsqlBaseMethodAction.CHECK, inParam);
  909. //执行do的操作
  910. Map<String, String> resultMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "ROUTING_OPERATION_TOOL_API",
  911. "MODIFY__", PlsqlBaseMethodType.MODIFY, PlsqlBaseMethodAction.DO, inParam);
  912. //返回结果集
  913. return resultMap;
  914. }
  915. /**
  916. * @description: 删除 Routing Tool
  917. * @author LR
  918. * @date 2024/12/11 17:50
  919. * @version 1.0
  920. */
  921. public static Map<String, String> removeRoutingTool(Server srv, RoutingIfsTool inData) throws APException {
  922. //公共参数
  923. String ifsRowId = inData.getIfsRowId();// 域
  924. String ifsRowVersion = inData.getIfsRowVersion();// 物料编码
  925. //入参
  926. Map<String, String> inParam = new HashMap<>();
  927. //填充参数
  928. inParam.put("OBJID", ifsRowId);
  929. inParam.put("OBJVERSION", ifsRowVersion);
  930. //执行check的操作
  931. Map<String, String> checkMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "ROUTING_OPERATION_TOOL_API",
  932. "REMOVE__", PlsqlBaseMethodType.REMOVE, PlsqlBaseMethodAction.CHECK, inParam);
  933. //执行do的操作
  934. Map<String, String> resultMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "ROUTING_OPERATION_TOOL_API",
  935. "REMOVE__", PlsqlBaseMethodType.REMOVE, PlsqlBaseMethodAction.DO, inParam);
  936. //返回结果集
  937. return resultMap;
  938. }
  939. /**
  940. * @description: 查询Routing Tool
  941. * @author LR
  942. * @date 2024/12/11 16:27
  943. * @version 1.0
  944. */
  945. public static Map<String, String> getRoutingGuideLine(Server srv, String contract, String partNo, String routingRevision, String routingType, String alternativeNo,
  946. String operationId, String guidelineSeq) throws APException {
  947. StringBuilder searchSql = new StringBuilder();
  948. searchSql.append("SELECT OBJID ifsRowId, OBJVERSION ifsRowVersion, GUIDELINE_SEQ guidelineSeq,");
  949. searchSql.append(" GUIDELINE_DESC guidelineDesc, GUIDELINE_TEXT guidelineText");
  950. searchSql.append(" FROM IFSAPP.ROUTING_OPER_WORK_GUIDE");
  951. searchSql.append(" WHERE CONTRACT = :contract AND PART_NO = :partNo AND ROUTING_REVISION = :routingRevision AND BOM_TYPE = :routingType");
  952. searchSql.append(" AND ALTERNATIVE_NO = :alternativeNo AND OPERATION_ID = :operationId");
  953. searchSql.append(" AND GUIDELINE_SEQ = :guidelineSeq");
  954. //设置查询的入参
  955. Map<String, String> inParam = new HashMap<>();
  956. inParam.put("contract", contract);
  957. inParam.put("partNo", partNo);
  958. inParam.put("routingRevision", routingRevision);
  959. inParam.put("routingType", routingType);
  960. inParam.put("alternativeNo", alternativeNo);
  961. inParam.put("operationId", operationId);
  962. inParam.put("guidelineSeq", guidelineSeq);
  963. //调用查询的通用方法
  964. RecordCollection recordCollection = IfsPlsqlUtils.execSqlSearchGetRecordCollection(srv, searchSql, inParam);
  965. //判断能否返回
  966. if (recordCollection == null) {
  967. return null;
  968. } else {
  969. Record record = recordCollection.get(0);
  970. Map<String, String> resultMap = IfsConverterToMap.ConverterIfsToMap(record);
  971. return resultMap;
  972. }
  973. }
  974. /**
  975. * @description: 查询Routing Tool的所有信息
  976. * @author LR
  977. * @date 2024/12/11 16:30
  978. * @version 1.0
  979. */
  980. public static List<Map<String, String>> getRoutingGuideLines(Server srv, String contract, String partNo, String routingRevision, String routingType,
  981. String alternativeNo, String operationId) throws APException {
  982. StringBuilder searchSql = new StringBuilder();
  983. searchSql.append("SELECT OBJID ifsRowId, OBJVERSION ifsRowVersion, GUIDELINE_SEQ guidelineSeq,");
  984. searchSql.append(" GUIDELINE_DESC guidelineDesc, GUIDELINE_TEXT guidelineText");
  985. searchSql.append(" FROM IFSAPP.ROUTING_OPER_WORK_GUIDE");
  986. searchSql.append(" WHERE CONTRACT = :contract AND PART_NO = :partNo AND ROUTING_REVISION = :routingRevision AND BOM_TYPE = :routingType");
  987. searchSql.append(" AND ALTERNATIVE_NO = :alternativeNo AND OPERATION_ID = :operationId");
  988. searchSql.append(" AND GUIDELINE_SEQ = :guidelineSeq");
  989. //设置查询的入参
  990. Map<String, String> inParam = new HashMap<>();
  991. inParam.put("contract", contract);
  992. inParam.put("partNo", partNo);
  993. inParam.put("routingRevision", routingRevision);
  994. inParam.put("routingType", routingType);
  995. inParam.put("alternativeNo", alternativeNo);
  996. inParam.put("operationId", operationId);
  997. //调用查询的通用方法
  998. RecordCollection recordCollection = IfsPlsqlUtils.execSqlSearchGetRecordCollection(srv, searchSql, inParam);
  999. //判断能否返回
  1000. if (recordCollection == null) {
  1001. return new ArrayList<>();
  1002. } else {
  1003. List<Map<String, String>> resultList = IfsConverterToMap.ConverterIfsToList(recordCollection);
  1004. return resultList;
  1005. }
  1006. }
  1007. /**
  1008. * @description: 查询RoutingIfsGuideLine 集合
  1009. * @author LR
  1010. * @date 2025/5/21 15:42
  1011. * @version 1.0
  1012. */
  1013. public static List<RoutingIfsGuideLine> getRoutingGuideLinesWithCopyPart(Server srv, String contract, String partNo) throws APException {
  1014. StringBuilder searchSql = new StringBuilder();
  1015. searchSql.append("SELECT rog.CONTRACT, rog.PART_NO, rog.ROUTING_REVISION, rog.BOM_TYPE, rog.ALTERNATIVE_NO, rot.OPERATION_NO, rog.GUIDELINE_NO,");
  1016. searchSql.append(" rog.GUIDELINE_SEQ, rog.OBJID ifsRowId, rog.OBJVERSION ifsRowVersion");
  1017. searchSql.append(" FROM IFSAPP.ROUTING_OPER_WORK_GUIDE rog");
  1018. searchSql.append(" LEFT JOIN IFSAPP.ROUTING_OPERATION_TOOL rot");
  1019. searchSql.append(" ON rot.CONTRACT = rog.CONTRACT AND rot.PART_NO = rog.PART_NO AND rot.ROUTING_REVISION = rog.ROUTING_REVISION ");
  1020. searchSql.append(" AND rot.BOM_TYPE = rog.BOM_TYPE AND rot.ALTERNATIVE_NO = rog.ALTERNATIVE_NO AND rot.OPERATION_ID = rog.OPERATION_ID");
  1021. searchSql.append(" WHERE rog.CONTRACT = :contract AND rog.PART_NO = :partNo");
  1022. //设置查询的入参
  1023. Map<String, String> inParam = new HashMap<>();
  1024. inParam.put("contract", contract);
  1025. inParam.put("partNo", partNo);
  1026. //调用查询的通用方法
  1027. RecordCollection recordCollection = IfsPlsqlUtils.execSqlSearchGetRecordCollection(srv, searchSql, inParam);
  1028. //判断能否返回
  1029. if (recordCollection == null) {
  1030. return new ArrayList<>();
  1031. } else {
  1032. List<RoutingIfsGuideLine> resultItems = new ArrayList<>();
  1033. //调用通用的处理方法 返回Map
  1034. List<Map<String, String>> resultList = IfsConverterToMap.ConverterIfsToList(recordCollection);
  1035. //判断是否存在数据
  1036. if(resultList == null) {
  1037. return resultItems;
  1038. }
  1039. //获取数据转bean
  1040. for (int i = 0; i < resultList.size(); i++) {
  1041. Map<String, String> tempMap = resultList.get(i);
  1042. RoutingIfsGuideLine tempItem = new RoutingIfsGuideLine();
  1043. //设置参数
  1044. tempItem.setIfsRowId(tempMap.get("IFSROWID"));
  1045. tempItem.setIfsRowVersion(tempMap.get("IFSROWVERSION"));
  1046. tempItem.setContract(tempMap.get("CONTRACT"));
  1047. tempItem.setPartNo(tempMap.get("PART_NO"));
  1048. tempItem.setRoutingType(tempMap.get("BOM_TYPE"));
  1049. tempItem.setRoutingRevision(tempMap.get("ROUTING_REVISION"));
  1050. tempItem.setAlternativeNo(tempMap.get("ALTERNATIVE_NO"));
  1051. tempItem.setOperationNo(tempMap.get("OPERATION_NO")); //
  1052. tempItem.setNoteText(tempMap.get("NOTE_TEXT"));
  1053. //添加对象
  1054. resultItems.add(tempItem);
  1055. }
  1056. return resultItems;
  1057. }
  1058. }
  1059. /**
  1060. * @description: 新增 Routing Guide Line
  1061. * @author LR
  1062. * @date 2024/12/11 16:47
  1063. * @version 1.0
  1064. */
  1065. public static Map<String, String> insertRoutingGuideLine(Server srv, RoutingIfsGuideLine inData) throws APException {
  1066. //公共参数
  1067. String contract = inData.getContract();// 域
  1068. String partNo = inData.getPartNo();// 物料编码
  1069. String routingRevision = inData.getRoutingRevision();// 版本
  1070. String routingType = inData.getRoutingType();// 分类
  1071. String alternativeNo = inData.getAlternativeNo();
  1072. String operationId = inData.getOperationId();
  1073. String guidelineSeq = inData.getGuidelineSeq(); //
  1074. String guidelineDesc = inData.getGuidelineDesc(); //
  1075. String guidelineText = inData.getGuidelineText(); //
  1076. String operWorkGuideType = inData.getOperWorkGuideType(); //
  1077. String signOffReq = inData.getSignOffReq(); //
  1078. String inspectSignOffReq = inData.getInspectSignOffReq();//
  1079. //入参
  1080. Map<String, String> inParam = new HashMap<>();
  1081. //填充参数
  1082. inParam.put("OBJID", "");
  1083. inParam.put("OBJVERSION", "");
  1084. inParam.put("CONTRACT", contract); // 域
  1085. inParam.put("PART_NO", partNo); // 物料编码
  1086. inParam.put("BOM_TYPE", routingType); // BOM类型
  1087. inParam.put("ROUTING_REVISION", routingRevision); // 物料的版本
  1088. inParam.put("ALTERNATIVE_NO", alternativeNo); // 替代编码
  1089. inParam.put("OPERATION_ID", operationId); // 工序ID
  1090. inParam.put("REFERENCE_NUMBER", ""); // 空值
  1091. inParam.put("GUIDELINE_SEQ", guidelineSeq); // 序号
  1092. inParam.put("GUIDELINE_DESC", guidelineDesc); // 描述
  1093. inParam.put("GUIDELINE_TEXT", guidelineText); // 备注
  1094. inParam.put("OPER_WORK_GUIDE_TYPE", operWorkGuideType); // 分类
  1095. inParam.put("SIGN_OFF_REQ", signOffReq); // 签字要求
  1096. inParam.put("EMP_QUALIF_PROF_ID", ""); // 空值
  1097. inParam.put("SIGN_OFF_NOTE", ""); // 空值
  1098. inParam.put("INSPECT_SIGN_OFF_REQ", inspectSignOffReq); // 检验签字要求
  1099. inParam.put("INSP_EMP_QUALIF_PROF_ID", ""); // 空值
  1100. inParam.put("INSPECT_SIGN_OFF_NOTE", ""); // 空值
  1101. //执行check的操作
  1102. Map<String, String> checkMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "ROUTING_OPER_WORK_GUIDE_API",
  1103. "NEW__", PlsqlBaseMethodType.NEW, PlsqlBaseMethodAction.CHECK, inParam);
  1104. //执行do的操作
  1105. Map<String, String> resultMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "ROUTING_OPER_WORK_GUIDE_API",
  1106. "NEW__", PlsqlBaseMethodType.NEW, PlsqlBaseMethodAction.DO, inParam);
  1107. //返回结果集
  1108. return resultMap;
  1109. }
  1110. /**
  1111. * @description: 修改 Routing Guide Line
  1112. * @author LR
  1113. * @date 2024/12/11 17:47
  1114. * @version 1.0
  1115. */
  1116. public static Map<String, String> modifyRoutingGuideLine(Server srv, RoutingIfsGuideLine inData) throws APException {
  1117. //公共参数
  1118. String ifsRowId = inData.getIfsRowId();// 域
  1119. String ifsRowVersion = inData.getIfsRowVersion();// 物料编码
  1120. String guidelineSeq = inData.getGuidelineSeq(); //
  1121. String guidelineDesc = inData.getGuidelineDesc(); //
  1122. String guidelineText = inData.getGuidelineText(); //
  1123. String operWorkGuideType = inData.getOperWorkGuideType(); //
  1124. String signOffReq = inData.getSignOffReq(); //
  1125. String inspectSignOffReq = inData.getInspectSignOffReq();//
  1126. //入参
  1127. Map<String, String> inParam = new HashMap<>();
  1128. //填充参数
  1129. inParam.put("OBJID", ifsRowId);
  1130. inParam.put("OBJVERSION", ifsRowVersion);
  1131. inParam.put("GUIDELINE_SEQ", guidelineSeq); // 序号
  1132. inParam.put("GUIDELINE_DESC", guidelineDesc); // 描述
  1133. inParam.put("GUIDELINE_TEXT", guidelineText); // 备注
  1134. inParam.put("OPER_WORK_GUIDE_TYPE", operWorkGuideType); // 分类
  1135. inParam.put("SIGN_OFF_REQ", signOffReq); // 签字要求
  1136. inParam.put("INSPECT_SIGN_OFF_REQ", inspectSignOffReq); // 检验签字
  1137. //执行check的操作
  1138. Map<String, String> checkMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "ROUTING_OPER_WORK_GUIDE_API",
  1139. "MODIFY__", PlsqlBaseMethodType.MODIFY, PlsqlBaseMethodAction.CHECK, inParam);
  1140. //执行do的操作
  1141. Map<String, String> resultMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "ROUTING_OPER_WORK_GUIDE_API",
  1142. "MODIFY__", PlsqlBaseMethodType.MODIFY, PlsqlBaseMethodAction.DO, inParam);
  1143. //返回结果集
  1144. return resultMap;
  1145. }
  1146. /**
  1147. * @description: 删除 Routing Guide Line
  1148. * @author LR
  1149. * @date 2024/12/11 17:50
  1150. * @version 1.0
  1151. */
  1152. public static Map<String, String> removeRoutingGuideLine(Server srv, RoutingIfsGuideLine inData) throws APException {
  1153. //公共参数
  1154. String ifsRowId = inData.getIfsRowId();// 域
  1155. String ifsRowVersion = inData.getIfsRowVersion();// 物料编码
  1156. //入参
  1157. Map<String, String> inParam = new HashMap<>();
  1158. //填充参数
  1159. inParam.put("OBJID", ifsRowId);
  1160. inParam.put("OBJVERSION", ifsRowVersion);
  1161. //执行check的操作
  1162. Map<String, String> checkMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "ROUTING_OPER_WORK_GUIDE_API",
  1163. "REMOVE__", PlsqlBaseMethodType.REMOVE, PlsqlBaseMethodAction.CHECK, inParam);
  1164. //执行do的操作
  1165. Map<String, String> resultMap = IfsPlsqlUtils.execProcedureGetRecord(srv, "ROUTING_OPER_WORK_GUIDE_API",
  1166. "REMOVE__", PlsqlBaseMethodType.REMOVE, PlsqlBaseMethodAction.DO, inParam);
  1167. //返回结果集
  1168. return resultMap;
  1169. }
  1170. }