소스 검색

行政通道调试、通道超时初始化

qzyReal 1 년 전
부모
커밋
bc1b0c951f

+ 30 - 6
config.xml

@@ -2,7 +2,7 @@
 
 <config>
     <managerSetting>
-        <enable>true</enable>
+        <enable>false</enable>
         <host>10.26.1.25</host>
         <beatPort>8050</beatPort>
         <serverUrl>http://10.26.1.25:9191</serverUrl>
@@ -10,7 +10,7 @@
     <!--通道属性配置-->
     <channelSetting>
         <!--本机IP-->
-        <ip>10.26.1.26</ip>
+        <ip>10.5.136.55</ip>
         <channelCode>A1002</channelCode>
         <channelName>货运进道2</channelName>
         <!--0 货运通道 1 行政通道-->
@@ -21,7 +21,7 @@
     <!--设备相关设置-->
     <sysConfig>
         <caputreSetting>
-            <enable>true</enable>
+            <enable>false</enable>
             <host>10.26.6.51</host>
             <port>8000</port>
             <username>admin</username>
@@ -29,7 +29,7 @@
             <brand>5000</brand>
         </caputreSetting>
         <serialSetting>
-            <host>10.26.6.50</host>
+            <host>10.5.136.55</host>
             <weighbridge>
                 <enable>true</enable>
                 <port>4003</port>
@@ -37,7 +37,7 @@
                 <minKg>1000</minKg>
             </weighbridge>
             <led>
-                <enable>true</enable>
+                <enable>false</enable>
                 <port>4002</port>
                 <brand>2000</brand>
             </led>
@@ -116,13 +116,37 @@
             </actionList>
         </event>
         <event>
-            <!--校验失败-->
+            <!--通过校验,继电器1断开闭合-->
+            <name>PLC.UP_POINT_READ</name>
+            <actionList>
+                <action>PLC.RAILING_RISE_OFF</action>
+            </actionList>
+        </event>
+        <event>
+            <!--校验超时-->
             <name>PLC.SUBMIT_TIMEOUT</name>
             <actionList>
                 <action>LED.LED_SHOW_CONTENT(04|提交数据请求失败,请联系管理人员)</action>
             </actionList>
         </event>
         <event>
+            <!--行政车校验不放行-->
+            <name>PLC.CHECK_ADMIN_FAILED</name>
+            <actionList>
+                <action>WEIGHBRIDGE.CLEAN</action>
+                <action>CENTER.TIMER_SLEEP(2000)</action>
+                <action>LED.LED_SHOW_CONTENT(04|请退出通道)</action>
+                <action>CENTER.TIMER_SLEEP(8000)</action>
+                <action>PLC.RED_LIGHT_OFF</action>
+                <action>CENTER.TIMER_SLEEP(100)</action>
+                <action>PLC.GREEN_LIGHT_ON</action>
+                <action>PLC.RAILING_RISE_OFF</action>
+                <action>LED.LED_SHOW_CONTENT(${platNo})</action>
+                <action>LED.LED_SHOW_CONTENT(04|通道就绪,请通行)</action>
+            </actionList>
+        </event>
+
+        <event>
             <!--通道重置-->
             <name>PLC.IDLE</name>
             <actionList>

+ 2 - 1
pom.xml

@@ -147,7 +147,8 @@
                 <version>${classfinal.version}</version>
                 <configuration>
                     <!--加密打包之后pom.xml会被删除,不用担心在jar包里找到此密码-->
-                    <password>353568</password>
+                    <password>ABCabc123</password>
+                    <code>75F0A083412D315D3B2A26FAC0F6F550D41D8CD98F00B204E9800998ECF8427ED41D8CD98F00B204E9800998ECF8427E</code>
                     <packages>com.gzlh</packages> <!--可以多个-->
                     <!--                    <cfgfiles>application.yml</cfgfiles>-->
                     <excludes>org.spring</excludes>

+ 19 - 0
src/main/java/com/gzlh/api/OpenApi.java

@@ -1,6 +1,10 @@
 package com.gzlh.api;
 
 import cn.hutool.core.thread.ThreadUtil;
+import cn.hutool.core.util.ReflectUtil;
+import cn.hutool.json.JSONUtil;
+import cn.hutool.log.StaticLog;
+import com.gzlh.bus.EventDataManager;
 import com.gzlh.bus.SysConfig;
 import com.gzlh.config.ModuleEnum;
 import com.gzlh.bus.EventBus;
@@ -9,12 +13,15 @@ import com.gzlh.config.dto.SerialSetting;
 import com.gzlh.device.electron.job.ElectronReadJob;
 import com.gzlh.device.led.event.LedDefaultEvent;
 import com.gzlh.device.led.utils.LedOptions;
+import com.gzlh.entity.ReqBO;
 import com.gzlh.utils.ResultJson;
 import com.gzlh.device.weighbridge.event.WeighbridgeEvent;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.annotation.Resource;
+import java.util.Arrays;
 
 @RestController
 @RequestMapping("open")
@@ -45,4 +52,16 @@ public class OpenApi {
         return ResultJson.success();
     }
 
+    @RequestMapping("trunk")
+    public ResultJson trunk(@RequestBody ReqBO reqBO){
+        Arrays.stream(ReflectUtil.getFields(ReqBO.class)).forEach(field -> {
+            String name=field.getName();
+            Object value=ReflectUtil.getFieldValue(reqBO,field.getName());
+            EventDataManager.cacheData(name,value);
+        });
+        StaticLog.info("data:{}",JSONUtil.toJsonStr(EventDataManager.getCacheData()));
+        eventBus.startEvent(ModuleEnum.WEIGHBRIDGE_MODULE.getModuleEn()+"."+ WeighbridgeEvent.READ);
+        return ResultJson.success();
+    }
+
 }

+ 71 - 72
src/main/java/com/gzlh/bus/EventThread.java

@@ -33,11 +33,11 @@ import java.util.Date;
 import java.util.List;
 
 @Slf4j
-public class EventThread implements Runnable{
+public class EventThread implements Runnable {
     private String eventName;
 
     public EventThread(String eventName) {
-        this.eventName=eventName;
+        this.eventName = eventName;
     }
 
     /**
@@ -46,52 +46,53 @@ public class EventThread implements Runnable{
      * @param eventName 服务.事件名 比如led.ready
      */
     public void handlerEvent(String eventName) {
-        SerialSetting serialSetting= SysConfig.serialSetting;
-        LedFactory ledFactory= SystemObject.ledFactory;
-        WeighbridgeFactory weighbridgeFactory=SystemObject.weighbridgeFactory;
-        ElectronFactory electronFactory= SystemObject.electronFactory;
-        PLCHadnler plcHadnler= SpringUtil.getBean(PLCHadnler.class);
-        CaptureFactory captureFactory=SystemObject.captureFactory;
-        CaputreSetting caputreSetting=SysConfig.caputreSetting;
-      //  log.info("event:{}", eventName);
+        SerialSetting serialSetting = SysConfig.serialSetting;
+        LedFactory ledFactory = SystemObject.ledFactory;
+        WeighbridgeFactory weighbridgeFactory = SystemObject.weighbridgeFactory;
+        ElectronFactory electronFactory = SystemObject.electronFactory;
+        PLCHadnler plcHadnler = SpringUtil.getBean(PLCHadnler.class);
+        CaptureFactory captureFactory = SystemObject.captureFactory;
+        CaputreSetting caputreSetting = SysConfig.caputreSetting;
+        log.info("event:{}", eventName);
         SysConfig.eventDTOList.stream().filter(eventDTO -> StrUtil.equals(eventName, eventDTO.getName()))
                 .findFirst().ifPresent(eventDTO -> {
-            List<String> actionList = eventDTO.getActionList().getAction();
-            //依次执行动作
-            for (String action:actionList) {
-                String module = StrUtil.subBefore(action, ".", true);
-                String command = StrUtil.subAfter(action, ".", true);
+                    List<String> actionList = eventDTO.getActionList().getAction();
+                    //依次执行动作
+                    for (String action : actionList) {
+                        log.info("action :{}", action);
+                        String module = StrUtil.subBefore(action, ".", true);
+                        String command = StrUtil.subAfter(action, ".", true);
 //                中断事件动作
-                if (DeviceCache.isInterrupt()){
-                    //停止读数
-                    CommonWeighbridgeHandler.isStart=false;
-                    DeviceCache.setInterrupt(false);
-                    break;
-                }
-                if (StrUtil.equals(module, ModuleEnum.INFRARED_MODULE.getModuleEn())) {
-                    //动作属于红外
-                } else if (StrUtil.equals(module, ModuleEnum.LED_MODULE.getModuleEn())) {
-                    //动作属于led
-                    ledFactory.handler(serialSetting.getLed().getBrand()).handlerAction(command);
-                } else if (StrUtil.equals(module, ModuleEnum.WEIGHBRIDGE_MODULE.getModuleEn())) {
-                    //动作属于地磅
-                    weighbridgeFactory.handler(serialSetting.getWeighbridge().getBrand()).handlerAction(command);
-                }else if (StrUtil.equals(module, ModuleEnum.CAPTURE_MODULE.getModuleEn())) {
-                    //动作属于抓拍单元--车牌识别
-                    captureFactory.handler(caputreSetting.getBrand()).handlerAction(command);
-                }else if (StrUtil.equals(module, ModuleEnum.PLC_MODULE.getModuleEn())) {
-                    //动作属于plc
-                    plcHadnler.handlerAction(command);
-                }else if (StrUtil.equals(module, ModuleEnum.ELECTRON_MODULE.getModuleEn())) {
-                    //动作属于电子车牌
-                    electronFactory.handler(serialSetting.getElectron().getBrand()).handlerAction(command);
-                }   else if (StrUtil.equals(module, ModuleEnum.CENTER_MODULE.getModuleEn())) {
-                    //动作属于中心总线
-                    handlerAction(command);
-                }
-                ThreadUtil.sleep(250);
-            }
-        });
+                        if (DeviceCache.isInterrupt()) {
+                            //停止读数
+                            CommonWeighbridgeHandler.isStart = false;
+                            DeviceCache.setInterrupt(false);
+                            break;
+                        }
+                        if (StrUtil.equals(module, ModuleEnum.INFRARED_MODULE.getModuleEn())) {
+                            //动作属于红外
+                        } else if (StrUtil.equals(module, ModuleEnum.LED_MODULE.getModuleEn())) {
+                            //动作属于led
+                            ledFactory.handler(serialSetting.getLed().getBrand()).handlerAction(command);
+                        } else if (StrUtil.equals(module, ModuleEnum.WEIGHBRIDGE_MODULE.getModuleEn())) {
+                            //动作属于地磅
+                            weighbridgeFactory.handler(serialSetting.getWeighbridge().getBrand()).handlerAction(command);
+                        } else if (StrUtil.equals(module, ModuleEnum.CAPTURE_MODULE.getModuleEn())) {
+                            //动作属于抓拍单元--车牌识别
+                            captureFactory.handler(caputreSetting.getBrand()).handlerAction(command);
+                        } else if (StrUtil.equals(module, ModuleEnum.PLC_MODULE.getModuleEn())) {
+                            //动作属于plc
+                            plcHadnler.handlerAction(command);
+                        } else if (StrUtil.equals(module, ModuleEnum.ELECTRON_MODULE.getModuleEn())) {
+                            //动作属于电子车牌
+                            electronFactory.handler(serialSetting.getElectron().getBrand()).handlerAction(command);
+                        } else if (StrUtil.equals(module, ModuleEnum.CENTER_MODULE.getModuleEn())) {
+                            //动作属于中心总线
+                            handlerAction(command);
+                        }
+                        ThreadUtil.sleep(250);
+                    }
+                });
 
     }
 
@@ -104,7 +105,7 @@ public class EventThread implements Runnable{
         if (StrUtil.contains(action, CenterActionCommand.SLEEP_COMMAND)) {
             //休眠
             handlerSleep(action);
-        }else if (StrUtil.contains(action, CenterActionCommand.SUBMIT)){
+        } else if (StrUtil.contains(action, CenterActionCommand.SUBMIT)) {
             handlerSubmit();
         }
     }
@@ -127,53 +128,52 @@ public class EventThread implements Runnable{
      * @param
      */
     private void handlerSubmit() {
-        String api=SysConfig.managerSetting.getServerUrl()+"/open/submit";
-        String bodyParams=JSONUtil.toJsonStr(EventDataManager.getCacheData());
-        if (StrUtil.isEmpty(bodyParams)){
+        String api = SysConfig.managerSetting.getServerUrl() + "/open/submit";
+        String bodyParams = JSONUtil.toJsonStr(EventDataManager.getCacheData());
+        if (StrUtil.isEmpty(bodyParams)) {
             return;
         }
-        log.info("Req:{}",bodyParams);
-        EventBus eventBus= SpringUtil.getBean(EventBus.class);
+        log.info("Req:{}", bodyParams);
+        EventBus eventBus = SpringUtil.getBean(EventBus.class);
         HttpResponse response = request(api, bodyParams);
-        log.info("提交通道数据-返回结果:{}",response.body());
-        if (response.getStatus() == 200){
+        log.info("提交通道数据-返回结果:{}", response.body());
+        if (response.getStatus() == 200) {
             String body = response.body();
             JSONObject jsonObject = JSONUtil.parseObj(body);
 //            返回数据解密
             String data = WordHandlerUtils.AESDecrypt(jsonObject.get("data").toString());
-            log.info("data:{}",data);
+            log.info("data:{}", data);
             CommandBO commandBO = JSONUtil.toBean(data, CommandBO.class);
             LedOptions options = new LedOptions().setLine("04").setShowType("00");
-            if (jsonObject.getInt("code")==200){
+            if (jsonObject.getInt("code") == 200) {
                 log.info("抬杆放行============");
-                eventBus.startEvent(ModuleEnum.PLC_MODULE.getModuleEn()+"."+ PLCEvent.RAILING_RISE);
+                eventBus.startEvent(ModuleEnum.PLC_MODULE.getModuleEn() + "." + PLCEvent.RAILING_RISE);
                 options.setColor("02");
-                if (ModuleEnum.LED_MODULE.getModuleEn().equalsIgnoreCase(commandBO.getCommand().getModule())){
+                if (ModuleEnum.LED_MODULE.getModuleEn().equalsIgnoreCase(commandBO.getCommand().getModule())) {
                     SystemObject.ledFactory.handler(SysConfig.serialSetting.getLed().getBrand())
-                            .sendMsg(commandBO.getCommand().getExtra(),options);
+                            .sendMsg(commandBO.getCommand().getExtra(), options);
                 }
-                if (SysConfig.channelSetting.getChannelType()==0){
-                   // EventDataManager.cleanData();
-                   // eventBus.startEvent(ModuleEnum.PLC_MODULE.getModuleEn()+"."+ PLCEvent.IDLE);
-                }
-            }else{
+            } else {
                 options.setColor("01");
-                if (ModuleEnum.LED_MODULE.getModuleEn().equalsIgnoreCase(commandBO.getCommand().getModule())){
+                if (ModuleEnum.LED_MODULE.getModuleEn().equalsIgnoreCase(commandBO.getCommand().getModule())) {
                     SystemObject.ledFactory.handler(SysConfig.serialSetting.getLed().getBrand())
-                            .sendMsg(commandBO.getCommand().getExtra(),options);
-                }else {
-                    eventBus.startEvent(commandBO.getCommand().getModule()+"."+ commandBO.getCommand().getCommand());
+                            .sendMsg(commandBO.getCommand().getExtra(), options);
+                } else {
+                    eventBus.startEvent(commandBO.getCommand().getModule() + "." + commandBO.getCommand().getCommand());
+                }
+                if (SysConfig.channelSetting.getChannelType() == 1) {
+                    eventBus.startEvent(ModuleEnum.PLC_MODULE.getModuleEn() + "." + PLCEvent.CHECK_ADMIN_FAILED);
                 }
             }
-        }else {
-            eventBus.startEvent(ModuleEnum.PLC_MODULE.getModuleEn()+"."+ PLCEvent.CHECK_FAILED);
+        } else {
+            eventBus.startEvent(ModuleEnum.PLC_MODULE.getModuleEn() + "." + PLCEvent.SUBMIT_TIMEOUT);
         }
 
 //        重置记录的设备触发时间
         DeviceCache.resetTimeMap();
     }
 
-    public HttpResponse request(String url,String json) {
+    public HttpResponse request(String url, String json) {
 
         HttpResponse res = null;
 //        url = "http://192.168.1.8:9191/open/submit";
@@ -198,9 +198,8 @@ public class EventThread implements Runnable{
     }
 
 
-
     @Override
-    public void run(){
+    public void run() {
         handlerEvent(eventName);
     }
 }

+ 60 - 0
src/main/java/com/gzlh/bus/task/CheckInitTask.java

@@ -0,0 +1,60 @@
+package com.gzlh.bus.task;
+
+import cn.hutool.cache.CacheUtil;
+import cn.hutool.cache.impl.TimedCache;
+import cn.hutool.core.util.RandomUtil;
+import cn.hutool.core.util.StrUtil;
+import cn.hutool.extra.spring.SpringUtil;
+import com.gzlh.bus.EventBus;
+import com.gzlh.bus.EventDataManager;
+import com.gzlh.config.ModuleEnum;
+import com.gzlh.config.task.Task;
+import com.gzlh.config.task.TaskService;
+import com.gzlh.device.plc.event.PLCEvent;
+import com.gzlh.device.weighbridge.handler.impl.CommonWeighbridgeHandler;
+import com.gzlh.entity.ReqBO;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.cache.CacheManager;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import java.util.Date;
+
+@Slf4j
+public class CheckInitTask extends Task {
+
+
+
+    private int checkCount;
+
+    public CheckInitTask(String id, long delayInMilliseconds, int checkCount) {
+        super(id, delayInMilliseconds);
+        this.checkCount = checkCount;
+    }
+
+
+    @Override
+    public void run() {
+    TaskService taskService=SpringUtil.getBean(TaskService.class);
+         EventBus eventBus=SpringUtil.getBean(EventBus.class);
+      ReqBO reqBO= EventDataManager.getCacheData();
+      if (reqBO!=null&& StrUtil.isNotEmpty(reqBO.getCarNo())){
+          if (new Date().getTime()/1000-reqBO.getGatherTime().getTime()/1000>50){
+              log.info("----------触发初始化---------------");
+              eventBus.startEvent(ModuleEnum.PLC_MODULE.getModuleEn() + "." + PLCEvent.IDLE);
+              taskService.addTask(new CheckInitTask(RandomUtil.randomNumbers(16),15000,0));
+              return;
+          }
+          taskService.addTask(new CheckInitTask(RandomUtil.randomNumbers(16),2000,0));
+          return;
+      }
+      if (checkCount>=5){
+          log.info("----------触发初始化---------------");
+          eventBus.startEvent(ModuleEnum.PLC_MODULE.getModuleEn() + "." + PLCEvent.IDLE);
+          taskService.addTask(new CheckInitTask(RandomUtil.randomNumbers(16),15000,0));
+          return;
+      }
+      checkCount=checkCount+1;
+        taskService.addTask(new CheckInitTask(RandomUtil.randomNumbers(16),2000,checkCount));
+    }
+}

+ 0 - 39
src/main/java/com/gzlh/bus/task/InitTask.java

@@ -1,39 +0,0 @@
-package com.gzlh.bus.task;
-
-import cn.hutool.cache.CacheUtil;
-import cn.hutool.cache.impl.TimedCache;
-import cn.hutool.extra.spring.SpringUtil;
-import com.gzlh.bus.EventBus;
-import com.gzlh.config.ModuleEnum;
-import com.gzlh.device.plc.event.PLCEvent;
-import com.gzlh.device.weighbridge.handler.impl.CommonWeighbridgeHandler;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.scheduling.annotation.Scheduled;
-import org.springframework.stereotype.Component;
-
-//@Component
-@Slf4j
-public class InitTask {
-    private final TimedCache<String, Integer> COUNT = CacheUtil.newTimedCache(60000);
-
-//    @Scheduled(fixedDelay = 5000)
-    public void init() {
-        String key = "cache";
-        Integer count = COUNT.get(key, false);
-        if (count == null || CommonWeighbridgeHandler.hsCar) {
-            count = 1;
-            COUNT.put(key, count);
-            return;
-        }
-      //  log.info("count:{}", count);
-        if (!CommonWeighbridgeHandler.hsCar && count > 3) {
-            EventBus eventBus = SpringUtil.getBean(EventBus.class);
-            log.info("init");
-            count = 0;
-            COUNT.put(key, count);
-            eventBus.startEvent(ModuleEnum.PLC_MODULE.getModuleEn() + "." + PLCEvent.IDLE);
-        }
-        count = count + 1;
-        COUNT.put(key, count);
-    }
-}

+ 1 - 1
src/main/java/com/gzlh/config/hksdk/AlarmParseService.java

@@ -75,7 +75,7 @@ public class AlarmParseService {
                 return;
             }
             if (CACHE_MAP.get(sLicense) != null) {
-                log.error("重复上传:{}", sLicense);
+//                log.error("重复上传:{}", sLicense);
                 return;
             }
 

+ 79 - 56
src/main/java/com/gzlh/device/camera/controller/CameraController.java

@@ -1,13 +1,21 @@
 package com.gzlh.device.camera.controller;
 
+import cn.hutool.cache.CacheUtil;
+import cn.hutool.cache.impl.TimedCache;
 import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.StrUtil;
 import cn.hutool.core.util.XmlUtil;
+import cn.hutool.log.StaticLog;
 import com.gzlh.bus.EventDataManager;
 import com.gzlh.bus.SysConfig;
 import com.gzlh.config.SystemObject;
+import com.gzlh.device.led.utils.LedOptions;
 import com.gzlh.entity.ReqBO;
 import com.gzlh.utils.FileUtils;
+import com.gzlh.utils.ResultJson;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.boot.autoconfigure.web.ServerProperties;
+import org.springframework.http.MediaType;
 import org.springframework.util.StringUtils;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -19,73 +27,88 @@ import org.w3c.dom.Element;
 import javax.annotation.Resource;
 import java.io.IOException;
 import java.net.InetAddress;
+import java.net.URLDecoder;
+import java.net.URLEncoder;
 import java.util.*;
+import java.util.stream.Collectors;
 
 
 @RestController
 @RequestMapping("/camera")
+@Slf4j
 public class CameraController {
-    @Resource
-    private ServerProperties serverProperties;
 
-    @PostMapping("/recv")
-    public void recv(
+    private final TimedCache<String,Integer> XML_CACHE= CacheUtil.newTimedCache(5000);
+
+    @PostMapping(value = "/recv", produces = MediaType.TEXT_XML_VALUE)
+    public String recv(
             @RequestBody String xmlStr
 //            HttpServletRequest request
-    ) throws IOException {
-//        String xmlStr = IOUtils.toString(request.getInputStream(), request.getCharacterEncoding());
-        String path=SystemObject.filePropertiesConfig.getRootPath();
-        String channelCode= SysConfig.channelSetting.getChannelCode();
-        Map<String, Object> StringObjectMap = new HashMap<>();
-        Document document = XmlUtil.parseXml(xmlStr);
-        Element rootElement = XmlUtil.getRootElement(document);
-//        String i_e_type = rootElement.getAttribute("I_E_TYPE");
-        XmlUtil.xmlToMap(xmlStr, StringObjectMap);
-
-        Map<String, Object> ic = BeanUtil.beanToMap(StringObjectMap.get("IC"));
-        Map<String, Object> weight =BeanUtil.beanToMap(StringObjectMap.get("WEIGHT"));
-        Map<String, Object> car = BeanUtil.beanToMap(StringObjectMap.get("CAR"));
-        Map<String, Object> conta =BeanUtil.beanToMap(StringObjectMap.get("CONTA"));
-        Map<String, Object> seal = BeanUtil.beanToMap(StringObjectMap.get("SEAL"));
-
-
-        ReqBO.Box box = new ReqBO.Box();
-        if (!StringUtils.isEmpty((String) conta.get("CONTA_NUM"))) {
-            box.setBoxNum((String) conta.get("CONTA_NUM"));
-        }
-        if (!StringUtils.isEmpty((String) conta.get("CONTA_ID_F"))) {
-            box.setBoxF((String) conta.get("CONTA_ID_F"));
-        }
-        if (!StringUtils.isEmpty((String) conta.get("CONTA_ID_B"))) {
-            box.setBoxB((String) conta.get("CONTA_ID_B"));
-        }
-        if (!StringUtils.isEmpty((String) conta.get("CONTA_MODEL_F"))) {
-            box.setModelF((String) conta.get("CONTA_MODEL_F"));
-        }
-        if (!StringUtils.isEmpty((String) conta.get("CONTA_MODEL_B"))) {
-            box.setModelB((String) conta.get("CONTA_MODEL_B"));
-        }
-
-        Calendar calendar = Calendar.getInstance();
-        String ipAddr =InetAddress.getLocalHost().getHostAddress()+":"+String.valueOf(serverProperties.getPort());
+    )  {
+        try {
+            xmlStr = URLDecoder.decode(xmlStr);
+            if (XML_CACHE.get(xmlStr,false)!=null){
+                return "ok";
+            }
+            XML_CACHE.put(xmlStr,1);
+            StaticLog.info("xml:{}", xmlStr);
+            Map<String, Object> StringObjectMap = new HashMap<>();
+            XmlUtil.xmlToMap(xmlStr, StringObjectMap);
+            Map<String, Object> ic = BeanUtil.beanToMap(StringObjectMap.get("IC"));
+            Map<String, Object> weight = BeanUtil.beanToMap(StringObjectMap.get("WEIGHT"));
+            Map<String, Object> car = BeanUtil.beanToMap(StringObjectMap.get("CAR"));
+            Map<String, Object> conta = BeanUtil.beanToMap(StringObjectMap.get("CONTA"));
+            Map<String, Object> seal = BeanUtil.beanToMap(StringObjectMap.get("SEAL"));
+            ReqBO.Box box = new ReqBO.Box();
 
-        String savePath=path+"/"+channelCode+"/"+ calendar.get(Calendar.YEAR)+(calendar.get(Calendar.MONTH)+1)+calendar.get(Calendar.DAY_OF_MONTH);
-        String fBoxImg = "";
-        String bBoxImg = "";
-        for (Map.Entry<String, Object> entry : conta.entrySet()) {
-            if(entry.getKey().contains("PIC")&& !StringUtils.isEmpty((String) entry.getValue())){
-                String filePath = FileUtils.downLoad((String) entry.getValue(),savePath);
-                filePath=filePath.replace(path,ipAddr+"/files");
-//                String base64 = FileUtils.getBase64FromImg(filePath);
-                if (entry.getKey().contains("CONTA_F")){
-                    fBoxImg=fBoxImg.concat(filePath).concat(",");
-                }else if (entry.getKey().contains("CONTA_B")){
-                    bBoxImg=bBoxImg.concat(filePath).concat(",");
-                }
+            if (!StringUtils.isEmpty((String) conta.get("CONTA_NUM"))) {
+                box.setBoxNum((String) conta.get("CONTA_NUM"));
+            }
+            Object CONTA_ID_F=conta.get("CONTA_ID_F");
+            Object CONTA_ID_B=conta.get("CONTA_ID_B");
+            if ((CONTA_ID_F==null||StrUtil.isEmpty(CONTA_ID_F.toString()))
+                    &&(CONTA_ID_B==null||StrUtil.isEmpty(CONTA_ID_B.toString()))){
+                log.error("-----empty no--------------");
+                return "ok";
+            }
+            if (!StringUtils.isEmpty((String) CONTA_ID_F)) {
+                box.setBoxF(CONTA_ID_F.toString());
             }
+            if (!StringUtils.isEmpty((String) conta.get("CONTA_ID_B"))) {
+                box.setBoxB((String) conta.get("CONTA_ID_B"));
+            }
+            if (!StringUtils.isEmpty((String) conta.get("CONTA_MODEL_F"))) {
+                box.setModelF((String) conta.get("CONTA_MODEL_F"));
+            }
+            if (!StringUtils.isEmpty((String) conta.get("CONTA_MODEL_B"))) {
+                box.setModelB((String) conta.get("CONTA_MODEL_B"));
+            }
+            List<String> fImgList = new ArrayList<>();
+            List<String> bImgList = new ArrayList<>();
+            String bPic = conta.get("CONTA_B_PIC")!=null?conta.get("CONTA_B_PIC").toString():"";
+            String bLPic = conta.get("CONTA_BL_PIC")!=null?conta.get("CONTA_BL_PIC").toString():"";
+            String bRPic = conta.get("CONTA_BR_PIC")!=null?conta.get("CONTA_BR_PIC").toString():"";
+            bImgList.add(bPic);
+            bImgList.add(bLPic);
+            bImgList.add(bRPic);
+            String fPic = conta.get("CONTA_F_PIC")!=null? conta.get("CONTA_F_PIC").toString():"";
+            String fLPic =conta.get("CONTA_FL_PIC")!=null? conta.get("CONTA_FL_PIC").toString():"";
+            String fRPic =conta.get("CONTA_FR_PIC")!=null? conta.get("CONTA_FR_PIC").toString():"";
+
+            fImgList.add(fPic);
+            fImgList.add(fLPic);
+            fImgList.add(fRPic);
+            String fBoxImg = fImgList.stream().filter(StrUtil::isNotEmpty).collect(Collectors.joining(","));
+            box.setBoxFImg(fBoxImg);
+            String bBoxImg = bImgList.stream().filter(StrUtil::isNotEmpty).collect(Collectors.joining(","));
+            box.setBoxBImg(bBoxImg);
+            EventDataManager.cacheData("box", box);
+        }catch (Exception e){
+            log.error("箱号识别处理异常:{}",e.getMessage());
+            LedOptions options = new LedOptions().setLine("03").setColor("04").setShowType("0B");
+            SystemObject.ledFactory.handler(SysConfig.serialSetting.getLed().getBrand())
+                    .sendMsg("箱号识别异常", options.setLine("04").setColor("01"));
         }
-        box.setBoxFImg(fBoxImg);
-        box.setBoxBImg(bBoxImg);
-        EventDataManager.cacheData("box",box);
+        return "ok";
     }
 }

+ 1 - 2
src/main/java/com/gzlh/device/capture/task/HandlerCarImage.java

@@ -47,10 +47,9 @@ public class HandlerCarImage extends Task {
         if (reqBO!=null&&!StringUtils.isEmpty(reqBO.getCarNo())&& !StrUtil.equals(reqBO.getCarNo(),carNo)){
            //中断
             DeviceCache.setInterrupt(true);
-            DeviceCache.setInterrupt(true);
             LedOptions options = new LedOptions().setShowType("00");
             SystemObject.ledFactory.handler(SysConfig.serialSetting.getLed().getBrand())
-                    .sendMsg("跟车中断称重,请退出重进", options.setLine("04").setColor("01"));
+                    .sendMsg("请勿跟车,请退出重进", options.setLine("04").setColor("01"));
             return;
         }
         CommonWeighbridgeHandler.hsCar=true;

+ 1 - 2
src/main/java/com/gzlh/device/led/client/LedClientHandler.java

@@ -31,8 +31,7 @@ public class LedClientHandler extends SimpleChannelInboundHandler<String> {
 
     @Override
     public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {
-        cause.printStackTrace();
-        ctx.close();
+        log.error("led error:{}",cause.getMessage());
     }
 
 }

+ 4 - 2
src/main/java/com/gzlh/device/led/handler/impl/LedHandlerFengLiYuan.java

@@ -30,7 +30,7 @@ public class LedHandlerFengLiYuan implements ILedHandler {
 
     @Override
     public void sendMsg(String content, LedOptions options) {
-       log.info("丰利源发送led消息:{}", content);
+//       log.info("丰利源发送led消息:{}", content);
         String msgHex = FengLiYuanPackUtils.build(content, options);
        // log.info("数据包:{}", msgHex);
         ledNettyConfig.send(msgHex);
@@ -81,7 +81,9 @@ public class LedHandlerFengLiYuan implements ILedHandler {
                     weight = String.format("%.0f", EventDataManager.getCacheData().getWeight()).concat("kg");
                 }
                 ledOptions.setColor("02").setLine("03").setShowType("0B");
-                log.info("send weight:{}",weight);
+                if (StrUtil.equals("",weight)){
+                    log.info("clean weight");
+                }
                 sendMsg(weight, ledOptions);
             }else if (StrUtil.contains(action, "channel")) {
                 ledOptions.setColor("06").setLine("01").setShowType("0B");

+ 7 - 2
src/main/java/com/gzlh/device/plc/client/PlcClientHandler.java

@@ -1,5 +1,6 @@
 package com.gzlh.device.plc.client;
 
+import cn.hutool.core.util.StrUtil;
 import com.gzlh.config.ModuleEnum;
 import com.gzlh.device.plc.handler.PLCHadnler;
 import com.gzlh.utils.DeviceCache;
@@ -29,6 +30,9 @@ public class PlcClientHandler extends SimpleChannelInboundHandler<String> {
 //        修改设备状态信息
         DeviceCache.changeDeviceStatus(ModuleEnum.PLC_MODULE.getModuleZh(),1);
 //        String crc = msg.substring(msg.length() - 4 );
+        if (StrUtil.isEmpty(msg)||StrUtil.length(msg)<8){
+            return;
+        }
         String data = msg.substring(0, msg.length() - 4);
         String str = ModbusUtils.buildRequestPacket(data);
         if (msg.equalsIgnoreCase(str)){
@@ -46,8 +50,9 @@ public class PlcClientHandler extends SimpleChannelInboundHandler<String> {
 
     @Override
     public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {
-        cause.printStackTrace();
-        ctx.close();
+        log.error("plc error:{}",cause.getMessage());
+        //cause.printStackTrace();
+        //ctx.close();
     }
 
 }

+ 6 - 1
src/main/java/com/gzlh/device/plc/event/PLCEvent.java

@@ -6,8 +6,13 @@ package com.gzlh.device.plc.event;
 public interface PLCEvent {
 
     String RAILING_RISE = "RAILING_RISE";
+    /**
+     * 上到位
+     */
+    String UP_POINT_READ = "UP_POINT_READ";
 
-    String CHECK_FAILED = "SUBMIT_TIMEOUT";
+    String SUBMIT_TIMEOUT = "SUBMIT_TIMEOUT";
+    String CHECK_ADMIN_FAILED = "CHECK_ADMIN_FAILED";
 
     String IDLE = "IDLE";
 }

+ 1 - 1
src/main/java/com/gzlh/device/plc/handler/CheckDownTask.java

@@ -30,7 +30,7 @@ public class CheckDownTask extends Task {
         String gatePoint = SysConfig.serialSetting.getPlc().getOut().getGatePoint();
         String command = PLCHadnler.COMMAND_PREFIX + gatePoint + PLCHadnler.COMMAND_OFF;
         String packData = ModbusUtils.buildRequestPacket(command);
-        log.info("plc发送落杆指令:{},{}", packData, tryCount);
+        log.info("plc发送落杆指令:{}", tryCount);
         PlcNettyConfig plcNettyConfig = SpringUtil.getBean(PlcNettyConfig.class);
         plcNettyConfig.send(packData);
     }

+ 1 - 1
src/main/java/com/gzlh/device/plc/handler/CheckUpTask.java

@@ -43,7 +43,7 @@ public class CheckUpTask extends Task {
         String gatePoint = SysConfig.serialSetting.getPlc().getOut().getGatePoint();
         String command = PLCHadnler.COMMAND_PREFIX + gatePoint + PLCHadnler.COMMAND_ON;
         String packData = ModbusUtils.buildRequestPacket(command);
-        log.info("plc发送抬杆:{},{}", packData,tryCount);
+        log.info("plc发送抬杆:{}",tryCount);
         PlcNettyConfig plcNettyConfig = SpringUtil.getBean(PlcNettyConfig.class);
         plcNettyConfig.send(packData);
         tryCount = tryCount + 1;

+ 81 - 23
src/main/java/com/gzlh/device/plc/handler/PLCHadnler.java

@@ -51,45 +51,45 @@ public class PLCHadnler {
             String redPoint = serialSetting.getPlc().getOut().getSignalRedPoint();
             String command = COMMAND_PREFIX + redPoint + COMMAND_ON;
             String packData = ModbusUtils.buildRequestPacket(command);
-          //  log.info("plc发送消息:{}", packData);
+            //  log.info("plc发送消息:{}", packData);
             plcNettyConfig.send(packData);
         } else if (StrUtil.equals(action, PLCAction.RED_LIGHT_OFF)) {
             //灭红灯
             String redPoint = serialSetting.getPlc().getOut().getSignalRedPoint();
             String command = COMMAND_PREFIX + redPoint + COMMAND_OFF;
-           // log.info("plc发送消息:{}", command);
+            // log.info("plc发送消息:{}", command);
             String packData = ModbusUtils.buildRequestPacket(command);
             plcNettyConfig.send(packData);
         } else if (StrUtil.equals(action, PLCAction.GREEN_LIGHT_ON)) {
             //亮绿灯
             String greenPoint = serialSetting.getPlc().getOut().getSignalGreenPoint();
             String command = COMMAND_PREFIX + greenPoint + COMMAND_ON;
-           // log.info("plc发送消息:{}", command);
+            // log.info("plc发送消息:{}", command);
             String packData = ModbusUtils.buildRequestPacket(command);
             plcNettyConfig.send(packData);
         } else if (StrUtil.equals(action, PLCAction.GREEN_LIGHT_OFF)) {
             //灭绿灯
             String greenPoint = serialSetting.getPlc().getOut().getSignalGreenPoint();
             String command = COMMAND_PREFIX + greenPoint + COMMAND_OFF;
-           // log.info("plc发送消息:{}", command);
+            // log.info("plc发送消息:{}", command);
             String packData = ModbusUtils.buildRequestPacket(command);
             plcNettyConfig.send(packData);
         } else if (StrUtil.equals(action, PLCAction.RAILING_RISE_ON)) {
             //抬杆
             String gatePoint = serialSetting.getPlc().getOut().getGatePoint();
             String command = COMMAND_PREFIX + gatePoint + COMMAND_ON;
-           // log.info("plc发送消息:{}", command);
+            // log.info("plc发送消息:{}", command);
             String packData = ModbusUtils.buildRequestPacket(command);
             plcNettyConfig.send(packData);
-            taskService.addTask(new CheckUpTask(RandomUtil.randomNumbers(10),200,1));
+            taskService.addTask(new CheckUpTask(RandomUtil.randomNumbers(10), 200, 1));
         } else if (StrUtil.equals(action, PLCAction.RAILING_RISE_OFF)) {
             //抬杆关闭
             String gatePoint = serialSetting.getPlc().getOut().getGatePoint();
             String command = COMMAND_PREFIX + gatePoint + COMMAND_OFF;
-           // log.info("plc发送消息:{}", command);
+            // log.info("plc发送消息:{}", command);
             String packData = ModbusUtils.buildRequestPacket(command);
             plcNettyConfig.send(packData);
-            taskService.addTask(new CheckDownTask(RandomUtil.randomNumbers(10),100,1));
+            taskService.addTask(new CheckDownTask(RandomUtil.randomNumbers(10), 200, 1));
         }
     }
 
@@ -108,22 +108,77 @@ public class PLCHadnler {
 //         log.info("new plc status:{}", newPlcInfo);
         String newReverse = new StringBuffer(newPlcInfo).reverse().toString();
 //          log.info("new plc reverse status:{}", newReverse);
-        doHandler(oldPlcInfo, newReverse);
-    }
-
-    private void doHandler(String oldPlcInfo, String newReverse) {
         if (StrUtil.isEmpty(oldPlcInfo)) {
             DeviceCache.setPlcStatus(newReverse);
             return;
         }
+        if (SysConfig.channelSetting.getChannelType() == 0) {
+            //货车通道
+            doHandler(oldPlcInfo, newReverse);
+        }else {
+            //行政通道
+            doManager(oldPlcInfo,newReverse);
+        }
+    }
+
+    /**
+     * 行政通道
+     * @param oldPlcInfo
+     * @param newReverse
+     */
+    private void doManager(String oldPlcInfo, String newReverse) {
+        if (StrUtil.equals(oldPlcInfo,newReverse)){
+            return;
+        }
+        log.info("newReverse:{}", newReverse);
+        DeviceCache.setPlcStatus(newReverse);
+        SerialSetting.PlcDTO.StatusDTO status = SysConfig.serialSetting.getPlc().getStatus();
+        int len = newReverse.length();
+        EventBus eventBus = SpringUtil.getBean(EventBus.class);
+        for (int i = 0; i < len; i++) {
+            //第几位
+            String newPointStatus = newReverse.charAt(i) + "";
+            String oldPointStatus = oldPlcInfo.charAt(i) + "";
+            String judgePoint = i + "";
+            String radarPoint = status.getRadarPoint();
+            String radarPointStatus=newReverse.charAt(Integer.parseInt(radarPoint))+"";
+            String upPoint = status.getUpPoint();
+            String upPointStatus=newReverse.charAt(Integer.parseInt(upPoint))+"";
+            String downPoint = status.getDownPoint();//默认是1
+            String downPointStatus=newReverse.charAt(Integer.parseInt(downPoint))+"";
+            if (StrUtil.equals(newPointStatus,oldPointStatus)){
+                //看看哪个位变化了
+                //上到位。。。
+                if (upPoint.equals(judgePoint)) {
+                    //上到位触发-->发送继电器断开---->防止不落杆
+                    if (upPointStatus.equals("1")) {
+                        eventBus.startEvent(ModuleEnum.PLC_MODULE.getModuleEn() + "." + PLCEvent.UP_POINT_READ);
+                    }
+                }
+                if (downPoint.equals(judgePoint)) {
+                    //下到位触发//初始化
+                    if (downPointStatus.equals("1")) {
+                        eventBus.startEvent(ModuleEnum.PLC_MODULE.getModuleEn() + "." + PLCEvent.IDLE);
+                    }
+                }
+                if (radarPoint.equals(judgePoint)) {
+                    //雷达从1--->0 初始化
+                    if (radarPointStatus.equals("0")) {
+                        eventBus.startEvent(ModuleEnum.PLC_MODULE.getModuleEn() + "." + PLCEvent.IDLE);
+                    }
+                }
+            }
+        }
+    }
+
+    private void doHandler(String oldPlcInfo, String newReverse) {
         if (!StrUtil.equals(newReverse, oldPlcInfo)) {
             DeviceCache.setPlcStatus(newReverse);
-
+            log.info("newReverse:{}", newReverse);
             SerialSetting.PlcDTO.StatusDTO status = SysConfig.serialSetting.getPlc().getStatus();
-            SerialSetting.LedDTO ledDTO = SysConfig.serialSetting.getLed();
             int len = newReverse.length();
+            SerialSetting.LedDTO ledDTO = SysConfig.serialSetting.getLed();
             EventBus eventBus = SpringUtil.getBean(EventBus.class);
-
             for (int i = 0; i < len; i++) {
                 //第几位
                 String newPointStatus = newReverse.charAt(i) + "";
@@ -133,9 +188,18 @@ public class PLCHadnler {
                 String fRedPoint = status.getFRedPoint();
                 String bRedPoint = status.getBRedPoint();
                 String upPoint = status.getUpPoint();
+
                 String downPoint = status.getDownPoint();//默认是1
                 //状态变化
                 if (!newPointStatus.equals(oldPointStatus)) {
+                    //上到位。抬杆结束。。
+                    if (upPoint.equals(judgePoint)) {
+                        //上到位触发-->发送继电器断开---->防止不落杆
+                        String upPointStatus=newReverse.charAt(Integer.parseInt(upPoint))+"";
+                        if (upPointStatus.equals("1")) {
+                            eventBus.startEvent(ModuleEnum.PLC_MODULE.getModuleEn() + "." + PLCEvent.UP_POINT_READ);
+                        }
+                    }
 //                    log.info("newReverse:{}", newReverse);
                     //看下是哪个状态发生变化
                     if (radarPoint.equals(judgePoint)) {
@@ -155,12 +219,6 @@ public class PLCHadnler {
                         //前红外发生变化 1--->0时,判断是否开始读地磅数;0--->1时不管
                         if (newPointStatus.equals("0")) {
                             String radarPointStatus = newReverse.charAt(Integer.parseInt(radarPoint)) + "";
-                            //判断是否跟车
-                            // if (radarPointStatus.equals("1")) {
-                            //   log.info("init----------");
-                            //  eventBus.startEvent(ModuleEnum.PLC_MODULE.getModuleEn() + "." + PLCEvent.IDLE);
-                            // break;
-                            // }
                             //开始称重逻辑:存在车牌,并且雷达状态是0
                             if (CommonWeighbridgeHandler.hsCar
                                     && radarPointStatus.equals("0")) {
@@ -192,8 +250,8 @@ public class PLCHadnler {
                     } else if (downPoint.equals(judgePoint)) {
                         //下到位触发
                         String downStatus = newReverse.charAt(Integer.parseInt(downPoint)) + "";
-                        if (downStatus.equals("1") && !CommonWeighbridgeHandler.hsCar) {//洛干
-                             eventBus.startEvent(ModuleEnum.PLC_MODULE.getModuleEn() + "." + PLCEvent.IDLE);
+                        if (downStatus.equals("1")) {//洛干
+                            eventBus.startEvent(ModuleEnum.PLC_MODULE.getModuleEn() + "." + PLCEvent.IDLE);
                         }
                     }
                     //变化时间

+ 9 - 6
src/main/java/com/gzlh/device/weighbridge/client/WeighbridgeClientHandler.java

@@ -23,10 +23,14 @@ public class WeighbridgeClientHandler extends SimpleChannelInboundHandler<String
 
     @Override
     protected void channelRead0(ChannelHandlerContext ctx, String msg) throws Exception {
-        SerialSetting.Weighbridge weighbridge = SysConfig.serialSetting.getWeighbridge();
-        DeviceCache.changeDeviceStatus(ModuleEnum.WEIGHBRIDGE_MODULE.getModuleZh(),1);
-        WeighbridgeFactory weighbridgeFactory = SpringUtil.getBean(WeighbridgeFactory.class);
-        weighbridgeFactory.handler(weighbridge.getBrand()).handlerMsg(msg);
+        try {
+            SerialSetting.Weighbridge weighbridge = SysConfig.serialSetting.getWeighbridge();
+            DeviceCache.changeDeviceStatus(ModuleEnum.WEIGHBRIDGE_MODULE.getModuleZh(),1);
+            WeighbridgeFactory weighbridgeFactory = SpringUtil.getBean(WeighbridgeFactory.class);
+            weighbridgeFactory.handler(weighbridge.getBrand()).handlerMsg(msg);
+        }catch (Exception e){
+            e.printStackTrace();
+        }
     }
 
     @Override
@@ -38,8 +42,7 @@ public class WeighbridgeClientHandler extends SimpleChannelInboundHandler<String
 
     @Override
     public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {
-        cause.printStackTrace();
-        ctx.close();
+        log.error("weight error:{}",cause.getMessage());
     }
 
 

+ 5 - 3
src/main/java/com/gzlh/device/weighbridge/handler/impl/CommonWeighbridgeHandler.java

@@ -92,6 +92,9 @@ public class CommonWeighbridgeHandler {
 
         private int handlerWeight() {
             StaticLog.info("w:{}", JSONUtil.toJsonStr(WEIGHT_CACHE));
+            if (WEIGHT_CACHE.isEmpty()){
+                return 0;
+            }
             Collections.sort(WEIGHT_CACHE);
             int size=WEIGHT_CACHE.size();
             int index=( size*3)/4;
@@ -101,9 +104,8 @@ public class CommonWeighbridgeHandler {
 
     public static void main(String[] args) {
 //        Integer[]array=new Integer[]{50100,50100,50100,50100,50100,50100,50100,50100,50100,50100,50100,50100,50080,50080,50080,50080,50080,50080,50080,50100,50100,50100,50100,50100,50100,50100,50100,50100,50100,50100,50100,50100,50100,50100,50100,50100,50100,50100,50100,50100,50100,50100,50100,50100,50100,50100,50100,50100,50100,50100,50100,50100,50100,50100,50120,50100,50100,50100,50100,50100,50100,50100,50100,50100,50100,50100,50120,50120,50120,50120,50120,50120,50120,50120,50120,50120,50120,50120,50120,50120,50120,50120,50120,50120,50120};
-        Integer[]array=new Integer[]{17340,17340,17340,17360,17380,17380,17380,17380,17360,17360,17360,17360,17360,17360,17360,17360,17360,17360,17360,17360,17360,17360,17360,17360,17360,17360,17360,17360,17360,17360,17360,17360,17360,17360,17360,17360,17360,17360,17360,17360,17360,17360,17360,17360,17360,17360,17360,17360,17360,17360,17360,17360,17360,17360,17360,17360,17360,17360,17360,17360,17360,17360,17360,17360,17360,17360,17360,17360,17360,17360,17360,17360,17360,17360,17360,17360,17360,17360,17360,17360,17360,17360,17360,17360,17360};
-        ;
-       List<Integer>list= Stream.of(array).collect(Collectors.toList());
+        Integer[]array=new Integer[]        {2020,2020,2020,2020,2020,2020,2020,2020,2020,2020,2020,2020,2020,2020,2020,2020,2020,2020,2020,2020,2020,2020,2020,2020,2020,2020,2020,2020,2020,2020,2020,2020,2020,2020,2020,2020,2020,2020,2020,2020,2020,2020,2020,2020,2020,2020,2020,2020,2020,2020,2020,2020,2020,2020,2020,2020,2020,2020,2020,2020,2020,2020,2020,2020,2020,2020,2020,2020,2020,2020,2020,2020,2020,2020,2020,2020,2020,2020,2020,2020,2020,2020,2020,2020,2020,2020,2020,2020,2020,2020};
+        List<Integer>list= Stream.of(array).collect(Collectors.toList());
         Collections.sort(list);
         int size=list.size();
         int index=( size*3)/4;

+ 3 - 0
src/main/java/com/gzlh/device/weighbridge/handler/impl/WeighbridgeHandlerKeLi.java

@@ -36,6 +36,9 @@ public class WeighbridgeHandlerKeLi implements IWeighbridgeHandler {
         msg = StrUtil.removeAll(msg, "\r");
         msg = msg.replaceFirst("^0*", "");
 //        log.info(WeighbridgeBrandType.NINGBO_KELI.getBrand() + "地磅:{}", msg);
+        if (StrUtil.length(msg)<8){
+            return;
+        }
         msg=msg.substring(3);
         Integer weight = convertMsgToWeight(msg);
 //        log.info(WeighbridgeBrandType.NINGBO_KELI.getBrand() + "地磅 weight:{}", weight);

+ 19 - 12
src/main/java/com/gzlh/entity/ReqBO.java

@@ -1,5 +1,6 @@
 package com.gzlh.entity;
 
+import cn.hutool.json.JSONUtil;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 import lombok.experimental.Accessors;
@@ -14,23 +15,23 @@ public class ReqBO implements Serializable {
     /**
      * 方向 0=未知,1=进,2=退,3=离开
      */
-    private int direction;
+    private int direction=0;
     /**
      * 通道号
      */
-    private String channelCode;
+    private String channelCode="";;
     /**
      * 电子车牌 ERI
      */
-    private String eri;
+    private String eri="";;
     /**
      * 车牌
      */
-    private String carNo;
+    private String carNo="";;
     /**
      * 车牌图片base64
      */
-    private String carImg;
+    private String carImg="";;
     /**
      * 称重重量kg
      */
@@ -51,32 +52,38 @@ public class ReqBO implements Serializable {
         /**
          * 前箱号
          */
-        private String boxF;
+        private String boxF="";
         /**
          * 后箱号
          */
-        private String boxB;
+        private String boxB="";
         /**
          * 后箱号图片多张,号分割
          */
-        private String boxBImg;
+        private String boxBImg="";
         /**
          * 后箱号图片 多张,号分割
          */
-        private String boxFImg;
+        private String boxFImg="";
         /**
          * 前箱型
          */
-        private String modelF;
+        private String modelF="";
         /**
          * 后箱型
          */
-        private String modelB;
+        private String modelB="";
         /**
          * 箱数量
          */
-        private String boxNum;
+        private String boxNum="";
     }
 
+    public static void main(String[] args) {
+        ReqBO reqBO=new ReqBO();
+        reqBO.setBox(new Box());
+        String str=JSONUtil.toJsonStr(reqBO);
+        System.out.println(str);
+    }
 
 }

+ 8 - 2
src/main/java/com/gzlh/startup/StartupRunner.java

@@ -1,9 +1,11 @@
 package com.gzlh.startup;
 
 import cn.hutool.core.thread.ThreadUtil;
+import cn.hutool.core.util.RandomUtil;
 import cn.hutool.extra.spring.SpringUtil;
 import com.gzlh.background.client.BackgroundClientNetty;
 import com.gzlh.bus.SysConfig;
+import com.gzlh.bus.task.CheckInitTask;
 import com.gzlh.config.dto.CaputreSetting;
 import com.gzlh.config.dto.SerialSetting;
 import com.gzlh.config.ModuleEnum;
@@ -12,6 +14,7 @@ import com.gzlh.bus.EventBus;
 import com.gzlh.config.hksdk.HCNetSDK;
 import com.gzlh.config.hksdk.HkUtils;
 import com.gzlh.config.hksdk.bo.HKCacheManager;
+import com.gzlh.config.task.TaskService;
 import com.gzlh.device.electron.client.ElectronNettyConfig;
 import com.gzlh.device.led.client.LedNettyConfig;
 import com.gzlh.device.plc.client.PlcNettyConfig;
@@ -37,6 +40,8 @@ public class StartupRunner implements CommandLineRunner {
     private PlcNettyConfig plcNettyConfig;
     @Resource
     private ElectronNettyConfig electronNettyConfig;
+    @Resource
+    private TaskService taskService;
 
 
 
@@ -78,8 +83,9 @@ public class StartupRunner implements CommandLineRunner {
             }else {
                 log.info("登录海康抓拍设备失败:{},{}",hcNetSDK.NET_DVR_GetLastError(),userId);
             }
-            EventBus eventBus = SpringUtil.getBean(EventBus.class);
-            eventBus.startEvent(ModuleEnum.PLC_MODULE.getModuleEn() + "." + PLCEvent.IDLE);
+          //  EventBus eventBus = SpringUtil.getBean(EventBus.class);
+           // eventBus.startEvent(ModuleEnum.PLC_MODULE.getModuleEn() + "." + PLCEvent.IDLE);
+            taskService.addTask(new CheckInitTask(RandomUtil.randomNumbers(16),10000,0));
         }
     }