Browse Source

获取sql语句写入在日志中,新添加灯接口已经完成

weclouds 1 year ago
parent
commit
02978f0926
27 changed files with 801 additions and 170 deletions
  1. 10 4
      src/main/java/com/welampiot/common/InterfaceResultEnum.java
  2. 136 0
      src/main/java/com/welampiot/configuration/LastSqlInterceptor.java
  3. 301 131
      src/main/java/com/welampiot/controller/LampController.java
  4. 1 1
      src/main/java/com/welampiot/controller/LampPoleController.java
  5. 1 0
      src/main/java/com/welampiot/dao/GroupDao.java
  6. 11 0
      src/main/java/com/welampiot/dao/IpInfoDao.java
  7. 2 0
      src/main/java/com/welampiot/dao/LampDao.java
  8. 1 0
      src/main/java/com/welampiot/dao/LampPoleDao.java
  9. 11 0
      src/main/java/com/welampiot/dto/IpInfoDTO.java
  10. 2 0
      src/main/java/com/welampiot/service/GroupService.java
  11. 11 0
      src/main/java/com/welampiot/service/IpInfoService.java
  12. 1 0
      src/main/java/com/welampiot/service/LampPoleService.java
  13. 2 0
      src/main/java/com/welampiot/service/LampService.java
  14. 5 0
      src/main/java/com/welampiot/service/impl/GroupServiceImpl.java
  15. 27 0
      src/main/java/com/welampiot/service/impl/IpInfoServiceImpl.java
  16. 4 0
      src/main/java/com/welampiot/service/impl/LampPoleServiceImpl.java
  17. 8 0
      src/main/java/com/welampiot/service/impl/LampServiceImpl.java
  18. 1 1
      src/main/java/com/welampiot/utils/JwtUtil.java
  19. 120 6
      src/main/java/com/welampiot/utils/ToolUtils.java
  20. 1 1
      src/main/java/com/welampiot/vo/LampPoleVO.java
  21. 12 0
      src/main/resources/mapper/GroupMapper.xml
  22. 28 0
      src/main/resources/mapper/IpInfoMapper.xml
  23. 54 7
      src/main/resources/mapper/LampMapper.xml
  24. 20 1
      src/main/resources/mapper/LampPoleMapper.xml
  25. 21 5
      src/main/resources/mapper/NetworkMapper.xml
  26. 0 1
      src/main/resources/mapper/OperationLogMapper.xml
  27. 10 12
      src/test/java/com/welampiot/service/UserServiceTest.java

+ 10 - 4
src/main/java/com/welampiot/common/InterfaceResultEnum.java

@@ -218,15 +218,21 @@ public enum InterfaceResultEnum {
     CREATE_LIGHT_ERROR("0404","创建灯控失败","Failed to create light control","Ошибка создания управления светом"),
     CREATE_LIGHT_ERROR("0404","创建灯控失败","Failed to create light control","Ошибка создания управления светом"),
     CREATE_CONTROL_ERROR("0405","添加灯控制器失败","Adding light controller failed","Ошибка добавления контроллера освещения"),
     CREATE_CONTROL_ERROR("0405","添加灯控制器失败","Adding light controller failed","Ошибка добавления контроллера освещения"),
     CREATE_CONTROL_LIGHT_ERROR("0406","添加灯具失败","Adding lamps failed","Ошибка добавления фонаря "),
     CREATE_CONTROL_LIGHT_ERROR("0406","添加灯具失败","Adding lamps failed","Ошибка добавления фонаря "),
-    DEVICE_ADDRESS_EXITS_ERROR("0406","设备地址已存在","Device address already exists","Адрес устройства уже существует."),
-
+    DEVICE_ADDRESS_EXITS_ERROR("0407","设备地址已存在","Device address already exists","Адрес устройства уже существует."),
+    POWER_SELECT_ERROR("0408","请填写正确地功率","Please fill in the correct power","Заполните, пожалуйста, правильную мощность"),
 
 
     //plc设备  0500-0599
     //plc设备  0500-0599
     PLC_SERIAL_NUMBER_EXIST_ERROR("0500","灯的序号重复","The serial number of the lamp is repeated","серийный номер лампы"),
     PLC_SERIAL_NUMBER_EXIST_ERROR("0500","灯的序号重复","The serial number of the lamp is repeated","серийный номер лампы"),
     PLC_ADDRESS_EXIST_ERROR("0501","灯的地址重复","The address of the lamp is repeated","повторение адреса лампы"),
     PLC_ADDRESS_EXIST_ERROR("0501","灯的地址重复","The address of the lamp is repeated","повторение адреса лампы"),
-    LACK_PLC_ADDRESS__ERROR("0501","请先添加网关","Please add gateway first","Сначала добавьте шлюз"),
-    LACK_PLC_MACADDRESS__ERROR("0502","请添加灯地址","Please add a light address","Пожалуйста, добавьте адрес лампы."),
+    LACK_PLC_ADDRESS__ERROR("0502","请先添加网关","Please add gateway first","Сначала добавьте шлюз"),
+    LACK_PLC_MACADDRESS__ERROR("0503","请添加灯地址","Please add a light address","Пожалуйста, добавьте адрес лампы."),
+    FILL_LAMP_ADDRESS__ERROR("0504","请填写正确的灯地址","Please fill in the correct lamp address","Укажите правильный адрес лампы"),
+    PLC_SERIAL_NUMBER_SAME__ERROR("0505","设置双灯时,灯序号要一致","When setting up dual lights, the light numbers should be consistent","При установке двойного света номера ламп должны совпадать."),
+
+
 
 
+    //分组 0600-0699 分组名称必须在1-255数字范围内
+    GROUP_NUMBER_RAND_ERROR("0600","分组名称必须在1-255数字范围内","The group name must be in the range of 1-255 digits","Имя группы должно быть в диапазоне от 1 до 255")
     ;
     ;
     private String code;
     private String code;
     private String msgCn;
     private String msgCn;

+ 136 - 0
src/main/java/com/welampiot/configuration/LastSqlInterceptor.java

@@ -0,0 +1,136 @@
+package com.welampiot.configuration;
+
+
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.ibatis.executor.statement.StatementHandler;
+import org.apache.ibatis.mapping.BoundSql;
+import org.apache.ibatis.mapping.MappedStatement;
+import org.apache.ibatis.mapping.ParameterMapping;
+import org.apache.ibatis.plugin.*;
+import org.apache.ibatis.reflection.MetaObject;
+import org.apache.ibatis.reflection.SystemMetaObject;
+import org.apache.ibatis.session.Configuration;
+import org.apache.ibatis.session.ResultHandler;
+import org.apache.ibatis.type.TypeHandlerRegistry;
+import org.springframework.stereotype.Component;
+
+import java.sql.Statement;
+import java.text.DateFormat;
+import java.util.Date;
+import java.util.List;
+import java.util.Locale;
+import java.util.Properties;
+import java.util.regex.Matcher;
+
+
+@Intercepts({
+        @Signature(type = StatementHandler.class, method = "query", args = {Statement.class, ResultHandler.class}),
+        @Signature(type = StatementHandler.class, method = "update", args = {Statement.class}),
+        @Signature(type = StatementHandler.class, method = "batch", args = {Statement.class})
+})
+@Component
+public class LastSqlInterceptor implements Interceptor {
+    public String sqlContent;
+
+    //获取sql语句
+    @Override
+    public Object intercept(Invocation invocation) throws Throwable {
+        // 耗时开始时间
+        long startTime = System.currentTimeMillis();
+        // 获取 StatementHandler ,默认是 RoutingStatementHandler
+        StatementHandler statementHandler = (StatementHandler) invocation.getTarget();
+        // 获取 StatementHandler 包装类
+        MetaObject metaObjectHandler = SystemMetaObject.forObject(statementHandler);
+        // 获取查询接口映射的相关信息
+        MappedStatement mappedStatement = (MappedStatement) metaObjectHandler.getValue("delegate.mappedStatement");
+        // 获取请求时的参数
+        Object parameterObject = statementHandler.getParameterHandler().getParameterObject();
+        // 获取sql
+        String sql = showSql(mappedStatement.getConfiguration(),  mappedStatement.getBoundSql(parameterObject));
+        // 获取执行sql方法
+        String sqlId = mappedStatement.getId();
+        // 执行sql
+        Object result = invocation.proceed();
+        // 计算总耗时
+        long cost = System.currentTimeMillis() - startTime;
+        System.out.println(" ======> SQL方法 : {} , 总耗时 : {}毫秒,  SQL语句 : {} "+ sqlId+"----"+cost+"----"+sql);
+        this.sqlContent = sql;
+        return result;
+    }
+
+
+    /**
+     * 拦截器对应的封装原始对象的方法,获取代理对象
+     */
+    @Override
+    public Object plugin(Object target) {
+        return (target instanceof StatementHandler) ? Plugin.wrap(target, this) : target;
+    }
+
+
+    /**
+     * 设置注册拦截器时设定的属性,设置代理对象的参数
+     */
+    @Override
+    public void setProperties(Properties properties) {
+    }
+
+
+    private static String showSql(Configuration configuration, BoundSql boundSql) {
+        // 获取参数
+        Object parameterObject = boundSql.getParameterObject();
+        List<ParameterMapping> parameterMappings = boundSql.getParameterMappings();
+        // sql语句中多个空格都用一个空格代替
+        String sql = boundSql.getSql().replaceAll("[\\s]+", " ");
+        if (CollectionUtils.isNotEmpty(parameterMappings) && parameterObject != null) {
+            // 获取类型处理器注册器,类型处理器的功能是进行java类型和数据库类型的转换
+            TypeHandlerRegistry typeHandlerRegistry = configuration.getTypeHandlerRegistry();
+            // 如果根据parameterObject.getClass()可以找到对应的类型,则替换
+            if (typeHandlerRegistry.hasTypeHandler(parameterObject.getClass())) {
+                sql = sql.replaceFirst("\\?", Matcher.quoteReplacement(getParameterValue(parameterObject)));
+            } else {
+                // MetaObject主要是封装了originalObject对象,提供了get和set的方法用于获取和设置originalObject的属性值,主要支持对JavaBean、Collection、Map三种类型对象的操作
+                MetaObject metaObject = configuration.newMetaObject(parameterObject);
+                for (ParameterMapping parameterMapping : parameterMappings) {
+                    String propertyName = parameterMapping.getProperty();
+                    if (metaObject.hasGetter(propertyName)) {
+                        Object obj = metaObject.getValue(propertyName);
+                        sql = sql.replaceFirst("\\?", Matcher.quoteReplacement(getParameterValue(obj)));
+                    } else if (boundSql.hasAdditionalParameter(propertyName)) {
+                        // 该分支是动态sql
+                        Object obj = boundSql.getAdditionalParameter(propertyName);
+                        sql = sql.replaceFirst("\\?", Matcher.quoteReplacement(getParameterValue(obj)));
+                    } else {
+                        // 打印出缺失,提醒该参数缺失并防止错位
+                        sql = sql.replaceFirst("\\?", "缺失");
+                    }
+                }
+            }
+        }
+
+        return sql;
+    }
+
+
+    private static String getParameterValue(Object obj) {
+        String value;
+
+        if (obj instanceof String) {
+            value = "'" + obj.toString() + "'";
+        }
+        else if (obj instanceof Date) {
+            DateFormat formatter = DateFormat.getDateTimeInstance(DateFormat.DEFAULT, DateFormat.DEFAULT, Locale.CHINA);
+            value = "'" + formatter.format(new Date()) + "'";
+        }
+        else {
+            if (obj != null) {
+                value = obj.toString();
+            } else {
+                value = "";
+            }
+        }
+
+        return value;
+    }
+
+}

+ 301 - 131
src/main/java/com/welampiot/controller/LampController.java

@@ -7,10 +7,7 @@ import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.welampiot.common.BaseResult;
 import com.welampiot.common.BaseResult;
 import com.welampiot.common.InterfaceResultEnum;
 import com.welampiot.common.InterfaceResultEnum;
-import com.welampiot.configuration.FreqConfig;
-import com.welampiot.configuration.FreqMapConfig;
-import com.welampiot.configuration.QuHuiPlc;
-import com.welampiot.configuration.ZhongLightPlc;
+import com.welampiot.configuration.*;
 import com.welampiot.dto.*;
 import com.welampiot.dto.*;
 import com.welampiot.service.*;
 import com.welampiot.service.*;
 import com.welampiot.utils.AESUtils;
 import com.welampiot.utils.AESUtils;
@@ -47,6 +44,7 @@ import java.text.DecimalFormat;
 import java.text.ParseException;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.text.SimpleDateFormat;
 import java.util.*;
 import java.util.*;
+import java.util.stream.Collectors;
 
 
 @RestController
 @RestController
 @CrossOrigin
 @CrossOrigin
@@ -84,6 +82,8 @@ public class LampController {
     private FreqMapConfig freqMapConfig;
     private FreqMapConfig freqMapConfig;
     @Autowired
     @Autowired
     private JwtUtil jwtUtil;
     private JwtUtil jwtUtil;
+    @Autowired
+    private LastSqlInterceptor lastSqlInterceptor; //获取sql语句
     /**
     /**
      * 灯控列表
      * 灯控列表
      * @param request
      * @param request
@@ -151,12 +151,11 @@ public class LampController {
         LampInfoDTO detailsById = lampService.getDetailsById(lampId,version);
         LampInfoDTO detailsById = lampService.getDetailsById(lampId,version);
         return BaseResult.success(detailsById);
         return BaseResult.success(detailsById);
     }
     }
-//    @RequestMapping(value = "/getkk",method = RequestMethod.POST)
-//public Integer kk(HttpServletRequest request){
-//        UserDTO user = toolUtils.getUser(request);
-//        System.out.println("===dd===:"+user);
-//        return user.getId();
-//}
+    @RequestMapping(value = "/getkk", method = RequestMethod.POST)
+    public Integer kk(HttpServletRequest request) {
+        toolUtils.addOpertaionLog(request,null,null,null,null,null,null,null,null,null,null,null,null,null);
+        return 0;
+    }
     /**
     /**
      * 添加编辑灯控
      * 添加编辑灯控
      * @param request
      * @param request
@@ -233,6 +232,9 @@ public class LampController {
                 this.savePlcAddress(macAddress,sn);
                 this.savePlcAddress(macAddress,sn);
             }
             }
         }
         }
+        String groupId = request.getParameter("groupId");
+        String lampPoleId = request.getParameter("lampPoleId");
+
         Date day = new Date();
         Date day = new Date();
         SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
         SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
         String updateTime = sdf.format(day);
         String updateTime = sdf.format(day);
@@ -245,18 +247,26 @@ public class LampController {
             lampInfo.setSectionId(sectionId);
             lampInfo.setSectionId(sectionId);
             lampInfo.setNumber(number);
             lampInfo.setNumber(number);
 
 
-            Integer byVO = lampService.findByVO(lampInfo);
-            if (byVO > 0) return toolUtils.response(InterfaceResultEnum.NUMBER_EXIST_ERROR,version);
+            //若两灯的,只添加其中一个的就要判断了
+//            Integer byVO = lampService.findByVO(lampInfo);
+//            if (byVO > 0) return toolUtils.response(InterfaceResultEnum.NUMBER_EXIST_ERROR,version);
             lampInfo.setSectionId(null);
             lampInfo.setSectionId(null);
             lampInfo.setNumber(null);
             lampInfo.setNumber(null);
             lampInfo.setAddress(sn);
             lampInfo.setAddress(sn);
             NetworkDTO networkData = new NetworkDTO();
             NetworkDTO networkData = new NetworkDTO();
             //同一个plc下不允许有相同的序号/相同灯的地址
             //同一个plc下不允许有相同的序号/相同灯的地址
             Integer header = 0; //灯头:0代表没,1代表灯头1,2代表灯头2
             Integer header = 0; //灯头:0代表没,1代表灯头1,2代表灯头2
-            Integer plcNetCount = 0; //0:没有创建 ,1: 创建过了
+            Integer plcNetCount = 0; //网关, 0:没有创建 ,1: 创建过了
             if (protocolType == 11 && controlType != 26 && controlType != 27){
             if (protocolType == 11 && controlType != 26 && controlType != 27){
+                String otherDevAddr = ""; //另外一个
                 lampInfo.setMacAddress(macAddress);
                 lampInfo.setMacAddress(macAddress);
                 if (controlType == 4 || controlType == 11 || controlType == 12 || controlType == 14 ){
                 if (controlType == 4 || controlType == 11 || controlType == 12 || controlType == 14 ){
+                    //同一个路段下编号不允相同
+                    LampInfoDTO newLamp = new LampInfoDTO();
+                    newLamp.setNumber(number);
+                    newLamp.setSectionId(sectionId);
+                    Integer byVO = lampService.findByVO(newLamp);
+                    if (byVO > 0) return toolUtils.response(InterfaceResultEnum.NUMBER_EXIST_ERROR,version);
                     //单灯的情况下是不允许有重复地址的
                     //单灯的情况下是不允许有重复地址的
                     //灯地址
                     //灯地址
                     Integer macAddressTotal = lampService.checkData(lampInfo);
                     Integer macAddressTotal = lampService.checkData(lampInfo);
@@ -269,18 +279,44 @@ public class LampController {
                         return toolUtils.response(InterfaceResultEnum.PLC_ADDRESS_EXIST_ERROR,version);
                         return toolUtils.response(InterfaceResultEnum.PLC_ADDRESS_EXIST_ERROR,version);
                     }else {
                     }else {
                         //不存在或只存在一个灯头
                         //不存在或只存在一个灯头
-                        if (dtoList != null){
+                        if (dtoList != null && dtoList.size() == 1){
                             //存在一个灯头
                             //存在一个灯头
                             header = dtoList.get(0).getMode() + 1;
                             header = dtoList.get(0).getMode() + 1;
+                            otherDevAddr = dtoList.get(0).getDevAddr();
+                        }else {
+                            //同一个路段下编号不允相同
+                            LampInfoDTO newLamp = new LampInfoDTO();
+                            newLamp.setNumber(number);
+                            newLamp.setSectionId(sectionId);
+                            Integer byVO = lampService.findByVO(newLamp);
+                            if (byVO > 0) return toolUtils.response(InterfaceResultEnum.NUMBER_EXIST_ERROR,version);
                         }
                         }
                     }
                     }
                 }
                 }
                 //灯序号
                 //灯序号
-                lampInfo.setMacAddress(null);
-                lampInfo.setDevAddr(devAddr);
-                Integer devAddrTotal = lampService.checkData(lampInfo);
-                if (devAddrTotal > 0) return toolUtils.response(InterfaceResultEnum.PLC_SERIAL_NUMBER_EXIST_ERROR,version);
-                lampInfo.setMacAddress(macAddress);
+                if (header == 0){
+                    lampInfo.setMacAddress(null);
+                    lampInfo.setDevAddr(devAddr);
+                    Integer devAddrTotal = lampService.checkData(lampInfo);
+                    if (devAddrTotal > 0) return toolUtils.response(InterfaceResultEnum.PLC_SERIAL_NUMBER_EXIST_ERROR,version);
+                    lampInfo.setMacAddress(macAddress);
+                }else {
+                    //双灯只添加其中一个
+                    if (!devAddr.equals(otherDevAddr)){
+                       //跟原来的不一样
+                        return toolUtils.response(InterfaceResultEnum.PLC_SERIAL_NUMBER_SAME__ERROR,version);
+                    }else {
+                        lampInfo.setDevAddr(devAddr);
+                    }
+                }
+
+            }else {
+                //同一个路段下编号不允相同
+                LampInfoDTO newLamp = new LampInfoDTO();
+                newLamp.setNumber(number);
+                newLamp.setSectionId(sectionId);
+                Integer byVO = lampService.findByVO(newLamp);
+                if (byVO > 0) return toolUtils.response(InterfaceResultEnum.NUMBER_EXIST_ERROR,version);
             }
             }
             if (protocolType == 13 || controlType == 26 || controlType == 27){
             if (protocolType == 13 || controlType == 26 || controlType == 27){
                 lampInfo.setMacAddress(macAddress);
                 lampInfo.setMacAddress(macAddress);
@@ -300,20 +336,22 @@ public class LampController {
                 lampInfo.setNetworkId(network.getId());
                 lampInfo.setNetworkId(network.getId());
             }
             }
             Integer checkAddressTotal = lampService.checkData(lampInfo);
             Integer checkAddressTotal = lampService.checkData(lampInfo);
+
             if (protocolType != 11 && protocolType != 5 && protocolType != 13 && checkAddressTotal > 0){
             if (protocolType != 11 && protocolType != 5 && protocolType != 13 && checkAddressTotal > 0){
+
                 LampInfoDTO dataByVO = lampService.getDataByVO(lampInfo);
                 LampInfoDTO dataByVO = lampService.getDataByVO(lampInfo);
                 //section
                 //section
                 SectionDTO sectionDTO = new SectionDTO();
                 SectionDTO sectionDTO = new SectionDTO();
-                sectionDTO.setId(dataByVO.getId());
+                sectionDTO.setId(dataByVO.getSectionId());
                 sectionDTO= sectionService.getDataByVO(sectionDTO);
                 sectionDTO= sectionService.getDataByVO(sectionDTO);
                 //location
                 //location
                 GlobalLocationDTO areaData = new GlobalLocationDTO();
                 GlobalLocationDTO areaData = new GlobalLocationDTO();
                 areaData.setId(sectionDTO.getPid());
                 areaData.setId(sectionDTO.getPid());
                 areaData = globalLocationService.getDataByDto(areaData);
                 areaData = globalLocationService.getDataByDto(areaData);
 
 
-                String chinaMsg = "无线地址已存在,区域: "+areaData.getChineseName()+"-->路段:"+sectionDTO.getName()+"-->路灯编号:"+lampInfo.getNumber();
-                String engMsg = "The wireless address already exists,area: "+areaData.getEnglishName()+"-->section:"+sectionDTO.getName()+"-->number:"+lampInfo.getNumber();
-                String ruMsg = "Беспроводной адрес уже существует,область: "+areaData.getRuName()+"-->участок дороги:"+sectionDTO.getName()+"-->Номер фонаря:"+lampInfo.getNumber();
+                String chinaMsg = "无线模块地址已存在,区域: "+areaData.getChineseName()+"-->路段:"+sectionDTO.getName()+"-->路灯编号:"+dataByVO.getNumber();
+                String engMsg = "The wireless address already exists,area: "+areaData.getEnglishName()+"-->section:"+sectionDTO.getName()+"-->number:"+dataByVO.getNumber();
+                String ruMsg = "Беспроводной адрес уже существует,область: "+areaData.getRuName()+"-->участок дороги:"+sectionDTO.getName()+"-->Номер фонаря:"+dataByVO.getNumber();
                 if (version == 0){
                 if (version == 0){
                     String code = "0403";
                     String code = "0403";
                     if (version == 0){
                     if (version == 0){
@@ -328,20 +366,21 @@ public class LampController {
                     }
                     }
                 }
                 }
             }
             }
+
             lampInfo.setBindStatus(bindStatus);
             lampInfo.setBindStatus(bindStatus);
-            String netAddress = "";
+            //String netAddress = "";
             if (protocolType == 0 || protocolType == 3 || protocolType == 4 || protocolType == 5 || protocolType == 6 || protocolType == 7 || protocolType == 8 || protocolType == 9 || protocolType == 10 || protocolType == 11 || protocolType == 13){
             if (protocolType == 0 || protocolType == 3 || protocolType == 4 || protocolType == 5 || protocolType == 6 || protocolType == 7 || protocolType == 8 || protocolType == 9 || protocolType == 10 || protocolType == 11 || protocolType == 13){
                 lampInfo.setNetType(1);
                 lampInfo.setNetType(1);
                 //直连设备
                 //直连设备
                 if (protocolType == 11 || protocolType == 5){
                 if (protocolType == 11 || protocolType == 5){
-                    netAddress = sn;
+                    //netAddress = sn;
                     //plc下有单灯控制器和双灯控制器
                     //plc下有单灯控制器和双灯控制器
                     lampInfo.setBindStatus(0);
                     lampInfo.setBindStatus(0);
                 }else {
                 }else {
-                    netAddress = sn.length() == 13 ? String.valueOf(Integer.parseInt(sn,10)) : sn;
+                    sn = sn.length() == 13 ? String.valueOf(Integer.parseInt(sn,10)) : sn;
                 }
                 }
                 //networkData = new NetworkDTO();
                 //networkData = new NetworkDTO();
-                networkData.setDeviceSn(netAddress);
+                networkData.setDeviceSn(sn);
                 NetworkDTO simpleData = networkService.getSimpleData(networkData);
                 NetworkDTO simpleData = networkService.getSimpleData(networkData);
                 //zigbee设备 plc
                 //zigbee设备 plc
                 if (protocolType == 5 && controlType == 13){
                 if (protocolType == 5 && controlType == 13){
@@ -363,6 +402,7 @@ public class LampController {
                            //成功
                            //成功
                          lampInfo.setLampCtrId(((ZhongLightPlcVO)lightObject).getLampCtrlId());
                          lampInfo.setLampCtrId(((ZhongLightPlcVO)lightObject).getLampCtrlId());
                          lampInfo.setUid(((ZhongLightPlcVO)lightObject).getUid());
                          lampInfo.setUid(((ZhongLightPlcVO)lightObject).getUid());
+                         lampInfo.setBindStatus(1);
                        }
                        }
                    }
                    }
                 }
                 }
@@ -391,7 +431,7 @@ public class LampController {
                 if (protocolType == 8 && (controlType == 29 || controlType == 33 || controlType == 19)) networkData.setDeviceType(4);
                 if (protocolType == 8 && (controlType == 29 || controlType == 33 || controlType == 19)) networkData.setDeviceType(4);
                 if (protocolType == 3 && controlType == 9) networkData.setDeviceType(4);
                 if (protocolType == 3 && controlType == 9) networkData.setDeviceType(4);
                 if (controlType == 16 || controlType == 20) networkData.setDeviceType(5);
                 if (controlType == 16 || controlType == 20) networkData.setDeviceType(5);
-                networkData.setNetworkName(netAddress);
+                networkData.setNetworkName(sn);
                 networkData.setNetType(1);
                 networkData.setNetType(1);
                 networkData.setCreateTime(updateTime);
                 networkData.setCreateTime(updateTime);
                 networkData.setUserId(userId);
                 networkData.setUserId(userId);
@@ -427,8 +467,8 @@ public class LampController {
                             JSONObject parseObject = JSON.parseObject(result);
                             JSONObject parseObject = JSON.parseObject(result);
                             Integer code = parseObject.getInteger("code");
                             Integer code = parseObject.getInteger("code");
                             if (code == 200){
                             if (code == 200){
-                                Integer networkId = networkService.add(networkData);
-                                lampInfo.setNetworkId(networkId);
+                                networkService.add(networkData);
+                                lampInfo.setNetworkId(networkData.getId());
                             } else  {
                             } else  {
                                 String msg = parseObject.getString("msg");
                                 String msg = parseObject.getString("msg");
                                 BaseResult<Object> objectBaseResult = new BaseResult<>(code.toString(), msg, new Object());
                                 BaseResult<Object> objectBaseResult = new BaseResult<>(code.toString(), msg, new Object());
@@ -437,8 +477,8 @@ public class LampController {
                         }
                         }
                     }else {
                     }else {
                         //力合微 plc
                         //力合微 plc
-                        Integer networkId = networkService.add(networkData);
-                        lampInfo.setNetworkId(networkId);
+                         networkService.add(networkData);
+                        lampInfo.setNetworkId(networkData.getId());
                     }
                     }
                 }else {
                 }else {
                     NetworkDTO network =  networkService.getSimpleData(networkData);
                     NetworkDTO network =  networkService.getSimpleData(networkData);
@@ -450,13 +490,13 @@ public class LampController {
                     networkData.setProtocolType(protocolType);
                     networkData.setProtocolType(protocolType);
                     networkData.setAreaId(areaId);
                     networkData.setAreaId(areaId);
                     networkData.setSectionId(sectionId);
                     networkData.setSectionId(sectionId);
-                    networkData.setDeviceSn(netAddress);
-                    networkData.setNetworkName(netAddress);
+                    networkData.setDeviceSn(sn);
+                    networkData.setNetworkName(sn);
                     networkData.setNetType(1);
                     networkData.setNetType(1);
                     networkData.setCreateTime(updateTime);
                     networkData.setCreateTime(updateTime);
                 }
                 }
-                Integer networkId =  networkService.add(networkData);
-                lampInfo.setNetworkId(networkId);
+                networkService.add(networkData);
+                lampInfo.setNetworkId(networkData.getId());
             }
             }
             SectionDTO sectionDTO = new SectionDTO();
             SectionDTO sectionDTO = new SectionDTO();
             sectionDTO.setId(sectionId);
             sectionDTO.setId(sectionId);
@@ -468,101 +508,176 @@ public class LampController {
 
 
             lampInfo.setCreateTime(updateTime);
             lampInfo.setCreateTime(updateTime);
             //添加plc控制器节点 - 启慧
             //添加plc控制器节点 - 启慧
-            if (protocolType == 11 && (controlType == 11 || controlType == 12 || controlType == 14)){
+            if (protocolType == 11 && (controlType == 11 || controlType == 12 || controlType == 14)) {
                 String url = "childnode/deviceRegister";
                 String url = "childnode/deviceRegister";
-//                $nodeType = $this->selectNodeType($data['ratedpower']);
+                String nodeType = this.selectNodeType(power);
+                if (nodeType == null || nodeType.length() == 0) return toolUtils.response(InterfaceResultEnum.POWER_SELECT_ERROR,version);
+                JSONObject qiObject = new JSONObject();
+                if (groupId != null && groupId.length() != 0){
+                    String[] groupIds = groupId.split(",");
+                    List<GroupDTO> list = groupService.getListByIds(groupIds);
+                    //有分组 (只有: 1- 255)
+                    for (GroupDTO item:list) {
+                        Integer groupNumber = Integer.parseInt(item.getNumber());
+                        if (groupNumber < 1 || groupNumber > 255){
+                            //分组没有在规定的范围内
+                            return toolUtils.response(InterfaceResultEnum.GROUP_NUMBER_RAND_ERROR,version);
+                        }else {
+                            //注意:nodeId是12位数的,不够时,前面补0
+                            String nodeId = "";
+                            String zero = "";
+                            if (macAddress.length() <= 12){
+                                for (int i = 0; i < 12 - macAddress.length();i++){
+                                    zero += "0";
+                                }
+                                nodeId = zero+macAddress;
+                            }else {
+                                //大于12位数了
+                                return toolUtils.response(InterfaceResultEnum.FILL_LAMP_ADDRESS__ERROR,version);
+                            }
+
+                            qiObject.put("nodeId",nodeId);
+                            qiObject.put("nodeType",nodeType);
+                            qiObject.put("deviceId",sn);
+                            qiObject.put("groupNum",groupNumber);
+
+                        }
+                    }
+                }else {
+                    //没有分组的
+                    //注意:nodeId是12位数的,不够时,前面补0
+                    String nodeId = "";
+                    String zero = "";
+                    if (macAddress.length() <= 12){
+                        for (int i = 0; i < 12 - macAddress.length();i++){
+                            zero += "0";
+                        }
+                        nodeId = zero+macAddress;
+                    }else {
+                        //大于12位数了
+                        return toolUtils.response(InterfaceResultEnum.FILL_LAMP_ADDRESS__ERROR,version);
+                    }
+                    qiObject.put("nodeId",nodeId);
+                    qiObject.put("nodeType",nodeType);
+                    qiObject.put("deviceId",sn);
+                }
+                String respone = this.quiHuiPlcDevice(url, qiObject, 4);
+                if (respone == null || respone.length() == 0){
+                    return toolUtils.response(InterfaceResultEnum.SEND_CMD_TIME_OUT,version);
+                }else {
+                    JSONObject parseObject = JSON.parseObject(respone);
+                    Integer code = parseObject.getInteger("code");
+                    if (code != 200){
+                       String msg = parseObject.getString("msg");
+                        BaseResult<Object> objectBaseResult = new BaseResult<>(code.toString(), msg, new Object());
+                        return objectBaseResult;
+                    }else {
+                        lampInfo.setBindStatus(1);
+                    }
+                }
             }
             }
-//            if (($protocoltype == 11 && $data['control_type'] == 11) || ($protocoltype == 11 &&  $data['control_type'] == 12) || ($protocoltype == 11 &&  $data['control_type'] == 14)){
-//
-//                $url = 'childnode/deviceRegister';
-//                $nodeType = $this->selectNodeType($data['ratedpower']);
-//
-//                if (empty($nodeType))  exit(json_result('0323',$this->response['0323']));
-//                $params = '';
-//                if (!empty($groupid)){
-//                    //有分组 (只有: 1- 255)
-//                    $groupid = implode(',', explode(',', $groupid));
-//                    $groupList = $this->db->query('select id,`name` from `group` where id in ('.$groupid.')')->result_array();
-//                    foreach ($groupList as $key=>$item){
-//                        if (is_numeric($item)){
-//                            if (intval($item) > 225 || intval($item) < 1){
-//                                //分组没有在规定的范围内
-//                                exit(json_result('0420',$this->response['0420']));
-//                            }else{
-//                                //注意:nodeId是12位数的,不够时,前面补0
-//                                $nodeId = '';
-//                                $zero = '';
-//                                if (mb_strlen($data['macAddress']) <= 12){
-//                                    for ($i = 0; $i < 12-(mb_strlen($data['macAddress'])); $i ++){
-//                                        $zero .= '0';
-//                                    }
-//                                    $nodeId = $zero.$data['macAddress'];
-//                                }else{
-//                                    //大于12位数了
-//                                    exit(json_result('0324',$this->response['0324']));
-//                                }
-//                                $params = array('nodeId'=>$nodeId,'nodeType'=>$nodeType,'deviceId'=>$data['address'],'groupNum'=>intval($item));
-//                            }
-//                        }else{
-//                            //分组没有在规定的范围内
-//                            exit(json_result('0420',$this->response['0420']));
-//                        }
-//                    }
-//                }else{
-//                    //没有分组的
-//                    //注意:nodeId是12位数的,不够时,前面补0
-//                    $nodeId = '';
-//                    $zero = '';
-//                    if (mb_strlen($data['macAddress']) <= 12){
-//                        for ($i = 0; $i < 12-(mb_strlen($data['macAddress'])); $i ++){
-//                            $zero .= '0';
-//                        }
-//                        $nodeId = $zero.$data['macAddress'];
-//                    }else{
-//                        //大于12位数了
-//                        exit(json_result('0324',$this->response['0324']));
-//                    }
-//                    $params = array('nodeId'=>$nodeId,'nodeType'=>$nodeType,'deviceId'=>$data['address']);
-//                }
-//
-//                $result = $this->plcDevice($url,$params,3);
-//                $resultObj = json_decode($result);
-//
-//                if ($resultObj->code != 200){
-//                    //不成功
-//                    exit(json_result($resultObj->code,$resultObj->msg));
-//                }
-
-
-                //添加网关
-            NetworkDTO networkDTO = new NetworkDTO();
-            networkDTO.setDeviceSn(sn);
-            //查询有没有网关
-           Integer count = networkService.checkNetworkData(networkDTO);
-           if (count == 0){
-               //添加网关
-               //networkService.addNetworkData();
-           }
-            //添加灯控
-            LampInfoDTO lampInfoDTO = new LampInfoDTO();
-            lampInfoDTO.setProtocolType(protocolType);
-            lampInfoDTO.setSn(sn);
-            lampInfoDTO.setNumber(number);
-            lampInfoDTO.setSectionId(sectionId);
-            lampInfoDTO.setName(name);
-            lampInfoDTO.setLatitude(Float.valueOf(latitude));
-            lampInfoDTO.setLongitude(Float.valueOf(longitude));
-            lampInfoDTO.setNumber(number);
-            lampInfoDTO.setSn(sn);
-            lampInfoDTO.setAreaId(areaId);
-            lampInfoDTO.setControlType(controlType);
-            lampInfoDTO.setInstallDate(installDate);
-            lampInfoDTO.setExpirationDate(expirationDate);
-            lampInfoDTO.setRatedPower(power);
-            lampInfoDTO.setDevAddr(devAddr);
-            lampInfoDTO.setFreqId(Integer.parseInt(freqId));
-            lampInfoDTO.setZegbeeSectionId(loopNumber);
-            return lampService.add(lampInfoDTO);
+
+            lampInfo.setControlType(controlType);
+            lampInfo.setRatedPower(power);
+            lampInfo.setLongitude(Float.valueOf(longitude));
+            lampInfo.setLatitude(Float.valueOf(latitude));
+            lampInfo.setAreaId(areaId);
+            lampInfo.setSectionId(sectionId);
+            lampInfo.setAddress(sn);
+            lampInfo.setNumber(number);
+            lampInfo.setName(name);
+
+            if (protocolType == 11 && controlType == 8 && header > 0){
+                //添加其中一个灯头
+                if (header == 1){//灯头1
+                    //设置灯头2
+                    lampInfo.setMode(1);
+                }else {//灯头2
+                    //设置灯头1
+                    lampInfo.setMode(0);
+                }
+                lampService.addByDto(lampInfo);
+
+            }else {
+                lampService.addByDto(lampInfo);
+            }
+
+            //修改了 4G 双控 plc 双控 nb 双控 蓝牙双灯
+            if (protocolType == 10 && (controlType == 5 || controlType == 22 || controlType == 34) || (protocolType == 11 && controlType == 8 && header == 0) || (protocolType == 3 && controlType == 9) || controlType == 25 || controlType == 27 || controlType ==29){
+                lampInfo.setMode(1);
+                lampService.addByDto(lampInfo);
+            }
+            String lastSql = lastSqlInterceptor.sqlContent; //插入的sql语句
+            if (lampPoleId != null && lampPoleId.length() != 0){
+                toolUtils.setPoleType(Integer.parseInt(lampPoleId),0);
+            }
+
+            // 添加到分组
+            if (groupId != null && groupId.length() != 0){
+                String[] groupIdArr = groupId.split(",");
+                List<GroupDTO> groupDTOList = groupService.getListByIds(groupIdArr);
+                for (GroupDTO item:groupDTOList) {
+                    String[] lampArr = item.getLampId().split(",");
+                    //是否包含某个元素
+                    boolean ifContain = Arrays.asList(lampArr).contains(lampInfo.getId());
+                    if (ifContain == false){
+                        //转换成list
+                        List<String> list = new ArrayList<>(Arrays.asList(lampArr));
+                        list.add(lampInfo.getId().toString());
+                        //list数组按规定拼接成字符串
+                        String newLampId= list.stream().collect(Collectors.joining(","));
+                        //更新
+                        item.setLampId(newLampId);
+                        groupService.updateGroupLampId(item);
+                    }
+                }
+            }
+            networkData = networkService.getSimpleData(networkData);
+            Integer lampCount = networkData.getLampCount();
+
+            if (controlType == 1 || controlType == 3 || controlType == 5 || controlType == 8 || controlType == 9 || controlType == 22){
+                //更新lampcount
+                //如果两灯就是添加2个
+                if (lampCount == null || lampCount == 0){
+                    networkData.setLampCount(2);
+                }else {
+                    if (header > 0 && controlType == 8){
+                        //只增加一个
+                        lampCount = lampCount + 1;
+                        networkData.setLampCount(lampCount);
+                    }else {
+                        lampCount = lampCount + 2;
+                        networkData.setLampCount(lampCount);
+                    }
+                }
+                networkService.updateSimDate(networkData);
+            }else {
+                //单灯
+                //如果两灯就是添加1个
+                if (protocolType != 11 && protocolType != 5){
+                    networkData.setLampCount(1);
+                    networkService.updateSimDate(networkData);
+                }else if((protocolType == 11  || protocolType == 5) && controlType != 26 && controlType != 27) {
+                    //plc可以带很多灯 ,//zigbee也是带多个灯
+                    if (lampCount == null || lampCount == 0){
+                        networkData.setLampCount(1);
+                    }else {
+                        lampCount = lampCount + 1;
+                        networkData.setLampCount(lampCount);
+                    }
+                    networkService.updateSimDate(networkData);
+                }
+            }
+
+            String cRemark = "添加路灯 区域:"+areaDTO.getChineseName()+"->路段:"+sectionDTO.getName()+"->路灯编号:"+number+" id:"+lampInfo.getId();
+            String eRemark = "Add lamp area:"+areaDTO.getEnglishName()+"->section:"+sectionDTO.getName()+"->number:"+number+" id:"+lampInfo.getId();
+            String rRemark = "Добавить зону светильников:"+areaDTO.getRuName()+"->участок дороги:"+sectionDTO.getName()+"->нумерация:"+number+" id:"+lampInfo.getId();
+            toolUtils.addOpertaionLog(request, "添加", cRemark, 0, 1, 1, number, areaDTO.getChineseName(), sectionDTO.getName(), sn, sectionId, sectionDTO.getId(), lampInfo.getId(), lastSql);
+            toolUtils.addOpertaionLog(request, "Insert", eRemark, 1,1,1, number, areaDTO.getEnglishName(), sectionDTO.getName(), sn, sectionId, sectionDTO.getId(), lampInfo.getId(), lastSql);
+            toolUtils.addOpertaionLog(request,"Подкючено",rRemark,2,1,1,number,areaDTO.getRuName(),sectionDTO.getName(),sn,sectionId,sectionDTO.getId(), lampInfo.getId(),lastSql);
+
+            return toolUtils.response(InterfaceResultEnum.OPERATION_SUCCESS,version);
+
         }else { // 编辑
         }else { // 编辑
 //            LampInfoDTO oldLamp = lampService.getDetailsById(lampId,version);
 //            LampInfoDTO oldLamp = lampService.getDetailsById(lampId,version);
 //            if (oldLamp.getProtocolType() != protocolType){
 //            if (oldLamp.getProtocolType() != protocolType){
@@ -866,7 +981,62 @@ public class LampController {
         }
         }
         return toolUtils.response(InterfaceResultEnum.OPERATION_SUCCESS,version);
         return toolUtils.response(InterfaceResultEnum.OPERATION_SUCCESS,version);
     }
     }
-
+    private String selectNodeType(Integer power){
+        String nodeType = "";
+        switch (power){
+            case 30:
+                nodeType = "01";
+                break;
+            case 40:
+                nodeType = "02";
+                break;
+            case 50:
+                nodeType = "50";
+                break;
+            case 60:
+                nodeType = "06";
+                break;
+            case 75:
+                nodeType = "0A";
+                break;
+            case 80:
+                nodeType = "12";
+                break;
+            case 90:
+                nodeType = "15";
+                break;
+            case 100:
+                nodeType = "19";
+                break;
+            case 120:
+                nodeType = "1D";
+                break;
+            case 150:
+                nodeType = "2C";
+                break;
+            case 160:
+                nodeType = "27";
+                break;
+            case 180:
+                nodeType = "36";
+                break;
+            case 185:
+                nodeType = "38";
+                break;
+            case 200:
+                nodeType = "40";
+                break;
+            case 240:
+                nodeType = "45";
+                break;
+            case 260:
+                nodeType = "48";
+                break;
+            default:
+                nodeType = "";
+        }
+        return nodeType;
+    }
     //中灯 - 调光
     //中灯 - 调光
     private Object getToken(){
     private Object getToken(){
         String url = zhongLightPlc.getZhongUrl()+"query_token";
         String url = zhongLightPlc.getZhongUrl()+"query_token";
@@ -1263,7 +1433,7 @@ public class LampController {
         String bodyJsonString = bodyJson.toString();
         String bodyJsonString = bodyJson.toString();
         return bodyJsonString;
         return bodyJsonString;
     }
     }
-    //广东启慧-调光/集中器设备注册(网关)
+    //广东启慧-调光/集中器设备注册(网关)/控制器
     private String quiHuiPlcDevice(String url,JSONObject params,Integer timeOut) {
     private String quiHuiPlcDevice(String url,JSONObject params,Integer timeOut) {
         String plcUrl = quHuiPlc.getUrl()+url;
         String plcUrl = quHuiPlc.getUrl()+url;
         Random random = new Random();
         Random random = new Random();

+ 1 - 1
src/main/java/com/welampiot/controller/LampPoleController.java

@@ -86,7 +86,7 @@ public class LampPoleController {
     @RequestMapping(value = "/nav",method = RequestMethod.POST)
     @RequestMapping(value = "/nav",method = RequestMethod.POST)
     public BaseResult<LampInfoDTO> nav(HttpServletRequest request){
     public BaseResult<LampInfoDTO> nav(HttpServletRequest request){
         Integer version = request.getParameter("version") == null ? 0 : Integer.parseInt(request.getParameter("version"));
         Integer version = request.getParameter("version") == null ? 0 : Integer.parseInt(request.getParameter("version"));
-        Integer devType = request.getParameter("devType") == null || request.getParameter("devType").length() == 0 ? null : Integer.parseInt(request.getParameter("devType"));
+        String devType = request.getParameter("devType"); // == null || request.getParameter("devType").length() == 0 ? null : Integer.parseInt(request.getParameter("devType"));
         Integer devId = request.getParameter("devId") == null || request.getParameter("devId").length() == 0 ? null : Integer.parseInt(request.getParameter("devId"));
         Integer devId = request.getParameter("devId") == null || request.getParameter("devId").length() == 0 ? null : Integer.parseInt(request.getParameter("devId"));
         LampPoleVO lampPoleVO = new LampPoleVO();
         LampPoleVO lampPoleVO = new LampPoleVO();
         List sectionList = toolUtils.getSectionList(request);
         List sectionList = toolUtils.getSectionList(request);

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

@@ -20,4 +20,5 @@ public interface GroupDao {
     Integer getGroupTotalByDTO(GroupDTO dto);
     Integer getGroupTotalByDTO(GroupDTO dto);
     GroupDTO getGroupDTOById(@Param("id") Integer id);
     GroupDTO getGroupDTOById(@Param("id") Integer id);
     void updateGroupLampId(GroupDTO dto);
     void updateGroupLampId(GroupDTO dto);
+    List<GroupDTO> getListByIds(@Param("ids") String[] ids);
 }
 }

+ 11 - 0
src/main/java/com/welampiot/dao/IpInfoDao.java

@@ -0,0 +1,11 @@
+package com.welampiot.dao;
+
+import com.welampiot.dto.IpInfoDTO;
+
+import java.util.List;
+
+public interface IpInfoDao {
+    IpInfoDTO getDataByIp(String ip);
+    void updateByIp(IpInfoDTO dto);
+    void add(IpInfoDTO dto);
+}

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

@@ -64,4 +64,6 @@ public interface LampDao {
     List<LampInfoDTO> findLampDeviceBySn(@Param("address") String address, @Param("version") Integer version);
     List<LampInfoDTO> findLampDeviceBySn(@Param("address") String address, @Param("version") Integer version);
     LampInfoDTO getDataByVO(LampInfoDTO vo);
     LampInfoDTO getDataByVO(LampInfoDTO vo);
     List<LampInfoDTO> getListByDto(LampInfoDTO dto);
     List<LampInfoDTO> getListByDto(LampInfoDTO dto);
+    void addByDto(LampInfoDTO dto);
+    void updateById(LampInfoDTO dto);
 }
 }

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

@@ -61,4 +61,5 @@ public interface LampPoleDao {
     List<LampPoleDTO> getLampPoleAlarmListByLampPoleId(@Param("lampPoleId") Integer lampPoleId);
     List<LampPoleDTO> getLampPoleAlarmListByLampPoleId(@Param("lampPoleId") Integer lampPoleId);
     LampPoleDTO getNewLampPoleDetailsById(@Param("id") Integer id);
     LampPoleDTO getNewLampPoleDetailsById(@Param("id") Integer id);
     List<LampPoleDTO> getLampListByLampPoleId(@Param("lampPoleId") Integer lampPoleId);
     List<LampPoleDTO> getLampListByLampPoleId(@Param("lampPoleId") Integer lampPoleId);
+    void updateById(LampPoleDTO lampPoleDTO);
 }
 }

+ 11 - 0
src/main/java/com/welampiot/dto/IpInfoDTO.java

@@ -0,0 +1,11 @@
+package com.welampiot.dto;
+
+import lombok.Data;
+
+@Data
+public class IpInfoDTO {
+    private Integer id;
+    private String ipAddr;
+    private String location;
+
+}

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

@@ -22,4 +22,6 @@ public interface GroupService {
     Integer getGroupTotalByDTO(GroupDTO dto);
     Integer getGroupTotalByDTO(GroupDTO dto);
     GroupDTO getGroupDTOById(Integer id);
     GroupDTO getGroupDTOById(Integer id);
     void updateGroupLampId(GroupDTO dto);
     void updateGroupLampId(GroupDTO dto);
+    List<GroupDTO> getListByIds(@Param("ids") String[] ids);
+
 }
 }

+ 11 - 0
src/main/java/com/welampiot/service/IpInfoService.java

@@ -0,0 +1,11 @@
+package com.welampiot.service;
+
+import com.welampiot.dto.IpInfoDTO;
+import org.springframework.stereotype.Service;
+
+
+public interface IpInfoService {
+    IpInfoDTO getDataByIp(String ip);
+    void updateByIp(IpInfoDTO dto);
+    void add(IpInfoDTO dto);
+}

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

@@ -53,4 +53,5 @@ public interface LampPoleService {
     LampPoleDTO getNewLampPoleDetailsById(Integer id);
     LampPoleDTO getNewLampPoleDetailsById(Integer id);
     List<LampPoleDTO> getLampListByLampPoleId(Integer lampPoleId);
     List<LampPoleDTO> getLampListByLampPoleId(Integer lampPoleId);
     LampPoleInfoVO getLampPoleBigScreenCount(LampPoleDTO lampPoleDTO, LampInfoDTO lampInfoDTO);
     LampPoleInfoVO getLampPoleBigScreenCount(LampPoleDTO lampPoleDTO, LampInfoDTO lampInfoDTO);
+    void updateById(LampPoleDTO lampPoleDTO);
 }
 }

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

@@ -64,4 +64,6 @@ public interface LampService {
     List<LampInfoDTO> findLampDeviceBySn(String address, Integer version);
     List<LampInfoDTO> findLampDeviceBySn(String address, Integer version);
     LampInfoDTO getDataByVO(LampInfoDTO vo);
     LampInfoDTO getDataByVO(LampInfoDTO vo);
     List<LampInfoDTO> getListByDto(LampInfoDTO dto);
     List<LampInfoDTO> getListByDto(LampInfoDTO dto);
+    void addByDto(LampInfoDTO dto);
+    void updateById(LampInfoDTO dto);
 }
 }

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

@@ -7,6 +7,7 @@ import com.welampiot.dto.GroupDTO;
 import com.welampiot.service.GroupService;
 import com.welampiot.service.GroupService;
 import com.welampiot.utils.ToolUtils;
 import com.welampiot.utils.ToolUtils;
 import com.welampiot.vo.GroupVO;
 import com.welampiot.vo.GroupVO;
+import org.apache.ibatis.annotations.Param;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 
 
@@ -185,4 +186,8 @@ public class GroupServiceImpl implements GroupService {
     public void updateGroupLampId(GroupDTO dto) {
     public void updateGroupLampId(GroupDTO dto) {
         groupDao.updateGroupLampId(dto);
         groupDao.updateGroupLampId(dto);
     }
     }
+    @Override
+    public List<GroupDTO> getListByIds(@Param("ids") String[] ids){
+        return groupDao.getListByIds(ids);
+    }
 }
 }

+ 27 - 0
src/main/java/com/welampiot/service/impl/IpInfoServiceImpl.java

@@ -0,0 +1,27 @@
+package com.welampiot.service.impl;
+
+import com.welampiot.dao.IpInfoDao;
+import com.welampiot.dto.IpInfoDTO;
+import com.welampiot.service.IpInfoService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+public class IpInfoServiceImpl implements IpInfoService {
+
+    @Autowired
+    private IpInfoDao ipInfoDao;
+    @Override
+    public IpInfoDTO getDataByIp(String ip) {
+        return ipInfoDao.getDataByIp(ip);
+    }
+    @Override
+    public void updateByIp(IpInfoDTO dto){
+        ipInfoDao.updateByIp(dto);
+    }
+
+    @Override
+    public void add(IpInfoDTO dto) {
+        ipInfoDao.add(dto);
+    }
+}

+ 4 - 0
src/main/java/com/welampiot/service/impl/LampPoleServiceImpl.java

@@ -619,4 +619,8 @@ public class LampPoleServiceImpl implements LampPoleService {
     public Integer getAlarmCountByVO(LampPoleCountVO lampPoleCountVO) {
     public Integer getAlarmCountByVO(LampPoleCountVO lampPoleCountVO) {
         return lampPoleDao.getAlarmCountByVO(lampPoleCountVO);
         return lampPoleDao.getAlarmCountByVO(lampPoleCountVO);
     }
     }
+    @Override
+    public void updateById(LampPoleDTO lampPoleDTO){
+        lampPoleDao.updateById( lampPoleDTO);
+    }
 }
 }

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

@@ -774,4 +774,12 @@ public class LampServiceImpl implements LampService {
     public List<LampInfoDTO> getListByDto(LampInfoDTO dto){
     public List<LampInfoDTO> getListByDto(LampInfoDTO dto){
         return lampDao.getListByDto(dto);
         return lampDao.getListByDto(dto);
     }
     }
+    @Override
+    public void addByDto(LampInfoDTO dto){
+         lampDao.addByDto(dto);
+    }
+    @Override
+    public void updateById(LampInfoDTO dto){
+         lampDao.updateById( dto);
+    }
 }
 }

+ 1 - 1
src/main/java/com/welampiot/utils/JwtUtil.java

@@ -35,7 +35,7 @@ public class JwtUtil {
      *  'sub'=>'www.admin.com',  //面向的用户
      *  'sub'=>'www.admin.com',  //面向的用户
      *  'jti'=>md5(uniqid('JWT').time())  //该Token唯一标识
      *  'jti'=>md5(uniqid('JWT').time())  //该Token唯一标识
      * ]
      * ]
-     * @return string
+     * @return string  https://jwt.io/  中base64UrlEncode编码实现
      */
      */
     public String signatureToToken() {// String message
     public String signatureToToken() {// String message
         Map<String, Object> header = new HashMap<>();
         Map<String, Object> header = new HashMap<>();

+ 120 - 6
src/main/java/com/welampiot/utils/ToolUtils.java

@@ -2,6 +2,7 @@ package com.welampiot.utils;
 
 
 import com.alibaba.druid.support.json.JSONUtils;
 import com.alibaba.druid.support.json.JSONUtils;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.JSONObject;
 import com.welampiot.common.BaseResult;
 import com.welampiot.common.BaseResult;
 import com.welampiot.common.DevInfoEnum;
 import com.welampiot.common.DevInfoEnum;
@@ -11,11 +12,9 @@ import com.welampiot.configuration.MqttConfig;
 import com.welampiot.configuration.PlcMqttConfig;
 import com.welampiot.configuration.PlcMqttConfig;
 import com.welampiot.dto.*;
 import com.welampiot.dto.*;
 import com.welampiot.handle.MqttHandler;
 import com.welampiot.handle.MqttHandler;
-import com.welampiot.service.GlobalLocationService;
-import com.welampiot.service.LampPoleService;
-import com.welampiot.service.SectionService;
-import com.welampiot.service.UserService;
+import com.welampiot.service.*;
 import com.welampiot.vo.DevEnumVO;
 import com.welampiot.vo.DevEnumVO;
+import com.welampiot.vo.LampPoleVO;
 import org.apache.commons.httpclient.HttpClient;
 import org.apache.commons.httpclient.HttpClient;
 import org.apache.commons.httpclient.methods.PostMethod;
 import org.apache.commons.httpclient.methods.PostMethod;
 import org.apache.poi.ss.formula.functions.T;
 import org.apache.poi.ss.formula.functions.T;
@@ -38,8 +37,10 @@ import java.lang.reflect.Field;
 import java.net.*;
 import java.net.*;
 import java.nio.charset.StandardCharsets;
 import java.nio.charset.StandardCharsets;
 import java.text.DecimalFormat;
 import java.text.DecimalFormat;
+import java.text.SimpleDateFormat;
 import java.util.*;
 import java.util.*;
 import java.util.regex.Pattern;
 import java.util.regex.Pattern;
+import java.util.stream.Collectors;
 import java.util.zip.CRC32;
 import java.util.zip.CRC32;
 
 
 @Component
 @Component
@@ -73,6 +74,10 @@ public class ToolUtils {
     private static final String PATTERN = "^(?=.*[0-9])(?=.*[a-zA-Z]).{8,20}$";
     private static final String PATTERN = "^(?=.*[0-9])(?=.*[a-zA-Z]).{8,20}$";
     private static final String PATTERN_PHONE = "^1[3-9]\\d{9}$";
     private static final String PATTERN_PHONE = "^1[3-9]\\d{9}$";
     private static final String PATTERN_EMAIL = "^[A-Za-z0-9+_.-]+@[A-Za-z0-9.-]+$";
     private static final String PATTERN_EMAIL = "^[A-Za-z0-9+_.-]+@[A-Za-z0-9.-]+$";
+    @Autowired
+    private IpInfoService ipInfoService;
+    @Autowired
+    private OperationLogService operationLogService;
 
 
     /**
     /**
      * 获取用户所有路段 id
      * 获取用户所有路段 id
@@ -1075,7 +1080,7 @@ System.out.println(res);
     /* 向第三方请求post
     /* 向第三方请求post
      *@param  request:请求方式
      *@param  request:请求方式
      * @param  url:路径
      * @param  url:路径
-     * @param param:参数
+     * @param param:参数(get请求时,url上的参数要与param传的一致)
      * @param ContentTypeEnum: 编码类型
      * @param ContentTypeEnum: 编码类型
      * @return 返回类型字符串
      * @return 返回类型字符串
     */
     */
@@ -1131,7 +1136,7 @@ System.out.println(res);
     /* 向第三方请求post
     /* 向第三方请求post
      *@param  request:请求方式
      *@param  request:请求方式
      * @param  url:路径
      * @param  url:路径
-     * @param param:参数
+     * @param param:参数(get请求时,url上的参数要与param传的一致)
      *  @param token:令牌
      *  @param token:令牌
      *  @param sessionId:会话id
      *  @param sessionId:会话id
      *  @param timeOut:超时
      *  @param timeOut:超时
@@ -1219,6 +1224,115 @@ System.out.println(res);
             throw new RuntimeException(e);
             throw new RuntimeException(e);
         }
         }
         return respone;
         return respone;
+    }
+    // 修改灯杆类型
+    public void setPoleType(Integer poleId,Integer type){
+        if (poleId != 0 || poleId != null){
+            LampPoleDTO lampPoleDTO = lampPoleService.getLampPoleDTOById(poleId);
+            String[] devArr = new String[]{};
+            if(lampPoleDTO.getDevType() != null){
+                devArr = lampPoleDTO.getDevType().split(",");
+            }
+            //是否包含某个元素
+            boolean ifContain = Arrays.asList(devArr).contains(type);
+            if (ifContain == false){
+                //字符串数组转换list,再添加元素
+                List<String> list = new ArrayList<>(Arrays.asList(devArr));
+                list.add(type.toString());
+                //list数组按规定拼接成字符串
+                String newDevType = list.stream().collect(Collectors.joining(","));
+                lampPoleDTO.setId(poleId);
+                lampPoleDTO.setDevType(newDevType);
+                lampPoleService.updateById(lampPoleDTO);
+            }
+        }
+    }
+    //操作日志
+    public void addOpertaionLog(HttpServletRequest request,String operation, String remark,Integer type,Integer operaType,Integer devtype,String deviceName,String area,String section,String sn ,Integer sectionId ,Integer areaId ,Integer id,String sql_log){
+        String ip = "";
+        if (request.getParameter("ip") != null){
+           ip = request.getParameter("ip");
+       }else {
+            ip = request.getServerName();
+        }
+
+        try {
+            String location = this.getLocationByIp(ip);
+            Date day = new Date();
+            SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+            String updateTime = sdf.format(day);
+            String username = request.getParameter("username");
+            Integer userId = this.getUser(request).getId();
 
 
+            Integer os = request.getParameter("os") == null ? 0 : Integer.parseInt(request.getParameter("os"));
+
+            OperationLogDTO operationLogDTO = new OperationLogDTO();
+            operationLogDTO.setTime(updateTime);
+            operationLogDTO.setAcount(username);
+            operationLogDTO.setOperation(operation);
+            operationLogDTO.setRemark(remark);
+            operationLogDTO.setOs(os);
+            operationLogDTO.setType(type);
+            operationLogDTO.setOperaType(operaType);
+            operationLogDTO.setUserId(userId);
+            operationLogDTO.setDeviceName(deviceName);
+            operationLogDTO.setArea(area);
+            operationLogDTO.setSection(section);
+            operationLogDTO.setSn(sn);
+            operationLogDTO.setAreaId(areaId);
+            operationLogDTO.setSectionId(sectionId);
+            operationLogDTO.setDevId(id);
+            operationLogDTO.setSqlLog(sql_log);
+            operationLogDTO.setIpAddr(ip);
+            operationLogDTO.setLocation(location);
+            operationLogService.add(operationLogDTO);
+
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        }
+
+    }
+    public String getLocationByIp(String ip) throws IOException {
+        //把域名都转换成ip地址
+        ip = InetAddress.getByName(ip).getHostAddress();
+
+        IpInfoDTO infoDTO = ipInfoService.getDataByIp(ip);
+        String location = "";
+        if (infoDTO == null){
+            IpInfoDTO newInfoDTO = new IpInfoDTO();
+            if (ip.equals("127.0.0.1")){
+                //本地添加
+                location = "服务器本地";
+                newInfoDTO.setLocation(location);
+                newInfoDTO.setIpAddr(ip);
+                ipInfoService.add(newInfoDTO);
+
+            }else {
+                String url = "https://opendata.baidu.com/api.php?query="+ip+"&co=&resource_id=6006&oe=utf8";
+                JSONObject jsonObject = new JSONObject();
+                jsonObject.put("query",ip);
+                jsonObject.put("co",null);
+                jsonObject.put("resource_id",600);
+                jsonObject.put("oe","utf8");
+                String respone = this.sendHttp("get", url, jsonObject.toString(), 4, ContentTypeEnum.CONTENT_TYPE_JSON);
+                if (respone != null){
+                    JSONObject responeJson = JSON.parseObject(respone);
+                    String status = responeJson.getString("status");
+                    if (status.equals("0")){
+                        //成功
+                        //数组
+                        JSONArray jsonArray = responeJson.getJSONArray("data");
+                        JSONObject item = (JSONObject)(jsonArray.get(0));
+                        location = item.getString("location");
+                        newInfoDTO.setLocation(location);
+                        newInfoDTO.setIpAddr(ip);
+                        ipInfoService.add(newInfoDTO);
+                    }
+                }
+            }
+        }else {
+            location = infoDTO.getLocation();
+        }
+        return location;
     }
     }
 }
 }

+ 1 - 1
src/main/java/com/welampiot/vo/LampPoleVO.java

@@ -11,7 +11,7 @@ import java.util.Map;
 public class LampPoleVO implements Serializable {
 public class LampPoleVO implements Serializable {
     private List sectionList; // 路段筛选
     private List sectionList; // 路段筛选
     private Integer total;
     private Integer total;
-    private Integer devType;
+    private String devType;
     private Integer devId;
     private Integer devId;
     private List<Map> lightDevList;
     private List<Map> lightDevList;
     private List<Map> benchDevList;
     private List<Map> benchDevList;

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

@@ -203,4 +203,16 @@
             g.id = #{id}
             g.id = #{id}
     </update>
     </update>
 
 
+    <select id="getListByIds" resultType="GroupDTO">
+        select id,lampid,number from `group`
+        <trim prefix="where" suffixOverrides="and|or">
+            <if test="ids !=null">
+                id in
+                <foreach collection="ids" open="(" close=")" item="id" separator=",">
+                    #{id}
+                </foreach>
+            </if>
+        </trim>
+
+    </select>
 </mapper>
 </mapper>

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

@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.welampiot.dao.IpInfoDao">
+    <select id="getDataByIp" resultType="IpInfoDTO">
+        select * from ip_info
+        <trim prefix="where" suffixOverrides="and|or">
+            <if test="ipAddr != null">
+                ip_addr = #{ipAddr}
+            </if>
+        </trim>
+        limit 1
+    </select>
+    <update id="updateByIp">
+        update ip_info set
+        <if test="ipAddr != null">
+            ip_addr = #{ipAddr},
+        </if>
+        <if test="lacation != null">
+            location = #{location}
+        </if>
+        where ip_addr = #{ipAddr}
+    </update>
+    <insert id="add" parameterType="IpInfoDTO" useGeneratedKeys="true" keyProperty="id">
+        insert into ip_info(ip_addr, location) VALUES (#{ipAddr},#{location})
+    </insert>
+</mapper>

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

@@ -273,8 +273,8 @@
         <if test="number != null">
         <if test="number != null">
             and L.number = #{number}
             and L.number = #{number}
         </if>
         </if>
-        <if test="sn != null">
-            and L.address = #{sn}
+        <if test="address != null">
+            and L.address = #{address}
         </if>
         </if>
         <if test="id != null">
         <if test="id != null">
             and L.id != #{id}
             and L.id != #{id}
@@ -295,8 +295,8 @@
         <if test="number != null">
         <if test="number != null">
             and L.number = #{number}
             and L.number = #{number}
         </if>
         </if>
-        <if test="sn != null">
-            and L.address = #{sn}
+        <if test="address != null">
+            and L.address = #{address}
         </if>
         </if>
         <if test="id != null">
         <if test="id != null">
             and L.id != #{id}
             and L.id != #{id}
@@ -1255,12 +1255,12 @@
                 id = #{id} or
                 id = #{id} or
             </if>
             </if>
             <if test="address != null and address != ''">
             <if test="address != null and address != ''">
-                address = #{sn} or
+                address = #{address} or
             </if>
             </if>
             <if test="networkId != null and networkId != 0">
             <if test="networkId != null and networkId != 0">
                 networkid = #{networkId} or
                 networkid = #{networkId} or
             </if>
             </if>
-            <if test="macAddress != null and macAddress = ''">
+            <if test="macAddress != null and macAddress != ''">
                 macAddress = #{macAddress} or
                 macAddress = #{macAddress} or
             </if>
             </if>
 
 
@@ -1268,7 +1268,7 @@
         limit 0,1
         limit 0,1
     </select>
     </select>
     <select id="getListByDto" resultType="LampInfoDTO">
     <select id="getListByDto" resultType="LampInfoDTO">
-        select id,address,mode,control_type as controlType from lampinfo
+        select id,address,mode,control_type as controlType,dev_addr as devAddr from lampinfo
         <trim prefix="where" suffixOverrides="and|or">
         <trim prefix="where" suffixOverrides="and|or">
             <if test="id != null">
             <if test="id != null">
                 id = #{id} or
                 id = #{id} or
@@ -1280,4 +1280,51 @@
         </trim>
         </trim>
         limit 0,2
         limit 0,2
     </select>
     </select>
+    <insert id="addByDto" parameterType="com.welampiot.dto.LampInfoDTO" useGeneratedKeys="true" keyProperty="id"
+    >
+        insert into lampinfo(networkid,name,number,address,areaid,sectionid,longitude,latitude,createtime,ratedpower,control_type
+        <if test="macAddress != null">,macAddress</if>
+        <if test="mode != null">,mode</if>
+        <if test="lampPoleId != null and lampPoleId != 0">,lamp_pole_id</if>
+        <if test="installDate != null">,install_date</if>
+        <if test="expirationDate != null">,expiration_date</if>
+        <if test="devAddr != null and devAddr != 0">,dev_addr</if>
+        <if test="freqId != null">,freqId</if>
+        <if test="loopNumber != null">,zegbee_section_id</if>
+        <if test="bindStatus != null">,bindStatus</if>
+        )
+        values
+        (#{networkId},#{name},#{number},#{address},#{areaId},#{sectionId},#{longitude},#{latitude},#{createTime},#{ratedPower},#{controlType}
+        <if test="macAddress != null">,#{macAddress}</if>
+        <if test="mode != null">,#{mode}</if>
+        <if test="lampPoleId != null and lampPoleId != 0">,#{lampPoleId}</if>
+        <if test="installDate != null">,#{installDate}</if>
+        <if test="expirationDate != null">,#{expirationDate}</if>
+        <if test="devAddr != null and devAddr != 0">,#{devAddr}</if>
+        <if test="freqId != null">,#{freqId}</if>
+        <if test="loopNumber != null">,#{zegbeeSectionId}</if>
+        <if test="bindStatus != null">,#{bindStatus}</if>
+        )
+    </insert>
+    <update id="updateById" parameterType="com.welampiot.dto.LampInfoDTO"
+    >
+        update lampinfo
+        set
+        networkid=#{networkId},
+        name=#{name},
+        number=#{number},
+        address=#{address},
+        areaid=#{areaId},
+        control_type=#{controlType},
+        sectionid=#{sectionId},
+        longitude=#{longitude},
+        latitude=#{latitude}
+        <if test="mode != null">,mode=#{mode}</if>
+        <if test="lampPoleId != null and lampPoleId != 0">,lamp_pole_id=#{lampPoleId}</if>
+        <if test="installDate != null">,install_date=#{installDate}</if>
+        <if test="expirationDate != null">,expiration_date=#{expirationDate}</if>
+        <if test="ratedpower != null and ratedpower != 0">,ratedpower=#{ratedPower}</if>
+
+        where id = #{id}
+    </update>
 </mapper>
 </mapper>

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

@@ -163,7 +163,7 @@
 <!--        </if>-->
 <!--        </if>-->
         )
         )
     </insert>
     </insert>
-    <insert id="update" parameterType="com.welampiot.dto.LampPoleDTO"
+    <insert id="update" parameterType="LampPoleVO"
     >
     >
         update lamp_pole
         update lamp_pole
         set
         set
@@ -1329,4 +1329,23 @@
         </if>
         </if>
         group by LP.id
         group by LP.id
     </select>
     </select>
+
+    <insert id="updateById" parameterType="LampPoleDTO"
+    >
+        update lamp_pole
+        set
+        <if test="sn != null">sn = #{sn},</if>
+        <if test="name != null">name = #{name},</if>
+        <if test="number != null">number = #{number},</if>
+        <if test="height != null">height = #{height},</if>
+        <if test="areaId != null">areaid = #{areaId},</if>
+        <if test="devType != null">devtype = #{devType},</if>
+        <if test="sectionId != null">sectionid = #{sectionId},</if>
+        <if test="longitude != null">longitude = #{longitude},</if>
+        <if test="latitude != null">latitude = #{latitude},</if>
+        <if test="installDate != null">install_date = #{installDate},</if>
+        <if test="expirationDate != null">expiration_date = #{expirationDate},</if>
+        id=#{id}
+        where id = #{id}
+    </insert>
 </mapper>
 </mapper>

+ 21 - 5
src/main/resources/mapper/NetworkMapper.xml

@@ -2,10 +2,13 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.welampiot.dao.NetworkDao">
 <mapper namespace="com.welampiot.dao.NetworkDao">
     <insert id="add" parameterType="com.welampiot.dto.NetworkDTO" useGeneratedKeys="true" keyProperty="id">
     <insert id="add" parameterType="com.welampiot.dto.NetworkDTO" useGeneratedKeys="true" keyProperty="id">
-        insert into network(network_name,devicesn,protocoltype,areaid,sectionid,createtime,net_type,gatewaytype,devicetype,userId)
+        insert into network(network_name,devicesn,protocoltype,areaid,sectionid,createtime,net_type,gatewaytype,userId
+        <if test="deviceType != null">,devicetype</if>
         <if test="deviceId != null">,deviceid</if>
         <if test="deviceId != null">,deviceid</if>
+        )
         values
         values
-        (#{networkName},#{deviceSn},#{protocolType},#{areaId},#{sectionId},#{createTime},#{netType},#{gatewayType},#{deviceType},#{userId}
+        (#{networkName},#{deviceSn},#{protocolType},#{areaId},#{sectionId},#{createTime},#{netType},#{gatewayType},#{userId}
+        <if test="deviceType != null">,#{deviceType}</if>
         <if test="deviceId != null">,#{deviceId}</if>
         <if test="deviceId != null">,#{deviceId}</if>
         )
         )
 
 
@@ -339,9 +342,22 @@
         update
         update
             network n
             network n
         set
         set
-            n.expiration_time = #{expirationTime}
+            <trim suffixOverrides=",">
+                <if test="expirationTime != null and expirationTime != ''">
+                    n.expiration_time = #{expirationTime},
+                </if>
+                <if test="lampCount != null and lampCount != 0">
+                    n.lampcount = #{lampCount},
+                </if>
+            </trim>
         where
         where
-            n.simid = #{simId}
+            <choose>
+                <when test="simId != null">
+                    n.simid = #{simId}
+                </when>
+                <otherwise>id=#{id}</otherwise>
+            </choose>
+
     </update>
     </update>
 
 
     <delete id="deleteNetworkData">
     <delete id="deleteNetworkData">
@@ -351,7 +367,7 @@
     </delete>
     </delete>
 
 
     <select id="getSimpleData" resultType="NetworkDTO">
     <select id="getSimpleData" resultType="NetworkDTO">
-        select id,devicesn as deviceSn,protocoltype as protocolType,uid as uId from network
+        select id,devicesn as deviceSn,protocoltype as protocolType,uid as uId,lampcount as lampCount from network
         <trim prefix="where" suffixOverrides="and|or">
         <trim prefix="where" suffixOverrides="and|or">
             <if test="id != null">
             <if test="id != null">
                 id = #{id} or
                 id = #{id} or

+ 0 - 1
src/main/resources/mapper/OperationLogMapper.xml

@@ -228,5 +228,4 @@
             </when>
             </when>
         </choose>
         </choose>
     </select>
     </select>
-
 </mapper>
 </mapper>

+ 10 - 12
src/test/java/com/welampiot/service/UserServiceTest.java

@@ -1,9 +1,9 @@
 package com.welampiot.service;
 package com.welampiot.service;
 
 
-import com.alibaba.fastjson.JSONObject;
-import com.welampiot.configuration.FreqConfig;
-import com.welampiot.configuration.FreqMapConfig;
+import com.welampiot.configuration.LastSqlInterceptor;
+import com.welampiot.dto.GroupDTO;
 import com.welampiot.dto.LampInfoDTO;
 import com.welampiot.dto.LampInfoDTO;
+import com.welampiot.dto.OperationLogDTO;
 import com.welampiot.utils.*;
 import com.welampiot.utils.*;
 import org.junit.Test;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.junit.runner.RunWith;
@@ -13,9 +13,6 @@ import org.springframework.test.context.junit4.SpringRunner;
 
 
 import javax.annotation.Resource;
 import javax.annotation.Resource;
 import javax.sql.DataSource;
 import javax.sql.DataSource;
-import java.io.IOException;
-import java.nio.charset.StandardCharsets;
-import java.sql.SQLException;
 import java.util.*;
 import java.util.*;
 
 
 @RunWith(SpringRunner.class)
 @RunWith(SpringRunner.class)
@@ -30,19 +27,20 @@ public class UserServiceTest {
     @Autowired
     @Autowired
     private VideoGbInfoService videoGbInfoService;
     private VideoGbInfoService videoGbInfoService;
     @Resource
     @Resource
+    private LastSqlInterceptor lastSqlInterceptor;
+    @Autowired
     private LampService lampService;
     private LampService lampService;
 
 
 
 
     @Test
     @Test
     public void testConnection() throws Exception {
     public void testConnection() throws Exception {
         LampInfoDTO lampInfoDTO = new LampInfoDTO();
         LampInfoDTO lampInfoDTO = new LampInfoDTO();
-        String sn = "06780064";
-        String macAddress = "352011200865";
-        lampInfoDTO.setMacAddress(macAddress);
-        lampInfoDTO.setAddress(sn);
-        List<LampInfoDTO> listByDto = lampService.getListByDto(lampInfoDTO);
-        System.out.println("===dd=:"+listByDto);
+        lampInfoDTO.setAddress("12000000");
+        lampInfoDTO.setId(108);
+        lampService.updateById(lampInfoDTO);//updateById ,addById
+         System.out.println("====dd:"+lastSqlInterceptor.sqlContent);
 
 
+        //schemaParamsterInterceptor.intercept()
 //        long l = System.currentTimeMillis() - (24L * 3600 * 30*1000);
 //        long l = System.currentTimeMillis() - (24L * 3600 * 30*1000);
 //        Date date = new Date(l);
 //        Date date = new Date(l);
 //        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
 //        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");