瀏覽代碼

计量相关

yangyj 1 年之前
父節點
當前提交
977e172f39

+ 16 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/Material.java

@@ -1,5 +1,6 @@
 package org.springblade.manager.vo;
 
+import com.alibaba.fastjson.annotation.JSONField;
 import lombok.Data;
 
 import java.util.ArrayList;
@@ -13,23 +14,38 @@ import java.util.List;
 @Data
 public class Material {
     public static final String TBN="MATERIAL";
+    public static final String TBN_CH="材料预付款支付申请表";
     /*b.material_name name,b.unit,b.price,a.meter_amount,
     a.material_source source,material_conform ,a.storage_place,a.storage_status,a.storage_conform,a.remark*/
     /**序号*/
+    @JSONField(name = "key_1",label="序号",ordinal = 1)
     private Integer index;
     /**名称*/
+    @JSONField(name = "key_2",label="材料名称",ordinal = 2)
     private String materialName;
+    @JSONField(name = "key_3",label="单位",ordinal = 3)
     private String unit;
+    @JSONField(name = "key_4",label="单价",ordinal = 4)
     private String price;
+    @JSONField(name = "key_5",label="数量",ordinal = 5)
     private String meterAmount;
+    @JSONField(name = "key_6",label="材料合计价格",ordinal = 6)
     private String sum;
+    @JSONField(name = "key_7",label="预付款比例",ordinal = 7)
     private String ratio;
+    @JSONField(name = "key_8",label="材料预付款",ordinal = 8)
     private String advancePayment;
+    @JSONField(name = "key_9",label="材料来源",ordinal = 9)
     private String source;
+    @JSONField(name = "key_10",label="材料来源是否符合要求",ordinal = 10)
     private String materialConform;
+    @JSONField(name = "key_11",label="备料堆放地点",ordinal = 11)
     private String storagePlace;
+    @JSONField(name = "key_12",label="存储情况",ordinal = 12)
     private String storageStatus;
+    @JSONField(name = "key_13",label="存放方法是否符合要求",ordinal = 13)
     private String storageConform;
+    @JSONField(name = "key_14",label="备注",ordinal = 14)
     private String remark;
     public List<Object> getData(){
         List<Object> data = new ArrayList<>();

+ 21 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/ReportResult.java

@@ -0,0 +1,21 @@
+package org.springblade.manager.vo;
+
+import lombok.Data;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author yangyj
+ * @Date 2023/12/28 11:29
+ * @description 计量公式计算结果
+ */
+@Data
+public class ReportResult {
+    /**html地址*/
+    private String url;
+    /**表编号*/
+    private String initTableName;
+    /**每一页的数据,格式{y_x:val,y1_x1:val1...}{...}...*/
+    private List<Map<String,Object>> data;
+}

+ 33 - 5
blade-service/blade-manager/src/main/java/org/springblade/manager/formula/impl/ExecutorSpecial.java

@@ -5,16 +5,17 @@ import com.mixsmart.utils.StringUtils;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import org.springblade.core.tool.utils.Func;
-import org.springblade.manager.dto.Coords;
 import org.springblade.manager.dto.ElementData;
 import org.springblade.manager.dto.FormData;
 import org.springblade.manager.formula.FormulaExecutor;
+import org.springblade.manager.formula.NodeTable;
 import org.springblade.manager.vo.BaseInfo;
 import org.springblade.manager.vo.Material;
 
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
+import java.util.Optional;
 import java.util.function.Function;
 import java.util.stream.Collectors;
 import java.util.stream.IntStream;
@@ -35,9 +36,13 @@ public class ExecutorSpecial extends FormulaExecutor {
 
     @Override
     public void handle() {
-        MaterialCalc materialCalc = new MaterialCalc(tec.getFormDataList());
-        this.specialList.add(materialCalc);
-        this.specialList.forEach(Special::parse);
+        for(NodeTable nodeTable:tec.getTableAll()){
+            if(Material.TBN_CH.equals(nodeTable.getNodeName())){
+                MaterialCalc materialCalc = new MaterialCalc(tec.getFormDataList());
+                this.specialList.add(materialCalc);
+            }
+        }
+        this.specialList.stream().filter(Special::ready).forEach(Special::parse);
     }
     @Data
     public  class MaterialCalc implements Special{
@@ -61,7 +66,23 @@ public class ExecutorSpecial extends FormulaExecutor {
         private String totalAdvance;
         private List<FormData> fds=new ArrayList<>();
         public MaterialCalc(List<FormData> list) {
-            for(FormData fd:list){
+           Optional<FormData> fop=  list.stream().filter(e->e.executable()&&"MATERIAL".equals(e.getFormula().getNumber())).findAny();
+           List<FormData> candidate = new ArrayList<>();
+           if(fop.isPresent()){
+               List<String> relyList= fop.get().getFormula().getRelyList();
+                for(FormData t:list){
+                    if(relyList.contains(t.getCode())) {
+                        candidate.add(t);
+                    }
+                }
+           }else{
+               /*假如不存在配置,则尝试自动识别*/
+                candidate.addAll(list);
+           }
+            select(candidate);
+        }
+        public void select(List<FormData> candidate ){
+            for(FormData fd:candidate){
                 if(fd.getEName().contains("序号")){
                     this.index=fd;
                     fds.add(fd);
@@ -110,6 +131,12 @@ public class ExecutorSpecial extends FormulaExecutor {
                 }
             }
         }
+
+        @Override
+        public boolean ready() {
+            return fds.size()==14;
+        }
+
         public void parse(){
             /*加载合同材料、材料清单*/
             /* b.material_name name,b.unit,b.price,a.meter_amount amount,a.material_source source
@@ -158,6 +185,7 @@ public class ExecutorSpecial extends FormulaExecutor {
     }
 
     public interface  Special{
+        boolean ready();
         void parse();
     }
 }