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.

848 lines
39 KiB

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