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; /** *

* 单位转换表 服务实现类 *

* * @author moral * @since 2021-05-11 */ @Service public class UnitConversionServiceImpl extends ServiceImpl 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 queryPage = new Page<>(page, size); NullFilterWrapper 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 resultPage = unitConversionMapper.selectPage(queryPage, wrapper); List records = resultPage.getRecords(); //查询每条数据对应的原单位对象和目标单位对象 Map dictDatas = sysDictDataService.getDictDatasByType(Constants.SYSTEM_DICT_TYPE_UNIT); List 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; } }