From 8b7258c9427882bb1798f1502eaa35184c6e374e Mon Sep 17 00:00:00 2001
From: linwe <872216996@qq.com>
Date: Fri, 09 Aug 2024 14:29:18 +0800
Subject: [PATCH] 短信指定楼栋发送

---
 src/main/java/org/springblade/modules/grid/service/impl/GridmanServiceImpl.java |  188 ++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 152 insertions(+), 36 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 46dd8fe..e30f8ab 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
@@ -18,9 +18,14 @@
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.flowable.idm.engine.impl.persistence.entity.UserEntity;
+import org.springblade.common.param.CommonParamSet;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.utils.BeanUtil;
+import org.springblade.core.tool.utils.Func;
+import org.springblade.core.tool.utils.SpringUtil;
 import org.springblade.modules.grid.entity.GridEntity;
 import org.springblade.modules.grid.entity.GridmanEntity;
 import org.springblade.modules.grid.excel.GridmanExcel;
@@ -28,8 +33,10 @@
 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;
@@ -56,16 +63,15 @@
 	@Autowired
 	private IGridService gridService;
 
-	@Autowired
-	private IRegionService regionService;
-
 	@Override
 	public IPage<GridmanVO> selectGridmanPage(IPage<GridmanVO> page, GridmanVO gridman) {
-		return page.setRecords(baseMapper.selectGridmanPage(page, gridman));
+		CommonParamSet commonParamSet = new CommonParamSet<>().invoke(GridmanVO.class, gridman);
+		return page.setRecords(baseMapper.selectGridmanPage(page, gridman, commonParamSet.getRegionChildCodesList(), commonParamSet.getIsAdministrator()));
 	}
 
 	/**
 	 * 网格员表 自定义新增或修改
+	 *
 	 * @param gridman
 	 * @return
 	 */
@@ -73,17 +79,23 @@
 	@Transactional(rollbackFor = Exception.class)
 	public boolean saveOrUpdateGridman(GridmanEntity gridman) {
 		boolean flag = false;
+		// 查询网格id
+		IGridService bean = SpringUtil.getBean(IGridService.class);
+		GridEntity gridEntity = bean.getOne(Wrappers.<GridEntity>lambdaQuery().eq(GridEntity::getGridCode, gridman.getGridCode()));
 		// 修改
-		if (null!=gridman.getId()) {
+		if (null != gridman.getId()) {
+			// 更新网格id
+			gridman.setGridId(gridEntity.getId());
 			// 更新网格员信息
 			flag = updateById(gridman);
-		}else {
+		} else {
 			// 新增
 			// 先判断用户表中是否已存在该用户,如果已存在则不新增,需要更新角色
 			QueryWrapper<User> wrapper = new QueryWrapper<>();
 			wrapper.eq("is_deleted", 0).eq("account", gridman.getMobile());
 			List<User> list = userService.list(wrapper);
 			// 更新用户,查询是否需要更新角色
+			gridman.setGridId(gridEntity.getId());
 			if (list.size() > 0) {
 				// 默认取出第一个
 				User user = list.get(0);
@@ -95,11 +107,26 @@
 				}
 				//插入网格员信息
 				gridman.setUserId(user.getId());
-				flag = save(gridman);
+				//匹配
+				QueryWrapper<GridmanEntity> queryWrapper = new QueryWrapper<>();
+				queryWrapper.eq("is_deleted", 0)
+					.eq("grid_id", gridman.getGridId())
+					.eq("user_id", gridman.getUserId());
+				GridmanEntity one = getOne(queryWrapper);
+				if (null == one) {
+					flag = save(gridman);
+				}
 			} else {
 				saveUser(gridman);
-				// 插入网格员信息
-				flag = save(gridman);
+				//匹配
+				QueryWrapper<GridmanEntity> queryWrapper = new QueryWrapper<>();
+				queryWrapper.eq("is_deleted", 0)
+					.eq("grid_id", gridman.getGridId())
+					.eq("user_id", gridman.getUserId());
+				GridmanEntity one = getOne(queryWrapper);
+				if (null == one) {
+					flag = save(gridman);
+				}
 			}
 		}
 		// 返回
@@ -108,6 +135,7 @@
 
 	/**
 	 * 用户新增
+	 *
 	 * @param gridman
 	 */
 	public void saveUser(GridmanEntity gridman) {
@@ -135,36 +163,103 @@
 
 	/**
 	 * 网格员导入
+	 *
 	 * @param data
 	 * @param isCovered
 	 */
 	@Override
+	@Transactional(rollbackFor = Exception.class)
 	public void importGridman(List<GridmanExcel> data, Boolean isCovered) {
 		// 遍历
 		for (GridmanExcel gridmanExcel : data) {
-			GridmanEntity gridmanEntity = Objects.requireNonNull(BeanUtil.copy(gridmanExcel, GridmanEntity.class));
-			// 先查询当前网格社区对应的机构id
-			QueryWrapper<Region> regionWrapper = new QueryWrapper<>();
-			regionWrapper.eq("name",gridmanExcel.getCommunityName());
-			Region region = regionService.getOne(regionWrapper);
-			// 通过社区名称和网格名称获取网格id
-			QueryWrapper<GridEntity> queryWrapper = new QueryWrapper<>();
-			queryWrapper.eq("is_deleted",0)
-				.eq("community_code",region.getCode())
-				.eq("grid_name",gridmanExcel.getGridName());
-			GridEntity gridEntity = gridService.getOne(queryWrapper);
-			// 设置网格id
-			gridmanEntity.setGridId(gridEntity.getId());
-			// 通过手机号查询网格员id
-			QueryWrapper<GridmanEntity> wrapper = new QueryWrapper<>();
-			wrapper.eq("is_deleted",0).eq("mobile",gridmanEntity.getMobile());
-			GridmanEntity one = getOne(wrapper);
-			if (one!=null){
-				gridmanEntity.setId(one.getId());
+			// 先查询是否有对应的用户
+			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);
 			}
-			// 插入网格员
-			saveOrUpdateGridman(gridmanEntity);
+
 		}
+	}
+
+	/**
+	 * 更新网格员绑定
+	 * @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());
 	}
 
 	/**
@@ -181,17 +276,22 @@
 	@Override
 	public Object getGridStatistics(String code, String roleType) {
 		Map<String, Object> objectObjectHashMap = new HashMap<>();
+		List<String> communityCodeList = Func.toStrList(code);
+		// 判断 communityCodeList
+		if (communityCodeList != null && communityCodeList.size() == 0) {
+			return objectObjectHashMap;
+		}
 		if (roleType.equals("2")) {
-			Integer gridStatistics = baseMapper.getGridStatistics(code, null, roleType);
-			Integer companyStatistics = baseMapper.getCompanyStatistics(code, null, roleType);
-			Integer ownersCommitteeStatistics = baseMapper.getOwnersCommitteeStatistics(code, null, roleType);
+			Integer gridStatistics = baseMapper.getGridStatistics(communityCodeList, null, roleType);
+			Integer companyStatistics = baseMapper.getCompanyStatistics(communityCodeList, null, roleType);
+			Integer ownersCommitteeStatistics = baseMapper.getOwnersCommitteeStatistics(communityCodeList, null, roleType);
 			objectObjectHashMap.put("gridStatistics", gridStatistics);
 			objectObjectHashMap.put("companyStatistics", companyStatistics);
 			objectObjectHashMap.put("ownersStatistics", ownersCommitteeStatistics);
 		} else {
-			Integer gridStatistics = baseMapper.getGridStatistics(code, AuthUtil.getUserId(), roleType);
-			Integer companyStatistics = baseMapper.getCompanyStatistics(code, AuthUtil.getUserId(), roleType);
-			Integer ownersCommitteeStatistics = baseMapper.getOwnersCommitteeStatistics(code, AuthUtil.getUserId(), roleType);
+			Integer gridStatistics = baseMapper.getGridStatistics(communityCodeList, AuthUtil.getUserId(), roleType);
+			Integer companyStatistics = baseMapper.getCompanyStatistics(communityCodeList, AuthUtil.getUserId(), roleType);
+			Integer ownersCommitteeStatistics = baseMapper.getOwnersCommitteeStatistics(communityCodeList, AuthUtil.getUserId(), roleType);
 			objectObjectHashMap.put("gridStatistics", gridStatistics);
 			objectObjectHashMap.put("companyStatistics", companyStatistics);
 			objectObjectHashMap.put("ownersStatistics", ownersCommitteeStatistics);
@@ -207,4 +307,20 @@
 	public GridmanVO getDetail(GridmanEntity gridman) {
 		return baseMapper.getDetail(gridman);
 	}
+
+	/**
+	 * 查询网格id
+	 *
+	 * @param userId
+	 * @return
+	 */
+	@Override
+	public Integer getGridIdByUserId(Long userId) {
+		return baseMapper.getGridIdByUserId(userId);
+	}
+
+	@Override
+	public List<UserEntity> getGridManByCode(String houseCode) {
+		return baseMapper.getGridManByCode(houseCode);
+	}
 }

--
Gitblit v1.9.3