|
|
@ -26,6 +26,8 @@ import com.ccsens.util.WebConstant; |
|
|
|
import com.ccsens.util.cron.CronConstant; |
|
|
|
import com.ccsens.util.cron.NatureToDate; |
|
|
|
import com.ccsens.util.exception.BaseException; |
|
|
|
import com.github.pagehelper.PageHelper; |
|
|
|
import com.github.pagehelper.PageInfo; |
|
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
import org.springframework.transaction.annotation.Propagation; |
|
|
@ -73,8 +75,6 @@ public class ProTaskDetailService implements IProTaskDetailService { |
|
|
|
@Resource |
|
|
|
private Snowflake snowflake; |
|
|
|
@Resource |
|
|
|
private MtFeignClient mtFeignClient; |
|
|
|
@Resource |
|
|
|
private ProPluginConfigDao pluginConfigDao; |
|
|
|
@Resource |
|
|
|
private IRobotService robotService; |
|
|
@ -86,6 +86,8 @@ public class ProTaskDetailService implements IProTaskDetailService { |
|
|
|
private ProMemberRoleDao proMemberRoleDao; |
|
|
|
@Resource |
|
|
|
private TaskPluginService taskPluginService; |
|
|
|
@Resource |
|
|
|
private ProShowDao proShowDao; |
|
|
|
|
|
|
|
@Override |
|
|
|
public void saveTaskDetail(ProTaskDetail taskDetail) { |
|
|
@ -160,11 +162,27 @@ public class ProTaskDetailService implements IProTaskDetailService { |
|
|
|
List<TaskVo.NormalTask> normalTaskList = new ArrayList<>(); |
|
|
|
TaskVo.GlobalTask globalTask; |
|
|
|
TaskVo.NormalTask normalTask; |
|
|
|
//1、查找一级任务
|
|
|
|
|
|
|
|
SysProject project = sysProjectDao.selectByPrimaryKey(projectId); |
|
|
|
if (ObjectUtil.isNull(project)){ |
|
|
|
throw new BaseException(CodeEnum.PARAM_ERROR); |
|
|
|
} |
|
|
|
if (endTime < project.getBeginTime() || startTime > project.getEndTime()) { |
|
|
|
return proTaskInfo; |
|
|
|
} |
|
|
|
//查找项目配置
|
|
|
|
ProShowExample proShowExample = new ProShowExample(); |
|
|
|
proShowExample.createCriteria().andProjectIdEqualTo(projectId); |
|
|
|
List<ProShow> proShowList = proShowDao.selectByExample(proShowExample); |
|
|
|
if(CollectionUtil.isNotEmpty(proShowList)){ |
|
|
|
ProShow proShow = proShowList.get(0); |
|
|
|
if(proShow.getSelectTaskType() == 4){ |
|
|
|
return getTaskAndType4ByPM(currentUserId,projectId,startTime,endTime,page,pageSize,roleId); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
//1、查找一级任务
|
|
|
|
ProTaskDetailExample proTaskDetailExample = new ProTaskDetailExample(); |
|
|
|
proTaskDetailExample.createCriteria().andProjectIdEqualTo(projectId).andLevelEqualTo((byte) 1) |
|
|
|
.andLevelEqualTo((byte) 1).andBeginTimeLessThanOrEqualTo(endTime).andEndTimeGreaterThanOrEqualTo(startTime); |
|
|
@ -253,6 +271,105 @@ public class ProTaskDetailService implements IProTaskDetailService { |
|
|
|
return proTaskInfo; |
|
|
|
} |
|
|
|
|
|
|
|
//特殊任务分页查找项目经理下的任务(不处理时间)
|
|
|
|
private TaskVo.ProTaskInfo getTaskAndType4ByPM(Long currentUserId,Long projectId,Long startTime,Long endTime,int page,int pageSize,Long roleId) throws Exception { |
|
|
|
List<TaskVo.NormalTask> normalTasks = new ArrayList<>(); |
|
|
|
//1、查找一级任务
|
|
|
|
PageHelper.startPage(page, pageSize); |
|
|
|
ProTaskDetailExample proTaskDetailExample = new ProTaskDetailExample(); |
|
|
|
proTaskDetailExample.createCriteria().andProjectIdEqualTo(projectId).andLevelEqualTo((byte) 1) |
|
|
|
.andLevelEqualTo((byte) 1).andBeginTimeLessThanOrEqualTo(endTime).andEndTimeGreaterThanOrEqualTo(startTime); |
|
|
|
proTaskDetailExample.setOrderByClause("begin_time"); |
|
|
|
List<ProTaskDetail> firstTaskDetailList = taskDetailDao.selectByExample(proTaskDetailExample); |
|
|
|
PageInfo pageInfo = new PageInfo<>(firstTaskDetailList); |
|
|
|
if (CollectionUtil.isNotEmpty(firstTaskDetailList)) { |
|
|
|
int sequence = 1; |
|
|
|
for (ProTaskDetail firstTaskDetail : firstTaskDetailList) { |
|
|
|
TaskVo.NormalTask normalTask = new TaskVo.NormalTask(); |
|
|
|
BeanUtil.copyProperties(firstTaskDetail, normalTask); |
|
|
|
normalTask.setDetailId(firstTaskDetail.getId()); |
|
|
|
normalTask.setId(taskDeliverService.isTaskOrSubTime(firstTaskDetail.getId())); |
|
|
|
normalTask.setSequence(sequence); |
|
|
|
// 查询任务名对应的配置
|
|
|
|
ProPluginConfigExample configExample = new ProPluginConfigExample(); |
|
|
|
configExample.createCriteria().andTaskIdEqualTo(firstTaskDetail.getId()).andPlaceLocationEqualTo((byte) 0); |
|
|
|
List<ProPluginConfig> proPluginConfigs = pluginConfigDao.selectByExample(configExample); |
|
|
|
if (CollectionUtil.isNotEmpty(proPluginConfigs)) { |
|
|
|
ProPluginConfig config = proPluginConfigs.get(0); |
|
|
|
normalTask.setImportParam(config.getImportParam()); |
|
|
|
normalTask.setRoutineLocation(config.getRoutineLocation()); |
|
|
|
normalTask.setWebPath(config.getWebPath()); |
|
|
|
} |
|
|
|
//一级任务配置
|
|
|
|
normalTask.setProTaskConfig(getProTaskShow(normalTask.getDetailId())); |
|
|
|
|
|
|
|
//一级任务完成状态
|
|
|
|
ProSubTimeMember firstSubTimeMember = getProcessByUserIdAndTask(currentUserId, normalTask.getId()); |
|
|
|
if (ObjectUtil.isNotNull(firstSubTimeMember)) { |
|
|
|
normalTask.setRealEndTime(firstSubTimeMember.getRealFinishTime()); |
|
|
|
normalTask.setProcess(firstSubTimeMember.getComplatedStatus()); |
|
|
|
} |
|
|
|
//查找一级任务下的二级任务
|
|
|
|
List<TaskVo.NormalTask> secondNormalTaskList = taskDetailDao.selectNormalTaskListByPM(projectId, firstTaskDetail.getId(), startTime, endTime, roleId); |
|
|
|
if (CollectionUtil.isNotEmpty(secondNormalTaskList)) { |
|
|
|
normalTask.setSecondTasks(secondNormalTaskList); |
|
|
|
} |
|
|
|
sequence++; |
|
|
|
normalTasks.add(normalTask); |
|
|
|
} |
|
|
|
} |
|
|
|
//页码
|
|
|
|
TaskVo.PageInfo p = new TaskVo.PageInfo(); |
|
|
|
p.setCurrentPage(pageInfo.getPageNum()); |
|
|
|
p.setTotalPage(pageInfo.getPages()); |
|
|
|
|
|
|
|
TaskVo.ProTaskInfo proTaskInfo = new TaskVo.ProTaskInfo(); |
|
|
|
proTaskInfo.setPageInfo(p); |
|
|
|
proTaskInfo.setNormalTaskList(normalTasks); |
|
|
|
return proTaskInfo; |
|
|
|
} |
|
|
|
|
|
|
|
private TaskVo.ProTaskInfo getTaskAndType4ByMember(Long currentUserId,Long projectId,Long startTime,Integer imitation, |
|
|
|
Long endTime,int page,int pageSize,Long roleId,Long allMemberId,Integer priority) throws Exception { |
|
|
|
|
|
|
|
//查找该角色的所有任务(全体成员的任务也是这个角色的任务)
|
|
|
|
PageHelper.startPage(page, pageSize); |
|
|
|
List<TaskVo.NormalTask> secondTaskVoList = taskDetailDao.selectTaskByRoleAndAllMembers(projectId, roleId, |
|
|
|
allMemberId, startTime, endTime, priority); |
|
|
|
PageInfo pageInfo = new PageInfo<>(secondTaskVoList); |
|
|
|
|
|
|
|
if (CollectionUtil.isNotEmpty(secondTaskVoList)) { |
|
|
|
for (TaskVo.NormalTask normalTask : secondTaskVoList) { |
|
|
|
//处理插件
|
|
|
|
managePlugin(currentUserId, roleId, normalTask, imitation); |
|
|
|
//任务完成状态
|
|
|
|
if (normalTask.getProcess() != 2) { |
|
|
|
ProSubTimeMember subTimeMember = getProcessByUserIdAndTask(currentUserId, normalTask.getId()); |
|
|
|
if (ObjectUtil.isNotNull(subTimeMember)) { |
|
|
|
normalTask.setProcess(subTimeMember.getComplatedStatus()); |
|
|
|
normalTask.setRealEndTime(subTimeMember.getRealFinishTime()); |
|
|
|
} else if (normalTask.getProcess() > 2) { |
|
|
|
normalTask.setRealEndTime((long) 0); |
|
|
|
normalTask.setProcess(0); |
|
|
|
} |
|
|
|
} |
|
|
|
//任务配置
|
|
|
|
normalTask.setProTaskConfig(getProTaskShow(normalTask.getDetailId())); |
|
|
|
//提醒信息
|
|
|
|
normalTask.setRemindInfoList(proRemindDao.queryRemindByTask(normalTask.getId())); |
|
|
|
} |
|
|
|
} |
|
|
|
//页码
|
|
|
|
TaskVo.PageInfo p = new TaskVo.PageInfo(); |
|
|
|
p.setCurrentPage(pageInfo.getPageNum()); |
|
|
|
p.setTotalPage(pageInfo.getPages()); |
|
|
|
|
|
|
|
TaskVo.ProTaskInfo proTaskInfo = new TaskVo.ProTaskInfo(); |
|
|
|
proTaskInfo.setPageInfo(p); |
|
|
|
proTaskInfo.setNormalTaskList(secondTaskVoList); |
|
|
|
return proTaskInfo; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 查看任务 项目成员 |
|
|
|
*/ |
|
|
@ -269,6 +386,16 @@ public class ProTaskDetailService implements IProTaskDetailService { |
|
|
|
if (ObjectUtil.isNotNull(allMember)) { |
|
|
|
allMemberId = allMember.getId(); |
|
|
|
} |
|
|
|
//查找项目配置
|
|
|
|
ProShowExample proShowExample = new ProShowExample(); |
|
|
|
proShowExample.createCriteria().andProjectIdEqualTo(projectId); |
|
|
|
List<ProShow> proShowList = proShowDao.selectByExample(proShowExample); |
|
|
|
if(CollectionUtil.isNotEmpty(proShowList)){ |
|
|
|
ProShow proShow = proShowList.get(0); |
|
|
|
if(proShow.getSelectTaskType() == 4){ |
|
|
|
return getTaskAndType4ByMember(currentUserId,projectId,startTime,imitation,endTime,page,pageSize,roleId,allMemberId,priority); |
|
|
|
} |
|
|
|
} |
|
|
|
//查找该角色的所有任务(全体成员的任务也是这个角色的任务)
|
|
|
|
List<TaskVo.NormalTask> secondTaskVoList = taskDetailDao.selectTaskByRoleAndAllMembers(projectId, roleId, |
|
|
|
allMemberId, startTime, endTime, priority); |
|
|
|