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); 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 每个成员都关注此项目(暂时) //TODO 每个成员都关注此项目(暂时)
addUserAttention(userIdSet, sysProject); addUserAttention(userIdSet, sysProject.getId());
} else { } else {
throw new BaseException(CodeEnum.WBS_NOT_MEMBER_SHEET); 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)) { if (CollectionUtil.isNotEmpty(userIdList)) {
for (Long userId : userIdList) { for (Long userId : userIdList) {
UserAttention userAttention = new UserAttention(); UserAttention userAttention = new UserAttention();
userAttention.setId(snowflake.nextId()); userAttention.setId(snowflake.nextId());
userAttention.setUserId(userId); userAttention.setUserId(userId);
userAttention.setProjectId(sysProject.getId()); userAttention.setProjectId(sysProjectId);
userAttentionService.saveAttention(userAttention); userAttentionService.saveAttention(userAttention);
} }
} }

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

@ -59,15 +59,13 @@ public class ExportWbsService implements IExportWbsService{
@Resource @Resource
private SysPluginDao sysPluginDao; private SysPluginDao sysPluginDao;
@Resource @Resource
private TaskDeliverService taskDeliverService;
@Resource
private ProTaskDetailService taskDetailService;
@Resource
private ProRoleService proRoleService; private ProRoleService proRoleService;
@Resource @Resource
private IUserService userService; private IUserService userService;
@Resource @Resource
private Snowflake snowflake; private Snowflake snowflake;
@Resource
private IExcelService excelService;
@Override @Override
public String exportWbs(Long projectId) throws Exception { public String exportWbs(Long projectId) throws Exception {
@ -973,109 +971,138 @@ public class ExportWbsService implements IExportWbsService{
@Override @Override
public void importMember(String path, Long currentUserId, Long projectId) throws Exception { public void importMember(String path, Long currentUserId, Long projectId) throws Exception {
// //验证权限 //验证权限
// int power = proRoleService.selectPowerByRoleName(currentUserId, projectId); int power = proRoleService.selectPowerByRoleName(currentUserId, projectId);
// if (power < 2) { if (power < 2) {
// throw new BaseException(CodeEnum.NOT_POWER); throw new BaseException(CodeEnum.NOT_POWER);
// } }
// //获取excel表格 //获取excel表格
// InputStream is = new FileInputStream(path); InputStream is = new FileInputStream(path);
// XSSFWorkbook xssfWorkbook = new XSSFWorkbook(is); XSSFWorkbook xssfWorkbook = new XSSFWorkbook(is);
// //获取项目成员表 //获取项目成员表
// XSSFSheet memberSheet = xssfWorkbook.getSheet("项目成员表"); XSSFSheet memberSheet = xssfWorkbook.getSheet("项目成员表");
// if (ObjectUtil.isNull(memberSheet)) {
// //读取WBS表 throw new BaseException(CodeEnum.WBS_NOT_MEMBER_SHEET);
// List<ProMember> stakeholderList = new ArrayList<>(); }
// if (ObjectUtil.isNotNull(memberSheet)) {
// Set<Long> userIdSet = new HashSet<>(); // //存储表内的成员信息
// // Map<String,String> mapName = new HashMap<>();
// for (int i = 1; i <= memberSheet.getLastRowNum(); i++) { // Map<String,String> mapPhone = new HashMap<>();
// XSSFRow row = memberSheet.getRow(i); // //存储奖惩干系人信息
// if(ObjectUtil.isNull(row)){ // Map<String,String> sMapName = new HashMap<>();
// continue; // Map<String,String> sMapPhone = new HashMap<>();
// } //存成员
// String memberCell = ExcelUtil.getCellValue(row.getCell(1)); List<ProMember> memberList = new ArrayList<>();
// String phoneCell = ExcelUtil.getCellValue(row.getCell(2)); //存奖惩干系人
// String stakeholderCell = ExcelUtil.getCellValue(row.getCell(3)); List<ProMember> stakeholderList = new ArrayList<>();
// String stakeholderPhoneCell = ExcelUtil.getCellValue(row.getCell(4)); //存储添加的成员和奖惩干系人的userId,为了关注此项目
// ProMember stakeholder = null; Set<Long> userIdSet = new HashSet<>();
// ProMember member; //查询项目内的奖惩干系人角色
// //成员名为空,跳至下一行 ProRole proStakeholder = proRoleDao.getMoneyStakeholder(projectId);
// if ((StrUtil.isEmpty(memberCell))) { //手机号格式
// continue; String regex ="^[1]([3-9])[0-9]{9}$";
// } //循环读取信息
// //手机号不能为空 for (int i = 1; i <= memberSheet.getLastRowNum(); i++) {
// if (StrUtil.isNotEmpty(memberCell) && StrUtil.isEmpty(phoneCell)) { XSSFRow row = memberSheet.getRow(i);
// throw new BaseException(CodeEnum.WBS_NOT_PHONE.addMsg(memberSheet.getSheetName(), (i+1),memberCell)); if (ObjectUtil.isNull(row)) {
// } continue;
// //判断手机号格式 }
// String regex ="^[1]([3-9])[0-9]{9}$"; String memberCell = ExcelUtil.getCellValue(row.getCell(1));
// if (StrUtil.isEmpty(phoneCell) || !phoneCell.matches(regex)){ String phoneCell = ExcelUtil.getCellValue(row.getCell(2));
// throw new BaseException(CodeEnum.WBS_PHONE_ERROR.addMsg(memberSheet.getSheetName(),(i+1),memberCell)); String stakeholderCell = ExcelUtil.getCellValue(row.getCell(3));
// } String stakeholderPhoneCell = ExcelUtil.getCellValue(row.getCell(4));
// //成员名不存在,跳过
// //添加奖惩干系人 if ((StrUtil.isEmpty(memberCell))) {
// if (StrUtil.isNotEmpty(stakeholderCell)) { continue;
// //判断奖惩干系人的手机号是否为空 }
// if ( StrUtil.isEmpty(stakeholderPhoneCell)){ //成员手机号不能为空
// throw new BaseException(CodeEnum.WBS_NOT_PHONE.addMsg(memberSheet.getSheetName(), (i+1),stakeholderCell)); if (StrUtil.isEmpty(phoneCell)) {
// } throw new BaseException(CodeEnum.WBS_NOT_PHONE.addMsg(memberSheet.getSheetName(), (i + 1), memberCell));
// //判断奖惩干系人的手机号格式是否正确 }
// if (!stakeholderPhoneCell.matches(regex)){ //验证手机号格式
// throw new BaseException(CodeEnum.WBS_PHONE_ERROR.addMsg(memberSheet.getSheetName(),(i+1),stakeholderCell)); if (!phoneCell.matches(regex)) {
// } throw new BaseException(CodeEnum.WBS_PHONE_ERROR.addMsg(memberSheet.getSheetName(), (i + 1), memberCell));
// if (!stakeholderWithPhone(stakeholderList, stakeholderCell, stakeholderPhoneCell)) { }
// Long userId = userService.selectUserIdByPhone(stakeholderPhoneCell); //处理奖惩干系人
// if (ObjectUtil.isNotNull(userId)) { ProMember stakeholder = null;
// userIdSet.add(userId); if (StrUtil.isNotEmpty(stakeholderCell)) {
// } //判断奖惩干系人的手机号是否为空
// stakeholder = new ProMember(); if (StrUtil.isEmpty(stakeholderPhoneCell)) {
// stakeholder.setId(snowflake.nextId()); throw new BaseException(CodeEnum.WBS_NOT_PHONE.addMsg(memberSheet.getSheetName(), (i + 1), stakeholderCell));
// stakeholder.setProjectId(projectId); }
// stakeholder.setUserId(userId); //判断奖惩干系人的手机号格式是否正确
// stakeholder.setNickname(stakeholderCell); if (!stakeholderPhoneCell.matches(regex)) {
// stakeholder.setPhone(stakeholderPhoneCell); throw new BaseException(CodeEnum.WBS_PHONE_ERROR.addMsg(memberSheet.getSheetName(), (i + 1), stakeholderCell));
// proMemberDao.insertSelective(stakeholder); }
// stakeholderList.add(stakeholder); 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(); // ProMemberExample.Criteria c2 = example.createCriteria();
// proMemberRole.setId(snowflake.nextId()); // c2.andProjectIdEqualTo(projectId).andNicknameEqualTo(memberCell);
// proMemberRole.setMemberId(stakeholder.getId()); // example.or(c2);
// proMemberRole.setRoleId(stakeholderId); // long l3 = proMemberDao.countByExample(example);
// proMemberRoleDao.insertSelective(proMemberRole); // if(l3 > 0){
// } else { // throw new BaseException(CodeEnum.WBS_REPEAT_MEMBER_PHONE.addMsg(memberSheet.getSheetName(),(i+1),phoneCell));
// 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)));
// }
// }
// } // }
// //TODO 每个成员都关注此项目(暂时) //成员
// addUserAttention(userIdSet, sysProject); if (!memberAndPhoneRepeat(memberList, memberCell, phoneCell)) {
// } else { Long userId = userService.selectUserIdByPhone(phoneCell);
// throw new BaseException(CodeEnum.WBS_NOT_MEMBER_SHEET); 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) { private boolean stakeholderWithPhone(List<ProMember> stakeholderList, String stakeholderName, String phone) {
@ -1094,4 +1121,21 @@ public class ExportWbsService implements IExportWbsService{
} }
return false; 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; package com.ccsens.tall.service;
import com.ccsens.tall.bean.po.SysProject;
import com.ccsens.tall.bean.vo.ProjectVo; import com.ccsens.tall.bean.vo.ProjectVo;
import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import javax.servlet.http.Part; import javax.servlet.http.Part;
import java.util.Set;
public interface IExcelService { public interface IExcelService {
/** /**
@ -36,4 +38,10 @@ public interface IExcelService {
*/ */
void saveWbsExcelFile(Long userId,Long projectId,String filePath, String fileName,Long fileSize,Long wpsFileId); 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 WHERE
r.rec_status = 0 r.rec_status = 0
</select> </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> </mapper>
Loading…
Cancel
Save