| | |
| | | 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); |
| | |
| | | e.printStackTrace(); |
| | | } |
| | | } else { |
| | | staticFieldValue = new PictureRenderData(100, 30, "template/noSign.png"); |
| | | staticFieldValue = new PictureRenderData(100, 30, localPath+"template/noSign.png"); |
| | | } |
| | | } |
| | | } |
| | |
| | | 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 = "变更配置项") |
| | |
| | | private Long projectId; |
| | | private Long warehouseId; |
| | | |
| | | @ApiModelProperty(value = "测试项目基本信息") |
| | | private Project project; |
| | | @ApiModelProperty(value = "配置项出库") |
| | | private ConfigItemOutbound configItemOutbound; |
| | | @ApiModelProperty(value = "测试项目基本信息") |
| | | private Project project; |
| | | |
| | | |
| | | private FlowInfoDto flowInfoDto; |
| | | |
| | |
| | | private Long projectId; |
| | | private Long warehouseId; |
| | | |
| | | @ApiModelProperty(value = "测试项目基本信息") |
| | | private Project project; |
| | | @ApiModelProperty(value = "配置项入库") |
| | | private ConfigItemWarehouse configItemWarehouse; |
| | | @ApiModelProperty(value = "测试项目基本信息") |
| | | private Project project; |
| | | |
| | | |
| | | private FlowInfoDto flowInfoDto; |
| | | |
| | |
| | | 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; |
| | |
| | | @Autowired |
| | | private SysCodeRuleService sysCodeRuleService; |
| | | |
| | | @Autowired |
| | | private SysOssConfigService sysOssConfigService; |
| | | |
| | | @GetMapping("page") |
| | | @ApiOperation("分页") |
| | | @ApiImplicitParams({ |
| | |
| | | @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)); |
| | |
| | | @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); |
| | | } |
| | | |
| | |
| | | return Result.ok(); |
| | | } |
| | | |
| | | /* @GetMapping("exportReview") |
| | | @GetMapping("exportReview") |
| | | @ApiOperation("打印合同评审单") |
| | | @LogOperation("打印合同评审单") |
| | | public void exportReview(Long id, HttpServletRequest request, HttpServletResponse response) { |
| | | contractReviewService.exportReview(id, request, response); |
| | | }*/ |
| | | } |
| | | |
| | | } |
| | |
| | | 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; |
| | |
| | | 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<>(); |
| | |
| | | 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; |
| | |
| | | @ApiModelProperty(value = "年份") |
| | | private String year; |
| | | |
| | | @TableField(exist = false) |
| | | @ApiModelProperty(value = "客户名称") |
| | | private String agencyName; |
| | | |
| | | } |
| | |
| | | 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(); |
| | | } |
| | | }*/ |
| | | } |
| | | } |
| | |
| | | |
| | | private FlowInfoDto flowInfoDto; |
| | | |
| | | @ApiModelProperty(value = "测试项目基本信息") |
| | | private Project project; |
| | | @ApiModelProperty(value = "物品流转单") |
| | | private ItemCirculatOrder circulatOrder; |
| | | @ApiModelProperty(value = "测试项目基本信息") |
| | | private Project project; |
| | | |
| | | @ApiModelProperty(value = "测试机构信息") |
| | | private TestAgencyInfo TestAgencyInfo; |
| | | |
| | |
| | | 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 = "附件") |
| | |
| | | } |
| | | |
| | | @GetMapping("exportCheckOrder") |
| | | @ApiOperation("打印测试环境建立确认表") |
| | | @LogOperation("打印测试环境建立确认表") |
| | | @ApiOperation("打印检查单") |
| | | @LogOperation("打印检查单") |
| | | public void exportCheckOrder(Long id, String pageCode, HttpServletRequest request, HttpServletResponse response) { |
| | | testCheckOrderService.exportCheckOrder(id,pageCode, request, response); |
| | | } |
| | |
| | | |
| | | 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<>(); |
| | |
| | | //通用字典列表字符串生成 |
| | | 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); |
| | | } |
| | | |
| | |
| | | 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(); |
| | |
| | | <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> |
| | |
| | | <where> |
| | | a.is_delete = 0 |
| | | <if test="reviewId!=null"> |
| | | and warehouse_id = ${reviewId} |
| | | and review_id = ${reviewId} |
| | | </if> |
| | | </where> |
| | | <if test="orderBySql!=null"> |
| | |
| | | <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> |
| | |
| | | </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> |
| | |
| | | return { |
| | | dataForm: { |
| | | id: '', |
| | | files:'', |
| | | contractReview: { |
| | | code: '', |
| | | orderCode: '', |
| | |
| | | ...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) |
| | |
| | | <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()"/> |
| | |
| | | <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> |
| | | <!-- 弹窗, 新增 / 修改 --> |
| | |
| | | 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') |
| | |
| | | subtitle: '', |
| | | pageName: { |
| | | plan: '软件测试计划', explain: '软件测试说明', record: '软件测试记录', report: '软件测试报告', |
| | | contract: '合同评审阶段', require: '测试需求分析与策划' |
| | | contract: '合同评审阶段', require: '测试需求分析与策划阶段',execute:'测试设计与实现、执行阶段',summary:'测试总结阶段' |
| | | }, |
| | | dataForm: { |
| | | id: '', |