Procházet zdrojové kódy

Merge remote-tracking branch 'origin/master'

qianxb před 2 roky
rodič
revize
fea331b820
13 změnil soubory, kde provedl 228 přidání a 101 odebrání
  1. 3 3
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/dto/FormulaOptionVo.java
  2. 49 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/WbsTreeContractTreeAllVO.java
  3. 34 8
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ContractInfoController.java
  4. 24 14
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/FormulaController.java
  5. 1 3
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ContractInfoMapper.java
  6. 5 21
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ContractInfoMapper.xml
  7. 2 2
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/IContractInfoService.java
  8. 1 1
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/IFormulaOptionService.java
  9. 2 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/IFormulaService.java
  10. 63 28
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ContractInfoServiceImpl.java
  11. 13 9
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/FormulaOptionServiceImpl.java
  12. 31 9
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/FormulaServiceImpl.java
  13. 0 3
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreePrivateServiceImpl.java

+ 3 - 3
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/dto/FormulaOptionVo.java

@@ -17,11 +17,11 @@ public class FormulaOptionVo {
     private String key;
     private Long contractId;
     private String value;
-    private Long pKeyId;
+    private Long pkeyId;
     private Integer scope;
     private String name;
     public boolean saveChecked(){
-        if( Func.isNotBlank(value)&&contractId!=null&&parentId!=null&&pKeyId!=null&&key!=null&&scope!=null){
+        if( Func.isNotBlank(value)&&contractId!=null&&parentId!=null&&pkeyId!=null&&key!=null&&scope!=null){
             if(scope==0){
                 /*scope==0是元素范围,1是单元格范围*/
                 this.key=key.replaceAll("__[\\d_]+","");
@@ -46,7 +46,7 @@ public class FormulaOptionVo {
         if(isElementScope()){
           return key;
         }else{
-            return pKeyId+ StringPool.AT +key;
+            return pkeyId+ StringPool.AT +key;
         }
     }
 }

+ 49 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/WbsTreeContractTreeAllVO.java

@@ -0,0 +1,49 @@
+package org.springblade.manager.vo;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import lombok.Data;
+import org.springblade.core.tool.node.INode;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Data
+public class WbsTreeContractTreeAllVO implements INode<WbsTreeContractTreeAllVO> {
+
+    private static final long serialVersionUID = 1L;
+
+    private Long id;
+
+    private Long primaryKeyId;
+
+    private String title;
+
+    private Integer nodeType;
+
+    private String partitionCode;
+
+    private Long parentId;
+
+    private Integer sort;
+
+    private Long submitCounts;
+
+    @JsonInclude(JsonInclude.Include.NON_EMPTY)
+    private List<WbsTreeContractTreeAllVO> children;
+
+    @JsonInclude(JsonInclude.Include.NON_EMPTY)
+    private Boolean hasChildren;
+
+    @Override
+    public List<WbsTreeContractTreeAllVO> getChildren() {
+        if (this.children == null) {
+            this.children = new ArrayList<>();
+        }
+        return this.children;
+    }
+
+    @Override
+    public Boolean getHasChildren() {
+        return hasChildren;
+    }
+}

+ 34 - 8
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ContractInfoController.java

@@ -542,21 +542,20 @@ public class ContractInfoController extends BladeController {
     }
 
     /**
-     * 查询合同段树-全加载
+     * 查询合同段树-全加载-施工合同段
      */
     @GetMapping("/tree-all")
     @ApiOperationSupport(order = 19)
-    @ApiOperation(value = "查询合同段私有Wbs节点树形结构", notes = "传入wbsId,项目id,合同段id")
+    @ApiOperation(value = "查询合同段私有Wbs节点树形结构-施工合同段", notes = "合同段id,type=1")
     @ApiImplicitParams(value = {
-            @ApiImplicitParam(name = "wbsId", value = "wbsId", required = true),
-            @ApiImplicitParam(name = "项目id", value = "projectId", required = true),
-            @ApiImplicitParam(name = "合同段id", value = "contractId", required = true)
+            @ApiImplicitParam(name = "合同段id", value = "contractId", required = true),
+            @ApiImplicitParam(name = "type", value = "1=资料查询,资料查询过慢,导致资料填报也过慢,后续优化", required = true)
     })
-    public R treeAll(String wbsId, String projectId, String contractId) {
-        List<WbsTreeContractVO> tree = contractInfoService.tree3(wbsId, projectId, contractId);
+    public R treeAll(String contractId, Integer type) {
+        List<WbsTreeContractTreeAllVO> tree = contractInfoService.tree3(contractId, type);
         if (tree != null && tree.size() > 0) {
             ContractInfo contractInfo = contractInfoService.getBaseMapper().selectById(contractId);
-            for (WbsTreeContractVO wbsTreeContractVO : tree) {
+            for (WbsTreeContractTreeAllVO wbsTreeContractVO : tree) {
                 if (ObjectUtil.isNotEmpty(wbsTreeContractVO.getParentId()) && 0L == wbsTreeContractVO.getParentId()) {
                     wbsTreeContractVO.setTitle(contractInfo.getContractName());
                     break;
@@ -567,6 +566,33 @@ public class ContractInfoController extends BladeController {
         return R.fail(200, "未查询到信息");
     }
 
+    /**
+     * 查询合同段树-全加载-监理合同段
+     */
+    @GetMapping("/tree-all-jl")
+    @ApiOperationSupport(order = 19)
+    @ApiOperation(value = "查询合同段私有Wbs节点树形结构-监理合同段", notes = "合同段id,type=1")
+    @ApiImplicitParams(value = {
+            @ApiImplicitParam(name = "合同段id", value = "contractId", required = true),
+            @ApiImplicitParam(name = "type", value = "1=资料查询,资料查询过慢,导致资料填报也过慢,后续优化", required = true)
+    })
+    public R treeAllJL(String contractId, Integer type) {
+        Map<Long, List<WbsTreeContractTreeAllVO>> treeAllJL = contractInfoService.treeAllJL(contractId, type);
+        if (treeAllJL != null && treeAllJL.size() > 0) {
+            for (Map.Entry<Long, List<WbsTreeContractTreeAllVO>> map : treeAllJL.entrySet()) {
+                ContractInfo contractInfo = contractInfoService.getBaseMapper().selectById(map.getKey());
+                for (WbsTreeContractTreeAllVO wbsTreeContractVO : map.getValue()) {
+                    if (ObjectUtil.isNotEmpty(wbsTreeContractVO.getParentId()) && 0L == wbsTreeContractVO.getParentId()) {
+                        wbsTreeContractVO.setTitle(contractInfo.getContractName());
+                        break;
+                    }
+                }
+            }
+            return R.data(treeAllJL);
+        }
+        return R.fail(200, "未查询到信息");
+    }
+
     /**
      * 查询合同段私有Wbs节点树形结构 --- 试验关联工程节点树
      */

+ 24 - 14
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/FormulaController.java

@@ -173,17 +173,18 @@ public class FormulaController {
                 Map<String,Object> map =listMap.get(0);
                 String rely = StringUtils.handleNull(map.get("rely"));
                 FormulaBean fb=BeanUtil.toBean(map,FormulaBean.class);
-                if(StringUtils.isNotEmpty(rely)){
-                    String[] relyArr = rely.split(StringPool.COMMA);
-                   List<Map<String,Object>> mapList =this.jdbcTemplate.queryForList("select CONCAT(a.tab_en_name,':',b.e_key) ekey,a.tab_ch_name tableName,b.e_name ename  ,b.e_length elength,c.dict_value type f" +
-                           "rom m_table_info a JOIN m_wbs_form_element b on a.id=b.f_id  " +
-                           "LEFT JOIN (select dict_key, dict_value from blade_dict where code ='data_type' and parent_id > 0 and is_sealed = 0 and is_deleted = 0 )c on b.e_type=c.dict_key" +
-                           " where  a.tab_en_name in( "+ Arrays.stream(relyArr).map(e->e.split(StringPool.COLON)[0]).distinct().collect(Collectors.joining(StringPool.COMMA,"'","'"))+")");
-                   if(ListUtils.isNotEmpty(mapList)){
-                       fb.setDict(mapList.stream().filter(e-> Arrays.stream(relyArr).anyMatch(c->StringUtils.isEquals(e.get("ekey"),c))).collect(Collectors.toMap(e->StringUtils.handleNull(e.get("ekey")), e->e)));
-                   }
-
-                }
+//                if(StringUtils.isNotEmpty(rely)){
+//                    String[] relyArr = rely.split(StringPool.COMMA);
+//                   List<Map<String,Object>> mapList =this.jdbcTemplate.queryForList("select CONCAT(a.tab_en_name,':',b.e_key) ekey,a.tab_ch_name tableName,b.e_name ename  ,b.e_length elength,c.dict_value type f" +
+//                           "rom m_table_info a JOIN m_wbs_form_element b on a.id=b.f_id  " +
+//                           "LEFT JOIN (select dict_key, dict_value from blade_dict where code ='data_type' and parent_id > 0 and is_sealed = 0 and is_deleted = 0 )c on b.e_type=c.dict_key" +
+//                           " where  a.tab_en_name in( "+ Arrays.stream(relyArr).map(e->e.split(StringPool.COLON)[0]).distinct().collect(Collectors.joining(StringPool.COMMA,"'","'"))+")");
+//                   if(ListUtils.isNotEmpty(mapList)){
+//                       fb.setDict(mapList.stream().filter(e-> Arrays.stream(relyArr).anyMatch(c->StringUtils.isEquals(e.get("ekey"),c))).collect(Collectors.toMap(e->StringUtils.handleNull(e.get("ekey")), e->e)));
+//                   }
+//
+//                }
+                fb.setDict(this.service.getElementInfoByCodes(rely));
                 return R.data(fb);
             }
 
@@ -347,7 +348,7 @@ public class FormulaController {
              Map<String,Object> result = new LinkedHashMap<>();
              String  key=fo.getKey().replaceAll("__[\\d_]+","");
               ContractInfo contract = this.contractInfoService.getById(fo.getContractId());
-              List<KeyMapper> kms =  this.service.getKeyMapperList(Collections.singletonList(fo.getPKeyId()),contract.getPId());
+              List<KeyMapper> kms =  this.service.getKeyMapperList(Collections.singletonList(fo.getPkeyId()),contract.getPId());
               KeyMapper keyMapper=null;
               if(Func.isNotEmpty(kms)){
                 Optional<KeyMapper> optionalKeyMapper=  kms.stream().filter(e->StringUtils.isEquals(e.getField(),key)).findFirst();
@@ -357,7 +358,7 @@ public class FormulaController {
               }
               if(keyMapper!=null&&Func.isNotEmpty(keyMapper.getFormulaId())){
                    Formula formula = this.service.getById(keyMapper.getFormulaId());
-                  String data = this.formulaOptionService.queryOption(fo.getContractId(),fo.getParentId(),fo.getPKeyId(),fo.getKey());
+                  String data = this.formulaOptionService.queryOption(fo.getContractId(),fo.getParentId(),fo.getPkeyId(),fo.getKey());
                   /*临时处理,等确定数据结构在优化*/
                    if(formula.getFormula().contains(".option")){
                        return R.data(createRadioPanel(0,"是否引用公式数据",data));
@@ -387,8 +388,17 @@ public class FormulaController {
     @ApiOperationSupport(order = 10)
     @ApiOperation(value = "公式交互面板参数保存", notes = "公式交互面板参数保存")
     public R<Object> panelSave( @RequestBody FormulaOptionVo fo){
+           return  R.data(this.formulaOptionService.saveOrUpdateOption(fo));
+    }
 
-           return    R.success("保存成功");
+    @GetMapping("/log")
+    public R<Object> log(Long pkeyId){
+        Map<String,Object> result = new HashMap<>();
+        result.put("版本信息","202303081747");
+        if(Func.isNotEmpty(pkeyId)){
+            result.put("执行情况",this.jdbcTemplate.queryForList("select * from m_formula_log where id="+pkeyId));
+        }
+        return    R.data(result);
     }
 
 

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

@@ -84,9 +84,7 @@ public interface ContractInfoMapper extends BaseMapper<ContractInfo> {
     @Select("select quality_node_id from u_trial_self_quality_project where self_id = #{selfId}")
     List<String> queryList(@Param("selfId") String selfId);
 
-    List<WbsTreeContractVO> tree5(@Param("wbsId") Long wbsId,
-                                  @Param("projectId") Long projectId,
-                                  @Param("contractId") Long contractId);
+    List<WbsTreeContractTreeAllVO> tree5(@Param("contractId") Long contractId);
 
     List<WbsTreeContractVO6> tree6(@Param("wbsId") Long wbsId,
                                   @Param("projectId") Long projectId,

+ 5 - 21
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ContractInfoMapper.xml

@@ -418,37 +418,21 @@
         </foreach>
     </select>
 
-    <select id="tree5" resultMap="treeNodeResultMap2">
+    <select id="tree5" resultType="org.springblade.manager.vo.WbsTreeContractTreeAllVO">
         SELECT
         d.p_key_id AS "primaryKeyId",
-        d.wbs_type AS "wbsType",
         d.id,
         d.parent_id AS "parentId",
         IFNULL(if(length(trim(full_name)) > 0, full_name, node_name),node_name) AS title,
-        d.node_name AS "nodeName",
-        d.full_name AS "fullName",
-        d.import_matching_info AS "importMatchingInfo",
-        d.type AS "type",
-        d.node_type AS "nodeType",
-        d.id AS "value",
-        d.id AS "key",
         partition_code,
-        old_id,
+        node_type,
         sort
         FROM m_wbs_tree_contract d
         WHERE
-        d.is_deleted = 0
-        AND d.status = 1
+         contract_id = #{contractId}
         AND d.type = 1
-        <if test="wbsId!=null and wbsId!=''">
-            and wbs_id = #{wbsId}
-        </if>
-        <if test="projectId !=null and projectId!=''">
-            and project_id = #{projectId}
-        </if>
-        <if test="contractId!=null and contractId!=''">
-            and contract_id = #{contractId}
-        </if>
+        AND d.status = 1
+        AND d.is_deleted = 0
         ORDER BY d.sort
     </select>
 

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

@@ -44,7 +44,7 @@ public interface IContractInfoService extends BaseService<ContractInfo> {
 
     List<WbsTreeContractVO> tree2(String wbsId, String projectId, String contractId);
 
-    List<WbsTreeContractVO> tree3(String wbsId, String projectId, String contractId);
+    List<WbsTreeContractTreeAllVO> tree3(String contractId, Integer type);
 
     List<WbsTreeContractVO6> tree6List(String wbsId, String projectId, String contractId);
 
@@ -68,6 +68,6 @@ public interface IContractInfoService extends BaseService<ContractInfo> {
 
     Map<String, Object> trialRelationTree(String wbsId, String projectId, String contractId, String selfId);
 
-
+    Map<Long, List<WbsTreeContractTreeAllVO>> treeAllJL(String contractId, Integer type);
 
 }

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

@@ -9,6 +9,6 @@ import org.springblade.manager.entity.FormulaOption;
  */
 public interface IFormulaOptionService extends IService<FormulaOption> {
     String queryOption(Long contractId,Long parentId,Long pkeyId,String key);
-    void saveOrUpdateOption(FormulaOptionVo fo);
+    Object saveOrUpdateOption(FormulaOptionVo fo);
 
 }

+ 2 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/service/IFormulaService.java

@@ -7,6 +7,7 @@ import org.springblade.manager.formula.KeyMapper;
 import org.springblade.manager.formula.impl.TableElementConverter;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * @author yangyj
@@ -34,4 +35,5 @@ public interface IFormulaService extends BaseService<Formula> {
 
     List<Formula> getFormulaList(List<KeyMapper> keyMapperList);
     List<KeyMapper> getKeyMapperList(List<Long> ids,String projectId);
+    Map<String,Object> getElementInfoByCodes(String codes);
 }

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

@@ -3,6 +3,7 @@ package org.springblade.manager.service.impl;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import lombok.AllArgsConstructor;
@@ -39,6 +40,7 @@ import org.springframework.transaction.annotation.Transactional;
 
 import java.io.IOException;
 import java.util.*;
+import java.util.function.Function;
 import java.util.stream.Collectors;
 
 @Service
@@ -131,33 +133,67 @@ public class ContractInfoServiceImpl extends BaseServiceImpl<ContractInfoMapper,
     }
 
     @Override
-    public List<WbsTreeContractVO> tree3(String wbsId, String projectId, String contractId) {
-        List<WbsTreeContractVO> wbsTreeContractVOS = baseMapper.tree5(Long.parseLong(wbsId), Long.parseLong(projectId), Long.parseLong(contractId));
-        //获取所有已填报信息
-        Map<String, Long> allTable = informationQueryClient.getTreeAllTable(contractId);
-        Set<String> keySet = allTable.keySet();
-        for (String key : keySet) {
-            for (WbsTreeContractVO vo : wbsTreeContractVOS) {
-                if (key.equals(vo.getId()+"")){
-                    vo.setSubmitCounts(allTable.get(key));
+    public List<WbsTreeContractTreeAllVO> tree3(String contractId, Integer type) {
+        List<WbsTreeContractTreeAllVO> wbsTreeContractVOS = baseMapper.tree5(Long.parseLong(contractId));
+        if (ObjectUtils.isNotEmpty(type) && type == 1) {
+            //获取所有已填报信息
+            Map<String, Long> allTable = informationQueryClient.getTreeAllTable(contractId);
+            Set<String> keySet = allTable.keySet();
+            for (String key : keySet) {
+                for (WbsTreeContractTreeAllVO vo : wbsTreeContractVOS) {
+                    if (key.equals(vo.getId() + "")) {
+                        vo.setSubmitCounts(allTable.get(key));
+                    }
                 }
             }
+            wbsTreeContractVOS.stream().forEach(wtc -> {
+                if (wtc.getSubmitCounts() == null) {
+                    wtc.setSubmitCounts(0L);
+                }
+            });
         }
-        wbsTreeContractVOS.stream().forEach(wtc->{
-            if (wtc.getSubmitCounts() == null){
-                wtc.setSubmitCounts(0L);
+        return buildWbsTreeByStreamByTreeAll(wbsTreeContractVOS);
+    }
+
+    @Override
+    public Map<Long, List<WbsTreeContractTreeAllVO>> treeAllJL(String contractId, Integer type) {
+        //获取当前监理、指挥部合同段对应的施工权限
+        String sql = "select contract_id_sg from m_contract_relation_jlyz where contract_id_jlyz = " + contractId;
+        List<ContractRelationJlyz> query = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(ContractRelationJlyz.class));
+
+        Map<Long, List<WbsTreeContractTreeAllVO>> result = new HashMap<>();
+
+        //查询施工树
+        for (ContractRelationJlyz sg : query) {
+            List<WbsTreeContractTreeAllVO> wbsTreeContractVOS = baseMapper.tree5(sg.getContractIdSg());
+            if (ObjectUtils.isNotEmpty(type) && type == 1) {
+                //获取所有已填报信息
+                Map<String, Long> allTable = informationQueryClient.getTreeAllTable(contractId);
+                Set<String> keySet = allTable.keySet();
+                for (String key : keySet) {
+                    for (WbsTreeContractTreeAllVO vo : wbsTreeContractVOS) {
+                        if (key.equals(vo.getId() + "")) {
+                            vo.setSubmitCounts(allTable.get(key));
+                        }
+                    }
+                }
+                wbsTreeContractVOS.stream().forEach(wtc -> {
+                    if (wtc.getSubmitCounts() == null) {
+                        wtc.setSubmitCounts(0L);
+                    }
+                });
             }
-        });
-        return buildWbsTreeByStream(wbsTreeContractVOS);
+            List<WbsTreeContractTreeAllVO> resultTreeSG = buildWbsTreeByStreamByTreeAll(wbsTreeContractVOS);
+            result.put(sg.getContractIdSg(), resultTreeSG);
+        }
+        return result;
     }
 
     @Override
     public List<WbsTreeContractVO6> tree6List(String wbsId, String projectId, String contractId) {
-        List<WbsTreeContractVO6> wbsTreeContractVOS = baseMapper.tree6(Long.parseLong(wbsId), Long.parseLong(projectId), Long.parseLong(contractId));
-        return wbsTreeContractVOS;
+        return baseMapper.tree6(Long.parseLong(wbsId), Long.parseLong(projectId), Long.parseLong(contractId));
     }
 
-
     @Override
     public List<WbsTreeContractVO> tree(String wbsId, String projectId, String contractId) {
         List<WbsTreeContractVO> wbsTreeContractVOS = baseMapper.tree2(Long.parseLong(wbsId), Long.parseLong(projectId), Long.parseLong(contractId), null, null, null);
@@ -171,10 +207,10 @@ public class ContractInfoServiceImpl extends BaseServiceImpl<ContractInfoMapper,
         return list;
     }
 
-    public List<WbsTreeContractVO6> buildWbsTreeByStream6(List<WbsTreeContractVO6> wbsTreeVO2s) {
-        List<WbsTreeContractVO6> list = wbsTreeVO2s.stream().filter(f -> f.getParentId() == 0L).collect(Collectors.toList());
-        Map<Long, List<WbsTreeContractVO6>> map = wbsTreeVO2s.stream().collect(Collectors.groupingBy(WbsTreeContractVO6::getParentId));
-        this.recursionFnTree6(list, map);
+    public List<WbsTreeContractTreeAllVO> buildWbsTreeByStreamByTreeAll(List<WbsTreeContractTreeAllVO> wbsTreeVO2s) {
+        List<WbsTreeContractTreeAllVO> list = wbsTreeVO2s.stream().filter(f -> f.getParentId() == 0L).collect(Collectors.toList());
+        Map<Long, List<WbsTreeContractTreeAllVO>> map = wbsTreeVO2s.stream().collect(Collectors.groupingBy(WbsTreeContractTreeAllVO::getParentId));
+        this.recursionFnTreeAll(list, map);
         return list;
     }
 
@@ -189,18 +225,17 @@ public class ContractInfoServiceImpl extends BaseServiceImpl<ContractInfoMapper,
         }
     }
 
-    public void recursionFnTree6(List<WbsTreeContractVO6> list, Map<Long, List<WbsTreeContractVO6>> map) {
-        for (WbsTreeContractVO6 wbsTreeContractVO6 : list) {
-            List<WbsTreeContractVO6> childrenList = map.get(wbsTreeContractVO6.getId());
-            wbsTreeContractVO6.setChildren(childrenList);
+    public void recursionFnTreeAll(List<WbsTreeContractTreeAllVO> list, Map<Long, List<WbsTreeContractTreeAllVO>> map) {
+        for (WbsTreeContractTreeAllVO wbsTreeContractVO : list) {
+            List<WbsTreeContractTreeAllVO> childrenList = map.get(wbsTreeContractVO.getId());
+            wbsTreeContractVO.setChildren(childrenList);
             if (childrenList != null && childrenList.size() > 0) {
-                wbsTreeContractVO6.setHasChildren(true);
-                recursionFnTree6(childrenList, map);
+                wbsTreeContractVO.setHasChildren(true);
+                recursionFnTreeAll(childrenList, map);
             }
         }
     }
 
-
     @Override
     public List<WbsTreeContractVO2> treeTwo(String projectId) {
         return wbsTreeContractMapper.selectListByCondition(projectId);

+ 13 - 9
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/FormulaOptionServiceImpl.java

@@ -50,20 +50,24 @@ public class FormulaOptionServiceImpl extends ServiceImpl<FormulaOptionMapper, F
     }
 
     @Override
-    public void saveOrUpdateOption(FormulaOptionVo fo) {
+    public Object saveOrUpdateOption(FormulaOptionVo fo) {
         if(fo.saveChecked()){
-            WbsTreeContract wbc = this.wbsTreeContractService.getOne(Wrappers.<WbsTreeContract>lambdaQuery().eq(WbsTreeContract::getPKeyId,fo.getPKeyId()));
+            WbsTreeContract wbc = this.wbsTreeContractService.getOne(Wrappers.<WbsTreeContract>lambdaQuery().eq(WbsTreeContract::getPKeyId,fo.getPkeyId()));
             FormulaOption formulaOption = this.getOne(Wrappers.<FormulaOption>lambdaQuery().eq(FormulaOption::getParentId,fo.getParentId()).eq(FormulaOption::getContractId,fo.getContractId()));
+            JSONObject root;
             if(formulaOption==null){
                 formulaOption=fo.toFo();
-                JSONObject root = new JSONObject();
-                JSONObject table = (JSONObject) root.computeIfAbsent(wbc.getInitTableName(),(k)->new JSONObject());
-                JSONObject data = (JSONObject) table.computeIfAbsent(fo.createKey(),(k)->new JSONObject());
-                data.put(fo.getName(),fo.getValue());
-                formulaOption.setVal(root.toJSONString());
-                this.saveOrUpdate(formulaOption);
+                root = new JSONObject();
+            }else{
+                root=JSON.parseObject(formulaOption.getVal());
             }
+            JSONObject table = (JSONObject) root.computeIfAbsent(wbc.getInitTableName(),(k)->new JSONObject());
+            JSONObject data = (JSONObject) table.computeIfAbsent(fo.createKey(),(k)->new JSONObject());
+            data.put(fo.getName(),fo.getValue());
+            formulaOption.setVal(root.toJSONString());
+            this.saveOrUpdate(formulaOption);
+            return data;
         }
-
+        return null;
     }
 }

+ 31 - 9
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/FormulaServiceImpl.java

@@ -130,7 +130,7 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
         /*检查是否有跨节点数据*/
         /*获取type=1的检验单或者type=4的监表*/
         List<Map<String,Object>>  inspectionElementMaps = new ArrayList<>();
-        Optional<AppWbsTreeContractVO> wop=tableList.stream().filter(e->e.getTableType()==1).findAny();
+        Optional<AppWbsTreeContractVO> wop=tableList.stream().filter(e->e.getFullName().contains("检验单")).findAny();
         if(wop.isPresent()){
             /*检验单或者监表的*/
             inspectionElementMaps=  this.jdbcTemplate.queryForList(" select c.e_name name ,b.tab_en_name tableName,c.e_key ekey from m_wbs_tree_contract a join m_table_info b on a.init_table_name=b.tab_en_name join m_wbs_form_element c on c.f_id= b.id where a.p_key_id=" + wop.get().getPKeyId());
@@ -189,11 +189,12 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
             StringBuilder sb = new StringBuilder();
             for(String s:cki){
                 FormData fdTmp=this.formDataMap.get(s);
-                if(fdTmp!=null&&fdTmp.getValues().stream().anyMatch(e->StringUtils.isNotEmpty(e)&&StringUtils.isEquals("/",e))){
-                    sb.append(fdTmp.getEName().split("\\(.+\\)")[0]).append(",");
+                if(fdTmp!=null&&fdTmp.getValues().stream().map(ElementData::getValue).anyMatch(e->StringUtils.isNotEmpty(e)&&StringUtils.isNotEquals("/",e))){
+                    sb.append(fdTmp.getEName().split("[((].+[))]")[0]).append(",");
                 }
             }
             if(sb.length()>1){
+                sb.deleteCharAt(sb.length()-1);
                 this.constantMap.put(CHECK_ITEMS,sb.toString());
             }
         }
@@ -224,6 +225,7 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
         /*数据池里面没有任何元素匹配和当前依赖匹配*/
         if(Func.isNotEmpty(missingList)){
             StaticLog.info("缺失元素{}", String.join(";", missingList));
+            Map<String, Object> elementInfoMap=this.getElementInfoByCodes(String.join(",",missingList));
             /*1从当前节点其它表格中查找匹配的元素*/
             List<String> removeList=new ArrayList<>();
             for(String r:missingList){
@@ -231,6 +233,7 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
                 String key =r.substring(r.indexOf(StringPool.COLON)+1);
                 List<AppWbsTreeContractVO> nodeList = this.tec.getTableAll().stream().filter(e->e.getInitTableName().equals(tn)).collect(Collectors.toList());
                 if(Func.isNotEmpty(nodeList)){
+                    Map<String,Object> elementInfo= (Map<String, Object>) elementInfoMap.get(r);
                     String tableName = nodeList.get(0).getInitTableName();
                     try {
                         if(!this.tec.getCoordinateMap().containsKey(tableName)){
@@ -240,7 +243,7 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
                         e.printStackTrace();
                     }
                     List<Map<String,Object>> tableDatas= this.jdbcTemplate.queryForList("select * from "+tableName+" where p_key_id in("+nodeList.stream().map(AppWbsTreeContractVO::getPKeyId).map(StringUtils::handleNull).collect(Collectors.joining(","))+")");
-                    fill(tableDatas,removeList,tn,key);
+                    fill(tableDatas,removeList,tn,key,StringUtils.handleNull(elementInfo.get("ename")));
                 }
             }
             if(Func.isNotEmpty(removeList)){
@@ -254,12 +257,13 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
                 if(Func.isNotEmpty(tableNamePkIdsMaps)){
                     removeList.clear();
                     missingList.forEach(miss->{
+                        Map<String,Object> elementInfo= (Map<String, Object>) elementInfoMap.get(miss);
                         String tn = miss.substring(0,miss.indexOf(StringPool.COLON));
                         String key =miss.substring(miss.indexOf(StringPool.COLON)+1);
                         String targetIds=tableNamePkIdsMaps.stream().filter(m->StringUtils.isEquals(m.get("tableName"),tn)).map(m->m.get("pkId")).map(StringUtils::handleNull).collect(Collectors.joining(","));
                         if(Func.isNotEmpty(targetIds)){
                             List<Map<String,Object>> tableDatas= this.jdbcTemplate.queryForList("select * from "+tn+" where p_key_id in ("+targetIds+")");
-                            fill(tableDatas,removeList,tn,key);
+                            fill(tableDatas,removeList,tn,key,StringUtils.handleNull(elementInfo.get("ename")));
                         }
                     });
                 }
@@ -271,7 +275,7 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
         }
     }
 
-    public void fill(List<Map<String,Object>> tableDatas,List<String> removeList,String tn,String key){
+    public void fill(List<Map<String,Object>> tableDatas,List<String> removeList,String tn,String key,String name){
         if(Func.isNotEmpty(tableDatas)){
             Map<String,Object> map = new HashMap<>();
             tableDatas.forEach(m->{
@@ -285,7 +289,7 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
             String values= StringUtils.handleNull(map.get(key));
             String r= tn+StringPool.COLON+key;
             if(StringUtils.isNotEmpty(values)){
-                FormData tmp=createFormDataFast(r,values);
+                FormData tmp=createFormDataFast(name,r,values);
                 if(tmp!=null){
                     removeList.add(r);
                     this.formDataMap.put(r,tmp);
@@ -293,13 +297,15 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
             }
         }
     }
-    public FormData createFormDataFast(String code,String values){
+    public FormData createFormDataFast(String name,String code,String values){
         if(StringUtils.isNotEmpty(code,values)){
-            return    new FormData(code, Arrays.stream(values.split("☆")).map(s->{
+            FormData one=    new FormData(code, Arrays.stream(values.split("☆")).map(s->{
                 String[] t = s.split("_\\^_");
                 String[] c =t[1].split("_");
                 return  new ElementData(0,0,t[0],Func.toInt(c[1]),Func.toInt(c[0]));
             }).collect(Collectors.toList()), null,StringPool.EMPTY);
+            one.setEName(name);
+            return one;
         }
         return null;
     }
@@ -975,6 +981,22 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
     }
 
 
+    @Override
+    public Map<String,Object> getElementInfoByCodes(String codes){
+        if(StringUtils.isNotEmpty(codes)){
+            String[] relyArr = codes.split(StringPool.COMMA);
+            List<Map<String,Object>> mapList =this.jdbcTemplate.queryForList("select CONCAT(a.tab_en_name,':',b.e_key) ekey,a.tab_ch_name tableName,b.e_name ename  ,b.e_length elength,c.dict_value type f" +
+                    "rom m_table_info a JOIN m_wbs_form_element b on a.id=b.f_id  " +
+                    "LEFT JOIN (select dict_key, dict_value from blade_dict where code ='data_type' and parent_id > 0 and is_sealed = 0 and is_deleted = 0 )c on b.e_type=c.dict_key" +
+                    " where  a.tab_en_name in( "+ Arrays.stream(relyArr).map(e->e.split(StringPool.COLON)[0]).distinct().collect(Collectors.joining(StringPool.COMMA,"'","'"))+")");
+            if(ListUtils.isNotEmpty(mapList)){
+             return   mapList.stream().filter(e-> Arrays.stream(relyArr).anyMatch(c->StringUtils.isEquals(e.get("ekey"),c))).collect(Collectors.toMap(e->StringUtils.handleNull(e.get("ekey")), e->e));
+            }
+
+        }
+        return new HashMap<>();
+    }
+
     public void batch(){
         List<Map<String,Object>> list = this.jdbcTemplate.queryForList("select id,formula from m_formula where (formula like '%reasonable%' or formula like '%proportion%' or formula like '%goodSize%')");
         if(ListUtils.isNotEmpty(list)){

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

@@ -1476,9 +1476,6 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
                     jdbcTemplate.execute(delSql);
                 }
 
-                //新增
-                //textDictInfoService.insertBatch(insertData, 1000);
-
                 //异步新增
                 List<List<TextdictInfo>> partition1 = Lists.partition(insertData, 1000);
                 CompletableFuture<Void> handle = CompletableFuture.allOf(partition1.stream().map(addList ->