Explorar o código

Merge branch 'master' of http://121.41.40.202:3000/zhuwei/bladex

huangtf hai 1 ano
pai
achega
aaffa50f7f
Modificáronse 20 ficheiros con 209 adicións e 41 borrados
  1. 3 3
      blade-common/src/main/java/org/springblade/common/constant/LauncherConstant.java
  2. 24 0
      blade-service-api/blade-meter-api/pom.xml
  3. 4 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/dto/test.java
  4. 4 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/entity/test.java
  5. 4 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/feign/test.java
  6. 4 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/test.java
  7. 1 0
      blade-service-api/pom.xml
  8. 5 2
      blade-service/blade-business/src/main/java/org/springblade/business/controller/InformationWriteQueryController.java
  9. 42 36
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeContractServiceImpl.java
  10. 32 0
      blade-service/blade-meter/pom.xml
  11. 20 0
      blade-service/blade-meter/src/main/java/org/springblade/MeterApplication.java
  12. 4 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/controller/test.java
  13. 4 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/test.java
  14. 4 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/service/impl/test.java
  15. 4 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/service/test.java
  16. 4 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/utils/test.java
  17. 24 0
      blade-service/blade-meter/src/main/resources/application-dev.yml
  18. 11 0
      blade-service/blade-meter/src/main/resources/application-prod.yml
  19. 10 0
      blade-service/blade-meter/src/main/resources/application-test.yml
  20. 1 0
      blade-service/pom.xml

+ 3 - 3
blade-common/src/main/java/org/springblade/common/constant/LauncherConstant.java

@@ -27,11 +27,11 @@ import static org.springblade.core.launch.constant.AppConstant.APPLICATION_NAME_
  */
 public interface LauncherConstant {
 
+    String APPLICATION_MANAGER_NAME = APPLICATION_NAME_PREFIX + "manager"; /*后管*/
 
-    String APPLICATION_MANAGER_NAME = APPLICATION_NAME_PREFIX + "manager";
-
-    String APPLICATION_ARCHIVE_NAME = APPLICATION_NAME_PREFIX + "archive";
+    String APPLICATION_METER_NAME = APPLICATION_NAME_PREFIX + "meter"; /*计量*/
 
+    String APPLICATION_ARCHIVE_NAME = APPLICATION_NAME_PREFIX + "archive"; /*档案*/
 
     String APPLICATION_VISUAL_NAME = APPLICATION_NAME_PREFIX + "visual";
 

+ 24 - 0
blade-service-api/blade-meter-api/pom.xml

@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <artifactId>blade-service-api</artifactId>
+        <groupId>org.springblade</groupId>
+        <version>2.9.1.RELEASE</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>blade-meter-api</artifactId>
+    <name>${project.artifactId}</name>
+    <version>${bladex.project.version}</version>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.springblade</groupId>
+            <artifactId>blade-common</artifactId>
+        </dependency>
+    </dependencies>
+    <packaging>jar</packaging>
+
+</project>

+ 4 - 0
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/dto/test.java

@@ -0,0 +1,4 @@
+package org.springblade.meter.dto;
+
+public class test {
+}

+ 4 - 0
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/entity/test.java

@@ -0,0 +1,4 @@
+package org.springblade.meter.entity;
+
+public class test {
+}

+ 4 - 0
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/feign/test.java

@@ -0,0 +1,4 @@
+package org.springblade.meter.feign;
+
+public class test {
+}

+ 4 - 0
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/test.java

@@ -0,0 +1,4 @@
+package org.springblade.meter.vo;
+
+public class test {
+}

+ 1 - 0
blade-service-api/pom.xml

@@ -27,6 +27,7 @@
         <module>blade-archive-api</module>
         <module>blade-control-api</module>
         <module>blade-land-api</module>
+        <module>blade-meter-api</module>
     </modules>
 
     <dependencies>

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

@@ -1370,7 +1370,7 @@ public class InformationWriteQueryController extends BladeController {
     @PostMapping("/copyContractTreeNode")
     @ApiOperationSupport(order = 15)
     @ApiOperation(value = "复制节点(新)")
-    @TreeCodeUpdate(type =ArgType.PKD,value="#vo.needCopyPrimaryKeyId")
+    @TreeCodeUpdate(type = ArgType.PKD, value = "#vo.needCopyPrimaryKeyId")
     public R<Boolean> copyContractTreeNode(@RequestBody CopyContractTreeNodeVO vo) {
         //表单所属方
         String tabOwner = "";
@@ -2954,7 +2954,7 @@ public class InformationWriteQueryController extends BladeController {
     @PostMapping("/saveContractTreeNode")
     @ApiOperationSupport(order = 10)
     @ApiOperation(value = "新增节点及其子节点")
-    @TreeCodeUpdate(type=ArgType.CID,value = "#vo.contractId")
+    @TreeCodeUpdate(type = ArgType.CID, value = "#vo.contractId")
     public R<Boolean> saveContractTreeNode(@RequestBody AddContractTreeNodeVO vo) {
         //先获取当前节点的信息
         WbsTreeContract treeContract = this.wbsTreeContractClient.getContractWbsTreeByPrimaryKeyId(Long.parseLong(vo.getCurrentNodePrimaryKeyId()));
@@ -3563,6 +3563,9 @@ public class InformationWriteQueryController extends BladeController {
         //查询当前节点下的所有填报节点
         WbsTreeContract node = this.wbsTreeContractClient.getContractWbsTreeByPrimaryKeyId(vo.getWbsId());
         if (node == null) {
+            if (StringUtils.isEmpty(vo.getContractIdRelation())) {
+                return null;
+            }
             //这一步主要是为了兼容监理合同段
             node = this.wbsTreeContractClient.getContractWbsTreeByContractIdAndId(vo.getWbsId(), Long.parseLong(vo.getContractIdRelation()));
         }

+ 42 - 36
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeContractServiceImpl.java

@@ -68,6 +68,11 @@ import java.util.stream.Stream;
 @AllArgsConstructor
 public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractMapper, WbsTreeContract> implements IWbsTreeContractService {
 
+    static {
+        /*parallelStream并行流粒度*/
+        System.setProperty("java.util.concurrent.ForkJoinPool.common.parallelism", "4");
+    }
+
     private static final Logger logger = LoggerFactory.getLogger(WbsTreeContractServiceImpl.class);
     private final ConstructionLedgerFeignClient constructionLedgerFeign;
     private final WbsTreePrivateMapper wbsTreePrivateMapper;
@@ -742,6 +747,10 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
                             for (WbsTreeContractLazyVO lazyNode : lazyNodes) {
                                 lazyNode.setSubmitCounts(0);
                                 lazyNode.setColorStatus(2);
+                                lazyNode.setType(lazyNode.getNodeType());
+                                lazyNode.setNotExsitChild(!lazyNode.getHasChildren().equals(1));
+                                lazyNode.setPrimaryKeyId(lazyNode.getPKeyId());
+                                lazyNode.setTitle(contractInfo.getContractName());
                             }
                             return lazyNodes;
                         }
@@ -773,8 +782,13 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
                         List<Long> lowestNodeParentIdsTB = lowestNodesTB.parallelStream().map(WbsTreeContractLazyVO::getParentId).collect(Collectors.toList());
                         //获取本地缓存节点数量统计
                         List<WbsTreeContractLazyVO> resultParentNodesTB = this.getCachedParentCountNodes(contractId, lowestNodeParentIdsTB, nodesAll, tableOwner);
-                        //List<WbsTreeContractLazyVO> resultParentNodesTB = new ArrayList<>();
-                        //this.recursiveGetParentNodes(resultParentNodesTB, lowestNodeParentIdsTB, nodesAll);
+
+                        /*List<WbsTreeContractLazyVO> resultParentNodesTB = new ArrayList<>();
+                        long startTime1 = System.currentTimeMillis();
+                        this.recursiveGetParentNodes(resultParentNodesTB, lowestNodeParentIdsTB, nodesAll);
+                        long endTime1 = System.currentTimeMillis();
+                        long executionTime1 = endTime1 - startTime1;
+                        logger.info("合同段 " + contractId + " wbs节点树 数量计算 耗时:" + executionTime1 + " ms");*/
 
                         //最底层节点颜色构造后Map
                         Map<Long, WbsTreeContractLazyVO> lowestNodesMap = lowestNodesTB.stream()
@@ -879,6 +893,11 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
                                     for (WbsTreeContractLazyVO lazyNode : lazyNodes) {
                                         lazyNode.setSubmitCounts(0);
                                         lazyNode.setColorStatus(2);
+                                        lazyNode.setType(lazyNode.getNodeType());
+                                        lazyNode.setNotExsitChild(!lazyNode.getHasChildren().equals(1));
+                                        lazyNode.setPrimaryKeyId(lazyNode.getPKeyId());
+                                        lazyNode.setContractIdRelation(sgContractId);
+                                        lazyNode.setTitle(sgContractInfo.getContractName());
                                     }
                                     return lazyNodes;
                                 }
@@ -1048,7 +1067,6 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
         return nodesAll;
     }
 
-
     /**
      * 获取节点数量统计缓存
      *
@@ -1549,18 +1567,18 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
         }
 
         //父级Id与出现的次数Map
-        Map<Long, Long> parentIdGroup = lowestNodeParentIds.stream()
+        Map<Long, Long> parentIdGroup = lowestNodeParentIds.parallelStream()
                 .collect(Collectors.groupingByConcurrent(Function.identity(), Collectors.counting()));
 
         //批量查询单次节点
-        List<WbsTreeContractLazyVO> parentNodes = parentIdGroup.entrySet().stream()
+        List<WbsTreeContractLazyVO> parentNodes = parentIdGroup.entrySet().parallelStream()
                 .filter(entry -> entry.getValue() == 1L)
                 .flatMap(entry -> nodesAll.stream()
                         .filter(f -> entry.getKey().equals(f.getId())))
                 .collect(Collectors.toList());
 
         //批量查询多次节点
-        List<WbsTreeContractLazyVO> multipleParentNodes = parentIdGroup.entrySet().stream()
+        List<WbsTreeContractLazyVO> multipleParentNodes = parentIdGroup.entrySet().parallelStream()
                 .filter(entry -> entry.getValue() > 1L)
                 .flatMap(entry -> nodesAll.stream()
                         .filter(f -> entry.getKey().equals(f.getId()))
@@ -1579,48 +1597,36 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
             this.recursiveGetParentNodes(result, collect, nodesAll);
         }
     }*/
-
     public void recursiveGetParentNodes(List<WbsTreeContractLazyVO> result, List<Long> lowestNodeParentIds, List<WbsTreeContractLazyVO> nodesAll) {
         if (lowestNodeParentIds.isEmpty()) {
             return;
         }
 
-        //并行粒度4
-        ForkJoinPool customThreadPool = new ForkJoinPool(2);
-
-        //父级Id与出现的次数Map
-        Map<Long, Long> parentIdGroup = lowestNodeParentIds.parallelStream()
+        Map<Long, Long> parentIdGroup = lowestNodeParentIds.stream()
                 .collect(Collectors.groupingByConcurrent(Function.identity(), Collectors.counting()));
 
-        //批量查询单次节点
-        CompletableFuture<List<WbsTreeContractLazyVO>> parentNodesFuture = CompletableFuture.supplyAsync(() ->
-                parentIdGroup.entrySet().parallelStream()
-                        .filter(entry -> entry.getValue() == 1L)
-                        .flatMap(entry -> nodesAll.parallelStream()
-                                .filter(f -> entry.getKey().equals(f.getId())))
-                        .collect(Collectors.toList()), customThreadPool);
+        List<WbsTreeContractLazyVO> collectedNodes = parentIdGroup.entrySet().parallelStream()
+                .flatMap(entry -> {
+                    List<WbsTreeContractLazyVO> nodes = nodesAll.stream()
+                            .filter(f -> entry.getKey().equals(f.getId()))
+                            .collect(Collectors.toList());
 
-        //批量查询多次节点
-        CompletableFuture<List<WbsTreeContractLazyVO>> multipleParentNodesFuture = CompletableFuture.supplyAsync(() ->
-                parentIdGroup.entrySet().parallelStream()
-                        .filter(entry -> entry.getValue() > 1L)
-                        .flatMap(entry -> nodesAll.parallelStream()
-                                .filter(f -> entry.getKey().equals(f.getId()))
-                                .limit(1)
-                                .flatMap(node -> Collections.nCopies(entry.getValue().intValue(), node).parallelStream()))
-                        .collect(Collectors.toList()), customThreadPool);
+                    if (entry.getValue() > 1L) {
+                        nodes = nodes.stream().limit(1)
+                                .flatMap(node -> Collections.nCopies(entry.getValue().intValue(), node).stream())
+                                .collect(Collectors.toList());
+                    }
 
-        //结果集
-        CompletableFuture<List<Long>> collectFuture = parentNodesFuture.thenCombine(multipleParentNodesFuture, (parentNodes, multipleParentNodes) ->
-                Stream.concat(parentNodes.parallelStream(), multipleParentNodes.parallelStream())
-                        .map(WbsTreeContractLazyVO::getParentId)
-                        .collect(Collectors.toList()));
+                    return nodes.stream();
+                })
+                .collect(Collectors.toList());
 
-        List<Long> collect = collectFuture.join();
+        List<Long> collect = collectedNodes.stream()
+                .map(WbsTreeContractLazyVO::getParentId)
+                .collect(Collectors.toList());
 
         if (!collect.isEmpty()) {
-            result.addAll(parentNodesFuture.join());
-            result.addAll(multipleParentNodesFuture.join());
+            result.addAll(collectedNodes);
             this.recursiveGetParentNodes(result, collect, nodesAll);
         }
     }

+ 32 - 0
blade-service/blade-meter/pom.xml

@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <artifactId>blade-service</artifactId>
+        <groupId>org.springblade</groupId>
+        <version>2.9.1.RELEASE</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>blade-meter</artifactId>
+    <name>${project.artifactId}</name>
+    <version>${blade.project.version}</version>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.springblade</groupId>
+            <artifactId>blade-meter-api</artifactId>
+            <version>${bladex.project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.springblade</groupId>
+            <artifactId>blade-core-boot</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springblade</groupId>
+            <artifactId>blade-starter-swagger</artifactId>
+        </dependency>
+    </dependencies>
+
+</project>

+ 20 - 0
blade-service/blade-meter/src/main/java/org/springblade/MeterApplication.java

@@ -0,0 +1,20 @@
+package org.springblade;
+
+import org.springblade.common.constant.LauncherConstant;
+import org.springblade.core.cloud.feign.EnableBladeFeign;
+import org.springblade.core.launch.BladeApplication;
+import org.springframework.cache.annotation.EnableCaching;
+import org.springframework.cloud.client.SpringCloudApplication;
+import org.springframework.scheduling.annotation.EnableAsync;
+
+@EnableBladeFeign
+@SpringCloudApplication
+@EnableAsync
+@EnableCaching
+public class MeterApplication {
+
+    public static void main(String[] args) {
+        BladeApplication.run(LauncherConstant.APPLICATION_METER_NAME, MeterApplication.class, args);
+    }
+
+}

+ 4 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/controller/test.java

@@ -0,0 +1,4 @@
+package org.springblade.meter.controller;
+
+public class test {
+}

+ 4 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/test.java

@@ -0,0 +1,4 @@
+package org.springblade.meter.mapper;
+
+public class test {
+}

+ 4 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/service/impl/test.java

@@ -0,0 +1,4 @@
+package org.springblade.meter.service.impl;
+
+public class test {
+}

+ 4 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/service/test.java

@@ -0,0 +1,4 @@
+package org.springblade.meter.service;
+
+public class test {
+}

+ 4 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/utils/test.java

@@ -0,0 +1,4 @@
+package org.springblade.meter.utils;
+
+public class test {
+}

+ 24 - 0
blade-service/blade-meter/src/main/resources/application-dev.yml

@@ -0,0 +1,24 @@
+#服务器端口
+server:
+  port: 9102
+
+#数据源配置
+spring:
+  datasource:
+    url: ${blade.datasource.dev.url}
+    username: ${blade.datasource.dev.username}
+    password: ${blade.datasource.dev.password}
+
+#oss:
+#  enabled: true
+#  name: alioss
+#  tenant-mode: true
+#  endpoint: https://oss-cn-chengdu.aliyuncs.com/
+#  access-key: LTAI4FmSV1pWZAJ9xSvHg5rP
+#  secret-key: 5D3XQj4pBe8VbOAVFNqdioJA8riH4S
+#  bucket-name: bladex-test-info
+
+#Mybatis-plus配置
+#mybatis-plus:
+#  configuration:
+#    cache-enabled: true

+ 11 - 0
blade-service/blade-meter/src/main/resources/application-prod.yml

@@ -0,0 +1,11 @@
+#服务器端口
+server:
+  port: 9102
+
+#数据源配置
+spring:
+  datasource:
+    url: ${blade.datasource.prod.url}
+    username: ${blade.datasource.prod.username}
+    password: ${blade.datasource.prod.password}
+

+ 10 - 0
blade-service/blade-meter/src/main/resources/application-test.yml

@@ -0,0 +1,10 @@
+#服务器端口
+server:
+  port: 9102
+
+#数据源配置
+spring:
+  datasource:
+    url: ${blade.datasource.test.url}
+    username: ${blade.datasource.test.username}
+    password: ${blade.datasource.test.password}

+ 1 - 0
blade-service/pom.xml

@@ -27,6 +27,7 @@
         <module>blade-archive</module>
         <module>blade-control</module>
         <module>blade-land</module>
+        <module>blade-meter</module>
     </modules>
 
     <dependencies>