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

reset

上级 019d0297
package cn.ibizlab.core.extensions.domain;
import cn.ibizlab.core.extensions.util.IEntityActionHelper;
import cn.ibizlab.util.helper.RuleUtils;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.Data;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Hashtable;
import java.util.List;
import java.util.concurrent.ConcurrentHashMap;
@JsonIgnoreProperties(ignoreUnknown = true)
@Data
public class BaseEntity extends ConcurrentHashMap implements IEntity {
public String KEY;
public String ENTITYNAME;
public String KEYFIELDNAME;
public BaseEntity FACTENTITY;
public BaseEntity getFACTENTITY()
{
return FACTENTITY;
}
public void setFACTENTITY(BaseEntity FACTENTITY)
{
this.FACTENTITY = FACTENTITY;
}
@Override
public String toString()
{
return "";
}
public BaseEntity findRoot(String key)
{
if(key.equalsIgnoreCase("root")&&super.containsKey("rootentity"))
{
return (BaseEntity)super.get("rootentity");
}
return null;
}
public void regesitAttr(String key,BaseEntity val)
{
if(key.equalsIgnoreCase("root")&& !super.containsKey("rootentity"))
super.put("rootentity", val);
}
private IEntityActionHelper iEntityActionHelper = null;
public static BaseEntity createEntity(String factentity,BaseEntity item)
{
try
{
BaseEntity bt=(BaseEntity)Class.forName("net.ibizsys.dst.common.domain."+factentity).newInstance();
bt.putAll(item);
bt.regesitAttr("root", bt);
return bt;
}catch (Exception ex)
{
BaseEntity bt=new BaseEntity();
bt.putAll(item);
bt.regesitAttr("root", bt);
return bt;
}
}
private BaseField nullFiled=new BaseField();
@Override
public IField $(String key)
{
if(StringUtils.isEmpty(key))
return nullFiled;
Object obj=this.get(key);
if(obj instanceof IField)
{
IField f= (IField)obj;
if(f.getValue()!=null&&key.indexOf(".")>0)
{
String[] arr=key.split("[.]");
if(arr.length>=2)
{
if((!StringUtils.isEmpty(arr[0]))&&(!StringUtils.isEmpty(arr[1])))
{
f.setEntity(arr[0]);
f.setField(arr[1]);
}
}
}
return f;
}
else
return nullFiled;
}
@Override
public Double $D(String key)
{
IField field=this.$(key);
Object val=field.getValue();
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;
return 1d;
}
@Override
public boolean IF(String cond)
{
return test(cond);
}
public boolean isDel(String members)
{
String[] arr=members.split("[.]");
if(arr.length>=2&&(!StringUtils.isEmpty(arr[0])))
{
if(this.get(arr[0]+".SFSC")!=null)
{
if(this.get(arr[0]+".SFSC").toString().equals("Y")||this.get(arr[0]+".SFSC").toString().equals("1"))
{
return true;
}
}
}
return false;
}
@Override
public boolean test(String cond)
{
String[] arr=cond.split("\\s+");
String option="";
String members="";
String exp="";
if(arr.length>=2)
{
members=arr[0];
option=arr[1];
}
String[] ms=members.split("[.]");
if(ms.length>=2&&(!StringUtils.isEmpty(ms[0])))
{
Object sub=this.get(ms[0]);
if(sub!=null&& sub instanceof BaseEntityList)
{
return ((BaseEntityList)sub).test(cond);
}
}
if(arr.length>=3)
{
exp=arr[2];
if(exp.startsWith("%"))
{
if(isDel(members))
{
return false;
}
return test(this, members, option, execFunc(exp));
}
}
if(isDel(members))
{
return false;
}
return test(this, members, option, exp);
}
private Object execFunc(String exp)
{
Object rt=null;
exp=exp.replace("%", "").trim();
if(exp.startsWith("DAY("))
{
Calendar calendar = Calendar.getInstance();
String quStr=exp.substring(exp.indexOf("(")+1,exp.indexOf(")"));
quStr=quStr.replace("+","").trim();
int day=0;
if(!StringUtils.isEmpty(quStr)){
day= Integer.parseInt(quStr);
}
calendar.add(Calendar.DATE, day);
return new Timestamp(calendar.getTime().getTime());
}
else if(exp.endsWith(")"))
{
String quStr=exp.substring(exp.indexOf("(")+1,exp.indexOf(")"));
exp = exp.substring(0,exp.indexOf("(")).trim();
quStr=quStr.replace("+","").trim();
Integer day=0;
if(!StringUtils.isEmpty(quStr)){
day= Integer.parseInt(quStr);
}
Object val=null;
if(this.findRoot("root")!=null)
val= this.findRoot("root").$(exp).getValue();
else
val= this.$(exp).getValue();
if(val!=null)
{
if(val instanceof Timestamp)
{
Calendar calendar = Calendar.getInstance();
calendar.setTime((Timestamp)val);
calendar.add(Calendar.DATE, day);
return new Timestamp(calendar.getTime().getTime());
}
else if(val instanceof Integer)
{
return (int)val+day;
}
else if(val instanceof BigDecimal)
{
return ((BigDecimal)val).intValue()+day;
}
}
return val;
}
if(this.findRoot("root")!=null)
return this.findRoot("root").$(exp).getValue();
return this.$(exp).getValue();
}
public static boolean test(BaseEntity object,String members,String option,Object exp)
{
Object obj=object.getObj(members);
if(obj==null)
obj=new BaseField();
if(!(obj instanceof IField))
return false;
IField field=(IField)obj;
if(option.equalsIgnoreCase("eq")||option.equalsIgnoreCase("equal")||option.equalsIgnoreCase("="))
return field.EQ(exp);
else if (option.equalsIgnoreCase("noteq")||option.equalsIgnoreCase("notequal")||option.equalsIgnoreCase("<>")||option.equalsIgnoreCase("!="))
return field.NOTEQ(exp);
else if (option.equalsIgnoreCase("gt")||option.equalsIgnoreCase(">"))
return field.GT(exp);
else if (option.equalsIgnoreCase("lt")||option.equalsIgnoreCase("<"))
return field.LT(exp);
else if (option.equalsIgnoreCase("gtandeq")||option.equalsIgnoreCase("ge")||option.equalsIgnoreCase(">="))
return field.GTANDEQ(exp);
else if (option.equalsIgnoreCase("ltandeq")||option.equalsIgnoreCase("le")||option.equalsIgnoreCase("<="))
return field.LTANDEQ(exp);
else if (option.equalsIgnoreCase("null")||option.equalsIgnoreCase("isnull"))
return field.ISNULL(exp);
else if (option.equalsIgnoreCase("notnull")||option.equalsIgnoreCase("isnotnull"))
return field.ISNOTNULL(exp);
else if (option.equalsIgnoreCase("like")||option.equalsIgnoreCase("matchor"))
return field.LIKE(exp.toString());
else if (option.equalsIgnoreCase("leftlike")||option.equalsIgnoreCase("startswith"))
return field.LEFTLIKE(exp.toString());
else if (option.equalsIgnoreCase("rightlike")||option.equalsIgnoreCase("endswith"))
return field.RIGHTLIKE(exp.toString());
else if (option.equalsIgnoreCase("match")||option.equalsIgnoreCase("matchand")||option.equalsIgnoreCase("matches"))
return field.MATCHES(exp.toString());
else if (option.equalsIgnoreCase("in"))
return field.IN(exp.toString());
else if (option.equalsIgnoreCase("notin"))
return field.NOTIN(exp.toString());
else if (option.equalsIgnoreCase("inc2s"))
return field.INC2S(exp.toString());
else if (option.equalsIgnoreCase("notinc2s"))
return field.NOTINC2S(exp.toString());
else if (option.equalsIgnoreCase("NOTLIKE"))
return field.NOTLIKE(exp.toString());
else if (option.equalsIgnoreCase("LEFTNOTLIKE"))
return field.LEFTNOTLIKE(exp.toString());
else if (option.equalsIgnoreCase("RIGHTNOTLIKE"))
return field.RIGHTNOTLIKE(exp.toString());
else if (option.equalsIgnoreCase("NOTMATCHES"))
return field.NOTMATCHES(exp.toString());
else
return false;
}
@Override
public void setActionHelper(IEntityActionHelper iEntityActionHelper) {
this.iEntityActionHelper = iEntityActionHelper;
}
@Override
public IEntityActionHelper getActionHelper()
{
if (this.iEntityActionHelper == null ) {
return null;
}
return this.iEntityActionHelper;
}
@Override
public List<BaseEntity> selectRow(String dblink,String sql)
{
return this.getActionHelper().select(dblink,sql);
}
public void onFillObj(Object key)
{
if(key.toString().equalsIgnoreCase(this.ENTITYNAME))
{
if(this.getFACTENTITY()==null)
this.set(key.toString(), this);
else
this.set(key.toString() ,this.getFACTENTITY());
return ;
}
DSTEntityModel entityModel =this.getActionHelper().getModel(this.ENTITYNAME);
DSTEntityModel refmodel =this.getActionHelper().getModel(key.toString());
if (refmodel!=null&&entityModel!=null&&entityModel.getLookups().containsKey(key.toString()))
{
this.getRow(refmodel.getDblink(),key.toString(),refmodel.getSqltable(),entityModel.getLookups().get(key.toString()).getSelectCondition(),entityModel.getLookups().get(key.toString()).getParamsCondition());
}
else{
BaseEntity ret=new BaseEntity();
this.put(key,ret);
}
}
private Object objLock=new Object();
private Hashtable<Object,Integer> filled=new Hashtable<Object,Integer>();
@Override
public IEntity $E(String key) {
synchronized (objLock)
{
if(!filled.containsKey(key))
{
// if(!StringUtils.isEmpty(CodeListBase.getCodeListText("DST_CLEntityCodeList",key.toString())))
// this.onFillObj(key);
filled.put(key,1);
}
}
Object val=super.get(key);
if(val instanceof IEntity)
return (IEntity)val;
else if(val!=null&&val.getClass().isArray()){
BaseEntityList list=new BaseEntityList();
List<BaseEntity> acts=(ArrayList)val;
if(acts.size()==1)
{
this.put(key,acts.get(0));
return acts.get(0);
}
for(BaseEntity item : acts)
list.add(item);
this.put(key, list);
}
else{
val = new BaseEntity();
this.put(key, val);
}
return (IEntity)val;
}
@Override
public Object get(Object key) {
if(key.toString().indexOf(".")>0)
return this.getObj(key.toString());
synchronized (objLock)
{
if(!filled.containsKey(key))
{
// if(!StringUtils.isEmpty(CodeListBase.getCodeListText("DST_CLEntityCodeList",key.toString())))
// this.onFillObj(key);
filled.put(key,1);
}
}
Object val=super.get(key);
if(val instanceof IField)
return val;
else if(val instanceof IEntity)
return val;
else if(val!=null&&val.getClass().isArray()){
BaseEntityList list=new BaseEntityList();
List<BaseEntity> acts=(ArrayList)val;
if(acts.size()==1)
{
this.put(key,acts.get(0));
return acts.get(0);
}
for(BaseEntity item : acts)
list.add(item);
this.put(key, list);
}
else{
BaseField field=new BaseField();
field.setValue(val);
this.put(key, field);
}
return val;
}
@Override
public Object put(Object key, Object val) {
if(val instanceof IField)
return super.put(key, val);
else if(val instanceof IEntity) {
((IEntity) val).setENTITYNAME(key.toString());
((IEntity) val).regesitAttr("root", this.findRoot("root"));
return super.put(key, val);
}
else if(val!=null&&val.getClass().isArray()){
BaseEntityList list=new BaseEntityList();
List<BaseEntity> acts=(ArrayList)val;
if(acts.size()==1)
{
acts.get(0).setENTITYNAME(key.toString());
acts.get(0).regesitAttr("root",this.findRoot("root"));
return super.put(key,acts.get(0));
}
for(BaseEntity item : acts)
{
item.setENTITYNAME(key.toString());
item.regesitAttr("root",this.findRoot("root"));
list.add(item);
}
list.setENTITYNAME(key.toString());
list.regesitAttr("root",this.findRoot("root"));
return super.put(key, list);
}
else
{
BaseField field=new BaseField();
field.setValue(val);
return super.put(key, field);
}
}
public void putEntity(String key,BaseEntity val) {
if (val == null) {
return;
}
synchronized (objLock) {
if (!filled.containsKey(key)) {
this.put(key, val);
filled.put(key, 1);
return;
}
}
}
public void addEntity(String key,BaseEntity val)
{
if (val==null)
{
return;
}
val.setENTITYNAME(key);
val.regesitAttr("root",this.findRoot("root"));
synchronized (objLock)
{
if(!filled.containsKey(key))
{
this.put(key, val);
filled.put(key,1);
return ;
}
}
Object obj=super.get(key);
if(obj instanceof BaseEntity)
{
BaseEntityList list=new BaseEntityList();
list.add((BaseEntity)obj);
list.add(val);
list.setENTITYNAME(key);
list.regesitAttr("root",this.findRoot("root"));
this.put(key,list);
}
else if(obj instanceof BaseEntityList)
{
((BaseEntityList)obj).add(val);
}
else
{
this.put(key, val);
}
}
public Object set(Object key, Object val)
{
return this.put(key,val);
}
public Object getObj(String key)
{
return RuleUtils.getObj(this,key);
}
public Object getRow(String dblink,String itemkey,String selectcommand,String lookupcond,List<String> lookupkeys)
{
if(StringUtils.isEmpty(selectcommand))
selectcommand="select * from " + itemkey + " where 1=1 ";
List<String> params=new ArrayList<String>();
for(String lookupkey:lookupkeys)
{
Object key=this.getObj(lookupkey);
if((key instanceof IField))
{
params.add(((IField) key).getCondValue());
}
else
params.add("null");
}
List<BaseEntity> list= this.selectRow( dblink,selectcommand+String.format(lookupcond,params.toArray()));
if(list==null||list.size()==0)
{
BaseEntity ret=new BaseEntity();
this.put(itemkey,ret);
return ret;
}
else if(list.size()==1)
{
this.put(itemkey,list.get(0));
return list.get(0);
}
else
{
BaseEntityList rt=new BaseEntityList();
for(BaseEntity item : list)
{
item.setENTITYNAME(itemkey);
item.regesitAttr("root",this.findRoot("root"));
rt.add(item);
}
this.put(itemkey, rt);
return rt;
}
}
}
\ No newline at end of file
package cn.ibizlab.core.extensions.domain;
import cn.ibizlab.core.extensions.util.IEntityActionHelper;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.Data;
import org.springframework.util.StringUtils;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.List;
@JsonIgnoreProperties(ignoreUnknown = true)
@Data
public class BaseEntityList extends ArrayList<BaseEntity> implements IEntity {
public String KEY;
public String ENTITYNAME;
private BaseField nullFiled=new BaseField();
private BaseEntity root;
public void regesitAttr(String key,BaseEntity val)
{
if(key.equalsIgnoreCase("root")&&root==null)
root=val;
}
@Override
public IEntity $E(String key) {
return new BaseEntity();
}
@Override
public Object get(Object key) {
if(key instanceof Integer)
return super.get((int)key);
BaseFieldList list=new BaseFieldList();
for(BaseEntity item:this)
{
Object val=item.get(key);
if(val instanceof BaseField)
list.add((BaseField)val);
}
if(list.size()==1)
return list.get(0);
else if(list.size()==0)
return nullFiled;
else
return list;
}
@Override
public IField $(String key)
{
if(StringUtils.isEmpty(key))
return nullFiled;
Object obj=this.get(key);
if(obj instanceof IField)
{
IField f= (IField)obj;
if(f.getValue()!=null&&key.indexOf(".")>0)
{
String[] arr=key.split("[.]");
if(arr.length>=2)
{
if((!StringUtils.isEmpty(arr[0]))&&(!StringUtils.isEmpty(arr[1])))
{
f.setEntity(arr[0]);
f.setField(arr[1]);
}
}
}
return f;
}
else
return nullFiled;
}
@Override
public Double $D(String key)
{
IField field=this.$(key);
Object val=field.getValue();
if(field instanceof BaseFieldList)
val=((BaseFieldList) field).get(0);
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;
return 1d;
}
@Override
public boolean IF(String cond)
{
return test(cond);
}
@Override
public boolean test(String cond)
{
{
for(BaseEntity obj:this)
{
obj.setENTITYNAME(this.ENTITYNAME);
if(obj.test(cond))
return true;
}
return false;
}
}
private IEntityActionHelper iEntityActionHelper = null;
@Override
public void setActionHelper(IEntityActionHelper iEntityActionHelper) {
this.iEntityActionHelper = iEntityActionHelper;
}
@Override
public IEntityActionHelper getActionHelper()
{
if (this.iEntityActionHelper == null ) {
return null;
}
return this.iEntityActionHelper;
}
@Override
public List<BaseEntity> selectRow(String dblink,String sql)
{
return (BaseEntityList)this.getActionHelper().select(dblink,sql);
}
}
\ No newline at end of file
package cn.ibizlab.core.extensions.domain;
import cn.ibizlab.util.helper.RuleUtils;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.Data;
import org.springframework.util.ObjectUtils;
import java.io.BufferedReader;
import java.io.Reader;
import java.math.BigDecimal;
import java.math.BigInteger;
@JsonIgnoreProperties(ignoreUnknown = true)
@Data
public class BaseField implements IField {
private String field;
private String entity;
private Object value=null;
public void setValue(Object value)
{
if(value instanceof java.sql.Clob)
{
// Clob类型 转String
BufferedReader br =null;
Reader is = null;
try {
String reString = "";
is = ((java.sql.Clob)value).getCharacterStream();
br = new BufferedReader(is);
String s = br.readLine();
StringBuffer sb = new StringBuffer();
while (s != null) {
sb.append(s);
s = br.readLine();
}
reString = sb.toString();
this.value=reString;
}
catch (Exception ex)
{
}
finally {
try
{
if(br!=null){
br.close();
}
}
catch (Exception ex)
{}
try
{
if(is!=null){
is.close();
}
}
catch (Exception ex)
{}
}
}
else
this.value=value;
}
public Object getValue()
{
return this.value;
}
@Override
public String getCondValue() {
Object val=getValue();
if(ObjectUtils.isEmpty(val))
return "null";
String str="";
if((val instanceof Integer)||(val instanceof Double)||(val instanceof Long)||(val instanceof BigDecimal)||(val instanceof BigInteger)||(val instanceof Float))
str=val.toString();
else
str="'"+val.toString()+"'";
return str;
}
@Override
public Object getFecthValue() {
return getValue();
}
public static BaseField from(Object value)
{
BaseField field=new BaseField();
field.setValue(value);
return field;
}
@Override
public boolean EQ(Object val) {
return RuleUtils.equal(val, this.value);
}
@Override
public boolean NOTEQ(Object val) {
return !RuleUtils.equal(val, this.value);
}
@Override
public boolean GTANDEQ(Object val) {
return RuleUtils.ge(val,this.value);
}
@Override
public boolean GT(Object val) {
return RuleUtils.gt(val, this.value);
}
@Override
public boolean LTANDEQ(Object val) {
return RuleUtils.le(val,this.value);
}
@Override
public boolean LT(Object val) {
return RuleUtils.lt(val,this.value);
}
@Override
public boolean ISNULL(Object val) {
return RuleUtils.isNull(this.value);
}
@Override
public boolean ISNOTNULL(Object val) {
return RuleUtils.isNotNull(this.value);
}
@Override
public boolean LIKE(String val) {
return RuleUtils.matchor(val, this.value);
}
@Override
public boolean LEFTLIKE(String val) {
return RuleUtils.leftmatchor(val, this.value);
}
@Override
public boolean RIGHTLIKE(String val) {
return RuleUtils.rightmatchor(val, this.value);
}
@Override
public boolean IN(String val) {
return RuleUtils.in(val, this.value);
}
@Override
public boolean NOTIN(String val) {
return RuleUtils.notin(val, this.value);
}
@Override
public boolean INC2S(String val) {
return RuleUtils.inc2s(val, this.value);
}
@Override
public boolean NOTINC2S(String val) {
return RuleUtils.notinc2s(val, this.value);
}
@Override
public boolean MATCHES(String val) {
return RuleUtils.matchand(val, this.value);
}
@Override
public String toString()
{
if(ObjectUtils.isEmpty(this.getValue()))
return "";
else
return this.getValue().toString();
}
@Override
public boolean NOTLIKE(String val) {
return !LIKE(val);
}
@Override
public boolean LEFTNOTLIKE(String val) {
return !LEFTLIKE(val);
}
@Override
public boolean RIGHTNOTLIKE(String val) {
return !RIGHTLIKE(val);
}
@Override
public boolean NOTMATCHES(String val) {
return !MATCHES(val);
}
}
\ No newline at end of file
package cn.ibizlab.core.extensions.domain;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.Data;
import org.springframework.util.ObjectUtils;
import org.springframework.util.StringUtils;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.Hashtable;
@JsonIgnoreProperties(ignoreUnknown = true)
@Data
public class BaseFieldList extends ArrayList<BaseField> implements IField {
private String field;
private String entity;
public Object getValue()
{
String rt="";
Hashtable<Object,Integer> setcheck=new Hashtable<Object, Integer>();
if(this.size()==0)
return null;
if(this.size()==1)
return this.get(0).getValue();
Object sObj=null;
for(BaseField obj:this)
{
Object val=obj.getValue();
if(ObjectUtils.isEmpty(val))
continue;
if(setcheck.containsKey(val))
continue;
else
setcheck.put(val,1);
String str=val.toString();
sObj=val;
if(!StringUtils.isEmpty(rt))
rt=rt+",";
rt=rt+str;
}
if(StringUtils.isEmpty(rt))
rt=null;
if(setcheck.size()==1)
return sObj;
return rt;
}
@Override
public String getCondValue() {
String rt="";
Hashtable<Object,Integer> setcheck=new Hashtable<Object, Integer>();
for(BaseField obj:this)
{
Object val=obj.getValue();
if(ObjectUtils.isEmpty(val))
continue;
if(setcheck.containsKey(val))
continue;
else
setcheck.put(val,1);
String str="";
if((val instanceof Integer)||(val instanceof Double)||(val instanceof Long)||(val instanceof BigDecimal)||(val instanceof BigInteger)||(val instanceof Float))
str=val.toString();
else
str="'"+val.toString()+"'";
if(!StringUtils.isEmpty(rt))
rt=rt+",";
rt=rt+str;
}
if(StringUtils.isEmpty(rt))
rt="null";
return rt;
}
@Override
public Object getFecthValue() {
return null;
}
@Override
public boolean EQ(Object val) {
for(BaseField obj:this)
if(obj.EQ(val))
return true;
return false;
}
@Override
public boolean NOTEQ(Object val) {
return !EQ(val);
}
@Override
public boolean GTANDEQ(Object val) {
for(BaseField obj:this)
if(obj.GTANDEQ(val))
return true;
return false;
}
@Override
public boolean GT(Object val) {
for(BaseField obj:this)
if(obj.GT(val))
return true;
return false;
}
@Override
public boolean LTANDEQ(Object val) {
for(BaseField obj:this)
if(obj.LTANDEQ(val))
return true;
return false;
}
@Override
public boolean LT(Object val) {
for(BaseField obj:this)
if(obj.LT(val))
return true;
return false;
}
@Override
public boolean ISNULL(Object val) {
for(BaseField obj:this)
if(obj.ISNULL(val))
return true;
return false;
}
@Override
public boolean ISNOTNULL(Object val) {
return !ISNULL(val);
}
@Override
public boolean LIKE(String val) {
for(BaseField obj:this)
if(obj.LIKE(val))
return true;
return false;
}
@Override
public boolean LEFTLIKE(String val) {
for(BaseField obj:this)
if(obj.LEFTLIKE(val))
return true;
return false;
}
@Override
public boolean RIGHTLIKE(String val) {
for(BaseField obj:this)
if(obj.RIGHTLIKE(val))
return true;
return false;
}
@Override
public boolean IN(String val) {
for(BaseField obj:this)
if(obj.IN(val))
return true;
return false;
}
@Override
public boolean NOTIN(String val) {
return !IN(val);
}
@Override
public boolean INC2S(String val) {
for(BaseField obj:this)
if(obj.INC2S(val))
return true;
return false;
}
@Override
public boolean NOTINC2S(String val) {
return !INC2S(val);
}
@Override
public boolean MATCHES(String val) {
for(BaseField obj:this)
if(obj.MATCHES(val))
return true;
return false;
}
@Override
public String toString()
{
if(ObjectUtils.isEmpty(this.getValue()))
return "";
else
{
String rt="";
for(BaseField obj:this)
{
Object val=obj.getValue();
if(ObjectUtils.isEmpty(val))
continue;
String str=val.toString();
if(!StringUtils.isEmpty(rt))
rt=rt+",";
rt=rt+str;
}
if(StringUtils.isEmpty(rt))
rt="";
return rt;
}
}
@Override
public boolean NOTLIKE(String val) {
return !LIKE(val);
}
@Override
public boolean LEFTNOTLIKE(String val) {
return !LEFTLIKE(val);
}
@Override
public boolean RIGHTNOTLIKE(String val) {
return !RIGHTLIKE(val);
}
@Override
public boolean NOTMATCHES(String val) {
return !MATCHES(val);
}
}
\ No newline at end of file
package cn.ibizlab.core.extensions.domain;
import cn.ibizlab.core.lite.domain.MetaField;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
import java.util.Map;
@Data
public class DSTEntityModel implements Serializable {
private String dblink;
private String sqltable;
private String sqlKeyField;
private String getCondition;
private Map<String,DSTLookupModel> lookups;
private List<String > releations;
private List<String > subentity;
private List<MetaField> keyFields;
private List<MetaField> f1nFields;
private List<MetaField> fn1Fields;
private String lastUpdateField;
}
package cn.ibizlab.core.extensions.domain;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
@Data
public class DSTLookupModel implements Serializable {
private String refentity;
private String selectCondition;
private List<String> reffieldsCondition;
private String entity;
private List<String> paramsCondition;
}
package cn.ibizlab.core.extensions.domain;
import cn.ibizlab.core.extensions.util.IEntityActionHelper;
import java.io.Serializable;
import java.util.List;
public interface IEntity extends Serializable {
Object get(Object key);
String getENTITYNAME();
void setENTITYNAME(String name);
void regesitAttr(String key, BaseEntity val);
String getKEY();
void setKEY(String KEY);
IField $(String key);
Double $D(String key);
IEntity $E(String key);
boolean IF(String cond);
boolean test(String cond);
void setActionHelper(IEntityActionHelper iEntityActionHelper);
/**
* 获取操作辅助对象
*
* @return
*/
IEntityActionHelper getActionHelper();
List<BaseEntity> selectRow(String dblink, String sql);
}
package cn.ibizlab.core.extensions.domain;
import java.io.Serializable;
public interface IField extends Serializable {
String getField();
void setField(String field);
String getEntity();
void setEntity(String entity);
Object getValue();
String getCondValue();
Object getFecthValue();
boolean EQ(Object val);
boolean NOTEQ(Object val);
boolean GTANDEQ(Object val);
boolean GT(Object val);
boolean LTANDEQ(Object val);
boolean LT(Object val);
boolean ISNULL(Object val);
boolean ISNOTNULL(Object val);
boolean LIKE(String val);
boolean LEFTLIKE(String val);
boolean RIGHTLIKE(String val);
boolean NOTLIKE(String val);
boolean LEFTNOTLIKE(String val);
boolean RIGHTNOTLIKE(String val);
boolean IN(String val);
boolean NOTIN(String val);
boolean INC2S(String val);
boolean NOTINC2S(String val);
boolean MATCHES(String val);
boolean NOTMATCHES(String val);
}
package cn.ibizlab.core.extensions.service; package cn.ibizlab.core.extensions.service;
import cn.ibizlab.core.extensions.domain.BaseEntity; import cn.ibizlab.core.lite.extensions.domain.ModelObj;
import cn.ibizlab.core.extensions.domain.IEntity;
import cn.ibizlab.core.extensions.domain.IField;
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;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List; import java.sql.Timestamp;
/** /**
* 实体[DSTEntity] 服务对象接口 * 规则服务对象接口
*/ */
public interface BaseEntityService extends IService<BaseEntity> { public interface BaseEntityService {
void resetKC(String keyC); void reset(String keyContainer);
List<BaseEntity> selectRow(String dblink, String sql);
ExecLog processAll(BadRequestAlertException msg); ExecLog processAll(BadRequestAlertException msg);
void saveResult(IEntity param, String RULEID, String RULENAME, String RU_EXECRESULTNAME, String BUSINESSCAT, Integer RETVALUE, Object KEYVALUEFIELD, IField DOMAINSFIELD, IField METRICFIELD, IField TIMEFIELD, IField EXT1FIELD, IField EXT2FIELD); void saveResult(ModelObj param, String RULECODE, String RULENAME, String RU_EXECRESULTNAME, String BUSINESSCAT, Integer RETVALUE, String KEYVALUEFIELD, String DOMAINSFIELD, Double METRICFIELD, Timestamp TIMEFIELD, String EXT1FIELD, String EXT2FIELD);
} }
\ No newline at end of file
...@@ -319,10 +319,10 @@ public class RuleItemExService extends RuleItemServiceImpl { ...@@ -319,10 +319,10 @@ public class RuleItemExService extends RuleItemServiceImpl {
if(!StringUtils.isEmpty(strGroupCond)){ if(!StringUtils.isEmpty(strGroupCond)){
if(relaConn.equals("exists")) if(relaConn.equals("exists"))
{ {
strRelationResult=String.format("%s:BaseEntity %s from item.$E(\"%s\")",relaEntity,strGroupCond,relaEntity); strRelationResult=String.format("%s:ModelObj %s from item.getNested(\"%s\")",relaEntity,strGroupCond,relaEntity);
} }
else if(relaConn.equals("not exists")){ else if(relaConn.equals("not exists")){
strRelationResult=String.format("not(exists IEntity %s from item.$E(\"%s\"))",strGroupCond,relaEntity); strRelationResult=String.format("not(exists ModelObj %s from item.getNested(\"%s\"))",strGroupCond,relaEntity);
} }
} }
if(!StringUtils.isEmpty(strRelationResult)) if(!StringUtils.isEmpty(strRelationResult))
......
package cn.ibizlab.core.extensions.util;
import cn.ibizlab.core.extensions.domain.BaseEntity;
import cn.ibizlab.core.extensions.domain.DSTEntityModel;
import java.util.List;
public interface IEntityActionHelper {
List<BaseEntity> select(String dblink, String sql);
DSTEntityModel getModel(String etname);
}
...@@ -169,6 +169,10 @@ public class EntityObj extends DataObj<String,Object> { ...@@ -169,6 +169,10 @@ public class EntityObj extends DataObj<String,Object> {
public boolean isDelete() public boolean isDelete()
{ {
return false; if(!this.getEntityModel().isLogicValid())
return false;
if(this.getEntityModel().getLogicVal().equals(this.get(this.getEntityModel().getLogicValidField().getColumnName())))
return false;
return true;
} }
} }
...@@ -274,6 +274,34 @@ public class ModelObj extends DataObj<String,Object> { ...@@ -274,6 +274,34 @@ public class ModelObj extends DataObj<String,Object> {
public Object $(String key)
{
if(key.toString().indexOf(".")>0)
{
String[] epair=key.toString().split("[.]");
if(epair.length>=2)
{
String name=epair[0];
String column=epair[1];
//if(this.get(key))
return this.getEntity(name).get(column);
}
}
return get(key);
}
public Double $D(String key)
{
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;
return 1d;
}
......
...@@ -138,9 +138,9 @@ public class DataModel { ...@@ -138,9 +138,9 @@ public class DataModel {
for (Property property:this.getObjectProperties()) for (Property property:this.getObjectProperties())
if(name.equalsIgnoreCase(property.getPropertyName())) if(name.equalsIgnoreCase(property.getPropertyName()))
return property; return property;
for (Property property:this.getObjectProperties()) // for (Property property:this.getObjectProperties())
if(name.equalsIgnoreCase(property.getPropertyEntity())) // if(name.equalsIgnoreCase(property.getPropertyEntity()))
return property; // return property;
} }
return null; return null;
} }
......
package com.engineer; package com.engineer;
import net.ibizsys.dst.common.domain.BaseEntity; import cn.ibizlab.core.lite.extensions.ModelObj;
import net.ibizsys.dst.common.domain.IEntity; import cn.ibizlab.core.extensions.service.BaseEntityService;
import net.ibizsys.dst.common.service.BaseEntityService;
global BaseEntityService BaseService; global BaseEntityService BaseService;
rule "<#if ruleid??>${ruleid}_1</#if>" rule "<#if rulecode??>${rulecode}_1</#if>"
salience 100 salience 100
activation-group "<#if ruleid??>${ruleid}</#if>" activation-group "<#if rulecode??>${rulecode}</#if>"
when when
item:BaseEntity( <#if rulecond??>${rulecond}</#if> ) item:ModelObj( <#if rulecond??>${rulecond}</#if> )
<#if (releationcond??)>${releationcond}</#if> <#if (releationcond??)>${releationcond}</#if>
then then
BaseService.saveResult(item,"<#if ruleid??>${ruleid}</#if>","<#if rulename??>${rulename}</#if>","<#if memo??>${memo}</#if>","<#if businesscat??>${businesscat}</#if>",1,${keyvaluefield},${domainsfield},${metricfield},${timefield},${ext1field},${ext2field}); BaseService.saveResult(item,"<#if rulecode??>${rulecode}</#if>","<#if rulename??>${rulename}</#if>","<#if memo??>${memo}</#if>",<#if businesscat??>${businesscat}</#if>,1,${keyvaluefield},${domainsfield},${dimfield},${metricfield},${timefield},${ext1field},${ext2field});
end end
rule "<#if ruleid??>${ruleid}_d</#if>" rule "<#if rulecode??>${rulecode}_d</#if>"
salience 0 salience 0
activation-group "<#if ruleid??>${ruleid}</#if>" activation-group "<#if rulecode??>${rulecode}</#if>"
when when
item:BaseEntity( ) item:ModelObj( )
<#if (releationcond??)>${releationcond}</#if> <#if (releationcond??)>${releationcond}</#if>
then then
BaseService.saveResult(item,"<#if ruleid??>${ruleid}</#if>","<#if rulename??>${rulename}</#if>", null,"<#if businesscat??>${businesscat}</#if>",0,item.KEY,${domainsfield},${metricfield},${timefield},null,null); BaseService.saveResult(item,"<#if rulecode??>${rulecode}</#if>",null, null,null,0,${keyvaluefield},${domainsfield},${dimfield},${metricfield},${timefield},null,null);
end end
\ No newline at end of file
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册