瀏覽代碼

水平坐标获取

yangyj 3 年之前
父節點
當前提交
dcdf883562

+ 8 - 4
blade-service/blade-manager/src/main/java/org/springblade/manager/formula/impl/FormulaMileage.java

@@ -5,6 +5,7 @@ import com.mixsmart.utils.ListUtils;
 import com.mixsmart.utils.StringUtils;
 import lombok.Data;
 import org.springblade.business.feign.MileageClient;
+import org.springblade.core.tool.utils.Func;
 import org.springblade.manager.dto.ElementData;
 import org.springblade.manager.dto.FormData;
 import org.springblade.manager.formula.FormulaStrategy;
@@ -29,7 +30,7 @@ public class FormulaMileage implements FormulaStrategy {
     @Override
     public void execute(List<FormData> fds, Map<String,Object> constantMap) {
         List<ElementData> eds = cur.getValues();
-        Map<String,String[]> mileages = (Map<String, String[]>) constantMap.get("mileages");
+        Map<String,String[]> mileages = getCoordinate(cur.getFormula().getFormula(),fds, Func.toLong(constantMap.get("contractId")));
         if(ListUtils.isNotEmpty(eds)){
             Matcher m= MILE_ARGS.matcher(cur.getCode());
             if(m.find()){
@@ -89,19 +90,22 @@ public class FormulaMileage implements FormulaStrategy {
     }
     public static final Pattern MILE_P = Pattern.compile("(?<=MILE<)([^,]+),([^,]+)(?=,)");
 
-    public  void test(String tmp,List<FormData> fds){
+    public  Map<String,String[]> getCoordinate(String tmp,List<FormData> fds,Long contractId){
         Matcher mile=MILE_P.matcher(tmp);
         List<String> zhs;
         List<String> jzs;
         if (mile.find()){
             String zh= mile.group(1);
             String jz= mile.group(2);
+            /*查找桩号元素*/
             Optional<FormData> op=fds.stream().filter(e->e.getCode().equals(zh)).findFirst();
             if(op.isPresent()){
+                /*获取桩号数据*/
                 zhs=op.get().getValues().stream().map(ElementData::getValue).map(StringUtils::handleNull).collect(Collectors.toList());
                 if(zhs.size()>0){
                     Optional<FormData> op2=fds.stream().filter(e->e.getCode().equals(jz)).findFirst();
                     if(op2.isPresent()){
+                        /*获取偏位数据*/
                         jzs=op2.get().getValues().stream().map(ElementData::getValue).map(StringUtils::handleNull).collect(Collectors.toList());
                         List<String> mileages = new ArrayList<>();
                         int size = Math.min(zhs.size(),jzs.size());
@@ -112,13 +116,13 @@ public class FormulaMileage implements FormulaStrategy {
                                 mileages.add(s1+"@"+s2);
                             }
                         }
-                          mileageClient.mileage2Coordinate(mileages,111111L);
-//                        constantMap.put("mileages",mileageClient.mileage2Coordinate(mileages,contractId));
+                        return   mileageClient.mileage2Coordinate(mileages,contractId);
                     }
                 }
             }
 
         }
+        return  new HashMap<>();
     }
 
     @Override

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

@@ -52,8 +52,17 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
     public static final Pattern POLY = Pattern.compile(POLY_REG);
     public static final Pattern MILE_P = Pattern.compile("(?<=MILE<)([^,]+),([^,]+)(?=,)");
 
+
+    /**
+     * @Description
+     * @Param [list: 源数据, contractId: 合同段id, primaryKeyId: wbs节点id]
+     * @return void
+     * @Author yangyj
+     * @Date 2022.08.03 14:03
+     **/
     @Override
     public void execute(List<FormData> list ,Long contractId,Long primaryKeyId){
+
         contractId=888888L;
 
         /*变量准备*/
@@ -133,38 +142,6 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
                               tmp= tmp.replace("E["+m2.group()+"]","E['"+m2.group()+"']");
                           }
                       }
-
-                      if(tmp.startsWith("MILE<")){
-                          Matcher mile=MILE_P.matcher(tmp);
-                          List<String> zhs;
-                          List<String> jzs;
-                          if (mile.find()){
-                              String zh= mile.group(1);
-                              String jz= mile.group(2);
-                              Optional<FormData> op=list.stream().filter(e->e.getCode().equals(zh)).findFirst();
-                              if(op.isPresent()){
-                                  zhs=op.get().getValues().stream().map(ElementData::getValue).map(StringUtils::handleNull).collect(Collectors.toList());
-                                  if(zhs.size()>0){
-                                      Optional<FormData> op2=list.stream().filter(e->e.getCode().equals(jz)).findFirst();
-                                      if(op2.isPresent()){
-                                          jzs=op2.get().getValues().stream().map(ElementData::getValue).map(StringUtils::handleNull).collect(Collectors.toList());
-                                          List<String> mileages = new ArrayList<>();
-                                          int size = Math.min(zhs.size(),jzs.size());
-                                          for(int i=0;i<size;i++){
-                                              String s1 =zhs.get(i);
-                                              String s2 =jzs.get(i);
-                                              if(StringUtils.isNotEmpty(s1,s2)){
-                                                  mileages.add(s1+"@"+s2);
-                                              }
-                                          }
-                                         constantMap.put("mileages",mileageClient.mileage2Coordinate(mileages,contractId));
-                                      }
-                                  }
-                              }
-
-                          }
-                      }
-
                     fd.getFormula().setFormula(tmp);
                 }