From 48c2fece0e18e43fec9e661f852df70f8765abc1 Mon Sep 17 00:00:00 2001
From: zhongrj <646384940@qq.com>
Date: Wed, 07 Feb 2024 10:58:33 +0800
Subject: [PATCH] 场所详情查询过滤

---
 src/main/java/org/springblade/modules/place/mapper/PlaceExtMapper.xml             |   62 +++++++++++++++++++++++++++----
 src/main/java/org/springblade/modules/place/service/impl/PlaceExtServiceImpl.java |   41 ++++++++++++++++----
 src/main/java/org/springblade/modules/place/mapper/PlaceExtMapper.java            |    3 +
 3 files changed, 88 insertions(+), 18 deletions(-)

diff --git a/src/main/java/org/springblade/modules/place/mapper/PlaceExtMapper.java b/src/main/java/org/springblade/modules/place/mapper/PlaceExtMapper.java
index 78ce4f0..27816f6 100644
--- a/src/main/java/org/springblade/modules/place/mapper/PlaceExtMapper.java
+++ b/src/main/java/org/springblade/modules/place/mapper/PlaceExtMapper.java
@@ -43,7 +43,8 @@
 										@Param("placeExt") PlaceExtVO placeExt,
 										@Param("houseCodeList") List<String> houseCodeList,
 										@Param("regionChildCodesList") List<String> regionChildCodesList,
-										@Param("isAdministrator") Integer isAdministrator);
+										@Param("isAdministrator") Integer isAdministrator,
+										@Param("gridCodeList")  List<String> gridCodeList);
 
 	/**
 	 * 场所详情表 自定义详情
diff --git a/src/main/java/org/springblade/modules/place/mapper/PlaceExtMapper.xml b/src/main/java/org/springblade/modules/place/mapper/PlaceExtMapper.xml
index becd568..c7da4f1 100644
--- a/src/main/java/org/springblade/modules/place/mapper/PlaceExtMapper.xml
+++ b/src/main/java/org/springblade/modules/place/mapper/PlaceExtMapper.xml
@@ -19,25 +19,71 @@
         jczz_place_ext jpe
         LEFT JOIN jczz_place jp ON jpe.place_id = jp.id AND jp.is_deleted = 0
         LEFT JOIN jczz_grid jg ON jp.grid_code = jg.grid_code AND jg.is_deleted = 0
-        WHERE
-        jpe.is_deleted = 0
+        LEFT JOIN jczz_police_affairs_grid jpag ON jp.jw_grid_code = jpag.jw_grid_code AND jpag.is_deleted = 0
+        WHERE jpe.is_deleted = 0
         and jp.place_name != ''
         <if test="isAdministrator==2">
             <choose>
-                <when test="regionChildCodesList !=null and regionChildCodesList.size()>0">
-                    and jg.community_code in
-                    <foreach collection="regionChildCodesList" item="code" open="(" close=")" separator=",">
-                        #{code}
-                    </foreach>
+                <when test="placeExt.roleName != null and placeExt.roleName != ''">
+                    <if test="placeExt.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="placeExt.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>
-                    and jg.community_code in ('')
+                    <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>
         <if test="placeExt.placeName != null and placeExt.placeName != ''">
             and jp.place_name like concat('%',#{placeExt.placeName},'%')
         </if>
+        <if test="placeExt.communityCode != null and placeExt.communityCode != ''">
+            and jpag.community_code like concat('%',#{placeExt.communityCode},'%')
+        </if>
         <if test="placeExt.placeId != null">
             and jp.id = #{placeExt.placeId}
         </if>
diff --git a/src/main/java/org/springblade/modules/place/service/impl/PlaceExtServiceImpl.java b/src/main/java/org/springblade/modules/place/service/impl/PlaceExtServiceImpl.java
index 6a9e2ab..40196cb 100644
--- a/src/main/java/org/springblade/modules/place/service/impl/PlaceExtServiceImpl.java
+++ b/src/main/java/org/springblade/modules/place/service/impl/PlaceExtServiceImpl.java
@@ -21,7 +21,9 @@
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.apache.logging.log4j.util.Strings;
 import org.springblade.common.cache.SysCache;
+import org.springblade.common.utils.SpringUtils;
 import org.springblade.core.secure.utils.AuthUtil;
+import org.springblade.core.tool.utils.SpringUtil;
 import org.springblade.modules.grid.service.IGridService;
 import org.springblade.modules.place.entity.PlaceEntity;
 import org.springblade.modules.place.entity.PlaceExtEntity;
@@ -31,8 +33,9 @@
 import org.springblade.modules.place.service.IPlacePractitionerService;
 import org.springblade.modules.place.service.IPlaceService;
 import org.springblade.modules.place.vo.PlaceExtVO;
-import org.springblade.modules.system.entity.Dept;
+import org.springblade.modules.police.service.IPoliceAffairsGridService;
 import org.springblade.modules.system.service.IDeptService;
+import org.springblade.modules.system.service.IRegionService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -73,22 +76,42 @@
 	@Override
 	public IPage<PlaceExtVO> selectPlaceExtPage(IPage<PlaceExtVO> page, PlaceExtVO placeExt) {
 		List<String> list = new ArrayList<>();
-		if (null != placeExt.getRoleName() && !placeExt.getRoleName().equals("")) {
-			if (placeExt.getRoleName().equals("网格员")) {
-				// 查询对应的房屋地址code
-				list = gridService.getAddressCodeListByUserId(AuthUtil.getUserId());
-			}
-			if (!placeExt.getRoleName().equals("系统管理员")) {
-				placeExt.setCreateUser(AuthUtil.getUserId());
+//		if (null != placeExt.getRoleName() && !placeExt.getRoleName().equals("")) {
+//			if (placeExt.getRoleName().equals("网格员")) {
+//				// 查询对应的房屋地址code
+//				list = gridService.getAddressCodeListByUserId(AuthUtil.getUserId());
+//			}
+//			if (!placeExt.getRoleName().equals("系统管理员")) {
+//				placeExt.setCreateUser(AuthUtil.getUserId());
+//			}
+//		}
+		String roleName = SpringUtils.getRequestParam("roleName");
+		String communityCode = SpringUtils.getRequestParam("communityCode");
+		if (!Strings.isBlank(communityCode)){
+			// 校验社区编号是否合规
+			if(null!=SpringUtils.getBean(IRegionService.class).getById(communityCode)) {
+				placeExt.setCommunityCode(communityCode);
 			}
 		}
 		List<String> regionChildCodesList = SysCache.getRegionChildCodesByDeptId(AuthUtil.getDeptId());
 		Integer isAdministrator = AuthUtil.isAdministrator()==true?1:2;
+		// 网格编号集合
+		List<String> gridCodeList = new ArrayList<>();
+		// 民警角色
+		if (!Strings.isBlank(roleName)){
+			placeExt.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());
+			}
+		}
 		if (AuthUtil.getUserAccount().equals("18879306957")) {
 			placeExt.setCommunityCode("361102003027");
 			placeExt.setCreateUser(null);
 		}
-		return page.setRecords(baseMapper.selectPlaceExtPage(page, placeExt, list,regionChildCodesList,isAdministrator));
+		return page.setRecords(baseMapper.selectPlaceExtPage(page, placeExt, list,regionChildCodesList,isAdministrator,gridCodeList));
 	}
 
 	/**

--
Gitblit v1.9.3