Browse Source

20210414v1.7

recovery
zy_Java 4 years ago
parent
commit
0002bbd85a
  1. 142
      tall/src/main/java/com/ccsens/tall/service/ExcelService.java
  2. 43
      util/src/main/java/com/ccsens/util/CodeEnum.java

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

@ -179,7 +179,8 @@ public class ExcelService implements IExcelService {
private void readProject(XSSFSheet wbsSheet, int projectInfoStart, int projectInfoEnd, Long currentUserId, SysProject sysProject) throws Exception {
XSSFRow row = wbsSheet.getRow(projectInfoStart + 1);
if(ObjectUtil.isNull(row)){
// throw new BaseException(CodeEnum.notProject(wbsSheet.getSheetName() ,(projectInfoStart + 1)));
//TODO
throw new BaseException(CodeEnum.WBS_NOT_PROJECT.addMsg(wbsSheet.getSheetName(),projectInfoStart + 1));
}
String projectName = ExcelUtil.getCellValue(row.getCell(0));
if (StrUtil.isNotEmpty(projectName)) {
@ -194,7 +195,7 @@ public class ExcelService implements IExcelService {
endTime = Long.parseLong(end);
} catch (Exception e) {
//日期格式错误
throw new BaseException(CodeEnum.WBS_PROJECT_TIME_ERROR);
throw new BaseException(CodeEnum.WBS_PROJECT_TIME_ERROR.addMsg(wbsSheet.getSheetName(),projectInfoStart + 1));
}
sysProject.setId(snowflake.nextId());
sysProject.setName(projectName);
@ -292,6 +293,8 @@ public class ExcelService implements IExcelService {
Long firstRoleId = null;
Long secondRoleId = null;
//循环结束判断字符串allOneRole是否包含PM和Member
StringBuilder allOneRole = new StringBuilder();
for (int i = memberStart + 1; i <= memberEnd; i++) {
XSSFRow row = wbsSheet.getRow(i);
if(ObjectUtil.isNull(row)){
@ -306,51 +309,43 @@ public class ExcelService implements IExcelService {
ProRole role = new ProRole();
role.setId(snowflake.nextId());
role.setProjectId(sysProject.getId());
// switch (proRoleCell){
// case WebConstant.ROLE_NAME.God:
// break;
// default:
// }
if (proRoleCell.equalsIgnoreCase(WebConstant.ROLE_NAME.God.phase)) {
role.setName(WebConstant.ROLE_NAME.God.value);
role.setDescription(WebConstant.ROLE_NAME.God.phase);
allOneRole.append(WebConstant.ROLE_NAME.God.value);
} else if (proRoleCell.equalsIgnoreCase(WebConstant.ROLE_NAME.ManageRepresent.phase)) {
role.setName(WebConstant.ROLE_NAME.ManageRepresent.value);
role.setDescription(WebConstant.ROLE_NAME.ManageRepresent.phase);
allOneRole.append(WebConstant.ROLE_NAME.ManageRepresent.value);
} else if (proRoleCell.equalsIgnoreCase(WebConstant.ROLE_NAME.Stakeholder.phase)) {
role.setName(WebConstant.ROLE_NAME.Stakeholder.value);
role.setDescription(WebConstant.ROLE_NAME.Stakeholder.phase);
allOneRole.append(WebConstant.ROLE_NAME.Stakeholder.value);
} else if (proRoleCell.equalsIgnoreCase(WebConstant.ROLE_NAME.PM.phase)) {
role.setName(WebConstant.ROLE_NAME.PM.value);
role.setDescription(WebConstant.ROLE_NAME.PM.phase);
allOneRole.append(WebConstant.ROLE_NAME.PM.value);
} else if (proRoleCell.equalsIgnoreCase(WebConstant.ROLE_NAME.Member.phase)) {
role.setName(WebConstant.ROLE_NAME.Member.value);
role.setDescription(WebConstant.ROLE_NAME.Member.phase);
allOneRole.append(WebConstant.ROLE_NAME.Member.value);
} else if (proRoleCell.equalsIgnoreCase(WebConstant.ROLE_NAME.Attention.phase)) {
role.setName(WebConstant.ROLE_NAME.Attention.value);
role.setDescription(WebConstant.ROLE_NAME.Attention.phase);
allOneRole.append(WebConstant.ROLE_NAME.Attention.value);
}else if (proRoleCell.equalsIgnoreCase(WebConstant.ROLE_NAME.ProjectVirtualRole.phase)) {
role.setName(WebConstant.ROLE_NAME.ProjectVirtualRole.value);
role.setDescription(WebConstant.ROLE_NAME.ProjectVirtualRole.phase);
allOneRole.append(WebConstant.ROLE_NAME.ProjectVirtualRole.value);
} else {
throw new BaseException(CodeEnum.WBS_NOT_FIRST_ROLE.addMsg(wbsSheet.getSheetName() + (i+1)));
throw new BaseException(CodeEnum.WBS_NOT_FIRST_ROLE.addMsg(wbsSheet.getSheetName(),(i+1),proRoleCell));
}
proRoleService.saveProRole(role);
proRoles.add(role);
firstRoleId = role.getId();
// if(CollectionUtil.isNotEmpty(proRoles)) {
// for (ProRole proRole : proRoles) {
// if(ObjectUtil.isNull(proRole.getParentId())) {
// if (proRole.getDescription().equals(proRoleCell)) {
// firstRoleId = proRole.getId();
// break;
// }
// }
// }
// }
}
if (ObjectUtil.isNull(firstRoleId)) {
throw new BaseException("找不到系统角色[" + (i + 1) + "]");
continue;
}
//二级角色
if (StrUtil.isNotEmpty(secondRoleCell)) {
@ -367,32 +362,34 @@ public class ExcelService implements IExcelService {
try {
SysProject project = sysProjectDao.selectByPrimaryKey(Long.parseLong(roleRelevanceProjectId));
if(ObjectUtil.isNull(project)){
throw new BaseException(CodeEnum.NOT_PROJECT.addMsg(wbsSheet.getSheetName() + (i+1)));
throw new BaseException(CodeEnum.NOT_PROJECT.addMsg(wbsSheet.getSheetName(),(i+1),roleRelevanceProjectId));
}
proRole.setRelevanceProjectId(project.getId());
}catch (NumberFormatException e){
throw new BaseException(CodeEnum.NOT_PROJECT.addMsg(wbsSheet.getSheetName() + (i+1)));
throw new BaseException(CodeEnum.NOT_PROJECT.addMsg(wbsSheet.getSheetName(),(i+1),roleRelevanceProjectId));
}
}
proRoleService.saveProRole(proRole);
proRoles.add(proRole);
secondRoleId = proRole.getId();
} else {
throw new BaseException(CodeEnum.WBS_REPEAT_ROLE_NAME.addMsg(wbsSheet.getSheetName() + (i+1)));
throw new BaseException(CodeEnum.WBS_REPEAT_ROLE_NAME.addMsg(wbsSheet.getSheetName(),(i+1),secondRoleCell));
}
}
if (ObjectUtil.isNull(secondRoleId)) {
throw new BaseException("找不到二级角色[" + (i+1) + "]");
continue;
}
//添加角色成员关联信息
if (StrUtil.isNotEmpty(memberCell)) {
String regex = ",|,|;|;|、|/";
String[] split = memberCell.split(regex);
String memberName ="";
for (int j = 0; j < split.length; j++) {
ProMemberRole memberRole = null;
memberName = split[j];
for (ProMember member : proMembers) {
if (split[j].equalsIgnoreCase(member.getNickname())) {
if (memberName.equalsIgnoreCase(member.getNickname())) {
memberRole = new ProMemberRole();
memberRole.setId(snowflake.nextId());
memberRole.setMemberId(member.getId());
@ -402,7 +399,7 @@ public class ExcelService implements IExcelService {
}
}
if (ObjectUtil.isNull(memberRole)) {
throw new BaseException(CodeEnum.WSB_NOT_MEMBER.addMsg(wbsSheet.getSheetName() + (i+1)));
throw new BaseException(CodeEnum.WSB_NOT_MEMBER.addMsg(wbsSheet.getSheetName(),(i+1),memberName));
}
}
// ProMemberRole memberRole = null;
@ -424,6 +421,12 @@ public class ExcelService implements IExcelService {
// }
}
if (!allOneRole.toString().contains(WebConstant.ROLE_NAME.PM.value)){
throw new BaseException(CodeEnum.NOT_FOUND_PM);
}
if (!allOneRole.toString().contains(WebConstant.ROLE_NAME.Member.value)){
throw new BaseException(CodeEnum.NOT_FOUND_Member);
}
//角色对谁不可见
String[] excludeRoleCells;
for (int i = memberStart + 1; i <= memberEnd; i++) {
@ -449,7 +452,9 @@ public class ExcelService implements IExcelService {
}
if (ObjectUtil.isNotNull(excludeRoleCells)) {
String noLookName = "";
for (int a = 0; a < excludeRoleCells.length; a++) {
noLookName = excludeRoleCells[a];
ProRoleExclude excludeRole = new ProRoleExclude();
excludeRole.setId(snowflake.nextId());
excludeRole.setRoleId(proRoleId);
@ -463,7 +468,7 @@ public class ExcelService implements IExcelService {
}
}
if (ObjectUtil.isNull(roleId)) {
throw new BaseException(CodeEnum.WBS_NOT_FIND_ROLE.addMsg(wbsSheet.getSheetName() + (i+1)));
throw new BaseException(CodeEnum.WBS_NOT_FIND_ROLE.addMsg(wbsSheet.getSheetName(),(i+1),noLookName));
}
}
excludeRoleService.saveExcludeRole(excludeRole);
@ -518,7 +523,7 @@ public class ExcelService implements IExcelService {
//手机号不能为空
if ((StrUtil.isNotEmpty(memberCell) && StrUtil.isEmpty(phoneCell)) ||
(StrUtil.isNotEmpty(stakeholderCell) && StrUtil.isEmpty(stakeholderPhoneCell))) {
throw new BaseException(CodeEnum.WBS_NOT_PHONE.addMsg(memberSheet.getSheetName() + (i+1)));
throw new BaseException(CodeEnum.WBS_NOT_PHONE.addMsg(memberSheet.getSheetName(), (i+1),memberCell));
}
//TODO 判断手机号格式
@ -544,7 +549,7 @@ public class ExcelService implements IExcelService {
proMemberRole.setRoleId(stakeholderId);
proMemberRoleService.saveMemberRole(proMemberRole);
} else {
throw new BaseException(CodeEnum.WBS_STAKEHOLDER_PHONE.addMsg(memberSheet.getSheetName() + (i+1)));
throw new BaseException(CodeEnum.WBS_STAKEHOLDER_PHONE.addMsg(memberSheet.getSheetName(),(i+1),stakeholderCell));
}
}
//成员
@ -567,7 +572,7 @@ public class ExcelService implements IExcelService {
proMembers.add(member);
// //创建者依据project的creatorId判断,不需要添加成员
} else {
throw new BaseException(CodeEnum.WBS_REPEAT_MEMBER_PHONE.addMsg(memberSheet.getSheetName() + (i+1)));
throw new BaseException(CodeEnum.WBS_REPEAT_MEMBER_PHONE.addMsg(memberSheet.getSheetName(),(i+1),memberCell));
}
}
}
@ -637,9 +642,8 @@ public class ExcelService implements IExcelService {
private void readTask(XSSFWorkbook xssfWorkbook, XSSFSheet wbsSheet, int taskStart, int taskEnd,
Long currentUserId, SysProject sysProject, List<ProTaskDetail> taskDetails,
List<ProRole> proRoles, List<ProMember> proMembers, Map<String, List<ProTaskDetail>> hasGroupMap) throws Exception {
/**
* 读取到任务的表头key为属性value为在第几列
*/
//读取到任务的表头,key为属性,value为在第几列
HashMap<String, Integer> map =new HashMap<String, Integer>();
XSSFRow rowq = wbsSheet.getRow(taskStart);
for (int q=0;q<100;q++){
@ -786,7 +790,6 @@ public class ExcelService implements IExcelService {
if(map.get("延迟时间(自动延迟模式可用)")!=null){
delayTime = ExcelUtil.getCellValue(row.getCell(map.get("延迟时间(自动延迟模式可用)")));
//TODO 跳转任务和跳转次数暂不处理
}else {
throw new BaseException(CodeEnum.NOTNAME.addMsgLwb("延迟时间(自动延迟模式可用)"));
}
@ -802,20 +805,16 @@ public class ExcelService implements IExcelService {
loopTimes = ExcelUtil.getCellValue(row.getCell(17));
//这个不知道要不要先给你留着
}else {
throw new BaseException(CodeEnum.NOTNAME.addMsgLwb(""));
// throw new BaseException(CodeEnum.NOTNAME.addMsgLwb(""));
}
//输入文件
if(map.get("任务(节点)")!=null){
input = ExcelUtil.getCellValue(row.getCell(18));
//二级任务名不能为空
// if(StrUtil.isEmpty(task2)){
// throw new BaseException(CodeEnum.WBS_NOT_TASK_NAME.addMsg(wbsSheet.getSheetName()+i));
// }
//一级任务
}else {
// throw new BaseException(CodeEnum.NOTNAME.addMsgLwb(""));
}
//一级任务
if (StrUtil.isNotEmpty(task1)) {
ProTaskDetail firstTaskDetail = new ProTaskDetail();
firstTaskDetail.setId(snowflake.nextId());
@ -845,7 +844,8 @@ public class ExcelService implements IExcelService {
}
if (ObjectUtil.isNull(firstTaskDetailId)) {
throw new BaseException("找不到任务[" + (i+1) + "]");
continue;
// throw new BaseException("找不到任务[" + (i+1) + "]");
}
if(StrUtil.isNotEmpty(endTime)){
@ -900,7 +900,7 @@ public class ExcelService implements IExcelService {
}
}
if (ObjectUtil.isNull(executorRoleId)) {
throw new BaseException(CodeEnum.WBS_NOT_FIND_EXECUTOR_ROLE.addMsg(wbsSheet.getSheetName() + (i+1)));
throw new BaseException(CodeEnum.WBS_NOT_FIND_EXECUTOR_ROLE.addMsg(wbsSheet.getSheetName(),(i+1),executorRole));
}
}
//检查人
@ -914,7 +914,7 @@ public class ExcelService implements IExcelService {
}
}
if (ObjectUtil.isNull(checkerRoleId)) {
throw new BaseException(CodeEnum.WBS_NOT_FIND_CHECKER_ROLE.addMsg(wbsSheet.getSheetName() + (i+1)));
throw new BaseException(CodeEnum.WBS_NOT_FIND_CHECKER_ROLE.addMsg(wbsSheet.getSheetName(),(i+1),checkerRole));
}
}
//奖惩金额
@ -930,26 +930,14 @@ public class ExcelService implements IExcelService {
} else if (delay.equals(WebConstant.TASK_DELAY.Manual.phase)) {
taskDetail.setDelay((byte) WebConstant.TASK_DELAY.Manual.value);
} else {
throw new BaseException(CodeEnum.WBS_DELAY_ERROR.addMsg(wbsSheet.getSheetName() + (i+1)));
taskDetail.setDelay((byte) WebConstant.TASK_DELAY.SelfMotion.value);
}
}
//延迟时间
if (StrUtil.isNotEmpty(delayTime)) {
taskDetail.setDelayTime(DateUtil.str2MillSeconds(delayTime));
}
//TODO 跳转任务(应该在循环外处理)
//输入文档 旧的
// if (StrUtil.isNotEmpty(input)) {
// ProTaskDeliver taskDeliver = new ProTaskDeliver();
// taskDeliver.setId(snowflake.nextId());
// taskDeliver.setTaskDetailId(taskDetail.getId());
// taskDeliver.setName(input);
// taskDeliver.setIsInput(1);
// taskDeliver.setIsFinal(0);
// taskDeliverService.saveDeliver(taskDeliver);
// }
//TODO 跳转任务(应该在循环外处理
//输入文档 新的
if(StrUtil.isNotEmpty(inputFiles)){
@ -1170,21 +1158,27 @@ public class ExcelService implements IExcelService {
} else {
Date startDate = new Date(taskDetail.getBeginTime());
Date endDate = new Date(taskDetail.getEndTime());
List<CronConstant.TaskDate> taskDateList =
NatureToDate.generateDates(taskDetail.getCycle(), startDate, endDate);
if (CollectionUtil.isEmpty(taskDateList)) {
return;
}
for (CronConstant.TaskDate taskDate : taskDateList) {
try {
List<CronConstant.TaskDate> taskDateList =
NatureToDate.generateDates(taskDetail.getCycle(), startDate, endDate);
if (CollectionUtil.isEmpty(taskDateList)) {
return;
}
for (CronConstant.TaskDate taskDate : taskDateList) {
ProTaskSubTime proTaskSubTime = new ProTaskSubTime();
proTaskSubTime.setId(snowflake.nextId());
proTaskSubTime.setTaskDetailId(taskDetail.getId());
proTaskSubTime.setBeginTime(taskDate.getStartDate().getTime());
proTaskSubTime.setEndTime(taskDate.getEndDate().getTime());
ProTaskSubTime proTaskSubTime = new ProTaskSubTime();
proTaskSubTime.setId(snowflake.nextId());
proTaskSubTime.setTaskDetailId(taskDetail.getId());
proTaskSubTime.setBeginTime(taskDate.getStartDate().getTime());
proTaskSubTime.setEndTime(taskDate.getEndDate().getTime());
taskSubTimeService.saveProTaskSubTask(proTaskSubTime);
taskSubTimeService.saveProTaskSubTask(proTaskSubTime);
}
}catch (Exception e){
throw new BaseException(CodeEnum.NOT_SUPPORT_CYCLE.addMsg(taskDetail.getCycle()));
}
}
}
}
@ -1269,7 +1263,7 @@ public class ExcelService implements IExcelService {
Long memberRoleId = null;
XSSFRow roleRow = sheet.getRow(2);
if(ObjectUtil.isNull(roleRow)){
throw new BaseException(CodeEnum.NOT_ROW.addMsg(sheet.getSheetName() + (2)));
throw new BaseException(CodeEnum.NOT_ROW.addMsg(sheet.getSheetName(),2));
}
for (int i = 3; i < sheet.getLastRowNum() + 1; i++) {
@ -1297,7 +1291,8 @@ public class ExcelService implements IExcelService {
for (int a = 2; a < roleRow.getLastCellNum(); a++) {
String plugin = StringUtil.replaceComma(ExcelUtil.getCellValue(pluginRow.getCell(a)));
if (StrUtil.isNotEmpty(plugin)) {
String[] plugins = plugin.split(",");
String regex=",|,|;|;|、|/";
String[] plugins = plugin.split(regex);
//获取memberRoleId
String roleCell = ExcelUtil.getCellValue(roleRow.getCell(a));
if (StrUtil.isNotEmpty(roleCell) && CollectionUtil.isNotEmpty(proRoles)) {
@ -1317,7 +1312,7 @@ public class ExcelService implements IExcelService {
}
}
if (ObjectUtil.isNull(sysPluginId)) {
throw new BaseException(CodeEnum.WBS_NOT_PLUGIN.addMsg(sheet.getSheetName() + (i+1)));
throw new BaseException(CodeEnum.WBS_NOT_PLUGIN.addMsg(sheet.getSheetName(),(i+1),plugins[p]));
}
if (CollectionUtil.isNotEmpty(taskNameList)) {
for (ProTaskDetail taskName : taskNameList) {
@ -1342,9 +1337,6 @@ public class ExcelService implements IExcelService {
}
}
}
// else {
// throw new BaseException(CodeEnum.WBS_NOT_PLUGIN_SHEET);
// }
}
}

43
util/src/main/java/com/ccsens/util/CodeEnum.java

@ -29,13 +29,14 @@ public enum CodeEnum {
WBS_PROJECT_TIME_ERROR(15,"时间格式异常",true),
WBS_NOT_PROJECT_TIME(16,"项目时间不能为空",true),
WBS_NOT_PROJECT_NAME(17,"项目名称不能为空",true),
WBS_NOT_PROJECT(17,"找不到项目信息",true),
WBS_NOT_MEMBER_SHEET(18,"未找到项目成员表",true),
WBS_NOT_PHONE(19,"手机号为空",true),
WBS_STAKEHOLDER_PHONE(20,"奖惩干系人和手机号不匹配",true),
WBS_REPEAT_MEMBER_PHONE(21,"成员已存在",true),
WBS_NOT_FIRST_ROLE(22,"系统角色名称错误",true),
WBS_REPEAT_ROLE_NAME(23,"角色名称重复",true),
WSB_NOT_MEMBER(24,"未找到对应成员,请检查成员姓名是否正确", true),
WSB_NOT_MEMBER(24,"未找到对应成员", true),
WBS_NOT_FIND_ROLE(25,"未找到对应的角色,请检查对谁不可见一列的名字与格式",true),
WBS_NOT_TASK_NAME(26,"任务名不能为空",true),
WBS_NOT_FIND_EXECUTOR_ROLE(27,"找不到负责人,请检查负责人的名称",true),
@ -199,6 +200,9 @@ public enum CodeEnum {
CHONGFUTIJIAO(163,"不要重复提交",true),
ZUISHAOCHUANLIANGE(164,"排序最少需要传入两个",true),
HOSPITAL_NOT_FOUND(165,"没有找到医院",true),
NOT_FOUND_PM(166,"系统角色缺少项目经理",true),
NOT_FOUND_Member(167,"系统角色缺少项目成员",true),
NOT_SUPPORT_CYCLE(168,"重复规则文本格式暂不支持",true),
;
@ -226,13 +230,44 @@ public enum CodeEnum {
this.msg = msg+"报名人数已满";
return this;
}
public CodeEnum addMsg(String msg){
if(this.msg.contains("行:")){
this.msg = this.msg.substring(this.msg.indexOf("行:") + 2);
if(this.msg.contains("错误:")){
this.msg = this.msg.substring(this.msg.indexOf("错误:") + 3);
}
this.msg = msg+"--错误:"+this.msg;
return this;
}
public CodeEnum addMsg(String sheetName,Integer rowNum){
if(this.msg.contains("错误:")){
this.msg = this.msg.substring(this.msg.indexOf("错误:") + 3);
}
this.msg = sheetName+"第"+rowNum+"行--错误:"+this.msg;
return this;
}
public CodeEnum addMsg(String sheetName,Integer rowNum,String value){
if(this.msg.contains("错误:")){
this.msg = this.msg.substring(this.msg.indexOf("错误:") + 3);
}
this.msg = msg+"行:"+this.msg;
this.msg = sheetName+"第"+rowNum+"行["+value+"]--错误:"+this.msg;
return this;
}
public CodeEnum addMsgAndMemberName(String msg,String memberName){
this.msg = msg+"行:成员["+memberName+"]"+this.msg;
return this;
}
public CodeEnum addMsgAndNoLookName(String msg,String noLookName){
this.msg = msg+"行:对谁不可见成员["+noLookName+"]"+this.msg;
return this;
}
public CodeEnum addMsgLwb(String msg) {
this.msg = "未找到名为“"+msg+"”的列,请检查列名称是否正确";
return this;

Loading…
Cancel
Save