提交 ca3a7cce 编写于 作者: sq3536's avatar sq3536

field

上级 d878a2b3
...@@ -6,6 +6,7 @@ import cn.ibizlab.core.extensions.cql.ExecResult; ...@@ -6,6 +6,7 @@ import cn.ibizlab.core.extensions.cql.ExecResult;
import cn.ibizlab.core.extensions.domain.BaseRequest; import cn.ibizlab.core.extensions.domain.BaseRequest;
import cn.ibizlab.core.extensions.domain.ResultsMQMsg; import cn.ibizlab.core.extensions.domain.ResultsMQMsg;
import cn.ibizlab.core.extensions.util.DefaultMQProducerService; import cn.ibizlab.core.extensions.util.DefaultMQProducerService;
import cn.ibizlab.core.lite.extensions.domain.FieldObj;
import cn.ibizlab.core.lite.extensions.domain.ModelObj; import cn.ibizlab.core.lite.extensions.domain.ModelObj;
import cn.ibizlab.core.rule.domain.ExecLog; import cn.ibizlab.core.rule.domain.ExecLog;
import cn.ibizlab.core.rule.service.IExecLogService; import cn.ibizlab.core.rule.service.IExecLogService;
...@@ -43,8 +44,9 @@ public class AnalyseEntityServiceImpl extends BaseEntityServiceImpl { ...@@ -43,8 +44,9 @@ public class AnalyseEntityServiceImpl extends BaseEntityServiceImpl {
private cn.ibizlab.util.client.IBZDictFeignClient ibzDictFeignClient; private cn.ibizlab.util.client.IBZDictFeignClient ibzDictFeignClient;
@Override @Override
public void saveResult(ModelObj param, String RULEID, String RULECODE, String RULENAME, String RU_EXECRESULTNAME, Object BUSINESSCAT, Integer RETVALUE, public void saveResult(ModelObj param, String RULEID,String RULECODE, String RULENAME, String RU_EXECRESULTNAME, FieldObj BUSINESSCAT,
Object KEYVALUEFIELD, Object DOMAINSFIELD, Object DIMFIELD, Object METRICFIELD, Object TIMEFIELD, Object EXT1FIELD, Object EXT2FIELD) Integer RETVALUE, FieldObj KEYVALUEFIELD, FieldObj DOMAINSFIELD,FieldObj DIMFIELD,
FieldObj METRICFIELD, FieldObj TIMEFIELD, FieldObj EXT1FIELD, FieldObj EXT2FIELD)
{ {
if(0==RETVALUE) if(0==RETVALUE)
return; return;
...@@ -55,45 +57,48 @@ public class AnalyseEntityServiceImpl extends BaseEntityServiceImpl { ...@@ -55,45 +57,48 @@ public class AnalyseEntityServiceImpl extends BaseEntityServiceImpl {
result.setRulename(RULENAME); result.setRulename(RULENAME);
result.setRuexecresultname(RU_EXECRESULTNAME); result.setRuexecresultname(RU_EXECRESULTNAME);
result.setRetvalue(RETVALUE); result.setRetvalue(RETVALUE);
result.setKeyvaluefield(DataObject.getStringValue(valueOf(KEYVALUEFIELD),param.getRowKey()));
//result.setSystemId(DataObject.getStringValue(param.get("systemid"),null)); if(DOMAINSFIELD==null)
result.setBusinesscat(DataObject.getStringValue(valueOf(BUSINESSCAT),null)); DOMAINSFIELD=param.getEmpty();
if(METRICFIELD!=null) { if(BUSINESSCAT==null)
Object val = METRICFIELD; BUSINESSCAT=param.getEmpty();
if ( (val instanceof BigDecimal)) if(METRICFIELD==null)
result.setMetricfield(((BigDecimal) val).doubleValue()); METRICFIELD=param.getEmpty();
else if ( (val instanceof Double)) if(TIMEFIELD==null)
result.setMetricfield(new BigDecimal((Double) val).doubleValue()); TIMEFIELD=param.getEmpty();
else if ( (val instanceof Float)) if(EXT1FIELD==null)
result.setMetricfield(new BigDecimal(((Float) val).doubleValue()).doubleValue()); EXT1FIELD=param.getEmpty();
else if ( (val instanceof Integer)) if(EXT2FIELD==null)
result.setMetricfield(new BigDecimal((int)val).doubleValue()); EXT2FIELD=param.getEmpty();
else
result.setMetricfield(1d); result.setKeyvaluefield(param.getRowKey());
}
else result.setBusinesscat(BUSINESSCAT.getValue(String.class,null));
result.setMetricfield(1d);
Object timefield=valueOf(TIMEFIELD); result.setMetricfield(METRICFIELD.getDecimal().doubleValue());
if(timefield!=null&&timefield instanceof Timestamp)
result.setTimefield(ExecResult.time2LocalDate(((Timestamp)TIMEFIELD))); Timestamp timefield=TIMEFIELD.getValue(Timestamp.class,null);
if(EXT1FIELD!=null) { if(timefield!=null)
String ext1=valuesOf(EXT1FIELD); result.setTimefield(ExecResult.time2LocalDate(timefield));
if(ext1!=null&&ext1.length()>330)
ext1=ext1.substring(0,330)+"...";
String ext1=EXT1FIELD.getValues();
if(ext1.length()>330)
ext1=ext1.substring(0,330)+"...";
if(!StringUtils.isEmpty(ext1))
result.setExt1field(ext1); result.setExt1field(ext1);
}
if(EXT2FIELD!=null) {
String ext2=valuesOf(EXT2FIELD); String ext2=EXT2FIELD.getValues();
if(ext2!=null&&ext2.length()>330) if(ext2.length()>330)
ext2=ext2.substring(0,330)+"..."; ext2=ext2.substring(0,330)+"...";
if(!StringUtils.isEmpty(ext2))
result.setExt2field(ext2); result.setExt2field(ext2);
}
if(DOMAINSFIELD!=null) result.setDomainsfield(DOMAINSFIELD.getValue(String.class, ""));
{
result.setDomainsfield(DataObject.getStringValue(valueOf(DOMAINSFIELD), ""));
}
if((!StringUtils.isEmpty(result.getRuleid()))&&(!StringUtils.isEmpty(result.getDomainsfield()))&&(!StringUtils.isEmpty(result.getKeyvaluefield()))&&(!ObjectUtils.isEmpty(result.getTimefield()))) { if((!StringUtils.isEmpty(result.getRuleid()))&&(!StringUtils.isEmpty(result.getDomainsfield()))&&(!StringUtils.isEmpty(result.getKeyvaluefield()))&&(!ObjectUtils.isEmpty(result.getTimefield()))) {
result.setUpdatedate(ExecResult.nowLocalDate()); result.setUpdatedate(ExecResult.nowLocalDate());
...@@ -102,8 +107,8 @@ public class AnalyseEntityServiceImpl extends BaseEntityServiceImpl { ...@@ -102,8 +107,8 @@ public class AnalyseEntityServiceImpl extends BaseEntityServiceImpl {
if(dims!=null) { if(dims!=null) {
ArrayList<ExecResult> results = new ArrayList<>(); ArrayList<ExecResult> results = new ArrayList<>();
for (DADimension dim : dims) { for (DADimension dim : dims) {
Object codevalue=param.$(dim.getField()); String codevalue=param.$(dim.getField()).getValue(String.class,"");
if(!ObjectUtils.isEmpty(codevalue)) if(!StringUtils.isEmpty(codevalue))
{ {
String dictname=dim.getDict(); String dictname=dim.getDict();
Object val=codevalue; Object val=codevalue;
...@@ -118,7 +123,7 @@ public class AnalyseEntityServiceImpl extends BaseEntityServiceImpl { ...@@ -118,7 +123,7 @@ public class AnalyseEntityServiceImpl extends BaseEntityServiceImpl {
{ {
ExecResult result2 = new ExecResult(); ExecResult result2 = new ExecResult();
CachedBeanCopier.copy(result, result2); CachedBeanCopier.copy(result, result2);
result2.setDimfield(valuesOf(code.getValue())); result2.setDimfield(code.getValue().toString());
saveResults.add(result2); saveResults.add(result2);
//非逐层核算或无父代码项退出 //非逐层核算或无父代码项退出
if(dim.getRecursive() == 0 || StringUtils.isEmpty(code.getParent())) if(dim.getRecursive() == 0 || StringUtils.isEmpty(code.getParent()))
...@@ -135,7 +140,7 @@ public class AnalyseEntityServiceImpl extends BaseEntityServiceImpl { ...@@ -135,7 +140,7 @@ public class AnalyseEntityServiceImpl extends BaseEntityServiceImpl {
} }
}else{ }else{
//维度未指定代码表时,只保存一条数据 //维度未指定代码表时,只保存一条数据
result.setDimfield(valuesOf(codevalue)); result.setDimfield(codevalue);
saveResults.add(result); saveResults.add(result);
} }
} }
......
package cn.ibizlab.core.extensions.service; package cn.ibizlab.core.extensions.service;
import cn.ibizlab.core.extensions.domain.BaseRequest; import cn.ibizlab.core.extensions.domain.BaseRequest;
import cn.ibizlab.core.lite.extensions.domain.FieldObj;
import cn.ibizlab.core.lite.extensions.domain.ModelObj; import cn.ibizlab.core.lite.extensions.domain.ModelObj;
import cn.ibizlab.core.rule.domain.ExecLog; import cn.ibizlab.core.rule.domain.ExecLog;
import cn.ibizlab.util.errors.BadRequestAlertException; import cn.ibizlab.util.errors.BadRequestAlertException;
...@@ -14,5 +15,6 @@ public interface BaseEntityService { ...@@ -14,5 +15,6 @@ public interface BaseEntityService {
void reset(String keyContainer); void reset(String keyContainer);
ExecLog processAll(BaseRequest msg); ExecLog processAll(BaseRequest msg);
void saveResult(ModelObj param, String RULEID, String RULECODE, String RULENAME, String RU_EXECRESULTNAME, Object BUSINESSCAT, Integer RETVALUE, Object KEYVALUEFIELD, Object DOMAINSFIELD,Object DIMFIELD, Object METRICFIELD, Object TIMEFIELD, Object EXT1FIELD, Object EXT2FIELD); void saveResult(ModelObj param, String RULEID, String RULECODE, String RULENAME, String RU_EXECRESULTNAME, FieldObj BUSINESSCAT, Integer RETVALUE, FieldObj KEYVALUEFIELD, FieldObj DOMAINSFIELD, FieldObj DIMFIELD,
FieldObj METRICFIELD, FieldObj TIMEFIELD, FieldObj EXT1FIELD, FieldObj EXT2FIELD);
} }
\ No newline at end of file
package cn.ibizlab.core.lite.extensions.domain; package cn.ibizlab.core.lite.extensions.domain;
import cn.ibizlab.core.lite.extensions.model.DataModel;
import cn.ibizlab.core.lite.extensions.model.Property;
import cn.ibizlab.util.helper.DataObject;
import cn.ibizlab.util.helper.RuleUtils;
import com.alibaba.fastjson.annotation.JSONField;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Getter; import lombok.Getter;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import lombok.Setter; import lombok.Setter;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
import org.springframework.util.StringUtils;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.sql.Timestamp;
import java.util.List;
@Getter @Getter
@Setter @Setter
@NoArgsConstructor @NoArgsConstructor
@Accessors(chain = true) @Accessors(chain = true)
public class FieldObj<T> { public class FieldObj {
public DataModel getDataModel()
{
if(property!=null)
return property.getOwnerDataModel();
return null;
}
@JsonIgnore
@JSONField(serialize = false)
public String getDataModelName()
{
if(getDataModel()!=null&&getDataModel().getDataModelName()!=null)
return getDataModel().getDataModelName();
else
return "";
}
@JsonIgnore
@JSONField(serialize = false)
private Property property;
public FieldObj setProperty(Property property)
{
this.property=property;
return this;
}
private String columnName; private String columnName;
private T obj; private Object value;
public <T> T getValue(T defaultVal)
{
return getValue(null,defaultVal);
}
public <T> T getValue(Class<T> type,T defaultVal)
{
T ret=defaultVal;
if(value==null)
return ret;
Object obj=null;
if((!(defaultVal instanceof List))&&(value instanceof List))
{
for(Object item:(List)value){
if(item!=null) {
if(obj==null|| RuleUtils.gt(obj,item))
obj = item;
}
}
if(obj==null)
return defaultVal;
}
else
{
obj=value;
}
if(type == null && defaultVal != null)
type = (Class<T>) defaultVal.getClass();
ret = DataObject.valueOf(type,obj);
if(ret==null)
return defaultVal;
return ret;
}
public <T> T getItemValue(int idx,Class<T> type,T defaultVal)
{
if(value instanceof List)
{
List list=(List)value;
if(list.size()>idx)
{
T ret=DataObject.valueOf(type,list.get(idx));
if(ret==null)
return defaultVal;
}
return defaultVal;
}
else
return getValue(type,defaultVal);
}
@JsonIgnore
@JSONField(serialize = false)
public String getValues()
{
String rt="";
if(value!=null && value instanceof List)
{
for(Object item:(List)value){
if(item!=null) {
if((!StringUtils.isEmpty(rt))&&(!rt.endsWith(",")))
rt=rt+",";
rt = rt+DataObject.getStringValue(item,"");
}
}
}
else
{
rt=DataObject.getStringValue(value,"");
}
return rt;
}
@JsonIgnore
@JSONField(serialize = false)
public Integer getCount()
{
return getCount(true);
}
@JsonIgnore
@JSONField(serialize = false)
public Integer getCount(boolean includeNull)
{
if(includeNull)
{
if(value instanceof List)
return ((List) value).size()==0?1:((List) value).size();
else
return 1;
}
if(value==null)
return 0;
else if(value instanceof List)
{
List list = (List)value;
int cnt=0;
for(Object item:list)
cnt+=StringUtils.isEmpty(DataObject.getStringValue(list.get(0),null))?0:1;
return cnt;
}
else
return StringUtils.isEmpty(value.toString())?0:1;
}
@JsonIgnore
@JSONField(serialize = false)
public Boolean isEmpty()
{
return getCount(false)==0;
}
@JsonIgnore
@JSONField(serialize = false)
public Boolean isNotEmpty()
{
return !isEmpty();
}
@JsonIgnore
@JSONField(serialize = false)
public Boolean isMultiple()
{
return getCount()>1;
}
@JsonIgnore
@JSONField(serialize = false)
public Boolean isSingle()
{
return !isMultiple();
}
@JsonIgnore
@JSONField(serialize = false)
public Boolean isSingleAndNotEmpty()
{
return isSingle()&&isNotEmpty();
}
@JsonIgnore
@JSONField(serialize = false)
public BigDecimal getDecimal()
{
BigDecimal decimal = new BigDecimal(1);
Object val = this.getValue(Object.class,null);
if(val == null)
decimal=(new BigDecimal(1));
else if ( (val instanceof BigDecimal))
decimal=(((BigDecimal) val));
else if (val instanceof Double)
decimal=(new BigDecimal((Double) val));
else if (val instanceof Float)
decimal=(new BigDecimal(((Float) val).doubleValue()));
else if (val instanceof Integer)
decimal=(new BigDecimal((int)val));
else if (val instanceof Long)
decimal=(new BigDecimal((Long)val));
if(decimal.intValue()>Integer.MAX_VALUE)
decimal=(new BigDecimal(1));
return decimal;
}
public BigDecimal getItemDecimal(int idx)
{
BigDecimal decimal = new BigDecimal(1);
Object val = this.getItemValue(idx,Object.class,null);
if(val == null)
decimal=(new BigDecimal(1));
else if ( (val instanceof BigDecimal))
decimal=(((BigDecimal) val));
else if (val instanceof Double)
decimal=(new BigDecimal((Double) val));
else if (val instanceof Float)
decimal=(new BigDecimal(((Float) val).doubleValue()));
else if (val instanceof Integer)
decimal=(new BigDecimal((int)val));
else if (val instanceof Long)
decimal=(new BigDecimal((Long)val));
if(decimal.intValue()>Integer.MAX_VALUE)
decimal=(new BigDecimal(1));
return decimal;
}
@Override
public String toString()
{
return getValues();
}
public static void main(String[] args)
{
FieldObj fieldObj=new FieldObj();
fieldObj.setValue(new BigDecimal(1));
Object t=fieldObj.getValue(Object.class,null);
System.out.println(t);
}
} }
...@@ -321,7 +321,7 @@ public class ModelObj extends DataObj<String,Object> { ...@@ -321,7 +321,7 @@ public class ModelObj extends DataObj<String,Object> {
public Object $(String key) public FieldObj $(String key)
{ {
if(key.toString().indexOf(".")>0) if(key.toString().indexOf(".")>0)
{ {
...@@ -331,13 +331,16 @@ public class ModelObj extends DataObj<String,Object> { ...@@ -331,13 +331,16 @@ public class ModelObj extends DataObj<String,Object> {
String name=epair[0]; String name=epair[0];
String column=epair[1]; String column=epair[1];
Property property=this.getDataModel().findObjectProperty(name,"UP"); Property property=this.getDataModel().findObjectProperty(name,"UP");
if(property!=null) if(property!=null) {
return this.getEntity(name).get(column); Object val=this.getEntity(name).get(column);
return new FieldObj().setValue(val).setProperty(property);
}
property=this.getDataModel().findObjectProperty(name,"DOWN"); property=this.getDataModel().findObjectProperty(name,"DOWN");
if(property!=null) if(property!=null)
{ {
return this.getNested(property.getOwnerDataModel().getDataModelName()).get(key); Object val=this.getNested(property.getOwnerDataModel().getDataModelName()).get(key);
return new FieldObj().setValue(val).setProperty(property);
} }
if(this.getParent()!=null) if(this.getParent()!=null)
...@@ -346,21 +349,29 @@ public class ModelObj extends DataObj<String,Object> { ...@@ -346,21 +349,29 @@ public class ModelObj extends DataObj<String,Object> {
} }
} }
return get(key); return new FieldObj().setValue(get(key)).setProperty(this.getDataModel().getFactPorperty());
} }
@JsonIgnore
public Double $D(String key) @JSONField(serialize = false)
private FieldObj empty;
@JsonIgnore
@JSONField(serialize = false)
public FieldObj getEmpty()
{ {
Object val=this.get(key); if(empty==null)
if(val==null) empty=new FieldObj().setValue(null).setProperty(this.getDataModel().getFactPorperty());
return 0d; return empty;
else if((val instanceof Integer)||(val instanceof Double)||(val instanceof Long)||(val instanceof BigDecimal)||(val instanceof BigInteger)||(val instanceof Float)) }
return (double)val;
return 1d; public FieldObj $S(String val)
{
return new FieldObj().setValue(val).setProperty(this.getDataModel().getFactPorperty());
} }
public boolean IF(String cond) public boolean IF(String cond)
......
...@@ -11,7 +11,7 @@ activation-group "<#if ruleid??>${ruleid}</#if>" ...@@ -11,7 +11,7 @@ activation-group "<#if ruleid??>${ruleid}</#if>"
${datamodelname}:ModelObj( <#if rulecond??>${rulecond}</#if> ) ${datamodelname}:ModelObj( <#if rulecond??>${rulecond}</#if> )
<#if (releationcond??)>${releationcond}</#if> <#if (releationcond??)>${releationcond}</#if>
then then
BaseService.saveResult(${datamodelname},"<#if ruleid??>${ruleid}</#if>","<#if rulecode??>${rulecode}</#if>","<#if rulename??>${rulename}</#if>","<#if memo??>${memo}</#if>",<#if hasbusinesscatfield>${businesscatfield}<#else>"${businesscat}"</#if>,1,${keyvaluefield},${domainsfield},${dimfield},${metricfield},${timefield},${ext1field},${ext2field}); BaseService.saveResult(${datamodelname},"<#if ruleid??>${ruleid}</#if>","<#if rulecode??>${rulecode}</#if>","<#if rulename??>${rulename}</#if>","<#if memo??>${memo}</#if>",<#if hasbusinesscatfield>${businesscatfield}<#else>$S("${businesscat}")</#if>,1,${keyvaluefield},${domainsfield},${dimfield},${metricfield},${timefield},${ext1field},${ext2field});
end end
rule "<#if ruleid??>${ruleid}_d</#if>" rule "<#if ruleid??>${ruleid}_d</#if>"
salience 0 salience 0
......
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册