Browse Source

分组列表,修改编辑删除分组

crazycat 2 năm trước cách đây
mục cha
commit
42e9c66e58

+ 195 - 0
src/main/java/com/welampiot/controller/GroupController.java

@@ -0,0 +1,195 @@
+package com.welampiot.controller;
+
+import com.welampiot.common.BaseResult;
+import com.welampiot.dto.GroupDTO;
+import com.welampiot.service.GroupService;
+import com.welampiot.utils.ToolUtils;
+import com.welampiot.vo.GroupVO;
+import com.welampiot.vo.LampListResponseVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.CrossOrigin;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.*;
+
+@RestController
+@CrossOrigin
+@RequestMapping("/group")
+public class GroupController{
+    @Autowired
+    private GroupService groupService;
+    @Autowired
+    private ToolUtils toolUtils;
+//    @Autowired
+//    private PolicyMapper policyMapper;
+//    @Autowired
+//    private PlcPolicyMapper plcPolicyMapper;
+//    @Autowired
+//    private WeResponse weResponse;
+
+    /**
+     * 分组下拉
+     * @param request
+     * @return
+     */
+    @PostMapping("/nav")
+    private BaseResult nav(HttpServletRequest request){
+        Integer devType = request.getParameter("devType") == null ? 0 : Integer.parseInt(request.getParameter("devType"));
+        Integer version = request.getParameter("version") == null ? 0 : Integer.parseInt(request.getParameter("version"));
+        List sectionList = toolUtils.getSectionList(request);
+        List<GroupDTO> listBySection = groupService.getListBySection(sectionList);
+
+        return toolUtils.response("0000",version,listBySection);
+    }
+
+    /**
+     * 分组列表
+     * @param request
+     * @return
+     */
+    @PostMapping("/getlist")
+    private BaseResult getList(HttpServletRequest request){
+        Integer version = request.getParameter("version") == null ? 0 : Integer.parseInt(request.getParameter("version"));
+        Integer devType = request.getParameter("devType") == null ? null : Integer.parseInt(request.getParameter("devType"));
+        String keyword = request.getParameter("keyword");
+
+        int page = request.getParameter("page") == null ? 0 :Integer.parseInt(request.getParameter("page"));
+        int count = request.getParameter("count") == null ? 16 : Integer.parseInt(request.getParameter("count"));
+
+        Integer limit = count;
+        Integer offset = (page-1)*count;
+        List sectionList = toolUtils.getSectionList(request);
+
+        Integer userId = toolUtils.getUser().getId();
+        Integer role = toolUtils.getUser().getRole();
+
+        GroupVO groupVO = new GroupVO();
+        if (devType != null) groupVO.setDevType(devType);
+        groupVO.setSectionList(sectionList);
+        groupVO.setLimit(limit);
+        groupVO.setOffset(offset);
+        groupVO.setVersion(version);
+        if (keyword != null && keyword.length() > 0) groupVO.setKeyword(keyword);
+        List<GroupDTO> listByVO = groupService.getListByVO(groupVO);
+        Integer countByVO = groupService.getCountByVO(groupVO);
+        GroupVO groupVO1 = new GroupVO();
+        groupVO1.setList(listByVO);
+        groupVO1.setTotal((int)Math.ceil((double)countByVO/count));
+
+        return toolUtils.response("0000",version,groupVO1);
+    }
+
+    /**
+     * 分组详情
+     * @param request
+     * @return
+     */
+    @PostMapping("/details")
+    private BaseResult details(HttpServletRequest request){
+        Integer version = request.getParameter("version") == null ? 0 : Integer.parseInt(request.getParameter("version"));
+        Integer id = request.getParameter("id") == null ? null : Integer.parseInt(request.getParameter("id"));
+        if (id == null) return toolUtils.response("0007",version);
+
+        GroupVO groupVO = new GroupVO();
+        groupVO.setId(id);
+        groupVO.setVersion(version);
+        groupVO.setSectionList(toolUtils.getSectionList(request));
+        GroupDTO detailByVO = groupService.getDetailByVO(groupVO);
+        return toolUtils.response("0000",version,detailByVO);
+    }
+
+    /**
+     * 添加分组
+     * @param request
+     * @return
+     */
+    @PostMapping("/save")
+    private BaseResult save(HttpServletRequest request){
+
+        Integer version = request.getParameter("version") == null ? 0 : Integer.parseInt(request.getParameter("version"));
+        Integer id = request.getParameter("id") == null || request.getParameter("id").length() == 0? 0 : Integer.parseInt(request.getParameter("id"));
+        Integer areaId = request.getParameter("areaId") == null ? 0 : Integer.parseInt(request.getParameter("areaId"));
+        Integer sectionId = request.getParameter("sectionId") == null ? 0 : Integer.parseInt(request.getParameter("sectionId"));
+        Integer devType = request.getParameter("devType") == null || request.getParameter("devType").length() == 0? 0 : Integer.parseInt(request.getParameter("devType"));
+        Integer number = request.getParameter("number") == null ? 0 : Integer.parseInt(request.getParameter("number"));
+        String name = request.getParameter("name") == null ? "" : request.getParameter("name");
+        String lampId = request.getParameter("lampid") == null ? "" : request.getParameter("lampid");
+        int lampCount = lampId.split(",").length;
+        if (id == 0){
+            GroupDTO groupDTO = new GroupDTO();
+            groupDTO.setNumber(number.toString());
+            groupDTO.setName(name);
+            groupDTO.setVersion(version);
+            groupDTO.setLampCount(lampCount);
+            groupDTO.setLampId(lampId);
+            groupDTO.setDevType(devType);
+            groupDTO.setAreaId(areaId);
+            groupDTO.setSectionId(sectionId);
+            BaseResult add = groupService.add(groupDTO);
+            if (add.getCode().equals("0000")){
+                LampListResponseVO lampListResponseVO = new LampListResponseVO();
+                lampListResponseVO.setList(new ArrayList<>());
+                return toolUtils.response("0000",version,lampListResponseVO);
+            }else {
+                return add;
+            }
+        }else {
+            GroupDTO groupDTO = new GroupDTO();
+            groupDTO.setId(id);
+            groupDTO.setNumber(number.toString());
+            groupDTO.setName(name);
+            groupDTO.setVersion(version);
+            groupDTO.setLampCount(lampCount);
+            groupDTO.setLampId(lampId);
+            groupDTO.setDevType(devType);
+            groupDTO.setAreaId(areaId);
+            groupDTO.setSectionId(sectionId);
+            BaseResult update = groupService.update(groupDTO);
+            if (update.getCode().equals("0000")){
+                LampListResponseVO lampListResponseVO = new LampListResponseVO();
+                lampListResponseVO.setList(new ArrayList<>());
+                return toolUtils.response("0000",version,lampListResponseVO);
+            }else {
+                return update;
+            }
+
+        }
+    }
+
+    /**
+     * 删除分组
+     * @param request
+     * @return
+     */
+    @PostMapping("/del")
+    private BaseResult del(HttpServletRequest request){
+        Integer version = request.getParameter("version") == null ? 0 : Integer.parseInt(request.getParameter("version"));
+        Integer groupId = request.getParameter("groupId") == null ? null : Integer.parseInt(request.getParameter("groupId"));
+        if (groupId == 0) toolUtils.response("0007",version);
+        groupService.deleteById(groupId);
+        return toolUtils.response("0000",version);
+    }
+//
+//    /**
+//     * 分组方案
+//     * @param request
+//     * @return
+//     */
+//    @PostMapping("/workInfo")
+//    private String workInfo(HttpServletRequest request){
+//        Integer version = (Integer) this.getRequestContent(request,"version",1);
+//        Integer groupId = (Integer) this.getRequestContent(request,"groupId",1);
+//        if (groupId == 0) return weResponse.response("0007",version);
+//
+//        Group group = groupMapper.selectById(groupId);
+//        Map data = new HashMap<>();
+//        data.put("type",group.getType().toString());
+//        data.put("value",group.getValue().toString());
+//        data.put("maxLight",group.getOfflight());
+//        data.put("minLight",group.getOnlight());
+//        return weResponse.response("0000",version,data);
+//    }
+}

+ 141 - 1
src/main/java/com/welampiot/controller/LampController.java

@@ -2,14 +2,18 @@ package com.welampiot.controller;
 
 import com.welampiot.common.BaseResult;
 import com.welampiot.common.ResultEnum;
+import com.welampiot.dto.GroupDTO;
 import com.welampiot.dto.LampInfoDTO;
 import com.welampiot.dto.NetworkDTO;
+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 org.apache.commons.lang3.ArrayUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.CrossOrigin;
@@ -19,6 +23,7 @@ import org.springframework.web.bind.annotation.RestController;
 
 import javax.servlet.http.HttpServletRequest;
 import java.text.SimpleDateFormat;
+import java.util.ArrayList;
 import java.util.Calendar;
 import java.util.Date;
 import java.util.List;
@@ -33,7 +38,8 @@ public class LampController {
     private ToolUtils toolUtils;
     @Autowired
     private NetworkService networkService;
-
+    @Autowired
+    private GroupService groupService;
     /**
      * 灯控列表
      * @param request
@@ -204,4 +210,138 @@ public class LampController {
         }
         return toolUtils.response("0000",version);
     }
+
+    /**
+     * 灯控调光
+     * @param request
+     * @return
+     */
+    @RequestMapping(value = "/dimming",method = RequestMethod.POST)
+    public BaseResult dimming(HttpServletRequest request){
+        Integer version = request.getParameter("version") == null ? 0 : Integer.parseInt(request.getParameter("version"));
+        Integer light = request.getParameter("light") == null ? 0 : Integer.parseInt(request.getParameter("light"));
+        Integer id = request.getParameter("id") == null ? 0 : Integer.parseInt(request.getParameter("id"));
+        LampInfoDTO lamp = lampService.getDetailsById(id, version);
+        if (lamp.getProtocolType() == 10){ // 4G
+            String sendTopic = "/Lamp/TransIn/"+lamp.getSn();
+            String backTopic = "/Lamp/TransOut/"+lamp.getSn();
+
+            if (lamp.getMode() == 1){  // B 路
+
+            }else {  // A 路
+
+            }
+        }
+//        String lampId = request.getParameter("lampId");
+//        if (lampId == null || lampId.length() == 0) return toolUtils.response("0007",version);
+//        String[] split = lampId.split(",");
+//        for (String id :split) {
+//            int l = Integer.parseInt(id);
+//            lampService.deleteById(l);
+//        }
+        return toolUtils.response("0000",version);
+    }
+
+
+    /**
+     * 新建分组选择灯控
+     * @param request
+     * @return
+     */
+    @RequestMapping(value = "/selectLamp",method = RequestMethod.POST)
+    public BaseResult selectLamp(HttpServletRequest request){
+        String version = request.getParameter("version") == null ? "0" : request.getParameter("version");
+        String type = request.getParameter("type") == null ? "0" : request.getParameter("type");
+        String groupid = request.getParameter("groupid") == null || request.getParameter("groupid").length() == 0? "0" : request.getParameter("groupid");
+        System.out.println(toolUtils);
+        List sectionList = toolUtils.getSectionList(request);
+        GroupVO groupVO = new GroupVO();
+        groupVO.setVersion(Integer.valueOf(version));
+        groupVO.setId(Integer.valueOf(groupid));
+        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(",");
+        }
+        LampListResponseVO lampListResponseVO = new LampListResponseVO();
+        lampListResponseVO.setVersion(Integer.valueOf(version));
+        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) {
+            if (lampArr != null && ArrayUtils.contains(lampArr,lamp.getId().toString())){
+                lamp.setSelect(1);
+            }else {
+                if (type.equals("1")) continue;
+                lamp.setSelect(0);
+            }
+            if (lamp.getLighteness() == 0){
+                lamp.setLampStatusStr("关");
+            }else {
+                lamp.setLampStatusStr("开");
+            }
+            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("0000",Integer.parseInt(version),lampListResponseVO1);
+    }
 }

+ 18 - 0
src/main/java/com/welampiot/dao/GroupDao.java

@@ -0,0 +1,18 @@
+package com.welampiot.dao;
+
+import com.welampiot.dto.GroupDTO;
+import com.welampiot.vo.GroupVO;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+public interface GroupDao {
+    List<GroupDTO> getListBySection(@Param("sectionList")List sectionList);
+    List<GroupDTO> getListByVO(GroupVO groupVO);
+    Integer getCountByVO(GroupVO groupVO);
+    GroupDTO getDetailByVO(GroupVO groupVO);
+    Integer add(GroupDTO groupDTO);
+    Integer update(GroupDTO groupDTO);
+    Integer checkData(GroupDTO groupDTO);
+    Integer deleteById(@Param("id")Integer id);
+}

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

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

+ 30 - 0
src/main/java/com/welampiot/dto/GroupDTO.java

@@ -0,0 +1,30 @@
+package com.welampiot.dto;
+
+import lombok.Data;
+
+@Data
+public class GroupDTO {
+    private Integer id;
+    private String name;
+    private String number;
+    private String lampId;
+    private String area;
+    private int areaId;
+    private String section;
+    private int sectionId;
+    private int lampCount;
+    private String policy;
+    private Integer type;
+    private Integer value;
+    private String onLight;
+    private String offLight;
+    private String illumination;
+    private String work;
+    private int devType;
+    private String createTime;
+    private String updateTime;
+    private Integer version;
+//    private String illumination;
+//    private String illumination;
+//    private String illumination;
+}

+ 4 - 2
src/main/java/com/welampiot/dto/LampInfoDTO.java

@@ -12,7 +12,7 @@ public class LampInfoDTO {
     private String section;
     private Integer sectionId;
     private Integer timezone;
-    private String lighteness;
+    private int lighteness;
     private String name;
     private String voltage;
     private String current;
@@ -23,7 +23,8 @@ public class LampInfoDTO {
     private Integer ledLuxValue;
     private Float leakageCur;
     private String networkStatus;
-    private String lampStatus;
+    private int lampStatus;
+    private String lampStatusStr;
     private String lampOnline;
     private Integer rssi;
     private Integer snr;
@@ -60,4 +61,5 @@ public class LampInfoDTO {
     private String createTime;
     private int ratedPower;
     private int version;
+    private int select;
 }

+ 20 - 0
src/main/java/com/welampiot/service/GroupService.java

@@ -0,0 +1,20 @@
+package com.welampiot.service;
+
+import com.welampiot.common.BaseResult;
+import com.welampiot.dto.GroupDTO;
+import com.welampiot.vo.GroupVO;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+public interface GroupService {
+    List<GroupDTO> getListBySection(@Param("sectionList")List sectionList);
+    List<GroupDTO> getListByVO(GroupVO groupVO);
+    Integer getCountByVO(GroupVO groupVO);
+    GroupDTO getDetailByVO(GroupVO groupVO);
+
+    BaseResult add(GroupDTO groupDTO);
+    BaseResult update(GroupDTO groupDTO);
+    Integer checkData(GroupDTO groupDTO);
+    Integer deleteById(@Param("id")Integer id);
+}

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

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

+ 162 - 0
src/main/java/com/welampiot/service/impl/GroupServiceImpl.java

@@ -0,0 +1,162 @@
+package com.welampiot.service.impl;
+
+import com.welampiot.common.BaseResult;
+import com.welampiot.dao.GroupDao;
+import com.welampiot.dto.GroupDTO;
+import com.welampiot.service.GroupService;
+import com.welampiot.utils.ToolUtils;
+import com.welampiot.vo.GroupVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+@Service
+public class GroupServiceImpl implements GroupService {
+    @Autowired
+    private GroupDao groupDao;
+    @Autowired
+    private ToolUtils toolUtils;
+    @Override
+    public List<GroupDTO> getListBySection(List sectionList) {
+        return groupDao.getListBySection(sectionList);
+    }
+
+    @Override
+    public List<GroupDTO> getListByVO(GroupVO groupVO) {
+        List<GroupDTO> listByVO = groupDao.getListByVO(groupVO);
+        List<GroupDTO> list = new ArrayList<>();
+        for (GroupDTO g :listByVO) {
+            String policy;
+            if (g.getType() == 0){
+                if (groupVO.getVersion() == 0){
+                    policy = "亮度:"+g.getValue()+"%";
+                } else if (groupVO.getVersion() == 1) {
+                    policy = "lightness:"+g.getValue()+"%";
+                }else {
+                    policy = "Яркость:"+g.getValue()+"%";
+                }
+            }else if (g.getType() == 1){
+                if (groupVO.getVersion() == 0){
+                    policy = "未知策略";
+                } else if (groupVO.getVersion() == 1) {
+                    policy = "Unknown Policy";
+                }else {
+                    policy = "Неизвестная стратегия";
+                }
+                policy = g.getPolicy() == null || g.getPolicy().length() == 0 ? policy : g.getPolicy();
+            }else {
+                if (groupVO.getVersion() == 0){
+                    policy = "自适应";
+                } else if (groupVO.getVersion() == 1) {
+                    policy = "self-adaption";
+                }else {
+                    policy = "адаптация";
+                }
+            }
+            g.setPolicy(policy);
+            list.add(g);
+        }
+        return list;
+    }
+
+    @Override
+    public Integer getCountByVO(GroupVO groupVO) {
+        Integer countByVO = groupDao.getCountByVO(groupVO);
+        return countByVO == null ? 0 : countByVO;
+    }
+
+    @Override
+    public GroupDTO getDetailByVO(GroupVO groupVO) {
+        GroupDTO detailByVO = groupDao.getDetailByVO(groupVO);
+        if (detailByVO == null) return null;
+        String policy;
+        if (detailByVO.getType() == 0){
+            if (groupVO.getVersion() == 0){
+                policy = "亮度:"+detailByVO.getValue()+"%";
+            } else if (groupVO.getVersion() == 1) {
+                policy = "lightness:"+detailByVO.getValue()+"%";
+            }else {
+                policy = "Яркость:"+detailByVO.getValue()+"%";
+            }
+        }else if (detailByVO.getType() == 1){
+            if (groupVO.getVersion() == 0){
+                policy = "未知策略";
+            } else if (groupVO.getVersion() == 1) {
+                policy = "Unknown Policy";
+            }else {
+                policy = "Неизвестная стратегия";
+            }
+            policy = detailByVO.getPolicy() == null || detailByVO.getPolicy().length() == 0 ? policy : detailByVO.getPolicy();
+        }else {
+            if (groupVO.getVersion() == 0){
+                policy = "自适应";
+            } else if (groupVO.getVersion() == 1) {
+                policy = "self-adaption";
+            }else {
+                policy = "адаптация";
+            }
+        }
+        detailByVO.setWork(policy);
+        return detailByVO;
+    }
+
+    @Override
+    public BaseResult add(GroupDTO groupDTO) {
+        GroupDTO groupDTO1 = new GroupDTO();
+        groupDTO1.setNumber(groupDTO.getNumber());
+        groupDTO1.setSectionId(groupDTO.getSectionId());
+        if (this.checkData(groupDTO1) > 0) return toolUtils.response("0211",groupDTO.getVersion());
+        groupDTO1 = new GroupDTO();
+        groupDTO1.setName(groupDTO.getName());
+        groupDTO1.setSectionId(groupDTO.getSectionId());
+        if (this.checkData(groupDTO1) > 0) return toolUtils.response("0210",groupDTO.getVersion());
+
+        Date endDate = new Date(System.currentTimeMillis());
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        String createTime = simpleDateFormat.format(endDate).toString();
+        groupDTO.setCreateTime(createTime);
+        groupDTO.setUpdateTime(createTime);
+
+        groupDao.add(groupDTO);
+
+        return toolUtils.response("0000",groupDTO.getVersion());
+    }
+
+    @Override
+    public BaseResult update(GroupDTO groupDTO) {
+        GroupDTO groupDTO1 = new GroupDTO();
+        groupDTO1.setId(groupDTO.getId());
+        groupDTO1.setNumber(groupDTO.getNumber());
+        groupDTO1.setSectionId(groupDTO.getSectionId());
+        if (this.checkData(groupDTO1) > 0) return toolUtils.response("0211",groupDTO.getVersion());
+        groupDTO1 = new GroupDTO();
+        groupDTO1.setId(groupDTO.getId());
+        groupDTO1.setName(groupDTO.getName());
+        groupDTO1.setSectionId(groupDTO.getSectionId());
+        if (this.checkData(groupDTO1) > 0) return toolUtils.response("0210",groupDTO.getVersion());
+        Date endDate = new Date(System.currentTimeMillis());
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        String createTime = simpleDateFormat.format(endDate).toString();
+        groupDTO.setUpdateTime(createTime);
+
+        groupDao.update(groupDTO);
+
+        return toolUtils.response("0000",groupDTO.getVersion());
+    }
+
+    @Override
+    public Integer checkData(GroupDTO groupDTO) {
+        Integer integer = groupDao.checkData(groupDTO);
+        System.out.println(integer);
+        return integer == null ? 0 : integer;
+    }
+
+    @Override
+    public Integer deleteById(Integer id) {
+        return groupDao.deleteById(id);
+    }
+}

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

@@ -0,0 +1,18 @@
+package com.welampiot.vo;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class GroupVO {
+    private Integer id;
+    private List sectionList;
+    private Integer devType;
+    private String keyword;
+    private Integer limit;
+    private Integer offset;
+    private Integer version;
+    private List list;
+    private Integer total;
+}

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

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

+ 4 - 0
src/main/resources/config/response.yml

@@ -11,6 +11,10 @@ response:
           '0207': '灯控设备地址重复',
           '0208': '请选择区域',
           '0209': '请选择路段',
+          '0210': '分组名称已存在',
+          '0211': '分组编号已存在',
+          '0212': '请填写分组编号',
+          '0213': '请填写分组名称',
   }
   msgEN: { '0000': 'Operation successful',
            '0001': 'Parameter abnormality' }

+ 139 - 0
src/main/resources/mapper/GroupMapper.xml

@@ -0,0 +1,139 @@
+<?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.GroupDao">
+    <select id="getListBySection" parameterType="java.util.List" resultType="com.welampiot.dto.GroupDTO">
+        select id,name from `group`
+        <if test="sectionList != null and !sectionList.isEmpty()">
+            where sectionid in
+            <foreach item="vo" collection="sectionList" open="(" separator="," close=")">
+                #{vo}
+            </foreach>
+        </if>
+    </select>
+    <select id="getListByVO" parameterType="com.welampiot.vo.GroupVO" resultType="com.welampiot.dto.GroupDTO">
+        select g.id,g.name,g.number,g.sectionid as sectionId,g.areaid as areaId,g.type,g.value,g.lampid as lampId,
+        (select count(id) from lampinfo where find_in_set(id,g.lampid)) as lampCount,g.onLight,g.offLight,g.day_or_night,g.patrolinterval as patrolInterval,g.devType,s.name as section,p.name as policy,
+        <choose>
+            <when test="version == 1">
+                gl.english_name as area
+            </when>
+            <when test="version == 2">
+                gl.ru_name as area
+            </when>
+            <otherwise>
+                gl.chinese_name as area
+            </otherwise>
+        </choose>
+        from `group` as g
+        left join section s on g.sectionid = s.id
+        left join global_location gl on gl.id = s.pid
+        left join policy p on g.value = p.id
+        where 1=1
+        <if test="sectionList != null and !sectionList.isEmpty()">
+            and g.sectionid in
+            <foreach item="vo" collection="sectionList" open="(" separator="," close=")">
+                #{vo}
+            </foreach>
+        </if>
+        <if test="devType != null">
+            and g.devType = #{devType}
+        </if>
+        <if test="keyword != null">
+            and g.name like '%#{keyword}%'
+        </if>
+        order by g.name asc
+        <if test="offset != null and limit != null">
+            limit #{offset},#{limit}
+        </if>
+    </select>
+    <select id="getCountByVO" parameterType="com.welampiot.dto.GroupDTO" resultType="Integer">
+        select count(*)
+        from `group` as g
+        where 1=1
+        <if test="sectionList != null and !sectionList.isEmpty()">
+            and g.sectionid in
+            <foreach item="vo" collection="sectionList" open="(" separator="," close=")">
+                #{vo}
+            </foreach>
+        </if>
+        <if test="devType != null">
+            and g.devType = #{devType}
+        </if>
+        <if test="keyword != null">
+            and g.name like '%#{keyword}%'
+        </if>
+    </select>
+
+    <select id="getDetailByVO" parameterType="com.welampiot.vo.GroupVO" resultType="com.welampiot.dto.GroupDTO">
+        select
+        g.name,g.number,g.id,g.areaid as areaId,g.sectionid as sectionId,(select count(id) from lampinfo where find_in_set(id,g.lampid)) as lampCount,g.type,g.value,s.name as section,g.lampid as lampId,
+        <choose>
+            <when test="version == 1">
+                gl.english_name as area
+            </when>
+            <when test="version == 2">
+                gl.ru_name as area
+            </when>
+            <otherwise>
+                gl.chinese_name as area
+            </otherwise>
+        </choose>
+        from `group` as g
+        left join section s on g.sectionid = s.id
+        left join global_location gl on gl.id = s.pid
+        where g.id=#{id}
+        <if test="sectionList != null and !sectionList.isEmpty()">
+            and g.sectionid in
+            <foreach item="vo" collection="sectionList" open="(" separator="," close=")">
+                #{vo}
+            </foreach>
+        </if>
+        limit 1
+    </select>
+
+    <insert id="add" parameterType="com.welampiot.dto.GroupDTO" useGeneratedKeys="true" keyProperty="id"
+    >
+        insert into `group` (name,number,lampid,areaid,sectionid,lampcount,createtime,devType,updatetime
+        )
+        values
+        (#{name},#{number},#{lampId},#{areaId},#{sectionId},#{lampCount},#{createTime},#{devType},#{updateTime}
+
+        )
+    </insert>
+
+    <select id="checkData" resultType="Integer" parameterType="com.welampiot.dto.GroupDTO">
+        select count(id) from `group`
+        where 1=1
+        <if test="sectionId != null">
+            and sectionid = #{sectionId}
+        </if>
+        <if test="name != null">
+            and name = #{name}
+        </if>
+        <if test="number != null">
+            and number = #{number}
+        </if>
+        <if test="id != null">
+            and id != #{id}
+        </if>
+    </select>
+
+    <update id="update" parameterType="com.welampiot.dto.GroupDTO" useGeneratedKeys="true" keyProperty="id"
+    >
+        update `group` set
+        name = #{name},
+        number = #{number},
+        lampid = #{lampId},
+        areaid = #{areaId},
+        sectionid = #{sectionId},
+        lampcount = #{lampCount},
+        devType = #{devType},
+        updatetime = #{updateTime}
+
+        where id = #{id}
+    </update>
+
+    <delete id="deleteById">
+        delete from `group` where id=#{id};
+    </delete>
+</mapper>

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

@@ -334,6 +334,69 @@
         where id = #{id}
     </update>
 
+    <select id="groupSelectLamp" resultType="com.welampiot.dto.LampInfoDTO" parameterType="com.welampiot.vo.LampListResponseVO">
+        select
+        L.number,
+        L.id,
+        L.address as sn,
+        <choose>
+            <when test="version == 1">
+                G.english_name as area,
+            </when>
+            <when test="version == 2">
+                G.ru_name as area,
+            </when>
+            <otherwise>
+                G.chinese_name as area,
+            </otherwise>
+        </choose>
+        S.name as section,
+        S.timezone,
+        L.lighteness,
+        L.name,
+        LI.gridvolt as voltage,
+        LI.gridcurr as current,
+        LI.grid_active_power as power,
+        LI.work_time_total as lightTime,
+        LI.used_energy_total as totalEnergy,
+        LI.devicetime as cmdTime,
+        LI.led_lux_value,LI.leakage_cur,
+        N.status as networkStatus,
+        L.status as lampStatus,
+        L.online as lampOnline,
+        N.rssi,
+        N.snr,
+        N.protocoltype,
+        LI.updatetime as updateTime,
+        L.faultstatus,
+        L.mode,
+        N.hw_version as hwVersion,
+        N.sw_version as swVersion,
+        L.control_type as controlType,
+        L.macAddress,
+        L.dev_addr as devAddr,
+        L.bindStatus,
+        L.policy_type as policyType,
+        L.policyid,
+        L.longitude,
+        L.latitude,L.new_faultstatus
+        from lampinfo L
+        left join section as S on S.id = L.sectionid
+        left join global_location as G on G.id = S.pid
+        left join lamp_info_log_new as LI on LI.lampid = L.id
+        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="lampIds != null">
+            and L.id in (#{lampIds})
+        </if>
+    </select>
+
     <delete id="deleteById">
         delete from lampinfo where id=#{id};
     </delete>