package org.dromara.demo.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import lombok.RequiredArgsConstructor; import org.dromara.common.core.domain.R; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.StringUtils; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.demo.domain.RsTrafficIndex; import org.dromara.demo.domain.bo.RsTrafficIndexBo; import org.dromara.demo.domain.vo.RsTrafficIndexVo; import org.dromara.demo.mapper.RsTrafficIndexMapper; import org.dromara.demo.service.IRsTrafficIndexService; import org.dromara.system.domain.SysOss; import org.dromara.system.mapper.SysOssMapper; import org.springframework.stereotype.Service; import java.util.Collection; import java.util.Date; import java.util.List; import java.util.Map; import java.util.stream.Collectors; /** * 交通指数Service业务层处理 * * @author Lion Li * @date 2024-02-26 */ @RequiredArgsConstructor @Service public class RsTrafficIndexServiceImpl implements IRsTrafficIndexService { private final RsTrafficIndexMapper baseMapper; private final SysOssMapper sysOssMapper; /** * 查询交通指数 */ @Override public RsTrafficIndexVo queryById(Long id){ return baseMapper.selectVoById(id); } /** * 查询交通指数列表 */ @Override public TableDataInfo queryPageList(RsTrafficIndexBo bo, PageQuery pageQuery) { LambdaQueryWrapper lqw = buildQueryWrapper(bo); Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); return TableDataInfo.build(result); } /** * 查询交通指数列表 */ @Override public List queryList(RsTrafficIndexBo bo) { LambdaQueryWrapper lqw = buildQueryWrapper(bo); return baseMapper.selectVoList(lqw); } private LambdaQueryWrapper buildQueryWrapper(RsTrafficIndexBo bo) { Map params = bo.getParams(); LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); lqw.like(StringUtils.isNotBlank(bo.getModeName()), RsTrafficIndex::getModeName, bo.getModeName()); lqw.like(StringUtils.isNotBlank(bo.getTargetOneName()), RsTrafficIndex::getTargetOneName, bo.getTargetOneName()); lqw.eq(bo.getTargetOneValue() != null, RsTrafficIndex::getTargetOneValue, bo.getTargetOneValue()); lqw.eq(StringUtils.isNotBlank(bo.getTargetOneUnit()), RsTrafficIndex::getTargetOneUnit, bo.getTargetOneUnit()); lqw.eq(bo.getTargetOneStatus() != null, RsTrafficIndex::getTargetOneStatus, bo.getTargetOneStatus()); lqw.eq(bo.getTargetOneCompareValue() != null, RsTrafficIndex::getTargetOneCompareValue, bo.getTargetOneCompareValue()); lqw.like(StringUtils.isNotBlank(bo.getTargetTwoName()), RsTrafficIndex::getTargetTwoName, bo.getTargetTwoName()); lqw.eq(bo.getTargetTwoValue() != null, RsTrafficIndex::getTargetTwoValue, bo.getTargetTwoValue()); lqw.eq(StringUtils.isNotBlank(bo.getTargetTwoUnit()), RsTrafficIndex::getTargetTwoUnit, bo.getTargetTwoUnit()); lqw.eq(bo.getTargetTwoStatus() != null, RsTrafficIndex::getTargetTwoStatus, bo.getTargetTwoStatus()); lqw.eq(bo.getTargetTwoCompareValue() != null, RsTrafficIndex::getTargetTwoCompareValue, bo.getTargetTwoCompareValue()); lqw.like(StringUtils.isNotBlank(bo.getTargetThreeName()), RsTrafficIndex::getTargetThreeName, bo.getTargetThreeName()); lqw.eq(bo.getTargetThreeValue() != null, RsTrafficIndex::getTargetThreeValue, bo.getTargetThreeValue()); lqw.eq(StringUtils.isNotBlank(bo.getTargetThreeUnit()), RsTrafficIndex::getTargetThreeUnit, bo.getTargetThreeUnit()); lqw.eq(bo.getTargetThreeStatus() != null, RsTrafficIndex::getTargetThreeStatus, bo.getTargetThreeStatus()); lqw.eq(bo.getTargetThreeCompareValue() != null, RsTrafficIndex::getTargetThreeCompareValue, bo.getTargetThreeCompareValue()); lqw.like(StringUtils.isNotBlank(bo.getTargetFourName()), RsTrafficIndex::getTargetFourName, bo.getTargetFourName()); lqw.eq(bo.getTargetFourValue() != null, RsTrafficIndex::getTargetFourValue, bo.getTargetFourValue()); lqw.eq(StringUtils.isNotBlank(bo.getTargetFourUnit()), RsTrafficIndex::getTargetFourUnit, bo.getTargetFourUnit()); lqw.eq(bo.getTargetFourStatus() != null, RsTrafficIndex::getTargetFourStatus, bo.getTargetFourStatus()); lqw.eq(bo.getTargetFourCompareValue() != null, RsTrafficIndex::getTargetFourCompareValue, bo.getTargetFourCompareValue()); lqw.eq(bo.getStatus() != null, RsTrafficIndex::getStatus, bo.getStatus()); lqw.like(StringUtils.isNotBlank(bo.getPeriodDate()), RsTrafficIndex::getPeriodDate, bo.getPeriodDate()); lqw.orderByDesc(RsTrafficIndex::getCreateTime); return lqw; } /** * 新增交通指数 */ @Override public Boolean insertByBo(RsTrafficIndexBo bo) { RsTrafficIndex add = MapstructUtils.convert(bo, RsTrafficIndex.class); validEntityBeforeSave(add); boolean flag = baseMapper.insert(add) > 0; if (flag) { bo.setId(add.getId()); } // 启用新数据将所有数据改为禁用 if (bo.getStatus().equals(1)) { LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); updateWrapper.ne(RsTrafficIndex::getId, bo.getId()).set(RsTrafficIndex::getStatus, 2); baseMapper.update(updateWrapper); } return flag; } /** * 修改交通指数 */ @Override public Boolean updateByBo(RsTrafficIndexBo bo) { RsTrafficIndex update = MapstructUtils.convert(bo, RsTrafficIndex.class); // 启用新数据将所有数据改为禁用 if (bo.getStatus().equals(1)) { LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); updateWrapper.ne(RsTrafficIndex::getId, bo.getId()).set(RsTrafficIndex::getStatus, 2); baseMapper.update(updateWrapper); } return baseMapper.updateById(update) > 0; } /** * 保存前的数据校验 */ private void validEntityBeforeSave(RsTrafficIndex entity){ entity.setCreateTime(new Date()); } /** * 批量删除交通指数 */ @Override public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { if(isValid){ //TODO 做一些业务上的校验,判断是否需要校验 } return baseMapper.deleteBatchIds(ids) > 0; } @Override public List icon() { return baseMapper.icon(); } @Override public R uploadIcon(List list) { for (SysOss sysOss : list) { if (sysOss.getUrl() != null) { sysOssMapper.insertOrUpdate(sysOss); } else { sysOssMapper.deleteByTenantId(sysOss.getTenantId()); } } return R.ok(); } }