From 60b96e9221632debb08aaf5fb7abd8361a90c0fb Mon Sep 17 00:00:00 2001
From: zhongrj <646384940@qq.com>
Date: Wed, 31 Jan 2024 19:59:33 +0800
Subject: [PATCH] 社区新增面,网格员网格处理调整

---
 src/main/java/org/springblade/modules/grid/service/impl/GridmanServiceImpl.java |  101 +++++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 90 insertions(+), 11 deletions(-)

diff --git a/src/main/java/org/springblade/modules/grid/service/impl/GridmanServiceImpl.java b/src/main/java/org/springblade/modules/grid/service/impl/GridmanServiceImpl.java
index baaebc7..c6ed108 100644
--- a/src/main/java/org/springblade/modules/grid/service/impl/GridmanServiceImpl.java
+++ b/src/main/java/org/springblade/modules/grid/service/impl/GridmanServiceImpl.java
@@ -33,7 +33,11 @@
 import org.springblade.modules.grid.service.IGridService;
 import org.springblade.modules.grid.service.IGridmanService;
 import org.springblade.modules.grid.vo.GridmanVO;
+import org.springblade.modules.system.entity.Dept;
+import org.springblade.modules.system.entity.Region;
 import org.springblade.modules.system.entity.User;
+import org.springblade.modules.system.service.IDeptService;
+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;
@@ -167,22 +171,97 @@
 	public void importGridman(List<GridmanExcel> data, Boolean isCovered) {
 		// 遍历
 		for (GridmanExcel gridmanExcel : data) {
-			GridmanEntity gridmanEntity = Objects.requireNonNull(BeanUtil.copy(gridmanExcel, GridmanEntity.class));
-			// 通过社区名称和网格名称获取网格id
-			QueryWrapper<GridEntity> queryWrapper = new QueryWrapper<>();
-			queryWrapper.eq("is_deleted", 0)
-				.eq("grid_code", gridmanExcel.getGridCode());
-			GridEntity gridEntity = gridService.getOne(queryWrapper);
-			// 设置网格id
-			gridmanEntity.setGridId(gridEntity.getId());
-			// 插入网格员
-			if (!Strings.isBlank(gridmanExcel.getMobile())) {
-				saveOrUpdateGridman(gridmanEntity);
+			// 先查询是否有对应的用户
+			List<User> userList = userService.getUserListByPhoneOrAccount(gridmanExcel.getMobile());
+			if (userList.size()>0){
+				User user = userList.get(0);
+				// 判断角色是否包好网格员的角色,如果没有则加入网格员的角色,有则不更改
+				if (!user.getRoleId().contains("1717429261910528001")) {
+					// 更新角色
+					user.setRoleId(user.getRoleId() + "," + "1717429261910528001");
+					// 更新机构
+					setDeptId(gridmanExcel,user);
+					// 更新用户信息
+					userService.updateById(user);
+					// 更新网格员绑定
+					updateGridmanBind(gridmanExcel,user);
+				}
+			}else {
+				// 创建用户
+				User user = new User();
+				user.setTenantId("000000");
+				user.setUserType(1);
+				user.setRoleId("1717429261910528001");
+				user.setName(gridmanExcel.getGridmanName());
+				user.setRealName(gridmanExcel.getGridmanName());
+				user.setPhone(gridmanExcel.getMobile());
+				user.setAccount(gridmanExcel.getMobile());
+				// 更新机构
+				setDeptId(gridmanExcel,user);
+				// 设置默认密码
+				user.setPassword("123456");
+				// 保存
+				userService.submit(user);
+				// 更新网格员绑定
+				updateGridmanBind(gridmanExcel,user);
 			}
+
 		}
 	}
 
 	/**
+	 * 更新网格员绑定
+	 * @param gridmanExcel
+	 * @param user
+	 */
+	public void updateGridmanBind(GridmanExcel gridmanExcel, User user) {
+		// 保存更新网格员信息
+		GridmanEntity gridmanEntity = Objects.requireNonNull(BeanUtil.copy(gridmanExcel, GridmanEntity.class));
+		// 通过社区名称和网格名称获取网格id
+		QueryWrapper<GridEntity> queryWrapper = new QueryWrapper<>();
+		queryWrapper.eq("is_deleted", 0)
+			.eq("grid_code", gridmanExcel.getGridCode());
+		GridEntity gridEntity = gridService.getOne(queryWrapper);
+		// 设置网格id
+		gridmanEntity.setGridId(gridEntity.getId());
+		gridmanEntity.setUserId(user.getId());
+		// 插入网格员
+		// 判断是否已存,已存在则更新,否则插入
+		QueryWrapper<GridmanEntity> wrapper = new QueryWrapper<>();
+		wrapper.eq("is_deleted",0).eq("user_id",user.getId()).eq("grid_code",gridmanExcel.getGridCode());
+		GridmanEntity entity = getOne(wrapper);
+		if (null!=entity){
+			gridmanEntity.setId(entity.getId());
+			updateById(gridmanEntity);
+		}else {
+			save(gridmanEntity);
+		}
+	}
+
+	/**
+	 * 更新机构
+	 * @param gridmanExcel
+	 * @param user
+	 */
+	public void setDeptId(GridmanExcel gridmanExcel, User user) {
+		// 通过社区编号查询对应的机构id
+		Region region = SpringUtil.getBean(IRegionService.class).getById(gridmanExcel.getCommunityCode());
+		// 查询社区对应的机构
+		QueryWrapper<Dept> wrapper = new QueryWrapper<>();
+		wrapper.eq("is_deleted",0).eq("dept_name",region.getName());
+		Dept dept = SpringUtil.getBean(IDeptService.class).getOne(wrapper);
+		// 查询网格对应的机构
+		QueryWrapper<Dept> queryWrapper = new QueryWrapper<>();
+		queryWrapper.eq("is_deleted",0).
+			eq("parent_id",dept.getId()).
+			eq("dept_name",gridmanExcel.getGridName());
+		System.out.println("网格名称 = " + gridmanExcel.getGridName());
+		Dept deptGrid = SpringUtil.getBean(IDeptService.class).getOne(queryWrapper);
+		// 设置机构
+		user.setDeptId(deptGrid.getId().toString());
+	}
+
+	/**
 	 * 网格员查询
 	 *
 	 * @param gridman

--
Gitblit v1.9.3