|
|
@ -7,10 +7,7 @@ import cn.hutool.core.util.StrUtil; |
|
|
|
import com.ccsens.tall.bean.dto.WpsDto; |
|
|
|
import com.ccsens.tall.bean.po.*; |
|
|
|
import com.ccsens.tall.bean.vo.ProjectVo; |
|
|
|
import com.ccsens.tall.persist.dao.SysCommitedFileDao; |
|
|
|
import com.ccsens.tall.persist.dao.SysPluginDao; |
|
|
|
import com.ccsens.tall.persist.dao.SysProjectDao; |
|
|
|
import com.ccsens.tall.persist.dao.TaskDetailDao; |
|
|
|
import com.ccsens.tall.persist.dao.*; |
|
|
|
import com.ccsens.util.*; |
|
|
|
import com.ccsens.util.cron.CronConstant; |
|
|
|
import com.ccsens.util.cron.NatureToDate; |
|
|
@ -72,6 +69,8 @@ public class ExcelService implements IExcelService { |
|
|
|
private IWbsSubSheetService wbsSubSheetService; |
|
|
|
@Resource |
|
|
|
private IWpsService wpsService; |
|
|
|
@Resource |
|
|
|
private ProRoleDao proRoleDao; |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
@ -845,6 +844,8 @@ public class ExcelService implements IExcelService { |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
// 添加默认例会任务
|
|
|
|
saveMeeting(taskDetails,pmRoleId,sysProject,proRoles); |
|
|
|
//添加一个结束虚拟节点
|
|
|
|
ProTaskDetail endTask = new ProTaskDetail(); |
|
|
|
endTask.setId(snowflake.nextId()); |
|
|
@ -857,6 +858,81 @@ public class ExcelService implements IExcelService { |
|
|
|
taskDetails.add(endTask); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 添加默认的例会任务 |
|
|
|
* @param taskDetails 任务集合 |
|
|
|
* @param pmRoleId 项目经理的角色id |
|
|
|
* @param sysProject 项目信息 |
|
|
|
* @param proRoles 所有角色 |
|
|
|
*/ |
|
|
|
private void saveMeeting(List<ProTaskDetail> taskDetails, Long pmRoleId, SysProject sysProject, List<ProRole> proRoles) { |
|
|
|
//添加一级任务“例会”
|
|
|
|
ProTaskDetail firstTaskDetail = new ProTaskDetail(); |
|
|
|
firstTaskDetail.setId(snowflake.nextId()); |
|
|
|
firstTaskDetail.setName("例会"); |
|
|
|
firstTaskDetail.setProjectId(sysProject.getId()); |
|
|
|
firstTaskDetail.setBeginTime(sysProject.getBeginTime()); |
|
|
|
firstTaskDetail.setEndTime(sysProject.getEndTime()); |
|
|
|
firstTaskDetail.setDelay((byte) WebConstant.TASK_DELAY.SelfMotion.value); |
|
|
|
firstTaskDetail.setVirtual((byte) WebConstant.TASK_VIRTUAL.Normal.value); |
|
|
|
firstTaskDetail.setLevel((byte) WebConstant.TASK_LEVEL.FirstTask.value); |
|
|
|
firstTaskDetail.setExecutorRole(pmRoleId); |
|
|
|
proTaskDetailService.saveTaskDetail(firstTaskDetail); |
|
|
|
taskDetails.add(firstTaskDetail); |
|
|
|
|
|
|
|
//获取全体成员的角色id,如果没有,给每个角色添加任务
|
|
|
|
ProRoleExample proRoleExample = new ProRoleExample(); |
|
|
|
proRoleExample.createCriteria().andProjectIdEqualTo(sysProject.getId()).andNameEqualTo(WebConstant.ROLE_NAME.AllMember.phase); |
|
|
|
List<ProRole> roles = proRoleDao.selectByExample(proRoleExample); |
|
|
|
if(CollectionUtil.isEmpty(roles)){ |
|
|
|
if(CollectionUtil.isNotEmpty(proRoles)){ |
|
|
|
proRoles.forEach(proRole -> { |
|
|
|
if(ObjectUtil.isNotNull(proRole.getParentId()) && proRole.getParentId() != 0 && !proRole.getName().equalsIgnoreCase(WebConstant.ROLE_NAME.MVP.phase)){ |
|
|
|
//添加日报
|
|
|
|
saveMeetingTask("日报","每天",taskDetails,sysProject,pmRoleId,proRole.getId(),firstTaskDetail.getId()); |
|
|
|
//添加周报
|
|
|
|
saveMeetingTask("周报","每周一",taskDetails,sysProject,pmRoleId,proRole.getId(),firstTaskDetail.getId()); |
|
|
|
// TODO 添加季报
|
|
|
|
//添加月报
|
|
|
|
saveMeetingTask("月报","每月1号",taskDetails,sysProject,pmRoleId,proRole.getId(),firstTaskDetail.getId()); |
|
|
|
//添加年报
|
|
|
|
saveMeetingTask("年报","每年第一天",taskDetails,sysProject,pmRoleId,proRole.getId(),firstTaskDetail.getId()); |
|
|
|
} |
|
|
|
}); |
|
|
|
} |
|
|
|
}else { |
|
|
|
//添加日报
|
|
|
|
saveMeetingTask("日报","每天",taskDetails,sysProject,pmRoleId,roles.get(0).getId(),firstTaskDetail.getId()); |
|
|
|
//添加周报
|
|
|
|
saveMeetingTask("周报","每周一",taskDetails,sysProject,pmRoleId,roles.get(0).getId(),firstTaskDetail.getId()); |
|
|
|
// TODO 添加季报
|
|
|
|
//添加月报
|
|
|
|
saveMeetingTask("月报","每月1号",taskDetails,sysProject,pmRoleId,roles.get(0).getId(),firstTaskDetail.getId()); |
|
|
|
//添加年报
|
|
|
|
saveMeetingTask("年报","每年第一天",taskDetails,sysProject,pmRoleId,roles.get(0).getId(),firstTaskDetail.getId()); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
private void saveMeetingTask(String name, String cycle, List<ProTaskDetail> taskDetails, SysProject sysProject, |
|
|
|
Long checkerRoleId, Long executorRoleId,Long parentId) { |
|
|
|
ProTaskDetail dayMeeting = new ProTaskDetail(); |
|
|
|
dayMeeting.setId(snowflake.nextId()); |
|
|
|
dayMeeting.setName(name); |
|
|
|
dayMeeting.setCycle(cycle); |
|
|
|
dayMeeting.setProjectId(sysProject.getId()); |
|
|
|
dayMeeting.setBeginTime(sysProject.getBeginTime()); |
|
|
|
dayMeeting.setEndTime(sysProject.getEndTime()); |
|
|
|
dayMeeting.setParentId(parentId); |
|
|
|
dayMeeting.setLevel((byte) WebConstant.TASK_LEVEL.SecondTask.value); |
|
|
|
dayMeeting.setVirtual((byte) WebConstant.TASK_VIRTUAL.Normal.value); |
|
|
|
dayMeeting.setCheckerRole(checkerRoleId); |
|
|
|
dayMeeting.setExecutorRole(executorRoleId); |
|
|
|
dayMeeting.setHasGroup((byte) 0); |
|
|
|
proTaskDetailService.saveTaskDetail(dayMeeting); |
|
|
|
taskDetails.add(dayMeeting); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
* 分解任务时间 |
|
|
|
* @param taskDetails 任务集合 |
|
|
|