From bf4a7fa6d937f6798e8a7524c43f658c482310b9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E8=B5=B5=E5=95=B8=E9=9D=9E?= <8153694@qq.com>
Date: Wed, 22 Nov 2023 23:34:04 +0800
Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=B5=B7=E5=BA=B7=E9=97=A8?=
 =?UTF-8?q?=E7=A6=81=E8=AE=BE=E5=A4=87=E7=AE=A1=E7=90=86?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../admin/src/views/door/drawershow.vue       |   2 +
 .../admin/src/views/door/list.vue             |   2 +
 .../admin/src/views/door/view.vue             |   3 +
 .../xhx/module/door/model/DoorEntity.java     |   5 +
 .../xhx/module/door/model/DoorQuery.java      | 150 ++++++++++++++++++
 .../sqlmap/module/door/DoorMapper.xml         |  76 ++++++++-
 .../httpclient/door/DoorController.http       |  13 +-
 db/add.sql                                    |   1 +
 ...\347\220\206\347\263\273\347\273\237.docx" | Bin 373125 -> 373464 bytes
 9 files changed, 242 insertions(+), 10 deletions(-)

diff --git a/attendance-performance-manager-ui/admin/src/views/door/drawershow.vue b/attendance-performance-manager-ui/admin/src/views/door/drawershow.vue
index 1d9431d8..70672df9 100644
--- a/attendance-performance-manager-ui/admin/src/views/door/drawershow.vue
+++ b/attendance-performance-manager-ui/admin/src/views/door/drawershow.vue
@@ -11,6 +11,7 @@
                                             <Field label="璁惧鍚嶇О" prop="deviceName" v-model="form.deviceName" placeholder="璇疯緭鍏ヨ澶囧悕绉�"/>
                             <Field label="璁惧缂栫爜" prop="deviceCode" v-model="form.deviceCode" placeholder="璇疯緭鍏ヨ澶囩紪鐮�"/>
                             <Field label="Ip鍦板潃" prop="ip" v-model="form.ip" placeholder="璇疯緭鍏p鍦板潃"/>
+                            <Field label="绔彛" prop="port" v-model="form.port" placeholder="璇疯緭鍏ョ鍙�"/>
                             <Field label="鐢ㄦ埛鍚�" prop="username" v-model="form.username" placeholder="璇疯緭鍏ョ敤鎴峰悕"/>
                             <Field label="瀵嗙爜" prop="password" v-model="form.password" placeholder="璇疯緭鍏ュ瘑鐮�"/>
 
@@ -99,6 +100,7 @@
                     deviceName : "",
                     deviceCode : "",
                     ip : "",
+                    port : null,
                     username : "",
                     password : "",
                 };
diff --git a/attendance-performance-manager-ui/admin/src/views/door/list.vue b/attendance-performance-manager-ui/admin/src/views/door/list.vue
index 7da92b65..a116008a 100644
--- a/attendance-performance-manager-ui/admin/src/views/door/list.vue
+++ b/attendance-performance-manager-ui/admin/src/views/door/list.vue
@@ -57,6 +57,8 @@
 
                         {label: "Ip鍦板潃", prop: "ip"},
 
+                        {label: "绔彛", prop: "port",formatter: this.formatter},
+
                         {label: "鐢ㄦ埛鍚�", prop: "username"},
 
                         {label: "瀵嗙爜", prop: "password"},
diff --git a/attendance-performance-manager-ui/admin/src/views/door/view.vue b/attendance-performance-manager-ui/admin/src/views/door/view.vue
index c2aa00d9..d7c4f9ef 100644
--- a/attendance-performance-manager-ui/admin/src/views/door/view.vue
+++ b/attendance-performance-manager-ui/admin/src/views/door/view.vue
@@ -17,6 +17,9 @@
                         <el-descriptions-item label="Ip鍦板潃" label-class-name="labelClass" content-class-name="contentClass">
                             {{form.ip}}
                         </el-descriptions-item>
+                        <el-descriptions-item label="绔彛" label-class-name="labelClass" content-class-name="contentClass">
+                            {{form.port}}
+                        </el-descriptions-item>
                         <el-descriptions-item label="鐢ㄦ埛鍚�" label-class-name="labelClass" content-class-name="contentClass">
                             {{form.username}}
                         </el-descriptions-item>
diff --git a/attendance-performance-manager/src/main/java/com/mortals/xhx/module/door/model/DoorEntity.java b/attendance-performance-manager/src/main/java/com/mortals/xhx/module/door/model/DoorEntity.java
index 35718a52..c7c32128 100644
--- a/attendance-performance-manager/src/main/java/com/mortals/xhx/module/door/model/DoorEntity.java
+++ b/attendance-performance-manager/src/main/java/com/mortals/xhx/module/door/model/DoorEntity.java
@@ -32,6 +32,10 @@ public class DoorEntity extends DoorVo {
     */
     private String ip;
     /**
+    * 绔彛
+    */
+    private Integer port;
+    /**
     * 鐢ㄦ埛鍚�
     */
     private String username;
@@ -59,6 +63,7 @@ public class DoorEntity extends DoorVo {
             this.deviceName = "";
             this.deviceCode = "";
             this.ip = "";
+            this.port = 0;
             this.username = "";
             this.password = "";
     }
diff --git a/attendance-performance-manager/src/main/java/com/mortals/xhx/module/door/model/DoorQuery.java b/attendance-performance-manager/src/main/java/com/mortals/xhx/module/door/model/DoorQuery.java
index b1d12deb..2ea7b92c 100644
--- a/attendance-performance-manager/src/main/java/com/mortals/xhx/module/door/model/DoorQuery.java
+++ b/attendance-performance-manager/src/main/java/com/mortals/xhx/module/door/model/DoorQuery.java
@@ -39,6 +39,21 @@ public class DoorQuery extends DoorEntity {
 
     /** Ip鍦板潃鎺掗櫎鍒楄〃 */
     private List <String> ipNotList;
+    /** 寮€濮� 绔彛 */
+    private Integer portStart;
+
+    /** 缁撴潫 绔彛 */
+    private Integer portEnd;
+
+    /** 澧炲姞 绔彛 */
+    private Integer portIncrement;
+
+    /** 绔彛鍒楄〃 */
+    private List <Integer> portList;
+
+    /** 绔彛鎺掗櫎鍒楄〃 */
+    private List <Integer> portNotList;
+
     /** 鐢ㄦ埛鍚� */
     private List<String> usernameList;
 
@@ -276,6 +291,87 @@ public class DoorQuery extends DoorEntity {
         this.ipNotList = ipNotList;
     }
 
+    /**
+    * 鑾峰彇 寮€濮� 绔彛
+    * @return portStart
+    */
+    public Integer getPortStart(){
+        return this.portStart;
+    }
+
+    /**
+    * 璁剧疆 寮€濮� 绔彛
+    * @param portStart
+    */
+    public void setPortStart(Integer portStart){
+        this.portStart = portStart;
+    }
+
+    /**
+    * 鑾峰彇 缁撴潫 绔彛
+    * @return $portEnd
+    */
+    public Integer getPortEnd(){
+        return this.portEnd;
+    }
+
+    /**
+    * 璁剧疆 缁撴潫 绔彛
+    * @param portEnd
+    */
+    public void setPortEnd(Integer portEnd){
+        this.portEnd = portEnd;
+    }
+
+    /**
+    * 鑾峰彇 澧炲姞 绔彛
+    * @return portIncrement
+    */
+    public Integer getPortIncrement(){
+        return this.portIncrement;
+    }
+
+    /**
+    * 璁剧疆 澧炲姞 绔彛
+    * @param portIncrement
+    */
+    public void setPortIncrement(Integer portIncrement){
+        this.portIncrement = portIncrement;
+    }
+
+    /**
+    * 鑾峰彇 绔彛
+    * @return portList
+    */
+    public List<Integer> getPortList(){
+        return this.portList;
+    }
+
+    /**
+    * 璁剧疆 绔彛
+    * @param portList
+    */
+    public void setPortList(List<Integer> portList){
+        this.portList = portList;
+    }
+
+    /**
+    * 鑾峰彇 绔彛
+    * @return portNotList
+    */
+    public List<Integer> getPortNotList(){
+        return this.portNotList;
+    }
+
+    /**
+    * 璁剧疆 绔彛
+    * @param portNotList
+    */
+    public void setPortNotList(List<Integer> portNotList){
+        this.portNotList = portNotList;
+    }
+
+
     /**
     * 鑾峰彇 鐢ㄦ埛鍚�
     * @return usernameList
@@ -677,6 +773,60 @@ public class DoorQuery extends DoorEntity {
 		return this;
     }
 
+    /**
+    * 璁剧疆  绔彛
+    * @param port
+    */
+    public DoorQuery port(Integer port){
+	    setPort(port);
+		return this;
+    }
+	
+	 /**
+    * 璁剧疆 寮€濮� 绔彛
+    * @param portStart
+    */
+    public DoorQuery portStart(Integer portStart){
+		this.portStart = portStart;
+		return this;
+    }
+
+    /**
+    * 璁剧疆 缁撴潫 绔彛
+    * @param portEnd
+    */
+    public DoorQuery portEnd(Integer portEnd){
+		this.portEnd = portEnd;
+		return this;
+    }
+
+    /**
+    * 璁剧疆 澧炲姞 绔彛
+    * @param portIncrement
+    */
+    public DoorQuery portIncrement(Integer portIncrement){
+		this.portIncrement = portIncrement;
+		return this;
+    }
+
+    /**
+    * 璁剧疆 绔彛
+    * @param portList
+    */
+    public DoorQuery portList(List<Integer> portList){
+        this.portList = portList;
+		return this;
+        }
+
+        /**
+        * 璁剧疆 绔彛
+        * @param portNotList
+        */
+        public DoorQuery portNotList(List<Integer> portNotList){
+        this.portNotList = portNotList;
+        return this;
+        }
+
 
 	/**
     * 璁剧疆 鐢ㄦ埛鍚�
diff --git a/attendance-performance-manager/src/main/resources/sqlmap/module/door/DoorMapper.xml b/attendance-performance-manager/src/main/resources/sqlmap/module/door/DoorMapper.xml
index 6560cfcb..858090d0 100644
--- a/attendance-performance-manager/src/main/resources/sqlmap/module/door/DoorMapper.xml
+++ b/attendance-performance-manager/src/main/resources/sqlmap/module/door/DoorMapper.xml
@@ -9,6 +9,7 @@
             <result property="deviceName" column="deviceName" />
             <result property="deviceCode" column="deviceCode" />
             <result property="ip" column="ip" />
+            <result property="port" column="port" />
             <result property="username" column="username" />
             <result property="password" column="password" />
             <result property="createTime" column="createTime" />
@@ -34,6 +35,9 @@
                 <if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('ip') or colPickMode == 1 and data.containsKey('ip')))">
                     a.ip,
                 </if>
+                <if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('port') or colPickMode == 1 and data.containsKey('port')))">
+                    a.port,
+                </if>
                 <if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('username') or colPickMode == 1 and data.containsKey('username')))">
                     a.username,
                 </if>
@@ -57,18 +61,18 @@
     <!-- 鏂板 鍖哄垎涓婚敭鑷鍔犺繕鏄笟鍔℃彃鍏� -->
     <insert id="insert" parameterType="DoorEntity"  useGeneratedKeys="true" keyProperty="id">
         insert into mortals_xhx_door
-        (deviceName,deviceCode,ip,username,password,createTime,createUserId,updateUserId,updateTime)
+        (deviceName,deviceCode,ip,port,username,password,createTime,createUserId,updateUserId,updateTime)
         VALUES
-        (#{deviceName},#{deviceCode},#{ip},#{username},#{password},#{createTime},#{createUserId},#{updateUserId},#{updateTime})
+        (#{deviceName},#{deviceCode},#{ip},#{port},#{username},#{password},#{createTime},#{createUserId},#{updateUserId},#{updateTime})
     </insert>
 
     <!-- 鎵归噺鏂板 -->
     <insert id="insertBatch" parameterType="paramDto">
         insert into mortals_xhx_door
-        (deviceName,deviceCode,ip,username,password,createTime,createUserId,updateUserId,updateTime)
+        (deviceName,deviceCode,ip,port,username,password,createTime,createUserId,updateUserId,updateTime)
         VALUES
         <foreach collection="data.dataList" item="item" index="index" separator="," >
-            (#{item.deviceName},#{item.deviceCode},#{item.ip},#{item.username},#{item.password},#{item.createTime},#{item.createUserId},#{item.updateUserId},#{item.updateTime})
+            (#{item.deviceName},#{item.deviceCode},#{item.ip},#{item.port},#{item.username},#{item.password},#{item.createTime},#{item.createUserId},#{item.updateUserId},#{item.updateTime})
         </foreach>
     </insert>
 
@@ -87,6 +91,12 @@
             <if test="(colPickMode==0 and data.containsKey('ip')) or (colPickMode==1 and !data.containsKey('ip'))">
                 a.ip=#{data.ip},
             </if>
+            <if test="(colPickMode==0 and data.containsKey('port')) or (colPickMode==1 and !data.containsKey('port'))">
+                a.port=#{data.port},
+            </if>
+            <if test="(colPickMode==0 and data.containsKey('portIncrement')) or (colPickMode==1 and !data.containsKey('portIncrement'))">
+                a.port=ifnull(a.port,0) + #{data.portIncrement},
+            </if>
             <if test="(colPickMode==0 and data.containsKey('username')) or (colPickMode==1 and !data.containsKey('username'))">
                 a.username=#{data.username},
             </if>
@@ -144,6 +154,18 @@
                         </if>
                     </foreach>
                 </trim>
+                        <trim prefix="port=(case" suffix="ELSE port end),">
+                            <foreach collection="data.dataList" item="item" index="index" separator="" >
+                                <choose>
+                                    <when test="(colPickMode==0 and item.containsKey('port')) or (colPickMode==1 and !item.containsKey('port'))">
+                                        when a.id=#{item.id} then #{item.port}
+                                    </when>
+                                    <when test="(colPickMode==0 and item.containsKey('portIncrement')) or (colPickMode==1 and !item.containsKey('portIncrement'))">
+                                        when a.id=#{item.id} then ifnull(a.port,0) + #{item.portIncrement}
+                                    </when>
+                                </choose>
+                            </foreach>
+                        </trim>
                 <trim prefix="username=(case" suffix="ELSE username end),">
                     <foreach collection="data.dataList" item="item" index="index" separator="" >
                         <if test="(colPickMode==0 and item.containsKey('username')) or (colPickMode==1 and !item.containsKey('username'))">
@@ -402,6 +424,33 @@
                     #{item}
                 </foreach>
             </if>
+            <if test="conditionParamRef.containsKey('port')">
+                <if test="conditionParamRef.port != null ">
+                    ${_conditionType_} a.port = #{${_conditionParam_}.port}
+                </if>
+                <if test="conditionParamRef.port == null">
+                    ${_conditionType_} a.port is null
+                </if>
+            </if>
+            <if test="conditionParamRef.containsKey('portList') and conditionParamRef.portList.size() > 0">
+                ${_conditionType_} a.port in
+                <foreach collection="conditionParamRef.portList" open="(" close=")" index="index" item="item" separator=",">
+                    #{item}
+                </foreach>
+            </if>
+            <if test="conditionParamRef.containsKey('portNotList') and conditionParamRef.portNotList.size() > 0">
+                ${_conditionType_} a.port not in
+                <foreach collection="conditionParamRef.portNotList" open="(" close=")" index="index" item="item" separator=",">
+                    #{item}
+                </foreach>
+            </if>
+            <if test="conditionParamRef.containsKey('portStart') and conditionParamRef.portStart != null">
+                ${_conditionType_} a.port <![CDATA[ >= ]]> #{${_conditionParam_}.portStart}
+            </if>
+            <if test="conditionParamRef.containsKey('portEnd') and conditionParamRef.portEnd != null">
+                ${_conditionType_} a.port <![CDATA[ <= ]]> #{${_conditionParam_}.portEnd}
+            </if>
+
 
             <if test="conditionParamRef.containsKey('username')">
                 <if test="conditionParamRef.username != null and conditionParamRef.username != ''">
@@ -539,6 +588,13 @@
                         </foreach>
                         ,
                     </if>
+                    <if test="conditionParamRef.containsKey('portList') and conditionParamRef.portList.size() > 0">
+                        field(a.port,
+                        <foreach collection="conditionParamRef.portList" open="" close=")" index="index" item="item" separator=",">
+                            #{item}
+                        </foreach>
+                        ,
+                    </if>
                     <if test="conditionParamRef.containsKey('createUserIdList') and conditionParamRef.createUserIdList.size() > 0">
                         field(a.createUserId,
                         <foreach collection="conditionParamRef.createUserIdList" open="" close=")" index="index" item="item" separator=",">
@@ -568,6 +624,13 @@
                         </foreach>
                         ,
                     </if>
+                    <if test="conditionParamRef.containsKey('portList') and conditionParamRef.portList.size() > 0">
+                        field(a.port,
+                        <foreach collection="conditionParamRef.portList" open="" close=")" index="index" item="item" separator=",">
+                            #{item}
+                        </foreach>
+                        ,
+                    </if>
                     <if test="conditionParamRef.containsKey('createUserIdList') and conditionParamRef.createUserIdList.size() > 0">
                         field(a.createUserId,
                         <foreach collection="conditionParamRef.createUserIdList" open="" close=")" index="index" item="item" separator=",">
@@ -603,6 +666,11 @@
                         <if test='orderCol.ip != null and "DESC".equalsIgnoreCase(orderCol.ip)'>DESC</if>
                         ,
                     </if>
+                    <if test="orderCol.containsKey('port')">
+                        a.port
+                        <if test='orderCol.port != null and "DESC".equalsIgnoreCase(orderCol.port)'>DESC</if>
+                        ,
+                    </if>
                     <if test="orderCol.containsKey('username')">
                         a.username
                         <if test='orderCol.username != null and "DESC".equalsIgnoreCase(orderCol.username)'>DESC</if>
diff --git a/attendance-performance-manager/src/test/java/com/mortals/httpclient/door/DoorController.http b/attendance-performance-manager/src/test/java/com/mortals/httpclient/door/DoorController.http
index d0968ffc..9a3d5434 100644
--- a/attendance-performance-manager/src/test/java/com/mortals/httpclient/door/DoorController.http
+++ b/attendance-performance-manager/src/test/java/com/mortals/httpclient/door/DoorController.http
@@ -18,7 +18,7 @@ POST {{baseUrl}}/door/list
 Content-Type: application/json
 
 {
-    "deviceCode":"9ci6cz",
+    "deviceCode":"nqwde8",
     "page":1,
     "size":10
 }
@@ -30,11 +30,12 @@ Authorization: {{authToken}}
 Content-Type: application/json
 
 {
-        "deviceName":"r1vf4o",
-        "deviceCode":"a74fjp",
-        "ip":"nu6vgw",
-        "username":"ufxpy5",
-        "password":"9d2qwd",
+        "deviceName":"4e70lu",
+        "deviceCode":"zbjw2n",
+        "ip":"g4erpw",
+        "port":282,
+        "username":"7wld4o",
+        "password":"431xcj",
 }
 
 > {%
diff --git a/db/add.sql b/db/add.sql
index 0b413661..8224a442 100644
--- a/db/add.sql
+++ b/db/add.sql
@@ -893,6 +893,7 @@ CREATE TABLE mortals_xhx_door(
     `deviceName` varchar(64)      COMMENT '璁惧鍚嶇О',
     `deviceCode` varchar(64)      COMMENT '璁惧缂栫爜',
     `ip` varchar(64)      COMMENT 'Ip鍦板潃',
+    `port` int(9)      COMMENT '绔彛',
     `username` varchar(64)      COMMENT '鐢ㄦ埛鍚�',
     `password` varchar(64)      COMMENT '瀵嗙爜',
     `createTime` datetime      COMMENT '鍒涘缓鏃堕棿',
diff --git "a/doc/\350\200\203\345\213\244\347\273\251\346\225\210\347\256\241\347\220\206\347\263\273\347\273\237.docx" "b/doc/\350\200\203\345\213\244\347\273\251\346\225\210\347\256\241\347\220\206\347\263\273\347\273\237.docx"
index 0bf3427c382eb1daf71ae014f9a92bc9aa4bef6a..a1a71f022ac8d0ce3cf7405b208bcebae02ff047 100644
GIT binary patch
delta 10916
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

delta 10612
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

-- 
2.24.3