ZQN
2024-06-17 951feaeef11f38701290ced94f71c9e103a419bf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
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;
    }
 
 
}