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 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 regionTree(String parentCode, String name) { List voList = baseMapper.regionTree(parentCode, name); return TreeManager.merge(voList); } @Override public List queryList(RegionQueryBo dto) { QueryWrapper 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 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 getqw(RegionQueryBo dto) { QueryWrapper 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; } }