浏览代码

分组批量导入

crazycat 2 年之前
父节点
当前提交
9fba86d980

+ 88 - 7
src/main/java/com/welampiot/controller/GroupController.java

@@ -2,20 +2,25 @@ package com.welampiot.controller;
 
 import com.welampiot.common.BaseResult;
 import com.welampiot.common.InterfaceResultEnum;
+import com.welampiot.dto.GlobalLocationDTO;
 import com.welampiot.dto.GroupDTO;
 import com.welampiot.dto.LampInfoDTO;
+import com.welampiot.dto.SectionDTO;
+import com.welampiot.service.GlobalLocationService;
 import com.welampiot.service.GroupService;
 import com.welampiot.service.LampService;
+import com.welampiot.service.SectionService;
+import com.welampiot.utils.ExcelUtil;
 import com.welampiot.utils.ToolUtils;
 import com.welampiot.vo.GroupVO;
 import com.welampiot.vo.LampListResponseVO;
+import org.apache.poi.ss.formula.functions.T;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletRequest;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
+import java.util.*;
 
 @RestController
 @CrossOrigin
@@ -27,10 +32,10 @@ public class GroupController{
     private ToolUtils toolUtils;
     @Autowired
     private LampService lampService;
-//    @Autowired
-//    private PlcPolicyMapper plcPolicyMapper;
-//    @Autowired
-//    private WeResponse weResponse;
+    @Autowired
+    private SectionService sectionService;
+    @Autowired
+    private GlobalLocationService globalLocationService;
 
     /**
      * 分组下拉
@@ -281,4 +286,80 @@ public class GroupController{
         }
         return toolUtils.response(InterfaceResultEnum.OPERATION_SUCCESS,version);
     }
+
+
+    /**
+     * 批量导入
+     * @param request
+     * @return
+     */
+    @PostMapping("/batchInput")
+    private BaseResult batchInput(GroupVO group){
+        Integer version = group.getVersion() == null ? 0 : group.getVersion();
+        Integer sectionId = group.getSectionid();
+        Integer areaId = group.getAreaid();
+        Integer type = group.getType();
+        if (sectionId.intValue() == 0 || areaId.intValue() == 0) return toolUtils.response(InterfaceResultEnum.LACK_PARAM_ERROR,version);
+        MultipartFile file = group.getFile();
+        if (type.intValue() == 1){ // 验证
+            if (file.isEmpty()) return toolUtils.response(InterfaceResultEnum.LACK_PARAM_ERROR,version);
+            List<Map> maps = ExcelUtil.inExcel(file);
+            List msg = new ArrayList();
+            List groupData = new ArrayList();
+            int index = 1;
+            HashMap<String, String> temp = new HashMap<>();
+            if (maps.size() > 0){
+                for (Map m : maps) {
+                    GroupDTO groupDTO = new GroupDTO();
+                    String name = m.get(0).toString();
+                    groupDTO.setName(name);
+                    SectionDTO oneById = sectionService.getOneById(sectionId);
+                    groupDTO.setSection(oneById.getName());
+                    GlobalLocationDTO oneById1 = globalLocationService.getOneById(areaId);
+                    groupDTO.setArea(oneById1.getChineseName());
+                    groupData.add(groupDTO);
+
+                    GroupDTO groupDTO1 = new GroupDTO();
+                    groupDTO1.setName(groupDTO.getName());
+                    groupDTO1.setSectionId(sectionId);
+                    if (groupService.checkData(groupDTO1) > 0) {
+                        if (version.intValue() == 0){
+                            msg.add("表格第"+index+"行分组名称已经存在");
+                        }else if (version.intValue() == 1){
+                            msg.add("Table "+index+" row group name already exists");
+                        }else {
+                            msg.add("название группы "+index+" таблицы уже существует");
+                        }
+                    }
+                    if (temp.containsKey(groupDTO.getName())){
+                        if (version.intValue() == 0){
+                            msg.add("表格第"+index+"行分组名称已经存在");
+                        }else if (version.intValue() == 1){
+                            msg.add("Table "+index+" row group name already exists");
+                        }else {
+                            msg.add("название группы "+index+" таблицы уже существует");
+                        }
+                    }
+                    temp.put(groupDTO.getName(),groupDTO.getName());
+                    index ++;
+                }
+            }
+            GroupVO groupVO = new GroupVO();
+            groupVO.setMsg(msg);
+            groupVO.setGroupData(groupData);
+            return toolUtils.response(InterfaceResultEnum.OPERATION_SUCCESS,version,groupVO);
+        }else { // 创建
+            List<Map> groupData2 = group.getGroupData();
+            for (Map m :groupData2) {
+                String name = (String)m.get("name");
+                GroupDTO groupDTO = new GroupDTO();
+                groupDTO.setName(name);
+                groupDTO.setAreaId(areaId);
+                groupDTO.setSectionId(sectionId);
+                groupService.add(groupDTO);
+            }
+        }
+
+        return toolUtils.response(InterfaceResultEnum.OPERATION_SUCCESS,version);
+    }
 }

+ 175 - 5
src/main/java/com/welampiot/controller/MapController.java

@@ -9,6 +9,8 @@ import com.welampiot.dto.*;
 import com.welampiot.service.*;
 import com.welampiot.utils.ToolUtils;
 import com.welampiot.vo.*;
+import org.apache.commons.lang3.ArrayUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
@@ -257,15 +259,15 @@ public class MapController{
         SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
         lampInfoList.forEach(dto -> {
             //设备状态(0 = 设备正常, 1 = 供电异常,2 = 灯闪,4 =灯坏, 8 = LED驱动故障, 16 = 数据同步失败)
-            if (dto.getFaultstatus() != null && dto.getFaultstatus() == 16) {
+            if (dto.getFaultStatus() != null && dto.getFaultStatus() == 16) {
                 dto.setStralarmtype("数据同步失败");
-            } else if (dto.getFaultstatus() != null && dto.getFaultstatus() == 8) {
+            } else if (dto.getFaultStatus() != null && dto.getFaultStatus() == 8) {
                 dto.setStralarmtype("LED驱动故障");
-            } else if (dto.getFaultstatus() != null && dto.getFaultstatus() == 4) {
+            } else if (dto.getFaultStatus() != null && dto.getFaultStatus() == 4) {
                 dto.setStralarmtype("灯坏");
-            } else if (dto.getFaultstatus() != null && dto.getFaultstatus() == 2) {
+            } else if (dto.getFaultStatus() != null && dto.getFaultStatus() == 2) {
                 dto.setStralarmtype("灯闪");
-            } else if (dto.getFaultstatus() != null && dto.getFaultstatus() == 1) {
+            } else if (dto.getFaultStatus() != null && dto.getFaultStatus() == 1) {
                 dto.setStralarmtype("供电异常");
             } else {
                 dto.setStralarmtype("设备正常");
@@ -2209,4 +2211,172 @@ public class MapController{
         lampDetailVO.setEnergyList(eleList);
         return toolUtils.response(InterfaceResultEnum.OPERATION_SUCCESS,version,lampDetailVO);
     }
+
+
+    /**
+     * 地图首页
+     * @param
+     * @return 地图首页
+     */
+    @RequestMapping(value = "/data", method = RequestMethod.POST)
+    public BaseResult<?> data(HttpServletRequest request){
+        Integer version = (Integer) toolUtils.getRequestContent(request,"version",1);
+        String type = (String) toolUtils.getRequestContent(request,"type",2);
+        Integer isJuhe = (Integer) toolUtils.getRequestContent(request,"isJuhe",1);
+        Integer deviceType = (Integer) toolUtils.getRequestContent(request,"deviceType",1);
+        Integer carType = (Integer) toolUtils.getRequestContent(request,"carType",1);
+        String keyword = (String) toolUtils.getRequestContent(request,"keyword",2);
+        String lngLow = (String) toolUtils.getRequestContent(request,"lngLow",2);
+        String lngHigh = (String) toolUtils.getRequestContent(request,"lngHigh",2);
+        String latLow = (String) toolUtils.getRequestContent(request,"latLow",2);
+        String latHigh = (String) toolUtils.getRequestContent(request,"latHigh",2);
+        MapDataVO mapDataVO = new MapDataVO();
+        mapDataVO.setLngLow(lngLow);
+        mapDataVO.setLngHigh(lngHigh);
+        mapDataVO.setLatLow(latLow);
+        mapDataVO.setLatHigh(latHigh);
+        mapDataVO.setKeyword(keyword);
+        mapDataVO.setVersion(version);
+        List sectionList = toolUtils.getSectionList(request);
+        mapDataVO.setSectionList(sectionList);
+        List<LampInfoDTO> mapDataByVO = lampService.getMapDataByVO(mapDataVO);
+
+        ListResponseVO listResponseVO = new ListResponseVO();
+        List<Object> objects = new ArrayList<>();
+        for (LampInfoDTO dto :mapDataByVO) {
+            objects.add(dto);
+        }
+        listResponseVO.setList(objects);
+        return toolUtils.response(InterfaceResultEnum.OPERATION_SUCCESS,version);
+    }
+
+    /**
+     * 地图首页
+     * @param
+     * @return 地图首页
+     */
+    @RequestMapping(value = "/newData", method = RequestMethod.POST)
+    public BaseResult<?> newData(HttpServletRequest request){
+        Integer version = (Integer) toolUtils.getRequestContent(request,"version",1);
+        String type = (String) toolUtils.getRequestContent(request,"type",2);
+        Integer isJuhe = (Integer) toolUtils.getRequestContent(request,"isJuhe",1);
+        Integer deviceType = (Integer) toolUtils.getRequestContent(request,"deviceType",1);
+        Integer carType = (Integer) toolUtils.getRequestContent(request,"carType",1);
+        String dType = (String) toolUtils.getRequestContent(request,"dType",2);
+        String keyword = (String) toolUtils.getRequestContent(request,"keyword",2);
+        String lngLow = (String) toolUtils.getRequestContent(request,"lngLow",2);
+        String lngHigh = (String) toolUtils.getRequestContent(request,"lngHigh",2);
+        String latLow = (String) toolUtils.getRequestContent(request,"latLow",2);
+        String latHigh = (String) toolUtils.getRequestContent(request,"latHigh",2);
+        MapDataVO mapDataVO = new MapDataVO();
+        mapDataVO.setLngLow(lngLow);
+        mapDataVO.setLngHigh(lngHigh);
+        mapDataVO.setLatLow(latLow);
+        mapDataVO.setLatHigh(latHigh);
+        mapDataVO.setKeyword(keyword);
+        mapDataVO.setVersion(version);
+        List sectionList = toolUtils.getSectionList(request);
+        mapDataVO.setSectionList(sectionList);
+
+        // 路灯
+        String[] split = toolUtils.getUser().getPrivilege().split(",");
+        List<String> strings = Arrays.asList(split);
+        Integer role = toolUtils.getUser().getRole();
+        ListResponseVO listResponseVO = new ListResponseVO();
+        List<Object> objects = new ArrayList<>();
+        List dTypeArr = Arrays.asList(dType.split(","));
+        if (role == 1 || strings.contains("3")){
+            if (deviceType == 0 || deviceType == 4 || dTypeArr.contains("1")) {
+                List<LampInfoDTO> mapDataByVO = lampService.getNewMapDataByVO(mapDataVO);
+                for (LampInfoDTO dto : mapDataByVO) {
+                    dto.setDevType(1);
+                    if (dto.getFaultStatus() != 0 && dto.getFaultStatus() != 128) {  // 故障
+                        dto.setLampStatus(3);
+                    } else {
+                        if (dto.getNetStatus() == 0) {  // 离线
+                            dto.setLighteness(0);
+                            dto.setLampStatus(0);
+                            dto.setStatus(0);
+                        } else { // 在线
+                            if (dto.getStatus() == 0) {  // 关灯
+                                dto.setLampStatus(2);
+                                dto.setLighteness(0);
+                            } else { // 开灯
+                                dto.setLampStatus(1);
+                            }
+                        }
+                    }
+                    objects.add(dto);
+                }
+            }
+        }
+
+        // 灯杆
+        if (role == 1 || strings.contains("6")){
+            if (deviceType == 0 || deviceType == 1 || dTypeArr.contains("4")) {
+                List<LampPoleDTO> mapDataByVO = lampPoleService.getMapDataByVO(mapDataVO);
+                for (LampPoleDTO dto : mapDataByVO) {
+                    dto.setDevType("4");
+                    String[] split1 = dto.getIconInfo().split(",");
+                    ArrayList<String> strings1 = new ArrayList<>();
+                    for (String string:split1) {
+                        if (!string.isEmpty() && !string.equals("1") && !string.equals("0")){
+                            strings1.add(string);
+                        }
+                    }
+                    dto.setIconInfo(StringUtils.join(strings1, ","));
+
+                    if (dto.getFaultStatus() != 0 && dto.getFaultStatus() != 128) {  // 故障
+                        dto.setLampStatus(3);
+//                        dto.setAlarmStatusStr(dto.getStr);
+                    } else {
+                        if (dto.getNetStatus() == 0) {  // 离线
+                            dto.setLighteness(0);
+                            dto.setLampStatus(0);
+                            dto.setStatus(0);
+                        } else { // 在线
+                            if (dto.getStatus() == 0) {  // 关灯
+                                dto.setLampStatus(2);
+                                dto.setLighteness(0);
+                            } else { // 开灯
+                                dto.setLampStatus(1);
+                            }
+                        }
+                    }
+                    objects.add(dto);
+                }
+            }
+        }
+
+        // 环境监控
+        if (deviceType == 0 || dTypeArr.contains("3")) {
+            List<EnvmonitorDTO> newMapDataByVO = envmonitorService.getNewMapDataByVO(mapDataVO);
+            for (EnvmonitorDTO dto:newMapDataByVO) {
+                dto.setDevType(3);
+                objects.add(dto);
+            }
+        }
+
+        // 井盖设备
+        if (deviceType == 0 || dTypeArr.contains("6")) {
+        }
+
+        // 垃圾桶设备
+        if (deviceType == 0 || dTypeArr.contains("9")) {
+        }
+
+        // 回路设备
+        if (deviceType == 0 || dTypeArr.contains("7")) {
+        }
+
+        // 视屏监控
+        if (deviceType == 0 || dTypeArr.contains("2")) {
+        }
+
+
+
+        listResponseVO.setList(objects);
+        return toolUtils.response(InterfaceResultEnum.OPERATION_SUCCESS,version,listResponseVO);
+    }
+
 }

+ 61 - 0
src/main/java/com/welampiot/controller/NoiseDevInfoController.java

@@ -8,6 +8,7 @@ import com.welampiot.service.LampPoleService;
 import com.welampiot.service.NoiseDevInfoLogService;
 import com.welampiot.service.NoiseDevInfoService;
 import com.welampiot.utils.ToolUtils;
+import com.welampiot.utils.WebUtils;
 import com.welampiot.vo.NoiseDevInfoLogVO;
 import com.welampiot.vo.NoiseDevInfoVO;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -230,4 +231,64 @@ public class NoiseDevInfoController {
         toolUtils.updateLampPoleDevType(devType,17,dto.getId());
         return toolUtils.response(InterfaceResultEnum.OPERATION_SUCCESS,version);
     }
+
+
+    /**
+     * 注册设备
+     * @param request 噪声监控设备id
+     * @return 注册设备
+     */
+    @RequestMapping(value = "/devRegister", method = RequestMethod.POST)
+    public BaseResult<?> devRegister(HttpServletRequest request){
+        Integer version = (Integer) toolUtils.getRequestContent(request, "version", 1);
+        Integer id = (Integer) toolUtils.getRequestContent(request, "id", 1);
+        if (id == 0) return toolUtils.response(InterfaceResultEnum.LACK_PARAM_ERROR,version);
+
+        NoiseDevInfoDTO dto = noiseDevInfoService.getNoiseLampPole(id);
+        int rate = 4800;
+        String ra = "";
+        String top = "";
+        String chuanKou = "";
+        String address = "00"+dto.getAddress();
+        address = address.substring(address.length() - 2);
+        String cmd = address+"0300000010";
+        cmd += toolUtils.getCRC(cmd.getBytes());
+        String cmdT = cmd;
+        if (dto.getModel() == 0){
+            top = "WEGW";
+
+        } else if (dto.getModel() == 1) {
+            top = "WEGW2";
+            ra = "00000000"+Integer.toHexString(rate);
+            ra = ra.substring(ra.length() - 8);
+            cmd = ra+cmd;
+        }else {
+            top = "WEGW3";
+            chuanKou = "00"+dto.getSerialPort();
+            chuanKou = chuanKou.substring(chuanKou.length() - 2);
+            cmd = ra+cmd;
+        }
+        String len = "00"+Integer.toHexString(cmd.length() / 2);
+        len = len.substring(len.length()-2);
+        String sendTopic = "/"+top+"/WriteIn/"+dto.getNum();
+        String backTopic = "/"+top+"/WriteOut/"+dto.getNum();
+        cmd = "01"+"{\"D2\":\""+chuanKou+address+len+cmd+"\"}";
+        String s = toolUtils.sendMqttCmd(sendTopic, cmd, backTopic);
+        if (s != null && !s.isEmpty()){
+            if (dto.getModel() != 0){
+                sendTopic = "/"+top+"/TransIn/"+dto.getNum();
+                backTopic = "/"+top+"/TransOut/"+dto.getNum();
+                cmd = "00D2"+chuanKou+cmdT;
+                s = toolUtils.sendMqttCmd(sendTopic, toolUtils.hexString2Bytes(cmd), backTopic);
+                if (s != null && !s.isEmpty()) {
+                    String string = "02000000000000" + chuanKou + toolUtils.bytes2HexString(s.getBytes()).substring(4);
+                    sendTopic = "/"+top+"/DataReport/"+dto.getNum();
+                    backTopic = "/"+top+"/DataReport/"+dto.getNum();
+                    toolUtils.sendMqttCmd(sendTopic, toolUtils.hexString2Bytes(string), backTopic,0);
+                }
+            }
+            return toolUtils.response(InterfaceResultEnum.OPERATION_SUCCESS,version);
+        }
+        return toolUtils.response(InterfaceResultEnum.SEND_CMD_TIME_OUT,version);
+    }
 }

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

@@ -3,6 +3,7 @@ package com.welampiot.dao;
 import com.welampiot.dto.EnvmonitorDTO;
 import com.welampiot.vo.EnvmonitorDetailVO;
 import com.welampiot.vo.EnvmonitorVO;
+import com.welampiot.vo.MapDataVO;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -67,4 +68,5 @@ public interface EnvmonitorDao {
     EnvmonitorDTO getIlluminanceDetailByVO(EnvmonitorDetailVO vo);
 
     List<EnvmonitorDTO> getIlluminanceListByVO(EnvmonitorVO vo);
+    List<EnvmonitorDTO> getNewMapDataByVO(MapDataVO vo);
 }

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

@@ -1,5 +1,6 @@
 package com.welampiot.dao;
 
+import com.welampiot.vo.*;
 import com.welampiot.dto.LampInfoLogNewDTO;
 import com.welampiot.dto.LampInfoDTO;
 import com.welampiot.vo.LampCountVO;
@@ -55,6 +56,8 @@ public interface LampDao {
     List<LampInfoDTO> getLampInfoAlarmList(LampInfoDTO dto);
     List<LampInfoDTO> getLampAlarmTotal(LampInfoDTO dto);
     int getAlarmCountByVO(LampVO lampVO);
+    List<LampInfoDTO> getMapDataByVO(MapDataVO vo);
+    List<LampInfoDTO> getNewMapDataByVO(MapDataVO vo);
     int getOnlineCountByVO(LampVO lampVO);
     List<LampInfoDTO> getLampSectionAlarmCountTop(LampVO vo);
     LampInfoDTO getLampOfLampPoleById(@Param("lampPoleId") Integer lampPoleId, @Param("lampId") Integer lampId);

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

@@ -4,6 +4,7 @@ import com.welampiot.dto.LampInfoLogNewDTO;
 import com.welampiot.dto.LampPoleDTO;
 import com.welampiot.vo.LampPoleCountVO;
 import com.welampiot.vo.LampPoleVO;
+import com.welampiot.vo.MapDataVO;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -54,6 +55,7 @@ public interface LampPoleDao {
     List<LampPoleDTO> getNewLampPoleList2(LampPoleVO vo);
     List<LampPoleDTO> getNewLampPoleList3(LampPoleVO vo);
     LampPoleDTO getLampPoleDetails(LampPoleVO vo);
+    List<LampPoleDTO> getMapDataByVO(MapDataVO vo);
     List<LampPoleDTO> getLampPoleDevList(LampPoleVO vo);
     List<LampPoleDTO> getLampPoleAlarmInfoList(LampPoleVO vo);
     List<LampPoleDTO> getLampPoleAlarmListByLampPoleId(@Param("lampPoleId") Integer lampPoleId);

+ 10 - 5
src/main/java/com/welampiot/dto/LampInfoDTO.java

@@ -48,11 +48,11 @@ public class LampInfoDTO {
     private String group;
     private String network;
     private int networkId;
-    private String netStatus;
+    private Integer netStatus;
     private String lampPoleName;
     private String loopNumber;
     private String updateTime;
-    private Integer faultstatus;
+    private Integer faultStatus;
     private Integer mode;
     private String hwVersion;
     private String swVersion;
@@ -64,12 +64,12 @@ public class LampInfoDTO {
     private Integer policyId;
     private Float longitude;
     private Float latitude;
-    private Integer newFaultstatus;
+    private Integer newFaultStatus;
     private String installDate;
     private String expirationDate;
     private String policyName;
     private Integer alarmStatus;
-    private Integer alarmid;
+    private Integer alarmId;
     private String stralarmtype;
     private String dueDate;
     private String controlTypeStr;
@@ -82,7 +82,7 @@ public class LampInfoDTO {
     private Integer loopId;
     private String colourVal;
     private String keyword;
-    private List<?> sectionList;
+    private List<Integer> sectionList;
     private Integer alarmCount;
     private Integer type;
     private Integer alarmType;
@@ -92,6 +92,11 @@ public class LampInfoDTO {
     private Integer page;
     private Integer count;
     private String startDate;
+    private String loopName;
+    private String powerFactor;
+    private String dayConsumption;
+    private String alarmStatusStr;
+    private Integer devType;
     private String endDate;
     private Integer total;
     private List<Object> updateTimeList;

+ 5 - 2
src/main/java/com/welampiot/dto/LampPoleDTO.java

@@ -9,7 +9,6 @@ import java.util.Map;
 public class LampPoleDTO {
     private Integer id;
     private String name;
-    private String alarmTypeStr; // 故障内容
     private String number;
     private String longitude;
     private String latitude;
@@ -41,7 +40,7 @@ public class LampPoleDTO {
     private Integer alarmType;
     private List<?> sectionList;
     private Integer version;
-    private Integer faultstatus;
+    private Integer faultStatus;
     private String alarmStatusStr;
     private String location;
     private String alarmInfo;
@@ -110,6 +109,10 @@ public class LampPoleDTO {
     private String softVersion;
     private String ledStatus;
     private String totalCom;
+    private Integer envmonitorId;
+    private Integer alarmId;
+    private Integer lampStatus;
+    private String devType2;
     private Integer ACI;
     private Integer LED1;
     private Integer LED2;

+ 1 - 0
src/main/java/com/welampiot/dto/NoiseDevInfoDTO.java

@@ -70,6 +70,7 @@ public class NoiseDevInfoDTO implements Serializable {
     private Integer sectionId;
 
     private String devType;
+    private String num;
 
     private List<Integer> sectionList;
 

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

@@ -3,6 +3,7 @@ package com.welampiot.service;
 import com.welampiot.dto.EnvmonitorDTO;
 import com.welampiot.vo.EnvmonitorDetailVO;
 import com.welampiot.vo.EnvmonitorVO;
+import com.welampiot.vo.MapDataVO;
 
 import java.util.List;
 
@@ -64,4 +65,5 @@ public interface EnvmonitorService {
     EnvmonitorDTO getIlluminanceDetailByVO(EnvmonitorDetailVO vo);
 
     List<EnvmonitorDTO> getIlluminanceListByVO(EnvmonitorVO vo);
+    List<EnvmonitorDTO> getNewMapDataByVO(MapDataVO vo);
 }

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

@@ -7,6 +7,7 @@ import com.welampiot.dto.LampPoleDTO;
 import com.welampiot.vo.LampPoleCountVO;
 import com.welampiot.vo.LampPoleInfoVO;
 import com.welampiot.vo.LampPoleVO;
+import com.welampiot.vo.MapDataVO;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -44,6 +45,7 @@ public interface LampPoleService {
     List<LampPoleDTO> getNewLampPoleList2(LampPoleVO vo);
     List<LampPoleDTO> getNewLampPoleList3(LampPoleVO vo);
     LampPoleDTO getLampPoleDetails(LampPoleVO vo);
+    List<LampPoleDTO> getMapDataByVO(MapDataVO vo);
     List<LampPoleDTO> getLampPoleDevList(LampPoleVO vo);
     List<LampPoleDTO> getLampPoleAlarmInfoList(LampPoleVO vo);
     LampPoleInfoVO getLampPoleDevCount(LampPoleDTO dto);

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

@@ -55,6 +55,8 @@ public interface LampService {
     List<LampInfoDTO> getLampInfoAlarmList(LampInfoDTO dto);
     List<LampInfoDTO> getLampAlarmTotal(LampInfoDTO dto);
     int getAlarmCountByVO(LampVO lampVO);
+    List<LampInfoDTO> getMapDataByVO(MapDataVO vo);
+    List<LampInfoDTO> getNewMapDataByVO(MapDataVO vo);
     int getOnlineCountByVO(LampVO lampVO);
     List<LampInfoDTO> getLampSectionAlarmCountTop(LampVO vo);
     LampInfoDTO getLampOfLampPoleById(Integer lampPoleId, Integer lampId);

+ 6 - 0
src/main/java/com/welampiot/service/impl/EnvmonitorServiceImpl.java

@@ -5,6 +5,7 @@ import com.welampiot.dto.EnvmonitorDTO;
 import com.welampiot.service.EnvmonitorService;
 import com.welampiot.vo.EnvmonitorDetailVO;
 import com.welampiot.vo.EnvmonitorVO;
+import com.welampiot.vo.MapDataVO;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -300,4 +301,9 @@ public class EnvmonitorServiceImpl implements EnvmonitorService {
     public List<EnvmonitorDTO> getIlluminanceListByVO(EnvmonitorVO vo) {
         return envmonitorDao.getIlluminanceListByVO(vo);
     }
+
+    @Override
+    public List<EnvmonitorDTO> getNewMapDataByVO(MapDataVO vo) {
+        return envmonitorDao.getNewMapDataByVO(vo);
+    }
 }

+ 13 - 8
src/main/java/com/welampiot/service/impl/LampPoleServiceImpl.java

@@ -94,15 +94,15 @@ public class LampPoleServiceImpl implements LampPoleService {
                 LampPoleAlarmLogDTO lampPoleAlarmLogDTO = integerLampPoleAlarmLogDTOHashMap.get(l.getId());
                 if (integerStringHashMap.containsKey(lampPoleAlarmLogDTO.getDevType())){
                     String s = integerStringHashMap.get(lampPoleAlarmLogDTO.getDevType());
-                    l.setFaultstatus(0);
+                    l.setFaultStatus(0);
                     l.setAlarmInfo(s+"离线");
                 }else {
-                    l.setFaultstatus(0);
+                    l.setFaultStatus(0);
                     l.setAlarmInfo("");
                 }
 
             }else {
-                l.setFaultstatus(0);
+                l.setFaultStatus(0);
             }
             lampPoleDTOS1.add(l);
         }
@@ -393,15 +393,15 @@ public class LampPoleServiceImpl implements LampPoleService {
         SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
         lampPoleList.forEach(lampDTO -> {
             //设备状态(0 = 设备正常, 1 = 供电异常,2 = 灯闪,4 =灯坏, 8 = LED驱动故障, 16 = 数据同步失败)
-            if (lampDTO.getFaultstatus() != null && lampDTO.getFaultstatus() == 16) {
+            if (lampDTO.getFaultStatus() != null && lampDTO.getFaultStatus() == 16) {
                 lampDTO.setAlarmStatusStr("数据同步失败");
-            } else if (lampDTO.getFaultstatus() != null && lampDTO.getFaultstatus() == 8) {
+            } else if (lampDTO.getFaultStatus() != null && lampDTO.getFaultStatus() == 8) {
                 lampDTO.setAlarmStatusStr("LED驱动故障");
-            } else if (lampDTO.getFaultstatus() != null && lampDTO.getFaultstatus() == 4) {
+            } else if (lampDTO.getFaultStatus() != null && lampDTO.getFaultStatus() == 4) {
                 lampDTO.setAlarmStatusStr("灯坏");
-            } else if (lampDTO.getFaultstatus() != null && lampDTO.getFaultstatus() == 2) {
+            } else if (lampDTO.getFaultStatus() != null && lampDTO.getFaultStatus() == 2) {
                 lampDTO.setAlarmStatusStr("灯闪");
-            } else if (lampDTO.getFaultstatus() != null && lampDTO.getFaultstatus() == 1) {
+            } else if (lampDTO.getFaultStatus() != null && lampDTO.getFaultStatus() == 1) {
                 lampDTO.setAlarmStatusStr("供电异常");
             } else {
                 lampDTO.setAlarmStatusStr("设备正常");
@@ -610,6 +610,11 @@ public class LampPoleServiceImpl implements LampPoleService {
         return countVO;
     }
 
+    @Override
+    public List<LampPoleDTO> getMapDataByVO(MapDataVO vo) {
+        return lampPoleDao.getMapDataByVO(vo);
+    }
+
     @Override
     public Integer getAlarmCountByVO(LampPoleCountVO lampPoleCountVO) {
         return lampPoleDao.getAlarmCountByVO(lampPoleCountVO);

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

@@ -732,6 +732,16 @@ public class LampServiceImpl implements LampService {
         return lampDao.findLampDeviceBySn(address, version);
     }
 
+    @Override
+    public List<LampInfoDTO> getMapDataByVO(MapDataVO vo) {
+        return lampDao.getMapDataByVO(vo);
+    }
+
+    @Override
+    public List<LampInfoDTO> getNewMapDataByVO(MapDataVO vo) {
+        return lampDao.getNewMapDataByVO(vo);
+    }
+
     @Override
     public LampInfoLogNewDTO getComBySectionList(LampVO vo) {
         return lampDao.getComBySectionList(vo);

+ 37 - 0
src/main/java/com/welampiot/utils/ExcelUtil.java

@@ -1,5 +1,8 @@
 package com.welampiot.utils;
 
+import org.apache.poi.hssf.usermodel.HSSFRow;
+import org.apache.poi.hssf.usermodel.HSSFSheet;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.apache.poi.ss.usermodel.CellStyle;
 import org.apache.poi.ss.usermodel.HorizontalAlignment;
 import org.apache.poi.ss.usermodel.VerticalAlignment;
@@ -7,11 +10,16 @@ import org.apache.poi.xssf.usermodel.XSSFCell;
 import org.apache.poi.xssf.usermodel.XSSFRow;
 import org.apache.poi.xssf.usermodel.XSSFSheet;
 import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+import org.springframework.web.multipart.MultipartFile;
 
 import java.io.File;
 import java.io.FileOutputStream;
 import java.io.IOException;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 public class ExcelUtil {
     /**
@@ -64,4 +72,33 @@ public class ExcelUtil {
         }
         return filePath;
     }
+
+    public static List<Map> inExcel(MultipartFile file){
+//        String contentType = file.getContentType();
+//        String fileName = file.getOriginalFilename();
+        List<Map> list = new ArrayList<>();
+        try {
+            //根据路径获取这个操作excel的实例
+            HSSFWorkbook wb = new HSSFWorkbook(file.getInputStream());
+            //根据页面index 获取sheet页
+            HSSFSheet sheet = wb.getSheetAt(0);
+            HSSFRow row = null;
+            //循环sesheet页中数据从第二行开始,第一行是标题
+            for (int i = 1; i < sheet.getPhysicalNumberOfRows(); i++) {
+                //获取每一行数据
+                row = sheet.getRow(i);
+                Map<Integer, String> stringMap = new HashMap<>();
+                System.out.println(row.getRowNum());
+                for (int j = 0; j < row.getRowNum(); j++) {
+                    if (row.getCell(j) == null) continue;
+                    String string = row.getCell(j).toString();
+                    stringMap.put(j,string);
+                }
+                list.add(stringMap);
+            }
+        } catch (Exception e) {
+//            e.printStackTrace();
+        }
+        return list;
+    }
 }

+ 10 - 0
src/main/java/com/welampiot/vo/GroupVO.java

@@ -1,8 +1,12 @@
 package com.welampiot.vo;
 
+import com.welampiot.dto.GroupDTO;
 import lombok.Data;
+import org.apache.poi.ss.formula.functions.T;
+import org.springframework.web.multipart.MultipartFile;
 
 import java.util.List;
+import java.util.Map;
 
 @Data
 public class GroupVO {
@@ -16,7 +20,13 @@ public class GroupVO {
     private List list;
     private Integer total;
     private String lampId;
+    private Integer areaid;
+    private Integer sectionid;
+    private Integer type;
     private Integer patrolInterval;
+    private List msg;
+    private List<Map> groupData;
+    private MultipartFile file;
 
     public static GroupVO getGroupVO(GroupVO vo) {
         if (vo.getVersion() == null) {

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

@@ -0,0 +1,17 @@
+package com.welampiot.vo;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class MapDataVO {
+    private List sectionList;
+    private List type; // 状态选项(0 全部,1 开灯,2 关灯,3 在线,4 离线,5 故障)
+    private String keyword; // 搜索关键字(可搜索路灯编号、灯杆名称、视屏监控名称、环境监控编号,车辆车牌)
+    private String lngLow; // 最小经度
+    private String lngHigh; // 最大经度
+    private String latLow; // 最小纬度
+    private String latHigh; // 最大纬度
+    private Integer version;
+}

+ 46 - 0
src/main/resources/mapper/EnvmonitorMapper.xml

@@ -605,4 +605,50 @@
         </if>
     </select>
 
+    <select id="getNewMapDataByVO" resultType="com.welampiot.dto.EnvmonitorDTO" parameterType="com.welampiot.vo.MapDataVO">
+        select E.id,E.number,E.longitude,E.latitude,EI.temperature,
+        EI.humidity,
+        EI.atmospressue as atmosPressue,
+        EI.PM25,
+        EI.PM10,
+        EI.noise,
+        EI.updatetime as updateTime,
+        EI.illumination
+        from envmonitor E
+        left join network N on E.networkid = N.id
+        left join section S on E.sectionid = S.id
+        left join global_location A on S.pid = A.id
+        left join (select t1.* from envmonitor_info_log t1, (select envmonitorid, max(updatetime) as maxtime from envmonitor_info_log group by envmonitorid) t2 where t1.envmonitorid = t2.envmonitorid and t1.updatetime = t2.maxtime) EI on EI.envmonitorid = E.id
+        where E.lamp_pole_id = 0
+        <if test="sectionList != null and !sectionList.isEmpty()">
+            and E.sectionid in
+            <foreach item="vo" collection="sectionList" open="(" separator="," close=")">
+                #{vo}
+            </foreach>
+        </if>
+        <if test="keyword != null and !keyword.isEmpty()">
+            and E.number like "%#{keyword}%"
+        </if>
+        <choose>
+            <when test="!lngLow.isEmpty() and !lngHigh.isEmpty() and Double.parseDouble(lngLow) > Double.parseDouble(lngHigh)">
+                and ((L.longitude >= #{lngLow} and L.longitude &lt;= 180) or (L.longitude &lt;= #{lngLow} and L.longitude >= -180))
+            </when>
+            <otherwise>
+                <if test="!lngLow.isEmpty()">
+                    and L.longitude >= #{lngLow}
+                </if>
+                <if test="!lngHigh.isEmpty()">
+                    and L.longitude &lt;= #{lngHigh}
+                </if>
+            </otherwise>
+        </choose>
+        <if test="!latLow.isEmpty()">
+            and L.latitude >= #{latLow}
+        </if>
+        <if test="!latHigh.isEmpty()">
+            and L.latitude &lt;= #{latHigh}
+        </if>
+        group by L.id
+    </select>
+
 </mapper>

+ 96 - 7
src/main/resources/mapper/LampMapper.xml

@@ -127,7 +127,7 @@
         N.snr,
         N.protocoltype,
         LI.updatetime as updateTime,
-        L.faultstatus,
+        L.faultstatus as faultStatus,
         L.mode,
         N.hw_version as hwVersion,
         N.sw_version as swVersion,
@@ -138,7 +138,7 @@
         L.policy_type as policyType,
         L.policyid as policyId,
         L.longitude,
-        L.latitude,L.new_faultstatus,L.install_date,L.expiration_date,
+        L.latitude,L.new_faultstatus as newFaultStatus,L.install_date,L.expiration_date,
         P.name as policyName,AI.status as alarmStatus,AI.id as alarmid,AI.stralarmtype,
         CD.dueDate,CD.workingCondition,CD.remainGprs,CD.useGprs,CD.totalGprs,CD.comboName,CD.comboType,CD.id as card_id
         from lampinfo L
@@ -206,7 +206,7 @@
         L.macAddress,L.section_id as loopNumber,G.name as `group`,N.network_name as network,N.rssi,
         L.lamp_pole_id as lampPoleId,LP.name as lampPoleName,L.control_type as controlType,
         L.lighteness,N.status as netStatus,LI.colour_value as colourValue,LI.used_energy_total as usedEnergyTotal,LI.updatetime,LI.work_time_total as workTimeTotal,
-        LI.gridPF,LI.used_energy_tonight as usedEnergyTonight,L.faultstatus,N.snr,N.rssi,AI.id as alarmId,
+        LI.gridPF,LI.used_energy_tonight as usedEnergyTonight,L.faultstatus as faultStatus,N.snr,N.rssi,AI.id as alarmId,
         AI.stralarmtype as alarmInfo,S.timezone,L.status as lampStatas,L.freqId,
         L.ratedpower as power,L.address as imei,N.simid,L.name,N.sw_version as solfVersion,
         N.hw_version as hardVersion,L.install_date,L.expiration_date,L.mode
@@ -244,7 +244,7 @@
         L.macAddress,L.section_id as loopNumber,G.name as `group`,N.network_name as network,N.rssi,
         L.lamp_pole_id as lampPoleId,LP.name as lampPoleName,L.control_type as controlType,
         L.lighteness,N.status as netStatus,LI.colour_value as colourValue,LI.used_energy_total as usedEnergyTotal,LI.updatetime,LI.work_time_total as workTimeTotal,
-        LI.gridPF,LI.used_energy_tonight as usedEnergyTonight,L.faultstatus,N.snr,N.rssi,AI.id as alarmId,
+        LI.gridPF,LI.used_energy_tonight as usedEnergyTonight,L.faultstatus as faultStatus,N.snr,N.rssi,AI.id as alarmId,
         AI.stralarmtype as alarmInfo,S.timezone,L.status as lampStatas,L.freqId,
         L.ratedpower as power,L.address as imei,N.simid,L.name,N.sw_version as solfVersion,
         N.hw_version as hardVersion,L.install_date,L.expiration_date
@@ -375,7 +375,7 @@
         N.snr,
         N.protocoltype,
         LI.updatetime as updateTime,
-        L.faultstatus,
+        L.faultstatus as faultStatus,
         L.mode,
         N.hw_version as hwVersion,
         N.sw_version as swVersion,
@@ -386,7 +386,7 @@
         L.policy_type as policyType,
         L.policyid as policyId,
         L.longitude,
-        L.latitude,L.new_faultstatus
+        L.latitude,L.new_faultstatus as newFaultStatus
         from lampinfo L
         left join section as S on S.id = L.sectionid
         left join global_location as G on G.id = S.pid
@@ -455,7 +455,7 @@
     <select id="getLampInfoListByDTO" resultType="com.welampiot.dto.LampInfoDTO">
         select l.id,l.number,l.status,l.lighteness,n.status as netStatus,l1.grid_active_power as power,l.updatetime as updateTime,
                l1.gridvolt as voltage,l1.gridcurr as current,l1.gridPF,l1.used_energy_tonight as usedEnergyTonight,l1.work_time_total as lightTime,
-               l.faultstatus,l.longitude,l.latitude,l.groupid as groupId,l.loopid as loopId,n.rssi,n.snr,l1.used_energy_total as usedEnergyTotal,
+               l.faultstatus as faultStatus,l.longitude,l.latitude,l.groupid as groupId,l.loopid as loopId,n.rssi,n.snr,l1.used_energy_total as usedEnergyTotal,
                l.control_type as controlType,l.colour_val as colourVal,a.id as alarmId,s.timezone
         from lampinfo l
         left join network n on l.networkid = n.id
@@ -1048,6 +1048,95 @@
             </foreach>
         </if>
     </select>
+    <select id="getMapDataByVO" resultType="com.welampiot.dto.LampInfoDTO" parameterType="com.welampiot.vo.MapDataVO">
+        select L.id,L.number,L.longitude,L.latitude,N.status as netStatus,
+        <choose>
+            <when test="version == 1">
+                A.english_name as area,
+            </when>
+            <when test="version == 2">
+                A.ru_name as area,
+            </when>
+            <otherwise>
+                A.chinese_name as area,
+            </otherwise>
+        </choose>
+        S.name as section,L.status,L.lighteness,LI.gridvolt as voltage,LI.gridcurr as current,LI.day_gener_energy as dayConsumption,LI.work_time_total as lightTime,LI.updatetime as updateTime,L.loopid,LI.grid_active_power as power,N.rssi,N.snr,L.faultstatus as faultStatus,L.new_faultstatus as newFaultStatus,AI.stralarmtype,LO.name as loopName,AI.id as alarmId,L.name,L.install_date as installDate,L.expiration_date as expirationDate
+        from lampinfo L
+        left join network N on L.networkid = N.id
+        left join section S on L.sectionid = S.id
+        left join global_location A on A.id = S.pid
+        left join `loop` LO on LO.id = L.loopid
+        left join policy P on P.id = L.policyid
+        left join lamp_info_log_new LI on L.id = LI.lampid
+        left join (select t1.* from all_alarm_info_log t1, (select lampid, max(updatetime) as maxtime from all_alarm_info_log group by lampid) t2 where t1.lampid = t2.lampid and t1.updatetime = t2.maxtime) AI on L.id = AI.lampid
+        where L.lamp_pole_id = 0
+        <if test="sectionList != null and !sectionList.isEmpty()">
+            and L.sectionid in
+            <foreach item="vo" collection="sectionList" open="(" separator="," close=")">
+                #{vo}
+            </foreach>
+        </if>
+        <if test="keyword != null and !keyword.isEmpty()">
+            and L.number like "%#{keyword}%"
+        </if>
+        <choose>
+            <when test="!lngLow.isEmpty() and !lngHigh.isEmpty() and Double.parseDouble(lngLow) > Double.parseDouble(lngHigh)">
+                and ((L.longitude >= #{lngLow} and L.longitude &lt;= 180) or (L.longitude &lt;= #{lngLow} and L.longitude >= -180))
+            </when>
+            <otherwise>
+                <if test="!lngLow.isEmpty()">
+                    and L.longitude >= #{lngLow}
+                </if>
+                <if test="!lngHigh.isEmpty()">
+                    and L.longitude &lt;= #{lngHigh}
+                </if>
+            </otherwise>
+        </choose>
+        <if test="!latLow.isEmpty()">
+            and L.latitude >= #{latLow}
+        </if>
+        <if test="!latHigh.isEmpty()">
+            and L.latitude &lt;= #{latHigh}
+        </if>
+        group by L.id
+    </select>
+
+    <select id="getNewMapDataByVO" resultType="com.welampiot.dto.LampInfoDTO" parameterType="com.welampiot.vo.MapDataVO">
+        select L.id,L.number,L.longitude,L.latitude,N.status as netStatus,L.status,L.lighteness as light,N.rssi,N.snr,L.faultstatus,L.name
+        from lampinfo L
+        left join network N on L.networkid = N.id
+        where L.lamp_pole_id = 0
+        <if test="sectionList != null and !sectionList.isEmpty()">
+            and L.sectionid in
+            <foreach item="vo" collection="sectionList" open="(" separator="," close=")">
+                #{vo}
+            </foreach>
+        </if>
+        <if test="keyword != null and !keyword.isEmpty()">
+            and L.number like "%#{keyword}%"
+        </if>
+        <choose>
+            <when test="!lngLow.isEmpty() and !lngHigh.isEmpty() and Double.parseDouble(lngLow) > Double.parseDouble(lngHigh)">
+                and ((L.longitude >= #{lngLow} and L.longitude &lt;= 180) or (L.longitude &lt;= #{lngLow} and L.longitude >= -180))
+            </when>
+            <otherwise>
+                <if test="!lngLow.isEmpty()">
+                    and L.longitude >= #{lngLow}
+                </if>
+                <if test="!lngHigh.isEmpty()">
+                    and L.longitude &lt;= #{lngHigh}
+                </if>
+            </otherwise>
+        </choose>
+        <if test="!latLow.isEmpty()">
+            and L.latitude >= #{latLow}
+        </if>
+        <if test="!latHigh.isEmpty()">
+            and L.latitude &lt;= #{latHigh}
+        </if>
+        group by L.id
+    </select>
 
     <!-- 灯控路段故障数前十 -->
     <select id="getLampSectionAlarmCountTop" resultType="LampInfoDTO">

+ 54 - 1
src/main/resources/mapper/LampPoleMapper.xml

@@ -1275,5 +1275,58 @@
         left join lamp_pole lp on l.lamp_pole_id = lp.id
         where lp.id = #{lampPoleId}
     </select>
-    
+
+    <select id="getMapDataByVO" resultType="com.welampiot.dto.LampPoleDTO" parameterType="com.welampiot.vo.MapDataVO">
+        select LP.name,LP.sn,LP.devtype as devType2,LP.id,LP.longitude,LP.latitude,LP.createtime as createTime,LP.height,
+        <choose>
+            <when test="version == 1">
+                A.english_name as area,
+            </when>
+            <when test="version == 2">
+                A.ru_name as area,
+            </when>
+            <otherwise>
+                A.chinese_name as area,
+            </otherwise>
+        </choose>
+        S.name as section,V.id as videoId,L.status,L.lighteness,LP.dir,LP.icon_info as iconInfo,AI.status as alarmStatus,AI.stralarmtype,L.faultstatus as faultStatus,E.id as envmonitorId,N.status as netStatus,AI.id as alarmId,LP.sectionid as sectionId,LP.areaid as areaId,LP.modelType,(select num from screen d where d.lamp_pole_id = LP.id limit 1) as screenNum,LP.install_date as installDate,LP.expiration_date as expirationDate
+        from lamp_pole LP
+        left join section S on LP.sectionid = S.id
+        left join global_location A on A.id = S.pid
+        left join `video_monitor` V on LP.id = V.lamp_pole_id
+        left join envmonitor E on E.lamp_pole_id = LP.id
+        left join lampinfo L on L.lamp_pole_id = LP.id
+        left join network N on L.networkid = N.id
+        left join (select t1.* from all_alarm_info_log t1, (select lampid, max(updatetime) as maxtime from all_alarm_info_log group by lampid) t2 where t1.lampid = t2.lampid and t1.updatetime = t2.maxtime) AI on L.id = AI.lampid
+        where L.lamp_pole_id = 0
+        <if test="sectionList != null and !sectionList.isEmpty()">
+            and LP.sectionid in
+            <foreach item="vo" collection="sectionList" open="(" separator="," close=")">
+                #{vo}
+            </foreach>
+        </if>
+        <if test="keyword != null and !keyword.isEmpty()">
+            and LP.name like "%#{keyword}%"
+        </if>
+        <choose>
+            <when test="!lngLow.isEmpty() and !lngHigh.isEmpty() and Double.parseDouble(lngLow) > Double.parseDouble(lngHigh)">
+                and ((LP.longitude >= #{lngLow} and LP.longitude &lt;= 180) or (LP.longitude &lt;= #{lngLow} and LP.longitude >= -180))
+            </when>
+            <otherwise>
+                <if test="!lngLow.isEmpty()">
+                    and LP.longitude >= #{lngLow}
+                </if>
+                <if test="!lngHigh.isEmpty()">
+                    and LP.longitude &lt;= #{lngHigh}
+                </if>
+            </otherwise>
+        </choose>
+        <if test="!latLow.isEmpty()">
+            and LP.latitude >= #{latLow}
+        </if>
+        <if test="!latHigh.isEmpty()">
+            and LP.latitude &lt;= #{latHigh}
+        </if>
+        group by LP.id
+    </select>
 </mapper>

+ 3 - 1
src/main/resources/mapper/NoiseDevInfoMapper.xml

@@ -108,9 +108,11 @@
         select
             lp.sectionid as sectionId,
             lp.id,
-            lp.devtype as devType
+            lp.devtype as devType,
+            n.address,n.id,w.online,w.model,n.serial_port as serialPort,w.num
         from noise_dev_info n
         left join lamp_pole lp on lp.id = n.lamp_pole_id
+        left join wifi w on lp.id = w.lamp_pole_id
         where n.id = #{id}
     </select>