|
|
@ -9,11 +9,9 @@ import com.ccsens.tall.bean.dto.TaskDto; |
|
|
|
import com.ccsens.tall.bean.dto.message.BaseMessageDto; |
|
|
|
import com.ccsens.tall.bean.dto.message.SyncMessageWithStartDto; |
|
|
|
import com.ccsens.tall.bean.po.*; |
|
|
|
import com.ccsens.tall.bean.vo.MessageVo; |
|
|
|
import com.ccsens.tall.bean.vo.TaskVo; |
|
|
|
import com.ccsens.tall.persist.dao.*; |
|
|
|
|
|
|
|
import com.ccsens.tall.util.RobotUtil; |
|
|
|
import com.ccsens.util.CodeEnum; |
|
|
|
import com.ccsens.util.WebConstant; |
|
|
|
import com.ccsens.util.cron.CronConstant; |
|
|
@ -21,21 +19,17 @@ 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.context.annotation.Lazy; |
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
import org.springframework.transaction.annotation.Propagation; |
|
|
|
import org.springframework.transaction.annotation.Transactional; |
|
|
|
|
|
|
|
import javax.annotation.Resource; |
|
|
|
import java.util.ArrayList; |
|
|
|
import java.util.Date; |
|
|
|
import java.util.List; |
|
|
|
import java.util.concurrent.atomic.AtomicBoolean; |
|
|
|
import java.util.concurrent.atomic.AtomicInteger; |
|
|
|
|
|
|
|
@Slf4j |
|
|
|
@Service |
|
|
|
@Transactional(propagation = Propagation.REQUIRED,rollbackFor = Exception.class) |
|
|
|
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class) |
|
|
|
public class TaskSubTimeService implements ITaskSubTimeService { |
|
|
|
@Autowired |
|
|
|
private TaskSubTimeDao taskSubTimeDao; |
|
|
@ -79,6 +73,7 @@ public class TaskSubTimeService implements ITaskSubTimeService { |
|
|
|
|
|
|
|
/** |
|
|
|
* 完成任务 |
|
|
|
* |
|
|
|
* @param currentUserId |
|
|
|
* @param subTimeId |
|
|
|
* @throws Exception |
|
|
@ -88,36 +83,39 @@ public class TaskSubTimeService implements ITaskSubTimeService { |
|
|
|
int completedStatus = subTimeId.getCompletedStatus() == null ? 2 : subTimeId.getCompletedStatus(); |
|
|
|
//查找taskSubTime
|
|
|
|
ProTaskSubTime taskSubTime = taskSubTimeDao.selectByPrimaryKey(subTimeId.getId()); |
|
|
|
if(ObjectUtil.isNull(taskSubTime)){ |
|
|
|
log.info("找不到此任务:subTimeId{}",subTimeId.getId()); |
|
|
|
if (ObjectUtil.isNull(taskSubTime)) { |
|
|
|
log.info("找不到此任务:subTimeId{}", subTimeId.getId()); |
|
|
|
throw new BaseException(CodeEnum.NOT_TASK); |
|
|
|
} |
|
|
|
//查找taskDetail
|
|
|
|
ProTaskDetail taskDetail = taskDetailDao.selectByPrimaryKey(taskSubTime.getTaskDetailId()); |
|
|
|
if(ObjectUtil.isNull(taskDetail)){ |
|
|
|
log.info("找不到此任务:taskId{}",taskSubTime.getTaskDetailId()); |
|
|
|
if (ObjectUtil.isNull(taskDetail)) { |
|
|
|
log.info("找不到此任务:taskId{}", taskSubTime.getTaskDetailId()); |
|
|
|
throw new BaseException(CodeEnum.NOT_TASK); |
|
|
|
} |
|
|
|
//该用户是否是任务的负责人
|
|
|
|
ProRole role = proRoleDao.selectByPrimaryKey(taskDetail.getExecutorRole()); |
|
|
|
Boolean isBelongRole = proMemberService.userIsBelongRole(currentUserId, role.getId()); |
|
|
|
if (!role.getName().equalsIgnoreCase(WebConstant.ROLE_NAME.AllMember.phase) && !isBelongRole) { |
|
|
|
log.info("此用户不是该任务的负责人:{}",role); |
|
|
|
log.info("此用户不是该任务的负责人:{}", role); |
|
|
|
throw new BaseException(CodeEnum.IS_NOT_EXECUTOR); |
|
|
|
} |
|
|
|
//查找此用户在任务下的成员
|
|
|
|
ProMember member = proMemberService.selectByUserId(currentUserId,taskDetail.getProjectId()); |
|
|
|
//是否需要全部打卡完成
|
|
|
|
if(taskDetail.getFinishNeedAll()==0) { |
|
|
|
ProMember member = proMemberService.selectByUserId(currentUserId, taskDetail.getProjectId()); |
|
|
|
if (ObjectUtil.isNull(member)) { |
|
|
|
throw new BaseException(CodeEnum.NOT_MEMBER); |
|
|
|
} |
|
|
|
//如果是完成任务,判断子任务是否完成,交付物是否上传
|
|
|
|
if (subTimeId.getCompletedStatus() == 2) { |
|
|
|
//是否有分组
|
|
|
|
if (taskDetail.getHasGroup() == 1) { |
|
|
|
//检查分组下的任务的完成状态
|
|
|
|
List<ProTaskSubTime> subTimeList = taskDetailDao.selectSubTaskByGroupId(taskDetail.getId(), taskSubTime.getBeginTime(), taskSubTime.getEndTime()); |
|
|
|
if(CollectionUtil.isNotEmpty(subTimeList)){ |
|
|
|
if (CollectionUtil.isNotEmpty(subTimeList)) { |
|
|
|
for (ProTaskSubTime subTime : subTimeList) { |
|
|
|
ProSubTimeMember subTimeMember = taskDetailService.getProcessByUserIdAndTask(currentUserId, subTime.getId()); |
|
|
|
if(ObjectUtil.isNull(subTimeMember) || subTimeMember.getComplatedStatus() != 2){ |
|
|
|
log.info("分组下任务未全部完成:{}",subTime.getId()); |
|
|
|
if (ObjectUtil.isNull(subTimeMember) || subTimeMember.getComplatedStatus() != 2) { |
|
|
|
log.info("分组下任务未全部完成:{}", subTime.getId()); |
|
|
|
throw new BaseException(CodeEnum.SUB_TASK_IS_NOT_FINISH); |
|
|
|
} |
|
|
|
} |
|
|
@ -140,8 +138,9 @@ public class TaskSubTimeService implements ITaskSubTimeService { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
ProSubTimeMember subTimeMember = isFinishTask(member.getId(),subTimeId.getId()); |
|
|
|
if(ObjectUtil.isNull(subTimeMember)){ |
|
|
|
//添加成员完成记录
|
|
|
|
ProSubTimeMember subTimeMember = isFinishTask(member.getId(), subTimeId.getId()); |
|
|
|
if (ObjectUtil.isNull(subTimeMember)) { |
|
|
|
subTimeMember = new ProSubTimeMember(); |
|
|
|
subTimeMember.setId(snowflake.nextId()); |
|
|
|
subTimeMember.setComplatedStatus((byte) completedStatus); |
|
|
@ -149,31 +148,98 @@ public class TaskSubTimeService implements ITaskSubTimeService { |
|
|
|
subTimeMember.setTaskSubTimeId(subTimeId.getId()); |
|
|
|
subTimeMember.setRealFinishTime(System.currentTimeMillis()); |
|
|
|
proSubTimeMemberDao.insertSelective(subTimeMember); |
|
|
|
}else { |
|
|
|
} else { |
|
|
|
subTimeMember.setComplatedStatus((byte) completedStatus); |
|
|
|
subTimeMember.setRealFinishTime(System.currentTimeMillis()); |
|
|
|
proSubTimeMemberDao.updateByPrimaryKeySelective(subTimeMember); |
|
|
|
} |
|
|
|
}else { |
|
|
|
ProSubTimeMember subTimeMember = isFinishTask(member.getId(),subTimeId.getId()); |
|
|
|
if(ObjectUtil.isNotNull(subTimeMember)){ |
|
|
|
subTimeMember.setComplatedStatus((byte) completedStatus); |
|
|
|
subTimeMember.setRealFinishTime(System.currentTimeMillis()); |
|
|
|
proSubTimeMemberDao.updateByPrimaryKeySelective(subTimeMember); |
|
|
|
ProSubTimeMember proSubTimeMember = new ProSubTimeMember(); |
|
|
|
proSubTimeMember.setRecStatus((byte) 2); |
|
|
|
ProSubTimeMemberExample subTimeMemberExample = new ProSubTimeMemberExample(); |
|
|
|
if(taskDetail.getFinishNeedAll()==0){ |
|
|
|
subTimeMemberExample.createCriteria().andTaskSubTimeIdEqualTo(subTimeId.getId()); |
|
|
|
}else { |
|
|
|
subTimeMember = new ProSubTimeMember(); |
|
|
|
subTimeMember.setId(snowflake.nextId()); |
|
|
|
subTimeMember.setComplatedStatus((byte) completedStatus); |
|
|
|
subTimeMember.setTaskSubTimeId(subTimeId.getId()); |
|
|
|
subTimeMember.setMemberId(member.getId()); |
|
|
|
subTimeMember.setRealFinishTime(System.currentTimeMillis()); |
|
|
|
proSubTimeMemberDao.insertSelective(subTimeMember); |
|
|
|
subTimeMemberExample.createCriteria().andTaskSubTimeIdEqualTo(subTimeId.getId()).andMemberIdEqualTo(member.getId()); |
|
|
|
} |
|
|
|
proSubTimeMemberDao.updateByExampleSelective(proSubTimeMember,subTimeMemberExample); |
|
|
|
} |
|
|
|
//修改任务状态
|
|
|
|
// ProSubTimeMember sTimeMember = taskDetailService.getProcessByUserIdAndTask(currentUserId, taskSubTime.getId());
|
|
|
|
// if (ObjectUtil.isNotNull(sTimeMember)) {
|
|
|
|
taskSubTime.setComplatedStatus(subTimeId.getCompletedStatus()); |
|
|
|
taskSubTimeDao.updateByPrimaryKeySelective(taskSubTime); |
|
|
|
// }
|
|
|
|
|
|
|
|
// //查找此用户在任务下的成员
|
|
|
|
// ProMember member = proMemberService.selectByUserId(currentUserId,taskDetail.getProjectId());
|
|
|
|
// //是否需要全部打卡完成
|
|
|
|
// if(taskDetail.getFinishNeedAll()==0) {
|
|
|
|
//// //是否有分组
|
|
|
|
//// if (taskDetail.getHasGroup() == 1) {
|
|
|
|
//// //检查分组下的任务的完成状态
|
|
|
|
//// List<ProTaskSubTime> subTimeList = taskDetailDao.selectSubTaskByGroupId(taskDetail.getId(), taskSubTime.getBeginTime(), taskSubTime.getEndTime());
|
|
|
|
//// if(CollectionUtil.isNotEmpty(subTimeList)){
|
|
|
|
//// for (ProTaskSubTime subTime : subTimeList) {
|
|
|
|
//// ProSubTimeMember subTimeMember = taskDetailService.getProcessByUserIdAndTask(currentUserId, subTime.getId());
|
|
|
|
//// if(ObjectUtil.isNull(subTimeMember) || subTimeMember.getComplatedStatus() != 2){
|
|
|
|
//// log.info("分组下任务未全部完成:{}",subTime.getId());
|
|
|
|
//// throw new BaseException(CodeEnum.SUB_TASK_IS_NOT_FINISH);
|
|
|
|
//// }
|
|
|
|
//// }
|
|
|
|
//// }
|
|
|
|
//// }
|
|
|
|
//// //查询任务下的交付物
|
|
|
|
//// ProTaskDeliverExample deliverExample = new ProTaskDeliverExample();
|
|
|
|
//// deliverExample.createCriteria().andTaskDetailIdEqualTo(taskSubTime.getTaskDetailId())
|
|
|
|
//// .andIsInputEqualTo(0);
|
|
|
|
//// List<ProTaskDeliver> deliverList = taskDeliverDao.selectByExample(deliverExample);
|
|
|
|
//// if (CollectionUtil.isNotEmpty(deliverList)) {
|
|
|
|
//// for (ProTaskDeliver taskDeliver : deliverList) {
|
|
|
|
//// ProTaskDeliverPostLogExample postLogExample = new ProTaskDeliverPostLogExample();
|
|
|
|
//// postLogExample.createCriteria().andTaskSubTimeIdEqualTo(subTimeId.getId())
|
|
|
|
//// .andDeliverIdEqualTo(taskDeliver.getId());
|
|
|
|
//// List<ProTaskDeliverPostLog> postLogList = proTaskDeliverPostLogDao.selectByExample(postLogExample);
|
|
|
|
//// if (CollectionUtil.isEmpty(postLogList)) {
|
|
|
|
//// throw new BaseException(CodeEnum.TASK_NOT_UPLOAD_DELIVER);
|
|
|
|
//// }
|
|
|
|
//// }
|
|
|
|
//// }
|
|
|
|
//
|
|
|
|
// ProSubTimeMember subTimeMember = isFinishTask(member.getId(),subTimeId.getId());
|
|
|
|
// if(ObjectUtil.isNull(subTimeMember)){
|
|
|
|
// subTimeMember = new ProSubTimeMember();
|
|
|
|
// subTimeMember.setId(snowflake.nextId());
|
|
|
|
// subTimeMember.setComplatedStatus((byte) completedStatus);
|
|
|
|
// subTimeMember.setMemberId(member.getId());
|
|
|
|
// subTimeMember.setTaskSubTimeId(subTimeId.getId());
|
|
|
|
// subTimeMember.setRealFinishTime(System.currentTimeMillis());
|
|
|
|
// proSubTimeMemberDao.insertSelective(subTimeMember);
|
|
|
|
// }else {
|
|
|
|
// subTimeMember.setComplatedStatus((byte) completedStatus);
|
|
|
|
// subTimeMember.setRealFinishTime(System.currentTimeMillis());
|
|
|
|
// proSubTimeMemberDao.updateByPrimaryKeySelective(subTimeMember);
|
|
|
|
// }
|
|
|
|
// }else {
|
|
|
|
// ProSubTimeMember subTimeMember = isFinishTask(member.getId(),subTimeId.getId());
|
|
|
|
// if(ObjectUtil.isNotNull(subTimeMember)){
|
|
|
|
// subTimeMember.setComplatedStatus((byte) completedStatus);
|
|
|
|
// subTimeMember.setRealFinishTime(System.currentTimeMillis());
|
|
|
|
// proSubTimeMemberDao.updateByPrimaryKeySelective(subTimeMember);
|
|
|
|
// }else {
|
|
|
|
// subTimeMember = new ProSubTimeMember();
|
|
|
|
// subTimeMember.setId(snowflake.nextId());
|
|
|
|
// subTimeMember.setComplatedStatus((byte) completedStatus);
|
|
|
|
// subTimeMember.setTaskSubTimeId(subTimeId.getId());
|
|
|
|
// subTimeMember.setMemberId(member.getId());
|
|
|
|
// subTimeMember.setRealFinishTime(System.currentTimeMillis());
|
|
|
|
// proSubTimeMemberDao.insertSelective(subTimeMember);
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
//返回的任务详细信息
|
|
|
|
TaskVo.NormalTask normalTask = taskDetailService.getTaskInfoByTaskId(currentUserId,taskDetail.getProjectId(),subTimeId.getId()); |
|
|
|
TaskVo.NormalTask normalTask = taskDetailService.getTaskInfoByTaskId(currentUserId, taskDetail.getProjectId(), subTimeId.getId()); |
|
|
|
//用智能助手发送消息
|
|
|
|
robotService.finishTaskRobotSend(currentUserId,normalTask.getProjectId(),normalTask.getProjectName(),normalTask.getName(),normalTask.getExecutorRole(),completedStatus); |
|
|
|
robotService.finishTaskRobotSend(currentUserId, normalTask.getProjectId(), normalTask.getProjectName(), normalTask.getName(), normalTask.getExecutorRole(), completedStatus); |
|
|
|
|
|
|
|
return normalTask; |
|
|
|
} |
|
|
@ -181,19 +247,21 @@ public class TaskSubTimeService implements ITaskSubTimeService { |
|
|
|
/** |
|
|
|
* 该成员是否完成了此任务(返回成员对任务的完成情况) |
|
|
|
*/ |
|
|
|
private ProSubTimeMember isFinishTask(Long memberId, Long subTimeId){ |
|
|
|
private ProSubTimeMember isFinishTask(Long memberId, Long subTimeId) { |
|
|
|
ProSubTimeMember subTimeMember = null; |
|
|
|
ProSubTimeMemberExample subTimeMemberExample = new ProSubTimeMemberExample(); |
|
|
|
subTimeMemberExample.createCriteria().andMemberIdEqualTo(memberId) |
|
|
|
.andTaskSubTimeIdEqualTo(subTimeId); |
|
|
|
List<ProSubTimeMember> subTimeMemberList = proSubTimeMemberDao.selectByExample(subTimeMemberExample); |
|
|
|
if(CollectionUtil.isNotEmpty(subTimeMemberList)){ |
|
|
|
if (CollectionUtil.isNotEmpty(subTimeMemberList)) { |
|
|
|
subTimeMember = subTimeMemberList.get(0); |
|
|
|
} |
|
|
|
return subTimeMember; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 开始任务 |
|
|
|
* |
|
|
|
* @param currentUserId |
|
|
|
* @param startTaskDto |
|
|
|
* @throws Exception |
|
|
@ -202,12 +270,12 @@ public class TaskSubTimeService implements ITaskSubTimeService { |
|
|
|
public void startTask(Long currentUserId, TaskDto.StartTask startTaskDto) throws Exception { |
|
|
|
ProTaskSubTime taskSubTime = taskSubTimeDao.selectByPrimaryKey(startTaskDto.getId()); |
|
|
|
Long now = startTaskDto.getStartTime() == null ? System.currentTimeMillis() : startTaskDto.getStartTime(); |
|
|
|
if(ObjectUtil.isNotNull(taskSubTime)){ |
|
|
|
if(taskSubTime.getComplatedStatus() != 0){ |
|
|
|
if (ObjectUtil.isNotNull(taskSubTime)) { |
|
|
|
if (taskSubTime.getComplatedStatus() != 0) { |
|
|
|
throw new BaseException(CodeEnum.TASK_PREPARATION); |
|
|
|
} |
|
|
|
//结束其他进行中的任务
|
|
|
|
completeTask(startTaskDto.getId(),startTaskDto.getRoleId(),now); |
|
|
|
completeTask(startTaskDto.getId(), startTaskDto.getRoleId(), now); |
|
|
|
|
|
|
|
//开始指定的任务
|
|
|
|
taskSubTime.setRealBeginTime(now); |
|
|
@ -217,7 +285,7 @@ public class TaskSubTimeService implements ITaskSubTimeService { |
|
|
|
//查找任务的负责人名
|
|
|
|
String player = null; |
|
|
|
ProTaskDetail taskDetail = taskDetailDao.selectByPrimaryKey(taskSubTime.getTaskDetailId()); |
|
|
|
if(ObjectUtil.isNotNull(taskDetail)){ |
|
|
|
if (ObjectUtil.isNotNull(taskDetail)) { |
|
|
|
player = taskDetail.getDescription(); |
|
|
|
} |
|
|
|
|
|
|
@ -233,9 +301,9 @@ public class TaskSubTimeService implements ITaskSubTimeService { |
|
|
|
ProMemberExample memberExample = new ProMemberExample(); |
|
|
|
memberExample.createCriteria().andProjectIdEqualTo(startTaskDto.getProjectId()); |
|
|
|
List<ProMember> memberList = proMemberDao.selectByExample(memberExample); |
|
|
|
if(CollectionUtil.isNotEmpty(memberList)){ |
|
|
|
for(ProMember member:memberList){ |
|
|
|
if(ObjectUtil.isNotNull(member.getUserId())){ |
|
|
|
if (CollectionUtil.isNotEmpty(memberList)) { |
|
|
|
for (ProMember member : memberList) { |
|
|
|
if (ObjectUtil.isNotNull(member.getUserId())) { |
|
|
|
BaseMessageDto.MessageUser messageUser = new BaseMessageDto.MessageUser(); |
|
|
|
messageUser.setUserId(member.getUserId()); |
|
|
|
messageUserList.add(messageUser); |
|
|
@ -270,20 +338,21 @@ public class TaskSubTimeService implements ITaskSubTimeService { |
|
|
|
proLogService.addNewProLog(now, taskSubTime.getId(), |
|
|
|
WebConstant.TASK_Execute_Type.Start.value, |
|
|
|
WebConstant.TASK_Execute_Type.Start.phase, currentUserId); |
|
|
|
}else { |
|
|
|
} else { |
|
|
|
throw new BaseException(CodeEnum.NOT_TASK); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 结束其他进行中的任务 |
|
|
|
* |
|
|
|
* @param roleId |
|
|
|
* @param time |
|
|
|
*/ |
|
|
|
private void completeTask(Long subTaskId,Long roleId, Long time) { |
|
|
|
List<ProTaskSubTime> proTaskSubTimeList = taskSubTimeDao.getUnderwayTaskByRoleId(subTaskId,roleId); |
|
|
|
if(CollectionUtil.isNotEmpty(proTaskSubTimeList)){ |
|
|
|
for(ProTaskSubTime proTaskSubTime : proTaskSubTimeList){ |
|
|
|
private void completeTask(Long subTaskId, Long roleId, Long time) { |
|
|
|
List<ProTaskSubTime> proTaskSubTimeList = taskSubTimeDao.getUnderwayTaskByRoleId(subTaskId, roleId); |
|
|
|
if (CollectionUtil.isNotEmpty(proTaskSubTimeList)) { |
|
|
|
for (ProTaskSubTime proTaskSubTime : proTaskSubTimeList) { |
|
|
|
proTaskSubTime.setRealEndTime(time); |
|
|
|
proTaskSubTime.setComplatedStatus(2); |
|
|
|
taskSubTimeDao.updateByPrimaryKeySelective(proTaskSubTime); |
|
|
@ -305,20 +374,20 @@ public class TaskSubTimeService implements ITaskSubTimeService { |
|
|
|
detail.setExecutorRole(addTask.getExecutorId()); |
|
|
|
|
|
|
|
SysProject project = null; |
|
|
|
if(ObjectUtil.isNotNull(addTask.getProjectId())){ |
|
|
|
if (ObjectUtil.isNotNull(addTask.getProjectId())) { |
|
|
|
project = sysProjectDao.selectByPrimaryKey(addTask.getProjectId()); |
|
|
|
if (ObjectUtil.isNotNull(project)) { |
|
|
|
detail.setProjectId(addTask.getProjectId()); |
|
|
|
detail.setBeginTime(project.getBeginTime()); |
|
|
|
detail.setEndTime(project.getEndTime()); |
|
|
|
detail.setLevel((byte) 2); |
|
|
|
}else { |
|
|
|
} else { |
|
|
|
throw new BaseException("项目信息不正确"); |
|
|
|
} |
|
|
|
} else { |
|
|
|
throw new BaseException(CodeEnum.PARAM_ERROR); |
|
|
|
} |
|
|
|
if(ObjectUtil.isNotNull(addTask.getParentTaskId())){ |
|
|
|
if (ObjectUtil.isNotNull(addTask.getParentTaskId())) { |
|
|
|
// ProTaskSubTime subTime = taskSubTimeDao.selectByPrimaryKey(addTask.getParentTaskId());
|
|
|
|
// if(ObjectUtil.isNotNull(subTime)) {
|
|
|
|
ProTaskDetail taskDetail = taskDetailDao.selectByPrimaryKey(addTask.getParentTaskId()); |
|
|
@ -328,7 +397,7 @@ public class TaskSubTimeService implements ITaskSubTimeService { |
|
|
|
detail.setBeginTime(taskDetail.getBeginTime()); |
|
|
|
detail.setEndTime(taskDetail.getEndTime()); |
|
|
|
detail.setLevel((byte) (taskDetail.getLevel() + 1)); |
|
|
|
if(taskDetail.getLevel() == 1){ |
|
|
|
if (taskDetail.getLevel() == 1) { |
|
|
|
detail.setBeginTime(System.currentTimeMillis()); |
|
|
|
detail.setEndTime(com.ccsens.util.DateUtil.getYMD(DateUtil.tomorrow()).getTime()); |
|
|
|
} |
|
|
@ -338,18 +407,18 @@ public class TaskSubTimeService implements ITaskSubTimeService { |
|
|
|
throw new BaseException("任务信息不正确"); |
|
|
|
} |
|
|
|
// }
|
|
|
|
}else{ |
|
|
|
} else { |
|
|
|
detail.setLevel((byte) 1); |
|
|
|
} |
|
|
|
if(ObjectUtil.isNotNull(addTask.getBeginTime())){ |
|
|
|
if (ObjectUtil.isNotNull(addTask.getBeginTime())) { |
|
|
|
detail.setBeginTime(addTask.getBeginTime()); |
|
|
|
} |
|
|
|
if(ObjectUtil.isNotNull(addTask.getEndTime())){ |
|
|
|
if (ObjectUtil.isNotNull(addTask.getEndTime())) { |
|
|
|
detail.setEndTime(addTask.getEndTime()); |
|
|
|
} |
|
|
|
taskDetailDao.insertSelective(detail); |
|
|
|
if(ObjectUtil.isNotNull(addTask.getProjectId())){ |
|
|
|
if(ObjectUtil.isNotNull(project)) { |
|
|
|
if (ObjectUtil.isNotNull(addTask.getProjectId())) { |
|
|
|
if (ObjectUtil.isNotNull(project)) { |
|
|
|
if (detail.getBeginTime() < project.getBeginTime()) { |
|
|
|
project.setBeginTime(detail.getBeginTime()); |
|
|
|
} |
|
|
@ -361,7 +430,7 @@ public class TaskSubTimeService implements ITaskSubTimeService { |
|
|
|
} |
|
|
|
//TaskSubTime
|
|
|
|
List<ProTaskSubTime> proTaskSubTimeList = new ArrayList<>(); |
|
|
|
if(ObjectUtil.isNotNull(detail.getProjectId())){ |
|
|
|
if (ObjectUtil.isNotNull(detail.getProjectId())) { |
|
|
|
//cycle为空,只加一条数据
|
|
|
|
if (StrUtil.isEmpty(detail.getCycle())) { |
|
|
|
ProTaskSubTime proTaskSubTime = new ProTaskSubTime(); |
|
|
@ -390,7 +459,7 @@ public class TaskSubTimeService implements ITaskSubTimeService { |
|
|
|
} |
|
|
|
} |
|
|
|
//交付物
|
|
|
|
if(StrUtil.isNotEmpty(addTask.getTaskDeliver())){ |
|
|
|
if (StrUtil.isNotEmpty(addTask.getTaskDeliver())) { |
|
|
|
ProTaskDeliver deliver = new ProTaskDeliver(); |
|
|
|
deliver.setId(snowflake.nextId()); |
|
|
|
deliver.setTaskDetailId(detail.getId()); |
|
|
@ -398,8 +467,8 @@ public class TaskSubTimeService implements ITaskSubTimeService { |
|
|
|
taskDeliverDao.insertSelective(deliver); |
|
|
|
} |
|
|
|
//插件
|
|
|
|
if(CollectionUtil.isNotEmpty(addTask.getPluginList())){ |
|
|
|
for(Long pluginId:addTask.getPluginList()){ |
|
|
|
if (CollectionUtil.isNotEmpty(addTask.getPluginList())) { |
|
|
|
for (Long pluginId : addTask.getPluginList()) { |
|
|
|
ProTaskPlugin plugin = new ProTaskPlugin(); |
|
|
|
plugin.setId(snowflake.nextId()); |
|
|
|
plugin.setTaskDetailId(detail.getId()); |
|
|
@ -410,17 +479,17 @@ public class TaskSubTimeService implements ITaskSubTimeService { |
|
|
|
} |
|
|
|
//获取符合当前时间的subtimeId
|
|
|
|
Long subTimeId = taskDetailDao.selectSubTimeByTaskIdAndTime(detail.getId(), System.currentTimeMillis()); |
|
|
|
if(ObjectUtil.isNull(subTimeId) && CollectionUtil.isNotEmpty(proTaskSubTimeList)){ |
|
|
|
if (ObjectUtil.isNull(subTimeId) && CollectionUtil.isNotEmpty(proTaskSubTimeList)) { |
|
|
|
subTimeId = proTaskSubTimeList.get(0).getId(); |
|
|
|
} |
|
|
|
//返回
|
|
|
|
TaskVo.NormalTask taskDetail = taskDetailDao.selectTaskByTaskId(subTimeId, detail.getId(),detail.getExecutorRole()); |
|
|
|
TaskVo.NormalTask taskDetail = taskDetailDao.selectTaskByTaskId(subTimeId, detail.getId(), detail.getExecutorRole()); |
|
|
|
|
|
|
|
if(ObjectUtil.isNotNull(taskDetail)) { |
|
|
|
if (ObjectUtil.isNotNull(taskDetail)) { |
|
|
|
taskDetailService.managePlugin(currentUserId, detail.getExecutorRole(), taskDetail); |
|
|
|
} |
|
|
|
//通过智能助手发送通知
|
|
|
|
robotService.addTaskRobotSend(currentUserId,project,addTask.getTaskName(),addTask.getExecutorId()); |
|
|
|
robotService.addTaskRobotSend(currentUserId, project, addTask.getTaskName(), addTask.getExecutorId()); |
|
|
|
|
|
|
|
return taskDetail; |
|
|
|
} |
|
|
@ -428,10 +497,47 @@ public class TaskSubTimeService implements ITaskSubTimeService { |
|
|
|
|
|
|
|
/** |
|
|
|
* 清空项目下所有任务的实际开始结束时间,和运行状态 |
|
|
|
* |
|
|
|
* @param projectId |
|
|
|
*/ |
|
|
|
@Override |
|
|
|
public void clearTaskRealTime(Long projectId) { |
|
|
|
taskSubTimeDao.clearTaskRealTime(projectId); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 看板上查找任务信息 |
|
|
|
* |
|
|
|
* @param currentUserId |
|
|
|
* @param projectId |
|
|
|
* @param roleId |
|
|
|
* @param type |
|
|
|
* @param page |
|
|
|
* @param pageSize |
|
|
|
* @return |
|
|
|
*/ |
|
|
|
@Override |
|
|
|
public List<TaskVo.KanBanTask> getKanbanTake(Long currentUserId, Long projectId, Long roleId, Integer type, Integer page, Integer pageSize) { |
|
|
|
//
|
|
|
|
|
|
|
|
return null; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 修改看板上的任务状态 |
|
|
|
* |
|
|
|
* @param currentUserId |
|
|
|
* @param changeKanbanTask |
|
|
|
*/ |
|
|
|
@Override |
|
|
|
public void changeKanbanTake(Long currentUserId, TaskDto.ChangeKanbanTask changeKanbanTask) { |
|
|
|
//查找任务
|
|
|
|
ProTaskSubTime proTaskSubTime = taskSubTimeDao.selectByPrimaryKey(changeKanbanTask.getId()); |
|
|
|
if (ObjectUtil.isNull(proTaskSubTime)) { |
|
|
|
throw new BaseException(CodeEnum.NOT_TASK); |
|
|
|
} |
|
|
|
if (changeKanbanTask.getType() == 2) { |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|