需求bug

This commit is contained in:
2025-01-09 18:10:24 +08:00
parent 70afa5c332
commit a30c53996e
22 changed files with 391 additions and 155 deletions

View File

@ -40,6 +40,13 @@ 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);

View File

@ -44,6 +44,32 @@ public class ZtTaskController {
@Autowired @Autowired
private IZtTaskService ztTaskService; private IZtTaskService ztTaskService;
@Autowired
private IZtProjectService projectService;
@Autowired
private IZtStoryService storyService;
@Autowired
private IZtUserService userService;
@Autowired
private IZtProjectstoryService projectstoryService;
@Autowired
private IZtKanbanlaneService kanbanlaneService;
@Autowired
private com.sa.zentao.service.IZtStoryService IZtStoryService;
@Autowired
private IZtExecutionprojectService executionprojectService;
@Autowired
private IZtProjectproductService projectproductService;
@Autowired
private IZtStoryspecService storyspecService;
@RequestMapping(value = "/taskPageList", method = RequestMethod.POST, produces = "application/json; charset=UTF-8") @RequestMapping(value = "/taskPageList", method = RequestMethod.POST, produces = "application/json; charset=UTF-8")
public Result<PageInfo<ZtTaskDTO>> taskPageList(@RequestBody ZtProjectQo qo){ public Result<PageInfo<ZtTaskDTO>> taskPageList(@RequestBody ZtProjectQo qo){
@ -160,16 +186,7 @@ public class ZtTaskController {
return Result.success(list); return Result.success(list);
} }
@Autowired
private IZtProjectService projectService;
@Autowired
private IZtStoryService storyService;
@Autowired
private IZtUserService userService;
@Autowired
private IZtProjectstoryService projectstoryService;
@Autowired
private IZtKanbanlaneService kanbanlaneService;
@RequestMapping(value = "/uploadTask", method = RequestMethod.POST, produces = "application/json; charset=UTF-8") @RequestMapping(value = "/uploadTask", method = RequestMethod.POST, produces = "application/json; charset=UTF-8")
@ -256,19 +273,6 @@ public class ZtTaskController {
@Autowired
private com.sa.zentao.service.IZtStoryService IZtStoryService;
@Autowired
private IZtExecutionprojectService executionprojectService;
@Autowired
private IZtProjectproductService projectproductService;
@Autowired
private IZtStoryspecService storyspecService;
//同步中道 //同步中道
@ -421,6 +425,87 @@ public class ZtTaskController {
//同步中道
@RequestMapping(value = "/syncZdTaskByExecution", method = RequestMethod.GET, produces = "application/json; charset=UTF-8")
public Result syncZdTaskByExecution(@RequestParam("implementName")String implementName){
if(StringUtils.isEmpty(implementName)){
return Result.success();
}
List<ZtProject> list1 = this.projectService.list(new QueryWrapper<ZtProject>().lambda().eq(ZtProject::getName, implementName)
.eq(ZtProject::getType,"sprint")
);
if(CollectionUtils.isEmpty(list1)){
throw new BusinessException("未查询到");
}
ZtProject sprint = this.projectService.getOne(new QueryWrapper<ZtProject>().lambda().eq(ZtProject::getName, implementName)
.eq(ZtProject::getType, "sprint"));
ZtProjectDTO d=projectService.selectPrdByName(implementName);
if(d!=null){
// 新系统执行id
Integer myExecId = list1.get(0).getId();
//执行id
Integer id = d.getId();
List<ZtTaskDTO> taskDTOS=this.ztTaskService.taskListPrd(id);
for (ZtTaskDTO task:taskDTOS) {
List<ZtTask> list = this.ztTaskService.list(new QueryWrapper<ZtTask>().lambda().eq(ZtTask::getName, task.getName()));
// if(!CollectionUtils.isEmpty(list)){
// continue;
// }
//老的
ZtTask ztTask = new ZtTask();
BeanUtils.copyProperties(task,ztTask,"id");
if(ztTask.getDeadline()!=null){
ztTask.setDeadlineTime(ztTask.getDeadline().getTime()/1000);
}
ZtExecutionproject project = this.executionprojectService.getOne(new QueryWrapper<ZtExecutionproject>().lambda()
.eq(ZtExecutionproject::getExecution, myExecId));
Integer projectId = project.getProject();
ztTask.setExecution(myExecId);
ztTask.setProject(projectId);
this.ztTaskService.save(ztTask);
kanbanlaneService.addTask( myExecId, Arrays.asList(ztTask));
if(ztTask.getStatus().equals("closed")){
kanbanlaneService.changeStatus(myExecId,ztTask.getId(),"task","closed");
}
if(ztTask.getStatus().equals("doing")){
try {
kanbanlaneService.changeStatus(myExecId,ztTask.getId(),"task","developing");
}catch (Exception e){
log.error("",e);
}
}
if(ztTask.getStatus().equals("done")){
kanbanlaneService.changeStatus(myExecId,ztTask.getId(),"task","developed");
}
if(ztTask.getStatus().equals("cancel")){
kanbanlaneService.changeStatus(myExecId,ztTask.getId(),"task","canceled");
}
if(ztTask.getStatus().equals("wait")){
kanbanlaneService.changeStatus(myExecId,ztTask.getId(),"task","wait");
}
if(ztTask.getStatus().equals("pause")){
kanbanlaneService.changeStatus(myExecId,ztTask.getId(),"task","pause");
}
}
}
return Result.success();
}
//同步中道 //同步中道
@RequestMapping(value = "/test", method = RequestMethod.GET, produces = "application/json; charset=UTF-8") @RequestMapping(value = "/test", method = RequestMethod.GET, produces = "application/json; charset=UTF-8")
public Result test(@RequestParam("implementName")String implementName){ public Result test(@RequestParam("implementName")String implementName){

View File

@ -171,6 +171,7 @@ public class ZtUserController {
.set(ZtUser::getUserType,user.getUserType()) .set(ZtUser::getUserType,user.getUserType())
.set(ZtUser::getEmail,user.getEmail()) .set(ZtUser::getEmail,user.getEmail())
.set(ZtUser::getProductIds,ztUser.getProductIds()) .set(ZtUser::getProductIds,ztUser.getProductIds())
.set(ZtUser::getColor,user.getColor())
.set(ZtUser::getPhone,ztUser.getPhone()) .set(ZtUser::getPhone,ztUser.getPhone())
.eq(ZtUser::getId,ztUser.getId()) .eq(ZtUser::getId,ztUser.getId())
); );

View File

@ -30,10 +30,10 @@ public class ZtReleaseDTO implements Serializable {
@TableId(value = "id", type = IdType.AUTO) @TableId(value = "id", type = IdType.AUTO)
private Integer id; private Integer id;
private String project; private Integer project;
private String projectName;
private Integer product; private Integer product;
private String productName;
private String branch; private String branch;
private Integer shadow; private Integer shadow;

View File

@ -29,6 +29,9 @@ public class ZtProject implements Serializable {
private Integer project; private Integer project;
@TableField(exist = false)
private String projectName;
private Integer charter; private Integer charter;
private String model; private String model;

View File

@ -28,7 +28,7 @@ public class ZtRelease implements Serializable {
@TableId(value = "id", type = IdType.AUTO) @TableId(value = "id", type = IdType.AUTO)
private Integer id; private Integer id;
private String project; private Integer project;
private Integer product; private Integer product;

View File

@ -27,7 +27,7 @@ public class ZtReleaseDetails implements Serializable {
private Integer releaseId; private Integer releaseId;
private Integer objectId; private Integer objectId;
//story
private String objectType; private String objectType;
// released已发布 closed 关闭 // released已发布 closed 关闭
private String status; private String status;

View File

@ -28,6 +28,7 @@ public enum ActionStatus {
KSCE(21, "tested","开始测试"), KSCE(21, "tested","开始测试"),
CSWC(20, "tested","测试完成"), CSWC(20, "tested","测试完成"),
LOGIN(100, "login","登录"), LOGIN(100, "login","登录"),
; ;

View File

@ -11,6 +11,8 @@ public enum ActionType {
XQ(4, "story","需求"), XQ(4, "story","需求"),
FB(4, "release","发布"),
USERXQ(14, "user-story","用户需求"), USERXQ(14, "user-story","用户需求"),
WTFK(15, "story-feedback","问题反馈"), WTFK(15, "story-feedback","问题反馈"),
@ -21,6 +23,8 @@ public enum ActionType {
LOGIN(7, "LOGIN","登录"), LOGIN(7, "LOGIN","登录"),
USER(8, "user","用户"), USER(8, "user","用户"),
; ;

View File

@ -1,5 +1,6 @@
package com.sa.zentao.mapper; package com.sa.zentao.mapper;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.sa.zentao.dao.ZtTaskDTO; import com.sa.zentao.dao.ZtTaskDTO;
import com.sa.zentao.entity.ZtTask; import com.sa.zentao.entity.ZtTask;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
@ -19,4 +20,7 @@ import java.util.List;
public interface ZtTaskMapper extends BaseMapper<ZtTask> { public interface ZtTaskMapper extends BaseMapper<ZtTask> {
List<ZtTaskDTO> taskPageList(@Param("qo") ZtProjectQo qo); List<ZtTaskDTO> taskPageList(@Param("qo") ZtProjectQo qo);
@DS("slave")
List<ZtTaskDTO> taskListPrd(@Param("id") Integer id);
} }

View File

@ -27,6 +27,8 @@ public class ZtReleaseQo extends BaseQo {
@TableId(value = "id", type = IdType.AUTO) @TableId(value = "id", type = IdType.AUTO)
private Integer id; private Integer id;
private String assignedTo; private String assignedTo;
private Integer project; private Integer project;

View File

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

View File

@ -46,9 +46,9 @@ public interface IZtStoryService extends IService<ZtStory> {
List<ZtStoryDTO> storyNoSyncProject(ZtProjectQo qo); List<ZtStoryDTO> storyNoSyncProject(ZtProjectQo qo);
void startStory(Integer story,Integer execution); void startStory(Integer story);
void finishStory(Integer story,Integer execution); void finishStory(Integer story);
//测试完毕 //测试完毕
void testedStory(Integer story); void testedStory(Integer story);
//测试中 //测试中

View File

@ -52,4 +52,5 @@ public interface IZtTaskService extends IService<ZtTask> {
ZtTaskDTO getTaskById(Integer id); ZtTaskDTO getTaskById(Integer id);
List<ZtTaskDTO> taskListPrd(Integer id);
} }

View File

@ -141,7 +141,7 @@ public class ZtProductServiceImpl extends ServiceImpl<ZtProductMapper, ZtProduct
} }
for (ZtProjectDTO d:ztProjectDTOS) { for (ZtProjectDTO d:ztProjectDTOS) {
d.setChildren(result.stream().filter(o->o.getProgram()==d.getId()).collect(Collectors.toList())); d.setChildren(result.stream().filter(o->o.getProgram().equals(d.getId())).collect(Collectors.toList()));
d.setId(100000000+d.getId()); d.setId(100000000+d.getId());
if(!StringUtils.isEmpty(d.getPm())){ if(!StringUtils.isEmpty(d.getPm())){
ZtUser ztUser = userMap.get(d.getPm()); ZtUser ztUser = userMap.get(d.getPm());

View File

@ -139,6 +139,7 @@ public class ZtProjectServiceImpl extends ServiceImpl<ZtProjectMapper, ZtProject
ztProject.setPath(String.format(",%d,",ztProject.getId())); ztProject.setPath(String.format(",%d,",ztProject.getId()));
ztProject.setGrade(1); ztProject.setGrade(1);
ztProject.setLeft(0f); ztProject.setLeft(0f);
ztProject.setEstimate(0f);
ztProject.setConsumed(0f); ztProject.setConsumed(0f);
ztProject.setOrder(0); ztProject.setOrder(0);
ztProject.setParent(0); ztProject.setParent(0);
@ -147,8 +148,9 @@ public class ZtProjectServiceImpl extends ServiceImpl<ZtProjectMapper, ZtProject
ztProject.setPath(pProject.getPath()+""+String.format("%d,",ztProject.getId())); ztProject.setPath(pProject.getPath()+""+String.format("%d,",ztProject.getId()));
ztProject.setGrade(pProject.getGrade()+1); ztProject.setGrade(pProject.getGrade()+1);
ztProject.setLeft(2f); ztProject.setEstimate(0f);
ztProject.setConsumed(4f); ztProject.setLeft(0f);
ztProject.setConsumed(0f);
ztProject.setOrder(pProject.getOrder()+5); ztProject.setOrder(pProject.getOrder()+5);
} }
this.baseMapper.updateById(ztProject); this.baseMapper.updateById(ztProject);
@ -622,11 +624,18 @@ public class ZtProjectServiceImpl extends ServiceImpl<ZtProjectMapper, ZtProject
order=ztProjectstory.getOrder()+5; order=ztProjectstory.getOrder()+5;
} }
List saveList=new ArrayList(); List saveList=new ArrayList();
Map<Integer,ZtStory> sMap = getStoryMap(storyIds);
for (Integer sId:storyIds) { for (Integer sId:storyIds) {
ZtProjectstory ztProjectstory = new ZtProjectstory(); ZtProjectstory ztProjectstory = new ZtProjectstory();
ztProjectstory.setOrder(order); ztProjectstory.setOrder(order);
ztProjectstory.setStory(sId); ztProjectstory.setStory(sId);
ztProjectstory.setProduct(ztProject.getParent()); ZtStory ztStory = sMap.get(sId);
if(ztStory!=null){
ztProjectstory.setProduct(ztStory.getProduct());
}
ztProjectstory.setType(ProjectTypeEnums.project.getValue());
ztProjectstory.setProject(project); ztProjectstory.setProject(project);
saveList.add(ztProjectstory); saveList.add(ztProjectstory);
order+=5; order+=5;
@ -636,6 +645,18 @@ public class ZtProjectServiceImpl extends ServiceImpl<ZtProjectMapper, ZtProject
} }
private Map<Integer, ZtStory> getStoryMap(List<Integer> storyIds) {
if(CollectionUtils.isEmpty(storyIds)){
return new HashMap<>();
}
List<ZtStory> storyList = this.storyService.listByIds(storyIds);
if(CollectionUtils.isEmpty(storyList)){
return new HashMap<>();
}else{
return storyList.stream().collect(Collectors.toMap(ZtStory::getId,o->o));
}
}
@Override @Override
public List<ZtProjectDTO> implementByProject(ZtProjectQo qo) { public List<ZtProjectDTO> implementByProject(ZtProjectQo qo) {
@ -790,7 +811,7 @@ public class ZtProjectServiceImpl extends ServiceImpl<ZtProjectMapper, ZtProject
List<ZtProjectstory> syncStoryList = this.projectstoryService.list(new QueryWrapper<ZtProjectstory>() List<ZtProjectstory> syncStoryList = this.projectstoryService.list(new QueryWrapper<ZtProjectstory>()
.lambda().ne(ZtProjectstory::getProject, excludeId) .lambda().eq(ZtProjectstory::getProject, excludeId)
.in(ZtProjectstory::getStory, storyIds) .in(ZtProjectstory::getStory, storyIds)
); );

View File

@ -8,6 +8,8 @@ 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.ActionStatus;
import com.sa.zentao.enums.ActionType;
import com.sa.zentao.enums.ProjectTypeEnums; 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;
@ -43,11 +45,29 @@ public class ZtReleaseServiceImpl extends ServiceImpl<ZtReleaseMapper, ZtRelease
private IZtProjectService projectService; private IZtProjectService projectService;
@Autowired @Autowired
private IZtUserService userService; private IZtUserService userService;
@Autowired
private IZtActionService actionService;
@Autowired
private IZtProjectproductService projectproductService;
@Autowired
private IZtProductService productService;
@Autowired
private IZtNoticeService noticeService;
@Autowired
private IZtProjectstoryService projectstoryService;
@Autowired
private IZtStoryService storyService;
@Override @Override
public void addRelease(ZtReleaseDTO dto) { public void addRelease(ZtReleaseDTO dto) {
if(StringUtils.isEmpty(dto.getProject())){ Integer project = dto.getProject();
if(project==null||project==0){
throw new BusinessException("请选择项目"); throw new BusinessException("请选择项目");
} }
@ -57,6 +77,12 @@ public class ZtReleaseServiceImpl extends ServiceImpl<ZtReleaseMapper, ZtRelease
ztRelease.setCreatedby(RiskUserThreadLocal.get().getName()); ztRelease.setCreatedby(RiskUserThreadLocal.get().getName());
ztRelease.setStatus("reviewing"); ztRelease.setStatus("reviewing");
ztRelease.setCreateddate(new Date()); ztRelease.setCreateddate(new Date());
ZtProjectproduct projectproduct = this.projectproductService.getOne(new QueryWrapper<ZtProjectproduct>().lambda()
.eq(ZtProjectproduct::getProject, project));
if(projectproduct!=null){
ztRelease.setProduct(projectproduct.getProduct());
}
this.baseMapper.insert(ztRelease); this.baseMapper.insert(ztRelease);
@ -71,7 +97,7 @@ public class ZtReleaseServiceImpl extends ServiceImpl<ZtReleaseMapper, ZtRelease
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")
.in(ZtStory::getId,list.stream().map(o->o.getStory()).collect(Collectors.toList())) .in(ZtStory::getId,list.stream().map(o->o.getStory()).distinct().collect(Collectors.toList()))
.eq(ZtStory::getStage, StoryStageEnums.tested.getValue())); .eq(ZtStory::getStage, StoryStageEnums.tested.getValue()));
if(!CollectionUtils.isEmpty(sList)){ if(!CollectionUtils.isEmpty(sList)){
List<ZtReleaseDetails> releaseStoryList = this.releaseDetailsService.list(new QueryWrapper<ZtReleaseDetails>().lambda() List<ZtReleaseDetails> releaseStoryList = this.releaseDetailsService.list(new QueryWrapper<ZtReleaseDetails>().lambda()
@ -95,12 +121,17 @@ public class ZtReleaseServiceImpl extends ServiceImpl<ZtReleaseMapper, ZtRelease
} }
} }
actionService.addAction(ActionType.FB, ActionStatus.XJ, ztRelease.getId(), ztRelease.getProduct() + "", ztRelease.getProject(), null,
RiskUserThreadLocal.get().getName(), dto.getDanger(), "");
} }
@Override @Override
@Transactional @Transactional
public void modifyRelease(ZtReleaseDTO dto) { public void modifyRelease(ZtReleaseDTO dto) {
ZtRelease ztRelease = this.baseMapper.selectById(dto.getId()); ZtRelease ztRelease = this.baseMapper.selectById(dto.getId());
String danger = ztRelease.getDanger();
String executions = ztRelease.getExecutions();
if(ztRelease==null){ if(ztRelease==null){
throw new BusinessException("未查询到数据"); throw new BusinessException("未查询到数据");
@ -111,6 +142,46 @@ public class ZtReleaseServiceImpl extends ServiceImpl<ZtReleaseMapper, ZtRelease
String project = ztRelease.getExecutions(); String project = ztRelease.getExecutions();
String[] split = project.split(","); String[] split = project.split(",");
String execStr = dto.getExecutions();
if(!StringUtils.isEmpty(execStr)&&!execStr.equals(executions)){
List<String> execIds = new ArrayList<String>(Arrays.asList(execStr.split(",")));
List<ZtProjectstory> list = this.projectstoryService.list(new QueryWrapper<ZtProjectstory>().lambda()
.in(ZtProjectstory::getProject, execIds)
.eq(ZtProjectstory::getType, ProjectTypeEnums.execution.getValue())
);
if(!CollectionUtils.isEmpty(list)){
List<ZtStory> sList = this.storyService.list(new QueryWrapper<ZtStory>()
.lambda().eq(ZtStory::getStatus, "active")
.in(ZtStory::getId,list.stream().map(o->o.getStory()).distinct().collect(Collectors.toList()))
.eq(ZtStory::getStage, StoryStageEnums.tested.getValue()));
if(!CollectionUtils.isEmpty(sList)){
List<ZtReleaseDetails> releaseStoryList = this.releaseDetailsService.list(new QueryWrapper<ZtReleaseDetails>().lambda()
.in(ZtReleaseDetails::getObjectId, sList.stream().map(o -> o.getId()).collect(Collectors.toList())));
List<Integer> sIds = releaseStoryList.stream().map(o -> o.getObjectId().intValue()).collect(Collectors.toList());
this.releaseDetailsService.remove(new QueryWrapper<ZtReleaseDetails>().lambda().eq(ZtReleaseDetails::getReleaseId,ztRelease.getId()));
List<ZtReleaseDetails> saveBatch=new ArrayList<>();
for (ZtStory s:sList) {
if(!sIds.contains(s.getId())){
ZtReleaseDetails e=new ZtReleaseDetails();
e.setObjectId(s.getId());
e.setObjectType("story");
e.setReleaseId(ztRelease.getId());
e.setStatus("wait");
saveBatch.add(e);
}
}
releaseDetailsService.saveBatch(saveBatch);
}
}
}
actionService.addAction(ActionType.FB, ActionStatus.BJ, ztRelease.getId(), ztRelease.getProduct() + "", ztRelease.getProject(), null,
RiskUserThreadLocal.get().getName(),danger==null?null: danger.equals(dto.getDanger())?"":dto.getDanger(), "");
} }
@Override @Override
@ -157,9 +228,12 @@ public class ZtReleaseServiceImpl extends ServiceImpl<ZtReleaseMapper, ZtRelease
} }
ztRelease.setAssignedTo(dto.getAssignedTo()); ztRelease.setAssignedTo(dto.getAssignedTo());
this.baseMapper.updateById(ztRelease); this.baseMapper.updateById(ztRelease);
actionService.addAction(ActionType.FB, ActionStatus.FP, ztRelease.getId(), ztRelease.getProduct() + "", ztRelease.getProject(), null,
RiskUserThreadLocal.get().getName(), "", "");
} }
@Override @Override
@Transactional
public void userReview(ZtReleaseQo dto) { public void userReview(ZtReleaseQo dto) {
ZtRelease ztRelease = this.baseMapper.selectById(dto.getId()); ZtRelease ztRelease = this.baseMapper.selectById(dto.getId());
if(ztRelease==null){ if(ztRelease==null){
@ -187,15 +261,11 @@ public class ZtReleaseServiceImpl extends ServiceImpl<ZtReleaseMapper, ZtRelease
} }
this.baseMapper.updateById(ztRelease); this.baseMapper.updateById(ztRelease);
actionService.addAction(ActionType.FB, ActionStatus.PS, ztRelease.getId(), ztRelease.getProduct() + "", ztRelease.getProject(), null,
RiskUserThreadLocal.get().getName(), "", ztRelease.getAssignedTo());
} }
@Autowired
private IZtNoticeService noticeService;
@Autowired
private IZtProjectstoryService projectstoryService;
@Autowired
private IZtStoryService storyService;
@Override @Override
@Transactional @Transactional
@ -265,6 +335,8 @@ public class ZtReleaseServiceImpl extends ServiceImpl<ZtReleaseMapper, ZtRelease
} }
this.baseMapper.updateById(ztRelease); this.baseMapper.updateById(ztRelease);
actionService.addAction(ActionType.FB, ActionStatus.FB, ztRelease.getId(), ztRelease.getProduct() + "", ztRelease.getProject(), null,
RiskUserThreadLocal.get().getName(), "", "");
} }
@Override @Override
@ -321,7 +393,7 @@ public class ZtReleaseServiceImpl extends ServiceImpl<ZtReleaseMapper, ZtRelease
public PageInfo<ZtStoryDTO> projectStoryPageList(ZtReleaseQo qo) { public PageInfo<ZtStoryDTO> projectStoryPageList(ZtReleaseQo qo) {
ZtRelease ztRelease = this.baseMapper.selectById(qo.getId()); ZtRelease ztRelease = this.baseMapper.selectById(qo.getId());
String project = ztRelease.getProject(); Integer project = ztRelease.getProject();
// 项目查找所有迭代 // 项目查找所有迭代
List<ZtExecutionproject> execList = this.executionprojectService.list(new QueryWrapper<ZtExecutionproject>().lambda().eq(ZtExecutionproject::getProject, project)); List<ZtExecutionproject> execList = this.executionprojectService.list(new QueryWrapper<ZtExecutionproject>().lambda().eq(ZtExecutionproject::getProject, project));
@ -340,7 +412,8 @@ public class ZtReleaseServiceImpl extends ServiceImpl<ZtReleaseMapper, ZtRelease
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));
List<ZtReleaseDetails> list = this.releaseDetailsService.list(new QueryWrapper<ZtReleaseDetails>().lambda() List<ZtReleaseDetails> list = this.releaseDetailsService.list(new QueryWrapper<ZtReleaseDetails>().lambda()
.in(ZtReleaseDetails::getReleaseId, ztReleases.stream().map(o -> o.getId()).collect(Collectors.toList())).ne(ZtReleaseDetails::getStatus, "closed") .ne(ZtReleaseDetails::getStatus, "closed")
.in(ZtReleaseDetails::getObjectId,storyIdList)
.eq(ZtReleaseDetails::getObjectType, "story") .eq(ZtReleaseDetails::getObjectType, "story")
); );
if(!CollectionUtils.isEmpty(list)){ if(!CollectionUtils.isEmpty(list)){
@ -355,6 +428,9 @@ public class ZtReleaseServiceImpl extends ServiceImpl<ZtReleaseMapper, ZtRelease
} }
} }
qo.setStoryList(execStorys.stream().map(o->o.getStory()).collect(Collectors.toList())); qo.setStoryList(execStorys.stream().map(o->o.getStory()).collect(Collectors.toList()));
if(CollectionUtils.isEmpty(execStorys)){
return new PageInfo<ZtStoryDTO>();
}
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);
@ -385,17 +461,23 @@ public class ZtReleaseServiceImpl extends ServiceImpl<ZtReleaseMapper, ZtRelease
} }
@Override @Override
@Transactional
public void removeStory(ZtReleaseQo qo) { public void removeStory(ZtReleaseQo qo) {
Integer id = qo.getId(); Integer id = qo.getId();
Integer storyId = qo.getStoryId(); Integer storyId = qo.getStoryId();
ZtRelease ztRelease = this.baseMapper.selectById(id); ZtRelease ztRelease = this.baseMapper.selectById(id);
ZtReleaseDetails releaseDetails = this.releaseDetailsService.getOne(new QueryWrapper<ZtReleaseDetails>().lambda().eq(ZtReleaseDetails::getReleaseId, id) List<ZtReleaseDetails> releaseDetails = this.releaseDetailsService.list(new QueryWrapper<ZtReleaseDetails>().lambda()
.eq(ZtReleaseDetails::getObjectId, storyId)); .eq(ZtReleaseDetails::getReleaseId, id)
releaseDetails.setStatus("closed"); .in(ZtReleaseDetails::getObjectId, qo.getStoryList()).eq(ZtReleaseDetails::getObjectType,"story"));
this.releaseDetailsService.updateById(releaseDetails); for (ZtReleaseDetails d:releaseDetails) {
d.setStatus("closed");
}
this.releaseDetailsService.saveOrUpdateBatch(releaseDetails);
actionService.addAction(ActionType.FB, ActionStatus.BJ, ztRelease.getId(), ztRelease.getProduct() + "", ztRelease.getProject(), null,
RiskUserThreadLocal.get().getName(), "", "");
} }
@Override @Override
@ -403,11 +485,12 @@ public class ZtReleaseServiceImpl extends ServiceImpl<ZtReleaseMapper, ZtRelease
public void batchSyncStory(ZtReleaseQo qo) { public void batchSyncStory(ZtReleaseQo qo) {
List<Integer> storyList = qo.getStoryList(); List<Integer> storyList = qo.getStoryList();
List<ZtReleaseDetails> list = this.releaseDetailsService.list(new QueryWrapper<ZtReleaseDetails>().lambda() List<ZtReleaseDetails> list = this.releaseDetailsService.list(new QueryWrapper<ZtReleaseDetails>().lambda()
.eq(ZtReleaseDetails::getObjectType, "story").ne(ZtReleaseDetails::getStatus, "closed") .eq(ZtReleaseDetails::getObjectType, "story")
.ne(ZtReleaseDetails::getStatus, "closed")
.in(ZtReleaseDetails::getObjectId, storyList) .in(ZtReleaseDetails::getObjectId, storyList)
); );
if(!CollectionUtils.isEmpty(list)){ if(!CollectionUtils.isEmpty(list)){
throw new BusinessException("需求已被关联需求id :"+ list.get(0).getId()); throw new BusinessException("需求已被关联需求id :"+ list.get(0).getObjectId());
} }
List<ZtReleaseDetails> saveBatch=new ArrayList<>(); List<ZtReleaseDetails> saveBatch=new ArrayList<>();
for (Integer story:storyList) { for (Integer story:storyList) {
@ -421,5 +504,41 @@ public class ZtReleaseServiceImpl extends ServiceImpl<ZtReleaseMapper, ZtRelease
releaseDetailsService.saveBatch(saveBatch); releaseDetailsService.saveBatch(saveBatch);
ZtRelease ztRelease = this.baseMapper.selectById(qo.getId());
actionService.addAction(ActionType.FB, ActionStatus.BJ, ztRelease.getId(), ztRelease.getProduct() + "", ztRelease.getProject(), null,
RiskUserThreadLocal.get().getName(), "", "");
}
@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());
}
Integer productId = d.getProduct();
if(productId!=null&&productId!=0){
ZtProduct p = this.productService.getById(productId);
d.setProductName(p.getName());
}
ZtProject ztProject = this.projectService.getById(d.getProject());
if(ztProject!=null){
d.setProjectName(ztProject.getName());
}
ztUser = userMap.get(d.getCreatedby());
if(ztUser!=null){
d.setCreatedby(ztUser.getNickname());
}
return d;
} }
} }

View File

@ -134,6 +134,7 @@ public class ZtStoryServiceImpl extends ServiceImpl<ZtStoryMapper, ZtStory> impl
return new PageInfo<ZtStoryDTO>(list); return new PageInfo<ZtStoryDTO>(list);
} }
private Map<Integer, List<ZtStoryreviewDTO>> getReviewMap(List<ZtStoryDTO> list) { private Map<Integer, List<ZtStoryreviewDTO>> getReviewMap(List<ZtStoryDTO> list) {
List<ZtStoryreview> list1 = storyreviewService.list(new QueryWrapper<ZtStoryreview>().lambda().in(ZtStoryreview::getStory List<ZtStoryreview> list1 = storyreviewService.list(new QueryWrapper<ZtStoryreview>().lambda().in(ZtStoryreview::getStory
, list.stream().map(o -> o.getId()).collect(Collectors.toList()) , list.stream().map(o -> o.getId()).collect(Collectors.toList())
@ -432,68 +433,6 @@ public class ZtStoryServiceImpl extends ServiceImpl<ZtStoryMapper, ZtStory> impl
// if(dto.getExecution()!=null&&dto.getExecution()!=0){
// //1.没有绑定 解绑
// ZtProjectstory execStory = this.projectstoryService.getOne(new QueryWrapper<ZtProjectstory>().lambda().eq(ZtProjectstory::getStory, ztStory.getId())
// .ne(ZtProjectstory::getExecution, 0));
// //如果没有关联过迭代 去关联 第一次
// if(execStory==null){
// //如果是产品型需求 加项目 加迭代 如果是项目型产品 加迭代
//
// if (ztStory.getProduct() != null&&ztStory.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, 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{
// 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());
// }
} }
@ -503,13 +442,15 @@ public class ZtStoryServiceImpl extends ServiceImpl<ZtStoryMapper, ZtStory> impl
return; return;
} }
List<ZtExecutionproject> execProjectList = this.executionprojectService.list(new QueryWrapper<ZtExecutionproject>().lambda().eq(ZtExecutionproject::getProject, execList)); List<ZtExecutionproject> execProjectList = this.executionprojectService.list(new QueryWrapper<ZtExecutionproject>().lambda()
.in(ZtExecutionproject::getExecution, execList));
for (Integer execId:execList) { for (Integer execId:execList) {
List<ZtExecutionproject> fProjectList = execProjectList.stream().filter(o -> o.getExecution().intValue() == execId.intValue()).collect(Collectors.toList()); List<ZtExecutionproject> fProjectList = execProjectList.stream()
.filter(o -> o.getExecution().intValue() == execId.intValue()).collect(Collectors.toList());
Integer project = fProjectList.get(0).getProject(); Integer project = fProjectList.get(0).getProject();
List<ZtProjectstory> list = this.projectstoryService.list(new QueryWrapper<ZtProjectstory>().lambda() List<ZtProjectstory> list = this.projectstoryService.list(new QueryWrapper<ZtProjectstory>().lambda()
@ -647,6 +588,7 @@ public class ZtStoryServiceImpl extends ServiceImpl<ZtStoryMapper, ZtStory> impl
return BeanCopyUtil.copyListProperties(closed,ZtStoryDTO::new); return BeanCopyUtil.copyListProperties(closed,ZtStoryDTO::new);
} }
@Override @Override
public PageInfo<ZtStoryDTO> projectStoryPageList(ZtProjectQo qo) { public PageInfo<ZtStoryDTO> projectStoryPageList(ZtProjectQo qo) {
Page<ZtStoryDTO> page = PageHelper.startPage(qo.getCurrentPage(), qo.getPageSize()); Page<ZtStoryDTO> page = PageHelper.startPage(qo.getCurrentPage(), qo.getPageSize());
@ -757,7 +699,7 @@ public class ZtStoryServiceImpl extends ServiceImpl<ZtStoryMapper, ZtStory> impl
.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) .eq(ZtProjectstory::getProject,execution)
); );
List<Integer> syncIds = syncList.stream().map(o -> o.getStory()).collect(Collectors.toList()); List<Integer> syncIds = syncList.stream().map(o -> o.getStory()).collect(Collectors.toList());
@ -804,9 +746,10 @@ public class ZtStoryServiceImpl extends ServiceImpl<ZtStoryMapper, ZtStory> impl
return BeanCopyUtil.copyListProperties(ztStories, ZtStoryDTO::new); return BeanCopyUtil.copyListProperties(ztStories, ZtStoryDTO::new);
} }
@Override @Override
@Transactional @Transactional
public void startStory(Integer id, Integer execution) { public void startStory(Integer id) {
if(id==null||id==0){ if(id==null||id==0){
return; return;
} }
@ -829,23 +772,27 @@ public class ZtStoryServiceImpl extends ServiceImpl<ZtStoryMapper, ZtStory> impl
ztStory.setStage("developing"); ztStory.setStage("developing");
ztStory.setStartDate(new Date()); ztStory.setStartDate(new Date());
this.baseMapper.updateById(ztStory); this.baseMapper.updateById(ztStory);
if(execution!=null&&execution!=0){ List<Integer> executionId = getExecutionId(ztStory);
//查 ready for (Integer execution:executionId) {
//backlog kanbanlaneService.changeStatus(execution,id,"story","developing");
ZtKanbancell backlog = this.kanbanlaneService.getZtKanbanlane("story", "backlog", execution);
ZtKanbancell ready = this.kanbanlaneService.getZtKanbanlane("story", "ready", execution);
ZtKanbancell toCell = this.kanbanlaneService.getZtKanbanlane("story", "developing", execution);
Integer fromId = backlog.getCards().contains(id.toString()) ? backlog.getColumn() : ready.getColumn();
KanbanQo qo = new KanbanQo();
qo.setStatusType("developing");
qo.setTabType("story");
qo.setId(ztStory.getId());
qo.setFromId(fromId);
qo.setToId(toCell.getColumn());
kanbanlaneService.changeStatus(qo);
} }
// if(execution!=null&&execution!=0){
// //查 ready
// //backlog
// ZtKanbancell backlog = this.kanbanlaneService.getZtKanbanlane("story", "backlog", execution);
// ZtKanbancell ready = this.kanbanlaneService.getZtKanbanlane("story", "ready", execution);
// ZtKanbancell toCell = this.kanbanlaneService.getZtKanbanlane("story", "developing", execution);
// Integer fromId = backlog.getCards().contains(id.toString()) ? backlog.getColumn() : ready.getColumn();
//
//
// KanbanQo qo = new KanbanQo();
// qo.setStatusType("developing");
// qo.setTabType("story");
// qo.setId(ztStory.getId());
// qo.setFromId(fromId);
// qo.setToId(toCell.getColumn());
// kanbanlaneService.changeStatus(qo);
// }
actionService.addAction(ActionType.XQ, ActionStatus.KS, ztStory.getId(), ztStory.getProduct() + "", ztStory.getProject(), null, actionService.addAction(ActionType.XQ, ActionStatus.KS, ztStory.getId(), ztStory.getProduct() + "", ztStory.getProject(), null,
RiskUserThreadLocal.get().getName(), null, ""); RiskUserThreadLocal.get().getName(), null, "");
@ -853,7 +800,7 @@ public class ZtStoryServiceImpl extends ServiceImpl<ZtStoryMapper, ZtStory> impl
@Override @Override
@Transactional @Transactional
public void finishStory(Integer id, Integer execution) { public void finishStory(Integer id) {
if(id==null||id==0){ if(id==null||id==0){
return; return;
@ -873,7 +820,11 @@ public class ZtStoryServiceImpl extends ServiceImpl<ZtStoryMapper, ZtStory> impl
}else{ }else{
ztStory.setStage("tested"); ztStory.setStage("tested");
this.baseMapper.updateById(ztStory); this.baseMapper.updateById(ztStory);
List<Integer> executionId = this.getExecutionId(ztStory);
for (Integer execution:executionId ) {
kanbanlaneService.changeStatus(execution,id,"story","tested"); kanbanlaneService.changeStatus(execution,id,"story","tested");
}
actionService.addAction(ActionType.XQ, ActionStatus.CSWC, ztStory.getId(), ztStory.getProduct() + "", ztStory.getProject(), null, actionService.addAction(ActionType.XQ, ActionStatus.CSWC, ztStory.getId(), ztStory.getProduct() + "", ztStory.getProject(), null,
RiskUserThreadLocal.get().getName(), null, ""); RiskUserThreadLocal.get().getName(), null, "");
} }
@ -884,13 +835,20 @@ public class ZtStoryServiceImpl extends ServiceImpl<ZtStoryMapper, ZtStory> impl
.in(ZtTask::getStatus, Arrays.asList("wait", "doing", "pause")) .in(ZtTask::getStatus, Arrays.asList("wait", "doing", "pause"))
.eq(ZtTask::getType,"devel") .eq(ZtTask::getType,"devel")
); );
if(Arrays.asList("wait").contains(ztStory.getStage())){
this.startStory(id);
return ;
}
if (!CollectionUtils.isEmpty(list)) { if (!CollectionUtils.isEmpty(list)) {
return; return;
} }
ztStory.setStage("developed"); ztStory.setStage("developed");
this.baseMapper.updateById(ztStory); this.baseMapper.updateById(ztStory);
List<Integer> executionId = this.getExecutionId(ztStory);
for (Integer execution:executionId ) {
kanbanlaneService.changeStatus(execution,id,"story","developed"); kanbanlaneService.changeStatus(execution,id,"story","developed");
}
actionService.addAction(ActionType.XQ, ActionStatus.WC, ztStory.getId(), ztStory.getProduct() + "", ztStory.getProject(), null, actionService.addAction(ActionType.XQ, ActionStatus.WC, ztStory.getId(), ztStory.getProduct() + "", ztStory.getProject(), null,
RiskUserThreadLocal.get().getName(), null, ""); RiskUserThreadLocal.get().getName(), null, "");
} }
@ -914,9 +872,9 @@ public class ZtStoryServiceImpl extends ServiceImpl<ZtStoryMapper, ZtStory> impl
if("closed".equals(ztStory.getStatus())){ if("closed".equals(ztStory.getStatus())){
throw new BusinessException("当前已关闭"); throw new BusinessException("当前已关闭");
} }
if(!"testing".equals(ztStory.getStage())){ // if(!"testing".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("当前无迭代,不可以更改");
@ -926,6 +884,9 @@ public class ZtStoryServiceImpl extends ServiceImpl<ZtStoryMapper, ZtStory> impl
.in(ZtTask::getType,"test","devel") .in(ZtTask::getType,"test","devel")
); );
if (!CollectionUtils.isEmpty(list)) { if (!CollectionUtils.isEmpty(list)) {
if("developed".equals(ztStory.getStage())){
this.testingStory(story);
}
return; return;
} }
String oldStatus = ztStory.getStage(); String oldStatus = ztStory.getStage();
@ -1024,6 +985,7 @@ public class ZtStoryServiceImpl extends ServiceImpl<ZtStoryMapper, ZtStory> impl
RiskUserThreadLocal.get().getName(), null, ""); RiskUserThreadLocal.get().getName(), null, "");
} }
@Override @Override
public void testingStory(Integer story) { public void testingStory(Integer story) {
if(story==null||story==0){ if(story==null||story==0){
@ -1356,7 +1318,7 @@ 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()) .eq(ZtProjectstory::getType, ProjectTypeEnums.execution.getValue())
); );
if(CollectionUtils.isEmpty(list)){ if(CollectionUtils.isEmpty(list)){
return new ArrayList<>(); return new ArrayList<>();
@ -1486,6 +1448,9 @@ public class ZtStoryServiceImpl extends ServiceImpl<ZtStoryMapper, ZtStory> impl
@Override @Override
public ZtStoryDTO getStoryById(Integer id,Integer execution) { public ZtStoryDTO getStoryById(Integer id,Integer execution) {
ZtStory ztStory = this.baseMapper.selectById(id); ZtStory ztStory = this.baseMapper.selectById(id);
if(ztStory==null){
throw new BusinessException("未查询到数据");
}
ZtStoryDTO d=new ZtStoryDTO(); ZtStoryDTO d=new ZtStoryDTO();
BeanUtils.copyProperties(ztStory,d); BeanUtils.copyProperties(ztStory,d);
@ -1545,6 +1510,7 @@ public class ZtStoryServiceImpl extends ServiceImpl<ZtStoryMapper, ZtStory> impl
return d; return d;
} }
@Override @Override
public List<ZtProject> execListByProject(ZtStoryDTO dto) { public List<ZtProject> execListByProject(ZtStoryDTO dto) {
@ -1689,7 +1655,6 @@ 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::getProject, qo.getId())
@ -1707,6 +1672,7 @@ public class ZtStoryServiceImpl extends ServiceImpl<ZtStoryMapper, ZtStory> impl
} }
public ProductStoryStatus getProductStatus(String status) { public ProductStoryStatus getProductStatus(String status) {

View File

@ -221,6 +221,11 @@ public class ZtTaskServiceImpl extends ServiceImpl<ZtTaskMapper, ZtTask> impleme
return dto; return dto;
} }
@Override
public List<ZtTaskDTO> taskListPrd(Integer id) {
return this.baseMapper.taskListPrd(id);
}
@Override @Override
public PageInfo<ZtTaskDTO> myTaskPageList(ZtProjectQo qo) { public PageInfo<ZtTaskDTO> myTaskPageList(ZtProjectQo qo) {
@ -467,13 +472,23 @@ public class ZtTaskServiceImpl extends ServiceImpl<ZtTaskMapper, ZtTask> impleme
} }
if("devel".equals(ztTask.getType())){ if("devel".equals(ztTask.getType())){
//处理需求 //处理需求
this.storyService.startStory(ztTask.getStory(),ztTask.getExecution());
if("done".equals(ztTask.getStatus())){
this.storyService.finishStory(ztTask.getStory());
}else if("doing".equals(ztTask.getStatus())){
this.storyService.startStory(ztTask.getStory());
}
} }
if("test".equals(ztTask.getType())){ if("test".equals(ztTask.getType())){
//处理需求 //处理需求
if("done".equals(ztTask.getStatus())){
this.storyService.testedStory(ztTask.getStory());
}else if("doing".equals(ztTask.getStatus())){
this.storyService.testingStory(ztTask.getStory()); this.storyService.testingStory(ztTask.getStory());
} }
}
Integer execution = ztTask.getExecution(); Integer execution = ztTask.getExecution();
ZtProject project = this.ztProjectService.getById(execution); ZtProject project = this.ztProjectService.getById(execution);
@ -489,7 +504,7 @@ public class ZtTaskServiceImpl extends ServiceImpl<ZtTaskMapper, ZtTask> impleme
}else }else
if("devel".equals(type)){ if("devel".equals(type)){
//开发 //开发
this.storyService.finishStory(ztTask.getStory(),ztTask.getExecution()); this.storyService.finishStory(ztTask.getStory());
} }
} }
@ -566,7 +581,7 @@ public class ZtTaskServiceImpl extends ServiceImpl<ZtTaskMapper, ZtTask> impleme
}else }else
if("devel".equals(type)){ if("devel".equals(type)){
//开发 //开发
this.storyService.finishStory(ztTask.getStory(),ztTask.getExecution()); this.storyService.finishStory(ztTask.getStory());
} }
} }

View File

@ -22,12 +22,12 @@ spring:
strict: false #严格匹配数据源,默认false. true未匹配到指定数据源时抛异常,false使用默认数据源 strict: false #严格匹配数据源,默认false. true未匹配到指定数据源时抛异常,false使用默认数据源
datasource: datasource:
master: master:
url: jdbc:mysql://192.168.1.161:3306/zentao?useUnicode=true&characterEncoding=UTF8&useSSL=false&serverTimezone=Asia/Shanghai&allowMultiQueries=true&allowPublicKeyRetrieval=true # url: jdbc:mysql://192.168.1.161:3306/zentao?useUnicode=true&characterEncoding=UTF8&useSSL=false&serverTimezone=Asia/Shanghai&allowMultiQueries=true&allowPublicKeyRetrieval=true
username: devgps # username: devgps
password: dev@2021GPS # password: dev@2021GPS
# url: jdbc:mysql://192.168.3.200:3306/zentao_dev?useUnicode=true&characterEncoding=UTF8&useSSL=false&serverTimezone=Asia/Shanghai&allowMultiQueries=true&allowPublicKeyRetrieval=true url: jdbc:mysql://192.168.3.200:3306/zentao_dev?useUnicode=true&characterEncoding=UTF8&useSSL=false&serverTimezone=Asia/Shanghai&allowMultiQueries=true&allowPublicKeyRetrieval=true
# username: root username: root
# password: PX4fTAAsJ#T!1 password: PX4fTAAsJ#T!1
driver-class-name: com.mysql.cj.jdbc.Driver # 3.2.0开始支持SPI可省略此配置 driver-class-name: com.mysql.cj.jdbc.Driver # 3.2.0开始支持SPI可省略此配置
slave: slave:

View File

@ -184,7 +184,7 @@
and ps.project =#{qo.project} and ps.project =#{qo.project}
</if> </if>
<if test="qo.execution != null "> <if test="qo.execution != null ">
and ps.execution =#{qo.execution} and ps.project =#{qo.execution}
</if> </if>
<if test="qo.module != null "> <if test="qo.module != null ">
and s.module =#{qo.module} and s.module =#{qo.module}

View File

@ -206,6 +206,11 @@
</select>
<select id="taskListPrd" resultType="com.sa.zentao.dao.ZtTaskDTO">
select * from zt_task where execution = #{id}
</select> </select>
</mapper> </mapper>