yangyj 1 年間 前
コミット
7cdbfedb5c

+ 15 - 0
blade-common/src/main/java/org/springblade/common/utils/BaseUtils.java

@@ -7,8 +7,10 @@ import org.springblade.common.constant.RegexConstant;
 import java.io.*;
 import java.lang.annotation.Annotation;
 import java.math.BigDecimal;
+import java.math.BigInteger;
 import java.net.JarURLConnection;
 import java.net.URL;
+import java.security.MessageDigest;
 import java.util.*;
 import java.util.jar.JarEntry;
 import java.util.jar.JarFile;
@@ -86,6 +88,19 @@ public class BaseUtils {
         }
         return false;
     }
+/*将不同长度的字符串转换为固定长度的Long*/
+    public static long str2Long(String input) {
+        try {
+            MessageDigest md = MessageDigest.getInstance("SHA-256");
+            byte[] hash = md.digest(input.getBytes());
+            BigInteger bigInt = new BigInteger(1, hash);
+
+            // 取正整数
+            return bigInt.longValue() & Long.MAX_VALUE;
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+    }
 
 
     /**

+ 23 - 2
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/BaseInfo.java

@@ -1,10 +1,16 @@
 package org.springblade.manager.vo;
 
-import io.swagger.annotations.ApiModelProperty;
+import com.alibaba.fastjson.annotation.JSONField;
 import lombok.Data;
-import org.springblade.manager.entity.ContractInfo;
+import org.springblade.common.utils.BaseUtils;
+import org.springblade.core.tool.utils.StringPool;
 
+
+import java.lang.reflect.Field;
 import java.math.BigDecimal;
+import java.util.ArrayList;
+
+import java.util.List;
 
 /**
  * @author yangyj
@@ -13,40 +19,55 @@ import java.math.BigDecimal;
  */
 @Data
 public class BaseInfo {
+    public static final String ID="89963247815";
     public static final String TBN="base_info";
     /**项目名称*/
+    @JSONField(name = "key_1",label="项目名称",ordinal = 1)
     private String projectName;
     /**合同段名称*/
+    @JSONField(name = "key_2",label="合同段名称",ordinal = 2)
     private String contractName;
     /**
      * 合同段编号
      */
+    @JSONField(name = "key_3",label="合同段编号",ordinal = 3)
     private String contractNumber;
     /**
      * 业主单位名称
      */
+    @JSONField(name = "key_4",label="业主单位名称",ordinal = 4)
     private String contractorUnitName;
     /**
      * 施工单位名称
      */
+    @JSONField(name = "key_5",label="施工单位名称",ordinal = 5)
     private String constructionUnitName;
     /**
      * 监理单位名称
      */
+    @JSONField(name = "key_6",label="监理单位名称",ordinal = 6)
     private String supervisionUnitName;
     /**合同段金额*/
+    @JSONField(name = "key_7",label="合同段金额",ordinal = 7)
     private BigDecimal contractAmount;
     /**
      * 开户银行
      * */
+    @JSONField(name = "key_8",label="开户银行",ordinal = 8)
     private String  bankName;
     /**对公账户*/
+    @JSONField(name = "key_9",label="对公账户",ordinal = 9)
     private String  bankAccount;
     /**银行账户名称*/
+    @JSONField(name = "key_10",label="银行账户名称",ordinal = 10)
     private String  bankAccountName;
     /**合同总金额*/
+    @JSONField(name = "key_11",label="合同总金额",ordinal = 11)
     private String  TotalAmount;
     /**预付款比例*/
+    @JSONField(name = "key_12",label="预付款比例",ordinal = 12)
     private Double  deductRatio=0.7;
 
+
+
 }

+ 1 - 2
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/MeterPeriodInfo.java

@@ -1,7 +1,5 @@
 package org.springblade.manager.vo;
 
-import io.swagger.annotations.ApiModelProperty;
-
 import java.time.LocalDate;
 
 /**
@@ -10,6 +8,7 @@ import java.time.LocalDate;
  * @description 计量期信息
  */
 public class MeterPeriodInfo {
+    public static final String ID="87963214698";
     /**计量期信息表名*/
     public static final String TBN="MPI";
     /**计量期*/

+ 26 - 0
blade-service/blade-manager/src/main/java/com/mixsmart/utils/FormulaUtils.java

@@ -7,6 +7,7 @@ import cn.hutool.log.StaticLog;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson.annotation.JSONField;
 import com.jfireel.expression.Expression;
 import org.apache.commons.lang.math.NumberUtils;
 import org.apache.http.*;
@@ -52,6 +53,8 @@ import org.springblade.manager.formula.NodeTable;
 import org.springblade.manager.formula.impl.CompositeDataAccess;
 import org.springblade.manager.formula.impl.TableElementConverter;
 import org.springblade.manager.utils.FileUtils;
+import org.springblade.manager.vo.BaseInfo;
+import org.springblade.manager.vo.WbsFormElementVO;
 import reactor.core.publisher.Mono;
 
 import java.awt.*;
@@ -60,6 +63,7 @@ import java.awt.Shape;
 import java.awt.geom.Ellipse2D;
 import java.io.*;
 
+import java.lang.reflect.Field;
 import java.nio.charset.StandardCharsets;
 import java.security.MessageDigest;
 import java.security.NoSuchAlgorithmException;
@@ -328,6 +332,28 @@ public class FormulaUtils {
     }
 
 
+    public static List<WbsFormElementVO> toElementVos(Class<?> clazz)  {
+        List<WbsFormElementVO> vos =new ArrayList<>();
+        try {
+            Field tbnField = clazz.getField("TBN");
+            String TBN = (String) tbnField.get(null);
+            for (Field field : clazz.getDeclaredFields()) {
+                JSONField jf = field.getAnnotation(JSONField.class);
+                if (jf != null) {
+                    WbsFormElementVO vo = new WbsFormElementVO();
+                    vo.setEName(jf.label());
+                    vo.setTableElementKey(TBN+ StringPool.COLON +jf.name());
+                    vo.setInitTableName(TBN);
+                    vo.setId(BaseUtils.str2Long(vo.getTableElementKey()));
+                    vos.add(vo);
+                }
+            }
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+        return vos;
+    }
+
     /**从元素名称中解析项目名称,细化项目匹配用*/
     public static  String parseItemName(String eName){
         if (StringUtils.isEmpty(eName)) {

+ 21 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/WbsTreeController.java

@@ -2,6 +2,7 @@ package org.springblade.manager.controller;
 
 
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.mixsmart.utils.FormulaUtils;
 import io.swagger.annotations.*;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import lombok.AllArgsConstructor;
@@ -45,6 +46,7 @@ import javax.servlet.http.HttpServletResponse;
 import javax.validation.Valid;
 import java.io.IOException;
 import java.util.*;
+import java.util.function.Predicate;
 import java.util.stream.Collectors;
 
 import static org.springblade.core.cache.constant.CacheConstant.SYS_CACHE;
@@ -272,7 +274,11 @@ public class WbsTreeController extends BladeController {
     public R<List<WbsFormElementVO>> selectFormElements4Formula(@RequestParam("id") String id, String search) {
         List<WbsFormElementVO> wbsFormElements = null;
         if (StringUtils.isNotEmpty(id)) {
-            wbsFormElements = wbsTreeService.selectFormElements4Formula(id);
+            if(isModel(id)){
+                wbsFormElements= this.dataModel(id);
+            }else{
+                wbsFormElements = wbsTreeService.selectFormElements4Formula(id);
+            }
             if (wbsFormElements.size() > 0) {
                 if (StringUtils.isNotEmpty(search)) {
                     wbsFormElements = wbsFormElements.stream().filter(e -> e.getEName().contains(search)).collect(Collectors.toList());
@@ -284,6 +290,20 @@ public class WbsTreeController extends BladeController {
         return R.data(wbsFormElements, "未查询到元素");
     }
 
+    public  boolean isModel(String id){
+         List<String> list = new ArrayList<>();
+         list.add(BaseInfo.ID);
+         list.add(MeterPeriodInfo.ID);
+         return list.contains(id);
+     };
+
+    public List<WbsFormElementVO> dataModel(String id){
+          if(BaseInfo.ID.equals(id)) {
+              return FormulaUtils.toElementVos(BaseInfo.class);
+          }
+          return Collections.emptyList();
+    }
+
     /**
      * 新增表单与元素
      */

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

@@ -12,6 +12,6 @@ public interface IFormulaDao {
     Function<Long, BaseInfo> getBaseInfo();
     /**获取计量段信息*/
     Function<Long, Map<String,Object>> getMeterPeriod();
-    /*获取清单信息*/
+    /**获取清单信息*/
     Function<Long, List<Material>> getMaterialForm();
 }

+ 7 - 5
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreePrivateServiceImpl.java

@@ -248,17 +248,19 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
         }
     }
     public  List<TreeNodeVOByTabType> baseList(){
-        Map<String,String> titleMap = new HashMap<>();
-        titleMap.put("合同信息",BaseInfo.TBN);
-        titleMap.put("开工材料计量期",MeterPeriodInfo.TBN);
+        Map<String,String[]> titleMap = new HashMap<>();
+        titleMap.put("合同信息",new String[]{BaseInfo.TBN,BaseInfo.ID});
+        titleMap.put("开工材料计量期",new String[]{MeterPeriodInfo.TBN,MeterPeriodInfo.ID});
         return titleMap.entrySet().stream().map(kv->{
             TreeNodeVOByTabType tn = new TreeNodeVOByTabType();
             tn.setTitle(kv.getKey());
             tn.setTabType("基础信息");
             tn.setParentId(2222236L);
-            tn.setParentId(2222236L);
+            tn.setId(Long.parseLong(kv.getValue()[1]));
+            tn.setPrimaryKeyId(kv.getValue()[1]);
+            tn.setInitTableId(kv.getValue()[1]);
             tn.setHasChildren(false);
-            tn.setInitTableName(kv.getValue());
+            tn.setInitTableName(kv.getValue()[0]);
             return tn;
         }).collect(Collectors.toList());
     }