modules/mainPart/src/main/java/com/zt/life/modules/configItemChange/controller/ConfigItemChangeController.java
@@ -127,7 +127,8 @@ @GetMapping("getItemList") @ApiOperation("获取入库配置项列表") public PageResult<WarehouseConfigItem> getItemList(Long projectId,String ids) { List<WarehouseConfigItem> resultList = configItemService.warehouseConfigList(projectId,ids); String type ="change_select_id"; List<WarehouseConfigItem> resultList = configItemService.warehouseConfigList(projectId,ids,type); return PageResult.ok(resultList); } @GetMapping("exportConfigChange") modules/mainPart/src/main/java/com/zt/life/modules/configItemOutbound/controller/ConfigItemOutboundController.java
New file @@ -0,0 +1,140 @@ package com.zt.life.modules.configItemOutbound.controller; import com.zt.common.annotation.LogOperation; import com.zt.common.annotation.QueryParam; import com.zt.common.constant.Constant; import com.zt.common.db.query.QueryFilter; import com.zt.common.servlet.PageResult; import com.zt.common.servlet.Result; 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.configItemOutbound.dto.ConfigItemOutboundDto; import com.zt.life.modules.configItemOutbound.model.ConfigItemOutbound; import com.zt.life.modules.configItemOutbound.service.ConfigItemOutboundService; import com.zt.life.modules.configItemWarehouse.model.WarehouseConfigItem; import com.zt.life.modules.configItemWarehouse.service.WarehouseConfigItemService; 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; /** * config_item_Change * * @author zt generator * @since 1.0.0 2023-11-27 */ @RestController @RequestMapping("/ConfigItemOutbound/ConfigItemOutbound/") @Api(tags="config_item_Change") public class ConfigItemOutboundController { @Autowired private ConfigItemOutboundService configItemOutboundService; @Autowired private SysCodeRuleService sysCodeRuleService; @Autowired private SysOssConfigService sysOssConfigService; @Autowired private WarehouseConfigItemService configItemService; @GetMapping("page") @ApiOperation("分页") @ApiImplicitParams({ @ApiImplicitParam(name = Constant.Q.PAGE, value = Constant.QV.PAGE, required = true, dataType = Constant.QT.INT), @ApiImplicitParam(name = Constant.Q.LIMIT, value = Constant.QV.LIMIT, required = true, dataType = Constant.QT.INT), @ApiImplicitParam(name = Constant.Q.ORDER_FIELD, value = Constant.QV.ORDER_FIELD, dataType = Constant.QT.STRING), @ApiImplicitParam(name = Constant.Q.ORDER, value = Constant.QV.ORDER, dataType = Constant.QT.STRING), @ApiImplicitParam(name = "code", value = "配置项变更编号", dataType = Constant.QT.STRING, format = "a.code^LK"), @ApiImplicitParam(name = "projectCode", value = "项目编号", dataType = Constant.QT.STRING, format = "p.code^EQ"), @ApiImplicitParam(name = "softwareName", value = "项目名称", dataType = Constant.QT.STRING, format = "p.software_name^EQ"), @ApiImplicitParam(name = "libraryType", value = "库类型", dataType = Constant.QT.STRING, format = "a.library_type^EQ") }) public PageResult<ConfigItemOutbound> page(@ApiIgnore @QueryParam QueryFilter queryFilter){ List<ConfigItemOutbound> ConfigItemOutbound = configItemOutboundService.page(queryFilter); return PageResult.ok(ConfigItemOutbound); } @GetMapping("getDto") @ApiOperation("信息") public Result<ConfigItemOutboundDto> getDto(Long projectId, Long changeId) { ConfigItemOutboundDto data = configItemOutboundService.getDto(projectId, changeId); if (changeId!=null) { for (WarehouseConfigItem configItem : data.getConfigOutboundList()) { Long configItemId = configItem.getId(); OssDto ossDto = sysOssConfigService.getOssByBusiType(configItemId, "config_item_warehouse"); if (ossDto != null) { configItem.setFiles(ossDto); } } } return Result.ok(data); } @PostMapping @ApiOperation("新增") @LogOperation("新增") public Result insert(@RequestBody ConfigItemOutboundDto configItemDto){ //效验数据 ValidatorUtils.validateEntity(configItemDto, AddGroup.class, DefaultGroup.class); Map<String, String> map = new HashMap<>(); map.put("funCode", "config_item_Outbound"); map.put("projectId",configItemDto.getProjectId().toString()); configItemDto.getConfigItemOutbound().setCode(sysCodeRuleService.getNewCode(map)); Boolean result = configItemOutboundService.save(configItemDto); return Result.ok(); } @PutMapping @ApiOperation("修改") @LogOperation("修改") public Result update(@RequestBody ConfigItemOutboundDto configItemDto){ //效验数据 ValidatorUtils.validateEntity(configItemDto, UpdateGroup.class, DefaultGroup.class); Boolean result = configItemOutboundService.save(configItemDto); return Result.ok(); } @DeleteMapping("deleteConfigOutbound") @ApiOperation("删除") @LogOperation("删除") public Result delete(@RequestBody Long[] ids){ //效验数据 AssertUtils.isArrayEmpty(ids, "id"); configItemOutboundService.delete(ids); return Result.ok(); } @GetMapping("getItemList") @ApiOperation("获取入库配置项列表") public PageResult<WarehouseConfigItem> getItemList(Long projectId,String ids) { String type ="outbound_select_id"; List<WarehouseConfigItem> resultList = configItemService.warehouseConfigList(projectId,ids,type); return PageResult.ok(resultList); } @GetMapping("exportConfigOutbound") @ApiOperation("打印变更申请单") @LogOperation("打印变更申请单") public void exportConfigOutbound(Long id, HttpServletRequest request, HttpServletResponse response) { configItemOutboundService.exportConfigOutbound(id,request, response); } } modules/mainPart/src/main/java/com/zt/life/modules/configItemOutbound/dao/ConfigItemOutboundDao.java
New file @@ -0,0 +1,23 @@ package com.zt.life.modules.configItemOutbound.dao; import com.zt.common.dao.BaseDao; import com.zt.life.modules.configItemOutbound.model.ConfigItemOutbound; import com.zt.life.modules.configItemWarehouse.model.WarehouseCmAudit; import org.apache.ibatis.annotations.Mapper; import java.util.List; import java.util.Map; /** * config_item_warehouse * * @author zt generator * @since 1.0.0 2023-11-27 */ @Mapper public interface ConfigItemOutboundDao extends BaseDao<ConfigItemOutbound> { List<ConfigItemOutbound> getList(Map<String, Object> params); } modules/mainPart/src/main/java/com/zt/life/modules/configItemOutbound/dto/ConfigItemOutboundDto.java
New file @@ -0,0 +1,31 @@ package com.zt.life.modules.configItemOutbound.dto; import com.zt.life.modules.configItemOutbound.model.ConfigItemOutbound; 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.project.model.Project; 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 ConfigItemOutboundDto { private Long id; private Long projectId; private Long warehouseId; @ApiModelProperty(value = "测试项目基本信息") private Project project; @ApiModelProperty(value = "配置项出库") private ConfigItemOutbound configItemOutbound; private FlowInfoDto flowInfoDto; @ApiModelProperty(value = "变更配置项") private List<WarehouseConfigItem> configOutboundList = new ArrayList<>(); } modules/mainPart/src/main/java/com/zt/life/modules/configItemOutbound/model/ConfigItemOutbound.java
New file @@ -0,0 +1,84 @@ package com.zt.life.modules.configItemOutbound.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; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; import java.util.Date; /** * config_item_warehouse * * @author zt generator * @since 1.0.0 2023-11-27 */ @Data @EqualsAndHashCode(callSuper=false) @TableName("config_item_change") public class ConfigItemOutbound extends BusiEntity { private static final long serialVersionUID = 1L; @ApiModelProperty(value = "项目ID") private Long projectId; @ApiModelProperty(value = "配置项入库编号") private String code; @ApiModelProperty(value = "申请人") private String applicant; @ApiModelProperty(value = "申请日期") @JsonFormat(pattern = "yyyy-MM-dd") private Date applyDate; @ApiModelProperty(value = "库类型") private String libraryType; @ApiModelProperty(value = "变更原因") private String outboundReason; @ApiModelProperty(value = "批准意见") private String approvalOpinions; @ApiModelProperty(value = "批准签字") private String approvalSign; @ApiModelProperty(value = "批准日期") @JsonFormat(pattern = "yyyy-MM-dd") private Date approvalDate; @ApiModelProperty(value = "批准签字人ID") private Long approvalId; @ApiModelProperty(value = "CM操作") private String CmOperations; @ApiModelProperty(value = "出库操作人") private String Operator; @ApiModelProperty(value = "出库操作人ID") private Long OperatorId; @ApiModelProperty(value = "出库操作日期") @JsonFormat(pattern = "yyyy-MM-dd") private Date OperateDate; @ApiModelProperty(value = "备注") private String remark; @ApiModelProperty(value = "年份") private String year; @TableField(exist = false) @ApiModelProperty(value = "项目名称") private String softwareName; @TableField(exist = false) @ApiModelProperty(value = "项目编号") private String projectCode; } modules/mainPart/src/main/java/com/zt/life/modules/configItemOutbound/service/ConfigItemOutboundService.java
New file @@ -0,0 +1,207 @@ package com.zt.life.modules.configItemOutbound.service; import cn.hutool.core.convert.Convert; import com.zt.common.db.query.QueryFilter; import com.zt.common.service.BaseService; import com.zt.life.export.dto.WordFile; import com.zt.life.export.service.WordFileService; import com.zt.life.modules.configItemOutbound.dao.ConfigItemOutboundDao; import com.zt.life.modules.configItemOutbound.dto.ConfigItemOutboundDto; import com.zt.life.modules.configItemOutbound.model.ConfigItemOutbound; 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.configItemWarehouse.service.WarehouseCmAuditService; import com.zt.life.modules.configItemWarehouse.service.WarehouseConfigItemService; import com.zt.life.modules.configItemWarehouse.service.WarehouseQaAuditService; 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.testCheckOrder.model.TestCheckOrder; import com.zt.life.modules.testCheckOrder.service.TestCheckOrderService; 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 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; /** * config_item_warehouse * * @author zt generator * @since 1.0.0 2023-11-27 */ @Service public class ConfigItemOutboundService extends BaseService<ConfigItemOutboundDao, ConfigItemOutbound> { @Autowired private SysOssConfigService sysOssConfigService; @Autowired private SysOssService sysOssService; @Autowired private WorkflowService workflowService; @Autowired private SysCodeRuleService sysCodeRuleService; @Autowired private ProjectService projectService; @Autowired private WarehouseCmAuditService cmAuditService; @Autowired private WarehouseQaAuditService qaAuditService; @Autowired private WarehouseConfigItemService configItemService; @Autowired private TestCheckOrderService testCheckOrderService; @Autowired private GetShowDictList getShowDictList; @Autowired private WordFileService wordFileService; @Autowired private GetFilesPath getFilesPath; /** * 分页查询 * * @param queryFilter * @return */ public List<ConfigItemOutbound> page(QueryFilter queryFilter) { List<ConfigItemOutbound> list = baseDao.getList(queryFilter.getQueryParams()); if (list.size() > 0) { workflowService.getRunFlow(list, "pzxck"); } return list; } /** * 删除 * * @param ids */ public void delete(Long[] ids) { super.deleteLogic(ids); } public Boolean save(ConfigItemOutboundDto configItemDto) { Long OutboundId = configItemDto.getConfigItemOutbound().getId(); if (OutboundId != null) baseDao.updateById(configItemDto.getConfigItemOutbound()); else { Map<String, String> map = new HashMap<>(); map.put("funCode", "config_item_Outbound"); map.put("projectId", configItemDto.getProjectId().toString()); configItemDto.getConfigItemOutbound().setProjectId(configItemDto.getProjectId()); configItemDto.getConfigItemOutbound().setCode(sysCodeRuleService.getNewCode(map)); baseDao.insert(configItemDto.getConfigItemOutbound()); OutboundId = configItemDto.getConfigItemOutbound().getId(); } for (WarehouseConfigItem configItem : configItemDto.getConfigOutboundList()) { configItem.setWarehouseId(OutboundId); if (configItem.getId() != null) { configItemService.update(configItem); } else { configItem.setWarehouseId(OutboundId); configItem.setProjectId(configItemDto.getConfigItemOutbound().getProjectId()); configItemService.insert(configItem); } Long checkId = configItem.getCheckId(); if (checkId != null) { TestCheckOrder testCheckOrder = testCheckOrderService.get(checkId); if (testCheckOrder.getConfigItemId() == null) { Long configItemId = configItem.getId(); testCheckOrder.setConfigItemId(configItemId); testCheckOrderService.update(testCheckOrder); } } sysOssConfigService.updateOss(configItem.getId(), configItem.getFiles());// 保存附件 } Long bizId = configItemDto.getConfigItemOutbound().getId(); FlowInfoDto flowInfoDto = configItemDto.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 ConfigItemOutboundDto getDto(Long projectId, Long OutboundId) { ConfigItemOutboundDto data = new ConfigItemOutboundDto(); if (OutboundId != null) { data.setId(OutboundId); ConfigItemOutbound configItemOutbound = this.get(OutboundId); data.setConfigItemOutbound(configItemOutbound); if (projectId == null) { projectId = configItemOutbound.getProjectId(); } List<WarehouseConfigItem> configOutboundList = configItemService.getList(OutboundId); data.setConfigOutboundList(configOutboundList); } else { ConfigItemOutbound configItemOutbound = new ConfigItemOutbound(); data.setConfigItemOutbound(configItemOutbound); } if (projectId != null) { data.setProjectId(projectId); data.setProject(projectService.get(projectId)); } return data; } public void exportConfigOutbound(Long id, HttpServletRequest request, HttpServletResponse response) { try { ConfigItemOutboundDto dataObj = this.getDto(null, id); String approvalSignPath = "文件图片:" + getFilesPath.getSignPath(Convert.toLong(dataObj.getConfigItemOutbound().getApprovalId())); dataObj.getConfigItemOutbound().setApprovalSign(approvalSignPath); String OperatorPath = "文件图片:" + getFilesPath.getSignPath(Convert.toLong(dataObj.getConfigItemOutbound().getOperatorId())); dataObj.getConfigItemOutbound().setOperator(OperatorPath); //通用字典列表字符串生成 String libraryTypeStr = getShowDictList.getShowDictList(dataObj.getConfigItemOutbound().getLibraryType(), "library_type", false); dataObj.getConfigItemOutbound().setLibraryType(libraryTypeStr); String ApprovalOpinionStr = getShowDictList.getShowDictList(dataObj.getConfigItemOutbound().getApprovalOpinions(), "is_agree", false); dataObj.getConfigItemOutbound().setApprovalOpinions(ApprovalOpinionStr); for (WarehouseConfigItem configItemList : dataObj.getConfigOutboundList()) { String value = configItemList.getSecretClass(); String secretClassStr = getShowDictList.getShowDictList(value, "secret_class", false); configItemList.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/configItemWarehouse/dao/WarehouseConfigItemDao.java
@@ -23,5 +23,5 @@ List<WarehouseConfigItem> itemList(Long projectId); List<WarehouseConfigItem> warehouseList(Long projectId,String ids); List<WarehouseConfigItem> warehouseList(Long projectId,String ids,String type); } modules/mainPart/src/main/java/com/zt/life/modules/configItemWarehouse/model/WarehouseConfigItem.java
@@ -56,8 +56,11 @@ @ApiModelProperty(value = "密级") private String secretClass; @ApiModelProperty(value = "是否选择") private Long SelectId; @ApiModelProperty(value = "变更选择") private Long changeSelectId; @ApiModelProperty(value = "出库选择") private Long outboundSelectId; @TableField(exist = false) @ApiModelProperty(value = "附件") modules/mainPart/src/main/java/com/zt/life/modules/configItemWarehouse/service/WarehouseConfigItemService.java
@@ -51,7 +51,7 @@ return baseDao.itemList(projectId); } public List<WarehouseConfigItem> warehouseConfigList(Long projectId,String ids) { return baseDao.warehouseList(projectId,ids); public List<WarehouseConfigItem> warehouseConfigList(Long projectId,String ids,String type) { return baseDao.warehouseList(projectId,ids,type); } } modules/mainPart/src/main/resources/mapper/configItemOutbound/ConfigItemChangeDao.xml
New file @@ -0,0 +1,20 @@ <?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.configItemOutbound.dao.ConfigItemOutboundDao"> <select id="getList" resultType="com.zt.life.modules.configItemOutbound.model.ConfigItemOutbound"> select a.* ,p.software_name,p.CODE AS projectCode from config_item_outbound 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/configItemWarehouse/WarehouseConfigItemDao.xml
@@ -20,14 +20,14 @@ SET @row_number = 0; SELECT (@row_number := @row_number + 1) AS no, p.secret_class, SUBSTRING(m.name, LOCATE('软件', m.name), LENGTH(m.name)) AS itemName, m.identify AS version, m.name AS Item_identify FROM software_test_order s JOIN software_test_order_measured m ON s.project_id = ${projectId} SUBSTRING(t.name, LOCATE('软件', t.name), LENGTH(t.name)) AS itemName, t.identify AS version, t.name AS Item_identify FROM item_circulat_order_technical t JOIN item_circulat_order i ON i.project_id = ${projectId} JOIN project p ON p.id = ${projectId} WHERE s.is_delete = 0 AND s.id = m.order_id WHERE t.is_delete = 0 AND i.id = t.circulat_order_id UNION SELECT (@row_number := @row_number + 1) AS no, NULL AS secretClass, @@ -57,8 +57,12 @@ <if test="ids!=null and ids!=''"> AND id not in (${ids}) </if> and a.id NOT IN (SELECT select_id FROM config_item_warehouse_detail WHERE (SELECT count(*) FROM config_item_warehouse_detail WHERE id = select_id) > 0) and a.id NOT IN (SELECT '${type}' FROM config_item_warehouse_detail WHERE ( SELECT count(*) FROM config_item_warehouse_detail WHERE id IN (SELECT '${type}' FROM config_item_warehouse_detail) ) > 0) </select> </mapper> web/packages/components/zt-uploader/src/zt-uploader.vue
@@ -59,7 +59,7 @@ </el-upload> <br/> <div v-show="progressFlag"> <el-progress :text-inside="true" :stroke-width="30" :percentage="progressPercent" :format="format"></el-progress> <el-progress :text-inside="true" :stroke-width="10" :percentage="progressPercent" :format="format"></el-progress> </div> <ul class="el-upload-list el-upload-list--text" v-if="!image && !crop && !onlyUploadFile">