Forráskód Böngészése

补采抬杆问题修复

qzyReal 1 éve
szülő
commit
18d18571ce

+ 19 - 8
config.xml

@@ -2,16 +2,16 @@
 
 <config>
     <managerSetting>
-        <enable>false</enable>
-        <host>10.26.1.25</host>
+        <enable>true</enable>
+        <host>192.168.3.127</host>
         <beatPort>8050</beatPort>
-        <serverUrl>http://10.26.1.25:9191</serverUrl>
+        <serverUrl>http://127.0.0.1:9191</serverUrl>
     </managerSetting>
     <!--通道属性配置-->
     <channelSetting>
         <!--本机IP-->
         <ip>10.5.136.55</ip>
-        <channelCode>A1002</channelCode>
+        <channelCode>DE2</channelCode>
         <channelName>货运进道2</channelName>
         <!--0 货运通道 1 行政通道-->
         <channelType>0</channelType>
@@ -22,16 +22,16 @@
     <sysConfig>
         <caputreSetting>
             <enable>false</enable>
-            <host>10.26.6.51</host>
+            <host>192.168.1.11</host>
             <port>8000</port>
             <username>admin</username>
-            <pwd>ABCabc123</pwd>
+            <pwd>ap123456</pwd>
             <brand>5000</brand>
         </caputreSetting>
         <serialSetting>
             <host>10.5.136.55</host>
             <weighbridge>
-                <enable>true</enable>
+                <enable>false</enable>
                 <port>4003</port>
                 <brand>3000</brand>
                 <minKg>1000</minKg>
@@ -47,7 +47,7 @@
                 <brand>2000</brand>
             </electron>
             <plc>
-                <enable>true</enable>
+                <enable>false</enable>
                 <port>4001</port>
                 <!--输出-->
                 <out>
@@ -162,6 +162,17 @@
                 <action>LED.LED_SHOW_CONTENT(04|通道就绪,请通行)</action>
             </actionList>
         </event>
+        <!--通道关闭-->
+        <event>
+            <name>PLC.SHUTDOWN</name>
+            <actionList>
+                <action>PLC.GREEN_LIGHT_OFF</action>
+                <action>CENTER.TIMER_SLEEP(100)</action>
+                <action>PLC.RED_LIGHT_ON</action>
+                <action>LED.LED_SHOW_CONTENT(04|通道停止使用|01)</action>
+            </actionList>
+        </event>
+
         <event>
             <name>WEIGHBRIDGE.TIMEOUT</name>
             <actionList>

+ 1 - 1
pom.xml

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

+ 36 - 10
src/main/java/com/gzlh/background/client/BackgroundClientHandler.java

@@ -1,5 +1,9 @@
 package com.gzlh.background.client;
 
+import cn.hutool.cache.CacheUtil;
+import cn.hutool.cache.impl.TimedCache;
+import cn.hutool.core.util.StrUtil;
+import cn.hutool.json.JSONObject;
 import cn.hutool.json.JSONUtil;
 import com.gzlh.bus.EventBus;
 import com.gzlh.bus.SysConfig;
@@ -11,6 +15,7 @@ import com.gzlh.config.hksdk.HkUtils;
 import com.gzlh.config.hksdk.bo.HKCacheManager;
 import com.gzlh.device.capture.brand.CaptureBrandType;
 import com.gzlh.device.led.utils.LedOptions;
+import com.gzlh.device.plc.event.PLCEvent;
 import com.gzlh.entity.CommandBO;
 import com.gzlh.utils.DeviceCache;
 import io.netty.channel.ChannelHandler;
@@ -47,16 +52,37 @@ public class BackgroundClientHandler extends SimpleChannelInboundHandler<String>
 //        System.out.println("Client received: " + msg);
         if (!"back message".equalsIgnoreCase(msg)){
             log.info("后端 客户端收到的信息:{}",msg);
-            CommandBO commandBO = JSONUtil.toBean(msg, CommandBO.class);
-//            log.info(commandBO.toString());
-            CommandBO.Command command = commandBO.getCommand();
-            if (!StringUtils.isEmpty(command.getExtra())){
-                LedOptions options = new LedOptions().setLine("04").setColor("03").setShowType("00");
-                SystemObject.ledFactory.handler(SysConfig.serialSetting.getLed().getBrand())
-                            .sendMsg(command.getExtra(),options);
-            }else{
-                eventBus.startEvent(command.getModule()+"."+command.getCommand());
+           handlerMsg(msg,ctx);
+        }
+    }
+    TimedCache<String, String> CONTENT_CACHE = CacheUtil.newTimedCache(2000);
+    void handlerMsg(String str,ChannelHandlerContext ctx){
+        String channelId = ctx.channel().id().asShortText();
+        if (!StrUtil.endWith(str, "}") && StrUtil.startWith(str, "{")) {
+            CONTENT_CACHE.put(channelId, str);
+            return;
+        } else if (!StrUtil.endWith(str, "}") && !StrUtil.startWith(str, "{")) {
+            String content = CONTENT_CACHE.get(channelId);
+            content += str;
+            CONTENT_CACHE.put(channelId, content);
+            return;
+        } else if (StrUtil.endWith(str, "}")) {
+            String content = CONTENT_CACHE.get(channelId);
+            if (StrUtil.isEmpty(content)) {
+                content = "";
             }
+            str = content + str;
+            CONTENT_CACHE.remove(channelId);
+        }
+        CommandBO commandBO = JSONUtil.toBean(str, CommandBO.class);
+        CommandBO.Command command = commandBO.getCommand();
+        if (!StringUtils.isEmpty(command.getExtra())){
+            LedOptions options = new LedOptions().setLine("04").setColor("03").setShowType("00");
+            SystemObject.ledFactory.handler(SysConfig.serialSetting.getLed().getBrand())
+                    .sendMsg(command.getExtra(),options);
+        }
+        if (StrUtil.isNotEmpty(command.getCommand())&&StrUtil.isNotEmpty(command.getModule())){
+            eventBus.startEvent(command.getModule()+"."+command.getCommand());
         }
     }
 
@@ -128,7 +154,7 @@ public class BackgroundClientHandler extends SimpleChannelInboundHandler<String>
     @Override
     public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {
         cause.printStackTrace();
-        ctx.close();
+       // ctx.close();
     }
 
     @Override

+ 31 - 0
src/main/java/com/gzlh/bus/ChannelCacheManager.java

@@ -0,0 +1,31 @@
+package com.gzlh.bus;
+
+import cn.hutool.cache.CacheUtil;
+import cn.hutool.cache.impl.TimedCache;
+
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+public class ChannelCacheManager {
+    private final static TimedCache<String,Integer>CACHE= CacheUtil.newTimedCache(8000);
+    private final static Map<String, Integer> STATE_MAP = new ConcurrentHashMap<>();
+    public static void addCache(String cache){
+        CACHE.put(cache,1);
+    }
+    public static boolean checkExit(String cache){
+        return CACHE.get(cache,false)!=null;
+    }
+    public static void setStateMap(String code,Integer state){
+        STATE_MAP.put(code,state);
+    }
+    public static Integer getStateMap(String code){
+       return STATE_MAP.get(code);
+    }
+    public static boolean stateEnable(String code){
+        Integer state=STATE_MAP.get(code);
+       return state!=null&&state==0;
+    }
+
+
+
+}

+ 1 - 66
src/main/java/com/gzlh/bus/EventThread.java

@@ -128,74 +128,9 @@ 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)) {
-            return;
-        }
-        log.info("Req:{}", bodyParams);
-        EventBus eventBus = SpringUtil.getBean(EventBus.class);
-        HttpResponse response = request(api, bodyParams);
-        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);
-            CommandBO commandBO = JSONUtil.toBean(data, CommandBO.class);
-            LedOptions options = new LedOptions().setLine("04").setShowType("00");
-            if (jsonObject.getInt("code") == 200) {
-                log.info("抬杆放行============");
-                eventBus.startEvent(ModuleEnum.PLC_MODULE.getModuleEn() + "." + PLCEvent.RAILING_RISE);
-                options.setColor("02");
-                if (ModuleEnum.LED_MODULE.getModuleEn().equalsIgnoreCase(commandBO.getCommand().getModule())) {
-                    SystemObject.ledFactory.handler(SysConfig.serialSetting.getLed().getBrand())
-                            .sendMsg(commandBO.getCommand().getExtra(), options);
-                }
-            } else {
-                options.setColor("01");
-                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());
-                }
-                if (SysConfig.channelSetting.getChannelType() == 1) {
-                    eventBus.startEvent(ModuleEnum.PLC_MODULE.getModuleEn() + "." + PLCEvent.CHECK_ADMIN_FAILED);
-                }
-            }
-        } else {
-            eventBus.startEvent(ModuleEnum.PLC_MODULE.getModuleEn() + "." + PLCEvent.SUBMIT_TIMEOUT);
-        }
-
-//        重置记录的设备触发时间
-        DeviceCache.resetTimeMap();
+        ThreadUtil.execute(new SubmitThread());
     }
 
-    public HttpResponse request(String url, String json) {
-
-        HttpResponse res = null;
-//        url = "http://192.168.1.8:9191/open/submit";
-        long startTime = System.currentTimeMillis();
-//        System.out.println(startTime);
-//        数据加密
-        String body = WordHandlerUtils.AESEncrypt(json);
-        try {
-//            System.out.printf("请求地址:%s, 请求体:%s ", url,body);
-
-            res = HttpRequest.post(url)
-                    .header("Content-Type", "application/json;character=utf-8;")
-                    .body(body)
-                    .execute();
-//            String bodyResult = res.body();
-//            System.out.printf("ReqStatus:%s,返回结果:{%s} ",res.getStatus(), bodyResult);
-
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-        return res;
-    }
 
 
     @Override

+ 72 - 0
src/main/java/com/gzlh/bus/SubmitThread.java

@@ -0,0 +1,72 @@
+package com.gzlh.bus;
+
+import cn.hutool.core.util.StrUtil;
+import cn.hutool.extra.spring.SpringUtil;
+import cn.hutool.http.HttpResponse;
+import cn.hutool.http.HttpUtil;
+import cn.hutool.json.JSONObject;
+import cn.hutool.json.JSONUtil;
+import com.gzlh.config.ModuleEnum;
+import com.gzlh.config.SystemObject;
+import com.gzlh.device.led.utils.LedOptions;
+import com.gzlh.device.plc.event.PLCEvent;
+import com.gzlh.entity.CommandBO;
+import com.gzlh.entity.ReqBO;
+import com.gzlh.utils.DeviceCache;
+import com.gzlh.utils.WordHandlerUtils;
+import lombok.extern.slf4j.Slf4j;
+
+@Slf4j
+public class SubmitThread implements Runnable{
+    @Override
+    public void run() {
+        String api = SysConfig.managerSetting.getServerUrl() + "/open/submit";
+        ReqBO reqBO=EventDataManager.getCacheData();
+        String bodyParams = JSONUtil.toJsonStr(reqBO);
+        if (StrUtil.isEmpty(bodyParams)
+                || ChannelCacheManager.checkExit(reqBO.getCarNo())
+        ||!ChannelCacheManager.stateEnable(SysConfig.channelSetting.getChannelCode())) {
+            return;
+        }
+        ChannelCacheManager.addCache(reqBO.getCarNo());
+        log.info("Req:{}", bodyParams);
+        EventBus eventBus = SpringUtil.getBean(EventBus.class);
+        try (HttpResponse response = HttpUtil.createPost(api).body(WordHandlerUtils.AESEncrypt(bodyParams)).execute()) {
+            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);
+                CommandBO commandBO = JSONUtil.toBean(data, CommandBO.class);
+                LedOptions options = new LedOptions().setLine("04").setShowType("00");
+                if (jsonObject.getInt("code") == 200) {
+                    log.info("抬杆放行============");
+                    eventBus.startEvent(ModuleEnum.PLC_MODULE.getModuleEn() + "." + PLCEvent.RAILING_RISE);
+                    options.setColor("02");
+                    if (ModuleEnum.LED_MODULE.getModuleEn().equalsIgnoreCase(commandBO.getCommand().getModule())) {
+                        SystemObject.ledFactory.handler(SysConfig.serialSetting.getLed().getBrand())
+                                .sendMsg(commandBO.getCommand().getExtra(), options);
+                    }
+                } else {
+                    options.setColor("01");
+                    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());
+                    }
+                    if (SysConfig.channelSetting.getChannelType() == 1) {
+                        eventBus.startEvent(ModuleEnum.PLC_MODULE.getModuleEn() + "." + PLCEvent.CHECK_ADMIN_FAILED);
+                    }
+                }
+            } else {
+                eventBus.startEvent(ModuleEnum.PLC_MODULE.getModuleEn() + "." + PLCEvent.SUBMIT_TIMEOUT);
+            }
+        }
+
+//        重置记录的设备触发时间
+        DeviceCache.resetTimeMap();
+    }
+}

+ 9 - 3
src/main/java/com/gzlh/bus/task/CheckInitTask.java

@@ -5,8 +5,10 @@ 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.ChannelCacheManager;
 import com.gzlh.bus.EventBus;
 import com.gzlh.bus.EventDataManager;
+import com.gzlh.bus.SysConfig;
 import com.gzlh.config.ModuleEnum;
 import com.gzlh.config.task.Task;
 import com.gzlh.config.task.TaskService;
@@ -36,10 +38,14 @@ public class CheckInitTask extends Task {
     @Override
     public void run() {
     TaskService taskService=SpringUtil.getBean(TaskService.class);
-         EventBus eventBus=SpringUtil.getBean(EventBus.class);
+    if (!ChannelCacheManager.stateEnable(SysConfig.channelSetting.getChannelCode())){
+        taskService.addTask(new CheckInitTask(RandomUtil.randomNumbers(16),30000,0));
+        return;
+    }
+     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){
+          if (new Date().getTime()/1000-reqBO.getGatherTime().getTime()/1000>90){
               log.info("----------触发初始化---------------");
               eventBus.startEvent(ModuleEnum.PLC_MODULE.getModuleEn() + "." + PLCEvent.IDLE);
               taskService.addTask(new CheckInitTask(RandomUtil.randomNumbers(16),15000,0));
@@ -48,7 +54,7 @@ public class CheckInitTask extends Task {
           taskService.addTask(new CheckInitTask(RandomUtil.randomNumbers(16),2000,0));
           return;
       }
-      if (checkCount>=5){
+      if (checkCount>=10){
           log.info("----------触发初始化---------------");
           eventBus.startEvent(ModuleEnum.PLC_MODULE.getModuleEn() + "." + PLCEvent.IDLE);
           taskService.addTask(new CheckInitTask(RandomUtil.randomNumbers(16),15000,0));

+ 55 - 0
src/main/java/com/gzlh/bus/task/CheckState.java

@@ -0,0 +1,55 @@
+package com.gzlh.bus.task;
+
+import cn.hutool.extra.spring.SpringUtil;
+import cn.hutool.http.HttpUtil;
+import cn.hutool.json.JSONObject;
+import cn.hutool.json.JSONUtil;
+import com.gzlh.bus.ChannelCacheManager;
+import com.gzlh.bus.EventBus;
+import com.gzlh.bus.SysConfig;
+import com.gzlh.config.ModuleEnum;
+import com.gzlh.config.SystemObject;
+import com.gzlh.device.led.utils.LedOptions;
+import com.gzlh.device.plc.event.PLCEvent;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+@Slf4j
+@Component
+public class CheckState {
+
+
+    @Scheduled(cron = "0,25,40,55 * * * * ?")
+    public void check() {
+        String channelCode = SysConfig.channelSetting.getChannelCode();
+        String api = SysConfig.managerSetting.getServerUrl() + "/open/channel/state?channelCode=" + channelCode;
+        try {
+            String resp = HttpUtil.get(api);
+            JSONObject result = JSONUtil.parseObj(resp);
+            Integer state = result.getInt("state");
+            Integer cacheState = ChannelCacheManager.getStateMap(channelCode);
+            ChannelCacheManager.setStateMap(channelCode, state);
+            if (!state.equals(cacheState)) {
+                handlerChannel(state);
+            }
+            log.info("enable:{}",ChannelCacheManager.stateEnable(channelCode));
+        } catch (Exception e) {
+            log.error("resp:{}", e.getMessage());
+        }
+
+    }
+
+    private void handlerChannel(Integer state) {
+        if (state == 0) {
+            EventBus eventBus = SpringUtil.getBean(EventBus.class);
+            eventBus.startEvent(ModuleEnum.PLC_MODULE.getModuleEn() + "." + PLCEvent.IDLE);
+        } else {
+            EventBus eventBus = SpringUtil.getBean(EventBus.class);
+            eventBus.startEvent(ModuleEnum.PLC_MODULE.getModuleEn() + "." + PLCEvent.SHUTDOWN);
+        }
+    }
+}

+ 0 - 5
src/main/java/com/gzlh/bus/task/CountManager.java

@@ -1,5 +0,0 @@
-package com.gzlh.bus.task;
-
-public class CountManager {
-
-}

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

@@ -7,6 +7,7 @@ import cn.hutool.core.io.FileUtil;
 import cn.hutool.core.util.RandomUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.extra.spring.SpringUtil;
+import com.gzlh.bus.ChannelCacheManager;
 import com.gzlh.bus.SysConfig;
 import com.gzlh.config.SystemObject;
 import com.gzlh.config.dto.ChannelSetting;
@@ -36,25 +37,22 @@ import java.util.Date;
 @Service
 @Slf4j
 public class AlarmParseService {
+
     @Resource
-    @Lazy
-    private HkUtils hkUtils;
-    @Resource
-    @Lazy
-    private HCNetSDK hcNetSDK;
-    @Resource
-    @Lazy
-    private FilePropertiesConfig filePropertiesConfig;
- @Resource
     TaskService taskService;
 
+    public static final TimedCache<String, Integer> CACHE_MAP = CacheUtil.newTimedCache(2000);
+
 
-   public static final TimedCache<String, Integer> CACHE_MAP = CacheUtil.newTimedCache(5000);
 
     public void alarmDataHandle(int lCommand, HCNetSDK.NET_DVR_ALARMER pAlarmer, Pointer pAlarmInfo, int dwBufLen, Pointer pUser) {
         //lCommand是传的报警类型
         String separator=File.separator;
         if (lCommand == HCNetSDK.COMM_ITS_PLATE_RESULT) {//交通抓拍结果(新报警信息)
+            if (!ChannelCacheManager.stateEnable(SysConfig.channelSetting.getChannelCode())){
+                log.error("通道已停用=======");
+                return;
+            }
             HCNetSDK.NET_ITS_PLATE_RESULT strItsPlateResult = new HCNetSDK.NET_ITS_PLATE_RESULT();
             strItsPlateResult.write();
             Pointer pItsPlateInfo = strItsPlateResult.getPointer();
@@ -63,22 +61,28 @@ public class AlarmParseService {
             String sLicense;
             try {
                 sLicense = new String(strItsPlateResult.struPlateInfo.sLicense, "GBK");
+                if (StrUtil.isEmpty(sLicense)){
+                    log.error("上传车牌为空--------------------");
+                    return;
+                }
+                if (CACHE_MAP.get(sLicense)!=null){
+                    log.error("重复识别--------------------:{}",sLicense);
+                    return;
+                }
+                CACHE_MAP.put(sLicense,1);
             } catch (UnsupportedEncodingException e) {
                 log.error("上传车牌为空:{}", e.getMessage());
                 return;
             }
 //            int color = strItsPlateResult.struPlateInfo.byColor;
 //            byte VehicleType = strItsPlateResult.byVehicleType;  //0-其他车辆,1-小型车,2-大型车,3- 行人触发,4- 二轮车触发,5- 三轮车触发,6- 机动车触发
-//            log.info("车牌号:{} ;车辆类型:{}", sLicense, VehicleType);
+            log.info("车牌号:{}", sLicense);
             sLicense = StrUtil.trim(StrUtil.sub(sLicense, 1, -1));
             if (StrUtil.isEmpty(sLicense)||StrUtil.equals("车牌",sLicense)){
-                return;
-            }
-            if (CACHE_MAP.get(sLicense) != null) {
-//                log.error("重复上传:{}", sLicense);
-                return;
+               // return;
             }
 
+
            // hkUtils.handlerUp(hcNetSDK, pAlarmer.lUserID);
             Date nowTime=new Date();
             /**
@@ -116,7 +120,7 @@ public class AlarmParseService {
                     }
                 }
             }
-            CACHE_MAP.put(sLicense, 1);
+
         }
     }
 }

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

@@ -1,5 +1,7 @@
 package com.gzlh.config.hksdk;
 
+import cn.hutool.cache.CacheUtil;
+import cn.hutool.cache.impl.TimedCache;
 import com.sun.jna.Pointer;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Component;
@@ -14,7 +16,9 @@ public class MessageCallBack implements HCNetSDK.FMSGCallBack_V31 {
 
     @Override
     public boolean invoke(int lCommand, HCNetSDK.NET_DVR_ALARMER pAlarmer, Pointer pAlarmInfo, int dwBufLen, Pointer pUser) {
-        alarmParseService.alarmDataHandle(lCommand,pAlarmer,pAlarmInfo,dwBufLen,pUser);
+        synchronized (this){
+            alarmParseService.alarmDataHandle(lCommand, pAlarmer, pAlarmInfo, dwBufLen, pUser);
+        }
         return false;
     }
 }

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

@@ -38,7 +38,7 @@ import java.util.stream.Collectors;
 @Slf4j
 public class CameraController {
 
-    private final TimedCache<String,Integer> XML_CACHE= CacheUtil.newTimedCache(5000);
+    private final TimedCache<String,Integer> XML_CACHE= CacheUtil.newTimedCache(3000);
 
     @PostMapping(value = "/recv", produces = MediaType.TEXT_XML_VALUE)
     public String recv(

+ 7 - 1
src/main/java/com/gzlh/device/led/handler/impl/LedHandlerFengLiYuan.java

@@ -62,7 +62,13 @@ public class LedHandlerFengLiYuan implements ILedHandler {
                     ledOptions.setColor("06");
                     break;
             }
-            ReqBO reqBO = null;
+            if (StrUtil.contains(action, "|")) {
+                String[] split = action.split("\\|");
+                if (split.length==3){
+                    ledOptions.setColor(split[2]);
+                }
+            }
+            ReqBO reqBO;
             //展示内容
             if (StrUtil.contains(action, "platNo")) {
                 String carNo = "";

+ 4 - 0
src/main/java/com/gzlh/device/plc/event/PLCEvent.java

@@ -15,4 +15,8 @@ public interface PLCEvent {
     String CHECK_ADMIN_FAILED = "CHECK_ADMIN_FAILED";
 
     String IDLE = "IDLE";
+    /**
+     * 关闭
+     */
+    String SHUTDOWN = "SHUTDOWN";
 }

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

@@ -1,6 +1,7 @@
 package com.gzlh.device.plc.handler;
 
 import cn.hutool.core.util.RandomUtil;
+import cn.hutool.core.util.StrUtil;
 import cn.hutool.extra.spring.SpringUtil;
 import com.gzlh.bus.SysConfig;
 import com.gzlh.config.dto.SerialSetting;
@@ -27,11 +28,29 @@ public class CheckDownTask extends Task {
 
     @Override
     public void run() {
+        if (tryCount >= 5) {
+            log.error("尝试超过5次无法落杆,需要人工干预=========");
+            return;
+        }
+        String plcStatus= DeviceCache.getPlcStatus();
+        if (StrUtil.isEmpty(plcStatus)){
+            return;
+        }
+        SerialSetting.PlcDTO.StatusDTO statusDTO= SysConfig.serialSetting.getPlc().getStatus();
+        String downPoint= statusDTO.getDownPoint();
+        String downPointStatus=plcStatus.charAt(Integer.parseInt(downPoint))+"";
+        if (downPointStatus.equals("1")){
+            log.info("落杆继电器断开完成,停止下发指令");
+            //已经上到位了,所以停止检查
+            return;
+        }
         String gatePoint = SysConfig.serialSetting.getPlc().getOut().getGatePoint();
         String command = PLCHadnler.COMMAND_PREFIX + gatePoint + PLCHadnler.COMMAND_OFF;
         String packData = ModbusUtils.buildRequestPacket(command);
-        log.info("plc发送落杆指令:{}", tryCount);
         PlcNettyConfig plcNettyConfig = SpringUtil.getBean(PlcNettyConfig.class);
         plcNettyConfig.send(packData);
+        tryCount = tryCount + 1;
+        TaskService taskService = SpringUtil.getBean(TaskService.class);
+        taskService.addTask(new CheckDownTask(RandomUtil.randomNumbers(10), 1000, tryCount));
     }
 }

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

@@ -1,6 +1,7 @@
 package com.gzlh.device.plc.handler;
 
 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;
@@ -29,25 +30,29 @@ public class CheckUpTask extends Task {
 
     @Override
     public void run() {
-        if (tryCount >= 3) {
+        if (tryCount >= 8) {
+            log.error("尝试超过8次无法抬杆,需要人工干预=========");
             return;
         }
        String plcStatus= DeviceCache.getPlcStatus();
+        if (StrUtil.isEmpty(plcStatus)){
+            return;
+        }
         SerialSetting.PlcDTO.StatusDTO statusDTO= SysConfig.serialSetting.getPlc().getStatus();
        String upPoint= statusDTO.getUpPoint();
        String upStatus=plcStatus.charAt(Integer.parseInt(upPoint))+"";
        if (upStatus.equals("1")){
+           log.info("抬杆完成,停止下发指令");
            //已经上到位了,所以停止检查
            return;
        }
         String gatePoint = SysConfig.serialSetting.getPlc().getOut().getGatePoint();
         String command = PLCHadnler.COMMAND_PREFIX + gatePoint + PLCHadnler.COMMAND_ON;
         String packData = ModbusUtils.buildRequestPacket(command);
-        log.info("plc发送抬杆:{}",tryCount);
         PlcNettyConfig plcNettyConfig = SpringUtil.getBean(PlcNettyConfig.class);
         plcNettyConfig.send(packData);
         tryCount = tryCount + 1;
         TaskService taskService = SpringUtil.getBean(TaskService.class);
-        taskService.addTask(new CheckUpTask(RandomUtil.randomNumbers(10), 300, tryCount));
+        taskService.addTask(new CheckUpTask(RandomUtil.randomNumbers(10), 1000, tryCount));
     }
 }

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

@@ -4,6 +4,7 @@ import cn.hutool.core.thread.ThreadUtil;
 import cn.hutool.extra.spring.SpringUtil;
 import cn.hutool.json.JSONUtil;
 import cn.hutool.log.StaticLog;
+import com.gzlh.bus.ChannelCacheManager;
 import com.gzlh.bus.SysConfig;
 import com.gzlh.bus.EventDataManager;
 import com.gzlh.bus.EventBus;
@@ -45,6 +46,10 @@ public class CommonWeighbridgeHandler {
      * 开始读取地磅数据
      */
     public static void startToRead() {
+        //不启用
+        if (!ChannelCacheManager.stateEnable(SysConfig.channelSetting.getChannelCode())){
+            return;
+        }
         isStart = true;
         ThreadUtil.execute(new WatchThread());
     }
@@ -91,14 +96,15 @@ public class CommonWeighbridgeHandler {
         }
 
         private int handlerWeight() {
-            StaticLog.info("w:{}", JSONUtil.toJsonStr(WEIGHT_CACHE));
-            if (WEIGHT_CACHE.isEmpty()){
+            List<Integer>list=WEIGHT_CACHE;
+            StaticLog.info("w:{}", JSONUtil.toJsonStr(list));
+            if (list.isEmpty()){
                 return 0;
             }
-            Collections.sort(WEIGHT_CACHE);
-            int size=WEIGHT_CACHE.size();
+            Collections.sort(list);
+            int size=list.size();
             int index=( size*3)/4;
-           return WEIGHT_CACHE.get(index);
+           return list.get(index);
         }
     }
 

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

@@ -5,6 +5,7 @@ import cn.hutool.core.util.StrUtil;
 import com.gzlh.bus.EventDataManager;
 import com.gzlh.bus.SysConfig;
 import com.gzlh.config.hksdk.AlarmParseService;
+import com.gzlh.config.hksdk.MessageCallBack;
 import com.gzlh.device.weighbridge.action.WeighbridgeCommonAction;
 import com.gzlh.device.weighbridge.brand.WeighbridgeBrandType;
 import com.gzlh.device.weighbridge.handler.IWeighbridgeHandler;

+ 1 - 8
src/main/java/com/gzlh/utils/ModbusUtils.java

@@ -33,12 +33,5 @@ public class ModbusUtils {
         return swapBytes(crc);
     }
 
-    public static void main(String[] args) {
-        String packData = "01050000FF00";
-        System.out.println(buildRequestPacket(packData));
-        String s="F5,01,00,33,01,01,00,01,00,01,00,01,08,BB,B6,D3,AD,B9,E2,C1,D9,02,00,00,00,01,1C,C9,EE,DB,DA,CA,D0,5B,40,32,5D,B7,E1,C0,FB,D4,B4,5B,40,33,5D,D3,D0,CF,DE,B9,AB,CB,BE,A4";
-        System.out.println(s.replaceAll(",",""));
-        String sr="010100010001000108BBB6D3ADB9E2C1D902000000011CC9EEDBDACAD05B40325DB7E1C0FBD4B45B40335DD3D0CFDEB9ABCBBE";
-        System.out.println(sr.length());
-    }
+
 }

+ 1 - 7
src/main/java/com/gzlh/utils/WordHandlerUtils.java

@@ -44,13 +44,7 @@ public class WordHandlerUtils {
     }
 
 
-    public static void main(String[] args) throws Exception {
-        System.out.println(msgToASCII("你好ssss"));
-        String ssss = "1CABC683A8F381F47EAC5AD5838C1FB7A08283BBC529298F8FF6DB44684C6AEC36C5973857E482E9A157D690D1E431C79414A55D2BEA40E46A520170CF1B353EDDC35BFDF27033D3E61D5BC275DB07BF";
-        System.out.println(AESDecrypt(ssss));
-        String s="{\"direction\":1,\"channelCode\":\"B1001\",\"carNo\":\"桂A0746T\",\"carImg\":\"http://10.26.1.26/B1001/2023/12/26/桂A0746T-2312260950.jpg\",\"weight\":1361,\"gatherTime\":1703555420546}";
-        System.out.println(AESEncrypt(s));
-    }
+
 
     /**
      * 中文转ascii

+ 1 - 5
src/main/java/com/gzlh/utils/XorUtils.java

@@ -34,10 +34,6 @@ public class XorUtils {
         }
         return ret;
     }
-    public static void main(String[] args) {
-        String s="F5,01,00,05,01,03,00,01,02,F0";
-        System.out.println(hexString2Bytes("F50100050003000102")[0]);
-        System.out.println(hexString2Bytes("F50100050003000102")[0]);
-    }
+
 
 }

+ 8 - 0
src/main/resources/application.yml

@@ -1,5 +1,13 @@
 server:
   port: 8086
+spring:
+  task:
+    execution:
+      pool:
+        core-size: 20
+    scheduling:
+      thread-name-prefix: scheduling-task
+
   #图片存储根路径
 file:
   root-path: D:\\file\\