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

field

上级 d878a2b3
......@@ -6,6 +6,7 @@ import cn.ibizlab.core.extensions.cql.ExecResult;
import cn.ibizlab.core.extensions.domain.BaseRequest;
import cn.ibizlab.core.extensions.domain.ResultsMQMsg;
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.rule.domain.ExecLog;
import cn.ibizlab.core.rule.service.IExecLogService;
......@@ -43,8 +44,9 @@ public class AnalyseEntityServiceImpl extends BaseEntityServiceImpl {
private cn.ibizlab.util.client.IBZDictFeignClient ibzDictFeignClient;
@Override
public 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)
public 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)
{
if(0==RETVALUE)
return;
......@@ -55,45 +57,48 @@ public class AnalyseEntityServiceImpl extends BaseEntityServiceImpl {
result.setRulename(RULENAME);
result.setRuexecresultname(RU_EXECRESULTNAME);
result.setRetvalue(RETVALUE);
result.setKeyvaluefield(DataObject.getStringValue(valueOf(KEYVALUEFIELD),param.getRowKey()));
//result.setSystemId(DataObject.getStringValue(param.get("systemid"),null));
result.setBusinesscat(DataObject.getStringValue(valueOf(BUSINESSCAT),null));
if(METRICFIELD!=null) {
Object val = METRICFIELD;
if ( (val instanceof BigDecimal))
result.setMetricfield(((BigDecimal) val).doubleValue());
else if ( (val instanceof Double))
result.setMetricfield(new BigDecimal((Double) val).doubleValue());
else if ( (val instanceof Float))
result.setMetricfield(new BigDecimal(((Float) val).doubleValue()).doubleValue());
else if ( (val instanceof Integer))
result.setMetricfield(new BigDecimal((int)val).doubleValue());
else
result.setMetricfield(1d);
}
else
result.setMetricfield(1d);
Object timefield=valueOf(TIMEFIELD);
if(timefield!=null&&timefield instanceof Timestamp)
result.setTimefield(ExecResult.time2LocalDate(((Timestamp)TIMEFIELD)));
if(EXT1FIELD!=null) {
String ext1=valuesOf(EXT1FIELD);
if(ext1!=null&&ext1.length()>330)
ext1=ext1.substring(0,330)+"...";
if(DOMAINSFIELD==null)
DOMAINSFIELD=param.getEmpty();
if(BUSINESSCAT==null)
BUSINESSCAT=param.getEmpty();
if(METRICFIELD==null)
METRICFIELD=param.getEmpty();
if(TIMEFIELD==null)
TIMEFIELD=param.getEmpty();
if(EXT1FIELD==null)
EXT1FIELD=param.getEmpty();
if(EXT2FIELD==null)
EXT2FIELD=param.getEmpty();
result.setKeyvaluefield(param.getRowKey());
result.setBusinesscat(BUSINESSCAT.getValue(String.class,null));
result.setMetricfield(METRICFIELD.getDecimal().doubleValue());
Timestamp timefield=TIMEFIELD.getValue(Timestamp.class,null);
if(timefield!=null)
result.setTimefield(ExecResult.time2LocalDate(timefield));
String ext1=EXT1FIELD.getValues();
if(ext1.length()>330)
ext1=ext1.substring(0,330)+"...";
if(!StringUtils.isEmpty(ext1))
result.setExt1field(ext1);
}
if(EXT2FIELD!=null) {
String ext2=valuesOf(EXT2FIELD);
if(ext2!=null&&ext2.length()>330)
ext2=ext2.substring(0,330)+"...";
String ext2=EXT2FIELD.getValues();
if(ext2.length()>330)
ext2=ext2.substring(0,330)+"...";
if(!StringUtils.isEmpty(ext2))
result.setExt2field(ext2);
}
if(DOMAINSFIELD!=null)
{
result.setDomainsfield(DataObject.getStringValue(valueOf(DOMAINSFIELD), ""));
}
result.setDomainsfield(DOMAINSFIELD.getValue(String.class, ""));
if((!StringUtils.isEmpty(result.getRuleid()))&&(!StringUtils.isEmpty(result.getDomainsfield()))&&(!StringUtils.isEmpty(result.getKeyvaluefield()))&&(!ObjectUtils.isEmpty(result.getTimefield()))) {
result.setUpdatedate(ExecResult.nowLocalDate());
......@@ -102,8 +107,8 @@ public class AnalyseEntityServiceImpl extends BaseEntityServiceImpl {
if(dims!=null) {
ArrayList<ExecResult> results = new ArrayList<>();
for (DADimension dim : dims) {
Object codevalue=param.$(dim.getField());
if(!ObjectUtils.isEmpty(codevalue))
String codevalue=param.$(dim.getField()).getValue(String.class,"");
if(!StringUtils.isEmpty(codevalue))
{
String dictname=dim.getDict();
Object val=codevalue;
......@@ -118,7 +123,7 @@ public class AnalyseEntityServiceImpl extends BaseEntityServiceImpl {
{
ExecResult result2 = new ExecResult();
CachedBeanCopier.copy(result, result2);
result2.setDimfield(valuesOf(code.getValue()));
result2.setDimfield(code.getValue().toString());
saveResults.add(result2);
//非逐层核算或无父代码项退出
if(dim.getRecursive() == 0 || StringUtils.isEmpty(code.getParent()))
......@@ -135,7 +140,7 @@ public class AnalyseEntityServiceImpl extends BaseEntityServiceImpl {
}
}else{
//维度未指定代码表时,只保存一条数据
result.setDimfield(valuesOf(codevalue));
result.setDimfield(codevalue);
saveResults.add(result);
}
}
......
package cn.ibizlab.core.extensions.service;
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.rule.domain.ExecLog;
import cn.ibizlab.util.errors.BadRequestAlertException;
......@@ -14,5 +15,6 @@ public interface BaseEntityService {
void reset(String keyContainer);
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;
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.NoArgsConstructor;
import lombok.Setter;
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
@Setter
@NoArgsConstructor
@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 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> {
public Object $(String key)
public FieldObj $(String key)
{
if(key.toString().indexOf(".")>0)
{
......@@ -331,13 +331,16 @@ public class ModelObj extends DataObj<String,Object> {
String name=epair[0];
String column=epair[1];
Property property=this.getDataModel().findObjectProperty(name,"UP");
if(property!=null)
return this.getEntity(name).get(column);
if(property!=null) {
Object val=this.getEntity(name).get(column);
return new FieldObj().setValue(val).setProperty(property);
}
property=this.getDataModel().findObjectProperty(name,"DOWN");
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)
......@@ -346,21 +349,29 @@ public class ModelObj extends DataObj<String,Object> {
}
}
return get(key);
return new FieldObj().setValue(get(key)).setProperty(this.getDataModel().getFactPorperty());
}
public Double $D(String key)
@JsonIgnore
@JSONField(serialize = false)
private FieldObj empty;
@JsonIgnore
@JSONField(serialize = false)
public FieldObj getEmpty()
{
Object val=this.get(key);
if(val==null)
return 0d;
else if((val instanceof Integer)||(val instanceof Double)||(val instanceof Long)||(val instanceof BigDecimal)||(val instanceof BigInteger)||(val instanceof Float))
return (double)val;
if(empty==null)
empty=new FieldObj().setValue(null).setProperty(this.getDataModel().getFactPorperty());
return empty;
}
return 1d;
public FieldObj $S(String val)
{
return new FieldObj().setValue(val).setProperty(this.getDataModel().getFactPorperty());
}
public boolean IF(String cond)
......
......@@ -11,7 +11,7 @@ activation-group "<#if ruleid??>${ruleid}</#if>"
${datamodelname}:ModelObj( <#if rulecond??>${rulecond}</#if> )
<#if (releationcond??)>${releationcond}</#if>
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
rule "<#if ruleid??>${ruleid}_d</#if>"
salience 0
......
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册