diff --git a/tall/pom.xml b/tall/pom.xml index 20a55616..2fae96dc 100644 --- a/tall/pom.xml +++ b/tall/pom.xml @@ -24,6 +24,7 @@ com.ccsens 1.0-SNAPSHOT + diff --git a/tall/src/main/java/com/ccsens/tall/bean/po/ProShow.java b/tall/src/main/java/com/ccsens/tall/bean/po/ProShow.java index b55d77e2..2dee9811 100644 --- a/tall/src/main/java/com/ccsens/tall/bean/po/ProShow.java +++ b/tall/src/main/java/com/ccsens/tall/bean/po/ProShow.java @@ -16,6 +16,10 @@ public class ProShow implements Serializable { private Byte duration; + private Byte isShowMvp; + + private Byte createTask; + private Date createdAt; private Date updatedAt; @@ -72,6 +76,22 @@ public class ProShow implements Serializable { this.duration = duration; } + public Byte getIsShowMvp() { + return isShowMvp; + } + + public void setIsShowMvp(Byte isShowMvp) { + this.isShowMvp = isShowMvp; + } + + public Byte getCreateTask() { + return createTask; + } + + public void setCreateTask(Byte createTask) { + this.createTask = createTask; + } + public Date getCreatedAt() { return createdAt; } @@ -108,6 +128,8 @@ public class ProShow implements Serializable { sb.append(", filter=").append(filter); sb.append(", timeShow=").append(timeShow); sb.append(", duration=").append(duration); + sb.append(", isShowMvp=").append(isShowMvp); + sb.append(", createTask=").append(createTask); sb.append(", createdAt=").append(createdAt); sb.append(", updatedAt=").append(updatedAt); sb.append(", recStatus=").append(recStatus); diff --git a/tall/src/main/java/com/ccsens/tall/bean/po/ProShowExample.java b/tall/src/main/java/com/ccsens/tall/bean/po/ProShowExample.java index dd8878df..587899b9 100644 --- a/tall/src/main/java/com/ccsens/tall/bean/po/ProShowExample.java +++ b/tall/src/main/java/com/ccsens/tall/bean/po/ProShowExample.java @@ -475,6 +475,126 @@ public class ProShowExample { return (Criteria) this; } + public Criteria andIsShowMvpIsNull() { + addCriterion("is_show_mvp is null"); + return (Criteria) this; + } + + public Criteria andIsShowMvpIsNotNull() { + addCriterion("is_show_mvp is not null"); + return (Criteria) this; + } + + public Criteria andIsShowMvpEqualTo(Byte value) { + addCriterion("is_show_mvp =", value, "isShowMvp"); + return (Criteria) this; + } + + public Criteria andIsShowMvpNotEqualTo(Byte value) { + addCriterion("is_show_mvp <>", value, "isShowMvp"); + return (Criteria) this; + } + + public Criteria andIsShowMvpGreaterThan(Byte value) { + addCriterion("is_show_mvp >", value, "isShowMvp"); + return (Criteria) this; + } + + public Criteria andIsShowMvpGreaterThanOrEqualTo(Byte value) { + addCriterion("is_show_mvp >=", value, "isShowMvp"); + return (Criteria) this; + } + + public Criteria andIsShowMvpLessThan(Byte value) { + addCriterion("is_show_mvp <", value, "isShowMvp"); + return (Criteria) this; + } + + public Criteria andIsShowMvpLessThanOrEqualTo(Byte value) { + addCriterion("is_show_mvp <=", value, "isShowMvp"); + return (Criteria) this; + } + + public Criteria andIsShowMvpIn(List values) { + addCriterion("is_show_mvp in", values, "isShowMvp"); + return (Criteria) this; + } + + public Criteria andIsShowMvpNotIn(List values) { + addCriterion("is_show_mvp not in", values, "isShowMvp"); + return (Criteria) this; + } + + public Criteria andIsShowMvpBetween(Byte value1, Byte value2) { + addCriterion("is_show_mvp between", value1, value2, "isShowMvp"); + return (Criteria) this; + } + + public Criteria andIsShowMvpNotBetween(Byte value1, Byte value2) { + addCriterion("is_show_mvp not between", value1, value2, "isShowMvp"); + return (Criteria) this; + } + + public Criteria andCreateTaskIsNull() { + addCriterion("create_task is null"); + return (Criteria) this; + } + + public Criteria andCreateTaskIsNotNull() { + addCriterion("create_task is not null"); + return (Criteria) this; + } + + public Criteria andCreateTaskEqualTo(Byte value) { + addCriterion("create_task =", value, "createTask"); + return (Criteria) this; + } + + public Criteria andCreateTaskNotEqualTo(Byte value) { + addCriterion("create_task <>", value, "createTask"); + return (Criteria) this; + } + + public Criteria andCreateTaskGreaterThan(Byte value) { + addCriterion("create_task >", value, "createTask"); + return (Criteria) this; + } + + public Criteria andCreateTaskGreaterThanOrEqualTo(Byte value) { + addCriterion("create_task >=", value, "createTask"); + return (Criteria) this; + } + + public Criteria andCreateTaskLessThan(Byte value) { + addCriterion("create_task <", value, "createTask"); + return (Criteria) this; + } + + public Criteria andCreateTaskLessThanOrEqualTo(Byte value) { + addCriterion("create_task <=", value, "createTask"); + return (Criteria) this; + } + + public Criteria andCreateTaskIn(List values) { + addCriterion("create_task in", values, "createTask"); + return (Criteria) this; + } + + public Criteria andCreateTaskNotIn(List values) { + addCriterion("create_task not in", values, "createTask"); + return (Criteria) this; + } + + public Criteria andCreateTaskBetween(Byte value1, Byte value2) { + addCriterion("create_task between", value1, value2, "createTask"); + return (Criteria) this; + } + + public Criteria andCreateTaskNotBetween(Byte value1, Byte value2) { + addCriterion("create_task not between", value1, value2, "createTask"); + return (Criteria) this; + } + public Criteria andCreatedAtIsNull() { addCriterion("created_at is null"); return (Criteria) this; 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 8ac16927..dd0663d6 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 @@ -234,4 +234,10 @@ public class TaskVo { private String name; } + @Data + public static class TaskIdAndSubTimeIdByParentIdAndTime{ + private Long taskId; + private Long subTimeId; + } + } diff --git a/tall/src/main/java/com/ccsens/tall/persist/dao/TaskDetailDao.java b/tall/src/main/java/com/ccsens/tall/persist/dao/TaskDetailDao.java index 7a06db48..83e77360 100644 --- a/tall/src/main/java/com/ccsens/tall/persist/dao/TaskDetailDao.java +++ b/tall/src/main/java/com/ccsens/tall/persist/dao/TaskDetailDao.java @@ -30,4 +30,5 @@ public interface TaskDetailDao extends ProTaskDetailMapper { void selectTaskByDetailId(@Param("detailId") Long detailId); + TaskVo.TaskIdAndSubTimeIdByParentIdAndTime selectSubTimeByTaskParentIdAndTime(@Param("parentId")Long parentId, @Param("now")Long now); } diff --git a/tall/src/main/java/com/ccsens/tall/rabbitMQ/MessageTest.java b/tall/src/main/java/com/ccsens/tall/rabbitMQ/MessageTest.java new file mode 100644 index 00000000..84c9fa2d --- /dev/null +++ b/tall/src/main/java/com/ccsens/tall/rabbitMQ/MessageTest.java @@ -0,0 +1,25 @@ +package com.ccsens.tall.rabbitMQ; + +import com.ccsens.util.JacksonUtil; +import com.ccsens.util.bean.message.common.InMessage; +import com.ccsens.util.bean.message.common.MessageConstant; +import com.ccsens.util.bean.message.common.ServerMessage; +import com.ccsens.util.config.RabbitMQConfig; + +import org.springframework.amqp.core.AmqpTemplate; +import org.springframework.beans.factory.annotation.Autowired; + +public class MessageTest { + @Autowired + private AmqpTemplate rabbitTemplate; + + public void messageTest() throws Exception { + ServerMessage serverMessage = new ServerMessage(); + serverMessage.setType("Ping"); + InMessage inMessage = InMessage.newToServerMessage(MessageConstant.DomainType.Server,serverMessage); + String j = JacksonUtil.beanToJson(inMessage); + System.out.println(j); + //FixMe 发送到消息队列 + rabbitTemplate.convertAndSend(RabbitMQConfig.TALL_MESSAGE_1,j); + } +} diff --git a/tall/src/main/java/com/ccsens/tall/service/ExcelService.java b/tall/src/main/java/com/ccsens/tall/service/ExcelService.java index 09864d63..3292dc93 100644 --- a/tall/src/main/java/com/ccsens/tall/service/ExcelService.java +++ b/tall/src/main/java/com/ccsens/tall/service/ExcelService.java @@ -137,7 +137,9 @@ public class ExcelService implements IExcelService { readPlugin(xssfWorkbook,taskDetails,proRoles); return sysProject; } - + /** + * 添加项目 + */ private void readProject(XSSFSheet wbsSheet, int projectInfoStart, int projectInfoEnd, Long currentUserId,SysProject sysProject) { XSSFRow row = wbsSheet.getRow(projectInfoStart + 1); String projectName = ExcelUtil.getCellValue(row.getCell(0)); @@ -182,6 +184,9 @@ public class ExcelService implements IExcelService { } } + /** + * 读取成员相关 + */ private void readMember(XSSFSheet wbsSheet, XSSFSheet memberSheet, int memberStart, int memberEnd, SysProject sysProject, List proRoles, List proMembers) throws Exception { @@ -391,7 +396,9 @@ public class ExcelService implements IExcelService { proRoles.add(proMemberRole); } - //判断集合是否为空,有没有相同内容 + /** + * 判断集合是否为空,有没有相同内容 + */ private boolean proMemberRoleExist(String memberRoleName,List proRoles) { if (CollectionUtil.isNotEmpty(proRoles)) { for (ProRole proMemberRole : proRoles) { @@ -403,7 +410,9 @@ public class ExcelService implements IExcelService { return false; } - //添加成员与奖惩干系人 + /** + * 添加成员与奖惩干系人 + */ private void memberWhitStakeholder(XSSFSheet memberSheet, Long stakeholderId, SysProject sysProject, List proMembers) throws Exception { List stakeholderList = new ArrayList<>(); if (ObjectUtil.isNotNull(memberSheet)) { @@ -529,6 +538,9 @@ public class ExcelService implements IExcelService { return false; } + /** + * 读取任务 + */ private void readTask(XSSFWorkbook xssfWorkbook, XSSFSheet wbsSheet, int taskStart, int taskEnd, Long currentUserId, SysProject sysProject, List taskDetails, List proRoles, List proMembers) throws Exception { @@ -565,24 +577,25 @@ public class ExcelService implements IExcelService { for (int i = taskStart + 1; i <= taskEnd; i++) { XSSFRow row = wbsSheet.getRow(i); - String task1 = ExcelUtil.getCellValue(row.getCell(1));//一级任务名称 - String task2 = ExcelUtil.getCellValue(row.getCell(2));//二级任务名称 - String description = ExcelUtil.getCellValue(row.getCell(3));//任务描述 - String beginTime = ExcelUtil.getCellValue(row.getCell(4));//开始时间 - String endTime = ExcelUtil.getCellValue(row.getCell(5));//结束时间 -// String duration = ExcelUtil.getCellValue(row.getCell(6));//任务时长 - String repeat = ExcelUtil.getCellValue(row.getCell(7));//重复 - String subTaskCell = ExcelUtil.getCellValue(row.getCell(8));//子任务 - String subProject = ExcelUtil.getCellValue(row.getCell(9));//子项目 - String deliver = ExcelUtil.getCellValue(row.getCell(10));//交付物 - String executorRole = ExcelUtil.getCellValue(row.getCell(11));//负责人 - String checkerRole = ExcelUtil.getCellValue(row.getCell(12));//检查人 - String money = ExcelUtil.getCellValue(row.getCell(13));//即使奖惩 - String delay = ExcelUtil.getCellValue(row.getCell(14));//任务切换模式 - String delayTime = ExcelUtil.getCellValue(row.getCell(15));//延迟时间 - String loopTo = ExcelUtil.getCellValue(row.getCell(16));//跳转任务 - String loopTimes = ExcelUtil.getCellValue(row.getCell(17));//跳转次数 - String input = ExcelUtil.getCellValue(row.getCell(18));//输入文档 + //一级任务名称 + String task1 = ExcelUtil.getCellValue(row.getCell(1)); + //二级任务名称 + String task2 = ExcelUtil.getCellValue(row.getCell(2)); + String description = ExcelUtil.getCellValue(row.getCell(3)); + String beginTime = ExcelUtil.getCellValue(row.getCell(4)); + String endTime = ExcelUtil.getCellValue(row.getCell(5)); + String repeat = ExcelUtil.getCellValue(row.getCell(7)); + String subTaskCell = ExcelUtil.getCellValue(row.getCell(8)); + String subProject = ExcelUtil.getCellValue(row.getCell(9)); + String deliver = ExcelUtil.getCellValue(row.getCell(10)); + String executorRole = ExcelUtil.getCellValue(row.getCell(11)); + String checkerRole = ExcelUtil.getCellValue(row.getCell(12)); + String money = ExcelUtil.getCellValue(row.getCell(13)); + String delay = ExcelUtil.getCellValue(row.getCell(14)); + String delayTime = ExcelUtil.getCellValue(row.getCell(15)); + String loopTo = ExcelUtil.getCellValue(row.getCell(16)); + String loopTimes = ExcelUtil.getCellValue(row.getCell(17)); + String input = ExcelUtil.getCellValue(row.getCell(18)); //二级任务名不能为空 // if(StrUtil.isEmpty(task2)){ // throw new BaseException(CodeEnum.WBS_NOT_TASK_NAME.addMsg(wbsSheet.getSheetName()+i)); @@ -624,7 +637,6 @@ public class ExcelService implements IExcelService { taskDetail.setDescription(description); taskDetail.setVirtual((byte) WebConstant.TASK_VIRTUAL.Normal.value); taskDetail.setLevel((byte) WebConstant.TASK_LEVEL.SecondTask.value); -// taskDetail.setGlobal((byte) 0); taskDetail.setHasGroup((byte) 0); taskDetail.setAllMember((byte) 1); //子项目 @@ -637,26 +649,6 @@ public class ExcelService implements IExcelService { projectService.updateProject(project); } } - //交付物 - if (StrUtil.isNotEmpty(deliver)) { - String str = ""; - if (deliver.length() > 4) { - str = deliver.substring(0, 3); - } - if (str.equals("关联表")) { - String subStr = deliver.substring(4); - XSSFSheet subSheet = xssfWorkbook.getSheet(subStr); - readSubSheet(subSheet, taskDetail.getId()); - } else { - ProTaskDeliver taskDeliver = new ProTaskDeliver(); - taskDeliver.setId(snowflake.nextId()); - taskDeliver.setTaskDetailId(taskDetail.getId()); - taskDeliver.setName(deliver); - taskDeliver.setIsInput(0); - taskDeliver.setIsFinal(1); - taskDeliverService.saveDeliver(taskDeliver); - } - } //负责人 if (CollectionUtil.isNotEmpty(proRoles)) { Long executorRoleId = null; @@ -675,7 +667,7 @@ public class ExcelService implements IExcelService { if (CollectionUtil.isNotEmpty(proRoles)) { Long checkerRoleId = null; for (ProRole proRole : proRoles) { - if (ObjectUtil.isNotNull(proRole.getParentId()) && proRole.getName().equals(executorRole)) { + if (ObjectUtil.isNotNull(proRole.getParentId()) && proRole.getName().equals(checkerRole)) { checkerRoleId = proRole.getId(); taskDetail.setCheckerRole(checkerRoleId); break; @@ -731,39 +723,41 @@ public class ExcelService implements IExcelService { } else { taskDetail.setEndTime(sysProject.getEndTime()); } - //重复 - if (StrUtil.isNotEmpty(repeat)) {//有重复就是全局任务 -// taskDetail.setGlobal((byte) 1); + //重复频率 + if (StrUtil.isNotEmpty(repeat)) { taskDetail.setCycle(repeat); } //子任务 - if (StrUtil.isNotEmpty(subTaskCell)) {//有子日程表 + if (StrUtil.isNotEmpty(subTaskCell)) { taskDetail.setHasGroup((byte) 1); switch (subTaskCell){ case "值日表": - getSubTask(xssfWorkbook, subTaskCell, taskDetail,taskDetails,proMembers); + getSubTask(xssfWorkbook, subTaskCell, taskDetail,taskDetails,proMembers,deliver); break; case "运动计划表": - getSubTask(xssfWorkbook, subTaskCell, taskDetail,taskDetails,proMembers); + getSubTask(xssfWorkbook, subTaskCell, taskDetail,taskDetails,proMembers,deliver); break; case "前端学习计划表": - getSubTask(xssfWorkbook, subTaskCell, taskDetail,taskDetails,proMembers); + getSubTask(xssfWorkbook, subTaskCell, taskDetail,taskDetails,proMembers,deliver); break; case "后台学习计划表": - getSubTask(xssfWorkbook, subTaskCell, taskDetail,taskDetails,proMembers); + getSubTask(xssfWorkbook, subTaskCell, taskDetail,taskDetails,proMembers,deliver); break; case "硬件学习计划表": - getSubTask(xssfWorkbook, subTaskCell, taskDetail,taskDetails,proMembers); + getSubTask(xssfWorkbook, subTaskCell, taskDetail,taskDetails,proMembers,deliver); break; case "方圆学习计划表": - getSubTask(xssfWorkbook, subTaskCell, taskDetail,taskDetails,proMembers); + getSubTask(xssfWorkbook, subTaskCell, taskDetail,taskDetails,proMembers,deliver); break; case "全体学习计划表": - getSubTask(xssfWorkbook, subTaskCell, taskDetail,taskDetails,proMembers); + getSubTask(xssfWorkbook, subTaskCell, taskDetail,taskDetails,proMembers,deliver); break; default: throw new BaseException(CodeEnum.WBS_SUB_TASK_ANALYSIS.addMsg(wbsSheet.getSheetName()+i)); } + }else{ + //不是分组任务,直接添加交付物 + readDeliverSheet(deliver,xssfWorkbook,taskDetail.getId()); } //添加任务 proTaskDetailService.saveTaskDetail(taskDetail); @@ -782,55 +776,24 @@ public class ExcelService implements IExcelService { taskDetails.add(endTask); } - public void saveProTaskSubTime(List taskDetails) throws Exception { - if (CollectionUtil.isNotEmpty(taskDetails)) { - for (ProTaskDetail taskDetail : taskDetails) { - //虚拟任务或一级任务不拆分 - if (taskDetail.getVirtual() == WebConstant.TASK_VIRTUAL.Virtual.value || taskDetail.getLevel() == 1) { - continue; - } - //cycle为空或者组任务,只加一条数据 - if (StrUtil.isEmpty(taskDetail.getCycle()) || taskDetail.getHasGroup() == 1) { - ProTaskSubTime proTaskSubTime = new ProTaskSubTime(); - proTaskSubTime.setId(snowflake.nextId()); - proTaskSubTime.setTaskDetailId(taskDetail.getId()); - proTaskSubTime.setBeginTime(taskDetail.getBeginTime()); - proTaskSubTime.setEndTime(taskDetail.getEndTime()); - taskSubTimeService.saveProTaskSubTask(proTaskSubTime); - } else { - Date startDate = new Date(taskDetail.getBeginTime()); - Date endDate = new Date(taskDetail.getEndTime()); - List taskDateList = - NatureToDate.generateDates(taskDetail.getCycle(), startDate, endDate); - if (CollectionUtil.isEmpty(taskDateList)) { - return; - } - for (CronConstant.TaskDate taskDate : taskDateList) { - ProTaskSubTime proTaskSubTime = new ProTaskSubTime(); - proTaskSubTime.setId(snowflake.nextId()); - proTaskSubTime.setTaskDetailId(taskDetail.getId()); - proTaskSubTime.setBeginTime(taskDate.getStartDate().getTime()); - proTaskSubTime.setEndTime(taskDate.getEndDate().getTime()); - taskSubTimeService.saveProTaskSubTask(proTaskSubTime); - } - } - } - } - } - + /** + * 读取子任务表 + */ public void getSubTask(XSSFWorkbook xssfWorkbook, String sheetName, ProTaskDetail parentTaskDetail, - List taskDetails, List proMembers) { + List taskDetails, List proMembers,String deliverCell) { XSSFSheet subTaskSheet = xssfWorkbook.getSheet(sheetName); Long startTime = parentTaskDetail.getBeginTime(); if (ObjectUtil.isNotNull(subTaskSheet)) { String str = ExcelUtil.getCellValue(subTaskSheet.getRow(1).getCell(4)); for (int a = 2; a < subTaskSheet.getLastRowNum(); a++) { - String nameCell = ExcelUtil.getCellValue(subTaskSheet.getRow(a).getCell(1));//任务名 - String beginCell = ExcelUtil.getCellValue(subTaskSheet.getRow(a).getCell(2));//开始时间 - String endCell = ExcelUtil.getCellValue(subTaskSheet.getRow(a).getCell(3));//结束时间 - String repeatCell = ExcelUtil.getCellValue(subTaskSheet.getRow(a).getCell(4));//重复时间、相对时间 - String memberCell = StringUtil.replaceComma(ExcelUtil.getCellValue(subTaskSheet.getRow(a).getCell(6)));//成员 - String descriptionCell = ExcelUtil.getCellValue(subTaskSheet.getRow(a).getCell(8));//备注 + String nameCell = ExcelUtil.getCellValue(subTaskSheet.getRow(a).getCell(1)); + String beginCell = ExcelUtil.getCellValue(subTaskSheet.getRow(a).getCell(2)); + String endCell = ExcelUtil.getCellValue(subTaskSheet.getRow(a).getCell(3)); + //重复时间、相对时间 + String repeatCell = ExcelUtil.getCellValue(subTaskSheet.getRow(a).getCell(4)); + String memberCell = StringUtil.replaceComma(ExcelUtil.getCellValue(subTaskSheet.getRow(a).getCell(6))); + //备注 + String descriptionCell = ExcelUtil.getCellValue(subTaskSheet.getRow(a).getCell(8)); if (StrUtil.isNotEmpty(nameCell)) { ProTaskDetail subTask = new ProTaskDetail(); BeanUtil.copyProperties(parentTaskDetail, subTask); @@ -895,6 +858,9 @@ public class ExcelService implements IExcelService { parentTaskDetail.setBeginTime(subTask.getBeginTime()); } startTime = subTask.getEndTime(); + //给每个子任务添加交付物 + readDeliverSheet(deliverCell,xssfWorkbook,subTask.getId()); + proTaskDetailService.saveTaskDetail(subTask); taskDetails.add(subTask); } @@ -906,30 +872,91 @@ public class ExcelService implements IExcelService { } /** - * //读取交付物表 - * - * @param subSheet - * @param taskId + * 分解任务时间 + * @param taskDetails + * @throws Exception + */ + public void saveProTaskSubTime(List taskDetails) throws Exception { + if (CollectionUtil.isNotEmpty(taskDetails)) { + for (ProTaskDetail taskDetail : taskDetails) { + //虚拟任务或一级任务不拆分 + if (taskDetail.getVirtual() == WebConstant.TASK_VIRTUAL.Virtual.value || taskDetail.getLevel() == 1) { + continue; + } + //cycle为空或者组任务,只加一条数据 + if (StrUtil.isEmpty(taskDetail.getCycle()) || taskDetail.getHasGroup() == 1) { + ProTaskSubTime proTaskSubTime = new ProTaskSubTime(); + proTaskSubTime.setId(snowflake.nextId()); + proTaskSubTime.setTaskDetailId(taskDetail.getId()); + proTaskSubTime.setBeginTime(taskDetail.getBeginTime()); + proTaskSubTime.setEndTime(taskDetail.getEndTime()); + taskSubTimeService.saveProTaskSubTask(proTaskSubTime); + } else { + Date startDate = new Date(taskDetail.getBeginTime()); + Date endDate = new Date(taskDetail.getEndTime()); + List taskDateList = + NatureToDate.generateDates(taskDetail.getCycle(), startDate, endDate); + if (CollectionUtil.isEmpty(taskDateList)) { + return; + } + for (CronConstant.TaskDate taskDate : taskDateList) { + ProTaskSubTime proTaskSubTime = new ProTaskSubTime(); + proTaskSubTime.setId(snowflake.nextId()); + proTaskSubTime.setTaskDetailId(taskDetail.getId()); + proTaskSubTime.setBeginTime(taskDate.getStartDate().getTime()); + proTaskSubTime.setEndTime(taskDate.getEndDate().getTime()); + taskSubTimeService.saveProTaskSubTask(proTaskSubTime); + } + } + } + } + } + + /** + * 读取交付物表 */ - private void readSubSheet(XSSFSheet subSheet, Long taskId) { - for (int i = 2; i <= subSheet.getLastRowNum(); i++) { - String deliver = ExcelUtil.getCellValue(subSheet.getRow(i).getCell(1)); - if (StrUtil.isNotEmpty(deliver)) { + private void readDeliverSheet(String deliverCell,XSSFWorkbook xssfWorkbook, Long taskId) { + if (StrUtil.isNotEmpty(deliverCell)) { + String str = ""; + if (deliverCell.length() > 4) { + str = deliverCell.substring(0, 3); + } + if ("关联表".equals(str)) { + String subStr = deliverCell.substring(4); + XSSFSheet subSheet = xssfWorkbook.getSheet(subStr); + for (int i = 2; i <= subSheet.getLastRowNum(); i++) { + String deliver = ExcelUtil.getCellValue(subSheet.getRow(i).getCell(1)); + if (StrUtil.isNotEmpty(deliver)) { + ProTaskDeliver taskDeliver = new ProTaskDeliver(); + taskDeliver.setId(snowflake.nextId()); + taskDeliver.setName(deliver); + taskDeliver.setTaskDetailId(taskId); + taskDeliver.setIsInput(0); + taskDeliver.setIsFinal(0); + if (i == subSheet.getLastRowNum()) { + taskDeliver.setIsFinal(1); + } + taskDeliverService.saveDeliver(taskDeliver); + } + } + } else { ProTaskDeliver taskDeliver = new ProTaskDeliver(); taskDeliver.setId(snowflake.nextId()); - taskDeliver.setName(deliver); taskDeliver.setTaskDetailId(taskId); + taskDeliver.setName(deliverCell); taskDeliver.setIsInput(0); - taskDeliver.setIsFinal(0); - if (i == subSheet.getLastRowNum()) { - taskDeliver.setIsFinal(1); - } + taskDeliver.setIsFinal(1); taskDeliverService.saveDeliver(taskDeliver); } } } - //插件 + /** + * 读取插件 + * @param xssfWorkbook + * @param taskDetails + * @param proRoles + */ private void readPlugin(XSSFWorkbook xssfWorkbook, List taskDetails, List proRoles) { SysPluginExample pluginExample = new SysPluginExample(); pluginExample.clear(); @@ -991,6 +1018,13 @@ public class ExcelService implements IExcelService { } } + /** + * 返回信息 + * @param currentUserId + * @param sysProject + * @return + * @throws Exception + */ public ProjectVo.ProjectInfo selectByProjectId(Long currentUserId, SysProject sysProject) throws Exception { //返回参数 ProjectVo.ProjectInfo projectInfo = new ProjectVo.ProjectInfo(); diff --git a/tall/src/main/java/com/ccsens/tall/service/IMessageService.java b/tall/src/main/java/com/ccsens/tall/service/IMessageService.java index 390324bb..78adaba9 100644 --- a/tall/src/main/java/com/ccsens/tall/service/IMessageService.java +++ b/tall/src/main/java/com/ccsens/tall/service/IMessageService.java @@ -3,13 +3,14 @@ package com.ccsens.tall.service; import com.ccsens.tall.bean.dto.message.DeliverMessageWithCheckerDto; import com.ccsens.tall.bean.dto.message.DeliverMessageWithDeleteDto; import com.ccsens.tall.bean.dto.message.DeliverMessageWithUploadDto; +import com.ccsens.util.bean.message.common.InMessage; public interface IMessageService { - void sendDeliverMessageWithUpload(DeliverMessageWithUploadDto uploadMessage) throws Exception; + void sendDeliverMessageWithUpload(InMessage inMessage) throws Exception; //同步消息——Start void sendSyncMessageWithStart(Long currentUserId, Long projectId, Long roleId, Long taskId, Long time, Long duration) throws Exception; - void sendDeliverMessageWithChecker(DeliverMessageWithCheckerDto checkerDto)throws Exception; + void sendDeliverMessageWithChecker(InMessage inMessage)throws Exception; - void sendDeliverMessageWithDelete(DeliverMessageWithDeleteDto deleteMessage)throws Exception; + void sendDeliverMessageWithDelete(InMessage inMessage)throws Exception; } 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 35e804d0..a8db51b3 100644 --- a/tall/src/main/java/com/ccsens/tall/service/ITaskSubTimeService.java +++ b/tall/src/main/java/com/ccsens/tall/service/ITaskSubTimeService.java @@ -7,7 +7,7 @@ import com.ccsens.tall.bean.vo.TaskVo; public interface ITaskSubTimeService { void saveProTaskSubTask(ProTaskSubTime proTaskSubTime); - void finishTask(Long currentUserId, TaskDto.TaskSubTimeId subTimeId) throws Exception; + TaskVo.NormalTask finishTask(Long currentUserId, TaskDto.TaskSubTimeId subTimeId) throws Exception; void startTask(Long currentUserId, TaskDto.StartTask startTask) throws Exception; diff --git a/tall/src/main/java/com/ccsens/tall/service/MessageService.java b/tall/src/main/java/com/ccsens/tall/service/MessageService.java index 7c62e24a..d06af1eb 100644 --- a/tall/src/main/java/com/ccsens/tall/service/MessageService.java +++ b/tall/src/main/java/com/ccsens/tall/service/MessageService.java @@ -5,6 +5,7 @@ import cn.hutool.core.util.ObjectUtil; import com.ccsens.tall.bean.dto.message.*; import com.ccsens.tall.bean.vo.MemberVo; import com.ccsens.util.JacksonUtil; +import com.ccsens.util.bean.message.common.InMessage; import com.ccsens.util.config.RabbitMQConfig; import lombok.extern.slf4j.Slf4j; import org.springframework.amqp.core.AmqpTemplate; @@ -65,27 +66,26 @@ public class MessageService implements IMessageService{ } @Override - public void sendDeliverMessageWithUpload(DeliverMessageWithUploadDto uploadMessage) throws Exception { - System.out.println(JacksonUtil.beanToJson(message)); + public void sendDeliverMessageWithUpload(InMessage inMessage) throws Exception { + System.out.println(JacksonUtil.beanToJson(inMessage)); //FixMe 发送到消息队列 - rabbitTemplate.convertAndSend(RabbitMQConfig.TALL_MESSAGE_1, - JacksonUtil.beanToJson(message)); + rabbitTemplate.convertAndSend(RabbitMQConfig.TALL_MESSAGE_1,JacksonUtil.beanToJson(inMessage)); } @Override - public void sendDeliverMessageWithChecker(DeliverMessageWithCheckerDto message) throws Exception { - System.out.println(JacksonUtil.beanToJson(message)); + public void sendDeliverMessageWithChecker(InMessage inMessage) throws Exception { + System.out.println(JacksonUtil.beanToJson(inMessage)); //FixMe 发送到消息队列 rabbitTemplate.convertAndSend(RabbitMQConfig.TALL_MESSAGE_1, - JacksonUtil.beanToJson(message)); + JacksonUtil.beanToJson(inMessage)); } @Override - public void sendDeliverMessageWithDelete(DeliverMessageWithDeleteDto message) throws Exception { - System.out.println(JacksonUtil.beanToJson(message)); + public void sendDeliverMessageWithDelete(InMessage inMessage) throws Exception { + System.out.println(JacksonUtil.beanToJson(inMessage)); //FixMe 发送到消息队列 rabbitTemplate.convertAndSend(RabbitMQConfig.TALL_MESSAGE_1 , - JacksonUtil.beanToJson(message)); + JacksonUtil.beanToJson(inMessage)); } } diff --git a/tall/src/main/java/com/ccsens/tall/service/ProRoleService.java b/tall/src/main/java/com/ccsens/tall/service/ProRoleService.java index 8fb92afb..5587fbcf 100644 --- a/tall/src/main/java/com/ccsens/tall/service/ProRoleService.java +++ b/tall/src/main/java/com/ccsens/tall/service/ProRoleService.java @@ -26,6 +26,8 @@ public class ProRoleService implements IProRoleService { @Autowired private ProRoleDao proRoleDao; @Autowired + private ProShowDao proShowDao; + @Autowired private ProMemberDao proMemberDao; @Autowired private ProMemberRoleDao memberRoleDao; @@ -58,13 +60,29 @@ public class ProRoleService implements IProRoleService { */ @Override public List getRolesByProjectIdAndUserId(Long projectId, Long currentUserId) throws Exception { + List memberRoleList = null; - //1.查询二级角色(项目经理+项目成员+mvp) - memberRoleList = getRealMemberRolesByProjectId(projectId); //获取用户在项目中的角色 List roleList = proMemberService.selectRolesByUserIdAndProjectId(currentUserId, projectId); + //1.查询二级角色(项目经理+项目成员+mvp) + memberRoleList = getRealMemberRolesByProjectId(projectId); if (CollectionUtil.isNotEmpty(memberRoleList)) { + //获取项目的配置(是否展示mvp) + ProShowExample showExample = new ProShowExample(); + showExample.createCriteria().andProjectIdEqualTo(projectId); + List showList = proShowDao.selectByExample(showExample); + if(CollectionUtil.isNotEmpty(showList)){ + if(showList.get(0).getIsShowMvp() == 0){ + for(int i = 0 ; i < memberRoleList.size() ; i++){ + ProjectVo.RoleInfo roleInfo = memberRoleList.get(i); + if(roleInfo.getName().equalsIgnoreCase(WebConstant.ROLE_NAME.MVP.phase)){ + memberRoleList.remove(i); + break; + } + } + } + } if (CollectionUtil.isNotEmpty(roleList)) { //用户是否只是关注者 Boolean isAttention = false; 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 949a7c24..7cdbfeea 100644 --- a/tall/src/main/java/com/ccsens/tall/service/ProTaskDetailService.java +++ b/tall/src/main/java/com/ccsens/tall/service/ProTaskDetailService.java @@ -394,7 +394,13 @@ public class ProTaskDetailService implements IProTaskDetailService { //检查人信息 taskDeliverByMVP.setChecker(proRoleService.selectRoleByCheckOrExecutor(task.getCheckerRole())); //查找任务下的交付物 - taskDeliverByMVP.setDelivers(taskDeliverService.selectDeliverOrInputByTask(task.getId(), 0)); + if(task.getHasGroup() == 0){ + taskDeliverByMVP.setDelivers(taskDeliverService.selectDeliverOrInputByTask(task.getId(), 0)); + }else { + Long now = System.currentTimeMillis(); + TaskVo.TaskIdAndSubTimeIdByParentIdAndTime taskAndSubTime = taskDetailDao.selectSubTimeByTaskParentIdAndTime(task.getId(), now); + taskDeliverByMVP.setDelivers(taskDeliverService.selectDeliverOrInputByTask(taskAndSubTime.getTaskId(), 0)); + } //查找任务的输入文档 taskDeliverByMVP.setInputs(taskDeliverService.selectDeliverOrInputByTask(task.getId(), 1)); @@ -424,56 +430,101 @@ public class ProTaskDetailService implements IProTaskDetailService { TaskVo.NormalTask taskDetail = null; if (ObjectUtil.isNotNull(subTime)) { taskDetail = taskDetailDao.selectTaskByTaskId(subTime.getId(), subTime.getTaskDetailId()); - //修改任务的完成状态 - ProSubTimeMember subTimeMember = getProcessByUserIdAndTask(currentUserId, taskDetail.getId()); - if (ObjectUtil.isNotNull(subTimeMember)) { - taskDetail.setProcess(subTimeMember.getComplatedStatus()); - taskDetail.setRealEndTime(subTimeMember.getRealFinishTime()); - } - //显示的日期格式和时长格式 - if(ObjectUtil.isNotNull(proShow)){ - taskDetail.setShowTimeFormat(proShow.getTimeShow()); - if(proShow.getDuration() == 1){ - taskDetail.setDuration(null); + if(ObjectUtil.isNotNull(taskDetail)) { + //修改任务的完成状态 + ProSubTimeMember subTimeMember = getProcessByUserIdAndTask(currentUserId, taskDetail.getId()); + if (ObjectUtil.isNotNull(subTimeMember)) { + taskDetail.setProcess(subTimeMember.getComplatedStatus()); + taskDetail.setRealEndTime(subTimeMember.getRealFinishTime()); } - }else { - taskDetail.setShowTimeFormat("MM-dd HH:mm"); - } - //添加项目信息和插件信息 - normalTaskAddPlugin(currentUserId, subTime.getTaskDetailId(), taskDetail); - if (ObjectUtil.isNotNull(taskDetail)) { + //显示的日期格式和时长格式 + if (ObjectUtil.isNotNull(proShow)) { + taskDetail.setShowTimeFormat(proShow.getTimeShow()); + if (proShow.getDuration() == 1) { + taskDetail.setDuration(null); + } + } else { + taskDetail.setShowTimeFormat("MM-dd HH:mm"); + } + //添加项目信息和插件信息 + normalTaskAddPlugin(currentUserId, subTime.getTaskDetailId(), taskDetail); List groupTaskList = new ArrayList<>(); - groupTaskList = taskDetailDao.selectTaskByParentId(projectId, taskDetail.getDetailId()); - if (CollectionUtil.isNotEmpty(groupTaskList)) { - for (TaskVo.NormalTask groupTask : groupTaskList) { - //修改任务的完成状态 - ProSubTimeMember proSubTimeMember = getProcessByUserIdAndTask(currentUserId, groupTask.getId()); - if (ObjectUtil.isNotNull(proSubTimeMember)) { - groupTask.setProcess(proSubTimeMember.getComplatedStatus()); - groupTask.setRealEndTime(proSubTimeMember.getRealFinishTime()); - } - //显示的日期格式和时长格式 - if(ObjectUtil.isNotNull(proShow)){ - groupTask.setShowTimeFormat(proShow.getTimeShow()); - if(proShow.getDuration() == 1){ - groupTask.setDuration(null); + + //获取此任务的子任务 + ProTaskDetailExample detailExample = new ProTaskDetailExample(); + detailExample.createCriteria().andParentIdEqualTo(taskDetail.getDetailId()); + List detailList = taskDetailDao.selectByExample(detailExample); + if(CollectionUtil.isNotEmpty(detailList)){ + for(ProTaskDetail detail : detailList){ + TaskVo.NormalTask groupTask = null; + Long subTimeId = taskDeliverService.isTaskOrSubTime(detail.getId()); + if(ObjectUtil.isNotNull(subTimeId)){ + groupTask = taskDetailDao.selectTaskByTaskId(subTimeId, detail.getId()); + if(ObjectUtil.isNotNull(groupTask)){ + //修改任务的完成状态 + ProSubTimeMember proSubTimeMember = getProcessByUserIdAndTask(currentUserId, groupTask.getId()); + if (ObjectUtil.isNotNull(proSubTimeMember)) { + groupTask.setProcess(proSubTimeMember.getComplatedStatus()); + groupTask.setRealEndTime(proSubTimeMember.getRealFinishTime()); + } + //显示的日期格式和时长格式 + if(ObjectUtil.isNotNull(proShow)){ + groupTask.setShowTimeFormat(proShow.getTimeShow()); + if(proShow.getDuration() == 1){ + groupTask.setDuration(null); + } + }else { + groupTask.setShowTimeFormat("MM-dd HH:mm"); + } + //添加项目信息和插件信息 + normalTaskAddPlugin(currentUserId, groupTask.getDetailId(), groupTask); + //修改返回时子任务的名字(“任务名+(xx和XX)”) + if (detail.getAllMember() == 0) { + groupTask.setName(updateSubTaskName(groupTask.getDetailId(), groupTask.getName())); + } + groupTaskList.add(groupTask); } - }else { - groupTask.setShowTimeFormat("MM-dd HH:mm"); - } - //添加项目信息和插件信息 - normalTaskAddPlugin(currentUserId, groupTask.getDetailId(), groupTask); - //修改返回时子任务的名字(“任务名+(xx和XX)”) - ProTaskDetail proTaskDetail = taskDetailDao.selectByPrimaryKey(groupTask.getDetailId()); - if (proTaskDetail.getAllMember() == 0) { - groupTask.setName(updateSubTaskName(groupTask.getDetailId(), groupTask.getName())); } - } taskDetail.setSecondTasks(new ArrayList<>()); taskDetail.getSecondTasks().addAll(groupTaskList); } + } +// if (ObjectUtil.isNotNull(taskDetail)) { +// +// List groupTaskList = new ArrayList<>(); +// groupTaskList = taskDetailDao.selectTaskByParentId(projectId, taskDetail.getDetailId()); +// if (CollectionUtil.isNotEmpty(groupTaskList)) { +// for (TaskVo.NormalTask groupTask : groupTaskList) { +// //修改任务的完成状态 +// ProSubTimeMember proSubTimeMember = getProcessByUserIdAndTask(currentUserId, groupTask.getId()); +// if (ObjectUtil.isNotNull(proSubTimeMember)) { +// groupTask.setProcess(proSubTimeMember.getComplatedStatus()); +// groupTask.setRealEndTime(proSubTimeMember.getRealFinishTime()); +// } +// //显示的日期格式和时长格式 +// if(ObjectUtil.isNotNull(proShow)){ +// groupTask.setShowTimeFormat(proShow.getTimeShow()); +// if(proShow.getDuration() == 1){ +// groupTask.setDuration(null); +// } +// }else { +// groupTask.setShowTimeFormat("MM-dd HH:mm"); +// } +// //添加项目信息和插件信息 +// normalTaskAddPlugin(currentUserId, groupTask.getDetailId(), groupTask); +// //修改返回时子任务的名字(“任务名+(xx和XX)”) +// ProTaskDetail proTaskDetail = taskDetailDao.selectByPrimaryKey(groupTask.getDetailId()); +// if (proTaskDetail.getAllMember() == 0) { +// groupTask.setName(updateSubTaskName(groupTask.getDetailId(), groupTask.getName())); +// } +// +// } +// taskDetail.setSecondTasks(new ArrayList<>()); +// taskDetail.getSecondTasks().addAll(groupTaskList); +// } +// } } return taskDetail; } diff --git a/tall/src/main/java/com/ccsens/tall/service/ProjectService.java b/tall/src/main/java/com/ccsens/tall/service/ProjectService.java index 86c26f2a..f5f10094 100644 --- a/tall/src/main/java/com/ccsens/tall/service/ProjectService.java +++ b/tall/src/main/java/com/ccsens/tall/service/ProjectService.java @@ -32,6 +32,8 @@ public class ProjectService implements IProjectService { @Autowired private SysProjectDao sysProjectDao; @Autowired + private ProShowDao proShowDao; + @Autowired private ProRoleExcludeDao roleExcludeDao; @Autowired private ProRoleDao proRoleDao; @@ -146,35 +148,6 @@ public class ProjectService implements IProjectService { //查找此用户关注的项目 List projectList = sysProjectDao.findProjectIdByUserId(currentUserId, startMillisTime, endMillisTime); projectInfoList = projectInfoByProject(projectList, currentUserId); -// if(CollectionUtil.isNotEmpty(projectList)){ -// ProjectVo.ProjectInfo projectInfo = null; -// for(SysProject project:projectList){ -// projectInfo = new ProjectVo.ProjectInfo(); -// BeanUtil.copyProperties(project,projectInfo); -// projectInfo.setCreator(false); -// projectInfo.setRoles(new ArrayList<>()); -// //是否是创建者 -// if(project.getCreatorId().longValue()==currentUserId.longValue()){ -// projectInfo.getRoles().add(WebConstant.ROLE_NAME.Creator.phase); -// projectInfo.setCreator(true); -// } -// //本用户在项目中的角色 -// List proRoles = proRoleService.getProRoleByProjectIdAndUserId(project.getId(), currentUserId); -// if (CollectionUtil.isNotEmpty(proRoles)) { -// for (ProRole proRole : proRoles) { -// projectInfo.getRoles().add(proRole.getDescription()); -// } -// } -// if(CollectionUtil.isEmpty(projectInfo.getRoles())){ -// projectInfo.getRoles().add(WebConstant.ROLE_NAME.Attention.phase); -// } -// //用户在项目中的最高权限 -// int power = proRoleService.selectPowerByRoleName(projectInfo.getRoles()); -// projectInfo.setPower(power); -// -// projectInfoList.add(projectInfo); -// } -// } return projectInfoList; } @@ -205,6 +178,21 @@ public class ProjectService implements IProjectService { //用户在项目中的最高权限 int power = proRoleService.selectPowerByRoleName(currentUserId, project.getId()); projectInfo.setPower(power); + //获取项目配置 + ProShowExample proShowExample = new ProShowExample(); + proShowExample.createCriteria().andProjectIdEqualTo(project.getId()); + List proShowList = proShowDao.selectByExample(proShowExample); + if (CollectionUtil.isNotEmpty(proShowList)) { + ProjectVo.ProjectConfig projectConfig = new ProjectVo.ProjectConfig(); + projectConfig.setSlide(proShowList.get(0).getSlide()); + projectConfig.setFilter(proShowList.get(0).getFilter()); + projectInfo.setProjectConfig(projectConfig); + }else { + ProjectVo.ProjectConfig projectConfig = new ProjectVo.ProjectConfig(); + projectConfig.setFilter(0); + projectConfig.setSlide(0); + projectInfo.setProjectConfig(projectConfig); + } projectInfoList.add(projectInfo); } @@ -247,12 +235,17 @@ public class ProjectService implements IProjectService { //获取项目配置 ProShowExample proShowExample = new ProShowExample(); proShowExample.createCriteria().andProjectIdEqualTo(projectId); - List proShowList = new ArrayList<>(); + List proShowList = proShowDao.selectByExample(proShowExample); if (CollectionUtil.isNotEmpty(proShowList)) { ProjectVo.ProjectConfig projectConfig = new ProjectVo.ProjectConfig(); projectConfig.setSlide(proShowList.get(0).getSlide()); projectConfig.setFilter(proShowList.get(0).getFilter()); projectInfo.setProjectConfig(projectConfig); + }else { + ProjectVo.ProjectConfig projectConfig = new ProjectVo.ProjectConfig(); + projectConfig.setSlide(0); + projectConfig.setFilter(0); + projectInfo.setProjectConfig(projectConfig); } return projectInfo; diff --git a/tall/src/main/java/com/ccsens/tall/service/TaskDeliverService.java b/tall/src/main/java/com/ccsens/tall/service/TaskDeliverService.java index 8908a25d..f2fdae70 100644 --- a/tall/src/main/java/com/ccsens/tall/service/TaskDeliverService.java +++ b/tall/src/main/java/com/ccsens/tall/service/TaskDeliverService.java @@ -15,14 +15,18 @@ import com.ccsens.tall.bean.vo.ProjectVo; import com.ccsens.tall.bean.vo.TaskVo; import com.ccsens.tall.persist.dao.*; import com.ccsens.util.*; +import com.ccsens.util.bean.message.common.InMessage; +import com.ccsens.util.config.RabbitMQConfig; import com.ccsens.util.exception.BaseException; import lombok.extern.slf4j.Slf4j; +import org.springframework.amqp.core.AmqpTemplate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import java.io.File; +import java.math.BigDecimal; import java.util.*; @Slf4j @@ -55,6 +59,8 @@ public class TaskDeliverService implements ITaskDeliverService { private IMessageService messageService; @Autowired private Snowflake snowflake; + @Autowired + private AmqpTemplate rabbitTemplate; @Override public void saveDeliver(ProTaskDeliver taskDeliver) { @@ -232,11 +238,18 @@ public class TaskDeliverService implements ITaskDeliverService { } //消息的内容 + if (CollectionUtil.isNotEmpty(uploadDeliver.getCheckerIdList())) { + for (Long postLogCheckerId : uploadDeliver.getCheckerIdList()) { + userIdList.addAll(userService.selectUserIdByRoleId(postLogCheckerId)); + } + } + Set userIdSet = new HashSet<>(); if (CollectionUtil.isNotEmpty(userIdList)) { HashSet h = new HashSet<>(userIdList); userIdList.clear(); userIdList.addAll(h); for (Long userId : userIdList) { + userIdSet.add(userId.toString()); messageUser = new BaseMessageDto.MessageUser(); messageUser.setUserId(userId); messageUserList.add(messageUser); @@ -258,8 +271,12 @@ public class TaskDeliverService implements ITaskDeliverService { uploadMessageData.setFile(uploadDeliver.getFileInfo()); uploadMessage.setData(uploadMessageData); - uploadMessage.setReceivers(messageUserList); - messageService.sendDeliverMessageWithUpload(uploadMessage); + + String s = JacksonUtil.beanToJson(uploadMessage); + InMessage inMessage = InMessage.newToUserMessage(currentUserId.toString(),userIdSet,null,null,s); + String j = JacksonUtil.beanToJson(inMessage); + System.out.println(j); + messageService.sendDeliverMessageWithUpload(inMessage); } else { throw new BaseException(CodeEnum.IS_NOT_EXECUTOR); } @@ -277,15 +294,20 @@ public class TaskDeliverService implements ITaskDeliverService { Long endTime = DateUtil.getYMD(cn.hutool.core.date.DateUtil.tomorrow()).getTime(); //判断传入的信息是详情id还是subTimeId ProTaskSubTime taskSubTime = taskSubTimeDao.selectByPrimaryKey(id); - ProTaskDetail taskDetail = taskDetailDao.selectByPrimaryKey(id); - if (ObjectUtil.isNotNull(taskSubTime)) { + if(ObjectUtil.isNotNull(taskSubTime)){ subTimeId = taskSubTime.getId(); - } else if (ObjectUtil.isNotNull(taskDetail)) { - Long now = System.currentTimeMillis(); - subTimeId = taskDetailDao.selectSubTimeByTaskIdAndTime(taskDetail.getId(), now); -// if(ObjectUtil.isNotNull(subTime)){ -// subTimeId = subTime.getId(); -// } + }else { + ProTaskDetail taskDetail = taskDetailDao.selectByPrimaryKey(id); + if(ObjectUtil.isNotNull(taskDetail)){ + Long now = System.currentTimeMillis(); + if(taskDetail.getHasGroup() == 0){ + subTimeId = taskDetailDao.selectSubTimeByTaskIdAndTime(taskDetail.getId(), now); + } + else { + TaskVo.TaskIdAndSubTimeIdByParentIdAndTime taskAndSubTime = taskDetailDao.selectSubTimeByTaskParentIdAndTime(taskDetail.getId(), now); + subTimeId = taskAndSubTime.getSubTimeId(); + } + } } return subTimeId; } @@ -433,7 +455,10 @@ public class TaskDeliverService implements ITaskDeliverService { List fileIds = taskDeliverDao.selectFileIdByDeliverId(deliver.getId(), subTimeId); if (CollectionUtil.isNotEmpty(fileIds)) { for (DeliverVo.FilePath filePath : fileIds) { - filePath.setDeleteTime(filePath.getUpdateTime().getTime()); + //删除时间 + if("1".equalsIgnoreCase(filePath.getIsHistory())){ + filePath.setDeleteTime(filePath.getUpdateTime().getTime()); + } //修改文件路径为可下载路径 filePath.setUrl(WebConstant.TEST_URL_BASE + filePath.getUrl()); if (ObjectUtil.isNotNull(filePath.getUploaderId())) { @@ -499,6 +524,7 @@ public class TaskDeliverService implements ITaskDeliverService { List messageUserList = new ArrayList<>(); BaseMessageDto.MessageUser messageUser = null; ProRole checkRole = null; + Set userIdSet = new HashSet<>(); //查找该用户在此项目的角色 ProTaskDeliver deliver = taskDeliverDao.selectByPrimaryKey(checkDeliver.getDeliverId()); @@ -531,9 +557,7 @@ public class TaskDeliverService implements ITaskDeliverService { } } } - messageUser = new BaseMessageDto.MessageUser(); - messageUser.setUserId(postLog.getUserId()); - messageUserList.add(messageUser); + userIdSet.add(postLog.getUserId().toString()); checkRole = role; // } } @@ -563,8 +587,10 @@ public class TaskDeliverService implements ITaskDeliverService { checkerDtoData.setIsChecker(checkDeliver.getCheckStatus()); checkerDto.setData(checkerDtoData); - checkerDto.setReceivers(messageUserList); - messageService.sendDeliverMessageWithChecker(checkerDto); + String s = JacksonUtil.beanToJson(checkerDto); + InMessage inMessage = InMessage.newToUserMessage(currentUserId.toString(),userIdSet,null,null,s); + + messageService.sendDeliverMessageWithChecker(inMessage); //检查完,返回数据 DeliverVo.DeliverInfo deliverInfo = selectDeliverInfo(currentUserId, deliver.getId(), checkDeliver.getTaskId()); @@ -719,11 +745,13 @@ public class TaskDeliverService implements ITaskDeliverService { ProTaskDetail task = taskDetailDao.selectByPrimaryKey(deliver.getTaskDetailId()); ProRole role = proRoleDao.selectByPrimaryKey(task.getExecutorRole()); //发送消息 + Set userIdSet = new HashSet<>(); if (CollectionUtil.isNotEmpty(userIdList)) { HashSet h = new HashSet<>(userIdList); userIdList.clear(); userIdList.addAll(h); for (Long userId : userIdList) { + userIdSet.add(userId.toString()); messageUser = new BaseMessageDto.MessageUser(); messageUser.setUserId(userId); messageUserList.add(messageUser); @@ -748,8 +776,10 @@ public class TaskDeliverService implements ITaskDeliverService { deleteMessageData.setUserId(currentUserId); deleteMessage.setData(deleteMessageData); - deleteMessage.setReceivers(messageUserList); - messageService.sendDeliverMessageWithDelete(deleteMessage); + String s = JacksonUtil.beanToJson(deleteMessage); + InMessage inMessage = InMessage.newToUserMessage(currentUserId.toString(),userIdSet,null,null,s); + + messageService.sendDeliverMessageWithDelete(inMessage); } } 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 b12ae7f1..5e05b334 100644 --- a/tall/src/main/java/com/ccsens/tall/service/TaskSubTimeService.java +++ b/tall/src/main/java/com/ccsens/tall/service/TaskSubTimeService.java @@ -67,7 +67,7 @@ public class TaskSubTimeService implements ITaskSubTimeService { * @throws Exception */ @Override - public void finishTask(Long currentUserId, TaskDto.TaskSubTimeId subTimeId) throws Exception { + public TaskVo.NormalTask finishTask(Long currentUserId, TaskDto.TaskSubTimeId subTimeId) throws Exception { //查找taskSubTime ProTaskSubTime taskSubTime = taskSubTimeDao.selectByPrimaryKey(subTimeId.getId()); if(ObjectUtil.isNull(taskSubTime)){ @@ -152,6 +152,9 @@ public class TaskSubTimeService implements ITaskSubTimeService { proSubTimeMemberDao.insertSelective(subTimeMember); } } + //返回的任务详细信息 + TaskVo.NormalTask normalTask = taskDetailService.getTaskInfoByTaskId(currentUserId,taskDetail.getProjectId(),subTimeId.getId()); + return normalTask; } /** * 该成员是否完成了此任务(返回成员对任务的完成情况) diff --git a/tall/src/main/java/com/ccsens/tall/web/DebugController.java b/tall/src/main/java/com/ccsens/tall/web/DebugController.java index 6481fa42..a801cf94 100644 --- a/tall/src/main/java/com/ccsens/tall/web/DebugController.java +++ b/tall/src/main/java/com/ccsens/tall/web/DebugController.java @@ -2,6 +2,7 @@ package com.ccsens.tall.web; import com.ccsens.util.JacksonUtil; import com.ccsens.util.JsonResponse; +import com.ccsens.util.bean.message.client.AuthMessage; import com.ccsens.util.bean.message.common.InMessage; import com.ccsens.util.bean.message.common.MessageConstant; import com.ccsens.util.bean.message.common.ServerMessage; @@ -16,6 +17,8 @@ import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; import javax.servlet.http.HttpServletRequest; +import java.util.HashSet; +import java.util.Set; @Api(tags = "DEBUG" , description = "DebugController | ") @RestController @@ -40,14 +43,25 @@ public class DebugController { }) @RequestMapping(value="message",method = RequestMethod.GET,produces = {"application/json;charset=UTF-8"}) public JsonResponse messageTest(HttpServletRequest request) throws Exception { - ServerMessage serverMessage = new ServerMessage(); - serverMessage.setType("Ping"); - InMessage inMessage = InMessage.newToServerMessage(MessageConstant.DomainType.Server,serverMessage); +// ServerMessage serverMessage = new ServerMessage(); +// serverMessage.setType("Ping"); +// InMessage inMessage = InMessage.newToServerMessage(MessageConstant.DomainType.Server,serverMessage); +// String j = JacksonUtil.beanToJson(inMessage); +// System.out.println(j); + + String l = "测试222"; + String to = "1175954520199532544"; + Set s = new HashSet<>(); + s.add(to); + + + InMessage inMessage = InMessage.newToUserMessage("1175954520199532544",s,null,null,l); String j = JacksonUtil.beanToJson(inMessage); System.out.println(j); + //FixMe 发送到消息队列 rabbitTemplate.convertAndSend(RabbitMQConfig.TALL_MESSAGE_1,j); - return JsonResponse.newInstance().ok(j); + return JsonResponse.newInstance().ok(); } } 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 86b32c7b..7202f8fb 100644 --- a/tall/src/main/java/com/ccsens/tall/web/TaskController.java +++ b/tall/src/main/java/com/ccsens/tall/web/TaskController.java @@ -28,11 +28,11 @@ public class TaskController { @ApiImplicitParams({ }) @RequestMapping(value = "finish", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) - public JsonResponse finishTask(HttpServletRequest request, @Validated @RequestBody TaskDto.TaskSubTimeId task) throws Exception { + public JsonResponse finishTask(HttpServletRequest request, @Validated @RequestBody TaskDto.TaskSubTimeId task) throws Exception { Long currentUserId = Long.valueOf(((Claims) request.getAttribute(WebConstant.REQUEST_KEY_CLAIMS)).getSubject()); - subTimeService.finishTask(currentUserId,task); - return JsonResponse.newInstance().ok(); + TaskVo.NormalTask normalTask = subTimeService.finishTask(currentUserId,task); + return JsonResponse.newInstance().ok(normalTask); } @ApiOperation(value = "开始节点",notes = "") diff --git a/tall/src/main/java/com/ccsens/tall/web/UserController.java b/tall/src/main/java/com/ccsens/tall/web/UserController.java index 1529bf40..fc01067a 100644 --- a/tall/src/main/java/com/ccsens/tall/web/UserController.java +++ b/tall/src/main/java/com/ccsens/tall/web/UserController.java @@ -194,9 +194,9 @@ public class UserController { @ApiImplicitParam(name="token",value = "token",required = true,paramType = "query") }) @RequestMapping(value = "claims",method = RequestMethod.GET,produces = {"application/json;charset=UTF-8"}) - public JsonResponse getNodeMessage(@RequestParam(required = true) String token) throws Exception { + public String getNodeMessage(@RequestParam(required = true) String token) throws Exception { //验证token是否有效 - UserVo.TokenToUserId tokenToUserId = new UserVo.TokenToUserId(); + String userId = null; Claims claims = null; boolean flag = false; if (token != null) { @@ -213,9 +213,9 @@ public class UserController { } } if(flag){ - tokenToUserId.setId(Long.valueOf(claims.getSubject())); + userId = claims.getSubject(); } - return JsonResponse.newInstance().ok(tokenToUserId); + return userId; } @ApiOperation(value = "根据token字符串获取userId",notes = "") diff --git a/tall/src/main/resources/mapper_dao/TaskDetailDao.xml b/tall/src/main/resources/mapper_dao/TaskDetailDao.xml index e8430ad6..0f25b165 100644 --- a/tall/src/main/resources/mapper_dao/TaskDetailDao.xml +++ b/tall/src/main/resources/mapper_dao/TaskDetailDao.xml @@ -38,6 +38,11 @@ + + + + + + + DELETE diff --git a/tall/src/main/resources/mapper_raw/ProShowMapper.xml b/tall/src/main/resources/mapper_raw/ProShowMapper.xml index fd1f746a..dff2ce20 100644 --- a/tall/src/main/resources/mapper_raw/ProShowMapper.xml +++ b/tall/src/main/resources/mapper_raw/ProShowMapper.xml @@ -8,6 +8,8 @@ + + @@ -71,7 +73,8 @@ - id, project_id, slide, filter, time_show, duration, created_at, updated_at, rec_status + id, project_id, slide, filter, time_show, duration, is_show_mvp, create_task, created_at, + updated_at, rec_status