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.

767 lines
35 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
  1. package com.spring.ifs.bean;
  2. import com.alibaba.fastjson.JSON;
  3. import com.spring.ifs.api.*;
  4. import com.spring.ifs.data.*;
  5. import com.spring.modules.part.entity.APIEntity.*;
  6. import com.spring.modules.part.entity.APIEntity.CopyPart;
  7. import com.spring.modules.part.vo.PartInformationVo;
  8. import ifs.fnd.ap.APException;
  9. import ifs.fnd.ap.Server;
  10. import org.slf4j.Logger;
  11. import org.slf4j.LoggerFactory;
  12. import org.springframework.beans.factory.annotation.Autowired;
  13. import org.springframework.stereotype.Component;
  14. import java.util.List;
  15. import java.util.Map;
  16. /**
  17. * @description: 处理库存件的
  18. * @author LR
  19. * @date 2024/12/9 15:44
  20. * @version 1.0
  21. */
  22. @Component
  23. public class InventoryServiceBean {
  24. @Autowired
  25. private IfsServer ifsServer;
  26. private static final Logger logger = LoggerFactory.getLogger(InventoryServiceBean.class);
  27. /**
  28. * @description: 查询库存件的信息
  29. * @author LR
  30. * @date 2024/12/12 15:49
  31. * @version 1.0
  32. */
  33. public InventoryPart getInventoryPart(Server srv, InventoryPart inData) throws APException {
  34. logger.info("Inventory Part 查询开始:"+ JSON.toJSONString(inData));
  35. //查询的参数
  36. String contract = inData.getContract();
  37. String partNo = inData.getPartNo();
  38. //获取数据
  39. Map<String, String> partMap = InventoryPartApi.getInventoryPartByPartNo(srv, contract, partNo);
  40. //判断是否需要插入到ifs
  41. if(partMap == null || partMap.size() == 0) {
  42. throw new RuntimeException("库存件不存在!");
  43. }
  44. //设置ifs 信息
  45. inData.setIfsRowId(partMap.get("IFSROWID"));
  46. inData.setIfsRowVersion(partMap.get("IFSROWVERSION"));
  47. //查询库存件的属性模版
  48. Map<String, String> templateMap = InventoryPartApi.getInventoryPartCharacteristicTemplate(srv, contract, partNo);
  49. //设置模版
  50. inData.setEngAttribute(templateMap.get("ENG_ATTRIBUTE"));
  51. logger.info("Inventory Part 查询结束:"+JSON.toJSONString(inData));
  52. return inData;
  53. }
  54. /**
  55. * @description: 库存件新增
  56. * @author LR
  57. * @date 2024/12/12 15:52
  58. * @version 1.0
  59. */
  60. public PartIfsInventory syncInventoryPart(Server srv, PartIfsInventory inData) throws APException {
  61. logger.info("Inventory Part 新增开始:"+JSON.toJSONString(inData));
  62. //查询的参数
  63. String contract = inData.getContract();
  64. String partNo = inData.getPartNo();
  65. //获取数据
  66. Map<String, String> partMap = InventoryPartApi.getInventoryPartByPartNo(srv, contract, partNo);
  67. //判断是否需要插入到ifs
  68. if(partMap == null || partMap.size() == 0) {
  69. //调用api
  70. Map<String, String> resultMap = InventoryPartApi.insertInventoryPart(srv, inData);
  71. //设置ifs 信息
  72. inData.setIfsRowId(resultMap.get("OBJID"));
  73. inData.setIfsRowVersion(resultMap.get("OBJVERSION"));
  74. }else {
  75. throw new RuntimeException("库存件已存在!");
  76. }
  77. //打印日志
  78. logger.info("Inventory Part 新增结束:"+JSON.toJSONString(inData));
  79. //返回结果集
  80. return inData;
  81. }
  82. /**
  83. * @description: 库存件修改
  84. * @author LR
  85. * @date 2024/12/12 15:55
  86. * @version 1.0
  87. */
  88. public PartIfsInventory modifyInventoryPart(Server srv, PartIfsInventory inData) throws APException {
  89. logger.info("Inventory Part 修改开始:"+JSON.toJSONString(inData));
  90. //查询的参数
  91. String contract = inData.getContract();
  92. String partNo = inData.getPartNo();
  93. //获取数据
  94. Map<String, String> partMap = InventoryPartApi.getInventoryPartByPartNo(srv, contract, partNo);
  95. //判断是否需要插入到ifs
  96. if(partMap == null || partMap.size() == 0) {
  97. throw new RuntimeException("域:"+contract+"库存件:"+partNo+"不存在!");
  98. }else {
  99. //设置ifs 信息
  100. inData.setIfsRowId(partMap.get("IFSROWID"));
  101. inData.setIfsRowVersion(partMap.get("IFSROWVERSION"));
  102. Map<String, String> resultMap = InventoryPartApi.modifyInventoryPart(srv, inData);
  103. //设置ifs 信息
  104. inData.setIfsRowVersion(resultMap.get("OBJVERSION"));
  105. }
  106. //打印日志
  107. logger.info("Inventory Part 修改结束:"+JSON.toJSONString(inData));
  108. //返回结果集
  109. return inData;
  110. }
  111. /**
  112. * @description: 库存件删除
  113. * @author LR
  114. * @date 2024/12/12 15:58
  115. * @version 1.0
  116. */
  117. public void removeInventoryPart(Server srv, PartIfsInventory inData) throws APException {
  118. logger.info("Inventory Part 删除开始:"+JSON.toJSONString(inData));
  119. //查询的参数
  120. String contract = inData.getContract();
  121. String partNo = inData.getPartNo();
  122. //获取数据
  123. Map<String, String> partMap = InventoryPartApi.getInventoryPartByPartNo(srv, contract, partNo);
  124. //判断是否需要插入到ifs
  125. if(partMap == null || partMap.size() == 0) {
  126. throw new RuntimeException("域:"+contract+"库存件:"+partNo+"不存在!");
  127. }else {
  128. //设置ifs 信息
  129. inData.setIfsRowId(partMap.get("IFSROWID"));
  130. inData.setIfsRowVersion(partMap.get("IFSROWVERSION"));
  131. InventoryPartApi.removeInventoryPart(srv, inData);
  132. }
  133. //打印日志
  134. logger.info("Inventory Part 删除结束:"+JSON.toJSONString(inData));
  135. }
  136. /**
  137. * @description: 修改库存件的配置信息
  138. * @author LR
  139. * @date 2024/12/12 16:11
  140. * @version 1.0
  141. */
  142. public PartIfsInventoryConfig modifyInventoryPartCost(Server srv, PartIfsInventoryConfig inData) throws APException {
  143. logger.info("Inventory Part Cost 修改开始:"+JSON.toJSONString(inData));
  144. //查询的参数
  145. String contract = inData.getContract();
  146. String partNo = inData.getPartNo();
  147. //获取数据
  148. Map<String, String> partMap = InventoryPartApi.getInventoryPartConfig(srv, contract, partNo);
  149. //判断是否需要插入到ifs
  150. if(partMap == null || partMap.size() == 0) {
  151. throw new RuntimeException("域:"+contract+"库存件:"+partNo+"不存在!");
  152. }else {
  153. //设置ifs 信息
  154. inData.setIfsRowId(partMap.get("IFSROWID"));
  155. inData.setIfsRowVersion(partMap.get("IFSROWVERSION"));
  156. Map<String, String> resultMap = InventoryPartApi.modifyInventoryPartCost(srv, inData);
  157. //设置ifs 信息
  158. inData.setIfsRowVersion(resultMap.get("OBJVERSION"));
  159. }
  160. //打印日志
  161. logger.info("Inventory Part Cost 修改结束:"+JSON.toJSONString(inData));
  162. //返回结果集
  163. return inData;
  164. }
  165. /**
  166. * @description: 修改库存件的Plan
  167. * @author LR
  168. * @date 2024/12/12 16:31
  169. * @version 1.0
  170. */
  171. public PartIfsInventoryPlan modifyInventoryPartPlan(Server srv, PartIfsInventoryPlan inData) throws APException {
  172. logger.info("Inventory Part Plan 修改开始:"+JSON.toJSONString(inData));
  173. //查询的参数
  174. String contract = inData.getContract();
  175. String partNo = inData.getPartNo();
  176. //获取数据
  177. Map<String, String> partMap = InventoryPartApi.getInventoryPartByPartNo(srv, contract, partNo);
  178. //判断是否需要插入到ifs
  179. if(partMap == null || partMap.size() == 0) {
  180. throw new RuntimeException("域:"+contract+"库存件:"+partNo+"不存在!");
  181. }else {
  182. //获取库存件Plan配置的信息
  183. Map<String, String> planMap = InventoryPartApi.getInventoryPartPlan(srv, contract, partNo);
  184. //设置ifs 信息
  185. inData.setIfsRowId(planMap.get("IFSROWID"));
  186. inData.setIfsRowVersion(planMap.get("IFSROWVERSION"));
  187. Map<String, String> resultMap = InventoryPartApi.modifyInventoryPartPlan(srv, inData);
  188. //设置ifs 信息
  189. inData.setIfsRowVersion(resultMap.get("OBJVERSION"));
  190. }
  191. //打印日志
  192. logger.info("Inventory Part Plan 修改结束:"+JSON.toJSONString(inData));
  193. //返回结果集
  194. return inData;
  195. }
  196. /**
  197. * @description: 批量新增库位
  198. * @author LR
  199. * @date 2024/12/12 16:36
  200. * @version 1.0
  201. */
  202. public List<PartIfsInventoryLocation> syncInventoryPartLocations(Server srv, List<PartIfsInventoryLocation> inDatas) throws APException {
  203. logger.info("Inventory Part Location 批量新增开始:"+JSON.toJSONString(inDatas));
  204. PartIfsInventoryLocation zeroData = inDatas.get(0);
  205. String contract = zeroData.getContract();
  206. String partNo = zeroData.getPartNo();
  207. //获取数据
  208. Map<String, String> partMap = InventoryPartApi.getInventoryPartByPartNo(srv, contract, partNo);
  209. //判断是否需要插入到ifs
  210. if(partMap == null || partMap.size() == 0) {
  211. throw new RuntimeException("域:" + contract + "库存件:" + partNo + "不存在!");
  212. }
  213. //编辑处理需要处理的数据
  214. for(PartIfsInventoryLocation inData : inDatas) {
  215. Map<String, String> resultMap = InventoryPartApi.insertInventoryPartLocation(srv, inData);
  216. //设置ifs 信息
  217. inData.setIfsRowId(resultMap.get("OBJID"));
  218. inData.setIfsRowVersion(resultMap.get("OBJVERSION"));
  219. }
  220. logger.info("Inventory Part Location 批量新增结束:"+JSON.toJSONString(inDatas));
  221. //返回结果集
  222. return inDatas;
  223. }
  224. /**
  225. * @description: 删除单个库存件的 Location
  226. * @author LR
  227. * @date 2024/12/12 16:37
  228. * @version 1.0
  229. */
  230. public void removeInventoryPartLocation(Server srv, PartIfsInventoryLocation inData) throws APException {
  231. logger.info("Inventory Part Location 删除开始:"+JSON.toJSONString(inData));
  232. String contract = inData.getContract();
  233. String partNo = inData.getPartNo();
  234. String locationNo = inData.getLocationNo();
  235. //获取数据
  236. Map<String, String> locationMap = InventoryPartApi.getInventoryPartLocation(srv, contract, partNo, locationNo);
  237. //判断是否需要插入到ifs
  238. if(locationMap == null || locationMap.size() == 0) {
  239. throw new RuntimeException("域:" + contract + "库存件:" + partNo + "库位编码:" + locationNo +"不存在!");
  240. }
  241. //设置ifs 信息
  242. inData.setIfsRowId(locationMap.get("IFSROWID"));
  243. inData.setIfsRowVersion(locationMap.get("IFSROWVERSION"));
  244. InventoryPartApi.removeInventoryPartLocation(srv, inData);
  245. //打印日志
  246. logger.info("Inventory Part Location 删除结束:"+JSON.toJSONString(inData));
  247. }
  248. /**
  249. * @description: 批量删除库位的信息
  250. * @author LR
  251. * @date 2024/12/12 16:42
  252. * @version 1.0
  253. */
  254. public void removeInventoryPartLocations(Server srv, List<PartIfsInventoryLocation> inDatas) throws APException {
  255. logger.info("Inventory Part Location 批量删除开始:"+JSON.toJSONString(inDatas));
  256. PartIfsInventoryLocation zeroData = inDatas.get(0);
  257. String contract = zeroData.getContract();
  258. String partNo = zeroData.getPartNo();
  259. //循环处理数据
  260. for(PartIfsInventoryLocation inData : inDatas) {
  261. String locationNo = inData.getLocationNo();
  262. //获取库存件Plan配置的信息
  263. Map<String, String> locationMap = InventoryPartApi.getInventoryPartLocation(srv, contract, partNo, locationNo);
  264. //判断是否需要插入到ifs
  265. if(locationMap == null || locationMap.size() == 0) {
  266. throw new RuntimeException("域:" + contract + "库存件:" + partNo + "库位编码:" + locationNo +"不存在!");
  267. }
  268. //设置ifs 信息
  269. inData.setIfsRowId(locationMap.get("IFSROWID"));
  270. inData.setIfsRowVersion(locationMap.get("IFSROWVERSION"));
  271. InventoryPartApi.removeInventoryPartLocation(srv, inData);
  272. }
  273. //打印日志
  274. logger.info("Inventory Part Location 批量删除结束:"+JSON.toJSONString(inDatas));
  275. }
  276. /**
  277. * @description: 修改库存件的Manufacture
  278. * @author LR
  279. * @date 2024/12/12 16:44
  280. * @version 1.0
  281. */
  282. public PartIfsInventoryManufacture modifyInventoryPartManufacture(Server srv, PartIfsInventoryManufacture inData) throws APException {
  283. logger.info("Inventory Part Manufacture 修改开始:"+JSON.toJSONString(inData));
  284. //公共参数
  285. String contract = inData.getContract();
  286. String partNo = inData.getPartNo();
  287. //查询制造商信息
  288. Map<String, String> manufMap = InventoryPartApi.getInventoryManufacture(srv, contract, partNo);
  289. //判断是否需要插入到ifs
  290. if(manufMap == null || manufMap.size() == 0) {
  291. throw new RuntimeException("域:"+contract+"库存件:"+partNo+"不存在制造商信息!");
  292. }else {
  293. //设置ifs 信息
  294. inData.setIfsRowId(manufMap.get("IFSROWID"));
  295. inData.setIfsRowVersion(manufMap.get("IFSROWVERSION"));
  296. Map<String, String> resultMap = InventoryPartApi.modifyInventoryPartManufacture(srv, inData);
  297. //设置ifs 信息
  298. inData.setIfsRowVersion(resultMap.get("IFSROWVERSION"));
  299. }
  300. //打印日志
  301. logger.info("Inventory Part Manufacture 修改结束:"+JSON.toJSONString(inData));
  302. //返回信息
  303. return inData;
  304. }
  305. /**
  306. * @description: 查询库存件 Revision
  307. * @author LR
  308. * @date 2024/12/12 16:59
  309. * @version 1.0
  310. */
  311. public PartIfsInventoryRevision getInventoryPartRevision(Server srv, PartIfsInventoryRevision inData) throws APException {
  312. logger.info("Inventory Part Revision 查询开始:"+JSON.toJSONString(inData));
  313. //公共参数
  314. String contract = inData.getContract();
  315. String partNo = inData.getPartNo();
  316. String engChgLevel = inData.getEngChgLevel();
  317. //获取数据
  318. Map<String, String> revisionMap = InventoryPartApi.getInventoryPartRevision(srv, contract, partNo, engChgLevel);
  319. //判断是否需要插入到ifs
  320. if(revisionMap == null) {
  321. throw new RuntimeException("当前版本信息不存在!");
  322. }
  323. //设置ifs 信息
  324. inData.setIfsRowId(revisionMap.get("IFSROWID"));
  325. inData.setIfsRowVersion(revisionMap.get("IFSROWVERSION"));
  326. //打印日志
  327. logger.info("Inventory Part Revision 查询结束:"+JSON.toJSONString(inData));
  328. return inData;
  329. }
  330. /**
  331. * @description: 插入库存件的版本
  332. * @author LR
  333. * @date 2024/12/12 17:03
  334. * @version 1.0
  335. */
  336. public PartIfsInventoryRevision syncInventoryPartRevision(Server srv, PartIfsInventoryRevision inData) throws APException {
  337. logger.info("Inventory Part Revision 新增开始:"+JSON.toJSONString(inData));
  338. //公共参数
  339. String contract = inData.getContract();
  340. String partNo = inData.getPartNo();
  341. String engChgLevel = inData.getEngChgLevel();
  342. //获取数据
  343. Map<String, String> revisionMap = InventoryPartApi.getInventoryPartRevision(srv, contract, partNo, engChgLevel);
  344. //判断是否需要插入到ifs
  345. if(revisionMap != null) {
  346. throw new RuntimeException("当前版本信息已存在!");
  347. }
  348. //调用新增api
  349. Map<String, String> resultMap = InventoryPartApi.insertInventoryPartRevision(srv, inData);
  350. //设置ifs 信息
  351. inData.setIfsRowId(resultMap.get("OBJID"));
  352. inData.setIfsRowVersion(resultMap.get("OBJVERSION"));
  353. //打印日志
  354. logger.info("Inventory Part Revision 新增结束:"+JSON.toJSONString(inData));
  355. //返回结果
  356. return inData;
  357. }
  358. /**
  359. * @description: 修改库存件的版本
  360. * @author LR
  361. * @date 2024/12/12 17:06
  362. * @version 1.0
  363. */
  364. public PartIfsInventoryRevision modifyInventoryPartRevision(Server srv, PartIfsInventoryRevision inData) throws APException {
  365. logger.info("Inventory Part Revision 修改开始:"+JSON.toJSONString(inData));
  366. //公共参数
  367. String contract = inData.getContract();
  368. String partNo = inData.getPartNo();
  369. String engChgLevel = inData.getEngChgLevel();
  370. //获取数据
  371. Map<String, String> revisionMap = InventoryPartApi.getInventoryPartRevision(srv, contract, partNo, engChgLevel);
  372. //判断是否需要插入到ifs
  373. if(revisionMap == null || revisionMap.size() == 0) {
  374. throw new RuntimeException("当前版本信息不存在!");
  375. }
  376. //设置ifs 信息
  377. inData.setIfsRowId(revisionMap.get("IFSROWID"));
  378. inData.setIfsRowVersion(revisionMap.get("IFSROWVERSION"));
  379. //调用api
  380. Map<String, String> resultMap = InventoryPartApi.modifyInventoryPartRevision(srv, inData);
  381. //设置ifs 信息
  382. inData.setIfsRowVersion(resultMap.get("OBJVERSION"));
  383. //打印日志
  384. logger.info("Inventory Part Revision 修改结束:"+JSON.toJSONString(inData));
  385. //返回结果
  386. return inData;
  387. }
  388. /**
  389. * @description: 删除库存件 Revision
  390. * @author LR
  391. * @date 2024/12/12 17:07
  392. * @version 1.0
  393. */
  394. public void removeInventoryPartRevision(Server srv, PartIfsInventoryRevision inData) throws APException {
  395. logger.info("Inventory Part Revision 删除开始:"+JSON.toJSONString(inData));
  396. //公共参数
  397. String contract = inData.getContract();
  398. String partNo = inData.getPartNo();
  399. String engChgLevel = inData.getEngChgLevel();
  400. //获取数据
  401. Map<String, String> revisionMap = InventoryPartApi.getInventoryPartRevision(srv, contract, partNo, engChgLevel);
  402. //判断是否需要插入到ifs
  403. if(revisionMap == null || revisionMap.size() == 0) {
  404. throw new RuntimeException("当前版本信息不存在!");
  405. }
  406. //设置ifs 信息
  407. inData.setIfsRowId(revisionMap.get("IFSROWID"));
  408. inData.setIfsRowVersion(revisionMap.get("IFSROWVERSION"));
  409. //调用api
  410. InventoryPartApi.removeInventoryPartRevision(srv, inData);
  411. //打印日志
  412. logger.info("Inventory Part Revision 删除结束:"+JSON.toJSONString(inData));
  413. }
  414. /**
  415. * @description: 批量新增属性
  416. * @author LR
  417. * @date 2024/12/12 17:23
  418. * @version 1.0
  419. */
  420. public List<PartIfsInventoryProperty> syncInventoryPartCharacteristics(Server srv, List<PartIfsInventoryProperty> inDatas) throws APException {
  421. logger.info("Inventory Part Characteristic Code 批量新增开始:"+JSON.toJSONString(inDatas));
  422. PartIfsInventoryProperty zeroData = inDatas.get(0);
  423. //公共参数
  424. String contract = zeroData.getContract();
  425. String partNo = zeroData.getPartNo();
  426. //递归判断
  427. for(PartIfsInventoryProperty characteristic : inDatas) {
  428. String characteristicCode = characteristic.getCharacteristicCode();
  429. Map<String, String> characteristicMap = InventoryPartApi.getInventoryPartCharacteristicCode(srv, contract, partNo, characteristicCode);
  430. if(characteristicMap != null && characteristicMap.size() > 0) {
  431. throw new RuntimeException("属性编码已存在!");
  432. }
  433. //校验通过继续新增
  434. Map<String, String> resultMap = InventoryPartApi.insertInventoryPartCharacteristicCode(srv, characteristic);
  435. //设置ifs 信息
  436. characteristic.setIfsRowId(resultMap.get("OBJID"));
  437. characteristic.setIfsRowVersion(resultMap.get("OBJVERSION"));
  438. }
  439. //打印日志
  440. logger.info("Inventory Part Characteristic Code 批量新增结束:"+JSON.toJSONString(inDatas));
  441. return inDatas;
  442. }
  443. /**
  444. * @description: 按照料号删除库存件的属性
  445. * @author LR
  446. * @date 2024/12/12 17:28
  447. * @version 1.0
  448. */
  449. public void removeInventoryPartCharacteristicsByPartNo(Server srv, InventoryPart inData) throws APException {
  450. logger.info("删除库存件的所有属性开始:"+JSON.toJSONString(inData));
  451. //公共参数
  452. String contract = inData.getContract();
  453. String partNo = inData.getPartNo();
  454. //查询当前物料的属性 先删除物料属性 再删除库存件
  455. List<PartIfsInventoryProperty> characteristicList = InventoryPartApi.getInventoryPartCharacteristicCodes(srv, contract, partNo);
  456. //如果存在就批量删掉数据
  457. if(characteristicList != null && characteristicList.size() > 0) {
  458. for(PartIfsInventoryProperty characteristic : characteristicList) {
  459. //一个一个删掉库存件的属性
  460. InventoryPartApi.removeInventoryPartCharacteristic(srv, characteristic);
  461. }
  462. }
  463. logger.info("删除库存件的所有属性结束:"+JSON.toJSONString(inData));
  464. }
  465. /**
  466. * @description: 删除库存件关联的数据
  467. * @author LR
  468. * @date 2024/12/12 17:38
  469. * @version 1.0
  470. */
  471. public void removeInventoryPartRelationInfo(Server srv, InventoryPart inData) throws APException {
  472. logger.info("删除库存件的关联信息开始:"+JSON.toJSONString(inData));
  473. //公共参数
  474. String contract = inData.getContract();
  475. String partNo = inData.getPartNo();
  476. //按照条件查询Bom的相关信息 按照海波的要求 删除Bom Header
  477. List<BomHeader> bomHeaders = BomApi.getBomHeadersByPartNo(srv, contract, partNo);
  478. //判断是否存在
  479. if(bomHeaders != null && bomHeaders.size() > 0) {
  480. for(BomHeader bomHeader : bomHeaders) {
  481. //执行删除的操作
  482. BomApi.removeBomHeader(srv, bomHeader);
  483. }
  484. }
  485. //按照条件查询Routing的相关信息 按照海波的要求
  486. List<RoutingHeader> routingHeaders = RoutingApi.getRoutingHeadersByPartNo(srv, contract, partNo);
  487. //判断是否存在
  488. if(routingHeaders != null && routingHeaders.size() > 0) {
  489. for(RoutingHeader routingHeader : routingHeaders) {
  490. //执行删除的操作
  491. RoutingApi.removeRoutingHeader(srv, routingHeader);
  492. }
  493. }
  494. //判断库存件是否存在
  495. PartIfsInventory inventoryPart = InventoryPartApi.getInventoryPart(srv, contract, partNo);
  496. //如果存在需要删掉
  497. if(inventoryPart != null) {
  498. //查询当前物料的属性 先删除物料属性 再删除库存件
  499. List<PartIfsInventoryProperty> characteristicCodes = InventoryPartApi.getInventoryPartCharacteristicCodes(srv, contract, partNo);
  500. //如果存在就批量删掉数据
  501. if(characteristicCodes.size() > 0) {
  502. for(PartIfsInventoryProperty characteristic : characteristicCodes) {
  503. //一个一个删掉库存件的属性
  504. InventoryPartApi.removeInventoryPartCharacteristic(srv, characteristic);
  505. }
  506. }
  507. InventoryPartApi.removeInventoryPart(srv, inventoryPart);
  508. }
  509. logger.info("删除库存件的关联信息结束:"+JSON.toJSONString(inData));
  510. }
  511. /**
  512. * @description: 执行copy part的操作
  513. * @author LR
  514. * @date 2024/12/9 15:51
  515. * @version 1.0
  516. */
  517. public void syncCopyPartForInventoryPart(Server srv, CopyPart inData) throws APException {
  518. //公共参数
  519. String oriContract = inData.getOriContract();
  520. String oriPartNo = inData.getOriPartNo();
  521. String contract = inData.getContract();
  522. String partNo = inData.getPartNo();
  523. String partDesc = inData.getPartDesc();
  524. String copyGeneral = inData.getCopyGeneral();//对应Inventory Part, General
  525. String copyDefaultLocation = inData.getCopyDefaultLocation(); //Inventory Part, Default Locations
  526. String copyCharacteristic = inData.getCopyCharacteristic(); //Inventory Part, Characteristics
  527. String copyManufacturing = inData.getCopyManufacturing(); //Inventory Part, Manufacturing
  528. String copyPPGeneral = inData.getCopyPPGeneral();//对应Purchase Part, General
  529. String copyPPDocumentTexts = inData.getCopyPPDocumentTexts();//对应Purchase Part, Document Texts
  530. String copyPPConnectedObjects = inData.getCopyPPConnectedObjects();//对应Purchase Part, Connected Objects
  531. String copySPPGeneral = inData.getCopySPPGeneral();//对应Supplier for Purchase Part, General
  532. String copySPPDocumentTexts = inData.getCopySPPDocumentTexts();//对应Supplier for Purchase Part, Document Texts
  533. String copySPGeneral = inData.getCopySPGeneral();//对应Sales Part, General
  534. String copySPCharacteristics = inData.getCopySPCharacteristics();//对应Sales Part, Characteristics
  535. String copySPDocumentTexts = inData.getCopySPDocumentTexts();//对应Sales Part, Document Texts
  536. String copySPLanguageDescription = inData.getCopySPLanguageDescription();//对应Sales Part, Language Description
  537. //调用api方法获取事件的编码
  538. Map<String, String> resultMap = InventoryPartApi.getCopyPartEventNo(srv);
  539. String eventNo = resultMap.get("EVENT_NO");
  540. //调整选择的接口数据
  541. List<CopyPartItem> copyPartItems = InventoryPartApi.getCopyPartItemsByEventNo(srv, eventNo);
  542. //循环遍历
  543. for(CopyPartItem copyPartItem : copyPartItems) {
  544. String copyDesc = copyPartItem.getCopyDesc();
  545. String ifsRowId = copyPartItem.getIfsRowId();
  546. String ifsRowVersion = copyPartItem.getIfsRowVersion();
  547. //处理Bom的数据都要传
  548. if(copyDesc.indexOf("Manufacturing Structure,") == 0) {
  549. //调用api设置成 必传 重复不添加
  550. InventoryPartApi.modifyIfsCopyPartItem(srv, ifsRowId, ifsRowVersion, "TRUE", "TRUE");
  551. }
  552. //处理Routing的数据都要传
  553. if(copyDesc.indexOf("Manufacturing Routings,") == 0) {
  554. //调用api设置成 必传 重复不添加
  555. InventoryPartApi.modifyIfsCopyPartItem(srv, ifsRowId, ifsRowVersion, "TRUE", "TRUE");
  556. }
  557. //处理master Part数据都要传
  558. if(copyDesc.indexOf("Part Catalog,") == 0 || copyDesc.indexOf("Part,") == 0) {
  559. //调用api设置成 必传 重复不添加
  560. InventoryPartApi.modifyIfsCopyPartItem(srv, ifsRowId, ifsRowVersion, "TRUE", "TRUE");
  561. }
  562. //针对Connected Objects 特殊设置 不确定页面和页签
  563. //库存件
  564. if(copyDesc.equalsIgnoreCase("Inventory Part, Connected Objects")) {
  565. //调用api设置成 必传 重复不添加
  566. InventoryPartApi.modifyIfsCopyPartItem(srv, ifsRowId, ifsRowVersion, "TRUE", "TRUE");
  567. }
  568. //库存件
  569. if(copyDesc.equalsIgnoreCase("Inventory Part, Document Texts")) {
  570. //调用api设置成 必传 重复不添加
  571. InventoryPartApi.modifyIfsCopyPartItem(srv, ifsRowId, ifsRowVersion, "FALSE", "TRUE");
  572. }
  573. //销售件
  574. if(copyDesc.equalsIgnoreCase("Sales Part, Connected Objects")) {
  575. //调用api设置成 必传 重复不添加
  576. InventoryPartApi.modifyIfsCopyPartItem(srv, ifsRowId, ifsRowVersion, "TRUE", "TRUE");
  577. }
  578. //针对特殊PLM控制的的数据 设置对应的参数
  579. //1.Inventory Part, General
  580. if(copyDesc.equalsIgnoreCase("Inventory Part, General")) {
  581. //根据plm的设置填充数据
  582. if("Y".equals(copyGeneral)) {
  583. //调用api设置成 必传 重复不添加
  584. InventoryPartApi.modifyIfsCopyPartItem(srv, ifsRowId, ifsRowVersion, "TRUE", "TRUE");
  585. }else {
  586. //调用api设置成 必传 重复不添加
  587. InventoryPartApi.modifyIfsCopyPartItem(srv, ifsRowId, ifsRowVersion, "FALSE", "TRUE");
  588. }
  589. }
  590. //2.Inventory Part, Default Locations
  591. if(copyDesc.equalsIgnoreCase("Inventory Part, Default Locations")) {
  592. //根据plm的设置填充数据
  593. if("Y".equals(copyDefaultLocation)) {
  594. //调用api设置成 必传 重复不添加
  595. InventoryPartApi.modifyIfsCopyPartItem(srv, ifsRowId, ifsRowVersion, "TRUE", "TRUE");
  596. }else {
  597. //调用api设置成 必传 重复不添加
  598. InventoryPartApi.modifyIfsCopyPartItem(srv, ifsRowId, ifsRowVersion, "FALSE", "TRUE");
  599. }
  600. }
  601. //3.Inventory Part, Characteristics
  602. if(copyDesc.equalsIgnoreCase("Inventory Part, Characteristics")) {
  603. //根据plm的设置填充数据
  604. if("Y".equals(copyCharacteristic)) {
  605. //调用api设置成 必传 重复不添加
  606. InventoryPartApi.modifyIfsCopyPartItem(srv, ifsRowId, ifsRowVersion, "TRUE", "TRUE");
  607. }else {
  608. //调用api设置成 必传 重复不添加
  609. InventoryPartApi.modifyIfsCopyPartItem(srv, ifsRowId, ifsRowVersion, "FALSE", "TRUE");
  610. }
  611. }
  612. //4.Inventory Part, Manufacturing
  613. if(copyDesc.equalsIgnoreCase("Inventory Part, Manufacturing")) {
  614. //根据plm的设置填充数据
  615. if("Y".equals(copyManufacturing)) {
  616. //调用api设置成 必传 重复不添加
  617. InventoryPartApi.modifyIfsCopyPartItem(srv, ifsRowId, ifsRowVersion, "TRUE", "TRUE");
  618. }else {
  619. //调用api设置成 必传 重复不添加
  620. InventoryPartApi.modifyIfsCopyPartItem(srv, ifsRowId, ifsRowVersion, "FALSE", "TRUE");
  621. }
  622. }
  623. //5.Purchase Part, General
  624. if(copyDesc.equalsIgnoreCase("Purchase Part, General")) {
  625. //根据plm的设置填充数据
  626. if("Y".equals(copyPPGeneral)) {
  627. //调用api设置成 必传 重复不添加
  628. InventoryPartApi.modifyIfsCopyPartItem(srv, ifsRowId, ifsRowVersion, "TRUE", "TRUE");
  629. }else {
  630. //调用api设置成 必传 重复不添加
  631. InventoryPartApi.modifyIfsCopyPartItem(srv, ifsRowId, ifsRowVersion, "FALSE", "TRUE");
  632. }
  633. }
  634. //6.Purchase Part, Document Texts
  635. if(copyDesc.equalsIgnoreCase("Purchase Part, Document Texts")) {
  636. //根据plm的设置填充数据
  637. if("Y".equals(copyPPDocumentTexts)) {
  638. //调用api设置成 必传 重复不添加
  639. InventoryPartApi.modifyIfsCopyPartItem(srv, ifsRowId, ifsRowVersion, "TRUE", "TRUE");
  640. }else {
  641. //调用api设置成 必传 重复不添加
  642. InventoryPartApi.modifyIfsCopyPartItem(srv, ifsRowId, ifsRowVersion, "FALSE", "TRUE");
  643. }
  644. }
  645. //7.Purchase Part, Connected Objects
  646. if(copyDesc.equalsIgnoreCase("Purchase Part, Connected Objects")) {
  647. //根据plm的设置填充数据
  648. if("Y".equals(copyPPConnectedObjects)) {
  649. //调用api设置成 必传 重复不添加
  650. InventoryPartApi.modifyIfsCopyPartItem(srv, ifsRowId, ifsRowVersion, "TRUE", "TRUE");
  651. }else {
  652. //调用api设置成 必传 重复不添加
  653. InventoryPartApi.modifyIfsCopyPartItem(srv, ifsRowId, ifsRowVersion, "FALSE", "TRUE");
  654. }
  655. }
  656. //8.Supplier for Purchase Part, General
  657. if(copyDesc.equalsIgnoreCase("Supplier for Purchase Part, General")) {
  658. //根据plm的设置填充数据
  659. if("Y".equals(copySPPGeneral)) {
  660. //调用api设置成 必传 重复不添加
  661. InventoryPartApi.modifyIfsCopyPartItem(srv, ifsRowId, ifsRowVersion, "TRUE", "TRUE");
  662. }else {
  663. //调用api设置成 必传 重复不添加
  664. InventoryPartApi.modifyIfsCopyPartItem(srv, ifsRowId, ifsRowVersion, "FALSE", "TRUE");
  665. }
  666. }
  667. //9.Supplier for Purchase Part, Document Texts
  668. if(copyDesc.equalsIgnoreCase("Supplier for Purchase Part, Document Texts")) {
  669. //根据plm的设置填充数据
  670. if("Y".equals(copySPPDocumentTexts)) {
  671. //调用api设置成 必传 重复不添加
  672. InventoryPartApi.modifyIfsCopyPartItem(srv, ifsRowId, ifsRowVersion, "TRUE", "TRUE");
  673. }else {
  674. //调用api设置成 必传 重复不添加
  675. InventoryPartApi.modifyIfsCopyPartItem(srv, ifsRowId, ifsRowVersion, "FALSE", "TRUE");
  676. }
  677. }
  678. //10.Sales Part, General
  679. if(copyDesc.equalsIgnoreCase("Sales Part, General")) {
  680. //根据plm的设置填充数据
  681. if("Y".equals(copySPGeneral)) {
  682. //调用api设置成 必传 重复不添加
  683. InventoryPartApi.modifyIfsCopyPartItem(srv, ifsRowId, ifsRowVersion, "TRUE", "TRUE");
  684. }else {
  685. //调用api设置成 必传 重复不添加
  686. InventoryPartApi.modifyIfsCopyPartItem(srv, ifsRowId, ifsRowVersion, "FALSE", "TRUE");
  687. }
  688. }
  689. //11.Sales Part, Characteristics
  690. if(copyDesc.equalsIgnoreCase("Sales Part, Characteristics")) {
  691. //根据plm的设置填充数据
  692. if("Y".equals(copySPCharacteristics)) {
  693. //调用api设置成 必传 重复不添加
  694. InventoryPartApi.modifyIfsCopyPartItem(srv, ifsRowId, ifsRowVersion, "TRUE", "TRUE");
  695. }else {
  696. //调用api设置成 必传 重复不添加
  697. InventoryPartApi.modifyIfsCopyPartItem(srv, ifsRowId, ifsRowVersion, "FALSE", "TRUE");
  698. }
  699. }
  700. //12.Sales Part, Document Texts
  701. if(copyDesc.equalsIgnoreCase("Sales Part, Document Texts")) {
  702. //根据plm的设置填充数据
  703. if("Y".equals(copySPDocumentTexts)) {
  704. //调用api设置成 必传 重复不添加
  705. InventoryPartApi.modifyIfsCopyPartItem(srv, ifsRowId, ifsRowVersion, "TRUE", "TRUE");
  706. }else {
  707. //调用api设置成 必传 重复不添加
  708. InventoryPartApi.modifyIfsCopyPartItem(srv, ifsRowId, ifsRowVersion, "FALSE", "TRUE");
  709. }
  710. }
  711. //13.Sales Part, Language Description
  712. if(copyDesc.equalsIgnoreCase("Sales Part, Language Description")) {
  713. //根据plm的设置填充数据
  714. if("Y".equals(copySPLanguageDescription)) {
  715. //调用api设置成 必传 重复不添加
  716. InventoryPartApi.modifyIfsCopyPartItem(srv, ifsRowId, ifsRowVersion, "TRUE", "TRUE");
  717. }else {
  718. //调用api设置成 必传 重复不添加
  719. InventoryPartApi.modifyIfsCopyPartItem(srv, ifsRowId, ifsRowVersion, "FALSE", "TRUE");
  720. }
  721. }
  722. }
  723. //执行拷贝的操作
  724. InventoryPartApi.processIfsCopyPart(srv, oriContract, oriPartNo, contract, partNo, partDesc, "FALSE", eventNo);
  725. }
  726. }