package com.project.system.service.impl;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.project.common.exception.base.BaseException;
|
import com.project.common.utils.StringUtils;
|
import com.project.common.utils.TreeManager;
|
import com.project.system.domain.bo.queryBo.RegionQueryBo;
|
import com.project.system.domain.vo.RegionVO;
|
import lombok.RequiredArgsConstructor;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.project.system.domain.SysRegion;
|
import com.project.system.mapper.SysRegionMapper;
|
import com.project.system.service.ISysRegionService;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import java.util.List;
|
|
/**
|
* 行政区划Service业务层处理
|
*
|
* @author manton
|
* @date 2023-04-13
|
*/
|
@Service
|
@RequiredArgsConstructor(onConstructor_ = @Autowired)
|
public class SysRegionServiceImpl extends ServiceImpl<SysRegionMapper, SysRegion> implements ISysRegionService {
|
|
|
@Override
|
public String regionCode(String parentId)
|
{
|
String maxCode = baseMapper.regionCode(parentId);
|
if (StringUtils.isNotEmpty(maxCode)){
|
int i = Integer.parseInt(maxCode) + 1;
|
return String.valueOf(i);
|
} else {
|
return parentId+"01";
|
}
|
}
|
|
@Override
|
public List<RegionVO> regionTree(String parentCode, String name)
|
{
|
List<RegionVO> voList = baseMapper.regionTree(parentCode, name);
|
return TreeManager.merge(voList);
|
}
|
|
@Override
|
public List<SysRegion> queryList(RegionQueryBo dto)
|
{
|
QueryWrapper<SysRegion> qw = getqw(dto);
|
return this.list(qw);
|
}
|
|
@Override
|
@Transactional
|
public Boolean addRegion(SysRegion region)
|
{
|
validEntityBeforeSave(region);
|
return this.save(region);
|
}
|
|
@Override
|
@Transactional
|
public Boolean updRegion(SysRegion region)
|
{
|
validEntityBeforeSave(region);
|
return this.updateById(region);
|
}
|
|
@Override
|
@Transactional
|
public Boolean deleteByIds(List<String> codes)
|
{
|
return this.removeByIds(codes);
|
}
|
|
|
//-------------------------------------------------------------------------------------
|
|
//保存前校验
|
private void validEntityBeforeSave(SysRegion entity)
|
{
|
|
if (StringUtils.isEmpty(entity.getParentCode())){
|
throw new BaseException("参数有误,编号不可为空");
|
}
|
if (StringUtils.isEmpty(entity.getParentCode())){
|
//新增判断父级下名字是否重复
|
if (this.count(lq().eq(SysRegion::getName,entity.getName()).eq(SysRegion::getParentCode,entity.getCode()))>0){
|
throw new BaseException("参数有误,该"+entity.getParentCode()+"编码下已存在"+entity.getName());
|
}
|
//设置编码
|
String regionCode = this.regionCode(entity.getParentCode());
|
entity.setCode(regionCode);
|
}
|
|
}
|
|
//获取查询参数
|
private QueryWrapper<SysRegion> getqw(RegionQueryBo dto)
|
{
|
QueryWrapper<SysRegion> qw = Wrappers.query();
|
|
qw.eq(StringUtils.isNotEmpty(dto.getParentCode()), "parentCode", dto.getParentCode());
|
qw.eq(StringUtils.isNotEmpty(dto.getAncestors()), "ancestors", dto.getAncestors());
|
qw.like(StringUtils.isNotEmpty(dto.getName()), "name", dto.getName());
|
qw.eq(StringUtils.isNotEmpty(dto.getProvinceCode()), "provinceCode", dto.getProvinceCode());
|
qw.like(StringUtils.isNotEmpty(dto.getProvinceName()), "provinceName", dto.getProvinceName());
|
qw.eq(StringUtils.isNotEmpty(dto.getCityCode()), "cityCode", dto.getCityCode());
|
qw.like(StringUtils.isNotEmpty(dto.getCityName()), "cityName", dto.getCityName());
|
qw.eq(StringUtils.isNotEmpty(dto.getDistrictCode()), "districtCode", dto.getDistrictCode());
|
qw.like(StringUtils.isNotEmpty(dto.getDistrictName()), "districtName", dto.getDistrictName());
|
qw.eq(StringUtils.isNotEmpty(dto.getTownCode()), "townCode", dto.getTownCode());
|
qw.like(StringUtils.isNotEmpty(dto.getTownName()), "townName", dto.getTownName());
|
qw.eq(StringUtils.isNotEmpty(dto.getVillageCode()), "villageCode", dto.getVillageCode());
|
qw.like(StringUtils.isNotEmpty(dto.getVillageName()), "villageName", dto.getVillageName());
|
qw.eq(dto.getRegionLevel() != null, "regionLevel", dto.getRegionLevel());
|
|
if (StringUtils.isNotEmpty(dto.getIsAsc()) && StringUtils.isNotEmpty(dto.getOrderByColumn())){
|
if ("acs".equals(dto.getIsAsc())) {
|
qw.orderByAsc(dto.getOrderByColumn());
|
} else if ("desc".equals(dto.getIsAsc())) {
|
qw.orderByDesc(dto.getOrderByColumn());
|
}
|
}
|
qw.orderByAsc( "sort");
|
|
|
|
return qw;
|
}
|
|
|
}
|