bug修复等
This commit is contained in:
@@ -1,16 +1,30 @@
|
||||
package com.sa.zentao.controller;
|
||||
|
||||
|
||||
import com.alibaba.excel.EasyExcel;
|
||||
import com.alibaba.excel.ExcelWriter;
|
||||
import com.alibaba.excel.metadata.data.HyperlinkData;
|
||||
import com.alibaba.excel.metadata.data.WriteCellData;
|
||||
import com.alibaba.excel.write.metadata.WriteSheet;
|
||||
import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.github.pagehelper.PageInfo;
|
||||
import com.sa.zentao.dao.*;
|
||||
import com.sa.zentao.entity.ZtProject;
|
||||
import com.sa.zentao.entity.ZtProjectproduct;
|
||||
import com.sa.zentao.entity.ZtStoryFeedback;
|
||||
import com.sa.zentao.enums.StoryStageEnums;
|
||||
import com.sa.zentao.enums.StoryStatusEnums;
|
||||
import com.sa.zentao.enums.UserStoryEnums;
|
||||
import com.sa.zentao.qo.SearchQo;
|
||||
import com.sa.zentao.qo.StoryQo;
|
||||
import com.sa.zentao.qo.ZtProjectQo;
|
||||
import com.sa.zentao.service.IZtProjectproductService;
|
||||
import com.sa.zentao.service.IZtStoryFeedbackService;
|
||||
import com.sa.zentao.service.IZtStoryService;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
@@ -18,7 +32,9 @@ import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMethod;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
@@ -39,13 +55,118 @@ public class ZtStoryController {
|
||||
@Autowired
|
||||
private IZtProjectproductService projectproductService;
|
||||
|
||||
@Autowired
|
||||
private IZtStoryFeedbackService storyFeedbackService;
|
||||
|
||||
@Value("${file.backUrl}")
|
||||
private String url;
|
||||
|
||||
@RequestMapping(value = "/pageList", method = RequestMethod.POST, produces = "application/json; charset=UTF-8")
|
||||
public Result<ZtStoryDTO> storyPageList(@RequestBody ZtProjectQo qo){
|
||||
|
||||
return Result.success(ztStoryService.pageList(qo));
|
||||
}
|
||||
|
||||
@RequestMapping(value = "/storyExport", method = RequestMethod.POST)
|
||||
public void storyExport(@RequestBody ZtProjectQo qo, jakarta.servlet.ServletResponse response){
|
||||
qo.setPageSize(1000000);
|
||||
PageInfo<ZtStoryDTO> p = ztStoryService.pageList(qo);
|
||||
List<ZtStoryDTO> list = p.getList();
|
||||
List<Integer> feedbackIds = list.stream().filter(o -> o.getFeedback() != null && o.getFeedback() != 0).map(o -> o.getFeedback()).collect(Collectors.toList());
|
||||
|
||||
Map<Integer, ZtStoryFeedback> feedbackMap= CollectionUtils.isEmpty(feedbackIds)?new HashMap<Integer,ZtStoryFeedback>(): this.storyFeedbackService.listByIds(feedbackIds).stream().collect(Collectors.toMap(ZtStoryFeedback::getId, o->o));
|
||||
|
||||
for (ZtStoryDTO ztStoryUserDTO : list) {
|
||||
|
||||
ZtStoryFeedback ztStoryFeedback = feedbackMap.get(ztStoryUserDTO.getFeedback());
|
||||
if (ztStoryFeedback != null) {
|
||||
String reName=ztStoryFeedback.getId()+":"+ztStoryFeedback.getSpec();
|
||||
String reUrl = url+"/#/product-feedback-info/"+ztStoryFeedback.getId();
|
||||
WriteCellData<String> hyperlink = new WriteCellData<>(reName);
|
||||
HyperlinkData hyperlinkData = new HyperlinkData();
|
||||
try {
|
||||
hyperlinkData.setAddress(reUrl.replace(" ", "%20"));
|
||||
hyperlinkData.setHyperlinkType(HyperlinkData.HyperlinkType.URL);
|
||||
hyperlink.setHyperlinkData(hyperlinkData);
|
||||
ztStoryUserDTO.setFeedbackSpecUrl(hyperlink );
|
||||
} catch (Exception e) {
|
||||
ztStoryUserDTO.setFeedbackSpecUrl(null);
|
||||
}
|
||||
}
|
||||
if(ztStoryUserDTO.getParent()!=null&&ztStoryUserDTO.getParent()!=0){
|
||||
String reName = ztStoryUserDTO.getParent()+":"+ztStoryUserDTO.getParentName();
|
||||
String reUrl = url+"/#/product-story-info/"+ztStoryUserDTO.getParent();
|
||||
WriteCellData<String> hyperlink = new WriteCellData<>(reName);
|
||||
HyperlinkData hyperlinkData = new HyperlinkData();
|
||||
try {
|
||||
hyperlinkData.setAddress(reUrl.replace(" ", "%20"));
|
||||
hyperlinkData.setHyperlinkType(HyperlinkData.HyperlinkType.URL);
|
||||
hyperlink.setHyperlinkData(hyperlinkData);
|
||||
ztStoryUserDTO.setParentNameUrl(hyperlink);
|
||||
} catch (Exception e) {
|
||||
ztStoryUserDTO.setParentNameUrl(null);
|
||||
}
|
||||
}
|
||||
if(ztStoryUserDTO.getUserStory()!=null&&ztStoryUserDTO.getUserStory()!=0){
|
||||
String reName=ztStoryUserDTO.getUserStory()+":"+ztStoryUserDTO.getUserStoryName();
|
||||
String reUrl = url+"/#/product-user-story-info/"+ztStoryUserDTO.getUserStory();
|
||||
WriteCellData<String> hyperlink = new WriteCellData<>(reName);
|
||||
HyperlinkData hyperlinkData = new HyperlinkData();
|
||||
try {
|
||||
hyperlinkData.setAddress(reUrl.replace(" ", "%20"));
|
||||
hyperlinkData.setHyperlinkType(HyperlinkData.HyperlinkType.URL);
|
||||
hyperlink.setHyperlinkData(hyperlinkData);
|
||||
ztStoryUserDTO.setUserStoryNameUrl(hyperlink);
|
||||
} catch (Exception e) {
|
||||
ztStoryUserDTO.setUserStoryNameUrl(null);
|
||||
}
|
||||
}
|
||||
String reName=ztStoryUserDTO.getId()+":"+ztStoryUserDTO.getTitle();
|
||||
String reUrl = url+"/#/product-story-info/"+ztStoryUserDTO.getId();
|
||||
WriteCellData<String> hyperlink = new WriteCellData<>(reName);
|
||||
HyperlinkData hyperlinkData = new HyperlinkData();
|
||||
try {
|
||||
hyperlinkData.setAddress(reUrl.replace(" ", "%20"));
|
||||
hyperlinkData.setHyperlinkType(HyperlinkData.HyperlinkType.URL);
|
||||
hyperlink.setHyperlinkData(hyperlinkData);
|
||||
ztStoryUserDTO.setStoryUrl(hyperlink);
|
||||
} catch (Exception e) {
|
||||
ztStoryUserDTO.setStoryUrl(null);
|
||||
}
|
||||
|
||||
if(!StringUtils.isEmpty(ztStoryUserDTO.getReviewedbyName())){
|
||||
ztStoryUserDTO.setReviewedbyName(ztStoryUserDTO.getReviewedbyName().replaceAll(",",""));
|
||||
}
|
||||
ztStoryUserDTO.setStatus(StoryStatusEnums.transfer(ztStoryUserDTO.getStatus())==null?null:StoryStatusEnums.transfer(ztStoryUserDTO.getStatus()).getDesc());
|
||||
ztStoryUserDTO.setStage(StoryStageEnums.transfer(ztStoryUserDTO.getStage())==null?null:StoryStageEnums.transfer(ztStoryUserDTO.getStage()).getDesc());
|
||||
if(ztStoryUserDTO.getYsFlag()!=null&&ztStoryUserDTO.getYsFlag()!=0){
|
||||
ztStoryUserDTO.setYsFlagName(ztStoryUserDTO.getYsFlag()==1?"通过":"不通过");
|
||||
}
|
||||
if(!StringUtils.isEmpty(ztStoryUserDTO.getUserStoryName())){
|
||||
ztStoryUserDTO.setUserStoryName(ztStoryUserDTO.getUserStoryId()+":"+ztStoryUserDTO.getUserStoryName());
|
||||
}
|
||||
if(ztStoryUserDTO.getParent()!=null&&ztStoryUserDTO.getParent()!=0){
|
||||
ztStoryUserDTO.setParentName(ztStoryUserDTO.getParent()+":"+ztStoryUserDTO.getParentName());
|
||||
}
|
||||
|
||||
}
|
||||
ExcelWriter excelWriter = null;
|
||||
response.setContentType("application/vnd.ms-excel;charset=UTF-8");
|
||||
try {
|
||||
excelWriter = EasyExcel.write(response.getOutputStream())
|
||||
.registerWriteHandler(new LongestMatchColumnWidthStyleStrategy())
|
||||
.needHead(Boolean.TRUE).build();
|
||||
|
||||
WriteSheet writeSheet = EasyExcel.writerSheet(0, "sheet1")
|
||||
.head(ZtStoryDTO.class)
|
||||
.needHead(Boolean.TRUE).build();
|
||||
|
||||
excelWriter.write(list, writeSheet);
|
||||
excelWriter.finish();
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@RequestMapping(value = "/projectStoryPageList", method = RequestMethod.POST, produces = "application/json; charset=UTF-8")
|
||||
public Result<ZtStoryDTO> projectStoryPageList(@RequestBody ZtProjectQo qo){
|
||||
|
||||
@@ -1,22 +1,38 @@
|
||||
package com.sa.zentao.controller;
|
||||
|
||||
|
||||
import com.alibaba.excel.EasyExcel;
|
||||
import com.alibaba.excel.ExcelWriter;
|
||||
import com.alibaba.excel.metadata.data.HyperlinkData;
|
||||
import com.alibaba.excel.metadata.data.WriteCellData;
|
||||
import com.alibaba.excel.write.metadata.WriteSheet;
|
||||
import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.github.pagehelper.PageInfo;
|
||||
import com.sa.zentao.dao.Result;
|
||||
import com.sa.zentao.dao.ZtStoryDTO;
|
||||
import com.sa.zentao.dao.ZtStoryFeedbackDTO;
|
||||
import com.sa.zentao.dao.ZtStoryUserDTO;
|
||||
import com.sa.zentao.entity.ZtStoryFeedback;
|
||||
import com.sa.zentao.enums.FeedbackStatusEnums;
|
||||
import com.sa.zentao.enums.StoryStageEnums;
|
||||
import com.sa.zentao.enums.StoryStatusEnums;
|
||||
import com.sa.zentao.qo.ZtProjectQo;
|
||||
import com.sa.zentao.service.IZtStoryFeedbackService;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
|
||||
import org.springframework.web.bind.annotation.RequestMethod;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
@@ -33,11 +49,74 @@ public class ZtStoryFeedbackController {
|
||||
@Autowired
|
||||
private IZtStoryFeedbackService storyFeedbackService;
|
||||
|
||||
@Value("${file.backUrl}")
|
||||
private String url;
|
||||
|
||||
@RequestMapping(value = "/pageList", method = RequestMethod.POST, produces = "application/json; charset=UTF-8")
|
||||
public Result<ZtStoryFeedbackDTO> storyPageList(@RequestBody ZtProjectQo qo){
|
||||
return Result.success(storyFeedbackService.pageList(qo));
|
||||
}
|
||||
|
||||
@RequestMapping(value = "/storyExport", method = RequestMethod.POST)
|
||||
public void storyExport(@RequestBody ZtProjectQo qo, jakarta.servlet.ServletResponse response){
|
||||
qo.setPageSize(1000000);
|
||||
PageInfo<ZtStoryFeedbackDTO> p = storyFeedbackService.pageList(qo);
|
||||
List<ZtStoryFeedbackDTO> list = p.getList();
|
||||
|
||||
for (ZtStoryFeedbackDTO ztStoryUserDTO : list) {
|
||||
FeedbackStatusEnums feedbackStatusEnums = FeedbackStatusEnums.transferType(ztStoryUserDTO.getStatus());
|
||||
if(feedbackStatusEnums!=null){
|
||||
ztStoryUserDTO.setStatus(feedbackStatusEnums.getValue());
|
||||
}
|
||||
if(!StringUtils.isEmpty(ztStoryUserDTO.getOpenSource())){
|
||||
ztStoryUserDTO.setOpenSource("weixin".equals(ztStoryUserDTO.getOpenSource())?"微信":"");
|
||||
}
|
||||
Integer type = ztStoryUserDTO.getType();
|
||||
String typeName=null;
|
||||
if(type==1){
|
||||
typeName="bug修复";
|
||||
}else if(type==2){
|
||||
typeName="改进意见";
|
||||
}else if(type==3){
|
||||
typeName="其他";
|
||||
}
|
||||
ztStoryUserDTO.setTypeName(typeName);
|
||||
|
||||
|
||||
String reName=ztStoryUserDTO.getId()+":"+ztStoryUserDTO.getSpec();
|
||||
String reUrl = url+"/#/product-feedback-info/"+ztStoryUserDTO.getId();
|
||||
WriteCellData<String> hyperlink = new WriteCellData<>(reName);
|
||||
HyperlinkData hyperlinkData = new HyperlinkData();
|
||||
try {
|
||||
hyperlinkData.setAddress(reUrl.replace(" ", "%20"));
|
||||
hyperlinkData.setHyperlinkType(HyperlinkData.HyperlinkType.URL);
|
||||
hyperlink.setHyperlinkData(hyperlinkData);
|
||||
ztStoryUserDTO.setFeedbackUrl(hyperlink);
|
||||
} catch (Exception e) {
|
||||
ztStoryUserDTO.setFeedbackUrl(null);
|
||||
}
|
||||
|
||||
}
|
||||
ExcelWriter excelWriter = null;
|
||||
response.setContentType("application/vnd.ms-excel;charset=UTF-8");
|
||||
try {
|
||||
excelWriter = EasyExcel.write(response.getOutputStream())
|
||||
.registerWriteHandler(new LongestMatchColumnWidthStyleStrategy())
|
||||
.needHead(Boolean.TRUE).build();
|
||||
|
||||
WriteSheet writeSheet = EasyExcel.writerSheet(0, "sheet1")
|
||||
.head(ZtStoryFeedbackDTO.class)
|
||||
.needHead(Boolean.TRUE).build();
|
||||
|
||||
excelWriter.write(list, writeSheet);
|
||||
excelWriter.finish();
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@RequestMapping(value = "/getFeedbackById", method = RequestMethod.POST, produces = "application/json; charset=UTF-8")
|
||||
public Result<ZtStoryFeedbackDTO> getFeedbackById(@RequestBody ZtProjectQo qo){
|
||||
return Result.success(storyFeedbackService.getFeedbackById(qo));
|
||||
|
||||
@@ -1,12 +1,14 @@
|
||||
package com.sa.zentao.controller;
|
||||
|
||||
|
||||
import com.alibaba.excel.EasyExcel;
|
||||
import com.alibaba.excel.ExcelWriter;
|
||||
import com.alibaba.excel.write.metadata.WriteSheet;
|
||||
import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.github.pagehelper.PageInfo;
|
||||
import com.sa.zentao.dao.Result;
|
||||
import com.sa.zentao.dao.ZtStoryDTO;
|
||||
import com.sa.zentao.dao.ZtStoryUserDTO;
|
||||
import com.sa.zentao.dao.*;
|
||||
import com.sa.zentao.entity.ZtStory;
|
||||
import com.sa.zentao.entity.ZtStoryUser;
|
||||
import com.sa.zentao.enums.UserStoryEnums;
|
||||
@@ -19,6 +21,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@@ -59,7 +62,7 @@ public class ZtStoryUserController {
|
||||
storyUserService.addStory(dto);
|
||||
return Result.success();
|
||||
}
|
||||
@RequestMapping(value = "/getKanban", method = RequestMethod.POST, produces = "application/json; charset=UTF-8")
|
||||
@RequestMapping(value = "/getKanban", method = RequestMethod.GET, produces = "application/json; charset=UTF-8")
|
||||
public Result getKanban(@RequestParam(name = "productId",required = true) Integer productId){
|
||||
return Result.success(storyUserService.getKanban(productId));
|
||||
}
|
||||
@@ -80,6 +83,36 @@ public class ZtStoryUserController {
|
||||
return Result.success(p);
|
||||
}
|
||||
|
||||
@RequestMapping(value = "/export", method = RequestMethod.POST, produces = "application/json; charset=UTF-8")
|
||||
public void export(@RequestBody StoryQo qo, jakarta.servlet.ServletResponse response){
|
||||
qo.setPageSize(1000000);
|
||||
PageInfo<ZtStoryUserDTO> p = storyUserService.pageList(qo);
|
||||
List<ZtStoryUserDTO> list = p.getList();
|
||||
for (ZtStoryUserDTO ztStoryUserDTO : list) {
|
||||
if(!StringUtils.isEmpty(ztStoryUserDTO.getReviewedbyName())){
|
||||
ztStoryUserDTO.setReviewedbyName(ztStoryUserDTO.getReviewedbyName().replaceAll(",",""));
|
||||
}
|
||||
ztStoryUserDTO.setStatus(UserStoryEnums.transfer(ztStoryUserDTO.getStatus())==null?null:UserStoryEnums.transfer(ztStoryUserDTO.getStatus()).getValue());
|
||||
}
|
||||
ExcelWriter excelWriter = null;
|
||||
response.setContentType("application/vnd.ms-excel;charset=UTF-8");
|
||||
try {
|
||||
excelWriter = EasyExcel.write(response.getOutputStream())
|
||||
.registerWriteHandler(new LongestMatchColumnWidthStyleStrategy())
|
||||
.needHead(Boolean.TRUE).build();
|
||||
|
||||
WriteSheet writeSheet = EasyExcel.writerSheet(0, "sheet1")
|
||||
.head(ZtStoryUserDTO.class)
|
||||
.needHead(Boolean.TRUE).build();
|
||||
|
||||
excelWriter.write(list, writeSheet);
|
||||
excelWriter.finish();
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@RequestMapping(value = "/storyList", method = RequestMethod.POST, produces = "application/json; charset=UTF-8")
|
||||
public Result storyList(@RequestBody StoryQo qo){
|
||||
LambdaQueryWrapper<ZtStoryUser> eq = new QueryWrapper<ZtStoryUser>()
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
package com.sa.zentao.dao;
|
||||
|
||||
import com.alibaba.excel.annotation.ExcelIgnore;
|
||||
import com.alibaba.excel.annotation.ExcelProperty;
|
||||
import com.alibaba.excel.metadata.data.WriteCellData;
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
@@ -28,59 +31,145 @@ public class ZtStoryDTO implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@TableId(value = "id", type = IdType.AUTO)
|
||||
@ExcelProperty(value = "ID",index =0)
|
||||
private Integer id;
|
||||
|
||||
private List<Integer> idList;
|
||||
|
||||
private String vision;
|
||||
private Integer parent;
|
||||
private String parentName;
|
||||
private Integer product;
|
||||
private Integer productId;
|
||||
|
||||
private String productName;
|
||||
private String projectName;
|
||||
private Integer projectId;
|
||||
|
||||
private String implementName;
|
||||
private Integer implementId;
|
||||
|
||||
private Integer branch;
|
||||
|
||||
private Integer module;
|
||||
private String moduleName;
|
||||
private String plan;
|
||||
|
||||
private String source;
|
||||
|
||||
@TableField("sourceNote")
|
||||
private String sourceNote;
|
||||
|
||||
@TableField("fromBug")
|
||||
private Integer frombug;
|
||||
|
||||
private Integer feedback;
|
||||
|
||||
private String feedbackSpec;
|
||||
|
||||
@ExcelProperty(value = "研发需求名称",index =1)
|
||||
private String title;
|
||||
|
||||
private String keywords;
|
||||
|
||||
private String type;
|
||||
|
||||
private String category;
|
||||
|
||||
@ExcelProperty(value = "P",index =2)
|
||||
private Integer pri;
|
||||
|
||||
private Float estimate;
|
||||
|
||||
@ExcelProperty(value = "迭代名称",index =3)
|
||||
private String executionName;
|
||||
// private List<ZtProjectDTO> executionList;
|
||||
@ExcelProperty(value = "状态",index =4)
|
||||
private String status;
|
||||
|
||||
@TableField("subStatus")
|
||||
private String substatus;
|
||||
@ExcelProperty(value = "期望完成时间",index =5)
|
||||
private Date planEndDate;
|
||||
@ExcelProperty(value = "阶段",index =6)
|
||||
private String stage;
|
||||
@ExcelProperty(value = "指派给",index =7)
|
||||
private String assignedToName;
|
||||
|
||||
//验收人
|
||||
@ExcelProperty(value = "验收人",index =8)
|
||||
private String ysUserName;
|
||||
//1通过 2不通过
|
||||
@ExcelIgnore
|
||||
private Integer ysFlag;
|
||||
//1通过 2不通过
|
||||
@ExcelProperty(value = "验收状态",index =9)
|
||||
private String ysFlagName;
|
||||
|
||||
@ExcelProperty(value = "创建者",index =10)
|
||||
private String openedbyName;
|
||||
|
||||
@ExcelProperty(value = "创建日期",index =11)
|
||||
private Date openeddate;
|
||||
//验收人
|
||||
// @ExcelProperty(value = "验收人",index =12)
|
||||
@ExcelIgnore
|
||||
private String ysUser;
|
||||
|
||||
@ExcelIgnore
|
||||
private String reviewedby;
|
||||
@ExcelProperty(value = "评审人",index =12)
|
||||
private String reviewedbyName;
|
||||
|
||||
|
||||
@ExcelProperty(value = "更新日期",index =13)
|
||||
private Date lastediteddate;
|
||||
|
||||
@ExcelProperty(value = "由谁关闭",index =14)
|
||||
private String closedbyName;
|
||||
@ExcelIgnore
|
||||
private String closedby;
|
||||
@ExcelProperty(value = "关闭原因",index =15)
|
||||
private String closedreason;
|
||||
@ExcelProperty(value = "用户需求名称",index =16)
|
||||
private WriteCellData<String> userStoryNameUrl;
|
||||
|
||||
@ExcelProperty(value = "用户需求提交人",index =17)
|
||||
private String userStoryCreateUser;
|
||||
@ExcelProperty(value = "用户需求创建时间",index =18)
|
||||
private Date userStoryCreateTime;
|
||||
@ExcelIgnore
|
||||
private String userStoryName;
|
||||
@ExcelProperty(value = "父需求",index =19)
|
||||
private WriteCellData<String> parentNameUrl;
|
||||
@ExcelIgnore
|
||||
private String parentName;
|
||||
@ExcelProperty(value = "问题反馈",index =20)
|
||||
private WriteCellData<String> feedbackSpecUrl;
|
||||
|
||||
@ExcelProperty(value = "需求链接",index =21)
|
||||
private WriteCellData<String> storyUrl;
|
||||
|
||||
@ExcelIgnore
|
||||
private String feedbackSpec;
|
||||
|
||||
@ExcelIgnore
|
||||
private Date closeddate;
|
||||
@ExcelIgnore
|
||||
private Integer userStoryId;
|
||||
|
||||
@ExcelIgnore
|
||||
private String revieweUser;
|
||||
|
||||
@ExcelIgnore
|
||||
private List<Integer> idList;
|
||||
@ExcelIgnore
|
||||
private String vision;
|
||||
@ExcelIgnore
|
||||
private Integer parent;
|
||||
@ExcelIgnore
|
||||
private Integer product;
|
||||
@ExcelIgnore
|
||||
private Integer productId;
|
||||
@ExcelIgnore
|
||||
private String productName;
|
||||
@ExcelIgnore
|
||||
private String projectName;
|
||||
@ExcelIgnore
|
||||
private Integer projectId;
|
||||
@ExcelIgnore
|
||||
private String implementName;
|
||||
@ExcelIgnore
|
||||
private Integer implementId;
|
||||
@ExcelIgnore
|
||||
private Integer branch;
|
||||
@ExcelIgnore
|
||||
private Integer module;
|
||||
@ExcelIgnore
|
||||
private String moduleName;
|
||||
@ExcelIgnore
|
||||
private String plan;
|
||||
@ExcelIgnore
|
||||
private String source;
|
||||
@ExcelIgnore
|
||||
private String sourceNote;
|
||||
@ExcelIgnore
|
||||
private Integer frombug;
|
||||
@ExcelIgnore
|
||||
private Integer feedback;
|
||||
|
||||
|
||||
|
||||
@ExcelIgnore
|
||||
private String keywords;
|
||||
@ExcelIgnore
|
||||
private String type;
|
||||
@ExcelIgnore
|
||||
private String category;
|
||||
|
||||
|
||||
@ExcelIgnore
|
||||
private Float estimate;
|
||||
|
||||
|
||||
@ExcelIgnore
|
||||
private String substatus;
|
||||
@ExcelIgnore
|
||||
private String color;
|
||||
//
|
||||
// {key:'研发中',value:'developing'}
|
||||
@@ -90,188 +179,153 @@ public class ZtStoryDTO implements Serializable {
|
||||
// ,{key:'已验收',value:'verified'}
|
||||
// ,{key:'已发布',value:'released'}
|
||||
// ,{key:'已关闭',value:'closed'}
|
||||
private String stage;
|
||||
|
||||
@TableField("stagedBy")
|
||||
@ExcelIgnore
|
||||
private String stagedby;
|
||||
|
||||
@ExcelIgnore
|
||||
private String mailto;
|
||||
|
||||
@ExcelIgnore
|
||||
private Integer lib;
|
||||
|
||||
@TableField("fromStory")
|
||||
@ExcelIgnore
|
||||
private Integer fromstory;
|
||||
|
||||
@TableField("fromVersion")
|
||||
@ExcelIgnore
|
||||
private Integer fromversion;
|
||||
|
||||
@TableField("openedBy")
|
||||
@ExcelIgnore
|
||||
private String openedby;
|
||||
private String openedbyName;
|
||||
@TableField("openedDate")
|
||||
private Date openeddate;
|
||||
|
||||
@TableField("assignedTo")
|
||||
@ExcelIgnore
|
||||
private String assignedTo;
|
||||
private String assignedToName;
|
||||
@TableField("assignedDate")
|
||||
@ExcelIgnore
|
||||
private Date assigneddate;
|
||||
|
||||
@TableField("approvedDate")
|
||||
@ExcelIgnore
|
||||
private Date approveddate;
|
||||
|
||||
@TableField("lastEditedBy")
|
||||
@ExcelIgnore
|
||||
private String lasteditedby;
|
||||
|
||||
@TableField("lastEditedDate")
|
||||
private Date lastediteddate;
|
||||
|
||||
@TableField("changedBy")
|
||||
@ExcelIgnore
|
||||
private String changedby;
|
||||
|
||||
@TableField("changedDate")
|
||||
@ExcelIgnore
|
||||
private Date changeddate;
|
||||
|
||||
@TableField("reviewedBy")
|
||||
private String reviewedby;
|
||||
private String reviewedbyName;
|
||||
private String revieweUser;
|
||||
|
||||
@ExcelIgnore
|
||||
private Integer revieweResult;
|
||||
|
||||
@TableField("reviewedDate")
|
||||
@ExcelIgnore
|
||||
private Date revieweddate;
|
||||
|
||||
@TableField("releasedDate")
|
||||
@ExcelIgnore
|
||||
private Date releaseddate;
|
||||
@ExcelIgnore
|
||||
private Date planYsDate;
|
||||
@TableField("closedBy")
|
||||
private String closedby;
|
||||
|
||||
@TableField("closedDate")
|
||||
private Date closeddate;
|
||||
|
||||
@TableField("closedReason")
|
||||
private String closedreason;
|
||||
|
||||
@TableField("activatedDate")
|
||||
@ExcelIgnore
|
||||
private Date activateddate;
|
||||
|
||||
@TableField("toBug")
|
||||
@ExcelIgnore
|
||||
private Integer tobug;
|
||||
|
||||
@TableField("childStories")
|
||||
@ExcelIgnore
|
||||
private String childstories;
|
||||
|
||||
@TableField("linkStories")
|
||||
@ExcelIgnore
|
||||
private String linkstories;
|
||||
|
||||
@TableField("linkRequirements")
|
||||
@ExcelIgnore
|
||||
private String linkrequirements;
|
||||
|
||||
@ExcelIgnore
|
||||
private String twins;
|
||||
|
||||
@TableField("duplicateStory")
|
||||
@ExcelIgnore
|
||||
private Integer duplicatestory;
|
||||
|
||||
@ExcelIgnore
|
||||
private Integer version;
|
||||
|
||||
@TableField("storyChanged")
|
||||
@ExcelIgnore
|
||||
private String storychanged;
|
||||
|
||||
@TableField("feedbackBy")
|
||||
@ExcelIgnore
|
||||
private String feedbackby;
|
||||
|
||||
@TableField("notifyEmail")
|
||||
@ExcelIgnore
|
||||
private String notifyemail;
|
||||
|
||||
@TableField("BSA")
|
||||
@ExcelIgnore
|
||||
private String bsa;
|
||||
|
||||
@ExcelIgnore
|
||||
private String duration;
|
||||
|
||||
@ExcelIgnore
|
||||
private Integer demand;
|
||||
|
||||
//描述
|
||||
@ExcelIgnore
|
||||
private String desc;
|
||||
|
||||
@TableField("submitedBy")
|
||||
@ExcelIgnore
|
||||
private String submitedby;
|
||||
|
||||
@ExcelIgnore
|
||||
private String roadmap;
|
||||
|
||||
@TableField("URChanged")
|
||||
@ExcelIgnore
|
||||
private String urchanged;
|
||||
|
||||
@ExcelIgnore
|
||||
private String deleted;
|
||||
|
||||
@ExcelIgnore
|
||||
private List<String> userViewId;
|
||||
|
||||
@ExcelIgnore
|
||||
private String remark;
|
||||
|
||||
|
||||
@ExcelIgnore
|
||||
private List<ZtStoryreviewDTO> views;
|
||||
|
||||
@ExcelIgnore
|
||||
private String fileUrl;
|
||||
@ExcelIgnore
|
||||
private String verify;
|
||||
@ExcelIgnore
|
||||
private String spec;
|
||||
//计划开始时间
|
||||
@ExcelIgnore
|
||||
private Date planStartDate;
|
||||
//计划结束时间
|
||||
private Date planEndDate;
|
||||
//开始日期
|
||||
@ExcelIgnore
|
||||
private Date startDate;
|
||||
//结束日期
|
||||
@ExcelIgnore
|
||||
private Date endDate;
|
||||
|
||||
@ExcelIgnore
|
||||
private Integer project;
|
||||
|
||||
@ExcelIgnore
|
||||
private List<Integer> projects;
|
||||
|
||||
@ExcelIgnore
|
||||
private String files;
|
||||
|
||||
//1通过 2不通过
|
||||
private Integer ysFlag;
|
||||
|
||||
@ExcelIgnore
|
||||
private Integer execution;
|
||||
|
||||
@ExcelIgnore
|
||||
private List<Integer> executions;
|
||||
@ExcelIgnore
|
||||
private List<ZtProjectDTO> executionList;
|
||||
@ExcelIgnore
|
||||
private Boolean psFlag;
|
||||
|
||||
private String executionName;
|
||||
|
||||
@ExcelIgnore
|
||||
private Integer feedbackId;
|
||||
|
||||
@ExcelIgnore
|
||||
private Integer userStory;
|
||||
|
||||
@ExcelIgnore
|
||||
private ZtStoryUserDTO userStoryInfo;
|
||||
|
||||
private String userStoryName;
|
||||
|
||||
@ExcelIgnore
|
||||
private String ysRemark;
|
||||
//验收人
|
||||
private String ysUser;
|
||||
|
||||
//验收人
|
||||
private String ysUserName;
|
||||
|
||||
@ExcelIgnore
|
||||
private Integer taskCount;
|
||||
|
||||
@ExcelIgnore
|
||||
private Integer releaseFlag=0;
|
||||
//发布id
|
||||
@ExcelIgnore
|
||||
private Integer releaseId;
|
||||
@ExcelIgnore
|
||||
private String releaseName;
|
||||
@ExcelIgnore
|
||||
private List<ZtBugDTO> bugList;
|
||||
|
||||
//验收日期
|
||||
@ExcelIgnore
|
||||
private Date ysDate;
|
||||
|
||||
//开发完成时间
|
||||
@ExcelIgnore
|
||||
private Date develDate;
|
||||
//测试完成时间
|
||||
@ExcelIgnore
|
||||
private Date testedDate;
|
||||
|
||||
@ExcelIgnore
|
||||
private ZtStoryCaseDTO caseInfo;
|
||||
|
||||
}
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
package com.sa.zentao.dao;
|
||||
|
||||
import com.alibaba.excel.annotation.ExcelIgnore;
|
||||
import com.alibaba.excel.annotation.ExcelProperty;
|
||||
import com.alibaba.excel.metadata.data.WriteCellData;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
@@ -21,106 +24,137 @@ import java.util.List;
|
||||
public class ZtStoryFeedbackDTO implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@ExcelProperty(value = "ID",index =0)
|
||||
private Integer id;
|
||||
|
||||
@ExcelProperty(value = "类型",index =1)
|
||||
private String typeName;
|
||||
|
||||
@ExcelProperty(value = "描述",index =2)
|
||||
private String spec;
|
||||
@ExcelProperty(value = "状态",index =3)
|
||||
private String status;
|
||||
|
||||
@ExcelProperty(value = "提出人",index =4)
|
||||
private String openedByName;
|
||||
//来源 zentao weixin
|
||||
@ExcelProperty(value = "来源",index =5)
|
||||
private String source;
|
||||
@ExcelProperty(value = "渠道",index =6)
|
||||
private String openSource;
|
||||
@ExcelProperty(value = "指派给",index =7)
|
||||
private String assignedToName;
|
||||
@ExcelProperty(value = "关闭原因",index =8)
|
||||
private String closeRemark;
|
||||
@ExcelProperty(value = "处理结果",index =9)
|
||||
private String finishedRemark;
|
||||
@ExcelProperty(value = "创建日期",index =10)
|
||||
private Date openedDate;
|
||||
@ExcelProperty(value = "更新日期",index =11)
|
||||
private Date updateDate;
|
||||
@ExcelProperty(value = "需求链接",index =12)
|
||||
private WriteCellData<String> feedbackUrl;
|
||||
|
||||
@ExcelIgnore
|
||||
private String vx;
|
||||
|
||||
/**
|
||||
* 名称
|
||||
*/
|
||||
@ExcelIgnore
|
||||
private String name;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
@ExcelIgnore
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 文件,隔开
|
||||
*/
|
||||
@ExcelIgnore
|
||||
private String files;
|
||||
|
||||
@ExcelIgnore
|
||||
private String urls;
|
||||
|
||||
@ExcelIgnore
|
||||
private String openedBy;
|
||||
|
||||
private String openedByName;
|
||||
private Date openedDate;
|
||||
|
||||
private Date updateDate;
|
||||
|
||||
@ExcelIgnore
|
||||
private String updateUser;
|
||||
|
||||
/**
|
||||
* 需求d
|
||||
*/
|
||||
@ExcelIgnore
|
||||
private Integer storyId;
|
||||
@ExcelIgnore
|
||||
private String storyName;
|
||||
/**
|
||||
* 来源
|
||||
*/
|
||||
private String source;
|
||||
|
||||
@ExcelIgnore
|
||||
private Date planEndDate;
|
||||
|
||||
@ExcelIgnore
|
||||
private String assignedTo;
|
||||
|
||||
private String assignedToName;
|
||||
|
||||
private String spec;
|
||||
|
||||
|
||||
|
||||
// wait finished closed
|
||||
private String status;
|
||||
|
||||
// private String status;
|
||||
@ExcelIgnore
|
||||
private String fileUrl;
|
||||
|
||||
@ExcelIgnore
|
||||
private Integer type;
|
||||
|
||||
private String closeRemark;
|
||||
|
||||
@ExcelIgnore
|
||||
private Integer product;
|
||||
|
||||
@ExcelIgnore
|
||||
private String productName;
|
||||
//预计完成时间
|
||||
@ExcelIgnore
|
||||
private Date planFinishDate;
|
||||
|
||||
|
||||
@ExcelIgnore
|
||||
private Date finishDate;
|
||||
//响应时间 处理时间
|
||||
@ExcelIgnore
|
||||
private Date handDate;
|
||||
//关闭日期
|
||||
@ExcelIgnore
|
||||
private Date closeDate;
|
||||
//来源 zentao weixin
|
||||
private String openSource;
|
||||
|
||||
//业务id
|
||||
@ExcelIgnore
|
||||
private String businessId;
|
||||
//1.通过 0不通过
|
||||
@ExcelIgnore
|
||||
private Integer approval;
|
||||
|
||||
@ExcelIgnore
|
||||
private String approvalRemark;
|
||||
|
||||
@ExcelIgnore
|
||||
private String weixin;
|
||||
//无需处理
|
||||
@ExcelIgnore
|
||||
private String dontHandSelect;
|
||||
//无需处理
|
||||
@ExcelIgnore
|
||||
private String dontHandRemark;
|
||||
|
||||
|
||||
@ExcelIgnore
|
||||
private List<ZtTaskDTO> taskList;
|
||||
|
||||
@ExcelIgnore
|
||||
private List<ZtBugDTO> bugList;
|
||||
|
||||
@ExcelIgnore
|
||||
private List<ZtStoryDTO> storyList;
|
||||
|
||||
//1通过 2不通过
|
||||
@ExcelIgnore
|
||||
private Integer ysFlag;
|
||||
|
||||
@ExcelIgnore
|
||||
private String desc;
|
||||
// 1通过 2不通过
|
||||
@ExcelIgnore
|
||||
private Integer revieweResult;
|
||||
|
||||
@ExcelIgnore
|
||||
private String oaName;
|
||||
|
||||
private String finishedRemark;
|
||||
}
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
package com.sa.zentao.dao;
|
||||
|
||||
import com.alibaba.excel.annotation.ExcelIgnore;
|
||||
import com.alibaba.excel.annotation.ExcelProperty;
|
||||
import com.alibaba.excel.metadata.data.WriteCellData;
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
@@ -26,215 +29,248 @@ public class ZtStoryUserDTO implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@TableId(value = "id", type = IdType.AUTO)
|
||||
// @TableId(value = "id", type = IdType.AUTO)
|
||||
// @ExcelProperty
|
||||
@ExcelProperty(value = "ID",index =0)
|
||||
private Integer id;
|
||||
|
||||
private String vision;
|
||||
|
||||
private Integer parent;
|
||||
|
||||
private String parentName;
|
||||
|
||||
private Integer product;
|
||||
|
||||
private String productName;
|
||||
|
||||
private Integer project;
|
||||
|
||||
private Integer branch;
|
||||
|
||||
private Integer module;
|
||||
private String moduleName;
|
||||
private String plan;
|
||||
|
||||
private String source;
|
||||
|
||||
@TableField("sourceNote")
|
||||
private String sourcenote;
|
||||
|
||||
@TableField("fromBug")
|
||||
private Integer frombug;
|
||||
|
||||
private Integer feedback;
|
||||
|
||||
@ExcelProperty(value = "用户需求名称",index =1)
|
||||
private String title;
|
||||
|
||||
private String keywords;
|
||||
|
||||
private String type;
|
||||
|
||||
private String category;
|
||||
|
||||
@ExcelProperty(value = "P",index =2)
|
||||
private Integer pri;
|
||||
|
||||
private Float estimate;
|
||||
|
||||
@ExcelProperty(value = "创建者",index =3)
|
||||
private String openedbyName;
|
||||
/**
|
||||
* 111:xxxxx,
|
||||
* 222:xxxx
|
||||
*/
|
||||
@ExcelProperty(value = "关联研发需求",index =4)
|
||||
private String storyList;
|
||||
@ExcelProperty(value = "状态",index =5)
|
||||
private String status;
|
||||
|
||||
@TableField("subStatus")
|
||||
private String substatus;
|
||||
@ExcelProperty(value = "来源",index =6)
|
||||
private String source;
|
||||
|
||||
private String color;
|
||||
@ExcelProperty(value = "期望完成时间",index =7)
|
||||
private Date planEndDate;
|
||||
/**
|
||||
* 验收人
|
||||
*/
|
||||
@ExcelIgnore
|
||||
private String ysUser;
|
||||
@ExcelProperty(value = "验收人",index =8)
|
||||
private String ysUserName;
|
||||
@ExcelProperty(value = "评审人",index =9)
|
||||
private String reviewedbyName;
|
||||
|
||||
private String stage;
|
||||
|
||||
@TableField("stagedBy")
|
||||
private String stagedby;
|
||||
|
||||
private String mailto;
|
||||
|
||||
private Integer lib;
|
||||
|
||||
@TableField("fromStory")
|
||||
private Integer fromstory;
|
||||
|
||||
@TableField("fromVersion")
|
||||
private Integer fromversion;
|
||||
|
||||
@TableField("openedBy")
|
||||
private String openedby;
|
||||
|
||||
private String openedbyName;
|
||||
|
||||
@TableField("openedDate")
|
||||
@ExcelProperty(value = "创建日期",index =10)
|
||||
private Date openeddate;
|
||||
|
||||
@TableField("assignedTo")
|
||||
private String assignedto;
|
||||
|
||||
private String assignedtoName;
|
||||
|
||||
@TableField("assignedDate")
|
||||
private Date assigneddate;
|
||||
|
||||
@TableField("approvedDate")
|
||||
private Date approveddate;
|
||||
|
||||
@TableField("lastEditedBy")
|
||||
private String lasteditedby;
|
||||
|
||||
@TableField("lastEditedDate")
|
||||
@ExcelProperty(value = "更新日期",index =11)
|
||||
private Date lastediteddate;
|
||||
|
||||
@TableField("changedBy")
|
||||
private String changedby;
|
||||
|
||||
@TableField("changedDate")
|
||||
private Date changeddate;
|
||||
|
||||
@TableField("reviewedBy")
|
||||
private String reviewedby;
|
||||
private String reviewedbyName;
|
||||
@TableField("reviewedDate")
|
||||
private Date revieweddate;
|
||||
|
||||
@TableField("releasedDate")
|
||||
private Date releaseddate;
|
||||
|
||||
@TableField("closedBy")
|
||||
@ExcelIgnore
|
||||
private String closedby;
|
||||
@ExcelProperty(value = "由谁关闭",index =12)
|
||||
private String closedbyName;
|
||||
@TableField("closedDate")
|
||||
@ExcelIgnore
|
||||
private Date closeddate;
|
||||
|
||||
@TableField("closedReason")
|
||||
@ExcelProperty(value = "关闭原因",index =13)
|
||||
private String closedreason;
|
||||
|
||||
@TableField("activatedDate")
|
||||
@ExcelProperty(value = "需求链接",index =14)
|
||||
private WriteCellData<String> url;
|
||||
@ExcelIgnore
|
||||
private String vision;
|
||||
@ExcelIgnore
|
||||
private Integer parent;
|
||||
@ExcelIgnore
|
||||
private String parentName;
|
||||
@ExcelIgnore
|
||||
private Integer product;
|
||||
@ExcelIgnore
|
||||
private String productName;
|
||||
@ExcelIgnore
|
||||
private Integer project;
|
||||
@ExcelIgnore
|
||||
private Integer branch;
|
||||
@ExcelIgnore
|
||||
private Integer module;
|
||||
@ExcelIgnore
|
||||
private String moduleName;
|
||||
@ExcelIgnore
|
||||
private String plan;
|
||||
|
||||
|
||||
|
||||
@ExcelIgnore
|
||||
private String sourcenote;
|
||||
|
||||
@ExcelIgnore
|
||||
private Integer frombug;
|
||||
@ExcelIgnore
|
||||
private Integer feedback;
|
||||
|
||||
@ExcelIgnore
|
||||
private String keywords;
|
||||
@ExcelIgnore
|
||||
private String type;
|
||||
@ExcelIgnore
|
||||
private String category;
|
||||
|
||||
|
||||
@ExcelIgnore
|
||||
private Float estimate;
|
||||
|
||||
|
||||
@ExcelIgnore
|
||||
private String substatus;
|
||||
@ExcelIgnore
|
||||
private String color;
|
||||
@ExcelIgnore
|
||||
private String stage;
|
||||
|
||||
@ExcelIgnore
|
||||
private String stagedby;
|
||||
@ExcelIgnore
|
||||
private String mailto;
|
||||
@ExcelIgnore
|
||||
private Integer lib;
|
||||
@ExcelIgnore
|
||||
private Integer fromstory;
|
||||
|
||||
@ExcelIgnore
|
||||
private Integer fromversion;
|
||||
@ExcelIgnore
|
||||
private String openedby;
|
||||
|
||||
|
||||
|
||||
@ExcelIgnore
|
||||
private String assignedto;
|
||||
@ExcelIgnore
|
||||
private String assignedtoName;
|
||||
@ExcelIgnore
|
||||
private Date assigneddate;
|
||||
|
||||
@ExcelIgnore
|
||||
private Date approveddate;
|
||||
|
||||
@ExcelIgnore
|
||||
private String lasteditedby;
|
||||
|
||||
|
||||
@ExcelIgnore
|
||||
private String changedby;
|
||||
|
||||
@ExcelIgnore
|
||||
private Date changeddate;
|
||||
|
||||
@ExcelIgnore
|
||||
private String reviewedby;
|
||||
|
||||
@ExcelIgnore
|
||||
private Date revieweddate;
|
||||
|
||||
@ExcelIgnore
|
||||
private Date releaseddate;
|
||||
|
||||
|
||||
|
||||
@ExcelIgnore
|
||||
private Date activateddate;
|
||||
|
||||
@TableField("toBug")
|
||||
@ExcelIgnore
|
||||
private Integer tobug;
|
||||
|
||||
@TableField("childStories")
|
||||
@ExcelIgnore
|
||||
private String childstories;
|
||||
|
||||
@TableField("linkStories")
|
||||
@ExcelIgnore
|
||||
private String linkstories;
|
||||
|
||||
@TableField("linkRequirements")
|
||||
@ExcelIgnore
|
||||
private String linkrequirements;
|
||||
|
||||
@ExcelIgnore
|
||||
private String twins;
|
||||
|
||||
@TableField("duplicateStory")
|
||||
@ExcelIgnore
|
||||
private Integer duplicatestory;
|
||||
|
||||
@ExcelIgnore
|
||||
private Integer version;
|
||||
|
||||
@TableField("storyChanged")
|
||||
@ExcelIgnore
|
||||
private String storychanged;
|
||||
|
||||
@TableField("feedbackBy")
|
||||
@ExcelIgnore
|
||||
private String feedbackby;
|
||||
|
||||
@TableField("notifyEmail")
|
||||
@ExcelIgnore
|
||||
private String notifyemail;
|
||||
|
||||
@TableField("BSA")
|
||||
@ExcelIgnore
|
||||
private String bsa;
|
||||
|
||||
@ExcelIgnore
|
||||
private String duration;
|
||||
|
||||
@ExcelIgnore
|
||||
private Integer demand;
|
||||
|
||||
@TableField("submitedBy")
|
||||
@ExcelIgnore
|
||||
private String submitedby;
|
||||
|
||||
@ExcelIgnore
|
||||
private String roadmap;
|
||||
|
||||
@TableField("URChanged")
|
||||
@ExcelIgnore
|
||||
private String urchanged;
|
||||
|
||||
@ExcelIgnore
|
||||
private String deleted;
|
||||
|
||||
@ExcelIgnore
|
||||
private Date planStartDate;
|
||||
|
||||
private Date planEndDate;
|
||||
|
||||
@ExcelIgnore
|
||||
private Date startDate;
|
||||
|
||||
@ExcelIgnore
|
||||
private Date endDate;
|
||||
|
||||
/**
|
||||
* 1通过 2不通过
|
||||
*/
|
||||
@ExcelIgnore
|
||||
private Integer ysFlag;
|
||||
/**
|
||||
* 验收人
|
||||
*/
|
||||
private String ysUser;
|
||||
|
||||
|
||||
@ExcelIgnore
|
||||
private String spec;
|
||||
|
||||
@ExcelIgnore
|
||||
private String fileUrl;
|
||||
|
||||
@ExcelIgnore
|
||||
private String remark;
|
||||
|
||||
private String storyList;
|
||||
|
||||
@ExcelIgnore
|
||||
private List<String> userViewId;
|
||||
|
||||
@ExcelIgnore
|
||||
private List<ZtStoryreviewDTO> views;
|
||||
|
||||
@ExcelIgnore
|
||||
private List<ZtStoryDTO> sList;
|
||||
|
||||
@ExcelIgnore
|
||||
private List<ZtStoryUserTaskDTO> taskList;
|
||||
|
||||
@ExcelIgnore
|
||||
private String revieweUser;
|
||||
|
||||
@ExcelIgnore
|
||||
private String files;
|
||||
|
||||
@ExcelIgnore
|
||||
private String verify;
|
||||
|
||||
@ExcelIgnore
|
||||
private Date psDate;
|
||||
|
||||
@ExcelIgnore
|
||||
private String ysRemark;
|
||||
//交付
|
||||
@ExcelIgnore
|
||||
private String deliverRemark;
|
||||
// 1 需要 2不需要
|
||||
@ExcelIgnore
|
||||
private Integer needDesign;
|
||||
//1.需要 2.不需要
|
||||
@ExcelIgnore
|
||||
private Integer needImprove;
|
||||
}
|
||||
|
||||
@@ -62,7 +62,7 @@ public class ZtStory implements Serializable {
|
||||
private Integer pri;
|
||||
|
||||
private Float estimate;
|
||||
//reviewing 评审中 active 激活 draft 草稿 //finished 完成 验收完成
|
||||
//reviewing 评审中 active 激活 draft 草稿 finished 验收完成
|
||||
private String status;
|
||||
|
||||
@TableField("subStatus")
|
||||
|
||||
44
src/main/java/com/sa/zentao/enums/FeedbackStatusEnums.java
Normal file
44
src/main/java/com/sa/zentao/enums/FeedbackStatusEnums.java
Normal file
@@ -0,0 +1,44 @@
|
||||
package com.sa.zentao.enums;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.EnumValue;
|
||||
|
||||
public enum FeedbackStatusEnums {
|
||||
wait("wait","激活"),
|
||||
doing("doing", "处理中"),
|
||||
finished("finished", "完成"),
|
||||
submitVerified("submitVerified", "提交验收"),
|
||||
closed("closed", "关闭"),
|
||||
reviewing("reviewing", "评审中"),
|
||||
feedbackStory("feedbackStory", "问题反馈"),
|
||||
verified("verified", "已验收"),
|
||||
dontHand("dontHand", "无需处理"),
|
||||
;
|
||||
|
||||
@EnumValue
|
||||
private String code;
|
||||
private String value;
|
||||
|
||||
private FeedbackStatusEnums(String code, String value) {
|
||||
this.code = code;
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
public String getCode() {
|
||||
return this.code;
|
||||
}
|
||||
|
||||
public String getValue() {
|
||||
return this.value;
|
||||
}
|
||||
|
||||
public static FeedbackStatusEnums transferType(String code){
|
||||
FeedbackStatusEnums[] values = values();
|
||||
for (FeedbackStatusEnums v:values ) {
|
||||
if(v.code.equals(code)){
|
||||
return v;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -10,6 +10,7 @@ public enum StoryStageEnums {
|
||||
wait(2, "wait","初始化"),
|
||||
projected(3, "projected","已立项"),
|
||||
developing(4, "developing","研发中"),
|
||||
developed(10, "developed","研发完毕"),
|
||||
testing(5, "testing","测试中"),
|
||||
tested(6, "tested","测试完毕"),
|
||||
released(7, "released","已发布"),
|
||||
@@ -34,4 +35,17 @@ public enum StoryStageEnums {
|
||||
public String getValue() {
|
||||
return this.value;
|
||||
}
|
||||
public String getDesc() {
|
||||
return this.desc;
|
||||
}
|
||||
public static StoryStageEnums transfer(String code){
|
||||
StoryStageEnums[] values = values();
|
||||
for (StoryStageEnums e:values) {
|
||||
if(e.value.equals(code)){
|
||||
return e;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
39
src/main/java/com/sa/zentao/enums/StoryStatusEnums.java
Normal file
39
src/main/java/com/sa/zentao/enums/StoryStatusEnums.java
Normal file
@@ -0,0 +1,39 @@
|
||||
package com.sa.zentao.enums;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.EnumValue;
|
||||
|
||||
public enum StoryStatusEnums {
|
||||
|
||||
reviewing( "reviewing","评审中"),
|
||||
active( "active","激活"),
|
||||
draft("draft","草稿"),
|
||||
finished("finished","完成"),
|
||||
closed("closed","已关闭"),
|
||||
;
|
||||
|
||||
@EnumValue
|
||||
private String value;
|
||||
private String desc;
|
||||
private StoryStatusEnums( String value,String desc) {
|
||||
this.value = value;
|
||||
this.desc=desc;
|
||||
}
|
||||
|
||||
|
||||
public String getValue() {
|
||||
return this.value;
|
||||
}
|
||||
public String getDesc() {
|
||||
return this.desc;
|
||||
}
|
||||
public static StoryStatusEnums transfer(String code){
|
||||
StoryStatusEnums[] values = values();
|
||||
for (StoryStatusEnums e:values) {
|
||||
if(e.value.equals(code)){
|
||||
return e;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -190,7 +190,7 @@ public class IZtCountService {
|
||||
return new ZtStoryCountDTO();
|
||||
}
|
||||
String name = loginRiskUser.getName();
|
||||
if (userType == UserType.GSGC || userType == UserType.XMZL) {
|
||||
if (userType == UserType.GSGC ) {
|
||||
|
||||
List<ZtStoryUser> list = null;
|
||||
List<ZtStory> ztStory = null;
|
||||
@@ -379,7 +379,7 @@ public class IZtCountService {
|
||||
|
||||
result = setFeedback(result, feedbacks);
|
||||
|
||||
} else if (userType == UserType.XMGLY) {
|
||||
} else if (userType == UserType.XMGLY || userType == UserType.XMZL) {
|
||||
|
||||
|
||||
List<ZtProduct> pList = this.productService.listByIds(pIds);
|
||||
|
||||
@@ -1455,6 +1455,10 @@ public class ZtProjectServiceImpl extends ServiceImpl<ZtProjectMapper, ZtProject
|
||||
dto.getStatus());
|
||||
ztProject.setLastEditedBy(RiskUserThreadLocal.get().getName());
|
||||
ztProject.setLastEditedDate(new Date());
|
||||
if("closed".equals(ztProject.getStatus())) {
|
||||
ztProject.setClosedDate(new Date());
|
||||
ztProject.setClosedBy(RiskUserThreadLocal.get().getName());
|
||||
}
|
||||
this.baseMapper.updateById(ztProject);
|
||||
}
|
||||
|
||||
|
||||
@@ -114,6 +114,7 @@ public class ZtStoryServiceImpl extends ServiceImpl<ZtStoryMapper, ZtStory> impl
|
||||
Integer productId = qo.getProductId();
|
||||
qo.setUserName(RiskUserThreadLocal.get().getName());
|
||||
List<ZtStoryDTO> list = this.baseMapper.pageList(qo);
|
||||
|
||||
if (!CollectionUtils.isEmpty(list)) {
|
||||
List<String> userIds = list.stream().map(o -> o.getAssignedTo()).collect(Collectors.toList());
|
||||
userIds.addAll(list.stream().map(o -> o.getOpenedby()).collect(Collectors.toList()));
|
||||
@@ -147,6 +148,14 @@ public class ZtStoryServiceImpl extends ServiceImpl<ZtStoryMapper, ZtStory> impl
|
||||
if (ztUser != null) {
|
||||
d.setYsUserName(ztUser.getNickname());
|
||||
}
|
||||
ztUser = userMap.get(d.getClosedby());
|
||||
if (ztUser != null) {
|
||||
d.setClosedbyName(ztUser.getNickname());
|
||||
}
|
||||
ztUser = userMap.get(d.getUserStoryCreateUser());
|
||||
if (ztUser != null) {
|
||||
d.setUserStoryCreateUser(ztUser.getNickname());
|
||||
}
|
||||
List<ZtProject> ztProjectList = executionMapByStory.get(d.getId());
|
||||
if (!CollectionUtils.isEmpty(ztProjectList)) {
|
||||
// d.setExecution(ztProject.getId());
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
package com.sa.zentao.service.impl;
|
||||
|
||||
import com.alibaba.excel.metadata.data.HyperlinkData;
|
||||
import com.alibaba.excel.metadata.data.WriteCellData;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
@@ -28,6 +30,7 @@ import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
@@ -80,6 +83,10 @@ public class ZtStoryUserServiceImpl extends ServiceImpl<ZtStoryUserMapper, ZtSto
|
||||
|
||||
@Autowired
|
||||
private VxService vxService;
|
||||
|
||||
@Value("${file.backUrl}")
|
||||
private String url;
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public void addStory(ZtStoryUserDTO dto) {
|
||||
@@ -247,7 +254,9 @@ public class ZtStoryUserServiceImpl extends ServiceImpl<ZtStoryUserMapper, ZtSto
|
||||
|
||||
@Override
|
||||
public Map<String, List<ZtStoryUserDTO>> getKanban(Integer productId) {
|
||||
List<ZtStoryUser> ztStoryUsers = this.baseMapper.selectList(new QueryWrapper<ZtStoryUser>().lambda().eq(ZtStoryUser::getProduct, productId).orderByDesc(ZtStoryUser::getId));
|
||||
List<ZtStoryUser> ztStoryUsers = this.baseMapper.selectList(new QueryWrapper<ZtStoryUser>()
|
||||
.lambda().select(ZtStoryUser::getId,ZtStoryUser::getPri,ZtStoryUser::getTitle,ZtStoryUser::getStage,ZtStoryUser::getStatus,ZtStoryUser::getOpenedby,ZtStoryUser::getOpeneddate,ZtStoryUser::getLastediteddate)
|
||||
.eq(ZtStoryUser::getProduct, productId).orderByDesc(ZtStoryUser::getId));
|
||||
Map<String, List<ZtStoryUserDTO>> map = new HashMap<>();
|
||||
Map<String, ZtUser> stringZtUserMap = this.userService.userMapByIds(ztStoryUsers.stream().map(o -> o.getOpenedby()).collect(Collectors.toList()));
|
||||
|
||||
@@ -257,6 +266,7 @@ public class ZtStoryUserServiceImpl extends ServiceImpl<ZtStoryUserMapper, ZtSto
|
||||
ZtUser ztUser = stringZtUserMap.get(t.getOpenedby());
|
||||
if(ztUser!=null){
|
||||
s.setOpenedbyName(ztUser.getNickname());
|
||||
s.setColor(ztUser.getColor());
|
||||
}
|
||||
}
|
||||
});
|
||||
@@ -271,7 +281,7 @@ public class ZtStoryUserServiceImpl extends ServiceImpl<ZtStoryUserMapper, ZtSto
|
||||
map.put("designdone",ztStoryUserDTOS.stream().filter(o->"designdone".equals(o.getStatus())).collect(Collectors.toList()));
|
||||
map.put("storyunconfirmed",ztStoryUserDTOS.stream().filter(o->"storyunconfirmed".equals(o.getStatus())).collect(Collectors.toList()));
|
||||
map.put("confirmed",ztStoryUserDTOS.stream().filter(o->"confirmed".equals(o.getStatus())).collect(Collectors.toList()));
|
||||
return Map.of();
|
||||
return map;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -298,8 +308,6 @@ public class ZtStoryUserServiceImpl extends ServiceImpl<ZtStoryUserMapper, ZtSto
|
||||
Page<ZtStoryUserDTO> page = PageHelper.startPage(qo.getCurrentPage(), qo.getPageSize());
|
||||
List<ZtStoryUserDTO> list = this.baseMapper.pageList(qo);
|
||||
if (!CollectionUtils.isEmpty(list)) {
|
||||
|
||||
|
||||
List<String> userIds = list.stream().map(o -> o.getOpenedby()).collect(Collectors.toList());
|
||||
userIds.addAll(list.stream().map(o -> o.getLasteditedby()).collect(Collectors.toList()));
|
||||
|
||||
@@ -329,7 +337,10 @@ public class ZtStoryUserServiceImpl extends ServiceImpl<ZtStoryUserMapper, ZtSto
|
||||
if (ztUser != null) {
|
||||
d.setOpenedbyName(ztUser.getNickname());
|
||||
}
|
||||
|
||||
ztUser = userMap.get(d.getYsUser());
|
||||
if (ztUser != null) {
|
||||
d.setYsUserName(ztUser.getNickname());
|
||||
}
|
||||
ztUser = userMap.get(d.getLasteditedby());
|
||||
if (ztUser != null) {
|
||||
d.setLasteditedby(ztUser.getNickname());
|
||||
@@ -338,14 +349,37 @@ public class ZtStoryUserServiceImpl extends ServiceImpl<ZtStoryUserMapper, ZtSto
|
||||
if (ztUser != null) {
|
||||
d.setOpenedbyName(ztUser.getNickname());
|
||||
}
|
||||
ztUser = userMap.get(d.getClosedby());
|
||||
if (ztUser != null) {
|
||||
d.setClosedbyName(ztUser.getNickname());
|
||||
}
|
||||
ztUser = userMap.get(d.getYsUser());
|
||||
if (ztUser != null) {
|
||||
d.setYsUserName(ztUser.getNickname());
|
||||
}
|
||||
List<ZtStory> ztStories = storyUserMap.get(d.getId());
|
||||
if (!CollectionUtils.isEmpty(ztStories)) {
|
||||
d.setStoryList(ztStories.stream().map(o -> o.getTitle()).collect(Collectors.joining(",")));
|
||||
d.setStoryList(ztStories.stream().map(o ->o.getId()+":"+o.getTitle()).collect(Collectors.joining(",")));
|
||||
d.setSList(CollectionUtils.isEmpty(ztStories)?null:BeanCopyUtil.copyListProperties(ztStories,ZtStoryDTO::new));
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
String reName = d.getTitle();
|
||||
String reUrl = url+"/#/product-user-story-info/"+d.getId();
|
||||
WriteCellData<String> hyperlink = new WriteCellData<>(reName);
|
||||
HyperlinkData hyperlinkData = new HyperlinkData();
|
||||
try {
|
||||
hyperlinkData.setAddress(reUrl.replace(" ", "%20"));
|
||||
hyperlinkData.setHyperlinkType(HyperlinkData.HyperlinkType.URL);
|
||||
hyperlink.setHyperlinkData(hyperlinkData);
|
||||
d.setUrl(hyperlink );
|
||||
} catch (Exception e) {
|
||||
log.error(e.getMessage(), e);
|
||||
|
||||
d.setUrl(null );
|
||||
}
|
||||
}
|
||||
}
|
||||
return new PageInfo<ZtStoryUserDTO>(list);
|
||||
}
|
||||
|
||||
@@ -509,6 +543,10 @@ public class ZtStoryUserServiceImpl extends ServiceImpl<ZtStoryUserMapper, ZtSto
|
||||
if (ztUser != null) {
|
||||
dto.setClosedbyName(ztUser.getNickname());
|
||||
}
|
||||
ztUser = userMap.get(dto.getYsUser());
|
||||
if (ztUser != null) {
|
||||
dto.setYsUserName(ztUser.getNickname());
|
||||
}
|
||||
Map<Integer, List<ZtStory>> storyUserMap = getStoryUserMap(Arrays.asList(dto));
|
||||
List<ZtStory> ztStories = storyUserMap.get(d.getId());
|
||||
if (!CollectionUtils.isEmpty(ztStories)) {
|
||||
|
||||
@@ -33,6 +33,7 @@ spring:
|
||||
file:
|
||||
# baseUrl: http://192.168.3.200:8013
|
||||
baseUrl: https://itsm.sino-assist.com
|
||||
backUrl: https://itsm.sino-assist.com
|
||||
meeting: /data/buildzentao/meeting.docx
|
||||
|
||||
#vx:
|
||||
|
||||
@@ -40,6 +40,7 @@ spring:
|
||||
|
||||
file:
|
||||
baseUrl: http://192.168.1.161:8085
|
||||
backUrl: http://192.168.1.161:8015
|
||||
# baseUrl: http://127.0.0.1:8085
|
||||
meeting: /data/buildzentao/meeting.docx
|
||||
|
||||
|
||||
@@ -135,13 +135,20 @@
|
||||
s.ys_remark,
|
||||
s.ys_user,
|
||||
s.task_count,
|
||||
s.ys_date
|
||||
s.ys_date,
|
||||
su.title userStoryName,
|
||||
su.id userStoryId,
|
||||
ps.title parentName,
|
||||
su.openedDate userStoryCreateTime,
|
||||
su.openedBy userStoryCreateUser
|
||||
|
||||
|
||||
from zt_story s
|
||||
left join zt_story_user su on s.user_story = su.id
|
||||
left join zt_storyreview v on s.id = v.story and s.version = v.version
|
||||
left join zt_story ps on s.parent = ps.id
|
||||
where 1=1
|
||||
and product = #{qo.productId}
|
||||
|
||||
|
||||
and s.product = #{qo.productId}
|
||||
<if test="qo.searchVal == 'ALL' ">
|
||||
|
||||
</if>
|
||||
|
||||
@@ -90,7 +90,8 @@
|
||||
|
||||
</if>
|
||||
<if test="qo.searchVal == 'WGB' ">
|
||||
and s.status != 'closed'
|
||||
-- and s.status != 'closed'
|
||||
and s.status in ('wait', 'doing')
|
||||
</if>
|
||||
|
||||
<if test="qo.searchVal == 'ZGW' ">
|
||||
|
||||
Reference in New Issue
Block a user