From a38a1ac77bb6ac9ea8bf0cf5f5f6b68d0e6e6974 Mon Sep 17 00:00:00 2001
From: jinlin <jinlin>
Date: 星期二, 02 一月 2024 08:44:10 +0800
Subject: [PATCH] 修改
---
modules/mainPart/src/main/resources/mapper/testReviewComment/TestReviewCommentDao.xml | 1
modules/mainPart/src/main/java/com/zt/life/modules/configAuditReport/model/ConfigAuditReport.java | 9
zt/core/src/main/java/com/zt/modules/sys/service/SysUserService.java | 11
web/src/views/modules/contractReview/ContractReview-AddOrUpdate.vue | 2
modules/mainPart/src/main/java/com/zt/life/modules/testReviewComment/service/TestReviewCommentService.java | 26
zt/core/src/main/resources/mapper/sys/SysUserDao.xml | 2
modules/mainPart/src/main/java/com/zt/life/modules/qaAuditReport/service/QaAuditReportService.java | 182 +++++++
modules/mainPart/src/main/java/com/zt/life/modules/qaAuditReport/dto/QaAuditReportDto.java | 34 +
web/src/views/modules/configAuditReport/ConfigAuditReport.vue | 14
modules/mainPart/src/main/java/com/zt/life/modules/project/controller/ProjectController.java | 19
zt/core/src/main/java/com/zt/modules/sys/dao/SysUserDao.java | 2
modules/mainPart/src/main/java/com/zt/life/modules/testReviewComment/model/TestReviewComment.java | 5
modules/mainPart/src/main/java/com/zt/life/modules/qaAuditReport/dao/QaAuditReportIncongruentDao.java | 24 +
modules/mainPart/src/main/java/com/zt/life/modules/testReviewComment/controller/TestReviewCommentController.java | 11
modules/mainPart/src/main/java/com/zt/life/modules/qaAuditReport/controller/QaAuditReportController.java | 123 +++++
web/src/views/modules/testReviewComment/TestReviewComment-AddOrUpdate.vue | 31 +
web/src/views/modules/configAuditReport/ConfigAuditReport-AddOrUpdate.vue | 116 ++---
modules/mainPart/src/main/java/com/zt/life/modules/qaAuditReport/model/QaAuditReport.java | 63 ++
modules/mainPart/src/main/java/com/zt/life/modules/qaAuditReport/model/QaAuditReportIncongruent.java | 54 ++
modules/mainPart/src/main/java/com/zt/life/modules/qaAuditReport/dao/QaAuditReportDao.java | 23 +
web/src/views/modules/testReviewComment/TestReviewComment.vue | 11
web/src/views/modules/qaAuditReport/QaAuditReport.vue | 80 +++
modules/mainPart/src/main/resources/mapper/configAuditReport/ConfigAuditReportDao.xml | 5
web/src/views/modules/qaAuditReport/QaAuditReport-AddOrUpdate.vue | 243 ++++++++++
core/src/main/java/com/zt/life/export/service/WordFileService.java | 2
modules/mainPart/src/main/java/com/zt/life/modules/qaAuditReport/service/QaAuditReportIncongruentService.java | 51 ++
modules/mainPart/src/main/java/com/zt/life/modules/testReviewComment/dto/ReviewCommentDto.java | 3
modules/mainPart/src/main/java/com/zt/life/modules/configAuditReport/dto/ConfigAuditDto.java | 4
modules/mainPart/src/main/java/com/zt/life/modules/configAuditReport/controller/ConfigAuditReportController.java | 23
modules/mainPart/src/main/java/com/zt/life/modules/qaAuditReport/controller/QaAuditReportIncongruentController.java | 96 ++++
modules/mainPart/src/main/resources/mapper/qaAuditReport/QaAuditReportDao.xml | 20
modules/mainPart/src/main/resources/mapper/qaAuditReport/QaAuditReportIncongruentDao.xml | 33 +
modules/mainPart/src/main/java/com/zt/life/modules/configAuditReport/service/ConfigAuditReportService.java | 41 +
33 files changed, 1,258 insertions(+), 106 deletions(-)
diff --git a/core/src/main/java/com/zt/life/export/service/WordFileService.java b/core/src/main/java/com/zt/life/export/service/WordFileService.java
index 331331f..1abcfb8 100644
--- a/core/src/main/java/com/zt/life/export/service/WordFileService.java
+++ b/core/src/main/java/com/zt/life/export/service/WordFileService.java
@@ -67,7 +67,7 @@
builder.bind(fieldName, new HackLoopTableRenderPolicy());
} else if (staticFieldValue != null) {
if (typeName.contains("java.util.Date") && fieldName.contains("Date")) {
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy骞碝M鏈坉d鏃�");
staticFieldValue = sdf.format(staticFieldValue);
}
String valStr = staticFieldValue.toString();
diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/configAuditReport/controller/ConfigAuditReportController.java b/modules/mainPart/src/main/java/com/zt/life/modules/configAuditReport/controller/ConfigAuditReportController.java
index d0a15c5..12096b6 100644
--- a/modules/mainPart/src/main/java/com/zt/life/modules/configAuditReport/controller/ConfigAuditReportController.java
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/configAuditReport/controller/ConfigAuditReportController.java
@@ -15,6 +15,7 @@
import com.zt.life.modules.configAuditReport.dto.ConfigAuditDto;
import com.zt.life.modules.configAuditReport.model.ConfigAuditReport;
import com.zt.life.modules.configAuditReport.service.ConfigAuditReportService;
+import com.zt.life.sys.dto.OssDto;
import com.zt.life.sys.service.SysOssConfigService;
import com.zt.modules.coderule.service.SysCodeRuleService;
import io.swagger.annotations.Api;
@@ -25,6 +26,8 @@
import org.springframework.web.bind.annotation.*;
import springfox.documentation.annotations.ApiIgnore;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -56,9 +59,10 @@
@ApiImplicitParam(name = Constant.Q.LIMIT, value = Constant.QV.LIMIT, required = true, dataType = Constant.QT.INT),
@ApiImplicitParam(name = Constant.Q.ORDER_FIELD, value = Constant.QV.ORDER_FIELD, dataType = Constant.QT.STRING),
@ApiImplicitParam(name = Constant.Q.ORDER, value = Constant.QV.ORDER, dataType = Constant.QT.STRING),
- @ApiImplicitParam(name = "code", value = "缂栧彿", dataType = Constant.QT.STRING, format = "code^LK"),
- @ApiImplicitParam(name = "libraryType", value = "搴撶被鍨�", dataType = Constant.QT.STRING, format = "a.library_type^EQ")
-})
+ @ApiImplicitParam(name = "code", value = "缂栧彿", dataType = Constant.QT.STRING, format = "a.code^LK"),
+ @ApiImplicitParam(name = "softwareIdentity", value = "椤圭洰鏍囪瘑", dataType = Constant.QT.STRING, format = "p.software_identity^LK"),
+ @ApiImplicitParam(name = "softwareName", value = "椤圭洰鍚嶇О", dataType = Constant.QT.STRING, format = "p.software_name^LK"),
+ })
public PageResult<ConfigAuditReport> page(@ApiIgnore @QueryParam QueryFilter queryFilter){
return PageResult.ok(configAuditReportService.page(queryFilter));
@@ -68,6 +72,12 @@
@ApiOperation("淇℃伅")
public Result<ConfigAuditDto> getDto(Long projectId, Long reportId) {
ConfigAuditDto data =configAuditReportService.getDto(projectId, reportId);
+ if (reportId!=null) {
+ OssDto ossDto = sysOssConfigService.getOssByBusiType(reportId, "config_audit_report");
+ if (ossDto != null) {
+ data.setFiles(ossDto);
+ }
+ }
return Result.ok(data);
}
@@ -106,4 +116,11 @@
return Result.ok();
}
+ @GetMapping("exportConfigAudit")
+ @ApiOperation("鎵撳嵃瀹℃牳鎶ュ憡")
+ @LogOperation("鎵撳嵃瀹℃牳鎶ュ憡")
+ public void exportConfigAudit(Long id, HttpServletRequest request, HttpServletResponse response) {
+ configAuditReportService.exportConfigAudit(id, request, response);
+ }
+
}
diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/configAuditReport/dto/ConfigAuditDto.java b/modules/mainPart/src/main/java/com/zt/life/modules/configAuditReport/dto/ConfigAuditDto.java
index 9ad62d9..82cf4af 100644
--- a/modules/mainPart/src/main/java/com/zt/life/modules/configAuditReport/dto/ConfigAuditDto.java
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/configAuditReport/dto/ConfigAuditDto.java
@@ -8,6 +8,7 @@
import com.zt.life.modules.configItemWarehouse.model.WarehouseConfigItem;
import com.zt.life.modules.configItemWarehouse.model.WarehouseQaAudit;
import com.zt.life.modules.project.model.Project;
+import com.zt.life.sys.dto.OssDto;
import com.zt.modules.workflow.dto.FlowInfoDto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@@ -27,7 +28,8 @@
private Project project;
- private FlowInfoDto flowInfoDto;
+ @ApiModelProperty(value = "闄勪欢")
+ private OssDto files;
@ApiModelProperty(value = "瀹℃牳鍐呭")
private List<ConfigAuditReportContent> contentList = new ArrayList<>();
diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/configAuditReport/model/ConfigAuditReport.java b/modules/mainPart/src/main/java/com/zt/life/modules/configAuditReport/model/ConfigAuditReport.java
index 21bcc73..eaf16d6 100644
--- a/modules/mainPart/src/main/java/com/zt/life/modules/configAuditReport/model/ConfigAuditReport.java
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/configAuditReport/model/ConfigAuditReport.java
@@ -1,5 +1,6 @@
package com.zt.life.modules.configAuditReport.model;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.zt.common.entity.BusiEntity;
@@ -41,4 +42,12 @@
@ApiModelProperty(value = "骞翠唤")
private String year;
+ @TableField(exist = false)
+ @ApiModelProperty(value = "椤圭洰鏍囪瘑")
+ private String softwareIdentity;
+
+ @TableField(exist = false)
+ @ApiModelProperty(value = "椤圭洰鍚嶇О")
+ private String softwareName;
+
}
diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/configAuditReport/service/ConfigAuditReportService.java b/modules/mainPart/src/main/java/com/zt/life/modules/configAuditReport/service/ConfigAuditReportService.java
index f8243ba..9a0efef 100644
--- a/modules/mainPart/src/main/java/com/zt/life/modules/configAuditReport/service/ConfigAuditReportService.java
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/configAuditReport/service/ConfigAuditReportService.java
@@ -1,7 +1,9 @@
package com.zt.life.modules.configAuditReport.service;
+import cn.hutool.core.convert.Convert;
import com.zt.common.service.BaseService;
import com.zt.common.utils.CommonUtils;
+import com.zt.life.export.dto.WordFile;
import com.zt.life.export.service.WordFileService;
import com.zt.life.modules.baselineRelease.dto.BaselineDto;
import com.zt.life.modules.baselineRelease.model.BaselineRelease;
@@ -20,6 +22,7 @@
import com.zt.life.modules.mainPart.utils.GetFilesPath;
import com.zt.life.modules.mainPart.utils.GetShowDictList;
import com.zt.life.modules.project.model.Project;
+import com.zt.life.modules.project.model.SoftwareTestOrder;
import com.zt.life.modules.project.model.SoftwareTestOrderDeliverable;
import com.zt.life.modules.project.model.SoftwareTestOrderMeasured;
import com.zt.life.modules.project.service.ProjectService;
@@ -37,6 +40,10 @@
import org.springframework.stereotype.Service;
import com.zt.common.db.query.QueryFilter;
import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.FileNotFoundException;
+import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@@ -75,8 +82,6 @@
@Autowired
private WordFileService wordFileService;
- @Autowired
- private GetFilesPath getFilesPath;
/**
* 鍒嗛〉鏌ヨ
*
@@ -84,7 +89,11 @@
* @return
*/
public List<ConfigAuditReport> page(QueryFilter queryFilter) {
- return baseDao.getList(queryFilter.getQueryParams());
+ List<ConfigAuditReport> list = baseDao.getList(queryFilter.getQueryParams());
+ if (list != null && list.size() > 0) {
+ sysOssService.setListOsses(list, "config_audit_report");
+ }
+ return list;
}
/**
@@ -156,6 +165,32 @@
problemService.insert(problem);
}
}
+ sysOssConfigService.updateOss(configAuditDto.getId(), configAuditDto.getFiles());// 淇濆瓨闄勪欢
return true;
}
+
+ public void exportConfigAudit(Long id, HttpServletRequest request, HttpServletResponse response) {
+ try {
+ ConfigAuditDto dataObj = this.getDto(null, id);
+ //閫氱敤瀛楀吀鍒楄〃瀛楃涓茬敓鎴�
+ for (ConfigAuditReportContent content : dataObj.getContentList()) {
+ String value = content.getAuditResult();
+ String auditResult = getShowDictList.getShowDictList(value, "status_tag", false);
+ content.setAuditResult(auditResult);
+ }
+ for (ConfigAuditReportProblem problem : dataObj.getProblemList()) {
+ String value = problem.getIsNotTrue();
+ String IsNotTrue = getShowDictList.getShowDictList(value, "is_or_not", false);
+ problem.setIsNotTrue(IsNotTrue);
+ }
+ WordFile wordFile = new WordFile();
+ wordFile.setModulePath("閰嶇疆瀹℃牳鎶ュ憡.docx");
+ wordFile.setWordName(dataObj.getProject().getSoftwareName() + "_閰嶇疆瀹℃牳鎶ュ憡.docx");
+ wordFileService.exportWordFile(request, dataObj, wordFile, response);
+ } catch (UnsupportedEncodingException e) {
+ e.printStackTrace();
+ } catch (FileNotFoundException e) {
+ e.printStackTrace();
+ }
+ }
}
diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/project/controller/ProjectController.java b/modules/mainPart/src/main/java/com/zt/life/modules/project/controller/ProjectController.java
index a136934..ae3fd5c 100644
--- a/modules/mainPart/src/main/java/com/zt/life/modules/project/controller/ProjectController.java
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/project/controller/ProjectController.java
@@ -67,7 +67,7 @@
@ApiImplicitParam(name = "pageCode", value = "椤甸潰鏍囪瘑", dataType = Constant.QT.STRING),
})
public PageResult<Project> page(@ApiIgnore @QueryParam QueryFilter queryFilter) {
- if (queryFilter.getParams().containsValue("baseline_release")||queryFilter.getParams().containsValue("config_item_warehouse")){
+ if (queryFilter.getParams().containsValue("baseline_release")||queryFilter.getParams().containsValue("config_item_warehouse")||queryFilter.getParams().containsValue("test_review_comment")){
queryFilter.getParams().replace("tableName","");
}
List<Project> Project =projectService.page(queryFilter);
@@ -94,7 +94,7 @@
map.put("year", year);
project.setYear(year);
project.setCode(sysCodeRuleService.getNewCode(map));
- String leaderName = sysUserService.getUsersName(Convert.toLong(project.getProjectLeader()));
+ String leaderName = sysUserService.getUsersName(project.getProjectLeader());
project.setProjectLeader(leaderName);
projectService.insert(project);
return Result.ok();
@@ -106,8 +106,21 @@
public Result update(@RequestBody Project project) {
//鏁堥獙鏁版嵁
ValidatorUtils.validateEntity(project, UpdateGroup.class, DefaultGroup.class);
- String leaderName = sysUserService.getUsersName(Convert.toLong(project.getProjectLeader()));
+ String leaderName = project.getProjectLeader();
+ String projectTesters =project.getProjectTesters();
+ String projectReviewer =project.getProjectReviewer();
+ if (leaderName.length()>10){
+ leaderName=sysUserService.getNames(leaderName);
+ }
+ if (projectTesters.length()>10){
+ projectTesters=sysUserService.getNames(projectTesters);
+ }
+ if (projectReviewer.length()>10){
+ projectReviewer=sysUserService.getNames(projectReviewer);
+ }
project.setProjectLeader(leaderName);
+ project.setProjectTesters(projectTesters);
+ project.setProjectReviewer(projectReviewer);
projectService.update(project);
return Result.ok();
}
diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/qaAuditReport/controller/QaAuditReportController.java b/modules/mainPart/src/main/java/com/zt/life/modules/qaAuditReport/controller/QaAuditReportController.java
new file mode 100644
index 0000000..f03abe5
--- /dev/null
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/qaAuditReport/controller/QaAuditReportController.java
@@ -0,0 +1,123 @@
+package com.zt.life.modules.qaAuditReport.controller;
+
+
+import com.zt.common.annotation.LogOperation;
+import com.zt.common.constant.Constant;
+import com.zt.common.annotation.QueryParam;
+import com.zt.common.db.query.QueryFilter;
+import com.zt.common.servlet.Result;
+import com.zt.common.servlet.PageResult;
+import com.zt.common.validator.AssertUtils;
+import com.zt.common.validator.ValidatorUtils;
+import com.zt.common.validator.group.AddGroup;
+import com.zt.common.validator.group.DefaultGroup;
+import com.zt.common.validator.group.UpdateGroup;
+import com.zt.life.modules.configAuditReport.dto.ConfigAuditDto;
+import com.zt.life.modules.qaAuditReport.dto.QaAuditReportDto;
+import com.zt.life.modules.qaAuditReport.model.QaAuditReport;
+import com.zt.life.modules.qaAuditReport.service.QaAuditReportService;
+import com.zt.life.sys.dto.OssDto;
+import com.zt.life.sys.service.SysOssConfigService;
+import com.zt.modules.coderule.service.SysCodeRuleService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import springfox.documentation.annotations.ApiIgnore;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+
+/**
+ * qa_audit_report
+ *
+ * @author zt generator
+ * @since 1.0.0 2023-12-29
+ */
+@RestController
+@RequestMapping("/qaAuditReport/QaAuditReport/")
+@Api(tags="qa_audit_report")
+public class QaAuditReportController {
+ @Autowired
+ private QaAuditReportService qaAuditReportService;
+
+ @Autowired
+ private SysCodeRuleService sysCodeRuleService;
+
+ @Autowired
+ private SysOssConfigService sysOssConfigService;
+
+ @GetMapping("page")
+ @ApiOperation("鍒嗛〉")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = Constant.Q.PAGE, value = Constant.QV.PAGE, required = true, dataType = Constant.QT.INT),
+ @ApiImplicitParam(name = Constant.Q.LIMIT, value = Constant.QV.LIMIT, required = true, dataType = Constant.QT.INT),
+ @ApiImplicitParam(name = Constant.Q.ORDER_FIELD, value = Constant.QV.ORDER_FIELD, dataType = Constant.QT.STRING),
+ @ApiImplicitParam(name = Constant.Q.ORDER, value = Constant.QV.ORDER, dataType = Constant.QT.STRING),
+ @ApiImplicitParam(name = "code", value = "缂栧彿", dataType = Constant.QT.STRING, format = "code^LK") })
+ public PageResult<QaAuditReport> page(@ApiIgnore @QueryParam QueryFilter queryFilter){
+ return PageResult.ok(qaAuditReportService.page(queryFilter));
+ }
+
+ @GetMapping("getDto")
+ @ApiOperation("淇℃伅")
+ public Result<QaAuditReportDto> getDto(Long projectId, Long reportId) {
+ QaAuditReportDto data =qaAuditReportService.getDto(projectId, reportId);
+ if (reportId!=null) {
+ OssDto ossDto = sysOssConfigService.getOssByBusiType(reportId, "qa_audit_report");
+ if (ossDto != null) {
+ data.setFiles(ossDto);
+ }
+ }
+ return Result.ok(data);
+ }
+
+ @PostMapping
+ @ApiOperation("鏂板")
+ @LogOperation("鏂板")
+ public Result insert(@RequestBody QaAuditReportDto qaAuditReportDto){
+ //鏁堥獙鏁版嵁
+ ValidatorUtils.validateEntity(qaAuditReportDto, AddGroup.class, DefaultGroup.class);
+ Map<String, String> map = new HashMap<>();
+ map.put("funCode", "qa_audit_report");
+ map.put("projectId",qaAuditReportDto.getProjectId().toString());
+ qaAuditReportDto.getAuditReport().setCode(sysCodeRuleService.getNewCode(map));
+ Boolean result = qaAuditReportService.save(qaAuditReportDto);
+ return Result.ok();
+ }
+
+ @PutMapping
+ @ApiOperation("淇敼")
+ @LogOperation("淇敼")
+ public Result update(@RequestBody QaAuditReportDto qaAuditReportDto){
+ //鏁堥獙鏁版嵁
+ ValidatorUtils.validateEntity(qaAuditReportDto, UpdateGroup.class, DefaultGroup.class);
+ Boolean result = qaAuditReportService.save(qaAuditReportDto);
+ return Result.ok();
+ }
+
+
+ @DeleteMapping("deleteQaReport")
+ @ApiOperation("鍒犻櫎")
+ @LogOperation("鍒犻櫎")
+ public Result delete(@RequestBody Long[] ids){
+ //鏁堥獙鏁版嵁
+ AssertUtils.isArrayEmpty(ids, "id");
+ qaAuditReportService.delete(ids);
+
+ return Result.ok();
+ }
+ @GetMapping("exportQaReport")
+ @ApiOperation("鎵撳嵃QA瀹℃牳鎶ュ憡")
+ @LogOperation("鎵撳嵃QA瀹℃牳鎶ュ憡")
+ public void exportQaReport(Long id, HttpServletRequest request, HttpServletResponse response) {
+ qaAuditReportService.exportQaReport(id, request, response);
+ }
+
+}
diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/qaAuditReport/controller/QaAuditReportIncongruentController.java b/modules/mainPart/src/main/java/com/zt/life/modules/qaAuditReport/controller/QaAuditReportIncongruentController.java
new file mode 100644
index 0000000..fd3baba
--- /dev/null
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/qaAuditReport/controller/QaAuditReportIncongruentController.java
@@ -0,0 +1,96 @@
+package com.zt.life.modules.qaAuditReport.controller;
+
+
+import com.zt.common.annotation.LogOperation;
+import com.zt.common.constant.Constant;
+import com.zt.common.annotation.QueryParam;
+import com.zt.common.db.query.QueryFilter;
+import com.zt.common.servlet.Result;
+import com.zt.common.servlet.PageResult;
+import com.zt.common.validator.AssertUtils;
+import com.zt.common.validator.ValidatorUtils;
+import com.zt.common.validator.group.AddGroup;
+import com.zt.common.validator.group.DefaultGroup;
+import com.zt.common.validator.group.UpdateGroup;
+import com.zt.life.modules.qaAuditReport.model.QaAuditReportIncongruent;
+import com.zt.life.modules.qaAuditReport.service.QaAuditReportIncongruentService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import springfox.documentation.annotations.ApiIgnore;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+
+/**
+ * qa_audit_report_incongruent
+ *
+ * @author zt generator
+ * @since 1.0.0 2023-12-29
+ */
+@RestController
+@RequestMapping("/qaAuditReport/QaAuditReportIncongruent/")
+@Api(tags="qa_audit_report_incongruent")
+public class QaAuditReportIncongruentController {
+ @Autowired
+ private QaAuditReportIncongruentService qaAuditReportIncongruentService;
+
+ @GetMapping("page")
+ @ApiOperation("鍒嗛〉")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = Constant.Q.PAGE, value = Constant.QV.PAGE, required = true, dataType = Constant.QT.INT),
+ @ApiImplicitParam(name = Constant.Q.LIMIT, value = Constant.QV.LIMIT, required = true, dataType = Constant.QT.INT),
+ @ApiImplicitParam(name = Constant.Q.ORDER_FIELD, value = Constant.QV.ORDER_FIELD, dataType = Constant.QT.STRING),
+ @ApiImplicitParam(name = Constant.Q.ORDER, value = Constant.QV.ORDER, dataType = Constant.QT.STRING),
+ })
+ public PageResult<QaAuditReportIncongruent> page(@ApiIgnore @QueryParam QueryFilter queryFilter){
+
+ return PageResult.ok(qaAuditReportIncongruentService.page(queryFilter));
+ }
+
+ @GetMapping("{id}")
+ @ApiOperation("淇℃伅")
+ public Result<QaAuditReportIncongruent> get(@PathVariable("id") Long id){
+ QaAuditReportIncongruent data = qaAuditReportIncongruentService.get(id);
+
+ return Result.ok(data);
+ }
+
+ @PostMapping
+ @ApiOperation("鏂板")
+ @LogOperation("鏂板")
+ public Result insert(@RequestBody QaAuditReportIncongruent qaAuditReportIncongruent){
+ //鏁堥獙鏁版嵁
+ ValidatorUtils.validateEntity(qaAuditReportIncongruent, AddGroup.class, DefaultGroup.class);
+ qaAuditReportIncongruentService.insert(qaAuditReportIncongruent);
+
+ return Result.ok();
+ }
+
+ @PutMapping
+ @ApiOperation("淇敼")
+ @LogOperation("淇敼")
+ public Result update(@RequestBody QaAuditReportIncongruent qaAuditReportIncongruent){
+ //鏁堥獙鏁版嵁
+ ValidatorUtils.validateEntity(qaAuditReportIncongruent, UpdateGroup.class, DefaultGroup.class);
+ qaAuditReportIncongruentService.update(qaAuditReportIncongruent);
+
+ return Result.ok();
+ }
+
+ @DeleteMapping
+ @ApiOperation("鍒犻櫎")
+ @LogOperation("鍒犻櫎")
+ public Result delete(@RequestBody Long[] ids){
+ //鏁堥獙鏁版嵁
+ AssertUtils.isArrayEmpty(ids, "id");
+ qaAuditReportIncongruentService.delete(ids);
+
+ return Result.ok();
+ }
+
+}
diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/qaAuditReport/dao/QaAuditReportDao.java b/modules/mainPart/src/main/java/com/zt/life/modules/qaAuditReport/dao/QaAuditReportDao.java
new file mode 100644
index 0000000..b955732
--- /dev/null
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/qaAuditReport/dao/QaAuditReportDao.java
@@ -0,0 +1,23 @@
+package com.zt.life.modules.qaAuditReport.dao;
+
+import com.zt.common.dao.BaseDao;
+import com.zt.life.modules.qaAuditReport.model.QaAuditReport;
+import org.apache.ibatis.annotations.Mapper;
+
+
+import java.util.List;
+import java.util.Map;
+
+
+/**
+ * qa_audit_report
+ *
+ * @author zt generator
+ * @since 1.0.0 2023-12-29
+ */
+@Mapper
+public interface QaAuditReportDao extends BaseDao<QaAuditReport> {
+
+ List<QaAuditReport> getList(Map<String, Object> params);
+
+}
diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/qaAuditReport/dao/QaAuditReportIncongruentDao.java b/modules/mainPart/src/main/java/com/zt/life/modules/qaAuditReport/dao/QaAuditReportIncongruentDao.java
new file mode 100644
index 0000000..c34e1d7
--- /dev/null
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/qaAuditReport/dao/QaAuditReportIncongruentDao.java
@@ -0,0 +1,24 @@
+package com.zt.life.modules.qaAuditReport.dao;
+
+import com.zt.common.dao.BaseDao;
+import com.zt.life.modules.qaAuditReport.model.QaAuditReportIncongruent;
+import org.apache.ibatis.annotations.Mapper;
+
+
+import java.util.List;
+import java.util.Map;
+
+
+/**
+ * qa_audit_report_incongruent
+ *
+ * @author zt generator
+ * @since 1.0.0 2023-12-29
+ */
+@Mapper
+public interface QaAuditReportIncongruentDao extends BaseDao<QaAuditReportIncongruent> {
+
+ List<QaAuditReportIncongruent> getList(Map<String, Object> params);
+
+ List<QaAuditReportIncongruent> createList(Long projectId);
+}
diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/qaAuditReport/dto/QaAuditReportDto.java b/modules/mainPart/src/main/java/com/zt/life/modules/qaAuditReport/dto/QaAuditReportDto.java
new file mode 100644
index 0000000..0447597
--- /dev/null
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/qaAuditReport/dto/QaAuditReportDto.java
@@ -0,0 +1,34 @@
+package com.zt.life.modules.qaAuditReport.dto;
+
+import com.zt.life.modules.configAuditReport.model.ConfigAuditReport;
+import com.zt.life.modules.configAuditReport.model.ConfigAuditReportContent;
+import com.zt.life.modules.configAuditReport.model.ConfigAuditReportProblem;
+import com.zt.life.modules.project.model.Project;
+import com.zt.life.modules.qaAuditReport.model.QaAuditReport;
+import com.zt.life.modules.qaAuditReport.model.QaAuditReportIncongruent;
+import com.zt.life.sys.dto.OssDto;
+import com.zt.modules.workflow.dto.FlowInfoDto;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Data
+public class QaAuditReportDto {
+ private Long id;
+ private Long projectId;
+ private Long reportId;
+
+ @ApiModelProperty(value = "閰嶇疆瀹℃牳鎶ュ憡")
+ private QaAuditReport auditReport;
+ @ApiModelProperty(value = "娴嬭瘯椤圭洰鍩烘湰淇℃伅")
+ private Project project;
+
+ private FlowInfoDto flowInfoDto;
+ @ApiModelProperty(value = "闄勪欢")
+ private OssDto files;
+
+ @ApiModelProperty(value = "涓嶇鍚堥」鍒楄〃")
+ private List<QaAuditReportIncongruent> incongruentList = new ArrayList<>();
+}
diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/qaAuditReport/model/QaAuditReport.java b/modules/mainPart/src/main/java/com/zt/life/modules/qaAuditReport/model/QaAuditReport.java
new file mode 100644
index 0000000..7c02232
--- /dev/null
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/qaAuditReport/model/QaAuditReport.java
@@ -0,0 +1,63 @@
+package com.zt.life.modules.qaAuditReport.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.zt.common.entity.BusiEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.Date;
+
+/**
+ * qa_audit_report
+ *
+ * @author zt generator
+ * @since 1.0.0 2023-12-29
+ */
+@Data
+@EqualsAndHashCode(callSuper=false)
+@TableName("qa_audit_report")
+public class QaAuditReport extends BusiEntity {
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty(value = "椤圭洰ID")
+ private Long projectId;
+
+ @ApiModelProperty(value = "缂栧彿")
+ private String code;
+
+ @ApiModelProperty(value = "宸插畬鎴愮殑妫�鏌�")
+ private String completedCheck;
+
+ @ApiModelProperty(value = "qa鎬荤粨")
+ private String qaSummary;
+
+ @ApiModelProperty(value = "妫�鏌ヤ汉")
+ private String checker;
+
+ @ApiModelProperty(value = "妫�鏌ヤ汉ID")
+ private Long checkerId;
+
+ @ApiModelProperty(value = "妫�鏌ユ棩鏈�")
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ private Date checkDate;
+
+ @ApiModelProperty(value = "鐩戠潱浜烘剰瑙�")
+ private String supervisorOpinion;
+
+ @ApiModelProperty(value = "鐩戠潱浜虹鍚�")
+ private String supervisorSign;
+
+ @ApiModelProperty(value = "鐩戠潱浜篒D")
+ private Long supervisorId;
+
+ @ApiModelProperty(value = "鐩戠潱鏃ユ湡")
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ private Date superviseDate;
+
+ @ApiModelProperty(value = "骞翠唤")
+ private String year;
+
+}
diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/qaAuditReport/model/QaAuditReportIncongruent.java b/modules/mainPart/src/main/java/com/zt/life/modules/qaAuditReport/model/QaAuditReportIncongruent.java
new file mode 100644
index 0000000..3a0fe9b
--- /dev/null
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/qaAuditReport/model/QaAuditReportIncongruent.java
@@ -0,0 +1,54 @@
+package com.zt.life.modules.qaAuditReport.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.zt.common.entity.BusiEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.Date;
+
+/**
+ * qa_audit_report_incongruent
+ *
+ * @author zt generator
+ * @since 1.0.0 2023-12-29
+ */
+@Data
+@EqualsAndHashCode(callSuper=false)
+@TableName("qa_audit_report_incongruent")
+public class QaAuditReportIncongruent extends BusiEntity {
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty(value = "鎶ュ憡ID")
+ private Long reportId;
+
+ @ApiModelProperty(value = "椤圭洰宸ョ▼ID")
+ private Long projectId;
+
+ @ApiModelProperty(value = "搴忓彿")
+ private Integer no;
+
+ @ApiModelProperty(value = "涓嶇鍚堥」鍗曞彿")
+ private String oddNum;
+
+ @ApiModelProperty(value = "涓嶇鍚堥」鎻忚堪")
+ private String describe;
+
+ @ApiModelProperty(value = "鎵�灞炲伐浣滀骇鍝�/杩囩▼")
+ private String workProcess;
+
+ @ApiModelProperty(value = "鍙戠幇闃舵")
+ private String discoveryPhase;
+
+ @ApiModelProperty(value = "璐d换浜�")
+ private String chargePerson;
+
+ @ApiModelProperty(value = "鐘舵��")
+ private String status;
+
+ @ApiModelProperty(value = "澶囨敞")
+ private String remark;
+
+}
diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/qaAuditReport/service/QaAuditReportIncongruentService.java b/modules/mainPart/src/main/java/com/zt/life/modules/qaAuditReport/service/QaAuditReportIncongruentService.java
new file mode 100644
index 0000000..24a02a3
--- /dev/null
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/qaAuditReport/service/QaAuditReportIncongruentService.java
@@ -0,0 +1,51 @@
+package com.zt.life.modules.qaAuditReport.service;
+
+import com.zt.common.service.BaseService;
+import com.zt.life.modules.qaAuditReport.dao.QaAuditReportIncongruentDao;
+import com.zt.life.modules.qaAuditReport.model.QaAuditReportIncongruent;
+import org.springframework.stereotype.Service;
+import com.zt.common.db.query.QueryFilter;
+import javax.annotation.Resource;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+
+/**
+ * qa_audit_report_incongruent
+ *
+ * @author zt generator
+ * @since 1.0.0 2023-12-29
+ */
+@Service
+public class QaAuditReportIncongruentService extends BaseService<QaAuditReportIncongruentDao, QaAuditReportIncongruent> {
+
+ /**
+ * 鍒嗛〉鏌ヨ
+ *
+ * @param queryFilter
+ * @return
+ */
+ public List<QaAuditReportIncongruent> page(QueryFilter queryFilter) {
+ return baseDao.getList(queryFilter.getQueryParams());
+ }
+
+ /**
+ * 鍒犻櫎
+ *
+ * @param ids
+ */
+ public void delete(Long[] ids) {
+ super.deleteLogic(ids);
+ }
+
+ public List<QaAuditReportIncongruent> getList(Long reportId) {
+ Map<String, Object> params = new HashMap<>();
+ params.put("reportId",reportId);
+ return baseDao.getList(params);
+ }
+
+ public List<QaAuditReportIncongruent> createList(Long projectId) {
+ return baseDao.createList(projectId);
+ }
+}
diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/qaAuditReport/service/QaAuditReportService.java b/modules/mainPart/src/main/java/com/zt/life/modules/qaAuditReport/service/QaAuditReportService.java
new file mode 100644
index 0000000..b617d53
--- /dev/null
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/qaAuditReport/service/QaAuditReportService.java
@@ -0,0 +1,182 @@
+package com.zt.life.modules.qaAuditReport.service;
+
+import cn.hutool.core.convert.Convert;
+import com.zt.common.service.BaseService;
+import com.zt.common.utils.CommonUtils;
+import com.zt.life.export.dto.WordFile;
+import com.zt.life.export.service.WordFileService;
+import com.zt.life.modules.baselineRelease.dto.BaselineDto;
+import com.zt.life.modules.configAuditReport.dto.ConfigAuditDto;
+import com.zt.life.modules.configAuditReport.model.ConfigAuditReport;
+import com.zt.life.modules.configAuditReport.model.ConfigAuditReportContent;
+import com.zt.life.modules.configAuditReport.model.ConfigAuditReportProblem;
+import com.zt.life.modules.configAuditReport.service.ConfigAuditReportContentService;
+import com.zt.life.modules.configAuditReport.service.ConfigAuditReportProblemService;
+import com.zt.life.modules.mainPart.utils.GetFilesPath;
+import com.zt.life.modules.mainPart.utils.GetShowDictList;
+import com.zt.life.modules.project.service.ProjectService;
+import com.zt.life.modules.qaAuditReport.dao.QaAuditReportDao;
+import com.zt.life.modules.qaAuditReport.dto.QaAuditReportDto;
+import com.zt.life.modules.qaAuditReport.model.QaAuditReport;
+import com.zt.life.modules.qaAuditReport.model.QaAuditReportIncongruent;
+import com.zt.life.sys.service.SysOssConfigService;
+import com.zt.modules.coderule.service.SysCodeRuleService;
+import com.zt.modules.oss.service.SysOssService;
+import com.zt.modules.workflow.dto.FlowInfoDto;
+import com.zt.modules.workflow.service.WorkflowService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.zt.common.db.query.QueryFilter;
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.FileNotFoundException;
+import java.io.UnsupportedEncodingException;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+
+/**
+ * qa_audit_report
+ *
+ * @author zt generator
+ * @since 1.0.0 2023-12-29
+ */
+@Service
+public class QaAuditReportService extends BaseService<QaAuditReportDao, QaAuditReport> {
+ @Autowired
+ private SysOssConfigService sysOssConfigService;
+
+ @Autowired
+ private SysOssService sysOssService;
+
+ @Autowired
+ private SysCodeRuleService sysCodeRuleService;
+
+ @Autowired
+ private ProjectService projectService;
+
+ @Autowired
+ private GetShowDictList getShowDictList;
+
+ @Autowired
+ private WordFileService wordFileService;
+
+ @Autowired
+ private GetFilesPath getFilesPath;
+
+ @Autowired
+ private QaAuditReportIncongruentService incongruentService;
+
+
+ @Autowired
+ private WorkflowService workflowService;
+ /**
+ * 鍒嗛〉鏌ヨ
+ *
+ * @param queryFilter
+ * @return
+ */
+ public List<QaAuditReport> page(QueryFilter queryFilter) {
+ List<QaAuditReport> list = baseDao.getList(queryFilter.getQueryParams());
+ if (list != null && list.size() > 0) {
+ workflowService.getRunFlow(list, "pzbgsh");
+ sysOssService.setListOsses(list, "qa_audit_report");
+ }
+ return list;
+ }
+
+ /**
+ * 鍒犻櫎
+ *
+ * @param ids
+ */
+ public void delete(Long[] ids) {
+ super.deleteLogic(ids);
+ }
+
+ public QaAuditReportDto getDto(Long projectId, Long reportId) {
+ QaAuditReportDto data = new QaAuditReportDto();
+ if (reportId != null) {
+ data.setId(reportId);
+ QaAuditReport auditReport = this.get(reportId);
+ data.setAuditReport(auditReport);
+ if (auditReport != null && projectId == null) {
+ projectId = auditReport.getProjectId();
+ }
+ List<QaAuditReportIncongruent> incongruentList = incongruentService.getList(reportId);
+ data.setIncongruentList(incongruentList);
+ } else {
+ QaAuditReport auditReport = new QaAuditReport();
+ data.setAuditReport(auditReport);
+ List<QaAuditReportIncongruent> incongruentList = incongruentService.createList(projectId);
+ data.setIncongruentList(incongruentList);
+ }
+ if (projectId != null) {
+ data.setProjectId(projectId);
+ data.setProject(projectService.get(projectId));
+ }
+ return data;
+ }
+
+ public Boolean save(QaAuditReportDto qaAuditReportDto) {
+ Long reportId = qaAuditReportDto.getAuditReport().getId();
+ if (reportId != null)
+ baseDao.updateById(qaAuditReportDto.getAuditReport());
+ else {
+ Map<String, String> map = new HashMap<>();
+ map.put("funCode", "qa_audit_report");
+ map.put("projectId", qaAuditReportDto.getProjectId().toString());
+ qaAuditReportDto.getAuditReport().setProjectId(qaAuditReportDto.getProjectId());
+ qaAuditReportDto.getAuditReport().setCode(sysCodeRuleService.getNewCode(map));
+ baseDao.insert(qaAuditReportDto.getAuditReport());
+ reportId = qaAuditReportDto.getAuditReport().getId();
+ }
+
+ for (QaAuditReportIncongruent incongruent : qaAuditReportDto.getIncongruentList()) {
+ incongruent.setReportId(reportId);
+ if (incongruent.getId() != null) {
+ QaAuditReportIncongruent incongruent2 = incongruentService.get(incongruent.getId());
+ if (CommonUtils.isActureChangeData(incongruent,incongruent2)) {
+ incongruentService.update(incongruent);
+ }
+ } else {
+ incongruent.setProjectId(qaAuditReportDto.getAuditReport().getProjectId());
+ incongruentService.insert(incongruent);
+ }
+ }
+
+ sysOssConfigService.updateOss(qaAuditReportDto.getId(), qaAuditReportDto.getFiles());// 淇濆瓨闄勪欢
+ Long bizId = qaAuditReportDto.getAuditReport().getId();
+ FlowInfoDto flowInfoDto = qaAuditReportDto.getFlowInfoDto();
+
+ if (flowInfoDto != null && flowInfoDto.getSubmitType() != null && "tj,bl".contains(flowInfoDto.getSubmitType())) {
+ if ("tj".equals(flowInfoDto.getSubmitType())) {
+ workflowService.startFlow(flowInfoDto.getFlowCode(), bizId);
+ }
+ workflowService.approvePass(flowInfoDto.getFlowCode(), bizId, flowInfoDto.getStepIdMark());
+ }
+ return true;
+ }
+
+ public void exportQaReport(Long id, HttpServletRequest request, HttpServletResponse response) {
+ try {
+ QaAuditReportDto dataObj = this.getDto(null, id);
+
+ String CheckerPath = "鏂囦欢鍥剧墖:" + getFilesPath.getSignPath(Convert.toLong(dataObj.getAuditReport().getCheckerId()));
+ dataObj.getAuditReport().setChecker(CheckerPath);
+ String SupervisorPath = "鏂囦欢鍥剧墖:" + getFilesPath.getSignPath(Convert.toLong(dataObj.getAuditReport().getSupervisorId()));
+ dataObj.getAuditReport().setSupervisorSign(SupervisorPath);
+
+ WordFile wordFile = new WordFile();
+ wordFile.setModulePath("QA瀹℃牳鎶ュ憡.docx");
+ wordFile.setWordName(dataObj.getProject().getSoftwareName() + "_QA瀹℃牳鎶ュ憡.docx");
+ wordFileService.exportWordFile(request, dataObj, wordFile, response);
+ } catch (UnsupportedEncodingException e) {
+ e.printStackTrace();
+ } catch (FileNotFoundException e) {
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/testReviewComment/controller/TestReviewCommentController.java b/modules/mainPart/src/main/java/com/zt/life/modules/testReviewComment/controller/TestReviewCommentController.java
index afd33b0..4c288f2 100644
--- a/modules/mainPart/src/main/java/com/zt/life/modules/testReviewComment/controller/TestReviewCommentController.java
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/testReviewComment/controller/TestReviewCommentController.java
@@ -16,6 +16,8 @@
import com.zt.life.modules.testReviewComment.dto.ReviewCommentDto;
import com.zt.life.modules.testReviewComment.model.TestReviewComment;
import com.zt.life.modules.testReviewComment.service.TestReviewCommentService;
+import com.zt.life.sys.dto.OssDto;
+import com.zt.life.sys.service.SysOssConfigService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
@@ -41,6 +43,8 @@
public class TestReviewCommentController {
@Autowired
private TestReviewCommentService testReviewCommentService;
+ @Autowired
+ private SysOssConfigService sysOssConfigService;
@GetMapping("page")
@ApiOperation("鍒嗛〉")
@@ -51,6 +55,7 @@
@ApiImplicitParam(name = Constant.Q.ORDER, value = Constant.QV.ORDER, dataType = Constant.QT.STRING),
@ApiImplicitParam(name = "code", value = "娴嬭瘯璇勫缂栧彿", dataType = Constant.QT.STRING, format = "a.code^LK"),
@ApiImplicitParam(name = "softwareName", value = "椤圭洰鍚嶇О", dataType = Constant.QT.STRING, format = "p.software_name^LK"),
+ @ApiImplicitParam(name = "softwareIdentity", value = "椤圭洰鏍囪瘑", dataType = Constant.QT.STRING, format = "p.software_identity^LK"),
@ApiImplicitParam(name = "pageCode", value = "閰嶇疆椤规爣璇�", dataType = Constant.QT.STRING, format = "a.page_code^LK")
})
public PageResult<TestReviewComment> page(@ApiIgnore @QueryParam QueryFilter queryFilter){
@@ -61,6 +66,12 @@
@ApiOperation("淇℃伅")
public Result<ReviewCommentDto> getDto(Long commentId, Long projectId, String pageCode) {
ReviewCommentDto data = testReviewCommentService.getDto(commentId, projectId, pageCode);
+ if (commentId!=null) {
+ OssDto ossDto = sysOssConfigService.getOssByBusiType(commentId, "test_review_comment_"+ pageCode);
+ if (ossDto != null) {
+ data.setFiles(ossDto);
+ }
+ }
return Result.ok(data);
}
diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/testReviewComment/dto/ReviewCommentDto.java b/modules/mainPart/src/main/java/com/zt/life/modules/testReviewComment/dto/ReviewCommentDto.java
index 356b6e8..cadad1d 100644
--- a/modules/mainPart/src/main/java/com/zt/life/modules/testReviewComment/dto/ReviewCommentDto.java
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/testReviewComment/dto/ReviewCommentDto.java
@@ -5,6 +5,7 @@
import com.zt.life.modules.project.model.Project;
import com.zt.life.modules.sysBaseInfo.model.TestAgencyInfo;
import com.zt.life.modules.testReviewComment.model.TestReviewComment;
+import com.zt.life.sys.dto.OssDto;
import com.zt.modules.workflow.dto.FlowInfoDto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@@ -18,6 +19,8 @@
private Long projectId;//椤圭洰ID
private String pageCode;//閰嶇疆椤圭被鍨�
+ @ApiModelProperty(value = "闄勪欢")
+ private OssDto files;
@ApiModelProperty(value = "娴嬭瘯璇勫鎰忚")
private TestReviewComment reviewComment;
diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/testReviewComment/model/TestReviewComment.java b/modules/mainPart/src/main/java/com/zt/life/modules/testReviewComment/model/TestReviewComment.java
index cba340a..5068aa8 100644
--- a/modules/mainPart/src/main/java/com/zt/life/modules/testReviewComment/model/TestReviewComment.java
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/testReviewComment/model/TestReviewComment.java
@@ -1,5 +1,6 @@
package com.zt.life.modules.testReviewComment.model;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.zt.common.entity.BusiEntity;
@@ -35,4 +36,8 @@
@ApiModelProperty(value = "璇勫浜烘暟")
private Integer reviewerNum;
+ @TableField(exist = false)
+ @ApiModelProperty(value = "椤圭洰鍚嶇О")
+ private String softwareName;
+
}
diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/testReviewComment/service/TestReviewCommentService.java b/modules/mainPart/src/main/java/com/zt/life/modules/testReviewComment/service/TestReviewCommentService.java
index 7a93a5b..a5e6639 100644
--- a/modules/mainPart/src/main/java/com/zt/life/modules/testReviewComment/service/TestReviewCommentService.java
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/testReviewComment/service/TestReviewCommentService.java
@@ -14,12 +14,14 @@
import com.zt.life.modules.testReviewComment.dto.ReviewCommentDto;
import com.zt.life.modules.testReviewComment.model.TestReviewComment;
import com.zt.life.sys.dto.OssDto;
+import com.zt.life.sys.service.SysOssConfigService;
import com.zt.modules.coderule.service.SysCodeRuleService;
import com.zt.modules.oss.service.SysOssService;
import com.zt.modules.workflow.dto.FlowInfoDto;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.zt.common.db.query.QueryFilter;
+
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -28,16 +30,18 @@
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
/**
* test_review_comment
*
- * @author zt generator
+ * @author zt generator
* @since 1.0.0 2023-12-28
*/
@Service
-public class TestReviewCommentService extends BaseService<TestReviewCommentDao, TestReviewComment> {
+public class TestReviewCommentService extends BaseService<TestReviewCommentDao, TestReviewComment> {
@Autowired
private SysOssService sysOssService;
@@ -46,7 +50,7 @@
private ProjectService projectService;
@Autowired
- private SysCodeRuleService sysCodeRuleService;
+ private SysOssConfigService sysOssConfigService;
@Autowired
private WordFileService wordFileService;
@@ -61,9 +65,11 @@
* @return
*/
public List<TestReviewComment> page(QueryFilter queryFilter) {
+ String pageCode = String.valueOf(queryFilter.getParams().get("pageCode"));
+ pageCode=pageCode.replace("%","");
List<TestReviewComment> list = baseDao.getList(queryFilter.getQueryParams());
if (list.size() > 0) {
- sysOssService.setListOsses(list, "test_review_comment");
+ sysOssService.setListOsses(list, "test_review_comment_" + pageCode);
}
return list;
}
@@ -89,6 +95,7 @@
}
} else {
TestReviewComment reviewComment = new TestReviewComment();
+ reviewComment.setPageCode(pageCode);
data.setReviewComment(reviewComment);
}
if (projectId != null) {
@@ -107,15 +114,22 @@
baseDao.insert(reviewCommentDto.getReviewComment());
commentId = reviewCommentDto.getReviewComment().getId();
}
+ sysOssConfigService.updateOss(reviewCommentDto.getId(), reviewCommentDto.getFiles());// 淇濆瓨闄勪欢
return commentId;
}
public void exportReviewComment(Long id, String pageCode, HttpServletRequest request, HttpServletResponse response) {
try {
ReviewCommentDto dataObj = this.getDto(id, null, pageCode);
+ Map<String, String> map = new HashMap<>();
+ map.put("plan", "璁″垝");
+ map.put("ready", "灏辩华");
+ map.put("summary", "娴嬭瘯鎬荤粨");
+ String type = map.get(pageCode);
+ dataObj.setPageCode(type);
WordFile wordFile = new WordFile();
- wordFile.setModulePath("鍩虹嚎鍙戝竷涔�.docx");
- wordFile.setWordName(dataObj.getProject().getSoftwareName() + "_鍩虹嚎鍙戝竷涔�.docx");
+ wordFile.setModulePath("娴嬭瘯" + type + "璇勫鎰忚.docx");
+ wordFile.setWordName(dataObj.getProject().getSoftwareName() + "_娴嬭瘯" + type + "璇勫鎰忚.docx");
wordFileService.exportWordFile(request, dataObj, wordFile, response);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
diff --git a/modules/mainPart/src/main/resources/mapper/configAuditReport/ConfigAuditReportDao.xml b/modules/mainPart/src/main/resources/mapper/configAuditReport/ConfigAuditReportDao.xml
index da5da9d..e6b9fc2 100644
--- a/modules/mainPart/src/main/resources/mapper/configAuditReport/ConfigAuditReportDao.xml
+++ b/modules/mainPart/src/main/resources/mapper/configAuditReport/ConfigAuditReportDao.xml
@@ -4,10 +4,11 @@
<mapper namespace="com.zt.life.modules.configAuditReport.dao.ConfigAuditReportDao">
<select id="getList" resultType="com.zt.life.modules.configAuditReport.model.ConfigAuditReport">
- select a.*
+ select a.*,p.software_identity,p.software_name
from config_audit_report a
+ INNER JOIN project p ON p.id = a.project_id
<where>
- a.is_delete = 0
+ a.is_delete = 0 and p.is_delete = 0
<if test="whereSql!=null">
and ${whereSql}
</if>
diff --git a/modules/mainPart/src/main/resources/mapper/qaAuditReport/QaAuditReportDao.xml b/modules/mainPart/src/main/resources/mapper/qaAuditReport/QaAuditReportDao.xml
new file mode 100644
index 0000000..85dc710
--- /dev/null
+++ b/modules/mainPart/src/main/resources/mapper/qaAuditReport/QaAuditReportDao.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+
+<mapper namespace="com.zt.life.modules.qaAuditReport.dao.QaAuditReportDao">
+
+ <select id="getList" resultType="com.zt.life.modules.qaAuditReport.model.QaAuditReport">
+ select a.*
+ from qa_audit_report a
+ <where>
+ a.is_delete = 0
+ <if test="whereSql!=null">
+ and ${whereSql}
+ </if>
+ </where>
+ <if test="orderBySql!=null">
+ ORDER BY ${orderBySql}
+ </if>
+ </select>
+
+</mapper>
diff --git a/modules/mainPart/src/main/resources/mapper/qaAuditReport/QaAuditReportIncongruentDao.xml b/modules/mainPart/src/main/resources/mapper/qaAuditReport/QaAuditReportIncongruentDao.xml
new file mode 100644
index 0000000..c8c70c6
--- /dev/null
+++ b/modules/mainPart/src/main/resources/mapper/qaAuditReport/QaAuditReportIncongruentDao.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+
+<mapper namespace="com.zt.life.modules.qaAuditReport.dao.QaAuditReportIncongruentDao">
+
+ <select id="getList" resultType="com.zt.life.modules.qaAuditReport.model.QaAuditReportIncongruent">
+ select a.*
+ from qa_audit_report_incongruent a
+ <where>
+ a.is_delete = 0
+ <if test="reportId!=null">
+ and a.report_id = ${reportId}
+ </if>
+ </where>
+ <if test="orderBySql!=null">
+ ORDER BY ${orderBySql}
+ </if>
+ </select>
+ <select id="createList" resultType="com.zt.life.modules.qaAuditReport.model.QaAuditReportIncongruent">
+ select b.code as oddNum,a.check_content as 'describe',b.page_code as discoveryPhase,b.processor as chargePerson,
+ case when b.processor is null then '鏈鐞�'
+ else '宸查棴鐜�' end as status,
+ a.id as src_id
+ from test_check_order_list a,
+ test_check_order b
+ where b.project_id = ${projectId} and b.id =a.check_order_id
+ and a.is_delete = 0 and b.is_delete = 0
+ and a.check_result = 2
+ and b.page_code in ('','','','')
+ order by code,no
+ </select>
+
+</mapper>
diff --git a/modules/mainPart/src/main/resources/mapper/testReviewComment/TestReviewCommentDao.xml b/modules/mainPart/src/main/resources/mapper/testReviewComment/TestReviewCommentDao.xml
index 4ac09fd..a63ea34 100644
--- a/modules/mainPart/src/main/resources/mapper/testReviewComment/TestReviewCommentDao.xml
+++ b/modules/mainPart/src/main/resources/mapper/testReviewComment/TestReviewCommentDao.xml
@@ -17,5 +17,4 @@
ORDER BY ${orderBySql}
</if>
</select>
-
</mapper>
diff --git a/web/src/views/modules/configAuditReport/ConfigAuditReport-AddOrUpdate.vue b/web/src/views/modules/configAuditReport/ConfigAuditReport-AddOrUpdate.vue
index d8a2415..3c0d894 100644
--- a/web/src/views/modules/configAuditReport/ConfigAuditReport-AddOrUpdate.vue
+++ b/web/src/views/modules/configAuditReport/ConfigAuditReport-AddOrUpdate.vue
@@ -4,13 +4,13 @@
label-width="120px" class="configAuditFormAuto">
<div>
<el-form-item label-width="60px" label="缂栧彿:" style="width:100%;margin-bottom: -5px">
- <span>{{dataForm.circulatOrder.code || '缂栧彿鑷姩鐢熸垚'}}</span>
+ <span>{{dataForm.auditReport.code || '缂栧彿鑷姩鐢熸垚'}}</span>
</el-form-item>
</div>
<div style="border: 1px solid rgba(0,0,0,.2);width: 99%">
<div style="border-bottom: 1px solid rgba(0,0,0,.2);" class="configAuditContentWidth">
<el-form-item class="marginTopAndMarginBottom" label="椤圭洰鍚嶇О" style="width: 48%">
- <el-input v-model="dataForm.testAgencyInfo.agencyName" placeholder="椤圭洰鍚嶇О"></el-input>
+ <el-input v-model="dataForm.project.softwareName" placeholder="椤圭洰鍚嶇О"></el-input>
</el-form-item>
<el-form-item class="marginTopAndMarginBottom" label="椤圭洰鏍囪瘑" style="width: 48%">
<el-input v-model="dataForm.project.softwareIdentity" placeholder="椤圭洰鏍囪瘑"></el-input>
@@ -20,37 +20,31 @@
<div>
<div style="text-align: center;font-weight: 600;border-bottom:1px solid rgba(0,0,0,.2);height: 40px;line-height: 40px;font-size: 18px">瀹℃牳鍐呭</div>
<el-form-item label="鐘舵�佹爣璁�" label-width="150px" style="width:100%;padding-left:20px;margin-bottom:0">
- <zt-dict v-model="dataForm.circulatOrder.itemRequire" :radio="true"
- dict="is_or_not"></zt-dict>
+ 鈭氬悎鏍� 脳涓嶅悎鏍� NA涓嶉�傜敤
</el-form-item>
<div class="table-container">
<el-table ref="tableConfigAuditList" class="el-software el-margin-top-bot" border
- :data="dataForm.technicalList"
+ :data="dataForm.contentList"
stripe>
<el-table-column prop="no" align="center" width="60" label="搴忓彿">
<template slot-scope="scope">
<span v-html="indexFormat(scope.$index)"></span>
</template>
</el-table-column>
- <el-table-column prop="infoName" min-width="180" label="鎶�鏈祫鏂欏悕绉�">
+ <el-table-column prop="auditContent" min-width="180" label="瀹℃牳鍐呭">
<template v-slot="{ row }">
- <el-input v-model="row.name" placeholder="鎶�鏈祫鏂欏悕绉�"></el-input>
+ <el-input v-model="row.auditContent" placeholder="瀹℃牳鍐呭"></el-input>
</template>
</el-table-column>
- <el-table-column prop="identify" align="center" width="150" label="鏍囪瘑">
+ <el-table-column prop="auditResult" align="center" width="150" label="瀹℃牳缁撴灉">
<template v-slot="{ row }">
- <el-input v-model="row.version" placeholder="鏍囪瘑"></el-input>
+ <zt-dict v-model="row.auditResult" placeholder="瀹℃牳缁撴灉" dict="status_tag"
+ clearable></zt-dict>
</template>
</el-table-column>
<el-table-column prop="remark" label="澶囨敞" width="100" align="center">
<template v-slot="{ row }">
<el-input v-model="row.remark" placeholder="澶囨敞"></el-input>
- </template>
- </el-table-column>
- <el-table-column fixed="right" prop="files" label="涓婁紶闄勪欢" width="300" align="center">
- <template v-slot="{ row }">
- <table-uploader busi-type="circulat_order" model-name="row" :dataForm="row"
- v-model="row.files"/>
</template>
</el-table-column>
</el-table>
@@ -60,32 +54,32 @@
<div style="text-align: center;font-weight: 600;height: 40px;line-height: 40px;font-size: 18px">鍙戠幇鐨勯棶棰�</div>
<div class="table-container">
<el-table ref="tableConfigAuditList" class="el-software el-margin-top-bot" border
- :data="dataForm.technicalList"
+ :data="dataForm.problemList"
stripe>
<el-table-column prop="no" align="center" width="60" label="搴忓彿">
<template slot-scope="scope">
<span v-html="indexFormat(scope.$index)"></span>
</template>
</el-table-column>
- <el-table-column prop="infoName" min-width="180" label="鎶�鏈祫鏂欏悕绉�">
+ <el-table-column prop="problemDescription" min-width="180" label="闂鎻忚堪">
<template v-slot="{ row }">
- <el-input v-model="row.name" placeholder="鎶�鏈祫鏂欏悕绉�"></el-input>
+ <el-input v-model="row.problemDescription" placeholder="闂鎻忚堪"></el-input>
</template>
</el-table-column>
- <el-table-column prop="identify" align="center" width="150" label="鏍囪瘑">
+ <el-table-column prop="isNotTrue" align="center" width="150" label="鏄惁涓轰笉绗﹀悎椤�">
<template v-slot="{ row }">
- <el-input v-model="row.version" placeholder="鏍囪瘑"></el-input>
+ <zt-dict v-model="row.isNotTrue" placeholder="鏄惁涓轰笉绗﹀悎椤�" dict="is_or_not" :radio="true"
+ clearable></zt-dict>
</template>
</el-table-column>
- <el-table-column prop="remark" label="澶囨敞" width="100" align="center">
+ <el-table-column prop="problemRectification" label="闂鏁存敼鎯呭喌" width="100" align="center">
<template v-slot="{ row }">
- <el-input v-model="row.remark" placeholder="澶囨敞"></el-input>
+ <el-input v-model="row.problemRectification" placeholder="闂鏁存敼鎯呭喌"></el-input>
</template>
</el-table-column>
- <el-table-column fixed="right" prop="files" label="涓婁紶闄勪欢" width="300" align="center">
+ <el-table-column prop="discoveryPhase" label="鍙戠幇闃舵" width="100" align="center">
<template v-slot="{ row }">
- <table-uploader busi-type="circulat_order" model-name="row" :dataForm="row"
- v-model="row.files"/>
+ <el-input v-model="row.discoveryPhase" placeholder="鍙戠幇闃舵"></el-input>
</template>
</el-table-column>
</el-table>
@@ -102,7 +96,9 @@
</div>
<div class="el-border-left-right" style="width: 20%;height: 40px;">
<el-form-item style="width: 100%;padding-left:20px;margin:0;">
- {{dataForm.circulatOrder.calibratDetector}}
+ <el-input type="textarea" :rows="1" placeholder="璇疯緭鍏ュ鏍镐汉鍛�"
+ v-model="dataForm.auditReport.auditor"></el-input>
+ <!--{{dataForm.configAuditReport.auditor}}-->
</el-form-item>
</div>
<div style="width: 52px;text-align: center;font-weight: 600">
@@ -110,11 +106,21 @@
</div>
<div class="el-border-left" style="width: 20%;height: 40px;">
<el-form-item style="width: 100%;padding-left:20px;margin:0;">
- <!-- {{dataForm.circulatOrder.detectDate}}-->
- {{ dataForm.circulatOrder.detectDate | filterTime('YYYY骞碝M鏈圖D鏃�') }}
+ <el-date-picker
+ v-model="dataForm.auditReport.auditorDate"
+ type="date"
+ placeholder="璇烽�夋嫨鏃ユ湡">
+ </el-date-picker>
+ <!--{{ dataForm.configAuditReport.auditorDate | filterTime('YYYY骞碝M鏈圖D鏃�') }}-->
</el-form-item>
</div>
</div>
+ </div>
+ <div class="el-flex report-sc" style="height: 60px">
+ <el-form-item class="marginTopAndMarginBottom" style="width: 100%">
+ <config-uploader :lineHeight="true" busi-type="config_audit_report" model-name="dataForm" :dataForm="dataForm"
+ v-model="dataForm.files"/>
+ </el-form-item>
</div>
</el-form>
<template v-slot:footer>
@@ -130,51 +136,19 @@
export default {
data() {
return {
- // dataForm: {
- // id: '',
- // configAuditReport:{
- // code: '',
- // auditor: '',
- // auditorDate: '',
- // },
- // project: {
- // softwareIdentity: '',
- // softwareName: ''
- // },
- // problemList:[],
- // contentList:[]
- // },
dataForm: {
id: '',
- circulatOrder: {
- code: '1',
- itemAccept: '',
- itemRequire: '',
- itemOther: '',
- acceptSituation: '',
- acceptDate: '',
- calibratDetector: '',
- detectDate: '',
- detectSituation: '',
- warehouse: '',
- warehouseDate: '',
- warehouseSituation: '',
- itemIssuer: '',
- issueDate: '',
- issueSituation: '',
- remark: '',
- virusLibraryVersion:'',
- itemAcceptor:''
+ auditReport:{
+ code: '',
+ auditor: '',
+ auditorDate: '',
},
project: {
softwareIdentity: '',
- softwareName: '',
+ softwareName: ''
},
- testAgencyInfo: {
- agencyName: '',
- },
- technicalList: [],
- flowInfoDto: {}
+ problemList:[],
+ contentList:[]
}
}
},
@@ -211,7 +185,7 @@
console.log(this.dataForm, "getInfo this.dataForm")
},
addConfigAuditRow() {
- this.dataForm.technicalList.push({})
+ this.dataForm.problemList.push({})
this.$nextTick(() => {
const tableBody = this.$refs.tableConfigAuditList.$el.querySelector('.el-table__body-wrapper')
tableBody.scrollTop = tableBody.scrollHeight;
@@ -222,11 +196,12 @@
token: Cookies.get('token'),
id:this.dataForm.id
})
- let apiURL = `/configAuditReport/ConfigAuditReport/exportReport`
+ let apiURL = `/configAuditReport/ConfigAuditReport/exportConfigAudit`
window.location.href = `${window.SITE_CONFIG['apiURL']}${apiURL}?${params}`
},
// 琛ㄥ崟鎻愪氦
async formSubmit() {
+ console.log(this.dataForm,"formSubmit")
let res = await this.$http[!this.dataForm.id ? 'post' : 'put']('/configAuditReport/ConfigAuditReport/', this.dataForm)
if (res.success) {
await this.$tip.success()
@@ -267,4 +242,7 @@
.configAuditFormAuto .el-radio {
margin-right: 10px;
}
+.report-sc > .el-form-item > .el-form-item__content {
+ width:100%;
+}
</style>
diff --git a/web/src/views/modules/configAuditReport/ConfigAuditReport.vue b/web/src/views/modules/configAuditReport/ConfigAuditReport.vue
index a316a59..00cdf63 100644
--- a/web/src/views/modules/configAuditReport/ConfigAuditReport.vue
+++ b/web/src/views/modules/configAuditReport/ConfigAuditReport.vue
@@ -1,7 +1,7 @@
<template>
<el-card shadow="never" class="aui-card--fill">
<div class="mod-configAuditReport-configAuditReport}">
- <zt-table-wraper query-url="/configAuditReport/ConfigAuditReport/page" delete-url="/configAuditReport/ConfigAuditReport" v-slot="{ table }">
+ <zt-table-wraper query-url="/configAuditReport/ConfigAuditReport/page" delete-url="/configAuditReport/ConfigAuditReport/deleteConfigAudit" v-slot="{ table }">
<el-form :inline="true" :model="dataForm" @keyup.enter.native="table.query()">
<el-form-item>
<el-input v-model="dataForm.code" placeholder="璇疯緭鍏ョ紪鍙�" clearable></el-input>
@@ -21,9 +21,15 @@
<el-table v-loading="table.dataLoading" :data="table.dataList" height="100px" v-adaptive="{bottomOffset:70}" border @selection-change="table.selectionChangeHandle">
<el-table-column type="selection" width="40"/>
<el-table-column prop="code" label="缂栧彿"/>
- <el-table-column prop="softwareIdentity" label="缂栧彿"/>
- <el-table-column prop="softwareName" label="缂栧彿"/>
- <zt-table-column-handle :table="table" edit-perm="configAuditReport:update" delete-perm="configAuditReport::delete"/>
+ <el-table-column prop="softwareName" label="椤圭洰鍚嶇О"/>
+ <el-table-column prop="softwareIdentity" label="椤圭洰鏍囪瘑"/>
+ <zt-table-column-handle :table="table" edit-perm="configAuditReport:update" delete-perm="configAuditReport::delete">
+ <template v-slot="{ row }">
+ <zt-table-button size="small" v-show = "row.accessoryMap" type="primary"
+ @click="preview(row)">棰勮
+ </zt-table-button>
+ </template>
+ </zt-table-column-handle>
</el-table>
<!-- 寮圭獥, 鏂板 / 淇敼 -->
<add-or-update ref="addOrUpdate" @refreshDataList="table.query"/>
diff --git a/web/src/views/modules/contractReview/ContractReview-AddOrUpdate.vue b/web/src/views/modules/contractReview/ContractReview-AddOrUpdate.vue
index 2dba46d..0c49fec 100644
--- a/web/src/views/modules/contractReview/ContractReview-AddOrUpdate.vue
+++ b/web/src/views/modules/contractReview/ContractReview-AddOrUpdate.vue
@@ -129,7 +129,6 @@
<el-button v-if="dataForm.disabled" type="primary" @click="print()">鎵撳嵃</el-button>
</template>
</zt-dialog>
-
</template>
<script>
@@ -183,6 +182,7 @@
let params = {
reviewId: this.dataForm.id,
projectId: this.dataForm.projectId
+
}
let res = await this.$http.get(`/contractReview/ContractReview/getDto`, {params: params})
this.dataForm = {
diff --git a/web/src/views/modules/qaAuditReport/QaAuditReport-AddOrUpdate.vue b/web/src/views/modules/qaAuditReport/QaAuditReport-AddOrUpdate.vue
new file mode 100644
index 0000000..b9dc1b4
--- /dev/null
+++ b/web/src/views/modules/qaAuditReport/QaAuditReport-AddOrUpdate.vue
@@ -0,0 +1,243 @@
+<template>
+ <zt-dialog ref="dialog" column="3" :title="title" :stepMarker="stepMarker" @confirm="formSubmit">
+ <el-form ref="dataForm" style="padding-top: 0" :inline="true" :disabled="dataForm.disabled" :model="dataForm"
+ label-width="120px" class="contractFormAuto">
+ <div>
+ <el-form-item label-width="60px" label="缂栧彿:" style="width:100%;margin-bottom: -5px">
+ <span>{{ dataForm.auditReport.code || '缂栧彿鑷姩鐢熸垚' }}</span>
+ </el-form-item>
+ </div>
+ <div style="border: 1px solid rgba(0,0,0,.2);width: 99%">
+ <div style="border-bottom: 1px solid rgba(0,0,0,.2);" class="contractContentWidth">
+ <el-form-item class="marginTopAndMarginBottom" label="瀹㈡埛鍚嶇О" style="width: 49%">
+ <el-input v-model="dataForm.testAgencyInfo.agencyName" placeholder="璇疯緭鍏ュ鎴峰悕绉�"></el-input>
+ </el-form-item>
+ <el-form-item class="marginTopAndMarginBottom" label="鑱旂郴鐢佃瘽" style="width: 49%">
+ <el-input v-model="dataForm.testAgencyInfo.labContactNum" placeholder="璇疯緭鍏ヨ仈绯荤數璇�"></el-input>
+ </el-form-item>
+ <el-form-item class="marginTopAndMarginBottom reviewLeft" style="width: 49%">
+ <zt-dict v-model="dataForm.contractReview.reviewType" :radio="true" dict="review_type"></zt-dict>
+ </el-form-item>
+ <el-form-item label-width="160px" class="lastChild" label="鍘熷鎵樺崟缂栧彿:" style="width: 49%">
+ <span>{{ dataForm.contractReview.orderCode }}</span>
+ </el-form-item>
+ </div>
+ <div class="el-flexContractDialog el-border-bottom">
+ <div class="DFormWidth DAlign DHold">
+ 璇勫椤圭洰
+ </div>
+ <div class="el-border-left" style="width: calc(100% - 120px)">
+ <div class="table-container">
+ <el-table ref="tableConfigItemList" class="el-software el-margin-top-bot"
+ style="width: 99%;margin-left: 5px" border :data="dataForm.reviewItemList"
+ stripe>
+ <el-table-column prop="no" align="center" width="60" label="搴忓彿">
+ <template slot-scope="scope">
+ <span v-html="indexFormat(scope.$index)"></span>
+ </template>
+ </el-table-column>
+ <el-table-column prop="item" min-width="400" label="璇勫椤�">
+ <template v-slot="{ row }">
+ <el-input v-model="row.item" placeholder="璇勫椤�"></el-input>
+ </template>
+ </el-table-column>
+ <el-table-column prop="result" width="220" align="center" label="璇勫缁撴灉">
+ <template v-slot="{ row }">
+ <zt-dict v-model="row.result" placeholder="璇勫缁撴灉" dict="tristate1" :radio="true"
+ clearable></zt-dict>
+ </template>
+ </el-table-column>
+ </el-table>
+ </div>
+ </div>
+ </div>
+ <div class="el-flexContractDialog el-border-bottom">
+ <div class="DFormWidth DAlign DHold">
+ 璇勫璁板綍
+ </div>
+ <div style="width: calc(100% - 120px)" class="el-border-left">
+ <el-form-item class="el-CMTextarea" label-width="20px" style="width: 100%;padding: 5px">
+ <el-input type="textarea" :rows="2" placeholder="璇疯緭鍏ュ唴瀹�"
+ v-model="dataForm.contractReview.reviewRecord"></el-input>
+ </el-form-item>
+ </div>
+ </div>
+ <div class="el-flexContractDialog el-border-bottom">
+ <div class="DFormWidth DAlign DHold">
+ 瀹㈡埛鐨勭壒娈婅姹�
+ </div>
+ <div style="width: calc(100% - 120px)" class="el-border-left">
+ <el-form-item class="el-CMTextarea" style="width: 100%;padding: 5px">
+ <el-input type="textarea" :rows="2" placeholder="璇疯緭鍏ュ唴瀹�"
+ v-model="dataForm.contractReview.specialRequire"></el-input>
+ </el-form-item>
+ </div>
+ </div>
+ <div class="el-flexContractDialog el-border-bottom">
+ <div class="DFormWidth DAlign DHold">
+ 鍒嗗寘
+ </div>
+ <div style="width: calc(100% - 120px)" class="el-border-left">
+ <el-form-item class="el-CMTextarea" style="width: 100%;padding: 5px">
+ <el-input type="textarea" :rows="2" placeholder="璇疯緭鍏ュ唴瀹�"
+ v-model="dataForm.contractReview.subcontract"></el-input>
+ </el-form-item>
+ </div>
+ </div>
+ <div class="el-flexContractDialog el-border-bottom">
+ <div class="DFormWidth DAlign DHold">
+ 璇勫缁撹
+ </div>
+ <div style="width: calc(100% - 120px)" class="el-border-left">
+ <el-form-item class="el-CMTextarea" style="width: 100%;padding: 5px">
+ <el-input type="textarea" :rows="2" placeholder="璇疯緭鍏ヨ瘎瀹$粨璁�"
+ v-model="dataForm.contractReview.reviewConclusion"></el-input>
+ </el-form-item>
+ <el-form-item label="鎶�鏈礋璐d汉锛�" style="width: 48%">
+ <el-input type="textarea" :rows="1" placeholder="璇疯緭鍏ユ妧鏈礋璐d汉"
+ v-model="dataForm.contractReview.technicalDirector"></el-input>
+ </el-form-item>
+ <el-form-item label="鏃ユ湡锛�" style="width: 48%">
+ <el-date-picker
+ v-model="dataForm.contractReview.reviewDate"
+ type="date"
+ placeholder="璇烽�夋嫨鏃ユ湡">
+ </el-date-picker>
+ </el-form-item>
+ </div>
+ </div>
+ <div class="el-flexContractDialog">
+ <div class="DFormWidth DAlign DHold">
+ 璇勫缁勬垚鍛�
+ </div>
+ <div style="width: calc(100% - 120px)" class="el-border-left">
+ <el-form-item class="el-CMTextarea" style="width: 100%;padding: 5px">
+ <el-input type="textarea" :rows="2" placeholder="璇疯緭鍏ュ唴瀹�"
+ v-model="dataForm.contractReview.reviewPanelMember"></el-input>
+ </el-form-item>
+ </div>
+ </div>
+ </div>
+ <div class="el-flex review-sc" style="height: 60px">
+ <el-form-item class="marginTopAndMarginBottom" style="width: 100%">
+ <config-uploader :lineHeight="true" busi-type="qa_audit_report" model-name="dataForm" :dataForm="dataForm"
+ v-model="dataForm.files"/>
+ </el-form-item>
+ </div>
+ </el-form>
+ <template v-slot:footer>
+ <el-button v-if="dataForm.disabled" type="primary" @click="print()">鎵撳嵃</el-button>
+ </template>
+ </zt-dialog>
+</template>
+
+<script>
+ import qs from "qs";
+ import Cookies from "js-cookie";
+
+ export default {
+ data() {
+ return {
+ stepMarker: '',
+ dataForm: {
+ auditReport: {
+ code: '',
+ completedCheck: '',
+ qaSummary: '',
+ checker: '',
+ checkDate: '',
+ supervisorOpinion: '',
+ supervisorSign: '',
+ superviseDate: '',
+ },
+ id: '',
+ project:{
+ softwareIdentity: '',
+ softwarName: '',
+ },
+ incongruentList:[]
+ }
+ }
+ },
+ methods: {
+ indexFormat(index) {
+ return index += 1
+ },
+ init(id, row) {
+ if (id) {
+ this.dataForm.id = id
+ } else {
+ this.dataForm.id = row.id
+ }
+ if (row.projectId) {
+ this.dataForm.projectId = row.projectId
+ }
+
+ // this.dataForm.disabled
+ this.getInfo()
+ if (!this.dataForm.disabled) {
+ if (!row.stepMarker) {
+ this.stepMarker = 'qashbg_first'
+ this.title = 'QA瀹℃牳鎶ュ憡'
+ } else {
+ this.title = row.stepName
+ this.stepMarker = row.stepMarker
+ }
+ }
+ console.log(this.dataForm.id, this.dataForm.projectId, this.stepMarker, 'this.dataForm.id, this.dataForm.projectId,this.stepMarker')
+ },
+ addCirculatRow() {
+ this.dataForm.technicalList.push({})
+ this.$nextTick(() => {
+ const tableBody = this.$refs.tableCirculatOrderList.$el.querySelector('.el-table__body-wrapper')
+ tableBody.scrollTop = tableBody.scrollHeight;
+ })
+ },
+ // 鑾峰彇淇℃伅
+ async getInfo() {
+ let params = {
+ reportId: this.dataForm.id,
+ projectId: this.dataForm.projectId
+ }
+ let res = await this.$http.get(`/qaAuditReport/QaAuditReport/getDto`, {params: params})
+ this.dataForm = {
+ ...this.dataForm,
+ ...res.data
+ }
+ if (this.dataForm.project === null) {
+ this.dataForm.project = {}
+ }
+ if (this.dataForm.flowInfoDto === null) {
+ this.dataForm.flowInfoDto = {}
+ }
+ console.log(this.dataForm, "getInfo this.dataForm")
+ },
+ async print() {
+ var params = qs.stringify({
+ token: Cookies.get('token'),
+ id: this.dataForm.id
+ })
+ let apiURL = `/qaAuditReport/QaAuditReport/exportQaReport`
+ window.location.href = `${window.SITE_CONFIG['apiURL']}${apiURL}?${params}`
+ },
+ // 琛ㄥ崟鎻愪氦
+ async formSubmit(submitType) {
+ console.log(this.dataForm, "this.dataForm11111")
+ if (submitType == 'tj' || submitType == 'bl') {
+ let flowInfo = {
+ flowCode: 'qashbg',
+ stepIdMark: this.stepMarker,
+ submitType: submitType
+ }
+ this.dataForm.flowInfoDto = flowInfo;
+ }
+ let res = await this.$http[!this.dataForm.id ? 'post' : 'put']('/qaAuditReport/QaAuditReport/', this.dataForm)
+ if (res.success) {
+ await this.$tip.success()
+ this.$refs.dialog.close()
+ this.$emit('refreshDataList')
+ }
+ }
+ }
+ }
+</script>
diff --git a/web/src/views/modules/qaAuditReport/QaAuditReport.vue b/web/src/views/modules/qaAuditReport/QaAuditReport.vue
new file mode 100644
index 0000000..73aeb47
--- /dev/null
+++ b/web/src/views/modules/qaAuditReport/QaAuditReport.vue
@@ -0,0 +1,80 @@
+<template>
+ <el-card shadow="never" class="aui-card--fill">
+ <div class="mod-qaAuditReport-qaAuditReport}">
+ <zt-table-wraper query-url="/qaAuditReport/QaAuditReport/page" delete-url="/qaAuditReport/QaAuditReport/deleteQaReport" v-slot="{ table }">
+ <el-form :inline="true" :model="dataForm" @keyup.enter.native="table.query()">
+ <el-form-item>
+ <el-input v-model="dataForm.code" placeholder="璇疯緭鍏ョ紪鍙�" clearable></el-input>
+ </el-form-item>
+ <el-form-item>
+ <el-input v-model="dataForm.softwareName" placeholder="璇疯緭鍏ラ」鐩悕绉�" clearable></el-input>
+ </el-form-item>
+ <el-form-item>
+ <el-input v-model="dataForm.softwareIdentity" placeholder="璇疯緭鍏ラ」鐩爣璇�" clearable></el-input>
+ </el-form-item>
+ <el-form-item>
+ <zt-button type="query" @click="table.query()"/>
+ <zt-button type="primary" class="el-icon-edit" perm="itemCirculatOrder:add" @click="add()">鏂板</zt-button>
+ <zt-button type="delete" perm="qaAuditReport:delete" @click="table.deleteHandle()"/>
+ </el-form-item>
+ </el-form>
+ <el-table v-loading="table.dataLoading" :data="table.dataList" height="100px" v-adaptive="{bottomOffset:70}" border @selection-change="table.selectionChangeHandle">
+ <el-table-column type="selection" width="40"/>
+ <el-table-column prop="code" label="缂栧彿"/>
+ <el-table-column prop="softwareName" label="椤圭洰鍚嶇О"/>
+ <el-table-column prop="softwareIdentity" label="椤圭洰鏍囪瘑"/>
+ <zt-table-column-handle :table="table" edit-perm="qaAuditReport:update" delete-perm="qaAuditReport::delete">
+ <template v-slot="{ row }">
+ <zt-table-button size="small" v-show = "row.accessoryMap" type="primary"
+ @click="preview(row)">棰勮
+ </zt-table-button>
+ </template>
+ </zt-table-column-handle>
+ </el-table>
+ <!-- 寮圭獥, 鏂板 / 淇敼 -->
+ <add-or-update @refreshDataList="table.query"/>
+ <ProjectSelect ref="projectSelect"
+ @refreshDataList="table.query"
+ @setProjectInfo="openAddWin">
+ </ProjectSelect>
+ <Preview ref="view" :pageMarkerfun="QaAuditReport"></Preview>
+ </zt-table-wraper>
+ </div>
+ </el-card>
+</template>
+
+<script>
+ import AddOrUpdate from './QaAuditReport-AddOrUpdate'
+ import Preview from '@/views/pages/view'
+ import ProjectSelect from "../project/Project-select";
+ export default {
+ data() {
+ return {
+ QaAuditReport:'QaAuditReport',
+ dataForm: {
+ code: '',
+ softwareName:'',
+ softwareIdentity:''
+ }
+ }
+ },
+ components: {
+ AddOrUpdate,
+ ProjectSelect,
+ Preview
+ },
+ methods:{
+ add() {
+ this.$refs.projectSelect.$refs.dialog.init("qa_audit_report")
+ },
+ openAddWin(row) {
+ console.log(row.id, 'row.id')
+ // this.$refs.addOrUpdate.$refs.dialog.init(null, {id: null, projectId: row.id})
+ this.$refs.addOrUpdate.$refs.dialog.init(null, {id: null, projectId: row.id})
+ },
+ preview(row){
+ this.$refs.view.openAccessoryFormatSingle(row)
+ }
+ }
+ }
+</script>
diff --git a/web/src/views/modules/testReviewComment/TestReviewComment-AddOrUpdate.vue b/web/src/views/modules/testReviewComment/TestReviewComment-AddOrUpdate.vue
index 89b896a..6c6da59 100644
--- a/web/src/views/modules/testReviewComment/TestReviewComment-AddOrUpdate.vue
+++ b/web/src/views/modules/testReviewComment/TestReviewComment-AddOrUpdate.vue
@@ -1,19 +1,31 @@
<template>
<zt-dialog ref="dialog" @confirm="formSubmit">
<el-form :model="dataForm" ref="dataForm" :disabled="dataForm.disabled" label-width="120px">
- <zt-form-item label="杞欢鍚嶇О" prop="reviewDate" rules="required">
+ <zt-form-item label="杞欢鍚嶇О" prop="reviewDate" >
<el-input v-model="dataForm.project.softwareName"></el-input>
</zt-form-item>
- <zt-form-item label="璇勫鏃ユ湡" prop="reviewDate" rules="required">
+ <zt-form-item label="杞欢缂栧彿" prop="reviewDate" >
+ <el-input v-model="dataForm.project.code"></el-input>
+ </zt-form-item>
+ <zt-form-item label="杞欢鏍囪瘑" prop="reviewDate" >
+ <el-input v-model="dataForm.project.softwareIdentity"></el-input>
+ </zt-form-item>
+ <zt-form-item label="璇勫鏃ユ湡" prop="reviewDate" >
<el-date-picker
v-model="dataForm.reviewComment.reviewDate"
type="date"
placeholder="璇烽�夋嫨璇勫鏃ユ湡">
</el-date-picker>
</zt-form-item>
- <zt-form-item label="璇勫浜烘暟" prop="reviewerNum" rules="required">
+ <zt-form-item label="璇勫浜烘暟" prop="reviewerNum" >
<el-input v-model="dataForm.reviewComment.reviewerNum"></el-input>
</zt-form-item>
+ <div style="height: 60px">
+ <el-form-item >
+ <config-uploader :lineHeight="true" :busi-type="type" model-name="dataForm" :dataForm="dataForm"
+ v-model="dataForm.files"/>
+ </el-form-item>
+ </div>
</el-form>
<template v-slot:footer>
<el-button v-if="dataForm.disabled" type="primary" @click="print()">鎵撳嵃</el-button>
@@ -28,11 +40,14 @@
export default {
data() {
return {
+ type:'test_review_comment_',
pageCode: '',
dataForm: {
id: '',
project: {
softwareName: '',
+ softwareIdentity:'',
+ code:''
},
reviewComment: {
reviewDate: '',
@@ -69,6 +84,7 @@
...this.dataForm,
...res.data
}
+ this.type=this.type+this.pageCode
console.log(this.dataForm, 'this.dataForm this.dataForm')
},
async print() {
@@ -77,7 +93,7 @@
id: this.dataForm.id,
pageCode: this.pageCode
})
- let apiURL = `/testReviewComment/TestReviewComment/exportComment`
+ let apiURL = `/testReviewComment/TestReviewComment/exportReviewComment`
window.location.href = `${window.SITE_CONFIG['apiURL']}${apiURL}?${params}`
},
// 琛ㄥ崟鎻愪氦
@@ -92,3 +108,10 @@
}
}
</script>
+<style>
+ .marginTopAndMarginBottom {
+ margin-top: 0 !important;
+ margin-bottom: 0 !important;
+ }
+</style>
+
diff --git a/web/src/views/modules/testReviewComment/TestReviewComment.vue b/web/src/views/modules/testReviewComment/TestReviewComment.vue
index c97e935..dbe7e9f 100644
--- a/web/src/views/modules/testReviewComment/TestReviewComment.vue
+++ b/web/src/views/modules/testReviewComment/TestReviewComment.vue
@@ -1,7 +1,7 @@
<template>
<el-card shadow="never" class="aui-card--fill">
<div class="mod-testReviewComment-testReviewComment}">
- <zt-table-wraper query-url="/testReviewComment/TestReviewComment/page" delete-url="/testReviewComment/TestReviewComment" v-slot="{ table }">
+ <zt-table-wraper query-url="/testReviewComment/TestReviewComment/page" delete-url="/testReviewComment/TestReviewComment/deleteReviewComment" v-slot="{ table }">
<el-form :inline="true" :model="dataForm" @keyup.enter.native="table.query()">
<el-form-item>
<el-input v-model="dataForm.code" placeholder="璇疯緭鍏ユ祴璇曡瘎瀹$紪鍙�" clearable></el-input>
@@ -17,19 +17,21 @@
</el-form>
<el-table v-loading="table.dataLoading" :data="table.dataList" height="100px" v-adaptive="{bottomOffset:70}" border @selection-change="table.selectionChangeHandle">
<el-table-column type="selection" width="40"/>
- <el-table-column prop="code" label="娴嬭瘯璇勫缂栧彿"/>
<el-table-column prop="reviewDate" label="璇勫鏃ユ湡"/>
<el-table-column prop="softwareName" label="椤圭洰鍚嶇О"/>
+ <el-table-column prop="softwareIdentity" label="椤圭洰鏍囪瘑"/>
<zt-table-column-handle :table="table" :hasEdit='false' edit-perm="testReviewComment:update"
delete-perm="testCheckOrder::delete">
<template v-slot="{row}">
+ <zt-table-button size="small" v-show = "row.accessoryMap" type="primary"
+ @click="preview(row)">棰勮
+ </zt-table-button>
<zt-table-button type="primary" @click="openEditWin(row)">淇敼</zt-table-button>
</template>
-
</zt-table-column-handle>
</el-table>
<!-- 寮圭獥, 鏂板 / 淇敼 -->
- <add-or-update ref="addOrUpdate" @recall="table.query"/>
+ <add-or-update ref="addOrUpdate" @refreshDataList="table.query"/>
<ProjectSelect :pageCode="pageCode" ref="projectSelect"
@refreshDataList="table.query"
@setProjectInfo="openAddWin">
@@ -50,7 +52,6 @@
TestReviewComment:'TestReviewComment',
pageCode: '',
dataForm: {
- code: '',
softwareName: '',
pageCode:this.$route.query.pageCode
}
diff --git a/zt/core/src/main/java/com/zt/modules/sys/dao/SysUserDao.java b/zt/core/src/main/java/com/zt/modules/sys/dao/SysUserDao.java
index e0bfd82..57d0482 100644
--- a/zt/core/src/main/java/com/zt/modules/sys/dao/SysUserDao.java
+++ b/zt/core/src/main/java/com/zt/modules/sys/dao/SysUserDao.java
@@ -56,5 +56,5 @@
Integer checkTestHome(String systemId, Long userId);
List<SysUser> getUsersList();
- String getUsersName(Long id);
+ String getUsersName(String id);
}
diff --git a/zt/core/src/main/java/com/zt/modules/sys/service/SysUserService.java b/zt/core/src/main/java/com/zt/modules/sys/service/SysUserService.java
index 9149cc0..ae65be8 100644
--- a/zt/core/src/main/java/com/zt/modules/sys/service/SysUserService.java
+++ b/zt/core/src/main/java/com/zt/modules/sys/service/SysUserService.java
@@ -335,10 +335,19 @@
return baseDao.getUsersList();
}
- public String getUsersName(Long id) {
+ public String getUsersName(String id) {
return baseDao.getUsersName(id);
}
+ public String getNames(String ids) {
+ String[] NamesData = ids.split(",");
+ List<String> nameList =new ArrayList<>();
+ for (String item : NamesData) {
+ nameList.add(this.getUsersName(item));
+ }
+ String names = String.join(", ", nameList);
+ return names;
+ }
public SysUser getUserInfo(Long id) {
SysUser data = super.get(id);
if (data != null) {
diff --git a/zt/core/src/main/resources/mapper/sys/SysUserDao.xml b/zt/core/src/main/resources/mapper/sys/SysUserDao.xml
index 3fd5d17..c26633b 100644
--- a/zt/core/src/main/resources/mapper/sys/SysUserDao.xml
+++ b/zt/core/src/main/resources/mapper/sys/SysUserDao.xml
@@ -241,7 +241,7 @@
select real_name as name,id as id from sys_user
</select>
<select id="getUsersName" resultType="java.lang.String">
- select real_name from sys_user WHERE id=#{id}
+ select real_name from sys_user WHERE id=${id}
</select>
<update id="updatePassword">
update
--
Gitblit v1.9.1