Jelajahi Sumber

Merge branch 'master' into temp

# Conflicts:
#	config.xml
#	src/main/java/com/gzlh/bus/EventThread.java
#	src/main/java/com/gzlh/startup/StartupRunner.java
#	src/main/resources/application.yml
qzy 9 bulan lalu
induk
melakukan
d4c6bcbbc4

+ 1 - 1
config.xml

@@ -53,7 +53,7 @@
                 <brand>1000</brand>
             </print>
             <plc>
-                <enable>true</enable>
+                <enable>false</enable>
                 <port>4001</port>
                 <!--输出-->
                 <out>

+ 1 - 1
src/main/java/com/gzlh/api/OpenApi.java

@@ -10,7 +10,7 @@ import com.gzlh.config.ModuleEnum;
 import com.gzlh.bus.EventBus;
 import com.gzlh.config.SystemObject;
 import com.gzlh.config.dto.SerialSetting;
-import com.gzlh.device.electron.job.ElectronReadJob;
+import com.gzlh.device.rfid.job.ElectronReadJob;
 import com.gzlh.device.led.event.LedDefaultEvent;
 import com.gzlh.device.led.utils.LedOptions;
 import com.gzlh.entity.ReqBO;

+ 50 - 54
src/main/java/com/gzlh/bus/EventThread.java

@@ -13,25 +13,27 @@ import com.gzlh.config.dto.SerialSetting;
 import com.gzlh.device.capture.factory.CaptureFactory;
 import com.gzlh.config.ModuleEnum;
 import com.gzlh.config.SystemObject;
-import com.gzlh.device.electron.factory.ElectronFactory;
+import com.gzlh.device.rfid.factory.ElectronFactory;
 
 import com.gzlh.device.led.factory.LedFactory;
+import com.gzlh.device.led.utils.LedOptions;
+import com.gzlh.device.plc.event.PLCEvent;
 import com.gzlh.device.plc.handler.PLCHadnler;
-import com.gzlh.device.print.factory.PrintFactory;
 import com.gzlh.device.weighbridge.factory.WeighbridgeFactory;
 import com.gzlh.device.weighbridge.handler.impl.CommonWeighbridgeHandler;
-
+import com.gzlh.entity.CommandBO;
 import com.gzlh.utils.DeviceCache;
+import com.gzlh.utils.WordHandlerUtils;
 import lombok.extern.slf4j.Slf4j;
 
 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;
     }
 
     /**
@@ -40,58 +42,52 @@ 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;
-        PrintFactory printFactory = SystemObject.printFactory;
-        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) {
-                       // log.info("action :{}", action);
-                        String module = StrUtil.subBefore(action, ".", true);
-                        String command = StrUtil.subAfter(action, ".", true);
+            List<String> actionList = eventDTO.getActionList().getAction();
+            //依次执行动作
+            for (String action:actionList) {
+                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.PRINT_MODULE.getModuleEn())) {
-                            //动作属于打印机
-                            printFactory.handler(serialSetting.getPrint().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);
+            }
+        });
 
     }
 

+ 1 - 1
src/main/java/com/gzlh/config/SystemObject.java

@@ -1,7 +1,7 @@
 package com.gzlh.config;
 
 import com.gzlh.device.capture.factory.CaptureFactory;
-import com.gzlh.device.electron.factory.ElectronFactory;
+import com.gzlh.device.rfid.factory.ElectronFactory;
 import com.gzlh.device.led.factory.LedFactory;
 import com.gzlh.device.print.factory.PrintFactory;
 import com.gzlh.device.weighbridge.factory.WeighbridgeFactory;

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

@@ -8,8 +8,7 @@ import com.gzlh.bus.SysConfig;
 import com.gzlh.bus.EventDataManager;
 import com.gzlh.config.ModuleEnum;
 import com.gzlh.config.dto.SerialSetting;
-import com.gzlh.device.capture.event.CaptureEvent;
-import com.gzlh.device.electron.job.ElectronReadJob;
+import com.gzlh.device.rfid.job.ElectronReadJob;
 import com.gzlh.device.plc.event.PLCEvent;
 import com.gzlh.device.weighbridge.event.WeighbridgeEvent;
 import com.gzlh.entity.ReqBO;

+ 1 - 1
src/main/java/com/gzlh/device/electron/action/IElectronAction.java → src/main/java/com/gzlh/device/rfid/action/IElectronAction.java

@@ -1,4 +1,4 @@
-package com.gzlh.device.electron.action;
+package com.gzlh.device.rfid.action;
 
 public interface IElectronAction {
     /**

+ 3 - 2
src/main/java/com/gzlh/device/electron/brand/ElectronBrandType.java → src/main/java/com/gzlh/device/rfid/brand/ElectronBrandType.java

@@ -1,4 +1,4 @@
-package com.gzlh.device.electron.brand;
+package com.gzlh.device.rfid.brand;
 
 import lombok.AllArgsConstructor;
 import lombok.Getter;
@@ -7,7 +7,8 @@ import lombok.Getter;
 @AllArgsConstructor
 public enum ElectronBrandType {
 
-    RUI_BRAND(2000,"瑞德电子车牌")
+    RUI_BRAND(2000,"瑞德电子车牌"),
+    WANQUAN_BRAND(3000,"深圳万全vf-946Pro")
     ;
 
 

+ 2 - 2
src/main/java/com/gzlh/device/electron/client/ElectronClientHandler.java → src/main/java/com/gzlh/device/rfid/client/ElectronClientHandler.java

@@ -1,10 +1,10 @@
-package com.gzlh.device.electron.client;
+package com.gzlh.device.rfid.client;
 
 import cn.hutool.core.util.StrUtil;
 import com.gzlh.bus.SysConfig;
 import com.gzlh.config.ModuleEnum;
 import com.gzlh.config.SystemObject;
-import com.gzlh.device.electron.action.IElectronAction;
+import com.gzlh.device.rfid.action.IElectronAction;
 import com.gzlh.utils.DeviceCache;
 import io.netty.channel.ChannelHandler;
 import io.netty.channel.ChannelHandlerContext;

+ 1 - 1
src/main/java/com/gzlh/device/electron/client/ElectronNettyConfig.java → src/main/java/com/gzlh/device/rfid/client/ElectronNettyConfig.java

@@ -1,4 +1,4 @@
-package com.gzlh.device.electron.client;
+package com.gzlh.device.rfid.client;
 
 import com.gzlh.bus.SysConfig;
 import com.gzlh.config.ModuleEnum;

+ 15 - 0
src/main/java/com/gzlh/device/rfid/enums/CardType.java

@@ -0,0 +1,15 @@
+package com.gzlh.device.rfid.enums;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+@Getter
+@AllArgsConstructor
+public enum CardType {
+
+
+    TYPE_6C("6C"),
+    TYPE_6B("6B");
+
+    private String type;
+}

+ 1 - 1
src/main/java/com/gzlh/device/electron/event/CarDefaultEvent.java → src/main/java/com/gzlh/device/rfid/event/CarDefaultEvent.java

@@ -1,4 +1,4 @@
-package com.gzlh.device.electron.event;
+package com.gzlh.device.rfid.event;
 
 /**
  * Car内置事件

+ 2 - 3
src/main/java/com/gzlh/device/electron/factory/ElectronFactory.java → src/main/java/com/gzlh/device/rfid/factory/ElectronFactory.java

@@ -1,9 +1,8 @@
-package com.gzlh.device.electron.factory;
+package com.gzlh.device.rfid.factory;
 
 
 
-import com.gzlh.device.capture.handler.ICaptureHandler;
-import com.gzlh.device.electron.handler.IElectronHandler;
+import com.gzlh.device.rfid.handler.IElectronHandler;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 

+ 10 - 3
src/main/java/com/gzlh/device/electron/handler/IElectronHandler.java → src/main/java/com/gzlh/device/rfid/handler/IElectronHandler.java

@@ -1,7 +1,7 @@
-package com.gzlh.device.electron.handler;
+package com.gzlh.device.rfid.handler;
 
-import com.gzlh.device.capture.brand.CaptureBrandType;
-import com.gzlh.device.electron.brand.ElectronBrandType;
+import com.gzlh.device.rfid.brand.ElectronBrandType;
+import com.gzlh.device.rfid.enums.CardType;
 
 public interface IElectronHandler {
 
@@ -26,4 +26,11 @@ public interface IElectronHandler {
      */
     void handlerMsg(String msg);
 
+    /**
+     * 设置命令模式
+     * @param commandModule
+     */
+    void setReaderCmdModule(boolean commandModule);
+    void startToRead(CardType cardType);
+
 }

+ 17 - 6
src/main/java/com/gzlh/device/electron/handler/impl/ElectronHandlerRuiDe.java → src/main/java/com/gzlh/device/rfid/handler/impl/ElectronHandlerRuiDe.java

@@ -1,13 +1,14 @@
-package com.gzlh.device.electron.handler.impl;
+package com.gzlh.device.rfid.handler.impl;
 
 import cn.hutool.core.thread.ThreadUtil;
 import cn.hutool.core.util.StrUtil;
 import com.gzlh.bus.EventDataManager;
-import com.gzlh.device.electron.action.IElectronAction;
-import com.gzlh.device.electron.brand.ElectronBrandType;
-import com.gzlh.device.electron.client.ElectronNettyConfig;
-import com.gzlh.device.electron.handler.IElectronHandler;
-import com.gzlh.device.electron.utils.CheckNumUtils;
+import com.gzlh.device.rfid.action.IElectronAction;
+import com.gzlh.device.rfid.brand.ElectronBrandType;
+import com.gzlh.device.rfid.client.ElectronNettyConfig;
+import com.gzlh.device.rfid.enums.CardType;
+import com.gzlh.device.rfid.handler.IElectronHandler;
+import com.gzlh.device.rfid.utils.CheckNumUtils;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Component;
 
@@ -77,6 +78,16 @@ public class ElectronHandlerRuiDe implements IElectronHandler {
         }
     }
 
+    @Override
+    public void setReaderCmdModule(boolean commandModule) {
+
+    }
+
+    @Override
+    public void startToRead(CardType cardType) {
+        readERI();
+    }
+
 
     public void readERI(){
         ERI_CACHE.clear();

+ 71 - 0
src/main/java/com/gzlh/device/rfid/handler/impl/WanQuanHandler.java

@@ -0,0 +1,71 @@
+package com.gzlh.device.rfid.handler.impl;
+
+import com.gzlh.device.rfid.brand.ElectronBrandType;
+import com.gzlh.device.rfid.client.ElectronNettyConfig;
+import com.gzlh.device.rfid.enums.CardType;
+import com.gzlh.device.rfid.handler.IElectronHandler;
+import com.gzlh.device.rfid.utils.RFIDCommandUtils;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+
+@Component
+@Slf4j
+public class WanQuanHandler implements IElectronHandler {
+    @Resource
+    private ElectronNettyConfig electronNettyConfig;
+    @Override
+    public ElectronBrandType brandType() {
+        return ElectronBrandType.WANQUAN_BRAND;
+    }
+
+    @Override
+    public void handlerAction(String action) {
+
+    }
+
+    @Override
+    public void sendMsg(String msg) {
+        electronNettyConfig.send(msg);
+    }
+
+    @Override
+    public void handlerMsg(String msg) {
+
+    }
+
+    /**
+     * 00 命令模式
+     * 01 自动模式
+     * @param commandModule
+     */
+    @Override
+    public void setReaderCmdModule(boolean commandModule) {
+        String module=commandModule?"00":"01";
+        String []params=new String[]{module};
+        String command= RFIDCommandUtils.buildWanQuanCommand("0D",params);
+        log.info("command:{}",command);
+        this.sendMsg(command);
+    }
+
+    @Override
+    public void startToRead(CardType cardType) {
+        switch (cardType.getType()){
+            case "6C":
+                String command="80";
+                String []params=new String[]{"01","00","00","00000000"};
+                String pack=RFIDCommandUtils.buildWanQuanCommand(command,params);
+                sendMsg(pack);
+                break;
+            default:
+                command="90";
+                params=new String[]{};
+                pack=RFIDCommandUtils.buildWanQuanCommand(command,params);
+                sendMsg(pack);
+                break;
+
+        }
+
+    }
+}

+ 2 - 2
src/main/java/com/gzlh/device/electron/job/ElectronReadJob.java → src/main/java/com/gzlh/device/rfid/job/ElectronReadJob.java

@@ -1,8 +1,8 @@
-package com.gzlh.device.electron.job;
+package com.gzlh.device.rfid.job;
 
 import com.gzlh.bus.SysConfig;
 import com.gzlh.config.SystemObject;
-import com.gzlh.device.electron.action.IElectronAction;
+import com.gzlh.device.rfid.action.IElectronAction;
 
 /**
  *下发指令读取卡

+ 1 - 1
src/main/java/com/gzlh/device/electron/utils/CheckNumUtils.java → src/main/java/com/gzlh/device/rfid/utils/CheckNumUtils.java

@@ -1,4 +1,4 @@
-package com.gzlh.device.electron.utils;
+package com.gzlh.device.rfid.utils;
 
 import cn.hutool.core.util.HexUtil;
 

+ 44 - 0
src/main/java/com/gzlh/device/rfid/utils/RFIDCommandUtils.java

@@ -0,0 +1,44 @@
+package com.gzlh.device.rfid.utils;
+
+import cn.hutool.core.util.HexUtil;
+import cn.hutool.core.util.StrUtil;
+import lombok.extern.slf4j.Slf4j;
+
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+@Slf4j
+public class RFIDCommandUtils {
+    /**
+     * header+length+address+cmd+params+check_num
+     * Header:1个字节,包头,固定为40H。
+     * Length:2个字节,包有效长度。该长度为后4个部分(Address+Cmd+Param+Check)的总字节数。先发高字节,后发低字节。例如:长度为270字节时,发送顺序为01H 0EH。
+     * Address:1个字节,用于指定要控制设备的RS485地址,该字段只在RS485通信时有效,当不使用RS485通信时,随意发送1个字节的数据即可。当使用RS485通信时,将此参数设置为0或者255表示广播命令,所有连在RS485总线上的读写器会执行广播命令,但是不会返回响应给上位机。
+     * Cmd:1个字节,命令码。
+     * Param:若干字节,命令参数,其长度随命令而变化。
+     * Check:1个字节,校验和。Header+Length+Address+Cmd+Param求和后取反加1。
+     *
+     * @return
+     */
+    public static String buildWanQuanCommand(String cmd, String[]params){
+        final String head="40";
+        final String address="00";
+        String param= String.join("", params);
+        int len= 1+1+param.length()/2+1;
+        String lenHex= HexUtil.toHex(len);
+        if (len<16){
+            lenHex="000"+lenHex;
+        }else if (len<32){
+            lenHex="00"+lenHex;
+        }
+        String packData=head+lenHex+address+cmd+param;
+        String checkNum=CheckNumUtils.calculateChecksum(packData);
+//        log.info("pack:{}",packData+checkNum);
+        return (packData+checkNum).toUpperCase();
+
+    }
+
+
+}

+ 4 - 0
src/main/java/com/gzlh/startup/StartupRunner.java

@@ -5,19 +5,23 @@ import cn.hutool.core.util.RandomUtil;
 import com.gzlh.background.BackgroundClientNetty;
 import com.gzlh.bus.SysConfig;
 import com.gzlh.bus.task.CheckInitTask;
+import com.gzlh.config.SystemObject;
 import com.gzlh.config.dto.CaputreSetting;
 import com.gzlh.config.dto.SerialSetting;
 import com.gzlh.config.ModuleEnum;
+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.capture.brand.CaptureBrandType;
 import com.gzlh.device.electron.client.ElectronNettyConfig;
+import com.gzlh.device.rfid.client.ElectronNettyConfig;
 import com.gzlh.device.led.client.LedNettyConfig;
 import com.gzlh.device.plc.client.PlcNettyConfig;
 import com.gzlh.device.plc.job.SearchJob;
 import com.gzlh.device.print.client.PrintNettyConfig;
+import com.gzlh.device.rfid.enums.CardType;
 import com.gzlh.device.weighbridge.client.WeighbridgeNettyConfig;
 
 import com.gzlh.hx.handler.InitHxSDK;

+ 1 - 2
src/main/java/com/gzlh/utils/DeviceCache.java

@@ -4,11 +4,10 @@ package com.gzlh.utils;
 import cn.hutool.json.JSONUtil;
 import com.gzlh.bus.SysConfig;
 import com.gzlh.config.ModuleEnum;
-import com.gzlh.config.SystemObject;
 import com.gzlh.config.dto.CaputreSetting;
 import com.gzlh.config.dto.SerialSetting;
 import com.gzlh.device.capture.brand.CaptureBrandType;
-import com.gzlh.device.electron.brand.ElectronBrandType;
+import com.gzlh.device.rfid.brand.ElectronBrandType;
 import com.gzlh.device.led.brand.LedBrandType;
 import com.gzlh.device.print.brand.PrintBrandType;
 import com.gzlh.device.weighbridge.brand.WeighbridgeBrandType;