kaiyu
2021-05-12 8f9f72a3f92de3a1a5f2faf1eaff583fbe6e70fb
screen-manage
增加单位转换模块,增加功能,查询功能
12 files added
13 files modified
671 ■■■■■ changed files
myBatisPlusGenerator/src/main/java/com/moral/CodeGenerator.java 4 ●●●● patch | view | raw | blame | history
screen-common/src/main/java/com/moral/constant/Constants.java 10 ●●●●● patch | view | raw | blame | history
screen-common/src/main/java/com/moral/constant/ResponseCodeEnum.java 3 ●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/controller/UnitConversionController.java 61 ●●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/entity/GroupMenu.java 4 ●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/entity/UnitConversion.java 69 ●●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/mapper/UnitConversionMapper.java 16 ●●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/pojo/dto/organization/OrganizationQueryDTO.java 2 ●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/pojo/dto/unitConversion/UnitConversionDTO.java 26 ●●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/pojo/dto/unitConversion/UnitConversionQueryDTO.java 29 ●●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/pojo/form/groupMenu/GroupMenuUpdateForm.java 4 ●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/pojo/form/unitConversion/UnitConversionInsertForm.java 49 ●●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/pojo/form/unitConversion/UnitConversionQueryForm.java 46 ●●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/pojo/vo/groupMenu/GroupMenuQueryVO.java 2 ●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/pojo/vo/groupMenu/GroupMenuVO.java 2 ●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/pojo/vo/organization/OrganizationQueryVO.java 4 ●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/pojo/vo/unitConversion/UnitConversionQueryVO.java 82 ●●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/pojo/vo/unitConversion/UnitConversionVO.java 55 ●●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/service/SysDictDataService.java 9 ●●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/service/UnitConversionService.java 38 ●●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/service/impl/GroupMenuServiceImpl.java 4 ●●●● 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/SysDictDataServiceImpl.java 11 ●●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/service/impl/UnitConversionServiceImpl.java 123 ●●●●● patch | view | raw | blame | history
screen-manage/src/main/resources/mapper/UnitConversionMapper.xml 16 ●●●●● patch | view | raw | blame | history
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>