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.

726 lines
31 KiB

2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
  1. package com.spring.ifs.bean;
  2. import com.alibaba.fastjson.JSON;
  3. import com.spring.ifs.api.BomApi;
  4. import com.spring.ifs.api.IfsServer;
  5. import com.spring.ifs.data.*;
  6. import com.spring.modules.part.entity.APIEntity.BomIfsAlternative;
  7. import com.spring.modules.part.entity.APIEntity.BomIfsHeader;
  8. import com.spring.modules.part.entity.APIEntity.BomIfsItem;
  9. import ifs.fnd.ap.APException;
  10. import ifs.fnd.ap.Server;
  11. import org.slf4j.Logger;
  12. import org.slf4j.LoggerFactory;
  13. import org.springframework.beans.factory.annotation.Autowired;
  14. import org.springframework.stereotype.Component;
  15. import java.util.ArrayList;
  16. import java.util.HashMap;
  17. import java.util.List;
  18. import java.util.Map;
  19. import java.util.function.Function;
  20. import java.util.stream.Collectors;
  21. /**
  22. * @description: 处理Bom的
  23. * @author LR
  24. * @date 2024/12/9 15:44
  25. * @version 1.0
  26. */
  27. @Component
  28. public class BomServiceBean {
  29. @Autowired
  30. private IfsServer ifsServer;
  31. private static final Logger logger = LoggerFactory.getLogger(BomServiceBean.class);
  32. /**
  33. * @description: 查询Bom Header
  34. * @author LR
  35. * @date 2024/12/12 15:49
  36. * @version 1.0
  37. */
  38. public Map<String, String> getBomHeader(Server srv, BomIfsHeader inData) {
  39. logger.info("Bom查询参数:"+JSON.toJSONString(inData));
  40. //查询的参数
  41. Map<String, String> returnMap = new HashMap<>();
  42. String contract = inData.getContract();
  43. String partNo = inData.getPartNo();
  44. String engChgLevel = inData.getEngChgLevel();
  45. String bomType = inData.getBomType();
  46. try{
  47. //查询数据
  48. Map<String, String> bomMap = BomApi.getBomHeader(srv, contract, partNo, engChgLevel, bomType);
  49. //判断是否需要插入到ifs
  50. if(bomMap == null || bomMap.size() == 0) {
  51. throw new RuntimeException("Bom不存在!");
  52. }
  53. //设置ifs 信息
  54. inData.setIfsRowId(bomMap.get("IFSROWID"));
  55. inData.setIfsRowVersion(bomMap.get("IFSROWVERSION"));
  56. returnMap.put("resultCode", "200");
  57. returnMap.put("obj", JSON.toJSONString(inData));
  58. } catch(APException e){
  59. returnMap.put("resultCode", "400");
  60. returnMap.put("resultMsg", e.getMessage());
  61. }
  62. //打印日志
  63. logger.info("Bom查询:"+JSON.toJSONString(inData));
  64. //返回结果集
  65. return returnMap;
  66. }
  67. /**
  68. * @description: Bom Header新增
  69. * @author LR
  70. * @date 2024/12/12 15:52
  71. * @version 1.0
  72. */
  73. public Map<String, String> syncBomHeader(Server srv, BomIfsHeader inData) {
  74. logger.info("Bom新增开始:"+JSON.toJSONString(inData));
  75. //查询的参数
  76. Map<String, String> returnMap = new HashMap<>();
  77. String contract = inData.getContract();
  78. String partNo = inData.getPartNo();
  79. String engChgLevel = inData.getEngChgLevel();
  80. String bomType = inData.getBomType();
  81. try{
  82. //查询数据
  83. Map<String, String> bomMap = BomApi.getBomHeader(srv, contract, partNo, engChgLevel, bomType);
  84. //判断是否需要插入到ifs
  85. if(bomMap != null && bomMap.size() > 0) {
  86. throw new RuntimeException("Bom已存在!");
  87. }
  88. //调用api
  89. Map<String, String> resultMap = BomApi.insertBomHeader(srv, inData);
  90. //设置版本的信息
  91. inData.setIfsRowVersion(resultMap.get("OBJVERSION"));
  92. returnMap.put("resultCode", "200");
  93. returnMap.put("obj", JSON.toJSONString(inData));
  94. } catch(APException e){
  95. returnMap.put("resultCode", "400");
  96. returnMap.put("resultMsg", e.getMessage());
  97. }
  98. //打印日志
  99. logger.info("Bom新增结束:"+JSON.toJSONString(inData));
  100. //返回结果集
  101. return returnMap;
  102. }
  103. /**
  104. * @description: Bom Header修改
  105. * @author LR
  106. * @date 2024/12/12 15:55
  107. * @version 1.0
  108. */
  109. public Map<String, String> modifyBomHeader(Server srv, BomIfsHeader inData) {
  110. logger.info("Bom修改开始:"+JSON.toJSONString(inData));
  111. //查询的参数
  112. Map<String, String> returnMap = new HashMap<>();
  113. String contract = inData.getContract();
  114. String partNo = inData.getPartNo();
  115. String engChgLevel = inData.getEngChgLevel();
  116. String bomType = inData.getBomType();
  117. try{
  118. //查询数据
  119. Map<String, String> bomMap = BomApi.getBomHeader(srv, contract, partNo, engChgLevel, bomType);
  120. //判断是否需要插入到ifs
  121. if(bomMap == null || bomMap.size() == 0) {
  122. throw new RuntimeException("Bom不存在!");
  123. }
  124. //设置ifs 信息
  125. inData.setIfsRowId(bomMap.get("IFSROWID"));
  126. inData.setIfsRowVersion(bomMap.get("IFSROWVERSION"));
  127. Map<String, String> resultMap = BomApi.modifyBomHeader(srv, inData);
  128. //设置ifs 信息
  129. inData.setIfsRowVersion(resultMap.get("OBJVERSION"));
  130. returnMap.put("resultCode", "200");
  131. returnMap.put("obj", JSON.toJSONString(inData));
  132. } catch(APException e){
  133. returnMap.put("resultCode", "400");
  134. returnMap.put("resultMsg", e.getMessage());
  135. }
  136. //打印日志
  137. logger.info("Bom修改结束:"+JSON.toJSONString(inData));
  138. //返回结果集
  139. return returnMap;
  140. }
  141. /**
  142. * @description: Bom Header删除
  143. * @author LR
  144. * @date 2024/12/12 15:58
  145. * @version 1.0
  146. */
  147. public Map<String, String> removeBomHeader(Server srv, BomIfsHeader inData) {
  148. logger.info("Bom Header删除开始:"+JSON.toJSONString(inData));
  149. //查询的参数
  150. Map<String, String> returnMap = new HashMap<>();
  151. String contract = inData.getContract();
  152. String partNo = inData.getPartNo();
  153. String engChgLevel = inData.getEngChgLevel();
  154. String bomType = inData.getBomType();
  155. try{
  156. //查询数据
  157. Map<String, String> bomMap = BomApi.getBomHeader(srv, contract, partNo, engChgLevel, bomType);
  158. //判断是否需要插入到ifs
  159. if(bomMap == null || bomMap.size() == 0) {
  160. throw new RuntimeException("Bom不存在!");
  161. }
  162. //设置ifs 信息
  163. inData.setIfsRowId(bomMap.get("IFSROWID"));
  164. inData.setIfsRowVersion(bomMap.get("IFSROWVERSION"));
  165. BomApi.removeBomHeader(srv, inData);
  166. returnMap.put("resultCode", "200");
  167. returnMap.put("obj", JSON.toJSONString(inData));
  168. } catch(APException e){
  169. returnMap.put("resultCode", "400");
  170. returnMap.put("resultMsg", e.getMessage());
  171. }
  172. //打印日志
  173. logger.info("Bom Header 删除结束:"+JSON.toJSONString(inData));
  174. //返回结果集
  175. return returnMap;
  176. }
  177. /**
  178. * @description: 查询Bom Alternative
  179. * @author LR
  180. * @date 2024/12/12 16:59
  181. * @version 1.0
  182. */
  183. public Map<String, String> getBomAlternative(Server srv, BomIfsAlternative inData) {
  184. logger.info("Bom Alternative 查询开始:"+JSON.toJSONString(inData));
  185. //公共参数
  186. Map<String, String> returnMap = new HashMap<>();
  187. String contract = inData.getContract();
  188. String partNo = inData.getPartNo();
  189. String engChgLevel = inData.getEngChgLevel();
  190. String bomType = inData.getBomType();
  191. String alternativeNo = inData.getAlternativeNo();
  192. try{
  193. //查询数据
  194. Map<String, String> alternativeMap = BomApi.getBomAlternative(srv, contract, partNo, engChgLevel, bomType, alternativeNo);
  195. //判断是否需要插入到ifs
  196. if(alternativeMap == null) {
  197. throw new RuntimeException("Bom Alternative 不存在!");
  198. }
  199. //设置ifs 信息
  200. inData.setIfsRowId(alternativeMap.get("IFSROWID"));
  201. inData.setIfsRowVersion(alternativeMap.get("IFSROWVERSION"));
  202. returnMap.put("resultCode", "200");
  203. returnMap.put("obj", JSON.toJSONString(inData));
  204. } catch(APException e){
  205. returnMap.put("resultCode", "400");
  206. returnMap.put("resultMsg", e.getMessage());
  207. }
  208. //打印日志
  209. logger.info("Bom Alternative 查询结束:"+JSON.toJSONString(inData));
  210. //返回结果集
  211. return returnMap;
  212. }
  213. /**
  214. * @description: 插入Bom Alternative
  215. * @author LR
  216. * @date 2024/12/12 17:03
  217. * @version 1.0
  218. */
  219. public Map<String, String> syncBomAlternative(Server srv, BomIfsAlternative inData) {
  220. logger.info("Bom Alternative 新增开始:"+JSON.toJSONString(inData));
  221. //公共参数
  222. Map<String, String> returnMap = new HashMap<>();
  223. String contract = inData.getContract();
  224. String partNo = inData.getPartNo();
  225. String engChgLevel = inData.getEngChgLevel();
  226. String bomType = inData.getBomType();
  227. String alternativeNo = inData.getAlternativeNo();
  228. try{
  229. //查询数据
  230. Map<String, String> alternativeMap = BomApi.getBomAlternative(srv, contract, partNo, engChgLevel, bomType, alternativeNo);
  231. //判断是否需要插入到ifs
  232. if(alternativeMap != null && alternativeMap.size() > 0) {
  233. throw new RuntimeException("Bom Alternative 已存在!");
  234. }
  235. //调用新增api
  236. Map<String, String> resultMap = BomApi.insertBomAlternative(srv, inData);
  237. //设置ifs 信息
  238. inData.setIfsRowId(resultMap.get("OBJID"));
  239. inData.setIfsRowVersion(resultMap.get("OBJVERSION"));
  240. returnMap.put("resultCode", "200");
  241. returnMap.put("obj", JSON.toJSONString(inData));
  242. } catch(APException e){
  243. returnMap.put("resultCode", "400");
  244. returnMap.put("resultMsg", e.getMessage());
  245. }
  246. //打印日志
  247. logger.info("Bom Alternative 新增结束:"+JSON.toJSONString(inData));
  248. //返回结果集
  249. return returnMap;
  250. }
  251. /**
  252. * @description: 修改Bom Alternative
  253. * @author LR
  254. * @date 2024/12/12 17:06
  255. * @version 1.0
  256. */
  257. public Map<String, String> modifyBomAlternative(Server srv, BomIfsAlternative inData) {
  258. logger.info("Bom Alternative 修改开始:"+JSON.toJSONString(inData));
  259. //公共参数
  260. Map<String, String> returnMap = new HashMap<>();
  261. String contract = inData.getContract();
  262. String partNo = inData.getPartNo();
  263. String engChgLevel = inData.getEngChgLevel();
  264. String bomType = inData.getBomType();
  265. String alternativeNo = inData.getAlternativeNo();
  266. try{
  267. //查询数据
  268. Map<String, String> alternativeMap = BomApi.getBomAlternative(srv, contract, partNo, engChgLevel, bomType, alternativeNo);
  269. //判断是否需要插入到ifs
  270. if(alternativeMap == null || alternativeMap.size() == 0) {
  271. throw new RuntimeException("Bom Alternative不存在!");
  272. }
  273. //设置ifs 信息
  274. inData.setIfsRowId(alternativeMap.get("IFSROWID"));
  275. inData.setIfsRowVersion(alternativeMap.get("IFSROWVERSION"));
  276. //调用api
  277. Map<String, String> resultMap = BomApi.modifyBomAlternative(srv, inData);
  278. //设置ifs 信息
  279. inData.setIfsRowVersion(resultMap.get("OBJVERSION"));
  280. returnMap.put("resultCode", "200");
  281. returnMap.put("obj", JSON.toJSONString(inData));
  282. } catch(APException e){
  283. returnMap.put("resultCode", "400");
  284. returnMap.put("resultMsg", e.getMessage());
  285. }
  286. //打印日志
  287. logger.info("Bom Alternative 修改结束:"+JSON.toJSONString(inData));
  288. //返回结果集
  289. return returnMap;
  290. }
  291. /**
  292. * @description: 删除Bom Alternative
  293. * @author LR
  294. * @date 2024/12/12 17:07
  295. * @version 1.0
  296. */
  297. public Map<String, String> removeBomAlternative(Server srv, BomIfsAlternative inData) {
  298. logger.info("Bom Alternative 删除开始:"+JSON.toJSONString(inData));
  299. //公共参数
  300. Map<String, String> returnMap = new HashMap<>();
  301. String contract = inData.getContract();
  302. String partNo = inData.getPartNo();
  303. String engChgLevel = inData.getEngChgLevel();
  304. String bomType = inData.getBomType();
  305. String alternativeNo = inData.getAlternativeNo();
  306. try{
  307. //查询数据
  308. Map<String, String> alternativeMap = BomApi.getBomAlternative(srv, contract, partNo, engChgLevel, bomType, alternativeNo);
  309. //判断是否需要插入到ifs
  310. if(alternativeMap == null || alternativeMap.size() == 0) {
  311. throw new RuntimeException("Bom Alternative不存在!");
  312. }
  313. //设置ifs 信息
  314. inData.setIfsRowId(alternativeMap.get("IFSROWID"));
  315. inData.setIfsRowVersion(alternativeMap.get("IFSROWVERSION"));
  316. //调用api
  317. BomApi.removeBomAlternative(srv, inData);
  318. returnMap.put("resultCode", "200");
  319. returnMap.put("obj", JSON.toJSONString(inData));
  320. } catch(APException e){
  321. returnMap.put("resultCode", "400");
  322. returnMap.put("resultMsg", e.getMessage());
  323. }
  324. //打印日志
  325. logger.info("Bom Alternative 删除结束:"+JSON.toJSONString(inData));
  326. //返回结果集
  327. return returnMap;
  328. }
  329. /**
  330. * @description: Build Bom Alternative
  331. * @author LR
  332. * @date 2024/12/13 9:37
  333. * @version 1.0
  334. */
  335. public Map<String, String> buildBomAlternative(Server srv, BomIfsAlternative inData) {
  336. logger.info("Bom替代Build开始:"+JSON.toJSONString(inData));
  337. //公共参数
  338. Map<String, String> returnMap = new HashMap<>();
  339. String contract = inData.getContract();
  340. String partNo = inData.getPartNo();
  341. String engChgLevel = inData.getEngChgLevel();
  342. String bomType = inData.getBomType();
  343. String alternativeNo = inData.getAlternativeNo();
  344. try{
  345. //查询数据
  346. Map<String, String> alternativeMap = BomApi.getBomAlternative(srv, contract, partNo, engChgLevel, bomType, alternativeNo);
  347. //判断是否需要插入到ifs
  348. if(alternativeMap == null || alternativeMap.size() == 0) {
  349. throw new RuntimeException("Bom Alternative不存在!");
  350. }
  351. //设置ifs 信息
  352. inData.setIfsRowId(alternativeMap.get("IFSROWID"));
  353. inData.setIfsRowVersion(alternativeMap.get("IFSROWVERSION"));
  354. //调用删除方法
  355. Map<String, String> resultMap = BomApi.buildBomAlternative(srv, inData);
  356. //设置ifs 信息
  357. inData.setIfsRowVersion(resultMap.get("OBJVERSION"));
  358. returnMap.put("resultCode", "200");
  359. returnMap.put("obj", JSON.toJSONString(inData));
  360. } catch(APException e){
  361. returnMap.put("resultCode", "400");
  362. returnMap.put("resultMsg", e.getMessage());
  363. }
  364. //打印日志
  365. logger.info("Bom替代Build结束:"+JSON.toJSONString(inData));
  366. //返回结果集
  367. return returnMap;
  368. }
  369. /**
  370. * @description: Retire Bom Alternative
  371. * @author LR
  372. * @date 2024/12/13 9:40
  373. * @version 1.0
  374. */
  375. public Map<String, String> retireBomAlternative(Server srv, BomIfsAlternative inData) {
  376. logger.info("Bom替代retire开始:"+JSON.toJSONString(inData));
  377. //公共参数
  378. Map<String, String> returnMap = new HashMap<>();
  379. String contract = inData.getContract();
  380. String partNo = inData.getPartNo();
  381. String engChgLevel = inData.getEngChgLevel();
  382. String bomType = inData.getBomType();
  383. String alternativeNo = inData.getAlternativeNo();
  384. try{
  385. //查询数据
  386. Map<String, String> alternativeMap = BomApi.getBomAlternative(srv, contract, partNo, engChgLevel, bomType, alternativeNo);
  387. //判断是否需要插入到ifs
  388. if(alternativeMap == null || alternativeMap.size() == 0) {
  389. throw new RuntimeException("Bom Alternative不存在!");
  390. }
  391. //设置ifs 信息
  392. inData.setIfsRowId(alternativeMap.get("IFSROWID"));
  393. inData.setIfsRowVersion(alternativeMap.get("IFSROWVERSION"));
  394. //调用删除方法
  395. Map<String, String> resultMap = BomApi.retireBomAlternative(srv, inData);
  396. //设置ifs 信息
  397. inData.setIfsRowVersion(resultMap.get("IFSROWVERSION"));
  398. returnMap.put("resultCode", "200");
  399. returnMap.put("obj", JSON.toJSONString(inData));
  400. } catch(APException e){
  401. returnMap.put("resultCode", "400");
  402. returnMap.put("resultMsg", e.getMessage());
  403. }
  404. //打印日志
  405. logger.info("Bom替代retire开始:"+JSON.toJSONString(inData));
  406. //返回结果集
  407. return returnMap;
  408. }
  409. /**
  410. * @description: 获取Bom 的明细
  411. * @author LR
  412. * @date 2024/12/13 9:53
  413. * @version 1.0
  414. */
  415. public Map<String, String> getBomItems(Server srv, BomIfsItem inData) {
  416. //公共参数
  417. Map<String, String> returnMap = new HashMap<>();
  418. String contract = inData.getContract();
  419. String partNo = inData.getPartNo();
  420. String engChgLevel = inData.getEngChgLevel();
  421. String bomType = inData.getBomType();
  422. String alternativeNo = inData.getAlternativeNo();
  423. String lineItemNo = inData.getLineItemNo();
  424. try{
  425. //查询数据
  426. Map<String, String> alternativeMap = BomApi.getBomAlternative(srv, contract, partNo, engChgLevel, bomType, alternativeNo);
  427. //判断是否需要插入到ifs
  428. if(alternativeMap == null || alternativeMap.size() == 0) {
  429. throw new RuntimeException("Bom Alternative不存在!");
  430. }
  431. //查询结果集
  432. List<BomItem> resultList = BomApi.getBomItems(srv, contract, partNo, engChgLevel, bomType, alternativeNo, lineItemNo);
  433. //判断是否查询数据
  434. if(resultList == null ||resultList.size() == 0 || resultList.isEmpty()) {
  435. throw new RuntimeException("不存在此bom组件信息!");
  436. }
  437. returnMap.put("resultCode", "200");
  438. returnMap.put("obj", JSON.toJSONString(inData));
  439. } catch(APException e){
  440. returnMap.put("resultCode", "400");
  441. returnMap.put("resultMsg", e.getMessage());
  442. }
  443. //打印日志
  444. logger.info("Bom替代明细集合结束:"+JSON.toJSONString(inData));
  445. //返回结果集
  446. return returnMap;
  447. }
  448. /**
  449. * @description: 批量新增Bom Item
  450. * @author LR
  451. * @date 2024/12/12 17:23
  452. * @version 1.0
  453. */
  454. public Map<String, String> syncBomItems(Server srv, List<BomIfsItem> inDatas) {
  455. logger.info("Bom替代明细集合新增开始:"+JSON.toJSONString(inDatas));
  456. //公共参数
  457. Map<String, String> returnMap = new HashMap<>();
  458. String contract = inDatas.get(0).getContract();
  459. String partNo = inDatas.get(0).getPartNo();
  460. String engChgLevel = inDatas.get(0).getEngChgLevel();
  461. String bomType = inDatas.get(0).getBomType();
  462. String alternativeNo = inDatas.get(0).getAlternativeNo();
  463. String lineItemNo = inDatas.get(0).getLineItemNo();
  464. try{
  465. //查询数据
  466. Map<String, String> alternativeMap = BomApi.getBomAlternative(srv, contract, partNo, engChgLevel, bomType, alternativeNo);
  467. //判断是否需要插入到ifs
  468. if(alternativeMap == null || alternativeMap.size() == 0) {
  469. throw new RuntimeException("Bom Alternative不存在!");
  470. }
  471. //查询结果集
  472. List<BomItem> itemList = BomApi.getBomItems(srv, contract, partNo, engChgLevel, bomType, alternativeNo, null);
  473. //转Map
  474. Map<String, String> itemMap = itemList.stream().collect(Collectors.toMap(BomItem::getLineItemNo, BomItem::getLineItemNo));
  475. //打印日志
  476. logger.info("Bom替代明细集合 批量新增结束:"+JSON.toJSONString(inDatas));
  477. //循环判断的方法
  478. for(BomIfsItem bomItem : inDatas) {
  479. //判断是否已经存在
  480. String tempLineItemNo = bomItem.getLineItemNo();
  481. if(itemMap.containsKey(tempLineItemNo)) {
  482. throw new RuntimeException("已存在此bom组件信息!LineItemNo:"+tempLineItemNo);
  483. }
  484. }
  485. // 校验通过 循环调用新增的方法
  486. for(BomIfsItem bomItem : inDatas) {
  487. //调用api
  488. Map<String, String> tempMap = BomApi.insertBomItem(srv, bomItem);
  489. //设置ifs 信息
  490. bomItem.setIfsRowId(tempMap.get("OBJID"));
  491. bomItem.setIfsRowVersion(tempMap.get("OBJVERSION"));
  492. }
  493. returnMap.put("resultCode", "200");
  494. returnMap.put("obj", JSON.toJSONString(inDatas));
  495. } catch(APException e){
  496. returnMap.put("resultCode", "400");
  497. returnMap.put("resultMsg", e.getMessage());
  498. }
  499. //打印日志
  500. logger.info("Bom替代明细集合新增开始:"+JSON.toJSONString(inDatas));
  501. //返回结果集
  502. return returnMap;
  503. }
  504. /**
  505. * @description: 修改Bom的明细
  506. * @author LR
  507. * @date 2024/12/13 10:24
  508. * @version 1.0
  509. */
  510. public Map<String, String> modifyBomItem(Server srv, BomIfsItem inData) {
  511. logger.info("Bom替代明细新增开始:"+JSON.toJSONString(inData));
  512. // 公共参数
  513. Map<String, String> returnMap = new HashMap<>();
  514. String contract = inData.getContract();
  515. String partNo = inData.getPartNo();
  516. String engChgLevel = inData.getEngChgLevel();
  517. String bomType = inData.getBomType();
  518. String alternativeNo = inData.getAlternativeNo();
  519. String lineItemNo = inData.getLineItemNo();
  520. try{
  521. //查询数据
  522. Map<String, String> alternativeMap = BomApi.getBomAlternative(srv, contract, partNo, engChgLevel, bomType, alternativeNo);
  523. //判断是否需要插入到ifs
  524. if(alternativeMap == null || alternativeMap.size() == 0) {
  525. throw new RuntimeException("Bom Alternative不存在!");
  526. }
  527. //查询结果集
  528. List<BomItem> resultList = BomApi.getBomItems(srv, contract, partNo, engChgLevel, bomType, alternativeNo, lineItemNo);
  529. //判断是否查询数据
  530. if(resultList.size() == 0 || resultList.isEmpty()) {
  531. throw new RuntimeException("不存在此bom组件信息!");
  532. }
  533. BomItem bomItem = resultList.get(0);
  534. //设置版本信息
  535. inData.setIfsRowId(bomItem.getIfsRowId());
  536. inData.setIfsRowVersion(bomItem.getIfsRowVersion());
  537. //调用修改的方法
  538. Map<String, String> resultMap = BomApi.modifyBomItem(srv, inData);
  539. //设置ifs 信息
  540. bomItem.setIfsRowId(resultMap.get("OBJID"));
  541. bomItem.setIfsRowVersion(resultMap.get("OBJVERSION"));
  542. returnMap.put("resultCode", "200");
  543. returnMap.put("obj", JSON.toJSONString(inData));
  544. } catch(APException e){
  545. returnMap.put("resultCode", "400");
  546. returnMap.put("resultMsg", e.getMessage());
  547. }
  548. //打印日志
  549. logger.info("Bom替代明细新增结束:"+JSON.toJSONString(inData));
  550. //返回结果集
  551. return returnMap;
  552. }
  553. /**
  554. * @description: 批量删除
  555. * @author LR
  556. * @date 2024/12/13 10:26
  557. * @version 1.0
  558. */
  559. public Map<String, String> removeBomItems(Server srv, ArrayList<BomIfsItem> inDatas) {
  560. logger.info("Bom 明细集合删除开始:"+JSON.toJSONString(inDatas));
  561. //公共参数
  562. Map<String, String> returnMap = new HashMap<>();
  563. String contract = inDatas.get(0).getContract();
  564. String partNo = inDatas.get(0).getPartNo();
  565. String engChgLevel = inDatas.get(0).getEngChgLevel();
  566. String bomType = inDatas.get(0).getBomType();
  567. String alternativeNo = inDatas.get(0).getAlternativeNo();
  568. try{
  569. //查询数据
  570. List<BomItem> itemList = BomApi.getBomItems(srv, contract, partNo, engChgLevel, bomType, alternativeNo, null);
  571. //转Map
  572. Map<String, BomItem> itemMap = itemList.stream().collect(Collectors.toMap(BomItem::getLineItemNo, Function.identity()));
  573. //打印日志
  574. logger.info("Bom替代明细集合 批量新增结束:"+JSON.toJSONString(inDatas));
  575. //循环判断的方法
  576. for(BomIfsItem bomItem : inDatas) {
  577. //判断是否已经存在
  578. String tempLineItemNo = bomItem.getLineItemNo();
  579. if(!itemMap.containsKey(tempLineItemNo)) {
  580. throw new RuntimeException("不存在此bom组件信息!LineItemNo:"+tempLineItemNo);
  581. }
  582. }
  583. // 校验通过 循环调用新增的方法
  584. for(BomIfsItem bomItem : inDatas) {
  585. //设置版本的信息
  586. String key = bomItem.getLineItemNo();
  587. BomItem oriItem = itemMap.get(key);
  588. bomItem.setIfsRowId(oriItem.getIfsRowId());
  589. bomItem.setIfsRowVersion(oriItem.getIfsRowVersion());
  590. //调用api
  591. BomApi.removeBomItem(srv, bomItem);
  592. }
  593. returnMap.put("resultCode", "200");
  594. returnMap.put("obj", JSON.toJSONString(inDatas));
  595. } catch(APException e){
  596. returnMap.put("resultCode", "400");
  597. returnMap.put("resultMsg", e.getMessage());
  598. }
  599. //打印日志
  600. logger.info("Bom 明细集合删除开始:"+JSON.toJSONString(inDatas));
  601. //返回结果集
  602. return returnMap;
  603. }
  604. /**
  605. * @description: 修改单个 Bom 副产品
  606. * @author LR
  607. * @date 2024/12/13 10:51
  608. * @version 1.0
  609. */
  610. public Map<String, String> modifyBomDistribution(Server srv, BomDistribution inData) {
  611. logger.info("Bom Distribution查询开始:"+JSON.toJSONString(inData));
  612. //公共参数
  613. Map<String, String> returnMap = new HashMap<>();
  614. String contract = inData.getContract();
  615. String partNo = inData.getPartNo();
  616. String engChgLevel = inData.getEngChgLevel();
  617. String bomType = inData.getBomType();
  618. String alternativeNo = inData.getAlternativeNo();
  619. String componentLineItemNo = inData.getComponentLineItemNo();
  620. String byProductLineItemNo = inData.getByProdLineItemNo();// 副产品的序号
  621. try{
  622. //查询数据
  623. Map<String, String> searchMap = BomApi.getBomDistribution(srv, contract, partNo, engChgLevel, bomType, alternativeNo,
  624. componentLineItemNo, byProductLineItemNo);
  625. //判断是否存在
  626. if(searchMap == null) {
  627. throw new RuntimeException("查无此副产品分配信息!");
  628. }
  629. //设置RowId和Rowversion
  630. inData.setIfsRowId(searchMap.get("IFSROWID"));
  631. inData.setIfsRowVersion(searchMap.get("IFSROWVERSION"));
  632. //不存在 则调用当前修改的副产品成本分配的方法
  633. Map<String, String> resultMap = BomApi.modifyBomDistribution(srv, inData);
  634. //设置IFS信息
  635. inData.setIfsRowVersion(resultMap.get("OBJVERSION"));
  636. returnMap.put("resultCode", "200");
  637. returnMap.put("obj", JSON.toJSONString(inData));
  638. } catch(APException e){
  639. returnMap.put("resultCode", "400");
  640. returnMap.put("resultMsg", e.getMessage());
  641. }//打印日志
  642. logger.info("Bom Distribution查询结束:"+JSON.toJSONString(inData));
  643. //返回结果集
  644. return returnMap;
  645. }
  646. /**
  647. * @description: 批量修改
  648. * @author LR
  649. * @date 2024/12/13 10:57
  650. * @version 1.0
  651. */
  652. public Map<String, String> modifyBomDistributions(Server srv, List<BomDistribution> inDatas) {
  653. logger.info("Bom Distribution批量修改开始:"+JSON.toJSONString(inDatas));
  654. BomDistribution inData = inDatas.get(0);
  655. //公共参数
  656. Map<String, String> returnMap = new HashMap<>();
  657. String contract = inData.getContract();
  658. String partNo = inData.getPartNo();
  659. String engChgLevel = inData.getEngChgLevel();
  660. String bomType = inData.getBomType();
  661. String alternativeNo = inData.getAlternativeNo();
  662. try{
  663. //迭代循环调用 验证
  664. for(BomDistribution bomDistribution : inDatas) {
  665. String componentLineItemNo = bomDistribution.getComponentLineItemNo();
  666. String byProductLineItemNo = bomDistribution.getByProdLineItemNo();// 副产品的序号
  667. Map<String, String> searchMap = BomApi.getBomDistribution(srv, contract, partNo, engChgLevel, bomType, alternativeNo,
  668. componentLineItemNo, byProductLineItemNo);
  669. //判断是否存在
  670. if(searchMap == null) {
  671. throw new RuntimeException("查无此副产品分配信息!");
  672. }
  673. }
  674. //迭代循环调用
  675. for(BomDistribution bomDistribution : inDatas) {
  676. String componentLineItemNo = bomDistribution.getComponentLineItemNo();
  677. String byProductLineItemNo = bomDistribution.getByProdLineItemNo();// 副产品的序号
  678. Map<String, String> searchMap = BomApi.getBomDistribution(srv, contract, partNo, engChgLevel, bomType, alternativeNo,
  679. componentLineItemNo, byProductLineItemNo);
  680. //设置RowId和Rowversion
  681. bomDistribution.setIfsRowId(searchMap.get("IFSROWID"));
  682. bomDistribution.setIfsRowVersion(searchMap.get("IFSROWVERSION"));
  683. //不存在 则调用当前修改的副产品成本分配的方法
  684. Map<String, String> resultMap = BomApi.modifyBomDistribution(srv, bomDistribution);
  685. //设置版本信息
  686. bomDistribution.setIfsRowVersion(resultMap.get("IFSROWVERSION"));
  687. }
  688. returnMap.put("resultCode", "200");
  689. returnMap.put("obj", JSON.toJSONString(inData));
  690. } catch(APException e){
  691. returnMap.put("resultCode", "400");
  692. returnMap.put("resultMsg", e.getMessage());
  693. }
  694. //打印日志
  695. logger.info("Bom Distribution批量修改结束:"+JSON.toJSONString(inDatas));
  696. //返回结果集
  697. return returnMap;
  698. }
  699. }