6
jinlin
2023-12-05 dc352ea3b9ec925320784592f29ca640b3a7b2ea
6
13个文件已修改
18个文件已添加
1150 ■■■■■ 已修改文件
core/src/main/java/com/zt/life/export/service/WordFileService.java 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
modules/mainPart/src/main/java/com/zt/life/modules/configItemWarehouse/model/ConfigItemWarehouse.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
modules/mainPart/src/main/java/com/zt/life/modules/itemCirculatOrder/controller/ItemCirculatOrderController.java 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
modules/mainPart/src/main/java/com/zt/life/modules/itemCirculatOrder/model/ItemCirculatOrder.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
modules/mainPart/src/main/java/com/zt/life/modules/itemCirculatOrder/service/ItemCirculatOrderService.java 77 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
modules/mainPart/src/main/java/com/zt/life/modules/mainPart/utils/GetFilesPath.java 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
modules/mainPart/src/main/java/com/zt/life/modules/project/service/EnvironService.java 23 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
modules/mainPart/src/main/java/com/zt/life/modules/testCheckOrder/controller/TestCheckOrderController.java 114 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
modules/mainPart/src/main/java/com/zt/life/modules/testCheckOrder/controller/TestCheckOrderListController.java 97 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
modules/mainPart/src/main/java/com/zt/life/modules/testCheckOrder/dao/TestCheckOrderDao.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
modules/mainPart/src/main/java/com/zt/life/modules/testCheckOrder/dao/TestCheckOrderListDao.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
modules/mainPart/src/main/java/com/zt/life/modules/testCheckOrder/dto/CheckOrderDto.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
modules/mainPart/src/main/java/com/zt/life/modules/testCheckOrder/model/TestCheckOrder.java 82 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
modules/mainPart/src/main/java/com/zt/life/modules/testCheckOrder/model/TestCheckOrderList.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
modules/mainPart/src/main/java/com/zt/life/modules/testCheckOrder/service/TestCheckOrderListService.java 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
modules/mainPart/src/main/java/com/zt/life/modules/testCheckOrder/service/TestCheckOrderService.java 128 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
modules/mainPart/src/main/resources/mapper/testCheckOrder/TestCheckOrderDao.xml 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
modules/mainPart/src/main/resources/mapper/testCheckOrder/TestCheckOrderListDao.xml 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
web/src/views/layout/main-sidebar.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
web/src/views/modules/configItemWarehouse/ConfigItemWarehouse-AddOrUpdate.vue 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
web/src/views/modules/itemCirculatOrder/ItemCirculatOrder-AddOrUpdate.vue 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
web/src/views/modules/testCheckOrder/TestCheckOrder-AddOrUpdate.vue 88 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
web/src/views/modules/testCheckOrder/TestCheckOrder.vue 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
web/src/views/modules/testCheckOrder/TestExplainCheckOrder.vue 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
web/src/views/modules/testCheckOrder/TestPlanCheckOrder.vue 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
web/src/views/modules/testCheckOrder/TestRecordCheckOrder.vue 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
web/src/views/modules/testCheckOrder/TestReportCheckOrder.vue 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zt/core/src/main/java/com/zt/modules/sys/controller/SysUserController.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zt/core/src/main/java/com/zt/modules/sys/service/SysUserService.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zt/core/src/main/resources/mapper/sys/SysPostDao.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
zt/core/src/main/resources/mapper/sys/SysTenantDao.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
core/src/main/java/com/zt/life/export/service/WordFileService.java
@@ -14,8 +14,10 @@
import org.springframework.stereotype.Service;
import javax.imageio.ImageIO;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.awt.image.BufferedImage;
import java.io.*;
import java.lang.reflect.Field;
import java.util.*;
@@ -65,20 +67,26 @@
                } else if (staticFieldValue != null) {
                    String valStr = staticFieldValue.toString();
                    if (valStr.contains("文件图片:")) {
                        valStr = valStr.replace("文件图片:", "");
                        valStr = localPath + valStr.replace("文件图片:", "");
                        File file = new File(valStr);
                        if (file.exists()) {
                            try (InputStream in = ossEncryptService.decrypt(file)) {
                                staticFieldValue = new PictureRenderData(500, 500, ".png", in);
                                InputStream in2 = ossEncryptService.decrypt(file);
                                BufferedImage bufferedImage = ImageIO.read(in2);
                                int width = bufferedImage.getWidth();
                                int height = bufferedImage.getHeight();
                                staticFieldValue = new PictureRenderData(width, height, ".png", in);
                                /*staticFieldValue = new PictureRenderData(80, 100, "d://" + valStr);*/
                            } catch (IOException e) {
                                e.printStackTrace();
                            }
                        } else {
                            staticFieldValue = new PictureRenderData(100, 30, "template/noSign.png");
                        }
                    }
                        }
                        if (wordData.get(fieldName) == null)
                            wordData.put(fieldName, staticFieldValue);
                    }
                }
            }
        }
    }
modules/mainPart/src/main/java/com/zt/life/modules/configItemWarehouse/model/ConfigItemWarehouse.java
@@ -26,6 +26,9 @@
    @ApiModelProperty(value = "项目ID")
    private Long projectId;
    @ApiModelProperty(value = "检查单ID")
    private Long checkId;
    @ApiModelProperty(value = "配置项入库编号")
    private String code;
modules/mainPart/src/main/java/com/zt/life/modules/itemCirculatOrder/controller/ItemCirculatOrderController.java
@@ -29,6 +29,7 @@
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;
@@ -77,15 +78,6 @@
    @ApiOperation("信息")
    public Result<ItemCirculatOrderDto> getDto(Long projectId, Long circulatOrderid) {
        ItemCirculatOrderDto data = itemCirculatOrderService.getDto(projectId, circulatOrderid);
        if (circulatOrderid!=null) {
            for (ItemCirculatOrderTechnical technical : data.getTechnicalList()) {
                Long technicalId = technical.getId();
                OssDto ossDto = sysOssConfigService.getOssByBusiType(technicalId, "circulat_order");
                if (ossDto != null) {
                    technical.setFiles(ossDto);
                }
            }
        }
        return Result.ok(data);
    }
@@ -125,4 +117,11 @@
        return Result.ok();
    }
    @GetMapping("exportCirculatOrder")
    @ApiOperation("打印物品流转单")
    @LogOperation("打印物品流转单")
    public void exportCirculatOrder(Long id, HttpServletRequest request, HttpServletResponse response) {
        itemCirculatOrderService.exportCirculatOrder(id, request, response);
    }
}
modules/mainPart/src/main/java/com/zt/life/modules/itemCirculatOrder/model/ItemCirculatOrder.java
@@ -95,5 +95,17 @@
    @ApiModelProperty(value = "其他要求")
    private String itemRequireStr;
    @TableField(exist = false)
    @ApiModelProperty(value = "物品接收情况说明")
    private String acceptSituationStr;
    @TableField(exist = false)
    @ApiModelProperty(value = "校准检测情况说明")
    private String detectSituationStr;
    @TableField(exist = false)
    @ApiModelProperty(value = "物品发放情况说明")
    private String issueSituationStr;
}
modules/mainPart/src/main/java/com/zt/life/modules/itemCirculatOrder/service/ItemCirculatOrderService.java
@@ -1,19 +1,17 @@
package com.zt.life.modules.itemCirculatOrder.service;
import cn.hutool.core.convert.Convert;
import com.zt.common.service.BaseService;
import com.zt.core.sys.dto.DictDto;
import com.zt.core.sys.dto.DictItemDto;
import com.zt.core.sys.dto.DictLeafDto;
import com.zt.life.export.dto.WordFile;
import com.zt.life.export.service.WordFileService;
import com.zt.life.modules.itemCirculatOrder.dao.ItemCirculatOrderDao;
import com.zt.life.modules.itemCirculatOrder.dao.ItemCirculatOrderTechnicalDao;
import com.zt.life.modules.itemCirculatOrder.dto.ItemCirculatOrderDto;
import com.zt.life.modules.itemCirculatOrder.model.ItemCirculatOrder;
import com.zt.life.modules.itemCirculatOrder.model.ItemCirculatOrderTechnical;
import com.zt.life.modules.project.dto.SoftwareTestOrderDto;
import com.zt.life.modules.mainPart.utils.GetShowDictList;
import com.zt.life.modules.mainPart.utils.GetFilesPath;
import com.zt.life.modules.project.model.*;
import com.zt.life.modules.project.service.ProjectService;
import com.zt.life.modules.project.service.SoftwareTestOrderService;
import com.zt.life.modules.sysBaseInfo.service.TestAgencyInfoService;
import com.zt.life.sys.dto.OssDto;
import com.zt.life.sys.service.SysOssConfigService;
@@ -25,16 +23,13 @@
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;
import java.util.Map;
import java.util.stream.Collectors;
/**
@@ -65,6 +60,16 @@
    @Autowired
    private WorkflowService workflowService;
    @Autowired
    private GetShowDictList getShowDictList;
    @Autowired
    private WordFileService wordFileService;
    @Autowired
    private GetFilesPath getFilesPath;
    /**
     * 分页查询
@@ -120,7 +125,7 @@
        Long bizId = itemCirculatOrderDto.getCirculatOrder().getId();
        FlowInfoDto flowInfoDto = itemCirculatOrderDto.getFlowInfoDto();
        if (flowInfoDto != null && "tj,bl".contains(flowInfoDto.getSubmitType())) {
        if (flowInfoDto != null && flowInfoDto.getSubmitType() != null && "tj,bl".contains(flowInfoDto.getSubmitType())) {
            if ("tj".equals(flowInfoDto.getSubmitType())) {
                workflowService.startFlow(flowInfoDto.getFlowCode(), bizId);
            }
@@ -164,11 +169,59 @@
            project.setSoftwareType(type);
            data.setProject(project);
        }
        if (data.getTestAgencyInfo() == null)
            data.setTestAgencyInfo(testAgencyInfoService.get(10000L));
        if (circulatOrderid != null) {
            for (ItemCirculatOrderTechnical technical : data.getTechnicalList()) {
                Long technicalId = technical.getId();
                OssDto ossDto = sysOssConfigService.getOssByBusiType(technicalId, "circulat_order");
                if (ossDto != null) {
                    technical.setFiles(ossDto);
                }
            }
        }
        return data;
    }
    public void exportCirculatOrder(Long id, HttpServletRequest request, HttpServletResponse response) {
        try {
            ItemCirculatOrderDto dataObj = this.getDto(null, id);
            String acceptorPath = "文件图片:"+ getFilesPath.getSignPath(Convert.toLong(dataObj.getCirculatOrder().getItemAcceptorId()));
            dataObj.getCirculatOrder().setItemAcceptor(acceptorPath);
            String detectorPath = "文件图片:"+getFilesPath.getSignPath(Convert.toLong(dataObj.getCirculatOrder().getCalibratDetectorId()));
            dataObj.getCirculatOrder().setCalibratDetector(detectorPath);
            String issuerPath = "文件图片:"+getFilesPath.getSignPath(Convert.toLong(dataObj.getCirculatOrder().getItemIssuerId()));
            dataObj.getCirculatOrder().setItemIssuer(issuerPath);
            //通用字典列表字符串生成
            String itemRequireStr = getShowDictList.getShowDictList(dataObj.getCirculatOrder().getItemRequire(), "is_or_not", false);
            dataObj.getCirculatOrder().setItemRequireStr(itemRequireStr);
            String acceptSituationStr = getShowDictList.getShowDictList(dataObj.getCirculatOrder().getAcceptSituation(), "is_or_not", false);
            dataObj.getCirculatOrder().setAcceptSituationStr(acceptSituationStr);
            String detectSituationStr = getShowDictList.getShowDictList(dataObj.getCirculatOrder().getDetectSituation(), "is_or_not", false);
            dataObj.getCirculatOrder().setDetectSituationStr(detectSituationStr);
            String issueSituationStr = getShowDictList.getShowDictList(dataObj.getCirculatOrder().getIssueSituation(), "is_or_not", false);
            dataObj.getCirculatOrder().setIssueSituationStr(issueSituationStr);
            for (ItemCirculatOrderTechnical technical : dataObj.getTechnicalList()) {
                String value = technical.getSecretClass();
                String secretClassStr = getShowDictList.getShowDictList(value, "secret_class", false);
                technical.setSecretClass(secretClassStr);
            }
            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();
        }
    }
}
modules/mainPart/src/main/java/com/zt/life/modules/mainPart/utils/GetFilesPath.java
New file
@@ -0,0 +1,44 @@
package com.zt.life.modules.mainPart.utils;
import com.zt.core.sys.model.SysUser;
import com.zt.life.sys.dto.OssDto;
import com.zt.modules.oss.cloud.LocalStorageService;
import com.zt.modules.oss.model.SysOss;
import com.zt.modules.oss.service.SysOssService;
import com.zt.modules.sys.service.SysUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
@Service
public class GetFilesPath {
    @Autowired
    private SysUserService sysUserService;
    @Autowired
    private SysOssService sysOssService;
    public String getSignPath(Long userId) {
        SysUser data = sysUserService.getUserInfo(userId);
        OssDto oss = data.getFiles2();
        return getFirstImagePath(oss);
    }
    public String getFirstImagePath(OssDto oss) {
        String filePath = "";
        if (oss != null) {
            if (oss.getGroups().size() > 0) {
                OssDto.OssFieldGroupDto group = oss.getGroups().get(0);
                if (group.getFields().size() > 0) {
                    OssDto.OssFieldDto field = group.getFields().get(0);
                    if (field.getFiles().size() > 0) {
                        com.zt.core.oss.dto.OssDto file = field.getFiles().get(0);
                        SysOss sysOss = sysOssService.get(file.getId());
                        filePath = sysOss.getPath();
                    }
                }
            }
        }
        return filePath;
    }
}
modules/mainPart/src/main/java/com/zt/life/modules/project/service/EnvironService.java
@@ -6,6 +6,7 @@
import com.zt.core.sys.dto.DictLeafDto;
import com.zt.life.export.dto.WordFile;
import com.zt.life.export.service.WordFileService;
import com.zt.life.modules.mainPart.utils.GetFilesPath;
import com.zt.life.modules.mainPart.utils.GetShowDictList;
import com.zt.life.modules.project.dao.EnvironDao;
import com.zt.life.modules.project.dto.EnvironDto;
@@ -75,7 +76,7 @@
    private SysOssService sysOssService;
    @Autowired
    private LocalStorageService localStorageService;
    private GetFilesPath getFilesPath;
    @Value("${zt.oss.local-path}")
    private String localPath;
@@ -203,7 +204,7 @@
    public void exportEnviron(Long id, HttpServletRequest request, HttpServletResponse response) {
        try {
            EnvironDto dataObj = this.getDto(id, null);
            String imagePath = "文件图片:"+getFirstImagePath(dataObj.getFiles());
            String imagePath = "文件图片:"+getFilesPath.getFirstImagePath(dataObj.getFiles());
            dataObj.getEnviron().setTestEnvirontDiagram(imagePath);
            //通用字典列表字符串生成
            String isVirusScanStr = getShowDictList.getShowDictList(dataObj.getEnviron().getIsVirusScan(), "is_or_not", false);
@@ -220,21 +221,5 @@
        }
    }
    public String getFirstImagePath(OssDto oss) {
        String filePath = "";
        if (oss != null) {
            if (oss.getGroups().size() > 0) {
                OssDto.OssFieldGroupDto group = oss.getGroups().get(0);
                if (group.getFields().size() > 0) {
                    OssDto.OssFieldDto field = group.getFields().get(0);
                    if (field.getFiles().size() > 0) {
                        com.zt.core.oss.dto.OssDto file = field.getFiles().get(0);
                        SysOss sysOss = sysOssService.get(file.getId());
                        filePath = localPath+sysOss.getPath();
                    }
                }
            }
        }
        return filePath;
    }
}
modules/mainPart/src/main/java/com/zt/life/modules/testCheckOrder/controller/TestCheckOrderController.java
New file
@@ -0,0 +1,114 @@
package com.zt.life.modules.testCheckOrder.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.project.dto.EnvironDto;
import com.zt.life.modules.project.dto.SoftwareTestOrderDto;
import com.zt.life.modules.testCheckOrder.dto.CheckOrderDto;
import com.zt.life.modules.testCheckOrder.model.TestCheckOrder;
import com.zt.life.modules.testCheckOrder.service.TestCheckOrderService;
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;
/**
 * test_check_order
 *
 * @author zt generator
 * @since 1.0.0 2023-12-05
 */
@RestController
@RequestMapping("/testCheckOrder/TestCheckOrder/")
@Api(tags="test_check_order")
public class TestCheckOrderController {
    @Autowired
    private TestCheckOrderService testCheckOrderService;
    @Autowired
    private SysCodeRuleService sysCodeRuleService;
    @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"),        @ApiImplicitParam(name = "softwareidentity", value = "项目标识", dataType = Constant.QT.STRING, format = "softwareIdentity^LK"),        @ApiImplicitParam(name = "softwarename", value = "项目名称", dataType = Constant.QT.STRING, format = "softwareName^LK")    })
    public PageResult<TestCheckOrder> page(@ApiIgnore @QueryParam QueryFilter queryFilter){
        return PageResult.ok(testCheckOrderService.page(queryFilter));
    }
    @GetMapping("getDto")
    @ApiOperation("信息")
    public Result<CheckOrderDto> getDto(Long checkId, Long projectId,String itemType) {
        CheckOrderDto data = testCheckOrderService.getDto(checkId, projectId,itemType);
        return Result.ok(data);
    }
    @PostMapping
    @ApiOperation("新增")
    @LogOperation("新增")
    public Result insert(@RequestBody CheckOrderDto checkOrderDto){
        //效验数据
        ValidatorUtils.validateEntity(checkOrderDto, AddGroup.class, DefaultGroup.class);
        Map<String, String> map = new HashMap<>();
        map.put("funCode", "test_check_order");
        map.put("projectId",checkOrderDto.getProjectId().toString());
        checkOrderDto.getCheckOrder().setCode(sysCodeRuleService.getNewCode(map));
        Boolean result = testCheckOrderService.save(checkOrderDto);
        return Result.ok();
    }
    @PutMapping
    @ApiOperation("修改")
    @LogOperation("修改")
    public Result update(@RequestBody CheckOrderDto checkOrderDto){
        //效验数据
        ValidatorUtils.validateEntity(checkOrderDto, UpdateGroup.class, DefaultGroup.class);
        Boolean result = testCheckOrderService.save(checkOrderDto);
        return Result.ok();
    }
    @DeleteMapping("deleteCheckOrder")
    @ApiOperation("删除")
    @LogOperation("删除")
    public Result delete(@RequestBody Long[] ids){
        //效验数据
        AssertUtils.isArrayEmpty(ids, "id");
        testCheckOrderService.delete(ids);
        return Result.ok();
    }
    /*@GetMapping("exportCheckOrder")
    @ApiOperation("打印测试环境建立确认表")
    @LogOperation("打印测试环境建立确认表")
    public void exportEnviron(Long id, HttpServletRequest request, HttpServletResponse response) {
        environService.exportEnviron(id, request, response);
    }*/
}
modules/mainPart/src/main/java/com/zt/life/modules/testCheckOrder/controller/TestCheckOrderListController.java
New file
@@ -0,0 +1,97 @@
package com.zt.life.modules.testCheckOrder.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.testCheckOrder.model.TestCheckOrderList;
import com.zt.life.modules.testCheckOrder.service.TestCheckOrderListService;
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;
/**
 * test_check_order_list
 *
 * @author zt generator
 * @since 1.0.0 2023-12-05
 */
@RestController
@RequestMapping("/testCheckOrder/TestCheckOrderList/")
@Api(tags="test_check_order_list")
public class TestCheckOrderListController {
    @Autowired
    private TestCheckOrderListService testCheckOrderListService;
    @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 = "softwareName", value = "软件名称", dataType = Constant.QT.STRING, format = "software_name^EQ"),
    })
    public PageResult<TestCheckOrderList> page(@ApiIgnore @QueryParam QueryFilter queryFilter){
        return PageResult.ok(testCheckOrderListService.page(queryFilter));
    }
    @GetMapping("{id}")
    @ApiOperation("信息")
    public Result<TestCheckOrderList> get(@PathVariable("id") Long id){
        TestCheckOrderList data = testCheckOrderListService.get(id);
        return Result.ok(data);
    }
    @PostMapping
    @ApiOperation("新增")
    @LogOperation("新增")
    public Result insert(@RequestBody TestCheckOrderList testCheckOrderList){
        //效验数据
        ValidatorUtils.validateEntity(testCheckOrderList, AddGroup.class, DefaultGroup.class);
        testCheckOrderListService.insert(testCheckOrderList);
        return Result.ok();
    }
    @PutMapping
    @ApiOperation("修改")
    @LogOperation("修改")
    public Result update(@RequestBody TestCheckOrderList testCheckOrderList){
        //效验数据
        ValidatorUtils.validateEntity(testCheckOrderList, UpdateGroup.class, DefaultGroup.class);
        testCheckOrderListService.update(testCheckOrderList);
        return Result.ok();
    }
    @DeleteMapping
    @ApiOperation("删除")
    @LogOperation("删除")
    public Result delete(@RequestBody Long[] ids){
        //效验数据
        AssertUtils.isArrayEmpty(ids, "id");
        testCheckOrderListService.delete(ids);
        return Result.ok();
    }
}
modules/mainPart/src/main/java/com/zt/life/modules/testCheckOrder/dao/TestCheckOrderDao.java
New file
@@ -0,0 +1,23 @@
package com.zt.life.modules.testCheckOrder.dao;
import com.zt.common.dao.BaseDao;
import com.zt.life.modules.testCheckOrder.model.TestCheckOrder;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
import java.util.Map;
/**
 * test_check_order
 *
 * @author zt generator
 * @since 1.0.0 2023-12-05
 */
@Mapper
public interface TestCheckOrderDao extends BaseDao<TestCheckOrder> {
    List<TestCheckOrder> getList(Map<String, Object> params);
}
modules/mainPart/src/main/java/com/zt/life/modules/testCheckOrder/dao/TestCheckOrderListDao.java
New file
@@ -0,0 +1,24 @@
package com.zt.life.modules.testCheckOrder.dao;
import com.zt.common.dao.BaseDao;
import com.zt.life.modules.testCheckOrder.model.TestCheckOrderList;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
import java.util.Map;
/**
 * test_check_order_list
 *
 * @author zt generator
 * @since 1.0.0 2023-12-05
 */
@Mapper
public interface TestCheckOrderListDao extends BaseDao<TestCheckOrderList> {
    List<TestCheckOrderList> getList(Map<String, Object> params);
    List<TestCheckOrderList> itemList(String dictType);
}
modules/mainPart/src/main/java/com/zt/life/modules/testCheckOrder/dto/CheckOrderDto.java
New file
@@ -0,0 +1,31 @@
package com.zt.life.modules.testCheckOrder.dto;
import com.zt.life.modules.project.model.*;
import com.zt.life.modules.sysBaseInfo.model.TestAgencyInfo;
import com.zt.life.modules.testCheckOrder.model.TestCheckOrder;
import com.zt.life.modules.testCheckOrder.model.TestCheckOrderList;
import com.zt.life.sys.dto.OssDto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
@Data
public class CheckOrderDto {
    private Long id;//ID
    private Long projectId;//项目ID
    private Long checkId;//检查单ID
    private Long configOrderId;//入库单ID
    private Long configItemId;//配置项ID
    private String configItemType;//配置项类型
    @ApiModelProperty(value = "测试项目基本信息")
    private Project project;
    @ApiModelProperty(value = "检查单")
    private TestCheckOrder checkOrder;
    @ApiModelProperty(value = "检查单列表")
    private List<TestCheckOrderList> checkOrderList = new ArrayList<>();
}
modules/mainPart/src/main/java/com/zt/life/modules/testCheckOrder/model/TestCheckOrder.java
New file
@@ -0,0 +1,82 @@
package com.zt.life.modules.testCheckOrder.model;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.zt.common.entity.BusiEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
/**
 * test_check_order
 *
 * @author zt generator
 * @since 1.0.0 2023-12-05
 */
@Data
@EqualsAndHashCode(callSuper=false)
@TableName("test_check_order")
public class TestCheckOrder extends BusiEntity {
    private static final long serialVersionUID = 1L;
    @ApiModelProperty(value = "项目ID")
    private Long projectId;
    @ApiModelProperty(value = "配置项入库/变更单ID")
    private Long configOrderId;
    @ApiModelProperty(value = "配置项ID")
    private Long configItemId;
    @ApiModelProperty(value = "配置项类型")
    private Long configItemType;
    @ApiModelProperty(value = "编号")
    private String code;
    @ApiModelProperty(value = "项目标识")
    private String softwareIdentity;
    @ApiModelProperty(value = "项目名称")
    private String softwareName;
    @ApiModelProperty(value = "检查人")
    private String examiner;
    @ApiModelProperty(value = "检查时间")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date examDate;
    @ApiModelProperty(value = "问题描述")
    private String problemDescription;
    @ApiModelProperty(value = "问题处理")
    private String problemProcess;
    @ApiModelProperty(value = "处理人")
    private String processor;
    @ApiModelProperty(value = "处理人ID")
    private Long processorId;
    @ApiModelProperty(value = "处理日期")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date processDate;
    @ApiModelProperty(value = "验证人")
    private String verifier;
    @ApiModelProperty(value = "验证人ID")
    private String verifierId;
    @ApiModelProperty(value = "验证日期")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date verifyDate;
    @ApiModelProperty(value = "年份")
    private String year;
}
modules/mainPart/src/main/java/com/zt/life/modules/testCheckOrder/model/TestCheckOrderList.java
New file
@@ -0,0 +1,39 @@
package com.zt.life.modules.testCheckOrder.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;
/**
 * test_check_order_list
 *
 * @author zt generator
 * @since 1.0.0 2023-12-05
 */
@Data
@EqualsAndHashCode(callSuper=false)
@TableName("test_check_order_list")
public class TestCheckOrderList extends BusiEntity {
    private static final long serialVersionUID = 1L;
    @ApiModelProperty(value = "检查单ID")
    private Long checkOrderId;
    @ApiModelProperty(value = "序号")
    private Integer no;
    @ApiModelProperty(value = "主要检查内容")
    private String checkContent;
    @ApiModelProperty(value = "检查结果")
    private String checkResult;
    @ApiModelProperty(value = "备注")
    private String remark;
}
modules/mainPart/src/main/java/com/zt/life/modules/testCheckOrder/service/TestCheckOrderListService.java
New file
@@ -0,0 +1,52 @@
package com.zt.life.modules.testCheckOrder.service;
import com.zt.common.service.BaseService;
import com.zt.life.modules.project.model.EnvironSoftwareResources;
import com.zt.life.modules.testCheckOrder.dao.TestCheckOrderListDao;
import com.zt.life.modules.testCheckOrder.model.TestCheckOrderList;
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;
/**
 * test_check_order_list
 *
 * @author zt generator
 * @since 1.0.0 2023-12-05
 */
@Service
public class TestCheckOrderListService  extends BaseService<TestCheckOrderListDao, TestCheckOrderList> {
    /**
     * 分页查询
     *
     * @param queryFilter
     * @return
     */
    public List<TestCheckOrderList> page(QueryFilter queryFilter) {
        return baseDao.getList(queryFilter.getQueryParams());
    }
    /**
     * 删除
     *
     * @param ids
     */
    public void delete(Long[] ids) {
        super.deleteLogic(ids);
    }
    public List<TestCheckOrderList> getList(Long checkId) {
        Map<String, Object> params = new HashMap<>();
        params.put("checkId",checkId);
        return baseDao.getList(params);
    }
    public List<TestCheckOrderList> itemList(String dictType) {
        return baseDao.itemList(dictType);
    }
}
modules/mainPart/src/main/java/com/zt/life/modules/testCheckOrder/service/TestCheckOrderService.java
New file
@@ -0,0 +1,128 @@
package com.zt.life.modules.testCheckOrder.service;
import com.zt.common.service.BaseService;
import com.zt.life.modules.configItemWarehouse.dto.ConfigItemWarehouseDto;
import com.zt.life.modules.configItemWarehouse.model.WarehouseCmAudit;
import com.zt.life.modules.configItemWarehouse.model.WarehouseConfigItem;
import com.zt.life.modules.configItemWarehouse.model.WarehouseQaAudit;
import com.zt.life.modules.itemCirculatOrder.dto.ItemCirculatOrderDto;
import com.zt.life.modules.itemCirculatOrder.model.ItemCirculatOrder;
import com.zt.life.modules.itemCirculatOrder.model.ItemCirculatOrderTechnical;
import com.zt.life.modules.project.model.Project;
import com.zt.life.modules.project.service.ProjectService;
import com.zt.life.modules.testCheckOrder.dao.TestCheckOrderDao;
import com.zt.life.modules.testCheckOrder.dto.CheckOrderDto;
import com.zt.life.modules.testCheckOrder.model.TestCheckOrder;
import com.zt.life.modules.testCheckOrder.model.TestCheckOrderList;
import com.zt.life.sys.dto.OssDto;
import com.zt.modules.coderule.service.SysCodeRuleService;
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 java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * test_check_order
 *
 * @author zt generator
 * @since 1.0.0 2023-12-05
 */
@Service
public class TestCheckOrderService  extends BaseService<TestCheckOrderDao, TestCheckOrder> {
    @Autowired
    private TestCheckOrderListService checkOrderListService;
    @Autowired
    private ProjectService projectService;
    @Autowired
    private SysCodeRuleService sysCodeRuleService;
    /**
     * 分页查询
     *
     * @param queryFilter
     * @return
     */
    public List<TestCheckOrder> page(QueryFilter queryFilter) {
        return baseDao.getList(queryFilter.getQueryParams());
    }
    /**
     * 删除
     *
     * @param ids
     */
    public void delete(Long[] ids) {
        super.deleteLogic(ids);
    }
    public CheckOrderDto getDto(Long checkId, Long projectId,String itemType) {
        CheckOrderDto data = new CheckOrderDto();
        if (checkId != null) {
            data.setId(checkId);
            TestCheckOrder checkOrder = this.get(checkId);
            data.setCheckOrder(checkOrder);
            if (projectId == null) {
                projectId = checkOrder.getProjectId();
            }
            List<TestCheckOrderList> checkOrderList = checkOrderListService.getList(checkId);
            data.setCheckOrderList(checkOrderList);
        } else {
            TestCheckOrder checkOrder = new TestCheckOrder();
            data.setCheckOrder(checkOrder);
            List<TestCheckOrderList> checkOrderList =new ArrayList();
            if (itemType.equals("plan")){
                checkOrderList = checkOrderListService.itemList("plan_check_item");
            }else if (itemType.equals("explain")){
                checkOrderList = checkOrderListService.itemList("explain_check_item");
            }else if(itemType.equals("record")){
                checkOrderList = checkOrderListService.itemList("record_check_item");
            }else if (itemType.equals("report")){
                checkOrderList = checkOrderListService.itemList("report_check_item");
            }
            data.setCheckOrderList(checkOrderList);
        }
        if (projectId != null) {
            data.setProjectId(projectId);
            data.setProject(projectService.get(projectId));
        }
        return data;
    }
    public Boolean save(CheckOrderDto checkOrderDto) {
        Long checkId = checkOrderDto.getCheckOrder().getId();
        if (checkId != null)
            baseDao.updateById(checkOrderDto.getCheckOrder());
        else {
            Map<String, String> map = new HashMap<>();
            map.put("funCode", "test_check_order");
            map.put("projectId", checkOrderDto.getProjectId().toString());
            checkOrderDto.getCheckOrder().setProjectId(checkOrderDto.getProjectId());
            checkOrderDto.getCheckOrder().setCode(sysCodeRuleService.getNewCode(map));
            baseDao.insert(checkOrderDto.getCheckOrder());
            checkId = checkOrderDto.getCheckOrder().getId();
        }
        for (TestCheckOrderList checkOrderList : checkOrderDto.getCheckOrderList()) {
            checkOrderList.setCheckOrderId(checkId);
            if (checkOrderList.getId() != null) {
                checkOrderListService.update(checkOrderList);
            } else {
                checkOrderList.setCheckOrderId(checkId);
                checkOrderListService.insert(checkOrderList);
            }
        }
        return true;
    }
}
modules/mainPart/src/main/resources/mapper/testCheckOrder/TestCheckOrderDao.xml
New file
@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zt.life.modules.testCheckOrder.dao.TestCheckOrderDao">
    <select id="getList" resultType="com.zt.life.modules.testCheckOrder.model.TestCheckOrder">
        select a.* ,p.*
        from test_check_order a
        INNER JOIN  project p ON p.id = a.project_id
        <where>
            a.is_delete = 0 and p.is_delete = 0
            <if test="whereSql!=null">
                and ${whereSql}
            </if>
        </where>
        <if test="orderBySql!=null">
            ORDER BY ${orderBySql}
        </if>
    </select>
</mapper>
modules/mainPart/src/main/resources/mapper/testCheckOrder/TestCheckOrderListDao.xml
New file
@@ -0,0 +1,34 @@
<?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.testCheckOrder.dao.TestCheckOrderListDao">
    <select id="getList" resultType="com.zt.life.modules.testCheckOrder.model.TestCheckOrderList">
        select a.*
        from test_check_order_list a
        <where>
            a.is_delete = 0
            <if test="whereSql!=null">
                and ${whereSql}
            </if>
        </where>
        <if test="orderBySql!=null">
            ORDER BY ${orderBySql}
        </if>
    </select>
    <select id="itemList" resultType="com.zt.life.modules.testCheckOrder.model.TestCheckOrderList">
        SET @row_number = 0;
        SELECT  dd.dict_label AS checkContent,
        (@row_number := @row_number + 1) AS no
        FROM sys_dict_type dt
        JOIN sys_dict_data dd ON dt.ID = dd.DICT_TYPE_ID
        <where>
            dd.IS_DELETE = 0
            <if test="dictType != null and dictType != ''">
                and dt.DICT_TYPE = #{dictType}
            </if>
        </where>
        ORDER BY dd.sort
    </select>
</mapper>
web/src/views/layout/main-sidebar.vue
@@ -213,6 +213,7 @@
          this.$refs.mainNavbar.refresh()
        }
        this.$nextTick(() => {
          console.log(route.meta.params,"route.meta.params")
          this.$router.push({name: route.name, query: route.meta.params, params: route.meta.params})
        })
      }
web/src/views/modules/configItemWarehouse/ConfigItemWarehouse-AddOrUpdate.vue
@@ -15,10 +15,11 @@
          <el-input v-model="dataForm.project.softwareName" placeholder="请输入项目名称"></el-input>
        </el-form-item>
        <el-form-item label="申请人" style="width: 49%">
          <el-input v-model="dataForm.configItemWarehouse.applicant" placeholder="请输入申请人"></el-input>
          <el-input :disabled="stepMarker=='pzxrk_first'"v-model="dataForm.configItemWarehouse.applicant" placeholder="请输入申请人"></el-input>
        </el-form-item>
        <el-form-item label="申请日期" style="width: 49%">
          <el-date-picker
            :disabled="stepMarker=='pzxrk_first'"
            v-model="dataForm.configItemWarehouse.applyDate"
            type="date"
            placeholder="请选择申请日期">
@@ -93,20 +94,20 @@
              <el-table-column prop="examineItem" min-width="300" label="检查项"></el-table-column>
              <el-table-column label="检查结果" width="250" align="center">
                <template slot-scope="scope">
                  <zt-dict :disabled="getRoleName.indexOf('QA角色')===-1" v-model="scope.row.examineResult" placeholder="检查结果" dict="tristate2" :radio="true"
                  <zt-dict :disabled="stepMarker=='wplz_qash'" v-model="scope.row.examineResult" placeholder="检查结果" dict="tristate2" :radio="true"
                           clearable></zt-dict>
                </template>
              </el-table-column>
              <el-table-column align="center" width="120" label="不适用说明">
                <template v-slot="{ row }">
                  <el-input v-if="getRoleName.indexOf('QA角色')>=0" v-model="row.notApplyExplan" placeholder="不适用说明"></el-input>
                  <el-input v-if="stepMarker=='wplz_qash'" v-model="row.notApplyExplan" placeholder="不适用说明"></el-input>
                  <span v-else>{{row.notApplyExplan}}</span>
                </template>
              </el-table-column>
            </el-table>
            <div class="el-border-top">
            <el-form-item label="审核结果" style="width: 99%">
              <zt-dict :disabled="getRoleName.indexOf('QA角色')===-1" v-model="dataForm.configItemWarehouse.qaAuditResults" dict="is_pass" :radio="true"
              <zt-dict :disabled="stepMarker=='wplz_qash'" v-model="dataForm.configItemWarehouse.qaAuditResults" dict="is_pass" :radio="true"
                       clearable></zt-dict>
            </el-form-item>
            <el-form-item label="审核人:" style="width: 48%">
@@ -129,20 +130,20 @@
              <el-table-column prop="examineItem" min-width="300" label="检查项"></el-table-column>
              <el-table-column label="检查结果" width="250" align="center">
                <template slot-scope="scope">
                  <zt-dict :disabled="getRoleName.indexOf('CM角色')===-1" v-model="scope.row.examineResult" placeholder="检查结果" dict="tristate2" :radio="true"
                  <zt-dict :disabled="stepMarker=='wplz_cmsh'" v-model="scope.row.examineResult" placeholder="检查结果" dict="tristate2" :radio="true"
                           clearable></zt-dict>
                </template>
              </el-table-column>
              <el-table-column prop="notApplyExplan" align="center" width="120" label="不适用说明">
                <template v-slot="{ row }">
                  <el-input v-if="getRoleName.indexOf('CM角色')>=0" v-model="row.notApplyExplan" placeholder="不适用说明"></el-input>
                  <el-input v-if="stepMarker=='wplz_cmsh'" v-model="row.notApplyExplan" placeholder="不适用说明"></el-input>
                  <span v-else>{{row.notApplyExplan}}</span>
                </template>
              </el-table-column>
            </el-table>
            <div class="el-border-top">
              <el-form-item label="审核结果" style="width: 99%">
                <zt-dict :disabled="getRoleName.indexOf('CM角色')===-1" v-model="dataForm.configItemWarehouse.cmAuditResults" placeholder="审核结果" dict="is_pass" :radio="true"
                <zt-dict :disabled="stepMarker=='wplz_cmsh'" v-model="dataForm.configItemWarehouse.cmAuditResults" placeholder="审核结果" dict="is_pass" :radio="true"
                         clearable></zt-dict>
              </el-form-item>
              <el-form-item label="审核人:" style="width: 48%">
@@ -160,7 +161,7 @@
          </div>
          <div style="width: calc(100% - 120px)" class="el-border-left">
            <el-form-item class="el-wt-form-item-margin" label-width="20px" style="width: 85%">
              <zt-dict :disabled="getRoleName.indexOf('部门SCCB角色')===-1" v-model="dataForm.configItemWarehouse.approvalOpinions" dict="is_pass" :radio="true"
              <zt-dict :disabled="stepMarker=='wplz_bmsh'" v-model="dataForm.configItemWarehouse.approvalOpinions" dict="is_pass" :radio="true"
                       clearable></zt-dict>
            </el-form-item>
            <el-form-item label-width="80%" label="签字:" style="width: 65%">
@@ -177,7 +178,7 @@
          </div>
          <div style="width: calc(100% - 120px)" class="el-border-left">
            <el-form-item class="el-CMTextarea" style="width: 100%;padding: 5px">
              <el-input v-if="getRoleName.indexOf('CM角色')>=0" type="textarea" :rows="2" placeholder="请输入内容" v-model="dataForm.configItemWarehouse.projectCmOperations"></el-input>
              <el-input v-if="stepMarker=='wplz_cmcz'" type="textarea" :rows="2" placeholder="请输入内容" v-model="dataForm.configItemWarehouse.projectCmOperations"></el-input>
            </el-form-item>
            <el-form-item label-width="80%" label="操作人:" style="width: 65%">
              <span>{{dataForm.configItemWarehouse.operator}}</span>
web/src/views/modules/itemCirculatOrder/ItemCirculatOrder-AddOrUpdate.vue
@@ -98,11 +98,11 @@
          <div style="width: calc(100% - 120px);">
            <div class="el-border-left">
              <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"
                <zt-dict :disabled="stepMarker=='wplz_first'" v-model="dataForm.circulatOrder.itemRequire" :radio="true"
                         dict="is_or_not"></zt-dict>
              </el-form-item>
              <el-form-item label="物品的其他要求:" label-width="150px" style="width:100%;padding-left:20px;margin-bottom:0">
                <el-input v-model="dataForm.circulatOrder.itemOther"></el-input>
                <el-input :disabled="stepMarker=='wplz_first'" v-model="dataForm.circulatOrder.itemOther"></el-input>
              </el-form-item>
            </div>
          </div>
@@ -129,10 +129,10 @@
          </div>
          <div class="el-border-left " style="width: 35%;height: 80px;">
            <el-form-item label="是否完成病毒查杀" label-width="150px" style="padding-left:20px;margin-bottom:0">
              <zt-dict v-model="dataForm.circulatOrder.acceptSituation" :radio="true" dict="is_or_not"></zt-dict>
              <zt-dict :disabled="stepMarker=='wplz_first'" v-model="dataForm.circulatOrder.acceptSituation" :radio="true" dict="is_or_not"></zt-dict>
            </el-form-item>
            <el-form-item label="病毒库版本:" label-width="150px" style="width:100%;padding-left:20px;margin-bottom:0">
              <el-input v-model="dataForm.circulatOrder.virusLibraryVersion"></el-input>
              <el-input :disabled="stepMarker=='wplz_first'" v-model="dataForm.circulatOrder.virusLibraryVersion"></el-input>
            </el-form-item>
          </div>
        </div>
@@ -185,7 +185,7 @@
          </div>
          <div class="el-border-left " style="width: 35%;height: 40px;">
            <el-form-item label="是否满足测试要求" label-width="150px" style="padding-left:20px;margin-bottom:0">
              <zt-dict :disabled="getRoleName.indexOf('QA角色')===-1" v-model="dataForm.circulatOrder.detectSituation" :radio="true" dict="is_or_not"></zt-dict>
              <zt-dict :disabled="stepMarker=='wplz_xzjc'" v-model="dataForm.circulatOrder.detectSituation" :radio="true" dict="is_or_not"></zt-dict>
            </el-form-item>
          </div>
        </div>
@@ -238,7 +238,7 @@
          </div>
          <div class="el-border-left " style="width: 35%;height: 40px;">
            <el-form-item label="是否完成样品发放" label-width="150px" style="padding-left:20px;margin-bottom:0">
              <zt-dict v-model="dataForm.circulatOrder.issueSituation" :radio="true" dict="is_or_not"></zt-dict>
              <zt-dict :disabled="stepMarker=='wplz_wpff'"v-model="dataForm.circulatOrder.issueSituation" :radio="true" dict="is_or_not"></zt-dict>
            </el-form-item>
          </div>
        </div>
@@ -254,10 +254,16 @@
        </div>
      </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 {
@@ -363,6 +369,14 @@
        }
        console.log(this.dataForm, "getInfo this.dataForm")
      },
      async print(){
        var params = qs.stringify({
          token: Cookies.get('token'),
          id:this.dataForm.id
        })
        let apiURL = `/itemCirculatOrder/ItemCirculatOrder/exportCirculatOrder/`
        window.location.href = `${window.SITE_CONFIG['apiURL']}${apiURL}?${params}`
      },
      // 表单提交
      async formSubmit(submitType) {
        console.log(this.dataForm, "this.dataForm11111")
web/src/views/modules/testCheckOrder/TestCheckOrder-AddOrUpdate.vue
New file
@@ -0,0 +1,88 @@
<template>
  <zt-dialog ref="dialog" column="2" @confirm="formSubmit">
    <el-form :model="dataForm" ref="dataForm" :disabled="dataForm.disabled" label-width="120px">
      <zt-form-item label="编号" prop="code" rules="required">
        <el-input v-model="dataForm.code"></el-input>
      </zt-form-item>
      <zt-form-item label="项目标识" prop="softwareidentity" rules="required">
        <el-input v-model="dataForm.softwareidentity"></el-input>
      </zt-form-item>
      <zt-form-item label="项目名称" prop="softwarename" rules="required">
        <el-input v-model="dataForm.softwarename"></el-input>
      </zt-form-item>
      <zt-form-item label="检查人" prop="examiner" rules="required">
        <el-input v-model="dataForm.examiner"></el-input>
      </zt-form-item>
      <zt-form-item label="检查时间" prop="examDate" rules="required">
        <el-input v-model="dataForm.examDate"></el-input>
      </zt-form-item>
      <zt-form-item label="问题描述" prop="problemDescription" rules="required">
        <el-input v-model="dataForm.problemDescription"></el-input>
      </zt-form-item>
      <zt-form-item label="问题处理" prop="problemProcess" rules="required">
        <el-input v-model="dataForm.problemProcess"></el-input>
      </zt-form-item>
      <zt-form-item label="处理人" prop="processor" rules="required">
        <el-input v-model="dataForm.processor"></el-input>
      </zt-form-item>
      <zt-form-item label="处理日期" prop="processDate" rules="required">
        <el-input v-model="dataForm.processDate"></el-input>
      </zt-form-item>
      <zt-form-item label="验证人" prop="verifier" rules="required">
        <el-input v-model="dataForm.verifier"></el-input>
      </zt-form-item>
      <zt-form-item label="验证日期" prop="verifyDate" rules="required">
        <el-input v-model="dataForm.verifyDate"></el-input>
      </zt-form-item>
      <zt-form-item label="年份" prop="year" rules="required">
        <el-input v-model="dataForm.year"></el-input>
      </zt-form-item>
    </el-form>
  </zt-dialog>
</template>
<script>
  export default {
    data() {
      return {
        dataForm: {
          id: '',
          projectId: '',
          code: '',
          softwareidentity: '',
          softwarename: '',
          examiner: '',
          examDate: '',
          problemDescription: '',
          problemProcess: '',
          processor: '',
          processorId: '',
          processDate: '',
          verifier: '',
          verifierId: '',
          verifyDate: '',
          year: ''
        }
      }
    },
    methods: {
      // 获取信息
      async getInfo() {
        let res = await this.$http.get(`/testCheckOrder/TestCheckOrder/${this.dataForm.id}`)
        this.dataForm = {
          ...this.dataForm,
          ...res.data
        }
      },
      // 表单提交
      async formSubmit() {
        let res = await this.$http[!this.dataForm.id ? 'post' : 'put']('/testCheckOrder/TestCheckOrder/', this.dataForm)
        if (res.success) {
          await this.$tip.success()
          this.$refs.dialog.close()
          this.$emit('refreshDataList')
        }
      }
    }
  }
</script>
web/src/views/modules/testCheckOrder/TestCheckOrder.vue
New file
@@ -0,0 +1,58 @@
<template>
  <el-card shadow="never" class="aui-card--fill">
    <div class="mod-testCheckOrder-testCheckOrder}">
      <zt-table-wraper query-url="/testCheckOrder/TestCheckOrder/page" delete-url="/testCheckOrder/TestCheckOrder" v-slot="{ table }">
        <el-form :inline="true" :model="dataForm" @keyup.enter.native="table.query()">
          <el-form-item>
            <el-input v-model="dataForm.code" placeholder="请输入编号" clearable></el-input>
          </el-form-item>
          <el-form-item>
            <el-input v-model="dataForm.softwarename" placeholder="请输入项目名称" clearable></el-input>
          </el-form-item>
          <el-form-item>
            <zt-button type="query" @click="table.query()"/>
            <zt-button type="add" perm="testCheckOrder:add" @click="table.editHandle()"/>
            <zt-button type="delete" perm="testCheckOrder: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="softwareIdentity" label="项目标识"/>
                <el-table-column prop="softwareName" label="项目名称"/>
              <zt-table-column-handle :table="table" edit-perm="testCheckOrder:update" delete-perm="testCheckOrder::delete"/>
        </el-table>
        <!-- 弹窗, 新增 / 修改 -->
        <add-or-update @refreshDataList="table.query"/>
      </zt-table-wraper>
    </div>
  </el-card>
</template>
<script>
  import AddOrUpdate from './TestCheckOrder-AddOrUpdate'
  export default {
    props: {
      pageCode: {
        type: String,
        default: ''
      },
      pageRead: {
        type: String,
        default: 'yes'
      }
    },
    data() {
      return {
        dataForm: {
          code: '',
          softwareidentity: '',
          softwarename: '',
        }
      }
    },
    components: {
      AddOrUpdate
    }
  }
</script>
web/src/views/modules/testCheckOrder/TestExplainCheckOrder.vue
New file
@@ -0,0 +1,22 @@
<template>
  <test-check-order ref="projectListObj" :pageCode="pageCode" :pageRead="pageRead" :isShow="isShow"/>
</template>
<script>
  import TestCheckOrder from './TestCheckOrder'
  export default {
    data() {
      return {
        pageCode: 'explain',
        pageRead: 'no'
      }
    },
    components: {
      TestCheckOrder,
    },
    mounted() {
    },
    methods: {}
  }
</script>
web/src/views/modules/testCheckOrder/TestPlanCheckOrder.vue
New file
@@ -0,0 +1,22 @@
<template>
  <test-check-order ref="projectListObj" :pageCode="pageCode" :pageRead="pageRead" :isShow="isShow"/>
</template>
<script>
  import TestCheckOrder from './TestCheckOrder'
  export default {
    data() {
      return {
        pageCode: 'plan',
        pageRead: 'no'
      }
    },
    components: {
      TestCheckOrder,
    },
    mounted() {
    },
    methods: {}
  }
</script>
web/src/views/modules/testCheckOrder/TestRecordCheckOrder.vue
New file
@@ -0,0 +1,22 @@
<template>
  <test-check-order ref="projectListObj" :pageCode="pageCode" :pageRead="pageRead" :isShow="isShow"/>
</template>
<script>
  import TestCheckOrder from './TestCheckOrder'
  export default {
    data() {
      return {
        pageCode: 'record',
        pageRead: 'no'
      }
    },
    components: {
      TestCheckOrder,
    },
    mounted() {
    },
    methods: {}
  }
</script>
web/src/views/modules/testCheckOrder/TestReportCheckOrder.vue
New file
@@ -0,0 +1,22 @@
<template>
  <test-check-order ref="projectListObj" :pageCode="pageCode" :pageRead="pageRead" :isShow="isShow"/>
</template>
<script>
  import TestCheckOrder from './TestCheckOrder'
  export default {
    data() {
      return {
        pageCode: 'report',
        pageRead: 'no'
      }
    },
    components: {
      TestCheckOrder,
    },
    mounted() {
    },
    methods: {}
  }
</script>
zt/core/src/main/java/com/zt/modules/sys/controller/SysUserController.java
@@ -103,17 +103,7 @@
    @ApiOperation("信息")
    @RequiresPermissions("sys:user:info")
    public Result<SysUser> get(@PathVariable("id") Long id) {
        SysUser data = sysUserService.get(id);
        if (data != null) {
            OssDto ossDto= sysOssConfigService.getOssByBusiType(data.getId() , "users_avatar");
            if (ossDto != null) {
                data.setFiles(ossDto);
            }
            OssDto ossDto2= sysOssConfigService.getOssByBusiType(data.getId() , "users_sign");
            if (ossDto2 != null) {
                data.setFiles2(ossDto2);
            }
        }
        SysUser data = sysUserService.getUserInfo(id);
        // 用户岗位列表
        data.setPostIdList(sysPostUserService.getUserPosts(id).stream().map(post -> post.getId())
                .collect(Collectors.toList()));
zt/core/src/main/java/com/zt/modules/sys/service/SysUserService.java
@@ -334,4 +334,19 @@
    public List<SysUser> getUsersList() {
        return baseDao.getUsersList();
    }
    public SysUser getUserInfo(Long id) {
        SysUser data = super.get(id);
        if (data != null) {
            OssDto ossDto= sysOssConfigService.getOssByBusiType(data.getId() , "users_avatar");
            if (ossDto != null) {
                data.setFiles(ossDto);
            }
            OssDto ossDto2= sysOssConfigService.getOssByBusiType(data.getId() , "users_sign");
            if (ossDto2 != null) {
                data.setFiles2(ossDto2);
            }
        }
        return data;
    }
}
zt/core/src/main/resources/mapper/sys/SysPostDao.xml
@@ -4,7 +4,7 @@
<mapper namespace="com.zt.modules.sys.dao.SysPostDao">
    <select id="getList" resultType="com.zt.modules.sys.model.SysPost">
        select a.* ,(select t2.dept_name from SYS_DEPT t2 where t2.dept_id=a.dept_id) deptName
        select a.* ,(select t2.name from SYS_DEPT t2 where t2.id=a.dept_id) deptName
        from SYS_POST a
        where a.is_delete = 0
        <if test="name != null">
zt/core/src/main/resources/mapper/sys/SysTenantDao.xml
@@ -4,8 +4,8 @@
<mapper namespace="com.zt.modules.sys.dao.SysTenantDao">
    <select id="getList" resultType="com.zt.modules.sys.model.SysTenant">
        select a.*, u.phonenumber adminMobile, u.nick_name adminRealName
        from SYS_TENANT a left join SYS_USER u on a.admin_user_id = u.user_id
        select a.*, u.MOBILE adminMobile, u.real_name adminRealName
        from SYS_TENANT a left join SYS_USER u on a.admin_user_id = u.id
        where a.is_delete = 0
        <if test="code != null">
             and a.code like #{code}