Переглянути джерело

获取WiFi信息、修改WiFi信息

zhj 2 роки тому
батько
коміт
398308dc6b

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

@@ -91,6 +91,11 @@ public enum InterfaceResultEnum {
     LACK_NETWORK_TYPE_ERROR("0284","网络类型不能为空","The network type cannot be empty","Тип сети не может быть пустым"),
     DATE_CHOOSE_ERROR("0285","选择时间错误,请重新选择!","The selected time is wrong, please choose again!","Пожалуйста, выберите другое время!"),
     LACK_LOCATION_ERROR("0286","经纬度不能为空","The latitude and longitude cannot be empty","Широта и долгота не могут быть пустыми"),
+    LACK_WIFI_NAME_ERROR("0287","WiFi名称不能为空","The WiFi name cannot be empty","Название WiFi не может быть пустым"),
+    LACK_WIFI_PWD_ERROR("0288","WiFi密码不能为空","The WiFi password cannot be empty","Пароль от wi-fi не может быть пустым"),
+    LACK_WIFI_TYPE_ERROR("0289","WiFi安全选项不能为空","The WiFi security option cannot be empty","Опция безопасности WiFi не может быть пустой"),
+    WIFI_NAME_LENGTH_ERROR("0290","WiFi名字长度不能超过30位","The length of the WiFi name cannot exceed 30 characters","Длина имени WiFi не может превышать 30 бит"),
+    WIFI_PWD_LENGTH_ERROR("0291","WiFi密码长度要在8~30之间","The length of the WiFi password must be between 8 and 30","Длина пароля от 8 до 30"),
     ;
     private String code;
     private String msgCn;

+ 130 - 0
src/main/java/com/welampiot/controller/MapController.java

@@ -1,5 +1,8 @@
 package com.welampiot.controller;
 
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.fasterxml.jackson.core.JsonProcessingException;
 import com.welampiot.common.BaseResult;
 import com.welampiot.common.InterfaceResultEnum;
 import com.welampiot.dto.*;
@@ -81,6 +84,8 @@ public class MapController{
     private ManholeService manholeService;
     @Autowired
     private LampInfoLogService lampInfoLogService;
+    @Autowired
+    private WifiService wifiService;
 
     @PostMapping("/getIlluminance")
     private BaseResult getIlluminance(HttpServletRequest request){
@@ -1901,4 +1906,129 @@ public class MapController{
         }
         return toolUtils.response(InterfaceResultEnum.OPERATION_SUCCESS,version,lampInfoVO);
     }
+
+    /**
+     * 获取WiFi信息
+     * @param request lampPoleId
+     * @return wifi信息
+     */
+    @RequestMapping(value = "/wifiInfo", method = RequestMethod.POST)
+    public BaseResult<?> wifiInfo(HttpServletRequest request) throws JsonProcessingException {
+        Integer version = (Integer) toolUtils.getRequestContent(request,"version",1);
+        Integer lampPoleId = (Integer) toolUtils.getRequestContent(request,"lampPoleId",1);
+        if (lampPoleId == 0) return toolUtils.response(InterfaceResultEnum.LACK_PARAM_ERROR,version);
+        WifiDTO wifiDTO = wifiService.getWifiInfoByLampPoleId(lampPoleId);
+        if (wifiDTO == null) return toolUtils.response(InterfaceResultEnum.PARAM_FAIL,version);
+        String sendTopic = "/WEGW2/ReadIn/" + wifiDTO.getNum();
+        String resTopic = "/WEGW2/ReadOut/" + wifiDTO.getNum();
+        String cmd = "0001B10B";
+        String cmd1 = "0001AA01";
+        byte[] bytes = toolUtils.hexString2Bytes(cmd);
+        byte[] bytes1 = toolUtils.hexString2Bytes(cmd1);
+        String resCmd = toolUtils.sendMqttCmd(sendTopic, bytes, resTopic);
+        String resCmd1 = toolUtils.sendMqttCmd(sendTopic, bytes1, resTopic);
+        System.out.println("resCmd:" + resCmd);
+        System.out.println("resCmd1:" + resCmd1);
+        String jsonStr ="{ " + resCmd.substring(bytes.length);
+        String jsonStr1 ="{ " + resCmd1.substring(bytes1.length);
+        JSONObject jsonObject = JSONObject.parseObject(jsonStr);
+        JSONObject jsonObject1 = JSONObject.parseObject(jsonStr1);
+        String name = jsonObject.getString("B1");
+        Integer type = jsonObject.getInteger("B2");
+        String wifiPwd = jsonObject.getString("B3");
+        Integer wifiStatus = jsonObject.getInteger("B4");
+        Long allDownTraffic = jsonObject.getLong("B6");
+        Integer dayDownTraffic = jsonObject.getInteger("B8");
+        Integer allConn = jsonObject.getInteger("B9");
+        Integer dayConn = jsonObject.getInteger("BA");
+        String wifiVersion = jsonObject1.getString("AA");
+        StringBuilder stringBuilder = new StringBuilder(wifiVersion);
+        if (stringBuilder.charAt(stringBuilder.length() - 1) == '\n') {
+            stringBuilder.deleteCharAt(stringBuilder.length() - 1);
+        }
+        wifiVersion = stringBuilder.toString();
+        JSONArray deviceList = jsonObject.getJSONArray("BB");
+        List<WifiDeviceDTO> list = new ArrayList<>();
+        for (Object o : deviceList) {
+            JSONObject deviceObject = JSONObject.parseObject(o.toString());
+            WifiDeviceDTO wifiDeviceDTO = JSONObject.toJavaObject(deviceObject, WifiDeviceDTO.class);
+            list.add(wifiDeviceDTO);
+        }
+        WifiInfoVO wifiInfoVO = new WifiInfoVO();
+        wifiInfoVO.setDeviceList(list);
+        wifiInfoVO.setWifiId(wifiDTO.getNum());
+        wifiInfoVO.setWifiName(name);
+        wifiInfoVO.setWifiType(type);
+        wifiInfoVO.setWifiPwd(wifiPwd);
+        wifiInfoVO.setWifiStatus(wifiStatus);
+        wifiInfoVO.setTotalOnlineCount(allConn);
+        wifiInfoVO.setDayOnlineCount(dayConn);
+        wifiInfoVO.setWifiVersion(wifiVersion);
+        wifiInfoVO.setTotalFlow(allDownTraffic);
+        wifiInfoVO.setDayFlow(dayDownTraffic);
+        wifiInfoVO.setNetType(wifiDTO.getNetType());
+        if (wifiDTO.getNetType() == 1) {
+            wifiInfoVO.setWifiNet("ETH");
+        } else {
+            wifiInfoVO.setWifiNet("4G");
+        }
+        switch (wifiDTO.getModel()) {
+            case "6":
+                wifiInfoVO.setWifiModel("WE-GW-G600");
+                break;
+            case "5":
+                wifiInfoVO.setWifiModel("WE-GW-G260");
+                break;
+            case "4":
+                wifiInfoVO.setWifiModel("WE-XA-G20");
+                break;
+            case "3":
+                wifiInfoVO.setWifiModel("WE-GW-G300");
+                break;
+            case "2":
+                wifiInfoVO.setWifiModel("WE-GW-G40");
+                break;
+            case "1":
+                wifiInfoVO.setWifiModel("WE-GW-G200");
+                break;
+            default:
+                wifiInfoVO.setWifiModel("WE-GW-G100");
+                break;
+        }
+        return toolUtils.response(InterfaceResultEnum.OPERATION_SUCCESS,version,wifiInfoVO);
+    }
+
+    /**
+     * 修改WiFi信息
+     * @param request lampPoleId
+     * @return 修改WiFi名,密码以及安全类型
+     */
+    @RequestMapping(value = "/wifiSave", method = RequestMethod.POST)
+    public BaseResult<?> wifiSave(HttpServletRequest request) {
+        Integer version = (Integer) toolUtils.getRequestContent(request,"version",1);
+        Integer lampPoleId = (Integer) toolUtils.getRequestContent(request,"lampPoleId",1);
+        if (lampPoleId == 0) return toolUtils.response(InterfaceResultEnum.LACK_PARAM_ERROR,version);
+        WifiDTO wifiDTO = wifiService.getWifiInfoByLampPoleId(lampPoleId);
+        if (wifiDTO == null) return toolUtils.response(InterfaceResultEnum.PARAM_FAIL,version);
+        String wifiName = (String) toolUtils.getRequestContent(request,"wifiName",2);
+        Integer wifiType = (Integer) toolUtils.getRequestContent(request,"wifiType",1);
+        String wifiPwd = (String) toolUtils.getRequestContent(request,"wifiPwd",2);
+        if (wifiName.length() == 0)
+            return toolUtils.response(InterfaceResultEnum.LACK_WIFI_NAME_ERROR,version);
+        if (wifiPwd.length() == 0)
+            return toolUtils.response(InterfaceResultEnum.LACK_WIFI_PWD_ERROR,version);
+        if (String.valueOf(wifiType).length() == 0)
+            return toolUtils.response(InterfaceResultEnum.LACK_WIFI_TYPE_ERROR,version);
+        if (wifiName.length() > 30)
+            return toolUtils.response(InterfaceResultEnum.WIFI_NAME_LENGTH_ERROR,version);
+        if (wifiPwd.length() < 8 || wifiPwd.length() > 30)
+            return toolUtils.response(InterfaceResultEnum.WIFI_PWD_LENGTH_ERROR,version);
+        String sendTopic = "/WEGW2/WriteIn/" + wifiDTO.getNum();
+        String resTopic = "/WEGW2/WriteOut/" + wifiDTO.getNum();
+        String cmd = "0001{\"B1\":\"" + wifiName + "\",\"B2\":" + wifiType +  ",\"B3\":\"" + wifiPwd + "\"}";
+        System.out.println("cmd:" + cmd);
+        String resCmd = toolUtils.sendMqttCmd(sendTopic, cmd, resTopic);
+        System.out.println("resCmd:" + resCmd);
+        return toolUtils.response(InterfaceResultEnum.OPERATION_SUCCESS,version);
+    }
 }

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

@@ -27,4 +27,5 @@ public interface WifiDao {
     Integer update(WifiDTO dto);
     WifiDTO getDetailByDTO(WifiDTO dto);
     Integer deleteById(@Param("id")Integer id);
+    WifiDTO getWifiInfoByLampPoleId(@Param("lampPoleId") Integer lampPoleId);
 }

+ 19 - 0
src/main/java/com/welampiot/dto/WifiDeviceDTO.java

@@ -0,0 +1,19 @@
+package com.welampiot.dto;
+
+import lombok.Data;
+
+/**
+ * ClassName: WifiDeviceDTO
+ * Package: com.welampiot.dto
+ * Description:
+ *
+ * @Author: zhj_Start
+ * @Create: 2023/6/25 - 18:16
+ * @Version: v1.0
+ */
+@Data
+public class WifiDeviceDTO {
+    private String name;
+    private String mac;
+    private Integer disable;
+}

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

@@ -29,4 +29,5 @@ public interface WifiService {
     WifiDTO getDetailByDTO(WifiDTO dto);
     Integer deleteById(@Param("id")Integer id);
     List<WifiDTO> getWifiListByDTO(WifiDTO dto);
+    WifiDTO getWifiInfoByLampPoleId(Integer lampPoleId);
 }

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

@@ -177,4 +177,9 @@ public class WifiServiceImpl implements WifiService {
     public List<WifiDTO> getWifiListByDTO(WifiDTO dto) {
         return wifiDao.getWifiListByDTO(dto);
     }
+
+    @Override
+    public WifiDTO getWifiInfoByLampPoleId(Integer lampPoleId) {
+        return wifiDao.getWifiInfoByLampPoleId(lampPoleId);
+    }
 }

+ 46 - 0
src/main/java/com/welampiot/vo/WifiInfoVO.java

@@ -0,0 +1,46 @@
+package com.welampiot.vo;
+
+import com.welampiot.dto.WifiDeviceDTO;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * ClassName: WifiInfoVO
+ * Package: com.welampiot.vo
+ * Description:
+ *
+ * @Author: zhj_Start
+ * @Create: 2023/6/25 - 19:03
+ * @Version: v1.0
+ */
+@Data
+public class WifiInfoVO {
+    private String wifiId;
+
+    private Integer wifiStatus;
+
+    private String wifiNet;
+
+    private String wifiModel;
+
+    private String wifiName;
+
+    private String wifiPwd;
+
+    private String wifiVersion;
+
+    private Integer wifiType;
+
+    private Integer totalOnlineCount;
+
+    private Long totalFlow;
+
+    private Integer dayOnlineCount;
+
+    private Integer dayFlow;
+
+    private Integer netType;
+
+    private List<WifiDeviceDTO> deviceList;
+}

+ 7 - 0
src/main/resources/mapper/WifiMapper.xml

@@ -150,4 +150,11 @@
         delete from wifi
         where id=#{id}
     </delete>
+
+    <select id="getWifiInfoByLampPoleId" resultType="WifiDTO">
+        select w.num,w.net_type as netType,w.model
+        from wifi w
+        where w.lamp_pole_id = #{lampPoleId}
+    </select>
+
 </mapper>