package com.uas.eis; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.PropertyName; import com.fasterxml.jackson.databind.introspect.AnnotatedClass; import com.fasterxml.jackson.dataformat.xml.JacksonXmlAnnotationIntrospector; import com.sun.xml.internal.bind.v2.util.XmlFactory; import com.uas.eis.config.VwmsConfig; import com.uas.eis.dao.*; import com.uas.eis.entity.vwms.req.BaseItemsReq; import com.uas.eis.entity.vwms.req.BaseReq; import com.uas.eis.entity.vwms.req.ErpCancelIORequest; import com.uas.eis.entity.vwms.req.ProductReq; import com.uas.eis.entity.vwms.resp.BaseVastResp; import com.uas.eis.service.ERPService; import com.uas.eis.utils.*; import org.junit.Test; import org.junit.runner.RunWith; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; import java.io.*; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.*; import com.fasterxml.jackson.dataformat.xml.XmlMapper; @RunWith(SpringRunner.class) @SpringBootTest(classes = {UasEisApplication.class}) public class UasEisApplicationTests { private final Logger logger = LoggerFactory.getLogger(this.getClass()); @Autowired private BaseDao baseDao; // @Autowired // private ObjectMapper objectMapper; // 注入Jackson的ObjectMapper @Autowired private ERPService erpService; @Autowired private VwmsConfig vwmsConfig; @Test public void testCancelIO(){ // 设置测试数据 String master = "YUEJH_TEST"; String emCode = "TEST"; String caller="ProdInOut!Sale"; String formStore = "{\"pi_id\":\"50744191\"}"; String gridStore = "[{\"pd_id\":47029492,\"pd_outqty\":0}]"; // 调用待测方法 ErpCancelIORequest erpCancelIORequest = new ErpCancelIORequest(); erpCancelIORequest.setMaster(master); erpCancelIORequest.setEmCode(emCode); erpCancelIORequest.setCaller(caller); erpCancelIORequest.setFormStore(formStore); erpCancelIORequest.setGridStore(gridStore); Map result = erpService.cancelIO(erpCancelIORequest); System.out.println("result:"+result.toString()); } @Test public void testSendJSTH(){ // 设置测试数据 String master = "YUEJH_TEST"; String id = "50744184"; String emCode = "TEST"; String caller="ProdInOut!AppropriationOut"; // 调用待测方法 Map result = erpService.sendIO(master, id, emCode,caller); System.out.println("result:"+result.toString()); } @Test public void testSendZK(){ // 设置测试数据 String master = "YUEJH_TEST"; String id = "50744180"; String emCode = "TEST"; String caller="ProdInOut!Sale"; // 调用待测方法 Map result = erpService.sendIO(master, id, emCode,caller); System.out.println("result:"+result.toString()); } @Test public void testSendBC(){ // 设置测试数据 String master = "YUEJH_TEST"; String id = "50744179"; String emCode = "TEST"; String caller="ProdInOut!AppropriationOut"; // 调用待测方法 Map result = erpService.sendIO(master, id, emCode,caller); System.out.println("result:"+result.toString()); } @Test public void testSendSaleOut(){ // 设置测试数据 String master = "YUEJH_TEST"; String id = "50744178";//"50744173"; String emCode = "TEST"; String caller="ProdInOut!StockLoss"; // = "ProdInOut!OtherOut"; //50744177 // = "ProdInOut!PurcCheckout"; // ="ProdInOut!Sale"; // 调用待测方法 Map result = erpService.sendIO(master, id, emCode,caller); System.out.println("result:"+result.toString()); } @Test public void testSendIn(){ // 设置测试数据 String master = "YUEJH_TEST"; String id = "50744157"; String emCode = "test"; String caller ="ProdInOut!OtherIn"; //50744156 "ProdInOut!StockProfit"; //="ProdInOut!SaleReturn"; // = "ProdInOut!PurcCheckin"; // 调用待测方法 Map result = erpService.sendIO(master, id, emCode,caller); System.out.println("result:"+result.toString()); } @Test public void testSendProd(){ // 设置测试数据 String master = "YUEJH_TEST"; String emCode = "test"; String caller = "Product"; String id = baseDao.queryForObject("select pr_id from "+vwmsConfig.getDC_MASTER()+".product where pr_code = 'U00014725'",String.class); // 调用待测方法 Map result = erpService.sendProd(master, id, emCode,caller); System.out.println("result:"+result.toString()); } @Test public void testResp(){ String responseText="success201openapi.items.synchronize successfully"; System.out.println("responseText:"+responseText); XmlMapper xmlMapper = new XmlMapper(); // 解析XML响应 BaseVastResp baseVastResp = null; try { baseVastResp = xmlMapper.readValue(responseText, BaseVastResp.class); } catch (IOException e) { throw new RuntimeException(e); } BaseVastResp.Response baseVastRespResponse= baseVastResp.getResponse(); System.out.println("baseVastRespResponse:"+baseVastRespResponse.toString()); } @Test public void testMY() { String meg = "20201015001app_key20201015001customerIdBJMGformatxmlmethodsingleitem.synchronizepartner_idtop-sdk-java-20190305sign_methodmd5timestamp2020-12-14 18:54:36v2.0ADD000100010001ZPBJMGOTHER20201015001"; String sign = MD5Util.encrypt32Up(meg); System.out.println("MD5加密结果: " + sign); } @Test public void testSendProdByXml(){ // 设置测试数据 List prodList = new ArrayList<>(); // 创建BaseReq对象 BaseItemsReq prodBaseItemsReq = new BaseItemsReq(); prodBaseItemsReq.setActionType("update"); prodBaseItemsReq.setWarehouseCode(vwmsConfig.getWarehouseCode()); prodBaseItemsReq.setOwnerCode("YUEJH"); prodBaseItemsReq.setOutBizCode("sendProd-"+System.currentTimeMillis()); // 创建BaseVastItem对象 BaseItemsReq.BaseItems prodBaseItems = new BaseItemsReq().new BaseItems(); // 设置BaseVastItem的item属性 /* ProductReq productReq = new ProductReq.Builder() .itemId("TESTXML") .itemCode("TESTXML") .barCode("TESTXML") .itemName("TESTXML") .goodsCode("TESTXML") .brandName("TESTXML") .categoryName("TESTXML") .stockUnit("") .ExtendProps(new ProductReq.ExtendProps() {{ setKey1("1000.0"); }}) .build(); prodList.add(productReq); ProductReq productReq2 = new ProductReq.Builder() .itemId("TESTXML2") .itemCode("TESTXML2") .barCode("TESTXML2") .itemName("TESTXML2") .goodsCode("TESTXML2") .brandName("TESTXML2") .categoryName("TESTXML2") .stockUnit("") .ExtendProps(new ProductReq.ExtendProps() {{ setKey1("1000.0"); }}) .build();*/ // prodList.add(productReq2); prodBaseItems.setItem(prodList); prodBaseItemsReq.setItems(prodBaseItems); // 创建RequestWrapper对象 // BaseReq> prodBaseReq = new BaseReq(); // prodBaseReq.setRequest(prodBaseItemsReq); try { // 将prodBaseReq对象转换为XML字符串 // 创建XmlMapper实例 XmlMapper xmlMapper = new XmlMapper(); // 配置XML根元素名称为 "request" // xmlMapper.setAnnotationIntrospector(new JacksonXmlAnnotationIntrospector() { // @Override // public PropertyName findRootName(AnnotatedClass ac) { // return PropertyName.construct("request", null); // } // }); String xml = xmlMapper.writeValueAsString(prodBaseItemsReq); logger.info("Request XML: {}", xml); // 使用postXml方法发送请求 // byte[] responseBytes = HttpUtil.postXmlToVWMS("openapi.singleitem.synchronize",xml, "UTF-8",vwmsConfig); // String responseText = new String(responseBytes, "UTF-8"); String responseText="success201openapi.items.synchronize successfully"; System.out.println("responseText:"+responseText); // 处理响应 // if(responseBytes != null) { // 解析XML响应 BaseVastResp baseVastResp = xmlMapper.readValue(responseText, BaseVastResp.class); BaseVastResp.Response baseVastRespResponse= baseVastResp.getResponse(); if(baseVastRespResponse!=null){ //默认成功 if("success".equals(baseVastRespResponse.getFlag())){ logger.info("response-success code: {} message: {}", baseVastRespResponse.getCode(),baseVastRespResponse.getMessage()); }else { logger.info("response-failure code: {} message: {}", baseVastRespResponse.getCode(),baseVastRespResponse.getMessage()); //不一定全部失败,此处只会返回失败提示 BaseVastResp.Items items = baseVastRespResponse.getItems(); if(items!=null&&!CollectionUtil.isEmpty(items.getItem())){ for (BaseVastResp.Item item : items.getItem()) { logger.info("response-failure-item code: {} message: {}", item.getItemCode(),item.getMessage()); } } } } // } } catch (Exception e) { e.printStackTrace(); } } }