vince
2023-07-05 169e829234045a236419fdf354e1f5acaf13c6df
车牌识别调试
已修改8个文件
191 ■■■■ 文件已修改
igds-core/src/main/java/com/ld/igds/common/manager/CommonManager.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
igds-inout/src/main/java/com/ld/igds/inout/manager/InoutEventControlManager.java 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
igds-protocol-bhzn/src/main/java/com/ld/igds/protocol/bhzn/inout/BHZNWeightServiceImpl.java 101 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
igds-protocol-bhzn/src/main/java/com/ld/igds/protocol/bhzn/verb/analysis/AnalysisGas.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
igds-protocol-sdk/src/main/java/com/ld/igds/protocol/hk/HkApiInoutService.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
igds-protocol-sdk/src/main/java/com/ld/igds/protocol/hk/common/LPRCallBask_V31.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
igds-protocol-sdk/src/main/java/com/ld/igds/protocol/hk/lpr/AlarmLpr.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
igds-web/pom.xml 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
igds-core/src/main/java/com/ld/igds/common/manager/CommonManager.java
@@ -562,8 +562,9 @@
        log.debug("----------------根据用户IP获取选择-地磅----{}", userIp);
        String key = "INOUT:WEIGHT:" + userIp;
        return (String) redisUtil.get(key);
        String sort =  (String)redisUtil.get(key);
        if(StringUtils.isEmpty(sort))sort="1";
        return sort;
    }
    /**
igds-inout/src/main/java/com/ld/igds/inout/manager/InoutEventControlManager.java
@@ -6,6 +6,7 @@
import com.ld.igds.camera.data.ApiCameraResp;
import com.ld.igds.camera.data.ApiSnapReq;
import com.ld.igds.constant.BizType;
import com.ld.igds.constant.DeviceType;
import com.ld.igds.data.SnapImgDto;
import com.ld.igds.file.CoreFileService;
import com.ld.igds.inout.ApiInoutManager;
@@ -420,30 +421,41 @@
    public void onReceivePlateNum(ApiInoutData data) {
        InoutConf conf = this.getInoutConfBySn(data.getCompanyId(), data.getDeptId(), data.getSn());
        if (null == conf) return;
        if (null == conf) {
            log.error("没有获取到出入库配置CONF:"+data.toString());
            return;
        }
        log.info(conf.toString());
        if (0 == conf.getInOrder()) return;
        data = new ApiInoutData(conf);
        ApiInoutService inoutApiService = apiInoutManager.getApiService(conf.getProtocol());
        log.info(data.toString());
        ApiInoutService inoutApiService = null;
        InoutConf gateconf = null;
        //获取车牌信息,开闸机
        if (InoutApiConstant.DEVICE_CODE_1002 == data.getDeviceCode()) {
            gateconf = this.getWeightGateway(data.getCompanyId(), data.getDeptId(), null);
            if (null == gateconf) {
                log.info("----------没有获取到称重控制器--------------");
            }
            data = new ApiInoutData(gateconf);
            //开入口处道闸
            inoutApiService = apiInoutManager.getApiService(gateconf.getProtocol());
            data.setDeviceCode(InoutApiConstant.DEVICE_CODE_2002);
            data.setActionCode(InoutApiConstant.ACTION_CODE_1);
            inoutApiService.gateControl(data);
        }
        if (InoutApiConstant.DEVICE_CODE_1003 == data.getDeviceCode()) {
            gateconf = this.getWeightGateway(data.getCompanyId(), data.getDeptId(), null);
            if (null == gateconf) {
                log.info("----------没有获取到称重控制器--------------");
            }
            //开入口处道闸
            data = new ApiInoutData(gateconf);
            inoutApiService = apiInoutManager.getApiService(gateconf.getProtocol());
            data.setDeviceCode(InoutApiConstant.DEVICE_CODE_2003);
            data.setActionCode(InoutApiConstant.ACTION_CODE_1);
            inoutApiService.gateControl(data);
        }
@@ -464,7 +476,7 @@
        ApiInoutData apiInoutData;
        ApiInoutService inoutApiService;
        for (InoutConf conf : listInoutConf) {
            if (InoutConstant.CONF_TYPE_10.equals(conf.getType()) && sort.equals(conf.getSort())) {
            if (InoutConstant.PROGRESS_WEIGHT_TAG.equals(conf.getInoutProgress())&&InoutConstant.CONF_TYPE_10.equals(conf.getType()) && sort.equals(conf.getSort())) {
                apiInoutData = new ApiInoutData(conf);
                inoutApiService = apiInoutManager.getApiService(conf.getProtocol());
                inoutApiService.initLpr(apiInoutData);
@@ -515,9 +527,9 @@
        if (InoutConstant.TYPE_IN.equals(data.getType())) {
            //结算重量大于0表示二次称重
            if (data.getNetWeight() > 0) {
                apiData.setDeviceCode(InoutApiConstant.DEVICE_CODE_1002);
                apiData.setDeviceCode(InoutApiConstant.DEVICE_CODE_2002);
            } else {
                apiData.setDeviceCode(InoutApiConstant.DEVICE_CODE_1003);
                apiData.setDeviceCode(InoutApiConstant.DEVICE_CODE_2003);
            }
            apiData.setActionCode(InoutApiConstant.ACTION_CODE_1);
@@ -525,9 +537,9 @@
        } else {
            //结算重量大于0表示二次称重
            if (data.getNetWeight() > 0) {
                apiData.setDeviceCode(InoutApiConstant.DEVICE_CODE_1003);
                apiData.setDeviceCode(InoutApiConstant.DEVICE_CODE_2002);
            } else {
                apiData.setDeviceCode(InoutApiConstant.DEVICE_CODE_1002);
                apiData.setDeviceCode(InoutApiConstant.DEVICE_CODE_2003);
            }
            apiData.setActionCode(InoutApiConstant.ACTION_CODE_1);
            inoutApiService.gateControl(apiData);
igds-protocol-bhzn/src/main/java/com/ld/igds/protocol/bhzn/inout/BHZNWeightServiceImpl.java
@@ -1,16 +1,23 @@
package com.ld.igds.protocol.bhzn.inout;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.ld.igds.inout.ApiInoutService;
import com.ld.igds.inout.InoutApiConstant;
import com.ld.igds.inout.InoutConstant;
import com.ld.igds.inout.dto.ApiInoutData;
import com.ld.igds.inout.dto.InoutData;
import com.ld.igds.io.constant.ProtocolEnum;
import com.ld.igds.protocol.bhzn.inout.client.BHZNClientEngine;
import com.ld.igds.protocol.bhzn.utils.CRC16;
import com.ld.igds.util.BytesUtil;
import com.ld.io.api.InvokeResult;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import java.io.UnsupportedEncodingException;
import java.util.HashMap;
import java.util.Map;
/**
 * @Desc: 地磅主控协议实现,出入库相关接口
@@ -57,18 +64,41 @@
    @Override
    public String gateControl(ApiInoutData param) {
        try{
//           ReqGate reqGate = new ReqGate();
            log.info("BHZN出入库控制器控制道闸开始");
            String actionCode = param.getActionCode();
            BHZNClientEngine test = new BHZNClientEngine(
                    param.getIp(), param.getPort());
            test.start();
            String msg = "<BHZN>{\"cmd\":226,\"content\":{" +
                    "\"value\":[1,1]," +
                    "\"LEDValue\":[1,1]" +
                    "},\"orderId\":\"5009\",\"result\":\"\",\"sign\":\"0000\",\"stNum\":1,\"version\":\"V1.0000000\"}<END>";
            Integer[] value = new Integer[]{0,0};
            Map<String,Object> message = new HashMap<>();
            message.put("Cmd",226);
            message.put("orderId","5009");
            message.put("result","0");
            message.put("sign","0000");
            message.put("stNum",100);
            message.put("version","V1.0000000");
            message.put("sn","1000000001");
            Map<String,Object> content = new HashMap<>();
//            String msg = "<BHZN>{\"cmd\":226,\"content\":{" ;
            if(InoutApiConstant.DEVICE_CODE_2002 == param.getDeviceCode()){
                content.put("value",new Integer[]{1,0});
                content.put("LEDValue",new Integer[]{1,0});
//                msg +=  "\"value\":[1,0]," ;
//                msg+= "\"LEDValue\":[1,0]" ;
            }
            if(InoutApiConstant.DEVICE_CODE_2003 == param.getDeviceCode()){
                content.put("value",new Integer[]{0,1});
                content.put("LEDValue",new Integer[]{0,1});
            }
            message.put("content", content);
//            msg+=      "},\"orderId\":\"5009\",\"result\":\"\",\"sign\":\"0000\",\"stNum\":100,\"version\":\"V1.0000000\"}<END>";
            // Thread.sleep(3000L);
             Thread.sleep(3000L);
                        String msg = "<BHZN>" + JSON.toJSONString(message) + "<END>" ;
            InvokeResult result = test.send(msg.getBytes());
            log.info("BHZN出入库控制器控制道闸结束,MSG=" +msg);
            log.info("result=" +result.getMessage());
            test.send(BytesUtil.hexStrToBytes(msg));
        }catch (Exception e){
            log.error(e.getMessage(),e);
            return "ERROR";
@@ -129,30 +159,41 @@
    public static void main(String[] args) {
        try{
            String str1 = "许彬",str2="粤A123456",str3 = "3号仓" ,str4 = "小麦",str5="286000",str6 = "30000",str7 ="合格";
            String test = "我爱中航软件";
            //78340100290000000000000000 1400 0B00 01 02 00 01 0C 00
//        try{
//            String str1 = "许彬",str2="粤A123456",str3 = "3号仓" ,str4 = "小麦",str5="286000",str6 = "30000",str7 ="合格";
//            String test = "我爱中航软件";
//            //78340100290000000000000000 1400 0B00 01 02 00 01 0C 00
//            String start = "FFFFFFFFFF00000000";
//            String lengh = BytesUtil.tran_LH(BytesUtil.intToHexStr(8+(test.length() * 2)));
//            String msg = "78340100290000000000000000" + lengh+ "0B00010201010C00";
//            msg = msg + convertStr(test);
//            msg = msg.toUpperCase();
//
////        String t = "78 34 01 00 29 BC FD 00 00 00 00 00 00 14 00 01 00 01 02 06 01 0C 00 CE D2 B0 AE D6 D0 BA BD C8 ED BC FE";
////         t =   t.replaceAll(" ","");
//            String check = BytesUtil.tran_LH(BytesUtil.intToHexStr(CRC16.calcCrc16(BytesUtil.hexStrToBytes(msg))));
//            System.out.println(check);
//
//            msg+=check;
//            msg += "A5";
//            msg = start +msg;
//            System.out.println(msg);
//        }catch (Exception e){
//            e.printStackTrace();
//        }
            String lengh = BytesUtil.tran_LH(BytesUtil.intToHexStr(8+test.length()));
            String msg = "78340100290000000000000000 " + lengh+ "0B00010200010C00";
            msg = msg + convertStr(test);
            msg = msg.toUpperCase();
//        String t = "78 34 01 00 29 BC FD 00 00 00 00 00 00 14 00 01 00 01 02 06 01 0C 00 CE D2 B0 AE D6 D0 BA BD C8 ED BC FE";
//         t =   t.replaceAll(" ","");
            String check = BytesUtil.tran_LH(BytesUtil.intToHexStr(CRC16.calcCrc16(BytesUtil.hexStrToBytes(msg))));
            System.out.println(check);
            msg+=check;
            msg += "A5";
            System.out.println(msg);
        }catch (Exception e){
            e.printStackTrace();
        }
        Map<String,Object> message = new HashMap<>();
        message.put("cmd",226);
        message.put("orderId","5009");
        message.put("result","0");
        message.put("sign","0000");
        message.put("stNum",100);
        message.put("version","V1.0000000");
        Map<String,Object> content = new HashMap<>();
            content.put("value",new Integer[]{0,1});
            content.put("LEDValue",new Integer[]{0,1});
        message.put("content", content);
        System.out.println(JSON.toJSONString(message));
    }
igds-protocol-bhzn/src/main/java/com/ld/igds/protocol/bhzn/verb/analysis/AnalysisGas.java
@@ -18,6 +18,7 @@
import com.ld.igds.temp.dto.TempParam;
import com.ld.igds.util.BytesUtil;
import com.ld.igds.util.ContextUtil;
import com.ld.igds.util.NumberUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@@ -79,6 +80,7 @@
        Integer[] n2ValArray = res209.getN2ValArray();
        Integer[] pH3ValArray = res209.getPH3ValArray();
        Integer[] cO2ValArray = res209.getCO2ValArray();
        double sumO2 = 0.0, sumCo2 = 0.0, sumPh3 = 0.0, sumN2 = 0.0;
        for (int i=0;i<res209.getCO2ValArray().length;i++){
            info = new GasInfo();
            info.setId(ContextUtil.buildInfoId(gas.getCompanyId(), gas.getDepotId(), gas.getBatchId()));
@@ -130,7 +132,10 @@
            if (info.getPerN2() < gas.getPerN2Min()) {
                gas.setPerN2Min(info.getPerN2());
            }
            sumO2 += info.getPerO2();
            sumCo2 += info.getPerCo2();
            sumPh3 += info.getPerPh3();
            sumN2 += info.getPerN2();
            //固定为:passCode,co2,o2,ph3,n2;passCode,co2,o2,ph3,n2;"
            sb.append(info.getPassCode());
            sb.append(",");
@@ -143,6 +148,13 @@
            sb.append(info.getPerN2());
            sb.append(";");
        }
        if(res209.getCO2ValArray().length>1){
            gas.setPerCo2(NumberUtil.keepPrecision(sumCo2/res209.getCO2ValArray().length, 2));
            gas.setPerO2(NumberUtil.keepPrecision(sumO2/res209.getCO2ValArray().length, 2));
            gas.setPerN2(NumberUtil.keepPrecision(sumN2/res209.getCO2ValArray().length, 2));
            gas.setPerPh3(NumberUtil.keepPrecision(sumPh3/res209.getCO2ValArray().length, 2));
        }
        gas.setPoints(sb.toString());
        gasService.saveInfoGas(items);
igds-protocol-sdk/src/main/java/com/ld/igds/protocol/hk/HkApiInoutService.java
@@ -77,7 +77,7 @@
            }
            // 登陆
            msg = alarmLpr.login(param.getDeviceCode(), param.getIp(), param.getPort(), param.getLoginId(), param.getPwd());
            msg = alarmLpr.login(param.getChanNum(), param.getIp(), param.getPort(), param.getLoginId(), param.getPwd());
            if (HKConstant.RESULT_SUCCESS.equals(msg)) {
                param.setStatus(Constant.YN_Y);
@@ -90,7 +90,8 @@
            return msg;
        } catch (Exception e) {
            log.error("----------------初始化车牌识别执行识别----------------------");
            log.error("----------------初始化车牌识别执行识别失败----------------------");
            log.error(e.getMessage(),e);
        }
        return null;
igds-protocol-sdk/src/main/java/com/ld/igds/protocol/hk/common/LPRCallBask_V31.java
@@ -65,7 +65,9 @@
                    log.info("车牌号:" + sLicense + ":车辆类型:" + VehicleType + ":监控点编号:" + MonitoringSiteID + "-设备IP=" + deviceIp + "-SN=" + deviceSn);
                    ApiInoutData data = HKConstant.getDataBySn(deviceSn);
                    if (null != data) {
                        log.info(data.toString());
                        data.setPlateNum(sLicense.substring(1));
                        data.setErrorMsg(HKConstant.RESULT_SUCCESS);
                        data.setTime(new Date());
@@ -73,9 +75,11 @@
                        if (inoutEventControlManager == null) {
                            inoutEventControlManager = SpringUtil.getBean(InoutEventControlManager.class);
                            inoutEventControlManager.onReceivePlateNum(data);
                        }
                        }
                        inoutEventControlManager.onReceivePlateNum(data);
                    }else{
                        log.error("没有获取到车牌识别的配置!");
                    }
                } catch (IOException e) {
igds-protocol-sdk/src/main/java/com/ld/igds/protocol/hk/lpr/AlarmLpr.java
@@ -164,7 +164,7 @@
        }
        log.debug(ip + ":设备登录成功!");
        log.info(ip + ":车牌识别设备登录成功!");
        return HKConstant.RESULT_SUCCESS;
    }
igds-web/pom.xml
@@ -183,7 +183,21 @@
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>com.ld.igds</groupId>
            <artifactId>igds-protocol-sdk</artifactId>
            <version>${igds.version}</version>
            <exclusions>
                <exclusion>
                    <artifactId>slf4j-log4j12</artifactId>
                    <groupId>org.slf4j</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>log4j</artifactId>
                    <groupId>log4j</groupId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>
    <dependencyManagement>