查询项目管理机构管理的最高行政区划级别下的全部行政区划的树状列表逻辑完善

This commit is contained in:
mi9688 2024-11-05 17:44:12 +08:00
parent 5c0027abeb
commit 899a5a833f
5 changed files with 46 additions and 26 deletions

View File

@ -5,6 +5,18 @@ import cn.hutool.json.JSONUtil;
import org.apache.commons.lang3.StringUtils;
public class JsonStrUtil {
/**
* 判断一个字符串是不是json数组
*/
public static boolean isJsonArray(String jsonStr) {
try {
JSONUtil.parseArray(jsonStr);
} catch (JSONException e) {
return false;
}
return true;
}
/**
*判断一个json数组为空
*/

View File

@ -1,7 +1,6 @@
package com.fastbee.ggroup.service.impl;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import com.fastbee.common.core.domain.entity.SysDept;
import com.fastbee.common.exception.ServiceException;
@ -61,7 +60,7 @@ public class GGroupsServiceImpl implements IGGroupsService
/**
* 查询组树状列表(不带叶子节点)
* 查询组树状列表(不带叶子节点)后台站点管理
*
* @param gGroups
* @return
@ -86,7 +85,7 @@ public class GGroupsServiceImpl implements IGGroupsService
*/
@Override
public List<GGroupSiteVo> selectGGroupsListSites(GGroups gGroups) {
//构建查询器
MPJLambdaWrapper<GSiteGroups> gSiteGroupsMPJLambdaWrapper = new MPJLambdaWrapper<GSiteGroups>()
.select(GSiteGroups::getId, GSiteGroups::getParentId, GSiteGroups::getSiteId)
// .select(GGroups::getName)//起个别名
@ -96,6 +95,7 @@ public class GGroupsServiceImpl implements IGGroupsService
.leftJoin(GGroups.class, GGroups::getId, GSiteGroups::getParentId)
.leftJoin(GSites.class, GSites::getId, GSiteGroups::getSiteId)
.eq(GSiteGroups::getParentId, gGroups.getParentId())
//按名称模糊匹配
.like(StringUtils.isNotBlank(gGroups.getSearchValue()), GSites::getName, gGroups.getSearchValue());
List<GGroupSiteVo> gGroupSiteVos = gSiteGroupsMapper.selectJoinList(GGroupSiteVo.class, gSiteGroupsMPJLambdaWrapper);
gSiteGroupsMapper.selectJoinList(GGroupSiteVo.class,gSiteGroupsMPJLambdaWrapper);
@ -114,7 +114,7 @@ public class GGroupsServiceImpl implements IGGroupsService
adcodeList.addAll(JsonUtils.parseArray(sysDept.getTownCode(), Long.class));
adcodeList.addAll(JsonUtils.parseArray(sysDept.getVillageCode(), Long.class));
//根据区域代码过滤站点
if(Objects.nonNull(adcodeList) && !adcodeList.isEmpty()){
if(!adcodeList.isEmpty()){
gGroupSiteVos = gGroupSiteVos
.stream()
.filter(gGroupSiteVo -> adcodeList.contains(Long.valueOf(gGroupSiteVo.getAreaCode()))).collect(Collectors.toList());
@ -165,11 +165,9 @@ public class GGroupsServiceImpl implements IGGroupsService
List<GGroupSiteVo> gGroupSiteAllList = selectGGroupsAllListSites(new GGroups());
//根据区域代码过滤站点
if(Objects.nonNull(areaCodeList) && !areaCodeList.isEmpty()){
gGroupSiteAllList = gGroupSiteAllList.stream()
.filter(site -> areaCodeList.contains(site.getAreaCode())).collect(Collectors.toList());
}
for (GGroups group : groupsList) {
//查询组的直接子站点列表
//过滤全部站点列表找到当前组下面的所有站点

View File

@ -3,11 +3,8 @@ package com.fastbee.ggroup.service.impl;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors;
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper;
import com.fastbee.common.exception.ServiceException;
import com.fastbee.common.utils.DateUtils;
import com.fastbee.ggroup.domain.GSites;

View File

@ -15,7 +15,7 @@ import com.fastbee.ggroup.service.IGSiteDeviceService;
* 站点设备关系Service业务层处理
*
* @author kerwincui
* @date 2024-11-05
* &#064;date 2024-11-05
*/
@Service
public class GSiteDeviceServiceImpl implements IGSiteDeviceService

View File

@ -1,7 +1,6 @@
package com.fastbee.project.service.impl;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONException;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper;
@ -22,7 +21,6 @@ import com.fastbee.project.domain.Project;
import com.fastbee.project.domain.vo.ProjectLoginBaseInfo;
import com.fastbee.project.mapper.ProjectMapper;
import com.fastbee.project.service.IProjectService;
import com.fastbee.system.domain.SysDistrict;
import com.fastbee.system.mapper.SysDeptMapper;
import com.fastbee.system.mapper.SysDistrictMapper;
@ -167,7 +165,7 @@ public class ProjectServiceImpl implements IProjectService
throw new ServiceException("创建默认机构失败!");
}
// 新增机构关联系统账号
// 添加管理员角色所有权限
// 添加管理员角色基本权限
SysDept sysDept = deptService.selectDeptById(100L);
List<SysMenu> sysMenuList = sysMenuService.selectMenuList(new SysMenu(), sysDept.getDeptUserId());
Long[] menuIdList = sysMenuList.stream().map(SysMenu::getMenuId)
@ -225,7 +223,7 @@ public class ProjectServiceImpl implements IProjectService
throw new ServiceException("项目行政区域代码不能为空!");
}
//判断行政区域代码json格式
if(isNotValidJsonArray(project.getAdministrativeAreaCode())){
if(!JsonStrUtil.isJsonArray(project.getAdministrativeAreaCode())){
throw new ServiceException("项目行政区域代码多选列表非json数组");
}
//项目省代码列表
@ -240,7 +238,7 @@ public class ProjectServiceImpl implements IProjectService
List<String> villageCodeList =new ArrayList<>();
JSONArray administrativeAreaList = JSONUtil.parseArray(project.getAdministrativeAreaCode());
administrativeAreaList.forEach(item->{
if(isNotValidJsonArray(item.toString())){
if(!JsonStrUtil.isJsonArray(item.toString())){
throw new ServiceException("项目行政区域代码多选列表的元素非json数组");
}
//单个行政区划代码列表
@ -275,17 +273,7 @@ public class ProjectServiceImpl implements IProjectService
project.setVillageCode(JSONUtil.toJsonStr(villageCodeList));
}
/**
* 验证json对象是否是数组
*/
public boolean isNotValidJsonArray(String jsonStr) {
try {
JSONUtil.parseArray(jsonStr);
} catch (JSONException e) {
return true;
}
return false;
}
/**
* 修改项目
@ -557,6 +545,31 @@ public class ProjectServiceImpl implements IProjectService
//镇级查村级别行政区划
queryInLevelList.add(DepartmentAdministrationLevelConstant.VILLAGE);
}
//村级管理机构
else if(Objects.equals(sysDept.getAdministrativeLevel(), DepartmentAdministrationLevelConstant.VILLAGE)){
//添加省代码
if(JsonStrUtil.nonEmptyArray(sysDept.getProvinceCode())){
queryInAdcodeList.add(JSONUtil.parseArray(sysDept.getProvinceCode()).get(0));
}
//添加市代码
if(JsonStrUtil.nonEmptyArray(sysDept.getCityCode()))
queryInAdcodeList.add(JSONUtil.parseArray(sysDept.getCityCode()).get(0));
//添加县代码
if(JsonStrUtil.nonEmptyArray(sysDept.getCountyCode())){
queryInAdcodeList.add(JSONUtil.parseArray(sysDept.getCountyCode()).get(0));
}
//添加镇代码
if(JsonStrUtil.nonEmptyArray(sysDept.getTownCode())){
queryInAdcodeList.add(JSONUtil.parseArray(sysDept.getTownCode()).get(0));
}
//添加村代码
if(JsonStrUtil.nonEmptyArray(sysDept.getVillageCode())){
queryInAdcodeList.add(JSONUtil.parseArray(sysDept.getVillageCode()).get(0));
}
//村级查户级别行政区划
queryInLevelList.add(DepartmentAdministrationLevelConstant.VILLAGE);
}
//先根据项目机构行政管理级别查上层的行政区划信息
List<SysDistrict> aboveSysDistrictList =new ArrayList<>();