Ver código fonte

灯控日志信息

crazycat 2 anos atrás
pai
commit
db2b8a828a

+ 3 - 0
src/main/java/com/welampiot/common/InterfaceResultEnum.java

@@ -18,6 +18,9 @@ public enum InterfaceResultEnum {
     GROUP_NUMBER_UNIQUE_ERROR("0211","分组编号已存在","",""),
     LACK_GROUP_NUMBER_ERROR("0212","请填写分组编号","",""),
     LACK_GROUP_NAME_ERROR("0213","请填写分组名称","",""),
+    LACK_DATE_ERROR("0214","请选择日期范围","",""),
+    LACK_DATE_FORMAT_ERROR("0215","日期范围错误,请重新选择日期","",""),
+    LACK_DATE_RANGE_ERROR("0216","日期范围不能超过30天","",""),
     ;
     private String code;
     private String msgCn;

+ 24 - 59
src/main/java/com/welampiot/controller/LampController.java

@@ -10,10 +10,7 @@ import com.welampiot.service.GroupService;
 import com.welampiot.service.LampService;
 import com.welampiot.service.NetworkService;
 import com.welampiot.utils.ToolUtils;
-import com.welampiot.vo.GroupVO;
-import com.welampiot.vo.InfoResponseVO;
-import com.welampiot.vo.LampCountVO;
-import com.welampiot.vo.LampListResponseVO;
+import com.welampiot.vo.*;
 import org.apache.commons.lang3.ArrayUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
@@ -262,9 +259,6 @@ public class LampController {
         groupVO.setSectionList(sectionList);
         GroupDTO group = groupService.getDetailByVO(groupVO);
         String[] lampArr = null;
-//        if (!type.equals("0") && group != null){
-//            where.put("lampid",group.getLampid());
-//        }
         if (group != null && group.getLampId() != null){
             lampArr = group.getLampId().split(",");
         }
@@ -273,8 +267,6 @@ public class LampController {
         lampListResponseVO.setSectionList(sectionList);
         List<LampInfoDTO> lampList = lampService.groupSelectLamp(lampListResponseVO);
 
-//        List<Map> maps = lampinfoMapper.selectLamp(where);
-//        Map t_m;
         SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
         List list = new ArrayList<>();
         for (LampInfoDTO lamp :lampList) {
@@ -291,58 +283,31 @@ public class LampController {
             }
             list.add(lamp);
         }
-//        for (int i = 0; i < maps.size(); i++) {
-//            t_m = maps.get(i);
-////            if ((t_m.get("number") == null || t_m.get("number").equals("")) && t_m.get("lamp_polle_id") != null) t_m.put("number",t_m.get("lpNumber"));
-//            Integer lighteness = (Integer)t_m.get("lampStatus") == 0 ? 0 : (Integer) t_m.get("lighteness");
-//            t_m.put("lighteness",lighteness);
-//            t_m.put("current",String.format("%.2f",t_m.get("current")).toString());
-//            if (t_m.get("control_type").equals("4") || t_m.get("control_type").equals("8")){
-//                t_m.put("networkStatus",t_m.get("lampOnline"));
-//            }
-//            if (version.equals("0")){
-//                t_m.put("lampStatusStr",t_m.get("lampStatus").equals("1") ? "开" : "关");
-//                t_m.put("networkStatusStr",t_m.get("networkStatus").equals("1") ? "在线" : "离线");
-//            } else if (version.equals("1")) {
-//                t_m.put("lampStatusStr",t_m.get("lampStatus").equals("1") ? "On" : "Off");
-//                t_m.put("networkStatusStr",t_m.get("networkStatus").equals("1") ? "Online" : "Off-line");
-//            }else {
-//                t_m.put("lampStatusStr",t_m.get("lampStatus").equals("1") ? "Открой" : "Гуань");
-//                t_m.put("networkStatusStr",t_m.get("networkStatus").equals("1") ? "Онлайн" : "В автономном режиме");
-//            }
-//
-//            if (lampArr != null && ArrayUtils.contains(lampArr,t_m.get("id").toString())){
-//                t_m.put("select",1);
-//            }else {
-//                t_m.put("select",0);
-//            }
-//            Date updateTime = (Date) t_m.get("updateTime");
-//            if (updateTime != null){
-//                long timezone = updateTime.getTime() + (int) t_m.get("timezone") * 3600;
-//                updateTime = new Date(timezone);
-//                t_m.put("updateTime",simpleDateFormat.format(updateTime));
-//            }else {
-//                t_m.put("updateTime","");
-//            }
-//            if ((t_m.get("protocoltype").equals("10") && t_m.get("control_type").equals("5")) || (t_m.get("protocoltype").equals("11") && t_m.get("control_type").equals("8")) || (t_m.get("protocoltype").equals("3") && t_m.get("control_type").equals("9")) || t_m.get("control_type").equals("25")){
-//                String number = (String) t_m.get("number");
-//                number += t_m.get("mode").equals("0") ? "-1" : "-2";
-//                t_m.put("number",number);
-//            }
-//            if (Integer.parseInt(version) == 0){
-//                t_m.put("area",t_m.get("carea"));
-//            } else if (Integer.parseInt(version) == 1) {
-//                t_m.put("area",t_m.get("earea"));
-//            }else {
-//                t_m.put("area",t_m.get("rarea"));
-//            }
-//            t_m.put("networkStatus",t_m.get("networkStatus").toString());
-//            maps.set(i,t_m);
-//        }
-//        Map data = new HashMap<>();
-//        data.put("list",maps);
         LampListResponseVO lampListResponseVO1 = new LampListResponseVO();
         lampListResponseVO1.setList(list);
         return toolUtils.response(InterfaceResultEnum.OPERATION_SUCCESS,Integer.parseInt(version),lampListResponseVO1);
     }
+
+    /**
+     * 灯控下拉
+     * @param request
+     * @return
+     */
+    @RequestMapping(value = "/nav",method = RequestMethod.POST)
+    public BaseResult nav(HttpServletRequest request) {
+        List sectionList = toolUtils.getSectionList(request);
+        Integer version = (Integer) toolUtils.getRequestContent(request,"version",1);
+        Integer lampType = (Integer) toolUtils.getRequestContent(request,"lampType",1);
+        LampListResponseVO lampListResponseVO = new LampListResponseVO();
+        lampListResponseVO.setSectionList(sectionList);
+        if (lampType == 1){
+            lampListResponseVO.setLampType(lampType);
+        }
+        List<LampInfoDTO> navByVO = lampService.getNavByVO(lampListResponseVO);
+        ListResponseVO listResponseVO = new ListResponseVO();
+        listResponseVO.setList(navByVO);
+        return toolUtils.response(InterfaceResultEnum.OPERATION_SUCCESS,version,listResponseVO);
+    }
+
+
 }

+ 144 - 2
src/main/java/com/welampiot/controller/NewLampPoleController.java

@@ -13,8 +13,9 @@ import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.servlet.http.HttpServletRequest;
-import java.util.Arrays;
-import java.util.List;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.*;
 
 /**
  * ClassName: NewLampPoleController
@@ -50,6 +51,10 @@ public class NewLampPoleController {
 
     @Autowired
     private OperationLogService operationLogService;
+    @Autowired
+    private LampService lampService;
+    @Autowired
+    private LampInfoLogService lampInfoLogService;
 
     @RequestMapping(value = "/info",method = RequestMethod.POST)
     public BaseResult info(HttpServletRequest request){
@@ -310,5 +315,142 @@ public class NewLampPoleController {
         }
         return toolUtils.response(InterfaceResultEnum.OPERATION_SUCCESS,version);
     }
+    /**
+     * 获取灯控日志信息
+     * @param request
+     * @return
+     */
+    @RequestMapping(value = "/lampDataHistory", method = RequestMethod.POST)
+    public BaseResult lampDataHistory(HttpServletRequest request) throws ParseException, ParseException {
+        Integer version = (Integer) toolUtils.getRequestContent(request,"version",1);
+//        List sectionList = toolUtils.getSectionList(request);lampId
+        Integer lampId = (Integer) toolUtils.getRequestContent(request,"lampId",1);
+        if (lampId == 0) return toolUtils.response(InterfaceResultEnum.LACK_PARAM_ERROR,version);
+        LampInfoDTO detailsById = lampService.getDetailsById(lampId, version);
+        Integer dateType = (Integer) toolUtils.getRequestContent(request,"dateType",1);
+        long l = System.currentTimeMillis()-detailsById.getTimezone()*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("/"));
+            System.out.println(split.toString());
+            System.out.println(split.get(0));
+            System.out.println(split.get(1));
+            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 > 29*24*3600*1000) toolUtils.response(InterfaceResultEnum.LACK_DATE_RANGE_ERROR,version);
+            startTime -= detailsById.getTimezone()*3600*1000;
+            endTime -= detailsById.getTimezone()*3600*1000;
+        }
+
+        HashMap<String, Integer> objectObjectHashMap = new HashMap<>();
+        Long timeT = startTime;
+        int i = 0;
 
+        ArrayList<Object> dateList = new ArrayList<>();
+        ArrayList<Object> volList = new ArrayList<>();
+        ArrayList<Object> curList = new ArrayList<>();
+        ArrayList<Object> powerList = new ArrayList<>();
+        ArrayList<Object> lightList = new ArrayList<>();
+        ArrayList<LampInfoLogDTO> list = new ArrayList<>();
+        simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:00:00");
+        while (timeT < endTime){
+            objectObjectHashMap.put(simpleDateFormat.format(new Date(timeT)).toString(),i);
+            dateList.add(simpleDateFormat.format(new Date(timeT+detailsById.getTimezone()*3600*1000)).toString());
+            volList.add(0);
+            powerList.add(0);
+            lightList.add(0);
+            curList.add(0);
+            list.add(null);
+            timeT += 3600*1000;
+            i ++;
+        }
+        SimpleDateFormat simpleDateFormat2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        String startDate = simpleDateFormat.format(new Date(startTime));
+        String endDate = simpleDateFormat.format(new Date(endTime));
+        LampLogVO lampLogVO = new LampLogVO();
+        lampLogVO.setLampId(lampId);
+        lampLogVO.setStartDate(startDate);
+        lampLogVO.setEndDate(endDate);
+        List<LampInfoLogDTO> listByVO = lampInfoLogService.getListByVO(lampLogVO);
+        for (LampInfoLogDTO lampInfoLogDTO :listByVO) {
+
+            Date date = new Date(simpleDateFormat2.parse(lampInfoLogDTO.getUpdateTime()).getTime());
+            String s = simpleDateFormat.format(date).toString();
+            System.out.println(s);
+            if (objectObjectHashMap.containsKey(s)){
+                Integer integer = objectObjectHashMap.get(s);
+                list.set(integer,lampInfoLogDTO);
+            }
+        }
+        LampLogVO lampLogVO1 = new LampLogVO();
+        Float maxCur = Float.valueOf(lampLogVO1.getMaxCur() == null ? "0" : lampLogVO1.getMaxCur());
+        Float maxPower = Float.valueOf(lampLogVO1.getMaxPower() == null ? "0":lampLogVO1.getMaxPower());
+        Integer maxLight = Integer.valueOf(lampLogVO1.getMaxLight() == null ? "0":lampLogVO1.getMaxLight());
+        Float maxVol = Float.valueOf(lampLogVO1.getMaxVol()==null?"0":lampLogVO1.getMaxVol());
+        ArrayList<Object> logList = new ArrayList<>();
+        for (LampInfoLogDTO lampInfoLogDTO:list) {
+            if (lampInfoLogDTO != null){
+                Date date = new Date(simpleDateFormat2.parse(lampInfoLogDTO.getUpdateTime()).getTime());
+                String s = simpleDateFormat.format(date).toString();
+                System.out.println(s);
+                Integer integer = null;
+                if (objectObjectHashMap.containsKey(s)){
+                    integer = objectObjectHashMap.get(s);
+                    list.set(integer,lampInfoLogDTO);
+                }
+
+                if (lampInfoLogDTO.getCurrent() != null && !lampInfoLogDTO.getCurrent().equals("0") && integer != null){
+                    curList.set(integer,Float.valueOf(lampInfoLogDTO.getCurrent()));
+                    if (maxCur < Float.valueOf(lampInfoLogDTO.getCurrent()))maxCur = Float.valueOf(lampInfoLogDTO.getCurrent());
+                }
+                if (lampInfoLogDTO.getVoltage() != null && !lampInfoLogDTO.getVoltage().equals("0") && integer != null){
+                    volList.set(integer,Float.valueOf(lampInfoLogDTO.getVoltage()));
+                    if (maxVol < Float.valueOf(lampInfoLogDTO.getVoltage()))maxVol = Float.valueOf(lampInfoLogDTO.getVoltage());
+                }
+                if (lampInfoLogDTO.getDimValue() != null && !lampInfoLogDTO.getDimValue().equals("0") && integer != null){
+                    lightList.set(integer,Integer.valueOf(lampInfoLogDTO.getDimValue()));
+                    if (maxLight < Integer.valueOf(lampInfoLogDTO.getDimValue()))maxLight = Integer.valueOf(lampInfoLogDTO.getDimValue());
+                }
+                if (lampInfoLogDTO.getPower() != null && !lampInfoLogDTO.getPower().equals("0") && integer != null){
+                    powerList.set(integer,Float.valueOf(lampInfoLogDTO.getPower()));
+                    if (maxPower < Float.valueOf(lampInfoLogDTO.getPower()))maxPower = Float.valueOf(lampInfoLogDTO.getPower());
+                }
+                if (maxLight.intValue() < Integer.valueOf(lampInfoLogDTO.getDimValue()).intValue())maxLight = Integer.valueOf(lampInfoLogDTO.getDimValue());
+
+                date = new Date(simpleDateFormat2.parse(lampInfoLogDTO.getUpdateTime()).getTime()+detailsById.getTimezone()*3600*1000);
+                lampInfoLogDTO.setUpdateTime(simpleDateFormat.format(date).toString());
+                logList.add(lampInfoLogDTO);
+            }
+        }
+
+        lampLogVO1.setCurList(curList);
+        lampLogVO1.setVolList(volList);
+        lampLogVO1.setPowerList(powerList);
+        lampLogVO1.setLightList(lightList);
+        lampLogVO1.setDateList(dateList);
+        lampLogVO1.setList(logList);
+        lampLogVO1.setStep(3600);
+        lampLogVO1.setMaxCur(maxCur.toString());
+        lampLogVO1.setMaxLight(maxLight.toString());
+        lampLogVO1.setMaxPower(maxPower.toString());
+        lampLogVO1.setMaxVol(maxVol.toString());
+        return toolUtils.response(InterfaceResultEnum.OPERATION_SUCCESS,version,lampLogVO1);
+    }
 }

+ 1 - 0
src/main/java/com/welampiot/dao/LampDao.java

@@ -22,5 +22,6 @@ public interface LampDao {
     Integer update(LampInfoDTO lampInfoDTO);
     Integer deleteById(@Param("id")Integer id);
     List<LampInfoDTO> groupSelectLamp(LampListResponseVO lampListResponseVO);
+    List<LampInfoDTO> getNavByVO(LampListResponseVO lampListResponseVO);
 
 }

+ 5 - 0
src/main/java/com/welampiot/dao/LampInfoLogDao.java

@@ -1,7 +1,12 @@
 package com.welampiot.dao;
 
+import com.welampiot.dto.LampInfoLogDTO;
+import com.welampiot.vo.LampLogVO;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.List;
+
 public interface LampInfoLogDao {
     Integer deleteByLampId(@Param("lampId")Integer lampId);
+    List<LampInfoLogDTO> getListByVO(LampLogVO lampLogVO);
 }

+ 5 - 0
src/main/java/com/welampiot/dto/LampInfoLogDTO.java

@@ -4,4 +4,9 @@ import lombok.Data;
 
 @Data
 public class LampInfoLogDTO {
+    private String voltage;
+    private String current;
+    private String power;
+    private String dimValue;
+    private String updateTime;
 }

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

@@ -1,7 +1,12 @@
 package com.welampiot.service;
 
+import com.welampiot.dto.LampInfoLogDTO;
+import com.welampiot.vo.LampLogVO;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.List;
+
 public interface LampInfoLogService {
     Integer deleteByLampId(Integer lampId);
+    List<LampInfoLogDTO> getListByVO(LampLogVO lampLogVO);
 }

+ 1 - 0
src/main/java/com/welampiot/service/LampService.java

@@ -24,4 +24,5 @@ public interface LampService {
 
     LampInfoDTO getDetailsByAddress(@Param("address")String address,@Param("version")Integer version);
     List<LampInfoDTO> groupSelectLamp(LampListResponseVO lampListResponseVO);
+    List<LampInfoDTO> getNavByVO(LampListResponseVO lampListResponseVO);
 }

+ 10 - 0
src/main/java/com/welampiot/service/impl/LampInfoLogServiceImpl.java

@@ -1,10 +1,14 @@
 package com.welampiot.service.impl;
 
 import com.welampiot.dao.LampInfoLogDao;
+import com.welampiot.dto.LampInfoLogDTO;
 import com.welampiot.service.LampInfoLogService;
+import com.welampiot.vo.LampLogVO;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+
 @Service
 public class LampInfoLogServiceImpl implements LampInfoLogService {
     @Autowired
@@ -13,4 +17,10 @@ public class LampInfoLogServiceImpl implements LampInfoLogService {
     public Integer deleteByLampId(Integer lampId) {
         return lampInfoLogDao.deleteByLampId(lampId);
     }
+
+    @Override
+    public List<LampInfoLogDTO> getListByVO(LampLogVO lampLogVO) {
+        List<LampInfoLogDTO> listByVO = lampInfoLogDao.getListByVO(lampLogVO);
+        return listByVO;
+    }
 }

+ 17 - 0
src/main/java/com/welampiot/service/impl/LampServiceImpl.java

@@ -272,4 +272,21 @@ public class LampServiceImpl implements LampService {
         List<LampInfoDTO> lampInfoDTOS = lampDao.groupSelectLamp(lampListResponseVO);
         return lampInfoDTOS;
     }
+
+    @Override
+    public List<LampInfoDTO> getNavByVO(LampListResponseVO lampListResponseVO) {
+        List<LampInfoDTO> navByVO = lampDao.getNavByVO(lampListResponseVO);
+        List<LampInfoDTO> list = new ArrayList<>();
+        for (LampInfoDTO l :navByVO) {
+            if ((l.getProtocolType() == 10 && l.getControlType() == 5) || (l.getProtocolType() == 3 && l.getControlType() == 9) || (l.getProtocolType() == 11 && l.getControlType() == 8) || l.getControlType() == 25 || l.getControlType() == 27){
+                if (l.getMode() == 0){
+                    l.setNumber(l.getNumber()+"-1");
+                }else {
+                    l.setNumber(l.getNumber()+"-2");
+                }
+            }
+            list.add(l);
+        }
+        return list;
+    }
 }

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

@@ -23,4 +23,5 @@ public class LampListResponseVO {
     private Integer total;
     private Integer total2;
     private String lampIds;  // 灯控id筛选
+    private Integer lampType;
 }

+ 17 - 0
src/main/java/com/welampiot/vo/LampLogVO.java

@@ -3,10 +3,27 @@ package com.welampiot.vo;
 import lombok.Data;
 
 import java.util.Date;
+import java.util.List;
 
 @Data
 public class LampLogVO {
     private Date updateTime; // 更新时间
     private Float consumption; // 用电量
     private Float powerSave; // 省电量
+
+    private Integer lampId;
+    private String startDate;
+    private String endDate;
+
+    private List dateList;
+    private List volList;
+    private List curList;
+    private List powerList;
+    private List lightList;
+    private String maxVol;
+    private String maxCur;
+    private String maxPower;
+    private String maxLight;
+    private Integer step;
+    private List list;
 }

+ 11 - 0
src/main/resources/mapper/LampInfoLogMapper.xml

@@ -4,4 +4,15 @@
     <delete id="deleteByLampId">
         delete from lamp_info_log where lampid=#{lampId};
     </delete>
+
+    <select id="getListByVO" parameterType="com.welampiot.vo.LampLogVO" resultType="com.welampiot.dto.LampInfoLogDTO">
+        select gridvolt as voltage,gridcurr as current,grid_active_power as power,dim_value as dimValue,updatetime as updateTime from lamp_info_log where lampid=#{lampId}
+        <if test="startDate != null">
+            and updateTime >= #{startDate}
+        </if>
+        <if test="endDate != null">
+            and updateTime &lt;= #{endDate}
+        </if>
+        order by updatetime DESC
+    </select>
 </mapper>

+ 22 - 0
src/main/resources/mapper/LampMapper.xml

@@ -400,4 +400,26 @@
     <delete id="deleteById">
         delete from lampinfo where id=#{id};
     </delete>
+
+    <select id="getNavByVO" resultType="com.welampiot.dto.LampInfoDTO" parameterType="com.welampiot.vo.LampListResponseVO">
+        select
+        L.number,
+        L.id,
+        L.mode,
+        N.protocoltype,
+        L.control_type as controlType
+        from lampinfo L
+        left join network as N on N.id = L.networkid
+        where 1=1
+        <if test="sectionList != null and !sectionList.isEmpty()">
+            and L.sectionid in
+            <foreach item="vo" collection="sectionList" open="(" separator="," close=")">
+                #{vo}
+            </foreach>
+        </if>
+        <if test="lampType != null and lampType == 1">
+            and L.lamp_pole_id != 0
+        </if>
+        order by L.number asc,L.mode asc,L.createtime desc,L.id desc
+    </select>
 </mapper>