From 334fdde13d367eda195be02db2e1bc83f9d12b47 Mon Sep 17 00:00:00 2001
From: Administrator <zhubaomin>
Date: 星期四, 04 一月 2024 14:20:44 +0800
Subject: [PATCH] 2024-01-04 朱宝民 增加控制器相关接口

---
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoPr/PrControllerMapper.java                   |   15 +++
 pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/controller/ControllerCtrl.java |  105 +++++++++++++++++++++++++-
 pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/divide/DivideCtrl.java         |    4 
 pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/controller/ControllerSv.java   |   31 +++++++
 pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/controller/QueryVo.java        |    3 
 pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/result/ProjectResultCode.java  |    4 
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrControllerMapper.xml                                  |   78 ++++++++++++-------
 7 files changed, 205 insertions(+), 35 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 c1ab03e..8ca15b4 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
@@ -4,6 +4,7 @@
 import com.dy.pipIrrGlobal.pojoPr.PrController;
 import com.dy.pipIrrGlobal.voPr.VoController;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 import java.util.Map;
@@ -42,4 +43,18 @@
      * @return
      */
     List<VoController> getControllers(Map<?, ?> params);
+
+    /**
+     * 鏍规嵁鎺у埗鍣ㄧ紪鍙疯幏鍙栨帶鍒跺櫒鍒楄〃
+     * @param controllerCode
+     * @return
+     */
+    List<Map<String, Object>> getControllersByCode(@Param("controllerCode") String controllerCode);
+
+    /**
+     * 鏍规嵁鎺у埗鍣ㄧ紪鍙烽�昏緫鍒犻櫎鎺у埗
+     * @param controllerId
+     * @return
+     */
+    Integer deleteControllerById(@Param("controllerId") Long controllerId);
 }
\ No newline at end of file
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 df83fbb..a746da5 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrControllerMapper.xml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrControllerMapper.xml
@@ -160,6 +160,11 @@
         , (SELECT @i:=0) AS itable
     <where>
       AND ic.operateType = 1
+
+      <if test = "id != null and id > 0">
+        AND con.id = ${id}
+      </if>
+
       <if test = "controllerCode != null and controllerCode !=''">
         AND con.code like CONCAT('%',#{controllerCode},'%')
       </if>
@@ -178,36 +183,53 @@
   <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>
+        t.* FROM(
+          SELECT
+            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
+          <where>
+            AND ic.operateType = 1
 
-      <if test = "onlineState != null and onlineState > 0">
-        AND con.onlineState = ${onlineState}
-      </if>
+            <if test = "id != null and id > 0">
+              AND con.id = ${id}
+            </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>
+            <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>
+        ) t
+    , (SELECT @i:=0) AS itable
   </select>
+
+  <!--鏍规嵁鎺у埗鍣ㄧ紪鍙疯幏鍙栨帶鍒跺櫒鍒楄〃-->
+  <select id="getControllersByCode" resultType="java.util.Map">
+    SELECT id, code FROM pr_controller WHERE code LIKE CONCAT('%',#{controllerCode},'%')
+  </select>
+
+  <!--鏍规嵁鎺у埗鍣ㄧ紪鍙烽�昏緫鍒犻櫎鎺у埗-->
+  <update id="deleteControllerById">
+    UPDATE pr_controller SET deleted = 1 WHERE id = ${controllerId}
+  </update>
 </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 d395513..4f15979 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
@@ -1,10 +1,13 @@
 package com.dy.pipIrrProject.controller;
 
+import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.support.ExcelTypeEnum;
 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.PrController;
 import com.dy.pipIrrGlobal.voPr.VoController;
 import com.dy.pipIrrGlobal.voSe.VoActiveCard;
@@ -15,18 +18,20 @@
 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.servlet.http.HttpServletResponse;
 import jakarta.validation.Valid;
 import lombok.RequiredArgsConstructor;
+import lombok.SneakyThrows;
 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.Date;
-import java.util.List;
-import java.util.Objects;
-import java.util.Optional;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.net.URLEncoder;
+import java.util.*;
 
 /**
  * @author ZhuBaoMin
@@ -43,6 +48,11 @@
 public class ControllerCtrl {
     private final ControllerSv controllerSv;
 
+    /**
+     * 鏍规嵁鎸囧畾鏉′欢鑾峰彇鎺у埗鍣ㄥ垪琛�
+     * @param vo 鏌ヨ鏉′欢
+     * @return 绗﹀悎鏉′欢鐨勬帶鍒跺櫒鍒楄〃
+     */
     @Operation(summary = "鑾峰緱涓�椤垫帶鍒跺櫒璁板綍", description = "杩斿洖涓�椤垫帶鍒跺櫒鏁版嵁")
     @ApiResponses(value = {
             @ApiResponse(
@@ -65,6 +75,35 @@
             //return BaseResponseUtils.buildSuccess(res);
         } catch (Exception e) {
             log.error("鑾峰彇寮�鍗¤褰曞紓甯�", e);
+            return BaseResponseUtils.buildException(e.getMessage()) ;
+        }
+    }
+
+    /**
+     * 鏍规嵁鎺у埗鍣ㄧ紪鍙疯幏鍙栨帶鍒跺櫒鍒楄〃
+     * @param controllerCode 鎺у埗鍣ㄧ紪鍙�
+     * @return 绗﹀悎鏉′欢鐨勬帶鍒跺櫒鍒楄〃
+     */
+    @Operation(summary = "鑾峰緱鎺у埗鍣ㄨ褰�", description = "杩斿洖鍙栨帶鍒跺櫒鏁版嵁")
+    @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_list")
+    @SsoAop()
+    public BaseResponse<List<Map<String, Object>>> getControllersByCode(String controllerCode){
+        try {
+            List<Map<String, Object>> list = Optional.ofNullable(controllerSv.getControllersByCode(controllerCode)).orElse(new ArrayList<>());
+            if(list.size() <= 0) {
+                return BaseResponseUtils.buildFail(ProjectResultCode.NO_RECORDS.getMessage());
+            }
+            return BaseResponseUtils.buildSuccess(list);
+        } catch (Exception e) {
+            log.error("鏌ヨ鎺у埗鍣ㄥ紓甯�", e);
             return BaseResponseUtils.buildException(e.getMessage()) ;
         }
     }
@@ -104,4 +143,62 @@
         }
         return BaseResponseUtils.buildSuccess(true) ;
     }
+
+    /**
+     * 鏍规嵁鎺у埗鍣ㄧ紪鍙峰垹闄ゆ帶鍒跺櫒
+     * @param map
+     * @return
+     */
+    @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 = "delete")
+    @SsoAop()
+    public BaseResponse<Boolean> delete(@RequestBody Map map){
+        if(map == null || map.size() <=0) {
+            return BaseResponseUtils.buildFail(ProjectResultCode.PLEASE_INPUT_CONTROLLER_ID.getMessage());
+        }
+
+        Long controllerId = Long.parseLong(map.get("controllerId").toString());
+        Integer recordCount = Optional.ofNullable(controllerSv.deleteControllerById(controllerId)).orElse(0);
+        if(recordCount == 0) {
+            return BaseResponseUtils.buildFail(ProjectResultCode.DELETE_CONTROLLER_FAIL.getMessage());
+        }
+        return BaseResponseUtils.buildSuccess(true) ;
+    }
+
+    /**
+     * 瀵煎嚭鎺у埗鍣ㄥ垪琛�
+     * @param response
+     * @param vo
+     */
+    @SneakyThrows(IOException.class)
+    @RequestMapping(value = "/export", method = RequestMethod.GET)
+    public void export(HttpServletResponse response, QueryVo vo) {
+        setExcelRespProp(response, "鎺у埗鍣ㄥ垪琛�");
+        //List<VoDivide> memberList = LocalJsonUtil.getListFromJson("json/members.json", VoDivide.class);
+        List<VoController> memberList = controllerSv.export(vo);
+
+        EasyExcel.write(response.getOutputStream())
+                .head(VoController.class)
+                .excelType(ExcelTypeEnum.XLSX)
+                .sheet("鎺у埗鍣ㄥ垪琛�")
+                .doWrite(memberList);
+    }
+
+    /**
+     * 璁剧疆excel涓嬭浇鍝嶅簲澶村睘鎬�
+     */
+    private void setExcelRespProp(HttpServletResponse response, String rawFileName) throws UnsupportedEncodingException {
+        response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
+        response.setCharacterEncoding("utf-8");
+        String fileName = URLEncoder.encode(rawFileName, "UTF-8").replaceAll("\\+", "%20");
+        response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx");
+    }
 }
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 83c0f26..b479db8 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
@@ -9,6 +9,7 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 
@@ -62,4 +63,34 @@
     public Integer addController(PrController po) {
         return prControllerMapper.insert(po);
     }
+
+    /**
+     * 鏍规嵁鎺у埗鍣ㄧ紪鍙疯幏鍙栨帶鍒跺櫒鍒楄〃
+     * @param controllerCode
+     * @return
+     */
+    public List<Map<String, Object>> getControllersByCode(String controllerCode) {
+        return prControllerMapper.getControllersByCode(controllerCode);
+    }
+
+    /**
+     * 鏍规嵁鎺у埗鍣ㄧ紪鍙烽�昏緫鍒犻櫎鎺у埗
+     * @param controllerId
+     * @return
+     */
+    public Integer deleteControllerById(Long controllerId) {
+        return prControllerMapper.deleteControllerById(controllerId);
+    }
+
+    /**
+     * 鏍规嵁鎸囧畾鏉′欢瀵煎嚭鎺у埗鍣ㄥ垪琛�
+     * @param queryVo
+     * @return
+     */
+    public List<VoController> export(QueryVo queryVo) {
+        Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(queryVo);
+        List<VoController> rsVo = new ArrayList<>();
+        rsVo = prControllerMapper.getControllers(params);
+        return rsVo ;
+    }
 }
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 23b3f73..da037f3 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
@@ -20,6 +20,9 @@
 @Schema(name = "鎺у埗鍣ㄦ煡璇㈡潯浠�")
 public class QueryVo extends QueryConditionVo {
 
+    @Schema(description = "鎺у埗鍣↖D")
+    private Long id;
+
     @Schema(description = "鎺у埗鍣ㄧ紪鍙�")
     private String controllerCode;
 
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/divide/DivideCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/divide/DivideCtrl.java
index 9f07908..64e007f 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/divide/DivideCtrl.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/divide/DivideCtrl.java
@@ -235,8 +235,8 @@
      * @param vo
      */
     @SneakyThrows(IOException.class)
-    @RequestMapping(value = "/exportDivides", method = RequestMethod.GET)
-    public void exportDivides(HttpServletResponse response, QueryVo vo) {
+    @RequestMapping(value = "/export", method = RequestMethod.GET)
+    public void export(HttpServletResponse response, QueryVo vo) {
         setExcelRespProp(response, "鍒嗘按鎴垮垪琛�");
         //List<VoDivide> memberList = LocalJsonUtil.getListFromJson("json/members.json", VoDivide.class);
         List<VoDivide> memberList = divideSv.exportDivides(vo);
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 0e05a4e..bc9ec28 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
@@ -26,7 +26,9 @@
      * 鎺у埗鍣�
      */
     CONTROLLER_FAIL(30001, "鎺у埗鍣ㄦ坊鍔犲け璐�"),
-    NO_RECORDS(30001, "娌℃湁绗﹀悎鏉′欢鐨勬帶鍒跺櫒鏁版嵁"),
+    NO_RECORDS(30002, "娌℃湁绗﹀悎鏉′欢鐨勬帶鍒跺櫒鏁版嵁"),
+    PLEASE_INPUT_CONTROLLER_ID(30003, "璇疯緭鍏ユ帶鍒跺櫒缂栧彿"),
+    DELETE_CONTROLLER_FAIL(30004, "鎺у埗鍣ㄥ垹闄ゅけ璐�"),
 
     /**
      * 鍙栨按鍙c�佹帶鍒跺櫒鍏宠仈

--
Gitblit v1.8.0