qzy 1 місяць тому
батько
коміт
dc06c620f5

+ 2 - 2
config.xml

@@ -3,7 +3,7 @@
 <config>
     <managerSetting>
         <enable>true</enable>
-        <host>192.168.3.67</host>
+        <host>192.168.3.32</host>
         <beatPort>8010</beatPort>
         <serverUrl>http://127.0.0.1:9191</serverUrl>
     </managerSetting>
@@ -12,7 +12,7 @@
         <!--本机IP-->
         <ip>10.3.2.153</ip>
         <channelName>3号地磅</channelName>
-        <channelCode>db01</channelCode>
+        <channelCode>NA01</channelCode>
         <twinChannelCode></twinChannelCode>
         <!--共生通道地址-->
         <twinService></twinService>

+ 4 - 4
pom.xml

@@ -170,15 +170,15 @@
                     <!--联运中心-->
 <!--                    <code>D72E7F75D4CDEEFAD7AC77891557F586D41D8CD98F00B204E9800998ECF8427ED41D8CD98F00B204E9800998ECF8427E</code>-->
                     <!--北海无人地磅-->
-                    <code>AE135DDFE7E3871BE848301327CA8E2ED41D8CD98F00B204E9800998ECF8427ED41D8CD98F00B204E9800998ECF8427E</code>
+<!--                    <code>AE135DDFE7E3871BE848301327CA8E2ED41D8CD98F00B204E9800998ECF8427ED41D8CD98F00B204E9800998ECF8427E</code>-->
                     <!--南京-->
 <!--                    <code>A4CFD53BE12CC512727611ACFC1EE05ED41D8CD98F00B204E9800998ECF8427ED41D8CD98F00B204E9800998ECF8427E</code>-->
                     <!--限定区域-->
 <!--                    <code>C41BF0CE8FF4E89D45E95A3AFB46E2E9D41D8CD98F00B204E9800998ECF8427ED41D8CD98F00B204E9800998ECF8427E</code>-->
                     <!--联运中心无人地磅-->
-<!--                    <code>-->
-<!--                        C8B3CC11C158AD38AE69D6DB58E99BF8D41D8CD98F00B204E9800998ECF8427ED41D8CD98F00B204E9800998ECF8427E-->
-<!--                    </code>-->
+                    <code>
+                        C8B3CC11C158AD38AE69D6DB58E99BF8D41D8CD98F00B204E9800998ECF8427ED41D8CD98F00B204E9800998ECF8427E
+                    </code>
                     <packages>com.gzlh</packages> <!--可以多个-->
                     <!--                    <cfgfiles>application.yml</cfgfiles>-->
                     <excludes>org.spring</excludes>

+ 1 - 1
src/main/java/com/gzlh/bus/thread/SubmitHarborPoleThread.java

@@ -76,7 +76,7 @@ public class SubmitHarborPoleThread implements Runnable {
                 CommandBO commandBO = JSONUtil.toBean(data, CommandBO.class);
                 String msg = commandBO.getCommand().getExtra();
                 if (code == 200) {
-                    if (StrUtil.contains(msg, "二")) {
+                    if (StrUtil.contains(msg, "二")||StrUtil.contains(msg, "放行")||StrUtil.contains(msg, "完整")) {
                         CacheManager.changeStatus(CacheManager.REQ_BTN_KEY, true);
                     }
                     log.info("抬杆放行============");

+ 1 - 1
src/main/java/com/gzlh/cache/CacheManager.java

@@ -11,7 +11,7 @@ public class CacheManager {
     public static final String REQ_BTN_KEY = "req_btn";
     public static final String CANCEL_BTN_KEY = "cancel_btn";
     public static final String SLEEP_BTN_KEY = "sleep_btn";
-    private static final TimedCache<String, Boolean> CACHE_MAP = CacheUtil.newTimedCache(30000);
+    private static final TimedCache<String, Boolean> CACHE_MAP = CacheUtil.newTimedCache(300000);
     private static final TimedCache<String, Boolean> SLEEP_5000 = CacheUtil.newTimedCache(30000);
 
 

+ 3 - 0
src/main/java/com/gzlh/device/led/handler/impl/LedHandlerYangBandV4d2.java

@@ -76,6 +76,9 @@ public class LedHandlerYangBandV4d2 implements ILedHandler {
         // 0x04——向右移动
         // 0x05——向上移动
         // 0x06——向下移动
+        if (StrUtil.contains(line, "2") || StrUtil.contains(line, "3")) {
+            ledOptions.setType("01");
+        }
         byte dispMode = Integer.parseInt(ledOptions.getType()) == 1 ? (byte) 0x01 : 0x03;
         BxArea.setDispMode(dispMode);
         BxArea.setHoldTime((byte) 0x00);

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

@@ -66,4 +66,9 @@ public interface PLCEvent {
      * 退车
      */
     String CAR_BACK = "CAR_BACK";
+    /**
+     * 称重时触发后红外
+     */
+    String WEIGHT_TOUCH_B_INFRARED = "WEIGHT_TOUCH_B_INFRARED";
+    String WEIGHT_TOUCH_F_INFRARED = "WEIGHT_TOUCH_F_INFRARED";
 }

+ 30 - 0
src/main/java/com/gzlh/device/plc/handler/PLCHadnler.java

@@ -96,6 +96,12 @@ public class PLCHadnler {
             String packData = ModbusUtils.buildRequestPacket(command);
             plcNettyConfig.send(packData);
         } else if (StrUtil.equals(action, PLCAction.REQ_PRINT)) {
+            LedFactory ledFactory = SpringUtil.getBean(LedFactory.class);
+            String line = SysConfig.serialSetting.getLed().getLine();
+            if (StrUtil.isEmpty(line)) {
+                line = "03";
+            }
+            LedOptions options = new LedOptions().setLine(line);
             if (CacheManager.checkEnable(CacheManager.REQ_BTN_KEY)) {
                 plcService.reqPrint();
             }
@@ -265,15 +271,39 @@ public class PLCHadnler {
                         break;
                     }
                     log.info("前红外断开&磅上有车--->触发3秒后是否开始称重,{}", CommonWeighbridgeHandler.hsCar);
+                    DeviceCache.setInterrupt(false);
                     taskService.addTask(new CheckStartWeightTask(RandomUtil.randomNumbers(16), 3000));
                 } else if (redPointStatus.equals("1")) {
                     //前红外触碰并且磅上有车===>发布车辆进入地磅事件
                     if (StrUtil.equals(infraredMode, "-1")) {
                         log.info("安派---前红外断开&磅上有车--->触发3秒后是否开始称重,{}", CommonWeighbridgeHandler.hsCar);
+                        DeviceCache.setInterrupt(false);
                         taskService.addTask(new CheckStartWeightTask(RandomUtil.randomNumbers(16), 3000));
                         break;
                     }
                 }
+            } else if (StrUtil.equals(judgePoint, bRedPoint)) {
+                if (StrUtil.equals(bRedPointStatus, "1") && CommonWeighbridgeHandler.hsCar && StrUtil.equals(downPointStatus, "1")) {
+                    if (StrUtil.equals(infraredMode, "-1")) {
+                        //安派--相反的--->重新称重
+                        DeviceCache.setInterrupt(false);
+                        taskService.addTask(new CheckStartWeightTask(RandomUtil.randomNumbers(16), 3000));
+                    } else {
+                        log.info("称重过程中,触碰了后红外:{}", EventDataManager.getCacheData().getCarNo());
+                        DeviceCache.setInterrupt(true);
+                        eventBus.startEvent(ModuleEnum.PLC_MODULE.getModuleEn() + "." + PLCEvent.WEIGHT_TOUCH_B_INFRARED);
+                    }
+                } else if (StrUtil.equals(bRedPointStatus, "0") && CommonWeighbridgeHandler.hsCar && StrUtil.equals(downPointStatus, "1")) {
+                    if (StrUtil.equals(infraredMode, "-1")) {
+                        //安派--相反的--->
+                        log.info("称重过程中,触碰了后红外:{}", EventDataManager.getCacheData().getCarNo());
+                        DeviceCache.setInterrupt(true);
+                        eventBus.startEvent(ModuleEnum.PLC_MODULE.getModuleEn() + "." + PLCEvent.WEIGHT_TOUCH_B_INFRARED);
+                    } else {
+                        DeviceCache.setInterrupt(false);
+                        taskService.addTask(new CheckStartWeightTask(RandomUtil.randomNumbers(16), 3000));
+                    }
+                }
             } else if (upPoint.equals(judgePoint)) {
                 //上到位触发-->发送继电器断开---->防止不落��
                 if (upPointStatus.equals("1")) {

+ 18 - 6
src/main/java/com/gzlh/device/plc/job/CheckStartWeightTask.java

@@ -1,6 +1,7 @@
 package com.gzlh.device.plc.job;
 
 import cn.hutool.core.thread.ThreadUtil;
+import cn.hutool.core.util.StrUtil;
 import cn.hutool.extra.spring.SpringUtil;
 import com.gzlh.bus.EventBus;
 import com.gzlh.bus.SysConfig;
@@ -23,20 +24,31 @@ public class CheckStartWeightTask extends Task {
     @Override
     public void run() {
         SerialSetting.PlcDTO.StatusDTO status = SysConfig.serialSetting.getPlc().getStatus();
+        //雷达
+        String radarPoint = status.getRadarPoint();
+        String fRedPoint = status.getFRedPoint();
         EventBus eventBus = SpringUtil.getBean(EventBus.class);
         int count = 0;
-        while (count <=10) {
+        while (count <= 10) {
             count++;
             String plcStatus = DeviceCache.getPlcStatus();
-            //雷达
-            String radarPoint = status.getRadarPoint();
-            String radarPointStatus = plcStatus.charAt(Integer.parseInt(radarPoint)) + "";
-            if (radarPointStatus.equals("1")&&CommonWeighbridgeHandler.hsCar) {
+            String fRedPointStatus = StrUtil.isEmpty(fRedPoint) ? "0" : plcStatus.charAt(Integer.parseInt(fRedPoint)) + "";
+            if (StrUtil.equals(fRedPointStatus,"1")){
+                DeviceCache.setInterrupt(true);
+                eventBus.startEvent(ModuleEnum.PLC_MODULE.getModuleEn() + "." + PLCEvent.WEIGHT_TOUCH_F_INFRARED);
+                return;
+            }
+            //前红外
+            String radarPointStatus = StrUtil.isEmpty(radarPoint) ? "0" : plcStatus.charAt(Integer.parseInt(radarPoint)) + "";
+            if (radarPointStatus.equals("1")) {
                 eventBus.startEvent(ModuleEnum.WEIGHBRIDGE_MODULE.getModuleEn() + "." + WeighbridgeEvent.READ);
                 return;
             }
             ThreadUtil.sleep(500);
         }
-        eventBus.startEvent(ModuleEnum.WEIGHBRIDGE_MODULE.getModuleEn() + "." + WeighbridgeEvent.FAIL);
+        log.info("前红外断开,5秒后没有触碰雷达,并且地磅无读数,触发初始化======");
+        if (!CommonWeighbridgeHandler.hsCar){
+            eventBus.startEvent(ModuleEnum.PLC_MODULE.getModuleEn() + "." + PLCEvent.IDLE);
+        }
     }
 }

+ 3 - 1
src/main/java/com/gzlh/device/plc/service/PLCService.java

@@ -82,8 +82,10 @@ public class PLCService {
                 String msg = result.getStr("msg");
                 Integer code = result.getInt("code");
                 if (code == 200) {
-                    //确认磅后可以打印磅单
+                    //确认磅后可以打印磅单,不能再按了,也不能按取消过磅
                     CacheManager.changeStatus(CacheManager.REQ_BTN_KEY, true);
+                    CacheManager.changeStatus(CacheManager.TEST_BTN_KEY, false);
+                    CacheManager.changeStatus(CacheManager.CANCEL_BTN_KEY, false);
                     eventBus.startEvent(ModuleEnum.PLC_MODULE.getModuleEn() + "." + PLCEvent.RAILING_RISE);
                 }
                 SystemObject.ledFactory.handler(SysConfig.serialSetting.getLed().getBrand())

+ 8 - 20
src/main/java/com/gzlh/device/print/handler/impl/PrintYingMeiHandler.java

@@ -82,17 +82,11 @@ public class PrintYingMeiHandler implements IPrintHandler {
 
     @Override
     public void checkStatus() {
-        Socket socket = null;
-        DataOutputStream dataOut = null;
-        DataInputStream dataIn = null;
-        try {
-            // 建立与服务器的连接
-            socket = new Socket(SysConfig.serialSetting.getPrint().getIp(), SysConfig.serialSetting.getPrint().getPort());
-            connect = socket.isConnected();
+        try (Socket socket = new Socket(SysConfig.serialSetting.getPrint().getIp(), SysConfig.serialSetting.getPrint().getPort());
+             DataOutputStream dataOut = new DataOutputStream(socket.getOutputStream());
+             DataInputStream dataIn = new DataInputStream(socket.getInputStream())) {
 
-            // 创建输入输出流
-            dataOut = new DataOutputStream(socket.getOutputStream());
-            dataIn = new DataInputStream(socket.getInputStream());
+            connect = socket.isConnected();
 
             // 准备要发送的二进制数据
             byte[] sendData = WordHandlerUtils.hexToBytes(STATUS_COMMAND);
@@ -109,19 +103,12 @@ public class PrintYingMeiHandler implements IPrintHandler {
             //log.info("print resp:{}", hexResponse);
             String eMsg = StrUtil.equals(hexResponse, "06") ? "打印机缺纸" : "";
             DeviceCache.changeDeviceStatus(ModuleEnum.PRINT_MODULE.getModuleZh(), 1, eMsg);
+
         } catch (IOException e) {
-            log.error("print error:{}", e.getMessage());
+            log.error("print error: {},{}", e.getMessage(), e);
             DeviceCache.changeDeviceStatus(ModuleEnum.PRINT_MODULE.getModuleZh(), 0, "打印机离线");
         } finally {
-            // 关闭资源
-            try {
-                if (dataIn != null) dataIn.close();
-                if (dataOut != null) dataOut.close();
-                if (socket != null) socket.close();
-                connect = false;
-            } catch (IOException e) {
-                e.printStackTrace();
-            }
+            connect = false;
         }
 
     }
@@ -173,6 +160,7 @@ public class PrintYingMeiHandler implements IPrintHandler {
         cache.put(channelCode, 1);
         log.info("Req print weight:{}", bodyParams);
         String api = SysConfig.managerSetting.getServerUrl() + "/open/printWeight";
+        ledFactory.handler(SysConfig.serialSetting.getPrint().getBrand()).sendMsg("正在打印磅单小票中,请稍等", options);
         try (HttpResponse response = HttpUtil.createPost(api).body(WordHandlerUtils.AESEncrypt(bodyParams)).execute()) {
             log.info("提交港内打印榜单数据-返回结果:{}", response.body());
             if (response.getStatus() == 200) {

+ 13 - 3
src/main/java/com/gzlh/device/print/test/JMPrintThread.java

@@ -54,12 +54,13 @@ public class JMPrintThread implements Runnable {
             }
             ThreadUtil.sleep(100);
         }
+        EscPos escpos = null;
         try {
             log.info("start print:{}", JSONUtil.toJsonStr(printBO));
             Charset charset = Charset.forName("GB2312");
             String title = "    " + SysConfig.serialSetting.getPrint().getPrintTitle() + "\n";
             TcpIpOutputStream tcpIpOutputStream = new TcpIpOutputStream(SysConfig.serialSetting.getPrint().getIp(), SysConfig.serialSetting.getPrint().getPort());
-            EscPos escpos = new EscPos(tcpIpOutputStream);
+            escpos = new EscPos(tcpIpOutputStream);
             Bitonal algorithm = new BitonalThreshold(160);
             escpos.initializePrinter();
             escpos.setCharsetName("GB2312");
@@ -116,12 +117,21 @@ public class JMPrintThread implements Runnable {
             }
             byte[] footer = EpsonCommands.mergerByteArray(EpsonCommands.printLineFeed((byte) 1), EpsonCommands.feedPaperCut());
             escpos.write(footer, 0, footer.length);
-            escpos.close();
+//            escpos.close();
             log.info("print done======:{}", JSONUtil.toJsonStr(printBO));
             ledFactory.handler(SysConfig.serialSetting.getLed().getBrand()).sendMsg("已成功打印小票,请取走小票", options);
         } catch (IOException e) {
             ledFactory.handler(SysConfig.serialSetting.getLed().getBrand()).sendMsg("小票打印失败", options);
-            throw new RuntimeException(e);
+            log.error("print error :{}", e.getMessage());
+        } finally {
+            if (escpos != null) {
+                try {
+                    escpos.close();
+                    log.info("close print connect");
+                } catch (IOException e) {
+                    log.error("close escpos error:{},{}", e.getMessage(), e);
+                }
+            }
         }
 
     }

+ 1 - 1
src/main/resources/application.yml

@@ -15,7 +15,7 @@ file:
 #海康配置文件
 hk:
   log-home: D:\project\face\face-admin\logs\hk
-  lib-home: F:\libs\hklib
+  lib-home: E:\libs\hklib
   lib-path: ${hk.lib-home}\HCNetSDK.dll
   linux-libcrypto-path: ${hk.lib-home}/libcrypto.so.1.1
   linux-libssl-path: ${hk.lib-home}/libssl.so.1.1