From 89d69ac261923790e2d46b9bf3748a6cf2f2767b Mon Sep 17 00:00:00 2001
From: kaiyu <404897439@qq.com>
Date: Thu, 20 May 2021 10:22:22 +0800
Subject: [PATCH] screen-manage                       型号查询功能完成

---
 screen-manage/src/main/java/com/moral/api/mapper/VersionMapper.java                 |   11 +
 screen-manage/src/main/java/com/moral/api/pojo/vo/sensor/SensorVO.java              |   34 +++++
 screen-manage/src/main/java/com/moral/api/pojo/vo/Version/VersionVO.java            |   33 +++++
 screen-manage/src/main/java/com/moral/api/service/impl/VersionServiceImpl.java      |   27 +++-
 screen-manage/src/main/java/com/moral/api/controller/VersionController.java         |   53 ++++++++
 screen-manage/src/main/java/com/moral/api/pojo/dto/version/VersionDTO.java          |    5 
 screen-manage/src/main/java/com/moral/api/entity/Version.java                       |    1 
 screen-manage/src/main/java/com/moral/api/service/impl/OrganizationServiceImpl.java |    2 
 screen-manage/src/main/java/com/moral/api/entity/Sensor.java                        |    5 
 screen-manage/src/main/java/com/moral/api/pojo/vo/Version/VersionQueryVO.java       |   95 +++++++++++++++
 screen-manage/src/main/resources/mapper/VersionMapper.xml                           |   79 +++++++++++-
 11 files changed, 319 insertions(+), 26 deletions(-)

diff --git a/screen-manage/src/main/java/com/moral/api/controller/VersionController.java b/screen-manage/src/main/java/com/moral/api/controller/VersionController.java
new file mode 100644
index 0000000..61aa2e9
--- /dev/null
+++ b/screen-manage/src/main/java/com/moral/api/controller/VersionController.java
@@ -0,0 +1,53 @@
+package com.moral.api.controller;
+
+import com.moral.api.entity.Version;
+import com.moral.api.mapper.VersionMapper;
+import com.moral.api.pojo.dto.version.VersionQueryDTO;
+import com.moral.api.pojo.form.version.VersionQueryForm;
+import com.moral.api.pojo.vo.Version.VersionQueryVO;
+import com.moral.api.pojo.vo.Version.VersionVO;
+import com.moral.api.service.VersionService;
+import com.moral.constant.ResponseCodeEnum;
+import com.moral.constant.ResultMessage;
+import io.swagger.annotations.Api;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * @ClassName VersionController
+ * @Description TODO
+ * @Author ���������
+ * @Date 2021/5/14 15:25
+ * @Version TODO
+ **/
+@Slf4j
+@Api(tags = {"������������������"})
+@RestController
+@RequestMapping("/version")
+public class VersionController {
+
+    @Autowired
+    VersionService versionService;
+
+    @GetMapping("query")
+    public ResultMessage query(VersionQueryForm form){
+        //������������������������
+        if (!form.valid())
+            return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(),
+                    ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
+        //������������������
+        VersionQueryDTO dto = versionService.query(form);
+
+        //������������������������
+        VersionQueryVO vo = VersionQueryVO.convert(dto);
+
+        return new ResultMessage(dto.getCode(), dto.getMsg(), vo);
+
+    }
+}
diff --git a/screen-manage/src/main/java/com/moral/api/entity/Sensor.java b/screen-manage/src/main/java/com/moral/api/entity/Sensor.java
index 2681819..649bfea 100644
--- a/screen-manage/src/main/java/com/moral/api/entity/Sensor.java
+++ b/screen-manage/src/main/java/com/moral/api/entity/Sensor.java
@@ -69,9 +69,4 @@
     @TableField(exist = false)
     private String unitKey;
 
-    @Override
-    protected Serializable pkVal() {
-        return this.id;
-    }
-
 }
diff --git a/screen-manage/src/main/java/com/moral/api/entity/Version.java b/screen-manage/src/main/java/com/moral/api/entity/Version.java
index a6cd65c..573bf94 100644
--- a/screen-manage/src/main/java/com/moral/api/entity/Version.java
+++ b/screen-manage/src/main/java/com/moral/api/entity/Version.java
@@ -61,6 +61,7 @@
     /*
     * ���������������������
     * */
+    @TableField(exist = false)
     private List<Sensor> sensors;
 
 
diff --git a/screen-manage/src/main/java/com/moral/api/mapper/VersionMapper.java b/screen-manage/src/main/java/com/moral/api/mapper/VersionMapper.java
index 0c04d0c..e60f679 100644
--- a/screen-manage/src/main/java/com/moral/api/mapper/VersionMapper.java
+++ b/screen-manage/src/main/java/com/moral/api/mapper/VersionMapper.java
@@ -3,6 +3,8 @@
 import com.moral.api.entity.Version;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 
+import java.util.List;
+
 /**
  * <p>
  * ��������� Mapper ������
@@ -12,5 +14,12 @@
  * @since 2021-05-14
  */
 public interface VersionMapper extends BaseMapper<Version> {
-
+    /**
+    * @Description: ������������id���������������������������������������������������
+            * @Param: [versionIds]
+            * @return: java.util.List<com.moral.api.entity.Version>
+            * @Author: ���������
+            * @Date: 2021/5/14
+            */
+    List<Version> queryVersionsAndSensorUnitByIds(List<Integer> versionIds);
 }
diff --git a/screen-manage/src/main/java/com/moral/api/pojo/dto/version/VersionDTO.java b/screen-manage/src/main/java/com/moral/api/pojo/dto/version/VersionDTO.java
index 89a1a80..a48eb1b 100644
--- a/screen-manage/src/main/java/com/moral/api/pojo/dto/version/VersionDTO.java
+++ b/screen-manage/src/main/java/com/moral/api/pojo/dto/version/VersionDTO.java
@@ -22,6 +22,7 @@
 
     private Version version;
 
-    private List<Sensor> sensors;
-
+    public VersionDTO(Version version) {
+        this.version = version;
+    }
 }
diff --git a/screen-manage/src/main/java/com/moral/api/pojo/vo/Version/VersionQueryVO.java b/screen-manage/src/main/java/com/moral/api/pojo/vo/Version/VersionQueryVO.java
new file mode 100644
index 0000000..1bc7352
--- /dev/null
+++ b/screen-manage/src/main/java/com/moral/api/pojo/vo/Version/VersionQueryVO.java
@@ -0,0 +1,95 @@
+package com.moral.api.pojo.vo.Version;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.moral.api.entity.Sensor;
+import com.moral.api.entity.Version;
+import com.moral.api.pojo.dto.version.VersionDTO;
+import com.moral.api.pojo.dto.version.VersionQueryDTO;
+import com.moral.api.pojo.vo.sensor.SensorVO;
+import com.moral.constant.ResponseCodeEnum;
+import com.moral.util.DateUtils;
+import lombok.Data;
+import org.springframework.util.ObjectUtils;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @ClassName VersionQueryVO
+ * @Description TODO
+ * @Author ���������
+ * @Date 2021/5/14 15:42
+ * @Version TODO
+ **/
+@Data
+@JsonInclude(JsonInclude.Include.NON_EMPTY)
+public class VersionQueryVO {
+
+    private long pages;
+
+    private long total;
+
+    private long current;
+
+    private long size;
+
+    private List<VersionVO> versions;
+
+    public static VersionQueryVO convert(VersionQueryDTO dto) {
+        if (dto.getCode() != ResponseCodeEnum.SUCCESS.getCode())
+            return null;
+        VersionQueryVO vo = new VersionQueryVO();
+
+        long pages = dto.getPages();
+        long total = dto.getTotal();
+        long current = dto.getCurrent();
+        long size = dto.getSize();
+        List<VersionDTO> dtos = dto.getVersionDTOS();
+        List<VersionVO> versionVOS = new ArrayList<>();
+        for (VersionDTO versionDTO : dtos) {
+            VersionVO versionVO = convertToQueryPage(versionDTO);
+            versionVOS.add(versionVO);
+        }
+        vo.setPages(pages);
+        vo.setTotal(total);
+        vo.setCurrent(current);
+        vo.setSize(size);
+        vo.setVersions(versionVOS);
+        return vo;
+    }
+
+    private static VersionVO convertToQueryPage(VersionDTO dto) {
+        VersionVO vo = new VersionVO();
+        Version version = dto.getVersion();
+        Integer id = version.getId();
+        String desc = version.getDesc();
+        String name = version.getName();
+        Date createTime = version.getCreateTime();
+        Date updateTime = version.getUpdateTime();
+        List<Sensor> sensors = version.getSensors();
+        List<SensorVO> sensorVOS = new ArrayList<>();
+        if(!ObjectUtils.isEmpty(sensors)){
+            for (Sensor sensor : sensors) {
+                SensorVO sensorVO = convertToSensorVO(sensor);
+                sensorVOS.add(sensorVO);
+            }
+        }
+        vo.setId(id);
+        vo.setDesc(desc);
+        vo.setName(name);
+        vo.setCreateTime(DateUtils.dateToDateString(createTime,"yyyy-MM-dd"));
+        vo.setUpdateTime(DateUtils.dateToDateString(updateTime,"yyyy-MM-dd"));
+        vo.setSensors(sensorVOS);
+        return vo;
+    }
+
+    private static SensorVO convertToSensorVO(Sensor sensor) {
+        SensorVO vo = new SensorVO();
+        vo.setName(sensor.getName());
+        vo.setCode(sensor.getCode());
+        vo.setUnit(sensor.getUnit());
+        vo.getUnitKey();
+        return vo;
+    }
+}
diff --git a/screen-manage/src/main/java/com/moral/api/pojo/vo/Version/VersionVO.java b/screen-manage/src/main/java/com/moral/api/pojo/vo/Version/VersionVO.java
new file mode 100644
index 0000000..358a13b
--- /dev/null
+++ b/screen-manage/src/main/java/com/moral/api/pojo/vo/Version/VersionVO.java
@@ -0,0 +1,33 @@
+package com.moral.api.pojo.vo.Version;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.moral.api.pojo.vo.sensor.SensorVO;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @ClassName VersionVO
+ * @Description TODO
+ * @Author ���������
+ * @Date 2021/5/14 15:44
+ * @Version TODO
+ **/
+@Data
+@JsonInclude(JsonInclude.Include.NON_EMPTY)
+public class VersionVO {
+
+    private Integer id;
+
+    private String name;
+
+    private String createTime;
+
+    private String updateTime;
+
+    private String isDelete;
+
+    private String desc;
+
+    private List<SensorVO> sensors;
+}
diff --git a/screen-manage/src/main/java/com/moral/api/pojo/vo/sensor/SensorVO.java b/screen-manage/src/main/java/com/moral/api/pojo/vo/sensor/SensorVO.java
new file mode 100644
index 0000000..ad550c1
--- /dev/null
+++ b/screen-manage/src/main/java/com/moral/api/pojo/vo/sensor/SensorVO.java
@@ -0,0 +1,34 @@
+package com.moral.api.pojo.vo.sensor;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import lombok.Data;
+
+/**
+ * @ClassName SensorVO
+ * @Description TODO
+ * @Author ���������
+ * @Date 2021/5/20 9:30
+ * @Version TODO
+ **/
+@Data
+@JsonInclude(JsonInclude.Include.NON_EMPTY)
+public class SensorVO {
+    private Integer id;
+
+    private String name;
+
+    private String desc;
+
+    private String code;
+
+    private String createTime;
+
+    private String updateTime;
+
+    private String isDelete;
+
+    private String unit;
+
+    private String unitKey;
+
+}
diff --git a/screen-manage/src/main/java/com/moral/api/service/impl/OrganizationServiceImpl.java b/screen-manage/src/main/java/com/moral/api/service/impl/OrganizationServiceImpl.java
index 2de9059..5886add 100644
--- a/screen-manage/src/main/java/com/moral/api/service/impl/OrganizationServiceImpl.java
+++ b/screen-manage/src/main/java/com/moral/api/service/impl/OrganizationServiceImpl.java
@@ -347,7 +347,7 @@
         queryWrapper.eq("is_delete", Constants.NOT_DELETE);
         //������������������
         List<Organization> organizations = organizationMapper.selectList(queryWrapper);
-        //������form������������id,���������������������������������������
+        //������form������������id,���������������������������������������������
         if(!ObjectUtils.isEmpty(id)){
             List<Organization> children = getAllChildrenOrganization(id);
             List<Integer> thisAndchildrenIds = new ArrayList<>();//���id���������������������������id������
diff --git a/screen-manage/src/main/java/com/moral/api/service/impl/VersionServiceImpl.java b/screen-manage/src/main/java/com/moral/api/service/impl/VersionServiceImpl.java
index c716f2e..dc1d8f1 100644
--- a/screen-manage/src/main/java/com/moral/api/service/impl/VersionServiceImpl.java
+++ b/screen-manage/src/main/java/com/moral/api/service/impl/VersionServiceImpl.java
@@ -8,11 +8,13 @@
 import com.moral.api.entity.VersionSensorUnit;
 import com.moral.api.mapper.VersionMapper;
 import com.moral.api.mapper.VersionSensorUnitMapper;
+import com.moral.api.pojo.dto.version.VersionDTO;
 import com.moral.api.pojo.dto.version.VersionQueryDTO;
 import com.moral.api.pojo.form.version.VersionQueryForm;
 import com.moral.api.service.VersionService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.moral.constant.Constants;
+import com.moral.constant.ResponseCodeEnum;
 import com.moral.util.ConvertUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -55,7 +57,7 @@
         //������������������
         Page<Version> queryPage = new Page<>(page, size);
         NullFilterWrapper<Version> wrapper = new NullFilterWrapper<>();
-        wrapper.like("name",name);
+        wrapper.like("name", name);
         wrapper.between("create_time", createStartTime, createEndTime);
         wrapper.between("update_time", updateStartTime, updateEndTime);
         //������������������������
@@ -66,16 +68,25 @@
                 wrapper.orderByDesc(ConvertUtils.toLine(order));
         }
         //������������
-        Page<Version> versionsPage = versionMapper.selectPage(queryPage,wrapper);
+        Page<Version> versionsPage = versionMapper.selectPage(queryPage, wrapper);
         List<Version> versions = versionsPage.getRecords();
         //������������������������������������
         List<Integer> versionsIds = new ArrayList<>();
-        versions.forEach(value->versionsIds.add(value.getId()));
-        if(!ObjectUtils.isEmpty(versionsIds)){
-            QueryWrapper<VersionSensorUnit> sensorUnitQueryWrapper = new QueryWrapper<>();
-
+        versions.forEach(value -> versionsIds.add(value.getId()));
+        List<Version> result = new ArrayList<>();
+        if (!ObjectUtils.isEmpty(versionsIds)) {
+            result = versionMapper.queryVersionsAndSensorUnitByIds(versionsIds);
         }
-
-        return null;
+        //������������������
+        List<VersionDTO> dtos = new ArrayList<>();
+        result.forEach(value -> dtos.add(new VersionDTO(value)));
+        dto.setVersionDTOS(dtos);
+        dto.setCurrent(versionsPage.getCurrent());
+        dto.setPages(versionsPage.getPages());
+        dto.setSize(versionsPage.getSize());
+        dto.setTotal(versionsPage.getTotal());
+        dto.setCode(ResponseCodeEnum.SUCCESS.getCode());
+        dto.setMsg(ResponseCodeEnum.SUCCESS.getMsg());
+        return dto;
     }
 }
diff --git a/screen-manage/src/main/resources/mapper/VersionMapper.xml b/screen-manage/src/main/resources/mapper/VersionMapper.xml
index b1581d7..bf5d5e5 100644
--- a/screen-manage/src/main/resources/mapper/VersionMapper.xml
+++ b/screen-manage/src/main/resources/mapper/VersionMapper.xml
@@ -2,14 +2,75 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.moral.api.mapper.VersionMapper">
 
-        <!-- ������������������������ -->
-        <resultMap id="BaseResultMap" type="com.moral.api.entity.Version">
-                    <id column="id" property="id" />
-                    <result column="name" property="name" />
-                    <result column="create_time" property="createTime" />
-                    <result column="update_time" property="updateTime" />
-                    <result column="is_delete" property="isDelete" />
-                    <result column="desc" property="desc" />
-        </resultMap>
+    <!-- ������������������������ -->
+    <resultMap id="BaseResultMap" type="com.moral.api.entity.Version">
+        <id column="id" property="id"/>
+        <result column="name" property="name"/>
+        <result column="create_time" property="createTime"/>
+        <result column="update_time" property="updateTime"/>
+        <result column="is_delete" property="isDelete"/>
+        <result column="desc" property="desc"/>
+    </resultMap>
+
+    <!--���������������������������������map-->
+    <resultMap id="VersionSensorUnitMap" type="com.moral.api.entity.Version">
+        <id property="id" column="id"></id>
+        <result property="name" column="name"></result>
+        <result property="desc" column="desc"></result>
+        <result property="createTime" column="create_time"></result>
+        <result property="updateTime" column="update_time"></result>
+        <collection property="sensors" column="id" ofType="com.moral.api.entity.Sensor">
+            <id property="id" column="sid"></id>
+            <result property="name" column="sname"></result>
+            <result property="code" column="scode"></result>
+            <result property="unitKey" column="dataKey"></result>
+            <result property="unit" column="dataValue"></result>
+        </collection>
+    </resultMap>
+
+    <select id="queryVersionsAndSensorUnitByIds" resultMap="VersionSensorUnitMap">
+    SELECT
+	  v.`id`,v.`name`,v.`desc`,v.`create_time`,v.`update_time`,s.`id` AS sid,s.`code` as scode,s.`name` AS sname ,u.dataKey,u.dataValue
+    FROM
+	  `version` v
+    JOIN
+	  version_sensor_unit vsu
+    ON
+	  v.`id` = vsu.`version_id` AND vsu.`is_delete` = 0
+    JOIN
+	  sensor s
+    ON
+	  s.`code` = vsu.`sensor_code` AND s.`is_delete` = 0
+    JOIN
+	(
+	  SELECT
+		sdd.datakey,sdd.dataValue,sdd.is_delete
+	  FROM
+		sys_dict_data sdd
+	  JOIN
+		sys_dict_type sdt
+	  ON
+		sdt.`name` = 'unit' AND sdt.`id` = sdd.`dict_type_id` AND sdt.`is_delete` = 0
+	  WHERE
+		sdd.`is_delete` = 0
+	) u
+    ON
+	  vsu.unit_key = u.dataKey AND u.is_delete = 0
+    WHERE
+	  v.`id`
+	in
+    <foreach collection="list" item="vid" open="(" separator="," close=")">
+        #{vid}
+    </foreach>
+	AND
+        v.`is_delete` = 0
+    ORDER BY FIELD
+        (v.`id`,
+        <foreach collection="list" item="vid"  separator="," >
+            #{vid}
+        </foreach>
+        )
+
+    </select>
 
 </mapper>
\ No newline at end of file

--
Gitblit v1.8.0