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>