From 7bcd0d2d7510cb2ba67099cd768e1b2b6d047dc2 Mon Sep 17 00:00:00 2001
From: linwei <872216696@qq.com>
Date: Thu, 22 Feb 2024 17:16:27 +0800
Subject: [PATCH] 投票人员查询优化

---
 src/main/java/org/springblade/modules/system/service/impl/DeptServiceImpl.java |  145 +++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 118 insertions(+), 27 deletions(-)

diff --git a/src/main/java/org/springblade/modules/system/service/impl/DeptServiceImpl.java b/src/main/java/org/springblade/modules/system/service/impl/DeptServiceImpl.java
index d409db3..027413b 100644
--- a/src/main/java/org/springblade/modules/system/service/impl/DeptServiceImpl.java
+++ b/src/main/java/org/springblade/modules/system/service/impl/DeptServiceImpl.java
@@ -23,19 +23,28 @@
 import org.springblade.common.cache.SysCache;
 import org.springblade.common.node.TreeStringNode;
 import org.springblade.common.utils.SpringUtils;
+import org.springblade.common.utils.NodeTreeUtil;
 import org.springblade.core.log.exception.ServiceException;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.constant.BladeConstant;
 import org.springblade.core.tool.node.ForestNodeMerger;
 import org.springblade.core.tool.utils.BeanUtil;
 import org.springblade.core.tool.utils.Func;
+import org.springblade.core.tool.utils.SpringUtil;
 import org.springblade.core.tool.utils.StringPool;
+import org.springblade.modules.community.entity.CommunityEntity;
+import org.springblade.modules.community.service.ICommunityService;
 import org.springblade.modules.grid.entity.GridEntity;
 import org.springblade.modules.grid.service.IGridService;
+import org.springblade.modules.police.entity.PoliceAffairsGridEntity;
+import org.springblade.modules.police.service.IPoliceAffairsGridService;
 import org.springblade.modules.property.entity.PropertyCompanyEntity;
 import org.springblade.modules.property.service.IPropertyCompanyService;
 import org.springblade.modules.system.entity.Dept;
+import org.springblade.modules.system.entity.Region;
 import org.springblade.modules.system.mapper.DeptMapper;
+import org.springblade.modules.system.node.DeptUserTreeNode;
+import org.springblade.modules.system.node.TreeNode;
 import org.springblade.modules.system.service.IDeptService;
 import org.springblade.modules.system.service.IRegionService;
 import org.springblade.modules.system.vo.DeptDetailVO;
@@ -99,28 +108,13 @@
 
 	@Override
 	public List<DeptVO> tree(String tenantId) {
-		Long parentId = null;
 		Long id = null;
 		// 判断数据权限控制,非超管角色只可看到本级及以下数据
-//		if (!AuthUtil.isAdministrator()) {
-//			Long deptId = Func.firstLong(AuthUtil.getDeptId());
-//			Dept dept = SysCache.getDept(deptId);
-//			if (dept.getParentId() != 0) {
-//				parentId = dept.getParentId();
-//			}
-//			List<DeptVO> merge = ForestNodeMerger.merge(baseMapper.tree(tenantId, parentId));
-//			List<DeptVO> copy = BeanUtil.copy(merge, DeptVO.class);
-//			copy = copy.stream().filter(item -> AuthUtil.getDeptId().contains(item.getId().toString())).collect(Collectors.toList());
-//			return copy;
-//		}
-		String userRole = AuthUtil.getUserRole();
-		// 判断物业公司
-		if (userRole.contains("wygly") || userRole.contains("wyxmjl")) {
-			// 获取当前用户的机构
+		if (!AuthUtil.isAdmin()) {
 			id = Func.firstLong(AuthUtil.getDeptId());
 		}
-
-		return ForestNodeMerger.merge(baseMapper.tree(tenantId, parentId, id));
+		List<DeptVO> tree = baseMapper.tree(tenantId, id);
+		return ForestNodeMerger.merge(tree);
 	}
 
 	@Override
@@ -136,7 +130,7 @@
 //				parentId = dept.getParentId();
 //			}
 //		}
-		if (Func.toLong(parentId) == 0L && !AuthUtil.isAdministrator()) {
+		if (Func.toLong(parentId) == 0L && !AuthUtil.isAdmin()) {
 			Long deptId = Func.firstLong(AuthUtil.getDeptId());
 			Dept dept = SysCache.getDept(deptId);
 			if (dept.getParentId() != 0) {
@@ -327,24 +321,65 @@
 	@Override
 	@Transactional(rollbackFor = Exception.class)
 	public Object dataHandle() {
-		// 查询未绑定的网格
-		List<TreeStringNode> list = regionService.getTree(null);
+		// 查询所有的社区
+		QueryWrapper<Region> queryWrapper = new QueryWrapper<>();
+		queryWrapper.eq("district_code","361102").eq("region_level",5);
+		List<Region> list = regionService.list(queryWrapper);
 		// 遍历
-		for (TreeStringNode treeStringNode : list) {
+		for (Region region : list) {
 			// 查询是否已创建
 			QueryWrapper<Dept> wrapper = new QueryWrapper<>();
-			wrapper.eq("is_deleted", 0).eq("dept_name", treeStringNode.getName());
+			wrapper.eq("is_deleted", 0).eq("dept_name", region.getName());
 			Dept one = getOne(wrapper);
 			if (null == one) {
 				// 新增
 				Dept dept = new Dept();
-				dept.setParentId(1733066387113734145L);
-				dept.setFullName(treeStringNode.getName());
-				dept.setDeptName(treeStringNode.getName());
+				dept.setFullName(region.getName());
+				dept.setDeptName(region.getName());
 				dept.setDeptCategory(1);
 				dept.setTenantId("000000");
+				// 查询上级id
+				QueryWrapper<Dept> deptQueryWrapper = new QueryWrapper<>();
+				deptQueryWrapper.eq("is_deleted", 0).eq("dept_name", region.getTownName());
+				Dept parentDept = getOne(deptQueryWrapper);
+				if (null!=parentDept){
+					dept.setParentId(parentDept.getId());
+					dept.setAncestors(parentDept.getAncestors() + "," + parentDept.getId());
+				}
+				dept.setRegionCode(region.getCode());
 				// 新增
-				save(dept);
+				saveOrUpdate(dept);
+				// 插入社区表数据
+			}
+		}
+		return null;
+	}
+
+
+	/**
+	 * 数据处理(社区绑定)--处理机构
+	 */
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public Object dataHandleCommunity() {
+		// 查询所有的社区
+		QueryWrapper<Region> queryWrapper = new QueryWrapper<>();
+		queryWrapper.eq("district_code","361102").eq("region_level",5);
+		List<Region> list = regionService.list(queryWrapper);
+		// 遍历
+		for (Region region : list) {
+			// 查询是否已创建
+			QueryWrapper<CommunityEntity> wrapper = new QueryWrapper<>();
+			wrapper.eq("is_deleted", 0).eq("name", region.getName());
+			CommunityEntity one = SpringUtil.getBean(ICommunityService.class).getOne(wrapper);
+			if (null == one) {
+				// 新增
+				CommunityEntity communityEntity = new CommunityEntity();
+				communityEntity.setStreetCode(region.getTownCode());
+				communityEntity.setName(region.getName());
+				communityEntity.setCode(region.getCode());
+				// 新增
+				SpringUtil.getBean(ICommunityService.class).save(communityEntity);
 			}
 		}
 		return null;
@@ -369,4 +404,60 @@
 		}
 		return null;
 	}
+
+	@Override
+	public List<DeptUserTreeNode> getDeptAndUserTree(DeptUserTreeNode treeNode) {
+		// 查询数据
+		Map<String, DeptUserTreeNode> deptMap = baseMapper.getDeptMap(treeNode);
+		Map<String, DeptUserTreeNode> userMap = baseMapper.getUserMap(treeNode);
+		deptMap.putAll(userMap);
+		List<DeptUserTreeNode> deptAndUserNodeTree = NodeTreeUtil.getDeptAndUserNodeTree(deptMap);
+		// 处理并返回
+		return deptAndUserNodeTree;
+	}
+
+	/**
+	 * 数据处理(社区绑定)-- 处理社区(派出所下)
+	 */
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public Object dataHandleCommunityByPolice() {
+		// 查询所有的派出所
+		QueryWrapper<Dept> wrapper = new QueryWrapper<>();
+		wrapper.eq("is_deleted",0).like("dept_name","派出所");
+		List<Dept> list = list(wrapper);
+		// 遍历
+		for (Dept dept : list) {
+			// 通过派出所名称查询对应的警务网格信息
+			QueryWrapper<PoliceAffairsGridEntity> queryWrapper = new QueryWrapper<>();
+			queryWrapper.eq("is_deleted",0).eq("pcs_name",dept.getDeptName());
+			List<PoliceAffairsGridEntity> policeAffairsGridEntityList
+				= SpringUtil.getBean(IPoliceAffairsGridService.class).list(queryWrapper);
+			// 遍历
+			for (PoliceAffairsGridEntity policeAffairsGridEntity : policeAffairsGridEntityList) {
+				Dept deptInfo = new Dept();
+				deptInfo.setTenantId("000000");
+				deptInfo.setDeptName(policeAffairsGridEntity.getCommunityName());
+				deptInfo.setFullName(policeAffairsGridEntity.getCommunityName());
+				deptInfo.setDeptCategory(1);
+				deptInfo.setDeptNature(1);
+				deptInfo.setParentId(dept.getId());
+				deptInfo.setAncestors(dept.getAncestors() + "," + dept.getId());
+				deptInfo.setRegionCode(policeAffairsGridEntity.getJwGridCode());
+				// 保存
+				save(deptInfo);
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * 查询对应的派出所
+	 * @param deptId
+	 * @return
+	 */
+	@Override
+	public Dept getDeptByDeptIds(String deptId) {
+		return baseMapper.getDeptByDeptIds(deptId);
+	}
 }

--
Gitblit v1.9.3