Browse Source

Merge branch 'pt' of dd.tall.wiki:ccsens_wiki/ccsenscloud into pt

recovery
zy_Java 4 years ago
parent
commit
25c0473292
  1. 15
      tall/src/main/java/com/ccsens/tall/bean/dto/TaskDto.java
  2. 7
      tall/src/main/java/com/ccsens/tall/service/IProTaskDetailService.java
  3. 135
      tall/src/main/java/com/ccsens/tall/service/ProTaskDetailService.java
  4. 43
      tall/src/main/java/com/ccsens/tall/service/ProjectService.java
  5. 6
      tall/src/main/java/com/ccsens/tall/web/TaskController.java
  6. 2
      tcm/src/main/resources/application-common.yml
  7. 4
      tcm/src/main/resources/application.yml
  8. 2
      tcm/src/main/resources/mapper_dao/DoctorDao.xml
  9. 2
      util/src/main/java/com/ccsens/util/WebConstant.java
  10. 52
      util/src/test/java/com/ccsens/util/Base64Test.java
  11. 17
      util/src/test/java/com/ccsens/util/TallTest.java

15
tall/src/main/java/com/ccsens/tall/bean/dto/TaskDto.java

@ -51,7 +51,7 @@ public class TaskDto {
private TaskRemindByAdd taskRemind;
@ApiModelProperty("上级任务详情id")
private Long lastTaskDetailId;
@ApiModelProperty("上级提醒类型(0不提醒 1开始前,2开始时,3开始后,4结束前,5结束时,6结束后,7自定义时间)")
@ApiModelProperty("上级提醒类型(0开始前,1开始时,2开始后,3结束前,4结束时,5结束后,6自定义时间)")
private Byte lastType;
@ApiModelProperty("两个任务时间差")
private Long timeDifference;
@ -237,7 +237,7 @@ public class TaskDto {
private Long projectId;
@ApiModelProperty("上级任务详情id")
private Long lastTaskDetailId;
@ApiModelProperty("上级提醒类型(0不提醒 1开始前,2开始时,3开始后,4结束前,5结束时,6结束后,7自定义时间)")
@ApiModelProperty("上级提醒类型(0开始前,1开始时,2开始后,3结束前,4结束时,5结束后,6自定义时间)")
private Byte lastType;
@ApiModelProperty("两个任务时间差")
private Long timeDifference;
@ -506,4 +506,15 @@ public class TaskDto {
@ApiModelProperty("结束时间")
private Long endTime;
}
@Data
@ApiModel
public static class AddSubTaskForDetailTask {
@ApiModelProperty("任务详情id")
private Long taskDetailId;
@ApiModelProperty("开始时间(时间戳毫秒)")
private Long startTime;
@ApiModelProperty("时长")
private Long durationTime;
}
}

7
tall/src/main/java/com/ccsens/tall/service/IProTaskDetailService.java

@ -64,6 +64,13 @@ public interface IProTaskDetailService {
*/
List<TaskVo.AboutWeekTask> selectAboutWeekTask(TaskDto.AboutWeekTask param, Long userId);
/**
* 给任务详情添加分解任务
* @param param 任务详情id/开始时间/持续时间
* @param userId 当前用户id
*/
void addSubTaskForDetailTask(TaskDto.AddSubTaskForDetailTask param, Long userId);
// /**
// * 新增和修改交付物的方法
// * @param jiaoFuWu

135
tall/src/main/java/com/ccsens/tall/service/ProTaskDetailService.java

@ -1960,50 +1960,105 @@ public class ProTaskDetailService implements IProTaskDetailService {
}
/**
* 新增和修改交付物
* @param jiaoFuWu
* 给任务添加分解任务
* @param param 任务详情id/开始时间/持续时间
* @param userId 当前用户id
*/
@Override
public void addSubTaskForDetailTask(TaskDto.AddSubTaskForDetailTask param, Long userId) {
ProTaskDetail taskDetail = taskDetailDao.selectByPrimaryKey(param.getTaskDetailId());
if (ObjectUtil.isNull(taskDetail)){
throw new BaseException(CodeEnum.NOT_TASK);
}
ProTaskSubTime taskSubTime = new ProTaskSubTime();
taskSubTime.setId(snowflake.nextId());
taskSubTime.setTaskDetailId(param.getTaskDetailId());
taskSubTime.setBeginTime(param.getStartTime());
taskSubTime.setEndTime(param.getStartTime()+param.getDurationTime());
taskSubTimeDao.insertSelective(taskSubTime);
// @Override
// public void addAndUpdateJiaoFuWu(TaskDto.JiaoFuWu jiaoFuWu) {
// ProTaskDeliverExample proTaskDeliverExample=new ProTaskDeliverExample();
// ProTaskDeliver proTaskDeliver=new ProTaskDeliver();
// if(jiaoFuWu.getId()!=null && StringUtils.isNotBlank(jiaoFuWu.getNames())){
// //修改
// proTaskDeliver.setId(jiaoFuWu.getId());
// proTaskDeliver.setName(jiaoFuWu.getNames());
// proTaskDeliverExample.createCriteria().andIdEqualTo(jiaoFuWu.getId()).andRecStatusEqualTo((byte) 0);
// proTaskDeliverMapper.updateByExampleSelective(proTaskDeliver,proTaskDeliverExample);
// }else if(jiaoFuWu.getId()==null && StringUtils.isNotBlank(jiaoFuWu.getNames())) {
// //新增
// proTaskDeliver.setId(snowflake.nextId());
// proTaskDeliver.setName(jiaoFuWu.getNames());
// proTaskDeliverMapper.insertSelective(proTaskDeliver);
// }
//
// }
//查找任务的下一道工序
Long lastTaskDetailId = param.getTaskDetailId();
findLastTask(lastTaskDetailId,taskSubTime);
}
/**
* 新增和修改输入文档
* @param jiaoFuWu
* 递归查找下一道工序,并修改时间
*/
public int findLastTask(Long taskDetailId,ProTaskSubTime taskSubTime){
// @Override
// public void addAndUpdateShuWuWenDang(TaskDto.JiaoFuWu jiaoFuWu) {
// ProTaskInputDocExample proTaskDeliverExample=new ProTaskInputDocExample();
// ProTaskInputDoc proTaskDeliver=new ProTaskInputDoc();
// if(jiaoFuWu.getId()!=null && StringUtils.isNotBlank(jiaoFuWu.getNames())){
// //修改
// proTaskDeliver.setId(jiaoFuWu.getId());
// proTaskDeliver.setName(jiaoFuWu.getNames());
// proTaskDeliverExample.createCriteria().andIdEqualTo(jiaoFuWu.getId()).andRecStatusEqualTo((byte) 0);
// proTaskInputDocDao.updateByExampleSelective(proTaskDeliver,proTaskDeliverExample);
// }else if(jiaoFuWu.getId()==null && StringUtils.isNotBlank(jiaoFuWu.getNames())) {
// //新增
// proTaskDeliver.setId(snowflake.nextId());
// proTaskDeliver.setName(jiaoFuWu.getNames());
// proTaskInputDocDao.insertSelective(proTaskDeliver);
// }
// }
ProTaskDetail taskDetail = taskDetailDao.selectByPrimaryKey(taskDetailId);
Long subTimeDifference = taskSubTime.getEndTime() - taskSubTime.getBeginTime();
ProTaskDetailExample taskDetailExample = new ProTaskDetailExample();
taskDetailExample.createCriteria().andLastTaskDetailIdEqualTo(taskDetailId);
List<ProTaskDetail> taskDetails = taskDetailDao.selectByExample(taskDetailExample);
if (CollectionUtil.isNotEmpty(taskDetails)){
for (ProTaskDetail detail : taskDetails) {
System.out.println(detail);
switch (detail.getLastType()){
case 0:
ProTaskSubTime taskSubTime0 = new ProTaskSubTime();
taskSubTime0.setId(snowflake.nextId());
taskSubTime0.setTaskDetailId(detail.getId());
taskSubTime0.setBeginTime(taskSubTime.getBeginTime()-taskDetail.getTimeDifference());
taskSubTime0.setEndTime(taskSubTime.getBeginTime()-taskDetail.getTimeDifference()+subTimeDifference);
taskSubTimeDao.insertSelective(taskSubTime0);
findLastTask(detail.getId(),taskSubTime0);
break;
case 1:
ProTaskSubTime taskSubTime1 = new ProTaskSubTime();
taskSubTime1.setId(snowflake.nextId());
taskSubTime1.setTaskDetailId(detail.getId());
taskSubTime1.setBeginTime(taskSubTime.getBeginTime());
taskSubTime1.setEndTime(taskSubTime.getBeginTime()+subTimeDifference);
taskSubTimeDao.insertSelective(taskSubTime1);
findLastTask(detail.getId(),taskSubTime1);
break;
case 2:
ProTaskSubTime taskSubTime2 = new ProTaskSubTime();
taskSubTime2.setId(snowflake.nextId());
taskSubTime2.setTaskDetailId(detail.getId());
taskSubTime2.setBeginTime(taskSubTime.getBeginTime()+taskDetail.getTimeDifference());
taskSubTime2.setEndTime(taskSubTime.getBeginTime()+taskDetail.getTimeDifference()+subTimeDifference);
taskSubTimeDao.insertSelective(taskSubTime2);
findLastTask(detail.getId(),taskSubTime2);
break;
case 3:
ProTaskSubTime taskSubTime3 = new ProTaskSubTime();
taskSubTime3.setId(snowflake.nextId());
taskSubTime3.setTaskDetailId(detail.getId());
taskSubTime3.setBeginTime(taskSubTime.getEndTime()-taskDetail.getTimeDifference());
taskSubTime3.setEndTime(taskSubTime.getEndTime()-taskDetail.getTimeDifference()+subTimeDifference);
taskSubTimeDao.insertSelective(taskSubTime3);
findLastTask(detail.getId(),taskSubTime3);
break;
case 4:
ProTaskSubTime taskSubTime4 = new ProTaskSubTime();
taskSubTime4.setId(snowflake.nextId());
taskSubTime4.setTaskDetailId(detail.getId());
taskSubTime4.setBeginTime(taskSubTime.getEndTime());
taskSubTime4.setEndTime(taskSubTime.getEndTime()-taskDetail.getTimeDifference()+subTimeDifference);
taskSubTimeDao.insertSelective(taskSubTime4);
findLastTask(detail.getId(),taskSubTime4);
break;
case 5:
ProTaskSubTime taskSubTime5 = new ProTaskSubTime();
taskSubTime5.setId(snowflake.nextId());
taskSubTime5.setTaskDetailId(detail.getId());
taskSubTime5.setBeginTime(taskSubTime.getEndTime()+taskDetail.getTimeDifference());
taskSubTime5.setEndTime(taskSubTime.getEndTime()+taskDetail.getTimeDifference()+subTimeDifference);
taskSubTimeDao.insertSelective(taskSubTime5);
findLastTask(detail.getId(),taskSubTime5);
break;
default:
break;
}
}
}
return 1;
}
}

43
tall/src/main/java/com/ccsens/tall/service/ProjectService.java

@ -28,6 +28,7 @@ import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
@Slf4j
@Service
@ -647,9 +648,9 @@ public class ProjectService implements IProjectService {
userAttention.setProjectId(newProject.getId());
attentionDao.insertSelective(userAttention);
//添加角色
copyRole(oldProject.getId(), newProject.getId());
copyRole(oldProject.getId(), newProject.getId(),userId);
//复制项目配置信息
copyProjectConfig(oldProject.getId(), newProject.getId());
copyProjectConfig(oldProject.getId(), newProject.getId(),userId);
} else {
throw new BaseException(CodeEnum.NOT_PROJECT);
}
@ -672,7 +673,7 @@ public class ProjectService implements IProjectService {
* @param oldId 被复制的项目的id
* @param newId 新建的项目的id
*/
private void copyProjectConfig(Long oldId, Long newId) {
private void copyProjectConfig(Long oldId, Long newId,Long userId) {
ProShowExample showExample = new ProShowExample();
showExample.createCriteria().andProjectIdEqualTo(oldId);
List<ProShow> shows = proShowDao.selectByExample(showExample);
@ -690,7 +691,7 @@ public class ProjectService implements IProjectService {
/**
* 复制角色
*/
private void copyRole(Long oldProjectId, Long newProjectId) {
private void copyRole(Long oldProjectId, Long newProjectId,Long userId) {
//查找被复制的项目下的二级角色
Map<Long, String> oldRoleMap = new HashMap<>();
Map<String, Long> newRoleMap = new HashMap<>();
@ -719,6 +720,33 @@ public class ProjectService implements IProjectService {
}
}
}
//当前创建人默认为项目经理
SysUser sysUser = sysUserDao.selectByPrimaryKey(userId);
//添加成员
ProMember proMember = new ProMember();
proMember.setId(snowflake.nextId());
proMember.setUserId(userId);
proMember.setProjectId(newProjectId);
proMember.setNickname(sysUser.getNickname());
proMember.setPhone(sysUser.getPhone());
proMemberDao.insertSelective(proMember);
//查找项目经理的id
ProRoleExample proRoleExample=new ProRoleExample();
proRoleExample.createCriteria().andRecStatusEqualTo((byte)0).andNameEqualTo(WebConstant.ROLE_NAME.PM.value).andParentIdEqualTo(0L).andProjectIdEqualTo(newProjectId);
List<Long> firstPmId = proRoleDao.selectByExample(proRoleExample).stream().map(ProRole::getId).collect(Collectors.toList());
ProRoleExample secondPMExample=new ProRoleExample();
secondPMExample.createCriteria().andRecStatusEqualTo((byte)0).andParentIdIn(firstPmId);
List<ProRole> proRoles = proRoleDao.selectByExample(secondPMExample);
List<Long> secondPM = proRoles.stream().map(action->action.getId()).collect(Collectors.toList());
if (CollectionUtil.isNotEmpty(secondPM)){
ProMemberRole proMemberRole = new ProMemberRole();
proMemberRole.setId(snowflake.nextId());
proMemberRole.setMemberId(proMember.getId());
proMemberRole.setRoleId(secondPM.get(0));
memberRoleDao.insertSelective(proMemberRole);
}
//添加对谁不可见
copyRoleExclude(oldRoleList, oldRoleMap, newRoleMap);
//复制任务(包括分解任务)
@ -865,8 +893,6 @@ public class ProjectService implements IProjectService {
newTaskSubTime.setTaskDetailId(newTaskDetailId);
newTaskSubTime.setBeginTime(oldTaskSubTime.getBeginTime()+timeDifference);
newTaskSubTime.setEndTime(oldTaskSubTime.getEndTime()+timeDifference);
newTaskSubTime.setRealBeginTime(oldTaskSubTime.getRealBeginTime()+timeDifference);
newTaskSubTime.setRealEndTime(oldTaskSubTime.getRealEndTime()+timeDifference);
newTaskSubTime.setCreatedAt(null);
newTaskSubTime.setUpdatedAt(null);
taskSubTimeDao.insertSelective(newTaskSubTime);
@ -1479,6 +1505,7 @@ public class ProjectService implements IProjectService {
}
}
//该用户关注新项目
UserAttention userAttention = new UserAttention();
userAttention.setId(snowflake.nextId());
@ -1486,9 +1513,9 @@ public class ProjectService implements IProjectService {
userAttention.setProjectId(newProject.getId());
attentionDao.insertSelective(userAttention);
//添加角色
copyRole(oldProject.getId(), newProject.getId());
copyRole(oldProject.getId(), newProject.getId(),userId);
//复制项目配置信息
copyProjectConfig(oldProject.getId(), newProject.getId());
copyProjectConfig(oldProject.getId(), newProject.getId(),userId);
//复制项目下的角色
return null;
}

6
tall/src/main/java/com/ccsens/tall/web/TaskController.java

@ -326,8 +326,8 @@ public class TaskController {
@MustLoginTall
@ApiOperation(value = "给任务增加分解任务",notes = "")
@RequestMapping(value = "/addSubTaskForDetailTask", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse<List<TaskVo.AboutWeekTask>> addSubTaskForDetailTask(@ApiParam @Validated @RequestBody QueryDto<TaskDto.AboutWeekTask> params) throws Exception {
List<TaskVo.AboutWeekTask> aboutWeekTask = taskDetailService.selectAboutWeekTask(params.getParam(),params.getUserId());
return JsonResponse.newInstance().ok(aboutWeekTask);
public JsonResponse addSubTaskForDetailTask(@ApiParam @Validated @RequestBody QueryDto<TaskDto.AddSubTaskForDetailTask> params) throws Exception {
taskDetailService.addSubTaskForDetailTask(params.getParam(),params.getUserId());
return JsonResponse.newInstance().ok();
}
}

2
tcm/src/main/resources/application-common.yml

@ -22,7 +22,7 @@ spring:
log-request-details: true
servlet:
multipart:
max-file-size: 10MB
max-file-size: 15MB
max-request-size: 100MB
snowflake:
datacenterId: 2

4
tcm/src/main/resources/application.yml

@ -1,5 +1,5 @@
spring:
profiles:
active: test
include: common, util-test
active: prod
include: common, util-prod

2
tcm/src/main/resources/mapper_dao/DoctorDao.xml

@ -28,7 +28,7 @@
t_doctor
WHERE
1=1
<if test="param.role != null and param.role.size() > 0">
<if test="param.role != null and param.role.length > 0">
and role in
<foreach collection="param.role" item="item" open="(" close=")" separator=",">
#{item}

2
util/src/main/java/com/ccsens/util/WebConstant.java

@ -1074,4 +1074,6 @@ public class WebConstant {
this.message = message;
}
}
}

52
util/src/test/java/com/ccsens/util/Base64Test.java

File diff suppressed because one or more lines are too long

17
util/src/test/java/com/ccsens/util/TallTest.java

@ -0,0 +1,17 @@
package com.ccsens.util;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import javax.annotation.Resource;
@RunWith(SpringRunner.class)
@SpringBootTest
public class TallTest {
}
Loading…
Cancel
Save