package com.steerinfo.dil.service.impl; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.ctrip.framework.apollo.util.http.HttpUtil; import com.steerinfo.dil.feign.JoinFeign; import com.steerinfo.dil.mapper.OmstrainOrderMapper; import com.steerinfo.dil.mapper.TmsttOrderMapper; import com.steerinfo.dil.model.OmstrainOrder; import com.steerinfo.dil.model.TmsttOrder; import com.steerinfo.dil.service.IOmstrainOrderService; import com.steerinfo.dil.util.DataChange; import com.steerinfo.dil.util.HTTPRequestUtils; import com.steerinfo.dil.util.getRequestUtils; import javassist.expr.Instanceof; import org.apache.commons.lang3.AnnotationUtils; import org.apache.http.HttpEntity; import org.springframework.boot.test.web.client.TestRestTemplate; import org.springframework.cloud.client.loadbalancer.LoadBalanced; import org.springframework.context.annotation.Bean; import org.springframework.http.HttpHeaders; import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.mime.MultipartEntityBuilder; import org.apache.http.message.BasicNameValuePair; import org.apache.tools.ant.taskdefs.Get; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.LinkedMultiValueMap; import org.springframework.util.MultiValueMap; import org.springframework.web.client.RestTemplate; import org.springframework.http.HttpHeaders; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Service; import org.springframework.web.client.RestClientException; import org.springframework.web.client.RestTemplate; import java.io.EOFException; import java.io.IOException; import java.math.BigDecimal; import java.sql.Wrapper; import java.util.*; @Service public class OmstrainOrderServiceImpl implements IOmstrainOrderService { @Autowired private RestTemplate restTemplate; @Autowired OmstrainOrderMapper omstrainOrderMapper; @Autowired TmsttOrderMapper tmsttOrderMapper; @Autowired JoinFeign joinFeign; private String guoYuanUrl="http://113.204.217.110:9810/dagang/receiving"; //城嘉库登录访问接口 private String chengJiaLoginUrl="http://116.204.73.104:8083/dagon/login"; //城嘉库推送数据接口 private String chengJiaSendUrl="http://116.204.73.104:8083/dagon/selectSaleSteelOrder"; @Bean @LoadBalanced private RestTemplate getRestTemplate() { return new RestTemplate(); } @Override @Transactional public int generateOmstrain(Map map) throws IOException { //需要做的事, int i; //1.生成火运订单, OmstrainOrder omstrainOrder = new OmstrainOrder(); //获取火运运输订单ID BigDecimal trainOrderId = null; if(map.get("trainOrderId") != null){ trainOrderId = DataChange.dataToBigDecimal(map.get("trainOrderId")); }else{ //根据运输订单ID去查询火运实绩ID List trainOrderIds = omstrainOrderMapper.getTrainOrderIds(DataChange.dataToBigDecimal(map.get("orderId"))); if(trainOrderIds.size() > 0){ trainOrderId = trainOrderIds.get(0); }else{ //根据发出时间和 trainOrderId = omstrainOrderMapper.getTrainOrder(); } } //生成运输订单号 String trainOrderNumber = DataChange.generateEightDigitsNumber("WHYDD",trainOrderId.intValue()); //获取车皮号/进站时间/发出时间 if (map.get("wagonNo") != null && !"null".equals(map.get("wagonNo"))){ String wagonNo = map.get("wagonNo").toString(); omstrainOrder.setOrderWagonNo(wagonNo); } if(map.get("OutStation") != null && !"null".equals(map.get("OutStation")) && !"".equals(map.get("OutStation"))){ long OutStationTime = (long) map.get("OutStation"); omstrainOrder.setOutstationTime(new Date(OutStationTime)); } if(map.get("EnStation") != null && !"null".equals(map.get("EnStation")) && !"".equals(map.get("EnStation"))){ long EnStationTime = (long) map.get("EnStation"); omstrainOrder.setEnstationTime(new Date(EnStationTime)); } if (map.get("wagonWeight") != null && !"null".equals(map.get("wagonWeight"))){ BigDecimal wagonWeight = DataChange.dataToBigDecimal(map.get("wagonWeight")); omstrainOrder.setOrderWagonWeight(wagonWeight); } if (map.get("wagonBillWeight") != null && !"null".equals(map.get("wagonBillWeight"))){ BigDecimal wagonBillWeight = DataChange.dataToBigDecimal(map.get("wagonBillWeight")); omstrainOrder.setBillingWeight(wagonBillWeight); } if(map.get("strawMats") != null){ omstrainOrder.setStrawmats(DataChange.dataToBigDecimal(map.get("strawMats"))); } if(map.get("unloadPointId") != null){ omstrainOrder.setWarehouseId(DataChange.dataToBigDecimal(map.get("unloadPointId"))); } omstrainOrder.setId(trainOrderId); omstrainOrder.setOrderNo(trainOrderNumber); omstrainOrder.setInsertTime(new Date()); omstrainOrder.setInsertUsername(map.get("personnelSsoId").toString()); //初始化是没有验收 omstrainOrder.setIsAccept(new BigDecimal(0)); //获取汽运运输订单ID BigDecimal orderId = DataChange.dataToBigDecimal(map.get("orderId")); //生成火运订单和汽运订单的中间表 if (map.get("trainOrderId") == null){ TmsttOrder tmsttOrder = new TmsttOrder(); tmsttOrder.setId(trainOrderId); tmsttOrder.setTrainOrderId(trainOrderId); tmsttOrder.setTruckOrderId(orderId); tmsttOrder.setInsertTime(new Date()); i =+ tmsttOrderMapper.insertSelective(tmsttOrder); } if(map.get("trainOrderId") != null ){ i =+ omstrainOrderMapper.updateByPrimaryKeySelective(omstrainOrder); }else{ i =+ omstrainOrderMapper.insertSelective(omstrainOrder); } try { Map RemoteMap = joinFeign.selectSaleSteelOrder(map); List> data =(List>) RemoteMap.get("data"); //根据汽运订单查找分属于哪个异地库。 String inwardWarehouse = omstrainOrderMapper.getInwardWarehouse(orderId); if (inwardWarehouse!=null) { if (inwardWarehouse.contains("重庆金田")) { for (Map jitianMap:data) { Map orchardStorehouse = new HashMap<>(); List> orchardStorehouseList = new ArrayList<>(); Object sendTime = jitianMap.get("sendTime"); String transportType = (String) jitianMap.get("transportType"); //发送时间 orchardStorehouse.put("sendTime", sendTime); //系统代码 orchardStorehouse.put("sysCode", "DGXT"); //仓库代码 orchardStorehouse.put("warehouseCode", "LJJT"); //运输方式 orchardStorehouse.put("transportType", transportType); //去掉sendTime jitianMap.remove("sendTime"); jitianMap.remove("transportType"); orchardStorehouseList.add(jitianMap); orchardStorehouse.put("details", orchardStorehouseList); //调用果园库接口 sendMesToGuoyuan(orchardStorehouse); } } else if (inwardWarehouse.contains("成都城嘉")) { //调用城嘉库登录接口获取token //调用城嘉库推送接口 String token = DagonloginChenJiaku(); if (token != null) { for (Map map1:data) { map1.put("token", token); sendMesToChengJia(map1); } } else { System.out.println("登录城嘉库失败"); } } } } catch (IOException e) { e.printStackTrace(); } finally { return i; } } /** * 访问城嘉库接口方法 * @param * @return */ public String DagonloginChenJiaku() throws IOException { Map reqMap = new HashMap<>(); reqMap.put("username","dagon"); reqMap.put("password","147258"); // JSONObject jsonObject = new JSONObject(); // jsonObject.putAll(reqMap); // Map map=new HashMap<>(); // map.put("username","dagon"); // map.put("password","147258"); // jsonObject.putAll(map); // jsonObject.put("username","dagon"); // jsonObject.put("password","147258"); String jsonData = null; jsonData = getRequestUtils.doPost(chengJiaLoginUrl,reqMap); if(!"null".equals(jsonData)){ System.out.println(jsonData); HashMap hashMap = JSON.parseObject(jsonData, HashMap.class); BigDecimal code = DataChange.dataToBigDecimal( hashMap.get("code")); System.out.println(hashMap.get("message")); if(200==code.intValue()){ Map result =(Map) hashMap.get("result"); String token =(String) result.get("token"); return token; }else { System.out.println("推送数据失败"+hashMap.get("message")); } } return null; // String body = restTemplate.postForEntity(chengJiaLoginUrl, reqMap, String.class).getBody(); // System.out.println(body); // return body; } /** * 推送数据给城嘉库 */ /** * 访问重庆果园库接口方法 * @param map * @return */ public int sendMesToChengJia(Map map){ String token =(String) map.get("token"); Map jsonObject = new HashMap<>(); jsonObject.remove(token); jsonObject.putAll(map); String jsonData = null; jsonData = getRequestUtils.doPostAddHeader(chengJiaSendUrl, jsonObject,token); if(!"null".equals(jsonData)){ System.out.println(jsonData); HashMap hashMap = JSON.parseObject(jsonData, HashMap.class); BigDecimal code = DataChange.dataToBigDecimal(hashMap.get("code")); System.out.println(hashMap.get("message")); if(code.intValue()==200){ return 1; }else { System.out.println("推送数据失败"+hashMap.get("message")); } } return 0; } /** * 访问重庆果园库接口方法 * @param map * @return */ public int sendMesToGuoyuan(Map map){ JSONObject jsonObject = new JSONObject(); jsonObject.putAll(map); String jsonData = null; try { jsonData = HTTPRequestUtils.send(guoYuanUrl, jsonObject, "utf-8"); } catch (IOException e) { e.printStackTrace(); } if(!"null".equals(jsonData)){ System.out.println(jsonData); HashMap hashMap = JSON.parseObject(jsonData, HashMap.class); BigDecimal code =DataChange.dataToBigDecimal(hashMap.get("code")); System.out.println(hashMap.get("message")); if(code.intValue()==200){ return 1; }else { System.out.println("推送数据失败"+hashMap.get("message")); } } return 0; } @Override public List> getOrderTrainMes(Integer orderId) { List>mapList = omstrainOrderMapper.getOrderTrainMes(orderId); for(Mapmap1:mapList){ List> materialList = omstrainOrderMapper.getMaterialList(map1); for (MapmaterialMap:materialList){ BigDecimal materialId = DataChange.dataToBigDecimal(materialMap.get("materialId")); //根据运输订单ID和物资ID去查询炉号 List> luHaoNumberList = omstrainOrderMapper.getLuhaoNum(new BigDecimal(orderId),materialId); StringBuilder sb = new StringBuilder(); for (Map luHaoMap : luHaoNumberList) { sb.append(luHaoMap.get("materialFurnaceNumber")); sb.append("-"); sb.append(luHaoMap.get("materialNum")); sb.append("/"); } if(luHaoNumberList.size() > 0){ sb.deleteCharAt(sb.length() - 1); materialMap.put("luhao",sb.toString()); } } map1.put("materialMesList",materialList); } return mapList; } @Override public List> getWagonShippingDetails(Map map) { return omstrainOrderMapper.getWagonShippingDetails(map); } }