jiazx0107@163.com
2023-05-29 135e1039d78e767536d91bcbce04d2efedb2f7b2
出入库优化-登记1
已重命名2个文件
已删除2个文件
已修改14个文件
已添加1个文件
1240 ■■■■ 文件已修改
igds-core/src/main/java/com/ld/igds/common/impl/CommonDataServiceImpl.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
igds-core/src/main/java/com/ld/igds/constant/RedisConst.java 54 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
igds-core/src/main/java/com/ld/igds/inout/ApiInoutManager.java 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
igds-core/src/main/java/com/ld/igds/inout/ApiInoutService.java 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
igds-core/src/main/java/com/ld/igds/inout/dto/ApiInoutData.java 32 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
igds-core/src/main/java/com/ld/igds/io/InoutApiService.java 106 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
igds-core/src/main/java/com/ld/igds/io/impl/DefaultInoutApiServiceImpl.java 38 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
igds-core/src/main/java/com/ld/igds/models/InoutConf.java 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
igds-inout/src/main/java/com/ld/igds/inout/controller/InoutController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
igds-inout/src/main/java/com/ld/igds/inout/controller/InoutDeviceController.java 43 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
igds-inout/src/main/java/com/ld/igds/inout/manager/InoutDeviceManager.java 47 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
igds-inout/src/main/java/com/ld/igds/io/notify/NotifyLprService.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
igds-inout/src/main/java/com/ld/igds/io/notify/impl/NotifyLprServiceImpl.java 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
igds-inout/src/main/java/com/ld/igds/m/view/InoutConf.view.xml 59 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
igds-protocol-block/src/main/java/com/ld/igds/protocol/weight/FzzyWeightServiceImpl.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
igds-protocol-block/src/main/java/com/ld/igds/protocol/weight/WeightGatewayRemoteTask.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
igds-web/src/main/resources/static/admin/inout/style.css 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
igds-web/src/main/resources/static/favicon-fzzy.ico 补丁 | 查看 | 原始文档 | blame | 历史
igds-web/src/main/resources/templates/admin/inout/in-register.html 655 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
igds-core/src/main/java/com/ld/igds/common/impl/CommonDataServiceImpl.java
@@ -7,7 +7,6 @@
import com.ld.igds.common.dto.THDto;
import com.ld.igds.common.mapper.CommonMapper;
import com.ld.igds.constant.Constant;
import com.ld.igds.constant.DepotStatus;
import com.ld.igds.constant.RedisConst;
import com.ld.igds.inout.InoutConstant;
import com.ld.igds.inout.dto.InoutData;
@@ -19,7 +18,6 @@
import com.ld.igds.util.RedisUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.dom4j.CDATA;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
igds-core/src/main/java/com/ld/igds/constant/RedisConst.java
@@ -72,127 +72,127 @@
    /**
     * ä»“库列表KEY
     */
    public static final String KEY_DEPOT = "KEY_DEPOT";
    public static final String KEY_DEPOT = "DEPOT_DATA";
    /**
     * ä»“库参数列表KEY
     */
    public static final String KEY_DEPOT_CONF = "KEY_DEPOT_CONF";
    public static final String KEY_DEPOT_CONF = "DEPOT_CONF";
    /**
     * åˆ†æœºåˆ—表KEY
     */
    public static final String KEY_DEVICE_SER_LIST = "KEY_SER_LIST";
    public static final String KEY_DEVICE_SER_LIST = "SER_LIST";
    /**
     * è®¾å¤‡åˆ—表
     */
    public static final String KEY_DEVICE_LIST = "KEY_DEVICE_LIST";
    public static final String KEY_DEVICE_LIST = "DEVICE_LIST";
    /**
     * è®¾å¤‡åˆ—表
     */
    public static final String KEY_DEVICE_IOT_LIST = "KEY_DEVICE_IOT_LIST";
    public static final String KEY_DEVICE_IOT_LIST = "DEVICE_IOT_LIST";
    /**
     * ä»“库和分机的多对多关系集合
     */
    public static final String KEY_DEPOT_SER_LIST = "KEY_DEPOT_SER_LIST";
    public static final String KEY_DEPOT_SER_LIST = "DEPOT_SER_LIST";
    /**
     * å»ºç­‘物信息
     */
    public static final String KEY_BUILDING_LIST = "KEY_BUILDING_LIST";
    public static final String KEY_BUILDING_LIST = "BUILDING_LIST";
    /**
     * æ‰§è¡Œå‘½ä»¤KEY前缀
     */
    public static final String KEY_ORDER_PRE = "KEY_ORDER";
    public static final String KEY_ORDER_PRE = "ORDER";
    /**
     * æœ€æ–°ç²®æƒ…信息缓存列表,用于存放当前最新的粮情信息
     */
    public static final String KEY_GRAIN = "KEY_GRAIN";
    public static final String KEY_GRAIN = "GRAIN_DATA";
    /**
     * æœ€æ–°æ°”体信息缓存列表
     */
    public static final String KEY_GAS_DATA = "KEY_GAS_DATA";
    public static final String KEY_GAS_DATA = "GAS_DATA";
    /**
     * ç³»ç»Ÿé…ç½®KEY
     */
    public static final String KEY_SYS_CONF = "KEY_SYS_CONF";
    public static final String KEY_SYS_CONF = "SYS_CONF";
    /**
     * ç²®åº“的温湿度信息缓存
     */
    public static final String KEY_DEPOT_TH_PREFIX = "KEY_DEPOT_TH_PREFIX";
    public static final String KEY_DEPOT_TH_PREFIX = "DEPOT_TH_PREFIX";
    /**
     * ä»¥åˆ†æœºæˆ–者仓库为单位存储的仓温仓湿缓存标标签
     */
    public static final String KEY_T_TH = "KEY_T_TH";
    public static final String KEY_T_TH = "T_TH";
    /**
     * å­˜æ”¾æ°”象信息的KEY
     */
    public static final String KEY_WEATHER_INFO = "KEY_WEATHER_INFO";
    public static final String KEY_WEATHER_INFO = "WEATHER_INFO";
    /**
     * æ ¹æ®ä»“库编码存放最新的能耗数据信息
     */
    public static final String KEY_ES_DATA_MAP = "KEY_ES_DATA_MAP";
    public static final String KEY_ES_DATA_MAP = "ES_DATA_MAP";
    /**
     * ç³»ç»Ÿä¸­ç»„织列表
     */
    public static final String KEY_DEPT_LIST = "KEY_DEPT_LIST";
    public static final String KEY_DEPT_LIST = "DEPT_LIST";
    /**
     * åˆ¶æ°®æœºé…ç½®åˆ—表
     */
    public static final String KEY_N2_CONF_LIST = "KEY_N2_CONF_LIST";
    public static final String KEY_N2_CONF_LIST = "N2_CONF_LIST";
    /**
     * æœ€æ–°æ°”压信息缓存列表
     */
    public static final String KEY_PRESSURE_DATA = "KEY_PRESSURE_DATA";
    public static final String KEY_PRESSURE_DATA = "PRESSURE_DATA";
    /**
     * ç³»ç»Ÿé…ç½®çš„æ‘„像机信息缓存
     */
    public static final String KEY_CAMERA_LIST = "KEY_CAMERA_LIST";
    public static final String KEY_CAMERA_LIST = "CAMERA_LIST";
    /**
     * ä¸‰ç»´é…ç½®å…³è”信息key
     */
    public static final String KEY_THREE_CONF = "KEY_THREE_CONF";
    public static final String KEY_THREE_CONF = "THREE_CONF";
    /**
     * ä¸´æ—¶ç¼“å­˜KEY前缀
     */
    public static final String KEY_TEMP_PREFIX = "KEY_TEMP_";
    public static final String KEY_TEMP_PREFIX = "TEMP_";
    /**
     * æ•°é‡ç›‘测参数列表KEY--单个设备
     */
    public static final String KEY_QUANTITY_CONF = "KEY_QUANTITY_CONF";
    public static final String KEY_QUANTITY_CONF = "QUANTITY_CONF";
    /**
     * ä»“库质量巡检数据缓存
     */
    public static final String KEY_DEPOT_QUALITY = "KEY_DEPOT_QUALITY";
    public static final String KEY_DEPOT_QUALITY = "DEPOT_QUALITY";
    /**
     * ä»“库液位数据缓存
     */
    public static final String KEY_DEPOT_HEIGHT = "KEY_DEPOT_HEIGHT";
    public static final String KEY_DEPOT_HEIGHT = "DEPOT_HEIGHT";
    /**
     * ä»“库物联网关iot设备温湿度缓存key
     */
    public static final String KEY_IOT_DEPOT_TEMP_HUM = "KEY_IOT_DEPOT_TEMP_HUM";
    public static final String KEY_IOT_DEPOT_TEMP_HUM = "IOT_DEPOT_TEMP_HUM";
    /**
     * å•个数量检测服务
     */
@@ -201,11 +201,11 @@
    /**
     * è­¦å‘Šé…ç½®åˆ—表KEY
     */
    public static final String KEY_WARN_CONF = "KEY_WARN_CONF";
    public static final String KEY_WARN_CONF = "WARN_CONF";
    /**
     * é—¨ç£è®¾å¤‡é…ç½®åˆ—表
     */
    public static final String KEY_DOOR_SENSOR_LIST = "KEY_DOOR_SENSOR_LIST";
    public static final String KEY_DOOR_SENSOR_LIST = "DOOR_SENSOR_LIST";
}
igds-core/src/main/java/com/ld/igds/inout/ApiInoutManager.java
ÎļþÃû´Ó igds-inout/src/main/java/com/ld/igds/inout/manager/ApiInoutManager.java ÐÞ¸Ä
@@ -1,6 +1,5 @@
package com.ld.igds.inout.manager;
package com.ld.igds.inout;
import com.ld.igds.io.InoutApiService;
import com.ld.igds.io.constant.ProtocolEnum;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
@@ -20,12 +19,12 @@
public class ApiInoutManager implements ApplicationContextAware {
    public static Map<String, InoutApiService> remoteMap = new HashMap<>();
    public static Map<String, ApiInoutService> remoteMap = new HashMap<>();
    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        Map<String, InoutApiService> grainMap = applicationContext.getBeansOfType(InoutApiService.class);
        Map<String, ApiInoutService> grainMap = applicationContext.getBeansOfType(ApiInoutService.class);
        for (String key : grainMap.keySet()) {
            remoteMap.put(grainMap.get(key).getProtocol(), grainMap.get(key));
@@ -38,8 +37,8 @@
     * @param protocol æ‰€å±žåè®®
     * @return
     */
    public InoutApiService getApiService(String protocol) {
        InoutApiService apiService = remoteMap.get(protocol);
    public ApiInoutService getApiService(String protocol) {
        ApiInoutService apiService = remoteMap.get(protocol);
        if (null == apiService) {
            apiService = remoteMap.get(ProtocolEnum.TCP_DEFAULT.getCode());
        }
igds-core/src/main/java/com/ld/igds/inout/ApiInoutService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,74 @@
package com.ld.igds.inout;
import com.ld.igds.inout.dto.ApiInoutData;
/**
 * @Desc: å‡ºå…¥åº“相关设备调用接口
 * @author: Andy
 * @update-time: 2023/5/29
 */
public interface ApiInoutService {
    /**
     * èŽ·å–åè®®
     *
     * @return
     */
    String getProtocol();
    /**
     * é€šè¿‡åè®®èŽ·å–ä¸€å¡é€šçš„ç»“æžœ
     *
     * @param param
     * @return
     */
    ApiInoutData getIcCardNum(ApiInoutData param);
    /**
     * èŽ·å–è½¦ç‰Œè¯†åˆ«ç»“æžœ
     *
     * @param param
     * @return
     */
    ApiInoutData getPlateNum(ApiInoutData param);
    /**
     * è½¦ç‰Œè¯†åˆ«åˆå§‹åŒ–
     *
     * @param param
     * @return
     */
    String initLpr(ApiInoutData param);
    /**
     * é—¸æœºæŽ§åˆ¶-actionCode和 deviceId
     *
     * @param param
     * @return
     */
    String gateControl(ApiInoutData param);
    /**
     * è¯­éŸ³æ’­æ”¾--远程调用语音播放
     *
     * @param param actionCode å’Œ msg不可为空
     * @return
     */
    String noticeRadio(ApiInoutData param);
    /**
     * LED屏幕推送信息
     *
     * @param param actionCode å’Œ msg不可为空
     * @return
     */
    String noticeLed(ApiInoutData param);
}
igds-core/src/main/java/com/ld/igds/inout/dto/ApiInoutData.java
ÎļþÃû´Ó igds-core/src/main/java/com/ld/igds/inout/dto/InoutApiData.java ÐÞ¸Ä
@@ -11,28 +11,19 @@
 * å‡ºå…¥åº“流程过程中,车牌失败,读卡器等设备的公共参数和传递对象
 */
@Data
public class InoutApiData implements Serializable {
public class ApiInoutData implements Serializable {
    private static final long serialVersionUID = 1L;
    @PropertyDef(label = "主键")
    private String id;
    @PropertyDef(label = "组织编码")
    private String companyId;
    @PropertyDef(label = "所属库点")
    private String deptId;
    @PropertyDef(label = "出入库配套序号")
    private String sort = "1";
    @PropertyDef(label = "设备顺序")
    private int inOrder = 1;
    @PropertyDef(label = "所属流程")
    private String inoutProgress;
    @PropertyDef(label = "设备名称")
    private String name;
@@ -40,10 +31,8 @@
    @PropertyDef(label = "设备序列号/设备编码")
    private String sn;
    @PropertyDef(label = "分机IP")
    private String ip;
    @PropertyDef(label = "分机端口")
    private Integer port;
    @PropertyDef(label = "帐号")
@@ -57,9 +46,6 @@
    @PropertyDef(label = "控制端口")
    private Integer portCtrl;
    @PropertyDef(label = "WEB端口")
    private Integer portWeb;
    @PropertyDef(label = "设备类型")
    private String type;
@@ -88,9 +74,6 @@
    private Date time = new Date();
    //设备编码
//    private String deviceId;
    //信息
    private String msg;
@@ -103,18 +86,22 @@
    //称重信息
    private double weight = 0.0;
    //动作编码,例如开闸机-关闸机等
    private String actionCode;
    public InoutApiData() {
    //动作编码,设备编号
    private String deviceId;
    public ApiInoutData() {
        super();
    }
    public InoutApiData(InoutConf conf) {
    public ApiInoutData(InoutConf conf) {
        this.id = conf.getId();
        this.companyId = conf.getCompanyId();
        this.deptId = conf.getDeptId();
        this.sort = conf.getSort();
        this.inOrder = conf.getInOrder();
        this.inoutProgress = conf.getInoutProgress();
        this.name = conf.getName();
        this.sn = conf.getSn();
        this.ip = conf.getIp();
@@ -123,7 +110,6 @@
        this.pwd = conf.getPwd();
        this.chanNum = conf.getChanNum();
        this.portCtrl = conf.getPortCtrl();
        this.portWeb = conf.getPortWeb();
        this.type = conf.getType();
        this.status = conf.getStatus();
        this.protocol = conf.getProtocol();
igds-core/src/main/java/com/ld/igds/io/InoutApiService.java
ÎļþÒÑɾ³ý
igds-core/src/main/java/com/ld/igds/io/impl/DefaultInoutApiServiceImpl.java
@@ -1,7 +1,7 @@
package com.ld.igds.io.impl;
import com.ld.igds.inout.dto.InoutApiData;
import com.ld.igds.io.InoutApiService;
import com.ld.igds.inout.dto.ApiInoutData;
import com.ld.igds.inout.ApiInoutService;
import com.ld.igds.io.constant.ProtocolEnum;
import org.springframework.stereotype.Repository;
@@ -9,7 +9,7 @@
 * @author
 */
@Repository
public class DefaultInoutApiServiceImpl implements InoutApiService {
public class DefaultInoutApiServiceImpl implements ApiInoutService {
    @Override
    public String getProtocol() {
@@ -17,52 +17,32 @@
    }
    @Override
    public InoutApiData getPlateNum(InoutApiData param) {
    public ApiInoutData getPlateNum(ApiInoutData param) {
        return param;
    }
    @Override
    public String reConnectLpr(InoutApiData param) {
    public String initLpr(ApiInoutData param) {
        return null;
    }
    @Override
    public String initLpr(InoutApiData param) {
    public String gateControl(ApiInoutData param) {
        return null;
    }
    @Override
    public String gateControl(InoutApiData param) {
    public String noticeRadio(ApiInoutData param) {
        return null;
    }
    @Override
    public String addWhitePlate(InoutApiData param) {
    public String noticeLed(ApiInoutData param) {
        return null;
    }
    @Override
    public String delWhitePlate(InoutApiData apiData) {
        return null;
    }
    @Override
    public String noticeRadio(InoutApiData param) {
        return null;
    }
    @Override
    public String gatewayStatus(InoutApiData param) {
        return null;
    }
    @Override
    public String noticeWeightDone(InoutApiData param) {
        return null;
    }
    @Override
    public InoutApiData getIcCardNum(InoutApiData param) {
    public ApiInoutData getIcCardNum(ApiInoutData param) {
        return null;
    }
igds-core/src/main/java/com/ld/igds/models/InoutConf.java
@@ -31,7 +31,7 @@
    private String companyId;
    @Column(name = "DEPT_ID_", length = 40)
    @PropertyDef(label = "所属库点")
    @PropertyDef(label = "所属库区")
    private String deptId;
    @Column(name = "SORT_", length = 2)
@@ -78,9 +78,9 @@
    @PropertyDef(label = "控制端口")
    private Integer portCtrl;
    @Column(name = "PORT_WEB_")
    @PropertyDef(label = "WEB端口")
    private Integer portWeb;
//    @Column(name = "PORT_WEB_")
//    @PropertyDef(label = "WEB端口")
//    private Integer portWeb;
    @Column(name = "TYPE_", length = 10)
    @PropertyDef(label = "设备类型")
@@ -91,7 +91,7 @@
    private String status;
    @Column(name = "PROTOCOL_", length = 40)
    @PropertyDef(label = "分机协议", description = "不同厂商有不同的协议")
    @PropertyDef(label = "协议", description = "不同厂商有不同的协议")
    private String protocol;
    @Column(name = "PLAY_TYPE_", length = 25)
@@ -133,7 +133,6 @@
        this.pwd = conf.getPwd();
        this.chanNum = conf.getChanNum();
        this.portCtrl = conf.getPortCtrl();
        this.portWeb = conf.getPortWeb();
        this.type = conf.getType();
        this.status = conf.getStatus();
        this.protocol = conf.getProtocol();
igds-inout/src/main/java/com/ld/igds/inout/controller/InoutController.java
@@ -89,10 +89,10 @@
        // èŽ·å–å‡ºå…¥åº“é…ç½®ä¿¡æ¯
        List<InoutConf> listInoutConf = inoutCommonManager.getListInoutConf(user.getCompanyId(), deptId);
        // è½¦ç‰Œè¯†åˆ«å‚数封装
        InoutConf conf = inoutCommonManager.getInoutConf(listInoutConf, sort, InoutConstant.CONF_TYPE_10, InoutConstant.PROGRESS_REGISTER, 1);
        if(null != conf) conf.setSort(sort);
        view.addObject("lprDto", conf);
        //初始化车牌识别
igds-inout/src/main/java/com/ld/igds/inout/controller/InoutDeviceController.java
@@ -2,7 +2,7 @@
import com.ld.igds.constant.RespCodeEnum;
import com.ld.igds.data.PageResponse;
import com.ld.igds.inout.dto.InoutApiData;
import com.ld.igds.inout.dto.ApiInoutData;
import com.ld.igds.inout.dto.InoutCameraDto;
import com.ld.igds.inout.dto.InoutSnapImgDto;
import com.ld.igds.inout.manager.InoutDeviceManager;
@@ -35,7 +35,7 @@
     */
    @ResponseBody
    @RequestMapping("/flush-lpr")
    public PageResponse<InoutApiData> flushPlate(@RequestBody InoutApiData param) {
    public PageResponse<ApiInoutData> flushPlate(@RequestBody ApiInoutData param) {
        if (StringUtils.isEmpty(param.getProtocol())) {
            param.setErrorMsg("当前车牌识别未配置通讯协议,无法执行");
@@ -64,7 +64,7 @@
     */
    @ResponseBody
    @RequestMapping("/ic-card-num")
    public PageResponse<InoutApiData> getIcCardNum(@RequestBody InoutApiData param) {
    public PageResponse<ApiInoutData> getIcCardNum(@RequestBody ApiInoutData param) {
        if (StringUtils.isEmpty(param.getProtocol())) {
            param.setErrorMsg("当前智慧卡未配置通讯协议,无法执行");
@@ -84,40 +84,7 @@
        return new PageResponse<>(RespCodeEnum.CODE_1007.getCode(), param.getErrorMsg());
    }
    /**
     * é‡æ–°è¿žæŽ¥ç³»ç»Ÿ-车牌识别
     *
     * @return
     */
    @ResponseBody
    @RequestMapping("/reset-lpr")
    public PageResponse<String> resetLpr(@RequestBody InoutApiData param) {
        String result = "执行完成";
        if (StringUtils.isEmpty(param.getProtocol())) {
            result = "当前车牌识别未配置通讯协议,无法执行";
            return new PageResponse<>(RespCodeEnum.CODE_1007.getCode(), result);
        }
        if (null == param.getIp()) {
            result = "出入库配置中没有配置如入登记的车牌识别";
            return new PageResponse<>(RespCodeEnum.CODE_1007.getCode(), result);
        }
        result = inoutDeviceManager.reConnectLpr(param);
        if (null == result) {
            return new PageResponse<String>(RespCodeEnum.CODE_0000, "执行成功");
        }
        return new PageResponse<>(RespCodeEnum.CODE_1007.getCode(), result);
    }
    /**
     * å‡ºå…¥åº“视频
     *
@@ -202,7 +169,7 @@
     */
    @RequestMapping("/notice-weight-done")
    public @ResponseBody
    PageResponse<String> noticeWeightDone(@RequestBody InoutApiData param) {
    PageResponse<String> noticeWeightDone(@RequestBody ApiInoutData param) {
        String msg = inoutDeviceManager.noticeWeightDone(param);
igds-inout/src/main/java/com/ld/igds/inout/manager/InoutDeviceManager.java
@@ -6,12 +6,13 @@
import com.ld.igds.camera.data.ApiCameraResp;
import com.ld.igds.camera.data.ApiSnapReq;
import com.ld.igds.file.CoreFileService;
import com.ld.igds.inout.ApiInoutManager;
import com.ld.igds.inout.InoutConstant;
import com.ld.igds.inout.dto.InoutApiData;
import com.ld.igds.inout.dto.ApiInoutData;
import com.ld.igds.inout.dto.InoutCameraDto;
import com.ld.igds.inout.dto.InoutData;
import com.ld.igds.inout.dto.InoutSnapImgDto;
import com.ld.igds.io.InoutApiService;
import com.ld.igds.inout.ApiInoutService;
import com.ld.igds.io.constant.ProtocolEnum;
import com.ld.igds.m.service.InoutCommonService;
import com.ld.igds.models.InoutConf;
@@ -49,7 +50,7 @@
    private ApiCameraManager apiCameraManager;
    public InoutApiData getPlateNum(InoutApiData param) {
    public ApiInoutData getPlateNum(ApiInoutData param) {
        //如果使用的是地磅插件获取,则需要调整设备为地磅插件信息
        if (ProtocolEnum.TCP_FZZY_WEIGHT.getCode().equals(param.getProtocol())) {
@@ -60,7 +61,7 @@
                return param;
            }
            InoutApiData pluginWeight = new InoutApiData();
            ApiInoutData pluginWeight = new ApiInoutData();
            pluginWeight = param;
            pluginWeight.setIp(conf.getIp());
            pluginWeight.setPort(conf.getPort());
@@ -74,7 +75,7 @@
        return apiInoutManager.getApiService(param.getProtocol()).getPlateNum(param);
    }
    public InoutApiData getIcCardNum(InoutApiData param) {
    public ApiInoutData getIcCardNum(ApiInoutData param) {
        return apiInoutManager.getApiService(param.getProtocol()).getIcCardNum(param);
    }
@@ -119,14 +120,9 @@
        if (null == conf) return;
        InoutApiData lprData = new InoutApiData(conf);
        ApiInoutData lprData = new ApiInoutData(conf);
        apiInoutManager.getApiService(conf.getProtocol()).initLpr(lprData);
    }
    public String reConnectLpr(InoutApiData param) {
        return apiInoutManager.getApiService(param.getProtocol()).reConnectLpr(param);
    }
@@ -134,7 +130,7 @@
     * @param param
     * @return
     */
    public String noticeWeightDone(InoutApiData param) {
    public String noticeWeightDone(ApiInoutData param) {
        //获取称重主控器配置
        InoutConf conf = getWeightGateway(param.getCompanyId(), param.getDeptId(), param.getSort());
@@ -142,14 +138,14 @@
            return "称重主控未配置,支持失败";
        }
        InoutApiData apiData = new InoutApiData(conf);
        ApiInoutData apiData = new ApiInoutData(conf);
        apiData.setPlateNum(param.getPlateNum());
        apiData.setInoutProgress(param.getInoutProgress());
        apiData.setTime(new Date());
        InoutApiService inoutApiService = apiInoutManager.getApiService(conf.getProtocol());
        ApiInoutService inoutApiService = apiInoutManager.getApiService(conf.getProtocol());
        return inoutApiService.noticeWeightDone(apiData);
       // return inoutApiService.noticeWeightDone(apiData); TODO
        return null;
    }
    /**
@@ -215,7 +211,7 @@
            return;
        }
        InoutApiData apiData = new InoutApiData(conf);
        ApiInoutData apiData = new ApiInoutData(conf);
        apiData.setTime(new Date());
        apiData.setRepeat(2);
        apiData.setWeight(snapImgDto.getWeight());
@@ -244,13 +240,13 @@
        log.debug("-------------登记完成,增加车牌白名单-----------{}", imgDto.getPlateNum());
        InoutApiService inoutApiService = apiInoutManager.getApiService(list.get(0).getProtocol());
        ApiInoutService inoutApiService = apiInoutManager.getApiService(list.get(0).getProtocol());
        InoutApiData apiData;
        ApiInoutData apiData;
        for (InoutConf conf : list) {
            apiData = new InoutApiData(conf);
            apiData = new ApiInoutData(conf);
            apiData.setPlateNum(imgDto.getPlateNum());
            inoutApiService.addWhitePlate(apiData);
           // inoutApiService.addWhitePlate(apiData);
        }
    }
@@ -262,13 +258,14 @@
            return;
        }
        InoutApiService inoutApiService = apiInoutManager.getApiService(list.get(0).getProtocol());
        ApiInoutService inoutApiService = apiInoutManager.getApiService(list.get(0).getProtocol());
        InoutApiData apiData;
        ApiInoutData apiData;
        for (InoutConf conf : list) {
            apiData = new InoutApiData(conf);
            apiData = new ApiInoutData(conf);
            apiData.setPlateNum(data.getPlateNum());
            inoutApiService.delWhitePlate(apiData);
           // inoutApiService.delWhitePlate(apiData); TODO
        }
    }
igds-inout/src/main/java/com/ld/igds/io/notify/NotifyLprService.java
@@ -1,7 +1,7 @@
package com.ld.igds.io.notify;
import com.ld.igds.inout.dto.InoutApiData;
import com.ld.igds.inout.dto.ApiInoutData;
/**
 * è½¦ç‰Œè¯†åˆ«ä¿¡æ¯é€šçŸ¥
@@ -22,9 +22,9 @@
     * 
     * @param lprDto
     */
    void notify(InoutApiData lprDto);
    void notify(ApiInoutData lprDto);
    InoutApiData getLpr(String key);
    ApiInoutData getLpr(String key);
    void remove(String key);
@@ -33,5 +33,5 @@
     * @param sn
     * @param lprDto
     */
    void setLpr(String sn, InoutApiData lprDto);
    void setLpr(String sn, ApiInoutData lprDto);
}
igds-inout/src/main/java/com/ld/igds/io/notify/impl/NotifyLprServiceImpl.java
@@ -2,7 +2,7 @@
import com.ld.igds.constant.BizType;
import com.ld.igds.constant.RedisConst;
import com.ld.igds.inout.dto.InoutApiData;
import com.ld.igds.inout.dto.ApiInoutData;
import com.ld.igds.io.notify.NotifyLprService;
import com.ld.igds.util.ContextUtil;
import com.ld.igds.util.RedisUtil;
@@ -27,12 +27,11 @@
    @SuppressWarnings("static-access")
    @Override
    public void notify(InoutApiData plate) {
    public void notify(ApiInoutData plate) {
        if (null == plate) return;
        WebSocketPacket packet = new WebSocketPacket();
        packet.setCompanyId(ContextUtil.getDefaultCompanyId());
        packet.setBizType(BizType.INOUT_IN.getCode());
        packet.setBizTag(plate.getInoutProgress());
        packet.setUserId(plate.getUserId());
        packet.setBizId("PLATE_NUM");
        
@@ -45,9 +44,9 @@
    @Override
    public InoutApiData getLpr(String key) {
    public ApiInoutData getLpr(String key) {
        key = RedisConst.buildKey(ContextUtil.getDefaultCompanyId(),KEY_LPR,key);
        InoutApiData lprDto = (InoutApiData) redisUtil.get(key);
        ApiInoutData lprDto = (ApiInoutData) redisUtil.get(key);
        if(null == lprDto) return null;
        return lprDto;
    }
@@ -59,7 +58,7 @@
    }
    @Override
    public void setLpr(String sn, InoutApiData lprDto) {
    public void setLpr(String sn, ApiInoutData lprDto) {
        String key = RedisConst.buildKey(ContextUtil.getDefaultCompanyId(),KEY_LPR,sn);
        redisUtil.set(key,lprDto, 60 * 60);
    }
igds-inout/src/main/java/com/ld/igds/m/view/InoutConf.view.xml
@@ -103,11 +103,11 @@
      </PropertyDef>
      <PropertyDef name="ip">
        <Property></Property>
        <Property name="label">分机IP</Property>
        <Property name="label">IP地址</Property>
      </PropertyDef>
      <PropertyDef name="port">
        <Property name="dataType">Integer</Property>
        <Property name="label">分机端口</Property>
        <Property name="label">设备端口</Property>
      </PropertyDef>
      <PropertyDef name="loginId">
        <Property></Property>
@@ -119,7 +119,7 @@
      </PropertyDef>
      <PropertyDef name="chanNum">
        <Property name="dataType">int</Property>
        <Property name="label">抓拍通道</Property>
        <Property name="label">通道号</Property>
      </PropertyDef>
      <PropertyDef name="portCtrl">
        <Property name="dataType">Integer</Property>
@@ -190,7 +190,7 @@
      </PropertyDef>
      <PropertyDef name="errorMsg">
        <Property></Property>
        <Property name="label">备注信息</Property>
        <Property name="label">异常说明</Property>
      </PropertyDef>
    </DataType>
  </Model>
@@ -382,11 +382,6 @@
                <Editor/>
              </AutoFormElement>
              <AutoFormElement>
                <Property name="name">status</Property>
                <Property name="property">status</Property>
                <Editor/>
              </AutoFormElement>
              <AutoFormElement>
                <Property name="name">ip</Property>
                <Property name="property">ip</Property>
                <Editor/>
@@ -397,6 +392,29 @@
                <Editor/>
              </AutoFormElement>
              <AutoFormElement>
                <Property name="name">status</Property>
                <Property name="property">status</Property>
                <Editor/>
              </AutoFormElement>
              <AutoFormElement>
                <Property name="name">inOrder</Property>
                <Property name="property">inOrder</Property>
                <Editor/>
              </AutoFormElement>
            </AutoForm>
          </Children>
        </FieldSet>
        <FieldSet layoutConstraint="padding:10">
          <Property name="caption">摄像头配置</Property>
          <Buttons/>
          <Children>
            <AutoForm>
              <Property name="dataSet">dsMain</Property>
              <Property name="cols">*,*</Property>
              <Property name="labelAlign">right</Property>
              <Property name="labelSeparator">:</Property>
              <Property name="labelWidth">100</Property>
              <AutoFormElement>
                <Property name="name">loginId</Property>
                <Property name="property">loginId</Property>
                <Editor/>
@@ -406,19 +424,6 @@
                <Property name="property">pwd</Property>
                <Editor/>
              </AutoFormElement>
            </AutoForm>
          </Children>
        </FieldSet>
        <FieldSet layoutConstraint="padding:10">
          <Property name="caption">抓拍和其它配置</Property>
          <Buttons/>
          <Children>
            <AutoForm>
              <Property name="dataSet">dsMain</Property>
              <Property name="cols">*,*</Property>
              <Property name="labelAlign">right</Property>
              <Property name="labelSeparator">:</Property>
              <Property name="labelWidth">100</Property>
              <AutoFormElement>
                <Property name="name">chanNum</Property>
                <Property name="property">chanNum</Property>
@@ -450,16 +455,6 @@
              <AutoFormElement layoutConstraint="colSpan:2">
                <Property name="name">remark</Property>
                <Property name="property">remark</Property>
                <Editor/>
              </AutoFormElement>
              <AutoFormElement>
                <Property name="name">errorMsg</Property>
                <Property name="property">errorMsg</Property>
                <Editor/>
              </AutoFormElement>
              <AutoFormElement>
                <Property name="name">inOrder</Property>
                <Property name="property">inOrder</Property>
                <Editor/>
              </AutoFormElement>
            </AutoForm>
igds-protocol-block/src/main/java/com/ld/igds/protocol/weight/FzzyWeightServiceImpl.java
@@ -1,14 +1,17 @@
package com.ld.igds.protocol.weight;
import com.alibaba.fastjson.JSONObject;
import com.ld.igds.inout.dto.InoutApiData;
import com.ld.igds.io.InoutApiService;
import com.ld.igds.inout.dto.ApiInoutData;
import com.ld.igds.inout.ApiInoutService;
import com.ld.igds.io.constant.ProtocolEnum;
import com.ld.igds.util.HttpUtils;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.time.DateFormatUtils;
import org.springframework.stereotype.Component;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.FutureTask;
@@ -20,7 +23,7 @@
 */
@Slf4j
@Component
public class FzzyWeightServiceImpl implements InoutApiService {
public class FzzyWeightServiceImpl implements ApiInoutService {
    @Override
@@ -33,7 +36,7 @@
     * @return
     */
    @Override
    public InoutApiData getPlateNum(InoutApiData param) {
    public ApiInoutData getPlateNum(ApiInoutData param) {
        if (null == param.getSn()) {
@@ -87,18 +90,7 @@
     * @return
     */
    @Override
    public String reConnectLpr(InoutApiData param) {
        return "当前模式无需重置车牌识别";
    }
    /**
     * ä¸éœ€è¦å®žçް
     *
     * @param param
     * @return
     */
    @Override
    public String initLpr(InoutApiData param) {
    public String initLpr(ApiInoutData param) {
        return "当前模式无需初始化车牌识别";
    }
@@ -110,7 +102,7 @@
     * @return
     */
    @Override
    public String gateControl(InoutApiData param) {
    public String gateControl(ApiInoutData param) {
        return null;
    }
@@ -120,8 +112,7 @@
     * @param param deviceId和actionCode ä¸å¯ä¸ºç©º
     * @return
     */
    @Override
    public String addWhitePlate(InoutApiData param) {
    public String addWhitePlate(ApiInoutData param) {
        FutureTask<String> futureTask = new FutureTask<>(new WeightGatewayRemoteTask(param, new String[]{WeightUtil.ACTION_CODE_10}));
        ExecutorService executorService = Executors.newCachedThreadPool();
@@ -137,8 +128,7 @@
     * @param param
     * @return
     */
    @Override
    public String delWhitePlate(InoutApiData param) {
    public String delWhitePlate(ApiInoutData param) {
        FutureTask<String> futureTask = new FutureTask<>(new WeightGatewayRemoteTask(param, new String[]{WeightUtil.ACTION_CODE_11}));
        ExecutorService executorService = Executors.newCachedThreadPool();
        executorService.submit(futureTask);
@@ -154,7 +144,7 @@
     * @return
     */
    @Override
    public String noticeRadio(InoutApiData param) {
    public String noticeRadio(ApiInoutData param) {
        FutureTask<String> futureTask = new FutureTask<>(new WeightGatewayRemoteTask(param, new String[]{WeightUtil.ACTION_CODE_30}));
        ExecutorService executorService = Executors.newCachedThreadPool();
@@ -164,10 +154,6 @@
        return "SUCCESS";
    }
    @Override
    public String gatewayStatus(InoutApiData param) {
        return null;
    }
    /**
     * ç§°é‡å®Œæˆ --调用子线程实现
@@ -175,9 +161,7 @@
     * @param param
     * @return
     */
    @Override
    public String noticeWeightDone(InoutApiData param) {
    public String noticeWeightDone(ApiInoutData param) {
        FutureTask<String> futureTask = new FutureTask<>(new WeightGatewayRemoteTask(param, new String[]{WeightUtil.ACTION_CODE_60, WeightUtil.ACTION_CODE_30}));
        ExecutorService executorService = Executors.newCachedThreadPool();
        executorService.submit(futureTask);
@@ -191,7 +175,7 @@
     * @return
     */
    @Override
    public InoutApiData getIcCardNum(InoutApiData param) {
    public ApiInoutData getIcCardNum(ApiInoutData param) {
        try {
@@ -230,4 +214,10 @@
        return param;
    }
    @Override
    public String noticeLed(ApiInoutData param) {
        // TODO Auto-generated method stub
        return null;
    }
}
igds-protocol-block/src/main/java/com/ld/igds/protocol/weight/WeightGatewayRemoteTask.java
@@ -1,7 +1,7 @@
package com.ld.igds.protocol.weight;
import com.alibaba.fastjson.JSONObject;
import com.ld.igds.inout.dto.InoutApiData;
import com.ld.igds.inout.dto.ApiInoutData;
import com.ld.igds.util.HttpUtils;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.time.DateFormatUtils;
@@ -15,16 +15,16 @@
@Slf4j
public class WeightGatewayRemoteTask implements Callable<String> {
    private InoutApiData param;
    private ApiInoutData param;
    private String[] actionCodes;
    public InoutApiData getParam() {
    public ApiInoutData getParam() {
        return param;
    }
    public void setParam(InoutApiData param) {
    public void setParam(ApiInoutData param) {
        this.param = param;
    }
@@ -39,7 +39,7 @@
    public WeightGatewayRemoteTask() {
    }
    public WeightGatewayRemoteTask(InoutApiData param, String[] actionCodes) {
    public WeightGatewayRemoteTask(ApiInoutData param, String[] actionCodes) {
        this.param = param;
        this.actionCodes = actionCodes;
    }
igds-web/src/main/resources/static/admin/inout/style.css
@@ -758,7 +758,7 @@
.kccz-r-btnbox {
    width: 86px;
    width: 110px;
    position: absolute;
    right: 0;
    top: 0;
@@ -767,10 +767,32 @@
.kccz-r-btn {
    display: block;
    width: 84px;
    width: 110px;
    height: 78px;
    border: 1px solid #e7eaed;
    text-align: center;
}
.kccz-r-div{
    display: block;
    height: 78px;
    border: 1px solid #e7eaed;
    background: #53adce;
    text-align: center;
}
.kccz-r-div span{
    display: inline-block;
    width: 100px;
    margin: 10px 0 0px;
    height: 40px;
    font-size: 18px;
    font-weight: bold;
    color: #FFF;
}
.kccz-r-div p {
    color: #fff;
}
.kccz-r-btn span {
@@ -812,6 +834,7 @@
    background: #53adce;
}
.kccz-r-btn1:hover .kccz-r-pz,
.kccz-r-btn1.active .kccz-r-pz {
    background: url(../../images/icon-camera-h.png) no-repeat;
igds-web/src/main/resources/static/favicon-fzzy.ico
Binary files differ
igds-web/src/main/resources/templates/admin/inout/in-register.html
@@ -1,348 +1,324 @@
<!DOCTYPE html>
<html lang="zh-cn" xmlns:th=http://www.thymeleaf.org>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <meta name="viewport"
          content="width=device-width, initial-scale=1, maximum-scale=1">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="renderer" content="webkit">
    <title>出入库管理-入库登记</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport"
    content="width=device-width, initial-scale=1, maximum-scale=1">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="renderer" content="webkit">
<title>出入库管理-入库登记</title>
<link rel="stylesheet" type="text/css"
    th:href="@{../../static/plugins/layui/css/layui.css}">
<link rel="stylesheet" type="text/css"
    th:href="@{../../static/admin/inout/style.css}">
    <link rel="stylesheet" type="text/css"
          th:href="@{../../static/plugins/layui/css/layui.css?v=2.5.5}">
    <link rel="stylesheet" type="text/css"
          th:href="@{../../static/admin/inout/style.css}">
<style>
.display-none {
    display: none;
}
    <style>
        .display-none {
            display: none;
        }
.kccz-r-con2 {
    padding-right: 120px;
    position: relative;
    margin-top: 10px;
    z-index: 99;
}
        .kccz-r-con2 {
            /* height: 230px; */
            padding-right: 120px;
            position: relative;
            margin-top: 10px;
            z-index: 99;
        }
.kccz-r-vedio {
    width: 100%;
    height: 280px;
    background: #000;
    color: #FFF;
    text-align: center;
}
        .kccz-r-vedio {
            width: 100%;
            height: 280px;
            /*     background: #dee6ec; */
            background: #000;
            color: #FFF;
            text-align: center;
        }
.layui-form-label {
    font-weight: bold;
}
        .kccz-r-btnbox {
            width: 100px;
            position: absolute;
            right: 0px;
            top: 0px;
            z-index: 99;
        }
.iframe-video {
    position: absolute;
    visibility: inherit;
    top: 0px;
    left: 0px;
    z-index: -1;
    width: 100%;
    height: 100%;
}
        .layui-form-label {
            font-weight: bold;
        }
.ckdj-radiobox .layui-form-item {
    margin-bottom: 0px;
    margin-top: 10px;
}
        .iframe-video {
            position: absolute;
            visibility: inherit;
            top: 0px;
            left: 0px;
            z-index: -1;
            width: 100%;
            height: 100%;
        }
.rk-step-wrap {
    padding: 0px;
    border-bottom: 0px;
    text-align: center;
}
        .ckdj-radiobox .layui-form-item {
            margin-bottom: 0px;
            margin-top: 10px;
        }
.qyzj-btnbox .rkbk-quick {
    margin-top: 15px !important;
}
        .rk-step-wrap {
            padding: 0px;
            border-bottom: 0px;
            text-align: center;
        }
.color-red {
    color: red !important;
}
        .qyzj-btnbox .rkbk-quick {
            margin-top: 15px !important;
        }
.layui-form-item .layui-input-inline {
    width: unset;
}
        .color-red {
            color: red !important;
        }
.rkbk-search-input {
    background: #FFF !important;
}
        .layui-form-item .layui-input-inline {
            width: unset;
        }
        .rkbk-search-input{
            background: #FFF !important;
        }
        .rkbk-search-input.bg-date {
             background: #FFF !important;
        }
    </style>
.rkbk-search-input.bg-date {
    background: #FFF !important;
}
</style>
</head>
<body>
<div class="l-container layui-clear">
    <div class="rk-main">
    <div class="l-container layui-clear">
        <div class="rk-main">
        <!-- æ“ä½œèœå•-->
        <div class="qyzj-btnbox layui-clear">
            <div class="rkbk-quick fl">
                <button class="rkbk-quick-btn layui-btn btn-red"
                        onclick="resetForm()">
                    <i><img th:src="@{../../static/images/icon-clear.png}"/></i> æ¸…空数据
                </button>
                <button class="rkbk-quick-btn layui-btn btn-green"
                        onclick="submit()">
                    <i><img th:src="@{../../static/images/icon-ok.png}"/></i> å®Œæˆç™»è®°
                </button>
            <!-- æ“ä½œèœå•-->
            <div class="qyzj-btnbox layui-clear">
                <div class="rkbk-quick fl">
                    <button class="rkbk-quick-btn layui-btn btn-red"
                        onclick="resetForm()">
                        <i><img th:src="@{../../static/images/icon-clear.png}" /></i> æ¸…空数据
                    </button>
                    <button class="rkbk-quick-btn layui-btn btn-green"
                        onclick="submit()">
                        <i><img th:src="@{../../static/images/icon-ok.png}" /></i> å®Œæˆç™»è®°
                    </button>
                </div>
                <button class="rkbk-quick-btn layui-btn btn-violet"
                        onclick="resetPlateNum()">
                    <i><img th:src="@{../../static/images/icon-che.png}"/></i>重置车牌识别
                </button>
            </div>
                <!--流程引导-->
                <div class="rk-step-wrap fr">
                    <ul class="rk-step">
                        <li id="progress-register" class="active rk-step-first"><span
                            class="rk-step-span"> <img
                                th:src="@{../../static/images/icon-dengji.png}" />
                        </span>
                            <p>入库登记</p></li>
                        <li id="progress-check"><span class="rk-step-span"> <img
                                th:src="@{../../static/images/icon-zhijian.png}" />
                        </span>
                            <p>扦样质检</p></li>
                        <li id="progress-fullWeight"><span class="rk-step-span">
                                <img th:src="@{../../static/images/icon-chengzhong.png}" />
                        </span>
                            <p>满车称重</p></li>
                        <li id="progress-hand"><span class="rk-step-span"> <img
                                th:src="@{../../static/images/icon-xiehuo.png}" />
                        </span>
                            <p>入库值仓</p></li>
                        <li id="progress-emptyWeight"><span class="rk-step-span">
                                <img th:src="@{../../static/images/icon-chengzhong.png}" />
                        </span>
                            <p>空车称重</p></li>
                        <li id="progress-cardBack"><span class="rk-step-span">
                                <img th:src="@{../../static/images/icon-banli.png}" />
                        </span>
                            <p>离库确认</p></li>
                    </ul>
                </div>
                <!--流程引导结束-->
            </div>
            <!--流程引导-->
            <div class="rk-step-wrap fr">
                <ul class="rk-step">
                    <li id="progress-register" class="active rk-step-first">
                        <span class="rk-step-span">
                            <img th:src="@{../../static/images/icon-dengji.png}"/>
                        </span>
                        <p>入库登记</p>
                    </li>
                    <li id="progress-check">
                        <span class="rk-step-span">
                            <img th:src="@{../../static/images/icon-zhijian.png}"/>
                        </span>
                        <p>扦样质检</p>
                    </li>
                    <li id="progress-fullWeight">
                        <span class="rk-step-span">
                            <img th:src="@{../../static/images/icon-chengzhong.png}"/>
                        </span>
                        <p>满车称重</p>
                    </li>
                    <li id="progress-hand">
                        <span class="rk-step-span">
                            <img th:src="@{../../static/images/icon-xiehuo.png}"/>
                        </span>
                        <p>入库值仓</p>
                    </li>
                    <li id="progress-emptyWeight">
                        <span class="rk-step-span">
                            <img th:src="@{../../static/images/icon-chengzhong.png}"/>
                        </span>
                        <p>空车称重</p>
                    </li>
                    <li id="progress-cardBack">
                        <span class="rk-step-span">
                            <img th:src="@{../../static/images/icon-banli.png}"/>
                        </span>
                        <p>离库确认</p>
                    </li>
                </ul>
            </div>
            <!--流程引导结束-->
        </div>
            <!-- ä¸»ä½“信息 -->
            <form class="layui-form" action="" id="form-data"
                lay-filter="form-data">
        <!-- ä¸»ä½“信息 -->
        <form class="layui-form" action="" id="form-data" lay-filter="form-data">
                <div class="rkbk-con">
                    <div class="radius-6 rkbk-left-wrap fl">
                        <div class="rkbk-left">
                            <div class="rkbk-tit">
                                <i></i>
                                <h3>承运人信息</h3>
                            </div>
                            <div class="rkbk-left-form">
                                <div class="rkbk-form-box1">
                                    <div class="layui-form-item display-none">
                                        <label class="layui-form-label">隐藏-类型</label>
                                        <div class="layui-input-block">
                                            <input type="text" name="type" autocomplete="off"
                                                th:value="${type}" class="layui-input rkbk-search-input">
                                        </div>
                                    </div>
            <div class="rkbk-con">
                <div class="radius-6 rkbk-left-wrap fl">
                    <div class="rkbk-left">
                        <div class="rkbk-tit">
                            <i></i>
                            <h3>承运人信息</h3>
                        </div>
                        <div class="rkbk-left-form">
                            <div class="rkbk-form-box1">
                                <div class="layui-form-item display-none">
                                    <label class="layui-form-label">隐藏-类型</label>
                                    <div class="layui-input-block">
                                        <input type="text" name="type" autocomplete="off"
                                               th:value="${type}" class="layui-input rkbk-search-input">
                                    </div>
                                </div>
                                    <div class="rkbk-form-left">
                                        <div class="layui-form-item">
                                            <label class="layui-form-label color-red">姓&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;名:</label>
                                            <div class="layui-input-block">
                                                <input type="text" name="userName" id="userName"
                                                    lay-verify="required" placeholder="必填信息" autocomplete="off"
                                                    class="layui-input rkbk-search-input">
                                            </div>
                                        </div>
                                <div class="rkbk-form-left">
                                    <div class="layui-form-item">
                                        <label class="layui-form-label color-red">姓&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;名:</label>
                                        <div class="layui-input-block">
                                            <input type="text" name="userName" id="userName"
                                                   lay-verify="required" placeholder="必填信息" autocomplete="off"
                                                   class="layui-input rkbk-search-input">
                                        </div>
                                    </div>
                                        <div class="layui-form-item">
                                            <label class="layui-form-label color-red">身份证号:</label>
                                            <div class="layui-input-block">
                                                <input type="text" name="userId" id="userId"
                                                    lay-verify="required" placeholder="必填信息" autocomplete="off"
                                                    class="layui-input rkbk-search-input">
                                            </div>
                                        </div>
                                        <div class="layui-form-item">
                                            <label class="layui-form-label">联系方式:</label>
                                            <div class="layui-input-block">
                                                <input type="text" name="userContact" id="userContact"
                                                    placeholder="请输入" autocomplete="off"
                                                    class="layui-input rkbk-search-input">
                                            </div>
                                        </div>
                                        <div class="layui-form-item">
                                            <label class="layui-form-label">出生日期:</label>
                                            <div class="layui-input-block">
                                                <input type="text" name="userBirthday" id="userBirthday"
                                                    placeholder="yyyy-MM-dd" autocomplete="off"
                                                    class="layui-input rkbk-search-input bg-date">
                                            </div>
                                        </div>
                                        <div class="layui-form-item">
                                            <label class="layui-form-label">性&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;别:</label>
                                            <div class="layui-input-block rkbk-selBox">
                                                <input type="radio" name="userSex" id="userSex" value="男"
                                                    title="男" checked> <input type="radio"
                                                    name="userSex" value="女" title="女">
                                            </div>
                                        </div>
                                    <div class="layui-form-item">
                                        <label class="layui-form-label color-red">身份证号:</label>
                                        <div class="layui-input-block">
                                            <input type="text" name="userId" id="userId"
                                                   lay-verify="required" placeholder="必填信息" autocomplete="off"
                                                   class="layui-input rkbk-search-input">
                                        </div>
                                    </div>
                                    <div class="layui-form-item">
                                        <label class="layui-form-label">联系方式:</label>
                                        <div class="layui-input-block">
                                            <input type="text" name="userContact" id="userContact"
                                                   placeholder="请输入" autocomplete="off"
                                                   class="layui-input rkbk-search-input">
                                        </div>
                                    </div>
                                    <div class="layui-form-item">
                                        <label class="layui-form-label">出生日期:</label>
                                        <div class="layui-input-block">
                                            <input type="text" name="userBirthday" id="userBirthday"
                                                   placeholder="yyyy-MM-dd" autocomplete="off"
                                                   class="layui-input rkbk-search-input bg-date">
                                        </div>
                                    </div>
                                    <div class="layui-form-item">
                                        <label class="layui-form-label">性&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;别:</label>
                                        <div class="layui-input-block rkbk-selBox">
                                            <input type="radio" name="userSex" id="userSex" value="男"
                                                   title="男" checked> <input type="radio"
                                                                             name="userSex" value="女" title="女">
                                        </div>
                                    </div>
                                        <div class="layui-form-item">
                                            <label class="layui-form-label">民&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;族:</label>
                                            <div class="layui-input-block">
                                                <input type="text" name="userNation" id="userNation"
                                                    placeholder="请输入" autocomplete="off"
                                                    class="layui-input rkbk-search-input">
                                            </div>
                                        </div>
                                    <div class="layui-form-item">
                                        <label class="layui-form-label">民&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;族:</label>
                                        <div class="layui-input-block">
                                            <input type="text" name="userNation" id="userNation" placeholder="请输入"
                                                   autocomplete="off" class="layui-input rkbk-search-input">
                                        </div>
                                    </div>
                                    </div>
                                    <!--rk-form-left end-->
                                </div>
                                <!--rk-form-left end-->
                                    <div class="rkbk-photo">
                                        <a href="#"><img id="id_img_pers"
                                            th:src="@{../../static/images/rkbk-photo_03.png}" /></a>
                                    </div>
                                <div class="rkbk-photo">
                                    <a href="#"><img id="id_img_pers"
                                                     th:src="@{../../static/images/rkbk-photo_03.png}"/></a>
                                </div>
                                </div>
                                <!--rkbk-form-box1 end-->
                            </div>
                            <!--rkbk-form-box1 end-->
                                <div class="rkbk-form-box2" style="padding-top: 20px;">
                                    <div class="layui-form-item">
                                        <label class="layui-form-label">地&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;址:</label>
                                        <div class="layui-input-block">
                                            <input type="text" name="userAddress" id="userAddress"
                                                placeholder="请输入" autocomplete="off"
                                                class="layui-input rkbk-search-input">
                                        </div>
                                    </div>
                                </div>
                                <!--rkbk-form-box2 end-->
                            <div class="rkbk-form-box2" style="padding-top: 20px;">
                                <div class="layui-form-item">
                                    <label class="layui-form-label">地&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;址:</label>
                                    <div class="layui-input-block">
                                        <input type="text" name="userAddress" id="userAddress"
                                               placeholder="请输入" autocomplete="off"
                                               class="layui-input rkbk-search-input">
                                    </div>
                                </div>
                            </div>
                            <!--rkbk-form-box2 end-->
                                <div class="rkbk-quick layui-text-center">
                                    <button id="button_readID" type="button"
                                        onclick="flushIdCard()"
                                        class="rkbk-quick-btn layui-btn btn-blue">读取身份证</button>
                                </div>
                            <div class="rkbk-quick layui-text-center">
                                <button id="button_readID" type="button"
                                        onclick="flushIdCard()"
                                        class="rkbk-quick-btn layui-btn btn-blue">读取身份证
                                </button>
                            </div>
                            </div>
                        </div>
                        </div>
                    </div>
                </div>
                <!--rkbk-left end-->
                    </div>
                    <!--rkbk-left end-->
                <div class="radius-6 rkbk-right-wrap fr" style="height: 512px;">
                    <div class="rkbk-left">
                        <div class="rkbk-tit">
                            <i></i>
                            <h3>运输信息</h3>
                        </div>
                    <div class="radius-6 rkbk-right-wrap fr" style="height: 512px;">
                        <div class="rkbk-left">
                            <div class="rkbk-tit">
                                <i></i>
                                <h3>登记信息</h3>
                            </div>
                        <div class="rkbk-left-form rkbk-right-form">
                            <div class="layui-form-item">
                                <input type="button" value="读卡" class="rkbk-r-btn fr layui-btn"
                                       onclick="flushICCard()"/>
                                <label class="layui-form-label  color-red">智慧卡号:</label>
                                <div class="layui-input-block">
                                    <input type="text" name="intelCard" id="intelCard" required
                                           lay-verify="required" placeholder="先放卡,后点击读卡"
                                           autocomplete="off" class="layui-input rkbk-search-input">
                                </div>
                            </div>
                            <div class="rkbk-left-form rkbk-right-form">
                                <div class="layui-form-item">
                                    <input type="button" value="读卡" class="rkbk-r-btn fr layui-btn"
                                        onclick="flushICCard()" /> <label
                                        class="layui-form-label  color-red">智慧卡号:</label>
                                    <div class="layui-input-block">
                                        <input type="text" name="intelCard" id="intelCard" required
                                            lay-verify="required" placeholder="先放卡,后点击读卡"
                                            autocomplete="off" class="layui-input rkbk-search-input">
                                    </div>
                                </div>
                            <div class="layui-form-item">
                                <input type="button" value="读车牌"
                                       class="rkbk-r-btn fr layui-btn layui-btn-normal"
                                       onclick="flushPlateNum()"/>
                                <label class="layui-form-label color-red">运输车牌:</label>
                                <div class="layui-input-block">
                                    <input type="text" name="plateNum" id="plateNum" placeholder="无车牌车辆,填写 æ— è½¦ç‰Œ"
                                           lay-verify="required" autocomplete="off"
                                           class="layui-input rkbk-search-input">
                                </div>
                            </div>
                                <div class="layui-form-item">
                                    <input type="button" value="读车牌"
                                        class="rkbk-r-btn fr layui-btn layui-btn-normal"
                                        onclick="flushPlateNum()" /> <label
                                        class="layui-form-label color-red">运输车牌:</label>
                                    <div class="layui-input-block">
                                        <input type="text" name="plateNum" id="plateNum"
                                            placeholder="无车牌车辆,填写 æ— è½¦ç‰Œ" lay-verify="required"
                                            autocomplete="off" class="layui-input rkbk-search-input">
                                    </div>
                                </div>
                            <div class="layui-form-item">
                                <div class="layui-inline">
                                    <label class="layui-form-label">运输方式:</label>
                                    <div class="layui-input-inline">
                                        <input type="radio" name="transType" value="1" title="汽车" checked>
                                        <input type="radio" name="transType" value="2" title="火车">
                                        <input type="radio" name="transType" value="3" title="轮船">
                                        <input type="radio" name="transType" value="9" title="其他">
                                    </div>
                                </div>
                            </div>
                        </div>
                    </div>
                                <div class="layui-form-item">
                                    <div class="layui-inline">
                                        <label class="layui-form-label">运输工具:</label>
                                        <div class="layui-input-inline">
                                            <input type="radio" name="transType" value="1" title="汽车"
                                                checked> <input type="radio" name="transType"
                                                value="2" title="火车"> <input type="radio"
                                                name="transType" value="3" title="轮船"> <input
                                                type="radio" name="transType" value="9" title="其他">
                                        </div>
                                    </div>
                                </div>
                            </div>
                        </div>
                    <!-- è§†é¢‘ -->
                    <div class="rkbk-left">
                        <div class="rkbk-tit">
                            <i></i>
                            <h3>登记视频</h3>
                        </div>
                        <div class="kccz-r-con2">
                            <div class="kccz-r-vedio" id="kccz-r-video1">
                        <!-- è§†é¢‘ -->
                        <div class="rkbk-left">
                            <div class="rkbk-tit">
                                <i></i>
                                <h3>登记视频</h3>
                            </div>
                            <div class="kccz-r-con2">
                                <div class="kccz-r-vedio" id="kccz-r-video1"></div>
                                <div class="kccz-r-btnbox">
                                    <div class="kccz-r-div">
                                        <span>未识别</span>
                                        <p>车牌识别</p>
                                    </div>
                                     <a href="javascript:;" class="kccz-r-btn kccz-r-btn1 active mt-10"> <span class="kccz-r-pz"></span>
                                        <p>系统自动抓拍</p>
                                    </a>
                                </div>
                            </div>
                        </div>
                    </div>
                    <!--rkbk-right end-->
                </div>
                <!--rkbk-con end-->
            </form>
        </div>
        <!--rk-main end-->
                            </div>
                            <div class="kccz-r-btnbox">
                                <a href="javascript:;" class="kccz-r-btn kccz-r-btn1 active">
                                    <span class="kccz-r-pz"></span>
                                    <p>车牌识别</p>
                                </a> <a href="javascript:;" class="kccz-r-btn mt-10">
                                <span id="pz-img" class="kccz-r-img"></span>
                                <p id="pz-text">自动抓拍</p>
                            </a>
                            </div>
                        </div>
                    </div>
                </div>
                <!--rkbk-right end-->
            </div>
            <!--rkbk-con end-->
        </form>
    </div>
    <!--rk-main end-->
    </div>
    <!--l-container end-->
</div>
<!--l-container end-->
<script th:inline="javascript">
    <script th:inline="javascript">
    //流程环节
    var inoutProgress = [[${inoutProgress}]];
    //当前节点
@@ -359,42 +335,43 @@
    var ship = null; //是否船运页面标识
</script>
<script th:src="@{../../static/plugins/layui/layui.js}"></script>
<script th:src="@{../../static/js/jquery.min.js}"></script>
<script th:src="@{../../static/js/constant.js}"></script>
<script th:src="@{../../static/js/igds-common.js}"></script>
<script th:src="@{../../static/admin/inout/video-play.js}"></script>
<script th:src="@{../../static/admin/inout/in-register.js}"></script>
    <script th:src="@{../../static/plugins/layui/layui.js}"></script>
    <script th:src="@{../../static/js/jquery.min.js}"></script>
    <script th:src="@{../../static/js/constant.js}"></script>
    <script th:src="@{../../static/js/igds-common.js}"></script>
    <script th:src="@{../../static/admin/inout/video-play.js}"></script>
    <script th:src="@{../../static/admin/inout/in-register.js}"></script>
<!-- å¼¹å‡ºæ¡†çš„信息 -->
<div class="layui-tab-content" id="dialog-from-notify" style="display: none;">
    <table class="layui-table">
        <colgroup>
            <col width="100">
        </colgroup>
        <tbody>
        <tr>
            <td>返回信息</td>
            <td id="resultMsg" style="color: red;font-weight: bold;"></td>
        </tr>
        <tr>
            <td>承运人</td>
            <td id="resultUserName" style="font-weight: bold;"></td>
        </tr>
        <tr>
            <td>车牌号</td>
            <td id="resultPlateNum" style="font-weight: bold;"></td>
        </tr>
        <tr>
            <td>下一步</td>
            <td id="resultType" style="font-weight: bold;"></td>
        </tr>
        <tr>
            <td>智慧卡号</td>
            <td id="resultIntelCard" style="font-weight: bold;"></td>
        </tr>
        </tbody>
    </table>
</div>
    <!-- å¼¹å‡ºæ¡†çš„信息 -->
    <div class="layui-tab-content" id="dialog-from-notify"
        style="display: none;">
        <table class="layui-table">
            <colgroup>
                <col width="100">
            </colgroup>
            <tbody>
                <tr>
                    <td>返回信息</td>
                    <td id="resultMsg" style="color: red; font-weight: bold;"></td>
                </tr>
                <tr>
                    <td>承运人</td>
                    <td id="resultUserName" style="font-weight: bold;"></td>
                </tr>
                <tr>
                    <td>车牌号</td>
                    <td id="resultPlateNum" style="font-weight: bold;"></td>
                </tr>
                <tr>
                    <td>下一步</td>
                    <td id="resultType" style="font-weight: bold;"></td>
                </tr>
                <tr>
                    <td>智慧卡号</td>
                    <td id="resultIntelCard" style="font-weight: bold;"></td>
                </tr>
            </tbody>
        </table>
    </div>
</body>
</html>