Browse Source

20210430单独导入项目成员表

recovery
zy_Java 4 years ago
parent
commit
852094d639
  1. 7
      tall/src/main/java/com/ccsens/tall/persist/dao/ProRoleDao.java
  2. 7
      tall/src/main/java/com/ccsens/tall/service/ExcelService.java
  3. 254
      tall/src/main/java/com/ccsens/tall/service/ExportWbsService.java
  4. 8
      tall/src/main/java/com/ccsens/tall/service/IExcelService.java
  5. 13
      tall/src/main/resources/mapper_dao/ProRoleDao.xml

7
tall/src/main/java/com/ccsens/tall/persist/dao/ProRoleDao.java

@ -128,7 +128,12 @@ public interface ProRoleDao extends ProRoleMapper{
*/
List<ProjectVo.RolesOfNoLook> selectRoleOfNoLook(Long roleId);
/**
* 查找项目内的奖惩干系人信息
* @param projectId
* @return
*/
ProRole getMoneyStakeholder(@Param("projectId") Long projectId);
// /**

7
tall/src/main/java/com/ccsens/tall/service/ExcelService.java

@ -618,7 +618,7 @@ public class ExcelService implements IExcelService {
}
}
//TODO 每个成员都关注此项目(暂时)
addUserAttention(userIdSet, sysProject);
addUserAttention(userIdSet, sysProject.getId());
} else {
throw new BaseException(CodeEnum.WBS_NOT_MEMBER_SHEET);
}
@ -627,13 +627,14 @@ public class ExcelService implements IExcelService {
/**
* 项目成员表内的每个人都关注此项目暂时当前版本
*/
private void addUserAttention(Set<Long> userIdList, SysProject sysProject) {
@Override
public void addUserAttention(Set<Long> userIdList, Long sysProjectId) {
if (CollectionUtil.isNotEmpty(userIdList)) {
for (Long userId : userIdList) {
UserAttention userAttention = new UserAttention();
userAttention.setId(snowflake.nextId());
userAttention.setUserId(userId);
userAttention.setProjectId(sysProject.getId());
userAttention.setProjectId(sysProjectId);
userAttentionService.saveAttention(userAttention);
}
}

254
tall/src/main/java/com/ccsens/tall/service/ExportWbsService.java

@ -59,15 +59,13 @@ public class ExportWbsService implements IExportWbsService{
@Resource
private SysPluginDao sysPluginDao;
@Resource
private TaskDeliverService taskDeliverService;
@Resource
private ProTaskDetailService taskDetailService;
@Resource
private ProRoleService proRoleService;
@Resource
private IUserService userService;
@Resource
private Snowflake snowflake;
@Resource
private IExcelService excelService;
@Override
public String exportWbs(Long projectId) throws Exception {
@ -973,109 +971,138 @@ public class ExportWbsService implements IExportWbsService{
@Override
public void importMember(String path, Long currentUserId, Long projectId) throws Exception {
// //验证权限
// int power = proRoleService.selectPowerByRoleName(currentUserId, projectId);
// if (power < 2) {
// throw new BaseException(CodeEnum.NOT_POWER);
// }
// //获取excel表格
// InputStream is = new FileInputStream(path);
// XSSFWorkbook xssfWorkbook = new XSSFWorkbook(is);
// //获取项目成员表
// XSSFSheet memberSheet = xssfWorkbook.getSheet("项目成员表");
//
// //读取WBS表
// List<ProMember> stakeholderList = new ArrayList<>();
// if (ObjectUtil.isNotNull(memberSheet)) {
// Set<Long> userIdSet = new HashSet<>();
//
// for (int i = 1; i <= memberSheet.getLastRowNum(); i++) {
// XSSFRow row = memberSheet.getRow(i);
// if(ObjectUtil.isNull(row)){
// continue;
// }
// String memberCell = ExcelUtil.getCellValue(row.getCell(1));
// String phoneCell = ExcelUtil.getCellValue(row.getCell(2));
// String stakeholderCell = ExcelUtil.getCellValue(row.getCell(3));
// String stakeholderPhoneCell = ExcelUtil.getCellValue(row.getCell(4));
// ProMember stakeholder = null;
// ProMember member;
// //成员名为空,跳至下一行
// if ((StrUtil.isEmpty(memberCell))) {
// continue;
// }
// //手机号不能为空
// if (StrUtil.isNotEmpty(memberCell) && StrUtil.isEmpty(phoneCell)) {
// throw new BaseException(CodeEnum.WBS_NOT_PHONE.addMsg(memberSheet.getSheetName(), (i+1),memberCell));
// }
// //判断手机号格式
// String regex ="^[1]([3-9])[0-9]{9}$";
// if (StrUtil.isEmpty(phoneCell) || !phoneCell.matches(regex)){
// throw new BaseException(CodeEnum.WBS_PHONE_ERROR.addMsg(memberSheet.getSheetName(),(i+1),memberCell));
// }
//
// //添加奖惩干系人
// if (StrUtil.isNotEmpty(stakeholderCell)) {
// //判断奖惩干系人的手机号是否为空
// if ( StrUtil.isEmpty(stakeholderPhoneCell)){
// throw new BaseException(CodeEnum.WBS_NOT_PHONE.addMsg(memberSheet.getSheetName(), (i+1),stakeholderCell));
// }
// //判断奖惩干系人的手机号格式是否正确
// if (!stakeholderPhoneCell.matches(regex)){
// throw new BaseException(CodeEnum.WBS_PHONE_ERROR.addMsg(memberSheet.getSheetName(),(i+1),stakeholderCell));
// }
// if (!stakeholderWithPhone(stakeholderList, stakeholderCell, stakeholderPhoneCell)) {
// Long userId = userService.selectUserIdByPhone(stakeholderPhoneCell);
// if (ObjectUtil.isNotNull(userId)) {
// userIdSet.add(userId);
// }
// stakeholder = new ProMember();
// stakeholder.setId(snowflake.nextId());
// stakeholder.setProjectId(projectId);
// stakeholder.setUserId(userId);
// stakeholder.setNickname(stakeholderCell);
// stakeholder.setPhone(stakeholderPhoneCell);
// proMemberDao.insertSelective(stakeholder);
// stakeholderList.add(stakeholder);
//验证权限
int power = proRoleService.selectPowerByRoleName(currentUserId, projectId);
if (power < 2) {
throw new BaseException(CodeEnum.NOT_POWER);
}
//获取excel表格
InputStream is = new FileInputStream(path);
XSSFWorkbook xssfWorkbook = new XSSFWorkbook(is);
//获取项目成员表
XSSFSheet memberSheet = xssfWorkbook.getSheet("项目成员表");
if (ObjectUtil.isNull(memberSheet)) {
throw new BaseException(CodeEnum.WBS_NOT_MEMBER_SHEET);
}
// //存储表内的成员信息
// Map<String,String> mapName = new HashMap<>();
// Map<String,String> mapPhone = new HashMap<>();
// //存储奖惩干系人信息
// Map<String,String> sMapName = new HashMap<>();
// Map<String,String> sMapPhone = new HashMap<>();
//存成员
List<ProMember> memberList = new ArrayList<>();
//存奖惩干系人
List<ProMember> stakeholderList = new ArrayList<>();
//存储添加的成员和奖惩干系人的userId,为了关注此项目
Set<Long> userIdSet = new HashSet<>();
//查询项目内的奖惩干系人角色
ProRole proStakeholder = proRoleDao.getMoneyStakeholder(projectId);
//手机号格式
String regex ="^[1]([3-9])[0-9]{9}$";
//循环读取信息
for (int i = 1; i <= memberSheet.getLastRowNum(); i++) {
XSSFRow row = memberSheet.getRow(i);
if (ObjectUtil.isNull(row)) {
continue;
}
String memberCell = ExcelUtil.getCellValue(row.getCell(1));
String phoneCell = ExcelUtil.getCellValue(row.getCell(2));
String stakeholderCell = ExcelUtil.getCellValue(row.getCell(3));
String stakeholderPhoneCell = ExcelUtil.getCellValue(row.getCell(4));
//成员名不存在,跳过
if ((StrUtil.isEmpty(memberCell))) {
continue;
}
//成员手机号不能为空
if (StrUtil.isEmpty(phoneCell)) {
throw new BaseException(CodeEnum.WBS_NOT_PHONE.addMsg(memberSheet.getSheetName(), (i + 1), memberCell));
}
//验证手机号格式
if (!phoneCell.matches(regex)) {
throw new BaseException(CodeEnum.WBS_PHONE_ERROR.addMsg(memberSheet.getSheetName(), (i + 1), memberCell));
}
//处理奖惩干系人
ProMember stakeholder = null;
if (StrUtil.isNotEmpty(stakeholderCell)) {
//判断奖惩干系人的手机号是否为空
if (StrUtil.isEmpty(stakeholderPhoneCell)) {
throw new BaseException(CodeEnum.WBS_NOT_PHONE.addMsg(memberSheet.getSheetName(), (i + 1), stakeholderCell));
}
//判断奖惩干系人的手机号格式是否正确
if (!stakeholderPhoneCell.matches(regex)) {
throw new BaseException(CodeEnum.WBS_PHONE_ERROR.addMsg(memberSheet.getSheetName(), (i + 1), stakeholderCell));
}
if (!stakeholderWithPhone(stakeholderList, stakeholderCell, stakeholderPhoneCell)) {
Long userId = userService.selectUserIdByPhone(stakeholderPhoneCell);
if (ObjectUtil.isNotNull(userId)) {
userIdSet.add(userId);
}
stakeholder = new ProMember();
stakeholder.setId(snowflake.nextId());
stakeholder.setProjectId(projectId);
stakeholder.setUserId(userId);
stakeholder.setNickname(stakeholderCell);
stakeholder.setPhone(stakeholderPhoneCell);
proMemberDao.insertSelective(stakeholder);
stakeholderList.add(stakeholder);
ProMemberRole proMemberRole = new ProMemberRole();
proMemberRole.setId(snowflake.nextId());
proMemberRole.setMemberId(stakeholder.getId());
proMemberRole.setRoleId(proStakeholder.getId());
proMemberRoleDao.insertSelective(proMemberRole);
} else {
throw new BaseException(CodeEnum.WBS_STAKEHOLDER_PHONE.addMsg(memberSheet.getSheetName(), (i + 1), stakeholderCell));
}
}
//检查成员在此项目中是否已存在
ProMemberExample nameExample = new ProMemberExample();
nameExample.createCriteria().andProjectIdEqualTo(projectId).andNicknameEqualTo(memberCell);
long l2 = proMemberDao.countByExample(nameExample);
if(l2 > 0){
throw new BaseException(CodeEnum.WBS_REPEAT_MEMBER_PHONE.addMsg(memberSheet.getSheetName(),(i+1),memberCell));
}
//校验手机号是否已存在
ProMemberExample phoneExample = new ProMemberExample();
phoneExample.createCriteria().andProjectIdEqualTo(projectId).andPhoneEqualTo(phoneCell);
long l1 = proMemberDao.countByExample(phoneExample);
if(l1 > 0){
throw new BaseException(CodeEnum.WBS_REPEAT_MEMBER_PHONE.addMsg(memberSheet.getSheetName(),(i+1),phoneCell));
}
// ProMemberExample example = new ProMemberExample();
// ProMemberExample.Criteria c1 = example.createCriteria();
// c1.andProjectIdEqualTo(projectId).andPhoneEqualTo(phoneCell);
//
// ProMemberRole proMemberRole = new ProMemberRole();
// proMemberRole.setId(snowflake.nextId());
// proMemberRole.setMemberId(stakeholder.getId());
// proMemberRole.setRoleId(stakeholderId);
// proMemberRoleDao.insertSelective(proMemberRole);
// } else {
// throw new BaseException(CodeEnum.WBS_STAKEHOLDER_PHONE.addMsg(memberSheet.getSheetName(),(i+1),stakeholderCell));
// }
// }
// //成员
// if (StrUtil.isNotEmpty(memberCell)) {
// if (!memberAndPhoneRepeat(proMembers, memberCell, phoneCell)) {
// Long userId = userService.selectUserIdByPhone(phoneCell);
// if (ObjectUtil.isNotNull(userId)) {
// userIdSet.add(userId);
// }
// member = new ProMember();
// member.setId(snowflake.nextId());
// member.setProjectId(sysProject.getId());
// member.setUserId(userId);
// member.setNickname(memberCell);
// member.setPhone(phoneCell);
// if (ObjectUtil.isNotNull(stakeholder)) {
// member.setStakeholderId(stakeholder.getId());
// }
// proMemberService.saveMember(member);
// proMembers.add(member);
//// //创建者依据project的creatorId判断,不需要添加成员
// } else {
// throw new BaseException(CodeEnum.WBS_REPEAT_MEMBER_PHONE.addMsg(memberSheet.getSheetName(),(i+1)));
// }
// }
// ProMemberExample.Criteria c2 = example.createCriteria();
// c2.andProjectIdEqualTo(projectId).andNicknameEqualTo(memberCell);
// example.or(c2);
// long l3 = proMemberDao.countByExample(example);
// if(l3 > 0){
// throw new BaseException(CodeEnum.WBS_REPEAT_MEMBER_PHONE.addMsg(memberSheet.getSheetName(),(i+1),phoneCell));
// }
// //TODO 每个成员都关注此项目(暂时)
// addUserAttention(userIdSet, sysProject);
// } else {
// throw new BaseException(CodeEnum.WBS_NOT_MEMBER_SHEET);
// }
//成员
if (!memberAndPhoneRepeat(memberList, memberCell, phoneCell)) {
Long userId = userService.selectUserIdByPhone(phoneCell);
if (ObjectUtil.isNotNull(userId)) {
userIdSet.add(userId);
}
ProMember member = new ProMember();
member.setId(snowflake.nextId());
member.setProjectId(projectId);
member.setUserId(userId);
member.setNickname(memberCell);
member.setPhone(phoneCell);
if (ObjectUtil.isNotNull(stakeholder)) {
member.setStakeholderId(stakeholder.getId());
}
proMemberDao.insertSelective(member);
memberList.add(member);
}
}
//TODO 每个成员都关注此项目(暂时)
excelService.addUserAttention(userIdSet, projectId);
}
private boolean stakeholderWithPhone(List<ProMember> stakeholderList, String stakeholderName, String phone) {
@ -1094,4 +1121,21 @@ public class ExportWbsService implements IExportWbsService{
}
return false;
}
/**
* 判断成员和手机号是否重复
*/
private boolean memberAndPhoneRepeat(List<ProMember> proMembers, String memberName, String phone) {
if (CollectionUtil.isNotEmpty(proMembers)) {
for (ProMember proMember : proMembers) {
if (proMember.getNickname().equalsIgnoreCase(memberName)) {
return true;
}
if (proMember.getPhone().equalsIgnoreCase(phone)) {
return true;
}
}
}
return false;
}
}

8
tall/src/main/java/com/ccsens/tall/service/IExcelService.java

@ -1,10 +1,12 @@
package com.ccsens.tall.service;
import com.ccsens.tall.bean.po.SysProject;
import com.ccsens.tall.bean.vo.ProjectVo;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import javax.servlet.http.Part;
import java.util.Set;
public interface IExcelService {
/**
@ -36,4 +38,10 @@ public interface IExcelService {
*/
void saveWbsExcelFile(Long userId,Long projectId,String filePath, String fileName,Long fileSize,Long wpsFileId);
/**
* 用户关注项目
* @param userIdList
* @param projectId
*/
void addUserAttention(Set<Long> userIdList, Long projectId);
}

13
tall/src/main/resources/mapper_dao/ProRoleDao.xml

@ -462,4 +462,17 @@
WHERE
r.rec_status = 0
</select>
<select id="getMoneyStakeholder" resultType="com.ccsens.tall.bean.po.ProRole">
SELECT
id,
`name`,
description
FROM
`t_pro_role`
WHERE
project_id = #{projectId}
and parent_id in
(SELECT id FROM t_pro_role WHERE name = 'MoneyStakeholder' and project_id = #{projectId})
limit 1
</select>
</mapper>
Loading…
Cancel
Save