|
|
@ -14,7 +14,6 @@ import com.ccsens.tall.bean.vo.TaskVo; |
|
|
import com.ccsens.tall.persist.dao.*; |
|
|
import com.ccsens.tall.persist.dao.*; |
|
|
import com.ccsens.tall.persist.dao.ProTaskShowDao; |
|
|
import com.ccsens.tall.persist.dao.ProTaskShowDao; |
|
|
import com.ccsens.tall.persist.mapper.ProPluginConfigMapper; |
|
|
import com.ccsens.tall.persist.mapper.ProPluginConfigMapper; |
|
|
import com.ccsens.tall.util.RobotUtil; |
|
|
|
|
|
import com.ccsens.tall.util.TaskUtil; |
|
|
import com.ccsens.tall.util.TaskUtil; |
|
|
import com.ccsens.util.CodeEnum; |
|
|
import com.ccsens.util.CodeEnum; |
|
|
import com.ccsens.util.DateUtil; |
|
|
import com.ccsens.util.DateUtil; |
|
|
@ -23,7 +22,6 @@ import com.ccsens.util.cron.CronConstant; |
|
|
import com.ccsens.util.cron.NatureToDate; |
|
|
import com.ccsens.util.cron.NatureToDate; |
|
|
import com.ccsens.util.exception.BaseException; |
|
|
import com.ccsens.util.exception.BaseException; |
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
import org.aspectj.apache.bcel.classfile.Code; |
|
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
import org.springframework.stereotype.Service; |
|
|
import org.springframework.stereotype.Service; |
|
|
import org.springframework.transaction.annotation.Propagation; |
|
|
import org.springframework.transaction.annotation.Propagation; |
|
|
@ -32,7 +30,6 @@ import org.springframework.transaction.annotation.Transactional; |
|
|
import javax.annotation.Resource; |
|
|
import javax.annotation.Resource; |
|
|
import java.math.BigDecimal; |
|
|
import java.math.BigDecimal; |
|
|
import java.util.*; |
|
|
import java.util.*; |
|
|
import java.util.concurrent.atomic.AtomicInteger; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Slf4j |
|
|
@Slf4j |
|
|
@ -115,35 +112,6 @@ public class ProTaskDetailService implements IProTaskDetailService { |
|
|
return obj; |
|
|
return obj; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
// /**
|
|
|
|
|
|
// * 获取项目里的任务展示配置
|
|
|
|
|
|
// */
|
|
|
|
|
|
// private TaskVo.ProShow getProShow(Long projectId)throws Exception{
|
|
|
|
|
|
// TaskVo.ProShow proShowInfo = new TaskVo.ProShow();
|
|
|
|
|
|
// ProShow proShow = proShowService.selectByProjectId(projectId);
|
|
|
|
|
|
//// ProTaskShow proTaskShow = proShowService.selectByProjectId(projectId);
|
|
|
|
|
|
// if(ObjectUtil.isNotNull(proShow)){
|
|
|
|
|
|
// proShowInfo.setSlide(proShow.getSlide());
|
|
|
|
|
|
// proShowInfo.setFilter(proShow.getFilter());
|
|
|
|
|
|
// proShowInfo.setIsShowMvp(proShow.getIsShowMvp());
|
|
|
|
|
|
// proShowInfo.setCreateTask(proShow.getCreateTask());
|
|
|
|
|
|
// proShowInfo.setDuration(proShow.getDuration());
|
|
|
|
|
|
// proShowInfo.setShowTimeFormat(proShow.getTimeShow());
|
|
|
|
|
|
// proShowInfo.setShowShortcuts(proShow.getShowShortcuts());
|
|
|
|
|
|
// if(proShow.getDuration() == 1) {
|
|
|
|
|
|
// proShowInfo.setShowTimeFormat(null);
|
|
|
|
|
|
// }
|
|
|
|
|
|
// }else {
|
|
|
|
|
|
// proShowInfo.setSlide(0);
|
|
|
|
|
|
// proShowInfo.setFilter(0);
|
|
|
|
|
|
// proShowInfo.setIsShowMvp(1);
|
|
|
|
|
|
// proShowInfo.setCreateTask(1);
|
|
|
|
|
|
// proShowInfo.setDuration(0);
|
|
|
|
|
|
// proShowInfo.setShowTimeFormat("MM-dd HH:mm");
|
|
|
|
|
|
// proShowInfo.setShowShortcuts(1);
|
|
|
|
|
|
// }
|
|
|
|
|
|
// return proShowInfo;
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
* 查找任务配置 |
|
|
* 查找任务配置 |
|
|
@ -220,11 +188,13 @@ public class ProTaskDetailService implements IProTaskDetailService { |
|
|
//处理插件
|
|
|
//处理插件
|
|
|
managePlugin(currentUserId,roleId,task); |
|
|
managePlugin(currentUserId,roleId,task); |
|
|
//二级任务完成状态
|
|
|
//二级任务完成状态
|
|
|
|
|
|
if(task.getProcess() == 0) { |
|
|
ProSubTimeMember subTimeMember = getProcessByUserIdAndTask(currentUserId, task.getId()); |
|
|
ProSubTimeMember subTimeMember = getProcessByUserIdAndTask(currentUserId, task.getId()); |
|
|
if (ObjectUtil.isNotNull(subTimeMember)) { |
|
|
if (ObjectUtil.isNotNull(subTimeMember)) { |
|
|
task.setRealEndTime(subTimeMember.getRealFinishTime()); |
|
|
task.setRealEndTime(subTimeMember.getRealFinishTime()); |
|
|
task.setProcess(subTimeMember.getComplatedStatus()); |
|
|
task.setProcess(subTimeMember.getComplatedStatus()); |
|
|
} |
|
|
} |
|
|
|
|
|
} |
|
|
//二级任务配置
|
|
|
//二级任务配置
|
|
|
task.setProTaskConfig(getProTaskShow(task.getDetailId())); |
|
|
task.setProTaskConfig(getProTaskShow(task.getDetailId())); |
|
|
} |
|
|
} |
|
|
@ -287,11 +257,14 @@ public class ProTaskDetailService implements IProTaskDetailService { |
|
|
} |
|
|
} |
|
|
//处理插件
|
|
|
//处理插件
|
|
|
managePlugin(currentUserId,roleId,normalTask); |
|
|
managePlugin(currentUserId,roleId,normalTask); |
|
|
|
|
|
//任务完成状态
|
|
|
|
|
|
if(normalTask.getProcess() == 0) { |
|
|
ProSubTimeMember subTimeMember = getProcessByUserIdAndTask(currentUserId, normalTask.getId()); |
|
|
ProSubTimeMember subTimeMember = getProcessByUserIdAndTask(currentUserId, normalTask.getId()); |
|
|
if (ObjectUtil.isNotNull(subTimeMember)) { |
|
|
if (ObjectUtil.isNotNull(subTimeMember)) { |
|
|
normalTask.setProcess(subTimeMember.getComplatedStatus()); |
|
|
normalTask.setProcess(subTimeMember.getComplatedStatus()); |
|
|
normalTask.setRealEndTime(subTimeMember.getRealFinishTime()); |
|
|
normalTask.setRealEndTime(subTimeMember.getRealFinishTime()); |
|
|
} |
|
|
} |
|
|
|
|
|
} |
|
|
//任务配置
|
|
|
//任务配置
|
|
|
normalTask.setProTaskConfig(getProTaskShow(normalTask.getDetailId())); |
|
|
normalTask.setProTaskConfig(getProTaskShow(normalTask.getDetailId())); |
|
|
} |
|
|
} |
|
|
@ -558,11 +531,13 @@ public class ProTaskDetailService implements IProTaskDetailService { |
|
|
// //处理查询到的任务的插件
|
|
|
// //处理查询到的任务的插件
|
|
|
// managePlugin(currentUserId,task.getExecutorRole(),taskDetail);
|
|
|
// managePlugin(currentUserId,task.getExecutorRole(),taskDetail);
|
|
|
//任务的完成状态
|
|
|
//任务的完成状态
|
|
|
|
|
|
if(taskDetail.getProcess() == 0) { |
|
|
ProSubTimeMember subTimeMember = getProcessByUserIdAndTask(currentUserId, taskDetail.getId()); |
|
|
ProSubTimeMember subTimeMember = getProcessByUserIdAndTask(currentUserId, taskDetail.getId()); |
|
|
if (ObjectUtil.isNotNull(subTimeMember)) { |
|
|
if (ObjectUtil.isNotNull(subTimeMember)) { |
|
|
taskDetail.setProcess(subTimeMember.getComplatedStatus()); |
|
|
taskDetail.setProcess(subTimeMember.getComplatedStatus()); |
|
|
taskDetail.setRealEndTime(subTimeMember.getRealFinishTime()); |
|
|
taskDetail.setRealEndTime(subTimeMember.getRealFinishTime()); |
|
|
} |
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
//添加项目信息和插件信息
|
|
|
//添加项目信息和插件信息
|
|
|
normalTaskAddPlugin(currentUserId, subTime.getTaskDetailId(), taskDetail); |
|
|
normalTaskAddPlugin(currentUserId, subTime.getTaskDetailId(), taskDetail); |
|
|
@ -582,11 +557,13 @@ public class ProTaskDetailService implements IProTaskDetailService { |
|
|
// //处理查询到的任务的插件
|
|
|
// //处理查询到的任务的插件
|
|
|
// managePlugin(currentUserId,task.getExecutorRole(),taskDetail);
|
|
|
// managePlugin(currentUserId,task.getExecutorRole(),taskDetail);
|
|
|
//任务的完成状态
|
|
|
//任务的完成状态
|
|
|
|
|
|
if(taskDetail.getProcess() == 0) { |
|
|
ProSubTimeMember proSubTimeMember = getProcessByUserIdAndTask(currentUserId, groupTask.getId()); |
|
|
ProSubTimeMember proSubTimeMember = getProcessByUserIdAndTask(currentUserId, groupTask.getId()); |
|
|
if (ObjectUtil.isNotNull(proSubTimeMember)) { |
|
|
if (ObjectUtil.isNotNull(proSubTimeMember)) { |
|
|
groupTask.setProcess(proSubTimeMember.getComplatedStatus()); |
|
|
groupTask.setProcess(proSubTimeMember.getComplatedStatus()); |
|
|
groupTask.setRealEndTime(proSubTimeMember.getRealFinishTime()); |
|
|
groupTask.setRealEndTime(proSubTimeMember.getRealFinishTime()); |
|
|
} |
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
//添加项目信息和插件信息
|
|
|
//添加项目信息和插件信息
|
|
|
normalTaskAddPlugin(currentUserId, groupTask.getDetailId(), groupTask); |
|
|
normalTaskAddPlugin(currentUserId, groupTask.getDetailId(), groupTask); |
|
|
@ -780,11 +757,13 @@ public class ProTaskDetailService implements IProTaskDetailService { |
|
|
if (CollectionUtil.isNotEmpty(taskList)) { |
|
|
if (CollectionUtil.isNotEmpty(taskList)) { |
|
|
for (TaskVo.NormalTask normalTask : taskList) { |
|
|
for (TaskVo.NormalTask normalTask : taskList) { |
|
|
//任务的完成状态
|
|
|
//任务的完成状态
|
|
|
|
|
|
if(normalTask.getProcess() == 0) { |
|
|
ProSubTimeMember proSubTimeMember = getProcessByUserIdAndTask(userId, normalTask.getId()); |
|
|
ProSubTimeMember proSubTimeMember = getProcessByUserIdAndTask(userId, normalTask.getId()); |
|
|
if (ObjectUtil.isNotNull(proSubTimeMember)) { |
|
|
if (ObjectUtil.isNotNull(proSubTimeMember)) { |
|
|
normalTask.setProcess(proSubTimeMember.getComplatedStatus()); |
|
|
normalTask.setProcess(proSubTimeMember.getComplatedStatus()); |
|
|
normalTask.setRealEndTime(proSubTimeMember.getRealFinishTime()); |
|
|
normalTask.setRealEndTime(proSubTimeMember.getRealFinishTime()); |
|
|
} |
|
|
} |
|
|
|
|
|
} |
|
|
ProRole proRole = proRoleDao.selectByPrimaryKey(normalTask.getExecutorRole()); |
|
|
ProRole proRole = proRoleDao.selectByPrimaryKey(normalTask.getExecutorRole()); |
|
|
if (ObjectUtil.isNotNull(sysProject)) { |
|
|
if (ObjectUtil.isNotNull(sysProject)) { |
|
|
normalTask.setProjectId(sysProject.getId()); |
|
|
normalTask.setProjectId(sysProject.getId()); |
|
|
@ -939,39 +918,38 @@ public class ProTaskDetailService implements IProTaskDetailService { |
|
|
if(ObjectUtil.isNull(taskDetail)){ |
|
|
if(ObjectUtil.isNull(taskDetail)){ |
|
|
throw new BaseException(CodeEnum.NOT_TASK); |
|
|
throw new BaseException(CodeEnum.NOT_TASK); |
|
|
} |
|
|
} |
|
|
if (taskDetail.getFinishNeedAll() == 0) { |
|
|
|
|
|
ProSubTimeMemberExample subTimeMemberExample = new ProSubTimeMemberExample(); |
|
|
ProSubTimeMemberExample subTimeMemberExample = new ProSubTimeMemberExample(); |
|
|
subTimeMemberExample.createCriteria().andTaskSubTimeIdEqualTo(subTimeId).andComplatedStatusEqualTo((byte) 2); |
|
|
subTimeMemberExample.createCriteria().andTaskSubTimeIdEqualTo(subTimeId).andComplatedStatusEqualTo((byte) 2); |
|
|
subTimeMemberExample.setOrderByClause("real_finish_time DESC"); |
|
|
subTimeMemberExample.setOrderByClause("real_finish_time DESC"); |
|
|
List<ProSubTimeMember> subTimeMemberList = proSubTimeMemberDao.selectByExample(subTimeMemberExample); |
|
|
List<ProSubTimeMember> subTimeMemberList = proSubTimeMemberDao.selectByExample(subTimeMemberExample); |
|
|
if (CollectionUtil.isNotEmpty(subTimeMemberList)) { |
|
|
if (CollectionUtil.isNotEmpty(subTimeMemberList)) { |
|
|
|
|
|
if (taskDetail.getFinishNeedAll() == 0) { |
|
|
subTimeMember = subTimeMemberList.get(0); |
|
|
subTimeMember = subTimeMemberList.get(0); |
|
|
} |
|
|
|
|
|
}else { |
|
|
}else { |
|
|
//查找此用户在任务下的成员
|
|
|
//查找此用户在任务下的成员
|
|
|
ProMember porMember = proMemberService.selectByUserId(userId, taskDetail.getProjectId()); |
|
|
ProMember porMember = proMemberService.selectByUserId(userId, taskDetail.getProjectId()); |
|
|
//该用户是否是任务的负责人
|
|
|
//该用户是否是任务的负责人
|
|
|
ProRole role = proRoleDao.selectByPrimaryKey(taskDetail.getExecutorRole()); |
|
|
ProRole role = proRoleDao.selectByPrimaryKey(taskDetail.getExecutorRole()); |
|
|
Boolean isBelongRole = proMemberService.userIsBelongRole(userId, role.getId()); |
|
|
Boolean isBelongRole = proMemberService.userIsBelongRole(userId, role.getId()); |
|
|
if (role.getName().equalsIgnoreCase(WebConstant.ROLE_NAME.AllMember.phase) || isBelongRole) { |
|
|
if (isBelongRole) { |
|
|
ProSubTimeMemberExample subTimeMemberExample = new ProSubTimeMemberExample(); |
|
|
for(ProSubTimeMember sTimeMember:subTimeMemberList){ |
|
|
subTimeMemberExample.createCriteria().andTaskSubTimeIdEqualTo(subTimeId) |
|
|
if(sTimeMember.getMemberId().longValue() == porMember.getId()){ |
|
|
.andMemberIdEqualTo(porMember.getId()).andComplatedStatusEqualTo((byte) 2); |
|
|
subTimeMember = sTimeMember; |
|
|
List<ProSubTimeMember> subTimeMemberList = proSubTimeMemberDao.selectByExample(subTimeMemberExample); |
|
|
break; |
|
|
if (CollectionUtil.isNotEmpty(subTimeMemberList)) { |
|
|
} |
|
|
subTimeMember = subTimeMemberList.get(0); |
|
|
|
|
|
} |
|
|
} |
|
|
}else { |
|
|
}else { |
|
|
//查找任务负责人下的所有成员
|
|
|
//查找任务负责人下的所有成员
|
|
|
List<ProMember> memberList = proMemberService.selectByRole(taskDetail.getExecutorRole()); |
|
|
List<ProMember> memberList = proMemberService.selectByRole(taskDetail.getExecutorRole()); |
|
|
|
|
|
|
|
|
if (CollectionUtil.isNotEmpty(memberList)) { |
|
|
if (CollectionUtil.isNotEmpty(memberList)) { |
|
|
boolean flag = false; |
|
|
boolean flag = false; |
|
|
for (ProMember member : memberList) { |
|
|
for (ProMember member : memberList) { |
|
|
ProSubTimeMemberExample subTimeMemberExample = new ProSubTimeMemberExample(); |
|
|
ProSubTimeMemberExample sTimeMemberExample = new ProSubTimeMemberExample(); |
|
|
subTimeMemberExample.createCriteria().andTaskSubTimeIdEqualTo(subTimeId) |
|
|
sTimeMemberExample.createCriteria().andTaskSubTimeIdEqualTo(subTimeId) |
|
|
.andMemberIdEqualTo(member.getId()).andComplatedStatusEqualTo((byte) 2); |
|
|
.andMemberIdEqualTo(member.getId()).andComplatedStatusEqualTo((byte) 2); |
|
|
subTimeMemberExample.setOrderByClause("real_finish_time"); |
|
|
sTimeMemberExample.setOrderByClause("real_finish_time"); |
|
|
List<ProSubTimeMember> subTimeMemberList = proSubTimeMemberDao.selectByExample(subTimeMemberExample); |
|
|
List<ProSubTimeMember> sTimeMemberList = proSubTimeMemberDao.selectByExample(sTimeMemberExample); |
|
|
if (CollectionUtil.isEmpty(subTimeMemberList)) { |
|
|
if (CollectionUtil.isEmpty(subTimeMemberList)) { |
|
|
flag = true; |
|
|
flag = true; |
|
|
break; |
|
|
break; |
|
|
@ -984,6 +962,53 @@ public class ProTaskDetailService implements IProTaskDetailService { |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
// if (taskDetail.getFinishNeedAll() == 0) {
|
|
|
|
|
|
//// ProSubTimeMemberExample subTimeMemberExample = new ProSubTimeMemberExample();
|
|
|
|
|
|
//// subTimeMemberExample.createCriteria().andTaskSubTimeIdEqualTo(subTimeId).andComplatedStatusEqualTo((byte) 2);
|
|
|
|
|
|
//// subTimeMemberExample.setOrderByClause("real_finish_time DESC");
|
|
|
|
|
|
//// List<ProSubTimeMember> subTimeMemberList = proSubTimeMemberDao.selectByExample(subTimeMemberExample);
|
|
|
|
|
|
//// if (CollectionUtil.isNotEmpty(subTimeMemberList)) {
|
|
|
|
|
|
//// subTimeMember = subTimeMemberList.get(0);
|
|
|
|
|
|
//// }
|
|
|
|
|
|
// } else {
|
|
|
|
|
|
//// //查找此用户在任务下的成员
|
|
|
|
|
|
//// ProMember porMember = proMemberService.selectByUserId(userId, taskDetail.getProjectId());
|
|
|
|
|
|
//// //该用户是否是任务的负责人
|
|
|
|
|
|
//// ProRole role = proRoleDao.selectByPrimaryKey(taskDetail.getExecutorRole());
|
|
|
|
|
|
//// Boolean isBelongRole = proMemberService.userIsBelongRole(userId, role.getId());
|
|
|
|
|
|
//// if (role.getName().equalsIgnoreCase(WebConstant.ROLE_NAME.AllMember.phase) || isBelongRole) {
|
|
|
|
|
|
//// ProSubTimeMemberExample subTimeMemberExample = new ProSubTimeMemberExample();
|
|
|
|
|
|
//// subTimeMemberExample.createCriteria().andTaskSubTimeIdEqualTo(subTimeId)
|
|
|
|
|
|
//// .andMemberIdEqualTo(porMember.getId()).andComplatedStatusEqualTo((byte) 2);
|
|
|
|
|
|
//// List<ProSubTimeMember> subTimeMemberList = proSubTimeMemberDao.selectByExample(subTimeMemberExample);
|
|
|
|
|
|
//// if (CollectionUtil.isNotEmpty(subTimeMemberList)) {
|
|
|
|
|
|
//// subTimeMember = subTimeMemberList.get(0);
|
|
|
|
|
|
//// }
|
|
|
|
|
|
// } else {
|
|
|
|
|
|
// //查找任务负责人下的所有成员
|
|
|
|
|
|
// List<ProMember> memberList = proMemberService.selectByRole(taskDetail.getExecutorRole());
|
|
|
|
|
|
//
|
|
|
|
|
|
// if (CollectionUtil.isNotEmpty(memberList)) {
|
|
|
|
|
|
// boolean flag = false;
|
|
|
|
|
|
// for (ProMember member : memberList) {
|
|
|
|
|
|
// ProSubTimeMemberExample subTimeMemberExample = new ProSubTimeMemberExample();
|
|
|
|
|
|
// subTimeMemberExample.createCriteria().andTaskSubTimeIdEqualTo(subTimeId)
|
|
|
|
|
|
// .andMemberIdEqualTo(member.getId()).andComplatedStatusEqualTo((byte) 2);
|
|
|
|
|
|
// subTimeMemberExample.setOrderByClause("real_finish_time");
|
|
|
|
|
|
// List<ProSubTimeMember> subTimeMemberList = proSubTimeMemberDao.selectByExample(subTimeMemberExample);
|
|
|
|
|
|
// if (CollectionUtil.isEmpty(subTimeMemberList)) {
|
|
|
|
|
|
// flag = true;
|
|
|
|
|
|
// break;
|
|
|
|
|
|
// }
|
|
|
|
|
|
// subTimeMember = subTimeMemberList.get(0);
|
|
|
|
|
|
// }
|
|
|
|
|
|
// if(flag){
|
|
|
|
|
|
// subTimeMember = null;
|
|
|
|
|
|
// }
|
|
|
|
|
|
// }
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
return subTimeMember; |
|
|
return subTimeMember; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|