Browse Source

分部评定

zhuwei 1 tháng trước cách đây
mục cha
commit
cd16ed6668
32 tập tin đã thay đổi với 366 bổ sung71 xóa
  1. 7 1
      blade-ops-api/blade-resource-api/src/main/java/org/springblade/resource/entity/Oss.java
  2. 1 0
      blade-ops/blade-resource/src/main/java/org/springblade/resource/builder/oss/OssBuilder.java
  3. 1 0
      blade-ops/blade-resource/src/main/java/org/springblade/resource/builder/ossre/MinioTemplateRe.java
  4. 1 1
      blade-ops/blade-resource/src/main/java/org/springblade/resource/endpoint/LargeFileEndpoint.java
  5. 1 0
      blade-ops/blade-resource/src/main/java/org/springblade/resource/mapper/OssMapper.xml
  6. 9 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/feign/ExcelTabClient.java
  7. 5 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/feign/ExcelTabClientFallBack.java
  8. 11 4
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/EvaSummary.java
  9. 5 1
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/FB02.java
  10. 3 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/WbsTreeContractLazyVO.java
  11. 1 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/WtcEva.java
  12. 1 0
      blade-service-api/blade-user-api/src/main/java/org/springblade/system/user/vo/InformationQueryBIMVO.java
  13. 2 0
      blade-service/blade-archive/src/main/java/org/springblade/archive/mapper/TaskSplitMapper.java
  14. 8 0
      blade-service/blade-archive/src/main/java/org/springblade/archive/mapper/TaskSplitMapper.xml
  15. 13 7
      blade-service/blade-archive/src/main/java/org/springblade/archive/service/impl/TaskSplitServiceImpl.java
  16. 7 0
      blade-service/blade-business/src/main/java/org/springblade/business/service/impl/TaskServiceImpl.java
  17. 19 14
      blade-service/blade-e-visa/src/main/java/org/springblade/evisa/controller/ArchiveController.java
  18. 0 4
      blade-service/blade-e-visa/src/main/java/org/springblade/evisa/controller/EVController.java
  19. 7 1
      blade-service/blade-e-visa/src/main/java/org/springblade/evisa/utils/FileUtils.java
  20. 3 2
      blade-service/blade-manager/src/main/java/com/mixsmart/utils/CustomFunction.java
  21. 1 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/bean/TableInfo.java
  22. 21 6
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ExcelTabController.java
  23. 8 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/feign/ExcelTabClientImpl.java
  24. 3 1
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/IExcelTabService.java
  25. 72 8
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ExcelTabServiceImpl.java
  26. 131 11
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/FormulaServiceImpl.java
  27. 4 2
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeContractServiceImpl.java
  28. 1 1
      blade-service/blade-user/src/main/java/org/springblade/system/user/controller/WbsTreeController.java
  29. 1 1
      blade-service/blade-user/src/main/java/org/springblade/system/user/mapper/UserMapper.java
  30. 3 1
      blade-service/blade-user/src/main/java/org/springblade/system/user/mapper/UserMapper.xml
  31. 2 1
      blade-service/blade-user/src/main/java/org/springblade/system/user/service/IUserService.java
  32. 14 4
      blade-service/blade-user/src/main/java/org/springblade/system/user/service/impl/UserServiceImpl.java

+ 7 - 1
blade-ops-api/blade-resource-api/src/main/java/org/springblade/resource/entity/Oss.java

@@ -52,6 +52,13 @@ public class Oss extends TenantEntity {
      */
     @ApiModelProperty(value = "资源地址")
     private String endpoint;
+
+    /**
+     * oss地址
+     */
+    @ApiModelProperty(value = "资源地址")
+    private String transformEndpoint;
+
     /**
      * accessKey
      */
@@ -83,5 +90,4 @@ public class Oss extends TenantEntity {
     @ApiModelProperty(value = "备注")
     private String remark;
 
-
 }

+ 1 - 0
blade-ops/blade-resource/src/main/java/org/springblade/resource/builder/oss/OssBuilder.java

@@ -98,6 +98,7 @@ public class OssBuilder {
                 oss.setEndpoint("https://xinan1.zos.ctyun.cn");
             }
         }
+		oss.setEndpoint("https://xinan1.zos.ctyun.cn");
 		System.out.println("oss111="+oss.getEndpoint());
 		Oss ossCached = ossPool.get(tenantId);
 		OssTemplate template = templatePool.get(tenantId);

+ 1 - 0
blade-ops/blade-resource/src/main/java/org/springblade/resource/builder/ossre/MinioTemplateRe.java

@@ -483,6 +483,7 @@ public class MinioTemplateRe implements OssTemplateRe {
 	//	ossProperties.setEndpoint("http://183.247.216.148:9000");
 		//return ossProperties.getEndpoint();
 		return "http://183.247.216.148:9000";
+		//return "http://8.130.108.204:9000";
 	}
 
 

+ 1 - 1
blade-ops/blade-resource/src/main/java/org/springblade/resource/endpoint/LargeFileEndpoint.java

@@ -286,7 +286,7 @@ public class LargeFileEndpoint {
 
             if (param.getFilename().contains("pdf") || param.getFilename().contains("PDF")) {
                 try {
-                    PdfReader pdfReader = new PdfReader(inputStream);
+                    PdfReader pdfReader = new PdfReader(new FileInputStream(file1));
                     int pages = pdfReader.getNumberOfPages();
                     //获取文件页数
                     newBladeFile.setPage(pages);

+ 1 - 0
blade-ops/blade-resource/src/main/java/org/springblade/resource/mapper/OssMapper.xml

@@ -14,6 +14,7 @@
         <result column="oss_code" property="ossCode"/>
         <result column="category" property="category"/>
         <result column="endpoint" property="endpoint"/>
+        <result column="transform_endpoint" property="transformEndpoint"/>
         <result column="access_key" property="accessKey"/>
         <result column="secret_key" property="secretKey"/>
         <result column="bucket_name" property="bucketName"/>

+ 9 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/feign/ExcelTabClient.java

@@ -58,6 +58,15 @@ public interface ExcelTabClient {
                  @RequestParam String projectId,
                  @RequestHeader("Blade-Auth") String header) throws Exception;
 
+
+
+    @PostMapping(API_PREFIX + "/synPdfKeyInfo")
+    R synPdfKeyInfo(@RequestParam String contractId,
+                 @RequestParam String nodeIds,
+                 @RequestParam String classify,
+                 @RequestParam String projectId,
+                 @RequestHeader("Blade-Auth") String header) throws Exception;
+
     @PostMapping(API_PREFIX + "/getArchiveTabList")
     List<ExcelTab> getArchiveTabList();
 

+ 5 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/feign/ExcelTabClientFallBack.java

@@ -51,6 +51,11 @@ public class ExcelTabClientFallBack implements ExcelTabClient {
         return null;
     }
 
+    @Override
+    public R synPdfKeyInfo(String contractId, String nodeIds, String classify, String projectId, String header) throws Exception {
+        return null;
+    }
+
     @Override
     public List<ExcelTab> getArchiveTabList(){
         return null;

+ 11 - 4
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/EvaSummary.java

@@ -60,17 +60,24 @@ public abstract class EvaSummary<T> {
                     ));
 
             int index=1;
+            int pageSizex=0;
             for (Map.Entry<Integer, List<T>> entry : pages.entrySet()) {
                 /*每一页就是一条插入记录*/
                 int k = entry.getKey();
+
                 if (wtcList.size() <= k) {
                     break;
                 }
                 List<T> v = entry.getValue();
                 /*是否是最后一页,fb02最后一页汇总用到*/
                 boolean isLast=index==pages.size();
+                // 算出 每页大小
+                if(pageSizex<=0){
+                    pageSizex = v.size();
+                }
                 index++;
-                List<Object> l=this.fds.stream().map(fd->putEd(k,v,fd,datas,isLast)).collect(Collectors.toList());
+                int finalPageSizex = pageSizex;
+                List<Object> l=this.fds.stream().map(fd->putEd(finalPageSizex,k,v,fd,datas,isLast)).collect(Collectors.toList());
                 l.add(wtcList.get(k).getPKeyId());
                 params.add(l.toArray());
             }
@@ -79,8 +86,8 @@ public abstract class EvaSummary<T> {
         return false;
     }
 
-    /**把数据放到对应元素*/
-    private String putEd(int pn, List<T> items, FormData fd,List<T>datas,boolean isLastPage){
+    /**把数据放到对应元素(一页一行的添加)*/
+    private String putEd(int pageSize,int pn, List<T> items, FormData fd,List<T>datas,boolean isLastPage){
         BiFunction<List<T>,Integer,List<Object>> fc = this.fm.get(fd.getCode());
         if(fc!=null) {
             List<Object> data ;
@@ -93,7 +100,7 @@ public abstract class EvaSummary<T> {
                     data=Collections.singletonList("");
                 }
             }else {
-                data  = fc.apply(items,pn);
+                data  = fc.apply(items,pn*pageSize);
             }
             for (int i = 0; i < data.size(); i++) {
                 Coords c = fd.getCoordsList().get(i);

+ 5 - 1
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/FB02.java

@@ -6,9 +6,13 @@ import lombok.EqualsAndHashCode;
 import org.apache.commons.lang.StringUtils;
 import org.springblade.common.utils.BaseUtils;
 import org.springblade.core.tool.utils.Func;
+import org.springblade.core.tool.utils.IoUtil;
 import org.springblade.manager.dto.FormData;
 import org.springblade.manager.entity.FormulaDataBlock;
 
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.util.*;
@@ -56,7 +60,7 @@ public class FB02 extends EvaSummary<Item02>{
                   this.fm.put(fd.getCode(),(List<Item02> l,Integer pn)->l.stream().map(Item02::getSubItem).collect(Collectors.toList()));
               }else if(fd.getEName().contains("序号")){
                   this.sn=fd;
-                  this.fm.put(fd.getCode(),(List<Item02> l,Integer pn)->IntStream.range(0, l.size()).boxed().map(i->i+pn*l.size()+1).collect(Collectors.toList()));
+                  this.fm.put(fd.getCode(),(List<Item02> l,Integer pn)->IntStream.range(0, l.size()).boxed().map(i->i+pn+1).collect(Collectors.toList()));
               }else if(fd.getEName().contains("实测项目")){
                   this.name=fd;
                   this.fm.put(fd.getCode(),(List<Item02> l,Integer pn)->l.stream().map(Item02::getName).collect(Collectors.toList()));

+ 3 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/WbsTreeContractLazyVO.java

@@ -19,6 +19,9 @@ public class WbsTreeContractLazyVO implements Serializable {
     @JsonProperty(value = "pKeyId")
     private Long pKeyId;
 
+    @ApiModelProperty("pkeyId的节点父级id")
+    private Long pId;
+
     @ApiModelProperty("节点主键pKeyId别名,其他接口要用")
     private Long primaryKeyId;
 

+ 1 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/WtcEva.java

@@ -19,6 +19,7 @@ public class WtcEva {
     private String treeCode;
     private Long parentId;
     private Long pKeyId;
+    private Long pId;//pkeyid 的父级 id
     public boolean isEva(){
       return Objects.requireNonNull(this.nodeName, "nodeName不能为空").contains("评定");
   }

+ 1 - 0
blade-service-api/blade-user-api/src/main/java/org/springblade/system/user/vo/InformationQueryBIMVO.java

@@ -11,6 +11,7 @@ public class InformationQueryBIMVO {
 
     @TableField("id")
     private String id;
+
     @TableField("父级id")
     private String parentId;
 

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

@@ -45,4 +45,6 @@ public interface TaskSplitMapper extends BaseMapper<TaskSplit> {
 
 	// 获取分解任务是否存在
 	Integer getSpliteTaskCount(String contractId);
+
+	//Integer updateArchiveByIds(String contractId,);
 }

+ 8 - 0
blade-service/blade-archive/src/main/java/org/springblade/archive/mapper/TaskSplitMapper.xml

@@ -34,4 +34,12 @@
         select count(1) from u_task_split where contract_id = #{contractId} and type=2
     </select>
 
+<!--    <update id="updateArchiveByIds">
+        update u_archives_auto set status = 1 where contract_id = #{contractId} and id in
+        <foreach item="item" collection="ids" separator="," close=")" open="(" index="index">
+            #{item}
+        </foreach>
+    </update>-->
+
+
 </mapper>

+ 13 - 7
blade-service/blade-archive/src/main/java/org/springblade/archive/service/impl/TaskSplitServiceImpl.java

@@ -33,6 +33,7 @@ import javax.annotation.Resource;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 import java.util.Random;
 
@@ -73,7 +74,7 @@ public class TaskSplitServiceImpl extends BaseServiceImpl<TaskSplitMapper, TaskS
 			}
 
 			Random random = new Random();
-			int randomNumber = random.nextInt(11) + 10; // 生成10到20之间的随机数
+			int randomNumber = random.nextInt(30) + 150; // 生成10到20之间的随机数
 			int i = (int) Math.ceil(randomNumber * spliteTaskCount/60.0 );
 
 			Integer archiveCount = baseMapper.getArchiveCount(contractId);
@@ -85,18 +86,23 @@ public class TaskSplitServiceImpl extends BaseServiceImpl<TaskSplitMapper, TaskS
 			data.put("taskTime",i);
 		}else{ // 指定文件解析
 			taskSplit.setType(3);
-			String[] split = splitIds.split(",");
-			taskSplit.setToolCount(split.length);
+			//String[] split = splitIds.split(",");
+			List<String> split = Func.toStrList(splitIds);
+			taskSplit.setToolCount(split.size());
 			taskSplit.setFinished(0);
 
+			// 修改当前文件的状体
+			// baseMapper.updateArchiveByIds(contractId,splitIds);
+
+
 			Random random = new Random();
-			int randomNumber = random.nextInt(11) + 10; // 生成10到20之间的随机数
-			int i = (int) Math.ceil(randomNumber * split.length/60.0 );
-			data.put("fileCount",split.length);
+			int randomNumber = random.nextInt(30) + 150;// 生成10到20之间的随机数
+			int i = (int) Math.ceil(randomNumber * split.size()/60.0 );
+			data.put("fileCount",split.size());
 			data.put("taskTime",i);
 			LocalDateTime now = LocalDateTime.now();
 			DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd HH:mm:ss");
-			String formattedDateTime = now.format(formatter)+"_"+split.length+"条分解任务";
+			String formattedDateTime = now.format(formatter)+"_"+split.size()+"条分解任务";
 			taskSplit.setTaskName(formattedDateTime);
 		}
 

+ 7 - 0
blade-service/blade-business/src/main/java/org/springblade/business/service/impl/TaskServiceImpl.java

@@ -2048,6 +2048,11 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
 
                     }
 
+                    /*if(type == 3 && task.getApprovalType()== 9){
+
+                        result = excelTabClient.synPdfKeyInfo(contractId, task.getFormDataId(), classify, projectId, header);
+
+                    }else*/
                     if (type == 1) {
                         //重新保存
                         long startTime_1 = System.currentTimeMillis();
@@ -2150,6 +2155,8 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
         return excelTabClient.synPDFInfo(contractId, nodePKeyIds, classify, projectId, header);
     }
 
+
+
     /**
      * 返回true代表满足条件 是超级管理员并且部门是在泓创智诚下面的部门
      */

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

@@ -160,7 +160,6 @@ public class ArchiveController {
         }
     }
 
-
     @Scheduled(cron = "0/30 * * * * ?")
     public void SplitPdfInfo() {
         //执行代码
@@ -168,7 +167,7 @@ public class ArchiveController {
         log.info("分解html开始");
         String sql = "select  * from u_archives_split_info where status =2 "; // and TIMESTAMPDIFF(MINUTE, create_time, NOW()) >=3";
         List<ArchivesSplitInfoVO> query = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(ArchivesSplitInfoVO.class));
-
+        log.info("分解html开始==="+query.size());
         if (query != null && query.size() >= 1) {
             for (ArchivesSplitInfoVO dataInfo : query) {
                 if (executor.getQueue().size() <= 10) {
@@ -198,6 +197,7 @@ public class ArchiveController {
 
     public void signTaskBatchpng(ArchivesSplitInfoVO taskSign) {
         try {
+            System.out.println("分解001");
             String archiveId = taskSign.getArchiveId();
             String fileUlr = taskSign.getFileUrl();
             String firstPage = FileUtils.getSysLocalFileUrl() + "archiveSplit/";
@@ -209,7 +209,7 @@ public class ArchiveController {
             int bkb = 0 ;
             //将imagePath 的数据转成一个可解析的html
             String htmlUrl = pngToHtml(firstPage, archiveId,taskSign.getFirstFileUrl());
-
+            System.out.println("分解002="+htmlUrl);
 
             if (htmlUrl.indexOf("_001.html") >= 0 && htmlUrl.indexOf("archiveSplit") >= 0) {
                 String htmlString = IoUtil.readToString(new FileInputStream(htmlUrl));
@@ -261,7 +261,7 @@ public class ArchiveController {
                     // 分解文件
                     String fmlUrl = FileUtils.getSysLocalFileUrl() + "archiveSplit/"+archiveId+"_cf_00"+i+".pdf";
                     getPdfByPage(startYm,endYm,fileUlr,fmlUrl);
-                    saveDataToMysql(fmlUrl,wjtm,taskSign.getId(),endYm-startYm+1,i,zrz);
+                    saveDataToMysql(fmlUrl,wjtm,taskSign.getId(),endYm-startYm+1,i,zrz,rq);
                     bkb =  endYm ;
                 }
             } else {
@@ -271,30 +271,31 @@ public class ArchiveController {
             // 添加封面信息
             String fmlUrl = FileUtils.getSysLocalFileUrl() + "archiveSplit/"+archiveId+"_fm_001.pdf";
             getPdfByPage(1,1,fileUlr,fmlUrl);
-            saveDataToMysql(fmlUrl,"封面",taskSign.getId(),1,-4,dutyUser);
+            saveDataToMysql(fmlUrl,"封面",taskSign.getId(),1,-4,dutyUser,"");
 
             // 卷内目录
             String jnmuUrl = FileUtils.getSysLocalFileUrl() + "archiveSplit/"+archiveId+"_jnml_001.pdf";
             getPdfByPage(baseStart,basePage,fileUlr,jnmuUrl);
-            saveDataToMysql(jnmuUrl,"卷内目录",taskSign.getId(),1,-3,dutyUser);
+            saveDataToMysql(jnmuUrl,"卷内目录",taskSign.getId(),1,-3,dutyUser,"");
 
             // 卷内备考表
             String jnbkbUrl = FileUtils.getSysLocalFileUrl() + "archiveSplit/"+archiveId+"_jnbkb_001.pdf";
             getPdfByPage(bkb+1,bkb+1,fileUlr,jnbkbUrl);
-            saveDataToMysql(jnbkbUrl,"卷内备考表",taskSign.getId(),1,100,dutyUser);
+            saveDataToMysql(jnbkbUrl,"卷内备考表",taskSign.getId(),1,100,dutyUser,"");
 
             // 背脊表
             String bjbUrl = FileUtils.getSysLocalFileUrl() + "archiveSplit/"+archiveId+"_beiji_001.pdf";
             String bjbUrlPng = FileUtils.getSysLocalFileUrl() + "archiveSplit/"+archiveId+"_beiji_001.png";
+
             getPdfByPage(bkb+2,bkb+2,fileUlr,bjbUrl);
 
-            File bgImgFile = new File(bjbUrl);
+            File bgImgFile = new File(bjbUrlPng);
             if (!bgImgFile.exists()) {
                 savePdfAsImage(1, bjbUrl, bjbUrlPng);
             }
-            String state = OcrTitle(bjbUrl,"3");
+            String state = OcrTitle(bjbUrlPng,"3");
             if(state.equals("1")){
-                saveDataToMysql(jnbkbUrl,"背脊表",taskSign.getId(),1,101,dutyUser);
+                saveDataToMysql(bjbUrl,"背脊表",taskSign.getId(),1,101,dutyUser,"");
             }
             bgImgFile.delete();
 
@@ -312,6 +313,10 @@ public class ArchiveController {
             jdbcTemplate.execute(taxkSql);
             jdbcTemplate.execute(taxkSql2);
 
+            // 删除html
+            File fileHtml = new File(fmlUrl);
+            fileHtml.delete();
+
             // 修改完成情况
             RedisTemplate.delete("splithtml-" + archiveId);
         } catch (Exception e) {
@@ -333,6 +338,7 @@ public class ArchiveController {
                     new InputStreamReader(process.getInputStream()));
             String htmlUrl;
             while ((htmlUrl = reader.readLine()) != null) {
+                System.out.println(htmlUrl);
                 if (htmlUrl.indexOf("html文件路径") >= 0 && htmlUrl.indexOf("_001.html") >= 0 && htmlUrl.indexOf("archiveSplit") >= 0) {
                     lasHhtmlUrl = htmlUrl.replace("html文件路径", "");
                 }
@@ -350,7 +356,7 @@ public class ArchiveController {
         }
     }
 
-    public String OcrTitle(String fileUrl, String type) {
+    public static String OcrTitle(String fileUrl, String type) {
         String lasHhtmlUrl = "";
         try {
             // 定义Python解释器路径和脚本路径
@@ -445,8 +451,7 @@ public class ArchiveController {
         }
     }
 
-    public int saveDataToMysql(String upFileUrl,String fileName,String fileId,int filePage,int sort,String dutyUser) {
-
+    public int saveDataToMysql(String upFileUrl,String fileName,String fileId,int filePage,int sort,String dutyUser,String fileTime) {
         // 获取封面信息
         long newPkId = SnowFlakeUtil.getId(); //主键Id
         File fmfile = new File(upFileUrl);
@@ -459,7 +464,7 @@ public class ArchiveController {
                         " drawing_no,cite_change_number,certification_time,e_visa_file,node_ext_id,file_type,archive_id,origin_id,filming_time,filmingor_time,tag_id,pic_code,refer_code,film_code,width,height,ftime,utime,del_time,sort,box_name,box_number,is_auto_file,is_archive,page_num, " +
                         " file_size,source_type,is_element,pdf_page_url,fid,rectification,classify,m_wbs_tree_contract_p_key_id,u_image_classification_file_id,archive_file_storage_type,node_tree_structure,date_name,archive_file_stroage_type,out_id,sort_num " +
                         "   ) " +
-                        " SELECT "+newPkId+",project_id,contract_id,node_id,file_number,'" + fileName + "',file_time,'" + FmPdfUrl + "','" + FmPdfUrl + "',"+filePage+",is_approval,is_certification,is_need_certification,'"+dutyUser+"',create_user,create_dept,create_time,update_user,update_time,status,is_deleted,sheet_type,sheet_source, " +
+                        " SELECT "+newPkId+",project_id,contract_id,node_id,file_number,'" + fileName + "','"+fileTime+"','" + FmPdfUrl + "','" + FmPdfUrl + "',"+filePage+",is_approval,is_certification,is_need_certification,'"+dutyUser+"',create_user,create_dept,create_time,update_user,update_time,status,is_deleted,sheet_type,sheet_source, " +
                         "        drawing_no,cite_change_number,certification_time,e_visa_file,node_ext_id,file_type,archive_id,origin_id,filming_time,filmingor_time,tag_id,pic_code,refer_code,film_code,width,height,ftime,utime,del_time,"+sort+",box_name,box_number,is_auto_file,is_archive,page_num, " +
                         "        file_size,source_type,is_element,pdf_page_url,fid,rectification,classify,m_wbs_tree_contract_p_key_id,u_image_classification_file_id,archive_file_storage_type,node_tree_structure,date_name,archive_file_stroage_type,out_id,sort_num " +
                         " from u_archive_file where id=" + fileId;

+ 0 - 4
blade-service/blade-e-visa/src/main/java/org/springblade/evisa/controller/EVController.java

@@ -103,10 +103,6 @@ public class EVController {
                                 try {
                                     /*===============执行批量任务===============*/
                                     evDataService.signTaskBatch(dataInfo);
-                                    System.out.println("队列数量" + executor.getQueue().size());
-                                    System.out.println("活跃数量" + executor.getActiveCount());
-                                    System.out.println("总共数量" + executor.getTaskCount());
-                                    System.out.println("完成数量" + executor.getCompletedTaskCount());
                                 } catch (Exception e) {
                                     e.printStackTrace();
                                 }

+ 7 - 1
blade-service/blade-e-visa/src/main/java/org/springblade/evisa/utils/FileUtils.java

@@ -108,7 +108,13 @@ public class FileUtils {
             if (url.isEmpty() || url.equals("")) {
                 return "0";
             }
-            InputStream pdfInputStream = CommonUtil.getOSSInputStream(url);
+            File file1 = new File(url);
+            InputStream pdfInputStream;
+            if(file1.exists()){
+                pdfInputStream = new FileInputStream(file1);
+            }else{
+                pdfInputStream = CommonUtil.getOSSInputStream(url);
+            }
             //获取这份文件的页数并设置签章策略
             //获取PDF文件
             PDDocument document = PDDocument.load(pdfInputStream);

+ 3 - 2
blade-service/blade-manager/src/main/java/com/mixsmart/utils/CustomFunction.java

@@ -37,7 +37,7 @@ import static java.math.BigDecimal.ROUND_HALF_UP;
 
 
 /**
- * @author yangyj
+ * @author yangyjT(com.mixsmart.utils.CustomFunction).dateAfter(T(com.mixsmart.utils.CustomFunction).dateMax(E['m_20220928150650_1575019183173795840:key_9']),28)
  */
 public class CustomFunction {
 
@@ -450,13 +450,14 @@ public class CustomFunction {
             List<String> result = new ArrayList<>();
             if(ListUtils.isNotEmpty(dateList)&&ListUtils.isNotEmpty(offSet)){
                 for(int i=0;i<dateList.size();i++){
-                    String d= dateList.get(i);
+                    String d= dateList.get(i).replaceAll("[\"']", "");;
                     if(StringUtils.isNotEmpty(d)) {
                         if(d.contains(",")){
                             String[] arr=d.replaceAll("[\\[\\]\\s]+","").split(",");
                             d=arr[arr.length-1];
                         }
                         Integer n = StringUtils.handObj2Integer(offSet.size() > i ? offSet.get(i) : offSet.getLast());
+                        // 日期需要正确的格式,需要判断
                         DateTime dt = new DateTime(d);
                         dt.offset(DateField.HOUR_OF_DAY, 24 * n);
                         result.add(dt.toString(DatePattern.CHINESE_DATE_PATTERN));

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

@@ -23,6 +23,7 @@ public class TableInfo {
     private String contractId;
     private String classify;
     private String projectId;
+    private String isTypePrivatePid; //用于判断操作
     private String groupId = "0";
     // 用于实验
     private String testGroupId = "0";

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

@@ -600,9 +600,7 @@ public class ExcelTabController extends BladeController {
                         if (titleName.equals(ysName)) {
                             lastName = elementInfo.getEName();
                             attrInfo = elementInfo.getEKey() + "__" + i + "_" + j;
-
                             filedType = WbsElementUtil.getInitTableFiledType(elementInfo.getEType());
-
                             filedLength = elementInfo.getELength().toString();
 
                             maxScore = 100;
@@ -1981,6 +1979,15 @@ public class ExcelTabController extends BladeController {
             dataArray.add(dataInfo);
         }
 
+        String singnType ="2";
+        if(dataInfo.containsKey("signType")){
+            singnType=dataInfo.getString("signType");
+        } else {
+            singnType = "";
+        }
+
+      //  dataInfo.getJSONObject("dataInfo").getJSONArray("orderList");
+
         JSONObject tableInfo1 = dataArray.getJSONObject(0);
         String nodeId = tableInfo1.getString("nodeId");
         String contractId = tableInfo1.getString("contractId");
@@ -2014,7 +2021,7 @@ public class ExcelTabController extends BladeController {
         }
         executionTime.info("----公式填充执行完毕----");
         //保存数据到数据库
-        R<Object> result = this.excelTabService.saveOrUpdateInfo(tableInfoList);
+        R<Object> result = this.excelTabService.saveOrUpdateInfo(tableInfoList,singnType);
         RandomNumberHolder.RandomTemplateTypeclear();
         RandomNumberHolder.RandomWbsTreeContractclear();
         executionTime.info("----数据保存结束----");
@@ -2024,15 +2031,21 @@ public class ExcelTabController extends BladeController {
         executionTime.info("----数据合并前----");
         List<String> errorPKeyIds = new ArrayList<>();
         //单个pdf加载
+        tableInfoList = (List<TableInfo>) result.getData();
         if (tableInfoList != null) {
+            String finalSingnType = singnType;
             tableInfoList.parallelStream().forEach(tableInfo -> {
                 R bussPdfInfo = null;
                 try {
-                    bussPdfInfo = excelTabService.getBussPdfInfo(Long.parseLong(tableInfo.getPkeyId()));
+                    if(finalSingnType.equals("1") && tableInfo.getProjectId().equals("1630011899725201410") && (tableInfo.getIsTypePrivatePid().equals("1559714325173080065") || tableInfo.getIsTypePrivatePid().equals("1559479719236702210") )){
+                        System.out.println("12312312");
+                    }else{
+                        bussPdfInfo = excelTabService.getBussPdfInfo(Long.parseLong(tableInfo.getPkeyId()));
+                    }
                 } catch (Exception e) {
                     e.printStackTrace();
                 }
-                if (ObjectUtil.isEmpty(bussPdfInfo) || bussPdfInfo.getCode() != 200) {
+                if (bussPdfInfo!=null && (ObjectUtil.isEmpty(bussPdfInfo) || bussPdfInfo.getCode() != 200)) {
                     //如果返回的单张pdfUrl为空,那么表示发生异常,返回异常信息
                     errorPKeyIds.add(tableInfo.getPkeyId());
                 }
@@ -2265,7 +2278,7 @@ public class ExcelTabController extends BladeController {
         //公式填充
         this.excelTabService.formulaFillData(tableInfoList, Long.parseLong(nodeId), ExecuteType.INSPECTION);
         //保存数据到数据库
-        R<Object> result = this.excelTabService.saveOrUpdateInfo(tableInfoList);
+        R<Object> result = this.excelTabService.saveOrUpdateInfo(tableInfoList,"");
         if (!result.isSuccess()) {
             R.fail(result.getMsg());
             return;
@@ -4544,11 +4557,13 @@ public class ExcelTabController extends BladeController {
                         obj.put("projectId", projectId);
                         obj.put("isCollapseLoad", true);
                         obj.put("isRenderForm", true);
+                        obj.put("isTypePrivatePid", tab.getIsTypePrivatePid());
                         array.add(obj);
                     }
                 }
                 js2.put("orderList", array);
                 js.put("dataInfo", js2);
+                js.put("signType", "1");
                 this.saveBussData2(js);
             }
         } catch (Exception e) {

+ 8 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/feign/ExcelTabClientImpl.java

@@ -38,6 +38,7 @@ import org.springblade.manager.service.IWbsTreePrivateService;
 import org.springblade.manager.utils.ExcelInfoUtils;
 import org.springblade.manager.utils.FileUtils;
 import org.springblade.manager.utils.RandomNumberHolder;
+import org.springblade.manager.vo.AppWbsTreeContractVO;
 import org.springblade.manager.vo.TrialSelfDataRecordVO1;
 import org.springblade.resource.feign.NewIOSSClient;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -884,4 +885,11 @@ public class ExcelTabClientImpl implements ExcelTabClient {
         return R.data(resultMapList);
     }
 
+    @Override
+    public R synPdfKeyInfo(String contractId, String nodeIds, String classify, String projectId, String authorization) throws Exception {
+
+        excelTabService.synPdfKeyInfo(nodeIds, classify, contractId, projectId);
+        return R.success("成功");
+    }
+
 }

+ 3 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/service/IExcelTabService.java

@@ -106,7 +106,7 @@ public interface IExcelTabService extends BaseService<ExcelTab> {
     /**
      * 结果信息持久化
      */
-    R<Object> saveOrUpdateInfo(List<TableInfo> tableInfoList) throws SQLException;
+    R<Object> saveOrUpdateInfo(List<TableInfo> tableInfoList,String singType) throws SQLException;
 
     Map<String, String> getTablbCols(String pkeyid, String colkey) throws FileNotFoundException;
 
@@ -122,6 +122,8 @@ public interface IExcelTabService extends BaseService<ExcelTab> {
     // 多个pdf 合并
     void getBussPdfs(String nodeId, String classify, String contractId, String projectId) throws Exception;
 
+    void synPdfKeyInfo(String nodeId, String classify, String contractId, String projectId) throws Exception;
+
     // 试验
 
     /**

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

@@ -1207,7 +1207,8 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
     }
 
     @Override
-    public R<Object> saveOrUpdateInfo(List<TableInfo> tableInfoList) {
+    public R<Object> saveOrUpdateInfo(List<TableInfo> tableInfoList,String sigType) {
+        List<TableInfo> tableInfoList2 = new ArrayList<>();
         String fileName1="";
         if (ListUtils.isNotEmpty(tableInfoList)) {
             //施工资料填报
@@ -1221,6 +1222,8 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
                     if (wbsTreeContract == null) {
                         continue;
                     }
+                    tableInfo.setIsTypePrivatePid(wbsTreeContract.getExcelId()+"");
+                    tableInfoList2.add(tableInfo);
                     pkids += tableInfo.getPkeyId() + ",";
                     String tabName = wbsTreeContract.getInitTableName();
                     // 判读修改还是 添加
@@ -1276,9 +1279,14 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
                         sb.append(tableInfo.getPkeyId());sb.append(",");sb.append(user.getUserId());
                         sb.append(","); sb.append("SYSDATE()");sb.append(",\"");sb.append(sqlInfoNew);
                         sb.append("\")");
-                        jdbcTemplate.execute(delSql);
-                        jdbcTemplate.execute(sqlInfo);
-                        jdbcTemplate.execute(sb.toString());
+
+                        if(sigType.equals("1") && wbsTreeContract.getProjectId().equals("1630011899725201410") && (tableInfo.getIsTypePrivatePid().equals("1559714325173080065") || tableInfo.getIsTypePrivatePid().equals("1559479719236702210") )){
+                            System.out.println("123");
+                        }else{
+                            jdbcTemplate.execute(delSql);
+                            jdbcTemplate.execute(sqlInfo);
+                            jdbcTemplate.execute(sb.toString());
+                        }
                         transactionManager1.commit(transactionStatus);
                     } catch (Exception e) {
                         transactionManager1.rollback(transactionStatus);
@@ -1327,7 +1335,8 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
                 return R.fail(reason(log.toString()));
             }
         }
-        return R.success(fileName1);
+       return R.data(tableInfoList2);
+       // return R.success(fileName1);
     }
 
     public String reason(String log) {
@@ -2110,7 +2119,8 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
             Document doc = Jsoup.parse(htmlString);
             Element table = doc.select("table").first();
             //计算填报率
-            List<String> keyList = table.getElementsByAttribute("v-model").stream()
+            List<String> keyList = table.getElementsByAttribute("keyname")
+                    .stream()
                     .map(l -> {
                         String attr = l.attr("v-model");
                         System.out.println(attr);
@@ -2288,10 +2298,36 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
                     }
                 }
             }
+
+
             // 组装电签设置
             Elements dqids = table.getElementsByAttribute("dqid");
+            // 电签组装2
+            String tableName = wbsTreeContract.getInitTableName();
+            String dqSql = "select * from u_sign_key_role_info where tab_en_name='"+tableName+"'";
+            List<Map<String, Object>> mapList = jdbcTemplate.queryForList(dqSql);
+
+            if(mapList!=null && mapList.size()>0){
+                for(Map<String, Object> map : mapList) {
+                    Elements elementsBy = table.getElementsByAttributeValueStarting("keyname", map.get("e_key") + "");
+                    if(elementsBy!=null && elementsBy.size()>0){
+                        for(Element element : elementsBy){
+                            element.attr("sign_type", "✹"+map.get("id"));
+                            dqids.add(element);
+                        }
+                    }
+
+                }
+            }
+
             for (Element element : dqids) {
-                String dqid = element.attr("dqid");
+                String dqid="";
+                if(element.hasAttr("sign_type")){
+                    dqid = element.attr("sign_type");
+                }else{
+                    dqid = element.attr("dqid");
+                }
+
                 Elements x11 = element.getElementsByAttribute("x1");
                 if (x11 != null && x11.size() >= 1) {
                     Element element1 = x11.get(x11.size() - 1);
@@ -2355,6 +2391,7 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
                     }
                 }
             }
+
         }
 
         //输出流
@@ -2460,7 +2497,9 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
             //资料填报原始pdf合并
             FileUtils.mergePdfPublicMethods(data, listPdf);
             BladeFile bladeFile = this.newIOSSClient.uploadFile(nodeId + ".pdf", listPdf);
-
+            if(bladeFile == null){
+                System.out.println("Oss上传失败");
+            }
             //获取当前填报节点sort
             System.out.println("pdfs__"+listPdf+"___"+bladeFile);
             WbsTreeContract wbsTreeContract = wbsTreeContractService.getBaseMapper().selectOne(Wrappers.<WbsTreeContract>lambdaQuery().eq(WbsTreeContract::getPKeyId, nodeId));
@@ -5004,4 +5043,29 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
         }
     }
 
+    @Override
+    public void synPdfKeyInfo(String nodeId, String classify, String contractId, String projectId) throws Exception {
+        // 获取有权限的节点信息
+        List<AppWbsTreeContractVO> wbsTreeContractList = wbsTreeContractService.searchNodeAllTable(nodeId, classify, contractId, projectId, null);
+        List<String> data = new ArrayList<>();
+        if (nodeId.indexOf(":") >= 0) {
+            nodeId = nodeId.split(":")[0];
+        }
+        if (wbsTreeContractList != null && wbsTreeContractList.size() >= 1) {
+            for (WbsTreeContract wbsInfo : wbsTreeContractList) {
+                // 隐藏的不生成pdf
+                if (StringUtils.isNotEmpty(wbsInfo.getPdfUrl())) {
+                    data.add(wbsInfo.getPdfUrl());
+                } else {
+                    R bussPdfInfo = this.getBussPdfInfo(wbsInfo.getPKeyId());
+                    if (bussPdfInfo.getCode() == 200) {
+                        if (StringUtils.isNotBlank(bussPdfInfo.getData() + "")) {
+                            data.add(bussPdfInfo.getData() + "");
+                        }
+                    }
+                }
+            }
+        }
+        //
+    }
 }

+ 131 - 11
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/FormulaServiceImpl.java

@@ -50,10 +50,7 @@ import org.springblade.manager.mapper.FormulaMapper;
 import org.springblade.manager.mapper.WbsTreeContractMapper;
 import org.springblade.manager.mapper.WbsTreePrivateMapper;
 import org.springblade.manager.service.*;
-import org.springblade.manager.utils.AmountToChineseConverter;
-import org.springblade.manager.utils.FileUtils;
-import org.springblade.manager.utils.PeriodContractUtil;
-import org.springblade.manager.utils.RandomNumberHolder;
+import org.springblade.manager.utils.*;
 import org.springblade.manager.vo.*;
 import org.springblade.meter.entity.*;
 import org.springblade.meter.feign.*;
@@ -95,6 +92,8 @@ import java.util.stream.Collectors;
 import java.util.stream.IntStream;
 import java.util.stream.Stream;
 
+import static org.springblade.manager.utils.TableCoordinates.*;
+
 /**
  * @author yangyj
  * @Date 2022/6/9 14:29
@@ -335,7 +334,7 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
             if (tec.getTableAll().stream().anyMatch(e -> StringUtils.isEquals(e.getTableType(), 5))) {
                 /*评定节点*/
                 FormulaDataBlock fdb = findFdb(tec);
-                if (!StringUtils.isEquals("[]", fdb.getVal())) {
+                if (!StringUtils.isEquals("[]", fdb.getVal())) { //不等于[]
                     List<ElementBlock> elementBlockList = JSON.parseArray(fdb.getVal(), ElementBlock.class);
                     Map<String, Map<String, Set<Long>>> traceMap = new HashMap<>();
                     Map<String, List<ElementBlock>> tableElementMap = new HashMap<>();
@@ -5444,8 +5443,8 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
         if (StringUtils.isNumber(pkeyId)) {
             /*节点信息*/
             WtcEva wtcEva = this.getSqlOne(
-                    "select b.tree_code treeCode ,a.contract_id contractId,a.init_table_name initTableName,a.html_url htmlUrl ,a.node_name nodeName ,a.parent_id parentId " +
-                            "from m_wbs_tree_contract a join m_wbs_tree_contract b on (a.parent_id=b.id and a.contract_id=b.contract_id) where a.p_key_id ="
+                    "select b.p_id as PId,b.tree_code treeCode ,a.contract_id contractId,a.init_table_name initTableName,a.html_url htmlUrl ,a.node_name nodeName ,a.parent_id parentId " +
+                            "from m_wbs_tree_contract a join m_wbs_tree_contract b on (a.p_id=b.p_key_id and a.contract_id=b.contract_id) where a.p_key_id ="
                             + pkeyId, WtcEva.class);
             try {
                 if (wtcEva.isEva()) {
@@ -5456,11 +5455,13 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
                         FB02 fb02 = new FB02(processFds);
                         if (fb02.checked()) {
                             /*swId是分项评定的父节点Id*/
-                            List<FormulaDataBlock> formulaDataBlocks = this.getSqlList("select a.id,a.type,a.sw_id swId,a.contract_id contractId,a.val from m_formula_data_block a join (select parent_id from m_wbs_tree_contract where tree_code like '" + treeCode.getLast() + "%' and contract_id =" + wtcEva.getContractId() + " and major_data_type=2 and is_deleted=0 ORDER BY tree_code)b on a.sw_id=b.parent_id ", FormulaDataBlock.class);
-                            if (formulaDataBlocks != null && formulaDataBlocks.size() > 0) {
 
-                                /*就是分项工程节点的父节点名称*/
+                          ///  List<FormulaDataBlock> formulaDataBlocks = this.getSqlList("select DISTINCT a.id,a.type,a.sw_id swId,a.contract_id contractId,a.val from m_formula_data_block a,m_wbs_tree_contract b where a.sw_id=b.parent_id and b.contract_id ="+wtcEva.getContractId()+" and b.major_data_type=2 and b.is_deleted=0 and b.ancestors_p_id like '%"+wtcEva.getPId()+"%' ORDER BY b.sort ", FormulaDataBlock.class);
 
+                            // 每次需要依赖于treeCode值
+                            // List<FormulaDataBlock> formulaDataBlocks = this.getSqlList("select DISTINCT a.id,a.type,a.sw_id swId,a.contract_id contractId,a.val from m_formula_data_block a join (select parent_id from m_wbs_tree_contract where tree_code like '" + treeCode.getLast() + "%' and contract_id =" + wtcEva.getContractId() + " and major_data_type=2 and is_deleted=0 ORDER BY tree_code)b on a.sw_id=b.parent_id ", FormulaDataBlock.class);
+                            /*if (formulaDataBlocks != null && formulaDataBlocks.size() > 0) {
+                                *//*就是分项工程节点的父节点名称*//*
                                 String swIds = formulaDataBlocks.stream().map(FormulaDataBlock::getSwId).map(Objects::toString).collect(Collectors.joining(","));
                                 List<Map<String, Object>> listMaps = this.jdbcTemplate.queryForList("select id ,node_name nodeName,full_name fullName  from m_wbs_tree_contract where is_deleted =0 and contract_id=" + wtcEva.getContractId() + " and id in(" + swIds + ")");
                                 Map<String, String> swNameMap = new HashMap<>();
@@ -5468,10 +5469,11 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
                                     swNameMap.putAll(listMaps.stream().collect(Collectors.toMap(m -> m.get("id").toString(), m -> m.get("fullName").toString(), (v1, v2) -> v2)));
                                 }
                                 fb02.source(formulaDataBlocks, swNameMap);
+
                                 if (fb02.getDatas().size() > 0) {
                                     Map<String, String> tableKeysCoordsMap = FormulaUtils.getElementCell(wtcEva.getHtmlUrl());
                                     if (fb02.initFdCoords(tableKeysCoordsMap)) {
-                                        /*根据数据长度,增减页数*/
+                                        *//*根据数据长度,增减页数*//*
                                         List<WbsTreeContract> wtcList = this.adjustPageSize(fb02.getPageNum(), wtcEva, processFds);
                                         if (fb02.flush(wtcList)) {
                                             this.jdbcTemplate.batchUpdate(fb02.getSql(), fb02.getParams());
@@ -5479,7 +5481,86 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
                                         }
                                     }
                                 }
+                            }*/
+
+                            // 重新优化
+                           // String contSql = "SELECT p_key_id as pKeyId,node_name as fullName,init_table_name as initTableName,html_url as htmlUrl from m_wbs_tree_contract a where a.p_id in( select p_key_id  from m_wbs_tree_contract b where  b.contract_id ="+wtcEva.getContractId()+"  and b.major_data_type=2 and b.is_deleted=0 and b.ancestors_p_id like '%"+wtcEva.getPId()+"%' ) and a.type=2 and node_name not like '%附表%' and LENGTH(a.html_url)>=10 and init_table_name is not null ";
+                            String contSql = "SELECT p_key_id as pKeyId,p_id as pId,IFNULL(if(length(trim(full_name))>0, full_name, node_name), node_name) AS fullName,init_table_name as partitionCode,html_url as oldId,type,major_data_type as majorDataType from m_wbs_tree_contract where is_deleted=0 and ancestors_p_id like '%"+wtcEva.getPId()+"%' and contract_id ="+wtcEva.getContractId()+"  ORDER BY sort ,full_name ";
+                            List<WbsTreeContractLazyVO> allNode = this.getSqlList(contSql, WbsTreeContractLazyVO.class);
+                            List<WbsTreeContractLazyVO> conNode= getAllChildNodesWithStream(wtcEva.getPId()+"",allNode);
+                            //将conNode 转成Map对象
+                            Map<Long, WbsTreeContractLazyVO> map = conNode.stream().collect(Collectors.toMap(WbsTreeContractLazyVO::getPKeyId, WbsTreeContractLazyVO -> WbsTreeContractLazyVO));
+                            List<WbsTreeContractLazyVO> tableInfo = new ArrayList<>();
+                           // String nodeName = "";
+                            for (WbsTreeContractLazyVO info : conNode) {
+                                /*if(info.getType()==1 && (info.getPId()+"").equals(wtcEva.getPId()+"") ){
+                                    nodeName=info.getFullName();
+                                }*/
+                                if(info.getType()==2){
+                                    WbsTreeContractLazyVO wbsTreeContractLazyVO = map.get(info.getPId());
+                                  //  if(wbsTreeContractLazyVO!=null && wbsTreeContractLazyVO.getMajorDataType()!=null && wbsTreeContractLazyVO.getMajorDataType()==2 && info.getFullName().indexOf("附表")<0 && (info.getPKeyId()+"").equals("1861674943318589443")){
+                                    if(wbsTreeContractLazyVO!=null && wbsTreeContractLazyVO.getMajorDataType()!=null && wbsTreeContractLazyVO.getMajorDataType()==2 && info.getFullName().indexOf("附表")<0 ){
+                                        WbsTreeContractLazyVO wbsTreeC = map.get(wbsTreeContractLazyVO.getPId());
+                                        info.setTitle(wbsTreeC.getFullName());
+                                        tableInfo.add(info);
+                                      //  System.out.println("---------"+nodeName+"   "+info.getFullName());
+                                    }
+                                }
+                              //  System.out.println(info.getFullName());
+                            }
+                            System.out.println("tableInfo:"+tableInfo);
+                            for (WbsTreeContractLazyVO info : tableInfo) {
+                                String htmlUrl = info.getOldId();
+                                String tableName = info.getPartitionCode();
+                                String pkeId = info.getPKeyId()+"";
+                                Map<String, String> datainfo = getTableDataInfo(pkeId, tableName);
+                                TableCoordinates data = new TableCoordinates();
+                                if(pkeId.equals("1861674943318589443")){
+                                    System.out.println("123");
+                                }
+                                System.out.println("-------"+htmlUrl);
+                                List<String> datt = data.getHtmlDataInfo(htmlUrl);
+
+                                for (String d : datt) {
+                                    String[] split = d.split("_\\*_");
+                                    String hekey = split[0];
+                                    String name = split[1];
+                                    String hegezhi = split[3];
+                                    String hevalue = datainfo.get(hekey);
+                                    Item02 xm = new Item02();
+                                    xm.setName(name);
+                                    xm.setSubItem(info.getTitle());
+
+                                    if(name.contains("△")){
+                                        xm.setWeight(2);
+                                    }else{
+                                        xm.setWeight(1);
+                                    }
+                                    String fsValue = datainfo.get(hegezhi);
+                                    if( Func.isNotEmpty(fsValue) && fsValue.length()>=1){
+                                        xm.setPassRate(Func.toDouble(fsValue));
+                                    }
+
+                                    if( Func.isNotEmpty(hevalue) && hevalue.equals("合格")){
+                                        fb02.getDatas().add(xm);
+                                    }
+
+
+                                    System.out.println(hevalue);
+                                }
                             }
+
+                            if (fb02.getDatas().size() > 0) {
+                                Map<String, String> tableKeysCoordsMap = FormulaUtils.getElementCell(wtcEva.getHtmlUrl());
+                                if (fb02.initFdCoords(tableKeysCoordsMap)) {  /*根据数据长度,增减页数*/
+                                    List<WbsTreeContract> wtcList = this.adjustPageSize(fb02.getPageNum(), wtcEva, processFds);
+                                    if (fb02.flush(wtcList)) {
+                                        this.jdbcTemplate.batchUpdate(fb02.getSql(), fb02.getParams());
+                                        return R.success("成功");
+                                    }
+                                }
+                            }
+
                         }
                     } else if (FB01.TABLE_NAME.equals(wtcEva.getInitTableName())) {
                         FB01 fb01 = new FB01(processFds);
@@ -5638,6 +5719,44 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
         return R.fail("无数据");
     }
 
+
+    // 获取所有子节点
+    public List<WbsTreeContractLazyVO> getAllChildNodesWithStream(String parentId, List<WbsTreeContractLazyVO> allNodes) {
+        List<WbsTreeContractLazyVO> children = new ArrayList<>();
+
+        // 筛选直接子节点
+        List<WbsTreeContractLazyVO> directChildren = allNodes.stream()
+                .filter(node -> parentId.equals(node.getPId()+""))
+                .collect(Collectors.toList());
+
+        // 递归处理每个子节点
+        for (WbsTreeContractLazyVO child : directChildren) {
+            children.add(child);
+            children.addAll(getAllChildNodesWithStream(child.getPKeyId()+"", allNodes));
+        }
+
+        return children;
+    }
+
+    public Map<String, String> getTableDataInfo(String PkeyId,String tableName) {
+        String sql = "select * from " + tableName +" where p_key_id="+PkeyId;
+        List<Map<String, Object>> mapList = jdbcTemplate.queryForList(sql);
+        Map<String, String> remap = new HashMap<>();
+        for (Map<String, Object> map : mapList) {
+            for (String key : map.keySet()) {
+                String[] keyData = (map.get(key)+"").split("☆");
+                if(keyData!=null && keyData.length>=1){
+                    for(String keyData1:keyData){
+                        if(keyData1.indexOf("_^_")>=0){
+                            String[] keyData2 = keyData1.split("_\\^_");
+                            remap.put(key+"__"+keyData2[1], keyData2[0]);
+                        }
+                    }
+                }
+            }
+        }
+        return remap;
+    }
     public Map<String, String> getWtpParent(String meterType, String projectId) {
         Map<String, Object> map = this.jdbcTemplate.queryForMap("select id,wbs_id wbsId,CONCAT(ancestors,',',p_key_id) path from  m_wbs_tree_private a  where a.node_name=? and a.project_id=?", meterType, projectId);
         Map<String, String> result = new HashMap<>();
@@ -6497,4 +6616,5 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
         }
         return wbsTreeContract;
     }
+    
 }

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

@@ -1735,7 +1735,9 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
                                     }
                                 }
                             }
-                            if (ObjectUtil.isNotEmpty(vo.getDataLength()) && vo.getDataLength() > 250 && vo.getDataLength() <= 500) {
+
+                            // 此逻辑不符合
+                            /*if (ObjectUtil.isNotEmpty(vo.getDataLength()) && vo.getDataLength() > 250 && vo.getDataLength() <= 500) {
                                 Integer length = keyLengthMaps.get(vo.getKey());
                                 if (length < vo.getDataLength()) { //表字段的实际长度小于当前入参长度
                                     //如果字段长度不够,那么扩容
@@ -1745,7 +1747,7 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
                             if (ObjectUtil.isNotEmpty(vo.getDataLength()) && vo.getDataLength() > 500) {
                                 //如果超过500字符长度,那么直接异常提示
                                 filedNames.add(vo.getName());
-                            }
+                            }*/
                         }
                         if (keys.size() > 0 && values.size() > 0 && keys.size() == values.size()) {
                             //alter SQL(扩容字段长度)

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

@@ -175,7 +175,7 @@ public class WbsTreeController extends BladeController {
             @ApiImplicitParam(name="fileNumber",value = "划分编号")
     })
     public R<List<InformationQueryBIMVO>> queryInformationByFileNumber(@RequestParam String contractId, @RequestParam String fileNumber){
-        return R.data(iUserService.queryInformationByFileNumber(contractId, fileNumber));
+        return iUserService.queryInformationByFileNumber(contractId, fileNumber);
     }
 
 

+ 1 - 1
blade-service/blade-user/src/main/java/org/springblade/system/user/mapper/UserMapper.java

@@ -79,5 +79,5 @@ public interface UserMapper extends BaseMapper<User> {
     List<InformationQueryVO1> queryInformationByContractIdAndName(@Param("contractId")String contractId, @Param("name")String name);
 
     //
-    List<InformationQueryBIMVO> queryInformationByFileNumber(@Param("contractId")String contractId, @Param("name")String name);
+    List<InformationQueryBIMVO> queryInformationByFileNumber(@Param("contractId")String contractId, @Param("pKeyId")String pKeyId);
 }

+ 3 - 1
blade-service/blade-user/src/main/java/org/springblade/system/user/mapper/UserMapper.xml

@@ -248,7 +248,9 @@
     </select>
 
     <select id="queryInformationByFileNumber" resultType="org.springblade.system.user.vo.InformationQueryBIMVO">
-
+        SELECT p_key_id as id,node_name as name,p_id as parentId ,IF(b.id is NULL,1,2) as nodeType,b.status,IF(b.status &lt;= 1,b.pdf_url,e_visa_pdf_url) as fileUrlPath from m_wbs_tree_contract a LEFT JOIN
+        (SELECT * from u_information_query c where c.is_deleted=0 and c.`status` in(1,2,0)) b  on  a.p_key_id=b.wbs_id
+        where a.ancestors_p_id LIKE CONCAT('%', #{pKeyId}, '%') and a.contract_id=#{contractId} and a.type=1 and a.is_deleted=0
     </select>
 
 </mapper>

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

@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.springblade.business.vo.InformationQueryVO;
 import org.springblade.core.mp.base.BaseService;
 import org.springblade.core.mp.support.Query;
+import org.springblade.core.tool.api.R;
 import org.springblade.manager.dto.SaveUserInfoByProjectDTO;
 import org.springblade.manager.vo.PrivateTreeVO;
 import org.springblade.manager.vo.PrivateTreeVO2;
@@ -246,5 +247,5 @@ public interface IUserService extends BaseService<User> {
 
     List<InformationQueryVO1> queryInformationByContractIdAndName(String contractId, String name);
 
-    List<InformationQueryBIMVO> queryInformationByFileNumber(String contractId, String fieldNumber);
+    R queryInformationByFileNumber(String contractId, String fieldNumber);
 }

+ 14 - 4
blade-service/blade-user/src/main/java/org/springblade/system/user/service/impl/UserServiceImpl.java

@@ -2088,14 +2088,24 @@ public class UserServiceImpl extends BaseServiceImpl<UserMapper, User> implement
 
 
     @Override
-    public List<InformationQueryBIMVO> queryInformationByFileNumber(String contractId, String fileNumber) {
+    public R queryInformationByFileNumber(String contractId, String fileNumber) {
         if (StringUtil.isEmpty(contractId)) {
-            throw new ServiceException("未获取到合同段id");
+            return R.fail("未获取到合同段id");
+        }
+        if (StringUtil.isEmpty(fileNumber)) {
+            return R.fail("未获取到划分编号");
+        }
+        // 查询合同段下的所有节点
+        String conSql = "SELECT p_key_id,ancestors_p_id from m_wbs_tree_contract where contract_id="+contractId+" and partition_code='"+fileNumber+"' and is_deleted=0";
+        List<Map<String, Object>> mapList = jdbcTemplate.queryForList(conSql);
+        if(mapList==null || mapList.size()==0){
+           return R.fail("划分标号无效");
         }
 
-        List<InformationQueryBIMVO> informationQueryVO1s = baseMapper.queryInformationByFileNumber(contractId, fileNumber);
+        String pKeyId = mapList.get(0).get("p_key_id")+"";
+        List<InformationQueryBIMVO> information = baseMapper.queryInformationByFileNumber(contractId, pKeyId);
 
-        return informationQueryVO1s;
+        return R.data(information);
     }
 
 }