|
@ -137,7 +137,9 @@ public class ExcelService implements IExcelService { |
|
|
readPlugin(xssfWorkbook,taskDetails,proRoles); |
|
|
readPlugin(xssfWorkbook,taskDetails,proRoles); |
|
|
return sysProject; |
|
|
return sysProject; |
|
|
} |
|
|
} |
|
|
|
|
|
/** |
|
|
|
|
|
* 添加项目 |
|
|
|
|
|
*/ |
|
|
private void readProject(XSSFSheet wbsSheet, int projectInfoStart, int projectInfoEnd, Long currentUserId,SysProject sysProject) { |
|
|
private void readProject(XSSFSheet wbsSheet, int projectInfoStart, int projectInfoEnd, Long currentUserId,SysProject sysProject) { |
|
|
XSSFRow row = wbsSheet.getRow(projectInfoStart + 1); |
|
|
XSSFRow row = wbsSheet.getRow(projectInfoStart + 1); |
|
|
String projectName = ExcelUtil.getCellValue(row.getCell(0)); |
|
|
String projectName = ExcelUtil.getCellValue(row.getCell(0)); |
|
@ -182,6 +184,9 @@ public class ExcelService implements IExcelService { |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* 读取成员相关 |
|
|
|
|
|
*/ |
|
|
private void readMember(XSSFSheet wbsSheet, XSSFSheet memberSheet, int memberStart, int memberEnd, |
|
|
private void readMember(XSSFSheet wbsSheet, XSSFSheet memberSheet, int memberStart, int memberEnd, |
|
|
SysProject sysProject, List<ProRole> proRoles, List<ProMember> proMembers) throws Exception { |
|
|
SysProject sysProject, List<ProRole> proRoles, List<ProMember> proMembers) throws Exception { |
|
|
|
|
|
|
|
@ -391,7 +396,9 @@ public class ExcelService implements IExcelService { |
|
|
proRoles.add(proMemberRole); |
|
|
proRoles.add(proMemberRole); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
//判断集合是否为空,有没有相同内容
|
|
|
/** |
|
|
|
|
|
* 判断集合是否为空,有没有相同内容 |
|
|
|
|
|
*/ |
|
|
private boolean proMemberRoleExist(String memberRoleName,List<ProRole> proRoles) { |
|
|
private boolean proMemberRoleExist(String memberRoleName,List<ProRole> proRoles) { |
|
|
if (CollectionUtil.isNotEmpty(proRoles)) { |
|
|
if (CollectionUtil.isNotEmpty(proRoles)) { |
|
|
for (ProRole proMemberRole : proRoles) { |
|
|
for (ProRole proMemberRole : proRoles) { |
|
@ -403,7 +410,9 @@ public class ExcelService implements IExcelService { |
|
|
return false; |
|
|
return false; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
//添加成员与奖惩干系人
|
|
|
/** |
|
|
|
|
|
* 添加成员与奖惩干系人 |
|
|
|
|
|
*/ |
|
|
private void memberWhitStakeholder(XSSFSheet memberSheet, Long stakeholderId, SysProject sysProject, List<ProMember> proMembers) throws Exception { |
|
|
private void memberWhitStakeholder(XSSFSheet memberSheet, Long stakeholderId, SysProject sysProject, List<ProMember> proMembers) throws Exception { |
|
|
List<ProMember> stakeholderList = new ArrayList<>(); |
|
|
List<ProMember> stakeholderList = new ArrayList<>(); |
|
|
if (ObjectUtil.isNotNull(memberSheet)) { |
|
|
if (ObjectUtil.isNotNull(memberSheet)) { |
|
@ -529,6 +538,9 @@ public class ExcelService implements IExcelService { |
|
|
return false; |
|
|
return false; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* 读取任务 |
|
|
|
|
|
*/ |
|
|
private void readTask(XSSFWorkbook xssfWorkbook, XSSFSheet wbsSheet, int taskStart, int taskEnd, |
|
|
private void readTask(XSSFWorkbook xssfWorkbook, XSSFSheet wbsSheet, int taskStart, int taskEnd, |
|
|
Long currentUserId, SysProject sysProject, List<ProTaskDetail> taskDetails, |
|
|
Long currentUserId, SysProject sysProject, List<ProTaskDetail> taskDetails, |
|
|
List<ProRole> proRoles, List<ProMember> proMembers) throws Exception { |
|
|
List<ProRole> proRoles, List<ProMember> proMembers) throws Exception { |
|
@ -565,24 +577,25 @@ public class ExcelService implements IExcelService { |
|
|
|
|
|
|
|
|
for (int i = taskStart + 1; i <= taskEnd; i++) { |
|
|
for (int i = taskStart + 1; i <= taskEnd; i++) { |
|
|
XSSFRow row = wbsSheet.getRow(i); |
|
|
XSSFRow row = wbsSheet.getRow(i); |
|
|
String task1 = ExcelUtil.getCellValue(row.getCell(1));//一级任务名称
|
|
|
//一级任务名称
|
|
|
String task2 = ExcelUtil.getCellValue(row.getCell(2));//二级任务名称
|
|
|
String task1 = ExcelUtil.getCellValue(row.getCell(1)); |
|
|
String description = ExcelUtil.getCellValue(row.getCell(3));//任务描述
|
|
|
//二级任务名称
|
|
|
String beginTime = ExcelUtil.getCellValue(row.getCell(4));//开始时间
|
|
|
String task2 = ExcelUtil.getCellValue(row.getCell(2)); |
|
|
String endTime = ExcelUtil.getCellValue(row.getCell(5));//结束时间
|
|
|
String description = ExcelUtil.getCellValue(row.getCell(3)); |
|
|
// String duration = ExcelUtil.getCellValue(row.getCell(6));//任务时长
|
|
|
String beginTime = ExcelUtil.getCellValue(row.getCell(4)); |
|
|
String repeat = ExcelUtil.getCellValue(row.getCell(7));//重复
|
|
|
String endTime = ExcelUtil.getCellValue(row.getCell(5)); |
|
|
String subTaskCell = ExcelUtil.getCellValue(row.getCell(8));//子任务
|
|
|
String repeat = ExcelUtil.getCellValue(row.getCell(7)); |
|
|
String subProject = ExcelUtil.getCellValue(row.getCell(9));//子项目
|
|
|
String subTaskCell = ExcelUtil.getCellValue(row.getCell(8)); |
|
|
String deliver = ExcelUtil.getCellValue(row.getCell(10));//交付物
|
|
|
String subProject = ExcelUtil.getCellValue(row.getCell(9)); |
|
|
String executorRole = ExcelUtil.getCellValue(row.getCell(11));//负责人
|
|
|
String deliver = ExcelUtil.getCellValue(row.getCell(10)); |
|
|
String checkerRole = ExcelUtil.getCellValue(row.getCell(12));//检查人
|
|
|
String executorRole = ExcelUtil.getCellValue(row.getCell(11)); |
|
|
String money = ExcelUtil.getCellValue(row.getCell(13));//即使奖惩
|
|
|
String checkerRole = ExcelUtil.getCellValue(row.getCell(12)); |
|
|
String delay = ExcelUtil.getCellValue(row.getCell(14));//任务切换模式
|
|
|
String money = ExcelUtil.getCellValue(row.getCell(13)); |
|
|
String delayTime = ExcelUtil.getCellValue(row.getCell(15));//延迟时间
|
|
|
String delay = ExcelUtil.getCellValue(row.getCell(14)); |
|
|
String loopTo = ExcelUtil.getCellValue(row.getCell(16));//跳转任务
|
|
|
String delayTime = ExcelUtil.getCellValue(row.getCell(15)); |
|
|
String loopTimes = ExcelUtil.getCellValue(row.getCell(17));//跳转次数
|
|
|
String loopTo = ExcelUtil.getCellValue(row.getCell(16)); |
|
|
String input = ExcelUtil.getCellValue(row.getCell(18));//输入文档
|
|
|
String loopTimes = ExcelUtil.getCellValue(row.getCell(17)); |
|
|
|
|
|
String input = ExcelUtil.getCellValue(row.getCell(18)); |
|
|
//二级任务名不能为空
|
|
|
//二级任务名不能为空
|
|
|
// if(StrUtil.isEmpty(task2)){
|
|
|
// if(StrUtil.isEmpty(task2)){
|
|
|
// throw new BaseException(CodeEnum.WBS_NOT_TASK_NAME.addMsg(wbsSheet.getSheetName()+i));
|
|
|
// throw new BaseException(CodeEnum.WBS_NOT_TASK_NAME.addMsg(wbsSheet.getSheetName()+i));
|
|
@ -624,7 +637,6 @@ public class ExcelService implements IExcelService { |
|
|
taskDetail.setDescription(description); |
|
|
taskDetail.setDescription(description); |
|
|
taskDetail.setVirtual((byte) WebConstant.TASK_VIRTUAL.Normal.value); |
|
|
taskDetail.setVirtual((byte) WebConstant.TASK_VIRTUAL.Normal.value); |
|
|
taskDetail.setLevel((byte) WebConstant.TASK_LEVEL.SecondTask.value); |
|
|
taskDetail.setLevel((byte) WebConstant.TASK_LEVEL.SecondTask.value); |
|
|
// taskDetail.setGlobal((byte) 0);
|
|
|
|
|
|
taskDetail.setHasGroup((byte) 0); |
|
|
taskDetail.setHasGroup((byte) 0); |
|
|
taskDetail.setAllMember((byte) 1); |
|
|
taskDetail.setAllMember((byte) 1); |
|
|
//子项目
|
|
|
//子项目
|
|
@ -637,26 +649,6 @@ public class ExcelService implements IExcelService { |
|
|
projectService.updateProject(project); |
|
|
projectService.updateProject(project); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
//交付物
|
|
|
|
|
|
if (StrUtil.isNotEmpty(deliver)) { |
|
|
|
|
|
String str = ""; |
|
|
|
|
|
if (deliver.length() > 4) { |
|
|
|
|
|
str = deliver.substring(0, 3); |
|
|
|
|
|
} |
|
|
|
|
|
if (str.equals("关联表")) { |
|
|
|
|
|
String subStr = deliver.substring(4); |
|
|
|
|
|
XSSFSheet subSheet = xssfWorkbook.getSheet(subStr); |
|
|
|
|
|
readSubSheet(subSheet, taskDetail.getId()); |
|
|
|
|
|
} else { |
|
|
|
|
|
ProTaskDeliver taskDeliver = new ProTaskDeliver(); |
|
|
|
|
|
taskDeliver.setId(snowflake.nextId()); |
|
|
|
|
|
taskDeliver.setTaskDetailId(taskDetail.getId()); |
|
|
|
|
|
taskDeliver.setName(deliver); |
|
|
|
|
|
taskDeliver.setIsInput(0); |
|
|
|
|
|
taskDeliver.setIsFinal(1); |
|
|
|
|
|
taskDeliverService.saveDeliver(taskDeliver); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
//负责人
|
|
|
//负责人
|
|
|
if (CollectionUtil.isNotEmpty(proRoles)) { |
|
|
if (CollectionUtil.isNotEmpty(proRoles)) { |
|
|
Long executorRoleId = null; |
|
|
Long executorRoleId = null; |
|
@ -675,7 +667,7 @@ public class ExcelService implements IExcelService { |
|
|
if (CollectionUtil.isNotEmpty(proRoles)) { |
|
|
if (CollectionUtil.isNotEmpty(proRoles)) { |
|
|
Long checkerRoleId = null; |
|
|
Long checkerRoleId = null; |
|
|
for (ProRole proRole : proRoles) { |
|
|
for (ProRole proRole : proRoles) { |
|
|
if (ObjectUtil.isNotNull(proRole.getParentId()) && proRole.getName().equals(executorRole)) { |
|
|
if (ObjectUtil.isNotNull(proRole.getParentId()) && proRole.getName().equals(checkerRole)) { |
|
|
checkerRoleId = proRole.getId(); |
|
|
checkerRoleId = proRole.getId(); |
|
|
taskDetail.setCheckerRole(checkerRoleId); |
|
|
taskDetail.setCheckerRole(checkerRoleId); |
|
|
break; |
|
|
break; |
|
@ -731,39 +723,41 @@ public class ExcelService implements IExcelService { |
|
|
} else { |
|
|
} else { |
|
|
taskDetail.setEndTime(sysProject.getEndTime()); |
|
|
taskDetail.setEndTime(sysProject.getEndTime()); |
|
|
} |
|
|
} |
|
|
//重复
|
|
|
//重复频率
|
|
|
if (StrUtil.isNotEmpty(repeat)) {//有重复就是全局任务
|
|
|
if (StrUtil.isNotEmpty(repeat)) { |
|
|
// taskDetail.setGlobal((byte) 1);
|
|
|
|
|
|
taskDetail.setCycle(repeat); |
|
|
taskDetail.setCycle(repeat); |
|
|
} |
|
|
} |
|
|
//子任务
|
|
|
//子任务
|
|
|
if (StrUtil.isNotEmpty(subTaskCell)) {//有子日程表
|
|
|
if (StrUtil.isNotEmpty(subTaskCell)) { |
|
|
taskDetail.setHasGroup((byte) 1); |
|
|
taskDetail.setHasGroup((byte) 1); |
|
|
switch (subTaskCell){ |
|
|
switch (subTaskCell){ |
|
|
case "值日表": |
|
|
case "值日表": |
|
|
getSubTask(xssfWorkbook, subTaskCell, taskDetail,taskDetails,proMembers); |
|
|
getSubTask(xssfWorkbook, subTaskCell, taskDetail,taskDetails,proMembers,deliver); |
|
|
break; |
|
|
break; |
|
|
case "运动计划表": |
|
|
case "运动计划表": |
|
|
getSubTask(xssfWorkbook, subTaskCell, taskDetail,taskDetails,proMembers); |
|
|
getSubTask(xssfWorkbook, subTaskCell, taskDetail,taskDetails,proMembers,deliver); |
|
|
break; |
|
|
break; |
|
|
case "前端学习计划表": |
|
|
case "前端学习计划表": |
|
|
getSubTask(xssfWorkbook, subTaskCell, taskDetail,taskDetails,proMembers); |
|
|
getSubTask(xssfWorkbook, subTaskCell, taskDetail,taskDetails,proMembers,deliver); |
|
|
break; |
|
|
break; |
|
|
case "后台学习计划表": |
|
|
case "后台学习计划表": |
|
|
getSubTask(xssfWorkbook, subTaskCell, taskDetail,taskDetails,proMembers); |
|
|
getSubTask(xssfWorkbook, subTaskCell, taskDetail,taskDetails,proMembers,deliver); |
|
|
break; |
|
|
break; |
|
|
case "硬件学习计划表": |
|
|
case "硬件学习计划表": |
|
|
getSubTask(xssfWorkbook, subTaskCell, taskDetail,taskDetails,proMembers); |
|
|
getSubTask(xssfWorkbook, subTaskCell, taskDetail,taskDetails,proMembers,deliver); |
|
|
break; |
|
|
break; |
|
|
case "方圆学习计划表": |
|
|
case "方圆学习计划表": |
|
|
getSubTask(xssfWorkbook, subTaskCell, taskDetail,taskDetails,proMembers); |
|
|
getSubTask(xssfWorkbook, subTaskCell, taskDetail,taskDetails,proMembers,deliver); |
|
|
break; |
|
|
break; |
|
|
case "全体学习计划表": |
|
|
case "全体学习计划表": |
|
|
getSubTask(xssfWorkbook, subTaskCell, taskDetail,taskDetails,proMembers); |
|
|
getSubTask(xssfWorkbook, subTaskCell, taskDetail,taskDetails,proMembers,deliver); |
|
|
break; |
|
|
break; |
|
|
default: |
|
|
default: |
|
|
throw new BaseException(CodeEnum.WBS_SUB_TASK_ANALYSIS.addMsg(wbsSheet.getSheetName()+i)); |
|
|
throw new BaseException(CodeEnum.WBS_SUB_TASK_ANALYSIS.addMsg(wbsSheet.getSheetName()+i)); |
|
|
} |
|
|
} |
|
|
|
|
|
}else{ |
|
|
|
|
|
//不是分组任务,直接添加交付物
|
|
|
|
|
|
readDeliverSheet(deliver,xssfWorkbook,taskDetail.getId()); |
|
|
} |
|
|
} |
|
|
//添加任务
|
|
|
//添加任务
|
|
|
proTaskDetailService.saveTaskDetail(taskDetail); |
|
|
proTaskDetailService.saveTaskDetail(taskDetail); |
|
@ -782,55 +776,24 @@ public class ExcelService implements IExcelService { |
|
|
taskDetails.add(endTask); |
|
|
taskDetails.add(endTask); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
public void saveProTaskSubTime(List<ProTaskDetail> taskDetails) throws Exception { |
|
|
/** |
|
|
if (CollectionUtil.isNotEmpty(taskDetails)) { |
|
|
* 读取子任务表 |
|
|
for (ProTaskDetail taskDetail : taskDetails) { |
|
|
*/ |
|
|
//虚拟任务或一级任务不拆分
|
|
|
|
|
|
if (taskDetail.getVirtual() == WebConstant.TASK_VIRTUAL.Virtual.value || taskDetail.getLevel() == 1) { |
|
|
|
|
|
continue; |
|
|
|
|
|
} |
|
|
|
|
|
//cycle为空或者组任务,只加一条数据
|
|
|
|
|
|
if (StrUtil.isEmpty(taskDetail.getCycle()) || taskDetail.getHasGroup() == 1) { |
|
|
|
|
|
ProTaskSubTime proTaskSubTime = new ProTaskSubTime(); |
|
|
|
|
|
proTaskSubTime.setId(snowflake.nextId()); |
|
|
|
|
|
proTaskSubTime.setTaskDetailId(taskDetail.getId()); |
|
|
|
|
|
proTaskSubTime.setBeginTime(taskDetail.getBeginTime()); |
|
|
|
|
|
proTaskSubTime.setEndTime(taskDetail.getEndTime()); |
|
|
|
|
|
taskSubTimeService.saveProTaskSubTask(proTaskSubTime); |
|
|
|
|
|
} 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) { |
|
|
|
|
|
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); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public void getSubTask(XSSFWorkbook xssfWorkbook, String sheetName, ProTaskDetail parentTaskDetail, |
|
|
public void getSubTask(XSSFWorkbook xssfWorkbook, String sheetName, ProTaskDetail parentTaskDetail, |
|
|
List<ProTaskDetail> taskDetails, List<ProMember> proMembers) { |
|
|
List<ProTaskDetail> taskDetails, List<ProMember> proMembers,String deliverCell) { |
|
|
XSSFSheet subTaskSheet = xssfWorkbook.getSheet(sheetName); |
|
|
XSSFSheet subTaskSheet = xssfWorkbook.getSheet(sheetName); |
|
|
Long startTime = parentTaskDetail.getBeginTime(); |
|
|
Long startTime = parentTaskDetail.getBeginTime(); |
|
|
if (ObjectUtil.isNotNull(subTaskSheet)) { |
|
|
if (ObjectUtil.isNotNull(subTaskSheet)) { |
|
|
String str = ExcelUtil.getCellValue(subTaskSheet.getRow(1).getCell(4)); |
|
|
String str = ExcelUtil.getCellValue(subTaskSheet.getRow(1).getCell(4)); |
|
|
for (int a = 2; a < subTaskSheet.getLastRowNum(); a++) { |
|
|
for (int a = 2; a < subTaskSheet.getLastRowNum(); a++) { |
|
|
String nameCell = ExcelUtil.getCellValue(subTaskSheet.getRow(a).getCell(1));//任务名
|
|
|
String nameCell = ExcelUtil.getCellValue(subTaskSheet.getRow(a).getCell(1)); |
|
|
String beginCell = ExcelUtil.getCellValue(subTaskSheet.getRow(a).getCell(2));//开始时间
|
|
|
String beginCell = ExcelUtil.getCellValue(subTaskSheet.getRow(a).getCell(2)); |
|
|
String endCell = ExcelUtil.getCellValue(subTaskSheet.getRow(a).getCell(3));//结束时间
|
|
|
String endCell = ExcelUtil.getCellValue(subTaskSheet.getRow(a).getCell(3)); |
|
|
String repeatCell = ExcelUtil.getCellValue(subTaskSheet.getRow(a).getCell(4));//重复时间、相对时间
|
|
|
//重复时间、相对时间
|
|
|
String memberCell = StringUtil.replaceComma(ExcelUtil.getCellValue(subTaskSheet.getRow(a).getCell(6)));//成员
|
|
|
String repeatCell = ExcelUtil.getCellValue(subTaskSheet.getRow(a).getCell(4)); |
|
|
String descriptionCell = ExcelUtil.getCellValue(subTaskSheet.getRow(a).getCell(8));//备注
|
|
|
String memberCell = StringUtil.replaceComma(ExcelUtil.getCellValue(subTaskSheet.getRow(a).getCell(6))); |
|
|
|
|
|
//备注
|
|
|
|
|
|
String descriptionCell = ExcelUtil.getCellValue(subTaskSheet.getRow(a).getCell(8)); |
|
|
if (StrUtil.isNotEmpty(nameCell)) { |
|
|
if (StrUtil.isNotEmpty(nameCell)) { |
|
|
ProTaskDetail subTask = new ProTaskDetail(); |
|
|
ProTaskDetail subTask = new ProTaskDetail(); |
|
|
BeanUtil.copyProperties(parentTaskDetail, subTask); |
|
|
BeanUtil.copyProperties(parentTaskDetail, subTask); |
|
@ -895,6 +858,9 @@ public class ExcelService implements IExcelService { |
|
|
parentTaskDetail.setBeginTime(subTask.getBeginTime()); |
|
|
parentTaskDetail.setBeginTime(subTask.getBeginTime()); |
|
|
} |
|
|
} |
|
|
startTime = subTask.getEndTime(); |
|
|
startTime = subTask.getEndTime(); |
|
|
|
|
|
//给每个子任务添加交付物
|
|
|
|
|
|
readDeliverSheet(deliverCell,xssfWorkbook,subTask.getId()); |
|
|
|
|
|
|
|
|
proTaskDetailService.saveTaskDetail(subTask); |
|
|
proTaskDetailService.saveTaskDetail(subTask); |
|
|
taskDetails.add(subTask); |
|
|
taskDetails.add(subTask); |
|
|
} |
|
|
} |
|
@ -906,30 +872,91 @@ public class ExcelService implements IExcelService { |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
* //读取交付物表
|
|
|
* 分解任务时间 |
|
|
* |
|
|
* @param taskDetails |
|
|
* @param subSheet |
|
|
* @throws Exception |
|
|
* @param taskId |
|
|
*/ |
|
|
|
|
|
public void saveProTaskSubTime(List<ProTaskDetail> taskDetails) throws Exception { |
|
|
|
|
|
if (CollectionUtil.isNotEmpty(taskDetails)) { |
|
|
|
|
|
for (ProTaskDetail taskDetail : taskDetails) { |
|
|
|
|
|
//虚拟任务或一级任务不拆分
|
|
|
|
|
|
if (taskDetail.getVirtual() == WebConstant.TASK_VIRTUAL.Virtual.value || taskDetail.getLevel() == 1) { |
|
|
|
|
|
continue; |
|
|
|
|
|
} |
|
|
|
|
|
//cycle为空或者组任务,只加一条数据
|
|
|
|
|
|
if (StrUtil.isEmpty(taskDetail.getCycle()) || taskDetail.getHasGroup() == 1) { |
|
|
|
|
|
ProTaskSubTime proTaskSubTime = new ProTaskSubTime(); |
|
|
|
|
|
proTaskSubTime.setId(snowflake.nextId()); |
|
|
|
|
|
proTaskSubTime.setTaskDetailId(taskDetail.getId()); |
|
|
|
|
|
proTaskSubTime.setBeginTime(taskDetail.getBeginTime()); |
|
|
|
|
|
proTaskSubTime.setEndTime(taskDetail.getEndTime()); |
|
|
|
|
|
taskSubTimeService.saveProTaskSubTask(proTaskSubTime); |
|
|
|
|
|
} 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) { |
|
|
|
|
|
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); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* 读取交付物表 |
|
|
*/ |
|
|
*/ |
|
|
private void readSubSheet(XSSFSheet subSheet, Long taskId) { |
|
|
private void readDeliverSheet(String deliverCell,XSSFWorkbook xssfWorkbook, Long taskId) { |
|
|
for (int i = 2; i <= subSheet.getLastRowNum(); i++) { |
|
|
if (StrUtil.isNotEmpty(deliverCell)) { |
|
|
String deliver = ExcelUtil.getCellValue(subSheet.getRow(i).getCell(1)); |
|
|
String str = ""; |
|
|
if (StrUtil.isNotEmpty(deliver)) { |
|
|
if (deliverCell.length() > 4) { |
|
|
|
|
|
str = deliverCell.substring(0, 3); |
|
|
|
|
|
} |
|
|
|
|
|
if ("关联表".equals(str)) { |
|
|
|
|
|
String subStr = deliverCell.substring(4); |
|
|
|
|
|
XSSFSheet subSheet = xssfWorkbook.getSheet(subStr); |
|
|
|
|
|
for (int i = 2; i <= subSheet.getLastRowNum(); i++) { |
|
|
|
|
|
String deliver = ExcelUtil.getCellValue(subSheet.getRow(i).getCell(1)); |
|
|
|
|
|
if (StrUtil.isNotEmpty(deliver)) { |
|
|
|
|
|
ProTaskDeliver taskDeliver = new ProTaskDeliver(); |
|
|
|
|
|
taskDeliver.setId(snowflake.nextId()); |
|
|
|
|
|
taskDeliver.setName(deliver); |
|
|
|
|
|
taskDeliver.setTaskDetailId(taskId); |
|
|
|
|
|
taskDeliver.setIsInput(0); |
|
|
|
|
|
taskDeliver.setIsFinal(0); |
|
|
|
|
|
if (i == subSheet.getLastRowNum()) { |
|
|
|
|
|
taskDeliver.setIsFinal(1); |
|
|
|
|
|
} |
|
|
|
|
|
taskDeliverService.saveDeliver(taskDeliver); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
} else { |
|
|
ProTaskDeliver taskDeliver = new ProTaskDeliver(); |
|
|
ProTaskDeliver taskDeliver = new ProTaskDeliver(); |
|
|
taskDeliver.setId(snowflake.nextId()); |
|
|
taskDeliver.setId(snowflake.nextId()); |
|
|
taskDeliver.setName(deliver); |
|
|
|
|
|
taskDeliver.setTaskDetailId(taskId); |
|
|
taskDeliver.setTaskDetailId(taskId); |
|
|
|
|
|
taskDeliver.setName(deliverCell); |
|
|
taskDeliver.setIsInput(0); |
|
|
taskDeliver.setIsInput(0); |
|
|
taskDeliver.setIsFinal(0); |
|
|
taskDeliver.setIsFinal(1); |
|
|
if (i == subSheet.getLastRowNum()) { |
|
|
|
|
|
taskDeliver.setIsFinal(1); |
|
|
|
|
|
} |
|
|
|
|
|
taskDeliverService.saveDeliver(taskDeliver); |
|
|
taskDeliverService.saveDeliver(taskDeliver); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
//插件
|
|
|
/** |
|
|
|
|
|
* 读取插件 |
|
|
|
|
|
* @param xssfWorkbook |
|
|
|
|
|
* @param taskDetails |
|
|
|
|
|
* @param proRoles |
|
|
|
|
|
*/ |
|
|
private void readPlugin(XSSFWorkbook xssfWorkbook, List<ProTaskDetail> taskDetails, List<ProRole> proRoles) { |
|
|
private void readPlugin(XSSFWorkbook xssfWorkbook, List<ProTaskDetail> taskDetails, List<ProRole> proRoles) { |
|
|
SysPluginExample pluginExample = new SysPluginExample(); |
|
|
SysPluginExample pluginExample = new SysPluginExample(); |
|
|
pluginExample.clear(); |
|
|
pluginExample.clear(); |
|
@ -991,6 +1018,13 @@ public class ExcelService implements IExcelService { |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* 返回信息 |
|
|
|
|
|
* @param currentUserId |
|
|
|
|
|
* @param sysProject |
|
|
|
|
|
* @return |
|
|
|
|
|
* @throws Exception |
|
|
|
|
|
*/ |
|
|
public ProjectVo.ProjectInfo selectByProjectId(Long currentUserId, SysProject sysProject) throws Exception { |
|
|
public ProjectVo.ProjectInfo selectByProjectId(Long currentUserId, SysProject sysProject) throws Exception { |
|
|
//返回参数
|
|
|
//返回参数
|
|
|
ProjectVo.ProjectInfo projectInfo = new ProjectVo.ProjectInfo(); |
|
|
ProjectVo.ProjectInfo projectInfo = new ProjectVo.ProjectInfo(); |
|
|