From 642e8c252b97be08780a00d0eba73bb54e4f3482 Mon Sep 17 00:00:00 2001 From: zy_Java <654600784@qq.com> Date: Thu, 4 Jun 2020 15:12:30 +0800 Subject: [PATCH] 0604 --- .../main/resources/application-util-test.yml | 1 + .../com/ccsens/tall/bean/dto/TaskDto.java | 9 + .../java/com/ccsens/tall/bean/vo/TaskVo.java | 24 +- .../ccsens/tall/persist/dao/ProMemberDao.java | 3 + .../tall/persist/dao/SysProjectDao.java | 5 +- .../com/ccsens/tall/service/ChartService.java | 21 +- .../tall/service/ITaskSubTimeService.java | 6 + .../ccsens/tall/service/ProMemberService.java | 34 ++- .../tall/service/ProTaskDetailService.java | 203 ++++++++------ .../ccsens/tall/service/SysDomainService.java | 3 +- .../tall/service/TaskSubTimeService.java | 264 ++++++++++++------ .../com/ccsens/tall/web/TaskController.java | 31 ++ tall/src/main/resources/application-test.yml | 2 + tall/src/main/resources/application.yml | 4 +- tall/src/main/resources/druid-test.yml | 4 +- .../resources/mapper_dao/ProMemberDao.xml | 11 + .../resources/mapper_dao/SysProjectDao.xml | 2 +- 17 files changed, 434 insertions(+), 193 deletions(-) diff --git a/cloudutil/src/main/resources/application-util-test.yml b/cloudutil/src/main/resources/application-util-test.yml index 55720f8c..929fc03c 100644 --- a/cloudutil/src/main/resources/application-util-test.yml +++ b/cloudutil/src/main/resources/application-util-test.yml @@ -21,6 +21,7 @@ eureka: # 指定eureka server通信地址,注意/eureka/小尾巴不能少 #defaultZone: http://admin:admin@peer1:8761/eureka/,http://admin:admin@peer2:8762/eureka/ defaultZone: http://admin:admin@192.168.0.99:7010/eureka/ +# defaultZone: http://admin:admin@test.tall.wiki:7010/eureka/ instance: # 是否注册IP到eureka server,如不指定或设为false,那就回注册主机名到eureka server prefer-ip-address: true diff --git a/tall/src/main/java/com/ccsens/tall/bean/dto/TaskDto.java b/tall/src/main/java/com/ccsens/tall/bean/dto/TaskDto.java index 09489422..13ee79c4 100644 --- a/tall/src/main/java/com/ccsens/tall/bean/dto/TaskDto.java +++ b/tall/src/main/java/com/ccsens/tall/bean/dto/TaskDto.java @@ -177,4 +177,13 @@ public class TaskDto { private Integer completedStatus; } + @ApiModel("修改看板信息") + @Data + public static class ChangeKanbanTask { + @ApiModelProperty("任务id") + private Long id; + @ApiModelProperty("任务状态 0未完成 1进行中 2已完成") + private Integer type; + } + } diff --git a/tall/src/main/java/com/ccsens/tall/bean/vo/TaskVo.java b/tall/src/main/java/com/ccsens/tall/bean/vo/TaskVo.java index 3067aa47..3d52afee 100644 --- a/tall/src/main/java/com/ccsens/tall/bean/vo/TaskVo.java +++ b/tall/src/main/java/com/ccsens/tall/bean/vo/TaskVo.java @@ -318,9 +318,23 @@ public class TaskVo { private String projectName; } -// @Data -// public static class FirstTask{ -// private Long id; -// private String taskName; -// } + @ApiModel("查找看板信息") + @Data + public static class KanBanTask{ + @ApiModelProperty("任务id") + private Long id; + @ApiModelProperty("任务名称") + private String taskName; + @ApiModelProperty("任务详情id") + private Long taskDetailId; + @ApiModelProperty("角色Id") + private Long roleId; + @ApiModelProperty("角色名字") + private String roleName; + @ApiModelProperty("开始时间") + private Long taskBeginTime; + @ApiModelProperty("结束时间") + private Long taskEndTime; + } + } diff --git a/tall/src/main/java/com/ccsens/tall/persist/dao/ProMemberDao.java b/tall/src/main/java/com/ccsens/tall/persist/dao/ProMemberDao.java index 3986962c..678cbcfc 100644 --- a/tall/src/main/java/com/ccsens/tall/persist/dao/ProMemberDao.java +++ b/tall/src/main/java/com/ccsens/tall/persist/dao/ProMemberDao.java @@ -1,5 +1,6 @@ package com.ccsens.tall.persist.dao; +import com.ccsens.tall.bean.po.ProMember; import com.ccsens.tall.bean.vo.MemberVo; import com.ccsens.tall.bean.vo.WbsVo; import com.ccsens.tall.persist.mapper.ProMemberMapper; @@ -23,4 +24,6 @@ public interface ProMemberDao extends ProMemberMapper{ * @param projectId */ List queryUserIdsByProjectId(@Param("projectId") Long projectId); + + List selectMemberByRoleId(@Param("roleId")Long roleId); } diff --git a/tall/src/main/java/com/ccsens/tall/persist/dao/SysProjectDao.java b/tall/src/main/java/com/ccsens/tall/persist/dao/SysProjectDao.java index c0d62698..6bef3a41 100644 --- a/tall/src/main/java/com/ccsens/tall/persist/dao/SysProjectDao.java +++ b/tall/src/main/java/com/ccsens/tall/persist/dao/SysProjectDao.java @@ -29,13 +29,14 @@ public interface SysProjectDao extends SysProjectMapper{ List getCompleteTaskByTime(@Param("projectId")Long projectId); - List getProjectTrend(@Param("projectId")Long projectId, @Param("start")Long start, @Param("end")Long end, @Param("roleId")Long roleId); + List getProjectTrend(@Param("projectId")Long projectId, @Param("start")Long start, @Param("end")Long end, + @Param("roleId")Long roleId,@Param("allMemberId")Long allMemberId); ChartVo.ProjectOverview getOverview(@Param("projectId")Long projectId); List getBurnoutFigure(@Param("projectId")Long projectId, @Param("start")Long start, @Param("end")Long end, - @Param("roleId")Long roleIdm,@Param("type") Integer type); + @Param("roleId")Long roleId,@Param("allMemberId")Long allMemberId,@Param("type") Integer type); Integer getTaskTotalByProjectId(@Param("projectId")Long projectId, @Param("start")Long start, @Param("end")Long end, @Param("roleId")Long roleId); diff --git a/tall/src/main/java/com/ccsens/tall/service/ChartService.java b/tall/src/main/java/com/ccsens/tall/service/ChartService.java index b0fa3c0c..7c3c5f68 100644 --- a/tall/src/main/java/com/ccsens/tall/service/ChartService.java +++ b/tall/src/main/java/com/ccsens/tall/service/ChartService.java @@ -5,6 +5,7 @@ import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.ccsens.tall.bean.dto.ChartDto; +import com.ccsens.tall.bean.po.ProRole; import com.ccsens.tall.bean.po.SysProject; import com.ccsens.tall.bean.vo.ChartVo; import com.ccsens.tall.persist.dao.SysProjectDao; @@ -23,6 +24,8 @@ import java.util.concurrent.atomic.AtomicReference; public class ChartService implements IChartService{ @Autowired private SysProjectDao sysProjectDao; + @Autowired + private ProRoleService proRoleService; /** * 任务执行者分布图 @@ -66,7 +69,13 @@ public class ChartService implements IChartService{ public List getProjectTrend(Long currentUserId, ChartDto.ProjectTrendDto projectTrendDto) { Long start = DateUtil.parse(projectTrendDto.getStart()).getTime(); Long end = DateUtil.parse(projectTrendDto.getEnd()).getTime(); - List projectTrendVoList = sysProjectDao.getProjectTrend(projectTrendDto.getProjectId(),start,end,projectTrendDto.getRoleId()); + //获取“全体成员”角色 + ProRole allMember = proRoleService.getAllMember(projectTrendDto.getProjectId()); + Long allMemberId = null; + if (ObjectUtil.isNotNull(allMember)) { + allMemberId = allMember.getId(); + } + List projectTrendVoList = sysProjectDao.getProjectTrend(projectTrendDto.getProjectId(),start,end,projectTrendDto.getRoleId(),allMemberId); return projectTrendVoList; } @@ -101,8 +110,14 @@ public class ChartService implements IChartService{ public List getBurnoutFigure(Long currentUserId, ChartDto.ProjectTrendDto projectTrendDto) { Long start = DateUtil.parse(projectTrendDto.getStart()).getTime(); Long end = DateUtil.parse(projectTrendDto.getEnd()).getTime(); + //获取“全体成员”角色 + ProRole allMember = proRoleService.getAllMember(projectTrendDto.getProjectId()); + Long allMemberId = null; + if (ObjectUtil.isNotNull(allMember)) { + allMemberId = allMember.getId(); + } //获取任务总数(如果type传1 查询规定条件内的任务总数,若传null,则按天分组查找) - List totalList = sysProjectDao.getBurnoutFigure(projectTrendDto.getProjectId(),start,end,projectTrendDto.getRoleId(),1); + List totalList = sysProjectDao.getBurnoutFigure(projectTrendDto.getProjectId(),start,end,projectTrendDto.getRoleId(),allMemberId,1); //理想 AtomicReference idealTotal = new AtomicReference<>(); BigDecimal idealTotalInt = new BigDecimal(0); @@ -117,7 +132,7 @@ public class ChartService implements IChartService{ realTotal.set(totalList.get(0).getTotalDay()); } //按天获取信息 - List burnoutFigureList = sysProjectDao.getBurnoutFigure(projectTrendDto.getProjectId(),start,end,projectTrendDto.getRoleId(),null); + List burnoutFigureList = sysProjectDao.getBurnoutFigure(projectTrendDto.getProjectId(),start,end,projectTrendDto.getRoleId(),allMemberId,null); if(CollectionUtil.isNotEmpty(burnoutFigureList)){ //每天理想完成数,总数/天数=每天理想完成数 BigDecimal idealFinish = idealTotalInt.divide(BigDecimal.valueOf(burnoutFigureList.size()),1,BigDecimal.ROUND_HALF_UP); diff --git a/tall/src/main/java/com/ccsens/tall/service/ITaskSubTimeService.java b/tall/src/main/java/com/ccsens/tall/service/ITaskSubTimeService.java index 557e9cca..c0c4df6f 100644 --- a/tall/src/main/java/com/ccsens/tall/service/ITaskSubTimeService.java +++ b/tall/src/main/java/com/ccsens/tall/service/ITaskSubTimeService.java @@ -4,6 +4,8 @@ import com.ccsens.tall.bean.dto.TaskDto; import com.ccsens.tall.bean.po.ProTaskSubTime; import com.ccsens.tall.bean.vo.TaskVo; +import java.util.List; + public interface ITaskSubTimeService { void saveProTaskSubTask(ProTaskSubTime proTaskSubTime); @@ -14,4 +16,8 @@ public interface ITaskSubTimeService { TaskVo.NormalTask addTask(Long currentUserId, TaskDto.AddTask addTask) throws Exception; void clearTaskRealTime(Long projectId); + + List getKanbanTake(Long currentUserId, Long projectId, Long roleId, Integer type, Integer page, Integer pageSize); + + void changeKanbanTake(Long currentUserId, TaskDto.ChangeKanbanTask changeKanbanTask); } diff --git a/tall/src/main/java/com/ccsens/tall/service/ProMemberService.java b/tall/src/main/java/com/ccsens/tall/service/ProMemberService.java index 7c9098d7..badf3cf9 100644 --- a/tall/src/main/java/com/ccsens/tall/service/ProMemberService.java +++ b/tall/src/main/java/com/ccsens/tall/service/ProMemberService.java @@ -7,7 +7,9 @@ import com.ccsens.tall.bean.po.*; import com.ccsens.tall.bean.vo.MemberVo; import com.ccsens.tall.bean.vo.ProjectVo; import com.ccsens.tall.persist.dao.*; +import com.ccsens.util.CodeEnum; import com.ccsens.util.WebConstant; +import com.ccsens.util.exception.BaseException; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -121,7 +123,7 @@ public class ProMemberService implements IProMemberService { @Override public Boolean userIsBelongRole(Long userId, Long roleId) { Boolean flag = false; - //如果改角色是全体成员返回true + //如果该角色是全体成员返回true ProRole role = proRoleDao.selectByPrimaryKey(roleId); if(role.getName().equalsIgnoreCase(WebConstant.ROLE_NAME.AllMember.phase)){ flag = true; @@ -191,16 +193,28 @@ public class ProMemberService implements IProMemberService { @Override public List selectByRole(Long roleId){ List memberList = new ArrayList<>(); - ProMemberRoleExample memberRoleExample = new ProMemberRoleExample(); - memberRoleExample.createCriteria().andRoleIdEqualTo(roleId); - List memberRoleList = proMemberRoleDao.selectByExample(memberRoleExample); - if(CollectionUtil.isNotEmpty(memberRoleList)){ - for(ProMemberRole memberRole:memberRoleList){ - ProMember member = proMemberDao.selectByPrimaryKey(memberRole.getMemberId()); - memberList.add(member); - } + ProRole role = proRoleDao.selectByPrimaryKey(roleId); + if(ObjectUtil.isNull(role)){ + throw new BaseException(CodeEnum.NOT_ROLE); } - return memberList; + if(role.getName().equalsIgnoreCase(WebConstant.ROLE_NAME.AllMember.phase)){ + ProMemberExample proMemberExample = new ProMemberExample(); + proMemberExample.createCriteria().andProjectIdEqualTo(role.getProjectId()); + return proMemberDao.selectByExample(proMemberExample); + } + + return proMemberDao.selectMemberByRoleId(roleId); + +// ProMemberRoleExample memberRoleExample = new ProMemberRoleExample(); +// memberRoleExample.createCriteria().andRoleIdEqualTo(roleId); +// List memberRoleList = proMemberRoleDao.selectByExample(memberRoleExample); +// if(CollectionUtil.isNotEmpty(memberRoleList)){ +// for(ProMemberRole memberRole:memberRoleList){ +// ProMember member = proMemberDao.selectByPrimaryKey(memberRole.getMemberId()); +// memberList.add(member); +// } +// } +// return memberList; } /** diff --git a/tall/src/main/java/com/ccsens/tall/service/ProTaskDetailService.java b/tall/src/main/java/com/ccsens/tall/service/ProTaskDetailService.java index 719910ea..30567146 100644 --- a/tall/src/main/java/com/ccsens/tall/service/ProTaskDetailService.java +++ b/tall/src/main/java/com/ccsens/tall/service/ProTaskDetailService.java @@ -14,7 +14,6 @@ import com.ccsens.tall.bean.vo.TaskVo; import com.ccsens.tall.persist.dao.*; import com.ccsens.tall.persist.dao.ProTaskShowDao; import com.ccsens.tall.persist.mapper.ProPluginConfigMapper; -import com.ccsens.tall.util.RobotUtil; import com.ccsens.tall.util.TaskUtil; import com.ccsens.util.CodeEnum; 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.exception.BaseException; import lombok.extern.slf4j.Slf4j; -import org.aspectj.apache.bcel.classfile.Code; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; @@ -32,7 +30,6 @@ import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.math.BigDecimal; import java.util.*; -import java.util.concurrent.atomic.AtomicInteger; @Slf4j @@ -115,35 +112,6 @@ public class ProTaskDetailService implements IProTaskDetailService { 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,10 +188,12 @@ public class ProTaskDetailService implements IProTaskDetailService { //处理插件 managePlugin(currentUserId,roleId,task); //二级任务完成状态 - ProSubTimeMember subTimeMember = getProcessByUserIdAndTask(currentUserId, task.getId()); - if (ObjectUtil.isNotNull(subTimeMember)) { - task.setRealEndTime(subTimeMember.getRealFinishTime()); - task.setProcess(subTimeMember.getComplatedStatus()); + if(task.getProcess() == 0) { + ProSubTimeMember subTimeMember = getProcessByUserIdAndTask(currentUserId, task.getId()); + if (ObjectUtil.isNotNull(subTimeMember)) { + task.setRealEndTime(subTimeMember.getRealFinishTime()); + task.setProcess(subTimeMember.getComplatedStatus()); + } } //二级任务配置 task.setProTaskConfig(getProTaskShow(task.getDetailId())); @@ -287,10 +257,13 @@ public class ProTaskDetailService implements IProTaskDetailService { } //处理插件 managePlugin(currentUserId,roleId,normalTask); - ProSubTimeMember subTimeMember = getProcessByUserIdAndTask(currentUserId, normalTask.getId()); - if (ObjectUtil.isNotNull(subTimeMember)) { - normalTask.setProcess(subTimeMember.getComplatedStatus()); - normalTask.setRealEndTime(subTimeMember.getRealFinishTime()); + //任务完成状态 + if(normalTask.getProcess() == 0) { + ProSubTimeMember subTimeMember = getProcessByUserIdAndTask(currentUserId, normalTask.getId()); + if (ObjectUtil.isNotNull(subTimeMember)) { + normalTask.setProcess(subTimeMember.getComplatedStatus()); + normalTask.setRealEndTime(subTimeMember.getRealFinishTime()); + } } //任务配置 normalTask.setProTaskConfig(getProTaskShow(normalTask.getDetailId())); @@ -558,10 +531,12 @@ public class ProTaskDetailService implements IProTaskDetailService { // //处理查询到的任务的插件 // managePlugin(currentUserId,task.getExecutorRole(),taskDetail); //任务的完成状态 - ProSubTimeMember subTimeMember = getProcessByUserIdAndTask(currentUserId, taskDetail.getId()); - if (ObjectUtil.isNotNull(subTimeMember)) { - taskDetail.setProcess(subTimeMember.getComplatedStatus()); - taskDetail.setRealEndTime(subTimeMember.getRealFinishTime()); + if(taskDetail.getProcess() == 0) { + ProSubTimeMember subTimeMember = getProcessByUserIdAndTask(currentUserId, taskDetail.getId()); + if (ObjectUtil.isNotNull(subTimeMember)) { + taskDetail.setProcess(subTimeMember.getComplatedStatus()); + taskDetail.setRealEndTime(subTimeMember.getRealFinishTime()); + } } //添加项目信息和插件信息 @@ -582,10 +557,12 @@ public class ProTaskDetailService implements IProTaskDetailService { // //处理查询到的任务的插件 // managePlugin(currentUserId,task.getExecutorRole(),taskDetail); //任务的完成状态 - ProSubTimeMember proSubTimeMember = getProcessByUserIdAndTask(currentUserId, groupTask.getId()); - if (ObjectUtil.isNotNull(proSubTimeMember)) { - groupTask.setProcess(proSubTimeMember.getComplatedStatus()); - groupTask.setRealEndTime(proSubTimeMember.getRealFinishTime()); + if(taskDetail.getProcess() == 0) { + ProSubTimeMember proSubTimeMember = getProcessByUserIdAndTask(currentUserId, groupTask.getId()); + if (ObjectUtil.isNotNull(proSubTimeMember)) { + groupTask.setProcess(proSubTimeMember.getComplatedStatus()); + groupTask.setRealEndTime(proSubTimeMember.getRealFinishTime()); + } } //添加项目信息和插件信息 @@ -780,10 +757,12 @@ public class ProTaskDetailService implements IProTaskDetailService { if (CollectionUtil.isNotEmpty(taskList)) { for (TaskVo.NormalTask normalTask : taskList) { //任务的完成状态 - ProSubTimeMember proSubTimeMember = getProcessByUserIdAndTask(userId, normalTask.getId()); - if (ObjectUtil.isNotNull(proSubTimeMember)) { - normalTask.setProcess(proSubTimeMember.getComplatedStatus()); - normalTask.setRealEndTime(proSubTimeMember.getRealFinishTime()); + if(normalTask.getProcess() == 0) { + ProSubTimeMember proSubTimeMember = getProcessByUserIdAndTask(userId, normalTask.getId()); + if (ObjectUtil.isNotNull(proSubTimeMember)) { + normalTask.setProcess(proSubTimeMember.getComplatedStatus()); + normalTask.setRealEndTime(proSubTimeMember.getRealFinishTime()); + } } ProRole proRole = proRoleDao.selectByPrimaryKey(normalTask.getExecutorRole()); if (ObjectUtil.isNotNull(sysProject)) { @@ -939,51 +918,97 @@ public class ProTaskDetailService implements IProTaskDetailService { if(ObjectUtil.isNull(taskDetail)){ throw new BaseException(CodeEnum.NOT_TASK); } - if (taskDetail.getFinishNeedAll() == 0) { - ProSubTimeMemberExample subTimeMemberExample = new ProSubTimeMemberExample(); - subTimeMemberExample.createCriteria().andTaskSubTimeIdEqualTo(subTimeId).andComplatedStatusEqualTo((byte) 2); - subTimeMemberExample.setOrderByClause("real_finish_time DESC"); - List subTimeMemberList = proSubTimeMemberDao.selectByExample(subTimeMemberExample); - if (CollectionUtil.isNotEmpty(subTimeMemberList)) { + ProSubTimeMemberExample subTimeMemberExample = new ProSubTimeMemberExample(); + subTimeMemberExample.createCriteria().andTaskSubTimeIdEqualTo(subTimeId).andComplatedStatusEqualTo((byte) 2); + subTimeMemberExample.setOrderByClause("real_finish_time DESC"); + List subTimeMemberList = proSubTimeMemberDao.selectByExample(subTimeMemberExample); + if (CollectionUtil.isNotEmpty(subTimeMemberList)) { + if (taskDetail.getFinishNeedAll() == 0) { 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 subTimeMemberList = proSubTimeMemberDao.selectByExample(subTimeMemberExample); - if (CollectionUtil.isNotEmpty(subTimeMemberList)) { - subTimeMember = subTimeMemberList.get(0); - } - } else { - //查找任务负责人下的所有成员 - List 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 subTimeMemberList = proSubTimeMemberDao.selectByExample(subTimeMemberExample); - if (CollectionUtil.isEmpty(subTimeMemberList)) { - flag = true; + }else { + //查找此用户在任务下的成员 + ProMember porMember = proMemberService.selectByUserId(userId, taskDetail.getProjectId()); + //该用户是否是任务的负责人 + ProRole role = proRoleDao.selectByPrimaryKey(taskDetail.getExecutorRole()); + Boolean isBelongRole = proMemberService.userIsBelongRole(userId, role.getId()); + if (isBelongRole) { + for(ProSubTimeMember sTimeMember:subTimeMemberList){ + if(sTimeMember.getMemberId().longValue() == porMember.getId()){ + subTimeMember = sTimeMember; break; } - subTimeMember = subTimeMemberList.get(0); } - if(flag){ - subTimeMember = null; + }else { + //查找任务负责人下的所有成员 + List memberList = proMemberService.selectByRole(taskDetail.getExecutorRole()); + + if (CollectionUtil.isNotEmpty(memberList)) { + boolean flag = false; + for (ProMember member : memberList) { + ProSubTimeMemberExample sTimeMemberExample = new ProSubTimeMemberExample(); + sTimeMemberExample.createCriteria().andTaskSubTimeIdEqualTo(subTimeId) + .andMemberIdEqualTo(member.getId()).andComplatedStatusEqualTo((byte) 2); + sTimeMemberExample.setOrderByClause("real_finish_time"); + List sTimeMemberList = proSubTimeMemberDao.selectByExample(sTimeMemberExample); + if (CollectionUtil.isEmpty(subTimeMemberList)) { + flag = true; + break; + } + subTimeMember = subTimeMemberList.get(0); + } + if(flag){ + subTimeMember = null; + } } } } } +// if (taskDetail.getFinishNeedAll() == 0) { +//// ProSubTimeMemberExample subTimeMemberExample = new ProSubTimeMemberExample(); +//// subTimeMemberExample.createCriteria().andTaskSubTimeIdEqualTo(subTimeId).andComplatedStatusEqualTo((byte) 2); +//// subTimeMemberExample.setOrderByClause("real_finish_time DESC"); +//// List 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 subTimeMemberList = proSubTimeMemberDao.selectByExample(subTimeMemberExample); +//// if (CollectionUtil.isNotEmpty(subTimeMemberList)) { +//// subTimeMember = subTimeMemberList.get(0); +//// } +// } else { +// //查找任务负责人下的所有成员 +// List 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 subTimeMemberList = proSubTimeMemberDao.selectByExample(subTimeMemberExample); +// if (CollectionUtil.isEmpty(subTimeMemberList)) { +// flag = true; +// break; +// } +// subTimeMember = subTimeMemberList.get(0); +// } +// if(flag){ +// subTimeMember = null; +// } +// } +// } + return subTimeMember; } diff --git a/tall/src/main/java/com/ccsens/tall/service/SysDomainService.java b/tall/src/main/java/com/ccsens/tall/service/SysDomainService.java index 90c0eed8..624088ca 100644 --- a/tall/src/main/java/com/ccsens/tall/service/SysDomainService.java +++ b/tall/src/main/java/com/ccsens/tall/service/SysDomainService.java @@ -8,6 +8,7 @@ import com.ccsens.tall.bean.po.SysDomain; import com.ccsens.tall.bean.po.SysDomainExample; import com.ccsens.tall.bean.vo.DomainVo; import com.ccsens.tall.persist.dao.SysDomainDao; +import com.ccsens.util.PropUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -36,7 +37,7 @@ public class SysDomainService implements ISysDomainService{ } if(ObjectUtil.isNull(domainInfo)){ domainInfo = new DomainVo.DomainInfo(); - domainInfo.setDomainName("https://test.tall.wiki/gateway/tall/v1.0"); + domainInfo.setDomainName(PropUtil.notGatewayUrl + "gateway/tall/v1.0"); domainInfo.setLogo(""); domainInfo.setCompanyName("传控电子科技有限公司"); domainInfo.setSystemName("TALL时物链条"); diff --git a/tall/src/main/java/com/ccsens/tall/service/TaskSubTimeService.java b/tall/src/main/java/com/ccsens/tall/service/TaskSubTimeService.java index ecf315ed..05524957 100644 --- a/tall/src/main/java/com/ccsens/tall/service/TaskSubTimeService.java +++ b/tall/src/main/java/com/ccsens/tall/service/TaskSubTimeService.java @@ -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 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 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 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 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 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 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 proTaskSubTimeList = taskSubTimeDao.getUnderwayTaskByRoleId(subTaskId,roleId); - if(CollectionUtil.isNotEmpty(proTaskSubTimeList)){ - for(ProTaskSubTime proTaskSubTime : proTaskSubTimeList){ + private void completeTask(Long subTaskId, Long roleId, Long time) { + List proTaskSubTimeList = taskSubTimeDao.getUnderwayTaskByRoleId(subTaskId, roleId); + if (CollectionUtil.isNotEmpty(proTaskSubTimeList)) { + for (ProTaskSubTime proTaskSubTime : proTaskSubTimeList) { proTaskSubTime.setRealEndTime(time); proTaskSubTime.setComplatedStatus(2); taskSubTimeDao.updateByPrimaryKeySelective(proTaskSubTime); @@ -305,51 +374,51 @@ 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()); - if (ObjectUtil.isNotNull(taskDetail)) { - detail.setProjectId(taskDetail.getProjectId()); - detail.setParentId(taskDetail.getId()); - detail.setBeginTime(taskDetail.getBeginTime()); - detail.setEndTime(taskDetail.getEndTime()); - detail.setLevel((byte) (taskDetail.getLevel() + 1)); - if(taskDetail.getLevel() == 1){ - detail.setBeginTime(System.currentTimeMillis()); - detail.setEndTime(com.ccsens.util.DateUtil.getYMD(DateUtil.tomorrow()).getTime()); - } + ProTaskDetail taskDetail = taskDetailDao.selectByPrimaryKey(addTask.getParentTaskId()); + if (ObjectUtil.isNotNull(taskDetail)) { + detail.setProjectId(taskDetail.getProjectId()); + detail.setParentId(taskDetail.getId()); + detail.setBeginTime(taskDetail.getBeginTime()); + detail.setEndTime(taskDetail.getEndTime()); + detail.setLevel((byte) (taskDetail.getLevel() + 1)); + if (taskDetail.getLevel() == 1) { + detail.setBeginTime(System.currentTimeMillis()); + detail.setEndTime(com.ccsens.util.DateUtil.getYMD(DateUtil.tomorrow()).getTime()); + } // taskDetail.setHasGroup((byte) 1); // taskDetailDao.updateByPrimaryKeySelective(taskDetail); - } else { - throw new BaseException("任务信息不正确"); - } + } else { + 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 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 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) { + + } + } } diff --git a/tall/src/main/java/com/ccsens/tall/web/TaskController.java b/tall/src/main/java/com/ccsens/tall/web/TaskController.java index 1177cf84..a3585967 100644 --- a/tall/src/main/java/com/ccsens/tall/web/TaskController.java +++ b/tall/src/main/java/com/ccsens/tall/web/TaskController.java @@ -121,6 +121,37 @@ public class TaskController { return JsonResponse.newInstance().ok(); } + @ApiOperation(value = "看板上查找任务信息", notes = "") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "项目id 必填", required = true, paramType = "query"), + @ApiImplicitParam(name = "type", value = "必填 任务状态 0未开始 1进行中 2已完成", required = true, paramType = "query"), + @ApiImplicitParam(name = "roleId", value = "角色id 不传则查找全部", required = true, paramType = "query") + }) + @RequestMapping(value = "kanban", method = RequestMethod.GET, produces = {"application/json;charset=UTF-8"}) + public JsonResponse> getKanbanTake(HttpServletRequest request, + @RequestParam(required = true)Long projectId, + @RequestParam(required = false)Long roleId, + @RequestParam(required = true)Integer type, + @RequestParam(required = false)Integer page, + @RequestParam(required = false)Integer pageSize) throws Exception { + Long currentUserId = Long.valueOf(((Claims) request.getAttribute(WebConstant.REQUEST_KEY_CLAIMS)).getSubject()); + List kanbanTaskList = subTimeService.getKanbanTake(currentUserId,projectId,roleId,type,page,pageSize); + return JsonResponse.newInstance().ok(kanbanTaskList); + } + + @ApiOperation(value = "看板上修改任务信息", notes = "") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectId", value = "项目id 必填", required = true, paramType = "query"), + @ApiImplicitParam(name = "type", value = "必填 任务状态 0未开始 1进行中 2已完成", required = true, paramType = "query"), + @ApiImplicitParam(name = "roleId", value = "角色id 不传则查找全部", required = true, paramType = "query") + }) + @RequestMapping(value = "kanban/change", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) + public JsonResponse changeKanbanTake(HttpServletRequest request, + @ApiParam @Validated @RequestBody TaskDto.ChangeKanbanTask changeKanbanTask) throws Exception { + Long currentUserId = Long.valueOf(((Claims) request.getAttribute(WebConstant.REQUEST_KEY_CLAIMS)).getSubject()); + subTimeService.changeKanbanTake(currentUserId,changeKanbanTask); + return JsonResponse.newInstance().ok(); + } //============================================================== diff --git a/tall/src/main/resources/application-test.yml b/tall/src/main/resources/application-test.yml index 1c2a13f0..6b1cd537 100644 --- a/tall/src/main/resources/application-test.yml +++ b/tall/src/main/resources/application-test.yml @@ -12,6 +12,7 @@ spring: type: com.alibaba.druid.pool.DruidDataSource rabbitmq: host: 127.0.0.1 +# host: api.ccsens.com password: 111111 port: 5672 username: admin @@ -32,5 +33,6 @@ swagger: eureka: instance: ip-address: 192.168.0.99 +# ip-address: 49.233.89.188 gatewayUrl: http://192.168.0.99/gateway/ notGatewayUrl: http://192.168.0.99/ \ No newline at end of file diff --git a/tall/src/main/resources/application.yml b/tall/src/main/resources/application.yml index c88e995d..b2acd365 100644 --- a/tall/src/main/resources/application.yml +++ b/tall/src/main/resources/application.yml @@ -1,4 +1,4 @@ spring: profiles: - active: test - include: util-test,common + active: dev + include: util-dev,common diff --git a/tall/src/main/resources/druid-test.yml b/tall/src/main/resources/druid-test.yml index 37acaa54..b52b019f 100644 --- a/tall/src/main/resources/druid-test.yml +++ b/tall/src/main/resources/druid-test.yml @@ -15,6 +15,7 @@ spring: maxWait: 60000 minEvictableIdleTimeMillis: 300000 minIdle: 5 +# password: password: 68073a279b399baa1fa12cf39bfbb65bfc1480ffee7b659ccc81cf19be8c4473 poolPreparedStatements: true servletLogSlowSql: true @@ -27,7 +28,8 @@ spring: testOnReturn: false testWhileIdle: true timeBetweenEvictionRunsMillis: 60000 - url: jdbc:mysql://49.233.89.188/tall?useUnicode=true&characterEncoding=UTF-8 +# url: jdbc:mysql://127.0.0.1/tall?useUnicode=true&characterEncoding=UTF-8 + url: jdbc:mysql://test.tall.wiki/tall?useUnicode=true&characterEncoding=UTF-8 username: root validationQuery: SELECT 1 FROM DUAL env: CCSENS_TALL \ No newline at end of file diff --git a/tall/src/main/resources/mapper_dao/ProMemberDao.xml b/tall/src/main/resources/mapper_dao/ProMemberDao.xml index 18bdc748..8b8c14f6 100644 --- a/tall/src/main/resources/mapper_dao/ProMemberDao.xml +++ b/tall/src/main/resources/mapper_dao/ProMemberDao.xml @@ -98,6 +98,17 @@ mr.role_id = #{roleId} + +