|
|
@ -22,7 +22,6 @@ import com.ccsens.util.cron.CronConstant; |
|
|
|
import com.ccsens.util.cron.NatureToDate; |
|
|
|
import com.ccsens.util.exception.BaseException; |
|
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
import org.springframework.transaction.annotation.Propagation; |
|
|
|
import org.springframework.transaction.annotation.Transactional; |
|
|
@ -36,43 +35,41 @@ import java.util.*; |
|
|
|
@Service |
|
|
|
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class) |
|
|
|
public class ProTaskDetailService implements IProTaskDetailService { |
|
|
|
@Autowired |
|
|
|
@Resource |
|
|
|
private IProRoleService proRoleService; |
|
|
|
@Autowired |
|
|
|
@Resource |
|
|
|
private ITaskDeliverService taskDeliverService; |
|
|
|
@Autowired |
|
|
|
@Resource |
|
|
|
private IUserAttentionService attentionService; |
|
|
|
@Autowired |
|
|
|
@Resource |
|
|
|
private ITaskPluginService pluginService; |
|
|
|
@Autowired |
|
|
|
@Resource |
|
|
|
private IProMemberService proMemberService; |
|
|
|
@Autowired |
|
|
|
private IUserService userService; |
|
|
|
@Autowired |
|
|
|
@Resource |
|
|
|
private ProTaskShowDao proTaskShowDao; |
|
|
|
@Autowired |
|
|
|
@Resource |
|
|
|
private TaskDetailDao taskDetailDao; |
|
|
|
@Autowired |
|
|
|
@Resource |
|
|
|
private TaskSubTimeDao taskSubTimeDao; |
|
|
|
@Autowired |
|
|
|
@Resource |
|
|
|
private TaskMemberDao taskMemberDao; |
|
|
|
@Autowired |
|
|
|
@Resource |
|
|
|
private ProSubTimeMemberDao proSubTimeMemberDao; |
|
|
|
@Autowired |
|
|
|
@Resource |
|
|
|
private ProRoleDao proRoleDao; |
|
|
|
@Autowired |
|
|
|
@Resource |
|
|
|
private ProMemberDao proMemberDao; |
|
|
|
@Autowired |
|
|
|
@Resource |
|
|
|
private SysProjectDao sysProjectDao; |
|
|
|
@Autowired |
|
|
|
@Resource |
|
|
|
private SysPluginDao sysPluginDao; |
|
|
|
@Autowired |
|
|
|
@Resource |
|
|
|
private Snowflake snowflake; |
|
|
|
@Autowired |
|
|
|
@Resource |
|
|
|
private MtFeignClient mtFeignClient; |
|
|
|
@Resource |
|
|
|
private ProPluginConfigMapper proPluginConfigMapper; |
|
|
|
@Autowired |
|
|
|
@Resource |
|
|
|
private IRobotService robotService; |
|
|
|
|
|
|
|
@Override |
|
|
@ -117,7 +114,7 @@ public class ProTaskDetailService implements IProTaskDetailService { |
|
|
|
/** |
|
|
|
* 查找任务配置 |
|
|
|
*/ |
|
|
|
private TaskVo.ProTaskShow getProTaskShow(Long taskId)throws Exception{ |
|
|
|
private TaskVo.ProTaskShow getProTaskShow(Long taskId) { |
|
|
|
TaskVo.ProTaskShow proTaskShow = proTaskShowDao.getProTaskShowByTaskId(taskId); |
|
|
|
if(ObjectUtil.isNull(proTaskShow)){ |
|
|
|
proTaskShow = new TaskVo.ProTaskShow(); |
|
|
@ -141,8 +138,8 @@ public class ProTaskDetailService implements IProTaskDetailService { |
|
|
|
|
|
|
|
List<TaskVo.GlobalTask> globalTaskList = new ArrayList<>(); |
|
|
|
List<TaskVo.NormalTask> normalTaskList = new ArrayList<>(); |
|
|
|
TaskVo.GlobalTask globalTask = null; |
|
|
|
TaskVo.NormalTask normalTask = null; |
|
|
|
TaskVo.GlobalTask globalTask; |
|
|
|
TaskVo.NormalTask normalTask; |
|
|
|
//1、查找一级任务
|
|
|
|
SysProject project = sysProjectDao.selectByPrimaryKey(projectId); |
|
|
|
if (endTime < project.getBeginTime() || startTime > project.getEndTime()) { |
|
|
@ -338,15 +335,14 @@ public class ProTaskDetailService implements IProTaskDetailService { |
|
|
|
private List<TaskVo.NormalTask> sortTaskTime(List<TaskVo.NormalTask> commonTask) { |
|
|
|
|
|
|
|
List<TaskVo.NormalTask> normalTaskList = new ArrayList<>(); |
|
|
|
List<TaskVo.NormalTask> secondTaskVoList = null; |
|
|
|
List<TaskVo.NormalTask> secondTaskVoList; |
|
|
|
Set<Long> longSet = new HashSet<>(); |
|
|
|
List<Long> timeList = new ArrayList<>(); |
|
|
|
if (CollectionUtil.isNotEmpty(commonTask)) { |
|
|
|
for (TaskVo.NormalTask secondTaskVo : commonTask) { |
|
|
|
longSet.add(secondTaskVo.getBeginTime()); |
|
|
|
longSet.add(secondTaskVo.getEndTime()); |
|
|
|
} |
|
|
|
timeList.addAll(longSet); |
|
|
|
List<Long> timeList = new ArrayList<>(longSet); |
|
|
|
for (int i = 0; i < timeList.size(); i++) { |
|
|
|
for (int j = 0; j < timeList.size() - i - 1; j++) { |
|
|
|
if (timeList.get(j) > timeList.get(j + 1)) { |
|
|
@ -358,7 +354,7 @@ public class ProTaskDetailService implements IProTaskDetailService { |
|
|
|
} |
|
|
|
int sequence = 1; |
|
|
|
for (int i = 0; i < timeList.size() - 1; i++) { |
|
|
|
TaskVo.NormalTask normalTask = null; |
|
|
|
TaskVo.NormalTask normalTask; |
|
|
|
secondTaskVoList = new ArrayList<>(); |
|
|
|
Long startTime = timeList.get(i); |
|
|
|
Long endTime = timeList.get(i + 1); |
|
|
@ -439,7 +435,7 @@ public class ProTaskDetailService implements IProTaskDetailService { |
|
|
|
String[] pluginDescription = pluginVo.getDescription().split(","); |
|
|
|
String[] pluginShowType = pluginVo.getShowType().split(","); |
|
|
|
|
|
|
|
TaskVo.PluginVo plugin = null; |
|
|
|
TaskVo.PluginVo plugin; |
|
|
|
for(int i = 0;i<pluginIds.length;i++){ |
|
|
|
plugin = new TaskVo.PluginVo(); |
|
|
|
plugin.setId(pluginIds[i]); |
|
|
@ -461,10 +457,10 @@ public class ProTaskDetailService implements IProTaskDetailService { |
|
|
|
private TaskVo.ProTaskInfoByMVP getTaskInfoByMvp(Long projectId, Integer page, Integer pageSize) { |
|
|
|
TaskVo.PageInfo pageInfo = new TaskVo.PageInfo(); |
|
|
|
TaskVo.ProTaskInfoByMVP proTaskInfoByMVP = new TaskVo.ProTaskInfoByMVP(); |
|
|
|
List<TaskVo.TaskDeliverByMVP> taskDeliverByMVPList = new ArrayList<>(); |
|
|
|
TaskVo.TaskDeliverByMVP taskDeliverByMVP = null; |
|
|
|
List<TaskVo.TaskDeliverByMVP> taskDeliverByMVPList; |
|
|
|
TaskVo.TaskDeliverByMVP taskDeliverByMVP; |
|
|
|
List<TaskVo.FirstTask> firstTasks = new ArrayList<>(); |
|
|
|
TaskVo.FirstTask firstProTask = null; |
|
|
|
TaskVo.FirstTask firstProTask; |
|
|
|
//查找项目下的一级任务
|
|
|
|
ProTaskDetailExample firstTaskExample = new ProTaskDetailExample(); |
|
|
|
firstTaskExample.createCriteria().andProjectIdEqualTo(projectId) |
|
|
@ -551,6 +547,8 @@ public class ProTaskDetailService implements IProTaskDetailService { |
|
|
|
taskDetail.setProcess(0); |
|
|
|
} |
|
|
|
} |
|
|
|
//任务配置
|
|
|
|
taskDetail.setProTaskConfig(getProTaskShow(taskDetail.getDetailId())); |
|
|
|
|
|
|
|
//添加项目信息和插件信息
|
|
|
|
normalTaskAddPlugin(currentUserId, subTime.getTaskDetailId(), taskDetail); |
|
|
@ -655,7 +653,7 @@ public class ProTaskDetailService implements IProTaskDetailService { |
|
|
|
//获取日期的开始结束时间
|
|
|
|
Long startMillisTime = null; |
|
|
|
Long endMillisTime = null; |
|
|
|
Map<String, Long> timeMap = null; |
|
|
|
Map<String, Long> timeMap; |
|
|
|
if (StrUtil.isNotEmpty(start)) { |
|
|
|
timeMap = DateUtil.projectFormatDateTime(start); |
|
|
|
startMillisTime = timeMap.get("startMillisTime"); |
|
|
@ -812,7 +810,7 @@ public class ProTaskDetailService implements IProTaskDetailService { |
|
|
|
//获取日期的开始结束时间
|
|
|
|
Long startMillisTime = null; |
|
|
|
Long endMillisTime = null; |
|
|
|
Map<String, Long> timeMap = null; |
|
|
|
Map<String, Long> timeMap; |
|
|
|
if (StrUtil.isNotEmpty(start)) { |
|
|
|
timeMap = DateUtil.projectFormatDateTime(start); |
|
|
|
startMillisTime = timeMap.get("startMillisTime"); |
|
|
@ -969,7 +967,7 @@ public class ProTaskDetailService implements IProTaskDetailService { |
|
|
|
.andMemberIdEqualTo(member.getId()).andComplatedStatusEqualTo((byte) 2); |
|
|
|
sTimeMemberExample.setOrderByClause("real_finish_time"); |
|
|
|
List<ProSubTimeMember> sTimeMemberList = proSubTimeMemberDao.selectByExample(sTimeMemberExample); |
|
|
|
if (CollectionUtil.isEmpty(subTimeMemberList)) { |
|
|
|
if (CollectionUtil.isEmpty(sTimeMemberList)) { |
|
|
|
flag = true; |
|
|
|
break; |
|
|
|
} |
|
|
@ -994,7 +992,7 @@ public class ProTaskDetailService implements IProTaskDetailService { |
|
|
|
@Override |
|
|
|
public void deleteTask(Long currentUserId, Long taskId) throws Exception { |
|
|
|
//检查id是详情id还是subTimeId
|
|
|
|
ProTaskDetail taskDetail = null; |
|
|
|
ProTaskDetail taskDetail; |
|
|
|
ProTaskSubTime subTime = taskSubTimeDao.selectByPrimaryKey(taskId); |
|
|
|
if (ObjectUtil.isNotNull(subTime)) { |
|
|
|
taskDetail = taskDetailDao.selectByPrimaryKey(subTime.getTaskDetailId()); |
|
|
@ -1063,9 +1061,9 @@ public class ProTaskDetailService implements IProTaskDetailService { |
|
|
|
*/ |
|
|
|
@Override |
|
|
|
public TaskVo.NormalTask updateTaskInfo(Long currentUserId, TaskDto.UpdateTaskInfo updateTaskInfo) throws Exception { |
|
|
|
TaskVo.NormalTask normalTask = null; |
|
|
|
TaskVo.NormalTask normalTask; |
|
|
|
|
|
|
|
ProTaskDetail taskDetail = null; |
|
|
|
ProTaskDetail taskDetail; |
|
|
|
ProTaskSubTime taskSubTime = taskSubTimeDao.selectByPrimaryKey(updateTaskInfo.getId()); |
|
|
|
if(ObjectUtil.isNotNull(taskSubTime)){ |
|
|
|
taskDetail = taskDetailDao.selectByPrimaryKey(taskSubTime.getTaskDetailId()); |
|
|
@ -1187,7 +1185,7 @@ public class ProTaskDetailService implements IProTaskDetailService { |
|
|
|
eTime = groupTask.getEndTime(); |
|
|
|
} |
|
|
|
bTime = bTime < groupTask.getBeginTime() ? bTime : groupTask.getBeginTime(); |
|
|
|
eTime = eTime > groupTask.getEndTime() ? eTime : groupTask.getEndTime();; |
|
|
|
eTime = eTime > groupTask.getEndTime() ? eTime : groupTask.getEndTime(); |
|
|
|
} |
|
|
|
} |
|
|
|
//如果子任务最早最晚时间和父任务不同,则修改父任务时间
|
|
|
@ -1246,11 +1244,10 @@ public class ProTaskDetailService implements IProTaskDetailService { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
public TaskVo.TaskInfoWithFeign getProjectIdByTaskId(Long taskId) { |
|
|
|
TaskVo.TaskInfoWithFeign taskInfo = null; |
|
|
|
ProTaskDetail detail = null; |
|
|
|
ProTaskDetail detail; |
|
|
|
ProTaskSubTime subTime = taskSubTimeDao.selectByPrimaryKey(taskId); |
|
|
|
if(ObjectUtil.isNull(subTime)){ |
|
|
|
detail = taskDetailDao.selectByPrimaryKey(taskId); |
|
|
@ -1272,4 +1269,36 @@ public class ProTaskDetailService implements IProTaskDetailService { |
|
|
|
} |
|
|
|
return taskInfo; |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public TaskVo.NormalTask updateTaskConfig(Long userId, TaskDto.UpdateTaskConfig updateTaskConfig) throws Exception { |
|
|
|
//检查任务是否存在
|
|
|
|
ProTaskDetail taskDetail = taskDetailDao.selectByPrimaryKey(updateTaskConfig.getTaskId()); |
|
|
|
if(ObjectUtil.isNull(taskDetail)){ |
|
|
|
ProTaskSubTime taskSubTime = taskSubTimeDao.selectByPrimaryKey(updateTaskConfig.getTaskId()); |
|
|
|
if(ObjectUtil.isNull(taskSubTime)) { |
|
|
|
throw new BaseException(CodeEnum.NOT_TASK); |
|
|
|
} |
|
|
|
taskDetail = taskDetailDao.selectByPrimaryKey(taskSubTime.getTaskDetailId()); |
|
|
|
} |
|
|
|
//查找任务原来的配置
|
|
|
|
ProTaskShowExample taskShowExample = new ProTaskShowExample(); |
|
|
|
taskShowExample.createCriteria().andTaskDetailIdEqualTo(taskDetail.getId()); |
|
|
|
List<ProTaskShow> proTaskShowList = proTaskShowDao.selectByExample(taskShowExample); |
|
|
|
if(CollectionUtil.isEmpty(proTaskShowList)){ |
|
|
|
//没有则新建配置信息
|
|
|
|
ProTaskShow proTaskShow = new ProTaskShow(); |
|
|
|
BeanUtil.copyProperties(updateTaskConfig,proTaskShow); |
|
|
|
proTaskShow.setId(snowflake.nextId()); |
|
|
|
proTaskShow.setProjectId(taskDetail.getProjectId()); |
|
|
|
proTaskShow.setTaskDetailId(taskDetail.getId()); |
|
|
|
proTaskShowDao.insertSelective(proTaskShow); |
|
|
|
}else { |
|
|
|
//有则修改
|
|
|
|
ProTaskShow proTaskShow = proTaskShowList.get(0); |
|
|
|
BeanUtil.copyProperties(updateTaskConfig,proTaskShow); |
|
|
|
proTaskShowDao.updateByPrimaryKeySelective(proTaskShow); |
|
|
|
} |
|
|
|
return getTaskInfoByTaskId(userId,taskDetail.getProjectId(),updateTaskConfig.getTaskId()); |
|
|
|
} |
|
|
|
} |
|
|
|