From a8b42807ab960c9174abfb590edd2989fe97a7c7 Mon Sep 17 00:00:00 2001
From: Administrator <zhubaomin>
Date: 星期二, 02 一月 2024 20:31:44 +0800
Subject: [PATCH] 2024-01-02 朱宝民 控制器查询,绑定记录查询

---
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrIntakeControllerMapper.xml                                        |  188 ++++++++++
 pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/controller/ControllerCtrl.java             |   52 ++
 pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intakeController/DtoToPojo.java            |   23 +
 pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intakeController/IntakeControllerSv.java   |   62 +++
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voPr/VoController.java                                      |    8 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoPr/PrIntakeControllerMapper.java                         |   55 +++
 pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intakeController/IntakeControllerCtrl.java |  179 +++++++++
 pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/controller/DtoToPojo.java                  |   23 +
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoPr/PrController.java                                    |   40 +
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrControllerMapper.xml                                              |   95 +++++
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoPr/PrControllerMapper.java                               |   20 +
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoPr/PrIntakeController.java                              |   92 +++++
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoController.java                                      |   42 ++
 pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/controller/ControllerSv.java               |   35 +
 pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/controller/QueryVo.java                    |   23 +
 pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/controller/DtoController.java              |   47 ++
 pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intakeController/DtoIntakeController.java  |   48 ++
 pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/result/ProjectResultCode.java              |   11 
 18 files changed, 1,009 insertions(+), 34 deletions(-)

diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoPr/PrControllerMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoPr/PrControllerMapper.java
index bf30cae..c1ab03e 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoPr/PrControllerMapper.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoPr/PrControllerMapper.java
@@ -2,12 +2,16 @@
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.dy.pipIrrGlobal.pojoPr.PrController;
+import com.dy.pipIrrGlobal.voPr.VoController;
 import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+import java.util.Map;
 
 /**
  * @author ZhuBaoMin
  * @date 2023-12-29 9:59
- * @LastEditTime 2023-12-29 9:59
+ * @LastEditTime 2024-01-02 16:22
  * @Description
  */
 
@@ -24,4 +28,18 @@
     int updateByPrimaryKeySelective(PrController record);
 
     int updateByPrimaryKey(PrController record);
+
+    /**
+     * 鏍规嵁鎸囧畾鑾峰彇鎺у埗鍣ㄨ褰曟暟
+     * @param params
+     * @return
+     */
+    Long getRecordCount(Map<?, ?> params);
+
+    /**
+     * 鏍规嵁鎸囧畾鑾峰彇鎺у埗鍣ㄨ褰�
+     * @param params
+     * @return
+     */
+    List<VoController> getControllers(Map<?, ?> params);
 }
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoPr/PrIntakeControllerMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoPr/PrIntakeControllerMapper.java
new file mode 100644
index 0000000..bf71fdc
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoPr/PrIntakeControllerMapper.java
@@ -0,0 +1,55 @@
+package com.dy.pipIrrGlobal.daoPr;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.dy.pipIrrGlobal.pojoPr.PrIntakeController;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2024-01-02 9:16
+ * @LastEditTime 2024-01-02 9:16
+ * @Description
+ */
+
+@Mapper
+public interface PrIntakeControllerMapper extends BaseMapper<PrIntakeController> {
+    int deleteByPrimaryKey(Long id);
+
+    int insert(PrIntakeController record);
+
+    int insertSelective(PrIntakeController record);
+
+    PrIntakeController selectByPrimaryKey(Long id);
+
+    int updateByPrimaryKeySelective(PrIntakeController record);
+
+    int updateByPrimaryKey(PrIntakeController record);
+
+    /**
+     * 鏍规嵁鍙栨按鍙g紪鍙枫�佹帶鍒跺櫒缂栧彿銆佹搷浣滅被鍒幏鍙栬褰曟暟閲�
+     * 閲嶅缁戝畾銆侀噸澶嶈В缁戦兘鐢ㄨ鏂规硶鍒ゆ柇
+     * @param intakeId 鍙栨按鍙D
+     * @param controllerId 鎺у埗鍣↖D
+     * @param operateType 鎿嶄綔绫诲瀷 1-鎹嗙粦锛�2-瑙g粦
+     * @return 濡備綍鏉′欢璁板綍鏁�
+     */
+    Integer getBindRecordCount(@Param("intakeId") Long intakeId, @Param("controllerId") Long controllerId, @Param("operateType") Byte operateType);
+
+    /**
+     * 鏍规嵁鍙栨按鍙g紪鍙疯幏鍙栫粦瀹氳褰曞垪琛�
+     * @param intakeId 鍙栨按鍙g紪鍙�
+     * @return 鍙栨按鍙d笌鎺у埗鍣ㄧ粦瀹氬垪琛�
+     */
+    List<Map<String, Object>> getBindsByIntakeId(@Param("intakeId") Long intakeId);
+
+    /**
+     * 鏍规嵁鎺у埗鍣ㄧ紪鍙疯幏鍙栫粦瀹氳褰曞垪琛�
+     * @param controllerId 鎺у埗鍣ㄧ紪鍙�
+     * @return 鍙栨按鍙d笌鎺у埗鍣ㄧ粦瀹氬垪琛�
+     */
+    List<Map<String, Object>> getBindsByControllerId(@Param("controllerId") Long controllerId);
+}
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoPr/PrController.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoPr/PrController.java
index 481982a..37884d4 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoPr/PrController.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoPr/PrController.java
@@ -35,50 +35,62 @@
     public static final long serialVersionUID = 1L;
 
     /**
-    * 涓婚敭
-    */
+     * 涓婚敭
+     */
     @JSONField(serializeUsing= ObjectWriterImplToString.class)
     @TableId(type = IdType.INPUT)
     @Schema(description = "瀹炰綋id", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
     private Long id;
 
     /**
-    * 缂栧彿
-    */
+     * 缂栧彿
+     */
     @Schema(description = "缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED)
     @NotBlank(message = "鎺у埗鍣ㄧ紪鍙蜂笉鑳戒负绌�")
     @Length(message = "鎺у埗鍣ㄧ紪鍙蜂笉澶т簬{max}瀛�",max = 25)
     private String code;
 
     /**
-    * 閫氳鍗忚
-    */
+     * 閫氳鍗忚
+     */
     @Schema(description = "閫氳鍗忚", requiredMode = Schema.RequiredMode.REQUIRED)
     @NotBlank(message = "閫氳鍗忚涓嶈兘涓虹┖")
     @Length(message = "閫氳鍗忚涓嶅ぇ浜巤max}瀛�",max = 25)
     private String protocol;
 
     /**
-    * 娣诲姞鏂瑰紡;1-绯荤粺鑷姩锛�2-鎵嬪姩
-    */
+     * 鍦ㄧ嚎鐘舵��;1-鍦ㄧ嚎锛�2-绂荤嚎
+     */
+    @Schema(description = "鍦ㄧ嚎鐘舵��", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    private Byte onlinestate;
+
+    /**
+     * 鏈�杩戜笂鎶ユ椂闂�
+     */
+    @Schema(description = "鏈�杩戜笂鎶ユ椂闂�", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    private Date reporttime;
+
+    /**
+     * 娣诲姞鏂瑰紡;1-绯荤粺鑷姩锛�2-鎵嬪姩
+     */
     @Schema(description = "娣诲姞鏂瑰紡", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
     private Byte addways;
 
     /**
-    * 鎿嶄綔浜虹紪鍙�
-    */
+     * 鎿嶄綔浜虹紪鍙�
+     */
     @Schema(description = "鎿嶄綔浜虹紪鍙�", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
     private Long operator;
 
     /**
-    * 鎿嶄綔鏃堕棿
-    */
+     * 鎿嶄綔鏃堕棿
+     */
     @Schema(description = "鎿嶄綔鏃堕棿", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
     private Date operatedt;
 
     /**
-    * 閫昏緫鍒犻櫎鏍囪瘑;0-鏈垹闄わ紝1-鍒犻櫎
-    */
+     * 閫昏緫鍒犻櫎鏍囪瘑;0-鏈垹闄わ紝1-鍒犻櫎
+     */
     @Schema(description = "鍒犻櫎鏍囪瘑", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
     private Byte deleted;
 }
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoPr/PrIntakeController.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoPr/PrIntakeController.java
new file mode 100644
index 0000000..745a435
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoPr/PrIntakeController.java
@@ -0,0 +1,92 @@
+package com.dy.pipIrrGlobal.pojoPr;
+
+import com.alibaba.fastjson2.annotation.JSONField;
+import com.alibaba.fastjson2.writer.ObjectWriterImplToString;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.dy.common.po.BaseEntity;
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.Max;
+import jakarta.validation.constraints.Min;
+import jakarta.validation.constraints.NotNull;
+import jakarta.validation.constraints.Positive;
+import lombok.*;
+import org.hibernate.validator.constraints.Length;
+
+import java.util.Date;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2024-01-02 9:16
+ * @LastEditTime 2024-01-02 9:16
+ * @Description
+ */
+
+/**
+ * 鍙栨按鍙f崋缁戣〃
+ */
+
+@TableName(value="pr_intake_controller", autoResultMap = true)
+@Data
+@Builder
+@ToString
+@NoArgsConstructor
+@AllArgsConstructor
+@Schema(name = "鍙栨按鍙f崋缁戝疄浣�")
+public class PrIntakeController implements BaseEntity {
+    public static final long serialVersionUID = 1L;
+
+    /**
+    * 涓婚敭
+    */
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    @TableId(type = IdType.INPUT)
+    @Schema(description = "瀹炰綋id", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    private Long id;
+
+    /**
+    * 鍙栨按鍙g紪鍙�
+    */
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    @Schema(description = "鍙栨按鍙D", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotNull(message = "鍙栨按鍙D涓嶈兘涓虹┖")
+    private Long intakeid;
+
+    /**
+    * 鎺у埗鍣ㄧ紪鍙�
+    */
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    @Schema(description = "鎺у埗鍣↖D", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotNull(message = "鎺у埗鍣↖D涓嶈兘涓虹┖")
+    private Long controllerid;
+
+    /**
+    * 鎿嶄綔绫诲瀷;1-鎹嗙粦锛�2-瑙g粦
+    */
+    @Schema(description = "鎿嶄綔绫诲瀷", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    @Max(message = "鎿嶄綔绫诲瀷鍙兘1鎴�2", value = 2)
+    @Min(message = "鎿嶄綔绫诲瀷鍙兘1鎴�2",value = 1)
+    private Byte operatetype;
+
+    /**
+    * 澶囨敞淇℃伅
+    */
+    @Schema(description = "澶囨敞", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    @Length(message = "澶囨敞闀垮害灏忎簬{max}瀛�", min = 1, max = 200)
+    private String remarks;
+
+    /**
+    * 鎿嶄綔浜虹紪鍙�
+    */
+    @Schema(description = "鎿嶄綔浜虹紪鍙�", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    @Positive(message = "鎿嶄綔浜虹紪鍙峰繀椤讳负澶т簬0鐨勬暣鏁�")
+    private Long operator;
+
+    /**
+    * 鎿嶄綔鏃堕棿
+    */
+    @Schema(description = "鎿嶄綔鏃堕棿", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    private Date operatedt;
+
+}
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voPr/VoController.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voPr/VoController.java
index 1d632e8..d5d4934 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voPr/VoController.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voPr/VoController.java
@@ -30,12 +30,12 @@
     @Schema(title = "鎺у埗鍣ㄧ紪鍙�")
     @ExcelProperty("鎺у埗鍣ㄧ紪鍙�")
     @ColumnWidth(15)
-    private String code;
+    private String controllerCode;
 
     @Schema(title = "鍦ㄧ嚎鐘舵��")
     @ExcelProperty("鍦ㄧ嚎鐘舵��")
     @ColumnWidth(15)
-    private String state;
+    private String onlineState;
 
     @Schema(title = "缁戝畾鍙栨按鍙�")
     @ExcelProperty("缁戝畾鍙栨按鍙�")
@@ -45,12 +45,12 @@
     @Schema(title = "缁戝畾娆℃暟")
     @ExcelProperty("缁戝畾娆℃暟")
     @ColumnWidth(10)
-    private Integer bindings;
+    private Integer bindNumber;
 
     @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     @Schema(title = "鏈�杩戜笂鎶ユ椂闂�")
     @ExcelProperty("鏈�杩戜笂鎶ユ椂闂�")
     @ColumnWidth(30)
-    private Date operateDt;
+    private Date reportTime;
 }
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoController.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoController.java
new file mode 100644
index 0000000..9bfd3d3
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoController.java
@@ -0,0 +1,42 @@
+package com.dy.pipIrrGlobal.voSe;
+
+import com.dy.common.po.BaseEntity;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2024-01-02 15:56
+ * @LastEditTime 2024-01-02 15:56
+ * @Description
+ */
+
+@Data
+@Schema(title = "鎺у埗鍣ㄨ鍥惧璞�")
+public class VoController implements BaseEntity {
+    private static final long serialVersionUID = 1L;
+
+    @Schema(title = "ID")
+    private Long id;
+
+    @Schema(title = "鎺у埗鍣ㄧ紪鍙�")
+    private Long controllerCode;
+
+    @Schema(title = "鍦ㄧ嚎鐘舵��")
+    private String onlineState;
+
+    @Schema(title = "缁戝畾鍙栨按鍙�")
+    private String intakeName;
+
+    @Schema(title = "缁戝畾娆℃暟")
+    private Integer bindNumber;
+
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @Schema(title = "鏈�杩戜笂鎶ユ椂闂�")
+    private Date reportTime;
+}
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrControllerMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrControllerMapper.xml
index 9781e59..df83fbb 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrControllerMapper.xml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrControllerMapper.xml
@@ -7,6 +7,8 @@
     <id column="id" jdbcType="BIGINT" property="id" />
     <result column="code" jdbcType="VARCHAR" property="code" />
     <result column="protocol" jdbcType="VARCHAR" property="protocol" />
+    <result column="onlineState" jdbcType="TINYINT" property="onlinestate" />
+    <result column="reportTime" jdbcType="TIMESTAMP" property="reporttime" />
     <result column="addWays" jdbcType="TINYINT" property="addways" />
     <result column="operator" jdbcType="BIGINT" property="operator" />
     <result column="operateDt" jdbcType="TIMESTAMP" property="operatedt" />
@@ -14,7 +16,7 @@
   </resultMap>
   <sql id="Base_Column_List">
     <!--@mbg.generated-->
-    id, code, protocol, addWays, `operator`, operateDt, deleted
+    id, code, protocol, onlineState, reportTime, addWays, `operator`, operateDt, deleted
   </sql>
   <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
     <!--@mbg.generated-->
@@ -32,11 +34,13 @@
   <insert id="insert" parameterType="com.dy.pipIrrGlobal.pojoPr.PrController">
     <!--@mbg.generated-->
     insert into pr_controller (id, code, protocol, 
-      addWays, `operator`, operateDt, 
-      deleted)
+      onlineState, reportTime, addWays, 
+      `operator`, operateDt, deleted
+      )
     values (#{id,jdbcType=BIGINT}, #{code,jdbcType=VARCHAR}, #{protocol,jdbcType=VARCHAR}, 
-      #{addways,jdbcType=TINYINT}, #{operator,jdbcType=BIGINT}, #{operatedt,jdbcType=TIMESTAMP}, 
-      #{deleted,jdbcType=TINYINT})
+      #{onlinestate,jdbcType=TINYINT}, #{reporttime,jdbcType=TIMESTAMP}, #{addways,jdbcType=TINYINT}, 
+      #{operator,jdbcType=BIGINT}, #{operatedt,jdbcType=TIMESTAMP}, #{deleted,jdbcType=TINYINT}
+      )
   </insert>
 
   <insert id="insertSelective" parameterType="com.dy.pipIrrGlobal.pojoPr.PrController">
@@ -51,6 +55,12 @@
       </if>
       <if test="protocol != null">
         protocol,
+      </if>
+      <if test="onlinestate != null">
+        onlineState,
+      </if>
+      <if test="reporttime != null">
+        reportTime,
       </if>
       <if test="addways != null">
         addWays,
@@ -74,6 +84,12 @@
       </if>
       <if test="protocol != null">
         #{protocol,jdbcType=VARCHAR},
+      </if>
+      <if test="onlinestate != null">
+        #{onlinestate,jdbcType=TINYINT},
+      </if>
+      <if test="reporttime != null">
+        #{reporttime,jdbcType=TIMESTAMP},
       </if>
       <if test="addways != null">
         #{addways,jdbcType=TINYINT},
@@ -99,6 +115,12 @@
       <if test="protocol != null">
         protocol = #{protocol,jdbcType=VARCHAR},
       </if>
+      <if test="onlinestate != null">
+        onlineState = #{onlinestate,jdbcType=TINYINT},
+      </if>
+      <if test="reporttime != null">
+        reportTime = #{reporttime,jdbcType=TIMESTAMP},
+      </if>
       <if test="addways != null">
         addWays = #{addways,jdbcType=TINYINT},
       </if>
@@ -119,10 +141,73 @@
     update pr_controller
     set code = #{code,jdbcType=VARCHAR},
       protocol = #{protocol,jdbcType=VARCHAR},
+      onlineState = #{onlinestate,jdbcType=TINYINT},
+      reportTime = #{reporttime,jdbcType=TIMESTAMP},
       addWays = #{addways,jdbcType=TINYINT},
       `operator` = #{operator,jdbcType=BIGINT},
       operateDt = #{operatedt,jdbcType=TIMESTAMP},
       deleted = #{deleted,jdbcType=TINYINT}
     where id = #{id,jdbcType=BIGINT}
   </update>
+
+  <!--鏍规嵁鎸囧畾鑾峰彇鎺у埗鍣ㄨ褰曟暟-->
+  <select id="getRecordCount" resultType="java.lang.Long">
+    SELECT
+      COUNT(*) AS recordCount
+    FROM pr_controller con
+        INNER JOIN pr_intake_controller ic ON ic.controllerId = con.id
+        INNER JOIN pr_intake inta ON ic.intakeId = inta.id
+        , (SELECT @i:=0) AS itable
+    <where>
+      AND ic.operateType = 1
+      <if test = "controllerCode != null and controllerCode !=''">
+        AND con.code like CONCAT('%',#{controllerCode},'%')
+      </if>
+
+      <if test = "onlineState != null and onlineState > 0">
+        AND con.onlineState = ${onlineState}
+      </if>
+
+      <if test = "bindNumber != null and bindNumber > 0">
+        AND (SELECT COUNT(*) FROM pr_intake_controller WHERE controllerId = con.id AND intakeId = inta.id AND operateType = 1) = ${bindNumber}
+      </if>
+    </where>
+  </select>
+
+  <!--鏍规嵁鎸囧畾鑾峰彇鎺у埗鍣ㄨ褰�-->
+  <select id="getControllers" resultType="com.dy.pipIrrGlobal.voPr.VoController">
+    SELECT
+        (@i:=@i+1) AS id,
+        con.code AS controllerCode,
+        (CASE
+            WHEN con.onlineState = 1 THEN "鍦ㄧ嚎"
+            WHEN con.onlineState = 2 THEN "绂荤嚎"
+        END) AS onlineState,
+        inta.name AS intakeName,
+        (SELECT COUNT(*) FROM pr_intake_controller WHERE controllerId = con.id AND intakeId = inta.id AND operateType = 1) AS bindNumber,
+        con.reportTime
+    FROM pr_controller con
+        INNER JOIN pr_intake_controller ic ON ic.controllerId = con.id
+        INNER JOIN pr_intake inta ON ic.intakeId = inta.id
+        , (SELECT @i:=0) AS itable
+    <where>
+      AND ic.operateType = 1
+      <if test = "controllerCode != null and controllerCode !=''">
+        AND con.code like CONCAT('%',#{controllerCode},'%')
+      </if>
+
+      <if test = "onlineState != null and onlineState > 0">
+        AND con.onlineState = ${onlineState}
+      </if>
+
+      <if test = "bindNumber != null and bindNumber > 0">
+        AND (SELECT COUNT(*) FROM pr_intake_controller WHERE controllerId = con.id AND intakeId = inta.id AND operateType = 1) = ${bindNumber}
+      </if>
+    </where>
+    ORDER BY con.operateDt DESC
+    <if test="pageCurr != null and pageSize != null">
+      LIMIT ${pageCurr}, ${pageSize}
+    </if>
+
+  </select>
 </mapper>
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrIntakeControllerMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrIntakeControllerMapper.xml
new file mode 100644
index 0000000..df62638
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrIntakeControllerMapper.xml
@@ -0,0 +1,188 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.dy.pipIrrGlobal.daoPr.PrIntakeControllerMapper">
+  <resultMap id="BaseResultMap" type="com.dy.pipIrrGlobal.pojoPr.PrIntakeController">
+    <!--@mbg.generated-->
+    <!--@Table pr_intake_controller-->
+    <id column="id" jdbcType="BIGINT" property="id" />
+    <result column="intakeId" jdbcType="BIGINT" property="intakeid" />
+    <result column="controllerId" jdbcType="BIGINT" property="controllerid" />
+    <result column="operateType" jdbcType="TINYINT" property="operatetype" />
+    <result column="remarks" jdbcType="VARCHAR" property="remarks" />
+    <result column="operator" jdbcType="BIGINT" property="operator" />
+    <result column="operateDt" jdbcType="TIMESTAMP" property="operatedt" />
+  </resultMap>
+  <sql id="Base_Column_List">
+    <!--@mbg.generated-->
+    id, intakeId, controllerId, operateType, remarks, `operator`, operateDt
+  </sql>
+  <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
+    <!--@mbg.generated-->
+    select 
+    <include refid="Base_Column_List" />
+    from pr_intake_controller
+    where id = #{id,jdbcType=BIGINT}
+  </select>
+  <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
+    <!--@mbg.generated-->
+    delete from pr_intake_controller
+    where id = #{id,jdbcType=BIGINT}
+  </delete>
+
+  <insert id="insert" parameterType="com.dy.pipIrrGlobal.pojoPr.PrIntakeController">
+    <!--@mbg.generated-->
+    insert into pr_intake_controller (id, intakeId, controllerId, 
+      operateType, remarks, `operator`, 
+      operateDt)
+    values (#{id,jdbcType=BIGINT}, #{intakeid,jdbcType=BIGINT}, #{controllerid,jdbcType=BIGINT}, 
+      #{operatetype,jdbcType=TINYINT}, #{remarks,jdbcType=VARCHAR}, #{operator,jdbcType=BIGINT}, 
+      #{operatedt,jdbcType=TIMESTAMP})
+  </insert>
+
+  <insert id="insertSelective" parameterType="com.dy.pipIrrGlobal.pojoPr.PrIntakeController">
+    <!--@mbg.generated-->
+    insert into pr_intake_controller
+    <trim prefix="(" suffix=")" suffixOverrides=",">
+      <if test="id != null">
+        id,
+      </if>
+      <if test="intakeid != null">
+        intakeId,
+      </if>
+      <if test="controllerid != null">
+        controllerId,
+      </if>
+      <if test="operatetype != null">
+        operateType,
+      </if>
+      <if test="remarks != null">
+        remarks,
+      </if>
+      <if test="operator != null">
+        `operator`,
+      </if>
+      <if test="operatedt != null">
+        operateDt,
+      </if>
+    </trim>
+    <trim prefix="values (" suffix=")" suffixOverrides=",">
+      <if test="id != null">
+        #{id,jdbcType=BIGINT},
+      </if>
+      <if test="intakeid != null">
+        #{intakeid,jdbcType=BIGINT},
+      </if>
+      <if test="controllerid != null">
+        #{controllerid,jdbcType=BIGINT},
+      </if>
+      <if test="operatetype != null">
+        #{operatetype,jdbcType=TINYINT},
+      </if>
+      <if test="remarks != null">
+        #{remarks,jdbcType=VARCHAR},
+      </if>
+      <if test="operator != null">
+        #{operator,jdbcType=BIGINT},
+      </if>
+      <if test="operatedt != null">
+        #{operatedt,jdbcType=TIMESTAMP},
+      </if>
+    </trim>
+  </insert>
+  <update id="updateByPrimaryKeySelective" parameterType="com.dy.pipIrrGlobal.pojoPr.PrIntakeController">
+    <!--@mbg.generated-->
+    update pr_intake_controller
+    <set>
+      <if test="intakeid != null">
+        intakeId = #{intakeid,jdbcType=BIGINT},
+      </if>
+      <if test="controllerid != null">
+        controllerId = #{controllerid,jdbcType=BIGINT},
+      </if>
+      <if test="operatetype != null">
+        operateType = #{operatetype,jdbcType=TINYINT},
+      </if>
+      <if test="remarks != null">
+        remarks = #{remarks,jdbcType=VARCHAR},
+      </if>
+      <if test="operator != null">
+        `operator` = #{operator,jdbcType=BIGINT},
+      </if>
+      <if test="operatedt != null">
+        operateDt = #{operatedt,jdbcType=TIMESTAMP},
+      </if>
+    </set>
+    where id = #{id,jdbcType=BIGINT}
+  </update>
+  <update id="updateByPrimaryKey" parameterType="com.dy.pipIrrGlobal.pojoPr.PrIntakeController">
+    <!--@mbg.generated-->
+    update pr_intake_controller
+    set intakeId = #{intakeid,jdbcType=BIGINT},
+      controllerId = #{controllerid,jdbcType=BIGINT},
+      operateType = #{operatetype,jdbcType=TINYINT},
+      remarks = #{remarks,jdbcType=VARCHAR},
+      `operator` = #{operator,jdbcType=BIGINT},
+      operateDt = #{operatedt,jdbcType=TIMESTAMP}
+    where id = #{id,jdbcType=BIGINT}
+  </update>
+
+  <!--鏍规嵁鍙栨按鍙g紪鍙枫�佹帶鍒跺櫒缂栧彿銆佹搷浣滅被鍒幏鍙栬褰曟暟閲�-->
+  <select id="getBindRecordCount" resultType="java.lang.Integer">
+    SELECT
+        COUNT(*) AS recordCount
+    FROM pr_intake_controller
+    <where>
+      <if test = "intakeId != null and intakeId > 0">
+        AND intakeId = ${intakeId}
+      </if>
+
+      <if test = "controllerId != null and controllerId > 0">
+        AND controllerId = ${controllerId}
+      </if>
+
+      <if test = "operateType != null and operateType > 0">
+        AND operateType = ${operateType}
+      </if>
+    </where>
+  </select>
+
+  <!--鏍规嵁鍙栨按鍙g紪鍙疯幏鍙栫粦瀹氳褰曞垪琛�-->
+  <select id="getBindsByIntakeId" resultType="java.util.Map">
+    SELECT
+        user.name AS userName,
+        con.code AS controllerCode,
+        (CASE
+            WHEN ic.operateType = 1 THEN "缁戝畾"
+            WHEN ic.operateType = 2 THEN "瑙g粦"
+        END) AS operateType,
+        ic.operateDt
+    FROM pr_intake inta
+        INNER JOIN pr_intake_controller ic ON inta.id= ic.intakeId
+        INNER JOIN ba_user user ON ic.operator = user.id
+        INNER JOIN pr_controller con ON ic.controllerId = con.id
+    <if test = "intakeId != null and intakeId > 0">
+      AND inta.id = ${intakeId}
+    </if>
+    ORDER BY ic.operateDt DESC
+  </select>
+
+  <!--鏍规嵁鎺у埗鍣ㄧ紪鍙疯幏鍙栫粦瀹氳褰曞垪琛�-->
+  <select id="getBindsByControllerId" resultType="java.util.Map">
+    SELECT
+        (CASE
+            WHEN ic.operateType = 1 THEN "缁戝畾"
+            WHEN ic.operateType = 2 THEN "瑙g粦"
+        END) AS operateType,
+        inta.name AS intakeName,
+        user.name AS userName,
+        ic.operateDt
+    FROM pr_controller con
+        INNER JOIN pr_intake_controller ic ON ic.controllerId = con.id
+        INNER JOIN pr_intake inta ON ic.intakeId = inta.id
+        INNER JOIN ba_user user ON ic.operator = user.id
+    <if test = "controllerId != null and controllerId > 0">
+      AND con.id = ${controllerId}
+    </if>
+    ORDER BY ic.operateDt DESC
+  </select>
+</mapper>
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/controller/ControllerCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/controller/ControllerCtrl.java
index fe5f6b9..d395513 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/controller/ControllerCtrl.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/controller/ControllerCtrl.java
@@ -3,8 +3,11 @@
 import com.dy.common.aop.SsoAop;
 import com.dy.common.webUtil.BaseResponse;
 import com.dy.common.webUtil.BaseResponseUtils;
+import com.dy.common.webUtil.QueryResultVo;
 import com.dy.common.webUtil.ResultCodeMsg;
 import com.dy.pipIrrGlobal.pojoPr.PrController;
+import com.dy.pipIrrGlobal.voPr.VoController;
+import com.dy.pipIrrGlobal.voSe.VoActiveCard;
 import com.dy.pipIrrProject.result.ProjectResultCode;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.media.Content;
@@ -18,12 +21,10 @@
 import org.springframework.http.MediaType;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.validation.BindingResult;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import java.util.Date;
+import java.util.List;
 import java.util.Objects;
 import java.util.Optional;
 
@@ -42,6 +43,38 @@
 public class ControllerCtrl {
     private final ControllerSv controllerSv;
 
+    @Operation(summary = "鑾峰緱涓�椤垫帶鍒跺櫒璁板綍", description = "杩斿洖涓�椤垫帶鍒跺櫒鏁版嵁")
+    @ApiResponses(value = {
+            @ApiResponse(
+                    responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE,
+                    description = "杩斿洖涓�椤垫帶鍒跺櫒鏁版嵁锛圔aseResponse.content:QueryResultVo[{}]锛�",
+                    content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE,
+                            schema = @Schema(implementation = VoActiveCard.class))}
+            )
+    })
+    @GetMapping(path = "/getControllers")
+    @SsoAop()
+    public BaseResponse<QueryResultVo<List<VoController>>> getControllers(QueryVo vo){
+        try {
+            QueryResultVo<List<VoController>> res = controllerSv.getControllers(vo);
+            if(res.itemTotal != null && res.itemTotal > 0) {
+                return BaseResponseUtils.buildSuccess(res);
+            }else {
+                return BaseResponseUtils.buildFail(ProjectResultCode.NO_RECORDS.getMessage());
+            }
+            //return BaseResponseUtils.buildSuccess(res);
+        } catch (Exception e) {
+            log.error("鑾峰彇寮�鍗¤褰曞紓甯�", e);
+            return BaseResponseUtils.buildException(e.getMessage()) ;
+        }
+    }
+
+    /**
+     * 娣诲姞鎺у埗鍣�
+     * @param po 鎺у埗鍣ㄥ疄浣撳璞�
+     * @param bindingResult
+     * @return 娣诲姞鏄惁鎴愬姛
+     */
     @Operation(summary = "娣诲姞鎺у埗鍣ㄨ褰�", description = "娣诲姞鎺у埗鍣ㄨ褰�")
     @ApiResponses(value = {
             @ApiResponse(
@@ -54,15 +87,18 @@
     @PostMapping(path = "add", consumes = MediaType.APPLICATION_JSON_VALUE)
     @Transactional(rollbackFor = Exception.class)
     @SsoAop()
-    public BaseResponse<Boolean> add(@RequestBody @Valid PrController po, BindingResult bindingResult){
+    public BaseResponse<Boolean> add(@RequestBody @Valid DtoController po, BindingResult bindingResult){
         if(bindingResult != null && bindingResult.hasErrors()){
             return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage());
         }
 
+        PrController prController = DtoToPojo.INSTANCT.po2vo(po);
         Date operateTime = new Date();
-        po.setOperatedt(operateTime);
-        po.setDeleted((byte)0);
-        Integer rec = Optional.ofNullable(controllerSv.addController(po)).orElse(0);
+        prController.setOperatedt(operateTime);
+        prController.setDeleted((byte)0);
+        prController.setOnlinestate((byte)2);
+        prController.setReporttime(operateTime);
+        Integer rec = Optional.ofNullable(controllerSv.addController(prController)).orElse(0);
         if(rec == 0) {
             return BaseResponseUtils.buildFail(ProjectResultCode.CONTROLLER_FAIL.getMessage());
         }
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/controller/ControllerSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/controller/ControllerSv.java
index 717429e..83c0f26 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/controller/ControllerSv.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/controller/ControllerSv.java
@@ -1,10 +1,16 @@
 package com.dy.pipIrrProject.controller;
 
+import com.dy.common.webUtil.QueryResultVo;
 import com.dy.pipIrrGlobal.daoPr.PrControllerMapper;
 import com.dy.pipIrrGlobal.pojoPr.PrController;
+import com.dy.pipIrrGlobal.voPr.VoController;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.dubbo.common.utils.PojoUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.Map;
 
 /**
  * @author ZhuBaoMin
@@ -20,6 +26,35 @@
     private PrControllerMapper prControllerMapper;
 
     /**
+     * 鏍规嵁鎸囧畾鑾峰彇鎺у埗鍣ㄨ褰�
+     * @param queryVo
+     * @return
+     */
+    public QueryResultVo<List<VoController>> getControllers(QueryVo queryVo) {
+        Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(queryVo);
+
+        Long itemTotal = prControllerMapper.getRecordCount(params);
+
+        QueryResultVo<List<VoController>> rsVo = new QueryResultVo<>() ;
+        Integer pageCurr = 0;
+        Integer pageSize = 10000;
+        rsVo.pageCurr = 1;
+        rsVo.pageSize = 10000;
+        if(queryVo.pageSize != null && queryVo.pageCurr != null) {
+            rsVo.pageSize = queryVo.pageSize ;
+            rsVo.pageCurr = queryVo.pageCurr;
+            pageSize = queryVo.pageSize ;
+            pageCurr = (Integer.parseInt(params.get("pageCurr").toString()) - 1) * Integer.parseInt(params.get("pageSize").toString());
+        }
+        params.put("pageCurr", pageCurr);
+        params.put("pageSize", pageSize);
+
+        rsVo.calculateAndSet(itemTotal, params);
+        rsVo.obj = prControllerMapper.getControllers(params);
+        return rsVo ;
+    }
+
+    /**
      * 娣诲姞鎺у埗鍣�
      * @param po
      * @return
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/controller/DtoController.java b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/controller/DtoController.java
new file mode 100644
index 0000000..3ba0686
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/controller/DtoController.java
@@ -0,0 +1,47 @@
+package com.dy.pipIrrProject.controller;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotBlank;
+import lombok.Data;
+import org.hibernate.validator.constraints.Length;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2024-01-02 16:36
+ * @LastEditTime 2024-01-02 16:36
+ * @Description
+ */
+
+@Data
+@Schema(name = "鎺у埗鍣ㄤ紶鍏ュ璞�")
+public class DtoController {
+    public static final long serialVersionUID = 1L;
+
+    /**
+     * 缂栧彿
+     */
+    @Schema(description = "缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotBlank(message = "鎺у埗鍣ㄧ紪鍙蜂笉鑳戒负绌�")
+    @Length(message = "鎺у埗鍣ㄧ紪鍙蜂笉澶т簬{max}瀛�",max = 25)
+    private String code;
+
+    /**
+     * 閫氳鍗忚
+     */
+    @Schema(description = "閫氳鍗忚", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotBlank(message = "閫氳鍗忚涓嶈兘涓虹┖")
+    @Length(message = "閫氳鍗忚涓嶅ぇ浜巤max}瀛�",max = 25)
+    private String protocol;
+
+    /**
+     * 娣诲姞鏂瑰紡;1-绯荤粺鑷姩锛�2-鎵嬪姩
+     */
+    @Schema(description = "娣诲姞鏂瑰紡", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    private Byte addWays;
+
+    /**
+     * 鎿嶄綔浜虹紪鍙�
+     */
+    @Schema(description = "鎿嶄綔浜虹紪鍙�", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    private Long operator;
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/controller/DtoToPojo.java b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/controller/DtoToPojo.java
new file mode 100644
index 0000000..0f2c3f9
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/controller/DtoToPojo.java
@@ -0,0 +1,23 @@
+package com.dy.pipIrrProject.controller;
+
+import com.dy.pipIrrGlobal.pojoPr.PrController;
+import org.mapstruct.Mapper;
+import org.mapstruct.Mapping;
+import org.mapstruct.factory.Mappers;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2024-01-02 16:39
+ * @LastEditTime 2024-01-02 16:39
+ * @Description
+ */
+
+@Mapper
+public interface DtoToPojo {
+    DtoToPojo INSTANCT = Mappers.getMapper(DtoToPojo.class);
+    @Mapping(target = "code", source = "code")
+    @Mapping(target = "protocol", source = "protocol")
+    @Mapping(target = "addways", source = "addWays")
+    @Mapping(target = "operator", source = "operator")
+    PrController po2vo(DtoController po);
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/controller/QueryVo.java b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/controller/QueryVo.java
index d52f49c..23b3f73 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/controller/QueryVo.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/controller/QueryVo.java
@@ -1,10 +1,31 @@
 package com.dy.pipIrrProject.controller;
 
+import com.dy.common.webUtil.QueryConditionVo;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+
 /**
  * @author ZhuBaoMin
  * @date 2023-12-29 10:07
  * @LastEditTime 2023-12-29 10:07
  * @Description
  */
-public class QueryVo {
+
+@Data
+@EqualsAndHashCode(callSuper = false)
+@ToString(callSuper = true)
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+@Schema(name = "鎺у埗鍣ㄦ煡璇㈡潯浠�")
+public class QueryVo extends QueryConditionVo {
+
+    @Schema(description = "鎺у埗鍣ㄧ紪鍙�")
+    private String controllerCode;
+
+    @Schema(description = "鍦ㄧ嚎鐘舵��")
+    public Integer onlineState;
+
+    @Schema(description = "缁戝畾鏁伴噺")
+    public Integer bindNumber;
 }
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intakeController/DtoIntakeController.java b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intakeController/DtoIntakeController.java
new file mode 100644
index 0000000..451f3a5
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intakeController/DtoIntakeController.java
@@ -0,0 +1,48 @@
+package com.dy.pipIrrProject.intakeController;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotNull;
+import jakarta.validation.constraints.Positive;
+import lombok.Data;
+import org.hibernate.validator.constraints.Length;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2024-01-02 10:53
+ * @LastEditTime 2024-01-02 10:53
+ * @Description
+ */
+
+@Data
+@Schema(name = "鍙栨按鍙c�佹帶鍒跺櫒缁戝畾鍏崇郴浼犲叆瀵硅薄")
+public class DtoIntakeController {
+    public static final long serialVersionUID = 1L;
+
+    /**
+     * 鍙栨按鍙g紪鍙�
+     */
+    @Schema(description = "鍙栨按鍙D", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotNull(message = "鍙栨按鍙D涓嶈兘涓虹┖")
+    private Long intakeId;
+
+    /**
+     * 鎺у埗鍣ㄧ紪鍙�
+     */
+    @Schema(description = "鎺у埗鍣↖D", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotNull(message = "鎺у埗鍣↖D涓嶈兘涓虹┖")
+    private Long controllerId;
+
+    /**
+     * 澶囨敞淇℃伅
+     */
+    @Schema(description = "澶囨敞", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    @Length(message = "澶囨敞闀垮害灏忎簬{max}瀛�", min = 1, max = 200)
+    private String remarks;
+
+    /**
+     * 鎿嶄綔浜虹紪鍙�
+     */
+    @Schema(description = "鎿嶄綔浜虹紪鍙�", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    @Positive(message = "鎿嶄綔浜虹紪鍙峰繀椤讳负澶т簬0鐨勬暣鏁�")
+    private Long operator;
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intakeController/DtoToPojo.java b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intakeController/DtoToPojo.java
new file mode 100644
index 0000000..6de4a26
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intakeController/DtoToPojo.java
@@ -0,0 +1,23 @@
+package com.dy.pipIrrProject.intakeController;
+
+import com.dy.pipIrrGlobal.pojoPr.PrIntakeController;
+import org.mapstruct.Mapper;
+import org.mapstruct.Mapping;
+import org.mapstruct.factory.Mappers;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2024-01-02 10:59
+ * @LastEditTime 2024-01-02 10:59
+ * @Description DtoToPojo 杞� PrIntakeController
+ */
+
+@Mapper
+public interface DtoToPojo {
+    DtoToPojo INSTANCT = Mappers.getMapper(DtoToPojo.class);
+    @Mapping(target = "intakeid", source = "intakeId")
+    @Mapping(target = "controllerid", source = "controllerId")
+    @Mapping(target = "remarks", source = "remarks")
+    @Mapping(target = "operator", source = "operator")
+    PrIntakeController po2vo(DtoIntakeController po);
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intakeController/IntakeControllerCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intakeController/IntakeControllerCtrl.java
new file mode 100644
index 0000000..c1aaa56
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intakeController/IntakeControllerCtrl.java
@@ -0,0 +1,179 @@
+package com.dy.pipIrrProject.intakeController;
+
+import com.dy.common.aop.SsoAop;
+import com.dy.common.webUtil.BaseResponse;
+import com.dy.common.webUtil.BaseResponseUtils;
+import com.dy.common.webUtil.QueryResultVo;
+import com.dy.common.webUtil.ResultCodeMsg;
+import com.dy.pipIrrGlobal.pojoBa.BaClient;
+import com.dy.pipIrrGlobal.pojoPr.PrIntakeController;
+import com.dy.pipIrrProject.result.ProjectResultCode;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.media.Content;
+import io.swagger.v3.oas.annotations.media.Schema;
+import io.swagger.v3.oas.annotations.responses.ApiResponse;
+import io.swagger.v3.oas.annotations.responses.ApiResponses;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import jakarta.validation.Valid;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.http.MediaType;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.*;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2024-01-02 9:18
+ * @LastEditTime 2024-01-02 9:18
+ * @Description
+ */
+
+@Slf4j
+@Tag(name = "鍙栨按鍙�/鎺у埗鍣ㄥ叧鑱旂鐞�", description = "鍙栨按鍙�/鎺у埗鍣ㄥ叧鑱旀搷浣�")
+@RestController
+@RequestMapping(path="intake_controller")
+@RequiredArgsConstructor
+public class IntakeControllerCtrl {
+    private final IntakeControllerSv intakeControllerSv;
+
+    /**
+     * 娣诲姞鍙栨按鍙�/鎺у埗鍣ㄦ崋缁戣褰�
+     * 1. 鍒ゆ柇鍙栨按鍙f槸鍚﹀瓨鍦�
+     * 2. 鍒ゆ柇鎺у埗鍣ㄦ槸鍚﹀瓨鍦�
+     * 3. 鍒ゆ柇鍙栨按鍙c�佹帶鍒跺櫒缁戝畾鍏崇郴鏄惁宸插瓨鍦�
+     */
+    @Operation(summary = "娣诲姞缁戝畾璁板綍", description = "娣诲姞缁戝畾璁板綍")
+    @ApiResponses(value = {
+            @ApiResponse(
+                    responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE,
+                    description = "鎿嶄綔缁撴灉锛歵rue锛氭垚鍔燂紝false锛氬け璐ワ紙BaseResponse.content锛�",
+                    content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE,
+                            schema = @Schema(implementation = Boolean.class))}
+            )
+    })
+    @PostMapping(path = "bind", consumes = MediaType.APPLICATION_JSON_VALUE)
+    @Transactional(rollbackFor = Exception.class)
+    @SsoAop()
+    public BaseResponse<Boolean> bind(@RequestBody @Valid DtoIntakeController po, BindingResult bindingResult){
+        if(bindingResult != null && bindingResult.hasErrors()){
+            return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage());
+        }
+
+        Integer recordCount = Optional.ofNullable(intakeControllerSv.getBindRecordCount(po.getIntakeId(), po.getControllerId(), (byte)1)).orElse(0);
+        if(recordCount > 0) {
+            return BaseResponseUtils.buildFail(ProjectResultCode.INTAKE_HAS_BINDED_CONTROLLER.getMessage());
+        }
+
+        PrIntakeController prIntakeController = DtoToPojo.INSTANCT.po2vo(po);
+        Date operateTime = new Date();
+        prIntakeController.setOperatedt(operateTime);
+        prIntakeController.setOperatetype((byte)1);
+
+        Integer rec = Optional.ofNullable(intakeControllerSv.addRecord(prIntakeController)).orElse(0);
+        if(rec == 0) {
+            return BaseResponseUtils.buildFail(ProjectResultCode.BIND_FAIL.getMessage());
+        }
+        return BaseResponseUtils.buildSuccess(true) ;
+    }
+
+    /**
+     * 娣诲姞鍙栨按鍙�/鎺у埗鍣ㄨВ缁戣褰�
+     * 1. 鍒ゆ柇鍙栨按鍙f槸鍚﹀瓨鍦�
+     * 2. 鍒ゆ柇鎺у埗鍣ㄦ槸鍚﹀瓨鍦�
+     * 3. 鍒ゆ柇鍙栨按鍙c�佹帶鍒跺櫒瑙g粦鍏崇郴鏄惁宸插瓨鍦�
+     */
+    @Operation(summary = "娣诲姞瑙g粦璁板綍", description = "娣诲姞瑙g粦璁板綍")
+    @ApiResponses(value = {
+            @ApiResponse(
+                    responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE,
+                    description = "鎿嶄綔缁撴灉锛歵rue锛氭垚鍔燂紝false锛氬け璐ワ紙BaseResponse.content锛�",
+                    content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE,
+                            schema = @Schema(implementation = Boolean.class))}
+            )
+    })
+    @PostMapping(path = "unbind", consumes = MediaType.APPLICATION_JSON_VALUE)
+    @Transactional(rollbackFor = Exception.class)
+    @SsoAop()
+    public BaseResponse<Boolean> unbind(@RequestBody @Valid DtoIntakeController po, BindingResult bindingResult){
+        if(bindingResult != null && bindingResult.hasErrors()){
+            return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage());
+        }
+
+        Integer recordCount = Optional.ofNullable(intakeControllerSv.getBindRecordCount(po.getIntakeId(), po.getControllerId(), (byte)2)).orElse(0);
+        if(recordCount > 0) {
+            return BaseResponseUtils.buildFail(ProjectResultCode.INTAKE_CONTROLLER_HAS_UNBOUND.getMessage());
+        }
+
+        PrIntakeController prIntakeController = DtoToPojo.INSTANCT.po2vo(po);
+        Date operateTime = new Date();
+        prIntakeController.setOperatedt(operateTime);
+        prIntakeController.setOperatetype((byte)2);
+
+        Integer rec = Optional.ofNullable(intakeControllerSv.addRecord(prIntakeController)).orElse(0);
+        if(rec == 0) {
+            return BaseResponseUtils.buildFail(ProjectResultCode.BIND_FAIL.getMessage());
+        }
+        return BaseResponseUtils.buildSuccess(true) ;
+    }
+
+    /**
+     * 鏍规嵁鍙栨按鍙g紪鍙疯幏鍙栫粦瀹氳褰曞垪琛�
+     * @param intakeId 鍙栨按鍙g紪鍙�
+     * @return 鍙栨按鍙d笅鎺у埗鍣ㄧ殑缁戝畾銆佽В缁戣褰�
+     */
+    @Operation(summary = "鑾峰緱鍙栨按鍙d笅鎺у埗鍣ㄧ粦瀹氬強瑙g粦璁板綍", description = "杩斿洖鍙栨按鍙d笅鎺у埗鍣ㄧ粦瀹氬強瑙g粦鏁版嵁")
+    @ApiResponses(value = {
+            @ApiResponse(
+                    responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE,
+                    description = "杩斿洖鍏ㄩ儴缁戝畾鍙婅В缁戞暟鎹紙BaseResponse.content:QueryResultVo[{}]锛�",
+                    content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE,
+                            schema = @Schema(implementation = BaClient.class))}
+            )
+    })
+    @GetMapping(path = "intake_binds")
+    @SsoAop()
+    public BaseResponse<QueryResultVo<List<Map<String, Object>>>> getBindsByIntakeId(Long intakeId){
+        try {
+            List<Map<String, Object>> list = Optional.ofNullable(intakeControllerSv.getBindsByIntakeId(intakeId)).orElse(new ArrayList<>());
+            if(list.size() <= 0) {
+                return BaseResponseUtils.buildFail(ProjectResultCode.INTAKE_NO_RECORDS.getMessage());
+            }
+            return BaseResponseUtils.buildSuccess(list);
+        } catch (Exception e) {
+            log.error("鏌ヨ鍐滄埛寮傚父", e);
+            return BaseResponseUtils.buildException(e.getMessage()) ;
+        }
+    }
+
+    /**
+     * 鏍规嵁鎺у埗鍣ㄧ紪鍙疯幏鍙栫粦瀹氳褰曞垪琛�
+     * @param controllerId 鎺у埗鍣ㄧ紪鍙�
+     * @return 涓庤鎺у埗鍣ㄧ浉鍏崇殑缁戝畾銆佽В缁戣褰�
+     */
+    @Operation(summary = "鑾峰緱鎺у埗鍣ㄤ笌鍙栨按鍙g粦瀹氬強瑙g粦璁板綍", description = "杩斿洖鎺у埗鍣ㄤ笌鍙栨按鍙g粦瀹氬強瑙g粦鏁版嵁")
+    @ApiResponses(value = {
+            @ApiResponse(
+                    responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE,
+                    description = "杩斿洖鍏ㄩ儴缁戝畾鍙婅В缁戞暟鎹紙BaseResponse.content:QueryResultVo[{}]锛�",
+                    content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE,
+                            schema = @Schema(implementation = BaClient.class))}
+            )
+    })
+    @GetMapping(path = "controller_binds")
+    @SsoAop()
+    public BaseResponse<QueryResultVo<List<Map<String, Object>>>> getBindsByControllerId(Long controllerId){
+        try {
+            List<Map<String, Object>> list = Optional.ofNullable(intakeControllerSv.getBindsByControllerId(controllerId)).orElse(new ArrayList<>());
+            if(list.size() <= 0) {
+                return BaseResponseUtils.buildFail(ProjectResultCode.CONTROLLER_NO_RECORDS.getMessage());
+            }
+            return BaseResponseUtils.buildSuccess(list);
+        } catch (Exception e) {
+            log.error("鏌ヨ鍐滄埛寮傚父", e);
+            return BaseResponseUtils.buildException(e.getMessage()) ;
+        }
+    }
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intakeController/IntakeControllerSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intakeController/IntakeControllerSv.java
new file mode 100644
index 0000000..42a8910
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intakeController/IntakeControllerSv.java
@@ -0,0 +1,62 @@
+package com.dy.pipIrrProject.intakeController;
+
+import com.dy.pipIrrGlobal.daoPr.PrIntakeControllerMapper;
+import com.dy.pipIrrGlobal.pojoPr.PrIntakeController;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2024-01-02 9:19
+ * @LastEditTime 2024-01-02 9:19
+ * @Description
+ */
+
+@Slf4j
+@Service
+public class IntakeControllerSv {
+    @Autowired
+    private PrIntakeControllerMapper prIntakeControllerMapper;
+
+    /**
+     * 鏍规嵁鍙栨按鍙g紪鍙枫�佹帶鍒跺櫒缂栧彿銆佹搷浣滅被鍒幏鍙栬褰曟暟閲�
+     * 閲嶅缁戝畾銆侀噸澶嶈В缁戦兘鐢ㄨ鏂规硶鍒ゆ柇
+     * @param intakeId 鍙栨按鍙D
+     * @param controllerId 鎺у埗鍣↖D
+     * @param operateType 鎿嶄綔绫诲瀷 1-鎹嗙粦锛�2-瑙g粦
+     * @return 濡備綍鏉′欢璁板綍鏁�
+     */
+    Integer getBindRecordCount(Long intakeId, Long controllerId, Byte operateType) {
+        return prIntakeControllerMapper.getBindRecordCount(intakeId, controllerId, operateType);
+    }
+    /**
+     * 娣诲姞鍙栨按鍙c�佹帶鍒跺櫒鎹嗙粦璁板綍锛�1-鎹嗙粦锛�2-瑙g粦
+     * @param po 鍙栨按鍙�/鎺у埗鍣ㄥ疄浣撳璞�
+     * @return
+     */
+    Integer addRecord(PrIntakeController po) {
+        return prIntakeControllerMapper.insert(po);
+    }
+
+    /**
+     * 鏍规嵁鍙栨按鍙g紪鍙疯幏鍙栫粦瀹氳褰曞垪琛�
+     * @param intakeId 鍙栨按鍙g紪鍙�
+     * @return 鍙栨按鍙d笌鎺у埗鍣ㄧ粦瀹氬垪琛�
+     */
+    List<Map<String, Object>> getBindsByIntakeId(Long intakeId) {
+        return prIntakeControllerMapper.getBindsByIntakeId(intakeId);
+    }
+
+    /**
+     * 鏍规嵁鎺у埗鍣ㄧ紪鍙疯幏鍙栫粦瀹氳褰曞垪琛�
+     * @param controllerId 鎺у埗鍣ㄧ紪鍙�
+     * @return 鍙栨按鍙d笌鎺у埗鍣ㄧ粦瀹氬垪琛�
+     */
+    List<Map<String, Object>> getBindsByControllerId(Long controllerId) {
+        return prIntakeControllerMapper.getBindsByControllerId(controllerId);
+    }
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/result/ProjectResultCode.java b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/result/ProjectResultCode.java
index 30cfe28..0e05a4e 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/result/ProjectResultCode.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/result/ProjectResultCode.java
@@ -25,8 +25,17 @@
     /**
      * 鎺у埗鍣�
      */
-    CONTROLLER_FAIL(30001, "鎺у埗鍣ㄦ坊鍔犲け璐�");
+    CONTROLLER_FAIL(30001, "鎺у埗鍣ㄦ坊鍔犲け璐�"),
+    NO_RECORDS(30001, "娌℃湁绗﹀悎鏉′欢鐨勬帶鍒跺櫒鏁版嵁"),
 
+    /**
+     * 鍙栨按鍙c�佹帶鍒跺櫒鍏宠仈
+     */
+    INTAKE_HAS_BINDED_CONTROLLER(40001, "鍙栨按鍙d笌鎺у埗鍣ㄥ凡缁戝畾"),
+    BIND_FAIL(40002, "鍙栨按鍙d笌鎺у埗鍣ㄧ粦瀹氬け璐�"),
+    INTAKE_CONTROLLER_HAS_UNBOUND(40003, "鍙栨按鍙d笌鎺у埗鍣ㄥ凡瑙g粦"),
+    INTAKE_NO_RECORDS(40004, "璇ュ彇姘村彛鏃犵粦瀹氳褰�"),
+    CONTROLLER_NO_RECORDS(40005, "璇ユ帶鍒跺櫒鏃犵粦瀹氳褰�");
     private final Integer code;
     private final String message;
 }

--
Gitblit v1.8.0