作者 xudada

北货场站进出抬杆儿

  1 +package com.sy.logic;
  2 +
  3 +import com.alibaba.fastjson.JSON;
  4 +import com.alibaba.fastjson.JSONArray;
  5 +import com.sy.crossDomain.buildBarCode;
  6 +import com.sy.model.*;
  7 +import com.sy.relation.VeManifestRelation;
  8 +import com.sy.service.*;
  9 +import com.sy.socket.CommandClient;
  10 +import com.sy.utils.FileTool;
  11 +import org.apache.http.HttpEntity;
  12 +import org.apache.http.HttpResponse;
  13 +import org.apache.http.client.HttpClient;
  14 +import org.apache.http.client.methods.HttpGet;
  15 +import org.apache.http.impl.client.DefaultHttpClient;
  16 +import org.apache.http.util.EntityUtils;
  17 +import org.apache.log4j.PropertyConfigurator;
  18 +import org.springframework.beans.factory.annotation.Autowired;
  19 +import org.springframework.beans.factory.annotation.Value;
  20 +import org.springframework.scheduling.annotation.Async;
  21 +import org.springframework.stereotype.Component;
  22 +import org.apache.log4j.Logger;
  23 +
  24 +import javax.annotation.PostConstruct;
  25 +import java.io.BufferedReader;
  26 +import java.io.IOException;
  27 +import java.io.InputStreamReader;
  28 +import java.net.MalformedURLException;
  29 +import java.net.URL;
  30 +import java.net.URLConnection;
  31 +import java.text.DecimalFormat;
  32 +import java.text.NumberFormat;
  33 +import java.text.ParseException;
  34 +import java.util.Date;
  35 +import java.util.HashMap;
  36 +import java.util.List;
  37 +import java.util.Map;
  38 +
  39 +
  40 +@Component
  41 +public class NewLeftBar {
  42 + private static final Logger logger = Logger.getLogger(NewLeftBar.class);
  43 + @Autowired
  44 + private LandBusListService listService;//进出场申请表
  45 + @Autowired
  46 + private LandRoadVeService veService;//车辆信息备案表
  47 + @Autowired
  48 + private ResMessageService resMessageService;//查询运单放行表
  49 + @Autowired
  50 + private EnterCancelServer enterCancelServer;//调拨业务单独记录表
  51 + @Autowired
  52 + private BusnesslistinfoService busnesslistinfoService;
  53 + @Autowired
  54 + BusnessViewService busnessViewService;
  55 + @Value("${wharf.interface.host}")
  56 + private String wharfHost;
  57 +
  58 + @Value("${nmms.interface.host}")
  59 + private String nmmsHost;
  60 +
  61 + private static NewLeftBar logic = new NewLeftBar();
  62 + //从配置文件中读取货物重差可控范围
  63 + private static String checkWt = FileTool.readProperties("grossWt");
  64 + //逻辑判断后的返回信息定义
  65 + private static String PERMITTHOUGH = "直接放行";
  66 + private static String GROWSSEXCETION = "禁止通行,重量不在可控范围";
  67 + private static String NORECORD = "车辆未备案或者识别错误,车牌号:";
  68 + private static String INPUTSTATION = "此车辆未做进站申请";
  69 + private static String ENTERSTATION = "此车辆未做出站申请";
  70 + private static String ISVALID = "二维码数据异常,请使用正确的二维码数据";
  71 + private static String ERRORWT = "出起始场站的重量和进目的场站的重量不一致";
  72 + private static String IEPORSE = "无相对应进出场申请";
  73 + private static String FANGXING="有运单未放行";
  74 +
  75 + @Autowired
  76 + private FeignService feignService;
  77 + @PostConstruct
  78 + public void init() {
  79 + logic = this;
  80 + logic.listService = this.listService;
  81 + logic.veService = this.veService;
  82 + logic.resMessageService = this.resMessageService;
  83 + logic.enterCancelServer = this.enterCancelServer;
  84 + logic.feignService=this.feignService;
  85 + logic.busnesslistinfoService=this.busnesslistinfoService;
  86 + logic.busnessViewService=this.busnessViewService;
  87 + logic.wharfHost=this.wharfHost;
  88 + logic.nmmsHost=this.nmmsHost;
  89 + }
  90 +
  91 + /**
  92 + * @Param info 卡口采集数据
  93 + * @Result 计算卡口采集数据并发送报文
  94 + */
  95 + public static boolean newLiftBar(GatherInfo info) throws InterruptedException {
  96 + PropertyConfigurator.configure("config/log4j.properties");
  97 + //默认返回值
  98 + boolean result = false;
  99 + //获取过磅重量
  100 + double growssWt = info.getGrosswt().doubleValue();
  101 + double goodsWt=0.0,inWt=0.0,diffVal=0.0;
  102 + //取车牌号,判定卡口是否取到车牌号
  103 + String vaName = info.getVename();
  104 + //若无车牌号,返回未识别错误
  105 + if (vaName.length() <= 0) {
  106 + CommandClient.Client(info, NORECORD + vaName);
  107 + return result;
  108 + }
  109 + //校验车辆是否备案
  110 + LandRoadVe ve = logic.veService.selectByFrameNo(vaName);
  111 + //若无备案信息,返回车辆未备案或者识别错误
  112 + if (ve == null) {
  113 + CommandClient.Client(info, NORECORD + vaName);
  114 + return result;
  115 + }
  116 + /*if("4604600000".equals(info.getAreaid())){
  117 + return result;
  118 + }*/
  119 + /**
  120 + * 车牌号,二维码,场站ID/号,通道ID/号,进出业务类型标识I/E
  121 + * 查询是否已有此场站通道的申请
  122 + */
  123 + //通过车牌号,二维码,场站,通道号,进出类型查询进出场站申请列表
  124 + LandBusinessTypeList land = logic.listService.selectForOne(info.getVename(), info.getBarcode(), info.getAreaid(), info.getChnlno(), info.getIetype());
  125 + //若查询结果为null,返回无相对应进出场申请
  126 + if (land == null) {
  127 + CommandClient.Client(info, IEPORSE);
  128 + return result;
  129 + }
  130 + //判断进出场申请二维码是否已经失效,若失效,sendError
  131 + if ("0".equals(land.getIsvalid())) {
  132 + //校验重量开始
  133 + boolean checkResult = false;
  134 + boolean check = false;
  135 + boolean checkMainfest =false;
  136 +
  137 + //判断是进场申请还是出场申请
  138 + if("I".equals(info.getIetype())){
  139 + /**
  140 + * 若进场站为北货,只允许空车进,备案车重=过卡车重
  141 + * 其它走校验
  142 + * */
  143 + if(FileTool.readProperties("stationb").equals(info.getAreaid())){
  144 + logger.info("--------->车辆进入北货场站");
  145 + if(logic.checkFlag(growssWt, Double.parseDouble(ve.getSelfWt()))){
  146 + checkResult=true;
  147 + logger.info("--------------->北货站车辆进入重量校验通过,车车牌号为:"+info.getVename());
  148 + }else{
  149 + logger.info("--------------->车辆未进入北货站,重量校验没通过,车车牌号为:"+info.getVename());
  150 + CommandClient.Client(info, GROWSSEXCETION);
  151 + return result;
  152 + }
  153 + }else{
  154 + check=logic.checkResultIn(growssWt,Double.parseDouble(ve.getSelfWt()), goodsWt);
  155 + if(check){
  156 + checkResult=check;
  157 + logger.info("--------------->车辆进入场站"+info.getAreaid()+"重量校验通过,车车牌号为:"+info.getVename());
  158 + }else{
  159 + logger.info("--------------->车辆未进入"+info.getAreaid()+"货站,重量校验没通过,车车牌号为:"+info.getVename());
  160 + CommandClient.Client(info, GROWSSEXCETION);
  161 + return result;
  162 + }
  163 + }
  164 + } else{
  165 + //获取对应场站进场申请的货物重量,进场过磅重量
  166 + List<LandBusinessTypeList> listWt=logic.listService.selectwt(land.getTrailerFrameNo(),land.getBarcode(),land.getEndstation(),"I");
  167 + for(LandBusinessTypeList typeList:listWt){
  168 + if(typeList.getRemark()!=null && typeList.getRemark()!=""){
  169 + //货物重量
  170 + goodsWt=Double.parseDouble(typeList.getRemark());
  171 + }
  172 + if(typeList.getAislewt()!=null){
  173 + //对应场站进场过磅重量
  174 + inWt=typeList.getAislewt();
  175 + }
  176 + //进出差值
  177 + diffVal = inWt- growssWt;
  178 + }
  179 + //判断场站出场是否要重量校验
  180 + if(FileTool.readProperties("station").equals(land.getEndstation())||FileTool.readProperties("stationsf").equals(land.getEndstation())
  181 + || "4604600000".equals(land.getEndstation())){
  182 + checkResult=true;
  183 + }else if(!"普通货".equals(land.getCocode())){
  184 + checkResult=true;
  185 + }else {
  186 + check = logic.checkResult(growssWt, Double.parseDouble(ve.getSelfWt()), goodsWt,inWt);
  187 + if("出口送货".equals(land.getBusinesstype())){
  188 + if(check){
  189 + checkResult=true;
  190 + }else{
  191 + CommandClient.Client(info, GROWSSEXCETION);
  192 + }
  193 + }else{
  194 + checkMainfest = logic.checkManifest(land.getMasterList());
  195 + if(checkMainfest){
  196 + checkResult=check || checkMainfest;
  197 + }else{
  198 + CommandClient.Client(info, FANGXING);//有运单未放行
  199 + }
  200 + }
  201 + }
  202 +
  203 + }
  204 + if(logic.sendBw(info, checkResult)){//发送抬杆儿报文
  205 + if ("I".equals(info.getIetype())) {
  206 + land.setAislewt(info.getGrosswt().doubleValue());
  207 + land.setUpdateDate(new Date());
  208 + //list.setRemark(String.format("%.1f", goodsWt));
  209 + land.setRemark2(ve.getSelfWt());
  210 + land.setContrastflag("已进站");
  211 + //logic.checkData(list);
  212 + } else {
  213 + LandRoadVe veName = logic.veService.selectByFrameNo(vaName);
  214 + land.setAislewt(info.getGrosswt().doubleValue());
  215 + land.setUpdateDate(new Date());
  216 + land.setRemark(String.format("%.1f", goodsWt));
  217 + land.setRemark1(String.format("%.1f", diffVal));
  218 + land.setRemark2(veName.getSelfWt());
  219 + land.setContrastflag("已出站");
  220 + //logic.checkData(list);
  221 + }
  222 + logic.listService.updateById(land);//更新进出场申请业务表
  223 + //进出场申请业务表对应场站的卡口失效
  224 + logic.listService.updateisvalid(land.getTrailerFrameNo(),land.getBarcode(),land.getEndstation(),land.getTurnoverflag());
  225 + //判断是否为最后一个场站,若是最后个场站申请为出,二维码失效
  226 + int count=logic.listService.selectlaststation(land.getTrailerFrameNo(),land.getBarcode());
  227 + //二维码失效
  228 + if(count==0){
  229 + buildBarCode.cancleBarCode(vaName);
  230 + }
  231 + /**
  232 + * 提前运抵判断
  233 + * 如果有提前运抵标识,判断是否分批,不分批直接通知
  234 + * 分批是否最后一批,最后一批通知
  235 + * */
  236 + if("I".equals(info.getIetype())){
  237 + try{
  238 + List<LAND_BUSINEESTYPE_LIST_INFO> arrive_infos=logic.busnesslistinfoService.selectarrvie(info.getBarcode());//查询是否提前运抵
  239 + if(arrive_infos!=null && arrive_infos.size()>0){
  240 + for (LAND_BUSINEESTYPE_LIST_INFO businees:arrive_infos) {
  241 + //判断运单是否分批
  242 + if ("0".equals(businees.getPartialidentity())){
  243 + logger.info("运单号{}不分批,不从通知数组删除");
  244 + }else { //分批后的处理
  245 + List<businesstypelistinfo_view> info_view=logic.busnessViewService.selectawb(businees.getAwba());
  246 + // 装载运单的分批车辆还有未入场的,从通知数组中删除他
  247 + if (info_view.size()>0){
  248 + arrive_infos.remove(businees);
  249 + }
  250 + }
  251 + }
  252 + //最后发送通知数组
  253 + /*try{
  254 + new LiftBar().sendMessage(info.getVename(),arrive_infos);
  255 + }catch (Exception e){
  256 + logger.info("新舱单发送消息异常---"+e.toString());
  257 + }*/
  258 + }
  259 + }catch (Exception e){
  260 + logger.info("运单分批消息异常---"+e.toString());
  261 + }
  262 + }
  263 + //调拨货冻结
  264 + if (land.getBusinesstype().indexOf("业务") > 0) {
  265 + logic.inOrUpEnterCancel(land);
  266 + }
  267 + }
  268 + //绑定车单关系
  269 + if(land.getMasterList().length()>0){
  270 + boolean flag = VeManifestRelation.createFile(land);
  271 + if(flag){
  272 + logger.info(">>>>>>>>>>-----车单关系报文生成成功-----<<<<<<<<<<<<");
  273 + }
  274 + }
  275 +
  276 + } else {
  277 + sendError(info);
  278 + logger.error("------->>>>>>>二维码数据异常,请使用正确的二维码数据<<<<<<<-----");
  279 + }
  280 + return true;
  281 + }
  282 + /**
  283 + * 进场校验重量核对
  284 + * **/
  285 +
  286 + public boolean checkResultIn(double grossWt, double vewt, double goodsWt) {
  287 + DecimalFormat df = new DecimalFormat("0.00");
  288 + boolean flag = false;
  289 + double result= 0.0,result2= 0.0,result3= 0.0,result4= 0.0;
  290 + if(grossWt>0){
  291 + result2 = Double.parseDouble(df.format(Math.abs((grossWt-vewt)) / grossWt));
  292 + result3 = Double.parseDouble(df.format(Math.abs((grossWt-vewt-goodsWt)) / grossWt));
  293 + }
  294 + if (result2 <= valueDob() || result3 <= valueDob()) {
  295 + flag = true;
  296 + }
  297 + return flag;
  298 + }
  299 + /**
  300 + * 校验重量并发送报文
  301 + */
  302 +
  303 + public boolean sendBw(GatherInfo info, boolean check) {
  304 + logger.info(String.format("开始发送指令:车牌%s,场站%s,通道%s,重量%s",info.getVename(),info.getAreaid(),info.getChnlno(),info.getGrosswt()));
  305 + boolean flag = false;
  306 + if (check) {
  307 + CommandClient.Client(info, PERMITTHOUGH);
  308 + logger.info("=============>>>>>>>>放行报文发送成功<<<<<<<<<==============");
  309 + flag = true;
  310 + } else {
  311 + CommandClient.Client(info, GROWSSEXCETION);
  312 + logger.info("=============>>>>>>>>重量异常报文发送成功<<<<<<<<<==============");
  313 + }
  314 + return flag;
  315 + }
  316 + /**
  317 + * 给码头发送卡口数据
  318 + *
  319 + * @param stationCode
  320 + * @param carNo
  321 + * @param IEtype
  322 + */
  323 + public static void sendData(String stationCode, String carNo, boolean IEtype) {
  324 + String url = logic.wharfHost+"air-api/car/channelCar?stationCode=" + stationCode + "&carNo=" + carNo + "&isPickup=" + IEtype;
  325 + try {
  326 + HttpClient httpClient = new DefaultHttpClient();
  327 + HttpGet httpGet = new HttpGet(url);
  328 + HttpResponse httpResponse = httpClient.execute(httpGet);
  329 + HttpEntity entity = httpResponse.getEntity();
  330 + String entityStr = EntityUtils.toString(entity);
  331 + logger.info("------------>>>>>>>>>>>>>>发送车辆信息:{stationCode:" + stationCode + ",carNo:" + carNo + ",isPickup:" + IEtype + "}");
  332 + logger.info("------------>>>>>>>>>>>>>>响应返回内容:" + entityStr + "<<<<<<<<<<<<-----------");
  333 + } catch (Exception e) {
  334 + logger.info(e.toString());
  335 + }
  336 + }
  337 + /**
  338 + * 给码头发送卡口数据
  339 + *
  340 + * @param list
  341 + */
  342 + public void checkData(LandBusinessTypeList list) {
  343 + String sationCode = null;
  344 + boolean flag = false;
  345 + if ("出口送货".equals(list.getBusinesstype()) || "出口流转".equals(list.getBusinesstype())) {
  346 + flag = false;
  347 + }
  348 + if ("进口提货".equals(list.getBusinesstype()) || "进口流转".equals(list.getBusinesstype())) {
  349 + flag = true;
  350 + }
  351 + if ("4604000000".equals(list.getEndstation())) {
  352 + if ("I".equals(list.getTurnoverflag())) {
  353 + sationCode = "HK05";
  354 + } else {
  355 + sationCode = "HK06";
  356 + }
  357 + //TODO:加场站判定
  358 + }
  359 + try{
  360 + sendData(sationCode, list.getTrailerFrameNo(), flag);
  361 + }catch (Exception e){
  362 + logger.info("码头发送消息异常---"+e.toString());
  363 + }
  364 + }
  365 + /**
  366 + * 查询运单是否全部放行
  367 + *
  368 + * @param manifestList
  369 + * @return
  370 + */
  371 + public boolean checkManifest(String manifestList) {
  372 + if (manifestList.length() < 1) return false;
  373 + manifestList = manifestList.replace("-", "");
  374 + String[] maifest = manifestList.split(",");
  375 + boolean flag = false;
  376 + int count = 0;
  377 + for (int i = 0; i < maifest.length; i++) {
  378 + RESMESSAGE resmessage = logic.resMessageService.selectByManifest(maifest[i]);
  379 + if (resmessage != null) {
  380 + if ("11".equals(resmessage.getResponsecode())) {
  381 + count++;
  382 + }
  383 + }
  384 + }
  385 + if (count == maifest.length) {
  386 + flag = true;
  387 + }
  388 + return flag;
  389 + }
  390 + /**
  391 + * 校验载重和称重是否在合理的范围
  392 + *
  393 + * @Param grossWt 地磅称重
  394 + * @Param wt 车辆自重
  395 + * @Param goodsWt 货物总重
  396 + * @Result 获取运单重量
  397 + */
  398 + /**
  399 + * 进场卸货误差判定
  400 + * 出场重量 = 进场重量 - 货物重量
  401 + * 首先计算 进出场差值数 ABS(进场重量-货物重量-出场重量)/出场重量, 计算出出场误差百分比
  402 + * (出场重量 - 车辆备案重量) /出场重量
  403 + * (出场重量 - (车辆备案重量+货物重量)/出场重量
  404 + * (出场重量 - (进场重量+货物重量)/出场重量
  405 + */
  406 + public boolean checkResult(double grossWt, double wt, double goodsWt,double inWt) {
  407 + DecimalFormat df = new DecimalFormat("0.00");
  408 + boolean flag = false;
  409 + double result= 0.0,result2= 0.0,result3= 0.0,result4= 0.0;
  410 + if(grossWt>0){
  411 + result = Double.parseDouble(df.format(Math.abs((inWt - goodsWt - grossWt)) / grossWt));
  412 + result2 = Double.parseDouble(df.format(Math.abs((grossWt-wt)) / grossWt));
  413 + result3 = Double.parseDouble(df.format(Math.abs((grossWt-wt-goodsWt)) / grossWt));
  414 + result4 = Double.parseDouble(df.format(Math.abs((inWt + goodsWt)) / grossWt));
  415 + }
  416 + if (result <= valueDob() ||result2 <= valueDob() || result3 <= valueDob() || result4 <= valueDob()) {
  417 + flag = true;
  418 + }
  419 + return flag;
  420 + }
  421 +
  422 +
  423 +
  424 + /**
  425 + * 排除当前系统问题发送错误commandInfo
  426 + */
  427 + public static void sendError(GatherInfo info) {
  428 + //二维码数据异常,请使用正确的二维码数据
  429 + CommandClient.Client(info, ISVALID);
  430 + }
  431 +
  432 + /**
  433 + * @Param mainifast 主单列表
  434 + * @Param ietype 进出标志
  435 + * 获取货物总重
  436 + */
  437 + public double GoodsWt(String mainifast, String ietype) {
  438 + Double sum = 0.0;
  439 + if (mainifast.length() > 0) {
  440 + String[] mainifastList = mainifast.split(",");
  441 + for (String mainBill : mainifastList) {
  442 + sum += getGrossWt(mainBill, ietype);
  443 + }
  444 + }
  445 + return sum;
  446 + }
  447 +
  448 + /**
  449 + * @Param waybill 主单号
  450 + * @Param imp 进出港标识
  451 + * @Result 获取运单重量
  452 + */
  453 + public double getGrossWt(String waybill, String imp) {
  454 + logger.info("进入获取重量action");
  455 + if (!(waybill.indexOf("-") != -1)) {
  456 + waybill = waybill.substring(0, 3) + "-" + waybill.substring(3);
  457 + }
  458 + String url = logic.nmmsHost+"orig/orig?waybill=" + waybill + "&imp=" + imp;
  459 + // String url = "http://tjfx.15miaoo.com:8003/tj/orig/orig?waybill=" + waybill + "&imp=" + imp;
  460 + StringBuilder json = new StringBuilder();
  461 + Map map = null;
  462 + double bg = 0;
  463 + try {
  464 + URL Url = new URL(url);
  465 + URLConnection yc = Url.openConnection();
  466 + BufferedReader in = new BufferedReader(new InputStreamReader(yc.getInputStream(), "utf-8"));
  467 + String inputLine = null;
  468 + while ((inputLine = in.readLine()) != null) {
  469 + json.append(inputLine);
  470 + }
  471 + logger.info("返回数据:" + json);
  472 + JSONArray array = JSONArray.parseArray(json.toString());
  473 + for (int i = 0; i < array.size(); i++) {
  474 + map = JSON.parseObject(array.getString(i));
  475 + if (map.containsKey("receiptinformation")) {
  476 + if (map.get("receiptinformation").toString().startsWith("41301") || map.get("receiptinformation")
  477 + .toString().startsWith("41106") || map.get("receiptinformation")
  478 + .toString().startsWith("31301") || map.get("receiptinformation")
  479 + .toString().startsWith("31106") || map.get("receiptinformation")
  480 + .toString().indexOf("提运单放行") != -1) {
  481 + logger.info(map);
  482 + bg = Double.parseDouble((String) map.get("totalweight"));
  483 + logger.info("for循环取重量:" + bg);
  484 + return bg;
  485 + }
  486 + }
  487 + }
  488 + logger.info("访问返回的数据重量:" + bg);
  489 + in.close();
  490 + } catch (MalformedURLException e) {
  491 + logger.info("运单放行消息异常---"+e.toString());
  492 + logger.error(e);
  493 + } catch (IOException e) {
  494 + e.printStackTrace();
  495 + logger.error(e);
  496 + }
  497 + return bg;
  498 + }
  499 +
  500 + /**
  501 + * 判断地磅称重,备案车重是否在合理范围
  502 + *
  503 + * @param grossWt
  504 + * @param wt
  505 + * @return
  506 + */
  507 + public boolean checkFlag(double grossWt, double wt) {
  508 + DecimalFormat df = new DecimalFormat("0.00");
  509 + boolean flag = false;
  510 + double reult = Double.parseDouble(df.format(Math.abs((grossWt - wt)) / grossWt));
  511 + if (reult <= valueDob()) {
  512 + flag = true;
  513 + }
  514 + return flag;
  515 + }
  516 + //将获取的checkWt进行小数转化
  517 + public static double valueDob() {
  518 + NumberFormat nf = NumberFormat.getPercentInstance();
  519 + Number m = null;
  520 + try {
  521 + m = nf.parse(checkWt);//将百分数转换成Number类型
  522 + } catch (ParseException e) {
  523 + logger.info("重量校验消息异常---"+e.toString());
  524 + logger.info(e.getMessage());
  525 + }
  526 + return m.doubleValue();
  527 + }
  528 + /**
  529 + * 生成或者更新货物冻结标识
  530 + *
  531 + * @param landBusinessTypeList
  532 + */
  533 + public void inOrUpEnterCancel(LandBusinessTypeList landBusinessTypeList) {
  534 + if (landBusinessTypeList.getMasterList().length() < 1) return;
  535 + String[] list = landBusinessTypeList.getMasterList().split(",");
  536 + String flag = null;
  537 + for (int i = 0; i < list.length; i++) {
  538 + if("调拨业务".equals(landBusinessTypeList.getBusinesstype())){
  539 + flag = "E";
  540 + }else {
  541 + flag = "I";
  542 + }
  543 + double wt = getGrossWt(list[i],flag);
  544 +
  545 + ENTERCANCCEL entercanccel = logic.enterCancelServer.selectByManifest(list[i]);
  546 + if (entercanccel != null) {
  547 + if(entercanccel.getVename().equals(landBusinessTypeList.getTrailerFrameNo())){
  548 + if ("0".equals(entercanccel.getIsfreeze())) {
  549 + entercanccel.setIsfreeze("1");
  550 + entercanccel.setEndport(landBusinessTypeList.getEndstation());
  551 + entercanccel.setUpdateBy(landBusinessTypeList.getCreateBy());
  552 + entercanccel.setUpdateTime(new Date());
  553 + logic.enterCancelServer.updateByPermaryKey(entercanccel);
  554 + }
  555 + }
  556 + }else {
  557 + if("E".equals(landBusinessTypeList.getTurnoverflag())){
  558 + ENTERCANCCEL canccel = new ENTERCANCCEL();
  559 + canccel.setIsfreeze("0");
  560 + canccel.setVename(landBusinessTypeList.getTrailerFrameNo());
  561 + canccel.setId(String.valueOf(System.currentTimeMillis()));
  562 + canccel.setVeCompanyName(landBusinessTypeList.getAgentno());
  563 + canccel.setBusinesstype(landBusinessTypeList.getBusinesstype());
  564 + canccel.setManifest(list[i]);
  565 + canccel.setAgentname(landBusinessTypeList.getAgentname());
  566 + canccel.setStartport(landBusinessTypeList.getEndstation());
  567 + canccel.setGrosswt(landBusinessTypeList.getAislewt());
  568 + canccel.setCreateBy(landBusinessTypeList.getCreateBy());
  569 + canccel.setCreateTime(new Date());
  570 + canccel.setUpdateBy(landBusinessTypeList.getCreateBy());
  571 + canccel.setUpdateTime(new Date());
  572 + canccel.setWeight(wt);
  573 + logic.enterCancelServer.insertEntry(canccel);
  574 + }
  575 +
  576 + }
  577 + }
  578 + }
  579 + /**
  580 + * 为提前运抵服务发送数据
  581 + *
  582 + * @param
  583 + * @param
  584 + * @return
  585 + */
  586 + @Async("asyncPoolTaskExecutor")
  587 + public void sendMessage(String vname, List<LAND_BUSINEESTYPE_LIST_INFO> list_infos)throws InterruptedException{
  588 + logger.info("新舱单发送服务开始");
  589 + AdvanceArrive arrive=new AdvanceArrive();
  590 + arrive.setVname(vname);
  591 + arrive.setMasterList(list_infos);
  592 + logger.info("新舱单发送服务数据",arrive);
  593 + Map<String,Object> map=logic.feignService.sendMessage(arrive);
  594 + logger.info(""+map);
  595 + }
  596 +}
  597 +