From da0e45a47b2b6e05734db2e62ed61987871323d3 Mon Sep 17 00:00:00 2001
From: zhongrj <646384940@qq.com>
Date: Mon, 05 Feb 2024 15:06:28 +0800
Subject: [PATCH] 用户机构调整绑定警格处理调整

---
 src/main/java/org/springblade/modules/system/service/impl/UserServiceImpl.java |   82 +++++++++++++++++++++++++++++++++++------
 1 files changed, 70 insertions(+), 12 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 4e0bbba..59bb6f0 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
@@ -623,11 +623,15 @@
 				// 判断角色
 				if (!userInfo.getRoleId().contains("1727864411451359233")){
 					userInfo.setRoleId(userInfo.getRoleId() + ",1727864411451359233");
-					// 更新
-					updateById(userInfo);
-					// 更新社区民警绑定信息
-					updateCommunityInfo(userExcel,userInfo);
 				}
+				// 更新机构
+				setDeptId(userInfo,userExcel);
+				// 更新
+				updateById(userInfo);
+				// 更新用户机构绑定
+				submitUserDept(userInfo);
+				// 更新社区民警绑定信息
+				updateGridBind(userInfo);
 			}else {
 				// 插入用户角色
 				User user = new User();
@@ -638,18 +642,72 @@
 				user.setRealName(userExcel.getRealName());
 				user.setPhone(userExcel.getPhone());
 				user.setAccount(userExcel.getPhone());
-				// 查询机构
-				QueryWrapper<Dept> queryWrapper = new QueryWrapper<>();
-				queryWrapper.eq("is_deleted",0).eq("dept_name",userExcel.getPoliceStationName());
-				Dept dept = SpringUtil.getBean(IDeptService.class).getOne(queryWrapper);
-				if (null!=dept){
-					user.setDeptId(dept.getId().toString());
-				}
+				// 更新机构
+				setDeptId(user,userExcel);
+				// 设置初始密码
 				user.setPassword("123456");
 				// 保存
 				submit(user);
+				// 更新用户机构绑定
+				submitUserDept(user);
 				// 更新社区民警绑定信息
-				updateCommunityInfo(userExcel,user);
+				updateGridBind(user);
+			}
+		}
+	}
+
+	/**
+	 * 设置机构
+	 */
+	public void setDeptId(User user,PoliceUserExcel userExcel) {
+		// 查询机构
+		QueryWrapper<PoliceAffairsGridEntity> queryWrapper = new QueryWrapper<>();
+		queryWrapper.eq("is_deleted",0)
+			.eq("community_code",userExcel.getCommunityCode())
+			.eq("pcs_name",userExcel.getPoliceStationName());
+		PoliceAffairsGridEntity policeAffairsGridEntity = policeAffairsGridService.getOne(queryWrapper);
+		if (null!=policeAffairsGridEntity){
+			// 查询对应绑定的机构
+			QueryWrapper<Dept> wrapper = new QueryWrapper<>();
+			wrapper.eq("is_deleted",0)
+				.eq("dept_nature",1)
+				.eq("region_code",policeAffairsGridEntity.getJwGridCode());
+			Dept dept = SpringUtil.getBean(IDeptService.class).getOne(wrapper);
+			if (null!=dept){
+				if (null!=user.getId()){
+					DeptNotHandle(user, dept);
+				}else {
+					user.setDeptId(dept.getId().toString());
+				}
+			}
+		}
+	}
+
+	/**
+	 * 机构不为空时处理
+	 * @param user
+	 * @param dept
+	 */
+	public void DeptNotHandle(User user, Dept dept) {
+		// 更新设置机构
+		if (!Strings.isBlank(user.getDeptId())){
+			// 查询对应的派出所(去掉)
+			Dept deptPcs = SpringUtil.getBean(IDeptService.class).getDeptByDeptIds(user.getDeptId());
+			if (null!=deptPcs) {
+				// 如果存在需要去掉派出所的机构id
+				List<String> list = new ArrayList<>(Arrays.asList(user.getDeptId().split(",")));
+				// 先删除派出所对应的机构ID
+				if (list.contains(deptPcs.getId().toString())){
+					list.remove(deptPcs.getId().toString());
+					user.setDeptId(String.join(",",list));
+				}
+				if (!user.getDeptId().contains(dept.getId().toString())) {
+					user.setDeptId(user.getDeptId() + "," + dept.getId());
+				}
+			}else {
+				if (!user.getDeptId().contains(dept.getId().toString())) {
+					user.setDeptId(user.getDeptId() + "," + dept.getId());
+				}
 			}
 		}
 	}

--
Gitblit v1.9.3