Compare commits
1 Commits
f9a7954486
...
main
Author | SHA1 | Date | |
---|---|---|---|
84a7595792 |
18
pom.xml
18
pom.xml
@ -25,11 +25,7 @@
|
|||||||
<version>1.5.2</version>
|
<version>1.5.2</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
|
||||||
<groupId>com.alibaba</groupId>
|
|
||||||
<artifactId>easyexcel</artifactId>
|
|
||||||
<version>3.0.5</version>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -106,18 +102,6 @@
|
|||||||
<version>3.5.5</version>
|
<version>3.5.5</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<!-- <dependency>-->
|
|
||||||
<!-- <groupId>com.baomidou</groupId>-->
|
|
||||||
<!-- <artifactId>mybatis-plus-spring-boot3-starter</artifactId>-->
|
|
||||||
<!-- <version>3.5.5</version>-->
|
|
||||||
<!-- </dependency>-->
|
|
||||||
|
|
||||||
<!-- <dependency>-->
|
|
||||||
<!-- <groupId>com.baomidou</groupId>-->
|
|
||||||
<!-- <artifactId>dynamic-datasource-spring-boot3-starter</artifactId>-->
|
|
||||||
<!-- <version>4.2.0</version>-->
|
|
||||||
<!-- </dependency>-->
|
|
||||||
|
|
||||||
<!-- <dependency>-->
|
<!-- <dependency>-->
|
||||||
<!-- <groupId>com.baomidou</groupId>-->
|
<!-- <groupId>com.baomidou</groupId>-->
|
||||||
<!-- <artifactId>mybatis-plus-spring-boot3-starter</artifactId>-->
|
<!-- <artifactId>mybatis-plus-spring-boot3-starter</artifactId>-->
|
||||||
|
@ -6,6 +6,7 @@ import com.sa.zentao.dao.Result;
|
|||||||
import com.sa.zentao.dao.ZtReleaseDTO;
|
import com.sa.zentao.dao.ZtReleaseDTO;
|
||||||
import com.sa.zentao.dao.ZtStoryDTO;
|
import com.sa.zentao.dao.ZtStoryDTO;
|
||||||
import com.sa.zentao.dao.ZtTaskDTO;
|
import com.sa.zentao.dao.ZtTaskDTO;
|
||||||
|
import com.sa.zentao.entity.ZtRelease;
|
||||||
import com.sa.zentao.entity.ZtStory;
|
import com.sa.zentao.entity.ZtStory;
|
||||||
import com.sa.zentao.qo.ZtProjectQo;
|
import com.sa.zentao.qo.ZtProjectQo;
|
||||||
import com.sa.zentao.qo.ZtReleaseQo;
|
import com.sa.zentao.qo.ZtReleaseQo;
|
||||||
@ -40,6 +41,12 @@ public class ZtReleaseController {
|
|||||||
return Result.success();
|
return Result.success();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@RequestMapping(value = "/getById", method = RequestMethod.POST, produces = "application/json; charset=UTF-8")
|
||||||
|
public Result getById(@RequestBody ZtReleaseQo qo){
|
||||||
|
ZtReleaseDTO ztRelease = releaseService.getReleaseById(qo.getId());
|
||||||
|
return Result.success(ztRelease);
|
||||||
|
}
|
||||||
|
|
||||||
@RequestMapping(value = "/modifyRelease", method = RequestMethod.POST, produces = "application/json; charset=UTF-8")
|
@RequestMapping(value = "/modifyRelease", method = RequestMethod.POST, produces = "application/json; charset=UTF-8")
|
||||||
public Result modifyRelease(@RequestBody ZtReleaseDTO dto){
|
public Result modifyRelease(@RequestBody ZtReleaseDTO dto){
|
||||||
releaseService.modifyRelease(dto);
|
releaseService.modifyRelease(dto);
|
||||||
|
@ -3,7 +3,6 @@ package com.sa.zentao.controller;
|
|||||||
|
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
import com.github.pagehelper.PageInfo;
|
import com.github.pagehelper.PageInfo;
|
||||||
import com.sa.zentao.dao.BusinessException;
|
|
||||||
import com.sa.zentao.dao.Result;
|
import com.sa.zentao.dao.Result;
|
||||||
import com.sa.zentao.dao.ZtProjectDTO;
|
import com.sa.zentao.dao.ZtProjectDTO;
|
||||||
import com.sa.zentao.dao.ZtStoryDTO;
|
import com.sa.zentao.dao.ZtStoryDTO;
|
||||||
@ -147,7 +146,7 @@ public class ZtStoryController {
|
|||||||
//获取需求 根据id
|
//获取需求 根据id
|
||||||
@RequestMapping(value = "/getStoryById", method = RequestMethod.POST, produces = "application/json; charset=UTF-8")
|
@RequestMapping(value = "/getStoryById", method = RequestMethod.POST, produces = "application/json; charset=UTF-8")
|
||||||
public Result getStoryById(@RequestBody ZtStoryDTO dto){
|
public Result getStoryById(@RequestBody ZtStoryDTO dto){
|
||||||
ZtStoryDTO storyDTO = ztStoryService.getStoryById(dto.getId(),dto.getExecution());
|
ZtStoryDTO storyDTO = ztStoryService.getStoryById(dto.getId());
|
||||||
return Result.success(storyDTO);
|
return Result.success(storyDTO);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -160,8 +159,8 @@ public class ZtStoryController {
|
|||||||
//切换执行
|
//切换执行
|
||||||
@RequestMapping(value = "/changeExecution", method = RequestMethod.POST, produces = "application/json; charset=UTF-8")
|
@RequestMapping(value = "/changeExecution", method = RequestMethod.POST, produces = "application/json; charset=UTF-8")
|
||||||
public Result changeExecution(@RequestBody ZtStoryDTO dto){
|
public Result changeExecution(@RequestBody ZtStoryDTO dto){
|
||||||
// ztStoryService.changeExecution(dto);
|
ztStoryService.changeExecution(dto);
|
||||||
throw new BusinessException("弃用");
|
return Result.success();
|
||||||
}
|
}
|
||||||
//切换指派
|
//切换指派
|
||||||
@RequestMapping(value = "/changeAssignedTo", method = RequestMethod.POST, produces = "application/json; charset=UTF-8")
|
@RequestMapping(value = "/changeAssignedTo", method = RequestMethod.POST, produces = "application/json; charset=UTF-8")
|
||||||
|
@ -233,8 +233,6 @@ public class ZtStoryDTO implements Serializable {
|
|||||||
|
|
||||||
private Integer execution;
|
private Integer execution;
|
||||||
|
|
||||||
private List<Integer> executions;
|
|
||||||
|
|
||||||
private Boolean psFlag;
|
private Boolean psFlag;
|
||||||
|
|
||||||
private String executionName;
|
private String executionName;
|
||||||
|
@ -24,6 +24,7 @@ public class ZtProjectstory implements Serializable {
|
|||||||
|
|
||||||
private Integer product;
|
private Integer product;
|
||||||
|
|
||||||
|
private Integer execution;
|
||||||
|
|
||||||
private Integer branch;
|
private Integer branch;
|
||||||
|
|
||||||
@ -33,9 +34,6 @@ public class ZtProjectstory implements Serializable {
|
|||||||
|
|
||||||
@TableField("`order`")
|
@TableField("`order`")
|
||||||
private Integer order;
|
private Integer order;
|
||||||
//execution project
|
|
||||||
@TableField("`type`")
|
|
||||||
private String type;
|
|
||||||
// private Integer execution;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,41 +0,0 @@
|
|||||||
package com.sa.zentao.enums;
|
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.annotation.EnumValue;
|
|
||||||
|
|
||||||
public enum ProjectTypeEnums {
|
|
||||||
|
|
||||||
//产品集
|
|
||||||
program(1,"program"),
|
|
||||||
//项目
|
|
||||||
project(2, "project"),
|
|
||||||
//执行
|
|
||||||
execution(3, "execution"),
|
|
||||||
;
|
|
||||||
|
|
||||||
@EnumValue
|
|
||||||
private int code;
|
|
||||||
private String value;
|
|
||||||
|
|
||||||
private ProjectTypeEnums(int code, String value) {
|
|
||||||
this.code = code;
|
|
||||||
this.value = value;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getCode() {
|
|
||||||
return this.code;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getValue() {
|
|
||||||
return this.value;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static ProjectTypeEnums transferType(Integer code){
|
|
||||||
ProjectTypeEnums[] values = values();
|
|
||||||
for (ProjectTypeEnums v:values ) {
|
|
||||||
if(v.code==code){
|
|
||||||
return v;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
@ -101,5 +101,5 @@ public interface IZtProjectService extends IService<ZtProject> {
|
|||||||
|
|
||||||
List<ZtProject> execListByProject(Integer project);
|
List<ZtProject> execListByProject(Integer project);
|
||||||
|
|
||||||
void removeExecutionStory(Integer id,List<Integer> execList);
|
void removeExecutionStory(Integer id);
|
||||||
}
|
}
|
||||||
|
@ -2,7 +2,6 @@ package com.sa.zentao.service;
|
|||||||
|
|
||||||
import com.sa.zentao.entity.ZtProjectstory;
|
import com.sa.zentao.entity.ZtProjectstory;
|
||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
import com.sa.zentao.enums.ProjectTypeEnums;
|
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@ -17,10 +16,4 @@ import java.util.List;
|
|||||||
public interface IZtProjectstoryService extends IService<ZtProjectstory> {
|
public interface IZtProjectstoryService extends IService<ZtProjectstory> {
|
||||||
|
|
||||||
List<ZtProjectstory> storyListPrd(Integer id);
|
List<ZtProjectstory> storyListPrd(Integer id);
|
||||||
//根据 项目 迭代 查找需求
|
|
||||||
List<ZtProjectstory> projectStoryList(List<Integer> projectIds, ProjectTypeEnums type);
|
|
||||||
//根据需求查找项目 或者迭代
|
|
||||||
List<ZtProjectstory> projectListByStory(List<Integer> storyIds, ProjectTypeEnums type);
|
|
||||||
//一个项目只能关联一个story
|
|
||||||
ZtProjectstory getProject(Integer storyId);
|
|
||||||
}
|
}
|
||||||
|
@ -46,4 +46,6 @@ public interface IZtReleaseService extends IService<ZtRelease> {
|
|||||||
void removeStory(ZtReleaseQo qo);
|
void removeStory(ZtReleaseQo qo);
|
||||||
|
|
||||||
void batchSyncStory(ZtReleaseQo qo);
|
void batchSyncStory(ZtReleaseQo qo);
|
||||||
|
|
||||||
|
ZtReleaseDTO getReleaseById(Integer id);
|
||||||
}
|
}
|
||||||
|
@ -64,7 +64,7 @@ public interface IZtStoryService extends IService<ZtStory> {
|
|||||||
|
|
||||||
void storyYs(ZtStoryDTO dto);
|
void storyYs(ZtStoryDTO dto);
|
||||||
|
|
||||||
ZtStoryDTO getStoryById(Integer id,Integer execution);
|
ZtStoryDTO getStoryById(Integer id);
|
||||||
|
|
||||||
List<ZtProject> execListByProject(ZtStoryDTO dto);
|
List<ZtProject> execListByProject(ZtStoryDTO dto);
|
||||||
|
|
||||||
@ -80,5 +80,5 @@ public interface IZtStoryService extends IService<ZtStory> {
|
|||||||
|
|
||||||
List<ZtStoryDTO> myStoryList(ZtProjectQo qo);
|
List<ZtStoryDTO> myStoryList(ZtProjectQo qo);
|
||||||
|
|
||||||
Map<Integer,List<ZtProject>> getExecutionMapByStory(List<ZtStoryDTO> list);
|
public Map<Integer, ZtProject> getExecutionMapByStory(List<ZtStoryDTO> list);
|
||||||
}
|
}
|
||||||
|
@ -15,7 +15,6 @@ import com.sa.zentao.conf.LoginRiskUser;
|
|||||||
import com.sa.zentao.conf.RiskUserThreadLocal;
|
import com.sa.zentao.conf.RiskUserThreadLocal;
|
||||||
import com.sa.zentao.dao.*;
|
import com.sa.zentao.dao.*;
|
||||||
import com.sa.zentao.entity.*;
|
import com.sa.zentao.entity.*;
|
||||||
import com.sa.zentao.enums.ProjectTypeEnums;
|
|
||||||
import com.sa.zentao.enums.TaskStatus;
|
import com.sa.zentao.enums.TaskStatus;
|
||||||
import com.sa.zentao.enums.TaskType;
|
import com.sa.zentao.enums.TaskType;
|
||||||
import com.sa.zentao.enums.UserType;
|
import com.sa.zentao.enums.UserType;
|
||||||
@ -656,8 +655,8 @@ public class IZtCountService {
|
|||||||
|
|
||||||
|
|
||||||
List<ZtProjectstory> storyList = this.projectstoryService.list(new QueryWrapper<ZtProjectstory>().lambda()
|
List<ZtProjectstory> storyList = this.projectstoryService.list(new QueryWrapper<ZtProjectstory>().lambda()
|
||||||
.in(ZtProjectstory::getProject, ztProjects.stream().map(o -> o.getId()).collect(Collectors.toList()))
|
.in(ZtProjectstory::getExecution, ztProjects.stream().map(o -> o.getId()).collect(Collectors.toList()))
|
||||||
.in(ZtProjectstory::getStory,storyIds).eq(ZtProjectstory::getType, ProjectTypeEnums.execution.getValue())
|
.in(ZtProjectstory::getStory,storyIds)
|
||||||
);
|
);
|
||||||
|
|
||||||
List<ZtStory> ztStories = CollectionUtils.isEmpty(storyList)?new ArrayList<>():this.storyService.listByIds(storyList.stream().map(o -> o.getStory()).collect(Collectors.toList()));
|
List<ZtStory> ztStories = CollectionUtils.isEmpty(storyList)?new ArrayList<>():this.storyService.listByIds(storyList.stream().map(o -> o.getStory()).collect(Collectors.toList()));
|
||||||
|
@ -12,7 +12,6 @@ import com.sa.zentao.dao.ZtStoryDTO;
|
|||||||
import com.sa.zentao.entity.*;
|
import com.sa.zentao.entity.*;
|
||||||
import com.sa.zentao.enums.ActionStatus;
|
import com.sa.zentao.enums.ActionStatus;
|
||||||
import com.sa.zentao.enums.ActionType;
|
import com.sa.zentao.enums.ActionType;
|
||||||
import com.sa.zentao.enums.ProjectTypeEnums;
|
|
||||||
import com.sa.zentao.enums.UserType;
|
import com.sa.zentao.enums.UserType;
|
||||||
import com.sa.zentao.mapper.ZtProjectMapper;
|
import com.sa.zentao.mapper.ZtProjectMapper;
|
||||||
import com.sa.zentao.qo.ZtProjectQo;
|
import com.sa.zentao.qo.ZtProjectQo;
|
||||||
@ -176,7 +175,7 @@ public class ZtProjectServiceImpl extends ServiceImpl<ZtProjectMapper, ZtProject
|
|||||||
//执行 要加看板
|
//执行 要加看板
|
||||||
if("sprint".equalsIgnoreCase(ztProject.getType())){
|
if("sprint".equalsIgnoreCase(ztProject.getType())){
|
||||||
//执行手动加 关联产品
|
//执行手动加 关联产品
|
||||||
List<Integer> projectList = new ArrayList<>(Arrays.asList(dto.getProject()));
|
List<Integer> projectList = dto.getProjectList();
|
||||||
List<ZtExecutionproject> saveList=new ArrayList();
|
List<ZtExecutionproject> saveList=new ArrayList();
|
||||||
for (Integer pId :projectList) {
|
for (Integer pId :projectList) {
|
||||||
ZtExecutionproject p=new ZtExecutionproject();
|
ZtExecutionproject p=new ZtExecutionproject();
|
||||||
@ -185,7 +184,15 @@ public class ZtProjectServiceImpl extends ServiceImpl<ZtProjectMapper, ZtProject
|
|||||||
saveList.add(p);
|
saveList.add(p);
|
||||||
}
|
}
|
||||||
this.executionprojectService.saveBatch(saveList);
|
this.executionprojectService.saveBatch(saveList);
|
||||||
|
// ZtProjectproduct projectproduct = this.projectproductService.getOne(new QueryWrapper<ZtProjectproduct>().lambda()
|
||||||
|
// .eq(ZtProjectproduct::getProject, ztProject.getParent()));
|
||||||
|
|
||||||
|
// ZtProjectproduct p=new ZtProjectproduct();
|
||||||
|
// p.setProject(ztProject.getId());
|
||||||
|
// p.setProduct(projectproduct.getProduct());
|
||||||
|
// this.projectproductService.save(p);
|
||||||
|
// addKanbanLane 执行 三行
|
||||||
|
//addColumn 几十列
|
||||||
int index=5;
|
int index=5;
|
||||||
|
|
||||||
|
|
||||||
@ -788,12 +795,13 @@ public class ZtProjectServiceImpl extends ServiceImpl<ZtProjectMapper, ZtProject
|
|||||||
|
|
||||||
Integer excludeId = dto.getExcludeId();
|
Integer excludeId = dto.getExcludeId();
|
||||||
|
|
||||||
|
ZtProject ztProject = this.baseMapper.selectById(excludeId);
|
||||||
|
|
||||||
|
|
||||||
List<ZtProjectstory> syncStoryList = this.projectstoryService.list(new QueryWrapper<ZtProjectstory>()
|
List<ZtProjectstory> syncStoryList = this.projectstoryService.list(new QueryWrapper<ZtProjectstory>()
|
||||||
.lambda().ne(ZtProjectstory::getProject, excludeId)
|
.lambda().ne(ZtProjectstory::getExecution, 0)
|
||||||
.in(ZtProjectstory::getStory, storyIds)
|
.in(ZtProjectstory::getStory, storyIds)
|
||||||
);
|
);
|
||||||
|
|
||||||
if(!CollectionUtils.isEmpty(syncStoryList)){
|
if(!CollectionUtils.isEmpty(syncStoryList)){
|
||||||
throw new BusinessException("当前已关联请刷新");
|
throw new BusinessException("当前已关联请刷新");
|
||||||
}
|
}
|
||||||
@ -802,8 +810,7 @@ public class ZtProjectServiceImpl extends ServiceImpl<ZtProjectMapper, ZtProject
|
|||||||
for (Integer sId:storyIds) {
|
for (Integer sId:storyIds) {
|
||||||
ZtProjectstory ztProjectstory = new ZtProjectstory();
|
ZtProjectstory ztProjectstory = new ZtProjectstory();
|
||||||
ztProjectstory.setStory(sId);
|
ztProjectstory.setStory(sId);
|
||||||
ztProjectstory.setProject(excludeId);
|
ztProjectstory.setExecution(excludeId);
|
||||||
ztProjectstory.setType(ProjectTypeEnums.execution.getValue());
|
|
||||||
saveList.add(ztProjectstory);
|
saveList.add(ztProjectstory);
|
||||||
order+=5;
|
order+=5;
|
||||||
}
|
}
|
||||||
@ -1230,25 +1237,17 @@ public class ZtProjectServiceImpl extends ServiceImpl<ZtProjectMapper, ZtProject
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional
|
public void removeExecutionStory(Integer id) {
|
||||||
public void removeExecutionStory(Integer storyId,List<Integer> execList) {
|
|
||||||
|
|
||||||
List<ZtProjectstory> list = projectstoryService.list(new QueryWrapper<ZtProjectstory>().lambda()
|
|
||||||
.eq(ZtProjectstory::getType, ProjectTypeEnums.execution.getValue())
|
|
||||||
.in(ZtProjectstory::getProject, execList)
|
|
||||||
.eq(ZtProjectstory::getStory, storyId)
|
|
||||||
);
|
|
||||||
|
|
||||||
|
|
||||||
|
List<ZtProjectstory> list = this.projectstoryService.list(new QueryWrapper<ZtProjectstory>().lambda()
|
||||||
|
.eq(ZtProjectstory::getStory, id).ne(ZtProjectstory::getExecution, 0));
|
||||||
if(!CollectionUtils.isEmpty(list)){
|
if(!CollectionUtils.isEmpty(list)){
|
||||||
for (ZtProjectstory d:list) {
|
|
||||||
//删除迭代
|
//删除迭代
|
||||||
this.projectstoryService.remove(new QueryWrapper<ZtProjectstory>().lambda()
|
this.projectstoryService.remove(new QueryWrapper<ZtProjectstory>().lambda()
|
||||||
.eq(ZtProjectstory::getStory,storyId).eq(ZtProjectstory::getProject,d.getProject()));
|
.eq(ZtProjectstory::getStory,id).ne(ZtProjectstory::getExecution,0));
|
||||||
//删除看板
|
//删除看板
|
||||||
this.kanbanlaneService.removeExecutionStory(d.getProject(),storyId);
|
this.kanbanlaneService.removeExecutionStory(list.get(0).getExecution(),id);
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,15 +1,11 @@
|
|||||||
package com.sa.zentao.service.impl;
|
package com.sa.zentao.service.impl;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
||||||
import com.sa.zentao.entity.ZtProjectstory;
|
import com.sa.zentao.entity.ZtProjectstory;
|
||||||
import com.sa.zentao.enums.ProjectTypeEnums;
|
|
||||||
import com.sa.zentao.mapper.ZtProjectstoryMapper;
|
import com.sa.zentao.mapper.ZtProjectstoryMapper;
|
||||||
import com.sa.zentao.service.IZtProjectstoryService;
|
import com.sa.zentao.service.IZtProjectstoryService;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.util.CollectionUtils;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -27,33 +23,4 @@ public class ZtProjectstoryServiceImpl extends ServiceImpl<ZtProjectstoryMapper,
|
|||||||
public List<ZtProjectstory> storyListPrd(Integer id) {
|
public List<ZtProjectstory> storyListPrd(Integer id) {
|
||||||
return this.baseMapper.storyListPrd(id);
|
return this.baseMapper.storyListPrd(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<ZtProjectstory> projectStoryList(List<Integer> projectIds, ProjectTypeEnums type) {
|
|
||||||
if(CollectionUtils.isEmpty(projectIds)){
|
|
||||||
return new ArrayList<>();
|
|
||||||
}
|
|
||||||
List<ZtProjectstory> ztProjectstories = this.baseMapper.selectList(new QueryWrapper<ZtProjectstory>().lambda().in(ZtProjectstory::getProject, projectIds)
|
|
||||||
.eq(ZtProjectstory::getType, type.getValue())
|
|
||||||
);
|
|
||||||
|
|
||||||
return ztProjectstories;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<ZtProjectstory> projectListByStory(List<Integer> storyIds, ProjectTypeEnums type) {
|
|
||||||
if(CollectionUtils.isEmpty(storyIds)){
|
|
||||||
return new ArrayList<>();
|
|
||||||
}
|
|
||||||
List<ZtProjectstory> ztProjectstories = this.baseMapper.selectList(new QueryWrapper<ZtProjectstory>().lambda().in(ZtProjectstory::getStory, storyIds)
|
|
||||||
.eq(ZtProjectstory::getType, type.getValue())
|
|
||||||
);
|
|
||||||
|
|
||||||
return ztProjectstories;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ZtProjectstory getProject(Integer storyId) {
|
|
||||||
return this.baseMapper.selectOne(new QueryWrapper<ZtProjectstory>().lambda().eq(ZtProjectstory::getStory,storyId).eq(ZtProjectstory::getType,ProjectTypeEnums.project.getValue()));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -8,7 +8,6 @@ import com.github.pagehelper.PageInfo;
|
|||||||
import com.sa.zentao.conf.RiskUserThreadLocal;
|
import com.sa.zentao.conf.RiskUserThreadLocal;
|
||||||
import com.sa.zentao.dao.*;
|
import com.sa.zentao.dao.*;
|
||||||
import com.sa.zentao.entity.*;
|
import com.sa.zentao.entity.*;
|
||||||
import com.sa.zentao.enums.ProjectTypeEnums;
|
|
||||||
import com.sa.zentao.enums.StoryStageEnums;
|
import com.sa.zentao.enums.StoryStageEnums;
|
||||||
import com.sa.zentao.mapper.ZtReleaseMapper;
|
import com.sa.zentao.mapper.ZtReleaseMapper;
|
||||||
import com.sa.zentao.qo.ZtReleaseQo;
|
import com.sa.zentao.qo.ZtReleaseQo;
|
||||||
@ -65,9 +64,7 @@ public class ZtReleaseServiceImpl extends ServiceImpl<ZtReleaseMapper, ZtRelease
|
|||||||
List<String> execIds = new ArrayList<String>(Arrays.asList(execStr.split(",")));
|
List<String> execIds = new ArrayList<String>(Arrays.asList(execStr.split(",")));
|
||||||
|
|
||||||
List<ZtProjectstory> list = this.projectstoryService.list(new QueryWrapper<ZtProjectstory>().lambda()
|
List<ZtProjectstory> list = this.projectstoryService.list(new QueryWrapper<ZtProjectstory>().lambda()
|
||||||
.in(ZtProjectstory::getProject, execIds)
|
.in(ZtProjectstory::getExecution, execIds));
|
||||||
.eq(ZtProjectstory::getType, ProjectTypeEnums.execution.getValue())
|
|
||||||
);
|
|
||||||
if(!CollectionUtils.isEmpty(list)){
|
if(!CollectionUtils.isEmpty(list)){
|
||||||
List<ZtStory> sList = this.storyService.list(new QueryWrapper<ZtStory>()
|
List<ZtStory> sList = this.storyService.list(new QueryWrapper<ZtStory>()
|
||||||
.lambda().eq(ZtStory::getStatus, "active")
|
.lambda().eq(ZtStory::getStatus, "active")
|
||||||
@ -294,7 +291,7 @@ public class ZtReleaseServiceImpl extends ServiceImpl<ZtReleaseMapper, ZtRelease
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Map<Integer, List<ZtProject>> executionMapByStory = this.storyService.getExecutionMapByStory(list);
|
Map<Integer, ZtProject> executionMapByStory = this.storyService.getExecutionMapByStory(list);
|
||||||
|
|
||||||
|
|
||||||
for (ZtStoryDTO d : list) {
|
for (ZtStoryDTO d : list) {
|
||||||
@ -308,11 +305,11 @@ public class ZtReleaseServiceImpl extends ServiceImpl<ZtReleaseMapper, ZtRelease
|
|||||||
if(ztUser!=null){
|
if(ztUser!=null){
|
||||||
d.setOpenedbyName(ztUser.getNickname());
|
d.setOpenedbyName(ztUser.getNickname());
|
||||||
}
|
}
|
||||||
// List<ZtProject> ztProject = executionMapByStory.get(d.getId());
|
ZtProject ztProject = executionMapByStory.get(d.getId());
|
||||||
// if(ztProject!=null){
|
if(ztProject!=null){
|
||||||
// d.setExecution(ztProject.getId());
|
d.setExecution(ztProject.getId());
|
||||||
// d.setExecutionName(ztProject.getName());
|
d.setExecutionName(ztProject.getName());
|
||||||
// }
|
}
|
||||||
}
|
}
|
||||||
return new PageInfo<ZtStoryDTO>(list);
|
return new PageInfo<ZtStoryDTO>(list);
|
||||||
}
|
}
|
||||||
@ -329,13 +326,13 @@ public class ZtReleaseServiceImpl extends ServiceImpl<ZtReleaseMapper, ZtRelease
|
|||||||
return new PageInfo<ZtStoryDTO>();
|
return new PageInfo<ZtStoryDTO>();
|
||||||
}
|
}
|
||||||
//迭代查找所有需求
|
//迭代查找所有需求
|
||||||
List<ZtProjectstory> execStorys = projectstoryService.projectStoryList(execList.stream().map(o -> o.getExecution()).collect(Collectors.toList()),ProjectTypeEnums.execution);
|
List<ZtProjectstory> pStorys = this.projectstoryService.list(new QueryWrapper<ZtProjectstory>().lambda().in(ZtProjectstory::getExecution,
|
||||||
|
execList.stream().map(o -> o.getExecution()).collect(Collectors.toList())));
|
||||||
if(CollectionUtils.isEmpty(execStorys)){
|
if(CollectionUtils.isEmpty(pStorys)){
|
||||||
return new PageInfo<ZtStoryDTO>();
|
return new PageInfo<ZtStoryDTO>();
|
||||||
}
|
}
|
||||||
//过滤掉已关联的迭代需求
|
//过滤掉已关联的迭代需求
|
||||||
List<Integer> storyIdList = execStorys.stream().map(o -> o.getStory()).collect(Collectors.toList());
|
List<Integer> storyIdList = pStorys.stream().map(o -> o.getStory()).collect(Collectors.toList());
|
||||||
|
|
||||||
List<ZtRelease> ztReleases = this.baseMapper.selectList(new QueryWrapper<ZtRelease>().lambda().eq(ZtRelease::getProject, project));
|
List<ZtRelease> ztReleases = this.baseMapper.selectList(new QueryWrapper<ZtRelease>().lambda().eq(ZtRelease::getProject, project));
|
||||||
|
|
||||||
@ -346,7 +343,7 @@ public class ZtReleaseServiceImpl extends ServiceImpl<ZtReleaseMapper, ZtRelease
|
|||||||
if(!CollectionUtils.isEmpty(list)){
|
if(!CollectionUtils.isEmpty(list)){
|
||||||
List<Integer> fIds = list.stream().map(o -> o.getObjectId()).collect(Collectors.toList());
|
List<Integer> fIds = list.stream().map(o -> o.getObjectId()).collect(Collectors.toList());
|
||||||
|
|
||||||
Iterator<ZtProjectstory> iterator = execStorys.iterator();
|
Iterator<ZtProjectstory> iterator = pStorys.iterator();
|
||||||
while (iterator.hasNext()){
|
while (iterator.hasNext()){
|
||||||
ZtProjectstory next = iterator.next();
|
ZtProjectstory next = iterator.next();
|
||||||
if(fIds.contains(next.getStory())){
|
if(fIds.contains(next.getStory())){
|
||||||
@ -354,7 +351,7 @@ public class ZtReleaseServiceImpl extends ServiceImpl<ZtReleaseMapper, ZtRelease
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
qo.setStoryList(execStorys.stream().map(o->o.getStory()).collect(Collectors.toList()));
|
qo.setStoryList(pStorys.stream().map(o->o.getStory()).collect(Collectors.toList()));
|
||||||
Page<ZtReleaseDTO> page = PageHelper.startPage(qo.getCurrentPage(), qo.getPageSize());
|
Page<ZtReleaseDTO> page = PageHelper.startPage(qo.getCurrentPage(), qo.getPageSize());
|
||||||
List<ZtStoryDTO> storyList = this.releaseDetailsService.storyPageList(qo);
|
List<ZtStoryDTO> storyList = this.releaseDetailsService.storyPageList(qo);
|
||||||
|
|
||||||
@ -362,7 +359,7 @@ public class ZtReleaseServiceImpl extends ServiceImpl<ZtReleaseMapper, ZtRelease
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Map<Integer, ZtProject> executionMapByStory = this.storyService.getExecutionMapByStory(storyList);
|
Map<Integer, ZtProject> executionMapByStory = this.storyService.getExecutionMapByStory(storyList);
|
||||||
|
|
||||||
|
|
||||||
for (ZtStoryDTO d : storyList) {
|
for (ZtStoryDTO d : storyList) {
|
||||||
@ -375,11 +372,11 @@ public class ZtReleaseServiceImpl extends ServiceImpl<ZtReleaseMapper, ZtRelease
|
|||||||
if(ztUser!=null){
|
if(ztUser!=null){
|
||||||
d.setOpenedbyName(ztUser.getNickname());
|
d.setOpenedbyName(ztUser.getNickname());
|
||||||
}
|
}
|
||||||
// ZtProject ztProject = executionMapByStory.get(d.getId());
|
ZtProject ztProject = executionMapByStory.get(d.getId());
|
||||||
// if(ztProject!=null){
|
if(ztProject!=null){
|
||||||
// d.setExecution(ztProject.getId());
|
d.setExecution(ztProject.getId());
|
||||||
// d.setExecutionName(ztProject.getName());
|
d.setExecutionName(ztProject.getName());
|
||||||
// }
|
}
|
||||||
}
|
}
|
||||||
return new PageInfo<ZtStoryDTO>(storyList);
|
return new PageInfo<ZtStoryDTO>(storyList);
|
||||||
}
|
}
|
||||||
@ -422,4 +419,27 @@ public class ZtReleaseServiceImpl extends ServiceImpl<ZtReleaseMapper, ZtRelease
|
|||||||
releaseDetailsService.saveBatch(saveBatch);
|
releaseDetailsService.saveBatch(saveBatch);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ZtReleaseDTO getReleaseById(Integer id) {
|
||||||
|
ZtRelease ztRelease = this.baseMapper.selectById(id);
|
||||||
|
ZtReleaseDTO d=new ZtReleaseDTO();
|
||||||
|
BeanUtils.copyProperties(ztRelease,d);
|
||||||
|
Map<String, ZtUser> userMap = this.userService.userMapByIds(null);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
ZtUser ztUser = userMap.get(d.getAssignedTo());
|
||||||
|
if(ztUser!=null){
|
||||||
|
d.setAssignedToName(ztUser.getNickname());
|
||||||
|
}
|
||||||
|
|
||||||
|
ztUser = userMap.get(d.getCreatedby());
|
||||||
|
if(ztUser!=null){
|
||||||
|
d.setCreatedby(ztUser.getNickname());
|
||||||
|
}
|
||||||
|
return d;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -109,7 +109,7 @@ public class ZtStoryServiceImpl extends ServiceImpl<ZtStoryMapper, ZtStory> impl
|
|||||||
|
|
||||||
Map<Integer, List<ZtStoryreviewDTO>> rMap = getReviewMap(list);
|
Map<Integer, List<ZtStoryreviewDTO>> rMap = getReviewMap(list);
|
||||||
|
|
||||||
Map<Integer, List<ZtProject>> executionMapByStory = getExecutionMapByStory(list);
|
Map<Integer, ZtProject> executionMapByStory = getExecutionMapByStory(list);
|
||||||
|
|
||||||
|
|
||||||
for (ZtStoryDTO d : list) {
|
for (ZtStoryDTO d : list) {
|
||||||
@ -124,10 +124,10 @@ public class ZtStoryServiceImpl extends ServiceImpl<ZtStoryMapper, ZtStory> impl
|
|||||||
if(ztUser!=null){
|
if(ztUser!=null){
|
||||||
d.setOpenedbyName(ztUser.getNickname());
|
d.setOpenedbyName(ztUser.getNickname());
|
||||||
}
|
}
|
||||||
List<ZtProject> ztProjectList = executionMapByStory.get(d.getId());
|
ZtProject ztProject = executionMapByStory.get(d.getId());
|
||||||
if(!CollectionUtils.isEmpty(ztProjectList)){
|
if(ztProject!=null){
|
||||||
// d.setExecution(ztProject.getId());
|
d.setExecution(ztProject.getId());
|
||||||
d.setExecutionName(ztProjectList.stream().map(o->o.getName()).collect(Collectors.joining(",")));
|
d.setExecutionName(ztProject.getName());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -266,54 +266,46 @@ public class ZtStoryServiceImpl extends ServiceImpl<ZtStoryMapper, ZtStory> impl
|
|||||||
this.projectstoryService.save(ztProjectstory);
|
this.projectstoryService.save(ztProjectstory);
|
||||||
}
|
}
|
||||||
|
|
||||||
List<Integer> executions = dto.getExecutions();
|
// 1.如果是产品 那么关联 项目 执行 2.如果是项目 关联执行
|
||||||
if(!CollectionUtils.isEmpty(executions)){
|
if(dto.getExecution()!=null&&dto.getExecution()!=0){
|
||||||
// this.projectproductService.getOne(new QueryWrapper<>().lambda().eq());
|
List<ZtProjectstory> syncList = this.projectstoryService.list(new QueryWrapper<ZtProjectstory>().lambda().eq(ZtProjectstory::getStory, s.getId())
|
||||||
//拿执行的项目id
|
.eq(ZtProjectstory::getExecution, dto.getExecution()));
|
||||||
// this.executionprojectService.getOne(new QueryWrapper<ZtExecutionproject>().lambda().eq())
|
if(CollectionUtils.isEmpty(syncList)){
|
||||||
this.executionBindStory(s,executions);
|
if (s.getProduct() != null&&s.getProduct()!=0) {
|
||||||
|
|
||||||
|
List<ZtExecutionproject> execlist = this.executionprojectService.list(new QueryWrapper<ZtExecutionproject>().lambda()
|
||||||
|
.eq(ZtExecutionproject::getExecution, dto.getExecution()));
|
||||||
|
if(CollectionUtils.isEmpty(execlist)){
|
||||||
|
List<ZtProjectproduct> list = this.projectproductService.list(new QueryWrapper<ZtProjectproduct>()
|
||||||
|
.lambda().eq(ZtProjectproduct::getProduct, s.getProduct()));
|
||||||
|
ZtProjectproduct ztProjectproduct = list.get(0);
|
||||||
|
|
||||||
|
|
||||||
|
ZtProjectstory ztProjectstory = new ZtProjectstory();
|
||||||
|
ztProjectstory.setOrder(1);
|
||||||
|
ztProjectstory.setStory(s.getId());
|
||||||
|
ztProjectstory.setProject(ztProjectproduct.getProject());
|
||||||
|
this.projectstoryService.save(ztProjectstory);
|
||||||
|
//添加执行
|
||||||
|
}else{
|
||||||
|
|
||||||
|
ZtProjectstory ztProjectstory = new ZtProjectstory();
|
||||||
|
ztProjectstory.setOrder(1);
|
||||||
|
ztProjectstory.setStory(s.getId());
|
||||||
|
ztProjectstory.setProject(execlist.get(0).getProject());
|
||||||
|
this.projectstoryService.save(ztProjectstory);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 1.如果是产品 那么关联 项目 执行 2.如果是项目 关联执行
|
|
||||||
// if(dto.getExecution()!=null&&dto.getExecution()!=0){
|
|
||||||
// List<ZtProjectstory> syncList = this.projectstoryService.list(new QueryWrapper<ZtProjectstory>().lambda().eq(ZtProjectstory::getStory, s.getId())
|
}
|
||||||
// .eq(ZtProjectstory::getExecution, dto.getExecution()));
|
}
|
||||||
// if(CollectionUtils.isEmpty(syncList)){
|
|
||||||
// if (s.getProduct() != null&&s.getProduct()!=0) {
|
ZtProjectDTO d=new ZtProjectDTO();
|
||||||
//
|
d.setExcludeId(dto.getExecution());
|
||||||
// List<ZtExecutionproject> execlist = this.executionprojectService.list(new QueryWrapper<ZtExecutionproject>().lambda()
|
d.setStoryIds(new ArrayList<>(){{add(s.getId());}});
|
||||||
// .eq(ZtExecutionproject::getExecution, dto.getExecution()));
|
projectService.executionSyncStory(d);
|
||||||
// if(CollectionUtils.isEmpty(execlist)){
|
}
|
||||||
// List<ZtProjectproduct> list = this.projectproductService.list(new QueryWrapper<ZtProjectproduct>()
|
|
||||||
// .lambda().eq(ZtProjectproduct::getProduct, s.getProduct()));
|
|
||||||
// ZtProjectproduct ztProjectproduct = list.get(0);
|
|
||||||
//
|
|
||||||
//
|
|
||||||
// ZtProjectstory ztProjectstory = new ZtProjectstory();
|
|
||||||
// ztProjectstory.setOrder(1);
|
|
||||||
// ztProjectstory.setStory(s.getId());
|
|
||||||
// ztProjectstory.setProject(ztProjectproduct.getProject());
|
|
||||||
// this.projectstoryService.save(ztProjectstory);
|
|
||||||
// //添加执行
|
|
||||||
// }else{
|
|
||||||
//
|
|
||||||
// ZtProjectstory ztProjectstory = new ZtProjectstory();
|
|
||||||
// ztProjectstory.setOrder(1);
|
|
||||||
// ztProjectstory.setStory(s.getId());
|
|
||||||
// ztProjectstory.setProject(execlist.get(0).getProject());
|
|
||||||
// this.projectstoryService.save(ztProjectstory);
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
//
|
|
||||||
//
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// ZtProjectDTO d=new ZtProjectDTO();
|
|
||||||
// d.setExcludeId(dto.getExecution());
|
|
||||||
// d.setStoryIds(new ArrayList<>(){{add(s.getId());}});
|
|
||||||
// projectService.executionSyncStory(d);
|
|
||||||
// }
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -329,34 +321,18 @@ public class ZtStoryServiceImpl extends ServiceImpl<ZtStoryMapper, ZtStory> impl
|
|||||||
}
|
}
|
||||||
//老的迭代
|
//老的迭代
|
||||||
List<ZtProjectstory> pList = projectstoryService.list(new QueryWrapper<ZtProjectstory>().lambda().eq(ZtProjectstory::getStory, ztStory.getId())
|
List<ZtProjectstory> pList = projectstoryService.list(new QueryWrapper<ZtProjectstory>().lambda().eq(ZtProjectstory::getStory, ztStory.getId())
|
||||||
.eq(ZtProjectstory::getType, ProjectTypeEnums.execution.getValue())
|
.ne(ZtProjectstory::getExecution, 0)
|
||||||
);
|
);
|
||||||
|
|
||||||
//如果关联了迭代 执行
|
Integer execution = dto.getExecution();
|
||||||
List<Integer> executions = dto.getExecutions();
|
if(execution!=null&&execution!=0){
|
||||||
if(!CollectionUtils.isEmpty(executions)){
|
if(!CollectionUtils.isEmpty(pList)&&pList.get(0).getExecution().intValue()!=execution.intValue()){
|
||||||
List<Integer> oldExecIds = pList.stream().map(o -> o.getProject()).collect(Collectors.toList());
|
List<ZtTask> list = this.taskService.list(new QueryWrapper<ZtTask>().lambda().eq(ZtTask::getStory, ztStory.getId()));
|
||||||
//查找需求管理的项目 需求只会被项目关联一次
|
if(!CollectionUtils.isEmpty(list)){
|
||||||
|
throw new BusinessException("当前任务已开始无法更换迭代");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
List execList=new ArrayList();
|
|
||||||
for (Integer exec:executions) {
|
|
||||||
if(!oldExecIds.contains(exec)){
|
|
||||||
//新增迭代关联
|
|
||||||
execList.add(exec);
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//迭代关联
|
|
||||||
executionBindStory(ztStory,execList);
|
|
||||||
execList.clear();
|
|
||||||
for (Integer oldExec:oldExecIds) {
|
|
||||||
if(!executions.contains(oldExec)){
|
|
||||||
//删除迭代关联
|
|
||||||
execList.add(oldExec);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//取消关联
|
|
||||||
executionUnBindStory(ztStory.getId(),execList);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -370,6 +346,7 @@ public class ZtStoryServiceImpl extends ServiceImpl<ZtStoryMapper, ZtStory> impl
|
|||||||
this.productService.updateById(product);
|
this.productService.updateById(product);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if(!StringUtils.isEmpty(dto.getFileUrl())){
|
||||||
ZtStoryspec spec = this.storyspecService.getOne(new QueryWrapper<ZtStoryspec>().lambda().eq(ZtStoryspec::getStory, id));
|
ZtStoryspec spec = this.storyspecService.getOne(new QueryWrapper<ZtStoryspec>().lambda().eq(ZtStoryspec::getStory, id));
|
||||||
if(spec==null){
|
if(spec==null){
|
||||||
spec = new ZtStoryspec();
|
spec = new ZtStoryspec();
|
||||||
@ -381,14 +358,11 @@ public class ZtStoryServiceImpl extends ServiceImpl<ZtStoryMapper, ZtStory> impl
|
|||||||
spec.setFiles(dto.getFileUrl());
|
spec.setFiles(dto.getFileUrl());
|
||||||
storyspecService.save(spec);
|
storyspecService.save(spec);
|
||||||
}else{
|
}else{
|
||||||
spec.setVersion(1);
|
|
||||||
spec.setTitle(ztStory.getTitle());
|
|
||||||
spec.setSpec(dto.getSpec());
|
|
||||||
spec.setVerify(dto.getVerify());
|
|
||||||
spec.setFiles(dto.getFileUrl());
|
spec.setFiles(dto.getFileUrl());
|
||||||
storyspecService.update(new UpdateWrapper<ZtStoryspec>().lambda().eq(ZtStoryspec::getStory,id).set(ZtStoryspec::getFiles,dto.getFileUrl())
|
storyspecService.update(new UpdateWrapper<ZtStoryspec>().lambda().eq(ZtStoryspec::getStory,id).set(ZtStoryspec::getFiles,dto.getFileUrl())
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -432,174 +406,60 @@ public class ZtStoryServiceImpl extends ServiceImpl<ZtStoryMapper, ZtStory> impl
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
// if(dto.getExecution()!=null&&dto.getExecution()!=0){
|
if(dto.getExecution()!=null&&dto.getExecution()!=0){
|
||||||
// //1.没有绑定 解绑
|
//1.没有绑定 解绑
|
||||||
// ZtProjectstory execStory = this.projectstoryService.getOne(new QueryWrapper<ZtProjectstory>().lambda().eq(ZtProjectstory::getStory, ztStory.getId())
|
ZtProjectstory execStory = this.projectstoryService.getOne(new QueryWrapper<ZtProjectstory>().lambda().eq(ZtProjectstory::getStory, ztStory.getId())
|
||||||
// .ne(ZtProjectstory::getExecution, 0));
|
.ne(ZtProjectstory::getExecution, 0));
|
||||||
// //如果没有关联过迭代 去关联 第一次
|
//如果没有关联过迭代 去关联 第一次
|
||||||
// if(execStory==null){
|
if(execStory==null){
|
||||||
// //如果是产品型需求 加项目 加迭代 如果是项目型产品 加迭代
|
//如果是产品型需求 加项目 加迭代 如果是项目型产品 加迭代
|
||||||
//
|
|
||||||
// if (ztStory.getProduct() != null&&ztStory.getProduct()!=0) {
|
if (ztStory.getProduct() != null&&ztStory.getProduct()!=0) {
|
||||||
// List<ZtExecutionproject> execlist = this.executionprojectService.list(new QueryWrapper<ZtExecutionproject>().lambda()
|
List<ZtExecutionproject> execlist = this.executionprojectService.list(new QueryWrapper<ZtExecutionproject>().lambda()
|
||||||
// .eq(ZtExecutionproject::getExecution, dto.getExecution()));
|
.eq(ZtExecutionproject::getExecution, dto.getExecution()));
|
||||||
// if(CollectionUtils.isEmpty(execlist)){
|
if(CollectionUtils.isEmpty(execlist)){
|
||||||
// List<ZtProjectproduct> list = this.projectproductService.list(new QueryWrapper<ZtProjectproduct>()
|
List<ZtProjectproduct> list = this.projectproductService.list(new QueryWrapper<ZtProjectproduct>()
|
||||||
// .lambda().eq(ZtProjectproduct::getProduct, ztStory.getProduct()));
|
.lambda().eq(ZtProjectproduct::getProduct, ztStory.getProduct()));
|
||||||
// ZtProjectproduct ztProjectproduct = list.get(0);
|
ZtProjectproduct ztProjectproduct = list.get(0);
|
||||||
//
|
|
||||||
//
|
|
||||||
// ZtProjectstory ztProjectstory = new ZtProjectstory();
|
|
||||||
// ztProjectstory.setOrder(1);
|
|
||||||
// ztProjectstory.setStory(ztStory.getId());
|
|
||||||
// ztProjectstory.setProject(ztProjectproduct.getProject());
|
|
||||||
// this.projectstoryService.save(ztProjectstory);
|
|
||||||
// //添加执行
|
|
||||||
// }else{
|
|
||||||
//
|
|
||||||
// ZtProjectstory ztProjectstory = new ZtProjectstory();
|
|
||||||
// ztProjectstory.setOrder(1);
|
|
||||||
// ztProjectstory.setStory(ztStory.getId());
|
|
||||||
// ztProjectstory.setProject(execlist.get(0).getProject());
|
|
||||||
// this.projectstoryService.save(ztProjectstory);
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// ZtProjectDTO d=new ZtProjectDTO();
|
|
||||||
// d.setExcludeId(dto.getExecution());
|
|
||||||
// d.setStoryIds(new ArrayList<>(){{add(ztStory.getId());}});
|
|
||||||
// projectService.executionSyncStory(d);
|
|
||||||
// }
|
|
||||||
// else if(dto.getExecution().intValue()==pList.get(0).getExecution().intValue()){
|
|
||||||
// //编辑没动 不用管
|
|
||||||
// }else{
|
|
||||||
//
|
|
||||||
//
|
|
||||||
//
|
|
||||||
// //2.绑定了 切换
|
|
||||||
// //1. 删除projectStory 迭代的 删除看板
|
|
||||||
// projectService.removeExecutionStory(ztStory.getId(),dto.getExecution());
|
|
||||||
// //2. 新增
|
|
||||||
// ZtProjectDTO d=new ZtProjectDTO();
|
|
||||||
// d.setExcludeId(dto.getExecution());
|
|
||||||
// d.setStoryIds(new ArrayList<>(){{add(ztStory.getId());}});
|
|
||||||
// projectService.executionSyncStory(d);
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// }
|
|
||||||
// else{
|
|
||||||
// List<ZtTask> list = this.taskService.list(new QueryWrapper<ZtTask>().lambda().eq(ZtTask::getStory, ztStory.getId()));
|
|
||||||
// if(!CollectionUtils.isEmpty(list)){
|
|
||||||
// throw new BusinessException("当前任务已开始无法更换迭代");
|
|
||||||
// }
|
|
||||||
// //3可能解绑 查询是否以前关联过
|
|
||||||
// projectService.removeExecutionStory(ztStory.getId());
|
|
||||||
// }
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private void executionBindStory(ZtStory story,List<Integer> execList){
|
ZtProjectstory ztProjectstory = new ZtProjectstory();
|
||||||
Integer storyId=story.getId();
|
ztProjectstory.setOrder(1);
|
||||||
if(CollectionUtils.isEmpty(execList)){
|
ztProjectstory.setStory(ztStory.getId());
|
||||||
return;
|
ztProjectstory.setProject(ztProjectproduct.getProject());
|
||||||
}
|
this.projectstoryService.save(ztProjectstory);
|
||||||
|
//添加执行
|
||||||
List<ZtExecutionproject> execProjectList = this.executionprojectService.list(new QueryWrapper<ZtExecutionproject>().lambda().eq(ZtExecutionproject::getProject, execList));
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
for (Integer execId:execList) {
|
|
||||||
List<ZtExecutionproject> fProjectList = execProjectList.stream().filter(o -> o.getExecution().intValue() == execId.intValue()).collect(Collectors.toList());
|
|
||||||
Integer project = fProjectList.get(0).getProject();
|
|
||||||
|
|
||||||
List<ZtProjectstory> list = this.projectstoryService.list(new QueryWrapper<ZtProjectstory>().lambda()
|
|
||||||
.eq(ZtProjectstory::getProject, project)
|
|
||||||
.eq(ZtProjectstory::getStory, storyId)
|
|
||||||
);
|
|
||||||
|
|
||||||
if(CollectionUtils.isEmpty(list)){
|
|
||||||
ZtProjectDTO d=new ZtProjectDTO();
|
|
||||||
d.setStoryIds(new ArrayList<>(Arrays.asList(storyId)));
|
|
||||||
d.setProject(project);
|
|
||||||
this.projectService.projectSyncStory(d);
|
|
||||||
}
|
|
||||||
|
|
||||||
ZtProjectDTO d=new ZtProjectDTO();
|
|
||||||
d.setStoryIds(new ArrayList<>(Arrays.asList(storyId)));
|
|
||||||
d.setExcludeId(execId);
|
|
||||||
this.projectService.executionSyncStory(d);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void executionUnBindStory(Integer storyId,List<Integer> execList){
|
|
||||||
if(CollectionUtils.isEmpty(execList)){
|
|
||||||
return;
|
|
||||||
}else{
|
}else{
|
||||||
List<ZtTask> list = this.taskService.list(new QueryWrapper<ZtTask>().lambda().eq(ZtTask::getStory, storyId)
|
|
||||||
.in(ZtTask::getExecution, execList)
|
|
||||||
);
|
|
||||||
|
|
||||||
if(!CollectionUtils.isEmpty(list)){
|
ZtProjectstory ztProjectstory = new ZtProjectstory();
|
||||||
throw new BusinessException("当前迭代已开始任务,无法取消关联 迭代Id:"+list.get(0).getId());
|
ztProjectstory.setOrder(1);
|
||||||
|
ztProjectstory.setStory(ztStory.getId());
|
||||||
|
ztProjectstory.setProject(execlist.get(0).getProject());
|
||||||
|
this.projectstoryService.save(ztProjectstory);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
ZtProjectDTO d=new ZtProjectDTO();
|
||||||
|
d.setExcludeId(dto.getExecution());
|
||||||
|
d.setStoryIds(new ArrayList<>(){{add(ztStory.getId());}});
|
||||||
|
projectService.executionSyncStory(d);
|
||||||
|
}
|
||||||
|
else if(dto.getExecution().intValue()==pList.get(0).getExecution().intValue()){
|
||||||
|
//编辑没动 不用管
|
||||||
|
}else{
|
||||||
|
|
||||||
projectService.removeExecutionStory(storyId,execList);
|
|
||||||
|
|
||||||
// if(dto.getExecution()!=null&&dto.getExecution()!=0){
|
|
||||||
// //1.没有绑定 解绑
|
//2.绑定了 切换
|
||||||
// ZtProjectstory execStory = this.projectstoryService.getOne(new QueryWrapper<ZtProjectstory>().lambda().eq(ZtProjectstory::getStory, ztStory.getId())
|
//1. 删除projectStory 迭代的 删除看板
|
||||||
// .ne(ZtProjectstory::getExecution, 0));
|
projectService.removeExecutionStory(ztStory.getId());
|
||||||
// //如果没有关联过迭代 去关联 第一次
|
//2. 新增
|
||||||
// if(execStory==null){
|
ZtProjectDTO d=new ZtProjectDTO();
|
||||||
// //如果是产品型需求 加项目 加迭代 如果是项目型产品 加迭代
|
d.setExcludeId(dto.getExecution());
|
||||||
//
|
d.setStoryIds(new ArrayList<>(){{add(ztStory.getId());}});
|
||||||
// if (ztStory.getProduct() != null&&ztStory.getProduct()!=0) {
|
projectService.executionSyncStory(d);
|
||||||
// List<ZtExecutionproject> execlist = this.executionprojectService.list(new QueryWrapper<ZtExecutionproject>().lambda()
|
}
|
||||||
// .eq(ZtExecutionproject::getExecution, dto.getExecution()));
|
|
||||||
// if(CollectionUtils.isEmpty(execlist)){
|
}
|
||||||
// List<ZtProjectproduct> list = this.projectproductService.list(new QueryWrapper<ZtProjectproduct>()
|
|
||||||
// .lambda().eq(ZtProjectproduct::getProduct, ztStory.getProduct()));
|
|
||||||
// ZtProjectproduct ztProjectproduct = list.get(0);
|
|
||||||
//
|
|
||||||
//
|
|
||||||
// ZtProjectstory ztProjectstory = new ZtProjectstory();
|
|
||||||
// ztProjectstory.setOrder(1);
|
|
||||||
// ztProjectstory.setStory(ztStory.getId());
|
|
||||||
// ztProjectstory.setProject(ztProjectproduct.getProject());
|
|
||||||
// this.projectstoryService.save(ztProjectstory);
|
|
||||||
// //添加执行
|
|
||||||
// }else{
|
|
||||||
//
|
|
||||||
// ZtProjectstory ztProjectstory = new ZtProjectstory();
|
|
||||||
// ztProjectstory.setOrder(1);
|
|
||||||
// ztProjectstory.setStory(ztStory.getId());
|
|
||||||
// ztProjectstory.setProject(execlist.get(0).getProject());
|
|
||||||
// this.projectstoryService.save(ztProjectstory);
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// ZtProjectDTO d=new ZtProjectDTO();
|
|
||||||
// d.setExcludeId(dto.getExecution());
|
|
||||||
// d.setStoryIds(new ArrayList<>(){{add(ztStory.getId());}});
|
|
||||||
// projectService.executionSyncStory(d);
|
|
||||||
// }
|
|
||||||
// else if(dto.getExecution().intValue()==pList.get(0).getExecution().intValue()){
|
|
||||||
// //编辑没动 不用管
|
|
||||||
// }else{
|
|
||||||
//
|
|
||||||
//
|
|
||||||
//
|
|
||||||
// //2.绑定了 切换
|
|
||||||
// //1. 删除projectStory 迭代的 删除看板
|
|
||||||
// projectService.removeExecutionStory(ztStory.getId(),dto.getExecution());
|
|
||||||
// //2. 新增
|
|
||||||
// ZtProjectDTO d=new ZtProjectDTO();
|
|
||||||
// d.setExcludeId(dto.getExecution());
|
|
||||||
// d.setStoryIds(new ArrayList<>(){{add(ztStory.getId());}});
|
|
||||||
// projectService.executionSyncStory(d);
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// }
|
|
||||||
// else{
|
// else{
|
||||||
// List<ZtTask> list = this.taskService.list(new QueryWrapper<ZtTask>().lambda().eq(ZtTask::getStory, ztStory.getId()));
|
// List<ZtTask> list = this.taskService.list(new QueryWrapper<ZtTask>().lambda().eq(ZtTask::getStory, ztStory.getId()));
|
||||||
// if(!CollectionUtils.isEmpty(list)){
|
// if(!CollectionUtils.isEmpty(list)){
|
||||||
@ -608,10 +468,9 @@ public class ZtStoryServiceImpl extends ServiceImpl<ZtStoryMapper, ZtStory> impl
|
|||||||
// //3可能解绑 查询是否以前关联过
|
// //3可能解绑 查询是否以前关联过
|
||||||
// projectService.removeExecutionStory(ztStory.getId());
|
// projectService.removeExecutionStory(ztStory.getId());
|
||||||
// }
|
// }
|
||||||
//
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void addRemark(ZtStoryDTO dto) {
|
public void addRemark(ZtStoryDTO dto) {
|
||||||
ZtStory ztStory = this.baseMapper.selectById(dto.getId());
|
ZtStory ztStory = this.baseMapper.selectById(dto.getId());
|
||||||
@ -620,13 +479,13 @@ public class ZtStoryServiceImpl extends ServiceImpl<ZtStoryMapper, ZtStory> impl
|
|||||||
Integer projectId=null;
|
Integer projectId=null;
|
||||||
Integer executionId=null;
|
Integer executionId=null;
|
||||||
if(!CollectionUtils.isEmpty(list)){
|
if(!CollectionUtils.isEmpty(list)){
|
||||||
List<ZtProjectstory> projectList = list.stream().filter(o -> o.getType().equals("project")).collect(Collectors.toList());
|
List<ZtProjectstory> projectList = list.stream().filter(o -> o.getProject() != null && o.getProject() != 0).collect(Collectors.toList());
|
||||||
if(!CollectionUtils.isEmpty(projectList)){
|
if(!CollectionUtils.isEmpty(projectList)){
|
||||||
projectId=projectList.get(0).getProject();
|
projectId=projectList.get(0).getProject();
|
||||||
}
|
}
|
||||||
List<ZtProjectstory> executionList = list.stream().filter(o -> o.getType().equals("execution")).collect(Collectors.toList());
|
List<ZtProjectstory> executionList = list.stream().filter(o -> o.getProject() != null && o.getProject() != 0).collect(Collectors.toList());
|
||||||
if(!CollectionUtils.isEmpty(executionList)){
|
if(!CollectionUtils.isEmpty(executionList)){
|
||||||
executionId=executionList.get(0).getProject();
|
executionId=executionList.get(0).getExecution();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
actionService.addAction(ActionType.XQ, ActionStatus.TJBZ, dto.getId(), ztStory.getProduct() + "", projectId, executionId,
|
actionService.addAction(ActionType.XQ, ActionStatus.TJBZ, dto.getId(), ztStory.getProduct() + "", projectId, executionId,
|
||||||
@ -661,7 +520,7 @@ public class ZtStoryServiceImpl extends ServiceImpl<ZtStoryMapper, ZtStory> impl
|
|||||||
Map<Integer, List<ZtStoryreviewDTO>> rMap = getReviewMap(list);
|
Map<Integer, List<ZtStoryreviewDTO>> rMap = getReviewMap(list);
|
||||||
|
|
||||||
|
|
||||||
Map<Integer,List<ZtProject>> execMap= getExecutionMapByStory(list);
|
Map<Integer,ZtProject> execMap= getExecutionMapByStory(list);
|
||||||
List<String> userIds = list.stream().map(o -> o.getAssignedTo()).collect(Collectors.toList());
|
List<String> userIds = list.stream().map(o -> o.getAssignedTo()).collect(Collectors.toList());
|
||||||
userIds.addAll(list.stream().map(o -> o.getOpenedby()).collect(Collectors.toList()));
|
userIds.addAll(list.stream().map(o -> o.getOpenedby()).collect(Collectors.toList()));
|
||||||
|
|
||||||
@ -672,14 +531,10 @@ public class ZtStoryServiceImpl extends ServiceImpl<ZtStoryMapper, ZtStory> impl
|
|||||||
for (ZtStoryDTO d : list) {
|
for (ZtStoryDTO d : list) {
|
||||||
d.setRevieweUser(d.getReviewedby().replaceAll(",", " "));
|
d.setRevieweUser(d.getReviewedby().replaceAll(",", " "));
|
||||||
d.setViews(rMap.get(d.getId()));
|
d.setViews(rMap.get(d.getId()));
|
||||||
|
ZtProject ztProject = execMap.get(d.getId());
|
||||||
List<ZtProject> ztProjectList = execMap.get(d.getId());
|
if(ztProject!=null){
|
||||||
|
d.setPlan(ztProject.getName());
|
||||||
|
|
||||||
if(!CollectionUtils.isEmpty(ztProjectList)){
|
|
||||||
d.setPlan(ztProjectList.stream().map(o->o.getName()).collect(Collectors.joining(",")));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ZtUser ztUser = userMap.get(d.getAssignedTo());
|
ZtUser ztUser = userMap.get(d.getAssignedTo());
|
||||||
if(ztUser!=null){
|
if(ztUser!=null){
|
||||||
d.setAssignedToName(ztUser.getNickname());
|
d.setAssignedToName(ztUser.getNickname());
|
||||||
@ -696,8 +551,8 @@ public class ZtStoryServiceImpl extends ServiceImpl<ZtStoryMapper, ZtStory> impl
|
|||||||
}
|
}
|
||||||
|
|
||||||
//需求id 执行
|
//需求id 执行
|
||||||
public Map<Integer,List<ZtProject>> getExecutionMapByStory(List<ZtStoryDTO> list) {
|
public Map<Integer, ZtProject> getExecutionMapByStory(List<ZtStoryDTO> list) {
|
||||||
List<ZtProjectstory> pStoryList = projectstoryService.list(new QueryWrapper<ZtProjectstory>().lambda().eq(ZtProjectstory::getType, ProjectTypeEnums.execution.getValue())
|
List<ZtProjectstory> pStoryList = projectstoryService.list(new QueryWrapper<ZtProjectstory>().lambda().ne(ZtProjectstory::getExecution, 0)
|
||||||
.in(ZtProjectstory::getStory, list.stream().map(o -> o.getId()).collect(Collectors.toList()))
|
.in(ZtProjectstory::getStory, list.stream().map(o -> o.getId()).collect(Collectors.toList()))
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -705,24 +560,15 @@ public class ZtStoryServiceImpl extends ServiceImpl<ZtStoryMapper, ZtStory> impl
|
|||||||
return new HashMap<>();
|
return new HashMap<>();
|
||||||
}
|
}
|
||||||
|
|
||||||
List<Integer> execIds = pStoryList.stream().map(o -> o.getProject()).collect(Collectors.toList());
|
List<Integer> execIds = pStoryList.stream().map(o -> o.getExecution()).collect(Collectors.toList());
|
||||||
List<ZtProject> ztProjects = this.projectService.listByIds(execIds);
|
List<ZtProject> ztProjects = this.projectService.listByIds(execIds);
|
||||||
|
|
||||||
Map<Integer,List<ZtProject>> result =new HashMap<>();
|
Map<Integer,ZtProject> result =new HashMap<>();
|
||||||
for (ZtProjectstory st:pStoryList) {
|
for (ZtProjectstory st:pStoryList) {
|
||||||
Integer execution = st.getProject();
|
Integer execution = st.getExecution();
|
||||||
List<ZtProject> fExecution = ztProjects.stream().filter(o -> o.getId().intValue() == execution.intValue()).collect(Collectors.toList());
|
List<ZtProject> fExecution = ztProjects.stream().filter(o -> o.getId().intValue() == execution.intValue()).collect(Collectors.toList());
|
||||||
ZtProject ztProject = fExecution.get(0);
|
ZtProject ztProject = fExecution.get(0);
|
||||||
|
result.put(st.getStory(),ztProject);
|
||||||
List<ZtProject> mpList = result.get(st.getStory());
|
|
||||||
if(CollectionUtils.isEmpty(mpList)){
|
|
||||||
List<ZtProject> mList=new ArrayList<>();
|
|
||||||
mList.add(ztProject);
|
|
||||||
result.put(st.getStory(),mList);
|
|
||||||
}else{
|
|
||||||
mpList.add(ztProject);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -746,18 +592,17 @@ public class ZtStoryServiceImpl extends ServiceImpl<ZtStoryMapper, ZtStory> impl
|
|||||||
List<ZtProjectstory> allList = this.projectstoryService
|
List<ZtProjectstory> allList = this.projectstoryService
|
||||||
.list(new QueryWrapper<ZtProjectstory>().lambda()
|
.list(new QueryWrapper<ZtProjectstory>().lambda()
|
||||||
.in(ZtProjectstory::getProject, execList.stream().map(o->o.getProject()).collect(Collectors.toList()))
|
.in(ZtProjectstory::getProject, execList.stream().map(o->o.getProject()).collect(Collectors.toList()))
|
||||||
.eq(ZtProjectstory::getType,ProjectTypeEnums.project.getValue())
|
.eq(ZtProjectstory::getExecution,0)
|
||||||
);
|
);
|
||||||
if(CollectionUtils.isEmpty(allList)){
|
if(CollectionUtils.isEmpty(allList)){
|
||||||
return new ArrayList<>();
|
return new ArrayList<>();
|
||||||
}
|
}
|
||||||
|
|
||||||
//需求已经被绑定的列表
|
//需求已经被绑定的列表
|
||||||
List<ZtProjectstory> syncList = this.projectstoryService
|
List<ZtProjectstory> syncList = this.projectstoryService
|
||||||
.list(new QueryWrapper<ZtProjectstory>().lambda()
|
.list(new QueryWrapper<ZtProjectstory>().lambda()
|
||||||
.in(ZtProjectstory::getStory,
|
.in(ZtProjectstory::getStory,
|
||||||
allList.stream().map(o->o.getStory()).collect(Collectors.toList()))
|
allList.stream().map(o->o.getStory()).collect(Collectors.toList()))
|
||||||
.ne(ZtProjectstory::getProject,execution)
|
.ne(ZtProjectstory::getExecution,0)
|
||||||
);
|
);
|
||||||
List<Integer> syncIds = syncList.stream().map(o -> o.getStory()).collect(Collectors.toList());
|
List<Integer> syncIds = syncList.stream().map(o -> o.getStory()).collect(Collectors.toList());
|
||||||
|
|
||||||
@ -960,7 +805,6 @@ public class ZtStoryServiceImpl extends ServiceImpl<ZtStoryMapper, ZtStory> impl
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//发布
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional
|
@Transactional
|
||||||
public void releaseStory(Integer story) {
|
public void releaseStory(Integer story) {
|
||||||
@ -983,7 +827,6 @@ public class ZtStoryServiceImpl extends ServiceImpl<ZtStoryMapper, ZtStory> impl
|
|||||||
if(!"tested".equals(ztStory.getStage())){
|
if(!"tested".equals(ztStory.getStage())){
|
||||||
throw new BusinessException("当前无法更改发布状态");
|
throw new BusinessException("当前无法更改发布状态");
|
||||||
}
|
}
|
||||||
//这个需求被多少执行关联
|
|
||||||
List<Integer> execIds = getExecutionId(ztStory);
|
List<Integer> execIds = getExecutionId(ztStory);
|
||||||
if(CollectionUtils.isEmpty(execIds)){
|
if(CollectionUtils.isEmpty(execIds)){
|
||||||
throw new BusinessException("当前无迭代,不可以更改");
|
throw new BusinessException("当前无迭代,不可以更改");
|
||||||
@ -1001,6 +844,15 @@ public class ZtStoryServiceImpl extends ServiceImpl<ZtStoryMapper, ZtStory> impl
|
|||||||
String newStatus ="released";
|
String newStatus ="released";
|
||||||
|
|
||||||
ztStory.setStage(newStatus);
|
ztStory.setStage(newStatus);
|
||||||
|
if("released".equals(newStatus)){
|
||||||
|
List<ZtProjectstory> execList = this.projectstoryService.list(new QueryWrapper<ZtProjectstory>().lambda().eq(ZtProjectstory::getStory, story).ne(ZtProjectstory::getExecution, 0));
|
||||||
|
Integer execId=null;
|
||||||
|
if(!CollectionUtils.isEmpty(execList)){
|
||||||
|
execId=execList.get(0).getExecution();
|
||||||
|
}
|
||||||
|
actionService.addAction(ActionType.XQ, ActionStatus.FB, ztStory.getId(), ztStory.getProduct() + "", ztStory.getProject(), execId,
|
||||||
|
RiskUserThreadLocal.get().getName(), null, "");
|
||||||
|
}
|
||||||
this.baseMapper.updateById(ztStory);
|
this.baseMapper.updateById(ztStory);
|
||||||
|
|
||||||
for (Integer execId : execIds) {
|
for (Integer execId : execIds) {
|
||||||
@ -1018,10 +870,7 @@ public class ZtStoryServiceImpl extends ServiceImpl<ZtStoryMapper, ZtStory> impl
|
|||||||
this.productService.productChangeStatus(ztStory.getProduct(), oldPStatus, newPStatus);
|
this.productService.productChangeStatus(ztStory.getProduct(), oldPStatus, newPStatus);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
actionService.addAction(ActionType.XQ, ActionStatus.FB, ztStory.getId(), ztStory.getProduct() + "", ztStory.getProject(), execIds.get(0),
|
|
||||||
RiskUserThreadLocal.get().getName(), null, "");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -1175,61 +1024,61 @@ public class ZtStoryServiceImpl extends ServiceImpl<ZtStoryMapper, ZtStory> impl
|
|||||||
@Override
|
@Override
|
||||||
@Transactional
|
@Transactional
|
||||||
public void changeExecution(ZtStoryDTO dto) {
|
public void changeExecution(ZtStoryDTO dto) {
|
||||||
// List<Integer> idList = dto.getIdList();
|
List<Integer> idList = dto.getIdList();
|
||||||
// for (Integer i : idList) {
|
for (Integer i : idList) {
|
||||||
// ZtStory ztStory = this.baseMapper.selectById(i);
|
ZtStory ztStory = this.baseMapper.selectById(i);
|
||||||
// if("closed".equals(ztStory.getStatus())){
|
if("closed".equals(ztStory.getStatus())){
|
||||||
// throw new BusinessException("当前已关闭");
|
throw new BusinessException("当前已关闭");
|
||||||
// }
|
}
|
||||||
// ztStory.setLasteditedby(RiskUserThreadLocal.get().getName());
|
ztStory.setLasteditedby(RiskUserThreadLocal.get().getName());
|
||||||
// ztStory.setLastediteddate(new Date());
|
ztStory.setLastediteddate(new Date());
|
||||||
// this.baseMapper.updateById(ztStory);
|
this.baseMapper.updateById(ztStory);
|
||||||
//
|
|
||||||
//
|
|
||||||
// // 1.如果是产品 那么关联 项目 执行 2.如果是项目 关联执行
|
// 1.如果是产品 那么关联 项目 执行 2.如果是项目 关联执行
|
||||||
// if(dto.getExecution()!=null&&dto.getExecution()!=0){
|
if(dto.getExecution()!=null&&dto.getExecution()!=0){
|
||||||
//
|
|
||||||
//
|
|
||||||
// ZtProjectstory execStory = this.projectstoryService.getOne(new QueryWrapper<ZtProjectstory>().lambda().eq(ZtProjectstory::getStory, ztStory.getId())
|
ZtProjectstory execStory = this.projectstoryService.getOne(new QueryWrapper<ZtProjectstory>().lambda().eq(ZtProjectstory::getStory, ztStory.getId())
|
||||||
// .ne(ZtProjectstory::getExecution, 0));
|
.ne(ZtProjectstory::getExecution, 0));
|
||||||
// //如果没有关联过迭代
|
//如果没有关联过迭代
|
||||||
// if(execStory==null){
|
if(execStory==null){
|
||||||
// //如果是产品型需求 加项目 加迭代 如果是项目型产品 加迭代
|
//如果是产品型需求 加项目 加迭代 如果是项目型产品 加迭代
|
||||||
//
|
|
||||||
// if (ztStory.getProduct() != null&&ztStory.getProduct()!=0) {
|
if (ztStory.getProduct() != null&&ztStory.getProduct()!=0) {
|
||||||
// List<ZtExecutionproject> execlist = this.executionprojectService.list(new QueryWrapper<ZtExecutionproject>().lambda()
|
List<ZtExecutionproject> execlist = this.executionprojectService.list(new QueryWrapper<ZtExecutionproject>().lambda()
|
||||||
// .eq(ZtExecutionproject::getExecution, dto.getExecution()));
|
.eq(ZtExecutionproject::getExecution, dto.getExecution()));
|
||||||
// if(CollectionUtils.isEmpty(execlist)){
|
if(CollectionUtils.isEmpty(execlist)){
|
||||||
// List<ZtProjectproduct> list = this.projectproductService.list(new QueryWrapper<ZtProjectproduct>()
|
List<ZtProjectproduct> list = this.projectproductService.list(new QueryWrapper<ZtProjectproduct>()
|
||||||
// .lambda().eq(ZtProjectproduct::getProduct, ztStory.getProduct()));
|
.lambda().eq(ZtProjectproduct::getProduct, ztStory.getProduct()));
|
||||||
// ZtProjectproduct ztProjectproduct = list.get(0);
|
ZtProjectproduct ztProjectproduct = list.get(0);
|
||||||
//
|
|
||||||
//
|
|
||||||
// ZtProjectstory ztProjectstory = new ZtProjectstory();
|
ZtProjectstory ztProjectstory = new ZtProjectstory();
|
||||||
// ztProjectstory.setOrder(1);
|
ztProjectstory.setOrder(1);
|
||||||
// ztProjectstory.setStory(ztStory.getId());
|
ztProjectstory.setStory(ztStory.getId());
|
||||||
// ztProjectstory.setProject(ztProjectproduct.getProject());
|
ztProjectstory.setProject(ztProjectproduct.getProject());
|
||||||
// this.projectstoryService.save(ztProjectstory);
|
this.projectstoryService.save(ztProjectstory);
|
||||||
// //添加执行
|
//添加执行
|
||||||
// }else{
|
}else{
|
||||||
//
|
|
||||||
// ZtProjectstory ztProjectstory = new ZtProjectstory();
|
ZtProjectstory ztProjectstory = new ZtProjectstory();
|
||||||
// ztProjectstory.setOrder(1);
|
ztProjectstory.setOrder(1);
|
||||||
// ztProjectstory.setStory(ztStory.getId());
|
ztProjectstory.setStory(ztStory.getId());
|
||||||
// ztProjectstory.setProject(execlist.get(0).getProject());
|
ztProjectstory.setProject(execlist.get(0).getProject());
|
||||||
// this.projectstoryService.save(ztProjectstory);
|
this.projectstoryService.save(ztProjectstory);
|
||||||
// }
|
}
|
||||||
// }
|
}
|
||||||
// ZtProjectDTO d=new ZtProjectDTO();
|
ZtProjectDTO d=new ZtProjectDTO();
|
||||||
// d.setExcludeId(dto.getExecution());
|
d.setExcludeId(dto.getExecution());
|
||||||
// d.setStoryIds(new ArrayList<>(){{add(ztStory.getId());}});
|
d.setStoryIds(new ArrayList<>(){{add(ztStory.getId());}});
|
||||||
// projectService.executionSyncStory(d);
|
projectService.executionSyncStory(d);
|
||||||
// }
|
}
|
||||||
//
|
|
||||||
//
|
|
||||||
// }
|
}
|
||||||
//
|
|
||||||
// }
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -1294,7 +1143,7 @@ public class ZtStoryServiceImpl extends ServiceImpl<ZtStoryMapper, ZtStory> impl
|
|||||||
Map<Integer, List<ZtStoryreviewDTO>> rMap = getReviewMap(list);
|
Map<Integer, List<ZtStoryreviewDTO>> rMap = getReviewMap(list);
|
||||||
|
|
||||||
|
|
||||||
Map<Integer,List<ZtProject>> execMap= getExecutionMapByStory(list);
|
Map<Integer,ZtProject> execMap= getExecutionMapByStory(list);
|
||||||
List<String> userIds = list.stream().map(o -> o.getAssignedTo()).collect(Collectors.toList());
|
List<String> userIds = list.stream().map(o -> o.getAssignedTo()).collect(Collectors.toList());
|
||||||
userIds.addAll(list.stream().map(o -> o.getOpenedby()).collect(Collectors.toList()));
|
userIds.addAll(list.stream().map(o -> o.getOpenedby()).collect(Collectors.toList()));
|
||||||
|
|
||||||
@ -1305,9 +1154,9 @@ public class ZtStoryServiceImpl extends ServiceImpl<ZtStoryMapper, ZtStory> impl
|
|||||||
for (ZtStoryDTO d : list) {
|
for (ZtStoryDTO d : list) {
|
||||||
d.setRevieweUser(d.getReviewedby().replaceAll(",", " "));
|
d.setRevieweUser(d.getReviewedby().replaceAll(",", " "));
|
||||||
d.setViews(rMap.get(d.getId()));
|
d.setViews(rMap.get(d.getId()));
|
||||||
List<ZtProject> ztProjectList = execMap.get(d.getId());
|
ZtProject ztProject = execMap.get(d.getId());
|
||||||
if(!CollectionUtils.isEmpty(ztProjectList)){
|
if(ztProject!=null){
|
||||||
d.setPlan(ztProjectList.stream().map(o->o.getName()).collect(Collectors.joining(",")));
|
d.setPlan(ztProject.getName());
|
||||||
}
|
}
|
||||||
ZtUser ztUser = userMap.get(d.getAssignedTo());
|
ZtUser ztUser = userMap.get(d.getAssignedTo());
|
||||||
if(ztUser!=null){
|
if(ztUser!=null){
|
||||||
@ -1356,12 +1205,12 @@ public class ZtStoryServiceImpl extends ServiceImpl<ZtStoryMapper, ZtStory> impl
|
|||||||
|
|
||||||
List<ZtProjectstory> list = this.projectstoryService.list(new QueryWrapper<ZtProjectstory>().lambda()
|
List<ZtProjectstory> list = this.projectstoryService.list(new QueryWrapper<ZtProjectstory>().lambda()
|
||||||
.eq(ZtProjectstory::getStory, ztStory.getId())
|
.eq(ZtProjectstory::getStory, ztStory.getId())
|
||||||
.ne(ZtProjectstory::getType, ProjectTypeEnums.execution.getValue())
|
.ne(ZtProjectstory::getExecution, 0)
|
||||||
);
|
);
|
||||||
if(CollectionUtils.isEmpty(list)){
|
if(CollectionUtils.isEmpty(list)){
|
||||||
return new ArrayList<>();
|
return new ArrayList<>();
|
||||||
}else{
|
}else{
|
||||||
return list.stream().map(o->o.getProject()).collect(Collectors.toList());
|
return list.stream().map(o->o.getExecution()).collect(Collectors.toList());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1482,9 +1331,8 @@ public class ZtStoryServiceImpl extends ServiceImpl<ZtStoryMapper, ZtStory> impl
|
|||||||
RiskUserThreadLocal.get().getName(), dto.getDesc(), ztStory.getAssignedTo());
|
RiskUserThreadLocal.get().getName(), dto.getDesc(), ztStory.getAssignedTo());
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
|
||||||
@Override
|
@Override
|
||||||
public ZtStoryDTO getStoryById(Integer id,Integer execution) {
|
public ZtStoryDTO getStoryById(Integer id) {
|
||||||
ZtStory ztStory = this.baseMapper.selectById(id);
|
ZtStory ztStory = this.baseMapper.selectById(id);
|
||||||
ZtStoryDTO d=new ZtStoryDTO();
|
ZtStoryDTO d=new ZtStoryDTO();
|
||||||
|
|
||||||
@ -1502,15 +1350,13 @@ public class ZtStoryServiceImpl extends ServiceImpl<ZtStoryMapper, ZtStory> impl
|
|||||||
d.setProjectId(ztProject.getId());
|
d.setProjectId(ztProject.getId());
|
||||||
d.setProjectName(ztProject.getName());
|
d.setProjectName(ztProject.getName());
|
||||||
}
|
}
|
||||||
if(execution!=null){
|
ZtProjectstory execstory = this.projectstoryService.getOne(new QueryWrapper<ZtProjectstory>().lambda().eq(ZtProjectstory::getStory, ztStory.getId()).ne(ZtProjectstory::getExecution,0));
|
||||||
ZtProject ztProject = this.projectService.getById(execution);
|
if(execstory!=null){
|
||||||
if(ztProject!=null){
|
ZtProject ztProject = this.projectService.getById(execstory.getExecution());
|
||||||
|
|
||||||
d.setImplementId(ztProject.getId());
|
d.setImplementId(ztProject.getId());
|
||||||
d.setImplementName(ztProject.getName());
|
d.setImplementName(ztProject.getName());
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
List<String> userIds = new ArrayList<>();
|
List<String> userIds = new ArrayList<>();
|
||||||
userIds.add(ztStory.getAssignedTo());
|
userIds.add(ztStory.getAssignedTo());
|
||||||
userIds.add(ztStory.getOpenedby());
|
userIds.add(ztStory.getOpenedby());
|
||||||
@ -1691,9 +1537,7 @@ public class ZtStoryServiceImpl extends ServiceImpl<ZtStoryMapper, ZtStory> impl
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<ZtStoryDTO> storyListByExecution(ZtProjectQo qo) {
|
public List<ZtStoryDTO> storyListByExecution(ZtProjectQo qo) {
|
||||||
List<ZtProjectstory> list = projectstoryService.list(new QueryWrapper<ZtProjectstory>().lambda().eq(ZtProjectstory::getProject, qo.getId())
|
List<ZtProjectstory> list = projectstoryService.list(new QueryWrapper<ZtProjectstory>().lambda().eq(ZtProjectstory::getExecution, qo.getId()));
|
||||||
.eq(ZtProjectstory::getType,ProjectTypeEnums.execution.getValue())
|
|
||||||
);
|
|
||||||
|
|
||||||
if (CollectionUtils.isEmpty(list)) {
|
if (CollectionUtils.isEmpty(list)) {
|
||||||
return new ArrayList<>();
|
return new ArrayList<>();
|
||||||
|
@ -187,18 +187,23 @@ public class ZtTaskServiceImpl extends ServiceImpl<ZtTaskMapper, ZtTask> impleme
|
|||||||
Integer productId=null;
|
Integer productId=null;
|
||||||
Integer projectId=null;
|
Integer projectId=null;
|
||||||
Integer execution=null;
|
Integer execution=null;
|
||||||
if(task.getStory()!=null&&task.getStory()!=0){
|
|
||||||
|
|
||||||
execution=task.getExecution();
|
|
||||||
projectId=task.getProject();
|
|
||||||
if(task.getStory()!=null&&task.getStory()!=0){
|
if(task.getStory()!=null&&task.getStory()!=0){
|
||||||
ZtStory story = this.storyService.getById(task.getStory());
|
ZtStory story = this.storyService.getById(task.getStory());
|
||||||
if(story!=null){
|
List<ZtProjectstory> list = this.projectstoryService.list(new QueryWrapper<ZtProjectstory>().lambda().eq(ZtProjectstory::getStory, task.getStory()));
|
||||||
productId=story.getProduct();
|
|
||||||
|
if(!CollectionUtils.isEmpty(list)){
|
||||||
|
List<ZtProjectstory> projectList = list.stream().filter(o -> o.getProject() != null && o.getProject() != 0).collect(Collectors.toList());
|
||||||
|
if(!CollectionUtils.isEmpty(projectList)){
|
||||||
|
projectId=projectList.get(0).getProject();
|
||||||
|
}
|
||||||
|
List<ZtProjectstory> executionList = list.stream().filter(o -> o.getProject() != null && o.getProject() != 0).collect(Collectors.toList());
|
||||||
|
if(!CollectionUtils.isEmpty(executionList)){
|
||||||
|
execution=executionList.get(0).getExecution();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
actionService.addAction(ActionType.RW, ActionStatus.TJBZ, dto.getId(), productId==null?"":productId+"", projectId, task.getExecution(),
|
actionService.addAction(ActionType.RW, ActionStatus.TJBZ, dto.getId(), productId==null?"":productId+"", projectId, task.getExecution(),
|
||||||
RiskUserThreadLocal.get().getName(), dto.getRemark(), "");
|
RiskUserThreadLocal.get().getName(), dto.getRemark(), "");
|
||||||
}
|
}
|
||||||
@ -211,13 +216,10 @@ public class ZtTaskServiceImpl extends ServiceImpl<ZtTaskMapper, ZtTask> impleme
|
|||||||
}
|
}
|
||||||
ZtTaskDTO dto=new ZtTaskDTO();
|
ZtTaskDTO dto=new ZtTaskDTO();
|
||||||
BeanUtils.copyProperties(ztTask,dto);
|
BeanUtils.copyProperties(ztTask,dto);
|
||||||
if(ztTask.getExecution()!=null&&ztTask.getExecution()!=0){
|
|
||||||
ZtProject project = this.ztProjectService.getById(ztTask.getExecution());
|
ZtProject project = this.ztProjectService.getById(ztTask.getExecution());
|
||||||
dto.setImplementId(project.getId());
|
dto.setImplementId(project.getId());
|
||||||
dto.setImplementName(project.getName());
|
dto.setImplementName(project.getName());
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
return dto;
|
return dto;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user