diff --git a/tall/src/main/java/com/ccsens/tall/bean/dto/TaskDto.java b/tall/src/main/java/com/ccsens/tall/bean/dto/TaskDto.java index 6e9f7cb5..09bb5d1c 100644 --- a/tall/src/main/java/com/ccsens/tall/bean/dto/TaskDto.java +++ b/tall/src/main/java/com/ccsens/tall/bean/dto/TaskDto.java @@ -36,8 +36,10 @@ public class TaskDto { private Long endTime; @ApiModelProperty("重复周期") private String cycle; - @ApiModelProperty("交付物") - private String taskDeliver; + @ApiModelProperty("交付物,可以是多个,可以是单个") + private List taskDeliver; + @ApiModelProperty("输入文档,可以是多个,可以是单个") + private List inputDoc; @ApiModelProperty("插件") private List pluginList; @ApiModelProperty("优先级 3,紧急重要 2,紧急不重要 1,重要不紧急 0,不重要不紧急 默认0") @@ -211,6 +213,8 @@ public class TaskDto { private Byte milestone; @ApiModelProperty("交付物id和修改后的名字") private List deliverList; + @ApiModelProperty("输入文档的id和修改后的名字") + private List inputList; @ApiModelProperty("需要修改的插件Id") private List plugins; @ApiModelProperty("任务提醒信息") @@ -420,4 +424,12 @@ public class TaskDto { @ApiModelProperty("角色id") private Long roleId; } + @Data + @ApiModel("交付物列表/输入文档列表 新增和修改都采用这个") + public static class JiaoFuWu{ + @ApiModelProperty("交付物/输入文档的id") + public Long id; + @ApiModelProperty("交付物名称") + public String names; + } } 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 8680c393..249fcc14 100644 --- a/tall/src/main/java/com/ccsens/tall/service/ExcelService.java +++ b/tall/src/main/java/com/ccsens/tall/service/ExcelService.java @@ -152,6 +152,7 @@ public class ExcelService implements IExcelService { throw new BaseException(CodeEnum.WSB_NOT_TASK_HEADER); } readProject(wbsSheet, projectInfoStart, projectInfoEnd, currentUserId, sysProject); + //读项目成员 readMember(wbsSheet, memberSheet, memberStart, memberEnd, sysProject, proRoles, proMembers); readTask(xssfWorkbook, wbsSheet, taskStart, taskEnd, currentUserId, sysProject, taskDetails, proRoles, proMembers, hasGroupMap); //读取插件表 @@ -225,7 +226,7 @@ public class ExcelService implements IExcelService { */ private void readMember(XSSFSheet wbsSheet, XSSFSheet memberSheet, int memberStart, int memberEnd, SysProject sysProject, List proRoles, List proMembers) throws Exception { - + Integer seq=new Integer(0); //添加奖惩干系人角色(一级角色) ProRole stakeholderRole = new ProRole(); stakeholderRole.setName(WebConstant.ROLE_NAME.MoneyStakeholder.value); @@ -239,6 +240,7 @@ public class ExcelService implements IExcelService { stakeholderProRole.setName(WebConstant.ROLE_NAME.MoneyStakeholder.phase); stakeholderProRole.setDescription(WebConstant.ROLE_NAME.MoneyStakeholder.value); stakeholderProRole.setParentId(stakeholderRole.getId()); + stakeholderProRole.setSequence(seq++); stakeholderProRole.setProjectId(sysProject.getId()); stakeholderProRole.setId(snowflake.nextId()); proRoleService.saveProRole(stakeholderProRole); @@ -257,6 +259,7 @@ public class ExcelService implements IExcelService { creatorRole.setName(WebConstant.ROLE_NAME.Creator.phase); creatorRole.setDescription(WebConstant.ROLE_NAME.Creator.value); creatorRole.setParentId(creator.getId()); + creatorRole.setSequence(seq++); creatorRole.setProjectId(sysProject.getId()); creatorRole.setId(snowflake.nextId()); proRoleService.saveProRole(creatorRole); @@ -275,6 +278,7 @@ public class ExcelService implements IExcelService { attentionRole.setName(WebConstant.ROLE_NAME.Attention.phase); attentionRole.setDescription(WebConstant.ROLE_NAME.Attention.value); attentionRole.setParentId(attention.getId()); + attentionRole.setSequence(seq++); attentionRole.setProjectId(sysProject.getId()); attentionRole.setId(snowflake.nextId()); proRoleService.saveProRole(attentionRole); @@ -351,6 +355,7 @@ public class ExcelService implements IExcelService { ProRole proRole = new ProRole(); proRole.setName(secondRoleCell); proRole.setParentId(firstRoleId); + proRole.setSequence(seq++); proRole.setProjectId(sysProject.getId()); proRole.setId(snowflake.nextId()); //为虚拟项目角色添加关联的项目id diff --git a/tall/src/main/java/com/ccsens/tall/service/IProTaskDetailService.java b/tall/src/main/java/com/ccsens/tall/service/IProTaskDetailService.java index 195c74cf..7d215b69 100644 --- a/tall/src/main/java/com/ccsens/tall/service/IProTaskDetailService.java +++ b/tall/src/main/java/com/ccsens/tall/service/IProTaskDetailService.java @@ -55,4 +55,15 @@ public interface IProTaskDetailService { * @return 返回所有任务 */ List queryAllTaskByProjectId(Long currentUserId, TaskDto.QueryAllTaskByProjectId projectId) throws Exception; + + /** + * 新增和修改交付物的方法 + * @param jiaoFuWu + */ + void addAndUpdateJiaoFuWu(TaskDto.JiaoFuWu jiaoFuWu); + /** + * 新增和修改交付物的方法 + * @param jiaoFuWu + */ + void addAndUpdateShuWuWenDang(TaskDto.JiaoFuWu jiaoFuWu); } 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 f348b817..6a46754c 100644 --- a/tall/src/main/java/com/ccsens/tall/service/ProTaskDetailService.java +++ b/tall/src/main/java/com/ccsens/tall/service/ProTaskDetailService.java @@ -17,6 +17,8 @@ import com.ccsens.tall.bean.vo.TaskVo; import com.ccsens.tall.persist.dao.*; import com.ccsens.tall.persist.dao.ProTaskShowDao; import com.ccsens.tall.persist.mapper.ProPluginConfigMapper; +import com.ccsens.tall.persist.mapper.ProTaskDeliverMapper; +import com.ccsens.tall.persist.mapper.ProTaskInputDocMapper; import com.ccsens.tall.util.TallConstant; import com.ccsens.tall.util.TaskUtil; import com.ccsens.util.CodeEnum; @@ -30,6 +32,7 @@ import com.fasterxml.jackson.annotation.JsonFormat; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang.StringUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; @@ -89,6 +92,10 @@ public class ProTaskDetailService implements IProTaskDetailService { private TaskPluginService taskPluginService; @Resource private ProShowDao proShowDao; + @Resource + private ProTaskDeliverMapper proTaskDeliverMapper; + @Resource + private ProTaskInputDocMapper proTaskInputDocMapper; @Override public void saveTaskDetail(ProTaskDetail taskDetail) { @@ -1410,6 +1417,27 @@ public class ProTaskDetailService implements IProTaskDetailService { } }); } + //修改输入文档信息 + if (CollectionUtil.isNotEmpty(updateTaskInfo.getInputList())) { + updateTaskInfo.getInputList().forEach(taskDeliver -> { + if (StrUtil.isNotEmpty(taskDeliver.getDeliverName())) { + if (ObjectUtil.isNotNull(taskDeliver.getDeliverId())) { + ProTaskInputDoc deliver = proTaskInputDocMapper.selectByPrimaryKey(taskDeliver.getDeliverId()); + if (ObjectUtil.isNotNull(deliver)) { + deliver.setName(taskDeliver.getDeliverName()); + proTaskInputDocMapper.updateByPrimaryKeySelective(deliver); + } + } else { + ProTaskInputDoc deliver = new ProTaskInputDoc(); + deliver.setId(snowflake.nextId()); + deliver.setTaskDetailId(taskDetail.getId()); + deliver.setName(taskDeliver.getDeliverName()); + deliver.setIsUpload(0); + proTaskInputDocMapper.insertSelective(deliver); + } + } + }); + } //修改数据 taskDetailDao.updateByPrimaryKeySelective(taskDetail); @@ -1638,4 +1666,49 @@ public class ProTaskDetailService implements IProTaskDetailService { } return taskList; } + + /** + * 新增和修改交付物 + * @param jiaoFuWu + */ + @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); + } + + } + + /** + * 新增和修改输入文档 + * @param jiaoFuWu + */ + @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); + proTaskInputDocMapper.updateByExampleSelective(proTaskDeliver,proTaskDeliverExample); + }else if(jiaoFuWu.getId()==null && StringUtils.isNotBlank(jiaoFuWu.getNames())) { + //新增 + proTaskDeliver.setId(snowflake.nextId()); + proTaskDeliver.setName(jiaoFuWu.getNames()); + proTaskInputDocMapper.insertSelective(proTaskDeliver); + } + } } 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 0d9b5653..4cf90bb9 100644 --- a/tall/src/main/java/com/ccsens/tall/service/TaskSubTimeService.java +++ b/tall/src/main/java/com/ccsens/tall/service/TaskSubTimeService.java @@ -12,11 +12,9 @@ import com.ccsens.tall.bean.dto.message.SyncMessageWithStartDto; import com.ccsens.tall.bean.po.*; import com.ccsens.tall.bean.vo.TaskVo; import com.ccsens.tall.persist.dao.*; +import com.ccsens.tall.persist.mapper.ProTaskInputDocMapper; import com.ccsens.tall.util.TallConstant; -import com.ccsens.util.CodeEnum; -import com.ccsens.util.JacksonUtil; -import com.ccsens.util.TransactionUtil; -import com.ccsens.util.WebConstant; +import com.ccsens.util.*; import com.ccsens.util.bean.message.common.InMessage; import com.ccsens.util.bean.message.common.MessageConstant; import com.ccsens.util.config.RabbitMQConfig; @@ -25,7 +23,9 @@ import com.ccsens.util.cron.NatureToDate; import com.ccsens.util.exception.BaseException; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; +import com.sun.org.apache.bcel.internal.generic.IAND; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang.StringUtils; import org.springframework.amqp.core.AmqpTemplate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -83,6 +83,8 @@ public class TaskSubTimeService implements ITaskSubTimeService { //定义事务对象 @Resource private PlatformTransactionManager transactionManager; + @Resource + private ProTaskInputDocMapper proTaskInputDocMapper; @Override public void saveProTaskSubTask(ProTaskSubTime proTaskSubTime) { @@ -446,14 +448,40 @@ public class TaskSubTimeService implements ITaskSubTimeService { } } //交付物 - if (StrUtil.isNotEmpty(addTask.getTaskDeliver())) { - ProTaskDeliver deliver = new ProTaskDeliver(); - deliver.setId(snowflake.nextId()); - deliver.setTaskDetailId(detail.getId()); - deliver.setName(addTask.getTaskDeliver()); - deliver.setIsInput(0); - taskDeliverDao.insertSelective(deliver); +// if (StrUtil.isNotEmpty(addTask.getTaskDeliver())) { +// ProTaskDeliver deliver = new ProTaskDeliver(); +// deliver.setId(snowflake.nextId()); +// deliver.setTaskDetailId(detail.getId()); +// deliver.setName(addTask.getTaskDeliver()); +// deliver.setIsInput(0); +// taskDeliverDao.insertSelective(deliver); +// } + //交付物列表的增加 + if(addTask.getTaskDeliver().size()>0){ + addTask.getTaskDeliver().forEach(action->{ + if(StringUtils.isNotBlank(action)) { + ProTaskDeliver deliver = new ProTaskDeliver(); + deliver.setId(snowflake.nextId()); + deliver.setTaskDetailId(detail.getId()); + deliver.setName(action); + deliver.setIsInput(0); + taskDeliverDao.insertSelective(deliver); + } + }); + } + //输入文档的增加 + if(addTask.getInputDoc().size()>0){ + addTask.getInputDoc().forEach(action->{ + if(StringUtils.isNotBlank(action)) { + ProTaskInputDoc proTaskInputDoc = new ProTaskInputDoc(); + proTaskInputDoc.setId(snowflake.nextId()); + proTaskInputDoc.setName(action); + proTaskInputDoc.setTaskDetailId(detail.getId()); + proTaskInputDocMapper.insertSelective(proTaskInputDoc); + } + }); } + //插件 if (CollectionUtil.isNotEmpty(addTask.getPluginList())) { for (Long pluginId : addTask.getPluginList()) {