|
|
@ -9,33 +9,29 @@ 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; |
|
|
|
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.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; |
|
|
@ -48,8 +44,6 @@ public class TaskSubTimeService implements ITaskSubTimeService { |
|
|
|
@Autowired |
|
|
|
private ProSubTimeMemberDao proSubTimeMemberDao; |
|
|
|
@Autowired |
|
|
|
private IUserService userService; |
|
|
|
@Autowired |
|
|
|
private ProTaskDeliverPostLogDao proTaskDeliverPostLogDao; |
|
|
|
@Autowired |
|
|
|
private TaskDetailDao taskDetailDao; |
|
|
@ -60,8 +54,6 @@ public class TaskSubTimeService implements ITaskSubTimeService { |
|
|
|
@Autowired |
|
|
|
private IProMemberService proMemberService; |
|
|
|
@Autowired |
|
|
|
private IProRoleService proRoleService; |
|
|
|
@Autowired |
|
|
|
private IProTaskDetailService taskDetailService; |
|
|
|
@Autowired |
|
|
|
private IMessageService messageService; |
|
|
@ -79,45 +71,51 @@ public class TaskSubTimeService implements ITaskSubTimeService { |
|
|
|
|
|
|
|
/** |
|
|
|
* 完成任务 |
|
|
|
* @param currentUserId |
|
|
|
* @param subTimeId |
|
|
|
* @throws Exception |
|
|
|
* |
|
|
|
* @param currentUserId userId |
|
|
|
* @param subTimeId 任务日期id |
|
|
|
* @throws Exception 任务详情 |
|
|
|
*/ |
|
|
|
@Override |
|
|
|
public TaskVo.NormalTask finishTask(Long currentUserId, TaskDto.TaskSubTimeId subTimeId) throws Exception { |
|
|
|
int completedStatus = subTimeId.getCompletedStatus() == null ? 2 : subTimeId.getCompletedStatus(); |
|
|
|
//获取当前时间
|
|
|
|
Long now = System.currentTimeMillis(); |
|
|
|
//查找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,40 +138,48 @@ 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); |
|
|
|
subTimeMember.setMemberId(member.getId()); |
|
|
|
subTimeMember.setTaskSubTimeId(subTimeId.getId()); |
|
|
|
subTimeMember.setRealFinishTime(System.currentTimeMillis()); |
|
|
|
subTimeMember.setRealFinishTime(now); |
|
|
|
proSubTimeMemberDao.insertSelective(subTimeMember); |
|
|
|
}else { |
|
|
|
} else { |
|
|
|
subTimeMember.setComplatedStatus((byte) completedStatus); |
|
|
|
subTimeMember.setRealFinishTime(System.currentTimeMillis()); |
|
|
|
subTimeMember.setRealFinishTime(now); |
|
|
|
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); |
|
|
|
//不需要全部成员点完成,直接修改任务状态
|
|
|
|
if(taskDetail.getFinishNeedAll() == 0){ |
|
|
|
taskSubTime.setRealEndTime(now); |
|
|
|
taskSubTime.setComplatedStatus(subTimeId.getCompletedStatus()); |
|
|
|
taskSubTimeDao.updateByPrimaryKeySelective(taskSubTime); |
|
|
|
} |
|
|
|
} else { |
|
|
|
ProSubTimeMember proSubTimeMember = new ProSubTimeMember(); |
|
|
|
proSubTimeMember.setRecStatus((byte) 2); |
|
|
|
ProSubTimeMemberExample subTimeMemberExample = new ProSubTimeMemberExample(); |
|
|
|
if (taskDetail.getFinishNeedAll() == 0) { |
|
|
|
subTimeMemberExample.createCriteria().andTaskSubTimeIdEqualTo(subTimeId.getId()); |
|
|
|
} else { |
|
|
|
subTimeMemberExample.createCriteria().andTaskSubTimeIdEqualTo(subTimeId.getId()).andMemberIdEqualTo(member.getId()); |
|
|
|
} |
|
|
|
proSubTimeMemberDao.updateByExampleSelective(proSubTimeMember, subTimeMemberExample); |
|
|
|
//修改任务状态,删除完成时间
|
|
|
|
taskSubTime.setRealEndTime((long) 0); |
|
|
|
taskSubTime.setComplatedStatus(subTimeId.getCompletedStatus()); |
|
|
|
taskSubTimeDao.updateByPrimaryKeySelective(taskSubTime); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
//返回的任务详细信息
|
|
|
|
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,33 +187,35 @@ 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 |
|
|
|
* |
|
|
|
* @param currentUserId userid |
|
|
|
* @param startTaskDto 开始任务 |
|
|
|
* @throws Exception void |
|
|
|
*/ |
|
|
|
@Override |
|
|
|
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 +225,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 +241,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); |
|
|
@ -259,31 +267,25 @@ public class TaskSubTimeService implements ITaskSubTimeService { |
|
|
|
syncMessage.setReceivers(messageUserList); |
|
|
|
messageService.sendStartTaskMessage(syncMessage); |
|
|
|
|
|
|
|
// //发送同步消息
|
|
|
|
// SysProject project = sysProjectDao.selectByPrimaryKey(startTaskDto.getProjectId());
|
|
|
|
// //已发布的项目才同步
|
|
|
|
// if (ObjectUtil.isNotNull(project.getPublished()) && project.getPublished() == 1) {
|
|
|
|
// messageService.sendSyncMessageWithStart(currentUserId, startTaskDto.getProjectId(), startTaskDto.getRoleId(), taskSubTime.getTaskDetailId(), now,
|
|
|
|
// taskSubTime.getEndTime() - taskSubTime.getBeginTime(),player);
|
|
|
|
// }
|
|
|
|
//3.添加记录
|
|
|
|
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 |
|
|
|
* |
|
|
|
* @param roleId 角色id |
|
|
|
* @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,22 +307,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())){ |
|
|
|
// ProTaskSubTime subTime = taskSubTimeDao.selectByPrimaryKey(addTask.getParentTaskId());
|
|
|
|
// if(ObjectUtil.isNotNull(subTime)) {
|
|
|
|
if (ObjectUtil.isNotNull(addTask.getParentTaskId())) { |
|
|
|
ProTaskDetail taskDetail = taskDetailDao.selectByPrimaryKey(addTask.getParentTaskId()); |
|
|
|
if (ObjectUtil.isNotNull(taskDetail)) { |
|
|
|
detail.setProjectId(taskDetail.getProjectId()); |
|
|
@ -328,7 +328,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 +338,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 +361,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 +390,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 +398,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 +410,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 +428,54 @@ public class TaskSubTimeService implements ITaskSubTimeService { |
|
|
|
|
|
|
|
/** |
|
|
|
* 清空项目下所有任务的实际开始结束时间,和运行状态 |
|
|
|
* |
|
|
|
* @param projectId |
|
|
|
*/ |
|
|
|
@Override |
|
|
|
public void clearTaskRealTime(Long projectId) { |
|
|
|
taskSubTimeDao.clearTaskRealTime(projectId); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 看板上查找任务信息 |
|
|
|
* |
|
|
|
* @param currentUserId userId |
|
|
|
* @param projectId 项目id |
|
|
|
* @param roleId 角色id |
|
|
|
* @param type 任务状态 0未开始 1进行中 2已完成 |
|
|
|
* @param page 页数 |
|
|
|
* @param pageSize 每页数量 |
|
|
|
* @return 任务列表 |
|
|
|
*/ |
|
|
|
@Override |
|
|
|
public PageInfo<TaskVo.KanBanTask> getKanbanTake(Long currentUserId, Long projectId, Long roleId, Integer type, Integer page, Integer pageSize) throws Exception { |
|
|
|
//查找此用户在任务下的成员
|
|
|
|
ProMember member = proMemberService.selectByUserId(currentUserId, projectId); |
|
|
|
if (ObjectUtil.isNull(member)) { |
|
|
|
throw new BaseException(CodeEnum.NOT_MEMBER); |
|
|
|
} |
|
|
|
PageHelper.startPage(page, pageSize); |
|
|
|
List<TaskVo.KanBanTask> kanBanTaskList = taskSubTimeDao.getKanbanTake(projectId,roleId,type,member.getId()); |
|
|
|
// return new PageInfo<>(vos);
|
|
|
|
return new PageInfo<>(kanBanTaskList); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 修改看板上的任务状态 |
|
|
|
* |
|
|
|
* @param currentUserId |
|
|
|
* @param changeKanbanTask |
|
|
|
*/ |
|
|
|
@Override |
|
|
|
public void changeKanbanTake(Long currentUserId, TaskDto.ChangeKanbanTask changeKanbanTask) throws Exception { |
|
|
|
//查找任务
|
|
|
|
ProTaskSubTime proTaskSubTime = taskSubTimeDao.selectByPrimaryKey(changeKanbanTask.getId()); |
|
|
|
if (ObjectUtil.isNull(proTaskSubTime)) { |
|
|
|
throw new BaseException(CodeEnum.NOT_TASK); |
|
|
|
} |
|
|
|
TaskDto.TaskSubTimeId subTimeId = new TaskDto.TaskSubTimeId(); |
|
|
|
subTimeId.setId(changeKanbanTask.getId()); |
|
|
|
subTimeId.setCompletedStatus(changeKanbanTask.getType()); |
|
|
|
finishTask(currentUserId,subTimeId); |
|
|
|
} |
|
|
|
} |
|
|
|