|
|
@ -17,6 +17,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.beans.factory.annotation.Autowired; |
|
|
|
import org.springframework.stereotype.Service; |
|
|
@ -42,8 +44,6 @@ public class TaskSubTimeService implements ITaskSubTimeService { |
|
|
|
@Autowired |
|
|
|
private ProSubTimeMemberDao proSubTimeMemberDao; |
|
|
|
@Autowired |
|
|
|
private IUserService userService; |
|
|
|
@Autowired |
|
|
|
private ProTaskDeliverPostLogDao proTaskDeliverPostLogDao; |
|
|
|
@Autowired |
|
|
|
private TaskDetailDao taskDetailDao; |
|
|
@ -54,8 +54,6 @@ public class TaskSubTimeService implements ITaskSubTimeService { |
|
|
|
@Autowired |
|
|
|
private IProMemberService proMemberService; |
|
|
|
@Autowired |
|
|
|
private IProRoleService proRoleService; |
|
|
|
@Autowired |
|
|
|
private IProTaskDetailService taskDetailService; |
|
|
|
@Autowired |
|
|
|
private IMessageService messageService; |
|
|
@ -74,13 +72,15 @@ 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)) { |
|
|
@ -146,96 +146,36 @@ public class TaskSubTimeService implements ITaskSubTimeService { |
|
|
|
subTimeMember.setComplatedStatus((byte) completedStatus); |
|
|
|
subTimeMember.setMemberId(member.getId()); |
|
|
|
subTimeMember.setTaskSubTimeId(subTimeId.getId()); |
|
|
|
subTimeMember.setRealFinishTime(System.currentTimeMillis()); |
|
|
|
subTimeMember.setRealFinishTime(now); |
|
|
|
proSubTimeMemberDao.insertSelective(subTimeMember); |
|
|
|
} else { |
|
|
|
subTimeMember.setComplatedStatus((byte) completedStatus); |
|
|
|
subTimeMember.setRealFinishTime(System.currentTimeMillis()); |
|
|
|
subTimeMember.setRealFinishTime(now); |
|
|
|
proSubTimeMemberDao.updateByPrimaryKeySelective(subTimeMember); |
|
|
|
} |
|
|
|
}else { |
|
|
|
//不需要全部成员点完成,直接修改任务状态
|
|
|
|
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){ |
|
|
|
if (taskDetail.getFinishNeedAll() == 0) { |
|
|
|
subTimeMemberExample.createCriteria().andTaskSubTimeIdEqualTo(subTimeId.getId()); |
|
|
|
}else { |
|
|
|
} else { |
|
|
|
subTimeMemberExample.createCriteria().andTaskSubTimeIdEqualTo(subTimeId.getId()).andMemberIdEqualTo(member.getId()); |
|
|
|
} |
|
|
|
proSubTimeMemberDao.updateByExampleSelective(proSubTimeMember,subTimeMemberExample); |
|
|
|
} |
|
|
|
//修改任务状态
|
|
|
|
// ProSubTimeMember sTimeMember = taskDetailService.getProcessByUserIdAndTask(currentUserId, taskSubTime.getId());
|
|
|
|
// if (ObjectUtil.isNotNull(sTimeMember)) {
|
|
|
|
proSubTimeMemberDao.updateByExampleSelective(proSubTimeMember, subTimeMemberExample); |
|
|
|
//修改任务状态,删除完成时间
|
|
|
|
taskSubTime.setRealEndTime((long) 0); |
|
|
|
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()); |
|
|
|
//用智能助手发送消息
|
|
|
@ -262,9 +202,9 @@ public class TaskSubTimeService implements ITaskSubTimeService { |
|
|
|
/** |
|
|
|
* 开始任务 |
|
|
|
* |
|
|
|
* @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 { |
|
|
@ -327,13 +267,6 @@ 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, |
|
|
@ -346,8 +279,8 @@ public class TaskSubTimeService implements ITaskSubTimeService { |
|
|
|
/** |
|
|
|
* 结束其他进行中的任务 |
|
|
|
* |
|
|
|
* @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); |
|
|
@ -388,8 +321,6 @@ public class TaskSubTimeService implements ITaskSubTimeService { |
|
|
|
throw new BaseException(CodeEnum.PARAM_ERROR); |
|
|
|
} |
|
|
|
if (ObjectUtil.isNotNull(addTask.getParentTaskId())) { |
|
|
|
// ProTaskSubTime subTime = taskSubTimeDao.selectByPrimaryKey(addTask.getParentTaskId());
|
|
|
|
// if(ObjectUtil.isNotNull(subTime)) {
|
|
|
|
ProTaskDetail taskDetail = taskDetailDao.selectByPrimaryKey(addTask.getParentTaskId()); |
|
|
|
if (ObjectUtil.isNotNull(taskDetail)) { |
|
|
|
detail.setProjectId(taskDetail.getProjectId()); |
|
|
@ -508,19 +439,25 @@ public class TaskSubTimeService implements ITaskSubTimeService { |
|
|
|
/** |
|
|
|
* 看板上查找任务信息 |
|
|
|
* |
|
|
|
* @param currentUserId |
|
|
|
* @param projectId |
|
|
|
* @param roleId |
|
|
|
* @param type |
|
|
|
* @param page |
|
|
|
* @param pageSize |
|
|
|
* @return |
|
|
|
* @param currentUserId userId |
|
|
|
* @param projectId 项目id |
|
|
|
* @param roleId 角色id |
|
|
|
* @param type 任务状态 0未开始 1进行中 2已完成 |
|
|
|
* @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; |
|
|
|
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); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
@ -530,14 +467,15 @@ public class TaskSubTimeService implements ITaskSubTimeService { |
|
|
|
* @param changeKanbanTask |
|
|
|
*/ |
|
|
|
@Override |
|
|
|
public void changeKanbanTake(Long currentUserId, TaskDto.ChangeKanbanTask changeKanbanTask) { |
|
|
|
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); |
|
|
|
} |
|
|
|
if (changeKanbanTask.getType() == 2) { |
|
|
|
|
|
|
|
} |
|
|
|
TaskDto.TaskSubTimeId subTimeId = new TaskDto.TaskSubTimeId(); |
|
|
|
subTimeId.setId(changeKanbanTask.getId()); |
|
|
|
subTimeId.setCompletedStatus(changeKanbanTask.getType()); |
|
|
|
finishTask(currentUserId,subTimeId); |
|
|
|
} |
|
|
|
} |
|
|
|