From 9bba06de160435e2515789e0c2e0e744ae013a1a Mon Sep 17 00:00:00 2001
From: zhongrj <646384940@qq.com>
Date: Wed, 07 Feb 2024 13:01:10 +0800
Subject: [PATCH] 场所过滤修改,区域查询修改
---
src/main/java/org/springblade/modules/system/mapper/RegionMapper.java | 6 +
src/main/java/org/springblade/common/cache/DictBizCache.java | 2
src/main/java/org/springblade/modules/place/service/impl/PlaceServiceImpl.java | 49 ++++++++++--
src/main/java/org/springblade/modules/system/service/impl/DictBizServiceImpl.java | 4
src/main/java/org/springblade/modules/system/mapper/DictBizMapper.java | 2
src/main/java/org/springblade/modules/system/controller/DictBizController.java | 4
src/main/java/org/springblade/modules/place/mapper/PlaceMapper.xml | 75 ++++++++++++++----
src/main/java/org/springblade/modules/place/mapper/PlaceMapper.java | 8 +
src/main/java/org/springblade/modules/system/mapper/RegionMapper.xml | 24 +----
src/main/java/org/springblade/modules/system/service/IDictBizService.java | 2
src/main/java/org/springblade/modules/system/mapper/DictBizMapper.xml | 3
src/main/java/org/springblade/modules/place/vo/PlaceVO.java | 4 +
src/main/java/org/springblade/modules/system/service/impl/RegionServiceImpl.java | 36 ++++++++
src/main/java/org/springblade/common/cache/SysCache.java | 2
src/main/java/org/springblade/modules/house/service/impl/HouseholdServiceImpl.java | 2
15 files changed, 164 insertions(+), 59 deletions(-)
diff --git a/src/main/java/org/springblade/common/cache/DictBizCache.java b/src/main/java/org/springblade/common/cache/DictBizCache.java
index 180b49d..802c0c8 100644
--- a/src/main/java/org/springblade/common/cache/DictBizCache.java
+++ b/src/main/java/org/springblade/common/cache/DictBizCache.java
@@ -110,7 +110,7 @@
*/
public static List<DictBiz> getList(String code) {
String keyPrefix = DICT_LIST.concat(StringPool.DASH).concat(AuthUtil.getTenantId()).concat(StringPool.COLON);
- return CacheUtil.get(DICT_CACHE, keyPrefix, code, () -> dictService.getList(code));
+ return CacheUtil.get(DICT_CACHE, keyPrefix, code, () -> dictService.getList(code,null));
}
}
diff --git a/src/main/java/org/springblade/common/cache/SysCache.java b/src/main/java/org/springblade/common/cache/SysCache.java
index 451b0ad..190da4b 100644
--- a/src/main/java/org/springblade/common/cache/SysCache.java
+++ b/src/main/java/org/springblade/common/cache/SysCache.java
@@ -341,13 +341,11 @@
//所有行政区划code
List<String> allRegionList = new ArrayList<>();
deptIdList.forEach(id->{
-
List<String> list = new ArrayList<>();
// 查询对应的区域编号code
Dept dept = deptService.getById(id);
if (null!=dept && !Strings.isBlank(dept.getRegionCode()) && !AuthUtil.isAdministrator()){
list = getRegionChildCodes(dept.getRegionCode());
-
//行政区划不为空添加进集合
if (list.size()>0){
allRegionList.addAll(list);
diff --git a/src/main/java/org/springblade/modules/house/service/impl/HouseholdServiceImpl.java b/src/main/java/org/springblade/modules/house/service/impl/HouseholdServiceImpl.java
index 90d0d88..3cb6a37 100644
--- a/src/main/java/org/springblade/modules/house/service/impl/HouseholdServiceImpl.java
+++ b/src/main/java/org/springblade/modules/house/service/impl/HouseholdServiceImpl.java
@@ -119,7 +119,7 @@
private void handleDictBiz(List<HouseholdVO> householdList) {
if (householdList.size()>0){
// 查询角色关系字典
- List<DictBiz> dictBizList = dictBizService.getList("roleRelation");
+ List<DictBiz> dictBizList = dictBizService.getList("roleRelation",null);
if (dictBizList.size()>0) {
// 遍历
for (HouseholdVO householdVO : householdList) {
diff --git a/src/main/java/org/springblade/modules/place/mapper/PlaceMapper.java b/src/main/java/org/springblade/modules/place/mapper/PlaceMapper.java
index a5efc5b..b977333 100644
--- a/src/main/java/org/springblade/modules/place/mapper/PlaceMapper.java
+++ b/src/main/java/org/springblade/modules/place/mapper/PlaceMapper.java
@@ -40,16 +40,18 @@
*
* @param page
* @param place
- * @param houseCodeList
+ * @param gridCodeList
* @param regionChildCodesList
+ * @param isAdministrator
* @param isAdministrator
* @return
*/
List<PlaceVO> selectNinePlacePage(IPage page,
@Param("place") PlaceVO place,
- @Param("houseCodeList") List<String> houseCodeList,
+ @Param("gridCodeList") List<String> gridCodeList,
@Param("regionChildCodesList") List<String> regionChildCodesList,
- @Param("isAdministrator") Integer isAdministrator);
+ @Param("isAdministrator") Integer isAdministrator,
+ @Param("nineTypeList") List<String> nineTypeList);
/**
diff --git a/src/main/java/org/springblade/modules/place/mapper/PlaceMapper.xml b/src/main/java/org/springblade/modules/place/mapper/PlaceMapper.xml
index 7da6da5..5cae2f2 100644
--- a/src/main/java/org/springblade/modules/place/mapper/PlaceMapper.xml
+++ b/src/main/java/org/springblade/modules/place/mapper/PlaceMapper.xml
@@ -105,15 +105,15 @@
jpe.confirm_flag confirmFlag,
bus.`name` AS policeName,
bus.phone AS policePhone,
- IFNULL(jda.address_name,jp.location) addressName,
+ jp.location as addressName,
jpag.pcs_name deptName
from jczz_place jp
+ left join jczz_grid jg on jg.grid_code = jp.grid_code and jg.is_deleted = 0
left join blade_user bu on bu.id = jp.principal_user_id and bu.is_deleted = 0
left join jczz_place_ext jpe on jpe.place_id=jp.id and jpe.is_deleted = 0
LEFT JOIN jczz_police_affairs_grid jpag on jp.jw_grid_code= jpag.jw_grid_code
left join blade_region br on br.code = jpag.community_code
LEFT JOIN blade_user bus on bus.id = jpag.police_user_id
- LEFT JOIN jczz_doorplate_address jda on jda.address_code=jp.house_code
left join (
select a.* from jczz_place_poi_label a inner join
(
@@ -144,11 +144,12 @@
<if test="place.policeName!=null and place.policeName!=''">
and bus.name like concat('%',#{place.policeName},'%')
</if>
-
- <if test="place.nineType!=null and place.nineType!=''">
- and jp.nine_type = #{place.nineType}
+ <if test="nineTypeList!=null and nineTypeList.size()>0">
+ and jp.nine_type in
+ <foreach collection="nineTypeList" separator="," open="(" close=")" item="nineType">
+ #{nineType}
+ </foreach>
</if>
-
<if test="place.isFront!=null and place.isFront!=''">
and jp.is_front = #{place.isFront}
</if>
@@ -173,20 +174,60 @@
<if test="place.isPerfect==2">
and jp.status = 2
</if>
- <if test="houseCodeList != null and houseCodeList.size()>0">
- and jp.house_code in
- <foreach collection="houseCodeList" item="houseCode" separator ="," open="(" close=")">
- #{houseCode}
- </foreach>
- </if>
<if test="isAdministrator==2">
<choose>
- <when test="regionChildCodesList !=null and regionChildCodesList.size()>0">
- and jg.grid_code in
- <foreach collection="regionChildCodesList" item="code" open="(" close=")" separator=",">
- #{code}
- </foreach>
+ <when test="place.roleName != null and place.roleName != ''">
+ <if test="place.roleName=='wgy'">
+ <choose>
+ <when test="gridCodeList !=null and gridCodeList.size()>0">
+ and jp.grid_code in
+ <foreach collection="gridCodeList" item="code" open="(" close=")" separator=",">
+ #{code}
+ </foreach>
+ </when>
+ <otherwise>
+ and jp.grid_code in ('')
+ </otherwise>
+ </choose>
+ </if>
+ <if test="place.roleName=='mj'">
+ <choose>
+ <when test="regionChildCodesList !=null and regionChildCodesList.size()>0">
+ and jpag.community_code in
+ <foreach collection="regionChildCodesList" item="code" open="(" close=")" separator=",">
+ #{code}
+ </foreach>
+ </when>
+ <otherwise>
+ and jpag.community_code in ('')
+ </otherwise>
+ </choose>
+ </if>
</when>
+ <otherwise>
+ <choose>
+ <when test="regionChildCodesList !=null and regionChildCodesList.size()>0">
+ and
+ (
+ jg.grid_code in
+ <foreach collection="regionChildCodesList" item="code" open="(" close=")" separator=",">
+ #{code}
+ </foreach>
+ or
+ jpag.community_code in
+ <foreach collection="regionChildCodesList" item="code" open="(" close=")" separator=",">
+ #{code}
+ </foreach>
+ )
+ </when>
+ <otherwise>
+ and
+ (
+ jg.grid_code in ('') or jpag.community_code in in ('')
+ )
+ </otherwise>
+ </choose>
+ </otherwise>
</choose>
</if>
order by jp.create_time desc,jp.id desc
diff --git a/src/main/java/org/springblade/modules/place/service/impl/PlaceServiceImpl.java b/src/main/java/org/springblade/modules/place/service/impl/PlaceServiceImpl.java
index 90aa577..2e78c5c 100644
--- a/src/main/java/org/springblade/modules/place/service/impl/PlaceServiceImpl.java
+++ b/src/main/java/org/springblade/modules/place/service/impl/PlaceServiceImpl.java
@@ -59,6 +59,7 @@
import org.springblade.modules.system.entity.User;
import org.springblade.modules.system.service.IDeptService;
import org.springblade.modules.system.service.IDictBizService;
+import org.springblade.modules.system.service.IRegionService;
import org.springblade.modules.system.service.IUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -66,6 +67,7 @@
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
+import java.util.stream.Collectors;
/**
* 场所表 服务实现类
@@ -104,6 +106,9 @@
@Autowired
private IHouseholdService householdService;
+
+ @Autowired
+ private IDictBizService dictBizService;
/**
* 自定义列表查询
@@ -1188,17 +1193,43 @@
*/
@Override
public IPage<PlaceVO> selectNinePlacePage(IPage<PlaceVO> page, PlaceVO place) {
- // todo
- List<String> regionChildCodesList = new ArrayList<>();//SysCache.getRegionChildCodesByDeptId(AuthUtil.getDeptId());
- Integer isAdministrator = AuthUtil.isAdministrator() == true ? 1 : 2;
- List<String> list = new ArrayList<>();
- if (null != place.getRoleName() && !place.getRoleName().equals("")) {
- if (place.getRoleName().equals("网格员")) {
- // 查询对应的房屋地址code
- list = gridService.getAddressCodeListByUserId(AuthUtil.getUserId());
+ String roleName = SpringUtils.getRequestParam("roleName");
+ String communityCode = SpringUtils.getRequestParam("communityCode");
+ if (!Strings.isBlank(communityCode)){
+ // 校验社区编号是否合规
+ if(null!=SpringUtils.getBean(IRegionService.class).getById(communityCode)) {
+ place.setCommunityCode(communityCode);
}
}
- List<PlaceVO> placeVOS = baseMapper.selectNinePlacePage(page, place, list, regionChildCodesList, isAdministrator);
+ List<String> regionChildCodesList = SysCache.getRegionChildCodesByDeptId(AuthUtil.getDeptId());
+ Integer isAdministrator = AuthUtil.isAdministrator()==true?1:2;
+ // 网格编号集合
+ List<String> gridCodeList = new ArrayList<>();
+ // 民警角色
+ if (!Strings.isBlank(roleName)){
+ place.setRoleName(roleName);
+ if(roleName.equals("mj")) {
+ regionChildCodesList = SpringUtil.getBean(IPoliceAffairsGridService.class).getCommunityCodeListByUserId(AuthUtil.getUserId());
+ }
+ if (roleName.equals("wgy")) {
+ gridCodeList = SpringUtil.getBean(IGridService.class).getGridListByUserId(AuthUtil.getUserId());
+ }
+ }
+ List<String> strings = new ArrayList<>();
+ if (null!=place.getNineType()){
+ QueryWrapper<DictBiz> queryWrapper = new QueryWrapper<>();
+ queryWrapper.eq("is_deleted",0).eq("dict_key",place.getNineType()).eq("code","nineType");
+ // 先查询当前
+ DictBiz one = dictBizService.getOne(queryWrapper);
+ // 查询本身和子集的key
+ List<DictBiz> list = dictBizService.getList("nineType", one.getId());
+ if (list.size()==0){
+ strings.add(place.getNineType().toString());
+ }else {
+ strings = list.stream().map(DictBiz::getDictKey).collect(Collectors.toList());
+ }
+ }
+ List<PlaceVO> placeVOS = baseMapper.selectNinePlacePage(page, place, gridCodeList, regionChildCodesList, isAdministrator,strings);
// 返回
return page.setRecords(placeVOS);
}
diff --git a/src/main/java/org/springblade/modules/place/vo/PlaceVO.java b/src/main/java/org/springblade/modules/place/vo/PlaceVO.java
index fd83d1a..1d7e289 100644
--- a/src/main/java/org/springblade/modules/place/vo/PlaceVO.java
+++ b/src/main/java/org/springblade/modules/place/vo/PlaceVO.java
@@ -149,5 +149,9 @@
private String deptName;
@ApiModelProperty(value = "地址")
private String addressName;
+ /**
+ * 社区编号
+ */
+ private String communityCode;
}
diff --git a/src/main/java/org/springblade/modules/system/controller/DictBizController.java b/src/main/java/org/springblade/modules/system/controller/DictBizController.java
index 89bf79c..733f1f6 100644
--- a/src/main/java/org/springblade/modules/system/controller/DictBizController.java
+++ b/src/main/java/org/springblade/modules/system/controller/DictBizController.java
@@ -161,7 +161,7 @@
@ApiOperationSupport(order = 8)
@ApiOperation(value = "获取字典", notes = "获取字典")
public R<List<DictBiz>> dictionary(String code) {
- List<DictBiz> tree = dictService.getList(code);
+ List<DictBiz> tree = dictService.getList(code,null);
return R.data(tree);
}
@@ -172,7 +172,7 @@
@ApiOperationSupport(order = 9)
@ApiOperation(value = "获取字典树", notes = "获取字典树")
public R<List<DictBizVO>> dictionaryTree(String code) {
- List<DictBiz> tree = dictService.getList(code);
+ List<DictBiz> tree = dictService.getList(code,null);
return R.data(DictBizWrapper.build().listNodeVO(tree));
}
diff --git a/src/main/java/org/springblade/modules/system/mapper/DictBizMapper.java b/src/main/java/org/springblade/modules/system/mapper/DictBizMapper.java
index 9a571ce..49f7e51 100644
--- a/src/main/java/org/springblade/modules/system/mapper/DictBizMapper.java
+++ b/src/main/java/org/springblade/modules/system/mapper/DictBizMapper.java
@@ -44,7 +44,7 @@
* @param code 字典编号
* @return
*/
- List<DictBiz> getList(String code);
+ List<DictBiz> getList(String code,Long parentId);
/**
* 获取树形节点
diff --git a/src/main/java/org/springblade/modules/system/mapper/DictBizMapper.xml b/src/main/java/org/springblade/modules/system/mapper/DictBizMapper.xml
index 1c1c2ae..2a95d91 100644
--- a/src/main/java/org/springblade/modules/system/mapper/DictBizMapper.xml
+++ b/src/main/java/org/springblade/modules/system/mapper/DictBizMapper.xml
@@ -53,6 +53,9 @@
and parent_id > 0
and is_sealed = 0
and is_deleted = 0
+ <if test="param2!=null">
+ and parent_id = #{param2}
+ </if>
</select>
<select id="tree" resultMap="treeNodeResultMap">
diff --git a/src/main/java/org/springblade/modules/system/mapper/RegionMapper.java b/src/main/java/org/springblade/modules/system/mapper/RegionMapper.java
index eb0f7a0..dcbbfd7 100644
--- a/src/main/java/org/springblade/modules/system/mapper/RegionMapper.java
+++ b/src/main/java/org/springblade/modules/system/mapper/RegionMapper.java
@@ -106,4 +106,10 @@
*/
@MapKey(value = "id")
Map<String, TreeStringNode> getPoliceTreeList();
+
+ /**
+ * 查询公安相关的区域数据
+ * @return
+ */
+ List<Region> getPoliceList();
}
diff --git a/src/main/java/org/springblade/modules/system/mapper/RegionMapper.xml b/src/main/java/org/springblade/modules/system/mapper/RegionMapper.xml
index 3493418..ffbffac 100644
--- a/src/main/java/org/springblade/modules/system/mapper/RegionMapper.xml
+++ b/src/main/java/org/springblade/modules/system/mapper/RegionMapper.xml
@@ -246,25 +246,11 @@
right join jczz_grid jg on jg.community_code = br.village_code and jg.is_deleted = 0
where br.ancestors like concat('%',#{regionCode},'%')
)
- union all
- (
- SELECT
- t1.id,t1.parentId,t1.name
- FROM
- (
- SELECT
- @ids AS ids,
- ( SELECT @ids := GROUP_CONCAT( id ) FROM police_region WHERE FIND_IN_SET( parentId, @ids ) ) AS cids
- FROM
- police_region
- WHERE
- @ids IS NOT NULL
- AND @ids := #{regionCode}
- ) id,
- police_region t1
- WHERE
- FIND_IN_SET(t1.parentId,ids)
- )
+ </select>
+
+ <!--查询公安相关的区域数据-->
+ <select id="getPoliceList" resultType="org.springblade.modules.system.entity.Region">
+ SELECT id as code,parentId as parent_code,name,'' as ancestors,null as region_level,1 as sort FROM police_region
</select>
diff --git a/src/main/java/org/springblade/modules/system/service/IDictBizService.java b/src/main/java/org/springblade/modules/system/service/IDictBizService.java
index faafecf..5583d53 100644
--- a/src/main/java/org/springblade/modules/system/service/IDictBizService.java
+++ b/src/main/java/org/springblade/modules/system/service/IDictBizService.java
@@ -61,7 +61,7 @@
* @param code 字典编号
* @return
*/
- List<DictBiz> getList(String code);
+ List<DictBiz> getList(String code,Long parentId);
/**
* 新增或修改
diff --git a/src/main/java/org/springblade/modules/system/service/impl/DictBizServiceImpl.java b/src/main/java/org/springblade/modules/system/service/impl/DictBizServiceImpl.java
index 7b20b5e..2ce4115 100644
--- a/src/main/java/org/springblade/modules/system/service/impl/DictBizServiceImpl.java
+++ b/src/main/java/org/springblade/modules/system/service/impl/DictBizServiceImpl.java
@@ -68,8 +68,8 @@
}
@Override
- public List<DictBiz> getList(String code) {
- return baseMapper.getList(code);
+ public List<DictBiz> getList(String code,Long parentId) {
+ return baseMapper.getList(code,parentId);
}
@Override
diff --git a/src/main/java/org/springblade/modules/system/service/impl/RegionServiceImpl.java b/src/main/java/org/springblade/modules/system/service/impl/RegionServiceImpl.java
index 938b5ce..b7efe4c 100644
--- a/src/main/java/org/springblade/modules/system/service/impl/RegionServiceImpl.java
+++ b/src/main/java/org/springblade/modules/system/service/impl/RegionServiceImpl.java
@@ -17,8 +17,10 @@
package org.springblade.modules.system.service.impl;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.google.common.collect.Lists;
import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.util.Strings;
import org.springblade.common.cache.SysCache;
@@ -43,6 +45,7 @@
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
+import java.util.stream.Collectors;
import static org.springblade.common.cache.RegionCache.*;
@@ -230,6 +233,37 @@
*/
@Override
public List<Region> getRegionChild(String regionCode) {
- return baseMapper.getRegionChildList(regionCode);
+ // 创建区域对象
+ List<Region> list = new ArrayList<>();
+ // 查询公安相关的区域数据
+ List<Region> regionList = baseMapper.getPoliceList();
+ if (regionList.size()>0) {
+ List<Region> policeList = treeRegionList(regionList,regionCode, list);
+ list.addAll(policeList);
+ }
+ // 查询综治区域集合
+ List<Region> regionChildList = baseMapper.getRegionChildList(regionCode);
+ list.addAll(regionChildList);
+ // 返回
+ return list;
+ }
+
+ /**
+ * 获取某个父节点下面的所有子节点
+ * @param regionList
+ * @param parentCode
+ * @param list
+ * @return
+ */
+ public static List<Region> treeRegionList( List<Region> regionList, String parentCode,List<Region> list){
+ for(Region region: regionList){
+ //遍历出父id等于参数的id,add进子节点集合
+ if(region.getParentCode().equals(parentCode)){
+ list.add(region);
+ //递归遍历下一级
+ treeRegionList(regionList,region.getCode(),list);
+ }
+ }
+ return list;
}
}
--
Gitblit v1.9.3