Преглед изворни кода

Merge branch 'test-merge-02' of http://219.151.181.73:3000/zhuwei/bladex into test-merge-02

# Conflicts:
#	blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/TextdictInfoServiceImpl.java
lvy пре 3 месеци
родитељ
комит
836988887b
41 измењених фајлова са 754 додато и 187 уклоњено
  1. 12 0
      blade-ops/blade-resource/src/main/java/org/springblade/resource/builder/ossre/S3Template2.java
  2. 58 0
      blade-service-api/blade-archive-api/src/main/java/org/springblade/archive/vo/ArchiveDataVo.java
  3. 1 17
      blade-service-api/blade-archive-api/src/main/java/org/springblade/archive/vo/TaskSplitVO.java
  4. 10 0
      blade-service-api/blade-business-api/src/main/java/org/springblade/business/dto/PrivateStandardDTO.java
  5. 2 1
      blade-service-api/blade-business-api/src/main/java/org/springblade/business/dto/StandardInfoJoinDTO.java
  6. 3 0
      blade-service-api/blade-business-api/src/main/java/org/springblade/business/feign/ArchiveFileClient.java
  7. 20 0
      blade-service-api/blade-business-api/src/main/java/org/springblade/business/vo/StandardElementVo.java
  8. 26 0
      blade-service-api/blade-business-api/src/main/java/org/springblade/business/vo/StandardInfoConditionVo.java
  9. 21 0
      blade-service-api/blade-business-api/src/main/java/org/springblade/business/vo/StandardInfoGroupNameVO.java
  10. 38 0
      blade-service-api/blade-business-api/src/main/java/org/springblade/business/vo/StandardInfoPrivateJoinGroupVO.java
  11. 5 3
      blade-service-api/blade-business-api/src/main/java/org/springblade/business/vo/StandardInfoPrivateJoinVO.java
  12. 1 1
      blade-service-api/blade-business-api/src/main/java/org/springblade/business/vo/StandardInfoVO.java
  13. 13 0
      blade-service/blade-archive/src/main/java/org/springblade/archive/controller/ArchiveFileController.java
  14. 2 3
      blade-service/blade-archive/src/main/java/org/springblade/archive/controller/TaskSplitController.java
  15. 2 0
      blade-service/blade-archive/src/main/java/org/springblade/archive/mapper/ArchivesAutoMapper.java
  16. 4 0
      blade-service/blade-archive/src/main/java/org/springblade/archive/mapper/ArchivesAutoMapper.xml
  17. 2 0
      blade-service/blade-archive/src/main/java/org/springblade/archive/service/IArchivesAutoService.java
  18. 60 0
      blade-service/blade-archive/src/main/java/org/springblade/archive/service/impl/ArchivesAutoServiceImpl.java
  19. 35 2
      blade-service/blade-business/src/main/java/org/springblade/business/controller/PrivateStandardController.java
  20. 13 10
      blade-service/blade-business/src/main/java/org/springblade/business/controller/StandardInfoController.java
  21. 2 2
      blade-service/blade-business/src/main/java/org/springblade/business/controller/TrialDetectionController.java
  22. 5 0
      blade-service/blade-business/src/main/java/org/springblade/business/feignClient/ArchiveFileClientImpl.java
  23. 10 8
      blade-service/blade-business/src/main/java/org/springblade/business/mapper/StandardInfoMapper.java
  24. 94 13
      blade-service/blade-business/src/main/java/org/springblade/business/mapper/StandardInfoMapper.xml
  25. 3 0
      blade-service/blade-business/src/main/java/org/springblade/business/service/PrivateStandardService.java
  26. 12 13
      blade-service/blade-business/src/main/java/org/springblade/business/service/StandardInfoService.java
  27. 90 39
      blade-service/blade-business/src/main/java/org/springblade/business/service/impl/PrivateStandardServiceImpl.java
  28. 108 38
      blade-service/blade-business/src/main/java/org/springblade/business/service/impl/UStandardInfoServiceImpl.java
  29. 2 2
      blade-service/blade-e-visa/src/main/java/org/springblade/evisa/controller/ArchiveController.java
  30. 57 21
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ExcelTabController.java
  31. 4 1
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/SystemMsgController.java
  32. 4 4
      blade-service/blade-manager/src/main/java/org/springblade/manager/feign/WbsParamClientImpl.java
  33. 5 4
      blade-service/blade-manager/src/main/java/org/springblade/manager/job/SystemMsgJob.java
  34. 1 1
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreeMapper.xml
  35. 2 2
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ExcelTabServiceImpl.java
  36. 1 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/TextdictInfoServiceImpl.java
  37. 11 0
      blade-service/blade-user/src/main/java/org/springblade/system/user/controller/WbsTreeController.java
  38. 2 0
      blade-service/blade-user/src/main/java/org/springblade/system/user/service/IUserService.java
  39. 11 0
      blade-service/blade-user/src/main/java/org/springblade/system/user/service/impl/UserServiceImpl.java
  40. 1 1
      blade-service/blade-websocket/src/main/java/org/springblade/websocket/config/TaskPoolConfig.java
  41. 1 1
      blade-service/blade-websocket/src/main/java/org/springblade/websocket/service/WebSocketService.java

+ 12 - 0
blade-ops/blade-resource/src/main/java/org/springblade/resource/builder/ossre/S3Template2.java

@@ -20,12 +20,15 @@ import com.amazonaws.services.s3.AmazonS3;
 import com.amazonaws.services.s3.model.*;
 import lombok.AllArgsConstructor;
 import lombok.SneakyThrows;
+import org.springblade.common.utils.SnowFlakeUtil;
 import org.springblade.core.oss.OssTemplate;
 import org.springblade.core.oss.enums.PolicyType;
 import org.springblade.core.oss.model.BladeFile;
 import org.springblade.core.oss.model.OssFile;
 import org.springblade.core.oss.props.OssProperties;
 import org.springblade.core.oss.rule.OssRule;
+import org.springblade.core.tool.utils.DateUtil;
+import org.springblade.core.tool.utils.FileUtil;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.core.tool.utils.StringPool;
 import org.springframework.web.multipart.MultipartFile;
@@ -417,6 +420,15 @@ public class S3Template2 implements OssTemplate {
 	 * @return string
 	 */
 	private String getFileName(String originalFilename) {
+		return fileName(originalFilename);
+	}
+
+	public String fileName(String originalFilename) {
+		//试验-规范管理
+		if(originalFilename.contains("|")){
+			String[] split = originalFilename.split("\\|");
+			return "upload/" + split[0] + "/" + DateUtil.today() + "/" + SnowFlakeUtil.getId() + "." + FileUtil.getFileExtension(split[1]);
+		}
 		return ossRule.fileName(originalFilename);
 	}
 

+ 58 - 0
blade-service-api/blade-archive-api/src/main/java/org/springblade/archive/vo/ArchiveDataVo.java

@@ -0,0 +1,58 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.archive.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 任务审核主表视图实体类
+ *
+ * @author BladeX
+ * @since 2022-07-01
+ */
+@Data
+public class ArchiveDataVo {
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("节点Id")
+    private String nodeId;
+
+    @ApiModelProperty("文件编号")
+    private String filenNo;
+
+    @ApiModelProperty("文件名称")
+    private String fileNmae;
+
+    @ApiModelProperty("文件路径")
+    private String fileUrl;
+
+    @ApiModelProperty("文件日期")
+    private String fileDate;
+
+    @ApiModelProperty("责任者")
+    private String responsibility;
+
+    @ApiModelProperty("文件来源")
+    private String fileSible;
+
+    @ApiModelProperty("合同段Id")
+    private String contractId;
+
+    @ApiModelProperty("1:签名文件 2:附件")
+    private String sendType;
+}

+ 1 - 17
blade-service-api/blade-archive-api/src/main/java/org/springblade/archive/vo/TaskSplitVO.java

@@ -1,24 +1,8 @@
-/*
- *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
- *
- *  Redistribution and use in source and binary forms, with or without
- *  modification, are permitted provided that the following conditions are met:
- *
- *  Redistributions of source code must retain the above copyright notice,
- *  this list of conditions and the following disclaimer.
- *  Redistributions in binary form must reproduce the above copyright
- *  notice, this list of conditions and the following disclaimer in the
- *  documentation and/or other materials provided with the distribution.
- *  Neither the name of the dreamlu.net developer nor the names of its
- *  contributors may be used to endorse or promote products derived from
- *  this software without specific prior written permission.
- *  Author: Chill 庄骞 (smallchill@163.com)
- */
 package org.springblade.archive.vo;
 
-import org.springblade.archive.entity.TaskSplit;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
+import org.springblade.archive.entity.TaskSplit;
 
 /**
  * 解析主标任务视图实体类

+ 10 - 0
blade-service-api/blade-business-api/src/main/java/org/springblade/business/dto/PrivateStandardDTO.java

@@ -4,6 +4,7 @@ import io.swagger.annotations.ApiModel;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import org.springblade.business.entity.PrivateStandard;
+import org.springblade.business.entity.StandardFile;
 import org.springframework.web.multipart.MultipartFile;
 
 import java.util.List;
@@ -19,4 +20,13 @@ public class PrivateStandardDTO extends PrivateStandard {
      * 文件
      */
     private MultipartFile[] files;
+    /**
+     * 文件
+     */
+    private List<StandardFile> standardFiles;
+
+    /**
+     * 当前规范文件下文件的数量
+     */
+    private Integer filesCount;
 }

+ 2 - 1
blade-service-api/blade-business-api/src/main/java/org/springblade/business/dto/StandardInfoJoinDTO.java

@@ -6,6 +6,7 @@ import lombok.Data;
 
 import javax.validation.constraints.NotEmpty;
 import javax.validation.constraints.NotNull;
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -28,5 +29,5 @@ public class StandardInfoJoinDTO {
      */
     @ApiModelProperty(value = "副连接id集合", required = true)
     @NotEmpty(message = "副连接id不能为空")
-    private List<Long> rightIds;
+    private List<Long> rightIds = new ArrayList<>();
 }

+ 3 - 0
blade-service-api/blade-business-api/src/main/java/org/springblade/business/feign/ArchiveFileClient.java

@@ -161,4 +161,7 @@ public interface ArchiveFileClient {
 
     @PostMapping(API_PREFIX + "/updateFilesEx")
     void updateArchiveFileEx(@RequestBody List<ArchiveFile> files);
+
+    @PostMapping(API_PREFIX + "/saveArchiveFileByBIM")
+    void saveArchiveFileByBIM(@RequestBody ArchiveFile archiveFile);
 }

+ 20 - 0
blade-service-api/blade-business-api/src/main/java/org/springblade/business/vo/StandardElementVo.java

@@ -0,0 +1,20 @@
+package org.springblade.business.vo;
+
+import lombok.Data;
+
+
+/**
+ * @author LHB
+ */
+@Data
+public class StandardElementVo {
+    /**
+     * key
+     */
+    private String colKey;
+    /**
+     * name
+     */
+    private String colName;
+
+}

+ 26 - 0
blade-service-api/blade-business-api/src/main/java/org/springblade/business/vo/StandardInfoConditionVo.java

@@ -0,0 +1,26 @@
+package org.springblade.business.vo;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springblade.business.entity.StandardInfo;
+
+import java.util.List;
+
+/**
+ * 试验-规范管理-信息-条件设置
+ * @author LHB
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class StandardInfoConditionVo extends StandardInfo {
+    /**
+     * 子级信息
+     */
+    private List<StandardInfo> rightStandardInfos;
+
+
+    /**
+     * 子级信息
+     */
+    private StandardInfoGroupNameVO standardInfoGroupNameVO;
+}

+ 21 - 0
blade-service-api/blade-business-api/src/main/java/org/springblade/business/vo/StandardInfoGroupNameVO.java

@@ -0,0 +1,21 @@
+package org.springblade.business.vo;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * 条件查询最子层响应处理
+ * @author LHB
+ */
+@Data
+public class StandardInfoGroupNameVO {
+    /**
+     * 名称
+     */
+    private String name;
+    /**
+     * ids
+     */
+    private List<Long> ids;
+}

+ 38 - 0
blade-service-api/blade-business-api/src/main/java/org/springblade/business/vo/StandardInfoPrivateJoinGroupVO.java

@@ -0,0 +1,38 @@
+package org.springblade.business.vo;
+
+import lombok.Data;
+import org.springblade.business.entity.StandardInfoPrivateJoin;
+
+import java.util.List;
+
+/**
+ * 项目组
+ * @author LHB
+ */
+@Data
+public class StandardInfoPrivateJoinGroupVO {
+    /**
+     * leftId
+     */
+    private Long standardInfoId;
+    /**
+     * 项目id
+     */
+    private Long privateId;
+
+    /**
+     * 项目名称
+     */
+    private String privateName;
+
+    /**
+     * 元素名称
+     */
+    private String elementNames;
+
+    /**
+     * 元素key集合
+     */
+    private List<StandardElementVo> keys;
+
+}

+ 5 - 3
blade-service-api/blade-business-api/src/main/java/org/springblade/business/vo/StandardInfoPrivateJoinVO.java

@@ -16,7 +16,9 @@ import java.util.List;
 @Data
 @ApiModel(description = "关联元素对象-视图")
 public class StandardInfoPrivateJoinVO extends StandardInfo {
-
-    @ApiModelProperty(value = "关联元素副元素集合")
-    private List<StandardInfoPrivateJoin> privateJoins;
+    /**
+     * 项目组集合
+     */
+    @ApiModelProperty(value = "项目组集合")
+    private List<StandardInfoPrivateJoinGroupVO> group;
 }

+ 1 - 1
blade-service-api/blade-business-api/src/main/java/org/springblade/business/vo/StandardInfoVO.java

@@ -19,5 +19,5 @@ public class StandardInfoVO extends StandardInfo {
      * 副连接对象
      */
     @ApiModelProperty(value = "副连接对象集合")
-    private List<StandardInfo> standardInfos;
+    private List<StandardInfoConditionVo> standardInfos;
 }

+ 13 - 0
blade-service/blade-archive/src/main/java/org/springblade/archive/controller/ArchiveFileController.java

@@ -12,6 +12,7 @@ import lombok.SneakyThrows;
 import org.apache.commons.lang.StringUtils;
 import org.springblade.archive.service.IArchivesAutoService;
 import org.springblade.archive.utils.FileUtils;
+import org.springblade.archive.vo.ArchiveDataVo;
 import org.springblade.business.entity.ArchiveFile;
 import org.springblade.business.feign.ArchiveFileClient;
 import org.springblade.business.feign.MetadataClassificationClient;
@@ -442,4 +443,16 @@ public class ArchiveFileController extends BladeController {
         }
         return R.data(true);
     }
+
+
+    /**
+     * 智慧工地推送文件至电子档案数据规则 接口
+     */
+    @PostMapping("/sendFileToEArchives")
+    @ApiOperationSupport(order = 18)
+    @ApiOperation(value = "智慧工地推送文件至电子档案数据规则接口")
+    public R<Boolean> sendFileToEArchives(@RequestBody ArchiveDataVo vo) {
+        //数据入库
+        return  autoService.sendFileToEArchives(vo);
+    }
 }

+ 2 - 3
blade-service/blade-archive/src/main/java/org/springblade/archive/controller/TaskSplitController.java

@@ -30,7 +30,6 @@ import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.RequestParam;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.springblade.archive.entity.TaskSplit;
-import org.springblade.archive.vo.TaskSplitVO;
 import org.springblade.archive.service.ITaskSplitService;
 import org.springblade.core.boot.ctrl.BladeController;
 
@@ -74,13 +73,13 @@ public class TaskSplitController extends BladeController {
 	/**
 	 * 查询任务任务信息
 	 */
-	@GetMapping("/selectTaskSplit")
+/*	@GetMapping("/selectTaskSplit")
 	@ApiOperationSupport(order = 1)
 	@ApiOperation(value = "查询任务任务信息", notes = "传入taskSplit")
 	public R<IPage<TaskSplitVO>> page(TaskSplitVO taskSplit, Query query) {
 		IPage<TaskSplitVO> pages = taskSplitService.selectTaskSplitPage(Condition.getPage(query), taskSplit);
 		return R.data(pages);
-	}
+	}*/
 
 	/**
 	 * 新增 解析主标任务

+ 2 - 0
blade-service/blade-archive/src/main/java/org/springblade/archive/mapper/ArchivesAutoMapper.java

@@ -224,4 +224,6 @@ public interface ArchivesAutoMapper extends BaseMapper<ArchivesAuto> {
 	 * @return
 	 */
 	Map<String, BigDecimal> getAllArchiveByContractTypeSummary(@Param("projectId") Long projectId,@Param("type") String typ);
+
+	String getArchiveFileByParentId(@Param("nodeId") String nodeId,@Param("contractId") String contractId);
 }

+ 4 - 0
blade-service/blade-archive/src/main/java/org/springblade/archive/mapper/ArchivesAutoMapper.xml

@@ -1419,5 +1419,9 @@
         )a
     </select>
 
+    <select id="getArchiveFileByParentId" resultType="java.lang.String">
+        SELECT b.id from m_archive_tree a ,m_archive_tree_contract b where a.id=b.from_id and a.id=#{nodeId} and contract_id=#{contractId} and a.is_deleted=0 and b.is_deleted=0
+    </select>
+
 
 </mapper>

+ 2 - 0
blade-service/blade-archive/src/main/java/org/springblade/archive/service/IArchivesAutoService.java

@@ -154,4 +154,6 @@ public interface IArchivesAutoService extends BaseService<ArchivesAuto> {
 	List<List<Map<String, List<CabinetVO>>>> getUnitAllCabinet(Long projectId, Integer type);
 
     List<JiLinArchiveAutoDto> getArchiveAutoDtoList(Long projId, List<JiLinQueryDto>dtos);
+
+	R sendFileToEArchives(ArchiveDataVo dataInfo);
 }

+ 60 - 0
blade-service/blade-archive/src/main/java/org/springblade/archive/service/impl/ArchivesAutoServiceImpl.java

@@ -4105,6 +4105,8 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 	}
 
 
+
+
 	public void deleteFile(String defaultDir,Long id){
 		String dir = defaultDir+"/"+id;
 		String file = defaultDir+"/"+id+".zip";
@@ -4143,4 +4145,62 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 	}
 
 
+	@Override
+	public R sendFileToEArchives(ArchiveDataVo dataInfo) {
+
+		if(dataInfo==null || Func.isNull(dataInfo)){
+			return R.fail("请根据接口文档上传参数");
+		}
+
+		String nodeId = dataInfo.getNodeId();
+		String contractId = dataInfo.getContractId();
+		String fileUrl = dataInfo.getFileUrl();
+		String fileName = dataInfo.getFileNmae();
+		if(nodeId==null || Func.isNull(nodeId)){
+			return R.fail("请上传nodeId");
+		}
+		if(contractId==null || Func.isNull(contractId)){
+			R.fail("请上传contractId");
+		}
+		if(fileUrl==null || Func.isNull(fileUrl)){
+			R.fail("请上传fileUrl");
+		}
+
+
+		if(fileName==null || Func.isNull(fileName)){
+			R.fail("请上传fileName");
+		}
+
+		ContractInfo contractInfo = contractClient.getContractById(Func.toLong(contractId));
+		if(contractInfo==null){
+			return R.fail("请传输正确的contractId");
+		}
+		//获取文件的父节点Id
+		String treeContractId = baseMapper.getArchiveFileByParentId(nodeId, contractId);
+		if(treeContractId==null || Func.isNull(treeContractId)){
+			R.fail("请校验传输的nodeId和contractId,没有查到父节点Id");
+		}
+
+
+
+		// 将数据插入到 auto表中
+		ArchivesAuto archivesAuto = new ArchivesAuto();
+		long newPkId = SnowFlakeUtil.getId(); //主键Id
+		archivesAuto.setId(newPkId);
+		archivesAuto.setProjectId(Func.toLong(contractInfo.getPId()));
+		archivesAuto.setContractId(Func.toLong(contractId));
+		archivesAuto.setName(fileName);
+		archivesAuto.setIsDeleted(0);
+		this.save(archivesAuto);
+
+		// 保存文件到archive_file表中
+		long arueId = SnowFlakeUtil.getId(); //主键Id
+		ArchiveFile archiveFile = new ArchiveFile();
+		archiveFile.setId(arueId);
+		archiveFile.setArchiveId(newPkId);
+		archiveFile.setFileName(fileName);
+		archiveFileClient.saveArchiveFileByBIM(archiveFile);
+		return R.success("保存成功");
+	}
+
 }

+ 35 - 2
blade-service/blade-business/src/main/java/org/springblade/business/controller/PrivateStandardController.java

@@ -3,18 +3,22 @@ package org.springblade.business.controller;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiOperation;
 import org.springblade.business.dto.PrivateStandardDTO;
 import org.springblade.business.entity.PrivateStandard;
+import org.springblade.business.entity.StandardFile;
 import org.springblade.business.service.PrivateStandardService;
+import org.springblade.business.service.StandardFileService;
 import org.springblade.common.utils.SnowFlakeUtil;
 import org.springblade.core.mp.support.Query;
 import org.springblade.core.secure.BladeUser;
 import org.springblade.core.secure.utils.SecureUtil;
 import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.BeanUtil;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
@@ -38,6 +42,9 @@ public class PrivateStandardController {
     @Resource
     private PrivateStandardService privateStandardService;
 
+    @Resource
+    private StandardFileService standardFileService;
+
     /**
      * 分页查询所有数据
      *
@@ -68,9 +75,14 @@ public class PrivateStandardController {
     @ApiOperation(value = "通过主键查询单条数据", notes = "传入主键Id")
     @ApiImplicitParam(name = "id", value = "主键id", required = true)
     @GetMapping("/getById")
-    public R<PrivateStandard> selectOne(Long id) {
+    public R<PrivateStandardDTO> selectOne(Long id) {
         PrivateStandard byId = this.privateStandardService.getById(id);
-        return R.data(byId);
+        List<StandardFile> list = standardFileService.list(Wrappers.<StandardFile>lambdaQuery()
+                .eq(StandardFile::getStandardId, id)
+                .eq(StandardFile::getIsDeleted, 0));
+        PrivateStandardDTO privateStandardDTO = BeanUtil.copyProperties(byId, PrivateStandardDTO.class);
+        privateStandardDTO.setStandardFiles(list);
+        return R.data(privateStandardDTO);
     }
 
     /**
@@ -108,6 +120,27 @@ public class PrivateStandardController {
         return R.data(save);
     }
 
+
+    /**
+     * 规范文件修改数据
+     *
+     * @param data 实体对象
+     * @param delIds 需要删除的规范文件id集合
+     * @param delFileIds 需要删除的文件id集合
+     * @param files 文件
+     * @return 新增结果
+     */
+    @PostMapping("updateTypeByTwo")
+    @ApiOperation(value = "规范文件修改数据")
+    public R<Boolean> updateTypeByTwo(@RequestPart("data") @Validated List<PrivateStandardDTO> data,
+                             @RequestPart("delIds") @Validated List<Long> delIds,
+                             @RequestPart("delFileIds") @Validated List<Long> delFileIds,
+                             @RequestPart("files") MultipartFile[] files) {
+        //封装数据
+        boolean save = this.privateStandardService.updateTypeByTwo(data,delIds,delFileIds,files);
+        return R.data(save);
+    }
+
     /**
      * 修改数据
      *

+ 13 - 10
blade-service/blade-business/src/main/java/org/springblade/business/controller/StandardInfoController.java

@@ -46,8 +46,8 @@ public class StandardInfoController {
      */
     @GetMapping("page")
     @ApiOperation(value = "分页查询所有数据", notes = "传入分页对象和高级查询对象")
-    public R<IPage<StandardInfoDtoVo>> selectAll(Query query, StandardInfo standardInfo) {
-        IPage<StandardInfoDtoVo> page = this.uStandardInfoService.selectMyPage(query, standardInfo);
+    public R<IPage<StandardInfoDTO>> selectAll(Query query, StandardInfo standardInfo) {
+        IPage<StandardInfoDTO> page = this.uStandardInfoService.selectMyPage(query, standardInfo);
         return R.data(page);
     }
 
@@ -110,12 +110,14 @@ public class StandardInfoController {
      * 条件设置
      *
      * @param standardInfoJoins 条件设置对象
+     * @param id 规范文件id
      * @return 结果
      */
     @ApiOperation(value = "条件设置")
     @PostMapping("saveConditionSet")
-    public R<Boolean> setCondition(@RequestBody @Validated List<StandardInfoJoinDTO> standardInfoJoins) {
-        Boolean b = this.uStandardInfoService.setCondition(standardInfoJoins);
+    public R<Boolean> setCondition(@RequestBody @Validated List<StandardInfoVO> standardInfoJoins,
+                                   @RequestParam Long id) {
+        Boolean b = this.uStandardInfoService.setCondition(standardInfoJoins,id);
         return R.data(b);
     }
 
@@ -127,8 +129,9 @@ public class StandardInfoController {
      */
     @ApiOperation(value = "关联元素")
     @PostMapping("saveElementJoin")
-    public R<Boolean> setElementJoin(@RequestBody @Validated List<StandardInfoPrivateJoinDTO> standardInfoPrivateJoins) {
-        Boolean b = this.uStandardInfoService.setElementJoin(standardInfoPrivateJoins);
+    public R<Boolean> setElementJoin(@RequestBody @Validated List<StandardInfoPrivateJoinVO> standardInfoPrivateJoins,
+                                     @RequestParam Long id) {
+        Boolean b = this.uStandardInfoService.setElementJoin(standardInfoPrivateJoins,id);
         return R.data(b);
     }
 
@@ -165,8 +168,8 @@ public class StandardInfoController {
     @ApiOperation(value = "查询条件设置")
     @ApiImplicitParam(name = "id", value = "规范文件id", required = true)
     @GetMapping("getConditionSet")
-    public R<List<StandardInfoVO>> getConditionSet(Long id) {
-        List<StandardInfoVO> list = this.uStandardInfoService.getConditionSet(id);
+    public R<List<StandardInfoVO>> getConditionSet(Long id,Long leftId) {
+        List<StandardInfoVO> list = this.uStandardInfoService.getConditionSet(id,leftId);
         return R.data(list);
     }
 
@@ -177,8 +180,8 @@ public class StandardInfoController {
     @ApiOperation(value = "查询关联元素")
     @ApiImplicitParam(name = "id", value = "规范文件id", required = true)
     @GetMapping("getElementJoin")
-    public R<List<StandardInfoPrivateJoinVO>> getElementJoin(Long id) {
-        List<StandardInfoPrivateJoinVO> list = this.uStandardInfoService.getElementJoin(id);
+    public R<List<StandardInfoPrivateJoinVO>> getElementJoin(Long id,Long leftId) {
+        List<StandardInfoPrivateJoinVO> list = this.uStandardInfoService.getElementJoin(id,leftId);
         return R.data(list);
     }
 

+ 2 - 2
blade-service/blade-business/src/main/java/org/springblade/business/controller/TrialDetectionController.java

@@ -299,12 +299,12 @@ public class TrialDetectionController extends BladeController {
     @ApiOperationSupport(order = 18)
     @ApiOperation(value = "自检多表PDF预览", notes = "传入nodeId=试验记录id、classify、contractId、projectId")
     public R<Object> getPDFs(String nodeId, String classify, String contractId, String projectId) throws FileNotFoundException {
-        String sql = "select pdf_url,e_visa_pdf_url from u_information_query where project_id ='" + projectId + "' and classify='" + classify + "' and  wbs_id='" + nodeId + "' and contract_id ='" + contractId + "'";
+        String sql = "select pdf_url,e_visa_pdf_url from u_information_query where status in(0,1,2) and project_id ='" + projectId + "' and classify='" + classify + "' and  wbs_id='" + nodeId + "' and contract_id ='" + contractId + "'";
         List<Map<String, Object>> maps = jdbcTemplate.queryForList(sql);
         if (maps.size() >= 1) {
             Map<String, Object> stringObjectMap = maps.get(0);
             Object pdfUrl = stringObjectMap.get("pdf_url");
-            if (stringObjectMap.get("e_visa_pdf_url") != null) {
+            if (stringObjectMap.get("e_visa_pdf_url") != null ) {
                 //优先使用电签的pdf
                 pdfUrl = stringObjectMap.get("e_visa_pdf_url");
             }

+ 5 - 0
blade-service/blade-business/src/main/java/org/springblade/business/feignClient/ArchiveFileClientImpl.java

@@ -341,4 +341,9 @@ public class ArchiveFileClientImpl implements ArchiveFileClient {
         }
     }
 
+    @Override
+    public void saveArchiveFileByBIM(ArchiveFile archiveFile) {
+        iArchiveFileService.save(archiveFile);
+    }
+
 }

+ 10 - 8
blade-service/blade-business/src/main/java/org/springblade/business/mapper/StandardInfoMapper.java

@@ -13,20 +13,22 @@ import org.springblade.business.vo.StandardInfoVO;
 import java.util.List;
 
 /**
-* @author LHB
-* @description 针对表【u_standard_info(规范参数管理-基础信息)】的数据库操作Mapper
-* @createDate 2025-06-11 09:57:39
-* @Entity org.springblade.business.entity.UStandardInfo
-*/
+ * @author LHB
+ * @description 针对表【u_standard_info(规范参数管理-基础信息)】的数据库操作Mapper
+ * @createDate 2025-06-11 09:57:39
+ * @Entity org.springblade.business.entity.UStandardInfo
+ */
 public interface StandardInfoMapper extends BaseMapper<StandardInfo> {
 
-    IPage<StandardInfoDtoVo> selectMyPage(Page<StandardInfoDtoVo> page, @Param("query") StandardInfo standardInfo);
+    IPage<StandardInfoDTO> selectMyPage(Page<StandardInfoDTO> page, @Param("query") StandardInfo standardInfo);
 
     StandardInfoDTO selectMyOne(@Param("id") Long id);
 
-    List<StandardInfoVO> getConditionSet(@Param("id") Long id);
+    List<StandardInfoVO> getConditionSet(@Param("id") Long id,
+                                         @Param("leftId") Long leftId);
 
-    List<StandardInfoPrivateJoinVO> getElementJoin(@Param("id") Long id);
+    List<StandardInfoPrivateJoinVO> getElementJoin(@Param("id") Long id,
+                                                   @Param("leftId") Long leftId);
 
     List<StandardInfoPrivateJoinVO> effectPreview(@Param("rightIds") List<Long> rightIds);
 }

+ 94 - 13
blade-service/blade-business/src/main/java/org/springblade/business/mapper/StandardInfoMapper.xml

@@ -16,7 +16,7 @@
         <result property="updateTime" column="update_time"/>
         <result property="updateUser" column="update_user"/>
     </resultMap>
-    <resultMap id="BaseResultPageMap" type="org.springblade.business.vo.StandardInfoDtoVo">
+    <resultMap id="BaseResultPageMap" type="org.springblade.business.dto.StandardInfoDTO">
         <id property="id" column="id"/>
         <result property="name" column="name"/>
         <result property="symbol" column="symbol"/>
@@ -90,7 +90,9 @@
         <result property="name" column="name"/>
         <result property="parentId" column="parent_id"/>
         <result property="type" column="type"/>
-        <collection property="standardInfos" ofType="org.springblade.business.entity.StandardInfo" select="findByJoinLeftId" column="{leftId=id}">
+        <result property="symbol" column="symbol"/>
+        <result property="symbolName" column="symbolName"/>
+        <collection property="standardInfos" ofType="org.springblade.business.vo.StandardInfoConditionVo" select="findByJoinLeftId" column="{leftId=id}">
         </collection>
     </resultMap>
     <sql id="Base_Column_Join_List">
@@ -108,26 +110,63 @@
 
     <select id="getConditionSet" resultMap="BaseResultConditionSet">
         select
-            <include refid="Base_Column_Join_List"/>
+            <include refid="Base_Column_Join_List"/>, concat(a.symbol,a.name) symbolName
         from
             u_standard_info a
             INNER JOIN u_standard_info_join b on a.id = b.standard_info_left_id and a.is_deleted = b.is_deleted
         where
-            a.standard_id = #{id} and a.is_deleted = 0
+            a.is_deleted = 0
+            <if test="id != null">
+                and  a.standard_id = #{id}
+            </if>
+            <if test="leftId != null">
+                and  b.standard_info_left_id = #{leftId}
+            </if>
+
         GROUP BY
             b.standard_info_left_id
     </select>
-    <select id="findByJoinLeftId" resultType="org.springblade.business.entity.StandardInfo">
+
+    <resultMap id="findByJoinLeftIdMap" type="org.springblade.business.vo.StandardInfoConditionVo">
+        <id property="id" column="id"/>
+        <collection property="rightStandardInfos" ofType="org.springblade.business.entity.StandardInfo" select="findRightByJoinLeftId" column="{id=id,leftId=leftId}">
+        </collection>
+    </resultMap>
+
+    <select id="findByJoinLeftId" resultMap="findByJoinLeftIdMap">
         SELECT
-            <include refid="Base_Column_Join_List"/>, c.name parentName
+            c.id,
+            c.`name`,
+            c.parent_id,
+            c.standard_id,
+            c.`type`,
+            c.is_deleted,
+            c.create_time,
+            c.create_user,
+            c.update_time,
+            c.update_user,
+            b.standard_info_left_id leftId
         FROM
             u_standard_info a
             INNER JOIN u_standard_info_join b ON a.id = b.standard_info_right_id AND a.is_deleted = b.is_deleted
             INNER JOIN u_standard_info c ON a.parent_id = c.id AND a.is_deleted = c.is_deleted
         WHERE
             b.standard_info_left_id = #{leftId} and a.is_deleted = 0
+        group by
+            c.id
+    </select>
+    <select id="findRightByJoinLeftId" resultType="org.springblade.business.entity.StandardInfo">
+        SELECT
+            <include refid="Base_Column_Join_List"/>, c.name parentName
+        FROM
+            u_standard_info a
+            INNER JOIN u_standard_info_join b ON a.id = b.standard_info_right_id AND a.is_deleted = b.is_deleted
+            INNER JOIN u_standard_info c ON a.parent_id = c.id AND a.is_deleted = c.is_deleted
+        WHERE
+            a.parent_id = #{id} and b.standard_info_left_id = #{leftId} and a.is_deleted = 0
+        group by
+            a.id
     </select>
-
     <!-- ``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````` -->
 
     <resultMap id="BaseResultElementJoin" type="org.springblade.business.vo.StandardInfoPrivateJoinVO">
@@ -135,7 +174,9 @@
         <result property="name" column="name"/>
         <result property="parentId" column="parent_id"/>
         <result property="type" column="type"/>
-        <collection property="privateJoins" ofType="org.springblade.business.entity.StandardInfoPrivateJoin" select="findByPrivateJoinLeftId" column="{leftId=id}">
+        <result property="symbol" column="symbol"/>
+        <result property="symbolName" column="symbolName"/>
+        <collection property="group" ofType="org.springblade.business.vo.StandardInfoPrivateJoinGroupVO" select="findByPrivateJoinLeftId" column="{leftId=id}">
         </collection>
     </resultMap>
 
@@ -153,27 +194,67 @@
     </sql>
     <select id="getElementJoin" resultMap="BaseResultElementJoin">
         select
-            <include refid="Base_Column_Join_List"/>
+            <include refid="Base_Column_Join_List"/>, concat(a.symbol,a.name) symbolName
         from
             u_standard_info a
             INNER JOIN u_standard_info_private_join b on a.id = b.standard_info_id and a.is_deleted = b.is_deleted
         where
-            a.standard_id = #{id} and a.is_deleted = 0
+            a.is_deleted = 0
+            <if test="id != null">
+                and  a.standard_id = #{id}
+            </if>
+            <if test="leftId != null">
+                and  b.standard_info_id = #{leftId}
+            </if>
         GROUP BY
             b.standard_info_id
     </select>
 
-    <select id="findByPrivateJoinLeftId" resultType="org.springblade.business.entity.StandardInfoPrivateJoin">
+
+    <resultMap id="BaseResultElementGroupPrivate" type="org.springblade.business.vo.StandardInfoPrivateJoinGroupVO">
+        <result property="standardInfoId" column="standard_info_id"/>
+        <result property="privateId" column="private_id"/>
+        <result property="privateName" column="privateName"/>
+        <result property="elementNames" column="elementNames"/>
+        <collection property="keys" ofType="org.springblade.business.vo.StandardElementVo" select="findByPrivateGroupJoinLeftId" column="{standardInfoId=standard_info_id,privateId=private_id}">
+        </collection>
+    </resultMap>
+    <select id="findByPrivateJoinLeftId" resultMap="BaseResultElementGroupPrivate">
         SELECT
-            <include refid="Base_Private_Column_List"/>,
-            b.node_name privateName
+            a.standard_info_id,
+            a.private_id,
+            b.node_name privateName,
+            GROUP_CONCAT(col_name SEPARATOR ',') elementNames
         FROM
             u_standard_info_private_join a
             INNER JOIN m_wbs_tree_private b ON a.private_id = b.p_key_id AND a.is_deleted = b.is_deleted
         WHERE
             a.standard_info_id = #{leftId}
           AND a.is_deleted = 0
+        GROUP BY
+            a.private_id
+    </select>
+
+    <select id="findByPrivateGroupJoinLeftId" resultType="org.springblade.business.vo.StandardElementVo">
+        SELECT
+            col_key,col_name
+        FROM
+        u_standard_info_private_join a
+        INNER JOIN m_wbs_tree_private b ON a.private_id = b.p_key_id AND a.is_deleted = b.is_deleted
+        WHERE
+        a.standard_info_id = #{standardInfoId} and a.private_id = #{privateId}
+        AND a.is_deleted = 0
     </select>
+
+
+
+
+
+    <!-- ``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````` -->
+
+
+
+
     <select id="effectPreview" resultMap="BaseResultElementJoin">
         SELECT
             a.*

+ 3 - 0
blade-service/blade-business/src/main/java/org/springblade/business/service/PrivateStandardService.java

@@ -3,6 +3,7 @@ package org.springblade.business.service;
 import org.springblade.business.dto.PrivateStandardDTO;
 import org.springblade.business.entity.PrivateStandard;
 import com.baomidou.mybatisplus.extension.service.IService;
+import org.springframework.web.multipart.MultipartFile;
 
 import java.util.List;
 
@@ -20,4 +21,6 @@ public interface PrivateStandardService extends IService<PrivateStandard> {
     boolean update(List<PrivateStandardDTO> privateStandards);
 
     boolean deleteFile(Long id);
+
+    boolean updateTypeByTwo(List<PrivateStandardDTO> data, List<Long> delIds, List<Long> delFileIds, MultipartFile[] files);
 }

+ 12 - 13
blade-service/blade-business/src/main/java/org/springblade/business/service/StandardInfoService.java

@@ -1,12 +1,10 @@
 package org.springblade.business.service;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
-import org.springblade.business.dto.StandardInfoJoinDTO;
-import org.springblade.business.dto.StandardInfoPrivateJoinDTO;
+import com.baomidou.mybatisplus.extension.service.IService;
 import org.springblade.business.dto.StandardInfoDTO;
+import org.springblade.business.dto.StandardInfoPrivateJoinDTO;
 import org.springblade.business.entity.StandardInfo;
-import com.baomidou.mybatisplus.extension.service.IService;
-import org.springblade.business.vo.StandardInfoDtoVo;
 import org.springblade.business.vo.StandardInfoPrivateJoinVO;
 import org.springblade.business.vo.StandardInfoVO;
 import org.springblade.core.mp.support.Query;
@@ -14,13 +12,13 @@ import org.springblade.core.mp.support.Query;
 import java.util.List;
 
 /**
-* @author LHB
-* @description 针对表【u_standard_info(规范参数管理-基础信息)】的数据库操作Service
-* @createDate 2025-06-11 09:57:39
-*/
+ * @author LHB
+ * @description 针对表【u_standard_info(规范参数管理-基础信息)】的数据库操作Service
+ * @createDate 2025-06-11 09:57:39
+ */
 public interface StandardInfoService extends IService<StandardInfo> {
 
-    IPage<StandardInfoDtoVo> selectMyPage(Query query, StandardInfo standardInfo);
+    IPage<StandardInfoDTO> selectMyPage(Query query, StandardInfo standardInfo);
 
     StandardInfoDTO selectOne(Long id);
 
@@ -30,17 +28,18 @@ public interface StandardInfoService extends IService<StandardInfo> {
 
     Boolean delete(Long id);
 
-    Boolean setCondition(List<StandardInfoJoinDTO> standardInfoJoins);
+    Boolean setCondition(List<StandardInfoVO> standardInfoJoins, Long id);
 
-    Boolean setElementJoin(List<StandardInfoPrivateJoinDTO> standardInfoPrivateJoins);
+    Boolean setElementJoin(List<StandardInfoPrivateJoinVO> standardInfoPrivateJoins,Long id);
 
     Boolean deleteConditionSet(Long leftId);
 
     Boolean deleteElementJoin(Long leftId);
 
-    List<StandardInfoVO> getConditionSet(Long id);
+    List<StandardInfoVO> getConditionSet(Long id, Long leftId);
 
-    List<StandardInfoPrivateJoinVO> getElementJoin(Long id);
+    List<StandardInfoPrivateJoinVO> getElementJoin(Long id, Long leftId);
 
     List<StandardInfoPrivateJoinVO> effectPreview(String ids);
+
 }

+ 90 - 39
blade-service/blade-business/src/main/java/org/springblade/business/service/impl/PrivateStandardServiceImpl.java

@@ -1,5 +1,6 @@
 package org.springblade.business.service.impl;
 
+import cn.hutool.core.util.ReflectUtil;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springblade.business.entity.StandardFile;
@@ -19,11 +20,14 @@ import org.springblade.core.secure.BladeUser;
 import org.springblade.core.secure.utils.SecureUtil;
 import org.springblade.core.tool.utils.BeanUtil;
 import org.springblade.resource.feign.NewIOSSClient;
+import org.springframework.mock.web.MockMultipartFile;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.annotation.Resource;
+import java.io.IOException;
+import java.io.InputStream;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -68,6 +72,7 @@ public class PrivateStandardServiceImpl extends ServiceImpl<PrivateStandardMappe
 
             try {
                 for (MultipartFile file : files) {
+
                     StandardFile standardFile = new StandardFile();
                     standardFile.setId(SnowFlakeUtil.getId());
                     standardFile.setStandardId(uWbsPrivateStandard.getId());
@@ -76,12 +81,15 @@ public class PrivateStandardServiceImpl extends ServiceImpl<PrivateStandardMappe
 
                     String originalFilename = file.getOriginalFilename();
                     standardFile.setFileName(originalFilename);
-                    originalFilename = "standard/" + uWbsPrivateStandard.getId() + "|" + originalFilename;
 
 
+                    originalFilename = "standard/" + uWbsPrivateStandard.getId() + "|" + originalFilename;
+//
+//                    ReflectUtil.setFieldValue(file,"filename",originalFilename);
 
+                    MockMultipartFile multipartFile = new MockMultipartFile("file", originalFilename, "application/pdf", file.getInputStream());
                     //Oss上传 传特殊文件名 在oss中做特殊路径处理
-                    BladeFile bladeFile = this.newIOSSClient.uploadFileByInputStream2(file.getOriginalFilename(), file.getInputStream());
+                    BladeFile bladeFile = newIOSSClient.uploadFileByInputStream(multipartFile);
 
                     standardFile.setStandardFileUrl(bladeFile.getLink());
                     standardFiles.add(standardFile);
@@ -89,7 +97,8 @@ public class PrivateStandardServiceImpl extends ServiceImpl<PrivateStandardMappe
             } catch (Exception e) {
                 //删除之前上传的文件
                 for (StandardFile standardFile : standardFiles) {
-                    this.newIOSSClient.removeFile(standardFile.getStandardFileUrl());
+                    String pdfName = standardFile.getStandardFileUrl().split("upload")[1];
+                    this.newIOSSClient.removeFile("upload" + pdfName);
                 }
                 e.printStackTrace();
                 throw new ServiceException("文件上传失败!请检查Oss");
@@ -112,39 +121,6 @@ public class PrivateStandardServiceImpl extends ServiceImpl<PrivateStandardMappe
         List<PrivateStandard> privateStandards1 = new ArrayList<>();
 
         for (PrivateStandardDTO privateStandard : privateStandards) {
-            List<StandardFile> standardFiles = new ArrayList<>();
-            MultipartFile[] files = privateStandard.getFiles();
-
-            try {
-                for (MultipartFile file : files) {
-                    StandardFile standardFile = new StandardFile();
-                    standardFile.setId(SnowFlakeUtil.getId());
-                    standardFile.setStandardId(privateStandard.getId());
-                    standardFile.setCreateUser(user.getUserId());
-
-
-                    String originalFilename = file.getOriginalFilename();
-                    standardFile.setFileName(originalFilename);
-                    originalFilename = "standard/" + privateStandard.getId() + "|" + originalFilename;
-
-                    //Oss上传 传特殊文件名 在oss中做特殊路径处理
-                    BladeFile bladeFile = this.newIOSSClient.uploadFileByInputStream2(originalFilename, file.getInputStream());
-
-                    standardFile.setStandardFileUrl(bladeFile.getLink());
-                    standardFiles.add(standardFile);
-                }
-            } catch (Exception e) {
-                //删除之前上传的文件
-                for (StandardFile standardFile : standardFiles) {
-                    this.newIOSSClient.removeFile(standardFile.getStandardFileUrl());
-                }
-                e.printStackTrace();
-                throw new ServiceException("文件上传失败!请检查Oss");
-            }
-
-            standardFileService.saveBatch(standardFiles);
-
-
             PrivateStandard privateStandard1 = BeanUtil.copyProperties(privateStandard, PrivateStandard.class);
             privateStandards1.add(privateStandard1);
         }
@@ -161,6 +137,14 @@ public class PrivateStandardServiceImpl extends ServiceImpl<PrivateStandardMappe
         try {
             //获取当前用户
             BladeUser user = SecureUtil.getUser();
+
+            //删除文件
+            List<StandardFile> list = standardFileService.list(Wrappers.<StandardFile>lambdaQuery()
+                    .eq(StandardFile::getStandardId, id));
+            for (StandardFile standardFile : list) {
+                deleteFile(standardFile.getId());
+            }
+            //更新西悉尼
             int update = baseMapper.update(null, Wrappers.<PrivateStandard>lambdaUpdate()
                     .set(PrivateStandard::getIsDeleted, 1)
                     .set(PrivateStandard::getUpdateUser, user.getUserId())
@@ -168,8 +152,6 @@ public class PrivateStandardServiceImpl extends ServiceImpl<PrivateStandardMappe
                     .or()
                     .eq(PrivateStandard::getParentId, id)
             );
-            //TODO 后续还要删除规范详细信息
-
 
             int update1 = standardInfoMapper.update(null, Wrappers.<StandardInfo>lambdaUpdate()
                     .set(StandardInfo::getIsDeleted, 1)
@@ -179,6 +161,7 @@ public class PrivateStandardServiceImpl extends ServiceImpl<PrivateStandardMappe
             standardInfoJoinMapper.updateJoin(user.getUserId(), 1, id);
             //TODo 还要删除与表单的关联信息
             standardInfoPrivateJoinMapper.updateJoin(user.getUserId(), 1, id);
+
             return update > 0;
         } catch (Exception e) {
             e.printStackTrace();
@@ -192,7 +175,8 @@ public class PrivateStandardServiceImpl extends ServiceImpl<PrivateStandardMappe
         StandardFile byId = standardFileService.getById(id);
         if (byId != null) {
             try {
-                this.newIOSSClient.removeFile(byId.getStandardFileUrl());
+                String pdfName = byId.getStandardFileUrl().split("upload")[1];
+                this.newIOSSClient.removeFile("upload" + pdfName);
             } catch (Exception e) {
                 e.printStackTrace();
                 throw new ServiceException("文件删除失败,Oss异常");
@@ -205,6 +189,73 @@ public class PrivateStandardServiceImpl extends ServiceImpl<PrivateStandardMappe
         }
         return false;
     }
+
+    @Override
+    @Transactional
+    public boolean updateTypeByTwo(List<PrivateStandardDTO> data,
+                                   List<Long> delIds,
+                                   List<Long> delFileIds,
+                                   MultipartFile[] allFiles) {
+        BladeUser user = SecureUtil.getUser();
+        //先删除文件
+        try {
+            List<StandardFile> standardFiles = standardFileService.listByIds(delFileIds);
+            for (StandardFile standardFile : standardFiles) {
+                this.deleteFile(standardFile.getId());
+            }
+            //删除规范文件
+            for (Long delId : delIds) {
+                delete(delId);
+            }
+        } catch (Exception e) {
+            throw new ServiceException("Oss删除文件失败");
+        }
+        try {
+            // 文件索引计数器
+            int fileIndex = 0;
+            for (PrivateStandardDTO dto : data) {
+                // 获取当前对象需要的文件数量
+                int fileCount = dto.getFilesCount();
+
+                // 为当前对象分配文件
+                MultipartFile[] objectFiles = new MultipartFile[fileCount];
+                for (int i = 0; i < fileCount; i++) {
+                    objectFiles[i] = allFiles[fileIndex++];
+                }
+                dto.setFiles(objectFiles);
+
+                //先上传文件,上传成功在执行添加
+                List<StandardFile> standardFiles = new ArrayList<>();
+                for (MultipartFile file : dto.getFiles()) {
+                    StandardFile standardFile = new StandardFile();
+                    standardFile.setId(SnowFlakeUtil.getId());
+                    standardFile.setStandardId(dto.getId());
+                    standardFile.setCreateUser(user.getUserId());
+                    String originalFilename = file.getOriginalFilename();
+                    standardFile.setFileName(originalFilename);
+                    originalFilename = "standard/" + dto.getId() + "|" + originalFilename;
+                    MockMultipartFile multipartFile = new MockMultipartFile("file", originalFilename, "application/pdf", file.getInputStream());
+                    //Oss上传 传特殊文件名 在oss中做特殊路径处理
+                    BladeFile bladeFile = newIOSSClient.uploadFileByInputStream(multipartFile);
+
+                    standardFile.setStandardFileUrl(bladeFile.getLink());
+                    standardFiles.add(standardFile);
+                }
+
+                //创建数据
+                PrivateStandard privateStandard = BeanUtil.copyProperties(dto, PrivateStandard.class);
+
+                //添加新文件
+                standardFileService.saveBatch(standardFiles);
+                //修改
+                baseMapper.updateById(privateStandard);
+                return true;
+            }
+            return false;
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        }
+    }
 }
 
 

+ 108 - 38
blade-service/blade-business/src/main/java/org/springblade/business/service/impl/UStandardInfoServiceImpl.java

@@ -1,6 +1,7 @@
 package org.springblade.business.service.impl;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -14,15 +15,15 @@ import org.springblade.business.mapper.StandardInfoMapper;
 import org.springblade.business.service.StandardInfoJoinService;
 import org.springblade.business.service.StandardInfoPrivateJoinService;
 import org.springblade.business.service.StandardInfoService;
-import org.springblade.business.vo.StandardInfoDtoVo;
-import org.springblade.business.vo.StandardInfoPrivateJoinVO;
-import org.springblade.business.vo.StandardInfoVO;
+import org.springblade.business.vo.*;
 import org.springblade.common.utils.SnowFlakeUtil;
 import org.springblade.core.log.exception.ServiceException;
 import org.springblade.core.mp.support.Query;
 import org.springblade.core.secure.BladeUser;
 import org.springblade.core.secure.utils.SecureUtil;
 import org.springblade.core.tool.utils.BeanUtil;
+import org.springblade.core.tool.utils.CollectionUtil;
+import org.springblade.core.tool.utils.StringUtil;
 import org.springframework.beans.BeansException;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -56,8 +57,8 @@ public class UStandardInfoServiceImpl extends ServiceImpl<StandardInfoMapper, St
 
 
     @Override
-    public IPage<StandardInfoDtoVo> selectMyPage(Query query, StandardInfo standardInfo) {
-        return baseMapper.selectMyPage(new Page<StandardInfoDtoVo>(query.getCurrent(), query.getSize()), standardInfo);
+    public IPage<StandardInfoDTO> selectMyPage(Query query, StandardInfo standardInfo) {
+        return baseMapper.selectMyPage(new Page<StandardInfoDTO>(query.getCurrent(), query.getSize()), standardInfo);
     }
 
     @Override
@@ -163,54 +164,107 @@ public class UStandardInfoServiceImpl extends ServiceImpl<StandardInfoMapper, St
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public Boolean setCondition(List<StandardInfoJoinDTO> standardInfoJoins) {
-        BladeUser user = SecureUtil.getUser();
-        List<StandardInfoJoin> saveData = new ArrayList<>();
-        try {
-            for (StandardInfoJoinDTO standardInfoJoin : standardInfoJoins) {
-                Long leftId = standardInfoJoin.getLeftId();
+    public Boolean setCondition(List<StandardInfoVO> standardInfoJoins, Long id) {
+        List<StandardInfo> standardInfoIds = baseMapper.selectList(Wrappers.<StandardInfo>lambdaQuery()
+                .eq(StandardInfo::getStandardId, id)
+                .eq(StandardInfo::getIsDeleted, 0));
+        if(CollectionUtil.isEmpty(standardInfoIds)){
+            throw new ServiceException("未查询到规范文件的信息");
+        }
+        List<Long> collect = standardInfoIds.stream().map(StandardInfo::getId).collect(Collectors.toList());
+        //删除当前规范文件下的条件设置
+        standardInfoJoinService.remove(Wrappers.<StandardInfoJoin>lambdaQuery()
+                .in(StandardInfoJoin::getStandardInfoLeftId, collect));
+
+
+        if (CollectionUtil.isNotEmpty(standardInfoJoins)) {
+            BladeUser user = SecureUtil.getUser();
+            //先删除,在添加
+            List<Long> leftIds = new ArrayList<>();
+            //获取参宿
+            List<StandardInfoJoinDTO> list = new ArrayList<>();
+            //新增数据
+            List<StandardInfoJoin> saveData = new ArrayList<>();
+            //解析参数
+            for (StandardInfoVO standardInfoJoin : standardInfoJoins) {
+                StandardInfoJoinDTO standardInfoJoinDTO = new StandardInfoJoinDTO();
+
+                Long leftId = standardInfoJoin.getId();
+                standardInfoJoinDTO.setLeftId(leftId);
+                leftIds.add(leftId);
+                List<StandardInfoConditionVo> standardInfos = standardInfoJoin.getStandardInfos();
+                if (CollectionUtil.isNotEmpty(standardInfos)) {
+                    for (StandardInfoConditionVo standardInfo : standardInfos) {
+                        StandardInfoGroupNameVO standardInfoGroupNameVO = standardInfo.getStandardInfoGroupNameVO();
+                        List<Long> ids = standardInfoGroupNameVO.getIds();
+                        standardInfoJoinDTO.getRightIds().addAll(ids);
+                    }
+                    list.add(standardInfoJoinDTO);
+                }
+            }
+
+            //封装参数
+            for (StandardInfoJoinDTO standardInfoJoin : list) {
                 List<Long> rightIds = standardInfoJoin.getRightIds();
                 for (Long rightId : rightIds) {
                     StandardInfoJoin uStandardInfoJoin = new StandardInfoJoin();
                     uStandardInfoJoin.setId(SnowFlakeUtil.getId());
-                    uStandardInfoJoin.setStandardInfoLeftId(leftId);
+                    uStandardInfoJoin.setStandardInfoLeftId(standardInfoJoin.getLeftId());
                     uStandardInfoJoin.setStandardInfoRightId(rightId);
                     uStandardInfoJoin.setCreateUser(user.getUserId());
                     saveData.add(uStandardInfoJoin);
                 }
-                //先删除之前的关联关系
-                standardInfoJoinService.remove(Wrappers.<StandardInfoJoin>lambdaQuery()
-                        .eq(StandardInfoJoin::getStandardInfoLeftId,leftId));
             }
-            //新增
-            return standardInfoJoinService.saveBatch(saveData);
-        } catch (Exception e) {
-            e.printStackTrace();
-            throw new ServiceException("条件设置失败");
+
+            return standardInfoJoinService.saveOrUpdateBatch(saveData);
         }
+        return true;
     }
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public Boolean setElementJoin(List<StandardInfoPrivateJoinDTO> standardInfoPrivateJoins) {
+    public Boolean setElementJoin(List<StandardInfoPrivateJoinVO> standardInfoPrivateJoins, Long id) {
+        List<StandardInfo> standardInfoIds = baseMapper.selectList(Wrappers.<StandardInfo>lambdaQuery()
+                .eq(StandardInfo::getStandardId, id)
+                .eq(StandardInfo::getIsDeleted, 0));
+        if(CollectionUtil.isEmpty(standardInfoIds)){
+            throw new ServiceException("未查询到规范文件的信息");
+        }
+        List<Long> collect = standardInfoIds.stream().map(StandardInfo::getId).collect(Collectors.toList());
+        //删除当前规范文件下的条件设置
+        standardInfoPrivateJoinService.remove(Wrappers.<StandardInfoPrivateJoin>lambdaQuery()
+                .in(StandardInfoPrivateJoin::getStandardInfoId, collect));
+
+
         BladeUser user = SecureUtil.getUser();
         List<StandardInfoPrivateJoin> saveData = new ArrayList<>();
+        List<Long> leftIds = new ArrayList<>();
 
         try {
-            for (StandardInfoPrivateJoinDTO standardInfoPrivateJoin : standardInfoPrivateJoins) {
-                Long leftId = standardInfoPrivateJoin.getLeftId();
-                List<StandardInfoPrivateJoin> rightIds = standardInfoPrivateJoin.getRightIds();
-                rightIds.forEach(f -> {
-                    f.setId(SnowFlakeUtil.getId());
-                    f.setStandardInfoId(leftId);
-                    f.setCreateUser(user.getUserId());
-                });
-                saveData.addAll(rightIds);
-                //删除之前的关联关系
-                standardInfoPrivateJoinService.remove(Wrappers.<StandardInfoPrivateJoin>lambdaQuery()
-                        .eq(StandardInfoPrivateJoin::getStandardInfoId,leftId));
+
+            for (StandardInfoPrivateJoinVO standardInfoPrivateJoin : standardInfoPrivateJoins) {
+                Long leftId = standardInfoPrivateJoin.getId();
+                leftIds.add(leftId);
+                List<StandardInfoPrivateJoinGroupVO> group = standardInfoPrivateJoin.getGroup();
+                //项目组
+                for (StandardInfoPrivateJoinGroupVO standardInfoPrivateJoinGroupVO : group) {
+                    //项目id
+                    Long privateId = standardInfoPrivateJoinGroupVO.getPrivateId();
+                    List<StandardElementVo> keys = standardInfoPrivateJoinGroupVO.getKeys();
+
+                    for (StandardElementVo key : keys) {
+                        StandardInfoPrivateJoin join = new StandardInfoPrivateJoin();
+                        join.setStandardInfoId(leftId);
+                        join.setId(SnowFlakeUtil.getId());
+                        join.setPrivateId(privateId);
+                        join.setColKey(key.getColKey());
+                        join.setColName(key.getColName());
+                        join.setCreateUser(user.getUserId());
+                        saveData.add(join);
+                    }
+                }
             }
-            return standardInfoPrivateJoinService.saveBatch(saveData);
+            return standardInfoPrivateJoinService.saveOrUpdateBatch(saveData);
         } catch (Exception e) {
             e.printStackTrace();
             throw new ServiceException("元素关联失败");
@@ -248,13 +302,29 @@ public class UStandardInfoServiceImpl extends ServiceImpl<StandardInfoMapper, St
     }
 
     @Override
-    public List<StandardInfoVO> getConditionSet(Long id) {
-        return baseMapper.getConditionSet(id);
+    public List<StandardInfoVO> getConditionSet(Long id, Long leftId) {
+        List<StandardInfoVO> conditionSet = baseMapper.getConditionSet(id, leftId);
+        for (StandardInfoVO standardInfoVO : conditionSet) {
+            List<StandardInfoConditionVo> standardInfos = standardInfoVO.getStandardInfos();
+            for (StandardInfoConditionVo standardInfo : standardInfos) {
+                //重新组装数据
+                List<String> name = standardInfo.getRightStandardInfos().stream().map(StandardInfo::getName).collect(Collectors.toList());
+                List<Long> ids = standardInfo.getRightStandardInfos().stream().map(StandardInfo::getId).collect(Collectors.toList());
+
+                StandardInfoGroupNameVO standardInfoGroupNameVO = new StandardInfoGroupNameVO();
+                standardInfoGroupNameVO.setName(StringUtil.join(name, ","));
+                standardInfoGroupNameVO.setIds(ids);
+
+                standardInfo.setStandardInfoGroupNameVO(standardInfoGroupNameVO);
+                standardInfo.setRightStandardInfos(null);
+            }
+        }
+        return conditionSet;
     }
 
     @Override
-    public List<StandardInfoPrivateJoinVO> getElementJoin(Long id) {
-        return baseMapper.getElementJoin(id);
+    public List<StandardInfoPrivateJoinVO> getElementJoin(Long id, Long leftId) {
+        return baseMapper.getElementJoin(id, leftId);
 
     }
 

+ 2 - 2
blade-service/blade-e-visa/src/main/java/org/springblade/evisa/controller/ArchiveController.java

@@ -90,8 +90,8 @@ public class ArchiveController {
                 }
             }
         }
-        System.out.println("队列数量_img" + executor.getQueue().size());
-        System.out.println("活跃数量_img" + executor.getActiveCount());
+        System.out.println("队列数量_img2" + executor.getQueue().size());
+        System.out.println("活跃数量_img2" + executor.getActiveCount());
         System.out.println("总共数量_img" + executor.getTaskCount());
         System.out.println("完成数量_img" + executor.getCompletedTaskCount());
     }

+ 57 - 21
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ExcelTabController.java

@@ -3107,25 +3107,7 @@ public class ExcelTabController extends BladeController {
                         InputStream inputStreamByUrl = FileUtils.getInputStreamByUrl(tableNode2.getHtmlUrl());
                         String htmlString = IoUtil.readToString(inputStreamByUrl);
                         Document doc = Jsoup.parse(htmlString);
-                        // 模糊匹配
-                        Elements cbdw = doc.select("el-select[placeholder*=承包单位]");
-                        Elements htd = doc.select("el-select[placeholder*=合同段]");
-                        Elements jldw = doc.select("el-input[placeholder*=监理单位]");
-                        Elements jljg = doc.select("el-select[placeholder*=监理机构]");
-                        Elements jlr = doc.select("el-input[placeholder*=记录人]");
-                        Elements rq = doc.select("el-date-picker[placeholder*=日期]");
-                        Elements shr = doc.select("el-input[placeholder*=审核人]");
-                        Elements tqqk = doc.select("el-input[placeholder*=天气情况]");
-                        List<Elements> allElements=new ArrayList<>();
-                        allElements.add(cbdw);
-                        allElements.add(htd);
-                        allElements.add(jldw);
-                        allElements.add(jljg);
-                        allElements.add(jlr);
-                        allElements.add(rq);
-                        allElements.add(shr);
-                        allElements.add(tqqk);
-                        allElements=allElements.stream().filter(o->o!=null&&o.size()>0).collect(Collectors.toList());
+                        List<Elements> allElements = getBiaoTou(doc);
                         if(allElements.size()>0){
                             for (String key : businessDataMap.get(0).keySet()) {
                                 String tabVal = businessDataMap.get(0).get(key) + "";
@@ -3180,8 +3162,10 @@ public class ExcelTabController extends BladeController {
                                 }
                             }
                             for (Elements element : allElements) {
-                                if(reData.containsKey(element.attr("keyname"))){
-                                    resultMapList.put(element.attr("keyname"),reData.get(element.attr("keyname")));
+                                for (Element element1 : element) {
+                                    if(reData.containsKey(element1.attr("keyname"))){
+                                        resultMapList.put(element1.attr("keyname"),reData.get(element1.attr("keyname")));
+                                    }
                                 }
                             }
                         }
@@ -3194,6 +3178,58 @@ public class ExcelTabController extends BladeController {
         return R.data(resultMapList);
     }
 
+    public List<Elements> getBiaoTou(Document doc){
+        // 模糊匹配
+        Elements cbdw = doc.select("el-select[placeholder*=承包单位]");
+        Elements cbdw1 = doc.select("el-input[placeholder*=承包单位]");
+        Elements htd = doc.select("el-select[placeholder*=合同段]");
+        Elements htd1 = doc.select("el-input[placeholder*=合同段]");
+        Elements jldw = doc.select("el-input[placeholder*=监理单位]");
+        Elements jljg = doc.select("el-select[placeholder*=监理机构]");
+        Elements jljg1 = doc.select("el-input[placeholder*=监理机构]");
+        Elements jlr = doc.select("el-input[placeholder*=记录人]");
+        Elements rq = doc.select("el-date-picker[placeholder*=日期]");
+        Elements shr = doc.select("el-input[placeholder*=审核人]");
+        Elements tqqk = doc.select("el-input[placeholder*=天气情况]");
+        Elements dwgc = doc.select("el-input[placeholder*=单位工程]");
+        Elements fxgc = doc.select("el-input[placeholder*=分项工程]");
+        Elements fbgc = doc.select("el-input[placeholder*=分部工程]");
+        Elements zh = doc.select("el-input[placeholder*=桩号]");
+        Elements bw = doc.select("el-input[placeholder*=部位]");
+        Elements xq = doc.select("el-select[placeholder*=星期]");
+        Elements tq = doc.select("el-input[placeholder*=天气]");
+        Elements qw = doc.select("el-input[placeholder*=气温_最高]");
+        Elements qw1 = doc.select("el-input[placeholder*=气温_最低]");
+        Elements sgdw = doc.select("el-input[placeholder*=施工单位]");
+        Elements hth = doc.select("el-input[placeholder*=合同号]");
+        Elements bh = doc.select("el-input[placeholder*=编号]");
+        List<Elements> allElements=new ArrayList<>();
+        allElements.add(cbdw);
+        allElements.add(cbdw1);
+        allElements.add(htd);
+        allElements.add(htd1);
+        allElements.add(jldw);
+        allElements.add(jljg);
+        allElements.add(jljg1);
+        allElements.add(jlr);
+        allElements.add(rq);
+        allElements.add(shr);
+        allElements.add(tqqk);
+        allElements.add(dwgc);
+        allElements.add(fxgc);
+        allElements.add(fbgc);
+        allElements.add(zh);
+        allElements.add(bw);
+        allElements.add(xq);
+        allElements.add(tq);
+        allElements.add(qw);
+        allElements.add(qw1);
+        allElements.add(sgdw);
+        allElements.add(hth);
+        allElements.add(bh);
+        return allElements.stream().filter(o->o!=null&&o.size()>0).distinct().collect(Collectors.toList());
+    }
+
 
 
     /**

+ 4 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/SystemMsgController.java

@@ -47,7 +47,9 @@ public class SystemMsgController extends BladeController {
     @ApiOperationSupport(order = 1)
     @ApiOperation(value = "新增", notes = "传入版本信息")
     public R add(@Valid @RequestBody SystemMsg systemMsg){
-        systemMsg.setPushDateTime(systemMsg.getPushDateTime().with(ChronoField.SECOND_OF_MINUTE, 0));
+        //systemMsg.setPushDateTime(systemMsg.getPushDateTime().with(ChronoField.SECOND_OF_MINUTE, 0));
+
+        systemMsg.setPushDateTime(systemMsg.getPushDateTime());
         //如果新增的是更新公告,则校验是否已经存在更新公告
         if (systemMsg.getMsgType() == 1) {
             List<SystemMsg> list = systemMsgService.list(new LambdaQueryWrapper<SystemMsg>()
@@ -138,6 +140,7 @@ public class SystemMsgController extends BladeController {
         }
         systemMsg.setCreatUserName(AuthUtil.getUserName());
         systemMsg.setPushStatus(1);
+        systemMsg.setStatus(1);
         systemMsg.setCancelDateTime(null);
         systemMsgService.updateById(systemMsg);
         return R.data("修改成功");

+ 4 - 4
blade-service/blade-manager/src/main/java/org/springblade/manager/feign/WbsParamClientImpl.java

@@ -26,12 +26,12 @@ public class WbsParamClientImpl implements WbsParamClient{
     }
 
     @Override
-    public void saveWbsParams(List<WbsParam> wbsParamList) {
-        iWbsParamService.saveBatch(wbsParamList);
+    public String createFileTitle(WbsTreeContract contract) {
+        return iWbsParamService.createFileTitle(contract);
     }
 
     @Override
-    public String createFileTitle(WbsTreeContract contract) {
-        return iWbsParamService.createFileTitle(contract);
+    public void saveWbsParams(List<WbsParam> wbsParamList) {
+        iWbsParamService.saveBatch(wbsParamList);
     }
 }

+ 5 - 4
blade-service/blade-manager/src/main/java/org/springblade/manager/job/SystemMsgJob.java

@@ -48,7 +48,7 @@ public class SystemMsgJob {
         if (!schedulerEnabled) return;
 
         /** 普通公告推送*/
-        String sql1 = "select * from m_system_msg where is_deleted = 0 and msg_type = 2 and push_status = 1 and push_end_date_time >= now()";
+        String sql1 = "select * from m_system_msg where is_deleted = 0 and msg_type = 2 and push_status = 1 and now()<=push_end_date_time and now()>=push_date_time ";
         List<SystemMsg> list1 = jdbcTemplate.query(sql1,new BeanPropertyRowMapper<>(SystemMsg.class));
         if (list1.size() > 0){
             for (SystemMsg msg : list1) {
@@ -60,7 +60,7 @@ public class SystemMsgJob {
         }
         /** 维护公告推送*/
         //String sql2 = "select * from m_system_msg where is_deleted = 0 and msg_type = 1 and status = 1 and push_status = 1 and push_date_time >= now() and push_warn_date_time <= TIMESTAMPADD(SECOND, 1, NOW())";
-        String sql2 = "select * from m_system_msg where is_deleted = 0 and msg_type = 1 and status = 1 and push_status = 1 and push_warn_date_time>=NOW() ";
+        String sql2 = "select * from m_system_msg where is_deleted = 0 and msg_type = 1 and status = 1 and push_status = 1 and TIMESTAMPDIFF(SECOND,push_warn_date_time,sysdate())>0  ";
         List<SystemMsg> list2 = jdbcTemplate.query(sql2,new BeanPropertyRowMapper<>(SystemMsg.class));
         if (list2.size() > 0){
             for (SystemMsg msg : list2) {
@@ -72,12 +72,13 @@ public class SystemMsgJob {
         }
         /** 维护倒计时*/
       //  String sql3 = "select * from m_system_msg where is_deleted = 0 and msg_type = 1 and status != 3 and TIMESTAMPADD(SECOND, 1, NOW()) >= push_count_down_date_time and now() < push_date_time ";
-        String sql3 = "select * from m_system_msg where is_deleted = 0 and msg_type = 1 and status != 3 and push_count_down_date_time >=NOW() ";
+        String sql3 = "select * from m_system_msg where is_deleted = 0 and msg_type = 1 and status != 3 and TIMESTAMPDIFF(SECOND,push_count_down_date_time,sysdate())>0  ";
         List<SystemMsg> list3 = jdbcTemplate.query(sql3,new BeanPropertyRowMapper<>(SystemMsg.class));
         if (list3.size() > 0){
             SystemMsg msg = list3.get(0);
             msg.setMsgType(3);
-            msg.setMsgContent(Duration.between(LocalDateTime.now(), msg.getPushDateTime()).getSeconds()+"");
+           // msg.setMsgContent(Duration.between(LocalDateTime.now(), msg.getPushDateTime()).getSeconds()+"");
+            msg.setMsgContent((msg.getMsgCountDownTime()*60)+"");
             systemMsgService.pushSystemMsgToAllUser(msg);
             systemMsgService.update(new LambdaUpdateWrapper<SystemMsg>()
                     .set(SystemMsg::getStatus,3)

+ 1 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreeMapper.xml

@@ -468,7 +468,7 @@
             and e_name like concat('%',#{eName},'%')
         </if>
         <if test="eType != null and eType != '' ">
-            and e_type like concat('%',#{eType},'%')
+            and e_type = #{eType}
         </if>
 
     </select>

+ 2 - 2
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ExcelTabServiceImpl.java

@@ -3257,14 +3257,14 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
             //报告编号
             if (bgHB.size() >= 1 && StringUtils.isNotEmpty(dto.getReportNo())) {
                 for (Element element : bgHB) {
-                    DataInfo.put(element.attr("keyname"), "NUMBER-" + dto.getReportNo());
+                   // DataInfo.put(element.attr("keyname"), "NUMBER-" + dto.getReportNo());
                     break;
                 }
             }
             //记录编号
             if (jlBH.size() >= 1 && StringUtils.isNotEmpty(dto.getRecordNo())) {
                 for (Element element : jlBH) {
-                    DataInfo.put(element.attr("keyname"), "NUMBER-" + dto.getRecordNo());
+                   // DataInfo.put(element.attr("keyname"), "NUMBER-" + dto.getRecordNo());
                     break;
                 }
             }

+ 1 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/TextdictInfoServiceImpl.java

@@ -39,6 +39,7 @@ import org.springblade.manager.utils.FileUtils;
 import org.springblade.manager.vo.TextdictBy345VO;
 import org.springblade.manager.vo.TextdictInfoVO;
 import org.springblade.system.cache.ParamCache;
+import org.springblade.system.cache.ParamCache;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;

+ 11 - 0
blade-service/blade-user/src/main/java/org/springblade/system/user/controller/WbsTreeController.java

@@ -167,6 +167,17 @@ public class WbsTreeController extends BladeController {
         return R.data(iUserService.queryInformationByContractIdAndName(contractId, name));
     }
 
+    @GetMapping("/informationWriteQuery/queryInformationByFileNumber")
+    @ApiOperation("根据合同段Id,模糊文件名查询(杭宁项目专用)")
+    @ApiImplicitParams(value = {
+            @ApiImplicitParam(name = "contractId",value = "合同段Id"),
+            @ApiImplicitParam(name="fileNumber",value = "文件编号")
+    })
+    public R<List<InformationQueryVO1>> queryInformationByFileNumber(@RequestParam String contractId, @RequestParam String fileNumber){
+        return R.data(iUserService.queryInformationByFileNumber(contractId, fileNumber));
+    }
+
+
 //    /**
 //     * 项目全加载树
 //     *

+ 2 - 0
blade-service/blade-user/src/main/java/org/springblade/system/user/service/IUserService.java

@@ -244,4 +244,6 @@ public interface IUserService extends BaseService<User> {
 
 
     List<InformationQueryVO1> queryInformationByContractIdAndName(String contractId, String name);
+
+    List<InformationQueryVO1> queryInformationByFileNumber(String contractId, String fieldNumber);
 }

+ 11 - 0
blade-service/blade-user/src/main/java/org/springblade/system/user/service/impl/UserServiceImpl.java

@@ -2093,4 +2093,15 @@ public class UserServiceImpl extends BaseServiceImpl<UserMapper, User> implement
     }
 
 
+    @Override
+    public List<InformationQueryVO1> queryInformationByFileNumber(String contractId, String fileNumber) {
+        if (StringUtil.isEmpty(contractId)) {
+            throw new ServiceException("未获取到合同段id");
+        }
+
+        List<InformationQueryVO1> informationQueryVO1s = baseMapper.queryInformationByContractIdAndName(contractId, fileNumber);
+
+        return informationQueryVO1s;
+    }
+
 }

+ 1 - 1
blade-service/blade-websocket/src/main/java/org/springblade/websocket/config/TaskPoolConfig.java

@@ -28,7 +28,7 @@ public class TaskPoolConfig {
         //最大线程数
         executor.setMaxPoolSize(10);
         //配置队列容量,默认值为Integer.MAX_VALUE
-        executor.setQueueCapacity(20);
+        executor.setQueueCapacity(30);
         // 设置线程活跃时间(当超过了核心线程出的核心线程的存活时间,并且没有任务)
         executor.setKeepAliveSeconds(60);
         //线程名字前缀

+ 1 - 1
blade-service/blade-websocket/src/main/java/org/springblade/websocket/service/WebSocketService.java

@@ -323,7 +323,7 @@ public class WebSocketService implements ApplicationContextAware {
                 () -> sendAssignSystemMsg(pushSystem.contains(ClientIdConstant.ARCHIVE_ID) ? archivesSystemSessions : new HashSet<>(),msg), WebsocketExecutor);
 
         try {
-            CompletableFuture.allOf(cf1, cf2,cf3).get(10, TimeUnit.SECONDS);
+            CompletableFuture.allOf(cf1, cf2,cf3).get(3, TimeUnit.SECONDS);
             String pushInfo = "推送系统{"+pushSystem+"}";
             String pushResult = "推送结果"+"{计量在线"+meterTotal+"推送"+cf1.get()+",质检在线"+clientTotal+"推送"+cf2.get()+",档案在线"+archivesTotal+"推送"+cf3.get()+"}";
             log.info(pushInfo);