package com.ydtech.modules.admin.service.impl; import cn.hutool.core.bean.BeanUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ydtech.modules.admin.dao.SysDeptMapper; import com.ydtech.modules.admin.dao.SysGeographyPositionMapper; import com.ydtech.modules.admin.dao.SysGeographyPositionRecordMapper; import com.ydtech.modules.admin.model.SysDept; import com.ydtech.modules.admin.model.SysGeographyPosition; import com.ydtech.modules.admin.model.SysGeographyPositionRecord; import com.ydtech.modules.admin.model.SysUser; import com.ydtech.modules.admin.model.dto.SysGeographyPositionDto; import com.ydtech.modules.admin.model.dto.SysGeographyPositionPageDto; import com.ydtech.modules.admin.model.dto.SysPcAddressNumVo; import com.ydtech.modules.admin.model.vo.RegionInfoVo; import com.ydtech.modules.admin.model.vo.SysGeographyPositionInfoVo; import com.ydtech.modules.admin.model.vo.SysGeographyPositionVo; import com.ydtech.modules.admin.service.SysGeographyPositionRecordService; import com.ydtech.modules.admin.service.SysGeographyPositionService; import com.ydtech.modules.admin.service.SysUserService; import com.ydtech.modules.order.entity.BasePageResult; import com.ydtech.utils.StringUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @Service("SysGeographyPositionService") public class SysGeographyPositionServiceImpl extends ServiceImpl implements SysGeographyPositionService { @Resource private SysGeographyPositionMapper sysGeographyPositionMapper; @Resource private SysGeographyPositionRecordMapper sysGeographyPositionRecordMapper; @Resource private SysGeographyPositionRecordService sysGeographyPositionRecordService; @Resource private SysUserService sysUserService; @Resource private SysDeptMapper sysDeptMapper; @Override public SysGeographyPositionVo queryPosition(SysGeographyPositionDto sysGeographyPositionDto) { SysGeographyPositionVo sysGeographyPositionVo = new SysGeographyPositionVo(); List list = sysGeographyPositionMapper.selectList(new LambdaQueryWrapper() .eq(StringUtils.isNotEmpty(sysGeographyPositionDto.getProvince()), SysGeographyPosition::getProvince, sysGeographyPositionDto.getProvince()) .eq(StringUtils.isNotEmpty(sysGeographyPositionDto.getCity()), SysGeographyPosition::getCity, sysGeographyPositionDto.getCity()) .eq(StringUtils.isNotEmpty(sysGeographyPositionDto.getDistrict()), SysGeographyPosition::getDistrict, sysGeographyPositionDto.getDistrict()) .eq(StringUtils.isNotEmpty(sysGeographyPositionDto.getSource()), SysGeographyPosition::getSource, sysGeographyPositionDto.getSource()) .orderByDesc(SysGeographyPosition::getCreateTime)); if (list.size()==0) return new SysGeographyPositionVo(); List sysGeographyPositionList = BeanUtil.copyToList(list, SysGeographyPositionInfoVo.class); //填充机构名 for (SysGeographyPositionInfoVo sysGeographyPositionInfoVo : sysGeographyPositionList) { SysUser sysUser = sysUserService.getById(sysGeographyPositionInfoVo.getId()); if (sysUser == null) continue; SysDept sysDept = sysDeptMapper.selectOne(new LambdaQueryWrapper() .eq(SysDept::getId, sysUser.getDeptId()).eq(SysDept::getDelFlag, 0)); if (sysDept == null) continue; sysGeographyPositionInfoVo.setDeptName(sysDept.getName()); } sysGeographyPositionVo.setList(sysGeographyPositionList); Long aLong = sysGeographyPositionMapper.selectCount(new LambdaQueryWrapper().eq(SysGeographyPosition::getStatus, 1)); sysGeographyPositionVo.setManNum(aLong); return sysGeographyPositionVo; } @Override public BasePageResult queryPositionList(SysGeographyPositionPageDto sysGeographyPositionPageDto) { Page page = new Page<>(sysGeographyPositionPageDto.getPageNum(), sysGeographyPositionPageDto.getPageSize()); LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(StringUtils.isNotEmpty(sysGeographyPositionPageDto.getId()),SysGeographyPositionRecord::getUserId, sysGeographyPositionPageDto.getId()); wrapper.orderByDesc(SysGeographyPositionRecord::getCreateTime); Page insOrdersPage = sysGeographyPositionRecordService.page(page, wrapper); return new BasePageResult<>(sysGeographyPositionPageDto.getPageNum(), page.getSize(), insOrdersPage.getTotal(), page.getPages(), insOrdersPage.getRecords()); } @Override public SysPcAddressNumVo queryPcNum() { SysPcAddressNumVo sysPcAddressNumVo = new SysPcAddressNumVo(); Long all = sysGeographyPositionMapper.selectCount(new LambdaQueryWrapper()); Long channelNum = sysGeographyPositionMapper.selectCount(new LambdaQueryWrapper().eq(SysGeographyPosition::getSource,1)); Long proxyNum = sysGeographyPositionMapper.selectCount(new LambdaQueryWrapper().eq(SysGeographyPosition::getSource,2)); sysPcAddressNumVo.setAllNum(all); sysPcAddressNumVo.setProxyNum(proxyNum); sysPcAddressNumVo.setChannelNum(channelNum); return sysPcAddressNumVo; } @Override public List queryRegionInfo(Integer type) { List regionInfoVos = new ArrayList<>(); //全部:0 渠道:1 代理:2 List sysPcAddresses = sysGeographyPositionMapper.selectList(new LambdaQueryWrapper() .eq(type!=0,SysGeographyPosition::getSource, 1)); Map> map = sysPcAddresses.stream().collect(Collectors.groupingBy(SysGeographyPosition::getDistrict)); for (Map.Entry> entry : map.entrySet()) { RegionInfoVo regionInfoVo = new RegionInfoVo(); regionInfoVo.setDistrictName(entry.getKey()); regionInfoVo.setNumber(entry.getValue().size()); regionInfoVos.add(regionInfoVo); } return regionInfoVos; } }