yangyj 1 éve
szülő
commit
6fb7971068

+ 98 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/FB02.java

@@ -0,0 +1,98 @@
+package org.springblade.manager.vo;
+
+import lombok.Data;
+import org.springblade.core.tool.utils.Func;
+import org.springblade.manager.dto.FormData;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author yangyj
+ * @Date 2023/11/1 17:24
+ * @description 评定表FB02
+ */
+@Data
+public class FB02 {
+    private FormData subItem;
+    private FormData sn;
+    private FormData name;
+    private FormData passRate;
+    private FormData weight;
+    private List<FormData> fds = new ArrayList<>();
+    private List<Item> datas = new ArrayList<>();
+
+
+    @Data
+    public static class Item{
+        private String subItem;
+        private String name;
+        private Double passRate=100d;
+        private Integer weight=1;
+        public Item(String subItem, String name, Double passRate, Integer weight) {
+            this.subItem = subItem;
+            this.name = name;
+            this.passRate = passRate;
+            this.weight = weight;
+        }
+        public Item() {
+        }
+
+        public String getName() {
+            return name;
+        }
+
+        public void setName(String name) {
+            if(name!=null&&name.contains("△")){
+                this.weight=2;
+            }
+            this.name = name;
+        }
+    }
+
+
+    public void addItem(String subItem,String name,Double passRate, Integer weight){
+          this.datas.add(new Item(subItem, name, passRate, weight));
+    }
+
+    private FB02() {
+        /*禁止无参构建实例*/
+    }
+
+    public FB02(List<FormData> processFds) {
+         for(FormData fd:processFds){
+              if(fd.getEName().contains("分项工程名称")){
+                  this.subItem=fd;
+              }else if(fd.getEName().contains("序号")){
+                  this.sn=fd;
+              }else if(fd.getEName().contains("实测项目")){
+                  this.name=fd;
+              }else if(fd.getEName().contains("实测合格率")){
+                  this.passRate=fd;
+
+              }else if(fd.getEName().contains("权值")){
+                  this.weight=fd;
+              }
+              if(this.subItem!=null&&this.name!=null&&this.passRate!=null&&this.weight!=null&&this.sn!=null){
+                  /*匹配完成*/
+                  this.fds.add(this.subItem);
+                  this.fds.add(this.sn);
+                  this.fds.add(this.name);
+                  this.fds.add(this.passRate);
+                  this.fds.add(this.weight);
+                  break;
+              }
+         }
+    }
+
+    public void initFdCoords(Map<String,String> tableKeysCoordsMap){
+        for(FormData fd:this.fds){
+            String coords =tableKeysCoordsMap.get(fd.getKey());
+            if(Func.isNotBlank(coords)){
+                fd.flushCoords(coords);
+            }
+        }
+    }
+
+}

+ 7 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/FormulaController.java

@@ -41,6 +41,7 @@ import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.web.bind.annotation.*;
 import springfox.documentation.annotations.ApiIgnore;
 
+import javax.validation.constraints.NotNull;
 import java.io.FileNotFoundException;
 import java.net.UnknownHostException;
 import java.time.Instant;
@@ -498,7 +499,7 @@ public class FormulaController {
         return dev;
     }
 
-
+    /**节点溯源*/
     @GetMapping("/tracing")
     @ApiOperationSupport(order = 10)
     public R<Object> tracing(Long pkeyId) {
@@ -929,5 +930,10 @@ public class FormulaController {
     }
 
 
+    @GetMapping("/evaluate")
+    public R<Object> evaluate(@NotNull(message="tablePkeyId 不能为空") Long tablePkeyId){
+         return this.service.evaluate(tablePkeyId);
+    }
+
 
 }

+ 9 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/formula/ITurnPointCalculator.java

@@ -410,7 +410,15 @@ public interface ITurnPointCalculator {
     static boolean finalizeCe(TurnPoint tp){
         if(Func.isNotBlank(tp.getSc())&&Func.isNotBlank(tp.getSj())&&Func.isNotBlank(tp.getQ())&&Func.isNotBlank(tp.getDx())){
             /*实测高程=视线高-前视*/
-            boolean f1= tp.getSc0L()==tp.getLevelInfo().getSightHeight()-tp.getQ0L();
+            double  qs=tp.getLevelInfo().getSightHeight()-tp.getQ0L();
+            boolean f1= tp.getSc0L()==qs;
+            if(!f1){
+                /*尝试修复*/
+                if(qs >= tp.getLevelInfo().getMin() && qs <= tp.getLevelInfo().getStep()){
+                      tp.setQ(qs);
+                      f1=true;
+                }
+            }
             /*实测高程-设计值高程=偏差值*/
             boolean f2=tp.getSc0L()-tp.getSj0L()==tp.getDx0L();
             return f1&&f2&&tp.isVisible(tp.isNegativeQ());

+ 1 - 8
blade-service/blade-manager/src/main/java/org/springblade/manager/formula/TurnPoint.java

@@ -243,14 +243,7 @@ public class TurnPoint {
         if(negative){
             d=  Math.abs(d);
         }
-        if(d >= levelInfo.getMin() && d <= levelInfo.getStep()){
-            if(levelInfo.getSightHeight()-getQ0L()!=getSc0L()){
-                /*微调修复前视*/
-                setQ(levelInfo.getSightHeight()-getSc0L());
-            }
-            return true;
-        }
-        return false;
+        return d >= levelInfo.getMin() && d <= levelInfo.getStep() && levelInfo.getSightHeight() - getQ0L() == getSc0L();
 
     }
     /**判断转点前后视是否在范围*/

+ 2 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/formula/impl/StartupTimeListener.java

@@ -1,5 +1,6 @@
 package org.springblade.manager.formula.impl;
 
+import org.jetbrains.annotations.NotNull;
 import org.springframework.boot.context.event.ApplicationReadyEvent;
 import org.springframework.context.ApplicationListener;
 import org.springframework.stereotype.Component;
@@ -16,7 +17,7 @@ public class StartupTimeListener implements ApplicationListener<ApplicationReady
     private static Instant startupTime;
 
     @Override
-    public void onApplicationEvent(ApplicationReadyEvent event) {
+    public void onApplicationEvent(@NotNull ApplicationReadyEvent event) {
         startupTime = Instant.now();
     }
 

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

@@ -112,5 +112,5 @@ public interface IFormulaService extends BaseService<Formula> {
     void paramFormula(WbsTreeContract wbsTreeContract, Map<String, Object> result, Document document);
 
     /**表单数据加载的时候执行节点参数*/
-    R<Object> pd(Long pkeyId);
+    R<Object> evaluate(Long pkeyId);
 }

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

@@ -33,6 +33,7 @@ import org.springblade.manager.mapper.FormulaMapper;
 import org.springblade.manager.service.*;
 import org.springblade.manager.vo.AppWbsTreeContractVO;
 import org.springblade.manager.vo.CurrentNode;
+import org.springblade.manager.vo.FB02;
 import org.springframework.context.annotation.Scope;
 import org.springframework.context.annotation.ScopedProxyMode;
 import org.springframework.jdbc.core.JdbcTemplate;
@@ -2358,18 +2359,46 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
     }
 
     @Override
-    public R<Object> pd(Long pkeyId) {
+    public R<Object> evaluate(Long pkeyId) {
         if(StringUtils.isNumber(pkeyId)) {
-            WbsTreeContract wtc= this.getSqlOne("select tree_code treeCode,contract_id from m_wbs_tree_contract where p_key_id =" + pkeyId,WbsTreeContract.class);
+            WbsTreeContract wtc= this.getSqlOne("select tree_code treeCode,contract_id,init_table_name,html_url from m_wbs_tree_contract where p_key_id =" + pkeyId,WbsTreeContract.class);
+            List<FormData> processFds = this.createFormDataByTableName(wtc.getInitTableName());
+            FB02 fb02 = new FB02(processFds);
             LinkedList<String> treeCode = new LinkedList<>(FormulaUtils.treeCodeSplit(wtc.getTreeCode()));
             List<FormulaDataBlock> formulaDataBlocks = this.getSqlList("select a.* from m_formula_data_block a join (select parent_id from m_wbs_tree_contract where tree_code like '"+treeCode.getLast()+"%' and contract_id ="+wtc.getContractId()+" and major_data_type=2 and is_deleted=0 ORDER BY tree_code)b on a.sw_id=b.parent_id ",FormulaDataBlock.class);
             if(formulaDataBlocks.size()>0){
-                return R.data(formulaDataBlocks);
+                 formulaDataBlocks.forEach(fdb->{
+                     List<ElementBlock> elementBlockList = JSON.parseArray(fdb.getVal(), ElementBlock.class);
+                     elementBlockList.forEach(eb->{
+                         String name = eb.getEName();
+                         FB02.Item  xm=new FB02.Item();
+                         xm.setName(name);
+                         List<ItemBlock> ib=  eb.getList();
+                         int total=  ib.stream().mapToInt(ItemBlock::getSubTotal).sum();
+                         int pass=   ib.stream().mapToInt(ItemBlock::getSubPass).sum();
+                         if(total>0) {
+                             double rate = (double) pass / (double) total;
+                             if (rate >= 0 && rate <= 100) {
+                                 xm.setPassRate(rate);
+                             }
+                         }
+                         fb02.getDatas().add(xm);
+                     });
+                 });
+                 if(fb02.getDatas().size()>0){
+                    Map<String,String> tableKeysCoordsMap= FormulaUtils.getElementCell(wtc.getHtmlUrl());
+                    fb02.initFdCoords(tableKeysCoordsMap);
+                    /*根据数据长度,增减页数*/
+
+                 }
+                return R.success("成功");
             }
         }
         return R.fail("无数据");
     }
 
+
+
 }