Browse Source

上传交付物信息

master
zhangye 6 years ago
parent
commit
7d2b1daa62
  1. 1
      tall/pom.xml
  2. 22
      tall/src/main/java/com/ccsens/tall/bean/po/ProShow.java
  3. 120
      tall/src/main/java/com/ccsens/tall/bean/po/ProShowExample.java
  4. 6
      tall/src/main/java/com/ccsens/tall/bean/vo/TaskVo.java
  5. 1
      tall/src/main/java/com/ccsens/tall/persist/dao/TaskDetailDao.java
  6. 25
      tall/src/main/java/com/ccsens/tall/rabbitMQ/MessageTest.java
  7. 256
      tall/src/main/java/com/ccsens/tall/service/ExcelService.java
  8. 7
      tall/src/main/java/com/ccsens/tall/service/IMessageService.java
  9. 2
      tall/src/main/java/com/ccsens/tall/service/ITaskSubTimeService.java
  10. 20
      tall/src/main/java/com/ccsens/tall/service/MessageService.java
  11. 22
      tall/src/main/java/com/ccsens/tall/service/ProRoleService.java
  12. 135
      tall/src/main/java/com/ccsens/tall/service/ProTaskDetailService.java
  13. 53
      tall/src/main/java/com/ccsens/tall/service/ProjectService.java
  14. 66
      tall/src/main/java/com/ccsens/tall/service/TaskDeliverService.java
  15. 5
      tall/src/main/java/com/ccsens/tall/service/TaskSubTimeService.java
  16. 22
      tall/src/main/java/com/ccsens/tall/web/DebugController.java
  17. 6
      tall/src/main/java/com/ccsens/tall/web/TaskController.java
  18. 8
      tall/src/main/java/com/ccsens/tall/web/UserController.java
  19. 22
      tall/src/main/resources/mapper_dao/TaskDetailDao.xml
  20. 41
      tall/src/main/resources/mapper_raw/ProShowMapper.xml

1
tall/pom.xml

@ -24,6 +24,7 @@
<groupId>com.ccsens</groupId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
<build>

22
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);

120
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<Byte> values) {
addCriterion("is_show_mvp in", values, "isShowMvp");
return (Criteria) this;
}
public Criteria andIsShowMvpNotIn(List<Byte> 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<Byte> values) {
addCriterion("create_task in", values, "createTask");
return (Criteria) this;
}
public Criteria andCreateTaskNotIn(List<Byte> 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;

6
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;
}
}

1
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);
}

25
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);
}
}

256
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<ProRole> proRoles, List<ProMember> proMembers) throws Exception {
@ -391,7 +396,9 @@ public class ExcelService implements IExcelService {
proRoles.add(proMemberRole);
}
//判断集合是否为空,有没有相同内容
/**
* 判断集合是否为空有没有相同内容
*/
private boolean proMemberRoleExist(String memberRoleName,List<ProRole> 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<ProMember> proMembers) throws Exception {
List<ProMember> 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<ProTaskDetail> taskDetails,
List<ProRole> proRoles, List<ProMember> 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<ProTaskDetail> 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<CronConstant.TaskDate> 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<ProTaskDetail> taskDetails, List<ProMember> proMembers) {
List<ProTaskDetail> taskDetails, List<ProMember> 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<ProTaskDetail> 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<CronConstant.TaskDate> 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<ProTaskDetail> taskDetails, List<ProRole> 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();

7
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;
}

2
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;

20
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));
}
}

22
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<ProjectVo.RoleInfo> getRolesByProjectIdAndUserId(Long projectId, Long currentUserId) throws Exception {
List<ProjectVo.RoleInfo> memberRoleList = null;
//1.查询二级角色(项目经理+项目成员+mvp)
memberRoleList = getRealMemberRolesByProjectId(projectId);
//获取用户在项目中的角色
List<ProRole> roleList = proMemberService.selectRolesByUserIdAndProjectId(currentUserId, projectId);
//1.查询二级角色(项目经理+项目成员+mvp)
memberRoleList = getRealMemberRolesByProjectId(projectId);
if (CollectionUtil.isNotEmpty(memberRoleList)) {
//获取项目的配置(是否展示mvp)
ProShowExample showExample = new ProShowExample();
showExample.createCriteria().andProjectIdEqualTo(projectId);
List<ProShow> 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;

135
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<TaskVo.NormalTask> 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<ProTaskDetail> 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<TaskVo.NormalTask> 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;
}

53
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<SysProject> 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<ProRole> 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<ProShow> 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<ProShow> proShowList = new ArrayList<>();
List<ProShow> 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;

66
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<String> userIdSet = new HashSet<>();
if (CollectionUtil.isNotEmpty(userIdList)) {
HashSet<Long> 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<DeliverVo.FilePath> 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<BaseMessageDto.MessageUser> messageUserList = new ArrayList<>();
BaseMessageDto.MessageUser messageUser = null;
ProRole checkRole = null;
Set<String> 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<String> userIdSet = new HashSet<>();
if (CollectionUtil.isNotEmpty(userIdList)) {
HashSet<Long> 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);
}
}

5
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;
}
/**
* 该成员是否完成了此任务(返回成员对任务的完成情况)

22
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<String> 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();
}
}

6
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<TaskVo.NormalTask> 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 = "")

8
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<UserVo.TokenToUserId> 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 = "")

22
tall/src/main/resources/mapper_dao/TaskDetailDao.xml

@ -38,6 +38,11 @@
<result column="tName" property="name" />
</resultMap>
<resultMap id="TaskIdAndSubTimeIdByParendIdAndTime" type="com.ccsens.tall.bean.vo.TaskVo$TaskIdAndSubTimeIdByParentIdAndTime">
<id column="tId" property="taskId" />
<result column="sId" property="subTimeId" />
</resultMap>
<select id="selectTaskByRoleAndAllMembers" parameterType="java.util.Map"
resultMap="secondTask">
SELECT
@ -268,6 +273,23 @@
ORDER BY s.begin_time DESC
limit 0,1
</select>
<select id="selectSubTimeByTaskParentIdAndTime" parameterType="java.util.Map"
resultMap="TaskIdAndSubTimeIdByParendIdAndTime">
SELECT
d.id as tId,
s.id as sId
FROM
t_pro_task_sub_time s join t_pro_task_detail d on s.task_detail_id = d.id
WHERE
d.rec_status = 0
AND
d.parent_id = #{parentId}
AND
s.begin_time &lt;= #{now}
ORDER BY s.begin_time DESC
limit 0,1
</select>
<!--==================================-->
<delete id="selectTaskByDetailId" parameterType="java.util.Map">
DELETE

41
tall/src/main/resources/mapper_raw/ProShowMapper.xml

@ -8,6 +8,8 @@
<result column="filter" jdbcType="TINYINT" property="filter" />
<result column="time_show" jdbcType="VARCHAR" property="timeShow" />
<result column="duration" jdbcType="TINYINT" property="duration" />
<result column="is_show_mvp" jdbcType="TINYINT" property="isShowMvp" />
<result column="create_task" jdbcType="TINYINT" property="createTask" />
<result column="created_at" jdbcType="TIMESTAMP" property="createdAt" />
<result column="updated_at" jdbcType="TIMESTAMP" property="updatedAt" />
<result column="rec_status" jdbcType="TINYINT" property="recStatus" />
@ -71,7 +73,8 @@
</where>
</sql>
<sql id="Base_Column_List">
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
</sql>
<select id="selectByExample" parameterType="com.ccsens.tall.bean.po.ProShowExample" resultMap="BaseResultMap">
select
@ -106,12 +109,12 @@
<insert id="insert" parameterType="com.ccsens.tall.bean.po.ProShow">
insert into t_pro_show (id, project_id, slide,
filter, time_show, duration,
created_at, updated_at, rec_status
)
is_show_mvp, create_task, created_at,
updated_at, rec_status)
values (#{id,jdbcType=BIGINT}, #{projectId,jdbcType=BIGINT}, #{slide,jdbcType=TINYINT},
#{filter,jdbcType=TINYINT}, #{timeShow,jdbcType=VARCHAR}, #{duration,jdbcType=TINYINT},
#{createdAt,jdbcType=TIMESTAMP}, #{updatedAt,jdbcType=TIMESTAMP}, #{recStatus,jdbcType=TINYINT}
)
#{isShowMvp,jdbcType=TINYINT}, #{createTask,jdbcType=TINYINT}, #{createdAt,jdbcType=TIMESTAMP},
#{updatedAt,jdbcType=TIMESTAMP}, #{recStatus,jdbcType=TINYINT})
</insert>
<insert id="insertSelective" parameterType="com.ccsens.tall.bean.po.ProShow">
insert into t_pro_show
@ -134,6 +137,12 @@
<if test="duration != null">
duration,
</if>
<if test="isShowMvp != null">
is_show_mvp,
</if>
<if test="createTask != null">
create_task,
</if>
<if test="createdAt != null">
created_at,
</if>
@ -163,6 +172,12 @@
<if test="duration != null">
#{duration,jdbcType=TINYINT},
</if>
<if test="isShowMvp != null">
#{isShowMvp,jdbcType=TINYINT},
</if>
<if test="createTask != null">
#{createTask,jdbcType=TINYINT},
</if>
<if test="createdAt != null">
#{createdAt,jdbcType=TIMESTAMP},
</if>
@ -201,6 +216,12 @@
<if test="record.duration != null">
duration = #{record.duration,jdbcType=TINYINT},
</if>
<if test="record.isShowMvp != null">
is_show_mvp = #{record.isShowMvp,jdbcType=TINYINT},
</if>
<if test="record.createTask != null">
create_task = #{record.createTask,jdbcType=TINYINT},
</if>
<if test="record.createdAt != null">
created_at = #{record.createdAt,jdbcType=TIMESTAMP},
</if>
@ -223,6 +244,8 @@
filter = #{record.filter,jdbcType=TINYINT},
time_show = #{record.timeShow,jdbcType=VARCHAR},
duration = #{record.duration,jdbcType=TINYINT},
is_show_mvp = #{record.isShowMvp,jdbcType=TINYINT},
create_task = #{record.createTask,jdbcType=TINYINT},
created_at = #{record.createdAt,jdbcType=TIMESTAMP},
updated_at = #{record.updatedAt,jdbcType=TIMESTAMP},
rec_status = #{record.recStatus,jdbcType=TINYINT}
@ -248,6 +271,12 @@
<if test="duration != null">
duration = #{duration,jdbcType=TINYINT},
</if>
<if test="isShowMvp != null">
is_show_mvp = #{isShowMvp,jdbcType=TINYINT},
</if>
<if test="createTask != null">
create_task = #{createTask,jdbcType=TINYINT},
</if>
<if test="createdAt != null">
created_at = #{createdAt,jdbcType=TIMESTAMP},
</if>
@ -267,6 +296,8 @@
filter = #{filter,jdbcType=TINYINT},
time_show = #{timeShow,jdbcType=VARCHAR},
duration = #{duration,jdbcType=TINYINT},
is_show_mvp = #{isShowMvp,jdbcType=TINYINT},
create_task = #{createTask,jdbcType=TINYINT},
created_at = #{createdAt,jdbcType=TIMESTAMP},
updated_at = #{updatedAt,jdbcType=TIMESTAMP},
rec_status = #{recStatus,jdbcType=TINYINT}

Loading…
Cancel
Save