OmstrainOrderServiceImpl.java 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334
  1. package com.steerinfo.dil.service.impl;
  2. import com.alibaba.fastjson.JSON;
  3. import com.alibaba.fastjson.JSONObject;
  4. import com.ctrip.framework.apollo.util.http.HttpUtil;
  5. import com.steerinfo.dil.feign.JoinFeign;
  6. import com.steerinfo.dil.mapper.OmstrainOrderMapper;
  7. import com.steerinfo.dil.mapper.TmsttOrderMapper;
  8. import com.steerinfo.dil.model.OmstrainOrder;
  9. import com.steerinfo.dil.model.TmsttOrder;
  10. import com.steerinfo.dil.service.IOmstrainOrderService;
  11. import com.steerinfo.dil.util.DataChange;
  12. import com.steerinfo.dil.util.HTTPRequestUtils;
  13. import com.steerinfo.dil.util.getRequestUtils;
  14. import javassist.expr.Instanceof;
  15. import org.apache.commons.lang3.AnnotationUtils;
  16. import org.apache.http.HttpEntity;
  17. import org.springframework.boot.test.web.client.TestRestTemplate;
  18. import org.springframework.cloud.client.loadbalancer.LoadBalanced;
  19. import org.springframework.context.annotation.Bean;
  20. import org.springframework.http.HttpHeaders;
  21. import org.apache.http.client.methods.HttpPost;
  22. import org.apache.http.entity.mime.MultipartEntityBuilder;
  23. import org.apache.http.message.BasicNameValuePair;
  24. import org.apache.tools.ant.taskdefs.Get;
  25. import org.springframework.beans.factory.annotation.Autowired;
  26. import org.springframework.stereotype.Service;
  27. import org.springframework.transaction.annotation.Transactional;
  28. import org.springframework.util.LinkedMultiValueMap;
  29. import org.springframework.util.MultiValueMap;
  30. import org.springframework.web.client.RestTemplate;
  31. import org.springframework.http.HttpHeaders;
  32. import org.springframework.http.ResponseEntity;
  33. import org.springframework.stereotype.Service;
  34. import org.springframework.web.client.RestClientException;
  35. import org.springframework.web.client.RestTemplate;
  36. import java.io.EOFException;
  37. import java.io.IOException;
  38. import java.math.BigDecimal;
  39. import java.sql.Wrapper;
  40. import java.util.*;
  41. @Service
  42. public class OmstrainOrderServiceImpl implements IOmstrainOrderService {
  43. @Autowired
  44. private RestTemplate restTemplate;
  45. @Autowired
  46. OmstrainOrderMapper omstrainOrderMapper;
  47. @Autowired
  48. TmsttOrderMapper tmsttOrderMapper;
  49. @Autowired
  50. JoinFeign joinFeign;
  51. private String guoYuanUrl="http://113.204.217.110:9810/dagang/receiving";
  52. //城嘉库登录访问接口
  53. private String chengJiaLoginUrl="http://116.204.73.104:8083/dagon/login";
  54. //城嘉库推送数据接口
  55. private String chengJiaSendUrl="http://116.204.73.104:8083/dagon/selectSaleSteelOrder";
  56. @Bean
  57. @LoadBalanced
  58. private RestTemplate getRestTemplate() {
  59. return new RestTemplate();
  60. }
  61. @Override
  62. @Transactional
  63. public int generateOmstrain(Map<String, Object> map) throws IOException {
  64. //需要做的事,
  65. int i;
  66. //1.生成火运订单,
  67. OmstrainOrder omstrainOrder = new OmstrainOrder();
  68. //获取火运运输订单ID
  69. BigDecimal trainOrderId = null;
  70. if(map.get("trainOrderId") != null){
  71. trainOrderId = DataChange.dataToBigDecimal(map.get("trainOrderId"));
  72. }else{
  73. //根据运输订单ID去查询火运实绩ID
  74. List<BigDecimal> trainOrderIds = omstrainOrderMapper.getTrainOrderIds(DataChange.dataToBigDecimal(map.get("orderId")));
  75. if(trainOrderIds.size() > 0){
  76. trainOrderId = trainOrderIds.get(0);
  77. }else{
  78. //根据发出时间和
  79. trainOrderId = omstrainOrderMapper.getTrainOrder();
  80. }
  81. }
  82. //生成运输订单号
  83. String trainOrderNumber = DataChange.generateEightDigitsNumber("WHYDD",trainOrderId.intValue());
  84. //获取车皮号/进站时间/发出时间
  85. if (map.get("wagonNo") != null && !"null".equals(map.get("wagonNo"))){
  86. String wagonNo = map.get("wagonNo").toString();
  87. omstrainOrder.setOrderWagonNo(wagonNo);
  88. }
  89. if(map.get("OutStation") != null && !"null".equals(map.get("OutStation")) && !"".equals(map.get("OutStation"))){
  90. long OutStationTime = (long) map.get("OutStation");
  91. omstrainOrder.setOutstationTime(new Date(OutStationTime));
  92. }
  93. if(map.get("EnStation") != null && !"null".equals(map.get("EnStation")) && !"".equals(map.get("EnStation"))){
  94. long EnStationTime = (long) map.get("EnStation");
  95. omstrainOrder.setEnstationTime(new Date(EnStationTime));
  96. }
  97. if (map.get("wagonWeight") != null && !"null".equals(map.get("wagonWeight"))){
  98. BigDecimal wagonWeight = DataChange.dataToBigDecimal(map.get("wagonWeight"));
  99. omstrainOrder.setOrderWagonWeight(wagonWeight);
  100. }
  101. if (map.get("wagonBillWeight") != null && !"null".equals(map.get("wagonBillWeight"))){
  102. BigDecimal wagonBillWeight = DataChange.dataToBigDecimal(map.get("wagonBillWeight"));
  103. omstrainOrder.setBillingWeight(wagonBillWeight);
  104. }
  105. if(map.get("strawMats") != null){
  106. omstrainOrder.setStrawmats(DataChange.dataToBigDecimal(map.get("strawMats")));
  107. }
  108. if(map.get("unloadPointId") != null){
  109. omstrainOrder.setWarehouseId(DataChange.dataToBigDecimal(map.get("unloadPointId")));
  110. }
  111. omstrainOrder.setId(trainOrderId);
  112. omstrainOrder.setOrderNo(trainOrderNumber);
  113. omstrainOrder.setInsertTime(new Date());
  114. omstrainOrder.setInsertUsername(map.get("personnelSsoId").toString());
  115. //初始化是没有验收
  116. omstrainOrder.setIsAccept(new BigDecimal(0));
  117. //获取汽运运输订单ID
  118. BigDecimal orderId = DataChange.dataToBigDecimal(map.get("orderId"));
  119. //生成火运订单和汽运订单的中间表
  120. if (map.get("trainOrderId") == null){
  121. TmsttOrder tmsttOrder = new TmsttOrder();
  122. tmsttOrder.setId(trainOrderId);
  123. tmsttOrder.setTrainOrderId(trainOrderId);
  124. tmsttOrder.setTruckOrderId(orderId);
  125. tmsttOrder.setInsertTime(new Date());
  126. i =+ tmsttOrderMapper.insertSelective(tmsttOrder);
  127. }
  128. if(map.get("trainOrderId") != null ){
  129. i =+ omstrainOrderMapper.updateByPrimaryKeySelective(omstrainOrder);
  130. }else{
  131. i =+ omstrainOrderMapper.insertSelective(omstrainOrder);
  132. }
  133. try {
  134. Map<String, Object> RemoteMap = joinFeign.selectSaleSteelOrder(map);
  135. List<Map<String,Object>> data =(List<Map<String, Object>>) RemoteMap.get("data");
  136. //根据汽运订单查找分属于哪个异地库。
  137. String inwardWarehouse = omstrainOrderMapper.getInwardWarehouse(orderId);
  138. if (inwardWarehouse!=null) {
  139. if (inwardWarehouse.contains("重庆金田")) {
  140. for (Map<String,Object> jitianMap:data) {
  141. Map<String, Object> orchardStorehouse = new HashMap<>();
  142. List<Map<String, Object>> orchardStorehouseList = new ArrayList<>();
  143. Object sendTime = jitianMap.get("sendTime");
  144. String transportType = (String) jitianMap.get("transportType");
  145. //发送时间
  146. orchardStorehouse.put("sendTime", sendTime);
  147. //系统代码
  148. orchardStorehouse.put("sysCode", "DGXT");
  149. //仓库代码
  150. orchardStorehouse.put("warehouseCode", "LJJT");
  151. //运输方式
  152. orchardStorehouse.put("transportType", transportType);
  153. //去掉sendTime
  154. jitianMap.remove("sendTime");
  155. jitianMap.remove("transportType");
  156. orchardStorehouseList.add(jitianMap);
  157. orchardStorehouse.put("details", orchardStorehouseList);
  158. //调用果园库接口
  159. sendMesToGuoyuan(orchardStorehouse);
  160. }
  161. } else if (inwardWarehouse.contains("成都城嘉")) {
  162. //调用城嘉库登录接口获取token
  163. //调用城嘉库推送接口
  164. String token = DagonloginChenJiaku();
  165. if (token != null) {
  166. for (Map<String,Object> map1:data) {
  167. map1.put("token", token);
  168. sendMesToChengJia(map1);
  169. }
  170. } else {
  171. System.out.println("登录城嘉库失败");
  172. }
  173. }
  174. }
  175. } catch (IOException e) {
  176. e.printStackTrace();
  177. } finally {
  178. return i;
  179. }
  180. }
  181. /**
  182. * 访问城嘉库接口方法
  183. * @param
  184. * @return
  185. */
  186. public String DagonloginChenJiaku() throws IOException {
  187. Map<String, String> reqMap = new HashMap<>();
  188. reqMap.put("username","dagon");
  189. reqMap.put("password","147258");
  190. // JSONObject jsonObject = new JSONObject();
  191. // jsonObject.putAll(reqMap);
  192. // Map<String,Object> map=new HashMap<>();
  193. // map.put("username","dagon");
  194. // map.put("password","147258");
  195. // jsonObject.putAll(map);
  196. // jsonObject.put("username","dagon");
  197. // jsonObject.put("password","147258");
  198. String jsonData = null;
  199. jsonData = getRequestUtils.doPost(chengJiaLoginUrl,reqMap);
  200. if(!"null".equals(jsonData)){
  201. System.out.println(jsonData);
  202. HashMap hashMap = JSON.parseObject(jsonData, HashMap.class);
  203. BigDecimal code = DataChange.dataToBigDecimal( hashMap.get("code"));
  204. System.out.println(hashMap.get("message"));
  205. if(200==code.intValue()){
  206. Map<String,Object> result =(Map<String,Object>) hashMap.get("result");
  207. String token =(String) result.get("token");
  208. return token;
  209. }else {
  210. System.out.println("推送数据失败"+hashMap.get("message"));
  211. }
  212. }
  213. return null;
  214. // String body = restTemplate.postForEntity(chengJiaLoginUrl, reqMap, String.class).getBody();
  215. // System.out.println(body);
  216. // return body;
  217. }
  218. /**
  219. * 推送数据给城嘉库
  220. */
  221. /**
  222. * 访问重庆果园库接口方法
  223. * @param map
  224. * @return
  225. */
  226. public int sendMesToChengJia(Map<String, Object> map){
  227. String token =(String) map.get("token");
  228. Map<String,Object> jsonObject = new HashMap<>();
  229. jsonObject.remove(token);
  230. jsonObject.putAll(map);
  231. String jsonData = null;
  232. jsonData = getRequestUtils.doPostAddHeader(chengJiaSendUrl, jsonObject,token);
  233. if(!"null".equals(jsonData)){
  234. System.out.println(jsonData);
  235. HashMap hashMap = JSON.parseObject(jsonData, HashMap.class);
  236. BigDecimal code = DataChange.dataToBigDecimal(hashMap.get("code"));
  237. System.out.println(hashMap.get("message"));
  238. if(code.intValue()==200){
  239. return 1;
  240. }else {
  241. System.out.println("推送数据失败"+hashMap.get("message"));
  242. }
  243. }
  244. return 0;
  245. }
  246. /**
  247. * 访问重庆果园库接口方法
  248. * @param map
  249. * @return
  250. */
  251. public int sendMesToGuoyuan(Map<String, Object> map){
  252. JSONObject jsonObject = new JSONObject();
  253. jsonObject.putAll(map);
  254. String jsonData = null;
  255. try {
  256. jsonData = HTTPRequestUtils.send(guoYuanUrl, jsonObject, "utf-8");
  257. } catch (IOException e) {
  258. e.printStackTrace();
  259. }
  260. if(!"null".equals(jsonData)){
  261. System.out.println(jsonData);
  262. HashMap hashMap = JSON.parseObject(jsonData, HashMap.class);
  263. BigDecimal code =DataChange.dataToBigDecimal(hashMap.get("code"));
  264. System.out.println(hashMap.get("message"));
  265. if(code.intValue()==200){
  266. return 1;
  267. }else {
  268. System.out.println("推送数据失败"+hashMap.get("message"));
  269. }
  270. }
  271. return 0;
  272. }
  273. @Override
  274. public List<Map<String, Object>> getOrderTrainMes(Integer orderId) {
  275. List<Map<String,Object>>mapList = omstrainOrderMapper.getOrderTrainMes(orderId);
  276. for(Map<String,Object>map1:mapList){
  277. List<Map<String,Object>> materialList = omstrainOrderMapper.getMaterialList(map1);
  278. for (Map<String,Object>materialMap:materialList){
  279. BigDecimal materialId = DataChange.dataToBigDecimal(materialMap.get("materialId"));
  280. //根据运输订单ID和物资ID去查询炉号
  281. List<Map<String, Object>> luHaoNumberList = omstrainOrderMapper.getLuhaoNum(new BigDecimal(orderId),materialId);
  282. StringBuilder sb = new StringBuilder();
  283. for (Map<String, Object> luHaoMap : luHaoNumberList) {
  284. sb.append(luHaoMap.get("materialFurnaceNumber"));
  285. sb.append("-");
  286. sb.append(luHaoMap.get("materialNum"));
  287. sb.append("/");
  288. }
  289. if(luHaoNumberList.size() > 0){
  290. sb.deleteCharAt(sb.length() - 1);
  291. materialMap.put("luhao",sb.toString());
  292. }
  293. }
  294. map1.put("materialMesList",materialList);
  295. }
  296. return mapList;
  297. }
  298. @Override
  299. public List<Map<String, Object>> getWagonShippingDetails(Map<String, Object> map) {
  300. return omstrainOrderMapper.getWagonShippingDetails(map);
  301. }
  302. }