|
@@ -3,6 +3,7 @@ package org.springblade.manager.service.impl;
|
|
|
|
|
|
import cn.hutool.core.util.HashUtil;
|
|
|
import cn.hutool.log.StaticLog;
|
|
|
+import com.alibaba.fastjson.JSON;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import com.jfireel.expression.Expression;
|
|
|
import com.mixsmart.utils.*;
|
|
@@ -81,6 +82,8 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
|
|
|
public static final Pattern POLY = Pattern.compile(POLY_REG);
|
|
|
public final static String CTI="ContractInfo";
|
|
|
public final static String PJI="ProjectInfo";
|
|
|
+ /**表单信息*/
|
|
|
+ public final static String TEXT_INFO_MAP="textInfoMap";
|
|
|
|
|
|
|
|
|
|
|
@@ -156,15 +159,12 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
|
|
|
this.tec.getLog().append("无法识别的依赖:").append(missingList.stream().map(e->e.replaceAll("'","")).collect(Collectors.joining(",")));
|
|
|
}
|
|
|
/*实测值参数*/
|
|
|
- List<Map<String,Object>> textInfoMap= this.jdbcTemplate.queryForList("SELECT b.tab_id pkId, b.col_key ekey,b.col_name val ,c.init_table_name tableName " +
|
|
|
- "from m_wbs_tree_contract a " +
|
|
|
- "inner join m_textdict_info b on a.p_key_id=b.tab_id " +
|
|
|
- "INNER JOIN m_wbs_tree c on (a.id=c.id or a.old_id=c.id) " +
|
|
|
- "where a.p_key_id in("+ this.tec.getTableAll().stream().map(AppWbsTreeContractVO::getPKeyId).map(Func::toStr).collect(Collectors.joining(","))+") and b.type=8");
|
|
|
- if(Func.isNotEmpty(textInfoMap)){
|
|
|
- Map<String,List<Map<String,Object>>> tmap = textInfoMap.stream().collect(Collectors.groupingBy(m->m.get("tableName")+StringPool.COLON+m.get("ekey")));
|
|
|
- this.constantMap.put("tmap",tmap);
|
|
|
- }
|
|
|
+ List<Map<String,Object>> textInfoMap= this.jdbcTemplate.queryForList("SELECT b.tab_id pkId,b.col_name val ,CONCAT(a.init_table_name,':',b.col_key)code from m_wbs_tree_contract a inner join m_textdict_info b on a.p_key_id=b.tab_id " +
|
|
|
+ "where a.p_key_id in("+this.tec.getTableAll().stream().map(AppWbsTreeContractVO::getPKeyId).map(Func::toStr).collect(Collectors.joining(","))+") and b.type=8 ");
|
|
|
+ if(Func.isNotEmpty(textInfoMap)){
|
|
|
+ Map<String,List<Map<String,Object>>> tmap = textInfoMap.stream().collect(Collectors.groupingBy(m->m.get("code").toString()));
|
|
|
+ this.constantMap.put(TEXT_INFO_MAP,tmap);
|
|
|
+ }
|
|
|
/*检查项目*/
|
|
|
return this;
|
|
|
}
|
|
@@ -202,89 +202,89 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- public void missingFill(List<String> missingList){
|
|
|
- /*数据池里面没有任何元素匹配和当前依赖匹配*/
|
|
|
- if(Func.isNotEmpty(missingList)){
|
|
|
- StaticLog.info("缺失元素{}", String.join(";", missingList));
|
|
|
- /*1从当前节点其它表格中查找匹配的元素*/
|
|
|
- List<String> removeList=new ArrayList<>();
|
|
|
- for(String r:missingList){
|
|
|
- String tn = r.substring(0,r.indexOf(StringPool.COLON));
|
|
|
- String key =r.substring(r.indexOf(StringPool.COLON)+1);
|
|
|
- List<AppWbsTreeContractVO> nodeList = this.tec.getTableAll().stream().filter(e->e.getInitTableName().equals(tn)).collect(Collectors.toList());
|
|
|
- if(Func.isNotEmpty(nodeList)){
|
|
|
- String tableName = nodeList.get(0).getInitTableName();
|
|
|
- try {
|
|
|
- if(!this.tec.getCoordinateMap().containsKey(tableName)){
|
|
|
- this.tec.getCoordinateMap().put(tableName, getTableCols(nodeList.get(0), null));
|
|
|
- }
|
|
|
- } catch (FileNotFoundException e) {
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- List<Map<String,Object>> tableDatas= this.jdbcTemplate.queryForList("select * from "+tableName+" where p_key_id in("+nodeList.stream().map(AppWbsTreeContractVO::getPKeyId).map(StringUtils::handleNull).collect(Collectors.joining(","))+")");
|
|
|
- fill(tableDatas,removeList,tn,key);
|
|
|
- }
|
|
|
- }
|
|
|
- if(Func.isNotEmpty(removeList)){
|
|
|
- /*移除已经找到的元素数据*/
|
|
|
- missingList.removeIf(removeList::contains);
|
|
|
- }
|
|
|
- if(Func.isNotEmpty(missingList)){
|
|
|
- /*2从当前节点的兄弟节点中查找匹配的元素*/
|
|
|
- CurrentNode currentNode = this.tec.getCurrentNode();
|
|
|
- List<Map<String,Object>> tableNamePkIdsMaps= this.jdbcTemplate.queryForList("select c.init_table_name tableName,c.p_key_id pkId from (select b.id from (select * from m_wbs_tree_contract where p_key_id="+currentNode.getPkId()+") a join m_wbs_tree_contract b on b.parent_id=a.parent_id where b.contract_id="+this.tec.getContractId()+" and b.is_deleted=0) k join m_wbs_tree_contract c on c.parent_id = k.id where c.contract_id="+this.tec.getContractId()+" and c.is_deleted=0 ");
|
|
|
- if(Func.isNotEmpty(tableNamePkIdsMaps)){
|
|
|
- removeList.clear();
|
|
|
- missingList.forEach(miss->{
|
|
|
- String tn = miss.substring(0,miss.indexOf(StringPool.COLON));
|
|
|
- String key =miss.substring(miss.indexOf(StringPool.COLON)+1);
|
|
|
- String targetIds=tableNamePkIdsMaps.stream().filter(m->StringUtils.isEquals(m.get("tableName"),tn)).map(m->m.get("pkId")).map(StringUtils::handleNull).collect(Collectors.joining(","));
|
|
|
- if(Func.isNotEmpty(targetIds)){
|
|
|
- List<Map<String,Object>> tableDatas= this.jdbcTemplate.queryForList("select * from "+tn+" where p_key_id in ("+targetIds+")");
|
|
|
- fill(tableDatas,removeList,tn,key);
|
|
|
- }
|
|
|
- });
|
|
|
- }
|
|
|
- }
|
|
|
- if(Func.isNotEmpty(removeList)){
|
|
|
- /*移除已经找到的元素数据*/
|
|
|
- missingList.removeIf(removeList::contains);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- public void fill(List<Map<String,Object>> tableDatas,List<String> removeList,String tn,String key){
|
|
|
- if(Func.isNotEmpty(tableDatas)){
|
|
|
- Map<String,Object> map = new HashMap<>();
|
|
|
- tableDatas.forEach(m->{
|
|
|
- for(Map.Entry<String,Object> entry:m.entrySet()){
|
|
|
- if(entry.getValue()!=null){
|
|
|
- map.merge(entry.getKey(), entry.getValue(), (v1, v2) -> v1 + ";" + v2);
|
|
|
- }
|
|
|
- }
|
|
|
- });
|
|
|
- this.tableDataMaps.put(tn,map);
|
|
|
- String values= StringUtils.handleNull(map.get(key));
|
|
|
- String r= tn+StringPool.COLON+key;
|
|
|
- if(StringUtils.isNotEmpty(values)){
|
|
|
- FormData tmp=createFormDataFast(r,values);
|
|
|
- if(tmp!=null){
|
|
|
- removeList.add(r);
|
|
|
- this.formDataMap.put(r,tmp);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- public FormData createFormDataFast(String code,String values){
|
|
|
+ public void missingFill(List<String> missingList){
|
|
|
+ /*数据池里面没有任何元素匹配和当前依赖匹配*/
|
|
|
+ if(Func.isNotEmpty(missingList)){
|
|
|
+ StaticLog.info("缺失元素{}", String.join(";", missingList));
|
|
|
+ /*1从当前节点其它表格中查找匹配的元素*/
|
|
|
+ List<String> removeList=new ArrayList<>();
|
|
|
+ for(String r:missingList){
|
|
|
+ String tn = r.substring(0,r.indexOf(StringPool.COLON));
|
|
|
+ String key =r.substring(r.indexOf(StringPool.COLON)+1);
|
|
|
+ List<AppWbsTreeContractVO> nodeList = this.tec.getTableAll().stream().filter(e->e.getInitTableName().equals(tn)).collect(Collectors.toList());
|
|
|
+ if(Func.isNotEmpty(nodeList)){
|
|
|
+ String tableName = nodeList.get(0).getInitTableName();
|
|
|
+ try {
|
|
|
+ if(!this.tec.getCoordinateMap().containsKey(tableName)){
|
|
|
+ this.tec.getCoordinateMap().put(tableName, getTableCols(nodeList.get(0), null));
|
|
|
+ }
|
|
|
+ } catch (FileNotFoundException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ List<Map<String,Object>> tableDatas= this.jdbcTemplate.queryForList("select * from "+tableName+" where p_key_id in("+nodeList.stream().map(AppWbsTreeContractVO::getPKeyId).map(StringUtils::handleNull).collect(Collectors.joining(","))+")");
|
|
|
+ fill(tableDatas,removeList,tn,key);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(Func.isNotEmpty(removeList)){
|
|
|
+ /*移除已经找到的元素数据*/
|
|
|
+ missingList.removeIf(removeList::contains);
|
|
|
+ }
|
|
|
+ if(Func.isNotEmpty(missingList)){
|
|
|
+ /*2从当前节点的兄弟节点中查找匹配的元素*/
|
|
|
+ CurrentNode currentNode = this.tec.getCurrentNode();
|
|
|
+ List<Map<String,Object>> tableNamePkIdsMaps= this.jdbcTemplate.queryForList("select c.init_table_name tableName,c.p_key_id pkId from (select b.id from (select * from m_wbs_tree_contract where p_key_id="+currentNode.getPkId()+") a join m_wbs_tree_contract b on b.parent_id=a.parent_id where b.contract_id="+this.tec.getContractId()+" and b.is_deleted=0) k join m_wbs_tree_contract c on c.parent_id = k.id where c.contract_id="+this.tec.getContractId()+" and c.is_deleted=0 ");
|
|
|
+ if(Func.isNotEmpty(tableNamePkIdsMaps)){
|
|
|
+ removeList.clear();
|
|
|
+ missingList.forEach(miss->{
|
|
|
+ String tn = miss.substring(0,miss.indexOf(StringPool.COLON));
|
|
|
+ String key =miss.substring(miss.indexOf(StringPool.COLON)+1);
|
|
|
+ String targetIds=tableNamePkIdsMaps.stream().filter(m->StringUtils.isEquals(m.get("tableName"),tn)).map(m->m.get("pkId")).map(StringUtils::handleNull).collect(Collectors.joining(","));
|
|
|
+ if(Func.isNotEmpty(targetIds)){
|
|
|
+ List<Map<String,Object>> tableDatas= this.jdbcTemplate.queryForList("select * from "+tn+" where p_key_id in ("+targetIds+")");
|
|
|
+ fill(tableDatas,removeList,tn,key);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(Func.isNotEmpty(removeList)){
|
|
|
+ /*移除已经找到的元素数据*/
|
|
|
+ missingList.removeIf(removeList::contains);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public void fill(List<Map<String,Object>> tableDatas,List<String> removeList,String tn,String key){
|
|
|
+ if(Func.isNotEmpty(tableDatas)){
|
|
|
+ Map<String,Object> map = new HashMap<>();
|
|
|
+ tableDatas.forEach(m->{
|
|
|
+ for(Map.Entry<String,Object> entry:m.entrySet()){
|
|
|
+ if(entry.getValue()!=null){
|
|
|
+ map.merge(entry.getKey(), entry.getValue(), (v1, v2) -> v1 + ";" + v2);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ this.tableDataMaps.put(tn,map);
|
|
|
+ String values= StringUtils.handleNull(map.get(key));
|
|
|
+ String r= tn+StringPool.COLON+key;
|
|
|
+ if(StringUtils.isNotEmpty(values)){
|
|
|
+ FormData tmp=createFormDataFast(r,values);
|
|
|
+ if(tmp!=null){
|
|
|
+ removeList.add(r);
|
|
|
+ this.formDataMap.put(r,tmp);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ public FormData createFormDataFast(String code,String values){
|
|
|
if(StringUtils.isNotEmpty(code,values)){
|
|
|
- return new FormData(code, Arrays.stream(values.split("☆")).map(s->{
|
|
|
+ return new FormData(code, Arrays.stream(values.split("☆")).map(s->{
|
|
|
String[] t = s.split("_\\^_");
|
|
|
String[] c =t[1].split("_");
|
|
|
return new ElementData(0,0,t[0],Func.toInt(c[1]),Func.toInt(c[0]));
|
|
|
}).collect(Collectors.toList()), null,StringPool.EMPTY);
|
|
|
}
|
|
|
return null;
|
|
|
- }
|
|
|
+ }
|
|
|
|
|
|
public Map<String, String> getTableCols(AppWbsTreeContractVO wbsTreeContract, String colkey) throws FileNotFoundException {
|
|
|
Map<String, String> dataMap = new HashMap<>();
|
|
@@ -320,9 +320,9 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
|
|
|
|
|
|
/**引入关键字*/
|
|
|
public void keyWord(Map<String,Object> constantMap){
|
|
|
- CustomFunction.KEYWORD_SET.forEach(e->{
|
|
|
- constantMap.put(e,e);
|
|
|
- });
|
|
|
+ CustomFunction.KEYWORD_SET.forEach(e->{
|
|
|
+ constantMap.put(e,e);
|
|
|
+ });
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -342,13 +342,15 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
|
|
|
if(Func.isNotEmpty(wpsPrivate)){
|
|
|
total.addAll(wpsPrivate);
|
|
|
}
|
|
|
+ Map<String,String> logMap =new HashMap<>();
|
|
|
if(CollectionUtil.isNotEmpty(total)){
|
|
|
/*同名参数私有覆盖公用*/
|
|
|
for(WbsParam p:total){
|
|
|
result.put(p.getK(),p.getV());
|
|
|
+ logMap.put(p.getK(),p.getName());
|
|
|
}
|
|
|
}
|
|
|
- this.tec.getLog().append("本节点参数情况:").append(result.entrySet().stream().map(p->p.getKey()+":"+p.getValue()).collect(Collectors.joining(";")));
|
|
|
+ this.tec.getLog().append("本节点参数情况:").append(result.entrySet().stream().map(p->logMap.get(p.getKey())+":"+p.getValue()).collect(Collectors.joining(";")));
|
|
|
/*元素动态绑定*/
|
|
|
this.formDataMap.values().stream().filter(e->e.getIsCurrentNodeElement()&&e.getFormula()==null).forEach(e->{
|
|
|
/*执行列表里不存在,且元素的名称和节点参数名称匹配成功*/
|
|
@@ -423,9 +425,9 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
|
|
|
}
|
|
|
}
|
|
|
if(CHECK_ITEMS.equals(tmp)){
|
|
|
- /*获取type=1的检验单或者type=4的监表*/
|
|
|
- List<WbsTreeContract> tableList= (List<WbsTreeContract>) this.constantMap.get(TABLE_LIST);
|
|
|
- Optional<WbsTreeContract> wop=tableList.stream().filter(e->e.getTableType()==1||e.getTableType()==4).findAny();
|
|
|
+ /*获取type=1的检验单或者type=4的监表*/
|
|
|
+ List<WbsTreeContract> tableList= (List<WbsTreeContract>) this.constantMap.get(TABLE_LIST);
|
|
|
+ Optional<WbsTreeContract> wop=tableList.stream().filter(e->e.getTableType()==1||e.getTableType()==4).findAny();
|
|
|
wop.ifPresent(wbsTreeContract -> 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=" + wbsTreeContract.getPKeyId()));
|
|
|
}
|
|
|
fd.getFormula().setFormula(tmp);
|
|
@@ -466,10 +468,10 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
|
|
|
if(CollectionUtil.isNotEmpty(relyList)){
|
|
|
List<FormData> ele = new ArrayList<>();
|
|
|
relyList.forEach(rely->{
|
|
|
- FormData formData= this.tec.getFormDataMap().get(rely);
|
|
|
- if(formData!=null&&formData.getValues().stream().anyMatch(Func::isNotEmpty)){
|
|
|
- ele.add(formData);
|
|
|
- }
|
|
|
+ FormData formData= this.tec.getFormDataMap().get(rely);
|
|
|
+ if(formData!=null&&formData.getValues().stream().anyMatch(Func::isNotEmpty)){
|
|
|
+ ele.add(formData);
|
|
|
+ }
|
|
|
});
|
|
|
if(ele.size()<relyList.size()){
|
|
|
this.tec.getLog().append(fd.getEName()).append(fd.getFormula().getFormula().replaceAll("'", "")).append("不满足执行依赖;");
|
|
@@ -512,12 +514,12 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
|
|
|
write(fd,data);
|
|
|
}
|
|
|
}catch (Exception e){
|
|
|
- tec.getLog().append(fd.getEName()).append("计算错误; ");
|
|
|
+ tec.getLog().append(fd.getEName()).append("计算错误; ");
|
|
|
}
|
|
|
|
|
|
}
|
|
|
- /*数量不相等*/
|
|
|
- fd.setUpdate(1);
|
|
|
+ /*数量不相等*/
|
|
|
+ fd.setUpdate(1);
|
|
|
}
|
|
|
}
|
|
|
return this;
|
|
@@ -565,16 +567,16 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
|
|
|
/*数据格式化*/
|
|
|
for(FormData fd:this.formDataList){
|
|
|
if(fd.verify()){
|
|
|
- /*保留小数位*/
|
|
|
- if(!fd.empty()&&fd.getValues().stream().map(ElementData::getValue).anyMatch(StringUtils::isDouble)){
|
|
|
- Formula f = fd.getFormula();
|
|
|
- Integer scale =f.getScale();
|
|
|
- if(scale==null){
|
|
|
- scale=2;
|
|
|
- }
|
|
|
- Integer finalScale = scale;
|
|
|
- fd.setValues(fd.getValues().stream().peek(e->{if(StringUtils.isDouble(e.getValue())){e.setValue(StringUtils.number2String(e.getValue(),finalScale));}}).collect(Collectors.toList()));
|
|
|
- }
|
|
|
+ /*保留小数位*/
|
|
|
+ if(!fd.empty()&&fd.getValues().stream().map(ElementData::getValue).anyMatch(StringUtils::isDouble)){
|
|
|
+ Formula f = fd.getFormula();
|
|
|
+ Integer scale =f.getScale();
|
|
|
+ if(scale==null){
|
|
|
+ scale=2;
|
|
|
+ }
|
|
|
+ Integer finalScale = scale;
|
|
|
+ fd.setValues(fd.getValues().stream().peek(e->{if(StringUtils.isDouble(e.getValue())){e.setValue(StringUtils.number2String(e.getValue(),finalScale));}}).collect(Collectors.toList()));
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -604,7 +606,7 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
|
|
|
entry.getValue().stream().max(Comparator.comparing(KeyMapper::getScope)).ifPresent(set::add);
|
|
|
}
|
|
|
if(set.size()>0){
|
|
|
- return new ArrayList<>(set);
|
|
|
+ return new ArrayList<>(set);
|
|
|
}
|
|
|
}
|
|
|
return Collections.emptyList();
|
|
@@ -612,12 +614,12 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
|
|
|
|
|
|
@Override
|
|
|
public List<Formula> getFormulaList(List<KeyMapper> keyMapperList) {
|
|
|
- if(Func.isNotEmpty(keyMapperList)){
|
|
|
- List<Formula> result = this.listByIds(keyMapperList.stream().map(KeyMapper::getFormulaId).collect(Collectors.toList()));
|
|
|
- if(Func.isNotEmpty(result)){
|
|
|
- return result;
|
|
|
- }
|
|
|
- }
|
|
|
+ if(Func.isNotEmpty(keyMapperList)){
|
|
|
+ List<Formula> result = this.listByIds(keyMapperList.stream().map(KeyMapper::getFormulaId).collect(Collectors.toList()));
|
|
|
+ if(Func.isNotEmpty(result)){
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+ }
|
|
|
return Collections.emptyList();
|
|
|
}
|
|
|
|
|
@@ -636,10 +638,10 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
|
|
|
int min =0;
|
|
|
List<Object> result = new ArrayList<>();
|
|
|
try {
|
|
|
- List<Object> r= local.stream().map(e-> Expression.parse(e.getFormula()).calculate(e.getCurrentMap())).collect(Collectors.toList());
|
|
|
- if(CollectionUtil.isNotEmpty(r)&&r.stream().anyMatch(StringUtils::isNotEmpty)){
|
|
|
- result.addAll(r);
|
|
|
- }
|
|
|
+ List<Object> r= local.stream().map(e-> Expression.parse(e.getFormula()).calculate(e.getCurrentMap())).collect(Collectors.toList());
|
|
|
+ if(CollectionUtil.isNotEmpty(r)&&r.stream().anyMatch(StringUtils::isNotEmpty)){
|
|
|
+ result.addAll(r);
|
|
|
+ }
|
|
|
}catch (Exception e){
|
|
|
StaticLog.error("公式:{},执行出错",formula);
|
|
|
}
|
|
@@ -723,11 +725,11 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
|
|
|
while (m.find()) {
|
|
|
Object data=null;
|
|
|
if(f.contains("quantity(")){
|
|
|
- String s = m.group(1).replace("'","");
|
|
|
- Map<String,List<Map<String,Object>>> tmap= (Map<String, List<Map<String, Object>>>) this.constantMap.getOrDefault("tmap",new HashMap<>());
|
|
|
- List<Map<String,Object>> tableColKeyVal= tmap.get(s);
|
|
|
+ String s = m.group(2).split(",")[0].replaceAll("[E\\[\\]']","");
|
|
|
+ Map<String,List<Map<String,Object>>> textInfoMap= (Map<String, List<Map<String, Object>>>) this.constantMap.getOrDefault(TEXT_INFO_MAP,new HashMap<>());
|
|
|
+ List<Map<String,Object>> tableColKeyVal= textInfoMap.get(s);
|
|
|
if(Func.isNotEmpty(tableColKeyVal)){
|
|
|
- data = tableColKeyVal.stream().map(map->{RangeInfo rangeInfo=BeanUtil.toBean((Map) map.get("val"), RangeInfo.class);return rangeInfo.getSize();}).collect(Collectors.toList());
|
|
|
+ data = tableColKeyVal.stream().map(map-> BeanUtil.toBean(JSON.parseObject(map.get("val").toString()),RangeInfo.class)).map(RangeInfo::getFail).findFirst().orElseGet(String::new);
|
|
|
}else{
|
|
|
/*手动计算*/
|
|
|
System.out.println("");
|
|
@@ -739,7 +741,7 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
|
|
|
for(String k:relyList){
|
|
|
FormData e=this.formDataMap.get(k);
|
|
|
if(e==null){
|
|
|
- this.tec.getLog().append(fd.getEName()).append("缺失依赖:").append(k);
|
|
|
+ this.tec.getLog().append(fd.getEName()).append("缺失依赖:").append(k).append(";");
|
|
|
return;
|
|
|
}
|
|
|
E.put(e.getCode(),e.getValues().stream().map(ElementData::getValue).collect(Collectors.toList()));
|
|
@@ -792,19 +794,19 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
|
|
|
//Map<String, Object> currentMap = new HashMap<>(this.constantMap);
|
|
|
Matcher fm=P.matcher(rep);
|
|
|
while (fm.find()){
|
|
|
- FormData kf= this.formDataMap.get(fm.group().replaceAll("'",""));
|
|
|
- if(kf!=null&&!kf.empty()){
|
|
|
- ElementData ed= kf.getValues().get(0);
|
|
|
- if(ed!=null&&Func.isNotEmpty(ed.getValue())){
|
|
|
- rep= rep.replace("E["+fm.group()+"]",ed.getValue().toString());
|
|
|
- rep="'"+rep+"'";
|
|
|
- f=f.replace(im.group(),rep);
|
|
|
- }else{
|
|
|
- f="";
|
|
|
- }
|
|
|
- }else{
|
|
|
+ FormData kf= this.formDataMap.get(fm.group().replaceAll("'",""));
|
|
|
+ if(kf!=null&&!kf.empty()){
|
|
|
+ ElementData ed= kf.getValues().get(0);
|
|
|
+ if(ed!=null&&Func.isNotEmpty(ed.getValue())){
|
|
|
+ rep= rep.replace("E["+fm.group()+"]",ed.getValue().toString());
|
|
|
+ rep="'"+rep+"'";
|
|
|
+ f=f.replace(im.group(),rep);
|
|
|
+ }else{
|
|
|
+ f="";
|
|
|
+ }
|
|
|
+ }else{
|
|
|
f="";
|
|
|
- }
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
formula.setFormula(f);
|