KDWebServiceServiceImpl.java 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  1. package com.steerinfo.dil.service.impl;
  2. import com.alibaba.fastjson.JSON;
  3. import com.steerinfo.dil.mapper.AmsNotUploadedEasMapper;
  4. import com.steerinfo.dil.model.AmsNotUploadedEas;
  5. import com.steerinfo.dil.wsdl.LoginUtil;
  6. import com.steerinfo.dil.wsdl.ServiceInfo;
  7. import com.steerinfo.dil.wsdl.WSContext;
  8. import com.steerinfo.dil.wsdl.WSUpDaxingMeteringSystemFacadeSrvProxyServiceLocator;
  9. import org.dom4j.Document;
  10. import org.dom4j.DocumentHelper;
  11. import org.dom4j.Element;
  12. import org.springframework.beans.factory.annotation.Autowired;
  13. import org.springframework.scheduling.annotation.Scheduled;
  14. import org.springframework.stereotype.Service;
  15. import java.util.List;
  16. import java.util.Map;
  17. /**
  18. * @ author :TXF
  19. * @ time :2022/2/14 21:02
  20. */
  21. @Service
  22. public class KDWebServiceServiceImpl {
  23. @Autowired
  24. AmsNotUploadedEasMapper amsNotUploadedEasMapper;
  25. /**
  26. *
  27. * 推送数据给金蝶接口
  28. * @Author TXF
  29. * @Date 2022/2/10 17:16
  30. * @param map n个数据
  31. * @return Integer 1 成功 0 失败
  32. **/
  33. public int sendMesToKD(Map<String, Object> map){
  34. try {
  35. String xml = asXmlData(map);
  36. System.out.println(xml);
  37. ServiceInfo service = new ServiceInfo("user", "dgjt@kingdee", "eas", "FDDGEAS85", "L2", 1);
  38. service.setServername("172.16.33.111" , "8888");//正式服务器
  39. WSContext wsContext = LoginUtil.doEASLogin(service);
  40. String sessionId = wsContext.getSessionId();
  41. if(null == sessionId) {
  42. addNotUploadedEASResult(map);
  43. System.out.println("[error]: 登陆有问题");
  44. return 0;
  45. }
  46. WSUpDaxingMeteringSystemFacadeSrvProxyServiceLocator locator = new WSUpDaxingMeteringSystemFacadeSrvProxyServiceLocator();
  47. String res = locator.getWSUpDaxingMeteringSystemFacade().saveWeighBill(xml);
  48. Map returnMap = JSON.parseObject(res, Map.class);
  49. String status = String.valueOf(returnMap.get("Status"));
  50. if("S02".equals(status)){
  51. return 1;
  52. }else if ("S03".equals(status)){
  53. System.out.println((map.get("orderNumber") + "数据推送金蝶失败:" + res));
  54. return 0;
  55. }else {
  56. addNotUploadedEASResult(map);
  57. System.out.println((map.get("orderNumber") + "数据推送金蝶失败:"+ returnMap.get("MessageText")));
  58. return 0;
  59. }
  60. } catch (Exception e) {
  61. addNotUploadedEASResult(map);
  62. System.out.println(map.get("orderNumber") + "数据推送金蝶失败:" + e.getMessage());
  63. return 0;
  64. }
  65. }
  66. /**
  67. * 创建计量数据 金蝶xml格式字符串
  68. * @Author TXF
  69. * @Date 2022/2/10 17:32
  70. * @param map
  71. * @return
  72. **/
  73. public String asXmlData(Map<String, Object> map){
  74. // 创建一个Document实例
  75. Document doc = DocumentHelper.createDocument();
  76. // 添加根节点
  77. Element requests = doc.addElement("requests");
  78. //添加第子节点
  79. Element request = requests.addElement("request");
  80. request.addElement("TypeID").addText("PUR"); //采购订单类型
  81. request.addElement("FNumber").addText((String) map.get("resultPoundNo")); //磅单号
  82. request.addElement("FBizDate").addText((String) map.get("resultTareWeightTime")); // 净重时间
  83. request.addElement("Carnumber").addText((String) map.get("capacityNumber")); //车牌号
  84. request.addElement("FTransportOrgID").addText(""); //运输单位
  85. request.addElement("FGrossScaleID").addText((String) map.get("resultCrossCalculateNumber")); //毛重汽车衡
  86. request.addElement("FTareScaleID").addText((String) map.get("resultTareCalculateNumber")); //皮重汽车衡
  87. request.addElement("FGrossWeight").addText((String) map.get("resultCrossWeight")); //毛重
  88. request.addElement("FTareWeight").addText((String) map.get("resultTareWeight")); //皮重
  89. request.addElement("FGrossPoundTime").addText((String) map.get("resultCrossWeightTime")); //毛重时间
  90. request.addElement("FTarePoundTime").addText((String) map.get("resultTareWeightTime")); //皮重时间
  91. request.addElement("FSourceBillID").addText((String) map.get("No")); //采购订单号
  92. request.addElement("FSourceBillEntryID").addText((String) map.get("easEntryId")); //分录ID
  93. request.addElement("FNetWeight").addText((String) map.get("resultNetWeight")); //净重
  94. request.addElement("FIncidental").addText("0"); //扣杂
  95. request.addElement("FLastNetWeight").addText((String) map.get("resultNetWeight")); //最后净重
  96. request.addElement("FDescription").addText(""); //备注
  97. return doc.asXML();
  98. }
  99. /**
  100. * 如果回传金蝶失败则将数据保存到数据库
  101. * @Author TXF
  102. * @Date 2022/2/14 16:35
  103. * @param map
  104. * @return
  105. **/
  106. public int addNotUploadedEASResult(Map<String, Object> map) {
  107. AmsNotUploadedEas amsNotUploadedEas = new AmsNotUploadedEas();
  108. //查询该订单是否已存在
  109. String orderId = String.valueOf(map.get("orderId"));
  110. String isExistsOrderId = amsNotUploadedEasMapper.getIsExistsOrderId(orderId);
  111. if(isExistsOrderId != null){
  112. return 0;
  113. }
  114. amsNotUploadedEas.setId(orderId);
  115. amsNotUploadedEas.setNo((String) map.get("No"));
  116. amsNotUploadedEas.setResultPoundNo((String) map.get("resultPoundNo"));
  117. amsNotUploadedEas.setCapacityNumber((String) map.get("capacityNumber"));
  118. amsNotUploadedEas.setResultCrossCalculateNumber((String) map.get("resultCrossCalculateNumber"));
  119. amsNotUploadedEas.setResultTareCalculateNumber((String) map.get("resultTareCalculateNumber"));
  120. amsNotUploadedEas.setResultCrossWeight((String) map.get("resultCrossWeight"));
  121. amsNotUploadedEas.setResultTareWeight((String) map.get("resultTareWeight"));
  122. amsNotUploadedEas.setResultCrossWeightTime((String) map.get("resultCrossWeightTime"));
  123. amsNotUploadedEas.setResultTareWeightTime((String) map.get("resultTareWeightTime"));
  124. amsNotUploadedEas.setResultNetWeight((String) map.get("resultNetWeight"));
  125. amsNotUploadedEas.setEasEntryId((String) map.get("easEntryId"));
  126. return amsNotUploadedEasMapper.insertSelective(amsNotUploadedEas);
  127. }
  128. /**
  129. * 定时访问未上传金蝶数据 重复抛
  130. * @Author TXF
  131. * @Date 2022/2/14 17:01
  132. * @param
  133. * @return
  134. **/
  135. //@Scheduled(fixedRate = 1000 * 60 * 10)
  136. public void timingPushMesToKD(){
  137. List<Map<String, Object>> allNotUploadedEasMes = amsNotUploadedEasMapper.getAllNotUploadedEasMes();
  138. if(allNotUploadedEasMes != null && allNotUploadedEasMes.size() != 0){
  139. for (Map<String, Object> map : allNotUploadedEasMes) {
  140. int i = sendMesToKD(map);
  141. String orderId = (String) map.get("orderId");
  142. if (i == 1){
  143. //如果添加成功则往数据库中删除此数据
  144. amsNotUploadedEasMapper.deleteByPrimaryKey(orderId);
  145. System.out.println(orderId + map.get("capacityNumber") + "补传成功");
  146. }else {
  147. System.out.println(orderId + map.get("capacityNumber") + "补传失败");
  148. }
  149. }
  150. }
  151. }
  152. }