Forráskód Böngészése

feat: 团队管理-导入

lixuesong 3 éve
szülő
commit
9d5f46340f

BIN
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/excel/team_member_upload_template.xlsx


+ 36 - 18
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/WmTeamServiceImpl.java

@@ -2,6 +2,7 @@ package com.qunzhixinxi.hnqz.admin.service.impl;
 
 import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.map.MapUtil;
+import cn.hutool.core.util.ArrayUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.json.JSONUtil;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@@ -15,7 +16,6 @@ import com.qunzhixinxi.hnqz.admin.mapper.SysUserMapper;
 import com.qunzhixinxi.hnqz.admin.mapper.SysUserRoleMapper;
 import com.qunzhixinxi.hnqz.admin.mapper.WmTeamMapper;
 import com.qunzhixinxi.hnqz.admin.service.WmTeamService;
-import com.qunzhixinxi.hnqz.common.security.service.HnqzUser;
 import com.qunzhixinxi.hnqz.common.security.util.SecurityUtils;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
@@ -50,11 +50,10 @@ public class WmTeamServiceImpl extends ServiceImpl<WmTeamMapper, WmTeam> impleme
 	/**
 	 * 查询可选择的人员
 	 *
-	 *
 	 * @param deptId
 	 * @param teamId
 	 * @param realNameOrPhone
-     * @return
+	 * @return
 	 */
 	@Override
 	public Map<String, Object> listSelectableUser(Integer deptId, Integer teamId, String realNameOrPhone) {
@@ -177,8 +176,16 @@ public class WmTeamServiceImpl extends ServiceImpl<WmTeamMapper, WmTeam> impleme
 		WmTeam queryTeam = this.getById(teamId);
 
 		// 业务值校验
+		List<WmTeamExcelModel> repeatUserList = new ArrayList<>();
 		for (Map.Entry<String, List<WmTeamExcelModel>> entry : excelMap.entrySet()) {
-			checkoutUserInfo(entry.getValue(), queryTeam, errorMap, currentList);
+			checkoutUserInfo(entry.getValue(), queryTeam, errorMap, currentList, repeatUserList);
+		}
+		// 校验是否存在重复成员
+		if (CollectionUtil.isNotEmpty(repeatUserList)) {
+			List<String> nameList = repeatUserList.stream().map(WmTeamExcelModel::getRealname).collect(Collectors.toList());
+			List<String> excelIdList = repeatUserList.stream().map(WmTeamExcelModel::getId).collect(Collectors.toList());
+			log.error("用户在该团队已存在:{}", String.join(",", nameList));
+			errorMap(errorMap, String.format("用户在该团队已存在'%s'", String.join(",", nameList)), String.join(",", excelIdList));
 		}
 
 		// 上传结果
@@ -186,9 +193,11 @@ public class WmTeamServiceImpl extends ServiceImpl<WmTeamMapper, WmTeam> impleme
 			String[] userIdArr = currentList.stream()
 					.map(sysUser -> String.valueOf(sysUser.getUserId()))
 					.toArray(String[]::new);
+			// 增量添加成员
+			String[] members = ArrayUtil.addAll(userIdArr, ArrayUtil.defaultIfEmpty(queryTeam.getMember(), new String[0]));
 			WmTeam team = new WmTeam();
 			team.setId(teamId);
-			team.setMember(userIdArr);
+			team.setMember(members);
 			team.setUpdateTime(LocalDateTime.now());
 			team.setUpdateUser(SecurityUtils.getUser().getId());
 			this.updateById(team);
@@ -200,33 +209,35 @@ public class WmTeamServiceImpl extends ServiceImpl<WmTeamMapper, WmTeam> impleme
 	/**
 	 * 校验用户信息
 	 *
-	 * @param userList excel用户数据
-	 * @param team team对象
-	 * @param errorMap 错误信息map
+	 * @param excelList   excel用户数据
+	 * @param team        team对象
+	 * @param errorMap    错误信息map
 	 * @param currentList 正确数据list
+	 * @param repeatUserList 重复成员用户list
 	 */
-	private void checkoutUserInfo(List<WmTeamExcelModel> userList, WmTeam team, Map<String, String> errorMap, List<SysUser> currentList) {
-		log.info("开始校验数据:{}", userList);
+	private void checkoutUserInfo(List<WmTeamExcelModel> excelList, WmTeam team, Map<String, String> errorMap,
+								  List<SysUser> currentList, List<WmTeamExcelModel> repeatUserList) {
+		log.info("开始校验数据:{}", excelList);
 
-		if (userList.size() != 1){
+		if (excelList.size() != 1) {
 			log.error("表中手机号重复");
-			Set<String> idSet = userList.stream().map(WmTeamExcelModel::getId).collect(Collectors.toSet());
+			Set<String> idSet = excelList.stream().map(WmTeamExcelModel::getId).collect(Collectors.toSet());
 			errorMap(errorMap, "表中手机号重复", JSONUtil.toJsonStr(idSet));
 		}
 
-		WmTeamExcelModel user = userList.get(0);
+		WmTeamExcelModel excel = excelList.get(0);
 
 		SysUser insertUser = new SysUser();
 		// 校验用户是否存在
 		List<SysUser> sysUsers = sysUserMapper.selectList(Wrappers.<SysUser>lambdaQuery()
 				.eq(SysUser::getDeptId, team.getDeptId())
-				.eq(SysUser::getRealname, user.getRealname())
-				.eq(SysUser::getUsername, user.getUsername())
+				.eq(SysUser::getRealname, excel.getRealname())
+				.eq(SysUser::getUsername, excel.getUsername())
 				.eq(SysUser::getDelFlag, DelEnum.NOT_DEL.val()));
 		SysUser sysUser = null;
 		if (CollectionUtil.isEmpty(sysUsers)) {
 			log.error("用户在当前企业不存在");
-			errorMap(errorMap, "用户在当前企业不存在", user.getId());
+			errorMap(errorMap, "用户在当前企业不存在", excel.getId());
 		} else {
 			sysUser = sysUsers.get(0);
 			insertUser.setUserId(sysUser.getUserId());
@@ -242,16 +253,23 @@ public class WmTeamServiceImpl extends ServiceImpl<WmTeamMapper, WmTeam> impleme
 				List<Integer> roleList = sysUserRoles.stream().map(SysUserRole::getRoleId).collect(Collectors.toList());
 				if (!roleList.contains(6)) {
 					log.error("用户角色不正确");
-					errorMap(errorMap, "用户角色不正确", user.getId());
+					errorMap(errorMap, "用户角色不正确", excel.getId());
 				}
 			} else {
 				log.error("用户角色异常");
-				errorMap(errorMap, "用户角色异常", user.getId());
+				errorMap(errorMap, "用户角色异常", excel.getId());
 			}
 		}
 
 		// 记录正确的结果
 		currentList.add(insertUser);
+
+		// 校验成员是否在当前团队中已存在
+		if (ArrayUtil.isNotEmpty(team.getMember())) {
+			if (ArrayUtil.contains(team.getMember(), String.valueOf(insertUser.getUserId()))) {
+				repeatUserList.add(excel);
+			}
+		}
 	}
 
 	/**