提交 31aaef16 编写于 作者: ibizdev's avatar ibizdev

hebao1234 发布系统代码 [ibz-dst,应用]

上级 ffe6a309
package cn.ibizlab.core.rule.service.impl;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import java.util.Map;
import java.util.HashSet;
import java.util.HashMap;
import java.util.Collection;
import java.util.Objects;
import java.util.Optional;
import java.math.BigInteger;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cglib.beans.BeanCopier;
import org.springframework.stereotype.Service;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageImpl;
import org.springframework.data.domain.Pageable;
import org.springframework.util.ObjectUtils;
import org.springframework.beans.factory.annotation.Value;
import cn.ibizlab.util.errors.BadRequestAlertException;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.context.annotation.Lazy;
import cn.ibizlab.core.rule.domain.RuleEngine;
import cn.ibizlab.core.rule.filter.RuleEngineSearchContext;
import cn.ibizlab.core.rule.service.IRuleEngineService;
import cn.ibizlab.util.helper.CachedBeanCopier;
import cn.ibizlab.util.helper.DEFieldCacheMap;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import cn.ibizlab.core.rule.mapper.RuleEngineMapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.alibaba.fastjson.JSONObject;
import org.springframework.util.StringUtils;
/**
* 实体[规则引擎] 服务对象接口实现
*/
@Slf4j
@Service("RuleEngineServiceImpl")
public class RuleEngineServiceImpl extends ServiceImpl<RuleEngineMapper, RuleEngine> implements IRuleEngineService {
@Autowired
@Lazy
protected cn.ibizlab.core.lite.service.IMetaModelService metamodelService;
protected int batchSize = 500;
@Override
@Transactional
public boolean create(RuleEngine et) {
fillParentData(et);
if(!this.retBool(this.baseMapper.insert(et))) {
return false;
}
CachedBeanCopier.copy(get(et.getEngineId()), et);
return true;
}
@Override
@Transactional
public void createBatch(List<RuleEngine> list) {
list.forEach(item->fillParentData(item));
this.saveBatch(list, batchSize);
}
@Override
@Transactional
public boolean update(RuleEngine et) {
fillParentData(et);
if(!update(et, (Wrapper) et.getUpdateWrapper(true).eq("engineid", et.getEngineId()))) {
return false;
}
CachedBeanCopier.copy(get(et.getEngineId()), et);
return true;
}
@Override
@Transactional
public void updateBatch(List<RuleEngine> list) {
list.forEach(item->fillParentData(item));
updateBatchById(list, batchSize);
}
@Override
@Transactional
public boolean remove(String key) {
boolean result = removeById(key);
return result ;
}
@Override
@Transactional
public void removeBatch(Collection<String> idList) {
removeByIds(idList);
}
@Override
@Transactional
public RuleEngine get(String key) {
RuleEngine et = getById(key);
if(et == null){
et = new RuleEngine();
et.setEngineId(key);
}
else {
}
return et;
}
@Override
public RuleEngine getDraft(RuleEngine et) {
fillParentData(et);
return et;
}
@Override
@Transactional
public RuleEngine check(RuleEngine et) {
//自定义代码
return et;
}
@Override
@Transactional
public boolean checkBatch(List<RuleEngine> etList) {
for(RuleEngine et : etList) {
check(et);
}
return true;
}
@Override
public boolean checkKey(RuleEngine et) {
return (!ObjectUtils.isEmpty(et.getEngineId())) && (!Objects.isNull(this.getById(et.getEngineId())));
}
@Override
public RuleEngine run(RuleEngine et) {
//自定义代码
return et;
}
@Override
public boolean runBatch(List<RuleEngine> etList) {
for(RuleEngine et : etList) {
run(et);
}
return true;
}
@Override
@Transactional
public boolean save(RuleEngine et) {
if(!saveOrUpdate(et)) {
return false;
}
return true;
}
@Override
@Transactional
public boolean saveOrUpdate(RuleEngine et) {
if (null == et) {
return false;
} else {
return checkKey(et) ? getProxyService().update(et) : getProxyService().create(et);
}
}
@Override
@Transactional
public boolean saveBatch(Collection<RuleEngine> list) {
list.forEach(item->fillParentData(item));
List<RuleEngine> create = new ArrayList<>();
List<RuleEngine> update = new ArrayList<>();
for (RuleEngine et : list) {
if (ObjectUtils.isEmpty(et.getEngineId()) || ObjectUtils.isEmpty(getById(et.getEngineId()))) {
create.add(et);
} else {
update.add(et);
}
}
if (create.size() > 0) {
getProxyService().createBatch(create);
}
if (update.size() > 0) {
getProxyService().updateBatch(update);
}
return true;
}
@Override
@Transactional
public void saveBatch(List<RuleEngine> list) {
list.forEach(item->fillParentData(item));
List<RuleEngine> create = new ArrayList<>();
List<RuleEngine> update = new ArrayList<>();
for (RuleEngine et : list) {
if (ObjectUtils.isEmpty(et.getEngineId()) || ObjectUtils.isEmpty(getById(et.getEngineId()))) {
create.add(et);
} else {
update.add(et);
}
}
if (create.size() > 0) {
getProxyService().createBatch(create);
}
if (update.size() > 0) {
getProxyService().updateBatch(update);
}
}
@Override
public List<RuleEngine> selectByModelId(String id) {
return baseMapper.selectByModelId(id);
}
@Override
public void removeByModelId(String id) {
this.remove(new QueryWrapper<RuleEngine>().eq("modelid",id));
}
/**
* 查询集合 数据集
*/
@Override
public Page<RuleEngine> searchDefault(RuleEngineSearchContext context) {
com.baomidou.mybatisplus.extension.plugins.pagination.Page<RuleEngine> pages=baseMapper.searchDefault(context.getPages(),context,context.getSelectCond());
return new PageImpl<RuleEngine>(pages.getRecords(), context.getPageable(), pages.getTotal());
}
/**
* 为当前实体填充父数据(外键值文本、外键值附加数据)
* @param et
*/
private void fillParentData(RuleEngine et){
//实体关系[DER1N_RU_ENGINE_META_MODEL_MODELID]
if(!ObjectUtils.isEmpty(et.getModelId())){
cn.ibizlab.core.lite.domain.MetaModel model=et.getModel();
if(ObjectUtils.isEmpty(model)){
cn.ibizlab.core.lite.domain.MetaModel majorEntity=metamodelService.get(et.getModelId());
et.setModel(majorEntity);
model=majorEntity;
}
et.setModelName(model.getName());
et.setSystemId(model.getSystemId());
}
}
@Override
public List<JSONObject> select(String sql, Map param){
return this.baseMapper.selectBySQL(sql,param);
}
@Override
@Transactional
public boolean execute(String sql , Map param){
if (sql == null || sql.isEmpty()) {
return false;
}
if (sql.toLowerCase().trim().startsWith("insert")) {
return this.baseMapper.insertBySQL(sql,param);
}
if (sql.toLowerCase().trim().startsWith("update")) {
return this.baseMapper.updateBySQL(sql,param);
}
if (sql.toLowerCase().trim().startsWith("delete")) {
return this.baseMapper.deleteBySQL(sql,param);
}
log.warn("暂未支持的SQL语法");
return true;
}
public IRuleEngineService getProxyService() {
return cn.ibizlab.util.security.SpringContextHolder.getBean(this.getClass());
}
}
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册