jinlin
2023-12-18 e4db7d4a3e03ec4767a57743aef01e54461bbe9a
修改
18个文件已修改
179 ■■■■■ 已修改文件
core/src/main/java/com/zt/life/export/service/WordFileService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
modules/mainPart/src/main/java/com/zt/life/modules/configItemChange/dto/ConfigItemChangeDto.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
modules/mainPart/src/main/java/com/zt/life/modules/configItemOutbound/dto/ConfigItemOutboundDto.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
modules/mainPart/src/main/java/com/zt/life/modules/configItemWarehouse/dto/ConfigItemWarehouseDto.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
modules/mainPart/src/main/java/com/zt/life/modules/contractReview/controller/ContractReviewController.java 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
modules/mainPart/src/main/java/com/zt/life/modules/contractReview/dto/ContractReviewDto.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
modules/mainPart/src/main/java/com/zt/life/modules/contractReview/model/ContractReview.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
modules/mainPart/src/main/java/com/zt/life/modules/contractReview/service/ContractReviewService.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
modules/mainPart/src/main/java/com/zt/life/modules/itemCirculatOrder/dto/ItemCirculatOrderDto.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
modules/mainPart/src/main/java/com/zt/life/modules/project/dto/EnvironDto.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
modules/mainPart/src/main/java/com/zt/life/modules/testCheckOrder/controller/TestCheckOrderController.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
modules/mainPart/src/main/java/com/zt/life/modules/testCheckOrder/dto/CheckOrderDto.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
modules/mainPart/src/main/java/com/zt/life/modules/testCheckOrder/service/TestCheckOrderService.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
modules/mainPart/src/main/resources/mapper/contractReview/ContractReviewDao.xml 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
modules/mainPart/src/main/resources/mapper/contractReview/ContractReviewItemDao.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
web/src/views/modules/contractReview/ContractReview-AddOrUpdate.vue 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
web/src/views/modules/contractReview/ContractReview.vue 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
web/src/views/modules/testCheckOrder/TestCheckOrder-AddOrUpdate.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
core/src/main/java/com/zt/life/export/service/WordFileService.java
@@ -74,7 +74,7 @@
                    if (valStr.contains("文件图片:")) {
                        valStr = localPath + valStr.replace("文件图片:", "");
                        File file = new File(valStr);
                        if (file.exists()) {
                        if (file.exists() && !localPath.equals(valStr)) {
                            try (InputStream in = ossEncryptService.decrypt(file)) {
                                InputStream in2 = ossEncryptService.decrypt(file);
                                BufferedImage bufferedImage = ImageIO.read(in2);
@@ -86,7 +86,7 @@
                                e.printStackTrace();
                            }
                        } else {
                            staticFieldValue = new PictureRenderData(100, 30, "template/noSign.png");
                            staticFieldValue = new PictureRenderData(100, 30, localPath+"template/noSign.png");
                        }
                    }
                }
modules/mainPart/src/main/java/com/zt/life/modules/configItemChange/dto/ConfigItemChangeDto.java
@@ -18,11 +18,10 @@
    private Long projectId;
    private Long warehouseId;
    @ApiModelProperty(value = "测试项目基本信息")
    private Project project;
    @ApiModelProperty(value = "配置项变更")
    private ConfigItemChange configItemChange;
    @ApiModelProperty(value = "测试项目基本信息")
    private Project project;
    private FlowInfoDto flowInfoDto;
    @ApiModelProperty(value = "变更配置项")
modules/mainPart/src/main/java/com/zt/life/modules/configItemOutbound/dto/ConfigItemOutboundDto.java
@@ -16,10 +16,11 @@
    private Long projectId;
    private Long warehouseId;
    @ApiModelProperty(value = "测试项目基本信息")
    private Project project;
    @ApiModelProperty(value = "配置项出库")
    private ConfigItemOutbound configItemOutbound;
    @ApiModelProperty(value = "测试项目基本信息")
    private Project project;
    private FlowInfoDto flowInfoDto;
modules/mainPart/src/main/java/com/zt/life/modules/configItemWarehouse/dto/ConfigItemWarehouseDto.java
@@ -22,10 +22,11 @@
    private Long projectId;
    private Long warehouseId;
    @ApiModelProperty(value = "测试项目基本信息")
    private Project project;
    @ApiModelProperty(value = "配置项入库")
    private ConfigItemWarehouse configItemWarehouse;
    @ApiModelProperty(value = "测试项目基本信息")
    private Project project;
    private FlowInfoDto flowInfoDto;
modules/mainPart/src/main/java/com/zt/life/modules/contractReview/controller/ContractReviewController.java
@@ -17,6 +17,8 @@
import com.zt.life.modules.contractReview.service.ContractReviewService;
import com.zt.life.modules.itemCirculatOrder.dto.ItemCirculatOrderDto;
import com.zt.life.modules.itemCirculatOrder.service.ItemCirculatOrderService;
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;
@@ -49,6 +51,9 @@
    @Autowired
    private SysCodeRuleService sysCodeRuleService;
    @Autowired
    private SysOssConfigService sysOssConfigService;
    @GetMapping("page")
    @ApiOperation("分页")
    @ApiImplicitParams({
@@ -56,9 +61,8 @@
        @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 = "reviewPhase", value = "评审阶段", dataType = Constant.QT.STRING, format = "a.review_phase^EQ"),
        @ApiImplicitParam(name = "softwareName", value = "物品名称", dataType = Constant.QT.STRING, format = "p.software_name^EQ"),
        @ApiImplicitParam(name = "softwareIdentity", value = "物品编号", dataType = Constant.QT.STRING, format = "p.software_identity^EQ")
        @ApiImplicitParam(name = "reviewType", value = "评审阶段", dataType = Constant.QT.STRING, format = "a.review_phase^EQ"),
        @ApiImplicitParam(name = "orderCode", value = "委托单编号", dataType = Constant.QT.STRING, format = "s.code^EQ"),
    })
    public PageResult<ContractReview> page(@ApiIgnore @QueryParam QueryFilter queryFilter){
        return PageResult.ok(contractReviewService.page(queryFilter));
@@ -68,6 +72,12 @@
    @ApiOperation("信息")
    public Result<ContractReviewDto> getDto(Long projectId, Long reviewId) {
        ContractReviewDto data = contractReviewService.getDto(projectId, reviewId);
        if (reviewId!=null) {
            OssDto ossDto = sysOssConfigService.getOssByBusiType(reviewId, "contract_review");
            if (ossDto != null) {
                data.setFiles(ossDto);
            }
        }
        return Result.ok(data);
    }
@@ -108,11 +118,11 @@
        return Result.ok();
    }
/*    @GetMapping("exportReview")
    @GetMapping("exportReview")
    @ApiOperation("打印合同评审单")
    @LogOperation("打印合同评审单")
    public void exportReview(Long id, HttpServletRequest request, HttpServletResponse response) {
        contractReviewService.exportReview(id, request, response);
    }*/
    }
}
modules/mainPart/src/main/java/com/zt/life/modules/contractReview/dto/ContractReviewDto.java
@@ -6,6 +6,7 @@
import com.zt.life.modules.itemCirculatOrder.model.ItemCirculatOrderTechnical;
import com.zt.life.modules.project.model.Project;
import com.zt.life.modules.sysBaseInfo.model.TestAgencyInfo;
import com.zt.life.sys.dto.OssDto;
import com.zt.modules.workflow.dto.FlowInfoDto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@@ -19,13 +20,17 @@
    private Long projectId;
    private Long reviewId;
    @ApiModelProperty(value = "测试项目基本信息")
    private Project project;
    @ApiModelProperty(value = "合同评审表")
    private ContractReview contractReview;
    @ApiModelProperty(value = "测试项目基本信息")
    private Project project;
    @ApiModelProperty(value = "测试机构信息")
    private TestAgencyInfo TestAgencyInfo;
    @ApiModelProperty(value = "附件")
    private OssDto files;
    @ApiModelProperty(value = "评审项列表")
    private List<ContractReviewItem> reviewItemList = new ArrayList<>();
modules/mainPart/src/main/java/com/zt/life/modules/contractReview/model/ContractReview.java
@@ -1,5 +1,6 @@
package com.zt.life.modules.contractReview.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;
@@ -59,4 +60,8 @@
    @ApiModelProperty(value = "年份")
    private String year;
    @TableField(exist = false)
    @ApiModelProperty(value = "客户名称")
    private String agencyName;
}
modules/mainPart/src/main/java/com/zt/life/modules/contractReview/service/ContractReviewService.java
@@ -161,45 +161,31 @@
            data.setTestAgencyInfo(testAgencyInfoService.get(10000L));
        return data;
    }
/*
    public void exportCirculatOrder(Long id, HttpServletRequest request, HttpServletResponse response) {
    public void exportReview(Long id, HttpServletRequest request, HttpServletResponse response) {
        try {
            ContractReviewDto dataObj = this.getDto(null, id);
            String acceptorPath = "文件图片:"+ getFilesPath.getSignPath(Convert.toLong(dataObj.getContractReview().getItemAcceptorId()));
            dataObj.getContractReview().setItemAcceptor(acceptorPath);
            String detectorPath = "文件图片:"+getFilesPath.getSignPath(Convert.toLong(dataObj.getContractReview().getCalibratDetectorId()));
            dataObj.getContractReview().setCalibratDetector(detectorPath);
            String issuerPath = "文件图片:"+getFilesPath.getSignPath(Convert.toLong(dataObj.getContractReview().getItemIssuerId()));
            dataObj.getContractReview().setItemIssuer(issuerPath);
            //通用字典列表字符串生成
            String itemRequireStr = getShowDictList.getShowDictList(dataObj.getContractReview().getItemRequire(), "is_or_not", false);
            dataObj.getContractReview().setItemRequireStr(itemRequireStr);
            String acceptSituationStr = getShowDictList.getShowDictList(dataObj.getContractReview().getAcceptSituation(), "is_or_not", false);
            dataObj.getContractReview().setAcceptSituationStr(acceptSituationStr);
            String detectSituationStr = getShowDictList.getShowDictList(dataObj.getContractReview().getDetectSituation(), "is_or_not", false);
            dataObj.getContractReview().setDetectSituationStr(detectSituationStr);
            String issueSituationStr = getShowDictList.getShowDictList(dataObj.getContractReview().getIssueSituation(), "is_or_not", false);
            dataObj.getContractReview().setIssueSituationStr(issueSituationStr);
            String reviewTypeStr = getShowDictList.getShowDictList(dataObj.getContractReview().getReviewType(), "review_type", false);
            dataObj.getContractReview().setReviewType(reviewTypeStr);
            for (ContractReviewItem reviewItem : dataObj.getReviewItemList()) {
                String value = reviewItem.getSecretClass();
                String secretClassStr = getShowDictList.getShowDictList(value, "secret_class", false);
                reviewItem.setSecretClass(secretClassStr);
                String value = reviewItem.getResult();
                String ResultStr = getShowDictList.getShowDictList(value, "tristate1", false);
                reviewItem.setResult(ResultStr);
            }
            WordFile wordFile = new WordFile();
            wordFile.setModulePath("物品流转单.docx");
            wordFile.setWordName(dataObj.getProject().getSoftwareName() + "_物品流转单.docx");
            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();
        }
    }*/
    }
}
modules/mainPart/src/main/java/com/zt/life/modules/itemCirculatOrder/dto/ItemCirculatOrderDto.java
@@ -20,10 +20,11 @@
    private FlowInfoDto flowInfoDto;
    @ApiModelProperty(value = "测试项目基本信息")
    private Project project;
    @ApiModelProperty(value = "物品流转单")
    private ItemCirculatOrder circulatOrder;
    @ApiModelProperty(value = "测试项目基本信息")
    private Project project;
    @ApiModelProperty(value = "测试机构信息")
    private TestAgencyInfo TestAgencyInfo;
modules/mainPart/src/main/java/com/zt/life/modules/project/dto/EnvironDto.java
@@ -16,10 +16,11 @@
    private Long projectId;
    private Long environId;
    @ApiModelProperty(value = "测试项目基本信息")
    private Project project;
    @ApiModelProperty(value = "测试环境建立确认")
    private Environ environ;
    @ApiModelProperty(value = "测试项目基本信息")
    private Project project;
    @ApiModelProperty(value = "测试机构信息")
    private TestAgencyInfo TestAgencyInfo;
    @ApiModelProperty(value = "附件")
modules/mainPart/src/main/java/com/zt/life/modules/testCheckOrder/controller/TestCheckOrderController.java
@@ -110,8 +110,8 @@
    }
    @GetMapping("exportCheckOrder")
    @ApiOperation("打印测试环境建立确认表")
    @LogOperation("打印测试环境建立确认表")
    @ApiOperation("打印检查单")
    @LogOperation("打印检查单")
    public void exportCheckOrder(Long id, String pageCode, HttpServletRequest request, HttpServletResponse response) {
        testCheckOrderService.exportCheckOrder(id,pageCode, request, response);
    }
modules/mainPart/src/main/java/com/zt/life/modules/testCheckOrder/dto/CheckOrderDto.java
@@ -23,10 +23,11 @@
    private FlowInfoDto flowInfoDto;
    @ApiModelProperty(value = "测试项目基本信息")
    private Project project;
    @ApiModelProperty(value = "检查单")
    private TestCheckOrder checkOrder;
    @ApiModelProperty(value = "测试项目基本信息")
    private Project project;
    @ApiModelProperty(value = "检查单列表")
    private List<TestCheckOrderList> checkOrderList = new ArrayList<>();
modules/mainPart/src/main/java/com/zt/life/modules/testCheckOrder/service/TestCheckOrderService.java
@@ -167,7 +167,12 @@
            //通用字典列表字符串生成
            for (TestCheckOrderList checkOrderList : dataObj.getCheckOrderList()) {
                String value = checkOrderList.getCheckResult();
                String checkResultStr = getShowDictList.getShowDictList(value, "tristate1", false);
                String checkResultStr="";
                if ("plan".equals(pageCode) || "report".equals(pageCode) || "record".equals(pageCode) || "explain".equals(pageCode)) {
                     checkResultStr = getShowDictList.getShowDictList(value, "tristate1", false);
                }else{
                     checkResultStr = getShowDictList.getShowDictList(value, "tristate2", false);
                }
                checkOrderList.setCheckResult(checkResultStr);
            }
@@ -176,11 +181,21 @@
            map.put("report", "报告");
            map.put("record", "记录");
            map.put("explain", "说明");
            map.put("contract", "合同评审");
            map.put("require", "测试需求分析与策划");
            map.put("execute", "测试设计、实现与执行");
            map.put("summary", "测试总结");
            String type = map.get(pageCode);
            dataObj.setPageCode(type);
            WordFile wordFile = new WordFile();
            if ("plan".equals(pageCode) || "report".equals(pageCode) || "record".equals(pageCode) || "explain".equals(pageCode)) {
            wordFile.setModulePath("软件测试检查单.docx");
            wordFile.setWordName(dataObj.getProject().getSoftwareName() + "_软件测试"+type+"检查单.docx");
            } else {
                wordFile.setModulePath("质量保证检查单.docx");
                wordFile.setWordName(dataObj.getProject().getSoftwareName() + "_质量保证检查单(" + type + ").docx");
            }
            wordFileService.exportWordFile(request, dataObj, wordFile, response);
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
modules/mainPart/src/main/resources/mapper/contractReview/ContractReviewDao.xml
@@ -4,11 +4,11 @@
<mapper namespace="com.zt.life.modules.contractReview.dao.ContractReviewDao">
    <select id="getList" resultType="com.zt.life.modules.contractReview.model.ContractReview">
        select a.*, p.software_name,p.software_identity
        select a.*, s.code
        from contract_review a
        INNER JOIN  project p ON p.id = a.project_id
        INNER JOIN  software_test_order s ON s.project_id = a.project_id
        <where>
            a.is_delete = 0 and p.is_delete = 0
            a.is_delete = 0 and s.is_delete = 0
            <if test="whereSql!=null">
                and ${whereSql}
            </if>
modules/mainPart/src/main/resources/mapper/contractReview/ContractReviewItemDao.xml
@@ -9,7 +9,7 @@
        <where>
            a.is_delete = 0
            <if test="reviewId!=null">
                and warehouse_id = ${reviewId}
                and review_id = ${reviewId}
            </if>
        </where>
        <if test="orderBySql!=null">
web/src/views/modules/contractReview/ContractReview-AddOrUpdate.vue
@@ -31,19 +31,20 @@
              <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="序号">
                <el-table-column prop="no" align="center" width="60" >
                  <template slot-scope="scope">
                    <span v-html="indexFormat(scope.$index)"></span>
                  </template>
                </el-table-column>
                <el-table-column prop="item" min-width="400" label="配置项名称">
                <el-table-column prop="item" min-width="400" >
                  <template v-slot="{ row }">
                    <el-input v-model="row.item" placeholder="评审项"></el-input>
                  </template>
                </el-table-column>
                <el-table-column prop="result" label="密级" width="180" align="center">
                <el-table-column prop="result"  width="180" align="center">
                  <template v-slot="{ row }">
                    <zt-dict v-model="row.result" placeholder="评审结果" dict="tristate1"></zt-dict>
                    <zt-dict v-model="row.result" placeholder="评审结果" dict="tristate1" :radio="true"
                             clearable></zt-dict>
                  </template>
                </el-table-column>
              </el-table>
@@ -112,7 +113,12 @@
          </div>
        </div>
      </div>
      <add-or-update-check ref="addOrUpdate" @recall="setCheckId"/>
      <div class="el-flex order-sc" style="height: 60px">
        <el-form-item class="marginTopAndMarginBottom" style="width: 100%">
          <config-uploader :lineHeight="true" busi-type="contract_review" 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>
@@ -130,6 +136,7 @@
    return {
      dataForm: {
        id: '',
        files:'',
        contractReview: {
          code: '',
          orderCode: '',
@@ -177,21 +184,22 @@
        ...this.dataForm,
        ...res.data
      }
      if(this.dataForm.contractReview === null){
        this.dataForm.contractReview={}
      }
      if(this.dataForm.testAgencyInfo === null){
        this.dataForm.testAgencyInfo={}
      }
      console.log(this.dataForm, "getInfo this.dataForm")
    },
    setCheckId(checkId, row) {
      console.log(checkId, row, "setCheckId(checkId, row)")
      this.$set(row, 'checkId', checkId)
    },
    /*async print(){
    async print(){
      var params = qs.stringify({
        token: Cookies.get('token'),
        id:this.dataForm.id
      })
      let apiURL = `/contractReview/ContractReview/exportWarehouseOrder`
      let apiURL = `/contractReview/ContractReview/exportReview`
      window.location.href = `${window.SITE_CONFIG['apiURL']}${apiURL}?${params}`
    },*/
    },
    // 表单提交
    async formSubmit(submitType) {
      let res = await this.$http[!this.dataForm.id ? 'post' : 'put']('/contractReview/ContractReview/', this.dataForm)
web/src/views/modules/contractReview/ContractReview.vue
@@ -7,7 +7,7 @@
            <zt-dict v-model="dataForm.reviewType" dict="review_type" placeholder="请选择评审阶段" clearable></zt-dict>
          </el-form-item>
          <el-form-item>
            <el-input v-model="dataForm.softwareName" placeholder="请输入软件名称" clearable></el-input>
            <el-input v-model="dataForm.orderCode" placeholder="请输入委托单编号" clearable></el-input>
          </el-form-item>
          <el-form-item>
            <zt-button type="query" @click="table.query()"/>
@@ -18,9 +18,8 @@
        <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="reviewType" label="评审阶段"/>
            <el-table-column prop="softwareName" width="250px" label="软件名称"/>
            <el-table-column prop="softwareIdentity" width="150px" label="项目标识"/>
          <zt-table-column-dict prop="reviewType" width="150px" label="评审阶段" dict="review_type"/>
          <el-table-column prop="orderCode" width="250px" label="委托单编号"/>
              <zt-table-column-handle :table="table" edit-perm="contractReview:update" delete-perm="contractReview::delete"/>
        </el-table>
        <!-- 弹窗, 新增 / 修改 -->
@@ -52,9 +51,6 @@
    methods: {
      add() {
        this.$refs.projectSelect.$refs.dialog.init("contract_review")
      },
      isCheckbox(row,index){
        return !(row.flowInfo && row.flowInfo.bizId);
      },
      openAddWin(row) {
        console.log(row.id, 'row.id')
web/src/views/modules/testCheckOrder/TestCheckOrder-AddOrUpdate.vue
@@ -140,7 +140,7 @@
      subtitle: '',
      pageName: {
        plan: '软件测试计划', explain: '软件测试说明', record: '软件测试记录', report: '软件测试报告',
        contract: '合同评审阶段', require: '测试需求分析与策划'
        contract: '合同评审阶段', require: '测试需求分析与策划阶段',execute:'测试设计与实现、执行阶段',summary:'测试总结阶段'
      },
      dataForm: {
        id: '',