yangyj vor 1 Jahr
Ursprung
Commit
4c2ab1cda4

+ 48 - 47
blade-service/blade-manager/src/main/java/org/springblade/manager/formula/ITurnPointCalculator.java

@@ -21,51 +21,55 @@ public interface ITurnPointCalculator {
      String ZD_REG="(?i)zd\\d+";
      /*核心计算*/
     static List<TurnPoint> create(List<Map<String, Object>> data, LinkedHashMap<String, String> configMap,LevelInfo levelInfo) {
-        /*1.验证数据的合理性,如果已经合理则不需要计算
-        * 2.尝试补充数据,如果不合理则重新生成转点,并用正尺方式生成
-        * 3.合理性定义:(测点前视不存在或者非负数则视线高-测点实测高程在【0.5~4.8】范围,如果前视为负数则视线高-实际高程在【-0.5~-4.8】范围)*/
-        if (Func.isNotEmpty(data) && configMap != null) {
-            /*重置*/
-            levelInfo.reset();
-            List<TurnPoint> tmp = new ArrayList<>();
-            /*是否尝试初步补充数据*/
-            boolean checked=true;
-            for (int i = 0; i < data.size(); i++) {
-                Map<String, Object> dm = data.get(i);
-                Map<String, Object> dataMap = new HashMap<>(configMap.size() * 2);
-                TurnPoint tp = new TurnPoint(levelInfo, dataMap);
-                /*V判断*/
-                tp.setVertical(StringUtils.isEquals(1, dm.get("vertical")));
-                /*属性赋值*/
-                property(configMap,dataMap,dm,tp);
-                if(checked) {
-                    boolean isHead = (i == 0);
-                    boolean isTail = (i == data.size() - 1);
-                    /*检验水准点数据合法性&节点定性&补充缺失闭合点*/
-                    checked = identifying(levelInfo, tmp, tp, isHead, isTail);
-                    if(!checked){
-                        /*checked失败需要主动加入tmp,后续不执行identifying直接add*/
+        try {
+            /*1.验证数据的合理性,如果已经合理则不需要计算
+             * 2.尝试补充数据,如果不合理则重新生成转点,并用正尺方式生成
+             * 3.合理性定义:(测点前视不存在或者非负数则视线高-测点实测高程在【0.5~4.8】范围,如果前视为负数则视线高-实际高程在【-0.5~-4.8】范围)*/
+            if (Func.isNotEmpty(data) && configMap != null) {
+                /*重置*/
+                levelInfo.reset();
+                List<TurnPoint> tmp = new ArrayList<>();
+                /*是否尝试初步补充数据*/
+                boolean checked = true;
+                for (int i = 0; i < data.size(); i++) {
+                    Map<String, Object> dm = data.get(i);
+                    Map<String, Object> dataMap = new HashMap<>(configMap.size() * 2);
+                    TurnPoint tp = new TurnPoint(levelInfo, dataMap);
+                    /*V判断*/
+                    tp.setVertical(StringUtils.isEquals(1, dm.get("vertical")));
+                    /*属性赋值*/
+                    property(configMap, dataMap, dm, tp);
+                    if (checked) {
+                        boolean isHead = (i == 0);
+                        boolean isTail = (i == data.size() - 1);
+                        /*检验水准点数据合法性&节点定性&补充缺失闭合点*/
+                        checked = identifying(levelInfo, tmp, tp, isHead, isTail);
+                        if (!checked) {
+                            /*checked失败需要主动加入tmp,后续不执行identifying直接add*/
+                            tmp.add(tp);
+                        }
+                    } else {
                         tmp.add(tp);
                     }
-                }else{
-                    tmp.add(tp);
+                }
+                if (!checked) {
+                    /*直接写入输出缓存,不作任何计算*/
+                    tmp.forEach(ITurnPointCalculator::putCache);
+                    return tmp;
+                }
+                /*判断是否可推导*/
+                /*levelInfo.setPersist(persist(tmp));问题多多,暂时关闭*/
+                if (levelInfo.isNotPersist()) {
+                    /*不可推导的情况移除转点,fill阶段自动生成*/
+                    tmp.removeIf(e -> ZD.equals(e.getType()));
+                }
+                List<TurnPoint> result = fill(tmp);
+                if (ListUtils.isNotEmpty(result)) {
+                    return result;
                 }
             }
-            if(!checked){
-                /*直接写入输出缓存,不作任何计算*/
-                tmp.forEach(ITurnPointCalculator::putCache);
-                return tmp;
-            }
-            /*判断是否可推导*/
-            /*levelInfo.setPersist(persist(tmp));问题多多,暂时关闭*/
-            if(levelInfo.isNotPersist()) {
-                /*不可推导的情况移除转点,fill阶段自动生成*/
-                tmp.removeIf(e-> ZD.equals(e.getType()));
-            }
-            List<TurnPoint> result = fill(tmp);
-            if (ListUtils.isNotEmpty(result)) {
-                return  result;
-            }
+        }catch (Exception e){
+            e.printStackTrace();
         }
         return Collections.emptyList();
     }
@@ -360,7 +364,7 @@ public interface ITurnPointCalculator {
                /*距离超过两百米需要转点*/
                 List<TurnPoint>   closeZd=  info.getCloseZd();
                 TurnPoint last = closeZd.get(closeZd.size()-1);
-                 int n = (int)Math.ceil(x/200);
+                 int n = (int)Math.ceil(Math.abs(x)/200);
                 List<TurnPoint> list = new ArrayList<>();
                 for(int i=0;i<n;i++){
                      TurnPoint zd = new TurnPoint(info, new HashMap<>());
@@ -390,11 +394,8 @@ public interface ITurnPointCalculator {
                         tp.setQ(info.getSightHeight() - tp.getSc0L());
                     }
                     closeZd.add(zd.clone());
-                    /*设置当前里程*/
-                    if(info.isDistance()) {
-                        /*没转一次点相当于往前推进两百米*/
-                        info.setMilestone(info.getMilestone()+200);
-                    }
+                    /*设置新的仪器里程,没转一次点相当于减少两百米的间隔,正向+负向-*/
+                    info.setMilestone(info.getMilestone() + 200*(x/Math.abs(x)));
                     list.add(zd);
                 }
                 if(list.size()>0){

+ 10 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/formula/LevelInfo.java

@@ -58,6 +58,8 @@ public class LevelInfo implements  Cloneable {
     private boolean distance=false;
     /**当前里程*/
     private Double milestone;
+    /**减少间距*/
+    private Double missdistance=0d;
     /**测站点信息*/
     private Map<String,Double> BmMap =new HashMap<>();
 
@@ -205,4 +207,12 @@ public class LevelInfo implements  Cloneable {
     public void setMilestone(Double milestone) {
         this.milestone = milestone;
     }
+
+    public Double getMissdistance() {
+        return missdistance;
+    }
+
+    public void setMissdistance(Double missdistance) {
+        this.missdistance = missdistance;
+    }
 }

+ 17 - 4
blade-service/blade-manager/src/main/java/org/springblade/manager/formula/TurnPoint.java

@@ -315,7 +315,8 @@ public class TurnPoint {
             /*设置当前里程*/
             if(levelInfo.isDistance()) {
                 /*没转一次点相当于往前推进两百米*/
-                levelInfo.setMilestone(levelInfo.getMilestone()+200);
+                /* levelInfo.setMilestone(levelInfo.getMilestone()+200);*/
+                 levelInfo.setMissdistance(levelInfo.getMissdistance()+200);
             }
             loop++;
         } while (hd > 0 && loop < 20);
@@ -441,9 +442,21 @@ public class TurnPoint {
         if(this.levelInfo.isDistance()){
             Double x= BaseUtils.milestone(this.name);
             if(x!=null) {
-                double a=  x-this.levelInfo.getMilestone();
-                if(Math.abs(a)>=200){
-                   return a;
+                double d=x-this.levelInfo.getMilestone();
+                /*高差转点每次等效减小200米间距,如果还是小于当前测点与仪器高的间距则返回剩余间距*/
+                if(this.levelInfo.getMissdistance()>0) {
+                    /*负向减少里程,正向则增大里程*/
+                    double reduce = this.levelInfo.getMissdistance() * (d / Math.abs(d));
+                    /*更新当前仪器里程信息*/
+                    this.levelInfo.setMilestone(this.levelInfo.getMilestone() + reduce);
+                    /*重置高差转点减少的等效间距*/
+                    this.levelInfo.setMissdistance(0d);
+                    /*重新计算测点与仪器间距*/
+                    d=x-this.levelInfo.getMilestone();
+                }
+                if(Math.abs(d)>=200){
+                    /*间距超过200则返回实际间距*/
+                    return d;
                 }
             }
         }

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

@@ -1536,6 +1536,7 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
                          }
                          this.wbsTreeContractService.saveOrUpdateBatch(saveList);
                          list.addAll(saveList);
+                         String sql="select * from "+origin.getInitTableName()+" where p_key_id ="+origin.getPKeyId();
                      }
                  }else{
                     /*删页*/
@@ -2419,7 +2420,8 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
                     Map<String,String> tableKeysCoordsMap= FormulaUtils.getElementCell(wtc.getHtmlUrl());
                     fb02.initFdCoords(tableKeysCoordsMap);
                     /*根据数据长度,增减页数*/
-                    this.adjustPageSize(10,wtc);
+                    List<WbsTreeContract> pages= this.adjustPageSize(10,wtc);
+
                  }
                 return R.success("成功");
             }