diff --git a/src/main/java/com/sa/zentao/ZentaoApplication.java b/src/main/java/com/sa/zentao/ZentaoApplication.java
index 5b73196..39febbc 100644
--- a/src/main/java/com/sa/zentao/ZentaoApplication.java
+++ b/src/main/java/com/sa/zentao/ZentaoApplication.java
@@ -3,16 +3,20 @@ package com.sa.zentao;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.scheduling.annotation.EnableScheduling;
-
+//,exclude = DataSourceAutoConfiguration.class
@SpringBootApplication(scanBasePackages = {"com.sa.zentao"})
@MapperScan({"com.sa.zentao.mapper","com.sa.**.mapper"})
@EnableScheduling
public class ZentaoApplication {
public static void main(String[] args) {
+
+
SpringApplication.run(ZentaoApplication.class, args);
}
+
}
diff --git a/src/main/java/com/sa/zentao/conf/AfterRunner.java b/src/main/java/com/sa/zentao/conf/AfterRunner.java
index 6ce8875..ed2154d 100644
--- a/src/main/java/com/sa/zentao/conf/AfterRunner.java
+++ b/src/main/java/com/sa/zentao/conf/AfterRunner.java
@@ -2,7 +2,10 @@ package com.sa.zentao.conf;
//import com.dritec.FastDFSClient;
-import com.sa.zentao.service.IFestivalConfigService;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.sa.zentao.dao.ZtProjectDTO;
+import com.sa.zentao.entity.*;
+import com.sa.zentao.service.*;
import com.sa.zentao.task.SpringTaskJob;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
@@ -12,6 +15,9 @@ import org.springframework.boot.ApplicationRunner;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;
+import java.util.ArrayList;
+import java.util.List;
+
@Component
@Order(value = 1)
@Slf4j
@@ -25,12 +31,19 @@ public class AfterRunner implements ApplicationRunner {
private com.sa.zentao.task.SpringTaskJob springTaskJob;
+
+
+
+
@Override
public void run(ApplicationArguments args) throws Exception {
//初始化假期
festivalConfigService.initfestivalAndHoliday();
springTaskJob.dkEveryDay();
new Thread(new DevopsRunner()).start();
+
+
+
}
}
\ No newline at end of file
diff --git a/src/main/java/com/sa/zentao/conf/CodeGenerator.java b/src/main/java/com/sa/zentao/conf/CodeGenerator.java
index 9a3ca9f..b7960b6 100644
--- a/src/main/java/com/sa/zentao/conf/CodeGenerator.java
+++ b/src/main/java/com/sa/zentao/conf/CodeGenerator.java
@@ -22,7 +22,7 @@ public class CodeGenerator {
//自己的名字
static String Author = "gqb";
- public static String tableName = "zt_yw_fault_list";
+ public static String tableName = "zt_notice";
/**
*
diff --git a/src/main/java/com/sa/zentao/conf/DynamicDataSourceConfig.java b/src/main/java/com/sa/zentao/conf/DynamicDataSourceConfig.java
new file mode 100644
index 0000000..47b4c64
--- /dev/null
+++ b/src/main/java/com/sa/zentao/conf/DynamicDataSourceConfig.java
@@ -0,0 +1,28 @@
+//import org.apache.ibatis.session.SqlSessionFactory;
+//import org.mybatis.spring.SqlSessionFactoryBean;
+//import org.mybatis.spring.annotation.MapperScan;
+//import org.springframework.boot.context.properties.ConfigurationProperties;
+//import org.springframework.context.annotation.Bean;
+//import org.springframework.context.annotation.Configuration;
+//
+//import javax.sql.DataSource;
+//
+//@Configuration
+//@MapperScan("com.example.mapper")
+//public class DynamicDataSourceConfig {
+// @Bean
+// @ConfigurationProperties(prefix = "spring.datasource.dynamic")
+// public DataSource dataSource() {
+// return new DynamicDataSource();
+// }
+// @Bean
+// public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {
+// SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
+// sqlSessionFactoryBean.setDataSource(dataSource);
+// return sqlSessionFactoryBean.getObject();
+// }
+// @Bean
+// public SqlSessionTemplate sqlSessionTemplate(SqlSessionFactory sqlSessionFactory) {
+// return new SqlSessionTemplate(sqlSessionFactory);
+// }
+//}
diff --git a/src/main/java/com/sa/zentao/conf/ExcelListener.java b/src/main/java/com/sa/zentao/conf/ExcelListener.java
new file mode 100644
index 0000000..80cfc7c
--- /dev/null
+++ b/src/main/java/com/sa/zentao/conf/ExcelListener.java
@@ -0,0 +1,17 @@
+package com.sa.zentao.conf;
+
+import com.alibaba.excel.context.AnalysisContext;
+import com.alibaba.excel.event.AnalysisEventListener;
+import com.sa.zentao.dao.ZtTaskImportDTO;
+
+public class ExcelListener extends AnalysisEventListener {
+ @Override
+ public void invoke(ZtTaskImportDTO data, AnalysisContext context) {
+ System.out.println("读取到数据:" + data);
+ }
+
+ @Override
+ public void doAfterAllAnalysed(AnalysisContext context) {
+ // 所有数据解析完成后做的事情
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/sa/zentao/conf/ParamOutAspect.java b/src/main/java/com/sa/zentao/conf/ParamOutAspect.java
new file mode 100644
index 0000000..43464cc
--- /dev/null
+++ b/src/main/java/com/sa/zentao/conf/ParamOutAspect.java
@@ -0,0 +1,140 @@
+package com.sa.zentao.conf;
+
+import com.fasterxml.jackson.annotation.JsonAutoDetect;
+import com.fasterxml.jackson.annotation.PropertyAccessor;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.SerializationFeature;
+import jakarta.servlet.http.HttpServletResponse;
+import lombok.extern.slf4j.Slf4j;
+import org.aspectj.lang.ProceedingJoinPoint;
+import org.aspectj.lang.annotation.Around;
+import org.aspectj.lang.annotation.Aspect;
+import org.aspectj.lang.reflect.MethodSignature;
+import org.springframework.stereotype.Component;
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.UUID;
+
+@Component
+@Aspect
+@Slf4j
+public class ParamOutAspect {
+
+ //对包下所有的controller结尾的类的所有方法增强
+ private final String Controller = "execution(* com.sa..*Controller.*(..))";
+
+ //对包下所有的controller结尾的类的所有方法增强
+// private final String executeExpr = "execution(* com.sa.yyc.rest..*Controller.*(..))";
+
+
+
+ @Around(Controller)
+ public Object controller(ProceedingJoinPoint joinPoint) throws Throwable {
+ log.info("后台调用接口---------------------");
+ //获取response
+ HttpServletResponse response = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getResponse();
+ //核心设置
+ response.setHeader("Access-Control-Allow-Origin", "*");
+ log.info("加入请求头标成功");
+
+ /**
+ * 获取 request 中包含的请求参数
+ */
+ String uuid = UUID.randomUUID().toString();
+ jakarta.servlet.http.HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
+ /**
+ * 获取切点请求参数(class,method)
+ */
+ MethodSignature signature = (MethodSignature) joinPoint.getSignature();
+ Method method = signature.getMethod();
+ String params = getRequestParams(request, joinPoint);
+
+ /**
+ * 入参日志
+ */
+ log.info("[AOP-LOG-START-入参]\n\trequestMark: {}\n\trequestIP: {}\n\tcontentType:{}\n\trequestUrl: {}\n\t" +
+ "requestMethod: {}\n\trequestParams: {}\n\ttargetClassAndMethod: {}#{}", uuid, request.getRemoteAddr(),
+ request.getHeader("Content-Type"),request.getRequestURL(), request.getMethod(), params,
+ method.getDeclaringClass().getName(), method.getName());
+
+
+ String authorization = request.getHeader("Authorization");
+ log.info("token : " + authorization);
+
+ String str =request.getRequestURI().replaceAll("/+$","");
+
+
+ Object proceed = joinPoint.proceed();
+
+
+
+// if(ObjectUtils.isEmpty(result)){
+// Object proceed = joinPoint.proceed();
+// if(proceed!=null){
+// result = (Result)proceed;
+// }
+// }
+
+
+ log.info("[AOP-LOG-END-返回]\n\t{}", proceed);
+ return proceed;
+ }
+
+ private String getRequestParams(jakarta.servlet.http.HttpServletRequest request, ProceedingJoinPoint joinPoint) throws JsonProcessingException {
+ StringBuilder params = new StringBuilder();
+ if ("GET".equalsIgnoreCase(request.getMethod())) {
+ params.append(request.getQueryString());
+ }
+ if ("POST".equalsIgnoreCase(request.getMethod())) {
+ /**
+ * 获取 request parameter 中的参数
+ */
+ Map parameterMap = request.getParameterMap();
+ if (parameterMap != null && !parameterMap.isEmpty()) {
+ for (Map.Entry entry : parameterMap.entrySet()) {
+ params.append(entry.getKey() + " = " + entry.getValue()[0] + ";");
+ }
+ }
+ /**
+ * 获取非 request parameter 中的参数
+ */
+ Object[] objects = joinPoint.getArgs();
+ for (Object arg : objects) {
+ if (arg == null) {
+ break;
+ }
+ String className = arg.getClass().getName().toLowerCase();
+ String contentType = request.getHeader("Content-Type");
+ /**
+ * 文件参数,上传文件信息
+ */
+ if (className.contains("MultipartFile".toLowerCase())) {
+ MultipartFile multipartFile = (MultipartFile) arg;
+ params.append("fileSize = " + multipartFile.getSize() + ";");
+ params.append("fileContentType = " + multipartFile.getContentType() + ";");
+ params.append("fieldName = " + multipartFile.getName() + ";");
+ params.append("fileOriginalName = " + multipartFile.getOriginalFilename() + ";");
+ }
+ if (contentType != null && contentType.contains("application/json")){
+ /**
+ * json 参数
+ */
+ ObjectMapper mapper = new ObjectMapper();
+ mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
+ mapper.setVisibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY);
+ params.append(mapper.writeValueAsString(arg));
+ }
+ }
+ }
+ return params.toString();
+ }
+
+
+}
diff --git a/src/main/java/com/sa/zentao/controller/CommonsController.java b/src/main/java/com/sa/zentao/controller/CommonsController.java
index 97103f4..a32bb6e 100644
--- a/src/main/java/com/sa/zentao/controller/CommonsController.java
+++ b/src/main/java/com/sa/zentao/controller/CommonsController.java
@@ -1,8 +1,13 @@
package com.sa.zentao.controller;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.sa.zentao.conf.RiskUserThreadLocal;
import com.sa.zentao.dao.BusinessException;
import com.sa.zentao.dao.Code;
import com.sa.zentao.dao.Result;
+import com.sa.zentao.dao.UploadDTO;
+import com.sa.zentao.entity.ZtFile;
+import com.sa.zentao.service.IZtFileService;
import com.sa.zentao.utils.DateUtils;
import com.sa.zentao.utils.UploadUtil;
import lombok.extern.slf4j.Slf4j;
@@ -11,8 +16,12 @@ import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
+import java.io.ByteArrayOutputStream;
+import java.io.FileInputStream;
import java.io.IOException;
+import java.io.InputStream;
import java.lang.reflect.Method;
+import java.net.URL;
import java.util.*;
import java.util.stream.Collectors;
@@ -45,18 +54,120 @@ public class CommonsController {
@Value("${file.baseUrl}")
private String baseUrl;
+
+ @Autowired
+ private IZtFileService fileService;
+
+
@PostMapping("/upload")
- public Result upload(@RequestParam("file") MultipartFile file){
- if (file.isEmpty()) {
+ public Result upload( UploadDTO file){
+ if (file.getFile().isEmpty()) {
return Result.fail(Code.FAIL);
}
try {
// 获取文件名
- String fName = file.getOriginalFilename();
+ String fName = file.getFile().getOriginalFilename();
+ String title=fName;
+ fName=fName.substring(fName.lastIndexOf("."),fName.length());
+ String extension=fName.toString();
+ fName= DateUtils.formatDate(new Date(),"yyyyMMddHHmmss")+UUID.randomUUID().toString().replaceAll("-","")+fName;
+ // 获取文件的字节
+ byte[] bytes = file.getFile().getBytes();
+ String p ="";
+ String os = System.getProperty("os.name");
+ if (os.toLowerCase().startsWith("win")) { //如果是Windows系统
+ log.info("win");
+ os=windowsFilePath +"\\";
+ }else{ //linux和mac系统
+ log.info("linux");
+ os=linuxFilePath+"/";
+ }
+
+
+ // 使用文件名在服务器端创建文件
+ java.nio.file.Path path = java.nio.file.Paths.get(os + fName);
+
+ // 写入文件到服务器的指定目录
+ java.nio.file.Files.write(path, bytes);
+ ZtFile f=new ZtFile();
+ f.setAddedby(RiskUserThreadLocal.get().getName());
+ f.setAddeddate(new Date());
+ f.setDeleted("0");
+ f.setExtension(extension);
+ f.setTitle(title);
+ f.setSize(bytes.length);
+ f.setPathname(baseUrl+"/zentao/img/"+fName);
+ f.setObjectid(file.getObjectId());
+ fileService.save(f);
+
+ return Result.success(f);
+ } catch (Exception e) {
+ throw new BusinessException("文件上传失败");
+ }
+ }
+
+ @PostMapping("/removeFile")
+ public Result removeFile( UploadDTO file){
+ ZtFile ztFile = this.fileService.getById(file.getId());
+ if("1".equals(ztFile.getDeleted())){
+ throw new BusinessException("已删除");
+ }
+ ztFile.setDeleted("1");
+ this.fileService.updateById(ztFile);
+ return Result.success();
+ }
+
+ @PostMapping("/fileList")
+ public Result fileList( UploadDTO file){
+ List list = this.fileService.list(new QueryWrapper().lambda().eq(ZtFile::getDeleted, "0")
+ .eq(ZtFile::getObjecttype, file.getObjectType()).eq(ZtFile::getObjectid, file.getObjectId()));
+
+
+ return Result.success(list);
+ }
+
+
+ @GetMapping("/test")
+ public Result upload(){
+ downLoad("http://192.168.1.161:8088/file-download-1.html");
+ return Result.success();
+ }
+
+ public String downLoad(String u){
+
+ String ext = u.substring(u.lastIndexOf(".") + 1).toLowerCase();
+ StringBuffer buffername = new StringBuffer(u.substring(u.lastIndexOf("/")+1));
+
+ URL url = null;
+ try {
+ url = new URL(u);
+ InputStream inputStream = url.openStream();
+
+// byte[] buffer = new byte[1024];
+// int len;
+ ByteArrayOutputStream outStream = new ByteArrayOutputStream();
+// while ((len = inputStream.read(buffer)) != -1) {
+// outStream.write(buffer, 0, len);
+// }
+
+// byte[] buffer = new byte[1024];
+// int len;
+// String path="/data/"+"202407/03103347085011a0";
+// FileInputStream fileInputStream = new FileInputStream(path);
+// while ((len = fileInputStream.read(buffer)) != -1) {
+// outStream.write(buffer, 0, len);
+// }
+// fileInputStream.close();
+
+
+
+
+ // 获取文件名
+ String fName = "1.png";
fName=fName.substring(fName.lastIndexOf("."),fName.length());
fName= DateUtils.formatDate(new Date(),"yyyyMMddHHmmss")+UUID.randomUUID().toString().replaceAll("-","")+fName;
// 获取文件的字节
- byte[] bytes = file.getBytes();
+ byte[] bytes = outStream.toByteArray();
String p ="";
String os = System.getProperty("os.name");
if (os.toLowerCase().startsWith("win")) { //如果是Windows系统
@@ -74,13 +185,20 @@ public class CommonsController {
// 写入文件到服务器的指定目录
java.nio.file.Files.write(path, bytes);
- return Result.success(baseUrl+"/zentao/img/"+fName);
+ String fileAbsolutePath =baseUrl+"/zentao/img/"+fName;
+
+ System.out.print(fileAbsolutePath);
+
+
+ outStream.close();
+ inputStream.close();
+ return fileAbsolutePath;
} catch (Exception e) {
- throw new BusinessException("文件上传失败");
+ e.printStackTrace();
}
+ return null;
}
-
}
diff --git a/src/main/java/com/sa/zentao/controller/ZtBugController.java b/src/main/java/com/sa/zentao/controller/ZtBugController.java
index fded681..a10f652 100644
--- a/src/main/java/com/sa/zentao/controller/ZtBugController.java
+++ b/src/main/java/com/sa/zentao/controller/ZtBugController.java
@@ -2,6 +2,7 @@ package com.sa.zentao.controller;
import com.github.pagehelper.PageInfo;
+import com.sa.zentao.dao.BusinessException;
import com.sa.zentao.dao.Result;
import com.sa.zentao.dao.ZtBugDTO;
import com.sa.zentao.dao.ZtCaseDTO;
@@ -78,12 +79,20 @@ public class ZtBugController {
return Result.success(bugService.getById(qo.getId()));
}
+ @RequestMapping(value = "/assignedTo", method = RequestMethod.POST, produces = "application/json; charset=UTF-8")
+ public Result assignedTo(@RequestBody ZtBugQo qo){
+ bugService.assignedTo(qo);
+ return Result.success();
+ }
+ //指派
@RequestMapping(value = "/bugInfoById", method = RequestMethod.POST, produces = "application/json; charset=UTF-8")
public Result bugInfoById(@RequestBody ZtBugQo qo){
- return Result.success(bugService.bugInfoById(qo.getId()));
+ ZtBugDTO ztBugDTO = bugService.bugInfoById(qo.getId());
+
+ return Result.success(ztBugDTO);
}
-
+ //完成
@RequestMapping(value = "/resolved", method = RequestMethod.POST, produces = "application/json; charset=UTF-8")
public Result resolved(@RequestBody ZtBugDTO dto){
bugService.resolved(dto);
diff --git a/src/main/java/com/sa/zentao/controller/ZtCountController.java b/src/main/java/com/sa/zentao/controller/ZtCountController.java
index 5b08dfc..f844d61 100644
--- a/src/main/java/com/sa/zentao/controller/ZtCountController.java
+++ b/src/main/java/com/sa/zentao/controller/ZtCountController.java
@@ -2,14 +2,13 @@ package com.sa.zentao.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.sa.zentao.conf.RiskUserThreadLocal;
-import com.sa.zentao.dao.BusinessException;
-import com.sa.zentao.dao.Result;
-import com.sa.zentao.dao.ZtCaseDTO;
+import com.sa.zentao.dao.*;
import com.sa.zentao.entity.ZtBug;
import com.sa.zentao.entity.ZtProject;
import com.sa.zentao.entity.ZtStory;
import com.sa.zentao.entity.ZtTask;
import com.sa.zentao.qo.ZtCountQo;
+import com.sa.zentao.qo.ZtProjectQo;
import com.sa.zentao.service.IZtBugService;
import com.sa.zentao.service.IZtProjectService;
import com.sa.zentao.service.IZtStoryService;
@@ -104,12 +103,12 @@ public class ZtCountController {
@RequestMapping(value = "/projectList", method = RequestMethod.POST, produces = "application/json; charset=UTF-8")
public Result projectList(@RequestBody ZtCaseDTO dto){
- List project = projectService.list(new QueryWrapper().lambda().eq(ZtProject::getType, "project")
- .eq(ZtProject::getStatus,"doing")
+ List project = projectService.list(new QueryWrapper().lambda().eq(ZtProject::getType, "program")
+ .eq(ZtProject::getStatus,"doing").orderByDesc(ZtProject::getId)
);
return Result.success(project) ;
}
- //项目 任务 需求 等统计 项目统计
+ //项目 任务 需求 等统计 项目统计 24-12-13改为项目集统计
@RequestMapping(value = "/projectInfoById", method = RequestMethod.POST, produces = "application/json; charset=UTF-8")
public Result projectInfoById(@RequestBody ZtCaseDTO dto){
@@ -118,5 +117,46 @@ public class ZtCountController {
}
+ //系统需求
+// @RequestMapping(value = "/projectInfoById", method = RequestMethod.POST, produces = "application/json; charset=UTF-8")
+// public Result storyFeedbackCount(@RequestBody ZtCaseDTO dto){
+//
+// ZtStoryCountDTO result=countService.storyFeedbackCount(dto);
+//
+// return Result.success(result) ;
+// }
+
+
+ //我的需求列表
+ @RequestMapping(value = "/myStoryList", method = RequestMethod.POST, produces = "application/json; charset=UTF-8")
+ public Result myStoryList(@RequestBody ZtProjectQo qo){
+ return Result.success(countService.myStoryList(qo));
+ }
+ //我的问题列表 产品 开发
+ @RequestMapping(value = "/myFeedbackList", method = RequestMethod.POST, produces = "application/json; charset=UTF-8")
+ public Result myFeedbackList(@RequestBody ZtProjectQo qo){
+ return Result.success(countService.ztStoryFeedbackDTO(qo));
+ }
+ //我的问题列表 产品 开发
+ @RequestMapping(value = "/myFeedbackPageList", method = RequestMethod.POST, produces = "application/json; charset=UTF-8")
+ public Result myFeedbackPageList(@RequestBody ZtProjectQo qo){
+ return Result.success(countService.myFeedbackPageList(qo));
+ }
+
+
+ //我的任务列表
+ @RequestMapping(value = "/myTaskList", method = RequestMethod.POST, produces = "application/json; charset=UTF-8")
+ public Result myTaskList(@RequestBody ZtProjectQo qo){
+ return Result.success(countService.myTaskList(qo));
+ }
+ //运维任务列表
+ @RequestMapping(value = "/myYwList", method = RequestMethod.POST, produces = "application/json; charset=UTF-8")
+ public Result myYwList(@RequestBody ZtProjectQo qo){
+ return Result.success(countService.myYwList(qo));
+ }
+ @RequestMapping(value = "/myDevops", method = RequestMethod.POST, produces = "application/json; charset=UTF-8")
+ public Result myDevops(@RequestBody ZtProjectQo qo){
+ return Result.success(countService.myDevops(qo));
+ }
}
diff --git a/src/main/java/com/sa/zentao/controller/ZtFileController.java b/src/main/java/com/sa/zentao/controller/ZtFileController.java
new file mode 100644
index 0000000..f85cf46
--- /dev/null
+++ b/src/main/java/com/sa/zentao/controller/ZtFileController.java
@@ -0,0 +1,20 @@
+package com.sa.zentao.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * 前端控制器
+ *
+ *
+ * @author gqb
+ * @since 2024-12-20
+ */
+@RestController
+@RequestMapping("/zt-file")
+public class ZtFileController {
+
+}
diff --git a/src/main/java/com/sa/zentao/controller/ZtNoticeController.java b/src/main/java/com/sa/zentao/controller/ZtNoticeController.java
new file mode 100644
index 0000000..741561b
--- /dev/null
+++ b/src/main/java/com/sa/zentao/controller/ZtNoticeController.java
@@ -0,0 +1,48 @@
+package com.sa.zentao.controller;
+
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.github.pagehelper.PageInfo;
+import com.sa.zentao.dao.Result;
+import com.sa.zentao.dao.ZtProjectDTO;
+import com.sa.zentao.entity.ZtNotice;
+import com.sa.zentao.qo.ZtProjectQo;
+import com.sa.zentao.service.IZtNoticeService;
+import org.springframework.beans.factory.annotation.Autowired;
+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.List;
+
+/**
+ *
+ * 前端控制器
+ *
+ *
+ * @author gqb
+ * @since 2024-12-26
+ */
+@RestController
+@RequestMapping("/zt-notice")
+public class ZtNoticeController {
+
+ @Autowired
+ private IZtNoticeService noticeService;
+
+ //项目集
+ @RequestMapping(value = "/list", method = RequestMethod.POST, produces = "application/json; charset=UTF-8")
+ public Result> pageList(@RequestBody ZtProjectQo qo){
+
+ List list = noticeService.list(new QueryWrapper().lambda()
+ .eq(ZtNotice::getFlag, 0).orderByDesc(ZtNotice::getId));
+
+
+ return Result.success(list);
+
+ }
+
+
+}
diff --git a/src/main/java/com/sa/zentao/controller/ZtProductController.java b/src/main/java/com/sa/zentao/controller/ZtProductController.java
index 1a14c99..340c6c9 100644
--- a/src/main/java/com/sa/zentao/controller/ZtProductController.java
+++ b/src/main/java/com/sa/zentao/controller/ZtProductController.java
@@ -91,6 +91,13 @@ public class ZtProductController {
return Result.success();
}
+
+ @RequestMapping(value = "/getById", method = RequestMethod.POST, produces = "application/json; charset=UTF-8")
+ public Result modifyProduct(@RequestBody ZtProjectQo qo){
+ return Result.success(this.ztProductService.getById(qo.getId()));
+
+ }
+
@RequestMapping(value = "/getProductByProjectId", method = RequestMethod.POST, produces = "application/json; charset=UTF-8")
public Result getProductByProjectId(@RequestBody ZtProductDTO dto){
ZtProjectproduct project = projectproductService.getOne(new QueryWrapper().lambda()
diff --git a/src/main/java/com/sa/zentao/controller/ZtProjectController.java b/src/main/java/com/sa/zentao/controller/ZtProjectController.java
index 55ff161..70f1caa 100644
--- a/src/main/java/com/sa/zentao/controller/ZtProjectController.java
+++ b/src/main/java/com/sa/zentao/controller/ZtProjectController.java
@@ -314,6 +314,14 @@ public class ZtProjectController {
return Result.success(this.ztProjectService.projectTeamTimeWork(qo));
}
+ //迭代列表根据项目
+ @RequestMapping(value = "/executionByProject", method = RequestMethod.POST, produces = "application/json; charset=UTF-8")
+ public Result executionByProject(@RequestBody ZtProjectQo qo){
+
+ List pList = this.ztProjectService.execListByProject(qo.getProject());
+ return Result.success(pList);
+ }
+
}
diff --git a/src/main/java/com/sa/zentao/controller/ZtReleaseController.java b/src/main/java/com/sa/zentao/controller/ZtReleaseController.java
new file mode 100644
index 0000000..5afe306
--- /dev/null
+++ b/src/main/java/com/sa/zentao/controller/ZtReleaseController.java
@@ -0,0 +1,105 @@
+package com.sa.zentao.controller;
+
+
+import com.github.pagehelper.PageInfo;
+import com.sa.zentao.dao.Result;
+import com.sa.zentao.dao.ZtReleaseDTO;
+import com.sa.zentao.dao.ZtStoryDTO;
+import com.sa.zentao.dao.ZtTaskDTO;
+import com.sa.zentao.entity.ZtStory;
+import com.sa.zentao.qo.ZtProjectQo;
+import com.sa.zentao.qo.ZtReleaseQo;
+import com.sa.zentao.service.IZtReleaseService;
+import org.springframework.beans.factory.annotation.Autowired;
+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.List;
+
+/**
+ *
+ * 前端控制器
+ *
+ *
+ * @author gqb
+ * @since 2024-12-26
+ */
+@RestController
+@RequestMapping("/zt-release")
+public class ZtReleaseController {
+
+ @Autowired
+ private IZtReleaseService releaseService;
+
+ @RequestMapping(value = "/addRelease", method = RequestMethod.POST, produces = "application/json; charset=UTF-8")
+ public Result addRelease(@RequestBody ZtReleaseDTO dto){
+ releaseService.addRelease(dto);
+ return Result.success();
+ }
+
+ @RequestMapping(value = "/modifyRelease", method = RequestMethod.POST, produces = "application/json; charset=UTF-8")
+ public Result modifyRelease(@RequestBody ZtReleaseDTO dto){
+ releaseService.modifyRelease(dto);
+ return Result.success();
+ }
+
+ @RequestMapping(value = "/pageList", method = RequestMethod.POST, produces = "application/json; charset=UTF-8")
+ public Result pageList(@RequestBody ZtReleaseQo qo){
+ return Result.success(releaseService.pageList(qo));
+ }
+
+ @RequestMapping(value = "/releaseStoryPageList", method = RequestMethod.POST, produces = "application/json; charset=UTF-8")
+ public Result releaseStoryPageList(@RequestBody ZtReleaseQo qo){
+ PageInfo info=releaseService.releaseStoryPageList(qo);
+ return Result.success(info);
+ }
+
+ @RequestMapping(value = "/projectStoryPageList", method = RequestMethod.POST, produces = "application/json; charset=UTF-8")
+ public Result projectStoryPageList(@RequestBody ZtReleaseQo qo){
+ PageInfo info=releaseService.projectStoryPageList(qo);
+ return Result.success(info);
+ }
+
+ @RequestMapping(value = "/removeStory", method = RequestMethod.POST, produces = "application/json; charset=UTF-8")
+ public Result removeStory(@RequestBody ZtReleaseQo qo){
+ releaseService.removeStory(qo);
+ return Result.success();
+ }
+ @RequestMapping(value = "/batchSyncStory", method = RequestMethod.POST, produces = "application/json; charset=UTF-8")
+ public Result batchSyncStory(@RequestBody ZtReleaseQo qo){
+ releaseService.batchSyncStory(qo);
+ return Result.success();
+ }
+
+
+ @RequestMapping(value = "/assignedTo", method = RequestMethod.POST, produces = "application/json; charset=UTF-8")
+ public Result assignedTo(@RequestBody ZtReleaseQo dto){
+ releaseService.assignedTo(dto);
+ return Result.success();
+ }
+
+ @RequestMapping(value = "/userReview", method = RequestMethod.POST, produces = "application/json; charset=UTF-8")
+ public Result userReview(@RequestBody ZtReleaseQo dto){
+ releaseService.userReview(dto);
+ return Result.success();
+ }
+
+
+ @RequestMapping(value = "/release", method = RequestMethod.POST, produces = "application/json; charset=UTF-8")
+ public Result release(@RequestBody ZtReleaseQo dto){
+ releaseService.release(dto);
+ return Result.success();
+ }
+
+ @RequestMapping(value = "/execMenu", method = RequestMethod.POST, produces = "application/json; charset=UTF-8")
+ public Result execMenu(@RequestBody ZtReleaseQo dto){
+ return Result.success(releaseService.execMenu(dto));
+ }
+
+
+
+
+}
diff --git a/src/main/java/com/sa/zentao/controller/ZtReleaseDetailsController.java b/src/main/java/com/sa/zentao/controller/ZtReleaseDetailsController.java
new file mode 100644
index 0000000..839f737
--- /dev/null
+++ b/src/main/java/com/sa/zentao/controller/ZtReleaseDetailsController.java
@@ -0,0 +1,20 @@
+package com.sa.zentao.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * 前端控制器
+ *
+ *
+ * @author gqb
+ * @since 2024-12-26
+ */
+@RestController
+@RequestMapping("/zt-release-executions")
+public class ZtReleaseDetailsController {
+
+}
diff --git a/src/main/java/com/sa/zentao/controller/ZtStoryController.java b/src/main/java/com/sa/zentao/controller/ZtStoryController.java
index 6dee200..c201f7e 100644
--- a/src/main/java/com/sa/zentao/controller/ZtStoryController.java
+++ b/src/main/java/com/sa/zentao/controller/ZtStoryController.java
@@ -51,6 +51,14 @@ public class ZtStoryController {
}
+ @RequestMapping(value = "/myStoryPageList", method = RequestMethod.POST, produces = "application/json; charset=UTF-8")
+ public Result myStoryPageList(@RequestBody ZtProjectQo qo){
+
+ return Result.success(ztStoryService.myStoryPageList(qo));
+
+ }
+
+
@RequestMapping(value = "/storyListByProject", method = RequestMethod.POST, produces = "application/json; charset=UTF-8")
public Result storyListByProject(@RequestBody ZtProjectQo qo){
List list=ztStoryService.storyListByProject(qo);
@@ -123,7 +131,12 @@ public class ZtStoryController {
ztStoryService.addReview(dto);
return Result.success();
}
-
+ //添加备注
+ @RequestMapping(value = "/addRemark", method = RequestMethod.POST, produces = "application/json; charset=UTF-8")
+ public Result addRemark(@RequestBody ZtStoryDTO dto){
+ ztStoryService.addRemark(dto);
+ return Result.success();
+ }
//评审
@RequestMapping(value = "/userReview", method = RequestMethod.POST, produces = "application/json; charset=UTF-8")
public Result userReview(@RequestBody ZtStoryDTO dto){
diff --git a/src/main/java/com/sa/zentao/controller/ZtStoryFeedbackController.java b/src/main/java/com/sa/zentao/controller/ZtStoryFeedbackController.java
index 832b8f9..246f339 100644
--- a/src/main/java/com/sa/zentao/controller/ZtStoryFeedbackController.java
+++ b/src/main/java/com/sa/zentao/controller/ZtStoryFeedbackController.java
@@ -65,5 +65,17 @@ public class ZtStoryFeedbackController {
return Result.success(waitList);
}
+ //指派
+ @RequestMapping(value = "/assignedTo", method = RequestMethod.POST, produces = "application/json; charset=UTF-8")
+ public Result assignedTo(@RequestBody ZtStoryDTO dto){
+ storyFeedbackService.assignedTo(dto);
+ return Result.success();
+ }
+ //开始处理
+ @RequestMapping(value = "/startHand", method = RequestMethod.POST, produces = "application/json; charset=UTF-8")
+ public Result startHand(@RequestBody ZtStoryDTO dto){
+ storyFeedbackService.startHand(dto);
+ return Result.success();
+ }
}
diff --git a/src/main/java/com/sa/zentao/controller/ZtStoryUserController.java b/src/main/java/com/sa/zentao/controller/ZtStoryUserController.java
index d1a91bc..45e2ced 100644
--- a/src/main/java/com/sa/zentao/controller/ZtStoryUserController.java
+++ b/src/main/java/com/sa/zentao/controller/ZtStoryUserController.java
@@ -8,6 +8,7 @@ import com.sa.zentao.dao.ZtStoryDTO;
import com.sa.zentao.dao.ZtStoryUserDTO;
import com.sa.zentao.entity.ZtStoryUser;
import com.sa.zentao.qo.StoryQo;
+import com.sa.zentao.qo.ZtProjectQo;
import com.sa.zentao.service.IZtStoryUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
@@ -69,4 +70,17 @@ public class ZtStoryUserController {
return Result.success(list);
}
+ @RequestMapping(value = "/storyListByProductId", method = RequestMethod.POST, produces = "application/json; charset=UTF-8")
+ public Result storyListByProductId(@RequestBody ZtProjectQo qo){
+ List list=storyUserService.storyListByProductId(qo);
+ return Result.success(list);
+ }
+
+ //评审
+ @RequestMapping(value = "/userReview", method = RequestMethod.POST, produces = "application/json; charset=UTF-8")
+ public Result userReview(@RequestBody ZtStoryDTO dto){
+ storyUserService.userReview(dto);
+ return Result.success();
+ }
+
}
diff --git a/src/main/java/com/sa/zentao/controller/ZtTaskController.java b/src/main/java/com/sa/zentao/controller/ZtTaskController.java
index 3cc8e15..a5b53ca 100644
--- a/src/main/java/com/sa/zentao/controller/ZtTaskController.java
+++ b/src/main/java/com/sa/zentao/controller/ZtTaskController.java
@@ -1,22 +1,32 @@
package com.sa.zentao.controller;
+import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.read.listener.PageReadListener;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.github.pagehelper.PageInfo;
-import com.sa.zentao.dao.Result;
-import com.sa.zentao.dao.ZtProjectDTO;
-import com.sa.zentao.dao.ZtTaskDTO;
-import com.sa.zentao.entity.ZtTask;
+import com.sa.zentao.conf.ExcelListener;
+import com.sa.zentao.conf.LoginRiskUser;
+import com.sa.zentao.conf.RiskUserThreadLocal;
+import com.sa.zentao.dao.*;
+import com.sa.zentao.entity.*;
import com.sa.zentao.qo.ZtProjectQo;
-import com.sa.zentao.service.IZtTaskService;
+import com.sa.zentao.service.*;
+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.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.springframework.util.CollectionUtils;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.RestController;
-
-import java.util.List;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.math.BigDecimal;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.*;
/**
*
@@ -28,6 +38,7 @@ import java.util.List;
*/
@RestController
@RequestMapping("/zt-task")
+@Slf4j
public class ZtTaskController {
@Autowired
@@ -39,18 +50,43 @@ public class ZtTaskController {
return Result.success(ztTaskService.taskPageList(qo));
}
+ @RequestMapping(value = "/myTaskPageList", method = RequestMethod.POST, produces = "application/json; charset=UTF-8")
+ public Result> myTaskPageList(@RequestBody ZtProjectQo qo){
+
+ return Result.success(ztTaskService.myTaskPageList(qo));
+ }
+
+
@RequestMapping(value = "/addTask", method = RequestMethod.POST, produces = "application/json; charset=UTF-8")
public Result addTask(@RequestBody ZtTaskDTO dto){
ztTaskService.addTask(dto);
return Result.success();
}
+ @RequestMapping(value = "/assignedTo", method = RequestMethod.POST, produces = "application/json; charset=UTF-8")
+ public Result assignedTo(@RequestBody ZtTaskDTO dto){
+ ztTaskService.assignedTo(dto);
+ return Result.success();
+ }
+
@RequestMapping(value = "/batchAddTask", method = RequestMethod.POST, produces = "application/json; charset=UTF-8")
public Result batchAddTask(@RequestBody ZtTaskDTO dto){
ztTaskService.batchAddTask(dto);
return Result.success();
}
+ @RequestMapping(value = "/approval", method = RequestMethod.POST, produces = "application/json; charset=UTF-8")
+ public Result approval(@RequestBody ZtTaskDTO dto){
+ ztTaskService.approval(dto);
+ return Result.success();
+ }
+
+ @RequestMapping(value = "/batchApproval", method = RequestMethod.POST, produces = "application/json; charset=UTF-8")
+ public Result batchApproval(@RequestBody ZtTaskDTO dto){
+ ztTaskService.batchApproval(dto);
+ return Result.success();
+ }
+
@RequestMapping(value = "/modifyTask", method = RequestMethod.POST, produces = "application/json; charset=UTF-8")
public Result modifyTask(@RequestBody ZtTaskDTO dto){
ztTaskService.modifyTask(dto);
@@ -75,7 +111,12 @@ public class ZtTaskController {
ztTaskService.closeTask(dto);
return Result.success();
}
-
+ //添加备注
+ @RequestMapping(value = "/addRemark", method = RequestMethod.POST, produces = "application/json; charset=UTF-8")
+ public Result addRemark(@RequestBody ZtTaskDTO dto){
+ ztTaskService.addRemark(dto);
+ return Result.success();
+ }
//取消任务
@RequestMapping(value = "/cancelTask", method = RequestMethod.POST, produces = "application/json; charset=UTF-8")
public Result cancelTask(@RequestBody ZtTaskDTO dto){
@@ -93,7 +134,9 @@ public class ZtTaskController {
//获取Task根据id
@RequestMapping(value = "/getTaskById", method = RequestMethod.POST, produces = "application/json; charset=UTF-8")
public Result getTaskById(@RequestBody ZtTaskDTO dto){
- return Result.success(ztTaskService.getById(dto.getId()));
+ ZtTaskDTO task=ztTaskService.getTaskById(dto.getId());
+ return Result.success(task);
+
}
@@ -105,7 +148,354 @@ public class ZtTaskController {
// 需求关联的迭代
List list = this.ztTaskService.list(new QueryWrapper().lambda().eq(ZtTask::getStory, dto.getStory()));
+ Map userMap = this.userService.userMapByIds(null);
+ for (ZtTask t:list) {
+ ZtUser ztUser = userMap.get(t.getAssignedTo());
+ if(ztUser!=null){
+ t.setAssignedTo(ztUser.getNickname());
+ }
+ }
+
+
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")
+ public Result humanAffairsUploadFile(MultipartFile file) throws Exception {
+ SimpleDateFormat f=new SimpleDateFormat("yyyy/MM/dd");
+ EasyExcel.read(file.getInputStream(), ZtTaskImportDTO.class, new PageReadListener(dataList -> {
+ int i=0;
+ for (ZtTaskImportDTO dto:dataList) {
+ i+=1;
+ ZtProject sprint = projectService.getOne(new QueryWrapper().lambda()
+ .eq(ZtProject::getType, "sprint").eq(ZtProject::getName, dto.getExecName()));
+ if(sprint==null){
+ log.error("未查询到{}",dto.getExecName());
+ }
+ ZtStory story = this.storyService.getOne(new QueryWrapper().lambda().eq(ZtStory::getTitle, dto.getStoryName()));
+ if(sprint==null){
+ log.error("未查询到{}",dto.getStoryName());
+ }
+ ZtUser user = this.userService.getOne(new QueryWrapper().lambda().eq(ZtUser::getNickname, dto.getAssignedName()));
+ if(user==null){
+ log.error("未查询到{}",dto.getAssignedName());
+ }
+ String start = dto.getStart();
+
+ String end = dto.getEnd();
+
+ ZtProjectstory pStory = projectstoryService.getOne(new QueryWrapper().lambda().
+ eq(ZtProjectstory::getStory, story.getId()).ne(ZtProjectstory::getProject,0));
+
+
+
+ ZtTask task=new ZtTask();
+ try {
+ Date parse = f.parse(start);
+ task.setEstStarted(parse);
+ Date endDate = f.parse(end);
+ task.setDeadline(endDate);
+ } catch (Exception e) {
+// e.printStackTrace();
+ if(task.getEstStarted()==null){
+ task.setEstStarted(new Date());
+ }
+ if(task.getDeadline()==null){
+ task.setDeadline(new Date());
+ }
+ }
+ task.setOpenedby("liyuyan");
+ task.setOpeneddate(new Date());
+ task.setProject(pStory.getProject());
+ task.setExecution(sprint.getId());
+ task.setStory(story.getId());
+ task.setAssignedTo(user.getAccount());
+ task.setStatus("wait");
+ task.setName(dto.getTaskName());
+ log.error("getConsumed,{} ,index {}",dto.getConsumed(),i);
+ try {
+ task.setEstimate(Float.valueOf(dto.getConsumed()));
+ task.setLeft(Float.valueOf(dto.getConsumed()));
+ }catch (Exception e){
+ task.setEstimate(0F);
+ task.setLeft(0F);
+// log.error("",e);
+ }
+ ZtTaskDTO ztTaskDTO = new ZtTaskDTO();
+
+ BeanUtils.copyProperties(task,ztTaskDTO);
+ LoginRiskUser u=new LoginRiskUser();
+ u.setName("liyuyan");
+ RiskUserThreadLocal.set(u);
+ ztTaskService.save(task);
+
+// estStarted deadline
+
+ kanbanlaneService.addTask( task.getExecution(), Arrays.asList(task));
+
+
+ }
+
+ },600)).sheet().doRead();
+
+ return Result.success();
+ }
+
+
+
+
+ @Autowired
+ private com.sa.zentao.service.IZtStoryService IZtStoryService;
+
+
+ @Autowired
+ private IZtExecutionprojectService executionprojectService;
+
+ @Autowired
+ private IZtProjectproductService projectproductService;
+
+
+ @Autowired
+ private IZtStoryspecService storyspecService;
+
+
+ //同步中道
+ @RequestMapping(value = "/syncZdStory", method = RequestMethod.GET, produces = "application/json; charset=UTF-8")
+ public Result syncZdStory(@RequestParam("implementName")String implementName){
+
+
+ if(StringUtils.isEmpty(implementName)){
+ return Result.success();
+ }
+ List list1 = this.projectService.list(new QueryWrapper().lambda().eq(ZtProject::getName, implementName));
+ if(CollectionUtils.isEmpty(list1)){
+ throw new BusinessException("未查询到");
+ }
+ ZtProject sprint = this.projectService.getOne(new QueryWrapper().lambda().eq(ZtProject::getName, implementName)
+ .eq(ZtProject::getType, "sprint"));
+
+ ZtProjectDTO d=projectService.selectPrdByName(implementName);
+ if(d!=null){
+ //执行id
+ Integer id = d.getId();
+ List ztProjectstories = projectstoryService.storyListPrd(id);
+ for (ZtProjectstory story:ztProjectstories) {
+ //老的
+ ZtStory oldStory=storyService.getPrdById(story.getStory());
+ if(oldStory==null){
+ continue;
+ }
+ List listSpec = storyspecService.getPrdById(oldStory.getId());
+
+ ZtStory newStory = storyService.getById(oldStory.getId());
+ if(newStory!=null){
+ continue;
+ }
+ if(!CollectionUtils.isEmpty(listSpec)){
+ ZtStoryspec ztStoryspec = listSpec.get(0);
+ ztStoryspec.setFiles(null);
+ storyspecService.save(ztStoryspec);
+ }
+
+ List userList=new ArrayList();
+
+
+ String openedby = oldStory.getOpenedby();
+ if(!StringUtils.isEmpty(openedby)){
+ String[] split = openedby.split(",");
+ for (String sName:split) {
+ if(!StringUtils.isEmpty(sName)){
+ if("closed".equals(sName)){
+ continue;
+ }
+ userList.add(sName);
+ }
+ }
+ }
+
+
+ String assignedTo = oldStory.getAssignedTo();
+ if(!StringUtils.isEmpty(assignedTo)){
+ String[] split = assignedTo.split(",");
+ for (String sName:split) {
+ if(!StringUtils.isEmpty(sName)){
+ if("closed".equals(sName)){
+ continue;
+ }
+ userList.add(sName);
+ }
+ }
+ }
+
+
+ String lasteditedby = oldStory.getLasteditedby();
+ if(!StringUtils.isEmpty(lasteditedby)){
+ String[] split = lasteditedby.split(",");
+ for (String sName:split) {
+ if(!StringUtils.isEmpty(sName)){
+ if("closed".equals(sName)){
+ continue;
+ }
+ userList.add(sName);
+ }
+ }
+ }
+ String reviewedby = oldStory.getReviewedby();
+ if(!StringUtils.isEmpty(reviewedby)){
+ String[] split = reviewedby.split(",");
+ for (String sName:split) {
+
+ if(!StringUtils.isEmpty(sName)){
+ if("closed".equals(sName)){
+ continue;
+ }
+ userList.add(sName);
+ }
+ }
+ }
+ for (String uName:userList) {
+ ZtUser ztUser = this.userService.selectByName(uName);
+ if(ztUser==null){
+ if("closed".equals(uName)){
+ continue;
+ }
+ ZtUser u = this.userService.selectPrdByName(uName);
+ u.setId(null);
+ u.setNickname(u.getRealname());
+ userService.save(u);
+ }
+ }
+
+ //新的执行id
+ Integer id1 = sprint.getId();
+ //执行关联的项目 id
+ List list = executionprojectService.list(new QueryWrapper().lambda()
+ .eq(ZtExecutionproject::getExecution, id1));
+ Integer project = list.get(0).getProject();
+ //产品id
+ ZtProjectproduct projectproduct = projectproductService.getOne(new QueryWrapper()
+ .lambda().eq(ZtProjectproduct::getProject, project));
+ Integer product = projectproduct.getProduct();
+
+
+
+
+ //创建新的需求
+ oldStory.setProduct(product);
+ oldStory.setStage("wait");
+ oldStory.setStatus("active");
+ storyService.save(oldStory);
+ //项目关联需求
+ ZtProjectDTO dto=new ZtProjectDTO();
+ dto.setStoryIds(new ArrayList<>(){
+ {
+ add(oldStory.getId());
+ }
+ });
+ dto.setProject(project);
+ this.projectService.projectSyncStory(dto);
+ dto.setExcludeId(id1);
+ this.projectService.executionSyncStory(dto);
+
+
+
+
+ }
+
+ }
+
+ return Result.success();
+ }
+
+
+
+ //同步中道
+ @RequestMapping(value = "/test", method = RequestMethod.GET, produces = "application/json; charset=UTF-8")
+ public Result test(@RequestParam("implementName")String implementName){
+
+
+ if(StringUtils.isEmpty(implementName)){
+ return Result.success();
+ }
+ List list1 = this.projectService.list(new QueryWrapper().lambda().eq(ZtProject::getName, implementName));
+ if(CollectionUtils.isEmpty(list1)){
+ throw new BusinessException("未查询到");
+ }
+ ZtProject sprint = this.projectService.getOne(new QueryWrapper().lambda().eq(ZtProject::getName, implementName)
+ .eq(ZtProject::getType, "sprint"));
+
+ ZtProjectDTO d=projectService.selectPrdByName(implementName);
+ if(d!=null){
+ //执行id
+ Integer id = d.getId();
+ List ztProjectstories = projectstoryService.storyListPrd(id);
+ for (ZtProjectstory story:ztProjectstories) {
+ //老的
+ ZtStory oldStory=storyService.getPrdById(story.getStory());
+ if(oldStory==null){
+ continue;
+ }
+ List listSpec = storyspecService.getPrdById(oldStory.getId());
+
+ ZtStory newStory = storyService.getById(oldStory.getId());
+ if(!CollectionUtils.isEmpty(listSpec)){
+ ZtStoryspec ztStoryspec = listSpec.get(0);
+ ztStoryspec.setFiles(null);
+ storyspecService.save(ztStoryspec);
+ }
+ newStory.setOpenedby(oldStory.getOpenedby());
+ storyService.updateById(newStory);
+
+
+ List userList=new ArrayList();
+
+
+ String openedby = oldStory.getOpenedby();
+ if(!StringUtils.isEmpty(openedby)){
+ String[] split = openedby.split(",");
+ for (String sName:split) {
+ if(!StringUtils.isEmpty(sName)){
+ if("closed".equals(sName)){
+ continue;
+ }
+ userList.add(sName);
+ }
+ }
+ }
+
+
+ for (String uName:userList) {
+ ZtUser ztUser = this.userService.selectByName(uName);
+ if(ztUser==null){
+ if("closed".equals(uName)){
+ continue;
+ }
+ ZtUser u = this.userService.selectPrdByName(uName);
+ u.setId(null);
+ u.setNickname(u.getRealname());
+ userService.save(u);
+ }
+ }
+
+
+
+ }
+
+ }
+
+ return Result.success();
+ }
+
}
diff --git a/src/main/java/com/sa/zentao/controller/ZtUserController.java b/src/main/java/com/sa/zentao/controller/ZtUserController.java
index 9ae03a4..a91cabb 100644
--- a/src/main/java/com/sa/zentao/controller/ZtUserController.java
+++ b/src/main/java/com/sa/zentao/controller/ZtUserController.java
@@ -1,6 +1,7 @@
package com.sa.zentao.controller;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.github.pagehelper.PageInfo;
@@ -12,9 +13,11 @@ import com.sa.zentao.dao.ZtUserDTO;
import com.sa.zentao.entity.ZtUser;
import com.sa.zentao.enums.ActionStatus;
import com.sa.zentao.enums.ActionType;
+import com.sa.zentao.mapper.ZtUserMapper;
import com.sa.zentao.qo.ZtUserQo;
import com.sa.zentao.service.IZtActionService;
import com.sa.zentao.service.IZtUserService;
+import com.sa.zentao.utils.ChineseUtil;
import com.sa.zentao.utils.JwtUtil;
import com.tencentcloudapi.common.Credential;
import com.tencentcloudapi.common.exception.TencentCloudSDKException;
@@ -52,12 +55,30 @@ public class ZtUserController {
@Autowired
private IZtActionService actionService;
+ @Autowired
+ private ZtUserMapper userMapper;
+
+ @RequestMapping(value = "/allList", method = RequestMethod.POST, produces = "application/json; charset=UTF-8")
+ public Result allList(@RequestBody ZtUser user){
+ List ztUserDTOS = userMapper.listAll(null);
+
+
+ return Result.success();
+ }
+
@RequestMapping(value = "/userList", method = RequestMethod.POST, produces = "application/json; charset=UTF-8")
public Result> userList(@RequestBody ZtProjectDTO dto){
- return Result.success(userService.list(new QueryWrapper()
- .lambda().eq(ZtUser::getDeleted,"0")
+ LambdaQueryWrapper eq = new QueryWrapper()
+ .lambda().eq(ZtUser::getDeleted, "0");
+ if(!StringUtils.isEmpty(dto.getName())){
+ eq.like(ZtUser::getAccount,dto.getName())
+ .or().like(ZtUser::getNickname,dto.getName())
+ .or().like(ZtUser::getPinyin,dto.getName())
+ ;
+ }
+ return Result.success(userService.list(eq
));
}
@@ -109,7 +130,7 @@ public class ZtUserController {
ztUser.setProductIds(StringUtils.join(productList,","));
}
-
+ ztUser.setPinyin(ChineseUtil.getFirst(ztUser.getNickname()));
this.userService.save(ztUser);
this.actionService.addAction(ActionType.USER, ActionStatus.XJ,ztUser.getId(),null,null,null, RiskUserThreadLocal.get().getName(),null,ztUser.getAccount());
@@ -132,7 +153,9 @@ public class ZtUserController {
if(!CollectionUtils.isEmpty(list)){
throw new BusinessException("请检查用户");
}
-
+ if(!ztUser.getNickname().equals(user.getNickname())){
+ ztUser.setPinyin(ChineseUtil.getFirst(ztUser.getNickname()));
+ }
ztUser.setAccount(user.getAccount());
ztUser.setPassword(user.getPassword());
diff --git a/src/main/java/com/sa/zentao/dao/ProjectWorkTaskDTO.java b/src/main/java/com/sa/zentao/dao/ProjectWorkTaskDTO.java
new file mode 100644
index 0000000..59463b0
--- /dev/null
+++ b/src/main/java/com/sa/zentao/dao/ProjectWorkTaskDTO.java
@@ -0,0 +1,66 @@
+package com.sa.zentao.dao;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class ProjectWorkTaskDTO implements Serializable {
+
+
+
+ @ExcelProperty(value = "任务id",index =0)
+ private Integer taskId;
+ //完成需求总量
+ @ExcelProperty(value = "需求id",index =1)
+ private Integer storyId;
+ //迭代
+ @ExcelProperty(value = "冲刺",index =2)
+ private String execName;
+ //冲刺开始时间
+ @ExcelProperty(value = "冲刺开始时间",index =3)
+ private String execStartDate;
+ //冲刺结束时间
+ @ExcelProperty(value = "冲刺结束时间",index =4)
+ private String execEndDate;
+ //上月剩余未完成需求量
+
+ //已验收需求总量
+ @ExcelProperty(value = "需求",index =5)
+ private String storyName;
+ //验收通过率
+ @ExcelProperty(value = "任务名称",index =6)
+ private String taskName;
+ //验收不通过数量
+ @ExcelProperty(value = "任务类型",index =7)
+ private String typeName;
+ //指派人
+ @ExcelProperty(value = "指派人",index =8)
+ private String assignedTo;
+
+ @ExcelProperty(value = "产出工时",index =9)
+ private float workTime;
+
+ @ExcelProperty(value = "预估工时",index =10)
+ private float planTime;
+
+ @ExcelProperty(value = "剩余工时",index =11)
+ private float balanceTime;
+ //状态
+ @ExcelProperty(value = "状态",index =12)
+ private String status;
+
+ @ExcelProperty(value = "任务开始时间",index =13)
+ private String startDate;
+
+ @ExcelProperty(value = "任务结束时间",index =14)
+ private String endDate;
+
+ @ExcelProperty(value = "持续日期",index =15)
+ private Integer keepTime;
+
+}
diff --git a/src/main/java/com/sa/zentao/dao/UploadDTO.java b/src/main/java/com/sa/zentao/dao/UploadDTO.java
new file mode 100644
index 0000000..7602dc3
--- /dev/null
+++ b/src/main/java/com/sa/zentao/dao/UploadDTO.java
@@ -0,0 +1,28 @@
+package com.sa.zentao.dao;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.Serializable;
+
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class UploadDTO implements Serializable {
+
+ private Integer id;
+
+ private MultipartFile file;
+
+ private String url;
+
+ private String title;
+
+ private String objectType;
+
+ private Integer objectId;
+
+
+
+}
diff --git a/src/main/java/com/sa/zentao/dao/ZtBugDTO.java b/src/main/java/com/sa/zentao/dao/ZtBugDTO.java
index bcead0d..acfd30d 100644
--- a/src/main/java/com/sa/zentao/dao/ZtBugDTO.java
+++ b/src/main/java/com/sa/zentao/dao/ZtBugDTO.java
@@ -112,8 +112,8 @@ public class ZtBugDTO implements Serializable {
private String openedbuild;
@TableField("assignedTo")
- private String assignedto;
- private String assignedtoName;
+ private String assignedTo;
+ private String assignedToName;
@TableField("assignedDate")
private Date assigneddate;
@@ -190,4 +190,6 @@ public class ZtBugDTO implements Serializable {
private ZtStory ztStory;
private ZtTask ztTask;
+
+ private String files;
}
diff --git a/src/main/java/com/sa/zentao/dao/ZtCasestepDTO.java b/src/main/java/com/sa/zentao/dao/ZtCasestepDTO.java
index 82d8157..9b76135 100644
--- a/src/main/java/com/sa/zentao/dao/ZtCasestepDTO.java
+++ b/src/main/java/com/sa/zentao/dao/ZtCasestepDTO.java
@@ -40,4 +40,6 @@ public class ZtCasestepDTO implements Serializable {
private Integer status;
private String caseResult;
+
+ private String remark;
}
diff --git a/src/main/java/com/sa/zentao/dao/ZtReleaseDTO.java b/src/main/java/com/sa/zentao/dao/ZtReleaseDTO.java
new file mode 100644
index 0000000..df7874f
--- /dev/null
+++ b/src/main/java/com/sa/zentao/dao/ZtReleaseDTO.java
@@ -0,0 +1,101 @@
+package com.sa.zentao.dao;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.sa.zentao.entity.ZtReleaseDetails;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.util.Date;
+import java.util.List;
+
+/**
+ *
+ *
+ *
+ *
+ * @author gqb
+ * @since 2024-12-26
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class ZtReleaseDTO implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+
+ private String project;
+
+ private Integer product;
+
+ private String branch;
+
+ private Integer shadow;
+
+ private String build;
+
+ private String name;
+
+ private String marker;
+
+ private Date date;
+
+ private String stories;
+
+ private String bugs;
+
+ @TableField("leftBugs")
+ private String leftbugs;
+
+ private String desc;
+
+ private String mailto;
+
+ private String notify;
+ // //reviewing待评审
+ // //waitRelease 待发布
+ // //released 发不成功
+ // //closed 发布失败
+ private String status;
+
+ @TableField("subStatus")
+ private String substatus;
+
+ @TableField("createdBy")
+ private String createdby;
+
+ @TableField("createdDate")
+ private Date createddate;
+
+ private String deleted;
+
+ private String executions;
+
+ private String executionsName;
+ private String level;
+
+ //风险评估
+ private String danger;
+
+ private String assignedTo;
+
+ private String assignedToName;
+
+ private Date releaseDate;
+
+ private String noticeTitle;
+
+ private String noticeContent;
+
+ private String failRemark;
+
+ private String releaseFailRemark;
+
+ private List details;
+}
diff --git a/src/main/java/com/sa/zentao/dao/ZtReleaseDetailsDTO.java b/src/main/java/com/sa/zentao/dao/ZtReleaseDetailsDTO.java
new file mode 100644
index 0000000..fcea3ab
--- /dev/null
+++ b/src/main/java/com/sa/zentao/dao/ZtReleaseDetailsDTO.java
@@ -0,0 +1,36 @@
+package com.sa.zentao.dao;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+
+/**
+ *
+ *
+ *
+ *
+ * @author gqb
+ * @since 2024-12-26
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class ZtReleaseDetailsDTO implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+
+ private Integer releaseId;
+
+ private Integer objectId;
+
+ private String objectType;
+ // released已发布 closed 关闭
+ private String status;
+
+
+}
diff --git a/src/main/java/com/sa/zentao/dao/ZtStoryCountDTO.java b/src/main/java/com/sa/zentao/dao/ZtStoryCountDTO.java
index d655015..97ee221 100644
--- a/src/main/java/com/sa/zentao/dao/ZtStoryCountDTO.java
+++ b/src/main/java/com/sa/zentao/dao/ZtStoryCountDTO.java
@@ -24,24 +24,42 @@ import java.util.List;
public class ZtStoryCountDTO implements Serializable {
//待评审
- private BigDecimal dpsCount;
+ private String dpsCount;
- //评审通过
- private BigDecimal pstgCount;
+ //评审通过 未开始的
+ private String pstgCount;
+
+ //计划中
+ private String planCount;
+
+
+ //进行中 研发中心
+ private String jxzCount;
+
+ //测试中
+ private String testingCount;
- //进行中
- private BigDecimal jxzCount;
//延期
- private BigDecimal yqCount;
+ private String yqCount;
//测试完毕
- private BigDecimal cswbCount;
+ private String cswbCount;
//上线待验收
- private BigDecimal dysCount;
+ private String dysCount;
//验收不通过
- private BigDecimal ysNoCount;
+ private String ysNoCount;
//验收通过
- private BigDecimal ysYesCount;
+ private String ysYesCount;
//bug量
- private BigDecimal bugCount;
+ private String bugCount;
+
+
+ //问题反馈 未受理
+ private String feedbackWslCount;
+ //处理中的
+ private String feedbackClzCount;
+ //处理完的
+ private String feedbackClwCount;
+ //延期的
+ private String feedbackYqCount;
}
diff --git a/src/main/java/com/sa/zentao/dao/ZtStoryDTO.java b/src/main/java/com/sa/zentao/dao/ZtStoryDTO.java
index 7ef6fdb..c580507 100644
--- a/src/main/java/com/sa/zentao/dao/ZtStoryDTO.java
+++ b/src/main/java/com/sa/zentao/dao/ZtStoryDTO.java
@@ -37,6 +37,14 @@ public class ZtStoryDTO implements Serializable {
private Integer parent;
private Integer product;
+ private Integer productId;
+
+ private String productName;
+ private String projectName;
+ private Integer projectId;
+
+ private String implementName;
+ private Integer implementId;
private Integer branch;
@@ -232,4 +240,13 @@ public class ZtStoryDTO implements Serializable {
private Integer feedbackId;
private Integer userStory;
+
+ private String ysRemark;
+ //验收人
+ private String ysUser;
+
+ private Integer taskCount;
+
+ private Integer releaseFlag=0;
+
}
diff --git a/src/main/java/com/sa/zentao/dao/ZtStoryFeedbackDTO.java b/src/main/java/com/sa/zentao/dao/ZtStoryFeedbackDTO.java
index c84b742..9b3274e 100644
--- a/src/main/java/com/sa/zentao/dao/ZtStoryFeedbackDTO.java
+++ b/src/main/java/com/sa/zentao/dao/ZtStoryFeedbackDTO.java
@@ -65,7 +65,7 @@ public class ZtStoryFeedbackDTO implements Serializable {
private String spec;
- // wait finish close
+ // wait finished closed
private String status;
private String fileUrl;
@@ -75,4 +75,13 @@ public class ZtStoryFeedbackDTO implements Serializable {
private String closeRemark;
private Integer product;
+ //预计完成时间
+ private Date planFinishDate;
+
+
+ private Date finishDate;
+ //响应时间 处理时间
+ private Date handDate;
+ //关闭日期
+ private Date closeDate;
}
diff --git a/src/main/java/com/sa/zentao/dao/ZtStoryUserDTO.java b/src/main/java/com/sa/zentao/dao/ZtStoryUserDTO.java
index 0e6db6f..2cc30cc 100644
--- a/src/main/java/com/sa/zentao/dao/ZtStoryUserDTO.java
+++ b/src/main/java/com/sa/zentao/dao/ZtStoryUserDTO.java
@@ -10,6 +10,7 @@ import java.io.Serializable;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Date;
+import java.util.List;
/**
*
@@ -200,4 +201,12 @@ public class ZtStoryUserDTO implements Serializable {
private String remark;
private String storyList;
+
+ private List userViewId;
+
+ private List views;
+
+ private String revieweUser;
+
+ private String files;
}
diff --git a/src/main/java/com/sa/zentao/dao/ZtTaskDTO.java b/src/main/java/com/sa/zentao/dao/ZtTaskDTO.java
index 19adc96..f617eae 100644
--- a/src/main/java/com/sa/zentao/dao/ZtTaskDTO.java
+++ b/src/main/java/com/sa/zentao/dao/ZtTaskDTO.java
@@ -29,6 +29,12 @@ public class ZtTaskDTO implements Serializable {
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
+ //审批状态 0待审批 1审批通过 2拒绝
+ private Integer approvalStatus;
+ //审核拒绝原因
+ private String approvalRemark;
+
+
private Integer project;
private Integer parent;
@@ -171,5 +177,16 @@ public class ZtTaskDTO implements Serializable {
private String files;
+ private String reviewingUser;
+
private List list;
+
+ private List idList;
+
+ private Long deadlineTime;
+
+ //0 否 1 是
+ private Integer finishedFlag=0;
+ private String implementName;
+ private Integer implementId;
}
diff --git a/src/main/java/com/sa/zentao/dao/ZtTaskImportDTO.java b/src/main/java/com/sa/zentao/dao/ZtTaskImportDTO.java
new file mode 100644
index 0000000..08130da
--- /dev/null
+++ b/src/main/java/com/sa/zentao/dao/ZtTaskImportDTO.java
@@ -0,0 +1,52 @@
+package com.sa.zentao.dao;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+/**
+ *
+ *
+ *
+ *
+ * @author gqb
+ * @since 2024-06-25
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class ZtTaskImportDTO implements Serializable {
+
+ /**
+ * 员工id
+ */
+ @ExcelProperty(value = "执行",index = 0)
+ private String execName;
+ /**
+ * 员工姓名
+ */
+ @ExcelProperty(value = "需求名称",index = 1)
+ private String storyName;
+
+ @ExcelProperty(value = "任务名称",index = 2)
+ private String taskName;
+
+ @ExcelProperty(value = "指派",index = 3)
+ private String assignedName;
+
+ @ExcelProperty(value = "消耗",index = 4)
+ private String consumed;
+// estStarted deadline
+
+ @ExcelProperty(value = "开始",index = 5)
+ private String start;
+
+ @ExcelProperty(value = "结束",index = 6)
+ private String end;
+}
diff --git a/src/main/java/com/sa/zentao/dao/ZtUserDTO.java b/src/main/java/com/sa/zentao/dao/ZtUserDTO.java
index e1defb4..f0e5e9b 100644
--- a/src/main/java/com/sa/zentao/dao/ZtUserDTO.java
+++ b/src/main/java/com/sa/zentao/dao/ZtUserDTO.java
@@ -130,4 +130,6 @@ public class ZtUserDTO implements Serializable {
private String productIds;
private String productNames;
+ private String color;
+
}
diff --git a/src/main/java/com/sa/zentao/entity/VerificationCode.java b/src/main/java/com/sa/zentao/entity/VerificationCode.java
index 05d3767..a19e1b9 100644
--- a/src/main/java/com/sa/zentao/entity/VerificationCode.java
+++ b/src/main/java/com/sa/zentao/entity/VerificationCode.java
@@ -41,4 +41,5 @@ public class VerificationCode implements Serializable {
private LocalDateTime expirationTime;
+
}
diff --git a/src/main/java/com/sa/zentao/entity/ZtBug.java b/src/main/java/com/sa/zentao/entity/ZtBug.java
index 246b4fb..1e449c2 100644
--- a/src/main/java/com/sa/zentao/entity/ZtBug.java
+++ b/src/main/java/com/sa/zentao/entity/ZtBug.java
@@ -85,7 +85,10 @@ public class ZtBug implements Serializable {
// testing
// tested
// closed
+ // ZtBug 已完成
//1.active 2.confire=1 3.解决进行中 不变 4 resolved 完成 5.测试中不变 6.测试完毕不变
+ // 'active','resolved','closed'?
+ // active 激活
@TableField("`status`")
private String status;
@@ -120,7 +123,7 @@ public class ZtBug implements Serializable {
private String openedbuild;
@TableField("assignedTo")
- private String assignedto;
+ private String assignedTo;
@TableField("assignedDate")
private Date assigneddate;
diff --git a/src/main/java/com/sa/zentao/entity/ZtFile.java b/src/main/java/com/sa/zentao/entity/ZtFile.java
new file mode 100644
index 0000000..5ec43a4
--- /dev/null
+++ b/src/main/java/com/sa/zentao/entity/ZtFile.java
@@ -0,0 +1,58 @@
+package com.sa.zentao.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import java.util.Date;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ *
+ *
+ *
+ *
+ * @author gqb
+ * @since 2024-12-20
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class ZtFile implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+
+ private String pathname;
+
+ //文件名
+ private String title;
+ //后缀
+ private String extension;
+
+ private Integer size;
+
+ @TableField("objectType")
+ private String objecttype;
+
+ @TableField("objectID")
+ private Integer objectid;
+
+ @TableField("addedBy")
+ private String addedby;
+
+ @TableField("addedDate")
+ private Date addeddate;
+
+ private Integer downloads;
+
+ private String extra;
+ //正常0 1删除
+ private String deleted;
+
+
+}
diff --git a/src/main/java/com/sa/zentao/entity/ZtNotice.java b/src/main/java/com/sa/zentao/entity/ZtNotice.java
new file mode 100644
index 0000000..85c5fd0
--- /dev/null
+++ b/src/main/java/com/sa/zentao/entity/ZtNotice.java
@@ -0,0 +1,49 @@
+package com.sa.zentao.entity;
+
+import java.time.LocalDateTime;
+import java.io.Serializable;
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ *
+ *
+ *
+ *
+ * @author gqb
+ * @since 2024-12-26
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class ZtNotice implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+
+ private String name;
+
+ private String remark;
+
+ private String title;
+
+ private Date createDate;
+
+ private String createUser;
+
+ /**
+ * 最后生效日期
+ */
+ private Date loseDate;
+
+ private String objectType;
+
+ private Integer objectId;
+ // 0 正常 1 失效
+ private Integer flag;
+
+}
diff --git a/src/main/java/com/sa/zentao/entity/ZtRelease.java b/src/main/java/com/sa/zentao/entity/ZtRelease.java
new file mode 100644
index 0000000..2226ca7
--- /dev/null
+++ b/src/main/java/com/sa/zentao/entity/ZtRelease.java
@@ -0,0 +1,95 @@
+package com.sa.zentao.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import java.time.LocalDate;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import java.util.Date;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ *
+ *
+ *
+ *
+ * @author gqb
+ * @since 2024-12-26
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class ZtRelease implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+
+ private String project;
+
+ private Integer product;
+
+ private String branch;
+
+ private Integer shadow;
+
+ private String build;
+ @TableField("`name`")
+ private String name;
+
+ private String marker;
+
+ private Date date;
+
+ private String stories;
+
+ private String bugs;
+
+ @TableField("leftBugs")
+ private String leftbugs;
+ @TableField("`desc`")
+ private String desc;
+
+ private String mailto;
+
+ private String notify;
+ //reviewing待评审
+ //waitRelease 待发布
+ //released 发不成功
+ //close 发布失败
+ @TableField("`status`")
+ private String status;
+
+ @TableField("subStatus")
+ private String substatus;
+
+ @TableField("createdBy")
+ private String createdby;
+
+ @TableField("createdDate")
+ private Date createddate;
+
+ private String deleted;
+
+ private String executions;
+ @TableField("`level`")
+ private String level;
+
+ private String danger;
+
+ private String assignedTo;
+
+ private Date releaseDate;
+
+ private String noticeTitle;
+
+ private String noticeContent;
+
+
+ private String failRemark;
+
+ private String releaseFailRemark;
+}
diff --git a/src/main/java/com/sa/zentao/entity/ZtReleaseDetails.java b/src/main/java/com/sa/zentao/entity/ZtReleaseDetails.java
new file mode 100644
index 0000000..a8bdd0f
--- /dev/null
+++ b/src/main/java/com/sa/zentao/entity/ZtReleaseDetails.java
@@ -0,0 +1,36 @@
+package com.sa.zentao.entity;
+
+import java.io.Serializable;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ *
+ *
+ *
+ *
+ * @author gqb
+ * @since 2024-12-26
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class ZtReleaseDetails implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+
+ private Integer releaseId;
+
+ private Integer objectId;
+
+ private String objectType;
+ // released已发布 closed 关闭
+ private String status;
+
+
+}
diff --git a/src/main/java/com/sa/zentao/entity/ZtStory.java b/src/main/java/com/sa/zentao/entity/ZtStory.java
index c015165..1ad3365 100644
--- a/src/main/java/com/sa/zentao/entity/ZtStory.java
+++ b/src/main/java/com/sa/zentao/entity/ZtStory.java
@@ -192,5 +192,11 @@ public class ZtStory implements Serializable {
//1通过 2不通过
private Integer ysFlag;
+ private String ysRemark;
+
private Integer userStory;
+
+ private String ysUser;
+
+ private Integer taskCount;
}
diff --git a/src/main/java/com/sa/zentao/entity/ZtStoryFeedback.java b/src/main/java/com/sa/zentao/entity/ZtStoryFeedback.java
index 43b1784..9150243 100644
--- a/src/main/java/com/sa/zentao/entity/ZtStoryFeedback.java
+++ b/src/main/java/com/sa/zentao/entity/ZtStoryFeedback.java
@@ -64,10 +64,10 @@ public class ZtStoryFeedback implements Serializable {
private String assignedTo;
private String spec;
- // wait doing finish closed
+ // wait doing finished closed
+
private String status;
- private Integer finishDate;
private String fileUrl;
@@ -77,4 +77,13 @@ public class ZtStoryFeedback implements Serializable {
private String closeRemark;
private Integer product;
+
+ //预计完成时间
+ private Date planFinishDate;
+
+ private Date finishDate;
+ //响应时间 处理时间
+ private Date handDate;
+ //关闭日期
+ private Date closeDate;
}
diff --git a/src/main/java/com/sa/zentao/entity/ZtStoryUser.java b/src/main/java/com/sa/zentao/entity/ZtStoryUser.java
index cffbcb1..831caf3 100644
--- a/src/main/java/com/sa/zentao/entity/ZtStoryUser.java
+++ b/src/main/java/com/sa/zentao/entity/ZtStoryUser.java
@@ -63,13 +63,14 @@ public class ZtStoryUser implements Serializable {
private Integer pri;
private Float estimate;
- //wait active finished closed
+ // active finished closed //reviewing 评审中 active 激活 draft 草稿
private String status;
-
+// reviewing
@TableField("subStatus")
private String substatus;
private String color;
+ //closed 关闭 wait 初始化 projected 已立项 developing 研发中 developed 研发完毕 testing 测试中 tested测试完毕 released已发布 verified已验收 closed 已关闭
private String stage;
diff --git a/src/main/java/com/sa/zentao/entity/ZtStoryreview.java b/src/main/java/com/sa/zentao/entity/ZtStoryreview.java
index e44df4b..66c5b6e 100644
--- a/src/main/java/com/sa/zentao/entity/ZtStoryreview.java
+++ b/src/main/java/com/sa/zentao/entity/ZtStoryreview.java
@@ -32,7 +32,9 @@ public class ZtStoryreview implements Serializable {
@TableField("reviewDate")
private Date reviewdate;
-
+ //story 需求, userStory 用户需求 feedback 问题反馈
+ @TableField("type")
+ private String type;
public String getKey(){
return version+"-"+story;
diff --git a/src/main/java/com/sa/zentao/entity/ZtTask.java b/src/main/java/com/sa/zentao/entity/ZtTask.java
index af9b860..41bad97 100644
--- a/src/main/java/com/sa/zentao/entity/ZtTask.java
+++ b/src/main/java/com/sa/zentao/entity/ZtTask.java
@@ -28,6 +28,9 @@ public class ZtTask implements Serializable {
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
+ //审核拒绝原因
+ private String approvalRemark;
+
private Integer project;
private Integer parent;
@@ -64,15 +67,15 @@ public class ZtTask implements Serializable {
//预计工时 新增
private Float estimate;
- //总计多少小时
+ //总计多少小时 用了
private Float consumed;
//剩余 开发
@TableField("`left`")
private Float left;
- //预计完成
+ //deadline 预计完成 estStarted预计开始
private Date deadline;
- //pause 暂停 cancel取消 closed 关闭 done 完成
+ //pause 暂停 cancel取消 closed 关闭 done 完成 wait reviewing待评审 doing
@TableField("`status`")
private String status;
@@ -102,7 +105,7 @@ public class ZtTask implements Serializable {
//预计开始
@TableField("estStarted")
private Date estStarted;
-
+ //真实开始
@TableField("realStarted")
private Date realstarted;
@@ -166,4 +169,8 @@ public class ZtTask implements Serializable {
private String vision;
private String files;
+
+ private String reviewingUser;
+
+ private Long deadlineTime;
}
diff --git a/src/main/java/com/sa/zentao/entity/ZtUser.java b/src/main/java/com/sa/zentao/entity/ZtUser.java
index 17b3908..4db5041 100644
--- a/src/main/java/com/sa/zentao/entity/ZtUser.java
+++ b/src/main/java/com/sa/zentao/entity/ZtUser.java
@@ -129,4 +129,6 @@ public class ZtUser implements Serializable {
@TableField(exist = false)
private String code;
+ private String color;
+
}
diff --git a/src/main/java/com/sa/zentao/enums/ActionStatus.java b/src/main/java/com/sa/zentao/enums/ActionStatus.java
index f34bc5c..2cd9f64 100644
--- a/src/main/java/com/sa/zentao/enums/ActionStatus.java
+++ b/src/main/java/com/sa/zentao/enums/ActionStatus.java
@@ -25,6 +25,8 @@ public enum ActionStatus {
FB(18, "fb","发布"),
QR(19, "qr","确认"),
+ KSCE(21, "tested","开始测试"),
+ CSWC(20, "tested","测试完成"),
LOGIN(100, "login","登录"),
;
diff --git a/src/main/java/com/sa/zentao/enums/FileTypes.java b/src/main/java/com/sa/zentao/enums/FileTypes.java
new file mode 100644
index 0000000..a2314b6
--- /dev/null
+++ b/src/main/java/com/sa/zentao/enums/FileTypes.java
@@ -0,0 +1,42 @@
+package com.sa.zentao.enums;
+
+import com.baomidou.mybatisplus.annotation.EnumValue;
+
+public enum FileTypes {
+
+ task("task","任务"),
+ story("story", "需求"),
+ bug("bug", "BUG"),
+ userStory("userStory", "用户需求"),
+ feedbackStory("feedbackStory", "问题反馈"),
+ ywTask("ywTask", "运维任务"),
+
+ ;
+
+ @EnumValue
+ private String code;
+ private String value;
+
+ private FileTypes(String code, String value) {
+ this.code = code;
+ this.value = value;
+ }
+
+ public String getCode() {
+ return this.code;
+ }
+
+ public String getValue() {
+ return this.value;
+ }
+
+ public static FileTypes transferType(String code){
+ FileTypes[] values = values();
+ for (FileTypes v:values ) {
+ if(v.code.equals(code)){
+ return v;
+ }
+ }
+ return null;
+ }
+}
diff --git a/src/main/java/com/sa/zentao/enums/StoryStageEnums.java b/src/main/java/com/sa/zentao/enums/StoryStageEnums.java
new file mode 100644
index 0000000..0800396
--- /dev/null
+++ b/src/main/java/com/sa/zentao/enums/StoryStageEnums.java
@@ -0,0 +1,37 @@
+package com.sa.zentao.enums;
+
+import com.baomidou.mybatisplus.annotation.EnumValue;
+
+public enum StoryStageEnums {
+ //closed 关闭 wait 初始化 projected 已立项 developing 研发中 developed 研发完毕 testing 测试中
+ // tested测试完毕 released已发布 verified已验收 closed 已关闭
+
+ closed(1, "closed","关闭"),
+ wait(2, "wait","初始化"),
+ projected(3, "projected","已立项"),
+ developing(4, "developing","研发中"),
+ testing(5, "testing","测试中"),
+ tested(6, "tested","测试完毕"),
+ released(7, "released","已发布"),
+ verified(8, "verified","已验收"),
+ ;
+
+
+ private int code;
+ @EnumValue
+ private String value;
+ private String desc;
+ private StoryStageEnums(int code, String value,String desc) {
+ this.code = code;
+ this.value = value;
+ this.desc=desc;
+ }
+
+ public int getCode() {
+ return this.code;
+ }
+
+ public String getValue() {
+ return this.value;
+ }
+}
diff --git a/src/main/java/com/sa/zentao/enums/TaskStatus.java b/src/main/java/com/sa/zentao/enums/TaskStatus.java
new file mode 100644
index 0000000..80afd93
--- /dev/null
+++ b/src/main/java/com/sa/zentao/enums/TaskStatus.java
@@ -0,0 +1,44 @@
+package com.sa.zentao.enums;
+
+import com.baomidou.mybatisplus.annotation.EnumValue;
+
+public enum TaskStatus {
+
+ //pause 暂停 cancel取消 closed 关闭 done 完成 wait reviewing待评审 doing
+
+ pause("pause","暂停"),
+ cancel("cancel", "取消"),
+ closed("closed", "关闭"),
+ done("done", "完成"),
+ wait("wait", "准备好"),
+ reviewing("reviewing", "待评审"),
+ doing("doing", "进行中"),
+ ;
+
+ @EnumValue
+ private String code;
+ private String value;
+
+ private TaskStatus(String code, String value) {
+ this.code = code;
+ this.value = value;
+ }
+
+ public String getCode() {
+ return this.code;
+ }
+
+ public String getValue() {
+ return this.value;
+ }
+
+ public static TaskStatus transferType(String code){
+ TaskStatus[] values = values();
+ for (TaskStatus v:values ) {
+ if(v.code.equals(code)){
+ return v;
+ }
+ }
+ return null;
+ }
+}
diff --git a/src/main/java/com/sa/zentao/enums/TaskType.java b/src/main/java/com/sa/zentao/enums/TaskType.java
new file mode 100644
index 0000000..05d0967
--- /dev/null
+++ b/src/main/java/com/sa/zentao/enums/TaskType.java
@@ -0,0 +1,44 @@
+package com.sa.zentao.enums;
+
+import com.baomidou.mybatisplus.annotation.EnumValue;
+
+public enum TaskType {
+
+ design("design","设计"),
+ devel("devel", "开发"),
+ request("request", "需求"),
+ test("test", "测试"),
+ study("study", "研究"),
+ discuss("discuss", "讨论"),
+ ui("ui", "界面"),
+ affair("affair", "事务"),
+ misc("misc", "其他"),
+ ;
+
+ @EnumValue
+ private String code;
+ private String value;
+
+ private TaskType(String code, String value) {
+ this.code = code;
+ this.value = value;
+ }
+
+ public String getCode() {
+ return this.code;
+ }
+
+ public String getValue() {
+ return this.value;
+ }
+
+ public static TaskType transferType(String code){
+ TaskType[] values = values();
+ for (TaskType v:values ) {
+ if(v.code.equals(code)){
+ return v;
+ }
+ }
+ return null;
+ }
+}
diff --git a/src/main/java/com/sa/zentao/enums/UserType.java b/src/main/java/com/sa/zentao/enums/UserType.java
index 930210d..ccbe2b2 100644
--- a/src/main/java/com/sa/zentao/enums/UserType.java
+++ b/src/main/java/com/sa/zentao/enums/UserType.java
@@ -8,6 +8,8 @@ public enum UserType {
XMGLY(2, "项目管理员"),
KFZ(3, "开发者"),
GSGC(4, "公司高层"),
+ CS(5, "测试人员"),
+ YW(6, "运维"),
;
@EnumValue
diff --git a/src/main/java/com/sa/zentao/mapper/ZtFileMapper.java b/src/main/java/com/sa/zentao/mapper/ZtFileMapper.java
new file mode 100644
index 0000000..7f0d6ed
--- /dev/null
+++ b/src/main/java/com/sa/zentao/mapper/ZtFileMapper.java
@@ -0,0 +1,16 @@
+package com.sa.zentao.mapper;
+
+import com.sa.zentao.entity.ZtFile;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author gqb
+ * @since 2024-12-20
+ */
+public interface ZtFileMapper extends BaseMapper {
+
+}
diff --git a/src/main/java/com/sa/zentao/mapper/ZtProjectMapper.java b/src/main/java/com/sa/zentao/mapper/ZtProjectMapper.java
index f8b97b3..43e88d1 100644
--- a/src/main/java/com/sa/zentao/mapper/ZtProjectMapper.java
+++ b/src/main/java/com/sa/zentao/mapper/ZtProjectMapper.java
@@ -1,5 +1,6 @@
package com.sa.zentao.mapper;
+import com.baomidou.dynamic.datasource.annotation.DS;
import com.sa.zentao.dao.ZtProjectDTO;
import com.sa.zentao.entity.ZtProject;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
@@ -29,4 +30,7 @@ public interface ZtProjectMapper extends BaseMapper {
List getProjectByProduct(@Param("qo") ZtProjectQo qo);
List executionListByProduct(@Param("qo")ZtProjectQo qo);
+
+ @DS("slave")
+ ZtProjectDTO selectPrdByName(@Param("name") String name);
}
diff --git a/src/main/java/com/sa/zentao/mapper/ZtProjectstoryMapper.java b/src/main/java/com/sa/zentao/mapper/ZtProjectstoryMapper.java
index abf63cd..8418044 100644
--- a/src/main/java/com/sa/zentao/mapper/ZtProjectstoryMapper.java
+++ b/src/main/java/com/sa/zentao/mapper/ZtProjectstoryMapper.java
@@ -1,7 +1,11 @@
package com.sa.zentao.mapper;
+import com.baomidou.dynamic.datasource.annotation.DS;
import com.sa.zentao.entity.ZtProjectstory;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
/**
*
@@ -13,4 +17,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
*/
public interface ZtProjectstoryMapper extends BaseMapper {
+ @DS("slave")
+ List storyListPrd(@Param("id") Integer id);
+
}
diff --git a/src/main/java/com/sa/zentao/mapper/ZtStoryMapper.java b/src/main/java/com/sa/zentao/mapper/ZtStoryMapper.java
index 6739ae0..5a9c930 100644
--- a/src/main/java/com/sa/zentao/mapper/ZtStoryMapper.java
+++ b/src/main/java/com/sa/zentao/mapper/ZtStoryMapper.java
@@ -1,5 +1,6 @@
package com.sa.zentao.mapper;
+import com.baomidou.dynamic.datasource.annotation.DS;
import com.sa.zentao.dao.ZtStoryDTO;
import com.sa.zentao.entity.ZtStory;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
@@ -22,4 +23,13 @@ public interface ZtStoryMapper extends BaseMapper {
List projectStoryPageList(@Param("qo") ZtProjectQo qo);
+ List allStoryPageList(@Param("qo") ZtProjectQo qo);
+
+ List myStoryPageList(@Param("qo")ZtProjectQo qo);
+
+ @DS("slave")
+ ZtStory getPrdById(@Param("id") Integer id);
+
+
+ List storyPageListByIds(@Param("ids") List ids);
}
diff --git a/src/main/java/com/sa/zentao/mapper/ZtStoryspecMapper.java b/src/main/java/com/sa/zentao/mapper/ZtStoryspecMapper.java
index de9c12f..dfd9fe4 100644
--- a/src/main/java/com/sa/zentao/mapper/ZtStoryspecMapper.java
+++ b/src/main/java/com/sa/zentao/mapper/ZtStoryspecMapper.java
@@ -1,7 +1,11 @@
package com.sa.zentao.mapper;
+import com.baomidou.dynamic.datasource.annotation.DS;
import com.sa.zentao.entity.ZtStoryspec;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
/**
*
@@ -13,4 +17,6 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
*/
public interface ZtStoryspecMapper extends BaseMapper {
+ @DS("slave")
+ List getPrdById(@Param("id") Integer id);
}
diff --git a/src/main/java/com/sa/zentao/mapper/ZtUserMapper.java b/src/main/java/com/sa/zentao/mapper/ZtUserMapper.java
index ff36a6a..2fa2f75 100644
--- a/src/main/java/com/sa/zentao/mapper/ZtUserMapper.java
+++ b/src/main/java/com/sa/zentao/mapper/ZtUserMapper.java
@@ -1,9 +1,12 @@
package com.sa.zentao.mapper;
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.sa.zentao.dao.ZtUserDTO;
import com.sa.zentao.entity.ZtUser;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.sa.zentao.qo.ZtUserQo;
import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
import java.util.List;
@@ -18,4 +21,13 @@ import java.util.List;
public interface ZtUserMapper extends BaseMapper {
List pageList(@Param("qo") ZtUserQo qo);
+
+
+ @DS("slave")
+ @Select("select * from zt_user")
+ List listAll(@Param("qo") ZtUserQo qo);
+
+ @DS("slave")
+ ZtUser selectPrdByName(@Param("name")String userName);
+
}
diff --git a/src/main/java/com/sa/zentao/qo/StoryQo.java b/src/main/java/com/sa/zentao/qo/StoryQo.java
index 70e3cf4..8d18aa8 100644
--- a/src/main/java/com/sa/zentao/qo/StoryQo.java
+++ b/src/main/java/com/sa/zentao/qo/StoryQo.java
@@ -4,6 +4,8 @@ import com.sa.zentao.enums.ActionType;
import lombok.Data;
import lombok.EqualsAndHashCode;
+import java.util.List;
+
@Data
@EqualsAndHashCode(callSuper = false)
public class StoryQo extends BaseQo {
@@ -11,9 +13,15 @@ public class StoryQo extends BaseQo {
private Integer id;
+ private String title;
+
private String userName;
private String module;
private String searchVal;
private Integer productId;
+
+ private String ids;
+
+ private List storyIds;
}
diff --git a/src/main/java/com/sa/zentao/qo/ZtBugQo.java b/src/main/java/com/sa/zentao/qo/ZtBugQo.java
index a2080da..e5bb372 100644
--- a/src/main/java/com/sa/zentao/qo/ZtBugQo.java
+++ b/src/main/java/com/sa/zentao/qo/ZtBugQo.java
@@ -37,7 +37,7 @@ public class ZtBugQo extends BaseQo {
private String step;
- private String assignedto;
+ private String assignedTo;
private String desc;
}
diff --git a/src/main/java/com/sa/zentao/qo/ZtProjectQo.java b/src/main/java/com/sa/zentao/qo/ZtProjectQo.java
index a11fc0f..c92fed9 100644
--- a/src/main/java/com/sa/zentao/qo/ZtProjectQo.java
+++ b/src/main/java/com/sa/zentao/qo/ZtProjectQo.java
@@ -63,5 +63,20 @@ public class ZtProjectQo extends BaseQo {
private Date date;
+ private Integer kfz=0;
+
private List teamList;
+
+ private String searchCode;
+ private String searchValue;
+
+ private String orderName;
+ private String orderSort;
+
+ //0 否 1 是
+ private Integer finishedFlag=0;
+
+ private String ids;
+
+ private List objIds;
}
diff --git a/src/main/java/com/sa/zentao/qo/ZtReleaseQo.java b/src/main/java/com/sa/zentao/qo/ZtReleaseQo.java
new file mode 100644
index 0000000..3ea2279
--- /dev/null
+++ b/src/main/java/com/sa/zentao/qo/ZtReleaseQo.java
@@ -0,0 +1,56 @@
+package com.sa.zentao.qo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+/**
+ *
+ *
+ *
+ *
+ * @author gqb
+ * @since 2024-12-26
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class ZtReleaseQo extends BaseQo {
+
+ private static final long serialVersionUID = 1L;
+
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+
+ private String assignedTo;
+
+ private Integer project;
+ //0 不通过 1通过
+ private Integer revieweResult;
+
+ //发布失败原因
+ private String releaseFailRemark;
+ //失败原因
+ private String failRemark;
+ //标题
+ private String title;
+ //备注
+ private String remark;
+ // 1 推送 2.不推送
+ private Integer pushFlag;
+ //ALL WFB YFB
+ private String searchVal;
+
+ private Integer execution;
+
+ private String name;
+
+ private Integer storyId;
+
+ private List storyList;
+}
diff --git a/src/main/java/com/sa/zentao/service/IZtBugService.java b/src/main/java/com/sa/zentao/service/IZtBugService.java
index 48a1c52..796fa7e 100644
--- a/src/main/java/com/sa/zentao/service/IZtBugService.java
+++ b/src/main/java/com/sa/zentao/service/IZtBugService.java
@@ -32,4 +32,6 @@ public interface IZtBugService extends IService {
PageInfo myBugPageList(ZtProjectQo qo);
ZtBugDTO bugInfoById(Integer id);
+
+ void assignedTo(ZtBugQo qo);
}
diff --git a/src/main/java/com/sa/zentao/service/IZtFileService.java b/src/main/java/com/sa/zentao/service/IZtFileService.java
new file mode 100644
index 0000000..ba49ddb
--- /dev/null
+++ b/src/main/java/com/sa/zentao/service/IZtFileService.java
@@ -0,0 +1,19 @@
+package com.sa.zentao.service;
+
+import com.sa.zentao.entity.ZtFile;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.sa.zentao.enums.FileTypes;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author gqb
+ * @since 2024-12-20
+ */
+public interface IZtFileService extends IService {
+
+
+ void updateFile(String fileIds, Integer objectId, FileTypes type);
+}
diff --git a/src/main/java/com/sa/zentao/service/IZtKanbanlaneService.java b/src/main/java/com/sa/zentao/service/IZtKanbanlaneService.java
index e47cc93..14f1841 100644
--- a/src/main/java/com/sa/zentao/service/IZtKanbanlaneService.java
+++ b/src/main/java/com/sa/zentao/service/IZtKanbanlaneService.java
@@ -40,4 +40,6 @@ public interface IZtKanbanlaneService extends IService {
* @return
*/
public ZtKanbancell getZtKanbanlane(String type, String status, Integer id);
+ //
+ void removeExecutionStory(Integer execution, Integer story);
}
diff --git a/src/main/java/com/sa/zentao/service/IZtNoticeService.java b/src/main/java/com/sa/zentao/service/IZtNoticeService.java
new file mode 100644
index 0000000..3b65681
--- /dev/null
+++ b/src/main/java/com/sa/zentao/service/IZtNoticeService.java
@@ -0,0 +1,16 @@
+package com.sa.zentao.service;
+
+import com.sa.zentao.entity.ZtNotice;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author gqb
+ * @since 2024-12-26
+ */
+public interface IZtNoticeService extends IService {
+
+}
diff --git a/src/main/java/com/sa/zentao/service/IZtProjectService.java b/src/main/java/com/sa/zentao/service/IZtProjectService.java
index a45a5f4..2b9abc8 100644
--- a/src/main/java/com/sa/zentao/service/IZtProjectService.java
+++ b/src/main/java/com/sa/zentao/service/IZtProjectService.java
@@ -85,7 +85,7 @@ public interface IZtProjectService extends IService {
List execTeamList(ZtProjectQo qo);
- Map>> projectTeamTimeWork(ZtProjectQo qo);
+ Map>> projectTeamTimeWork(ZtProjectQo qo);
void editImplement(ZtProjectDTO dto);
@@ -96,4 +96,10 @@ public interface IZtProjectService extends IService {
ZtProjectDTO copyExecInfoById(ZtProjectDTO dto);
List projectByExecution(ZtProjectDTO dto);
+
+ ZtProjectDTO selectPrdByName(String s);
+
+ List execListByProject(Integer project);
+
+ void removeExecutionStory(Integer id);
}
diff --git a/src/main/java/com/sa/zentao/service/IZtProjectstoryService.java b/src/main/java/com/sa/zentao/service/IZtProjectstoryService.java
index bd315fb..3cf1f3b 100644
--- a/src/main/java/com/sa/zentao/service/IZtProjectstoryService.java
+++ b/src/main/java/com/sa/zentao/service/IZtProjectstoryService.java
@@ -3,6 +3,8 @@ package com.sa.zentao.service;
import com.sa.zentao.entity.ZtProjectstory;
import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
/**
*
* 服务类
@@ -13,4 +15,5 @@ import com.baomidou.mybatisplus.extension.service.IService;
*/
public interface IZtProjectstoryService extends IService {
+ List storyListPrd(Integer id);
}
diff --git a/src/main/java/com/sa/zentao/service/IZtReleaseDetailsService.java b/src/main/java/com/sa/zentao/service/IZtReleaseDetailsService.java
new file mode 100644
index 0000000..a94dc1c
--- /dev/null
+++ b/src/main/java/com/sa/zentao/service/IZtReleaseDetailsService.java
@@ -0,0 +1,23 @@
+package com.sa.zentao.service;
+
+import com.sa.zentao.dao.ZtStoryDTO;
+import com.sa.zentao.entity.ZtReleaseDetails;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.sa.zentao.qo.ZtReleaseQo;
+
+import java.util.List;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author gqb
+ * @since 2024-12-26
+ */
+public interface IZtReleaseDetailsService extends IService {
+
+ List releasePageList(ZtReleaseQo qo);
+
+ List storyPageList(ZtReleaseQo qo);
+}
diff --git a/src/main/java/com/sa/zentao/service/IZtReleaseService.java b/src/main/java/com/sa/zentao/service/IZtReleaseService.java
new file mode 100644
index 0000000..ad07cb1
--- /dev/null
+++ b/src/main/java/com/sa/zentao/service/IZtReleaseService.java
@@ -0,0 +1,49 @@
+package com.sa.zentao.service;
+
+import com.github.pagehelper.PageInfo;
+import com.sa.zentao.dao.Result;
+import com.sa.zentao.dao.ZtReleaseDTO;
+import com.sa.zentao.dao.ZtStoryDTO;
+import com.sa.zentao.entity.ZtRelease;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.sa.zentao.qo.ZtReleaseQo;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author gqb
+ * @since 2024-12-26
+ */
+public interface IZtReleaseService extends IService {
+
+ void addRelease(ZtReleaseDTO dto);
+
+
+ void modifyRelease(ZtReleaseDTO dto);
+
+ PageInfo pageList(ZtReleaseQo qo);
+
+ void assignedTo(ZtReleaseQo dto);
+
+ void userReview(ZtReleaseQo dto);
+
+ void release(ZtReleaseQo dto);
+
+
+ List