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; private TaskRemindByAdd taskRemind;
@ApiModelProperty("上级任务详情id") @ApiModelProperty("上级任务详情id")
private Long lastTaskDetailId; private Long lastTaskDetailId;
@ApiModelProperty("上级提醒类型(0不提醒 1开始前,2开始时,3开始后,4结束前,5结束时,6结束后,7自定义时间)") @ApiModelProperty("上级提醒类型(0开始前,1开始时,2开始后,3结束前,4结束时,5结束后,6自定义时间)")
private Byte lastType; private Byte lastType;
@ApiModelProperty("两个任务时间差") @ApiModelProperty("两个任务时间差")
private Long timeDifference; private Long timeDifference;
@ -237,7 +237,7 @@ public class TaskDto {
private Long projectId; private Long projectId;
@ApiModelProperty("上级任务详情id") @ApiModelProperty("上级任务详情id")
private Long lastTaskDetailId; private Long lastTaskDetailId;
@ApiModelProperty("上级提醒类型(0不提醒 1开始前,2开始时,3开始后,4结束前,5结束时,6结束后,7自定义时间)") @ApiModelProperty("上级提醒类型(0开始前,1开始时,2开始后,3结束前,4结束时,5结束后,6自定义时间)")
private Byte lastType; private Byte lastType;
@ApiModelProperty("两个任务时间差") @ApiModelProperty("两个任务时间差")
private Long timeDifference; private Long timeDifference;
@ -506,4 +506,15 @@ public class TaskDto {
@ApiModelProperty("结束时间") @ApiModelProperty("结束时间")
private Long endTime; 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); List<TaskVo.AboutWeekTask> selectAboutWeekTask(TaskDto.AboutWeekTask param, Long userId);
/**
* 给任务详情添加分解任务
* @param param 任务详情id/开始时间/持续时间
* @param userId 当前用户id
*/
void addSubTaskForDetailTask(TaskDto.AddSubTaskForDetailTask param, Long userId);
// /** // /**
// * 新增和修改交付物的方法 // * 新增和修改交付物的方法
// * @param jiaoFuWu // * @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) { Long lastTaskDetailId = param.getTaskDetailId();
// ProTaskDeliverExample proTaskDeliverExample=new ProTaskDeliverExample(); findLastTask(lastTaskDetailId,taskSubTime);
// 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);
// }
//
// }
/** /**
* 新增和修改输入文档 * 递归查找下一道工序,并修改时间
* @param jiaoFuWu
*/ */
public int findLastTask(Long taskDetailId,ProTaskSubTime taskSubTime){
// @Override ProTaskDetail taskDetail = taskDetailDao.selectByPrimaryKey(taskDetailId);
// public void addAndUpdateShuWuWenDang(TaskDto.JiaoFuWu jiaoFuWu) {
// ProTaskInputDocExample proTaskDeliverExample=new ProTaskInputDocExample(); Long subTimeDifference = taskSubTime.getEndTime() - taskSubTime.getBeginTime();
// ProTaskInputDoc proTaskDeliver=new ProTaskInputDoc();
// if(jiaoFuWu.getId()!=null && StringUtils.isNotBlank(jiaoFuWu.getNames())){
// //修改 ProTaskDetailExample taskDetailExample = new ProTaskDetailExample();
// proTaskDeliver.setId(jiaoFuWu.getId()); taskDetailExample.createCriteria().andLastTaskDetailIdEqualTo(taskDetailId);
// proTaskDeliver.setName(jiaoFuWu.getNames()); List<ProTaskDetail> taskDetails = taskDetailDao.selectByExample(taskDetailExample);
// proTaskDeliverExample.createCriteria().andIdEqualTo(jiaoFuWu.getId()).andRecStatusEqualTo((byte) 0); if (CollectionUtil.isNotEmpty(taskDetails)){
// proTaskInputDocDao.updateByExampleSelective(proTaskDeliver,proTaskDeliverExample); for (ProTaskDetail detail : taskDetails) {
// }else if(jiaoFuWu.getId()==null && StringUtils.isNotBlank(jiaoFuWu.getNames())) { System.out.println(detail);
// //新增 switch (detail.getLastType()){
// proTaskDeliver.setId(snowflake.nextId()); case 0:
// proTaskDeliver.setName(jiaoFuWu.getNames()); ProTaskSubTime taskSubTime0 = new ProTaskSubTime();
// proTaskInputDocDao.insertSelective(proTaskDeliver); 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 javax.annotation.Resource;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.*; import java.util.*;
import java.util.stream.Collectors;
@Slf4j @Slf4j
@Service @Service
@ -647,9 +648,9 @@ public class ProjectService implements IProjectService {
userAttention.setProjectId(newProject.getId()); userAttention.setProjectId(newProject.getId());
attentionDao.insertSelective(userAttention); 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 { } else {
throw new BaseException(CodeEnum.NOT_PROJECT); throw new BaseException(CodeEnum.NOT_PROJECT);
} }
@ -672,7 +673,7 @@ public class ProjectService implements IProjectService {
* @param oldId 被复制的项目的id * @param oldId 被复制的项目的id
* @param newId 新建的项目的id * @param newId 新建的项目的id
*/ */
private void copyProjectConfig(Long oldId, Long newId) { private void copyProjectConfig(Long oldId, Long newId,Long userId) {
ProShowExample showExample = new ProShowExample(); ProShowExample showExample = new ProShowExample();
showExample.createCriteria().andProjectIdEqualTo(oldId); showExample.createCriteria().andProjectIdEqualTo(oldId);
List<ProShow> shows = proShowDao.selectByExample(showExample); 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<Long, String> oldRoleMap = new HashMap<>();
Map<String, Long> newRoleMap = 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); copyRoleExclude(oldRoleList, oldRoleMap, newRoleMap);
//复制任务(包括分解任务) //复制任务(包括分解任务)
@ -865,8 +893,6 @@ public class ProjectService implements IProjectService {
newTaskSubTime.setTaskDetailId(newTaskDetailId); newTaskSubTime.setTaskDetailId(newTaskDetailId);
newTaskSubTime.setBeginTime(oldTaskSubTime.getBeginTime()+timeDifference); newTaskSubTime.setBeginTime(oldTaskSubTime.getBeginTime()+timeDifference);
newTaskSubTime.setEndTime(oldTaskSubTime.getEndTime()+timeDifference); newTaskSubTime.setEndTime(oldTaskSubTime.getEndTime()+timeDifference);
newTaskSubTime.setRealBeginTime(oldTaskSubTime.getRealBeginTime()+timeDifference);
newTaskSubTime.setRealEndTime(oldTaskSubTime.getRealEndTime()+timeDifference);
newTaskSubTime.setCreatedAt(null); newTaskSubTime.setCreatedAt(null);
newTaskSubTime.setUpdatedAt(null); newTaskSubTime.setUpdatedAt(null);
taskSubTimeDao.insertSelective(newTaskSubTime); taskSubTimeDao.insertSelective(newTaskSubTime);
@ -1479,6 +1505,7 @@ public class ProjectService implements IProjectService {
} }
} }
//该用户关注新项目 //该用户关注新项目
UserAttention userAttention = new UserAttention(); UserAttention userAttention = new UserAttention();
userAttention.setId(snowflake.nextId()); userAttention.setId(snowflake.nextId());
@ -1486,9 +1513,9 @@ public class ProjectService implements IProjectService {
userAttention.setProjectId(newProject.getId()); userAttention.setProjectId(newProject.getId());
attentionDao.insertSelective(userAttention); 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; return null;
} }

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

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

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

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

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

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

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

@ -28,7 +28,7 @@
t_doctor t_doctor
WHERE WHERE
1=1 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 and role in
<foreach collection="param.role" item="item" open="(" close=")" separator=","> <foreach collection="param.role" item="item" open="(" close=")" separator=",">
#{item} #{item}

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

@ -1074,4 +1074,6 @@ public class WebConstant {
this.message = message; 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