hongchuangyanfa 2 年 前
コミット
cc6bf1ba33
14 ファイル変更127 行追加169 行削除
  1. 2 0
      blade-common/src/main/java/org/springblade/common/constant/BusinessConstant.java
  2. 1 1
      blade-service-api/blade-business-api/src/main/java/org/springblade/business/utils/MileageUtill.java
  3. 51 133
      blade-service/blade-business/src/main/java/org/springblade/business/controller/InformationWriteQueryController.java
  4. 12 7
      blade-service/blade-business/src/main/java/org/springblade/business/mapper/InformationQueryMapper.xml
  5. 7 0
      blade-service/blade-business/src/main/java/org/springblade/business/service/IInformationQueryService.java
  6. 25 3
      blade-service/blade-business/src/main/java/org/springblade/business/service/impl/InformationQueryServiceImpl.java
  7. 0 8
      blade-service/blade-business/src/main/java/org/springblade/business/service/impl/TrialDetectionDataServiceImpl.java
  8. 1 1
      blade-service/blade-manager/src/main/java/com/mixsmart/utils/CustomFunction.java
  9. 3 2
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/FormulaController.java
  10. 1 1
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/IWbsTreeContractService.java
  11. 2 2
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ContractInfoServiceImpl.java
  12. 4 4
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ExcelTabServiceImpl.java
  13. 15 7
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeContractServiceImpl.java
  14. 3 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/utils/FileUtils.java

+ 2 - 0
blade-common/src/main/java/org/springblade/common/constant/BusinessConstant.java

@@ -4,4 +4,6 @@ public interface BusinessConstant {
 
     String APPLICATION_WEATHER_NAME = "blade-business";
 
+    //redis树
+    String CONTRACT_CACHE_WBSTREE = "contract:wbstree:";
 }

+ 1 - 1
blade-service-api/blade-business-api/src/main/java/org/springblade/business/utils/MileageUtill.java

@@ -1179,7 +1179,7 @@ public class MileageUtill {
         return res;
     }
 
-    public static void main(String[] srt){
+    public static void main1(String[] srt){
         Mileage mm=new Mileage();
         mm.setAngle(30.331496472222224);
         mm.setX(2864425.47798996);

+ 51 - 133
blade-service/blade-business/src/main/java/org/springblade/business/controller/InformationWriteQueryController.java

@@ -1,5 +1,6 @@
 package org.springblade.business.controller;
 
+import com.alibaba.excel.util.DateUtils;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
@@ -26,6 +27,7 @@ import org.springblade.business.service.*;
 import org.springblade.business.socket.WebSocket;
 import org.springblade.business.utils.FileUtils;
 import org.springblade.business.vo.*;
+import org.springblade.common.constant.BusinessConstant;
 import org.springblade.common.constant.CommonConstant;
 import org.springblade.common.constant.LauncherConstant;
 import org.springblade.common.utils.CommonUtil;
@@ -52,11 +54,13 @@ import org.springblade.system.cache.ParamCache;
 import org.springblade.system.entity.DictBiz;
 import org.springblade.system.feign.IDictBizClient;
 import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.cache.annotation.CacheEvict;
 import org.springframework.cache.annotation.CachePut;
 import org.springframework.cache.annotation.Cacheable;
 import org.springframework.cache.annotation.Caching;
 import org.springframework.data.redis.core.RedisConnectionUtils;
+import org.springframework.data.redis.core.StringRedisTemplate;
 import org.springframework.jdbc.core.BeanPropertyRowMapper;
 import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.scheduling.annotation.Async;
@@ -120,7 +124,8 @@ public class InformationWriteQueryController extends BladeController {
 
     private final ITreeContractFirstService treeContractFirstService;
 
-    private static final String CONTRACT_CACHE_WBSTREE = "contract:wbstree:";
+    @Autowired
+    StringRedisTemplate RedisTemplate;
 
     /**
      * 获取文件题名
@@ -1271,7 +1276,13 @@ public class InformationWriteQueryController extends BladeController {
     @ApiOperation(value = "自定义排序")
     public R<Boolean> diySort(@RequestBody DiySortVO vo) {
         List<String> sortLists = vo.getSortList();
-        return R.status(wbsTreeContractClient.diySort(sortLists));
+        boolean b = wbsTreeContractClient.diySort(sortLists);
+        if(sortLists!=null){
+            WbsTreeContract needCopyNode = this.wbsTreeContractClient.getContractNodeByPrimaryKeyId(sortLists.get(0));
+            //获取父节点信息
+            informationQueryService.AsyncWbsTree(needCopyNode.getParentId()+ "",needCopyNode.getParentId()+ "",needCopyNode.getContractId(),"","1");
+        }
+        return R.status(b);
     }
 
     /**
@@ -1372,12 +1383,16 @@ public class InformationWriteQueryController extends BladeController {
          R<Boolean> booleanR = this.saveOrCopyNodeTree(saveList, saveLedger, 32, needCopyNode);
 
         //复制数据逻辑
-         jdbcTemplate.execute(copeSql.toString());
+        if(nodeTabColsMap!=null &&copeSql.length()>=10){
+            jdbcTemplate.execute(copeSql.toString());
+        }
+
+        //获取父节点信息
+        informationQueryService.AsyncWbsTree(needCopyNode.getParentId()+ "",needCopyNode.getParentId()+ "",needCopyNode.getContractId(),"","1");
         return booleanR;
     }
 
 
-
     /**
      * 复制节点
      */
@@ -1722,15 +1737,14 @@ public class InformationWriteQueryController extends BladeController {
             @ApiImplicitParam(name = "contractId", value = "合同段ID", required = true)
     })
     public R<List<WbsTreeContractTreeVOS>> queryMappingStructureTree(@RequestParam String parentId, @RequestParam String contractId, @RequestParam String contractIdRelation) {
-        List<WbsTreeContractTreeVOS> result = this.queryContractTree(parentId, contractId, contractIdRelation, null);
+        List<WbsTreeContractTreeVOS> result = this.informationQueryService.queryContractTree(parentId, contractId, contractIdRelation, null);
         if (result.size() == 1) {
             //只有一个子节点,继续向下
             int size;
             WbsTreeContractTreeVOS vos = result.get(0);
             do {
                 try {
-                    List<WbsTreeContractTreeVOS> childResult = this.queryContractTree(vos.getId().toString(), contractId, vos.getContractIdRelation(), null);
-
+                    List<WbsTreeContractTreeVOS> childResult = this.informationQueryService.queryContractTree(vos.getId().toString(), contractId, vos.getContractIdRelation(), null);
                     vos.setChildren(childResult);
                     size = childResult.size();
                     if (size != 1) {
@@ -1797,8 +1811,11 @@ public class InformationWriteQueryController extends BladeController {
         } catch (Exception e) {
             e.printStackTrace();
         }
+        Boolean aBoolean = this.wbsTreeContractClient.updateContractNodeParameter(node);
 
-        return R.data(this.wbsTreeContractClient.updateContractNodeParameter(node));
+        //获取父节点信息
+        informationQueryService.AsyncWbsTree(queries.getParentId()+ "",queries.getParentId()+ "",queries.getContractId(),"","1");
+        return R.data(aBoolean);
     }
 
     /**
@@ -1896,8 +1913,10 @@ public class InformationWriteQueryController extends BladeController {
 
         //保存进回收站
         this.recycleBinClient.saveDelBusinessData(idArray, StringUtils.isNotEmpty(removeNode.getFullName()) ? removeNode.getFullName() : removeNode.getNodeName(), 2, parentNodeName.toString(), removeNode.getProjectId(), removeNode.getContractId());
-
-        return R.data(this.wbsTreeContractClient.removeContractTreeNode(idArray));
+        Boolean aBoolean = this.wbsTreeContractClient.removeContractTreeNode(idArray);
+        // 更新redis
+        this.informationQueryService.AsyncWbsTree(removeNode.getParentId()+ "",removeNode.getParentId()+ "",removeNode.getContractId(),"","1");
+        return R.data(aBoolean);
     }
 
     /**
@@ -2081,7 +2100,13 @@ public class InformationWriteQueryController extends BladeController {
             });
         }
 
-        return this.saveOrCopyNodeTree(saveList, saveLedger, 2, treeContract);
+        R<Boolean> booleanR = this.saveOrCopyNodeTree(saveList, saveLedger, 2, treeContract);
+
+        //更新redis
+        List<WbsTreeContractTreeVOS> wbsTreeContractTreeVOS = this.informationQueryService.queryContractTree(treeContract.getId()+ "", treeContract.getContractId(), "", "1");
+
+        informationQueryService.AsyncWbsTree(treeContract.getId()+ "",treeContract.getId()+ "",treeContract.getContractId(),"","1");
+        return booleanR;
     }
 
     private List<WbsTreePrivate> unifiedCode(List<AddContractTreeNodeVO.Node> allSelectedNodeList, WbsTreeContract treeContract) {
@@ -2374,7 +2399,7 @@ public class InformationWriteQueryController extends BladeController {
         if (StringUtils.isNotEmpty(primaryKeyId)) {
             parentId = primaryKeyId;
         }
-        List<WbsTreeContractTreeVOS> rootTreeNode = this.queryContractTree(parentId, contractId, contractIdRelation, null);
+        List<WbsTreeContractTreeVOS> rootTreeNode = this.informationQueryService.queryContractTree(parentId, contractId, contractIdRelation, null);
         rootTreeNode.removeIf(vos -> (vos.getNodeType() != null && vos.getNodeType() == 111));
 
         return R.data(rootTreeNode);
@@ -2397,30 +2422,28 @@ public class InformationWriteQueryController extends BladeController {
                                                                                    @RequestParam String parentId,
                                                                                    @RequestParam String contractId,
                                                                                    @RequestParam String contractIdRelation,
-                                                                                   String classifyType) {
+                                                                                   @RequestParam String classifyType){
         if (StringUtils.isNotEmpty(primaryKeyId)) {
             parentId = primaryKeyId;
         }
+
         String dataInfoId = contractId+"_"+parentId+"_"+classifyType;
-        queryContractWbsTreeByContractIdAndType2(primaryKeyId,parentId,contractId,contractIdRelation,classifyType);
-        List<WbsTreeContractTreeVOS> wbsTreeContractTreeVOS = CacheUtil.get(LauncherConstant.APPLICATION_MANAGER_NAME, CONTRACT_CACHE_WBSTREE, dataInfoId, List.class);
+        Object data = RedisTemplate.opsForValue().get("blade-manager::contract:wbstree:"+dataInfoId);
+        List<WbsTreeContractTreeVOS> wbsTreeContractTreeVOS = null;
+        if(data!=null){
+            wbsTreeContractTreeVOS = JSON.parseArray(data.toString(), WbsTreeContractTreeVOS.class);
+        }
+
         if (wbsTreeContractTreeVOS == null) {
-            wbsTreeContractTreeVOS = this.queryContractTree(parentId, contractId, contractIdRelation, classifyType);
-            CacheUtil.put(LauncherConstant.APPLICATION_MANAGER_NAME, CONTRACT_CACHE_WBSTREE, dataInfoId, wbsTreeContractTreeVOS);
+            wbsTreeContractTreeVOS = this.informationQueryService.queryContractTree(parentId, contractId, contractIdRelation, classifyType);
+            JSONArray array= JSONArray.parseArray(JSON.toJSONString(wbsTreeContractTreeVOS));
+            RedisTemplate.opsForValue().set("blade-manager::contract:wbstree:"+dataInfoId,JSON.toJSON(array).toString());
         }
         return R.data(wbsTreeContractTreeVOS);
     }
 
-    @Async
-    public void queryContractWbsTreeByContractIdAndType2(String primaryKeyId,
-                                                                                   String parentId,
-                                                                                   String contractId,
-                                                                                   String contractIdRelation,
-                                                                                   String classifyType) {
-        String dataInfoId = contractId+"_"+parentId+"_"+classifyType;
-        List<WbsTreeContractTreeVOS> wbsTreeContractTreeVOS = this.queryContractTree(parentId, contractId, contractIdRelation, classifyType);
-            CacheUtil.put(LauncherConstant.APPLICATION_MANAGER_NAME, CONTRACT_CACHE_WBSTREE, dataInfoId, wbsTreeContractTreeVOS);
-    }
+
+    // set的处理
 
     /**
      * 修改
@@ -2464,115 +2487,10 @@ public class InformationWriteQueryController extends BladeController {
             @ApiImplicitParam(name = "contractId", value = "合同段ID", required = true)
     })
     public R<List<WbsTreeContractTreeVOS>> queryContractWbsTreeByFirstInfo(@RequestParam String parentId, @RequestParam String contractId, @RequestParam String contractIdRelation) {
-        List<WbsTreeContractTreeVOS> rootTreeNode = this.queryContractTree(parentId, contractId, contractIdRelation, null);
+        List<WbsTreeContractTreeVOS> rootTreeNode = informationQueryService.queryContractTree(parentId, contractId, contractIdRelation, null);
         //查询被标记为首件的数据
         rootTreeNode = rootTreeNode.stream().filter(WbsTreeContractTreeVOS::getIsFirst).collect(Collectors.toList());
-
         return R.data(rootTreeNode);
     }
 
-
-    /**
-     * 查询合同段划分树公共代码
-     */
-    private List<WbsTreeContractTreeVOS> queryContractTree(String parentId, String contractId, String contractIdRelation, String classifyType) {
-        List<WbsTreeContractTreeVOS> rootTreeNode;
-
-        //获取合同段,检查是否是监理合同段
-        ContractInfo contractInfo = this.contractClient.getContractById(Long.parseLong(contractId));
-
-        if (new Integer("2").equals(contractInfo.getContractType()) || new Integer("3").equals(contractInfo.getContractType())) {
-            //监理/业主合同段,需要获取关联的施工方合同段根节点数据
-            List<String> contractIds = new ArrayList<>();
-            if (StringUtils.isEmpty(parentId)) {
-                // 获取 有几个合同段主键Id
-                contractIds = this.contractClient.getProcessContractByJLContractId(contractId);
-            } else {
-                contractIds.add(contractIdRelation);
-            }
-            if (contractIds.size() > 0) {
-                //监理复制加载树问题
-                if (StringUtils.isEmpty(classifyType)) {
-                    classifyType = "2";
-                }
-                if (StringUtils.isNotEmpty(parentId)) {
-                    //子节点
-                    rootTreeNode = this.informationQueryService.queryContractTreeSupervision(contractIds, parentId, Integer.parseInt(classifyType));
-                } else {
-                    //根节点
-                    rootTreeNode = this.informationQueryService.queryContractTreeSupervision(contractIds, "0", Integer.parseInt(classifyType));
-                    //设置根节点数量统计
-                    for (WbsTreeContractTreeVOS root : rootTreeNode) {
-                        List<WbsTreeContractTreeVOS> rootZi = this.informationQueryService.queryContractTreeSupervision(Func.toStrList(root.getContractIdRelation()), root.getId().toString(), Integer.parseInt(classifyType));
-                        List<Long> collect = rootZi.stream().map(WbsTreeContractTreeVOS::getSubmitCounts).collect(Collectors.toList());
-                        Long reduce = collect.stream().reduce(0L, Long::sum);
-                        root.setSubmitCounts(reduce);
-                    }
-                }
-            } else {
-                rootTreeNode = new ArrayList<>();
-            }
-        } else {
-            //施工合同段
-            rootTreeNode = this.informationQueryService.queryContractTree(contractId, StringUtils.isNotEmpty(parentId) ? parentId : "0", 1);
-        }
-        return rootTreeNode;
-    }
- /*
-    *//**
-     * 查询合同段划分树公共代码
-     *//*
-    private List<WbsTreeContractTreeVOS> queryContractTree(String parentId, String contractId, String contractIdRelation, String classifyType) {
-        List<WbsTreeContractTreeVOS> rootTreeNode;
-
-        //获取合同段,检查是否是监理合同段
-        ContractInfo contractInfo = this.contractClient.getContractById(Long.parseLong(contractId));
-
-        if (new Integer("2").equals(contractInfo.getContractType()) || new Integer("3").equals(contractInfo.getContractType())) {
-            //监理/业主合同段,需要获取关联的施工方合同段根节点数据
-            List<String> contractIds = new ArrayList<>();
-            if (StringUtils.isEmpty(parentId)) {
-                // 获取 有几个合同段主键Id
-                contractIds = this.contractClient.getProcessContractByJLContractId(contractId);
-            } else {
-                contractIds.add(contractIdRelation);
-            }
-            if (contractIds.size() > 0) {
-
-                //监理复制加载树问题
-                if (StringUtils.isEmpty(classifyType)) {
-                    classifyType = "2";
-                }
-                if (StringUtils.isNotEmpty(parentId)) {
-                    //子节点
-                    rootTreeNode = this.informationQueryService.queryContractTreeSupervision(contractIds, parentId, Integer.parseInt(classifyType));
-                } else {
-                    //根节点
-                    rootTreeNode = this.informationQueryService.queryContractTreeSupervision(contractIds, "0", Integer.parseInt(classifyType));
-
-                    //设置根节点数量统计
-                    for (WbsTreeContractTreeVOS root : rootTreeNode) {
-                        List<WbsTreeContractTreeVOS> rootZi = this.informationQueryService.queryContractTreeSupervision(Func.toStrList(root.getContractIdRelation()), root.getId().toString(), Integer.parseInt(classifyType));
-                        List<Long> collect = rootZi.stream().map(WbsTreeContractTreeVOS::getSubmitCounts).collect(Collectors.toList());
-                        Long reduce = collect.stream().reduce(0L, Long::sum);
-                        root.setSubmitCounts(reduce);
-                    }
-                }
-            } else {
-                rootTreeNode = new ArrayList<>();
-            }
-
-        } else {
-            //施工合同段
-            rootTreeNode = this.informationQueryService.queryContractTree(contractId, StringUtils.isNotEmpty(parentId) ? parentId : "0", 1);
-            *//*rootTreeNode.stream().forEach(rtn->{
-                if (rtn.getSubmitCounts() > 0L && rtn.getColorStatus() <= 1 && rtn.getNotExsitChild() == false){
-                    rtn.setColorStatus(2);
-                }
-            });*//*
-        }
-
-        return rootTreeNode;
-    }
-*/
 }

+ 12 - 7
blade-service/blade-business/src/main/java/org/springblade/business/mapper/InformationQueryMapper.xml

@@ -134,13 +134,16 @@
         ) c
     </select>
 
-
+-->
     <select id="queryContractTree" resultMap="queryContractTreeMap">
         SELECT c.*,
                CASE
-                   WHEN c.allCount = c.savaCont THEN 2
-                   WHEN c.allCount = c.submitCount THEN 3
-                   WHEN c.allCount = c.appCount THEN 4
+                   WHEN c.allCount = c.savaCont and notExsitChild='false'  THEN 2
+                   WHEN (c.allCount+1) = c.savaCont and notExsitChild='true'  THEN 2
+                   WHEN c.allCount = c.submitCount and notExsitChild='false' THEN 3
+                   WHEN (c.allCount+1) = c.submitCount and notExsitChild='true' THEN 3
+                   WHEN c.allCount = c.appCount and notExsitChild='false' THEN 4
+                   WHEN (c.allCount+1) = c.appCount and notExsitChild='true' THEN 4
                    WHEN c.savaCont>=1 or c.submitCount>=1 or c.appCount>=1 THEN 2
                    ELSE 1 END AS colorStatus
         from (
@@ -162,8 +165,8 @@
         ctd.file_url AS fileUrl,
         ctd.id AS drawingsId,
         CASE (select count(tcf.id) from u_tree_contract_first AS tcf where tcf.is_deleted = 0 and tcf.wbs_node_id = wtc.p_key_id) WHEN 0 THEN 'false' ELSE 'true' END AS isFirst,
-			 (SELECT count(1) from m_wbs_tree_contract where id in(SELECT parent_id from m_wbs_tree_contract a where a.is_deleted=0 and a.type=2 and table_owner in(1,2,3)
-				) and contract_id=wtc.contract_id and type =1 and is_deleted=0 and FIND_IN_SET(wtc.id,ancestors)) as allCount,
+			 ( SELECT count(1) from m_wbs_tree_contract where id in(SELECT parent_id from m_wbs_tree_contract a where a.is_deleted=0 and a.type=2 and table_owner in(1,2,3)) and contract_id=wtc.contract_id and type =1 and is_deleted=0 and (FIND_IN_SET(wtc.id,ancestors) or wtc.p_key_id=p_key_id)
+				) as allCount,
 			 (SELECT count(1) from m_wbs_tree_contract a ,u_information_query b where a.p_key_id=b.wbs_id and FIND_IN_SET(wtc.id,a.ancestors)  and a.contract_id=wtc.contract_id and b.is_deleted=0 and a.is_deleted=0 and a.`status`=0 and b.classify=1) as savaCont,
 			 (SELECT count(1) from m_wbs_tree_contract a ,u_information_query b where a.p_key_id=b.wbs_id and FIND_IN_SET(wtc.id,a.ancestors)  and a.contract_id=wtc.contract_id and b.is_deleted=0 and a.is_deleted=0 and a.`status`=1 and b.classify=1) as submitCount,
 			 (SELECT count(1) from m_wbs_tree_contract a ,u_information_query b where a.p_key_id=b.wbs_id and FIND_IN_SET(wtc.id,a.ancestors)  and a.contract_id=wtc.contract_id and b.is_deleted=0 and a.is_deleted=0 and a.`status`=2 and b.classify=1) as appCount
@@ -177,7 +180,7 @@
         AND wtc.contract_id = #{contractId}
         ORDER BY wtc.sort,wtc.create_time
 		) c
-    </select>-->
+    </select>
 
 
     <select id="queryContractTreeSupervision" resultMap="queryContractTreeMap">
@@ -269,6 +272,7 @@
         and wtc.is_deleted= '0'
         ORDER BY wtc.sort,wtc.create_time
     </select>
+<!--
 
  <select id="queryContractTree" resultMap="queryContractTreeMap">
         SELECT
@@ -355,6 +359,7 @@
         AND wtc.contract_id = #{contractId}
         ORDER BY wtc.sort,wtc.create_time
     </select>
+-->
 
     <select id="queryProcessDataByPrimaryKeyIdAndClassify" resultMap="queryProcessDataMap">
         SELECT

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

@@ -25,6 +25,7 @@ import org.springblade.core.mp.base.BaseService;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.springblade.manager.entity.WbsTreeContract;
 import org.springblade.manager.vo.WbsTreeContractTreeVOS;
+import org.springframework.scheduling.annotation.Async;
 
 import java.util.List;
 import java.util.Map;
@@ -124,4 +125,10 @@ public interface IInformationQueryService extends BaseService<InformationQuery>
 
     // 获取当前节点所有的表的字段信息
     List<QueryProcessDataVO> getNodeChildTabColsAllByNodeId(String nodeId, String contractId);
+
+    // 测试节点信息
+    List<WbsTreeContractTreeVOS> queryContractTree(String parentId, String contractId, String contractIdRelation, String classifyType);
+
+    //
+    void  AsyncWbsTree(String primaryKeyId,String parentId,String contractId,String contractIdRelation,String classifyType);
 }

+ 25 - 3
blade-service/blade-business/src/main/java/org/springblade/business/service/impl/InformationQueryServiceImpl.java

@@ -1,5 +1,6 @@
 package org.springblade.business.service.impl;
 
+import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@@ -14,8 +15,11 @@ import org.springblade.business.vo.FileUserVO;
 import org.springblade.business.vo.InformationQueryVO;
 import org.springblade.business.mapper.InformationQueryMapper;
 import org.springblade.business.vo.QueryProcessDataVO;
+import org.springblade.common.constant.BusinessConstant;
 import org.springblade.common.constant.CommonConstant;
+import org.springblade.common.constant.LauncherConstant;
 import org.springblade.common.utils.SnowFlakeUtil;
+import org.springblade.core.cache.utils.CacheUtil;
 import org.springblade.core.mp.base.BaseServiceImpl;
 import org.springblade.core.oss.model.BladeFile;
 import org.springblade.core.secure.BladeUser;
@@ -31,8 +35,11 @@ import org.springblade.resource.feign.NewIOSSClient;
 import org.springblade.system.cache.ParamCache;
 import org.springblade.system.user.entity.User;
 import org.springblade.system.user.feign.IUserClient;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.StringRedisTemplate;
 import org.springframework.jdbc.core.BeanPropertyRowMapper;
 import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 
@@ -69,6 +76,9 @@ public class InformationQueryServiceImpl extends BaseServiceImpl<InformationQuer
 
     private final JdbcTemplate jdbcTemplate;
 
+    @Autowired
+    StringRedisTemplate RedisTemplate;
+
     @Override
     public List<String> queryBusinessTableData(String formDataId, Long trialSelfInspectionRecordId) {
         //获取具体业务数据
@@ -603,7 +613,7 @@ public class InformationQueryServiceImpl extends BaseServiceImpl<InformationQuer
     /**
      * 查询合同段划分树公共代码
      */
-    private List<WbsTreeContractTreeVOS> queryContractTree(String parentId, String contractId, String contractIdRelation, String classifyType) {
+    public List<WbsTreeContractTreeVOS> queryContractTree(String parentId, String contractId, String contractIdRelation, String classifyType) {
         List<WbsTreeContractTreeVOS> rootTreeNode;
 
         //获取合同段,检查是否是监理合同段
@@ -632,7 +642,6 @@ public class InformationQueryServiceImpl extends BaseServiceImpl<InformationQuer
                         root.setSubmitCounts(reduce);
                     }
                 }
-
             } else {
                 rootTreeNode = new ArrayList<>();
             }
@@ -640,8 +649,12 @@ public class InformationQueryServiceImpl extends BaseServiceImpl<InformationQuer
         } else {
             //施工合同段
             rootTreeNode = this.queryContractTree(contractId, StringUtils.isNotEmpty(parentId) ? parentId : "0", 1);
+            /*rootTreeNode.stream().forEach(rtn->{
+                if (rtn.getSubmitCounts() > 0L && rtn.getColorStatus() <= 1 && rtn.getNotExsitChild() == false){
+                    rtn.setColorStatus(2);
+                }
+            });*/
         }
-
         return rootTreeNode;
     }
 
@@ -654,4 +667,13 @@ public class InformationQueryServiceImpl extends BaseServiceImpl<InformationQuer
     public List<QueryProcessDataVO> getNodeChildTabColsAllByNodeId(String nodeId, String contractId) {
         return baseMapper.getNodeChildTabColsAllByNodeId(nodeId, contractId);
     }
+
+
+    @Override
+    public void AsyncWbsTree(String primaryKeyId,String parentId,String contractId,String contractIdRelation,String classifyType){
+        String dataInfoId = contractId+"_"+parentId+"_"+classifyType;
+        List<WbsTreeContractTreeVOS> wbsTreeContractTreeVOS = this.queryContractTree(parentId, contractId, contractIdRelation, classifyType);
+        JSONArray array= JSONArray.parseArray(JSON.toJSONString(wbsTreeContractTreeVOS));
+        RedisTemplate.opsForValue().set("blade-manager::contract:wbstree:"+dataInfoId,JSON.toJSON(array).toString());
+    }
 }

+ 0 - 8
blade-service/blade-business/src/main/java/org/springblade/business/service/impl/TrialDetectionDataServiceImpl.java

@@ -4,7 +4,6 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import lombok.AllArgsConstructor;
 import org.apache.commons.lang.StringUtils;
 import org.apache.commons.lang.time.DateUtils;
@@ -16,34 +15,27 @@ import org.springblade.business.dto.TrialDetectionDataDTO;
 import org.springblade.business.dto.TrialDetectionDataPageDTO;
 import org.springblade.business.entity.TrialDetectionData;
 import org.springblade.business.entity.TrialSampleInfo;
-import org.springblade.business.entity.TrialSelfInspectionRecord;
 import org.springblade.business.mapper.TrialDetectionDataMapper;
 import org.springblade.business.mapper.TrialSelfInspectionRecordMapper;
 import org.springblade.business.service.ITrialDetectionDataService;
 import org.springblade.business.vo.TrialDetectionDataVO;
-import org.springblade.business.vo.TrialSelfSample;
 import org.springblade.common.utils.SnowFlakeUtil;
 import org.springblade.core.log.exception.ServiceException;
 import org.springblade.core.mp.base.BaseServiceImpl;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.utils.PageUtil;
 import org.springblade.core.tool.utils.*;
-import org.springblade.manager.entity.TextdictInfo;
-import org.springblade.manager.entity.WbsFormElement;
 import org.springblade.manager.entity.WbsTreePrivate;
-import org.springblade.manager.feign.WbsTreeContractClient;
 import org.springframework.jdbc.core.BeanPropertyRowMapper;
 import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.stereotype.Service;
 
 import java.io.File;
 import java.io.FileInputStream;
-import java.io.FileNotFoundException;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-import java.util.function.Function;
 import java.util.stream.Collectors;
 
 @Service

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

@@ -2762,7 +2762,7 @@ public class CustomFunction {
 		return "";
 	}
 
-	public static void main(String[] args) {
+	public static void main11(String[] args) {
 		Map<String,Object> map =new HashMap<>();
 		map.put("A","13.3");
 		map.put("B","13.5");

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

@@ -299,9 +299,10 @@ public class FormulaController {
                     }
                 }
                 if(data.size()>dw.length){
-                  //  String moreData = data.stream().skip(dw.length).map(StringUtils::handleNull).collect(Collectors.joining(StringPool.SEMICOLON));
+                   // String moreData = data.stream().skip(dw.length).map(StringUtils::handleNull).collect(Collectors.joining(StringPool.SEMICOLON));
+                    List<Object> moreData = data.stream().skip(dw.length).map(StringUtils::handleNull).collect(Collectors.toList());
                     // 频率添加表单
-                    this.wbsTreeContractService.addTabInfoByRan(info,data,dw.length);
+                    this.wbsTreeContractService.addTabInfoByRan(info,moreData,dw);
                 }
             }
             /*保存实测值参数*/

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

@@ -55,5 +55,5 @@ public interface IWbsTreeContractService extends BaseService<WbsTreeContract> {
     List<WbsContractNodeVo> appSearchConcealedNodes(long primaryKeyId, Long contractId);
 
     // 频率设计值  添加表单
-    boolean addTabInfoByRan(RangeInfo info,List<Object> moreData,Integer excLenght) throws FileNotFoundException;
+    boolean addTabInfoByRan(RangeInfo info,List<Object> moreData,String[] excLenght) throws FileNotFoundException;
 }

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

@@ -137,7 +137,7 @@ public class ContractInfoServiceImpl extends BaseServiceImpl<ContractInfoMapper,
         List<WbsTreeContractTreeAllVO> wbsTreeContractVOS = baseMapper.tree5(Long.parseLong(contractId));
 //        if (ObjectUtils.isNotEmpty(type) && type == 1) {
         //获取所有已填报信息
-        Map<String, Long> allTable = informationQueryClient.getTreeAllTable(contractId);
+  /*      Map<String, Long> allTable = informationQueryClient.getTreeAllTable(contractId);
         Set<String> keySet = allTable.keySet();
         for (String key : keySet) {
             for (WbsTreeContractTreeAllVO vo : wbsTreeContractVOS) {
@@ -151,7 +151,7 @@ public class ContractInfoServiceImpl extends BaseServiceImpl<ContractInfoMapper,
             if (wtc.getSubmitCounts() == null) {
                 wtc.setSubmitCounts(0L);
             }
-        });
+        });*/
 //        }
         return buildWbsTreeByStreamByTreeAll(wbsTreeContractVOS);
     }

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

@@ -1076,8 +1076,8 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
 
     @Override
     public R getBussPdfInfo(Long pkeyId) throws Exception {
-        //String file_path = ParamCache.getValue(CommonConstant.SYS_LOCAL_URL);
-        String file_path = "/Users/hongchuangyanfa/Desktop/";
+        String file_path = ParamCache.getValue(CommonConstant.SYS_LOCAL_URL);
+        //String file_path = "/Users/hongchuangyanfa/Desktop/";
         WbsTreeContract wbsTreeContract = wbsTreeContractService.getBaseMapper().selectOne(Wrappers.<WbsTreeContract>query().lambda()
                 .eq(WbsTreeContract::getPKeyId, pkeyId));
 
@@ -1381,8 +1381,8 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
 
     @Override
     public void getBussPdfs(String nodeId, String classify, String contractId, String projectId) throws Exception {
-        //String file_path = ParamCache.getValue(CommonConstant.SYS_LOCAL_URL);
-        String file_path = "/Users/hongchuangyanfa/Desktop/";
+        String file_path = ParamCache.getValue(CommonConstant.SYS_LOCAL_URL);
+        //String file_path = "/Users/hongchuangyanfa/Desktop/";
         // 获取有权限的节点信息
         List<AppWbsTreeContractVO> wbsTreeContractList = wbsTreeContractService.searchNodeAllTable(nodeId, classify, contractId, projectId);
         List<String> data = new ArrayList<>();

+ 15 - 7
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeContractServiceImpl.java

@@ -358,7 +358,7 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
 
     // 频率添加表单
     @Override
-    public boolean addTabInfoByRan(RangeInfo info,List<Object> moreData,Integer excLenght) throws FileNotFoundException {
+    public boolean addTabInfoByRan(RangeInfo info,List<Object> moreData,String[] excLenght) throws FileNotFoundException {
         WbsTreeContract wbsInfo = this.baseMapper.selectOne(Wrappers.<WbsTreeContract>query().lambda()
                 .eq(WbsTreeContract::getPKeyId, info.getPkId()));
 
@@ -367,14 +367,15 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
                 .eq(WbsTreeContract::getId, wbsInfo.getId())
                 .eq(WbsTreeContract::getContractId, wbsInfo.getContractId())
                 .eq(WbsTreeContract::getParentId, wbsInfo.getParentId()));
-        List<WbsTreeContract> wbsTreeContractList2 = wbsTreeContractList.stream().filter(wbsTreeContract -> wbsTreeContract.getIsCopeTab() ==null || wbsTreeContract.getIsCopeTab()!=2).sorted(Comparator.comparing(WbsTreeContract::getCreateTime).reversed()).collect(Collectors.toList());
+        List<WbsTreeContract> wbsTreeContractList2 = wbsTreeContractList.stream().filter(wbsTreeContract -> wbsTreeContract.getIsCopeTab() ==null || wbsTreeContract.getIsCopeTab()==3).sorted(Comparator.comparing(WbsTreeContract::getCreateTime).reversed()).collect(Collectors.toList());
         // 判读需要添加几张表
         long tabGroupId = SnowFlakeUtil.getId();
-
         List<WbsTreeContract> addList = new ArrayList<>();
 
-        double tabCount = moreData.size() / excLenght - wbsTreeContractList2.size()+1;
-        double tabsCount  = Math.ceil(tabCount);
+        //计算张数
+        double tabCount = moreData.size() / Double.parseDouble(excLenght.length+"") ;
+        double tabsCount  = Math.ceil(tabCount)- wbsTreeContractList2.size()+1;
+        int maxIndex=0;
         if(tabsCount>=1){
             for(int i =0 ;i<tabsCount;i++){
                 long newPkId = SnowFlakeUtil.getId();
@@ -387,16 +388,23 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
 
                 if (nodeName.indexOf("_PL_") >= 0) {
                     String[] oldName = nodeName.split("_PL_");
-                    nodeName = oldName[0] + "_PL_" + (Integer.parseInt(oldName[1]) + 1);
+                    if(i==0){
+                        maxIndex = Integer.parseInt(oldName[1]);
+                    }
+                    maxIndex =maxIndex+1 ;
+                    nodeName = oldName[0] + "_PL_" + maxIndex;
                 } else {
-                    nodeName = nodeName + "_PL_" + 1;
+                    maxIndex =maxIndex+1 ;
+                    nodeName = nodeName + "_PL_" + maxIndex;
                 }
+
                 wbsTreeContract.setNodeName(nodeName);
                 wbsTreeContract.setIsCopeTab(1);
                 wbsTreeContract.setIsTabPdf(1); // pdf 不能预览
                 wbsTreeContract.setIsBussShow(1); // 是否隐藏表
                 wbsTreeContract.setTabFileType(1);//没有上传附件
                 wbsTreeContract.setPdfUrl("");
+                wbsTreeContract.setIsCopeTab(3); // 代表频率
                 addList.add(wbsTreeContract);
             }
             // 插入数据

+ 3 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/utils/FileUtils.java

@@ -409,6 +409,9 @@ public class FileUtils {
 
 
     public static void main11(String[] args) throws FileNotFoundException {
+       /* double a= 2;
+        double maxData = Math.ceil(a/7);
+        System.out.println(maxData);*/
 
         /*File file1 = ResourceUtil.getFile("/Users/hongchuangyanfa/fsdownload/1633774811681390592.html");
         FileInputStream fileInputStream = new FileInputStream(file1);