myBatisPlusGenerator/src/main/java/com/moral/CodeGenerator.java
@@ -67,10 +67,10 @@ // 数据源配置 DataSourceConfig dsc = new DataSourceConfig(); dsc.setUrl("jdbc:mysql://39.97.177.149:3306/moral?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC"); dsc.setUrl("jdbc:mysql://vp9l57dtd2vng7oxft1t.rwlb.rds.aliyuncs.com:3306/moral?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC"); dsc.setDriverName("com.mysql.cj.jdbc.Driver"); dsc.setUsername("root"); dsc.setPassword("chenkaiyu111"); dsc.setPassword("moral_123456"); mpg.setDataSource(dsc); // 包配置 screen-common/src/main/java/com/moral/constant/Constants.java
@@ -84,5 +84,15 @@ * */ public static final String DELETE_OPERATE_TYPE = "3"; /* * 数据库中公式原单位的占位符 * */ public static final String FORMULA_PLACEHOLDER = "{0}"; /* * 单位字典类型 * */ public static final String SYSTEM_DICT_TYPE_UNIT = "unit"; } screen-common/src/main/java/com/moral/constant/ResponseCodeEnum.java
@@ -48,7 +48,8 @@ SENSOR_IS_EXIST(-34, "因子已存在"), SENSOR_KEY_IS_USED(-35, "因子编码已被使用"), ORGANIZATION_USER_NOT_EXIST(-36,"组织账号不存在"), SENSOR_IS_NOT_EXIST(-37, "因子不存在") SENSOR_IS_NOT_EXIST(-37, "因子不存在"), UNIT_CONVERSION_EXIST(-38,"换算公式已经存在") ; private final Integer code; private final String msg; screen-manage/src/main/java/com/moral/api/controller/UnitConversionController.java
New file @@ -0,0 +1,61 @@ package com.moral.api.controller; import com.moral.api.pojo.dto.unitConversion.UnitConversionDTO; import com.moral.api.pojo.dto.unitConversion.UnitConversionQueryDTO; import com.moral.api.pojo.form.unitConversion.UnitConversionInsertForm; import com.moral.api.pojo.form.unitConversion.UnitConversionQueryForm; import com.moral.api.pojo.vo.unitConversion.UnitConversionQueryVO; import com.moral.api.service.UnitConversionService; import com.moral.constant.ResponseCodeEnum; import com.moral.constant.ResultMessage; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; /** * @ClassName UnitConvertionController * @Description TODO * @Author 陈凯裕 * @Date 2021/5/11 15:59 * @Version TODO **/ @Slf4j @RestController @CrossOrigin(origins = "*", maxAge = 3600) @RequestMapping("/unitConversion") public class UnitConversionController { @Autowired UnitConversionService unitConversionService; @PostMapping("insert") public ResultMessage insert(@RequestBody UnitConversionInsertForm form) { //判断是否缺少参数 if (!form.valid()) return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(), ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg()); //处理插入业务 UnitConversionDTO dto = unitConversionService.insertUnitConversion(form); return new ResultMessage(dto.getCode(), dto.getMsg(), null); } @GetMapping("query") public ResultMessage query(UnitConversionQueryForm form){ //判断是否缺少参数 if (!form.valid()) return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(), ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg()); //处理查询业务 UnitConversionQueryDTO dto = unitConversionService.queryUnitConversion(form); //转换前端所需参数 UnitConversionQueryVO vo = UnitConversionQueryVO.convert(dto); return new ResultMessage(dto.getCode(), dto.getMsg(), vo); } } screen-manage/src/main/java/com/moral/api/entity/GroupMenu.java
@@ -43,9 +43,9 @@ private Integer menuId; /** * 渠道 * 渠道字典键 */ private Integer channel; private String channelKey; /** * 组织Id screen-manage/src/main/java/com/moral/api/entity/UnitConversion.java
New file @@ -0,0 +1,69 @@ package com.moral.api.entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.extension.activerecord.Model; import com.baomidou.mybatisplus.annotation.TableId; import java.time.LocalDateTime; import java.io.Serializable; import java.util.Date; import lombok.Data; import lombok.EqualsAndHashCode; /** * <p> * 单位转换表 * </p> * * @author moral * @since 2021-05-11 */ @Data @EqualsAndHashCode(callSuper = false) public class UnitConversion extends Model<UnitConversion> { private static final long serialVersionUID = 1L; /** * 主键 */ @TableId(value = "id", type = IdType.AUTO) private Integer id; /** * 原始单位字典Key */ private String originalUnitKey; /** * 目标单位字典Key */ private String targetUnitKey; /** * 转换公式 */ private String formula; /** * 创建时间 */ private Date createTime; /** * 更新时间 */ private Date updateTime; /** * 是否删除 */ private String isDelete; @Override protected Serializable pkVal() { return this.id; } } screen-manage/src/main/java/com/moral/api/mapper/UnitConversionMapper.java
New file @@ -0,0 +1,16 @@ package com.moral.api.mapper; import com.moral.api.entity.UnitConversion; import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** * <p> * 单位转换表 Mapper 接口 * </p> * * @author moral * @since 2021-05-11 */ public interface UnitConversionMapper extends BaseMapper<UnitConversion> { } screen-manage/src/main/java/com/moral/api/pojo/dto/organization/OrganizationQueryDTO.java
@@ -18,7 +18,7 @@ private String msg; private long page; private long pages; private long total; screen-manage/src/main/java/com/moral/api/pojo/dto/unitConversion/UnitConversionDTO.java
New file @@ -0,0 +1,26 @@ package com.moral.api.pojo.dto.unitConversion; import com.moral.api.entity.SysDictData; import com.moral.api.entity.UnitConversion; import lombok.Data; /** * @ClassName UnitConversionDTO * @Description TODO * @Author 陈凯裕 * @Date 2021/5/11 16:43 * @Version TODO **/ @Data public class UnitConversionDTO { private Integer code; private String msg; private UnitConversion unitConversion; private SysDictData originalUnit; private SysDictData targetUnit; } screen-manage/src/main/java/com/moral/api/pojo/dto/unitConversion/UnitConversionQueryDTO.java
New file @@ -0,0 +1,29 @@ package com.moral.api.pojo.dto.unitConversion; import lombok.Data; import java.util.List; /** * @ClassName * @Description TODO * @Author 陈凯裕 * @Date 2021/5/12 9:09 * @Version TODO **/ @Data public class UnitConversionQueryDTO { private Integer code; private String msg; private long pages; private long total; private long current; private long size; private List<UnitConversionDTO> unitConversionDTOs; } screen-manage/src/main/java/com/moral/api/pojo/form/groupMenu/GroupMenuUpdateForm.java
@@ -17,12 +17,12 @@ private Integer organizationId; private Integer channel; private String channelKey; private List<Integer> menuIds; public boolean valid(){ if(ObjectUtils.isEmpty(organizationId)||ObjectUtils.isEmpty(channel)||null==menuIds) if(ObjectUtils.isEmpty(organizationId)||ObjectUtils.isEmpty(channelKey)||null==menuIds) return false; return true; } screen-manage/src/main/java/com/moral/api/pojo/form/unitConversion/UnitConversionInsertForm.java
New file @@ -0,0 +1,49 @@ package com.moral.api.pojo.form.unitConversion; import com.moral.api.entity.UnitConversion; import lombok.Data; import org.springframework.util.ObjectUtils; /** * @ClassName UnitConvertionInsertForm * @Description TODO * @Author 陈凯裕 * @Date 2021/5/11 16:18 * @Version TODO **/ @Data public class UnitConversionInsertForm { /* * 原单位字典key * */ private String originalUnitKey; /* * 目标单位字典key * */ private String targetUnitKey; /* * 公式 * */ private String formula; public boolean valid(){ if( ObjectUtils.isEmpty(originalUnitKey)|| ObjectUtils.isEmpty(targetUnitKey)|| ObjectUtils.isEmpty(formula) ) return false; return true; } public UnitConversion formConvertEntity(){ UnitConversion unitConversion = new UnitConversion(); unitConversion.setOriginalUnitKey(originalUnitKey); unitConversion.setTargetUnitKey(targetUnitKey); unitConversion.setFormula(formula); return unitConversion; } } screen-manage/src/main/java/com/moral/api/pojo/form/unitConversion/UnitConversionQueryForm.java
New file @@ -0,0 +1,46 @@ package com.moral.api.pojo.form.unitConversion; import lombok.Data; import org.springframework.util.ObjectUtils; /** * @ClassName UnitConversionQueryForm * @Description TODO * @Author 陈凯裕 * @Date 2021/5/12 9:07 * @Version TODO **/ @Data public class UnitConversionQueryForm { private Integer page; private Integer size; /* * 原单位字典key * */ private Integer originalUnitKey; /* * 目标单位字典key * */ private Integer targetUnitKey; private String order; private String orderType; private Integer isDelete; public boolean valid() { if ( ObjectUtils.isEmpty(page) || ObjectUtils.isEmpty(size) ) return false; return true; } } screen-manage/src/main/java/com/moral/api/pojo/vo/groupMenu/GroupMenuQueryVO.java
@@ -41,7 +41,7 @@ GroupMenuVO vo = new GroupMenuVO(); GroupMenu groupMenu = dto.getGroupMenu(); vo.setId(groupMenu.getId()); vo.setChannel(groupMenu.getChannel()); vo.setChannelKey(groupMenu.getChannelKey()); vo.setMenuId(groupMenu.getMenuId()); return vo; } screen-manage/src/main/java/com/moral/api/pojo/vo/groupMenu/GroupMenuVO.java
@@ -20,7 +20,7 @@ private Integer menuId; private Integer channel; private String channelKey; private Integer organizationId; screen-manage/src/main/java/com/moral/api/pojo/vo/organization/OrganizationQueryVO.java
@@ -40,7 +40,7 @@ if (dto.getCode() != ResponseCodeEnum.SUCCESS.getCode()) return null; OrganizationQueryVO vo = new OrganizationQueryVO(); long page = dto.getPage(); long pages = dto.getPages(); long total = dto.getTotal(); long current = dto.getCurrent(); long size = dto.getSize(); @@ -53,7 +53,7 @@ vo.setCurrent(current); vo.setOrganizations(organizationVOS); vo.setPages(page); vo.setPages(pages); vo.setSize(size); vo.setTotal(total); return vo; screen-manage/src/main/java/com/moral/api/pojo/vo/unitConversion/UnitConversionQueryVO.java
New file @@ -0,0 +1,82 @@ package com.moral.api.pojo.vo.unitConversion; import com.fasterxml.jackson.annotation.JsonInclude; import com.moral.api.entity.SysDictData; import com.moral.api.entity.UnitConversion; import com.moral.api.pojo.dto.unitConversion.UnitConversionDTO; import com.moral.api.pojo.dto.unitConversion.UnitConversionQueryDTO; import com.moral.constant.Constants; import com.moral.constant.ResponseCodeEnum; import lombok.Data; import java.util.ArrayList; import java.util.List; /** * @ClassName UnitConversionQueryVO * @Description TODO * @Author 陈凯裕 * @Date 2021/5/12 9:17 * @Version TODO **/ @Data @JsonInclude(JsonInclude.Include.NON_EMPTY) public class UnitConversionQueryVO { private long pages; private long total; private long current; private long size; private List<UnitConversionVO> unitConversions; public static UnitConversionQueryVO convert(UnitConversionQueryDTO dto) { if (dto.getCode() != ResponseCodeEnum.SUCCESS.getCode()) return null; UnitConversionQueryVO vo = new UnitConversionQueryVO(); long pages = dto.getPages(); long total = dto.getTotal(); long current = dto.getCurrent(); long size = dto.getSize(); List<UnitConversionDTO> dtos = dto.getUnitConversionDTOs(); List<UnitConversionVO> unitConversions = new ArrayList<>(); for (UnitConversionDTO unitConversionDTO : dtos) { UnitConversionVO unitConversionVO = convertToQueryPage(unitConversionDTO); unitConversions.add(unitConversionVO); } vo.setPages(pages); vo.setTotal(total); vo.setCurrent(current); vo.setSize(size); vo.setUnitConversions(unitConversions); return vo; } private static UnitConversionVO convertToQueryPage(UnitConversionDTO dto) { UnitConversionVO vo = new UnitConversionVO(); UnitConversion unitConversion = dto.getUnitConversion(); SysDictData originalUnit = dto.getOriginalUnit(); SysDictData targetUnit = dto.getTargetUnit(); vo.setId(unitConversion.getId()); vo.setOriginalUnitName(originalUnit.getDataValue()); vo.setTargetUnitName(targetUnit.getDataValue()); vo.setFormula(formulaConvert(unitConversion.getFormula(),originalUnit.getDataValue(),targetUnit.getDataValue())); return vo; } /** * @Description: 将带有占位符的公式转为带有原单位,目标单位的公式 * @Param: [formula] * @return: java.lang.String * @Author: 陈凯裕 * @Date: 2021/5/12 */ public static String formulaConvert(String formula, String originalUnitName, String targetUnitName) { formula = formula.replace(Constants.FORMULA_PLACEHOLDER, originalUnitName); formula += "=" + targetUnitName; return formula; } } screen-manage/src/main/java/com/moral/api/pojo/vo/unitConversion/UnitConversionVO.java
New file @@ -0,0 +1,55 @@ package com.moral.api.pojo.vo.unitConversion; import com.fasterxml.jackson.annotation.JsonInclude; import lombok.Data; import java.util.Date; /** * @ClassName UnitConversionVO * @Description TODO * @Author 陈凯裕 * @Date 2021/5/12 9:12 * @Version TODO **/ @Data @JsonInclude(JsonInclude.Include.NON_EMPTY) public class UnitConversionVO { private Integer id; /** * 原始单位字典Key */ private String originalUnitKey; /* * 原始单位名称 * */ private String originalUnitName; /** * 目标单位字典Key */ private String targetUnitKey; /* * 目标单位名称 * */ private String targetUnitName; /** * 转换公式 */ private String formula; /** * 创建时间 */ private String createTime; /** * 更新时间 */ private String updateTime; } screen-manage/src/main/java/com/moral/api/service/SysDictDataService.java
@@ -65,4 +65,13 @@ */ Map<String, List<SysDictData>> getAllDictData(); /** * @Description: 通过类型获取数据的map集合,map的key就是数据的key,map的value是数据对象本身 * @Param: [type] * @return: java.util.Map<java.lang.String,com.moral.api.entity.SysDictData> * @Author: 陈凯裕 * @Date: 2021/5/12 */ Map<String,SysDictData> getDictDatasByType(String type); } screen-manage/src/main/java/com/moral/api/service/UnitConversionService.java
New file @@ -0,0 +1,38 @@ package com.moral.api.service; import com.moral.api.entity.UnitConversion; import com.baomidou.mybatisplus.extension.service.IService; import com.moral.api.pojo.dto.unitConversion.UnitConversionDTO; import com.moral.api.pojo.dto.unitConversion.UnitConversionQueryDTO; import com.moral.api.pojo.form.unitConversion.UnitConversionInsertForm; import com.moral.api.pojo.form.unitConversion.UnitConversionQueryForm; /** * <p> * 单位转换表 服务类 * </p> * * @author moral * @since 2021-05-11 */ public interface UnitConversionService extends IService<UnitConversion> { /** * @Description: 插入单位换算对象 * @Param: [form] * @return: com.moral.api.pojo.dto.unitConversion.UnitConversionDTO * @Author: 陈凯裕 * @Date: 2021/5/11 */ UnitConversionDTO insertUnitConversion(UnitConversionInsertForm form); /** * @Description: 查询单位换算公式 * @Param: [form] * @return: com.moral.api.pojo.dto.unitConversion.UnitConversionQueryDTO * @Author: 陈凯裕 * @Date: 2021/5/12 */ UnitConversionQueryDTO queryUnitConversion(UnitConversionQueryForm form); } screen-manage/src/main/java/com/moral/api/service/impl/GroupMenuServiceImpl.java
@@ -45,7 +45,7 @@ GroupMenuDTO dto = new GroupMenuDTO(); //取参 Integer orgId = form.getOrganizationId(); Integer channel = form.getChannel(); String channelKey = form.getChannelKey(); List<Integer> insertMenuIds = form.getMenuIds(); //根据orgId查询组织admin角色id Group group = queryAdminGroupByOrganizationId(orgId); @@ -62,7 +62,7 @@ //重新添加 for (Integer menuId : insertMenuIds) { GroupMenu groupMenu = new GroupMenu(); groupMenu.setChannel(channel); groupMenu.setChannelKey(channelKey); groupMenu.setGroupId(group.getId()); groupMenu.setMenuId(menuId); groupMenu.setOrganizationId(orgId); screen-manage/src/main/java/com/moral/api/service/impl/OrganizationServiceImpl.java
@@ -323,7 +323,7 @@ dto.setMsg(ResponseCodeEnum.SUCCESS.getMsg()); dto.setOrganizationDTOS(organizationDTOS); dto.setCurrent(page.getCurrent()); dto.setPage(page.getPages()); dto.setPages(page.getPages()); dto.setSize(page.getSize()); dto.setTotal(page.getTotal()); return dto; screen-manage/src/main/java/com/moral/api/service/impl/SysDictDataServiceImpl.java
@@ -167,6 +167,17 @@ return datas; } @Override public Map<String, SysDictData> getDictDatasByType(String type) { Map<String, List<SysDictData>> allDictData = getAllDictData(); List<SysDictData> sysDictDatas = allDictData.get(type); Map<String,SysDictData> result = new HashMap<>(); for (SysDictData sysDictData : sysDictDatas) { result.put(sysDictData.getDataKey(),sysDictData); } return result; } /** * @Description: 从数据库中根据字典类型读取字典数据,返回Map Key:类型名称 value:数据集合 screen-manage/src/main/java/com/moral/api/service/impl/UnitConversionServiceImpl.java
New file @@ -0,0 +1,123 @@ package com.moral.api.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.moral.api.config.mybatis.wrapper.NullFilterWrapper; import com.moral.api.entity.SysDictData; import com.moral.api.entity.UnitConversion; import com.moral.api.mapper.UnitConversionMapper; import com.moral.api.pojo.dto.unitConversion.UnitConversionDTO; import com.moral.api.pojo.dto.unitConversion.UnitConversionQueryDTO; import com.moral.api.pojo.form.unitConversion.UnitConversionInsertForm; import com.moral.api.pojo.form.unitConversion.UnitConversionQueryForm; import com.moral.api.service.SysDictDataService; import com.moral.api.service.UnitConversionService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.moral.constant.Constants; import com.moral.constant.ResponseCodeEnum; import com.moral.util.ConvertUtils; import net.bytebuddy.description.method.ParameterList; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.ObjectUtils; import java.util.ArrayList; import java.util.List; import java.util.Map; /** * <p> * 单位转换表 服务实现类 * </p> * * @author moral * @since 2021-05-11 */ @Service public class UnitConversionServiceImpl extends ServiceImpl<UnitConversionMapper, UnitConversion> implements UnitConversionService { @Autowired UnitConversionMapper unitConversionMapper; @Autowired SysDictDataService sysDictDataService; @Override public UnitConversionDTO insertUnitConversion(UnitConversionInsertForm form) { //创建返回对象 UnitConversionDTO dto = new UnitConversionDTO(); //取参 UnitConversion unitConversion = form.formConvertEntity(); //判断原单位和目标单位计算公式是否已经存在于数据库 QueryWrapper existWrapper = new QueryWrapper(); existWrapper.eq("original_unit_key",unitConversion.getOriginalUnitKey()); existWrapper.eq("target_unit_key",unitConversion.getTargetUnitKey()); existWrapper.eq("is_delete",Constants.NOT_DELETE); UnitConversion existConversion = unitConversionMapper.selectOne(existWrapper); if(!ObjectUtils.isEmpty(existConversion)){ dto.setCode(ResponseCodeEnum.UNIT_CONVERSION_EXIST.getCode()); dto.setMsg(ResponseCodeEnum.UNIT_CONVERSION_EXIST.getMsg()); return dto; } //插入数据 unitConversionMapper.insert(unitConversion); //封装返回数据 dto.setCode(ResponseCodeEnum.SUCCESS.getCode()); dto.setMsg(ResponseCodeEnum.SUCCESS.getMsg()); return dto; } @Override public UnitConversionQueryDTO queryUnitConversion(UnitConversionQueryForm form) { //创建返回对象 UnitConversionQueryDTO dto = new UnitConversionQueryDTO(); //取参 Integer page = form.getPage(); Integer size = form.getSize(); String order = form.getOrder(); String orderType = form.getOrderType(); Integer isDelete = form.getIsDelete(); Integer originalUnitKey = form.getOriginalUnitKey(); Integer targetUnitKey = form.getTargetUnitKey(); //组装查询条件 Page<UnitConversion> queryPage = new Page<>(page, size); NullFilterWrapper<UnitConversion> wrapper = new NullFilterWrapper<>(); wrapper.eq("original_unit_key",originalUnitKey); wrapper.eq("target_unit_key",targetUnitKey); //排序顺序条件构造 if (!ObjectUtils.isEmpty(order) && !ObjectUtils.isEmpty(orderType)) { if (orderType.equals(Constants.ORDER_ASC)) wrapper.orderByAsc(ConvertUtils.toLine(order)); else wrapper.orderByDesc(ConvertUtils.toLine(order)); } //逻辑删除条件构造 if (!ObjectUtils.isEmpty(isDelete)) wrapper.eq("is_delete", isDelete); else wrapper.eq("is_delete", Constants.NOT_DELETE); //查询结果 Page<UnitConversion> resultPage = unitConversionMapper.selectPage(queryPage, wrapper); List<UnitConversion> records = resultPage.getRecords(); //查询每条数据对应的原单位对象和目标单位对象 Map<String, SysDictData> dictDatas = sysDictDataService.getDictDatasByType(Constants.SYSTEM_DICT_TYPE_UNIT); List<UnitConversionDTO> dtos = new ArrayList<>(); for (UnitConversion record : records) { UnitConversionDTO unitConversionDTO = new UnitConversionDTO(); SysDictData originalUnit = dictDatas.get(record.getOriginalUnitKey()); SysDictData targetUnit = dictDatas.get(record.getTargetUnitKey()); unitConversionDTO.setUnitConversion(record); unitConversionDTO.setOriginalUnit(originalUnit); unitConversionDTO.setTargetUnit(targetUnit); dtos.add(unitConversionDTO); } //封装返回对象 dto.setUnitConversionDTOs(dtos); dto.setCurrent(resultPage.getCurrent()); dto.setPages(resultPage.getPages()); dto.setSize(resultPage.getSize()); dto.setTotal(resultPage.getTotal()); dto.setCode(ResponseCodeEnum.SUCCESS.getCode()); dto.setMsg(ResponseCodeEnum.SUCCESS.getMsg()); return dto; } } screen-manage/src/main/resources/mapper/UnitConversionMapper.xml
New file @@ -0,0 +1,16 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.moral.api.mapper.UnitConversionMapper"> <!-- 通用查询映射结果 --> <resultMap id="BaseResultMap" type="com.moral.api.entity.UnitConversion"> <id column="id" property="id" /> <result column="original_unit" property="originalUnit" /> <result column="target_unit" property="targetUnit" /> <result column="formula" property="formula" /> <result column="create_time" property="createTime" /> <result column="update_time" property="updateTime" /> <result column="is_delete" property="isDelete" /> </resultMap> </mapper>