kaiyu
2021-05-20 89d69ac261923790e2d46b9bf3748a6cf2f2767b
screen-manage
型号查询功能完成
4 files added
7 files modified
345 ■■■■■ changed files
screen-manage/src/main/java/com/moral/api/controller/VersionController.java 53 ●●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/entity/Sensor.java 5 ●●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/entity/Version.java 1 ●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/mapper/VersionMapper.java 11 ●●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/pojo/dto/version/VersionDTO.java 5 ●●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/pojo/vo/Version/VersionQueryVO.java 95 ●●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/pojo/vo/Version/VersionVO.java 33 ●●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/pojo/vo/sensor/SensorVO.java 34 ●●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/service/impl/OrganizationServiceImpl.java 2 ●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/service/impl/VersionServiceImpl.java 27 ●●●● patch | view | raw | blame | history
screen-manage/src/main/resources/mapper/VersionMapper.xml 79 ●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/controller/VersionController.java
New file
@@ -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);
    }
}
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;
    }
}
screen-manage/src/main/java/com/moral/api/entity/Version.java
@@ -61,6 +61,7 @@
    /*
    * 版本拥有的因子
    * */
    @TableField(exist = false)
    private List<Sensor> sensors;
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);
}
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;
    }
}
screen-manage/src/main/java/com/moral/api/pojo/vo/Version/VersionQueryVO.java
New file
@@ -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;
    }
}
screen-manage/src/main/java/com/moral/api/pojo/vo/Version/VersionVO.java
New file
@@ -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;
}
screen-manage/src/main/java/com/moral/api/pojo/vo/sensor/SensorVO.java
New file
@@ -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;
}
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集合
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;
    }
}
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>