From 5c427a35595e2deb2c1a025ff9a4c164d498e01d Mon Sep 17 00:00:00 2001
From: jinpengyong <jpy123456>
Date: Fri, 24 Dec 2021 11:00:44 +0800
Subject: [PATCH] 行业贡献率:行业列表,传感器列表接口

---
 screen-api/src/main/java/com/moral/api/service/ProfessionService.java          |   13 ++++
 screen-api/src/main/java/com/moral/api/service/impl/ProfessionServiceImpl.java |   86 ++++++++++++++++++++++++++++
 screen-api/src/main/java/com/moral/api/controller/ProfessionController.java    |   56 ++++++++++++++++++
 3 files changed, 155 insertions(+), 0 deletions(-)

diff --git a/screen-api/src/main/java/com/moral/api/controller/ProfessionController.java b/screen-api/src/main/java/com/moral/api/controller/ProfessionController.java
new file mode 100644
index 0000000..33c95c7
--- /dev/null
+++ b/screen-api/src/main/java/com/moral/api/controller/ProfessionController.java
@@ -0,0 +1,56 @@
+package com.moral.api.controller;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.CrossOrigin;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import javax.servlet.http.HttpServletRequest;
+
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.moral.api.service.ProfessionService;
+import com.moral.constant.ResponseCodeEnum;
+import com.moral.constant.ResultMessage;
+import com.moral.util.WebUtils;
+
+@Slf4j
+@Api(tags = {"���������������������"})
+@RestController
+@CrossOrigin(origins = "*", maxAge = 3600)
+@RequestMapping("/profession")
+public class ProfessionController {
+
+    @Autowired
+    private ProfessionService professionService;
+
+    @ApiOperation(value = "������������id������������������������������", notes = "������������id������������������������������")
+    @GetMapping("getProfessionsByOrganizationId")
+    public ResultMessage getProfessions(Integer organizationId) {
+        if (ObjectUtils.isEmpty(organizationId)) {
+            return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(),
+                    ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
+        }
+        Set<Map<String, Object>> response = professionService.getProfessionsByOrganizationId(organizationId);
+        return ResultMessage.ok(response);
+    }
+
+    @ApiOperation(value = "���������������������������������������������", notes = "���������������������������������������������")
+    @GetMapping("getSensorByProfessions")
+    public ResultMessage getProfessions(HttpServletRequest request) {
+        Map<String, Object> params = WebUtils.getParametersStartingWith(request, null);
+        if (ObjectUtils.isEmpty(params.get("organizationId")) || ObjectUtils.isEmpty(params.get("professions"))) {
+            return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(),
+                    ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
+        }
+        Set<Map<String, Object>> response = professionService.getSensorByProfessionsAndOrganizationId(params);
+        return ResultMessage.ok(response);
+    }
+}
diff --git a/screen-api/src/main/java/com/moral/api/service/ProfessionService.java b/screen-api/src/main/java/com/moral/api/service/ProfessionService.java
new file mode 100644
index 0000000..ba24c92
--- /dev/null
+++ b/screen-api/src/main/java/com/moral/api/service/ProfessionService.java
@@ -0,0 +1,13 @@
+package com.moral.api.service;
+
+import java.util.Map;
+import java.util.Set;
+
+public interface ProfessionService {
+
+    //������������id���������������������������������������������
+    Set<Map<String, Object>> getProfessionsByOrganizationId(Integer organizationId);
+
+    //������������������������������������������
+    Set<Map<String, Object>> getSensorByProfessionsAndOrganizationId(Map<String, Object> params);
+}
diff --git a/screen-api/src/main/java/com/moral/api/service/impl/ProfessionServiceImpl.java b/screen-api/src/main/java/com/moral/api/service/impl/ProfessionServiceImpl.java
new file mode 100644
index 0000000..d67599f
--- /dev/null
+++ b/screen-api/src/main/java/com/moral/api/service/impl/ProfessionServiceImpl.java
@@ -0,0 +1,86 @@
+package com.moral.api.service.impl;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.stereotype.Service;
+
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.moral.api.entity.Device;
+import com.moral.api.entity.Sensor;
+import com.moral.api.service.DeviceService;
+import com.moral.api.service.ProfessionService;
+import com.moral.constant.Constants;
+import com.moral.constant.RedisConstants;
+
+/**
+ * <p>
+ * ���������������������������
+ * </p>
+ *
+ * @author moral
+ * @since 2021-12-23
+ */
+@Service
+public class ProfessionServiceImpl implements ProfessionService {
+
+    @Autowired
+    private DeviceService deviceService;
+
+    @Autowired
+    private RedisTemplate redisTemplate;
+
+    @Override
+    public Set<Map<String, Object>> getProfessionsByOrganizationId(Integer organizationId) {
+        //������������������������������
+        List<Map<String, Object>> devices = deviceService.getDevicesByOrganizationId(organizationId);
+        Set<Map<String, Object>> result = new HashSet<>();
+        for (Map<String, Object> device : devices) {
+            List<Map<String, Object>> professions = (List<Map<String, Object>>) device.get("professions");
+            result.addAll(professions);
+        }
+        return result;
+    }
+
+    @Override
+    public Set<Map<String, Object>> getSensorByProfessionsAndOrganizationId(Map<String, Object> params) {
+        Set<Map<String, Object>> result = new HashSet<>();
+        //���������������������������������
+        Integer orgId = Integer.parseInt(params.get("organizationId").toString());
+        List<String> professions = Arrays.asList(params.get("professions").toString().split(","));
+        QueryWrapper<Device> queryWrapper = new QueryWrapper<>();
+        queryWrapper.select("mac", "profession")
+                .eq("organization_id", orgId)
+                .eq("is_delete", Constants.NOT_DELETE);
+        List<Device> devices = deviceService.list(queryWrapper);
+        devices = devices.stream().filter(device -> {
+            String[] list = device.getProfession().split(",");
+            for (String s : list) {
+                if (professions.contains(s)) {
+                    return true;
+                }
+            }
+            return false;
+        }).collect(Collectors.toList());
+
+        //���redis������������������������
+        for (Device device : devices) {
+            device = (Device) redisTemplate.opsForHash().get(RedisConstants.DEVICE_INFO, device.getMac());
+            List<Sensor> sensors = device.getVersion().getSensors();
+            for (Sensor sensor : sensors) {
+                Map<String, Object> sensorMap = new HashMap<>();
+                sensorMap.put("sensorCode", sensor.getCode());
+                sensorMap.put("sensorName", sensor.getName());
+                result.add(sensorMap);
+            }
+        }
+        return result;
+    }
+}

--
Gitblit v1.8.0