From 954ad75b793d1c74cd2912ed8eef923bc588674a Mon Sep 17 00:00:00 2001 From: jinlin <jinlin> Date: 星期四, 28 十二月 2023 16:21:50 +0800 Subject: [PATCH] 新增 --- modules/mainPart/src/main/java/com/zt/life/modules/testReviewComment/dto/ReviewCommentDto.java | 26 ++ web/src/views/modules/testReviewComment/TestReviewComment-AddOrUpdate.vue | 101 +++++++++++ modules/mainPart/src/main/resources/mapper/testReviewComment/TestReviewCommentDao.xml | 21 ++ web/src/views/modules/testReviewComment/TestReviewComment.vue | 86 +++++++++ modules/mainPart/src/main/java/com/zt/life/modules/testReviewComment/dao/TestReviewCommentDao.java | 23 ++ modules/mainPart/src/main/java/com/zt/life/modules/testReviewComment/model/TestReviewComment.java | 41 ++++ modules/mainPart/src/main/java/com/zt/life/modules/testReviewComment/service/TestReviewCommentService.java | 128 ++++++++++++++ modules/mainPart/src/main/java/com/zt/life/modules/testReviewComment/controller/TestReviewCommentController.java | 103 +++++++++++ 8 files changed, 529 insertions(+), 0 deletions(-) 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 new file mode 100644 index 0000000..afd33b0 --- /dev/null +++ b/modules/mainPart/src/main/java/com/zt/life/modules/testReviewComment/controller/TestReviewCommentController.java @@ -0,0 +1,103 @@ +package com.zt.life.modules.testReviewComment.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.baselineRelease.dto.BaselineDto; +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 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.List; + + +/** + * test_review_comment + * + * @author zt generator + * @since 1.0.0 2023-12-28 + */ +@RestController +@RequestMapping("/testReviewComment/TestReviewComment/") +@Api(tags="test_review_comment") +public class TestReviewCommentController { + @Autowired + private TestReviewCommentService testReviewCommentService; + + @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 = "a.code^LK"), + @ApiImplicitParam(name = "softwareName", value = "椤圭洰鍚嶇О", dataType = Constant.QT.STRING, format = "p.software_name^LK"), + @ApiImplicitParam(name = "pageCode", value = "閰嶇疆椤规爣璇�", dataType = Constant.QT.STRING, format = "a.page_code^LK") +}) + public PageResult<TestReviewComment> page(@ApiIgnore @QueryParam QueryFilter queryFilter){ + return PageResult.ok(testReviewCommentService.page(queryFilter)); + } + + @GetMapping("getDto") + @ApiOperation("淇℃伅") + public Result<ReviewCommentDto> getDto(Long commentId, Long projectId, String pageCode) { + ReviewCommentDto data = testReviewCommentService.getDto(commentId, projectId, pageCode); + return Result.ok(data); + } + + @PostMapping + @ApiOperation("鏂板") + @LogOperation("鏂板") + public Result<Long> insert(@RequestBody ReviewCommentDto reviewCommentDto) { + //鏁堥獙鏁版嵁 + ValidatorUtils.validateEntity(reviewCommentDto, AddGroup.class, DefaultGroup.class); + Long result = testReviewCommentService.save(reviewCommentDto); + return Result.ok(result); + } + + @PutMapping + @ApiOperation("淇敼") + @LogOperation("淇敼") + public Result<Long> update(@RequestBody ReviewCommentDto reviewCommentDto) { + //鏁堥獙鏁版嵁 + ValidatorUtils.validateEntity(reviewCommentDto, UpdateGroup.class, DefaultGroup.class); + Long result = testReviewCommentService.save(reviewCommentDto); + return Result.ok(result); + } + + @DeleteMapping("deleteReviewComment") + @ApiOperation("鍒犻櫎") + @LogOperation("鍒犻櫎") + public Result delete(@RequestBody Long[] ids){ + //鏁堥獙鏁版嵁 + AssertUtils.isArrayEmpty(ids, "id"); + testReviewCommentService.delete(ids); + return Result.ok(); + } + @GetMapping("exportReviewComment") + @ApiOperation("鎵撳嵃鍩虹嚎鍙戝竷涔�") + @LogOperation("鎵撳嵃鍩虹嚎鍙戝竷涔�") + public void exportBaseline(Long id, String pageCode, HttpServletRequest request, HttpServletResponse response) { + testReviewCommentService.exportReviewComment(id,pageCode, request, response); + } + +} diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/testReviewComment/dao/TestReviewCommentDao.java b/modules/mainPart/src/main/java/com/zt/life/modules/testReviewComment/dao/TestReviewCommentDao.java new file mode 100644 index 0000000..9e0d552 --- /dev/null +++ b/modules/mainPart/src/main/java/com/zt/life/modules/testReviewComment/dao/TestReviewCommentDao.java @@ -0,0 +1,23 @@ +package com.zt.life.modules.testReviewComment.dao; + +import com.zt.common.dao.BaseDao; +import com.zt.life.modules.testReviewComment.model.TestReviewComment; +import org.apache.ibatis.annotations.Mapper; + + +import java.util.List; +import java.util.Map; + + +/** + * test_review_comment + * + * @author zt generator + * @since 1.0.0 2023-12-28 + */ +@Mapper +public interface TestReviewCommentDao extends BaseDao<TestReviewComment> { + + List<TestReviewComment> getList(Map<String, Object> params); + +} 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 new file mode 100644 index 0000000..c372876 --- /dev/null +++ b/modules/mainPart/src/main/java/com/zt/life/modules/testReviewComment/dto/ReviewCommentDto.java @@ -0,0 +1,26 @@ +package com.zt.life.modules.testReviewComment.dto; + +import com.zt.life.modules.baselineRelease.model.BaselineRelease; +import com.zt.life.modules.baselineRelease.model.BaselineReleaseRemark; +import com.zt.life.modules.project.model.Project; +import com.zt.life.modules.testReviewComment.model.TestReviewComment; +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 ReviewCommentDto { + private Long id;//ID + private Long projectId;//椤圭洰ID + private String pageCode;//閰嶇疆椤圭被鍨� + + + @ApiModelProperty(value = "娴嬭瘯璇勫鎰忚") + private TestReviewComment reviewComment; + @ApiModelProperty(value = "娴嬭瘯椤圭洰鍩烘湰淇℃伅") + private Project project; + +} 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 new file mode 100644 index 0000000..7ad0133 --- /dev/null +++ b/modules/mainPart/src/main/java/com/zt/life/modules/testReviewComment/model/TestReviewComment.java @@ -0,0 +1,41 @@ +package com.zt.life.modules.testReviewComment.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; + +/** + * test_review_comment + * + * @author zt generator + * @since 1.0.0 2023-12-28 + */ +@Data +@EqualsAndHashCode(callSuper=false) +@TableName("test_review_comment") +public class TestReviewComment extends BusiEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "椤圭洰ID") + private Long projectId; + + @ApiModelProperty(value = "椤甸潰鏍囪瘑") + private String pageCode; + + @ApiModelProperty(value = "娴嬭瘯璇勫缂栧彿") + private String code; + + @ApiModelProperty(value = "璇勫鏃ユ湡") + @JsonFormat(pattern = "yyyy-MM-dd") + private Date reviewDate; + + @ApiModelProperty(value = "璇勫浜烘暟") + private Integer reviewerNum; + +} 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 new file mode 100644 index 0000000..ffc7698 --- /dev/null +++ b/modules/mainPart/src/main/java/com/zt/life/modules/testReviewComment/service/TestReviewCommentService.java @@ -0,0 +1,128 @@ +package com.zt.life.modules.testReviewComment.service; + +import cn.hutool.core.convert.Convert; +import com.zt.common.service.BaseService; +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; +import com.zt.life.modules.baselineRelease.model.BaselineReleaseRemark; +import com.zt.life.modules.baselineRelease.service.BaselineReleaseRemarkService; +import com.zt.life.modules.project.service.ProjectService; +import com.zt.life.modules.testReviewComment.dao.TestReviewCommentDao; +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.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; +import java.io.FileNotFoundException; +import java.io.UnsupportedEncodingException; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + + +/** + * test_review_comment + * + * @author zt generator + * @since 1.0.0 2023-12-28 + */ +@Service +public class TestReviewCommentService extends BaseService<TestReviewCommentDao, TestReviewComment> { + + @Autowired + private SysOssService sysOssService; + + @Autowired + private ProjectService projectService; + + @Autowired + private SysCodeRuleService sysCodeRuleService; + + @Autowired + private WordFileService wordFileService; + + /** + * 鍒嗛〉鏌ヨ + * + * @param queryFilter + * @return + */ + public List<TestReviewComment> page(QueryFilter queryFilter) { + List<TestReviewComment> list = baseDao.getList(queryFilter.getQueryParams()); + if (list.size() > 0) { + sysOssService.setListOsses(list, "test_review_comment"); + } + return list; + } + + /** + * 鍒犻櫎 + * + * @param ids + */ + public void delete(Long[] ids) { + super.deleteLogic(ids); + } + + + public ReviewCommentDto getDto(Long commentId, Long projectId, String pageCode) { + ReviewCommentDto data = new ReviewCommentDto(); + data.setPageCode(pageCode); + if (commentId != null) { + data.setId(commentId); + TestReviewComment reviewComment = this.get(commentId); + data.setReviewComment(reviewComment); + if (reviewComment != null && projectId == null) { + projectId = reviewComment.getProjectId(); + } + } else { + TestReviewComment reviewComment = new TestReviewComment(); + reviewComment.setPageCode(pageCode); + data.setReviewComment(reviewComment); + } + if (projectId != null) { + data.setProjectId(projectId); + data.setProject(projectService.get(projectId)); + } + return data; + } + public Long save(ReviewCommentDto reviewCommentDto) { + Long commentId = reviewCommentDto.getReviewComment().getId(); + if (commentId != null) + baseDao.updateById(reviewCommentDto.getReviewComment()); + else { + Map<String, String> map = new HashMap<>(); + String pagecode = reviewCommentDto.getPageCode(); + map.put("funCode", "test_review_comment_" + pagecode); + map.put("projectId", reviewCommentDto.getProjectId().toString()); + reviewCommentDto.getReviewComment().setProjectId(reviewCommentDto.getProjectId()); + reviewCommentDto.getReviewComment().setCode(sysCodeRuleService.getNewCode(map)); + baseDao.insert(reviewCommentDto.getReviewComment()); + commentId = reviewCommentDto.getReviewComment().getId(); + } + return commentId; + } + + public void exportReviewComment(Long id, String pageCode, HttpServletRequest request, HttpServletResponse response) { + try { + ReviewCommentDto dataObj = this.getDto(id, null, pageCode); + 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/resources/mapper/testReviewComment/TestReviewCommentDao.xml b/modules/mainPart/src/main/resources/mapper/testReviewComment/TestReviewCommentDao.xml new file mode 100644 index 0000000..4ac09fd --- /dev/null +++ b/modules/mainPart/src/main/resources/mapper/testReviewComment/TestReviewCommentDao.xml @@ -0,0 +1,21 @@ +<?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.testReviewComment.dao.TestReviewCommentDao"> + + <select id="getList" resultType="com.zt.life.modules.testReviewComment.model.TestReviewComment"> + select a.*,p.software_name + from test_review_comment a + INNER JOIN project p ON p.id = a.project_id + <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/web/src/views/modules/testReviewComment/TestReviewComment-AddOrUpdate.vue b/web/src/views/modules/testReviewComment/TestReviewComment-AddOrUpdate.vue new file mode 100644 index 0000000..129261a --- /dev/null +++ b/web/src/views/modules/testReviewComment/TestReviewComment-AddOrUpdate.vue @@ -0,0 +1,101 @@ +<template> + <zt-dialog ref="dialog" @confirm="formSubmit"> + <el-form :model="dataForm" ref="dataForm" :disabled="dataForm.disabled" label-width="120px"> + <zt-form-item label="椤圭洰ID" prop="projectId" rules="required"> + <el-input v-model="dataForm.projectId"></el-input> + </zt-form-item> + <zt-form-item label="椤甸潰鏍囪瘑" prop="pageCode" rules="required"> + <el-input v-model="dataForm.pageCode"></el-input> + </zt-form-item> + <zt-form-item label="娴嬭瘯璇勫缂栧彿" prop="code" rules="required"> + <el-input v-model="dataForm.code"></el-input> + </zt-form-item> + <zt-form-item label="璇勫鏃ユ湡" prop="reviewDate" rules="required"> + <el-input v-model="dataForm.reviewDate"></el-input> + </zt-form-item> + <zt-form-item label="璇勫浜烘暟" prop="reviewerNum" rules="required"> + <el-input v-model="dataForm.reviewerNum"></el-input> + </zt-form-item> + </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 { + pageCode: '', + subtitle: '', + pageName: { + plan: '娴嬭瘯璁″垝', explain: '娴嬭瘯灏辩华', record: '娴嬭瘯鎬荤粨' + }, + dataForm: { + id: '', + project: { + softwareName: '', + }, + reviewComment: { + code: '', + reviewDate: '', + reviewerNum: '' + }, + projectId: '', + } + } + }, + methods: { + init(id, row) { + if (id) { + this.dataForm.id = id + } else { + this.dataForm.id = row.id + } + this.pageCode = row.pageCode + if (row.projectId) { + this.dataForm.projectId = row.projectId + } + this.getInfo() + //console.log(this.dataForm.id, this.dataForm.projectId, this.stepMarker, 'this.dataForm.id, this.dataForm.projectId,this.stepMarker') + }, + // 鑾峰彇淇℃伅 + async getInfo() { + let params = { + commentId: this.dataForm.id, + projectId: this.dataForm.projectId, + pageCode: this.pageCode + } + console.log(this.pageCode, "getInfo pageCode") + let res = await this.$http.get(`/testReviewComment/TestReviewComment/getDto`, {params: params}) + this.dataForm = { + ...this.dataForm, + ...res.data + } + console.log(this.dataForm, 'this.dataForm this.dataForm') + }, + async print() { + var params = qs.stringify({ + token: Cookies.get('token'), + id: this.dataForm.id, + pageCode: this.pageCode + }) + let apiURL = `/testReviewComment/TestReviewComment/exportComment` + window.location.href = `${window.SITE_CONFIG['apiURL']}${apiURL}?${params}` + }, + // 琛ㄥ崟鎻愪氦 + async formSubmit() { + let res = await this.$http[!this.dataForm.id ? 'post' : 'put']('/testReviewComment/TestReviewComment/', this.dataForm) + if (res.success) { + await this.$tip.success() + this.$refs.dialog.close() + this.$emit('refreshDataList') + } + } + } + } +</script> diff --git a/web/src/views/modules/testReviewComment/TestReviewComment.vue b/web/src/views/modules/testReviewComment/TestReviewComment.vue new file mode 100644 index 0000000..8debf6b --- /dev/null +++ b/web/src/views/modules/testReviewComment/TestReviewComment.vue @@ -0,0 +1,86 @@ +<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 }"> + <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> + <zt-button type="query" @click="table.query()"/> + <zt-button type="primary" class="el-icon-edit" @click="add()">鏂板</zt-button> + <zt-button type="delete" perm="testReviewComment: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="reviewDate" label="璇勫鏃ユ湡"/> + <el-table-column prop="softwareName" label="椤圭洰鍚嶇О"/> + <zt-table-column-handle :table="table" :hasEdit='false' edit-perm="testReviewComment:update" + delete-perm="testCheckOrder::delete"> + <template v-slot="{row}"> + <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"/> + <ProjectSelect :pageCode="pageCode" ref="projectSelect" + @refreshDataList="table.query" + @setProjectInfo="openAddWin"> + </ProjectSelect> + <Preview ref="view"></Preview> + </zt-table-wraper> + </div> + </el-card> +</template> + +<script> + import AddOrUpdate from './TestReviewComment-AddOrUpdate' + import ProjectSelect from "../project/Project-select.vue" + import Preview from '@/views/pages/view' + export default { + data() { + return { + pageCode: '', + dataForm: { + code: '', + softwareName: '', + pageCode:this.$route.query.pageCode + } + } + }, + mounted() { + this.pageCode = this.$route.query.pageCode + this.dataForm.pageCode = this.$route.query.pageCode + console.log(this.pageCode,'this.pageCode this.pageCode') + }, + components: { + AddOrUpdate, + ProjectSelect, + Preview + }, + methods: { + add() { + console.log(this.pageCode, 'this.pageCode') + this.$refs.projectSelect.$refs.dialog.init("test_review_comment", {pageCode: this.pageCode}) + }, + openAddWin(projectRow) { + console.log(projectRow, 'openAddWin(projectRow) projectRow') + this.$refs.addOrUpdate.$refs.dialog.init(null, {id: null, projectId: projectRow.id, pageCode: this.pageCode}) + }, + openEditWin(row){ + console.log(row,'openEditWin(checkOrderRow)') + this.$refs.addOrUpdate.$refs.dialog.init(row.id, {id: row.id, projectId: row.projectId, pageCode: this.pageCode}) + }, + preview(row) { + this.$refs.view.openAccessoryFormatSingle(row) + } + } + } +</script> -- Gitblit v1.9.1