UasEisApplicationTests.java 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386
  1. package com.uas.eis;
  2. import com.fasterxml.jackson.core.JsonProcessingException;
  3. import com.fasterxml.jackson.databind.ObjectMapper;
  4. import com.fasterxml.jackson.databind.PropertyName;
  5. import com.fasterxml.jackson.databind.introspect.AnnotatedClass;
  6. import com.fasterxml.jackson.dataformat.xml.JacksonXmlAnnotationIntrospector;
  7. import com.sun.xml.internal.bind.v2.util.XmlFactory;
  8. import com.uas.eis.config.VwmsConfig;
  9. import com.uas.eis.dao.*;
  10. import com.uas.eis.entity.vwms.req.BaseItemsReq;
  11. import com.uas.eis.entity.vwms.req.BaseReq;
  12. import com.uas.eis.entity.vwms.req.ProductReq;
  13. import com.uas.eis.entity.vwms.resp.BaseVastResp;
  14. import com.uas.eis.service.ERPService;
  15. import com.uas.eis.utils.CollectionUtil;
  16. import com.uas.eis.utils.HttpUtil;
  17. import com.uas.eis.utils.StringUtil;
  18. import org.junit.Test;
  19. import org.junit.runner.RunWith;
  20. import org.slf4j.Logger;
  21. import org.slf4j.LoggerFactory;
  22. import org.springframework.beans.factory.annotation.Autowired;
  23. import org.springframework.boot.test.context.SpringBootTest;
  24. import org.springframework.test.context.junit4.SpringRunner;
  25. import java.io.*;
  26. import java.util.*;
  27. import com.fasterxml.jackson.dataformat.xml.XmlMapper;
  28. @RunWith(SpringRunner.class)
  29. @SpringBootTest(classes = {UasEisApplication.class})
  30. public class UasEisApplicationTests {
  31. private final Logger logger = LoggerFactory.getLogger(this.getClass());
  32. @Autowired
  33. private BaseDao baseDao;
  34. // @Autowired
  35. // private ObjectMapper objectMapper; // 注入Jackson的ObjectMapper
  36. @Autowired
  37. private ERPService erpService;
  38. @Autowired
  39. private VwmsConfig vwmsConfig;
  40. @Test
  41. public void testSendProdByEv(){
  42. // 设置测试数据
  43. String master = "DATACENTER";
  44. Map<String, Object> result = new HashMap<>();
  45. String id = "100072167";
  46. String emCode = "ADMIN";
  47. String caller = "Product";
  48. result = erpService.sendProd(master, id, emCode,caller);
  49. //客户资料
  50. /*String id = "86362";
  51. String emCode = "ADMIN";
  52. String caller = "Customer!Base";
  53. Map<String, Object> result = erpService.sendCust(master, id, emCode,caller);*/
  54. System.out.println("result:"+result.toString());
  55. }
  56. @Test
  57. public void testSendCustError(){
  58. // 设置测试数据
  59. String master = "DATACENTER_P";
  60. String id = "86362";
  61. // 86361 测试测试
  62. // 86362 测试测试2
  63. String emCode = "ADMIN";
  64. String caller = "Customer!Base";
  65. Map<String, Object> result = erpService.sendCust(master, id, emCode,caller);
  66. System.out.println("result:"+result.toString());
  67. }
  68. @Test
  69. public void testSendVendError(){
  70. // 设置测试数据
  71. String master = "DATACENTER_P";
  72. String id = "104018";
  73. // 104017 测试测试
  74. // 104018 测试测试2
  75. String emCode = "ADMIN";
  76. String caller = "Vendor";
  77. Map<String, Object> result = erpService.sendVend(master, id, emCode,caller);
  78. System.out.println("result:"+result.toString());
  79. }
  80. @Test
  81. public void testSendIO(){
  82. // 设置测试数据
  83. String master = "LHWX_SZ_P";
  84. String id = "50790687";
  85. String emCode = "E0263";
  86. String caller = "ProdInOut!Sale";
  87. Map<String, Object> result = erpService.sendIO(master, id, emCode,caller);
  88. System.out.println("result:"+result.toString());
  89. }
  90. @Test
  91. public void testSendIn(){
  92. // 设置测试数据
  93. String master = "HUAXK_P";
  94. String id = "50793193";
  95. String emCode = "E0263";
  96. String caller = "ProdInOut!PurcCheckin";
  97. Map<String, Object> result = erpService.sendIO(master, id, emCode,caller);
  98. System.out.println("result:"+result.toString());
  99. }
  100. @Test
  101. public void init_vend() {
  102. //DATACENTER_P
  103. String ids = baseDao.queryForObject(" select wm_concat(ve_id) from ( select ve_id from DATACENTER.vendor where ve_auditstatus='已审核' and nvl(ve_sendwmsflag,0) = 0 order by ve_id ) where rownum <1000 "
  104. ,String.class);
  105. if(ids!=null){
  106. erpService.sendVend("DATACENTER",ids,"admin","Vendor");
  107. }else {
  108. logger.info("初始化完毕");
  109. }
  110. }
  111. @Test
  112. public void init_cust() {
  113. String master ="DATACENTER";
  114. String ids = baseDao.queryForObject(" select wm_concat(cu_id) from ( select cu_id FROM(SELECT cu_id from "+master+".customer " +
  115. "where cu_auditstatus='已审核' and nvl(cu_sendwmsflag,0) = 0 " +
  116. "and (cu_code,cu_name) not in (select ve_code,ve_name from vendor where ve_auditstatus='已审核' and nvl(ve_sendwmsflag,0) = -1) " +
  117. "order by cu_id) where rownum <1000 )"
  118. ,String.class);
  119. if(ids!=null){
  120. Map<String, Object> result = erpService.sendCust(master,ids,"admin","Customer!Base");
  121. String message = "";
  122. if (result.get("success") == null || !"true".equals(result.get("success").toString())) {
  123. baseDao.execute("update "+master+".customer set cu_sendwmsflag=-1,cu_sendwmsstatus='同步成功',cu_sendwmserr=null where cu_id in ("+ids+")");
  124. if(result.get("errList")!=null){
  125. try {
  126. List<Map<String,Object>> errList = (List<Map<String,Object>>) result.get("errList");
  127. for(Map<String,Object> map:errList){
  128. if(StringUtil.hasText(map.get("code"))){
  129. message = map.get("eMsg") == null? "同步失败" : map.get("eMsg").toString();
  130. message = message.replaceAll("'","''");
  131. baseDao.execute("update "+master+".customer set cu_sendwmsstatus='同步失败',cu_sendwmserr='"+message+"' where cu_id in ("+ids+")");
  132. }
  133. }
  134. } catch (Exception e) {
  135. e.printStackTrace();
  136. }
  137. }
  138. }else {
  139. baseDao.execute("update "+master+".customer set cu_sendwmsflag=-1,cu_sendwmsstatus='同步成功',cu_sendwmserr=null where cu_id in ("+ids+")");
  140. System.out.println("同步成功");
  141. }
  142. }else {
  143. logger.info("初始化完毕");
  144. }
  145. }
  146. @Test
  147. public void init_prod() {
  148. //DATACENTER_P
  149. // String ids = baseDao.queryForObject(" select wm_concat(pr_id) from ( select pr_id FROM(SELECT pr_id FROM PRODUCT WHERE nvl(pr_sendwmsflag,0)=0 and PR_cODE IN(select 物料编号 FROM A_原厂型号初始化 where 原厂型号外箱 is not null or 原厂型号内箱 is not null) order by pr_id) " +
  150. // "where rownum <1000 )"
  151. // ,String.class);
  152. // String ids="100072205";
  153. String master ="DATACENTER";
  154. String ids = baseDao.queryForObject(" select wm_concat(pr_id) from ( select pr_id FROM(SELECT pr_id FROM "+master+".PRODUCT a " +
  155. " WHERE nvl(a.pr_sendwmsflag,0)=0 and pr_ycxh is not null order by pr_id) " +
  156. "where rownum <1000 )",String.class);
  157. if(ids!=null){
  158. Map<String, Object> result = erpService.sendProd(master, ids, "admin","Product");
  159. String message = "";
  160. if (result.get("success") == null || !"true".equals(result.get("success").toString())) {
  161. baseDao.execute("update "+master+".product set pr_sendwmsflag=-1,pr_sendwmsstatus='同步成功',pr_sendwmserr=null where pr_id in ("+ids+")");
  162. if(result.get("errList")!=null){
  163. try {
  164. List<Map<String,Object>> errList = (List<Map<String,Object>>) result.get("errList");
  165. for(Map<String,Object> map:errList){
  166. if(StringUtil.hasText(map.get("code"))){
  167. message = map.get("eMsg") == null? "同步失败" : map.get("eMsg").toString();
  168. message = message.replaceAll("'","''");
  169. baseDao.execute("update "+master+".product set pr_sendwmsstatus='同步失败',pr_sendwmserr='"+message+"' where pr_id in ("+ids+")");
  170. }
  171. }
  172. } catch (Exception e) {
  173. e.printStackTrace();
  174. }
  175. }
  176. }else {
  177. baseDao.execute("update "+master+".product set pr_sendwmsflag=-1,pr_sendwmsstatus='同步成功',pr_sendwmserr=null where pr_id in ("+ids+")");
  178. System.out.println("同步成功");
  179. }
  180. }else {
  181. logger.info("初始化完毕");
  182. }
  183. }
  184. @Test
  185. public void testSendProdByXml(){
  186. // 设置测试数据
  187. List<ProductReq> prodList = new ArrayList<>();
  188. // 创建BaseReq对象
  189. BaseItemsReq<ProductReq> prodBaseItemsReq = new BaseItemsReq();
  190. prodBaseItemsReq.setActionType("update");
  191. prodBaseItemsReq.setWarehouseCode(vwmsConfig.getWarehouseCode());
  192. prodBaseItemsReq.setOwnerCode(vwmsConfig.getOwnerCode());
  193. prodBaseItemsReq.setOutBizCode("sendProd-"+System.currentTimeMillis());
  194. // 创建BaseVastItem对象
  195. BaseItemsReq.BaseItems prodBaseItems = new BaseItemsReq<ProductReq>().new BaseItems<ProductReq>();
  196. // 设置BaseVastItem的item属性
  197. ProductReq productReq = new ProductReq.Builder()
  198. .itemId("TESTXML")
  199. .itemCode("TESTXML")
  200. .barCode("TESTXML")
  201. .itemName("TESTXML")
  202. .goodsCode("TESTXML")
  203. .brandName("TESTXML")
  204. .categoryName("TESTXML")
  205. .stockUnit("")
  206. .ExtendProps(new ProductReq.ExtendProps() {{
  207. setKey1("1000.0");
  208. }})
  209. .build();
  210. prodList.add(productReq);
  211. ProductReq productReq2 = new ProductReq.Builder()
  212. .itemId("TESTXML2")
  213. .itemCode("TESTXML2")
  214. .barCode("TESTXML2")
  215. .itemName("TESTXML2")
  216. .goodsCode("TESTXML2")
  217. .brandName("TESTXML2")
  218. .categoryName("TESTXML2")
  219. .stockUnit("")
  220. .ExtendProps(new ProductReq.ExtendProps() {{
  221. setKey1("1000.0");
  222. }})
  223. .build();
  224. prodList.add(productReq2);
  225. prodBaseItems.setItem(prodList);
  226. prodBaseItemsReq.setItems(prodBaseItems);
  227. // 创建RequestWrapper对象
  228. // BaseReq<BaseItemsReq<ProductReq>> prodBaseReq = new BaseReq();
  229. // prodBaseReq.setRequest(prodBaseItemsReq);
  230. try {
  231. // 将prodBaseReq对象转换为XML字符串
  232. // 创建XmlMapper实例
  233. XmlMapper xmlMapper = new XmlMapper();
  234. // 配置XML根元素名称为 "request"
  235. // xmlMapper.setAnnotationIntrospector(new JacksonXmlAnnotationIntrospector() {
  236. // @Override
  237. // public PropertyName findRootName(AnnotatedClass ac) {
  238. // return PropertyName.construct("request", null);
  239. // }
  240. // });
  241. String xml = xmlMapper.writeValueAsString(prodBaseItemsReq);
  242. logger.info("Request XML: {}", xml);
  243. // 使用postXml方法发送请求
  244. // byte[] responseBytes = HttpUtil.postXmlToVWMS("openapi.items.synchronize",xml, "UTF-8",vwmsConfig);
  245. // String responseText = new String(responseBytes, "UTF-8");
  246. String responseText="<?xml version=\"1.0\" encoding=\"utf-8\"?><response><flag>success</flag><code>201</code><message>openapi.items.synchronize successfully</message></response>";
  247. System.out.println("responseText:"+responseText);
  248. // 处理响应
  249. // if(responseBytes != null) {
  250. // 解析XML响应
  251. BaseVastResp baseVastResp = xmlMapper.readValue(responseText, BaseVastResp.class);
  252. BaseVastResp.Response baseVastRespResponse= baseVastResp.getResponse();
  253. if(baseVastRespResponse!=null){
  254. //默认成功
  255. if("success".equals(baseVastRespResponse.getFlag())){
  256. logger.info("response-success code: {} message: {}", baseVastRespResponse.getCode(),baseVastRespResponse.getMessage());
  257. }else {
  258. logger.info("response-failure code: {} message: {}", baseVastRespResponse.getCode(),baseVastRespResponse.getMessage());
  259. //不一定全部失败,此处只会返回失败提示
  260. BaseVastResp.Items items = baseVastRespResponse.getItems();
  261. if(items!=null&&!CollectionUtil.isEmpty(items.getItem())){
  262. for (BaseVastResp.Item item : items.getItem()) {
  263. logger.info("response-failure-item code: {} message: {}", item.getItemCode(),item.getMessage());
  264. }
  265. }
  266. }
  267. }
  268. // }
  269. } catch (Exception e) {
  270. e.printStackTrace();
  271. }
  272. }
  273. @Test
  274. public void testSendProd(){
  275. // 设置测试数据
  276. String master = "HUAXK";
  277. String id = "100047433";
  278. String emCode = "test";
  279. String caller = "test";
  280. // 调用待测方法
  281. Map<String, Object> result = erpService.sendProd(master, id, emCode,caller);
  282. System.out.println("result:"+result.toString());
  283. }
  284. @Test
  285. public void testTransfer(){
  286. // String str = "\u8d27\u54c1\u4ee3\u7801\u6216\u6761\u7801\u957f\u5ea6\u4e0d\u6ee1\u8db3";
  287. // System.out.println(str);
  288. System.out.println("l:"+"".length());
  289. }
  290. @Test
  291. public void testSendVend(){
  292. String master = "HUAXK";
  293. String id = "98660";
  294. String emCode = "test";
  295. String caller = "test";
  296. Map<String, Object> result = erpService.sendVend(master, id, emCode,caller);
  297. System.out.println("result:"+result.toString());
  298. }
  299. @Test
  300. public void testSendCustomer(){
  301. String master = "HUAXK";
  302. String id = "70779";
  303. String emCode = "test";
  304. String caller = "test";
  305. Map<String, Object> result = erpService.sendCust(master, id, emCode,caller);
  306. System.out.println("result:"+result.toString());
  307. }
  308. @Test
  309. public void testSendAddCGYS(){
  310. // 设置测试数据
  311. String master = "HUAXK";
  312. String id = "50735758";
  313. String emCode = "test";
  314. String caller = "ProdInOut!PurcCheckin";
  315. Map<String, Object> result = erpService.sendIO(master, id, emCode,caller);
  316. System.out.println("result:"+result.toString());
  317. }
  318. @Test
  319. public void testSendCancelCGYS(){
  320. // 设置测试数据
  321. String master = "HUAXK";
  322. String id = "50735836";
  323. String emCode = "test";
  324. // String caller = "ProdInOut!PurcCheckin";
  325. String caller = "ProdInOut!Sale";
  326. Map<String, Object> result = erpService.cancelIO(master, id, emCode,caller,"反提交");
  327. System.out.println("result:"+result.toString());
  328. }
  329. @Test
  330. public void testSendAddXSCH(){
  331. // 设置测试数据
  332. String master = "HUAXK";
  333. String id = "50735836";
  334. String emCode = "test";
  335. String caller = "ProdInOut!Sale";
  336. Map<String, Object> result = erpService.sendIO(master, id, emCode,caller);
  337. System.out.println("result:"+result.toString());
  338. }
  339. @Test
  340. public void testSendAddBCCK(){
  341. // 设置测试数据
  342. String master = "HUAXK";
  343. String id = "50736049";
  344. String emCode = "test";
  345. String caller = "ProdInOut!AppropriationOut";
  346. Map<String, Object> result = erpService.sendIO(master, id, emCode,caller);
  347. System.out.println("result:"+result.toString());
  348. }
  349. @Test
  350. public void testSendAddQTCKZF(){
  351. // 设置测试数据
  352. String master = "HUAXK";
  353. String id = "50736053";
  354. String emCode = "test";
  355. String caller = "ProdInOut!OtherOut";
  356. Map<String, Object> result = erpService.sendIO(master, id, emCode,caller);
  357. System.out.println("result:"+result.toString());
  358. }
  359. @Test
  360. public void testSendStockData(){
  361. // 设置测试数据
  362. String master = "HUAXK";
  363. String emCode = "test";
  364. Map<String, Object> result = erpService.sendStockData(master, emCode);
  365. System.out.println("result:"+result.toString());
  366. }
  367. }