瀏覽代碼

电缆设备组数据统计

zhj 2 年之前
父節點
當前提交
caae61d21c

+ 210 - 0
src/main/java/com/welampiot/controller/CableController.java

@@ -6,6 +6,7 @@ import com.welampiot.dto.CableDTO;
 import com.welampiot.dto.CableInfoLogDTO;
 import com.welampiot.service.CableInfoLogService;
 import com.welampiot.service.CableService;
+import com.welampiot.utils.ExcelUtil;
 import com.welampiot.utils.ToolUtils;
 import com.welampiot.vo.CableInfoLogVO;
 import com.welampiot.vo.CableVO;
@@ -78,6 +79,215 @@ public class CableController {
         return BaseResult.success(vo);
     }
 
+    /**
+     * 电缆设备组数据统计
+     * @param request 日期类型,数据类型
+     * @return 电缆设备组数据统计
+     */
+    @RequestMapping(value = "/cableGroupInfo", method = RequestMethod.POST)
+    public BaseResult<?> cableGroupInfo(HttpServletRequest request) throws ParseException {
+        Integer version = (Integer) toolUtils.getRequestContent(request,"version",1);
+        Integer deviceId = (Integer) toolUtils.getRequestContent(request,"deviceId",1);
+        if (deviceId == 0) return toolUtils.response(InterfaceResultEnum.LACK_PARAM_ERROR,version);
+        Integer dateType = (Integer) toolUtils.getRequestContent(request,"dateType",1);
+        Integer group = (Integer) toolUtils.getRequestContent(request,"group",1);
+        Integer download = (Integer) toolUtils.getRequestContent(request,"download",1);
+        Integer timezone = cableInfoLogService.getTimezoneById(deviceId);
+        if (timezone == null) return toolUtils.response(InterfaceResultEnum.PARAM_FAIL,version);
+        long l = System.currentTimeMillis() - timezone * 3600 * 1000;
+        long startTime = 0L;
+        long endTime = 0L;
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        if (dateType == 0) { // 1 天
+            startTime = l - 24 * 3600 * 1000;
+            endTime = l;
+        }else if (dateType == 1) { // 3 天
+            startTime = l - 24 * 3600 * 1000 * 3;
+            endTime = l;
+        }else if (dateType == 2) { // 7 天
+            startTime = l - 24 * 3600 * 1000 * 7;
+            endTime = l;
+        }else if (dateType == 3) { // 14 天
+            startTime = l - 24 * 3600 * 1000 * 14;
+            endTime = l;
+        }else if (dateType == 4) { // 日期选择 最多30天
+            String date = (String) toolUtils.getRequestContent(request,"date",2);
+            if (date.length() == 0) return toolUtils.response(InterfaceResultEnum.LACK_DATE_ERROR,version);
+            List<String> split = Arrays.asList(date.split("/"));
+            startTime = simpleDateFormat.parse(split.get(0) + " 00:00:00").getTime();
+            endTime = simpleDateFormat.parse(split.get(1) + " 23:59:59").getTime();
+            if (endTime < startTime) toolUtils.response(InterfaceResultEnum.LACK_DATE_FORMAT_ERROR,version);
+            if (endTime - startTime > 29L * 24 * 3600 * 1000) toolUtils.response(InterfaceResultEnum.LACK_DATE_RANGE_ERROR,version);
+            startTime -= timezone * 3600 * 1000;
+            endTime -= timezone * 3600 * 1000;
+        }
+
+        String startDate = simpleDateFormat.format(new Date(startTime));
+        String endDate = simpleDateFormat.format(new Date(endTime));
+        CableInfoLogDTO dto = new CableInfoLogDTO();
+        dto.setCableId(deviceId);
+        dto.setStartDate(startDate);
+        dto.setEndDate(endDate);
+        dto.setDataType(group);
+        List<CableInfoLogDTO> cableLogList = cableInfoLogService.getCableLogListByDTO(dto);
+        if (download == 1) { // 导出数据
+            String title,path;
+            if (group == 0) {
+                List<List<String>> contentList = new ArrayList<>();
+                if (version == 0) {
+                    title = "序号,1#井盖位移_X轴角度,1#井盖位移_Y轴角度,1#井盖位移_Z轴角度,1#井盖位移_电池电压,1#井盖位移_告警状态," +
+                            "2#井盖位移_X轴角度,2#井盖位移_Y轴角度,2#井盖位移_Z轴角度,2#井盖位移_电池电压,2#井盖位移_告警状态," +
+                            "3#井盖位移_X轴角度,3#井盖位移_Y轴角度,3#井盖位移_Z轴角度,3#井盖位移_电池电压,3#井盖位移_告警状态," +
+                            "4#井盖位移_X轴角度,4#井盖位移_Y轴角度,4#井盖位移_Z轴角度,4#井盖位移_电池电压,4#井盖位移_告警状态," +
+                            "5#井盖位移_X轴角度,5#井盖位移_Y轴角度,5#井盖位移_Z轴角度,5#井盖位移_电池电压,5#井盖位移_告警状态,更新时间";
+                } else if (version == 1) {
+                    title = "Serial number,1# manhole cover displacement_X axis Angle,1# manhole cover displacement_Y axis Angle," +
+                            "1# manhole cover displacement_Z axis Angle,1# manhole cover displacement_Battery voltage," +
+                            "1# manhole cover displacement_Alarm status,2# manhole cover displacement_X axis Angle," +
+                            "2# manhole cover displacement_Y axis Angle,2# manhole cover displacement_Z axis Angle," +
+                            "2# manhole cover displacement_Battery voltage,2# manhole cover displacement_Alarm status," +
+                            "3# manhole cover displacement_X axis Angle,3# manhole cover displacement_Y axis Angle," +
+                            "3# manhole cover displacement_Z axis Angle,3# manhole cover displacement_Battery voltage," +
+                            "3# manhole cover displacement_Alarm status,4# manhole cover displacement_X axis Angle," +
+                            "4# manhole cover displacement_Y axis Angle,4# manhole cover displacement_Z axis Angle," +
+                            "4# manhole cover displacement_Battery voltage,4# manhole cover displacement_Alarm status," +
+                            "5# manhole cover displacement_X axis Angle,5# manhole cover displacement_Y axis Angle," +
+                            "5# manhole cover displacement_Z axis Angle,5# manhole cover displacement_Battery voltage," +
+                            "5# manhole cover displacement_Alarm status,Update Time";
+                } else {
+                    title = "Серийн номер,1# канализацион Люк смещен _X ос угл,1# канализацион Люк смещен _Y ос угл," +
+                            "1# канализацион Люк смещен _Z ос угл,1# канализацион Люк смещен батарейк напряжен," +
+                            "2# канализацион Люк смещен. Тревог состоян,2# канализацион Люк смещен _X ос угл," +
+                            "2# канализацион Люк смещен _Y ос угл,2# канализацион Люк смещен _Z ос угл," +
+                            "2# канализацион Люк смещен батарейк напряжен,2# канализацион Люк смещен. Тревог состоян," +
+                            "3# канализацион Люк смещен _X ос угл,3# канализацион Люк смещен _Y ос угл," +
+                            "3# канализацион Люк смещен _Z ос угл,3# канализацион Люк смещен. Батарейк напряжен," +
+                            "3# канализацион Люк смещен. Тревог состоян,4# канализацион Люк смещен _X ос угл," +
+                            "4# канализацион Люк смещен _Y ос угл,4# канализацион Люк смещен _Z ос угл," +
+                            "4# канализацион Люк смещен батарейк напряжен,4# канализацион Люк смещен. Тревог состоян," +
+                            "5# канализацион Люк смещен _X ос угл,5# канализацион Люк смещен _Y ос угл," +
+                            "5# канализацион Люк смещен _Z ос угл,5# канализацион Люк смещен батарейк напряжен," +
+                            "5# канализацион Люк смещен. Тревог состоян,Время обновления";
+                }
+                List<String> titleList = Arrays.asList(title.split(","));
+                for (CableInfoLogDTO c : cableLogList) {
+                    List<String> newString = new ArrayList<>();
+                    newString.add(0, String.valueOf(cableLogList.indexOf(c) + 1));
+                    newString.add(1,c.getManhole1X());
+                    newString.add(2,c.getManhole1Y());
+                    newString.add(3,c.getManhole1Z());
+                    newString.add(4,c.getManhole1V());
+                    newString.add(5, String.valueOf(c.getManhole1A()));
+                    newString.add(6,c.getManhole2X());
+                    newString.add(7,c.getManhole2Y());
+                    newString.add(8,c.getManhole2Z());
+                    newString.add(9,c.getManhole2V());
+                    newString.add(10, String.valueOf(c.getManhole2A()));
+                    newString.add(11,c.getManhole3X());
+                    newString.add(12,c.getManhole3Y());
+                    newString.add(13,c.getManhole3Z());
+                    newString.add(14,c.getManhole3V());
+                    newString.add(15, String.valueOf(c.getManhole3A()));
+                    newString.add(16,c.getManhole4X());
+                    newString.add(17,c.getManhole4Y());
+                    newString.add(18,c.getManhole4Z());
+                    newString.add(19,c.getManhole4V());
+                    newString.add(20, String.valueOf(c.getManhole4A()));
+                    newString.add(21,c.getManhole5X());
+                    newString.add(22,c.getManhole5Y());
+                    newString.add(23,c.getManhole5Z());
+                    newString.add(24,c.getManhole5V());
+                    newString.add(25, String.valueOf(c.getManhole5A()));
+                    newString.add(26,c.getUpdateTime());
+                    contentList.add(cableLogList.indexOf(c),newString);
+                }
+                path = ExcelUtil.outExcel(titleList, contentList);
+            } else if (group == 1) {
+                if (version == 0) {
+                    title = "序号,1#温度_温度值,1#温度_电压电池,1#温度_告警状态," +
+                            "2#温度_温度值,2#温度_电压电池,2#温度_告警状态," +
+                            "2#温度_温度值,2#温度_电压电池,2#温度_告警状态,更新时间";
+                } else if (version == 1) {
+                    title = "Serial Number,1#Temperature_Temperature value,1#temperature_Voltage Battery,1#temperature_Alarm status," +
+                            "2#Temperature_Temperature value,2#temperature_Voltage Battery,2#temperature_Alarm status," +
+                            "3#Temperature_Temperature value,3#temperature_Voltage Battery,3#temperature_Alarm status,Update Time";
+                } else {
+                    title = "Серийн номер,1#температура,1#температура батареи,1#температура состояние оповещения," +
+                            "2#температура,2#температура батареи,2#температура состояние оповещения," +
+                            "3#температура,3#температура батареи,3#температура состояние оповещения,Время обновления";
+                }
+                List<String> titleList = Arrays.asList(title.split(","));
+                List<List<String>> contentList = new ArrayList<>();
+                for (CableInfoLogDTO c : cableLogList) {
+                    List<String> newString = new ArrayList<>();
+                    newString.add(0, String.valueOf(cableLogList.indexOf(c) + 1));
+                    newString.add(1,c.getTemperature1T());
+                    newString.add(2,c.getTemperature1V());
+                    newString.add(3, String.valueOf(c.getTemperature1A()));
+                    newString.add(4,c.getTemperature2T());
+                    newString.add(5,c.getTemperature2V());
+                    newString.add(6, String.valueOf(c.getTemperature2A()));
+                    newString.add(7,c.getTemperature3T());
+                    newString.add(8,c.getTemperature3V());
+                    newString.add(9, String.valueOf(c.getTemperature3A()));
+                    newString.add(10,c.getUpdateTime());
+                    contentList.add(cableLogList.indexOf(c),newString);
+                }
+                path = ExcelUtil.outExcel(titleList, contentList);
+            } else if (group == 2) {
+                if (version == 0) {
+                    title = "序号,水浸_水浸值,水浸_电池电压,水浸_告警状态,更新时间";
+                } else if (version == 1) {
+                    title = "Serial Number,Water_water flood value," +
+                            "Water flood_Battery voltage,Water flood_Alarm status,Update time";
+                } else {
+                    title = "Порядковый номер,значение погружения воды в воду," +
+                            "напряжение батареи,состояние предупреждения,время обновления";
+                }
+                List<String> titleList = Arrays.asList(title.split(","));
+                List<List<String>> contentList = new ArrayList<>();
+                for (CableInfoLogDTO c : cableLogList) {
+                    List<String> newString = new ArrayList<>();
+                    newString.add(0, String.valueOf(cableLogList.indexOf(c) + 1));
+                    newString.add(1, String.valueOf(c.getWaterW()));
+                    newString.add(2,c.getWaterV());
+                    newString.add(3, String.valueOf(c.getWaterA()));
+                    newString.add(4,c.getUpdateTime());
+                    contentList.add(cableLogList.indexOf(c),newString);
+                }
+                path = ExcelUtil.outExcel(titleList,contentList);
+            } else {
+                if (version == 0) {
+                    title = "序号,气体_CH4值,气体_CO值,气体_H2S值,气体_O2值,气体_电池电压,气体_告警状态,更新时间";
+                } else if (version == 1) {
+                    title = "Serial Number,Gas_CH4 Value,Gas_CO Value,Gas_H2S Value," +
+                            "Gas_O2 Value,Gas_Battery Voltage,Gas_Alarm Status,Update Time";
+                } else {
+                    title = "Серийн номер,газ_CH4 сто,газ_CO сто,газ_H2S сто," +
+                            "газ_O2сто,газ_Напряжение батареи,газ_Внимание,Время обновления";
+                }
+                List<String> titleList = Arrays.asList(title.split(","));
+                List<List<String>> contentList = new ArrayList<>();
+                for (CableInfoLogDTO c : cableLogList) {
+                    List<String> newString = new ArrayList<>();
+                    newString.add(0, String.valueOf(cableLogList.indexOf(c) + 1));
+                    newString.add(1, String.valueOf(c.getCh4()));
+                    newString.add(2, String.valueOf(c.getCo()));
+                    newString.add(3, String.valueOf(c.getH2s()));
+                    newString.add(4,c.getO2());
+                    newString.add(5,c.getGasV());
+                    newString.add(6, String.valueOf(c.getGasA()));
+                    newString.add(7,c.getUpdateTime());
+                    contentList.add(cableLogList.indexOf(c),newString);
+                }
+                path = ExcelUtil.outExcel(titleList,contentList);
+            }
+            return toolUtils.response(InterfaceResultEnum.OPERATION_SUCCESS,version,path);
+        } else {
+            return toolUtils.response(InterfaceResultEnum.OPERATION_SUCCESS,version,cableLogList);
+        }
+    }
+
     /**
      * 获取电缆统计数据
      * @param request

+ 2 - 0
src/main/java/com/welampiot/dao/CableInfoLogDao.java

@@ -18,4 +18,6 @@ public interface CableInfoLogDao {
     List<CableInfoLogDTO> getCableInfoByDTO(CableInfoLogDTO dto);
 
     Integer getTimezoneById(@Param("id") Integer id);
+
+    List<CableInfoLogDTO> getCableLogListByDTO(CableInfoLogDTO dto);
 }

+ 2 - 0
src/main/java/com/welampiot/service/CableInfoLogService.java

@@ -17,4 +17,6 @@ public interface CableInfoLogService {
     List<CableInfoLogDTO> getCableInfoByDTO(CableInfoLogDTO dto);
 
     Integer getTimezoneById(Integer id);
+
+    List<CableInfoLogDTO> getCableLogListByDTO(CableInfoLogDTO dto);
 }

+ 5 - 0
src/main/java/com/welampiot/service/impl/CableInfoLogServiceImpl.java

@@ -31,4 +31,9 @@ public class CableInfoLogServiceImpl implements CableInfoLogService {
     public Integer getTimezoneById(Integer id) {
         return cableInfoLogDao.getTimezoneById(id);
     }
+
+    @Override
+    public List<CableInfoLogDTO> getCableLogListByDTO(CableInfoLogDTO dto) {
+        return cableInfoLogDao.getCableLogListByDTO(dto);
+    }
 }

+ 34 - 0
src/main/resources/mapper/CableInfoLogMapper.xml

@@ -30,4 +30,38 @@
         where c.id = #{id}
     </select>
     
+    <select id="getCableLogListByDTO" resultType="CableInfoLogDTO">
+        select 
+            <choose>
+                <when test="dataType == 0">
+                    c.manhole1_X manhole1X,c.manhole1_Y manhole1Y,c.manhole1_Z manhole1Z,c.manhole1_V manhole1V,c.manhole1_A manhole1A,
+                    c.manhole2_X manhole2X,c.manhole2_Y manhole2Y,c.manhole2_Z manhole2Z,c.manhole2_V manhole2V,c.manhole2_A manhole2A,
+                    c.manhole3_X manhole3X,c.manhole3_Y manhole3Y,c.manhole3_Z manhole3Z,c.manhole3_V manhole3V,c.manhole3_A manhole3A,
+                    c.manhole4_X manhole4X,c.manhole4_Y manhole4Y,c.manhole4_Z manhole4Z,c.manhole4_V manhole4V,c.manhole4_A manhole4A,
+                    c.manhole5_X manhole5X,c.manhole5_Y manhole5Y,c.manhole5_Z manhole5Z,c.manhole5_V manhole5V,c.manhole5_A manhole5A,
+                </when>
+                <when test="dataType == 1">
+                    c.temperature1_T temperature1T,c.temperature1_V temperature1V,c.temperature1_A temperature1A,
+                    c.temperature2_T temperature2T,c.temperature2_V temperature2V,c.temperature2_A temperature2A,
+                    c.temperature3_T temperature3T,c.temperature3_V temperature3V,c.temperature3_A temperature3A,
+                </when>
+                <when test="dataType == 2">
+                    c.water_W waterW,c.water_V waterV,c.water_A waterA,
+                </when>
+                <otherwise>
+                    c.ch4,c.co,c.h2s,c.o2,c.gas_V gasV,c.gas_A gasA,
+                </otherwise>
+            </choose>
+            c.updatetime as updateTime
+        from cable_info_log c
+        where c.cable_id = #{cableId}
+        <if test="startDate != null and startDate != ''">
+            and c.updatetime <![CDATA[ >= ]]> #{startDate}
+        </if>
+        <if test="endDate != null and endDate != ''">
+            and c.updatetime <![CDATA[ <= ]]> #{endDate}
+        </if>
+        order by c.updateTime desc
+    </select>
+    
 </mapper>