From cb6efdef55c77da2bcc8dbd99a74e7e49c5ec067 Mon Sep 17 00:00:00 2001
From: lin <sbla5888@163.com>
Date: Tue, 05 Mar 2024 18:06:34 +0800
Subject: [PATCH] 邮件收件+bug修复+流程优化

---
 src/main/java/org/springblade/modules/system/service/impl/UserServiceImpl.java |   85 ++++++++++++++++++++++++++++++++++++++----
 1 files changed, 76 insertions(+), 9 deletions(-)

diff --git a/src/main/java/org/springblade/modules/system/service/impl/UserServiceImpl.java b/src/main/java/org/springblade/modules/system/service/impl/UserServiceImpl.java
index 59bb6f0..aa6c93c 100644
--- a/src/main/java/org/springblade/modules/system/service/impl/UserServiceImpl.java
+++ b/src/main/java/org/springblade/modules/system/service/impl/UserServiceImpl.java
@@ -17,12 +17,14 @@
 package org.springblade.modules.system.service.impl;
 
 
+import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import lombok.AllArgsConstructor;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.logging.log4j.util.Strings;
 import org.flowable.idm.engine.impl.persistence.entity.UserEntity;
 import org.springblade.common.cache.DictCache;
@@ -148,8 +150,23 @@
 	 * @param user
 	 */
 	public void updateGridBind(User user) {
+		// 先删除原有区域的绑定
+		QueryWrapper<PoliceAffairsGridEntity> queryWrapper = new QueryWrapper<>();
+		queryWrapper.eq("is_deleted",0).like("police_user_id",user.getId());
+		// 删除掉之前已绑定的
+		List<PoliceAffairsGridEntity> list = SpringUtil.getBean(IPoliceAffairsGridService.class).list(queryWrapper);
+		// 遍历
+		for (PoliceAffairsGridEntity policeAffairsGridEntity : list) {
+			List<String> arrayList = new ArrayList<>(Arrays.asList(policeAffairsGridEntity.getPoliceUserId().split(",")));
+			arrayList.remove(user.getId().toString());
+			// 更新
+			policeAffairsGridEntity.setPoliceUserId(String.join(",",arrayList));
+			// 解决更新报错
+			policeAffairsGridEntity.setGeom(null);
+			SpringUtil.getBean(IPoliceAffairsGridService.class).updateById(policeAffairsGridEntity);
+		}
 		// 判断机构类型
-		List<String> deptIds = Arrays.asList(user.getDeptId().split(","));
+		List<String> deptIds = new ArrayList<>(Arrays.asList(user.getDeptId().split(",")));
 		for (String deptId : deptIds) {
 			// 查询对应的机构
 			Dept dept = SpringUtil.getBean(IDeptService.class).getById(deptId);
@@ -197,9 +214,9 @@
 	}
 
 	@Override
-	public IPage<User> selectUserPage(IPage<User> page, User user, Long deptId, String tenantId) {
-		if (null == deptId && !AuthUtil.isAdministrator()) {
-			deptId = Long.parseLong(AuthUtil.getDeptId());
+	public IPage<User> selectUserPage(IPage<User> page, User user, String deptId, String tenantId) {
+		if (Strings.isBlank(deptId) && !AuthUtil.isAdministrator() && !AuthUtil.isAdmin()) {
+			deptId = AuthUtil.getDeptId();
 		}
 		List<Long> deptIdList = SysCache.getDeptChildIds(deptId);
 		return page.setRecords(baseMapper.selectUserPage(page, user, deptIdList, tenantId));
@@ -356,7 +373,39 @@
 		if (Func.contains(Func.toLongArray(userIds), AuthUtil.getUserId())) {
 			throw new ServiceException("不能删除本账号!");
 		}
-		return deleteLogic(Func.toLongList(userIds));
+		boolean deleteLogic = deleteLogic(Func.toLongList(userIds));
+		if (deleteLogic){
+			// 删除警格绑定
+			removePoliceGridBind(userIds);
+		}
+		return deleteLogic;
+	}
+
+	/**
+	 * 删除警格绑定
+	 * @param userIds
+	 */
+	public void removePoliceGridBind(String userIds) {
+		List<String> userIdList = new ArrayList<>(Arrays.asList(userIds.split(",")));
+		for (String userId : userIdList) {
+			// 先删除原有区域的绑定
+			QueryWrapper<PoliceAffairsGridEntity> queryWrapper = new QueryWrapper<>();
+			queryWrapper.eq("is_deleted",0).like("police_user_id",userId);
+			// 删除掉之前已绑定的
+			List<PoliceAffairsGridEntity> list = SpringUtil.getBean(IPoliceAffairsGridService.class).list(queryWrapper);
+			if (list.size()>0) {
+				// 遍历
+				for (PoliceAffairsGridEntity policeAffairsGridEntity : list) {
+					List<String> arrayList = new ArrayList<>(Arrays.asList(policeAffairsGridEntity.getPoliceUserId().split(",")));
+					arrayList.remove(userId);
+					// 更新
+					policeAffairsGridEntity.setPoliceUserId(String.join(",", arrayList));
+					// 解决更新报错
+					policeAffairsGridEntity.setGeom(null);
+					SpringUtil.getBean(IPoliceAffairsGridService.class).updateById(policeAffairsGridEntity);
+				}
+			}
+		}
 	}
 
 	@Override
@@ -552,14 +601,23 @@
 			IGridmanService bean = SpringUtil.getBean(IGridmanService.class);
 			return bean.getGridManByCode(houseCode);
 		} else {
-			IPropertyCompanyDistrictService bean1 = SpringUtil.getBean(IPropertyCompanyDistrictService.class);
-			return bean1.getDistictUserByCode(houseCode);
+//			IPropertyCompanyDistrictService bean1 = SpringUtil.getBean(IPropertyCompanyDistrictService.class);
+//			return bean1.getDistictUserByCode(houseCode);
+			String deptId = AuthUtil.getDeptId();
+			List<Long> deptIdList = SysCache.getDeptChildIds(deptId);
+			return baseMapper.selectUserByDept(deptIdList);
 		}
 	}
 
 	@Override
 	public List<UserEntity> getUserInfoByDistrictId(String districtId, String building) {
 		return baseMapper.getUserInfoByDistrictId(districtId, building);
+	}
+
+	@Override
+	public List<User> getUserInfoByDistrictIds(String districtIds) {
+		List<String> list = JSON.parseArray(districtIds).toJavaList(String.class);
+		return baseMapper.getUserInfoByDistrictIds(list);
 	}
 
 	/**
@@ -583,6 +641,9 @@
 	@Override
 	public List<User> getUserInfoByPropertyId(String propertyCompanyId, String roleId) {
 		// 查询物业公司,获取物业公司的机构
+		if(StringUtils.isBlank(propertyCompanyId)){
+			return new ArrayList<>();
+		}
 		IPropertyCompanyService bean = SpringUtil.getBean(IPropertyCompanyService.class);
 		PropertyCompanyEntity one = bean.getOne(Wrappers.<PropertyCompanyEntity>lambdaQuery().eq(PropertyCompanyEntity::getId, propertyCompanyId));
 		return baseMapper.getUserInfoByPropertyId(one.getDeptId().toString(), roleId);
@@ -701,8 +762,14 @@
 					list.remove(deptPcs.getId().toString());
 					user.setDeptId(String.join(",",list));
 				}
-				if (!user.getDeptId().contains(dept.getId().toString())) {
-					user.setDeptId(user.getDeptId() + "," + dept.getId());
+				// 删完后可能就没了
+				if (!Strings.isBlank(user.getDeptId())) {
+					if (!user.getDeptId().contains(dept.getId().toString())) {
+						user.setDeptId(user.getDeptId() + "," + dept.getId());
+					}
+				}else {
+					// 删完后的
+					user.setDeptId(dept.getId().toString());
 				}
 			}else {
 				if (!user.getDeptId().contains(dept.getId().toString())) {

--
Gitblit v1.9.3