Browse Source

MpTool:查找设备

zhj 2 năm trước cách đây
mục cha
commit
a2e75dd941

+ 79 - 0
src/main/java/com/welampiot/controller/MpToolController.java

@@ -0,0 +1,79 @@
+package com.welampiot.controller;
+
+import com.welampiot.common.BaseResult;
+import com.welampiot.common.InterfaceResultEnum;
+import com.welampiot.dto.LampInfoDTO;
+import com.welampiot.service.LampService;
+import com.welampiot.utils.ToolUtils;
+import com.welampiot.vo.LampInfoVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.CrossOrigin;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+/**
+ * ClassName: MpToolController
+ * Package: com.welampiot.controller
+ * Description:
+ *
+ * @Author: zhj_Start
+ * @Create: 2023/9/14 - 11:17
+ * @Version: v1.0
+ */
+@RestController
+@CrossOrigin
+@RequestMapping("/mpTool")
+public class MpToolController {
+    @Autowired
+    private ToolUtils toolUtils;
+    @Autowired
+    private LampService lampService;
+
+    /**
+     * 查找设备
+     * @param request 灯控设备地址
+     * @return 灯控设备
+     */
+    @RequestMapping(value = "/scanDevice", method = RequestMethod.POST)
+    public BaseResult<?> scanDevice(HttpServletRequest request) {
+        Integer version = (Integer) toolUtils.getRequestContent(request, "version", 1);
+        String sn = (String) toolUtils.getRequestContent(request, "sn", 2);
+        if (sn.length() == 0) return toolUtils.response(InterfaceResultEnum.LACK_PARAM_ERROR,version);
+
+        LampInfoVO lampInfoVO = new LampInfoVO();
+        List<LampInfoDTO> lampDevList = lampService.findLampDeviceBySn(sn,version);
+        if (lampDevList.isEmpty()) { // 没有查询到设备
+            lampInfoVO.setHasDev(0);
+        } else {                     // 查询到设备
+            lampInfoVO.setHasDev(1);
+            LampInfoDTO dev1 = lampDevList.get(0);
+            if (dev1.getSection() == null) dev1.setSection("");
+            if (dev1.getArea() == null) dev1.setArea("");
+            if (dev1.getCity() == null) dev1.setCity("");
+            if (dev1.getProvince() == null) dev1.setProvince("");
+            lampInfoVO.setSectionName(dev1.getProvince() + dev1.getCity() + dev1.getArea() + dev1.getSection());
+            int protocolType = dev1.getProtocolType();
+            int controlType = dev1.getControlType();
+            lampInfoVO.setProtocolType(protocolType);
+            lampInfoVO.setControlType(controlType);
+            Set<Integer> controlTypeSet = new HashSet<>(Arrays.asList(5,8,9,22,25,27,29,34));
+            if (controlTypeSet.contains(controlType)) { // 双灯控制器
+                LampInfoDTO dev2 = lampDevList.get(1);
+                lampInfoVO.setIsDb(1);
+                lampInfoVO.setDev1(dev1);
+                lampInfoVO.setDev2(dev2);
+            } else { // 单灯控制器
+                lampInfoVO.setIsDb(0);
+                lampInfoVO.setDev1(dev1);
+            }
+        }
+        return toolUtils.response(InterfaceResultEnum.OPERATION_SUCCESS,version,lampInfoVO);
+    }
+}

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

@@ -58,4 +58,5 @@ public interface LampDao {
     int getOnlineCountByVO(LampVO lampVO);
     List<LampInfoDTO> getLampSectionAlarmCountTop(LampVO vo);
     LampInfoDTO getLampOfLampPoleById(@Param("lampPoleId") Integer lampPoleId, @Param("lampId") Integer lampId);
+    List<LampInfoDTO> findLampDeviceBySn(@Param("address") String address, @Param("version") Integer version);
 }

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

@@ -12,6 +12,8 @@ public class LampInfoDTO {
     private String sn;
     private String address;
     private String area;
+    private String city;
+    private String province;
     private Integer areaId;
     private String section;
     private Integer sectionId;

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

@@ -59,4 +59,5 @@ public interface LampService {
     List<LampInfoDTO> getLampSectionAlarmCountTop(LampVO vo);
     LampInfoDTO getLampOfLampPoleById(Integer lampPoleId, Integer lampId);
     LampDetailVO getLampCountByDTO(LampInfoDTO dto);
+    List<LampInfoDTO> findLampDeviceBySn(String address, Integer version);
 }

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

@@ -727,6 +727,11 @@ public class LampServiceImpl implements LampService {
         return lampDetailVO;
     }
 
+    @Override
+    public List<LampInfoDTO> findLampDeviceBySn(String address, Integer version) {
+        return lampDao.findLampDeviceBySn(address, version);
+    }
+
     @Override
     public LampInfoLogNewDTO getComBySectionList(LampVO vo) {
         return lampDao.getComBySectionList(vo);

+ 8 - 0
src/main/java/com/welampiot/vo/LampInfoVO.java

@@ -35,4 +35,12 @@ public class LampInfoVO {
     private List<Object> savePower;
 
     private List<LampInfoDTO> list;
+
+    private Integer hasDev; // 是否查询到设备(0 未查询到,1 查询到)
+    private Integer isDb; // 是否为双灯控制器(0 否,1 是)
+    private Integer protocolType; // 网络协议类型
+    private Integer controlType; // 控制器类型
+    private String sectionName; // 设备路段信息
+    private LampInfoDTO dev1; // 设备1
+    private LampInfoDTO dev2; // 设备2
 }

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

@@ -1119,4 +1119,31 @@
         </if>
     </select>
 
+    <!-- 根据设备地址查找灯控设备信息 -->
+    <select id="findLampDeviceBySn" resultType="LampInfoDTO">
+        select l.id,n.protocoltype as protocolType,l.control_type as controlType,
+               s.name as section,n.status as `online`,l1.gridvolt as voltage,l1.gridcurr as `current`,
+               l1.grid_active_power as power,l1.gridPF,l.lighteness,l1.devicetime as cmdTime,l1.updatetime as updateTime,
+               l1.total_gener_energy_cache as totalEnergy,l1.work_time_total as lightTime
+               <choose>
+                   <when test="version == 0">
+                       ,g1.chinese_name as area,g2.chinese_name as city,g3.chinese_name as province
+                   </when>
+                   <when test="version == 1">
+                       ,g1.english_name as area,g2.english_name as city,g3.english_name as province
+                   </when>
+                   <otherwise>
+                       ,g1.ru_name as area,g2.ru_name as city,g3.ru_name as province
+                   </otherwise>
+               </choose>
+        from lampinfo l
+        left join lamp_info_log_new l1 on l1.lampid = l.id
+        left join network n on n.id = l.networkid
+        left join section s on l.sectionid = s.id
+        left join global_location g1 on s.pid = g1.id
+        left join global_location g2 on g1.pid = g2.id
+        left join global_location g3 on g2.pid = g3.id
+        where l.address = #{address}
+    </select>
+
 </mapper>