yangyj 2 年 前
コミット
fbca577861

+ 2 - 1
blade-service-api/blade-business-api/src/main/java/org/springblade/business/feign/MileageClient.java

@@ -14,7 +14,8 @@ import java.util.Map;
  * @author yangyj
  */
 @FeignClient(value = BusinessConstant.APPLICATION_WEATHER_NAME)
-public interface MileageClient {
+public interface
+MileageClient {
     /**
      * 接口前缀
      */

+ 9 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/dto/FormulaOptionVo.java

@@ -2,6 +2,7 @@ package org.springblade.manager.dto;
 
 import lombok.Data;
 import org.springblade.core.tool.utils.Func;
+import org.springblade.core.tool.utils.StringPool;
 import org.springblade.manager.entity.FormulaOption;
 
 /**
@@ -18,6 +19,7 @@ public class FormulaOptionVo {
     private String value;
     private Long pKeyId;
     private Integer scope;
+    private String name;
     public boolean saveChecked(){
         if( Func.isNotBlank(value)&&contractId!=null&&parentId!=null&&pKeyId!=null&&key!=null&&scope!=null){
             if(scope==0){
@@ -40,4 +42,11 @@ public class FormulaOptionVo {
     public boolean isCellScope(){
         return this.scope==1;
     }
+    public String createKey(){
+        if(isElementScope()){
+          return key;
+        }else{
+            return pKeyId+ StringPool.AT +key;
+        }
+    }
 }

+ 1 - 1
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/entity/FormulaOption.java

@@ -13,7 +13,7 @@ import lombok.EqualsAndHashCode;
  * @description TODO
  */
 @Data
-@TableName("m_formula")
+@TableName("m_formula_option")
 public class FormulaOption {
     @ApiModelProperty("主键id")
     @TableId(

+ 5 - 9
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/FormulaOptionServiceImpl.java

@@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.mixsmart.utils.StringUtils;
 import lombok.RequiredArgsConstructor;
-import org.springblade.core.tool.utils.StringPool;
 import org.springblade.manager.dto.FormulaOptionVo;
 import org.springblade.manager.entity.FormulaOption;
 import org.springblade.manager.entity.WbsTreeContract;
@@ -57,14 +56,11 @@ public class FormulaOptionServiceImpl extends ServiceImpl<FormulaOptionMapper, F
             FormulaOption formulaOption = this.getOne(Wrappers.<FormulaOption>lambdaQuery().eq(FormulaOption::getParentId,fo.getParentId()).eq(FormulaOption::getContractId,fo.getContractId()));
             if(formulaOption==null){
                 formulaOption=fo.toFo();
-                JSONObject jo = new JSONObject();
-                JSONObject table = (JSONObject) jo.computeIfAbsent(wbc.getInitTableName(),(k)->new JSONObject());
-                if(fo.isElementScope()){
-                    table.put(fo.getKey(),fo.getValue());
-                }else if(fo.isCellScope()){
-                    table.put(fo.getPKeyId()+ StringPool.AT +fo.getPKeyId(),fo.getValue());
-                }
-                formulaOption.setVal(jo.toJSONString());
+                JSONObject root = new JSONObject();
+                JSONObject table = (JSONObject) root.computeIfAbsent(wbc.getInitTableName(),(k)->new JSONObject());
+                JSONObject data = (JSONObject) table.computeIfAbsent(fo.createKey(),(k)->new JSONObject());
+                data.put(fo.getName(),fo.getValue());
+                formulaOption.setVal(root.toJSONString());
                 this.saveOrUpdate(formulaOption);
             }
         }

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

@@ -17,10 +17,7 @@ import org.springblade.core.mp.base.BaseServiceImpl;
 import org.springblade.core.tool.utils.*;
 import org.springblade.manager.bean.TableInfo;
 import org.springblade.manager.dto.*;
-import org.springblade.manager.entity.ContractInfo;
-import org.springblade.manager.entity.Formula;
-import org.springblade.manager.entity.WbsParam;
-import org.springblade.manager.entity.WbsTreeContract;
+import org.springblade.manager.entity.*;
 import org.springblade.manager.formula.FormulaStrategyFactory;
 import org.springblade.manager.formula.KeyMapper;
 import org.springblade.manager.formula.impl.CompositeDataAccess;
@@ -57,6 +54,7 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
     private final IProjectInfoService projectInfoService;
     private final IWbsTreeContractService wbsTreeContractService;
     private final JdbcTemplate jdbcTemplate;
+    private final IFormulaOptionService formulaOptionService;
     /**  private final Container env;*/
     private   TableElementConverter tec;
     private   Map<String,Object> constantMap;
@@ -71,12 +69,9 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
     public final static String FC="FC.";
     public final static String TABLE_LIST="TBL";
     public final static String CHECK_ITEMS="CKI";
-
     public static final Pattern AP=Pattern.compile("(E|WP)\\[([^]']+)]");
-
     public static final String IF_REG= "(?<=T\\(com.mixsmart.utils.CustomFunction\\).ifelse\\()[^,]+(?=,)";
     public static final Pattern IF = Pattern.compile(IF_REG);
-
     public static final String ELE_CODE_REG= "(?<=E\\[)[^]]+(?=])";
     public static final Pattern P = Pattern.compile(ELE_CODE_REG);
     public static final Pattern P2= Pattern.compile("(?<=E\\[)[^];]+:[^];]+:[^];]+(?=])");
@@ -138,7 +133,7 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
         Optional<AppWbsTreeContractVO> wop=tableList.stream().filter(e->e.getTableType()==1).findAny();
         if(wop.isPresent()){
             /*检验单或者监表的*/
-            inspectionElementMaps=  this.jdbcTemplate.queryForList("select c.e_name name ,c.init_table_name tableName,c.e_key ekey from m_wbs_tree_contract a INNER JOIN m_wbs_tree b on (a.id=b.id or a.old_id=b.id) INNER join m_wbs_form_element c on b.init_table_id=c.f_id where a.id=" + wop.get().getPKeyId());
+            inspectionElementMaps=  this.jdbcTemplate.queryForList(" select c.e_name name ,b.tab_en_name tableName,c.e_key ekey from m_wbs_tree_contract a join m_table_info b on a.init_table_name=b.tab_en_name join m_wbs_form_element c on c.f_id= b.id where a.p_key_id=" + wop.get().getPKeyId());
         }
         List<String> missingList = new ArrayList<>();
         List<Map<String, Object>> finalInspectionElementMaps = inspectionElementMaps;
@@ -217,7 +212,11 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
             Map<String,List<Map<String,Object>>> tmap = textInfoMap.stream().collect(Collectors.groupingBy(m->m.get("code").toString()));
             this.constantMap.put(TEXT_INFO_MAP,tmap);
         }
-        /*检查项目*/
+        /*公式参数*/
+        FormulaOption formulaOption = this.formulaOptionService.getOne(Wrappers.<FormulaOption>lambdaQuery().eq(FormulaOption::getParentId,one.getId()).eq(FormulaOption::getContractId,contractId));
+        if(formulaOption!=null){
+           LinkedHashMap linkedHashMap = JSON.parseObject(formulaOption.getVal(),LinkedHashMap.class);
+        }
         return this;
     }
 
@@ -313,6 +312,7 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
         Document doc = Jsoup.parse(htmlString);
         Element table = doc.select("table").first();
         Elements trs = table.select("tr");
+       // trs.stream().flatMap(tr->tr.select("td").stream()).filter(d->!d.children().isEmpty()).reduce()
         for (int i = 0; i <= trs.size() - 1; i++) {
             Element tr = trs.get(i);
             Elements tds = tr.select("td");