| | |
| | | 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年MM月dd日"); |
| | | staticFieldValue = sdf.format(staticFieldValue); |
| | | } |
| | | String valStr = staticFieldValue.toString(); |
| | |
| | | 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; |
| | |
| | | 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; |
| | |
| | | @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){ |
| | | |
| | |
| | | @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); |
| | | } |
| | | |
| | |
| | | return Result.ok(); |
| | | } |
| | | |
| | | @GetMapping("exportConfigAudit") |
| | | @ApiOperation("打印审核报告") |
| | | @LogOperation("打印审核报告") |
| | | public void exportConfigAudit(Long id, HttpServletRequest request, HttpServletResponse response) { |
| | | configAuditReportService.exportConfigAudit(id, request, response); |
| | | } |
| | | |
| | | } |
| | |
| | | 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; |
| | |
| | | private Project project; |
| | | |
| | | |
| | | private FlowInfoDto flowInfoDto; |
| | | @ApiModelProperty(value = "附件") |
| | | private OssDto files; |
| | | |
| | | @ApiModelProperty(value = "审核内容") |
| | | private List<ConfigAuditReportContent> contentList = new ArrayList<>(); |
| | |
| | | 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; |
| | |
| | | @ApiModelProperty(value = "年份") |
| | | private String year; |
| | | |
| | | @TableField(exist = false) |
| | | @ApiModelProperty(value = "项目标识") |
| | | private String softwareIdentity; |
| | | |
| | | @TableField(exist = false) |
| | | @ApiModelProperty(value = "项目名称") |
| | | private String softwareName; |
| | | |
| | | } |
| | |
| | | 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; |
| | |
| | | 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; |
| | |
| | | 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; |
| | |
| | | @Autowired |
| | | private WordFileService wordFileService; |
| | | |
| | | @Autowired |
| | | private GetFilesPath getFilesPath; |
| | | /** |
| | | * 分页查询 |
| | | * |
| | |
| | | * @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; |
| | | } |
| | | |
| | | /** |
| | |
| | | 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(); |
| | | } |
| | | } |
| | | } |
| | |
| | | @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); |
| | |
| | | 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(); |
| | |
| | | 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(); |
| | | } |
New file |
| | |
| | | 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); |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | 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(); |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | 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); |
| | | |
| | | } |
New file |
| | |
| | | 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); |
| | | } |
New file |
| | |
| | | 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<>(); |
| | | } |
New file |
| | |
| | | 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 = "监督人ID") |
| | | private Long supervisorId; |
| | | |
| | | @ApiModelProperty(value = "监督日期") |
| | | @JsonFormat(pattern = "yyyy-MM-dd") |
| | | private Date superviseDate; |
| | | |
| | | @ApiModelProperty(value = "年份") |
| | | private String year; |
| | | |
| | | } |
New file |
| | |
| | | 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 = "责任人") |
| | | private String chargePerson; |
| | | |
| | | @ApiModelProperty(value = "状态") |
| | | private String status; |
| | | |
| | | @ApiModelProperty(value = "备注") |
| | | private String remark; |
| | | |
| | | } |
New file |
| | |
| | | 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); |
| | | } |
| | | } |
New file |
| | |
| | | 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(); |
| | | } |
| | | } |
| | | } |
| | |
| | | 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; |
| | |
| | | public class TestReviewCommentController { |
| | | @Autowired |
| | | private TestReviewCommentService testReviewCommentService; |
| | | @Autowired |
| | | private SysOssConfigService sysOssConfigService; |
| | | |
| | | @GetMapping("page") |
| | | @ApiOperation("分页") |
| | |
| | | @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){ |
| | |
| | | @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); |
| | | } |
| | | |
| | |
| | | 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; |
| | |
| | | private Long projectId;//项目ID |
| | | private String pageCode;//配置项类型 |
| | | |
| | | @ApiModelProperty(value = "附件") |
| | | private OssDto files; |
| | | |
| | | @ApiModelProperty(value = "测试评审意见") |
| | | private TestReviewComment reviewComment; |
| | |
| | | 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; |
| | |
| | | @ApiModelProperty(value = "评审人数") |
| | | private Integer reviewerNum; |
| | | |
| | | @TableField(exist = false) |
| | | @ApiModelProperty(value = "项目名称") |
| | | private String softwareName; |
| | | |
| | | } |
| | |
| | | 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; |
| | |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.regex.Matcher; |
| | | import java.util.regex.Pattern; |
| | | |
| | | |
| | | /** |
| | |
| | | private ProjectService projectService; |
| | | |
| | | @Autowired |
| | | private SysCodeRuleService sysCodeRuleService; |
| | | private SysOssConfigService sysOssConfigService; |
| | | |
| | | @Autowired |
| | | private WordFileService wordFileService; |
| | |
| | | * @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; |
| | | } |
| | |
| | | } |
| | | } else { |
| | | TestReviewComment reviewComment = new TestReviewComment(); |
| | | reviewComment.setPageCode(pageCode); |
| | | data.setReviewComment(reviewComment); |
| | | } |
| | | if (projectId != null) { |
| | |
| | | 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(); |
| | |
| | | <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> |
New file |
| | |
| | | <?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> |
New file |
| | |
| | | <?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> |
| | |
| | | ORDER BY ${orderBySql} |
| | | </if> |
| | | </select> |
| | | |
| | | </mapper> |
| | |
| | | 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> |
| | |
| | | <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> |
| | |
| | | <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> |
| | |
| | | </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"> |
| | |
| | | </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年MM月DD日') }} |
| | | <el-date-picker |
| | | v-model="dataForm.auditReport.auditorDate" |
| | | type="date" |
| | | placeholder="请选择日期"> |
| | | </el-date-picker> |
| | | <!--{{ dataForm.configAuditReport.auditorDate | filterTime('YYYY年MM月DD日') }}--> |
| | | </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> |
| | |
| | | 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:[] |
| | | } |
| | | } |
| | | }, |
| | |
| | | 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; |
| | |
| | | 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() |
| | |
| | | .configAuditFormAuto .el-radio { |
| | | margin-right: 10px; |
| | | } |
| | | .report-sc > .el-form-item > .el-form-item__content { |
| | | width:100%; |
| | | } |
| | | </style> |
| | |
| | | <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> |
| | |
| | | <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"/> |
| | |
| | | <el-button v-if="dataForm.disabled" type="primary" @click="print()">打印</el-button> |
| | | </template> |
| | | </zt-dialog> |
| | | |
| | | </template> |
| | | |
| | | <script> |
| | |
| | | let params = { |
| | | reviewId: this.dataForm.id, |
| | | projectId: this.dataForm.projectId |
| | | |
| | | } |
| | | let res = await this.$http.get(`/contractReview/ContractReview/getDto`, {params: params}) |
| | | this.dataForm = { |
New file |
| | |
| | | <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="技术负责人:" style="width: 48%"> |
| | | <el-input type="textarea" :rows="1" placeholder="请输入技术负责人" |
| | | 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> |
New file |
| | |
| | | <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> |
| | |
| | | <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> |
| | |
| | | export default { |
| | | data() { |
| | | return { |
| | | type:'test_review_comment_', |
| | | pageCode: '', |
| | | dataForm: { |
| | | id: '', |
| | | project: { |
| | | softwareName: '', |
| | | softwareIdentity:'', |
| | | code:'' |
| | | }, |
| | | reviewComment: { |
| | | reviewDate: '', |
| | |
| | | ...this.dataForm, |
| | | ...res.data |
| | | } |
| | | this.type=this.type+this.pageCode |
| | | console.log(this.dataForm, 'this.dataForm this.dataForm') |
| | | }, |
| | | async print() { |
| | |
| | | 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}` |
| | | }, |
| | | // 表单提交 |
| | |
| | | } |
| | | } |
| | | </script> |
| | | <style> |
| | | .marginTopAndMarginBottom { |
| | | margin-top: 0 !important; |
| | | margin-bottom: 0 !important; |
| | | } |
| | | </style> |
| | | |
| | |
| | | <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> |
| | |
| | | </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"> |
| | |
| | | TestReviewComment:'TestReviewComment', |
| | | pageCode: '', |
| | | dataForm: { |
| | | code: '', |
| | | softwareName: '', |
| | | pageCode:this.$route.query.pageCode |
| | | } |
| | |
| | | Integer checkTestHome(String systemId, Long userId); |
| | | List<SysUser> getUsersList(); |
| | | |
| | | String getUsersName(Long id); |
| | | String getUsersName(String id); |
| | | } |
| | |
| | | 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) { |
| | |
| | | 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 |