From dde5ece4eef131d7b02907d4aa6c311a08ef78f5 Mon Sep 17 00:00:00 2001
From: czt <czt18638530771@163.com>
Date: 星期一, 12 一月 2026 16:46:42 +0800
Subject: [PATCH] 出入库接口测试:预览、车牌识别、抓图及推送

---
 fzzy-igdss-web/src/main/resources/templates/inout/inout-img.html            |  134 ++++++++++++++++++++++++++
 fzzy-igdss-core/src/main/java/com/fzzy/igds/service/InoutConfService.java   |   26 ++++
 fzzy-igdss-core/src/main/java/com/fzzy/igds/service/InoutRecordService.java |    3 
 fzzy-igdss-web/src/main/resources/static/inout/video-play.js                |    2 
 fzzy-igdss-view/src/main/java/com/fzzy/igds/InoutList.view.xml              |    2 
 fzzy-igdss-web/src/main/java/com/fzzy/inout/InoutController.java            |   52 ++++++++-
 fzzy-igdss-web/src/main/java/com/fzzy/inout/manager/InoutManager.java       |   26 +++++
 fzzy-igdss-core/src/main/java/com/fzzy/igds/service/FileService.java        |    2 
 8 files changed, 232 insertions(+), 15 deletions(-)

diff --git a/fzzy-igdss-core/src/main/java/com/fzzy/igds/service/FileService.java b/fzzy-igdss-core/src/main/java/com/fzzy/igds/service/FileService.java
index e6e82f4..8702908 100644
--- a/fzzy-igdss-core/src/main/java/com/fzzy/igds/service/FileService.java
+++ b/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());
 
             //鏂囦欢鍏ㄨ矾寰�
diff --git a/fzzy-igdss-core/src/main/java/com/fzzy/igds/service/InoutConfService.java b/fzzy-igdss-core/src/main/java/com/fzzy/igds/service/InoutConfService.java
index e1bbfef..28215d7 100644
--- a/fzzy-igdss-core/src/main/java/com/fzzy/igds/service/InoutConfService.java
+++ b/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;
     }
 
     /*--------------- 鍑哄叆搴撹澶� ---------------*/
@@ -194,7 +216,7 @@
             data.setUpdateBy(ContextUtil.getLoginUserName());
             data.setUpdateTime(new Date());
             inoutConfMapper.insert(data);
-        }else {
+        } else {
             data.setUpdateBy(ContextUtil.getLoginUserName());
             data.setUpdateTime(new Date());
             inoutConfMapper.updateById(data);
diff --git a/fzzy-igdss-core/src/main/java/com/fzzy/igds/service/InoutRecordService.java b/fzzy-igdss-core/src/main/java/com/fzzy/igds/service/InoutRecordService.java
index 52281a5..489f288 100644
--- a/fzzy-igdss-core/src/main/java/com/fzzy/igds/service/InoutRecordService.java
+++ b/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);
     }
diff --git a/fzzy-igdss-view/src/main/java/com/fzzy/igds/InoutList.view.xml b/fzzy-igdss-view/src/main/java/com/fzzy/igds/InoutList.view.xml
index f7c8f17..61a96c6 100644
--- a/fzzy-igdss-view/src/main/java/com/fzzy/igds/InoutList.view.xml
+++ b/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;
diff --git a/fzzy-igdss-web/src/main/java/com/fzzy/inout/InoutController.java b/fzzy-igdss-web/src/main/java/com/fzzy/inout/InoutController.java
index fedf4cd..a6e89da 100644
--- a/fzzy-igdss-web/src/main/java/com/fzzy/inout/InoutController.java
+++ b/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,17 +46,18 @@
 
     /**
      * 鐧昏锛屽嚭鍏ュ簱鍏辩敤
+     *
      * @param httpRequest
-     * @param sort         閰嶅鍙�
-     * @param type         涓氬姟绫诲瀷锛欼N-鍏ュ簱锛孫UT-鍑哄簱
+     * @param sort        閰嶅鍙�
+     * @param type        涓氬姟绫诲瀷锛欼N-鍏ュ簱锛孫UT-鍑哄簱
      * @param view
      * @return
      */
     @RequestMapping("/register")
     public String register(HttpServletRequest httpRequest,
-                              @RequestParam(value = "sort", required = false) String sort,
-                              @RequestParam(value = "type", required = false) String type,
-                              ModelMap view) {
+                           @RequestParam(value = "sort", required = false) String sort,
+                           @RequestParam(value = "type", required = false) String type,
+                           ModelMap view) {
 
         SysUser user = ContextUtil.getLoginUser();
         view.put(Constant.MODEL_KEY_LOGIN_USER, user);
@@ -101,6 +104,7 @@
 
     /**
      * 璐ㄦ椤甸潰
+     *
      * @return
      */
     @RequestMapping("/check")
@@ -144,6 +148,7 @@
 
     /**
      * 鍑哄叆搴撳�间粨
+     *
      * @param httpRequest
      * @param sort
      * @param type
@@ -152,9 +157,9 @@
      */
     @RequestMapping("/handle")
     public String handle(HttpServletRequest httpRequest,
-                           @RequestParam(value = "sort", required = false) String sort,
-                           @RequestParam(value = "type", required = false) String type,
-                           ModelMap view) {
+                         @RequestParam(value = "sort", required = false) String sort,
+                         @RequestParam(value = "type", required = false) String type,
+                         ModelMap view) {
 
         //濡傛灉娌℃湁鎸囧畾鍦扮锛屼粠鐢ㄦ埛涓婁竴涓�夋嫨涓幏鍙�
         if (StringUtils.isEmpty(sort)) {
@@ -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";
+    }
+
 }
diff --git a/fzzy-igdss-web/src/main/java/com/fzzy/inout/manager/InoutManager.java b/fzzy-igdss-web/src/main/java/com/fzzy/inout/manager/InoutManager.java
index fe19eea..5f7e643 100644
--- a/fzzy-igdss-web/src/main/java/com/fzzy/inout/manager/InoutManager.java
+++ b/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;
 
     /**
      * 鏍规嵁鐢ㄦ埛璇锋眰淇℃伅锛屾牴鎹綋鍓嶅鎴风數鑴慖P锛岃幏鍙栧嚭鍏ュ簱绉伴噸涓婃閫夋嫨鐨勫湴纾�
@@ -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;
+    }
 }
diff --git a/fzzy-igdss-web/src/main/resources/static/inout/video-play.js b/fzzy-igdss-web/src/main/resources/static/inout/video-play.js
index 42f96a1..b9f50eb 100644
--- a/fzzy-igdss-web/src/main/resources/static/inout/video-play.js
+++ b/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();
         }
diff --git a/fzzy-igdss-web/src/main/resources/templates/inout/inout-img.html b/fzzy-igdss-web/src/main/resources/templates/inout/inout-img.html
new file mode 100644
index 0000000..02282f0
--- /dev/null
+++ b/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>

--
Gitblit v1.9.3