From 462460ee72b1a60afedca376f9e9209911bdf078 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=83=AD=E5=85=B6=E5=85=B5?= Date: Tue, 18 Feb 2025 09:13:28 +0800 Subject: [PATCH] =?UTF-8?q?bug=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../zentao/controller/CommonsController.java | 132 ++++++++++-------- .../controller/ZtProductController.java | 6 + .../controller/ZtProjectController.java | 11 ++ .../zentao/controller/ZtUserController.java | 4 +- .../java/com/sa/zentao/dao/ZtProjectDTO.java | 3 +- .../java/com/sa/zentao/dao/ZtReleaseDTO.java | 4 +- .../com/sa/zentao/dao/ZtStoryFeedbackDTO.java | 3 +- .../sa/zentao/entity/BaseSalaryToVxError.java | 66 +++++++++ .../java/com/sa/zentao/entity/ZtRelease.java | 2 + .../sa/zentao/service/IZtProductService.java | 1 + .../sa/zentao/service/IZtProjectService.java | 2 + .../java/com/sa/zentao/service/VxService.java | 82 +++++++++++ .../zentao/service/impl/IZtCountService.java | 95 ++++++++----- .../service/impl/ZtCronDevopsServiceImpl.java | 2 +- .../service/impl/ZtProductServiceImpl.java | 29 +++- .../service/impl/ZtProjectServiceImpl.java | 38 ++++- .../service/impl/ZtReleaseServiceImpl.java | 2 +- .../impl/ZtStoryFeedbackServiceImpl.java | 39 +++++- .../service/impl/ZtStoryServiceImpl.java | 30 ++-- .../service/impl/ZtStoryUserServiceImpl.java | 2 +- .../service/impl/ZtTaskServiceImpl.java | 30 ++-- .../java/com/sa/zentao/utils/HttpRequest.java | 115 +++++++++++++++ src/main/resources/application-dev.yml | 13 +- src/main/resources/application-local.yml | 12 +- src/main/resources/mapper/ZtBugMapper.xml | 20 +-- .../mapper/ZtDevelopFeedbackMapper.xml | 49 +++++++ src/main/resources/mapper/ZtMeetingMapper.xml | 42 ++++++ 27 files changed, 691 insertions(+), 143 deletions(-) create mode 100644 src/main/java/com/sa/zentao/entity/BaseSalaryToVxError.java create mode 100644 src/main/java/com/sa/zentao/service/VxService.java create mode 100644 src/main/java/com/sa/zentao/utils/HttpRequest.java create mode 100644 src/main/resources/mapper/ZtDevelopFeedbackMapper.xml create mode 100644 src/main/resources/mapper/ZtMeetingMapper.xml diff --git a/src/main/java/com/sa/zentao/controller/CommonsController.java b/src/main/java/com/sa/zentao/controller/CommonsController.java index a951b31..0c6e90f 100644 --- a/src/main/java/com/sa/zentao/controller/CommonsController.java +++ b/src/main/java/com/sa/zentao/controller/CommonsController.java @@ -8,6 +8,7 @@ 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.service.VxService; import com.sa.zentao.utils.DateUtils; import com.sa.zentao.utils.UploadUtil; import jakarta.servlet.http.HttpServletRequest; @@ -105,6 +106,9 @@ public class CommonsController { } } + + + @PostMapping("/removeFile") public Result removeFile( UploadDTO file){ ZtFile ztFile = this.fileService.getById(file.getId()); @@ -125,11 +129,18 @@ public class CommonsController { return Result.success(list); } + @Autowired + VxService vxxervice; @GetMapping("/test") public Result upload(){ - downLoad("http://192.168.1.161:8088/file-download-1.html"); + downLoad("http://192.168.1.161:8088/file-download-1.html"); + + vxxervice.sendMessageToVx("GuoQiBing","测试消息",new Date()); + return Result.success(); + + } @PostMapping("/downLoad") @@ -175,72 +186,77 @@ public class CommonsController { - public String downLoad(String u){ + public ZtFile downLoad(String u){ + String os = System.getProperty("os.name"); + String path=null; + if (os.toLowerCase().startsWith("win")) { //如果是Windows系统 + log.info("win"); + path=windowsFilePath ; + }else{ //linux和mac系统 + log.info("linux"); + path=linuxFilePath+"/"; + } + int i = u.lastIndexOf("?"); + int i2 = u.lastIndexOf("/"); + String uname = u.substring(i2+1, i); + downloadByIO(u,path,uname); + String ext = u.substring(u.lastIndexOf(".") + 1).toLowerCase(); StringBuffer buffername = new StringBuffer(u.substring(u.lastIndexOf("/")+1)); + ZtFile f=new ZtFile(); + f.setAddedby(RiskUserThreadLocal.get()==null?null:RiskUserThreadLocal.get().getName()); + f.setAddeddate(new Date()); + f.setDeleted("0"); + f.setExtension(uname.substring(uname.lastIndexOf(".")+1, uname.length())); + f.setTitle(uname); + f.setSize(0); + f.setPathname(baseUrl+"/zentao/img/"+uname); + fileService.save(f); + return f; + } - URL url = null; + public static void downloadByIO(String url, String saveDir, String fileName) { + BufferedOutputStream bos = null; + InputStream is = 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 = outStream.toByteArray(); - 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+"/"; + byte[] buff = new byte[8192]; + is = new URL(url).openStream(); + File file = new File(saveDir, fileName); + file.getParentFile().mkdirs(); + bos = new BufferedOutputStream(new FileOutputStream(file)); + int count = 0; + while ((count = is.read(buff)) != -1) { + bos.write(buff, 0, count); } - - - // 使用文件名在服务器端创建文件 - java.nio.file.Path path = java.nio.file.Paths.get(os + fName); - - // 写入文件到服务器的指定目录 - java.nio.file.Files.write(path, bytes); - - String fileAbsolutePath =baseUrl+"/zentao/img/"+fName; - - System.out.print(fileAbsolutePath); - - - outStream.close(); - inputStream.close(); - return fileAbsolutePath; - } catch (Exception e) { + } catch (IOException e) { e.printStackTrace(); + } finally { + if (is != null) { + try { + is.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + if (bos != null) { + try { + bos.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } } - return null; } - + public static void main(String[] args) { + String u ="http://file-gk.sinoassist.com:38888/group1/M00/95/9E/wKgDd2etgTmAcL-gABfjLU1YfoI166.jpg?date=2025-02-13"; + int i = u.lastIndexOf("?"); + int i2 = u.lastIndexOf("/"); + String substring = u.substring(i2+1, i); + String uname="wKgDd2etgTmAcL-gABfjLU1YfoI166.jpg"; + String substring1 = uname.substring(uname.lastIndexOf(".")+1, uname.length()); + System.out.print(substring1); + } } diff --git a/src/main/java/com/sa/zentao/controller/ZtProductController.java b/src/main/java/com/sa/zentao/controller/ZtProductController.java index 8e975b9..daaf5a1 100644 --- a/src/main/java/com/sa/zentao/controller/ZtProductController.java +++ b/src/main/java/com/sa/zentao/controller/ZtProductController.java @@ -79,6 +79,12 @@ public class ZtProductController { public Result> productList(@RequestBody ZtProjectQo qo){ return Result.success(ztProductService.productList(qo)); } + + @RequestMapping(value = "/myProductList", method = RequestMethod.POST, produces = "application/json; charset=UTF-8") + public Result> myProductList(@RequestBody ZtProjectQo qo){ + return Result.success(ztProductService.myProductList(qo)); + } + @RequestMapping(value = "/productListByProductId", method = RequestMethod.POST, produces = "application/json; charset=UTF-8") public Result> productListByProductId(@RequestBody ZtProjectQo qo){ return Result.success(ztProductService.productListByProductId diff --git a/src/main/java/com/sa/zentao/controller/ZtProjectController.java b/src/main/java/com/sa/zentao/controller/ZtProjectController.java index 7599ce0..c8bfea2 100644 --- a/src/main/java/com/sa/zentao/controller/ZtProjectController.java +++ b/src/main/java/com/sa/zentao/controller/ZtProjectController.java @@ -324,4 +324,15 @@ public class ZtProjectController { + //迭代列表根据项目 + @RequestMapping(value = "/projectProductByExecution", method = RequestMethod.POST, produces = "application/json; charset=UTF-8") + public Result projectProductByExecution(@RequestBody ZtProjectQo qo){ + + ZtProjectDTO p = this.ztProjectService.projectProductByExecution(qo.getExecution()); + return Result.success(p); + } + + + + } diff --git a/src/main/java/com/sa/zentao/controller/ZtUserController.java b/src/main/java/com/sa/zentao/controller/ZtUserController.java index 56be578..05adc42 100644 --- a/src/main/java/com/sa/zentao/controller/ZtUserController.java +++ b/src/main/java/com/sa/zentao/controller/ZtUserController.java @@ -81,9 +81,9 @@ public class ZtUserController { LambdaQueryWrapper eq = new QueryWrapper() .lambda().eq(ZtUser::getDeleted, "0"); if(!StringUtils.isEmpty(dto.getName())){ - eq.like(ZtUser::getAccount,dto.getName()) + eq.and(e->e.like(ZtUser::getAccount,dto.getName()) .or().like(ZtUser::getNickname,dto.getName()) - .or().like(ZtUser::getPinyin,dto.getName()) + .or().like(ZtUser::getPinyin,dto.getName())) ; } if("execution".equals(dto.getType())){ diff --git a/src/main/java/com/sa/zentao/dao/ZtProjectDTO.java b/src/main/java/com/sa/zentao/dao/ZtProjectDTO.java index 12c5584..da5d711 100644 --- a/src/main/java/com/sa/zentao/dao/ZtProjectDTO.java +++ b/src/main/java/com/sa/zentao/dao/ZtProjectDTO.java @@ -215,8 +215,9 @@ public class ZtProjectDTO implements Serializable { private Integer productId; private String productName; + //迭代id private Integer excludeId; - + private String executionName; private List teamList; diff --git a/src/main/java/com/sa/zentao/dao/ZtReleaseDTO.java b/src/main/java/com/sa/zentao/dao/ZtReleaseDTO.java index 0775155..a44292f 100644 --- a/src/main/java/com/sa/zentao/dao/ZtReleaseDTO.java +++ b/src/main/java/com/sa/zentao/dao/ZtReleaseDTO.java @@ -69,7 +69,7 @@ public class ZtReleaseDTO implements Serializable { @TableField("createdBy") private String createdby; - + private String createdbyName; @TableField("createdDate") private Date createddate; @@ -97,5 +97,7 @@ public class ZtReleaseDTO implements Serializable { private String releaseFailRemark; + private String releaseUser; + private List details; } diff --git a/src/main/java/com/sa/zentao/dao/ZtStoryFeedbackDTO.java b/src/main/java/com/sa/zentao/dao/ZtStoryFeedbackDTO.java index 371aef4..1d23120 100644 --- a/src/main/java/com/sa/zentao/dao/ZtStoryFeedbackDTO.java +++ b/src/main/java/com/sa/zentao/dao/ZtStoryFeedbackDTO.java @@ -40,6 +40,8 @@ public class ZtStoryFeedbackDTO implements Serializable { */ private String files; + private String urls; + private String openedBy; private String openedByName; @@ -99,5 +101,4 @@ public class ZtStoryFeedbackDTO implements Serializable { private String weixin; - private String urls; } diff --git a/src/main/java/com/sa/zentao/entity/BaseSalaryToVxError.java b/src/main/java/com/sa/zentao/entity/BaseSalaryToVxError.java new file mode 100644 index 0000000..92566de --- /dev/null +++ b/src/main/java/com/sa/zentao/entity/BaseSalaryToVxError.java @@ -0,0 +1,66 @@ +package com.sa.zentao.entity; + +import com.alibaba.excel.annotation.format.DateTimeFormat; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author gqb + * @since 2023-03-03 + */ +@Data +@EqualsAndHashCode(callSuper = false) +public class BaseSalaryToVxError implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + /** + * 员工id + */ + private String staffNo; + /** + * 员工name + */ + private String staffName; + /** + * 错误时间 + */ + @DateTimeFormat("yyyy-MM-dd HH:mm:ss") + private Date quitDate; + /** + * 错误时间 + */ + @DateTimeFormat("yyyy-MM-dd") + private Date inquireDate; + /** + * 异常code + */ + private String errorCode; + /** + * 异常原因 + */ + private String errorMsg; + /** + * 重试次数 + */ + private Integer againCount; + /** + * 0正常 1.删除 + */ + private Integer deleteFlag; + +} diff --git a/src/main/java/com/sa/zentao/entity/ZtRelease.java b/src/main/java/com/sa/zentao/entity/ZtRelease.java index e584065..dea08ff 100644 --- a/src/main/java/com/sa/zentao/entity/ZtRelease.java +++ b/src/main/java/com/sa/zentao/entity/ZtRelease.java @@ -92,4 +92,6 @@ public class ZtRelease implements Serializable { private String failRemark; private String releaseFailRemark; + + private String releaseUser; } diff --git a/src/main/java/com/sa/zentao/service/IZtProductService.java b/src/main/java/com/sa/zentao/service/IZtProductService.java index 6755f42..b72c14e 100644 --- a/src/main/java/com/sa/zentao/service/IZtProductService.java +++ b/src/main/java/com/sa/zentao/service/IZtProductService.java @@ -44,4 +44,5 @@ public interface IZtProductService extends IService { Map selectMapProduct(); + List myProductList(ZtProjectQo qo); } diff --git a/src/main/java/com/sa/zentao/service/IZtProjectService.java b/src/main/java/com/sa/zentao/service/IZtProjectService.java index 7477916..74c0acd 100644 --- a/src/main/java/com/sa/zentao/service/IZtProjectService.java +++ b/src/main/java/com/sa/zentao/service/IZtProjectService.java @@ -111,4 +111,6 @@ public interface IZtProjectService extends IService { ZtProjectDTO selectPrdById(Integer project); List performanceCount(Date startDate, Date endDate); + + ZtProjectDTO projectProductByExecution(String execution); } diff --git a/src/main/java/com/sa/zentao/service/VxService.java b/src/main/java/com/sa/zentao/service/VxService.java new file mode 100644 index 0000000..5c062ad --- /dev/null +++ b/src/main/java/com/sa/zentao/service/VxService.java @@ -0,0 +1,82 @@ +package com.sa.zentao.service; + +import com.alibaba.excel.util.StringUtils; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.sa.zentao.conf.SpringUtil; +import com.sa.zentao.utils.HttpRequest; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.core.env.Environment; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpHeaders; +import org.springframework.http.MediaType; +import org.springframework.stereotype.Service; +import org.springframework.web.client.RestTemplate; + +import java.io.IOException; +import java.util.Date; +import java.util.HashMap; +import java.util.Map; + +@Slf4j +@Service +public class VxService { + + @Value("${vx.corpid}") + private static String corpid; + + @Value("${vx.dkcorpsecret}") + private static String dkcorpsecret="1MWQxoL8QtypfdnKJqdo3pGdZDAmdhqTF_MaWm3rVjs"; + + @Value("${vx.salaryCorpsecretApp}") + private static String salaryCorpsecretApp; + + + public void sendMessageToVx(String vxId, String text, Date date) { + Environment bean = SpringUtil.getBean(Environment.class); + + + if (corpid == null) { + corpid = bean.getProperty("vx.corpid"); + dkcorpsecret = bean.getProperty("vx.dkcorpsecret"); + salaryCorpsecretApp = bean.getProperty("vx.salaryCorpsecretApp"); + } + String url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=" + corpid + "&corpsecret=" + salaryCorpsecretApp; + try { + String data = HttpRequest.sendGet(url, null); + JSONObject object = JSON.parseObject(data); + String access_token = object.getString("access_token"); + + url = "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=" + access_token; + + Map map = new HashMap(); + map.put("touser", vxId); + map.put("agentid", 3010185); + map.put("safe", 0); + map.put("enable_id_trans", 0); + map.put("enable_duplicate_check", 0); + map.put("msgtype","text"); + Map texts = new HashMap(); + texts.put("content", text); + map.put("text", texts); + log.info("调用微信start==",JSON.toJSONString(map)); + String s = JSONPost(url, map); + log.info("调用微信end==",s); + } catch (IOException e) { + e.printStackTrace(); + log.error("",e); + } + } + + public static String JSONPost(String url, Map map) { + RestTemplate restTemplate = new RestTemplate(); + HttpHeaders requestHeaders = new HttpHeaders(); + // 重点是配置请求头内容类型为:"application/json" + requestHeaders.setContentType(MediaType.APPLICATION_JSON); + HttpEntity> r = new HttpEntity<>(map, requestHeaders); + + // 请求服务端添加玩家 + return restTemplate.postForObject(url, r, String.class); + } +} diff --git a/src/main/java/com/sa/zentao/service/impl/IZtCountService.java b/src/main/java/com/sa/zentao/service/impl/IZtCountService.java index 43b6196..cd2b79f 100644 --- a/src/main/java/com/sa/zentao/service/impl/IZtCountService.java +++ b/src/main/java/com/sa/zentao/service/impl/IZtCountService.java @@ -58,6 +58,18 @@ public class IZtCountService { @Autowired private IZtCronDevopsService cronDevopsService; + @Autowired + private IZtProjectproductService projectproductService; + @Autowired + private IZtProductService productService; + @Autowired + private IZtStoryreviewService storyreviewService; + + @Autowired + private IZtReleaseService releaseService; + @Autowired + private IZtReleaseDetailsService releaseDetailsService; + public Map todayWorkCount(ZtCaseDTO dto) { String name = RiskUserThreadLocal.get().getName(); @@ -94,8 +106,17 @@ public class IZtCountService { long resolvedBugCount = bugService.count(new QueryWrapper().lambda().eq(ZtBug::getAssignedTo, name) .eq(ZtBug::getStatus, "resolved") ); + UserType userType = RiskUserThreadLocal.get().getUserType(); + if(userType==UserType.CS){ + List myBugList = bugService.list(new QueryWrapper().lambda() + .ne(ZtBug::getStatus, "closed") + .and(e->e.eq(ZtBug::getAssignedTo, name).or().eq(ZtBug::getOpenedby, name)) + ); + result.put("bugCount", myBugList.stream() .map(o->o.getId()+"").collect(Collectors.joining(","))); + }else{ + result.put("bugCount", bugList.stream().filter(o->o.getStatus().equals("active")) .map(o->o.getId()+"").collect(Collectors.joining(","))); + } - result.put("bugCount", bugList.stream().filter(o->o.getStatus().equals("active")) .map(o->o.getId()+"").collect(Collectors.joining(","))); result.put("bugTimeOutCount", bugList.stream().filter(o -> o.getDeadline() != null && o.getDeadline().getTime() < date.getTime()) .filter(o -> "active".equalsIgnoreCase(o.getStatus())) .map(o->o.getId()+"").collect(Collectors.joining(","))); @@ -145,12 +166,7 @@ public class IZtCountService { return result; } - @Autowired - private IZtProjectproductService projectproductService; - @Autowired - private IZtProductService productService; - @Autowired - private IZtStoryreviewService storyreviewService; + public ZtStoryCountDTO storyCount(ZtCaseDTO dto) { LoginRiskUser loginRiskUser = RiskUserThreadLocal.get(); @@ -231,7 +247,7 @@ public class IZtCountService { .filter(o -> o.getStage().equals("testing")).map(o->o.getId()+"").collect(Collectors.joining(","))); // developing 研发中 developed 研发完毕 testing 测试中 tested测试完毕 result.setJxzCount(ztStory.stream().filter(o -> "active".equals(o.getStatus())) - .filter(o -> Arrays.asList("developing","developed","testing","tested").contains(o.getStage()) + .filter(o -> Arrays.asList("developing").contains(o.getStage()) ).map(o->o.getId()+"").collect(Collectors.joining(","))); @@ -420,9 +436,6 @@ public class IZtCountService { result.setTestingCount(ztStory.stream().filter(o -> "active".equals(o.getStatus())) .filter(o -> o.getStage().equals("testing")) .map(o->o.getId()+"").collect(Collectors.joining(","))); - result.setDpsCount(ztStory.stream().filter(o -> "reviewing".equals(o.getStatus())) .map(o->o.getId()+"").collect(Collectors.joining(","))); - result.setPstgCount(ztStory.stream().filter(o -> "active".equals(o.getStatus())) - .filter(o -> o.getStage().equals("wait")) .map(o->o.getId()+"").collect(Collectors.joining(","))); result.setJxzCount(ztStory.stream().filter(o -> "active".equals(o.getStatus())) .filter(o -> o.getStage().equals("developing")) .map(o->o.getId()+"").collect(Collectors.joining(","))); result.setYqCount(ztStory.stream().filter(o -> "active".equals(o.getStatus())) @@ -519,10 +532,10 @@ public class IZtCountService { ByteArrayOutputStream os = new ByteArrayOutputStream(); // ExcelWriter excelWriter = EasyExcel.write(os).build(); - WriteSheet 统计 = EasyExcel.writerSheet("统计"). - registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()) - .needHead(Boolean.TRUE) - .build(); +// WriteSheet 统计 = EasyExcel.writerSheet("统计"). +// registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()) +// .needHead(Boolean.TRUE) +// .build(); @@ -1001,31 +1014,34 @@ public class IZtCountService { //项目列表 List projectList = this.projectproductService.list(new QueryWrapper().lambda() .in(ZtProjectproduct::getProduct, products.stream().map(o -> o.getId()).collect(Collectors.toList()))); - if(CollectionUtils.isEmpty(projectList)){ - return zeroMap(map,objMap); - } +// if(CollectionUtils.isEmpty(projectList)){ +// return zeroMap(map,objMap); +// } + + List releases = this.releaseService.list(new QueryWrapper().lambda() + .eq(ZtRelease::getStatus,"released") + .in(ZtRelease::getProject, projectList.stream().map(o -> o.getProject()).collect(Collectors.toList()))); - List list = this.projectstoryService.list(new QueryWrapper().lambda() - .in(ZtProjectstory::getProject, projectList.stream().map(o->o.getProject()).collect(Collectors.toList()))); - - if(CollectionUtils.isEmpty(list)){ - return zeroMap(map,objMap); - } - List ztStories = this.storyService.list(new QueryWrapper().lambda().in(ZtStory::getId, - list.stream().map(o -> o.getStory()).collect(Collectors.toList())).ne(ZtStory::getStatus,"closed")); + List ztStories = this.storyService.list(new QueryWrapper().lambda().in(ZtStory::getProduct, + products.stream().map(o -> o.getId()).collect(Collectors.toList()))); if(CollectionUtils.isEmpty(ztStories)){ return zeroMap(map,objMap); } - long count = ztStories.stream().filter(o -> !"closed".equals(o.getStatus())).count(); - long finish = ztStories.stream().filter(o -> "verified".equals(o.getStage()) && o.getYsFlag() == 1).count(); + long count = ztStories.stream().count(); + long finish = ztStories.stream().filter(o -> "verified".equals(o.getStage()) + ||("closed".equals(o.getStage())) + ).count(); objMap.put("count",count); objMap.put("finish",finish); objMap.put("balance",count-finish); map.put("story",objMap); + if(CollectionUtils.isEmpty(projectList)){ + return zeroTaskMap(map,objMap); + } //项目成员 项目迭代下所有人员 projectList 项目列表 List exexList = this.executionprojectService.list(new QueryWrapper().lambda() .in(ZtExecutionproject::getProject, projectList.stream().map(o -> o.getProject()).collect(Collectors.toList()))); @@ -1056,23 +1072,32 @@ public class IZtCountService { objMap.put("wait",taskList.stream().filter(o->"wait".equals(o.getStatus())).count()); objMap.put("process",taskList.stream().filter(o->"doing".equals(o.getStatus())).count()); - objMap.put("finish",taskList.stream().filter(o->"done".equals(o.getStatus())).count()); + objMap.put("finish",taskList.stream().filter(o->"done".equals(o.getStatus())||"closed".equals(o.getStatus())).count()); objMap.put("totalCount",taskList.size()); map.put("task",objMap); - List bugList = this.bugService.list(new QueryWrapper().lambda().eq(ZtBug::getProject, id)); + List bugList = this.bugService.list(new QueryWrapper().lambda().in(ZtBug::getProduct, products.stream().map(o->o.getId()).collect(Collectors.toList()))); objMap=new HashMap<>(); - objMap.put("totalBug",bugList.stream().filter(o->!o.getStatus().equals("closed")).count()); - objMap.put("solve",bugList.stream().filter(o->o.getStatus().equals("resolved")).count()); + objMap.put("totalBug",bugList.stream().count()); + objMap.put("solve",bugList.stream().filter(o->o.getStatus().equals("resolved")||o.getStatus().equals("closed")).count()); objMap.put("noSolve",bugList.stream().filter(o->o.getStatus().equals("active")).count()); map.put("bug",objMap); objMap=new HashMap<>(); - objMap.put("online",ztStories.stream().filter(o->o.getStage().equals("released")||o.getStage().equals("verified")).count()); - objMap.put("ysAll",ztStories.stream().filter(o->o.getStage().equals("verified")).count()); - objMap.put("ysNo",ztStories.stream().filter(o->o.getStage().equals("verified")&&o.getYsFlag()==2).count()); + //查发布 + if(!CollectionUtils.isEmpty(releases)){ + long relaese= this.releaseDetailsService.count(new QueryWrapper().lambda() + .in(ZtReleaseDetails::getReleaseId, releases.stream().map(o -> o.getId()).collect(Collectors.toList())) + .eq(ZtReleaseDetails::getObjectType, "story")); + objMap.put("online",relaese); + }else{ + objMap.put("online",0); + } + + objMap.put("ysAll",ztStories.stream().filter(o->o.getYsFlag()!=null&&o.getYsFlag().intValue()!=0).count()); + objMap.put("ysNo",ztStories.stream().filter(o->o.getYsFlag()!=null&&o.getYsFlag().intValue()==2).count()); map.put("ys",objMap); return map; diff --git a/src/main/java/com/sa/zentao/service/impl/ZtCronDevopsServiceImpl.java b/src/main/java/com/sa/zentao/service/impl/ZtCronDevopsServiceImpl.java index 667d1fb..a24cf1c 100644 --- a/src/main/java/com/sa/zentao/service/impl/ZtCronDevopsServiceImpl.java +++ b/src/main/java/com/sa/zentao/service/impl/ZtCronDevopsServiceImpl.java @@ -188,7 +188,7 @@ public class ZtCronDevopsServiceImpl extends ServiceImpl userMap = this.userService.userMapByIds(result.stream().map(o -> o.getCreateUser()).collect(Collectors.toList())); + Map userMap = this.userService.userMapByIds(null); for (ZtCronDevopsDTO dto:result) { diff --git a/src/main/java/com/sa/zentao/service/impl/ZtProductServiceImpl.java b/src/main/java/com/sa/zentao/service/impl/ZtProductServiceImpl.java index 44a3d88..5a62abb 100644 --- a/src/main/java/com/sa/zentao/service/impl/ZtProductServiceImpl.java +++ b/src/main/java/com/sa/zentao/service/impl/ZtProductServiceImpl.java @@ -135,7 +135,7 @@ public class ZtProductServiceImpl extends ServiceImplo.getStatus().equals("doing")).collect(Collectors.toList()); List userList = ztProjectDTOS.stream().map(o -> o.getPm()).collect(Collectors.toList()); userList.addAll(result.stream().filter(o->!StringUtils.isEmpty(o.getPo())).map(o->o.getPo()).collect(Collectors.toList())); - Map userMap = this.userService.userMapByIds(userList); + Map userMap = this.userService.userMapByIds(null); List allStoryList = this.storyService.list(new QueryWrapper().lambda().in(ZtStory::getProduct, result.stream().map(o -> o.getId()).collect(Collectors.toList()))); List allBugList = bugService.list(new QueryWrapper().lambda() @@ -166,7 +166,7 @@ public class ZtProductServiceImpl extends ServiceImplo.getStatus().equals("active")) .filter(o->o.getStage().equals("tested")||o.getStage().equals("released")).count()).intValue()); - p.setFinishTaskRatio(fStoryList.size()==0?BigDecimal.ZERO:BigDecimal.valueOf(p.getFinishedStories()).divide(BigDecimal.valueOf( + p.setFinishTaskRatio((fStoryList.size()==0||p.getFinishedStories()==0)?BigDecimal.ZERO:BigDecimal.valueOf(p.getFinishedStories()).divide(BigDecimal.valueOf( fStoryList.stream().filter(o->o.getStatus().equals("active")).filter(o->!o.getStage().equals("verified")) .collect(Collectors.toList()).size() ),2,BigDecimal.ROUND_HALF_UP)); @@ -366,6 +366,31 @@ public class ZtProductServiceImpl extends ServiceImplo)); } + @Override + public List myProductList(ZtProjectQo qo) { + List authList = this.ztProjectService.authProductList(); + if(CollectionUtils.isEmpty(authList)){ + return new ArrayList<>(); + } + List ztProducts = this.baseMapper.selectList(new QueryWrapper() + .lambda().eq(ZtProduct::getDeleted,"0") + .notIn(ZtProduct::getStatus, Arrays.asList("closed")) + .in(ZtProduct::getId,authList) + ); + if(CollectionUtils.isEmpty(ztProducts)){ + return new ArrayList<>(); + }else{ + List ztProductDTOS = BeanCopyUtil.copyListProperties(ztProducts, ZtProductDTO::new); + + for (ZtProductDTO p:ztProductDTOS) { + ZtProject ztProject = this.projectMapper.selectById(p.getProgram()); + + p.setName(ztProject.getName()+"/"+p.getName()); + } + return ztProductDTOS; + } + } + private Map> getChildrenMap(List result) { List ztProjects = this.baseMapper.selectList( diff --git a/src/main/java/com/sa/zentao/service/impl/ZtProjectServiceImpl.java b/src/main/java/com/sa/zentao/service/impl/ZtProjectServiceImpl.java index c586ee1..6178cdf 100644 --- a/src/main/java/com/sa/zentao/service/impl/ZtProjectServiceImpl.java +++ b/src/main/java/com/sa/zentao/service/impl/ZtProjectServiceImpl.java @@ -672,7 +672,7 @@ public class ZtProjectServiceImpl extends ServiceImpl pList = this.baseMapper.selectBatchIds(list.stream().map(o -> o.getExecution()).collect(Collectors.toList())); List result = BeanCopyUtil.copyListProperties(pList, ZtProjectDTO::new); Map> projectMap =null; - Map userMap = this.userService.userMapByIds(result.stream().map(o -> o.getPm()).collect(Collectors.toList())); + Map userMap = this.userService.userMapByIds(null); if(CollectionUtils.isEmpty(list)){ projectMap=new HashMap<>(); @@ -908,7 +908,7 @@ public class ZtProjectServiceImpl extends ServiceImpl execAuthList() { ZtUser user = userService.selectByName(RiskUserThreadLocal.get().getName()); - if(user.getAccount().equals("admin")||user.getUserType()== UserType.XMGLY){ + if(user.getAccount().equals("admin")){ return this.baseMapper.selectList(new QueryWrapper() .lambda().eq(ZtProject::getType,"sprint")).stream().map(o->o.getId()).collect(Collectors.toList()); } @@ -1330,6 +1330,34 @@ public class ZtProjectServiceImpl extends ServiceImpl().lambda() + .eq(ZtExecutionproject::getExecution, execution)); + Integer project = executionproject.getProject(); + ZtProjectproduct ztProjectproduct = this.projectproductService.getOne(new QueryWrapper().lambda() + .eq(ZtProjectproduct::getProject, project)); + ZtProject exec = this.baseMapper.selectById(execution); + + ZtProject pj = this.baseMapper.selectById(project); + + ZtProduct product = this.productService.getById(ztProjectproduct.getProduct()); + + ZtProjectDTO dto=new ZtProjectDTO(); + dto.setExcludeId(exec.getId()); + dto.setExecutionName(exec.getName()); + + dto.setProject(pj.getId()); + dto.setProjectName(pj.getName()); + + dto.setProductName(product.getName()); + dto.setProductId(product.getId()); + return dto; + } + //修改项目集 @Override @@ -1441,7 +1469,7 @@ public class ZtProjectServiceImpl extends ServiceImpl userMap = this.userService.userMapByIds(result.stream().map(o->o.getPm()).collect(Collectors.toList())); + Map userMap = this.userService.userMapByIds(null); Map> m= getChildrenMap(result,qo); @@ -1498,7 +1526,7 @@ public class ZtProjectServiceImpl extends ServiceImpl result = this.baseMapper.implementPageList(qo); if(!CollectionUtils.isEmpty(result)){ - Map userMap = this.userService.userMapByIds(result.stream().map(o -> o.getPm()).collect(Collectors.toList())); + Map userMap = this.userService.userMapByIds(null); List list = executionprojectService.list(new QueryWrapper().lambda() .in(ZtExecutionproject:: @@ -1583,7 +1611,7 @@ public class ZtProjectServiceImpl extends ServiceImpl pMap = listProduct.stream().collect(Collectors.toMap(ZtProduct::getId, o -> o)); - Map userMap = this.userService.userMapByIds(result.stream().map(o -> o.getPm()).collect(Collectors.toList())); + Map userMap = this.userService.userMapByIds(null); for (ZtProjectDTO d:result) { String pm = d.getPm(); ZtUser ztUser = userMap.get(pm); diff --git a/src/main/java/com/sa/zentao/service/impl/ZtReleaseServiceImpl.java b/src/main/java/com/sa/zentao/service/impl/ZtReleaseServiceImpl.java index 08468d8..a3640c9 100644 --- a/src/main/java/com/sa/zentao/service/impl/ZtReleaseServiceImpl.java +++ b/src/main/java/com/sa/zentao/service/impl/ZtReleaseServiceImpl.java @@ -212,7 +212,7 @@ public class ZtReleaseServiceImpl extends ServiceImplo)); } + @Autowired + private CommonsController commonsController; + @Override @Transactional public void addFeedback(ZtStoryFeedbackDTO dto) { @@ -130,9 +132,21 @@ public class ZtStoryFeedbackServiceImpl extends ServiceImpl0){ + List list=new ArrayList<>(); + for (int i =0;i impl return new HashMap<>(); } - Map userMap = this.userService.userMapByIds(list1.stream().map(o -> o.getReviewer()).collect(Collectors.toList())); + Map userMap = this.userService.userMapByIds(null); List ztStoryreviewDTOS = BeanCopyUtil.copyListProperties(list1, ZtStoryreviewDTO::new); for (ZtStoryreviewDTO view:ztStoryreviewDTOS) { ZtUser ztUser = userMap.get(view.getReviewer()); @@ -209,9 +209,12 @@ public class ZtStoryServiceImpl extends ServiceImpl impl ZtStoryUser storyUser = storyUserService.getById(dto.getUserStory()); if(storyUser!=null&&"wait".equals(storyUser.getStatus())){ storyUser.setStatus("active"); - storyUserService.updateById(storyUser); + }else if(storyUser!=null&&"active".equals(storyUser.getStatus())){ + if(storyUser.getStatus().equals("active")&&storyUser.getStage().equals("wait")){ + storyUser.setStage("projected"); + } } - + storyUserService.updateById(storyUser); } actionService.addAction(ActionType.XQ, ActionStatus.XJ, s.getId(), "", dto.getProduct(), null, @@ -609,16 +612,26 @@ public class ZtStoryServiceImpl extends ServiceImpl impl @Override public List myStoryList(ZtProjectQo qo) { + UserType userType = RiskUserThreadLocal.get().getUserType(); + List closed = this.baseMapper.selectList(new QueryWrapper().lambda() .ne(ZtStory::getStatus, "closed") .eq(ZtStory::getAssignedTo, RiskUserThreadLocal.get().getName()) .or().eq(ZtStory::getOpenedby, RiskUserThreadLocal.get().getName()) ); - if(CollectionUtils.isEmpty(closed)){ - return new ArrayList<>(); - } List storyDTOList = BeanCopyUtil.copyListProperties(closed, ZtStoryDTO::new); + + if(userType==UserType.CP){ + List uStory = this.storyUserService.list(new QueryWrapper().lambda().ne(ZtStoryUser::getStatus, "closed") + .or().eq(ZtStoryUser::getOpenedby, RiskUserThreadLocal.get().getName()) + ); + if(!CollectionUtils.isEmpty(uStory)){ + List storyDTOList1 = BeanCopyUtil.copyListProperties(uStory, ZtStoryDTO::new); + storyDTOList.addAll(storyDTOList1); + + } + } if(!CollectionUtils.isEmpty(storyDTOList)){ Map> executionMapByStory = getExecutionMapByStory(storyDTOList); for (ZtStoryDTO d:storyDTOList ) { @@ -631,7 +644,6 @@ public class ZtStoryServiceImpl extends ServiceImpl impl } } - return storyDTOList; } @@ -655,7 +667,7 @@ public class ZtStoryServiceImpl extends ServiceImpl impl userIds.addAll(list.stream().map(o -> o.getOpenedby()).collect(Collectors.toList())); - Map userMap = this.userService.userMapByIds(userIds); + Map userMap = this.userService.userMapByIds(null); for (ZtStoryDTO d : list) { @@ -1347,7 +1359,7 @@ public class ZtStoryServiceImpl extends ServiceImpl impl userIds.addAll(list.stream().map(o -> o.getOpenedby()).collect(Collectors.toList())); - Map userMap = this.userService.userMapByIds(userIds); + Map userMap = this.userService.userMapByIds(null); for (ZtStoryDTO d : list) { diff --git a/src/main/java/com/sa/zentao/service/impl/ZtStoryUserServiceImpl.java b/src/main/java/com/sa/zentao/service/impl/ZtStoryUserServiceImpl.java index dbb54ba..a176463 100644 --- a/src/main/java/com/sa/zentao/service/impl/ZtStoryUserServiceImpl.java +++ b/src/main/java/com/sa/zentao/service/impl/ZtStoryUserServiceImpl.java @@ -453,7 +453,7 @@ public class ZtStoryUserServiceImpl extends ServiceImpl(); } - Map userMap = this.userService.userMapByIds(list1.stream().map(o -> o.getReviewer()).collect(Collectors.toList())); + Map userMap = this.userService.userMapByIds(null); List ztStoryreviewDTOS = BeanCopyUtil.copyListProperties(list1, ZtStoryreviewDTO::new); for (ZtStoryreviewDTO view:ztStoryreviewDTOS) { ZtUser ztUser = userMap.get(view.getReviewer()); diff --git a/src/main/java/com/sa/zentao/service/impl/ZtTaskServiceImpl.java b/src/main/java/com/sa/zentao/service/impl/ZtTaskServiceImpl.java index 2199489..3ec660d 100644 --- a/src/main/java/com/sa/zentao/service/impl/ZtTaskServiceImpl.java +++ b/src/main/java/com/sa/zentao/service/impl/ZtTaskServiceImpl.java @@ -78,7 +78,7 @@ public class ZtTaskServiceImpl extends ServiceImpl impleme if(!CollectionUtils.isEmpty(list)){ List userIds = list.stream().map(o -> o.getFinishedby()).collect(Collectors.toList()); userIds.addAll(list.stream().map(o -> o.getAssignedTo()).collect(Collectors.toList())); - Map userMap = this.userService.userMapByIds(userIds); + Map userMap = this.userService.userMapByIds(null); for (ZtTaskDTO task:list) { ZtUser ztUser = userMap.get(task.getFinishedby()); @@ -290,7 +290,7 @@ public class ZtTaskServiceImpl extends ServiceImpl impleme if(!CollectionUtils.isEmpty(list)){ List userIds = list.stream().map(o -> o.getFinishedby()).collect(Collectors.toList()); userIds.addAll(list.stream().map(o -> o.getAssignedTo()).collect(Collectors.toList())); - Map userMap = this.userService.userMapByIds(userIds); + Map userMap = this.userService.userMapByIds(null); for (ZtTaskDTO task:list) { ZtUser ztUser = userMap.get(task.getFinishedby()); @@ -327,12 +327,8 @@ public class ZtTaskServiceImpl extends ServiceImpl impleme ztTask.setOpenedby(RiskUserThreadLocal.get().getName()); ztTask.setOpeneddate(new Date()); ztTask.setEstimate(dto.getLeft()); - Integer project = ztTask.getProject(); - ZtProjectproduct ztProjectproduct = this.projectproductService.getOne(new QueryWrapper().lambda() - .eq(ZtProjectproduct::getProject, project)); - if(ztProjectproduct!=null){ - ztTask.setProduct(ztProjectproduct.getProduct()); - } + + @@ -353,6 +349,16 @@ public class ZtTaskServiceImpl extends ServiceImpl impleme List execList = this.executionprojectService.list(new QueryWrapper().lambda().eq(ZtExecutionproject::getExecution, ztTask.getExecution())); ztTask.setProject(execList.get(0).getExecution()); } + }else{ + Integer execution = dto.getExecution(); + //迭代 + ZtExecutionproject executionproject = this.executionprojectService.getOne(new QueryWrapper().lambda().eq(ZtExecutionproject::getExecution, execution)); + + Integer project = executionproject.getProject(); + + ZtProjectproduct projectproduct = this.projectproductService.getOne(new QueryWrapper().lambda().eq(ZtProjectproduct::getProject, project)); + ztTask.setProduct(projectproduct.getProduct()); + ztTask.setProject(project); } //如果是开发人员 需要评审 UserType userType = RiskUserThreadLocal.get().getUserType(); @@ -369,6 +375,12 @@ public class ZtTaskServiceImpl extends ServiceImpl impleme if(ztTask.getDeadline()!=null){ ztTask.setDeadlineTime(ztTask.getDeadline().getTime()/1000); } + Integer project = ztTask.getProject(); + ZtProjectproduct ztProjectproduct = this.projectproductService.getOne(new QueryWrapper().lambda() + .eq(ZtProjectproduct::getProject, project)); + if(ztProjectproduct!=null){ + ztTask.setProduct(ztProjectproduct.getProduct()); + } this.baseMapper.insert(ztTask); fileService.updateFile(dto.getFiles(),ztTask.getId(), FileTypes.task); @@ -820,7 +832,7 @@ public class ZtTaskServiceImpl extends ServiceImpl impleme if(dto.getApprovalStatus()==1){ actionService.addAction(ActionType.RW, ActionStatus.PSTG,t.getId(),projectproduct==null?null:projectproduct.getProduct().toString(),projectproduct==null?null:projectproduct.getProject(),t.getExecution(), RiskUserThreadLocal.get().getName(),dto.getApprovalRemark(),null); - }else if(dto.getApprovalStatus()==2){ + }else{ actionService.addAction(ActionType.RW, ActionStatus.PSBTG,t.getId(),projectproduct==null?null:projectproduct.getProduct().toString(),projectproduct==null?null:projectproduct.getProject(),t.getExecution(), RiskUserThreadLocal.get().getName(),dto.getApprovalRemark(),null); } diff --git a/src/main/java/com/sa/zentao/utils/HttpRequest.java b/src/main/java/com/sa/zentao/utils/HttpRequest.java new file mode 100644 index 0000000..6ddd0cd --- /dev/null +++ b/src/main/java/com/sa/zentao/utils/HttpRequest.java @@ -0,0 +1,115 @@ +// +// Source code recreated from a .class file by IntelliJ IDEA +// (powered by FernFlower decompiler) +// + +package com.sa.zentao.utils; + +import org.apache.http.HttpEntity; +import org.apache.http.NameValuePair; +import org.apache.http.ParseException; +import org.apache.http.client.config.RequestConfig; +import org.apache.http.client.entity.UrlEncodedFormEntity; +import org.apache.http.client.methods.CloseableHttpResponse; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClientBuilder; +import org.apache.http.message.BasicNameValuePair; +import org.apache.http.util.EntityUtils; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import java.util.Map; + +public class HttpRequest { + private static final CloseableHttpClient httpclient; + public static final String CHARSET = "UTF-8"; + + public HttpRequest() { + } + + public static String sendGet(String url, Map params) throws ParseException, IOException { + return sendGet(url, params, "UTF-8"); + } + + public static String sendPost(String url, Map params) throws ParseException, IOException { + return sendPost(url, params, "UTF-8"); + } + + public static String sendGet(String url, Map params, String charset) throws ParseException, IOException { + if (params != null && !params.isEmpty()) { + List pairs = new ArrayList(params.size()); + Iterator var4 = params.keySet().iterator(); + + while(var4.hasNext()) { + String key = (String)var4.next(); + pairs.add(new BasicNameValuePair(key, params.get(key).toString())); + } + + url = url + "?" + EntityUtils.toString(new UrlEncodedFormEntity(pairs), charset); + } + + HttpGet httpGet = new HttpGet(url); + CloseableHttpResponse response = httpclient.execute(httpGet); + int statusCode = response.getStatusLine().getStatusCode(); + if (statusCode != 200) { + httpGet.abort(); + throw new RuntimeException("HttpClient,error status code :" + statusCode); + } else { + HttpEntity entity = response.getEntity(); + String result = null; + if (entity != null) { + result = EntityUtils.toString(entity, "utf-8"); + EntityUtils.consume(entity); + response.close(); + return result; + } else { + return null; + } + } + } + + public static String sendPost(String url, Map params, String charset) throws IOException { + List pairs = null; + if (params != null && !params.isEmpty()) { + pairs = new ArrayList(params.size()); + Iterator var4 = params.keySet().iterator(); + + while(var4.hasNext()) { + String key = (String)var4.next(); + pairs.add(new BasicNameValuePair(key, params.get(key).toString())); + } + } + + HttpPost httpPost = new HttpPost(url); + if (pairs != null && pairs.size() > 0) { + httpPost.setEntity(new UrlEncodedFormEntity(pairs, charset)); + } + + CloseableHttpResponse response = httpclient.execute(httpPost); + int statusCode = response.getStatusLine().getStatusCode(); + if (statusCode != 200) { + httpPost.abort(); + throw new RuntimeException("HttpClient,error status code :" + statusCode); + } else { + HttpEntity entity = response.getEntity(); + String result = null; + if (entity != null) { + result = EntityUtils.toString(entity, "utf-8"); + EntityUtils.consume(entity); + response.close(); + return result; + } else { + return null; + } + } + } + + static { + RequestConfig config = RequestConfig.custom().setConnectTimeout(5000).setSocketTimeout(3000).build(); + httpclient = HttpClientBuilder.create().setDefaultRequestConfig(config).build(); + } +} diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index 184c1dd..1ca8788 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -32,4 +32,15 @@ spring: file: baseUrl: http://192.168.3.200:8013 - meeting: /data/buildzentao/meeting.docx \ No newline at end of file + meeting: /data/buildzentao/meeting.docx + +vx: + token: vTniTyOG4csBmAnMr + encodingAesKey : gCmhw7vKLcZwsDszILPNSEqyjgRKODemkYmRFdfelmk + receiveid: wwa7cc4743271d6055 + corpid: wwa7cc4743271d6055 + corpsecret: qQNdRmtanymbshPOLgWTgB-TzX9QmNpVCpOx5suJ2xA + dkCorpsecret: 1MWQxoL8QtypfdnKJqdo3pGdZDAmdhqTF_MaWm3rVjs + salaryCorpsecretApp: ib0GyrjV573QdczASCeB-QmCsp0t_QpjsbnQwKBr-Os + salaryCorpsecretAppUrl: https://qyapi.weixin.qq.com/cgi-bin/message/send + dkcorpsecret: 1MWQxoL8QtypfdnKJqdo3pGdZDAmdhqTF_MaWm3rVjs \ No newline at end of file diff --git a/src/main/resources/application-local.yml b/src/main/resources/application-local.yml index 1ca1c2f..3f540a8 100644 --- a/src/main/resources/application-local.yml +++ b/src/main/resources/application-local.yml @@ -51,4 +51,14 @@ file: # # #file: -# baseUrl: http://127.0.0.1:8085 \ No newline at end of file +# baseUrl: http://127.0.0.1:8085 +vx: + token: vTniTyOG4csBmAnMr + encodingAesKey : gCmhw7vKLcZwsDszILPNSEqyjgRKODemkYmRFdfelmk + receiveid: wwa7cc4743271d6055 + corpid: wwa7cc4743271d6055 + corpsecret: qQNdRmtanymbshPOLgWTgB-TzX9QmNpVCpOx5suJ2xA + dkCorpsecret: 1MWQxoL8QtypfdnKJqdo3pGdZDAmdhqTF_MaWm3rVjs + salaryCorpsecretApp: ib0GyrjV573QdczASCeB-QmCsp0t_QpjsbnQwKBr-Os + salaryCorpsecretAppUrl: https://qyapi.weixin.qq.com/cgi-bin/message/send + dkcorpsecret: 1MWQxoL8QtypfdnKJqdo3pGdZDAmdhqTF_MaWm3rVjs \ No newline at end of file diff --git a/src/main/resources/mapper/ZtBugMapper.xml b/src/main/resources/mapper/ZtBugMapper.xml index 98b10c2..15bda64 100644 --- a/src/main/resources/mapper/ZtBugMapper.xml +++ b/src/main/resources/mapper/ZtBugMapper.xml @@ -155,7 +155,7 @@ - and id in + and s.id in #{id} @@ -165,7 +165,7 @@ - and project in + and s.project in #{id} @@ -177,38 +177,38 @@ -- 未关闭 - and status !='closed' + and s.status !='closed' -- 由我创建 - and openedBy =#{qo.userName} + and s.openedBy =#{qo.userName} -- 指派给我 - and assignedTo =#{qo.userName} + and s.assignedTo =#{qo.userName} -- 由我解决 and resolvedBy =#{qo.userName} - and status= 'resolved' + and s.status= 'resolved' -- 由我指派 - and openedBy =#{qo.userName} + and s.openedBy =#{qo.userName} -- //未解决 - and status= 'active' + and s.status= 'active' -- //未确认 - and confirmed= 0 + and s.confirmed= 0 -- //未指派 - and assignedTo is null + and s.assignedTo is null diff --git a/src/main/resources/mapper/ZtDevelopFeedbackMapper.xml b/src/main/resources/mapper/ZtDevelopFeedbackMapper.xml new file mode 100644 index 0000000..7970023 --- /dev/null +++ b/src/main/resources/mapper/ZtDevelopFeedbackMapper.xml @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/mapper/ZtMeetingMapper.xml b/src/main/resources/mapper/ZtMeetingMapper.xml new file mode 100644 index 0000000..26db9e7 --- /dev/null +++ b/src/main/resources/mapper/ZtMeetingMapper.xml @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + +