czt
2026-01-12 dde5ece4eef131d7b02907d4aa6c311a08ef78f5
出入库接口测试:预览、车牌识别、抓图及推送
已修改7个文件
已添加1个文件
229 ■■■■■ 文件已修改
fzzy-igdss-core/src/main/java/com/fzzy/igds/service/FileService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-core/src/main/java/com/fzzy/igds/service/InoutConfService.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-core/src/main/java/com/fzzy/igds/service/InoutRecordService.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-view/src/main/java/com/fzzy/igds/InoutList.view.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-web/src/main/java/com/fzzy/inout/InoutController.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-web/src/main/java/com/fzzy/inout/manager/InoutManager.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-web/src/main/resources/static/inout/video-play.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-web/src/main/resources/templates/inout/inout-img.html 134 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-core/src/main/java/com/fzzy/igds/service/FileService.java
@@ -75,6 +75,8 @@
            }
            data.setId(ContextUtil.generateId());
            data.setCreateTime(new Date());
            data.setCreateBy(ContextUtil.getLoginUserName());
            data.setCompanyId(ContextUtil.getCompanyId());
            //文件全路径
fzzy-igdss-core/src/main/java/com/fzzy/igds/service/InoutConfService.java
@@ -16,6 +16,7 @@
import com.ruoyi.system.service.ISysDeptService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Date;
import java.util.List;
@@ -59,6 +60,22 @@
        }
        return inoutSysConfMapper.selectList(queryWrapper);
    }
    /**
     * æ ¹æ®æ¡ä»¶æŸ¥è¯¢æµç¨‹ä¿¡æ¯
     *
     * @param deptId
     * @return
     */
    public InoutSysConf getInoutSysConf(String deptId) {
        List<InoutSysConf> list = listInoutSysConf(deptId, null);
        if (null == list || list.isEmpty()) {
            return null;
        }
        return list.get(0);
    }
    /**
@@ -143,7 +160,12 @@
     */
    public InoutSysConf getCacheInoutSysConf(String companyId, String deptId) {
        String key = RedisConst.buildKey(deptId, Constant.CACHE_INOUT_SYS_CONF);
        return (InoutSysConf) redisCache.getCacheObject(key);
        InoutSysConf conf = (InoutSysConf) redisCache.getCacheObject(key);
        if (null == conf) {
            conf = getInoutSysConf(deptId);
            flushInoutSysConfCache(conf);
        }
        return conf;
    }
    /*--------------- å‡ºå…¥åº“设备 ---------------*/
fzzy-igdss-core/src/main/java/com/fzzy/igds/service/InoutRecordService.java
@@ -171,9 +171,6 @@
        queryWrapper.eq("company_id", companyId);
        queryWrapper.eq("plate_num", plateNum);
        queryWrapper.ne("progress", Constant.PROGRESS_RECORD);
        queryWrapper.eq("record_status", "NORMAL");
        queryWrapper.or();
        queryWrapper.eq("record_status", Constant.RECORD_STATUS_ADD); //补录单子的单子
        return inoutRecordMapper.selectCount(queryWrapper);
    }
fzzy-igdss-view/src/main/java/com/fzzy/igds/InoutList.view.xml
@@ -418,7 +418,7 @@
        var user = encodeURIComponent(select.get(&quot;userName&quot;));&#xD;
        var plateNum = encodeURIComponent(select.get(&quot;plateNum&quot;));&#xD;
    &#xD;
        view.get(&quot;#iFrameImg&quot;).set(&quot;path&quot;, &quot;./basic/inout/inout-img?id=&quot; + select.get(&quot;id&quot;)+&quot;&amp;plateNum=&quot;+plateNum+&quot;&amp;user=&quot;+user);&#xD;
        view.get(&quot;#iFrameImg&quot;).set(&quot;path&quot;, &quot;/basic/inout/inout-img?id=&quot; + select.get(&quot;id&quot;)+&quot;&amp;plateNum=&quot;+plateNum+&quot;&amp;user=&quot;+user);&#xD;
        view.get(&quot;#dialogImg&quot;).show();&#xD;
    }else{&#xD;
        $notify(&quot;请选择数据……&quot;);&#xD;
fzzy-igdss-web/src/main/java/com/fzzy/inout/InoutController.java
@@ -20,8 +20,10 @@
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.net.URLDecoder;
import java.util.Date;
import java.util.List;
@@ -44,6 +46,7 @@
    /**
     * ç™»è®°ï¼Œå‡ºå…¥åº“共用
     *
     * @param httpRequest
     * @param sort         é…å¥—号
     * @param type         ä¸šåŠ¡ç±»åž‹ï¼šIN-入库,OUT-出库
@@ -101,6 +104,7 @@
    /**
     * è´¨æ£€é¡µé¢
     *
     * @return
     */
    @RequestMapping("/check")
@@ -144,6 +148,7 @@
    /**
     * å‡ºå…¥åº“值仓
     *
     * @param httpRequest
     * @param sort
     * @param type
@@ -335,6 +340,7 @@
    /**
     * æ ¹æ®æ¡ä»¶æŸ¥è¯¢å¾…称重的数据
     *
     * @param param
     * @return
     */
@@ -361,6 +367,7 @@
    /**
     * å‡ºå…¥åº“化验信息提交
     *
     * @param data
     * @return
     */
@@ -373,6 +380,7 @@
    /**
     * å‡ºå…¥åº“称重环节提交
     *
     * @param data
     * @return
     */
@@ -434,4 +442,32 @@
    public PageResponse<List<InoutNoticeOut>> listNoticeOut(@RequestBody NoticeParam param) {
        return inoutManager.listNoticeOut(param);
    }
    /**
     * å‡ºå…¥åº“详单页面的可视化追踪页面
     *
     * @return
     */
    @RequestMapping("/inout-img")
    public String inoutImg(@RequestParam(value = "id", required = true) String id,
                           @RequestParam(value = "plateNum", required = false) String plateNum,
                           @RequestParam(value = "user", required = false) String userName,
                           ModelMap view) {
        try {
            if (StringUtils.isNotEmpty(plateNum)) {
                view.put("plateNum", URLDecoder.decode(plateNum, "UtF-8"));
            }
            if (StringUtils.isNotEmpty(userName)) {
                view.put("userName", URLDecoder.decode(userName, "UtF-8"));
            }
            List<FileInfo> files = inoutManager.cutImgList(id);
            view.put("files", files);
        } catch (Exception e) {
            log.error("后台异常:{}", e);
        }
        return prefix + "/inout-img";
    }
}
fzzy-igdss-web/src/main/java/com/fzzy/inout/manager/InoutManager.java
@@ -1,6 +1,7 @@
package com.fzzy.inout.manager;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fzzy.common.manager.CommonManager;
import com.fzzy.igds.constant.Constant;
import com.fzzy.igds.constant.RespCodeEnum;
import com.fzzy.igds.data.*;
@@ -17,6 +18,7 @@
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.util.*;
/**
@@ -40,6 +42,8 @@
    private DicAreaService dicAreaService;
    @Resource
    private InoutNoticeService inoutNoticeService;
    @Resource
    private CommonManager commonManager;
    /**
     * æ ¹æ®ç”¨æˆ·è¯·æ±‚信息,根据当前客户电脑IP,获取出入库称重上次选择的地磅
@@ -538,4 +542,26 @@
        return new PageResponse<>(RespCodeEnum.CODE_0000, list);
    }
    /**
     * æ ¹æ®å‚数获取出入库的图片
     *
     * @param id
     * @return
     */
    public List<FileInfo> cutImgList(String id) {
        if (StringUtils.isBlank(id)){
            return null;
        }
        List<FileInfo> files = fileService.listFile(ContextUtil.getCompanyId(), id);
        if (null == files) {
            return null;
        }
        for (FileInfo file : files) {
            file.setFilePath(commonManager.isImgExit(file.getFilePath(), null));
        }
        return files;
    }
}
fzzy-igdss-web/src/main/resources/static/inout/video-play.js
@@ -136,7 +136,7 @@
    if (3 == order) {
        $("#kccz-r-video3").append(htm);
    }
    if (PlayType.PLAY_TYPE_WEB_RTC_DH == data.playType || PlayType.PLAY_TYPE_WEB_RTC_HIK == data.playType) {
    if (PlayType.PLAY_TYPE_WEB_RTC == data.playType) {
        if (1 == order) {
            webRtcToPlay1();
        }
fzzy-igdss-web/src/main/resources/templates/inout/inout-img.html
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,134 @@
<!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>
    <link rel="stylesheet" type="text/css" th:href="@{/ajax/libs/layui/css/layui.css}"/>
    <style type="text/css">
        .layui-card-header {
            font-weight: bold;
            background-color: #39aef5;
            color: #FFF;
        }
        .layui-card-body {
            text-align: center;
        }
        .cut-img {
            /*height: 480px;*/
            width: 900px;
        }
        .fr {
            float: right;
        }
        thead span {
            font-weight: bold
        }
        .video{
            width:100%;;
            height:100%;
        }
    </style>
</head>
<body>
<!-- å¯è¿½è¸ªä¿¡æ¯ -->
<div class="layui-tab-content">
    <div class="layui-fluid" id="recordFilesDiv">
        <!--                 <div class="layui-col-md12 layui-col-sm12">-->
        <!--                     <div class="layui-card">-->
        <!--                         <div class="layui-card-header">图片1</div>-->
        <!--                         <div class="layui-card-body">-->
        <!--                             <img src="" alt="" />-->
        <!--                         </div>-->
        <!--                     </div>-->
        <!--                 </div>-->
    </div>
</div>
<script th:inline="javascript">
    var files = [[${files}]];
    var userName = [[${userName}]];
    var plateNum = [[${plateNum}]];
</script>
<script th:src="@{/ajax/libs/layui/layui.js}"></script>
<script th:src="@{/js/jquery.min.js}"></script>
<script>
    var layer;
    $(function () {
        layui.use(['layer'], function () {
            layer = layui.layer;
            if(files){
                renderInoutImg();
            }
        });
    });
    // æ¸²æŸ“出入库的图片列表
    function renderInoutImg() {
        var mainDiv = $("#recordFilesDiv");
        mainDiv.empty();
        var html;
        $.each(files, function (index, data) {
            if (!data.filePath) {
                layer.msg("个别图片未找到:" + data.fileName);
                return true;
            }
            html = "";
            html += "<div class='layui-col-md12 layui-col-sm12'><div class='layui-card'>";
            if ("REGISTER" == data.bizTag) {
                html += "<div class='layui-card-header'>流程:登记&nbsp;&nbsp;&nbsp;&nbsp;时间:"
                    + data.createTime + "<span class='fr'>承运人:" + userName + "&nbsp;&nbsp;&nbsp;&nbsp;车牌号:" + plateNum + "</span></div>";
            } else if ("CHECK" == data.bizTag) {
                html += "<div class='layui-card-header'>流程:扦样化验&nbsp;&nbsp;&nbsp;&nbsp;时间:"
                    + data.createTime + "<span class='fr'>承运人:" + userName + "&nbsp;&nbsp;&nbsp;&nbsp;车牌号:" + plateNum + "</span></div>";
            } else if ("HANDLE" == data.bizTag) {
                html += "<div class='layui-card-header'>流程:值仓&nbsp;&nbsp;&nbsp;&nbsp;时间:"
                    + data.createTime + "<span class='fr'>承运人:" + userName + "&nbsp;&nbsp;&nbsp;&nbsp;车牌号:" + plateNum + "</span></div>";
            } else if ("WEIGHT_FULL" == data.bizTag) {
                html += "<div class='layui-card-header'>流程:满车称重";
                if(data.fileName.indexOf(".mp4") > 0) {
                    html += "-检斤视频";
                }
                html += "&nbsp;&nbsp;&nbsp;&nbsp;时间:" + data.createTime + "<span class='fr'>承运人:" + userName + "&nbsp;&nbsp;&nbsp;&nbsp;车牌号:" + plateNum + "</span></div>";
            } else if ("WEIGHT_EMPTY" == data.bizTag) {
                html += "<div class='layui-card-header'>流程:空车称重";
                if(data.fileName.indexOf(".mp4") > 0) {
                    html += "-检斤视频";
                }
                html += "&nbsp;&nbsp;&nbsp;&nbsp;时间:" + data.createTime + "<span class='fr'>承运人:" + userName + "&nbsp;&nbsp;&nbsp;&nbsp;车牌号:" + plateNum + "</span></div>";
            } else if ("PAY" == data.bizTag) {
                html += "<div class='layui-card-header'>流程:结算&nbsp;&nbsp;&nbsp;&nbsp;时间:"
                    + data.createTime + "<span class='fr'>承运人:" + userName + "&nbsp;&nbsp;&nbsp;&nbsp;车牌号:" + plateNum + "</span></div>";
            }  else if ("CARD_BACK" == data.bizTag) {
                html += "<div class='layui-card-header'>流程:车辆离库&nbsp;&nbsp;&nbsp;&nbsp;时间:"
                    + data.createTime + "<span class='fr'>承运人:" + userName + "&nbsp;&nbsp;&nbsp;&nbsp;车牌号:" + plateNum + "</span></div>";
            } else {
                html += "<div class='layui-card-header'>流程:记录&nbsp;&nbsp;&nbsp;&nbsp;时间:"
                    + data.createTime + "<span class='fr'>承运人:" + userName + "&nbsp;&nbsp;&nbsp;&nbsp;车牌号:" + plateNum + "</span></div>";
            }
            html += "<div class='layui-card-body'>";
            //使用文件流进行渲染图片
            html += "<img class ='cut-img' src='" + data.filePath + "' />";
            html += "</div></div></div>";
            mainDiv.append(html);
        });
    };
</script>
</body>
</html>