From d6d371a12e39c9746f31383118d9aa508d1d7b6c Mon Sep 17 00:00:00 2001 From: zy_Java <654600784@qq.com> Date: Fri, 20 Nov 2020 16:17:58 +0800 Subject: [PATCH] 20201120v1.3 --- .../ccsens/mt/bean/vo/ProvinceCompeteVo.java | 7 +- .../ccsens/mt/service/CompeteTaskService.java | 63 ++++++--- mt/src/main/resources/application.yml | 4 +- .../mapper_dao/CompeteJudgmentDao.xml | 6 +- .../tall/service/ProTaskDetailService.java | 133 +++++++++++++++++- 5 files changed, 187 insertions(+), 26 deletions(-) diff --git a/mt/src/main/java/com/ccsens/mt/bean/vo/ProvinceCompeteVo.java b/mt/src/main/java/com/ccsens/mt/bean/vo/ProvinceCompeteVo.java index d8796b19..40f7bc5d 100644 --- a/mt/src/main/java/com/ccsens/mt/bean/vo/ProvinceCompeteVo.java +++ b/mt/src/main/java/com/ccsens/mt/bean/vo/ProvinceCompeteVo.java @@ -6,6 +6,7 @@ import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.util.ArrayList; import java.util.List; @@ -291,8 +292,10 @@ public class ProvinceCompeteVo { private Long startTime; @ApiModelProperty("项目结束时间") private Long endTime; + @ApiModelProperty("场地数量") + private int siteNums; @ApiModelProperty("项目下的场地") - private List siteList; + private List siteList = new ArrayList<>(); } @Data @ApiModel("项目下的场地信息") @@ -300,7 +303,7 @@ public class ProvinceCompeteVo { @ApiModelProperty("场地编号") private int siteNum; @ApiModelProperty("场地下的裁判") - private List judgmentList; + private List judgmentList = new ArrayList<>(); } @Data diff --git a/mt/src/main/java/com/ccsens/mt/service/CompeteTaskService.java b/mt/src/main/java/com/ccsens/mt/service/CompeteTaskService.java index e0d9abb8..e5f51fef 100644 --- a/mt/src/main/java/com/ccsens/mt/service/CompeteTaskService.java +++ b/mt/src/main/java/com/ccsens/mt/service/CompeteTaskService.java @@ -312,26 +312,55 @@ public class CompeteTaskService implements ICompeteTaskService{ if(CollectionUtil.isNotEmpty(queryJudgmentList)){ queryJudgmentList.forEach(projectJudgment -> { //裁判数量 - int count = 0; - - if(CollectionUtil.isNotEmpty(projectJudgment.getSiteList())){ - for(ProvinceCompeteVo.ProjectSite siteJudgment : projectJudgment.getSiteList()) { - if(projectJudgment.getProjectType() == 0){ - count = 3; + int count = projectJudgment.getProjectType() == 0 ? 3 : 7; +// if(CollectionUtil.isNotEmpty(projectJudgment.getSiteList())){ + for (int i = 0; i < projectJudgment.getSiteNums(); i++) { + if(i < projectJudgment.getSiteList().size()){ + ProvinceCompeteVo.ProjectSite siteJudgment = projectJudgment.getSiteList().get(i); + if (CollectionUtil.isEmpty(siteJudgment.getJudgmentList())) { + siteJudgment.setJudgmentList(new ArrayList<>()); + } + int a = siteJudgment.getJudgmentList().size(); + for (int j = 0; j < count - a; j++) { + ProvinceCompeteVo.SiteJudgment siteJudgment1 = new ProvinceCompeteVo.SiteJudgment(); + siteJudgment1.setJudgmentNum(a + j); + siteJudgment.getJudgmentList().add(siteJudgment1); + } }else { - count = 7; - } - if (CollectionUtil.isEmpty(siteJudgment.getJudgmentList())) { - siteJudgment.setJudgmentList(new ArrayList<>()); - } - int a = siteJudgment.getJudgmentList().size(); - for (int i = 0; i < count - a; i++) { - ProvinceCompeteVo.SiteJudgment siteJudgment1 = new ProvinceCompeteVo.SiteJudgment(); - siteJudgment1.setJudgmentNum(a + i); - siteJudgment.getJudgmentList().add(siteJudgment1); + int a = projectJudgment.getSiteList().size(); + for (int j = 0; j < count - a; j++) { + ProvinceCompeteVo.ProjectSite siteJudgment = new ProvinceCompeteVo.ProjectSite(); + siteJudgment.setSiteNum(a + j + 1); + projectJudgment.getSiteList().add(siteJudgment); + int b = siteJudgment.getJudgmentList().size(); + for (int x = 0; x < count - b; x++) { + ProvinceCompeteVo.SiteJudgment siteJudgment1 = new ProvinceCompeteVo.SiteJudgment(); + siteJudgment1.setJudgmentNum(b + x); + siteJudgment.getJudgmentList().add(siteJudgment1); + } + } } } - } + + + +// for(ProvinceCompeteVo.ProjectSite siteJudgment : projectJudgment.getSiteList()) { +// if(projectJudgment.getProjectType() == 0){ +// count = 3; +// }else { +// count = 7; +// } +// if (CollectionUtil.isEmpty(siteJudgment.getJudgmentList())) { +// siteJudgment.setJudgmentList(new ArrayList<>()); +// } +// int a = siteJudgment.getJudgmentList().size(); +// for (int i = 0; i < count - a; i++) { +// ProvinceCompeteVo.SiteJudgment siteJudgment1 = new ProvinceCompeteVo.SiteJudgment(); +// siteJudgment1.setJudgmentNum(a + i); +// siteJudgment.getJudgmentList().add(siteJudgment1); +// } +// } +// } }); } return queryJudgmentList; diff --git a/mt/src/main/resources/application.yml b/mt/src/main/resources/application.yml index 4ecd13fd..f59084b0 100644 --- a/mt/src/main/resources/application.yml +++ b/mt/src/main/resources/application.yml @@ -1,5 +1,5 @@ spring: profiles: - active: dev - include: common, util-dev + active: test + include: common, util-test diff --git a/mt/src/main/resources/mapper_dao/CompeteJudgmentDao.xml b/mt/src/main/resources/mapper_dao/CompeteJudgmentDao.xml index 5424e8a1..44e60370 100644 --- a/mt/src/main/resources/mapper_dao/CompeteJudgmentDao.xml +++ b/mt/src/main/resources/mapper_dao/CompeteJudgmentDao.xml @@ -8,6 +8,7 @@ + @@ -25,6 +26,7 @@ p.`name` as projectName, pc.start_time as startTime, pc.end_time as endTime, + pc.site_num AS siteNums, j.site as siteNum, j.chief_judgment as judgmentNum, j.`name` as judgmentName, @@ -34,7 +36,7 @@ FROM t_compete_project p LEFT JOIN t_compete_time ct on p.type = ct.type LEFT JOIN t_compete_project_config pc on p.id = pc.project_id - LEFT JOIN t_compete_judgment j on j.project_id = p.id + LEFT JOIN t_compete_judgment j on j.project_id = p.id and (j.rec_status = 0 or j.rec_status IS NULL) WHERE ct.id = #{competeTimeId} @@ -43,7 +45,7 @@ and p.`level` = 2 and p.certificate = 0 and p.rec_status = 0 - and (j.rec_status = 0 or j.rec_status is null) + and pc.rec_status = 0 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 f0c819e2..75eeab2a 100644 --- a/tall/src/main/java/com/ccsens/tall/service/ProTaskDetailService.java +++ b/tall/src/main/java/com/ccsens/tall/service/ProTaskDetailService.java @@ -26,6 +26,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.stereotype.Service; import org.springframework.transaction.annotation.Propagation; @@ -73,8 +75,6 @@ public class ProTaskDetailService implements IProTaskDetailService { @Resource private Snowflake snowflake; @Resource - private MtFeignClient mtFeignClient; - @Resource private ProPluginConfigDao pluginConfigDao; @Resource private IRobotService robotService; @@ -86,6 +86,8 @@ public class ProTaskDetailService implements IProTaskDetailService { private ProMemberRoleDao proMemberRoleDao; @Resource private TaskPluginService taskPluginService; + @Resource + private ProShowDao proShowDao; @Override public void saveTaskDetail(ProTaskDetail taskDetail) { @@ -160,11 +162,27 @@ public class ProTaskDetailService implements IProTaskDetailService { List normalTaskList = new ArrayList<>(); TaskVo.GlobalTask globalTask; TaskVo.NormalTask normalTask; - //1、查找一级任务 + SysProject project = sysProjectDao.selectByPrimaryKey(projectId); + if (ObjectUtil.isNull(project)){ + throw new BaseException(CodeEnum.PARAM_ERROR); + } if (endTime < project.getBeginTime() || startTime > project.getEndTime()) { return proTaskInfo; } + //查找项目配置 + ProShowExample proShowExample = new ProShowExample(); + proShowExample.createCriteria().andProjectIdEqualTo(projectId); + List proShowList = proShowDao.selectByExample(proShowExample); + if(CollectionUtil.isNotEmpty(proShowList)){ + ProShow proShow = proShowList.get(0); + if(proShow.getSelectTaskType() == 4){ + return getTaskAndType4ByPM(currentUserId,projectId,startTime,endTime,page,pageSize,roleId); + } + } + + + //1、查找一级任务 ProTaskDetailExample proTaskDetailExample = new ProTaskDetailExample(); proTaskDetailExample.createCriteria().andProjectIdEqualTo(projectId).andLevelEqualTo((byte) 1) .andLevelEqualTo((byte) 1).andBeginTimeLessThanOrEqualTo(endTime).andEndTimeGreaterThanOrEqualTo(startTime); @@ -253,6 +271,105 @@ public class ProTaskDetailService implements IProTaskDetailService { return proTaskInfo; } + //特殊任务分页查找项目经理下的任务(不处理时间) + private TaskVo.ProTaskInfo getTaskAndType4ByPM(Long currentUserId,Long projectId,Long startTime,Long endTime,int page,int pageSize,Long roleId) throws Exception { + List normalTasks = new ArrayList<>(); + //1、查找一级任务 + PageHelper.startPage(page, pageSize); + ProTaskDetailExample proTaskDetailExample = new ProTaskDetailExample(); + proTaskDetailExample.createCriteria().andProjectIdEqualTo(projectId).andLevelEqualTo((byte) 1) + .andLevelEqualTo((byte) 1).andBeginTimeLessThanOrEqualTo(endTime).andEndTimeGreaterThanOrEqualTo(startTime); + proTaskDetailExample.setOrderByClause("begin_time"); + List firstTaskDetailList = taskDetailDao.selectByExample(proTaskDetailExample); + PageInfo pageInfo = new PageInfo<>(firstTaskDetailList); + if (CollectionUtil.isNotEmpty(firstTaskDetailList)) { + int sequence = 1; + for (ProTaskDetail firstTaskDetail : firstTaskDetailList) { + TaskVo.NormalTask normalTask = new TaskVo.NormalTask(); + BeanUtil.copyProperties(firstTaskDetail, normalTask); + normalTask.setDetailId(firstTaskDetail.getId()); + normalTask.setId(taskDeliverService.isTaskOrSubTime(firstTaskDetail.getId())); + normalTask.setSequence(sequence); + // 查询任务名对应的配置 + ProPluginConfigExample configExample = new ProPluginConfigExample(); + configExample.createCriteria().andTaskIdEqualTo(firstTaskDetail.getId()).andPlaceLocationEqualTo((byte) 0); + List proPluginConfigs = pluginConfigDao.selectByExample(configExample); + if (CollectionUtil.isNotEmpty(proPluginConfigs)) { + ProPluginConfig config = proPluginConfigs.get(0); + normalTask.setImportParam(config.getImportParam()); + normalTask.setRoutineLocation(config.getRoutineLocation()); + normalTask.setWebPath(config.getWebPath()); + } + //一级任务配置 + normalTask.setProTaskConfig(getProTaskShow(normalTask.getDetailId())); + + //一级任务完成状态 + ProSubTimeMember firstSubTimeMember = getProcessByUserIdAndTask(currentUserId, normalTask.getId()); + if (ObjectUtil.isNotNull(firstSubTimeMember)) { + normalTask.setRealEndTime(firstSubTimeMember.getRealFinishTime()); + normalTask.setProcess(firstSubTimeMember.getComplatedStatus()); + } + //查找一级任务下的二级任务 + List secondNormalTaskList = taskDetailDao.selectNormalTaskListByPM(projectId, firstTaskDetail.getId(), startTime, endTime, roleId); + if (CollectionUtil.isNotEmpty(secondNormalTaskList)) { + normalTask.setSecondTasks(secondNormalTaskList); + } + sequence++; + normalTasks.add(normalTask); + } + } + //页码 + TaskVo.PageInfo p = new TaskVo.PageInfo(); + p.setCurrentPage(pageInfo.getPageNum()); + p.setTotalPage(pageInfo.getPages()); + + TaskVo.ProTaskInfo proTaskInfo = new TaskVo.ProTaskInfo(); + proTaskInfo.setPageInfo(p); + proTaskInfo.setNormalTaskList(normalTasks); + return proTaskInfo; + } + + private TaskVo.ProTaskInfo getTaskAndType4ByMember(Long currentUserId,Long projectId,Long startTime,Integer imitation, + Long endTime,int page,int pageSize,Long roleId,Long allMemberId,Integer priority) throws Exception { + + //查找该角色的所有任务(全体成员的任务也是这个角色的任务) + PageHelper.startPage(page, pageSize); + List secondTaskVoList = taskDetailDao.selectTaskByRoleAndAllMembers(projectId, roleId, + allMemberId, startTime, endTime, priority); + PageInfo pageInfo = new PageInfo<>(secondTaskVoList); + + if (CollectionUtil.isNotEmpty(secondTaskVoList)) { + for (TaskVo.NormalTask normalTask : secondTaskVoList) { + //处理插件 + managePlugin(currentUserId, roleId, normalTask, imitation); + //任务完成状态 + if (normalTask.getProcess() != 2) { + ProSubTimeMember subTimeMember = getProcessByUserIdAndTask(currentUserId, normalTask.getId()); + if (ObjectUtil.isNotNull(subTimeMember)) { + normalTask.setProcess(subTimeMember.getComplatedStatus()); + normalTask.setRealEndTime(subTimeMember.getRealFinishTime()); + } else if (normalTask.getProcess() > 2) { + normalTask.setRealEndTime((long) 0); + normalTask.setProcess(0); + } + } + //任务配置 + normalTask.setProTaskConfig(getProTaskShow(normalTask.getDetailId())); + //提醒信息 + normalTask.setRemindInfoList(proRemindDao.queryRemindByTask(normalTask.getId())); + } + } + //页码 + TaskVo.PageInfo p = new TaskVo.PageInfo(); + p.setCurrentPage(pageInfo.getPageNum()); + p.setTotalPage(pageInfo.getPages()); + + TaskVo.ProTaskInfo proTaskInfo = new TaskVo.ProTaskInfo(); + proTaskInfo.setPageInfo(p); + proTaskInfo.setNormalTaskList(secondTaskVoList); + return proTaskInfo; + } + /** * 查看任务 项目成员 */ @@ -269,6 +386,16 @@ public class ProTaskDetailService implements IProTaskDetailService { if (ObjectUtil.isNotNull(allMember)) { allMemberId = allMember.getId(); } + //查找项目配置 + ProShowExample proShowExample = new ProShowExample(); + proShowExample.createCriteria().andProjectIdEqualTo(projectId); + List proShowList = proShowDao.selectByExample(proShowExample); + if(CollectionUtil.isNotEmpty(proShowList)){ + ProShow proShow = proShowList.get(0); + if(proShow.getSelectTaskType() == 4){ + return getTaskAndType4ByMember(currentUserId,projectId,startTime,imitation,endTime,page,pageSize,roleId,allMemberId,priority); + } + } //查找该角色的所有任务(全体成员的任务也是这个角色的任务) List secondTaskVoList = taskDetailDao.selectTaskByRoleAndAllMembers(projectId, roleId, allMemberId, startTime, endTime, priority);