Răsfoiți Sursa

表单公式入口状态调整

yangyj 1 an în urmă
părinte
comite
71d7c0de23

+ 2 - 4
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ExcelTabController.java

@@ -1820,7 +1820,7 @@ public class ExcelTabController extends BladeController {
             @ApiImplicitParam(name = "pkeyId", value = "pkeyId", required = true)
     })
     public R getBussDataInfo(Long pkeyId) throws FileNotFoundException {
-        return R.data(excelTabService.getBussDataInfo(pkeyId, 0));
+        return R.data(excelTabService.getBussDataInfo(pkeyId, 0,true));
     }
 
 
@@ -2146,9 +2146,7 @@ public class ExcelTabController extends BladeController {
                 JSONArray extra = new JSONArray();
                 for (Long pk : tableAllIds) {
                     if (!exclude.contains(pk)) {
-                        R bussDataInfo = this.excelTabService.getBussDataInfo(pk, 1,true);
-                        @SuppressWarnings("unchecked")
-                        Map<String, Object> jo = (Map<String, Object>) bussDataInfo.getData();
+                        Map<String, Object> jo = this.excelTabService.getBussDataInfo(pk, 1);
                         if (ObjectUtils.isNotEmpty(jo)) {
                             jo.put("pkeyId", pk);
                             extra.add(jo);

+ 3 - 4
blade-service/blade-manager/src/main/java/org/springblade/manager/service/IFormulaService.java

@@ -4,10 +4,7 @@ import org.jsoup.nodes.Document;
 import org.springblade.core.mp.base.BaseService;
 import org.springblade.core.tool.api.R;
 import org.springblade.manager.dto.FormData;
-import org.springblade.manager.entity.Formula;
-import org.springblade.manager.entity.WbsInfo;
-import org.springblade.manager.entity.WbsTreeContract;
-import org.springblade.manager.entity.WbsTreePrivate;
+import org.springblade.manager.entity.*;
 import org.springblade.manager.enums.ExecuteType;
 import org.springblade.manager.formula.KeyMapper;
 import org.springblade.manager.formula.impl.TableElementConverter;
@@ -113,4 +110,6 @@ public interface IFormulaService extends BaseService<Formula> {
 
     /**表单数据加载的时候执行节点参数*/
     R<Object> evaluate(Long pkeyId);
+    /**获取当前节点的参数wbsNodeId:WBS级id ,wtpPkeyId:项目级PkeyId*/
+    List<WbsParam> getNodeWps(Long wbsNodeId,Long wtpPkeyId);
 }

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

@@ -1241,11 +1241,13 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
     }
 
     @Override
-    public R getBussDataInfo(Long pkeyId, int type) {
+    public Map<String,Object> getBussDataInfo(Long pkeyId, int type) {
+        /*只有默认不执行表单公式isFormLoading==false*/
         return this.getBussDataInfo(pkeyId,type,false);
     }
     @Override
     public Map<String,Object> getBussDataInfo(Long pkeyId, int type,Boolean isFormLoading) {
+        /*需要加载表单公式的时候isFormLoading==true*/
         Document document=null;
         Map<String, Object> reData = new HashMap<>();
 

+ 28 - 12
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/FormulaServiceImpl.java

@@ -684,7 +684,8 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
      **/
     public Map<String,Object> getWpMap(Long wbsNodeId,Long wtpPkeyId){
         Map<String,Object> result = new HashMap<>(100);
-        List<WbsParam> total = new ArrayList<>();
+        List<WbsParam> total=this.getNodeWps(wbsNodeId,wtpPkeyId);
+    /*    List<WbsParam> total = new ArrayList<>();
         List<WbsParam> wpsPublic = this.wpService.list(Wrappers.<WbsParam>lambdaQuery().eq(WbsParam::getNodeId,wbsNodeId).eq(WbsParam::getType,1));
         if(Func.isNotEmpty(wpsPublic)){
             total.addAll(wpsPublic);
@@ -692,7 +693,7 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
         List<WbsParam> wpsPrivate = this.wpService.list(Wrappers.<WbsParam>lambdaQuery().eq(WbsParam::getNodeId,wtpPkeyId).eq(WbsParam::getType,1));
         if(Func.isNotEmpty(wpsPrivate)){
             total.addAll(wpsPrivate);
-        }
+        }*/
         Map<String,String> logMap =new HashMap<>();
         if(CollectionUtil.isNotEmpty(total)){
             /*同名参数私有覆盖公用*/
@@ -704,11 +705,28 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
         this.tec.getLog().put(FormulaLog.PARAM,result.entrySet().stream().map(p->logMap.get(p.getKey())+":"+p.getValue()).collect(Collectors.joining(";")));
         /*元素动态绑定*/
         /*绑定节点参数公式*/
-        total= new ArrayList<>(total.stream().collect(Collectors.toMap(WbsParam::getK, w -> w, (v1, v2) -> v2)).values());
+      /*  total= new ArrayList<>(total.stream().collect(Collectors.toMap(WbsParam::getK, w -> w, (v1, v2) -> v2)).values());*/
         this.bindParamFormula(total);
         return result;
     }
 
+    @Override
+    public List<WbsParam> getNodeWps(Long wbsNodeId, Long wtpPkeyId) {
+        List<WbsParam> total = new ArrayList<>();
+        List<WbsParam> wpsPublic = this.wpService.list(Wrappers.<WbsParam>lambdaQuery().eq(WbsParam::getNodeId,wbsNodeId).eq(WbsParam::getType,1));
+        if(Func.isNotEmpty(wpsPublic)){
+            total.addAll(wpsPublic);
+        }
+        List<WbsParam> wpsPrivate = this.wpService.list(Wrappers.<WbsParam>lambdaQuery().eq(WbsParam::getNodeId,wtpPkeyId).eq(WbsParam::getType,1));
+        if(Func.isNotEmpty(wpsPrivate)){
+            total.addAll(wpsPrivate);
+        }
+        if(total.size()>0) {
+            total = new ArrayList<>(total.stream().collect(Collectors.toMap(WbsParam::getK, w -> w, (v1, v2) -> v2)).values());
+        }
+        return total;
+    }
+
     public void bindParamFormula(List<WbsParam> total){
         Map<String,Formula> formulaIdMap = this.wpService.formulaKeyMap(total.stream().map(WbsParam::getK).collect(Collectors.toList()));
         /*查找无绑定公式且单元格只有一个的当前表单元素*/
@@ -1168,9 +1186,7 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
         JSONArray dataArray = new JSONArray();
         for (NodeTable data : subTabList) {
             /*自动挂载附表情况下,装配TableInfo数据*/
-            R bussDataInfo = this.excelTabService.getBussDataInfo(data.getPKeyId(), 1);
-            @SuppressWarnings("unchecked")
-            Map<String, Object>  data1 = (Map<String, Object>) bussDataInfo.getData();
+            Map<String, Object>  data1 = this.excelTabService.getBussDataInfo(data.getPKeyId(), 1);
             data1.put("pkeyId",data.getPKeyId());
             dataArray.add(data1);
         }
@@ -2331,24 +2347,23 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
             WbsTreePrivate publicWtp = this.getOriginWtp(privatePkeyId);
 
             Map<String,Object> result = new HashMap<>(100);
-            List<WbsParam> total = new ArrayList<>();
-            List<WbsParam> wpsPublic = this.wpService.list(Wrappers.<WbsParam>lambdaQuery().eq(WbsParam::getNodeId,publicWtp.getId()).eq(WbsParam::getType,1));
+            List<WbsParam> total = this.getNodeWps(publicWtp.getId(),privatePkeyId);
+/*            List<WbsParam> wpsPublic = this.wpService.list(Wrappers.<WbsParam>lambdaQuery().eq(WbsParam::getNodeId,publicWtp.getId()).eq(WbsParam::getType,1));
             if(Func.isNotEmpty(wpsPublic)){
                 total.addAll(wpsPublic);
             }
             List<WbsParam> wpsPrivate = this.wpService.list(Wrappers.<WbsParam>lambdaQuery().eq(WbsParam::getNodeId,privatePkeyId).eq(WbsParam::getType,1));
             if(Func.isNotEmpty(wpsPrivate)){
                 total.addAll(wpsPrivate);
-            }
+            }*/
             if(CollectionUtil.isNotEmpty(total)){
-                /*同名参数私有覆盖公用*/
                 for(WbsParam p:total){
                     result.put(p.getK(),p.getV());
                 }
             }else{
                 return;
             }
-
+           /* total= new ArrayList<>(total.stream().collect(Collectors.toMap(WbsParam::getK, w -> w, (v1, v2) -> v2)).values());*/
             Map<String,Formula> formulaIdMap = this.wpService.formulaKeyMap(total.stream().map(WbsParam::getK).collect(Collectors.toList()));
              //元素动态绑定  获取已配置节点公式   未查明的bug暂时关闭
             Map<Long,String> paramIdKeyMap=  total.stream().collect(Collectors.toMap(WbsParam::getId,WbsParam::getK));
@@ -2369,9 +2384,10 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
            // 检查是否可以自动绑定参数公式
             List<FormData> notFormulaFds=fds.stream().filter(f->f.getFormulaId()==null).collect(Collectors.toList());
             if(notFormulaFds.size()>0){
+                List<WbsParam> finalTotal = total;
                 notFormulaFds.forEach(e->{
                     //暂时用参数名称是否包含元素名称作为匹配规则
-                    total.stream().filter(p->e.getEName().contains(p.getName().replaceAll("【[\\u4E00-\\u9FFF]+】|\\s+",""))).findAny().ifPresent(d->{
+                    finalTotal.stream().filter(p->e.getEName().contains(p.getName().replaceAll("【[\\u4E00-\\u9FFF]+】|\\s+",""))).findAny().ifPresent(d->{
                         Formula tf= formulaIdMap.get(d.getK());
                         if(tf!=null&&e.getId()!=null) {
                             e.setFormula(tf);