瀏覽代碼

Merge remote-tracking branch 'origin/master'

# Conflicts:
#	blade-service/blade-manager/src/main/java/org/springblade/manager/service/IWbsTreeContractService.java
liuyc 2 年之前
父節點
當前提交
33f82168e4
共有 33 個文件被更改,包括 279 次插入98 次删除
  1. 13 0
      blade-service-api/blade-archive-api/src/main/java/org/springblade/archive/dto/ArchiveInspectionDTO.java
  2. 5 0
      blade-service-api/blade-archive-api/src/main/java/org/springblade/archive/entity/ArchiveInspection.java
  3. 10 0
      blade-service-api/blade-business-api/src/main/java/org/springblade/business/vo/CopyContractTreeNodeVO.java
  4. 5 0
      blade-service-api/blade-business-api/src/main/java/org/springblade/business/vo/MetadataClassificationVO.java
  5. 4 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/feign/ContractClient.java
  6. 3 0
      blade-service/blade-archive/src/main/java/org/springblade/archive/controller/ArchiveFileAutoController.java
  7. 2 2
      blade-service/blade-archive/src/main/java/org/springblade/archive/controller/ArchiveFileController.java
  8. 27 12
      blade-service/blade-archive/src/main/java/org/springblade/archive/controller/ArchiveInspectionInfoController.java
  9. 1 0
      blade-service/blade-archive/src/main/java/org/springblade/archive/mapper/ArchiveInspectionMapper.xml
  10. 2 1
      blade-service/blade-archive/src/main/java/org/springblade/archive/service/IArchiveInspectionService.java
  11. 17 13
      blade-service/blade-archive/src/main/java/org/springblade/archive/service/impl/ArchiveAutoPdfServiceImpl.java
  12. 18 4
      blade-service/blade-archive/src/main/java/org/springblade/archive/service/impl/ArchiveInspectionServiceImpl.java
  13. 5 15
      blade-service/blade-archive/src/main/java/org/springblade/archive/service/impl/ArchivesAutoServiceImpl.java
  14. 8 1
      blade-service/blade-archive/src/main/java/org/springblade/archive/utils/FileUtils.java
  15. 84 27
      blade-service/blade-business/src/main/java/org/springblade/business/controller/InformationWriteQueryController.java
  16. 5 0
      blade-service/blade-business/src/main/java/org/springblade/business/service/IInformationQueryService.java
  17. 4 1
      blade-service/blade-business/src/main/java/org/springblade/business/service/impl/ArchiveFileServiceImpl.java
  18. 6 0
      blade-service/blade-business/src/main/java/org/springblade/business/service/impl/InformationQueryServiceImpl.java
  19. 0 13
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/WbsTreeContractController.java
  20. 14 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/WbsTreePrivateController.java
  21. 6 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/feign/ContractClientImpl.java
  22. 1 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ContractInfoMapper.java
  23. 9 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ContractInfoMapper.xml
  24. 1 1
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreeContractMapper.java
  25. 3 3
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreeContractMapper.xml
  26. 1 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreePrivateMapper.java
  27. 5 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreePrivateMapper.xml
  28. 1 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/IContractInfoService.java
  29. 3 2
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/IWbsTreeContractService.java
  30. 1 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/IWbsTreePrivateService.java
  31. 6 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ContractInfoServiceImpl.java
  32. 2 3
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeContractServiceImpl.java
  33. 7 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreePrivateServiceImpl.java

+ 13 - 0
blade-service-api/blade-archive-api/src/main/java/org/springblade/archive/dto/ArchiveInspectionDTO.java

@@ -0,0 +1,13 @@
+package org.springblade.archive.dto;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springblade.archive.entity.ArchiveInspection;
+
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class ArchiveInspectionDTO extends ArchiveInspection {
+
+    //所有的意见
+    private String allOpinion;
+}

+ 5 - 0
blade-service-api/blade-archive-api/src/main/java/org/springblade/archive/entity/ArchiveInspection.java

@@ -38,6 +38,11 @@ public class ArchiveInspection extends BaseEntity {
      */
     private Long fileId;
 
+    /**
+     * 案卷ID
+     */
+    private Long archiveId;
+
     /**
      * 案卷题名
      */

+ 10 - 0
blade-service-api/blade-business-api/src/main/java/org/springblade/business/vo/CopyContractTreeNodeVO.java

@@ -55,6 +55,8 @@ public class CopyContractTreeNodeVO {
 
         private Integer isSameNode; //是否同节点(多份复制 同节点=1,不同节点/跨节点=0)
 
+        private String title;
+
         public CopyBatch() {
         }
 
@@ -65,6 +67,14 @@ public class CopyContractTreeNodeVO {
             this.isSameNode = isSameNode;
         }
 
+        public CopyBatch(String title,String primaryKeyId, String nodeName, String partitionCode, Integer isSameNode) {
+            this.title = title;
+            this.primaryKeyId = primaryKeyId;
+            this.nodeName = nodeName;
+            this.partitionCode = partitionCode;
+            this.isSameNode = isSameNode;
+        }
+
     }
 
 }

+ 5 - 0
blade-service-api/blade-business-api/src/main/java/org/springblade/business/vo/MetadataClassificationVO.java

@@ -16,10 +16,13 @@
  */
 package org.springblade.business.vo;
 
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import org.springblade.business.entity.MetadataClassification;
 
+import java.util.List;
+
 
 /**
  * 视图实体类
@@ -41,4 +44,6 @@ public class MetadataClassificationVO extends MetadataClassification {
      * 文件id
      */
     private Long fileId;
+    @ApiModelProperty("批量保存")
+    private List<MetadataClassificationVO> list;
 }

+ 4 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/feign/ContractClient.java

@@ -64,4 +64,8 @@ public interface ContractClient {
     R saveUserInfoByProjectThree(@RequestBody List<SaveUserInfoByProjectDTO> list);
 
 
+    @GetMapping(API_PREFIX + "/getContractListByProjectId")
+    List<ContractInfo> getContractListByProjectId(@RequestParam Long projectId);
+
+
 }

+ 3 - 0
blade-service/blade-archive/src/main/java/org/springblade/archive/controller/ArchiveFileAutoController.java

@@ -112,6 +112,9 @@ public class ArchiveFileAutoController extends BladeController {
                     archive.setIsDeleted(0);
                     archive.setIsArchive(1);
                     archive.setIsAutoFile(1);
+                    if(saveVos.getList() != null && saveVos.getList().size()>0 && saveVos.getList().get(0).getFileSize() != null) {
+                        archive.setFileSize(saveVos.getList().get(0).getFileSize());
+                    }
                     archivesAutoService.save(archive);
                 } else {
                     archivesAutoService.updateById(archive);

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

@@ -396,9 +396,9 @@ public class ArchiveFileController extends BladeController {
     @PostMapping("/updateMetadata")
     @ApiOperationSupport(order = 17)
     @ApiOperation(value = "编辑")
-    public R<Boolean> updateMetadata(@RequestBody List<MetadataClassificationVO> vos) {
+    public R<Boolean> updateMetadata(@RequestBody MetadataClassificationVO vo) {
         try {
-            this.metadataClassificationClient.updateMetadata(vos);
+            this.metadataClassificationClient.updateMetadata(vo.getList());
         } catch (Exception e) {
             e.printStackTrace();
             return R.data(false);

+ 27 - 12
blade-service/blade-archive/src/main/java/org/springblade/archive/controller/ArchiveInspectionController.java → blade-service/blade-archive/src/main/java/org/springblade/archive/controller/ArchiveInspectionInfoController.java

@@ -1,11 +1,15 @@
 package org.springblade.archive.controller;
 
+
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
+import org.springblade.archive.dto.ArchiveInspectionDTO;
 import org.springblade.archive.entity.ArchiveInspection;
+import org.springblade.archive.entity.ArchivesAuto;
 import org.springblade.archive.service.IArchiveInspectionService;
+import org.springblade.archive.service.IArchivesAutoService;
 import org.springblade.core.boot.ctrl.BladeController;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
@@ -13,11 +17,12 @@ import org.springframework.web.bind.annotation.*;
 
 @RestController
 @AllArgsConstructor
-@RequestMapping("/archiveInspection")
+@RequestMapping("/archiveInspectionInfo")
 @Api(value = "档案检查信息", tags = "档案检查信息")
-public class ArchiveInspectionController extends BladeController {
+public class ArchiveInspectionInfoController {
 
-    private IArchiveInspectionService archiveInspectionService;
+    private final IArchiveInspectionService archiveInspectionService;
+    private final IArchivesAutoService archivesAutoService;
 
     @GetMapping("/detail")
     @ApiOperationSupport(order = 2)
@@ -31,6 +36,16 @@ public class ArchiveInspectionController extends BladeController {
     @ApiOperationSupport(order = 3)
     @ApiOperation(value = "新增档案检查", notes = "传入archiveInspection")
     public R addArchiveInspection(@RequestBody ArchiveInspection archiveInspection) {
+
+        if (archiveInspection.getArchiveId() != null ) {
+            ArchivesAuto archivesAuto = archivesAutoService.getById(archiveInspection.getArchiveId());
+            if (archivesAuto!= null ) {
+                archiveInspection.setArchiveName(archivesAuto.getName());
+                archiveInspection.setProjectId(archivesAuto.getProjectId());
+                archiveInspection.setTenantId(AuthUtil.getTenantId());
+            }
+        }
+
         boolean success = archiveInspectionService.save(archiveInspection);
         return success ? R.success("新增成功") : R.fail("新增失败");
     }
@@ -47,20 +62,20 @@ public class ArchiveInspectionController extends BladeController {
     @ApiOperationSupport(order = 5)
     @ApiOperation(value = "修改档案检查", notes = "传入archiveInspection")
     public R submit(@RequestBody ArchiveInspection archiveInspection) {
-        return R.status(archiveInspectionService.saveOrUpdate(archiveInspection));
+        ArchiveInspection archiveInspectionMod = archiveInspectionService.getById(archiveInspection.getId());
+        if (archiveInspectionMod!= null ) {
+            archiveInspectionMod.setOpinion(archiveInspection.getOpinion());
+        }
+        return R.status(archiveInspectionService.saveOrUpdate(archiveInspectionMod));
     }
 
     @GetMapping("/opinion")
     @ApiOperationSupport(order = 6)
-    @ApiOperation(value = "获取抽检意见", notes = "传入fileId和userId")
-    public R<String> getOpinion(@RequestParam Long fileId) {
+    @ApiOperation(value = "获取抽检意见", notes = "传入fileId")
+    public R<ArchiveInspectionDTO> getOpinion(@RequestParam Long fileId) {
         Long userId = AuthUtil.getUserId();
-        ArchiveInspection archiveInspection = archiveInspectionService.getbyFileId(fileId, userId);
-        String opinion = "";
-        if (archiveInspection != null) {
-            opinion = archiveInspection.getOpinion();
-        }
-        return R.data(opinion);
+        ArchiveInspectionDTO archiveInspectionDTO = archiveInspectionService.getbyFileId(fileId, userId);
+        return R.data(archiveInspectionDTO);
     }
 
 }

+ 1 - 0
blade-service/blade-archive/src/main/java/org/springblade/archive/mapper/ArchiveInspectionMapper.xml

@@ -10,6 +10,7 @@
         <result column="opinion" property="opinion" />
         <result column="user_id" property="userId" />
         <result column="file_id" property="fileId" />
+        <result column="archive_id" property="archiveId" />
         <result column="archive_name" property="archiveName" />
     </resultMap>
     <!-- 示例:查询所有记录 -->

+ 2 - 1
blade-service/blade-archive/src/main/java/org/springblade/archive/service/IArchiveInspectionService.java

@@ -1,8 +1,9 @@
 package org.springblade.archive.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import org.springblade.archive.dto.ArchiveInspectionDTO;
 import org.springblade.archive.entity.ArchiveInspection;
 
 public interface IArchiveInspectionService extends IService<ArchiveInspection> {
-    ArchiveInspection getbyFileId(Long fileId, Long userId);
+    ArchiveInspectionDTO getbyFileId(Long fileId, Long userId);
 }

+ 17 - 13
blade-service/blade-archive/src/main/java/org/springblade/archive/service/impl/ArchiveAutoPdfServiceImpl.java

@@ -6,6 +6,7 @@ import com.fasterxml.jackson.databind.ObjectMapper;
 import com.itextpdf.text.Element;
 import com.itextpdf.text.pdf.*;
 import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang.StringUtils;
 import org.apache.poi.ss.usermodel.*;
 import org.apache.poi.util.IOUtils;
@@ -44,6 +45,7 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
+@Slf4j
 @Service
 @AllArgsConstructor
 public class ArchiveAutoPdfServiceImpl implements IArchiveAutoPdfService {
@@ -315,13 +317,16 @@ public class ArchiveAutoPdfServiceImpl implements IArchiveAutoPdfService {
             String coords = config.getCoords();
             String formula = config.getFormula();
 
-            if("Archive['startDate']~Archive['endDate']".equals(formula)){
+            /*if("Archive['startDate']~Archive['endDate']".equals(formula)){
                 Object archive = variables.get("Archive");
-                ArchivesAuto auto=(ArchivesAuto)archive;
-                if(auto.getStartDate()==null && auto.getEndDate()==null){
+                Map auto=(Map)archive;
+                log.info(auto.get("name")+"-时间调试 s:"+auto.get("startDate") +"e:"+auto.get("endDate"));
+                if((auto.get("startDate")==null || StringUtils.isEmpty(auto.get("startDate").toString()))
+                        && (auto.get("endDate")==null || StringUtils.isEmpty(auto.get("endDate").toString())))
+                {
                     formula="";
                 }
-            }
+            }*/
 
             if(variables.containsKey("ArchiveFile") && variables.get("ArchiveFile") instanceof List
                     && formula.indexOf("ArchiveFile") >= 0){
@@ -338,15 +343,6 @@ public class ArchiveAutoPdfServiceImpl implements IArchiveAutoPdfService {
         if (multiLineconfig != null) {
             String coords = multiLineconfig.getCoords();
             String formula = multiLineconfig.getFormula();
-
-            if("Archive['startDate']~Archive['endDate']".equals(formula)){
-                Object archive = variables.get("Archive");
-                ArchivesAuto auto=(ArchivesAuto)archive;
-                if(auto.getStartDate()==null && auto.getEndDate()==null){
-                    formula="";
-                }
-            }
-
             handleArchiveFile(coords, formula, variables, file_path, excelUrl, dataInfo,urls,fileName, archivesAuto.getProjectId());
 
         }else {
@@ -486,6 +482,14 @@ public class ArchiveAutoPdfServiceImpl implements IArchiveAutoPdfService {
 
 
         String key = config.getId() + "__" + dataVO.getY() + "_" + dataVO.getX();
+
+
+        if("Archive['startDate']~Archive['endDate']".equals(formula)){
+            log.info("起止时间object:"+object.toString());
+            if("null~null".equals(object)){
+                object="";
+            }
+        }
         dataInfo.put(key, object);
     }
 

+ 18 - 4
blade-service/blade-archive/src/main/java/org/springblade/archive/service/impl/ArchiveInspectionServiceImpl.java

@@ -3,10 +3,12 @@ package org.springblade.archive.service.impl;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import lombok.AllArgsConstructor;
+import org.springblade.archive.dto.ArchiveInspectionDTO;
 import org.springblade.archive.entity.ArchiveInspection;
 import org.springblade.archive.mapper.ArchiveInspectionMapper;
 import org.springblade.archive.service.IArchiveInspectionService;
 import org.springblade.core.mp.base.BaseServiceImpl;
+import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
@@ -16,18 +18,30 @@ import java.util.List;
 public class ArchiveInspectionServiceImpl extends BaseServiceImpl<ArchiveInspectionMapper, ArchiveInspection> implements IArchiveInspectionService {
     private ArchiveInspectionMapper archiveInspectionMapper;
 
-    public ArchiveInspection getbyFileId(Long fileId, Long userId){
+    public ArchiveInspectionDTO getbyFileId(Long fileId, Long userId){
 
         LambdaQueryWrapper<ArchiveInspection> queryWrapper = new LambdaQueryWrapper<>();
         queryWrapper.eq(ArchiveInspection::getFileId, fileId)
-                .eq(ArchiveInspection::getUserId, userId)
                 .eq(ArchiveInspection::getIsDeleted, 0);
         List<ArchiveInspection> archiveInspectionList = archiveInspectionMapper.selectList(queryWrapper);
         if(archiveInspectionList == null || archiveInspectionList.isEmpty()) {
             return null;
-        } else {
-            return archiveInspectionList.get(0);
         }
 
+        ArchiveInspectionDTO archiveInspectionDTO = new ArchiveInspectionDTO();
+        String allOpinion = "";
+        int count = 1;
+        for (ArchiveInspection archiveInspection : archiveInspectionList) {
+            if (archiveInspection.getUserId().equals(userId)) {
+                BeanUtils.copyProperties(archiveInspection, archiveInspectionDTO);
+            }
+            String opinion = archiveInspection.getOpinion();
+            if (opinion != null && !opinion.trim().isEmpty()) {
+                allOpinion += count + ". " + opinion.trim() + " ; ";
+                count++;
+            }
+        }
+        archiveInspectionDTO.setAllOpinion(allOpinion);
+        return archiveInspectionDTO;
     }
 }

+ 5 - 15
blade-service/blade-archive/src/main/java/org/springblade/archive/service/impl/ArchivesAutoServiceImpl.java

@@ -556,9 +556,7 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 		String treeCode = node.getTreeCode();
 		if(StringUtils.isEmpty(treeCode)){
 			//treeCode为null的是业主的节点
-			List<Long> pids = new ArrayList<>();
-			pids.add(node.getProjectId());
-			List<ContractInfo> contractInfos = contractClient.getContractByIds(pids);
+			List<ContractInfo> contractInfos = contractClient.getContractListByProjectId(node.getProjectId());
 			for(ContractInfo contract:contractInfos){
 				if(contract.getContractType()==3){
 					unit=contract.archivesUnit();
@@ -603,10 +601,8 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 				}
 				storageTime = nodeContract.getStoragePeriod().toString();
 			}else{
-				List<Long> pids= new ArrayList<>();
-				pids.add(archivesAuto.getProjectId());
 				if(contracts==null){
-					contracts = contractClient.queryContractListByIds(pids);
+					contracts = contractClient.getContractListByProjectId(archivesAuto.getProjectId());
 				}
 				for(ContractInfo c:contracts){
 					if(c.getContractType()==3){
@@ -632,10 +628,8 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 					secretLevel = nodeContract.getSecurityLevel().toString();
 				}
 			}else{
-				List<Long> pids= new ArrayList<>();
-				pids.add(archivesAuto.getProjectId());
 				if(contracts==null){
-					contracts = contractClient.queryContractListByIds(pids);
+					contracts = contractClient.getContractListByProjectId(archivesAuto.getProjectId());
 				}
 				for(ContractInfo c:contracts){
 					if(c.getContractType()==3){
@@ -661,10 +655,8 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 				}
 				rollor = nodeContract.getFiler();
 			}else{
-				List<Long> pids= new ArrayList<>();
-				pids.add(archivesAuto.getProjectId());
 				if(contracts==null){
-					contracts = contractClient.queryContractListByIds(pids);
+					contracts = contractClient.getContractListByProjectId(archivesAuto.getProjectId());
 				}
 				for(ContractInfo c:contracts){
 					if(c.getContractType()==3){
@@ -686,10 +678,8 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 				}
 				reviewer = nodeContract.getReviewer();
 			}else{
-				List<Long> pids= new ArrayList<>();
-				pids.add(archivesAuto.getProjectId());
 				if(contracts==null){
-					contracts = contractClient.queryContractListByIds(pids);
+					contracts = contractClient.getContractListByProjectId(archivesAuto.getProjectId());
 				}
 				for(ContractInfo c:contracts){
 					if(c.getContractType()==3){

+ 8 - 1
blade-service/blade-archive/src/main/java/org/springblade/archive/utils/FileUtils.java

@@ -7,6 +7,7 @@ import com.itextpdf.text.Element;
 import com.itextpdf.text.pdf.*;
 import com.sun.image.codec.jpeg.JPEGCodec;
 import com.sun.image.codec.jpeg.JPEGImageEncoder;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections4.ListUtils;
 import org.apache.commons.lang.StringUtils;
 import org.apache.poi.hssf.usermodel.HSSFPrintSetup;
@@ -45,7 +46,7 @@ import java.util.regex.Matcher;
 import java.util.zip.ZipEntry;
 import java.util.zip.ZipOutputStream;
 
-
+@Slf4j
 public class FileUtils {
     public static final String DOMAIN_REG = "https?://[^\\.]*\\.oss-cn-shenzhen\\.aliyuncs\\.com/";
 
@@ -447,7 +448,11 @@ public class FileUtils {
                         String suffix = url.substring(lastIndexOf + 1);
                         url = prefix + URLEncoder.encode(suffix, "UTF-8");
                     }
+                    long s = System.currentTimeMillis();
                     PdfReader pdfReader = new PdfReader(url);
+                    long e = System.currentTimeMillis();
+                    log.info("读取pdf耗时:"+(e-s));
+                    s = System.currentTimeMillis();
                     ByteArrayOutputStream out = new ByteArrayOutputStream();
                     PdfStamper pdfStamper = new PdfStamper(pdfReader, out);
                     int index = 1;
@@ -508,6 +513,8 @@ public class FileUtils {
                     }
 
                     out.close();
+                    e = System.currentTimeMillis();
+                    log.info("pdf打码耗时:"+(e-s));
                 } catch (Exception e) {
                     System.out.println(url + "文件不存在");
                     /*用来占位置空*/

+ 84 - 27
blade-service/blade-business/src/main/java/org/springblade/business/controller/InformationWriteQueryController.java

@@ -1653,17 +1653,27 @@ public class InformationWriteQueryController extends BladeController {
                         //更新redis缓存
                         informationQueryService.delAsyncWbsTree(contractId);
                     }
-                    String nodeName = vo.getNeedCopyNodeName();
+                    //拼接操作记录
+                    List<CopyContractTreeNodeVO.CopyBatch> list = vo.getCopyBatchToPaths();
+                    Set<String> titles = new HashSet<>();
+                    list.stream().forEach(l->titles.add(l.getTitle()));
                     StringBuilder addNames = new StringBuilder();
-                    addNames.append(nodeName+"-");
-                    addNames.append("[");
-                    for (WbsTreeContract node : toCopyNodes) {
-                        addNames.append(node.getNodeName() + "-");
+                    addNames.append("{");
+                    for (String title : titles) {
+                        addNames.append(title+"-[");
+                        for (CopyContractTreeNodeVO.CopyBatch li : list) {
+                            if (title.equals(li.getTitle())){
+                                addNames.append(li.getNodeName()+",");
+                            }
+                        }
+                        addNames.setLength(addNames.length()-1);
+                        addNames.append("],");
                     }
-                    String substring = addNames.substring(0, addNames.length() - 1);
-                    needCopyNodeRoot.setNodeName(substring + "]");
+                    addNames.setLength(addNames.length()-1);
+                    addNames.append("}");
+                    needCopyNodeRoot.setNodeName(addNames.toString());
 //                    return R.success("操作成功");
-                    return this.saveOrCopyNodeTree(addNodeList, null, 32, needCopyNodeRoot);
+                    return this.saveOrCopyNodeTree2(addNodeList, null, 32, needCopyNodeRoot);
                 } else {
                     throw new ServiceException("没有找到需要复制的节点信息,请联系管理员");
                 }
@@ -2552,25 +2562,25 @@ public class InformationWriteQueryController extends BladeController {
         //获取被删除节点名称
         //String nodeName = StringUtils.isNotEmpty(removeNode.getFullName()) ? removeNode.getFullName() : removeNode.getNodeName() + "," + removeNodeList.stream().map(wbs -> StringUtils.isNotEmpty(wbs.getFullName()) ? wbs.getFullName() : wbs.getNodeName()).collect(Collectors.joining());
 
-        //获取当前节点下所有填报节点
-        List<QueryProcessDataVO> queryProcess = new ArrayList<>();
-        if (!Arrays.asList("1,2,3,4".split(",")).contains(removeNode.getMajorDataType().toString())) {
-            queryProcess = this.informationQueryService.queryProcessDataByParentIdAndContractId(removeNode.getId().toString(), 1, removeNode.getContractId());
-            if (queryProcess == null || queryProcess.size() == 0) {
-                //填报节点
-                queryProcess = this.informationQueryService.queryProcessDataByPrimaryKeyIdAndClassify(removeNode.getPKeyId().toString(), 1);
-            }
-        }
-
-        if (queryProcess != null && queryProcess.size() > 0) {
-            //检查这些填报节点是否存在已经审批或已经上报的节点,如果存在则不允许删除
-            List<QueryProcessDataVO> approvalList = queryProcess.stream().filter(vo -> new Integer("2").equals(vo.getStatus()) && vo.getInformationQueryId() != null).collect(Collectors.toList());
-            List<QueryProcessDataVO> runTaskList = queryProcess.stream().filter(vo -> new Integer("1").equals(vo.getStatus()) && vo.getInformationQueryId() != null).collect(Collectors.toList());
-            if (approvalList.size() > 0 || runTaskList.size() > 0) {
-                //说明存在已经审批或已经上报的节点,不允许删除
-                return R.data(300, false, "存在已经上报或审批的节点,不允许删除");
-            }
-        }
+//        //获取当前节点下所有填报节点
+//        List<QueryProcessDataVO> queryProcess = new ArrayList<>();
+//        if (!Arrays.asList("1,2,3,4".split(",")).contains(removeNode.getMajorDataType().toString())) {
+//            queryProcess = this.informationQueryService.queryProcessDataByParentIdAndContractId2(removeNode.getId().toString(), 1, removeNode.getContractId());
+//            if (queryProcess == null || queryProcess.size() == 0) {
+//                //填报节点
+//                queryProcess = this.informationQueryService.queryProcessDataByPrimaryKeyIdAndClassify(removeNode.getPKeyId().toString(), 1);
+//            }
+//        }
+//
+//        if (queryProcess != null && queryProcess.size() > 0) {
+//            //检查这些填报节点是否存在已经审批或已经上报的节点,如果存在则不允许删除
+//            List<QueryProcessDataVO> approvalList = queryProcess.stream().filter(vo -> new Integer("2").equals(vo.getStatus()) && vo.getInformationQueryId() != null).collect(Collectors.toList());
+//            List<QueryProcessDataVO> runTaskList = queryProcess.stream().filter(vo -> new Integer("1").equals(vo.getStatus()) && vo.getInformationQueryId() != null).collect(Collectors.toList());
+//            if (approvalList.size() > 0 || runTaskList.size() > 0) {
+//                //说明存在已经审批或已经上报的节点,不允许删除
+//                return R.data(300, false, "存在已经上报或审批的节点,不允许删除");
+//            }
+//        }
 
         //保存操作记录
         List<String> idArray = JSONArray.parseArray(JSONObject.toJSONString(ids.split(",")), String.class);
@@ -2882,6 +2892,53 @@ public class InformationWriteQueryController extends BladeController {
         return R.data(false);
     }
 
+    @NotNull
+    private R<Boolean> saveOrCopyNodeTree2
+            (List<WbsTreeContract> saveList, List<ConstructionLedger> saveLedger, Integer
+                    operationType, WbsTreeContract currentNode) {
+
+        if (saveList.size() > 0) {
+//            StringBuilder str = new StringBuilder();
+//            str.append("-" + saveList.get(0).getFullName());
+            //保存施工日志
+            /*if (saveLedger.size() > 0) {
+                this.constructionLedgerService.saveBatch(saveLedger, 1000);
+                str.append("-[");
+                for (ConstructionLedger ledger : saveLedger) {
+                    str.append(ledger.getSite() + ",");
+                }
+                str.deleteCharAt(str.length() - 1);
+                str.append("]");
+            }*/
+
+            try {
+                //获取当前节点的所有父节点
+                List<WbsTreeContract> result = new ArrayList<>();
+                result.add(currentNode);
+                this.queryParentNode(currentNode, result);
+                StringBuilder pathName = new StringBuilder();
+                for (int i = 1, l = result.size()-1; i < l; i++) {
+                    WbsTreeContract node = result.get(result.size() - i);
+                    pathName.append("-").append(StringUtils.isNotEmpty(node.getFullName()) ? node.getFullName() : node.getNodeName());
+                }
+                pathName.append("-" + currentNode.getNodeName());
+                JSONObject json = new JSONObject();
+                json.put("operationObjIds", JSONArray.parseArray(JSONObject.toJSONString(saveList.stream().map(WbsTreeContract::getPKeyId).distinct().collect(Collectors.toList())), String.class));
+                json.put("operationObjName", pathName.substring(1));
+                //保存操作记录
+                this.operationLogClient.saveUserOperationLog(operationType, "资料管理", "工序资料", json);
+
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+            //保存节点(10s)
+            Boolean aBoolean = this.wbsTreeContractClient.saveBatch(saveList);
+            return R.data(aBoolean);
+        }
+
+        return R.data(false);
+    }
+
     private void queryParentNode(WbsTreeContract currentNode, List<WbsTreeContract> result) {
         WbsTreeContract parentNode = this.wbsTreeContractClient.getContractWbsTreeByContractIdAndId(currentNode.getParentId(), Long.parseLong(currentNode.getContractId()));
         if (parentNode != null) {

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

@@ -63,6 +63,11 @@ public interface IInformationQueryService extends BaseService<InformationQuery>
      */
     List<QueryProcessDataVO> queryProcessDataByParentIdAndContractId(String parentId, Integer classify, String contractId);
 
+    /**
+     * 查询工序节点的填报记录
+     */
+    List<QueryProcessDataVO> queryProcessDataByParentIdAndContractId2(String parentId, Integer classify, String contractId);
+
     /**
      * 查询工序节点的填报记录,简化
      */

+ 4 - 1
blade-service/blade-business/src/main/java/org/springblade/business/service/impl/ArchiveFileServiceImpl.java

@@ -117,8 +117,11 @@ public class ArchiveFileServiceImpl extends BaseServiceImpl<ArchiveFileMapper, A
         Collections.sort(listInt);
         for (int i = 0; i < list.size(); i++) {
             list.get(i).setSort(listInt.get(i));
-            if(list.get(i).getIsUpdateUrl() == 1) {
+            if(list.get(i).getIsUpdateUrl() != null && list.get(i).getIsUpdateUrl() == 1) {
                 ids.append(list.get(i).getId() + ",");
+                if(list.get(i).getRectification() != null && list.get(i).getRectification() == 1){
+                    list.get(i).setRectification(2);
+                }
             }
         }
         if(ids != null && ids.length()>0){

+ 6 - 0
blade-service/blade-business/src/main/java/org/springblade/business/service/impl/InformationQueryServiceImpl.java

@@ -148,6 +148,12 @@ public class InformationQueryServiceImpl extends BaseServiceImpl<InformationQuer
         }
         return result;
     }
+    //删除节点用
+    @Override
+    public List<QueryProcessDataVO> queryProcessDataByParentIdAndContractId2(String parentId, Integer classify, String contractId) {
+        List<QueryProcessDataVO> result = this.baseMapper.queryProcessDataByParentIdAndContractId(parentId, classify, contractId);
+        return result;
+    }
 
     //简化
     @Override

+ 0 - 13
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/WbsTreeContractController.java

@@ -157,19 +157,6 @@ public class WbsTreeContractController extends BladeController {
                 .eq(WbsTreeContract::getPKeyId, id).eq(WbsTreeContract::getIsDeleted, 0)));
     }
 
-    /**
-     * 同步项目下当前表的所有htmlUrl
-     */
-    @GetMapping("/syncCurrentFormInProject")
-    @ApiOperationSupport(order = 8)
-    @ApiOperation(value = "同步项目下当前表的所有htmlUrl", notes = "同步项目下当前表的所有htmlUrl")
-    @ApiImplicitParams(value = {
-            @ApiImplicitParam(name = "pKeyId", value = "主键id", required = true),
-    })
-    public R syncCurrentFormInProject(@RequestParam("pKeyId") Long pKeyId) {
-        iWbsTreeContractService.syncCurrentFormInProject(pKeyId);
-        return R.success("同步成功");
-    }
 
     /**
      * 资料填报 - 同步相同表数据(同一节点下,把施工表数据同步到监理表中)

+ 14 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/WbsTreePrivateController.java

@@ -692,4 +692,18 @@ public class WbsTreePrivateController extends BladeController {
         return R.status(true);
     }
 
+    /**
+     * 同步项目下当前表的所有htmlUrl
+     */
+    @GetMapping("/syncCurrentFormInProject")
+    @ApiOperationSupport(order = 8)
+    @ApiOperation(value = "同步项目下当前表的所有htmlUrl", notes = "同步项目下当前表的所有htmlUrl")
+    @ApiImplicitParams(value = {
+            @ApiImplicitParam(name = "pKeyId", value = "主键id", required = true),
+    })
+    public R syncCurrentFormInProject(@RequestParam("pKeyId") Long pKeyId) {
+        wbsTreePrivateService.syncCurrentFormInProject(pKeyId);
+        return R.success("同步成功");
+    }
+
 }

+ 6 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/feign/ContractClientImpl.java

@@ -80,5 +80,11 @@ public class ContractClientImpl implements ContractClient {
         return R.fail("保存失败");
     }
 
+    @Override
+    public List<ContractInfo> getContractListByProjectId(Long projectId) {
+        List<ContractInfo> list=contractInfoService.getContractListByProjectId(projectId);
+        return list;
+    }
+
 
 }

+ 1 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ContractInfoMapper.java

@@ -68,4 +68,5 @@ public interface ContractInfoMapper extends BaseMapper<ContractInfo> {
 
     List<TrialRecordZJTreeLazyVO> trialRelationTreeLazy(String projectId, String contractId, String wbsId, String id);
 
+    List<ContractInfo> getContractListByProjectId(Long projectId);
 }

+ 9 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ContractInfoMapper.xml

@@ -399,6 +399,15 @@
               1
     </select>
 
+
+    <select id="getContractListByProjectId" resultType="org.springblade.manager.entity.ContractInfo">
+        SELECT *
+        FROM m_contract_info
+        WHERE p_id = #{projectId}
+          AND is_deleted = 0
+          AND status = 1
+    </select>
+
     <select id="tree4" resultType="org.springblade.manager.vo.WbsTreeContractVO">
         SELECT
         d.*

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

@@ -86,5 +86,5 @@ public interface WbsTreeContractMapper extends EasyBaseMapper<WbsTreeContract> {
 
     Long getAllTableFileSize(@Param("projectId") Long projectId);
 
-    void syncCurrentFormInProject(@Param("node") WbsTreeContract node);
+    void syncCurrentFormToAllContract(@Param("wbsTreePrivate") WbsTreePrivate wbsTreePrivate);
 }

+ 3 - 3
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreeContractMapper.xml

@@ -608,10 +608,10 @@
             #{ids}
         </foreach>
     </update>
-    <update id="syncCurrentFormInProject">
+    <update id="syncCurrentFormToAllContract">
         UPDATE m_wbs_tree_contract
-        SET html_url = #{node.htmlUrl}
-        WHERE project_id = #{node.projectId} and excel_id = #{node.excelId}
+        SET html_url = #{wbsTreePrivate.htmlUrl} , init_table_name = #{wbsTreePrivate.initTableName}
+        WHERE project_id = #{wbsTreePrivate.projectId} and excel_id = #{wbsTreePrivate.excelId}
     </update>
 
     <select id="selectQueryValueLikeNodeName" resultMap="ResultMap">

+ 1 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreePrivateMapper.java

@@ -94,4 +94,5 @@ public interface WbsTreePrivateMapper extends EasyBaseMapper<WbsTreePrivate> {
 
     List<WbsTreePrivateVO5> treeRecordTrial(String wbsId, String projectId, Integer wbsType);
 
+    void syncCurrentFormInProject(@Param("wbsTreePrivate") WbsTreePrivate wbsTreePrivate);
 }

+ 5 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreePrivateMapper.xml

@@ -312,6 +312,11 @@
             where p_key_id = #{item.pKeyId}
         </foreach>
     </update>
+    <update id="syncCurrentFormInProject">
+        UPDATE m_wbs_tree_private
+        SET html_url = #{wbsTreePrivate.htmlUrl} , init_table_name = #{wbsTreePrivate.initTableName} , init_table_id = #{wbsTreePrivate.initTableId}
+        WHERE project_id = #{wbsTreePrivate.projectId} and excel_id = #{wbsTreePrivate.excelId}
+    </update>
 
     <select id="lazyTree" resultMap="treeNodeResultMap">
         SELECT

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

@@ -77,4 +77,5 @@ public interface IContractInfoService extends BaseService<ContractInfo> {
     List<WbsTreeContractVO> addNodeTree(String pKeyId);
 
 
+    List<ContractInfo> getContractListByProjectId(Long projectId);
 }

+ 3 - 2
blade-service/blade-manager/src/main/java/org/springblade/manager/service/IWbsTreeContractService.java

@@ -57,6 +57,7 @@ public interface IWbsTreeContractService extends BaseService<WbsTreeContract> {
     // 频率设计值  添加表单
     boolean addTabInfoByRan(RangeInfo info, List<Object> moreData, String[] excLenght) throws FileNotFoundException;
 
-    boolean syncTabData(String pKeyId) throws Exception;
-    void syncCurrentFormInProject(Long pKeyId);
+    boolean syncTabData(String pKeyId);
+
+    void syncCurrentFormToAllContract(WbsTreePrivate wbsTreePrivate);
 }

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

@@ -90,4 +90,5 @@ public interface IWbsTreePrivateService extends BaseService<WbsTreePrivate> {
 
     Map<String, List<Object>> treeRecordTrial(String wbsId, String projectId, String pKeyId);
 
+    void syncCurrentFormInProject(Long pKeyId);
 }

+ 6 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ContractInfoServiceImpl.java

@@ -204,6 +204,12 @@ public class ContractInfoServiceImpl extends BaseServiceImpl<ContractInfoMapper,
         return null;
     }
 
+    @Override
+    public List<ContractInfo> getContractListByProjectId(Long projectId) {
+        List<ContractInfo> list=contractInfoMapper.getContractListByProjectId(projectId);
+        return list;
+    }
+
     public List<WbsTreeContractVO> buildWbsTreeByStreamChildNodeTree(List<WbsTreeContractVO> nodes, WbsTreeContract parentNodeRoot) {
         List<WbsTreeContractVO> list = nodes.stream().filter(f -> f.getId().equals(parentNodeRoot.getId())).collect(Collectors.toList());
         Map<Long, List<WbsTreeContractVO>> map = nodes.stream().collect(Collectors.groupingBy(WbsTreeContractVO::getParentId));

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

@@ -546,9 +546,8 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
     }
 
     @Override
-    public void syncCurrentFormInProject(Long pKeyId) {
-        WbsTreeContract node = this.getOne(new LambdaQueryWrapper<WbsTreeContract>().eq(WbsTreeContract::getPKeyId, pKeyId));
-        baseMapper.syncCurrentFormInProject(node);
+    public void syncCurrentFormToAllContract(WbsTreePrivate wbsTreePrivate) {
+        baseMapper.syncCurrentFormToAllContract(wbsTreePrivate);
     }
 
     @Override

+ 7 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreePrivateServiceImpl.java

@@ -1767,6 +1767,13 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
         return null;
     }
 
+    @Override
+    public void syncCurrentFormInProject(Long pKeyId) {
+        WbsTreePrivate treePrivate = this.getOne(new LambdaQueryWrapper<WbsTreePrivate>().eq(WbsTreePrivate::getPKeyId,pKeyId));
+        baseMapper.syncCurrentFormInProject(treePrivate);
+        wbsTreeContractService.syncCurrentFormToAllContract(treePrivate);
+    }
+
     private List<WbsTreePrivateVO5> buildWbsTreeByStreamTrial(List<WbsTreePrivateVO5> wbsTreeVO2s) {
         List<WbsTreePrivateVO5> list = wbsTreeVO2s.stream().filter(f -> f.getParentId() == 0L).collect(Collectors.toList());
         Map<Long, List<WbsTreePrivateVO5>> map = wbsTreeVO2s.stream().collect(Collectors.groupingBy(WbsTreePrivateVO5::getParentId));