Administrator
2024-01-04 334fdde13d367eda195be02db2e1bc83f9d12b47
2024-01-04 朱宝民 增加控制器相关接口
7个文件已修改
240 ■■■■ 已修改文件
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoPr/PrControllerMapper.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrControllerMapper.xml 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/controller/ControllerCtrl.java 105 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/controller/ControllerSv.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/controller/QueryVo.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/divide/DivideCtrl.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/result/ProjectResultCode.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
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);
}
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>
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 = "操作结果:true:成功,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");
    }
}
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 ;
    }
}
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 = "控制器ID")
    private Long id;
    @Schema(description = "控制器编号")
    private String controllerCode;
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);
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, "控制器删除失败"),
    /**
     * 取水口、控制器关联