Просмотр исходного кода

电表管理模块:设备列表、添加编辑设备、删除设备,设备日志

zhj 9 месяцев назад
Родитель
Сommit
d0f3575290

+ 128 - 0
src/main/java/com/welampiot/controller/ElectricityMeterController.java

@@ -0,0 +1,128 @@
+package com.welampiot.controller;
+
+import com.welampiot.common.BaseResult;
+import com.welampiot.common.InterfaceResultEnum;
+import com.welampiot.dto.ElectricityMeterDTO;
+import com.welampiot.dto.ElectricityMeterLogDTO;
+import com.welampiot.service.ElectricityMeterLogService;
+import com.welampiot.service.ElectricityMeterService;
+import com.welampiot.utils.ToolUtils;
+import com.welampiot.vo.BaseVO;
+import com.welampiot.vo.ElectricityMeterLogVO;
+import com.welampiot.vo.ElectricityMeterVO;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.CrossOrigin;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+@RestController
+@CrossOrigin
+@RequestMapping("/electricityMeter")
+public class ElectricityMeterController extends BaseController {
+
+    @Autowired
+    private ElectricityMeterService electricityMeterService;
+    @Autowired
+    private ToolUtils toolUtils;
+    @Autowired
+    private ElectricityMeterLogService electricityMeterLogService;
+
+    /**
+     * 设备列表
+     */
+    @RequestMapping("/getList")
+    private BaseResult<?> getList(BaseVO baseVO) {
+        Integer version = baseVO.getVersion();
+        baseVO.setPageAndCount(baseVO.getPage(), baseVO.getCount());
+        List<Integer> sectionList = getSectionList(baseVO.getUsername());
+        baseVO.setSectionList(sectionList);
+        List<ElectricityMeterDTO> list = electricityMeterService.getElectricityMeterListByBaseVO(baseVO);
+        Integer total = electricityMeterService.getEleMeterTotalByBaseVO(baseVO);
+        ElectricityMeterVO electricityMeterVO = new ElectricityMeterVO();
+        electricityMeterVO.setTotal(total);
+        electricityMeterVO.setList(list);
+        return toolUtils.response(InterfaceResultEnum.OPERATION_SUCCESS, version, electricityMeterVO);
+    }
+
+    /**
+     * 删除设备
+     */
+    @RequestMapping("/del")
+    private BaseResult<?> del(BaseVO baseVO) {
+        Integer version = baseVO.getVersion();
+        if (baseVO.getId() == null || baseVO.getId() == 0)
+            return toolUtils.response(InterfaceResultEnum.LACK_PARAM_ERROR, version);
+        electricityMeterService.delEleMeterDataById(baseVO.getId());
+        return toolUtils.response(InterfaceResultEnum.OPERATION_SUCCESS, version);
+    }
+
+    /**
+     * 日志列表
+     */
+    @RequestMapping("/logList")
+    private BaseResult<?> logList(BaseVO baseVO) {
+        Integer version = baseVO.getVersion();
+        if (baseVO.getId() == null || baseVO.getId() == 0)
+            return toolUtils.response(InterfaceResultEnum.LACK_PARAM_ERROR, version);
+        baseVO.setPageAndCount(baseVO.getPage(), baseVO.getCount());
+
+        if (baseVO.getDownload() != null && baseVO.getDownload() == 1) {
+            baseVO.setPage(null);
+            baseVO.setCount(null);
+        }
+
+        List<ElectricityMeterLogDTO> logList = electricityMeterLogService.getEleMeterLogByBaseVO(baseVO);
+        ElectricityMeterLogVO electricityMeterLogVO = new ElectricityMeterLogVO();
+        if (baseVO.getDownload() != null && baseVO.getDownload() == 1) {
+            String path = ElectricityMeterLogDTO.outEleMeterLog(logList, version);
+            electricityMeterLogVO.setPath(path);
+            return toolUtils.response(InterfaceResultEnum.OPERATION_SUCCESS,version,electricityMeterLogVO);
+        }
+
+        Integer total = electricityMeterLogService.getEleMeterLogTotalById(baseVO.getId());
+        electricityMeterLogVO.setTotal(total);
+        electricityMeterLogVO.setList(logList);
+        return toolUtils.response(InterfaceResultEnum.OPERATION_SUCCESS, version, electricityMeterLogVO);
+    }
+
+    /**
+     * 添加编辑设备
+     */
+    @RequestMapping("/save")
+    private BaseResult<?> save(ElectricityMeterVO electricityMeterVO) {
+        Integer version = electricityMeterVO.getVersion();
+
+        if (electricityMeterVO.getName() == null || electricityMeterVO.getName().isEmpty())
+            return toolUtils.response(InterfaceResultEnum.LACK_DEV_NAME_ERROR, version);
+        if (electricityMeterVO.getAddress() == null || electricityMeterVO.getAddress().isEmpty())
+            return toolUtils.response(InterfaceResultEnum.LACK_ADDRESS_ERROR, version);
+        if (electricityMeterVO.getAreaId() == null || electricityMeterVO.getAreaId() == 0)
+            return toolUtils.response(InterfaceResultEnum.LACK_AREA_ERROR, version);
+        if (electricityMeterVO.getSectionId() == null || electricityMeterVO.getSectionId() == 0)
+            return toolUtils.response(InterfaceResultEnum.LACK_SECTION_ERROR, version);
+        if (electricityMeterVO.getType() == null)
+            return toolUtils.response(InterfaceResultEnum.LACK_DEV_TYPE_ERROR, version);
+
+        ElectricityMeterDTO meterDTO = new ElectricityMeterDTO();
+        meterDTO.setAddress(electricityMeterVO.getAddress());
+        if (electricityMeterVO.getId() == null || electricityMeterVO.getId() == 0) {
+            if (electricityMeterService.checkEleMeterData(meterDTO) > 0)
+                return toolUtils.response(InterfaceResultEnum.DEV_ADDRESS_UNIQUE_ERROR, version);
+
+            BeanUtils.copyProperties(electricityMeterVO, meterDTO);
+            electricityMeterService.addEleMeterData(meterDTO);
+        } else {
+            meterDTO.setId(electricityMeterVO.getId());
+            if (electricityMeterService.checkEleMeterData(meterDTO) > 0)
+                return toolUtils.response(InterfaceResultEnum.DEV_ADDRESS_UNIQUE_ERROR, version);
+
+            BeanUtils.copyProperties(electricityMeterVO, meterDTO);
+            electricityMeterService.updateEleMeterData(meterDTO);
+        }
+
+        return toolUtils.response(InterfaceResultEnum.OPERATION_SUCCESS, version);
+    }
+}

+ 16 - 0
src/main/java/com/welampiot/dao/ElectricityMeterDao.java

@@ -0,0 +1,16 @@
+package com.welampiot.dao;
+
+import com.welampiot.dto.ElectricityMeterDTO;
+import com.welampiot.vo.BaseVO;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+public interface ElectricityMeterDao {
+    List<ElectricityMeterDTO> getElectricityMeterListByBaseVO(BaseVO baseVO);
+    Integer getEleMeterTotalByBaseVO(BaseVO baseVO);
+    void delEleMeterDataById(@Param("id") Integer id);
+    void addEleMeterData(ElectricityMeterDTO meterDTO);
+    void updateEleMeterData(ElectricityMeterDTO meterDTO);
+    Integer checkEleMeterData(ElectricityMeterDTO meterDTO);
+}

+ 13 - 0
src/main/java/com/welampiot/dao/ElectricityMeterLogDao.java

@@ -0,0 +1,13 @@
+package com.welampiot.dao;
+
+import com.welampiot.dto.ElectricityMeterLogDTO;
+import com.welampiot.vo.BaseVO;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+public interface ElectricityMeterLogDao {
+    void delEleMeterLogByMeterId(@Param("meterId") Integer meterId);
+    List<ElectricityMeterLogDTO> getEleMeterLogByBaseVO(BaseVO baseVO);
+    Integer getEleMeterLogTotalById(@Param("id") Integer id);
+}

+ 24 - 0
src/main/java/com/welampiot/dto/ElectricityMeterDTO.java

@@ -0,0 +1,24 @@
+package com.welampiot.dto;
+
+import lombok.Data;
+
+@Data
+public class ElectricityMeterDTO {
+    private Integer id;
+    private Integer areaId;
+    private Integer sectionId;
+    private String name;
+    private String address;
+    private Double voltage;
+    private Double current;
+    private Double power;
+    private Double consumption;
+    private String logTime;
+    /** 云盒型号(0 G100, 1 G200, 2 G300) */
+    private Integer type;
+    /** 串口(0 3号串口,1 2号串口,2 1号串口) */
+    private Integer serialPort;
+    private Integer online;
+    private String area;
+    private String section;
+}

+ 48 - 0
src/main/java/com/welampiot/dto/ElectricityMeterLogDTO.java

@@ -0,0 +1,48 @@
+package com.welampiot.dto;
+
+import com.welampiot.utils.ExcelUtil;
+import lombok.Data;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+@Data
+public class ElectricityMeterLogDTO {
+    private Integer id;
+    private Integer meterId;
+    private String logTime;
+    private Double voltage;
+    private Double current;
+    private Double power;
+    private Double consumption;
+
+    public static String outEleMeterLog(List<ElectricityMeterLogDTO> logList, Integer version) {
+        List<String> titleList;
+        if (version != null && version == 1) { // 英文
+            titleList = Arrays.asList("Update Time", "Voltage", "Current", "Power", "Consumption");
+        } else if (version != null && version == 2) { // 俄语
+            titleList = Arrays.asList("Время обновления", "Напряжение", "Ток", "Мощность", "Потребление");
+        } else {
+            titleList = Arrays.asList("更新时间", "电压", "电流", "功率", "用电量");
+        }
+
+        List<List<String>> contentList = new ArrayList<>();
+        for (ElectricityMeterLogDTO logDTO : logList) {
+            List<String> newString = getStrings(logDTO);
+            contentList.add(newString);
+        }
+
+        return ExcelUtil.outExcel(titleList, contentList);
+    }
+
+    private static List<String> getStrings(ElectricityMeterLogDTO logDTO) {
+        List<String> newString = new ArrayList<>();
+        newString.add(logDTO.getLogTime());
+        newString.add(logDTO.getVoltage().toString());
+        newString.add(logDTO.getCurrent().toString());
+        newString.add(logDTO.getPower().toString());
+        newString.add(logDTO.getConsumption().toString());
+        return newString;
+    }
+}

+ 12 - 0
src/main/java/com/welampiot/service/ElectricityMeterLogService.java

@@ -0,0 +1,12 @@
+package com.welampiot.service;
+
+import com.welampiot.dto.ElectricityMeterLogDTO;
+import com.welampiot.vo.BaseVO;
+
+import java.util.List;
+
+public interface ElectricityMeterLogService {
+    void delEleMeterLogByMeterId(Integer meterId);
+    List<ElectricityMeterLogDTO> getEleMeterLogByBaseVO(BaseVO baseVO);
+    Integer getEleMeterLogTotalById(Integer id);
+}

+ 15 - 0
src/main/java/com/welampiot/service/ElectricityMeterService.java

@@ -0,0 +1,15 @@
+package com.welampiot.service;
+
+import com.welampiot.dto.ElectricityMeterDTO;
+import com.welampiot.vo.BaseVO;
+
+import java.util.List;
+
+public interface ElectricityMeterService {
+    List<ElectricityMeterDTO> getElectricityMeterListByBaseVO(BaseVO baseVO);
+    Integer getEleMeterTotalByBaseVO(BaseVO baseVO);
+    void delEleMeterDataById(Integer id);
+    void addEleMeterData(ElectricityMeterDTO meterDTO);
+    void updateEleMeterData(ElectricityMeterDTO meterDTO);
+    Integer checkEleMeterData(ElectricityMeterDTO meterDTO);
+}

+ 32 - 0
src/main/java/com/welampiot/service/impl/ElectricityMeterLogServiceImpl.java

@@ -0,0 +1,32 @@
+package com.welampiot.service.impl;
+
+import com.welampiot.dao.ElectricityMeterLogDao;
+import com.welampiot.dto.ElectricityMeterLogDTO;
+import com.welampiot.service.ElectricityMeterLogService;
+import com.welampiot.vo.BaseVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+public class ElectricityMeterLogServiceImpl implements ElectricityMeterLogService {
+
+    @Autowired
+    private ElectricityMeterLogDao electricityMeterLogDao;
+
+    @Override
+    public void delEleMeterLogByMeterId(Integer meterId) {
+        electricityMeterLogDao.delEleMeterLogByMeterId(meterId);
+    }
+
+    @Override
+    public List<ElectricityMeterLogDTO> getEleMeterLogByBaseVO(BaseVO baseVO) {
+        return electricityMeterLogDao.getEleMeterLogByBaseVO(baseVO);
+    }
+
+    @Override
+    public Integer getEleMeterLogTotalById(Integer id) {
+        return electricityMeterLogDao.getEleMeterLogTotalById(id);
+    }
+}

+ 51 - 0
src/main/java/com/welampiot/service/impl/ElectricityMeterServiceImpl.java

@@ -0,0 +1,51 @@
+package com.welampiot.service.impl;
+
+import com.welampiot.dao.ElectricityMeterDao;
+import com.welampiot.dto.ElectricityMeterDTO;
+import com.welampiot.service.ElectricityMeterLogService;
+import com.welampiot.service.ElectricityMeterService;
+import com.welampiot.vo.BaseVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+public class ElectricityMeterServiceImpl implements ElectricityMeterService {
+
+    @Autowired
+    private ElectricityMeterDao electricityMeterDao;
+    @Autowired
+    private ElectricityMeterLogService electricityMeterLogService;
+
+    @Override
+    public List<ElectricityMeterDTO> getElectricityMeterListByBaseVO(BaseVO baseVO) {
+        return electricityMeterDao.getElectricityMeterListByBaseVO(baseVO);
+    }
+
+    @Override
+    public Integer getEleMeterTotalByBaseVO(BaseVO baseVO) {
+        return electricityMeterDao.getEleMeterTotalByBaseVO(baseVO);
+    }
+
+    @Override
+    public void delEleMeterDataById(Integer id) {
+        electricityMeterLogService.delEleMeterLogByMeterId(id);
+        electricityMeterDao.delEleMeterDataById(id);
+    }
+
+    @Override
+    public void addEleMeterData(ElectricityMeterDTO meterDTO) {
+        electricityMeterDao.addEleMeterData(meterDTO);
+    }
+
+    @Override
+    public void updateEleMeterData(ElectricityMeterDTO meterDTO) {
+        electricityMeterDao.updateEleMeterData(meterDTO);
+    }
+
+    @Override
+    public Integer checkEleMeterData(ElectricityMeterDTO meterDTO) {
+        return electricityMeterDao.checkEleMeterData(meterDTO);
+    }
+}

+ 1 - 0
src/main/java/com/welampiot/vo/BaseVO.java

@@ -19,6 +19,7 @@ public class BaseVO {
     private Integer download = 0;
     private List<Integer> sectionList;
     private String path;
+    private Integer id;
 
     public void setPageAndCount(Integer page, Integer count) {
         if (count == null || count == 0) {

+ 14 - 0
src/main/java/com/welampiot/vo/ElectricityMeterLogVO.java

@@ -0,0 +1,14 @@
+package com.welampiot.vo;
+
+import com.welampiot.dto.ElectricityMeterLogDTO;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.List;
+
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class ElectricityMeterLogVO extends BaseVO {
+    private Integer total;
+    private List<ElectricityMeterLogDTO> list;
+}

+ 23 - 0
src/main/java/com/welampiot/vo/ElectricityMeterVO.java

@@ -0,0 +1,23 @@
+package com.welampiot.vo;
+
+import com.welampiot.dto.ElectricityMeterDTO;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.List;
+
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class ElectricityMeterVO extends BaseVO {
+    private Integer id;
+    private Integer areaId;
+    private Integer sectionId;
+    private String name;
+    private String address;
+    /** 云盒型号(0 G100, 1 G200, 2 G300) */
+    private Integer type;
+    /** 串口(0 3号串口,1 2号串口,2 1号串口) */
+    private Integer serialPort;
+    private Integer total;
+    private List<ElectricityMeterDTO> list;
+}

+ 28 - 0
src/main/resources/mapper/ElectricityMeterLogMapper.xml

@@ -0,0 +1,28 @@
+<?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.welampiot.dao.ElectricityMeterLogDao">
+
+    <delete id="delEleMeterLogByMeterId">
+        delete
+        from electricity_meter_log
+        where meter_id = #{meterId};
+    </delete>
+
+    <select id="getEleMeterLogByBaseVO" resultType="ElectricityMeterLogDTO">
+        select e.id,e.meter_id as meterId,e.log_time as logTime,
+               e.voltage,e.current,e.power,e.consumption
+        from electricity_meter_log e
+        where e.meter_id = #{id}
+        order by e.log_time desc
+        <if test="page != null and count != null">
+            limit #{page},#{count}
+        </if>
+    </select>
+
+    <select id="getEleMeterLogTotalById" resultType="Integer">
+        select count(*)
+        from electricity_meter_log e
+        where e.meter_id = #{id}
+    </select>
+
+</mapper>

+ 114 - 0
src/main/resources/mapper/ElectricityMeterMapper.xml

@@ -0,0 +1,114 @@
+<?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.welampiot.dao.ElectricityMeterDao">
+
+    <select id="getElectricityMeterListByBaseVO" resultType="ElectricityMeterDTO">
+        select e.id,e.name,e.area_id AS areaId,e.address,e.online,s.name as section,
+               e.voltage,e.current,e.power,e.consumption,e.log_time AS logTime
+        <choose>
+            <when test="version == 2">
+                ,gl.ru_name as area
+            </when>
+            <when test="version == 1">
+                ,gl.english_name as area
+            </when>
+            <otherwise>
+                ,gl.chinese_name as area
+            </otherwise>
+        </choose>
+        from electricity_meter e
+        left join section s on e.section_id = s.id
+        left join global_location gl on gl.id = e.area_id
+        where 1=1
+        <if test="areaId != null and areaId != 0">
+            and e.area_id = #{areaId}
+        </if>
+        <if test="sectionId != null and sectionId != 0">
+            and e.section_id = #{sectionId}
+        </if>
+        <if test="sectionList != null and !sectionList.isEmpty()">
+            and e.section_id in
+            <foreach collection="sectionList" item="item" open="(" separator="," close=")">
+                #{item}
+            </foreach>
+        </if>
+        <if test="keyword != null and keyword != ''">
+            and (e.name like '%${keyword}%' or e.address like '%${keyword}%')
+        </if>
+        <if test="page != null and count != null">
+            limit #{page},#{count}
+        </if>
+    </select>
+
+    <select id="getEleMeterTotalByBaseVO" resultType="Integer">
+        select count(*)
+        from electricity_meter e
+        where 1=1
+        <if test="areaId != null and areaId != 0">
+            and e.area_id = #{areaId}
+        </if>
+        <if test="sectionId != null and sectionId != 0">
+            and e.section_id = #{sectionId}
+        </if>
+        <if test="sectionList != null and !sectionList.isEmpty()">
+            and e.section_id in
+            <foreach collection="sectionList" item="item" open="(" separator="," close=")">
+                #{item}
+            </foreach>
+        </if>
+        <if test="keyword != null and keyword != ''">
+            and (e.name like '%${keyword}%' or e.address like '%${keyword}%')
+        </if>
+    </select>
+
+    <delete id="delEleMeterDataById">
+        delete
+        from electricity_meter
+        where id = #{id};
+    </delete>
+
+    <insert id="addEleMeterData" keyProperty="id" useGeneratedKeys="true" parameterType="ElectricityMeterDTO">
+        insert into
+            electricity_meter(name,area_id,address,type,section_id
+            <if test="serialPort != null">
+                ,serial_port
+            </if>)
+        values(#{name},
+               #{areaId},
+               #{address},
+               #{type},
+               #{sectionId}
+               <if test="serialPort != null">
+                   ,#{serialPort}
+               </if>
+               )
+    </insert>
+
+    <update id="updateEleMeterData" parameterType="ElectricityMeterDTO">
+        update electricity_meter
+        set
+            name = #{name},
+            area_id = #{areaId},
+            section_id = #{sectionId},
+            address = #{address},
+            type = #{type}
+            <if test="serialPort != null">
+                ,serial_port = #{serialPort}
+            </if>
+        where
+            id = #{id}
+    </update>
+
+    <select id="checkEleMeterData" resultType="Integer">
+        select count(*)
+        from electricity_meter e
+        where 1=1
+        <if test="address != null and address != ''">
+            and e.address = #{address}
+        </if>
+        <if test="id != null and id != 0">
+            and e.id != #{id}
+        </if>
+    </select>
+
+</mapper>