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

提交

上级 4be78d7f
package cn.ibizlab; package cn.ibizlab;
import cn.ibizlab.core.util.config.FilterDataResolver;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient; import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
...@@ -36,8 +37,9 @@ import org.springframework.beans.factory.annotation.Autowired; ...@@ -36,8 +37,9 @@ import org.springframework.beans.factory.annotation.Autowired;
@EnableScheduling @EnableScheduling
public class DevBootApplication extends WebMvcConfigurerAdapter { public class DevBootApplication extends WebMvcConfigurerAdapter {
@Autowired @Autowired
SearchContextHandlerMethodArgumentResolver resolver; FilterDataResolver filterDataResolver;
public static void main(String[] args) { public static void main(String[] args) {
SpringApplication.run(DevBootApplication.class, args); SpringApplication.run(DevBootApplication.class, args);
...@@ -46,6 +48,6 @@ public class DevBootApplication extends WebMvcConfigurerAdapter { ...@@ -46,6 +48,6 @@ public class DevBootApplication extends WebMvcConfigurerAdapter {
@Override @Override
public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) { public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) {
super.addArgumentResolvers(argumentResolvers); super.addArgumentResolvers(argumentResolvers);
argumentResolvers.add(resolver); argumentResolvers.add(filterDataResolver);
} }
} }
...@@ -2,7 +2,7 @@ spring: ...@@ -2,7 +2,7 @@ spring:
datasource: datasource:
username: root username: root
password: root password: root
url: jdbc:mysql://172.16.100.77:3306/a_A_5d9d78509?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8&useOldAliasMetadataBehavior=true&allowMultiQueries=true&useTimezone=true&serverTimezone=GMT%2B8 url: jdbc:mysql://127.0.0.1:3306/a_A_5d9d78509?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8&useOldAliasMetadataBehavior=true&allowMultiQueries=true&useTimezone=true&serverTimezone=GMT%2B8
isSyncDBSchema: false isSyncDBSchema: false
dynamic: dynamic:
druid: #以下是全局默认值,可以全局更改 druid: #以下是全局默认值,可以全局更改
......
...@@ -292,18 +292,21 @@ public class DOModel extends EntityBase implements Serializable { ...@@ -292,18 +292,21 @@ public class DOModel extends EntityBase implements Serializable {
} }
public POSchema getPOSchema(String name) public POSchema getPOSchema(String name)
{ {
if(StringUtils.isEmpty(name)&&this.getSchema()!=null)
name=this.getSchema().getDefaultDataSoruce();
if(poSchemas==null) if(poSchemas==null)
poSchemas=new LinkedHashMap<>(); poSchemas=new LinkedHashMap<>();
if(poSchemas.containsKey(name)) if(poSchemas.containsKey(name))
{ {
return poSchemas.get(name); return poSchemas.get(name);
} }
else if(this.getSchema()!=null&&("default".equals(name)||this.getSchema().getDefaultTableName().equals(name))) else if(this.getSchema()!=null&&("default".equals(name)||this.getSchema().getDefaultDataSoruce().equals(name)))
{ {
POSchema defaultPOSchema= TransUtils.PojoSchema2PO(this.getSchema()); POSchema defaultPOSchema= TransUtils.PojoSchema2PO(this.getSchema());
if(defaultPOSchema!=null) { if(defaultPOSchema!=null) {
poSchemas.put("default", defaultPOSchema); poSchemas.put("default", defaultPOSchema);
poSchemas.put(this.getSchema().getDefaultTableName(),defaultPOSchema); poSchemas.put(this.getSchema().getDefaultDataSoruce(),defaultPOSchema);
return defaultPOSchema; return defaultPOSchema;
} }
} }
......
package cn.ibizlab.core.data.dto;
import cn.ibizlab.core.data.model.POSchema;
import cn.ibizlab.util.filter.QueryFilter;
import cn.ibizlab.util.filter.QueryWrapperContext;
import cn.ibizlab.util.helper.DEFieldCacheMap;
import cn.ibizlab.util.security.AuthenticationUser;
import com.alibaba.fastjson.annotation.JSONField;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.OrderItem;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.util.ObjectUtils;
import org.springframework.util.StringUtils;
import java.lang.reflect.ParameterizedType;
import java.util.*;
public class FilterData<T> extends BaseData
{
public FilterData set(String key, Object value)
{
this.put(key,value);
return this;
}
public String getDataSource()
{
return this.getStringValue("datasource");
}
public String getQuery()
{
return this.getStringValue("query");
}
public FilterData setQuery(String query)
{
return this.set("query",query);
}
public int getPage()
{
return this.getIntegerValue("page",0);
}
public FilterData setPage(int page)
{
return this.set("page",page);
}
public int getSize()
{
return getIntegerValue("size",20);
}
public FilterData setSize(int size)
{
return this.set("size",size);
}
public String getSort()
{
return this.getStringValue("sort");
}
public FilterData setSort(String sort) {
pageable=PageRequest.of(getPage(),getSize(),getPageSort());
return this.set("sort",sort);
}
@JsonIgnore
@JSONField(serialize = false)
public Sort pageSort;
@JsonIgnore
@JSONField(serialize = false)
public Sort getPageSort()
{
if(pageSort==null)
{
if(!StringUtils.isEmpty(getSort())){
String sortArr[]=getSort().split(",");
String sortField=sortArr[0];
String sortDirection=sortArr.length>1?sortArr[1]:"asc";
if(sortDirection.equalsIgnoreCase("desc"))
this.pageSort=Sort.by(Sort.Direction.DESC,sortField);
else
this.pageSort=Sort.by(Sort.Direction.ASC,sortField);
}
else
this.pageSort=Sort.unsorted();
}
return pageSort;
}
@JsonIgnore
@JSONField(serialize = false)
public Pageable pageable;
@JsonIgnore
@JSONField(serialize = false)
public Pageable getPageable() {
if(pageable==null)
pageable=PageRequest.of(getPage(),getSize(),getPageSort());
return pageable;
}
public FilterData setPageable(Pageable pageable)
{
this.pageable=pageable;
return this;
}
public BaseData getParams()
{
BaseData param=null;
Object obj=this.get("params");
if(obj!=null)
{
if(obj instanceof BaseData)
param=(BaseData)obj;
else if(obj instanceof Map)
{
param=new BaseData().setAll((Map)obj);
this.set("params",param);
}
}
else
{
return this;
}
return param;
}
public FilterData setParams(BaseData params)
{
return this.set("params",params);
}
@JsonIgnore
@JSONField(serialize = false)
public Map<String,Object> getDatacontext() {
return getParams();
}
@JsonIgnore
@JSONField(serialize = false)
public Map<String,Object> getWebcontext() {
return getParams();
}
@JsonIgnore
@JSONField(serialize = false)
public Map<String,Object> getSessioncontext() {
return AuthenticationUser.getAuthenticationUser().getSessionParams();
}
public String getUserTaskId() {
return this.getStringValue("userTaskId",this.getParams().getStringValue("userTaskId"));
}
public FilterData setUserTaskId(String userTaskId)
{
return this.set("userTaskId",userTaskId);
}
public String getProcessDefinitionKey() {
return this.getStringValue("processDefinitionKey",this.getParams().getStringValue("processDefinitionKey"));
}
public FilterData setProcessDefinitionKey(String processDefinitionKey)
{
return this.set("processDefinitionKey",processDefinitionKey);
}
private QueryFilter filter;
public QueryFilter getFilter()
{
return filter;
}
public FilterData setFilter(QueryFilter filter)
{
this.filter=filter;
return this;
}
public Page getPages(POSchema poSchema)
{
return getPages(poSchema,this.getPageable());
}
public static Page getPages(POSchema poSchema,Pageable pageable){
Page page;
int currentPage=pageable.getPageNumber();
int pageSize=pageable.getPageSize();
//构造mybatis-plus分页
if(StringUtils.isEmpty(currentPage) || StringUtils.isEmpty(pageSize)) {
page=new Page(1,Short.MAX_VALUE);
}
else {
page=new Page(currentPage+1,pageSize);
}
//构造mybatis-plus排序
Sort sort = pageable.getSort();
Iterator<Sort.Order> it_sort = sort.iterator();
if(ObjectUtils.isEmpty(it_sort)) {
return page;
}
while (it_sort.hasNext()) {
Sort.Order sort_order = it_sort.next();
String colName=sort_order.getProperty();
if(poSchema!=null&&poSchema.getColumn(colName)!=null)
colName=poSchema.getColumn(colName).getName();
page.addOrder(new OrderItem().setColumn(colName).setAsc(sort_order.getDirection()!= Sort.Direction.DESC));
}
return page;
}
@JsonIgnore
@JSONField(serialize = false)
private QueryWrapper searchCond=null;
public QueryWrapper getSearchCond()
{
if(searchCond==null)
{
if(this.getFilter()!=null)
{
QueryWrapperContext context=new QueryWrapperContext();
context.setFilter(this.getFilter());
searchCond = context.getSelectCond();
}
else
{
searchCond=new QueryWrapper();
}
for(Object obj:this.keySet())
{
String key=obj.toString().toLowerCase();
if(key.startsWith("n_")&&key.endsWith("_like"))
{
searchCond.like(key.substring(2).replace("_like",""),this.get(obj));
}
}
}
return searchCond;
}
public String getSql(POSchema.Segment segment)
{
String sql=segment.getBody();
QueryWrapper qw=this.getSearchCond();
if(qw!=null&&qw.getSqlSegment()!=null)
{
if(!qw.isEmptyOfWhere())
sql=sql.concat(" where ");
sql = sql.concat(qw.getSqlSegment());
}
return sql;
}
}
...@@ -11,6 +11,8 @@ import net.ibizsys.model.dataentity.defield.IPSDEField; ...@@ -11,6 +11,8 @@ import net.ibizsys.model.dataentity.defield.IPSDEField;
import net.ibizsys.model.dataentity.defield.IPSLinkDEField; import net.ibizsys.model.dataentity.defield.IPSLinkDEField;
import net.ibizsys.model.dataentity.der.IPSDER1N; import net.ibizsys.model.dataentity.der.IPSDER1N;
import net.ibizsys.model.dataentity.der.IPSDERBase; import net.ibizsys.model.dataentity.der.IPSDERBase;
import net.ibizsys.model.dataentity.ds.IPSDEDataQueryCode;
import net.ibizsys.model.dataentity.ds.IPSDEDataQueryCodeCond;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.cache.annotation.Cacheable; import org.springframework.cache.annotation.Cacheable;
...@@ -302,9 +304,12 @@ public class DynamicModelService { ...@@ -302,9 +304,12 @@ public class DynamicModelService {
if(dataQuery.getAllPSDEDataQueryCodes()!=null) if(dataQuery.getAllPSDEDataQueryCodes()!=null)
{ {
dataQuery.getAllPSDEDataQueryCodes().forEach(dq->{ dataQuery.getAllPSDEDataQueryCodes().forEach(dq->{
String code=getQueryCode(dq);
MetaDataSetModel dsModel=new MetaDataSetModel().setDatasetId(entityModel.getEntityName().toLowerCase()+"-dq-"+dataQuery.getCodeName()+"-"+dq.getDBType().toLowerCase()) MetaDataSetModel dsModel=new MetaDataSetModel().setDatasetId(entityModel.getEntityName().toLowerCase()+"-dq-"+dataQuery.getCodeName()+"-"+dq.getDBType().toLowerCase())
.setDatasetName(dataQuery.getLogicName()).setCodeName(dataQuery.getCodeName()) .setDatasetName(dataQuery.getLogicName()).setCodeName(dataQuery.getCodeName())
.setEntityId(entityModel.getEntityId()).setEntityName(entityModel.getEntityName()).setDsCode(dq.getQueryCode()); .setEntityId(entityModel.getEntityId()).setEntityName(entityModel.getEntityName()).setDsCode(code);
entityModel.addDataSet(dsModel); entityModel.addDataSet(dsModel);
}); });
} }
...@@ -343,7 +348,8 @@ public class DynamicModelService { ...@@ -343,7 +348,8 @@ public class DynamicModelService {
code = map.get(dq.getDBType()); code = map.get(dq.getDBType());
code = code+"\r\n union all \r\n"; code = code+"\r\n union all \r\n";
} }
code = code+"<include refid=\""+entityModel.getEntityName().toLowerCase()+"_dq_"+dataQuery.getCodeName()+"_"+dq.getDBType().toLowerCase()+"\"/>"; code = code+ getQueryCode(dq);
;//"<include refid=\""+entityModel.getEntityName().toLowerCase()+"_dq_"+dataQuery.getCodeName()+"_"+dq.getDBType().toLowerCase()+"\"/>";
map.put(dq.getDBType(),code); map.put(dq.getDBType(),code);
}); });
} }
...@@ -461,4 +467,51 @@ public class DynamicModelService { ...@@ -461,4 +467,51 @@ public class DynamicModelService {
} }
} }
/*
<#function contextParamConvert contextParam>
<#comment>补充上下文的IN查询(in通过$获取参数,其余为#): IN (${srfdatacontext('cityid','{"defname":"CITYID","dename":"CITY"}')}) -->IN ( ${srf.srfdatacontext.cityid} ) </#comment>
<#assign resultParam=contextParam?replace("(IN|in) \\(\\$\\{srf(datacontext|sessioncontext|webcontext)\\('(\\w+)','(.*?)'\\)}\\)","$1 (\\$\{srf.$2.$3})","r")>
<#comment>平台配置格式替换${srfdatacontext('cityid','{"defname":"CITYID","dename":"CITY"}')} --> #{srf.srfdatacontext.cityid} </#comment>
<#assign resultParam=resultParam?replace("\\$\\{srf(datacontext|sessioncontext|webcontext)\\('(\\w+)','(.*?)'\\)}","#\{srf.$1.$2}","r")>
<#comment>用户配置格式替换${srfdatacontext('cityid')} --> #{srf.srfdatacontext.cityid} </#comment>
<#assign resultParam=resultParam?replace("\\$\\{srf(datacontext|sessioncontext|webcontext)\\('(\\w+)'\\)}","#\{srf.$1.$2}","r")>
<#comment>将上下文参数转小写 #{srf.srfdatacontext.SRFORGID} --> #{srf.srfdatacontext.srforgid}</#comment>
<#assign params=resultParam?matches('srf.(datacontext|sessioncontext|webcontext).(\\w+)')>
<#list params as param>
<#assign resultParam=resultParam?replace(param,param?lower_case,'i')>
</#list>
<#if sys.getSaaSMode()==1 && item.getSaaSMode()==1>
<#assign resultParam=resultParam?replace("AND t11.SRFDCID = '__SRFSAASDCID__'","")>
</#if>
<#return resultParam>
</#function>
*/
private String contextParamConvert(String contextParam)
{
String resultParam=contextParam.replaceAll("(IN|in) \\(\\$\\{srf(datacontext|sessioncontext|webcontext)\\('(\\w+)','(.*?)'\\)}\\)","$1 (\\${srf.$2.$3})");
resultParam=resultParam.replaceAll("\\$\\{srf(datacontext|sessioncontext|webcontext)\\('(\\w+)','(.*?)'\\)}","#{srf.$1.$2}");
resultParam=resultParam.replaceAll("\\$\\{srf(datacontext|sessioncontext|webcontext)\\('(\\w+)'\\)}","#{srf.$1.$2}");
resultParam=resultParam.replace("AND t11.SRFDCID = '__SRFSAASDCID__'","");
return resultParam;
}
private String getQueryCode(IPSDEDataQueryCode dq)
{
String code=contextParamConvert(dq.getQueryCode());
if(dq.getPSDEDataQueryCodeConds()!=null)
{
int i=0;
for(IPSDEDataQueryCodeCond cond:dq.getPSDEDataQueryCodeConds())
{
if(i==0)
code=code.concat(" where ");
else if(i>0)
code=code.concat(" and ");
code=code.concat(contextParamConvert(cond.getCustomCond()));
i++;
}
}
return code;
}
} }
package cn.ibizlab.core.data.mapper; package cn.ibizlab.core.data.mapper;
import cn.ibizlab.core.data.dto.BaseData; import cn.ibizlab.core.data.dto.BaseData;
import cn.ibizlab.core.data.dto.FilterData;
import cn.ibizlab.core.data.model.POSchema; import cn.ibizlab.core.data.model.POSchema;
import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.apache.ibatis.annotations.Insert; import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
import java.util.List; import java.util.List;
public interface DbDataMapper { public interface DbDataMapper {
List<BaseData> search(@Param("sql") String sql, @Param("ew") Wrapper<BaseData> wrapper); int insertData(@Param("schema") POSchema schema, @Param("data") BaseData data);
int searchCount(@Param("sql") String sql, @Param("ew") Wrapper<BaseData> wrapper);
int saveBatch(@Param("schema") POSchema schema, @Param("list") List<BaseData> list); int updateData(@Param("schema") POSchema schema, @Param("data") BaseData data);
int removeData(@Param("schema") POSchema schema, @Param("data") BaseData data);
int save(@Param("schema") POSchema schema, @Param("data") BaseData data); int save(@Param("schema") POSchema schema, @Param("data") BaseData data);
int saveBatch(@Param("schema") POSchema schema, @Param("list") List<BaseData> list);
List<BaseData> checkData(@Param("schema") POSchema schema, @Param("data") BaseData data); int countData(@Param("schema") POSchema schema, @Param("data") BaseData data);
List<BaseData> getData(@Param("schema") POSchema schema, @Param("data") BaseData data); List<BaseData> getData(@Param("schema") POSchema schema, @Param("data") BaseData data);
int insertData(@Param("schema") POSchema schema, @Param("data") BaseData data); List<BaseData> selectData(@Param("schema") POSchema schema, @Param("data") BaseData data);
Page<BaseData> selectData(@Param("schema") POSchema schema, @Param("data") BaseData data, IPage page);
int updateData(@Param("schema") POSchema schema, @Param("data") BaseData data); @Update("${sql}")
boolean executeRaw(@Param("schema") POSchema schema, @Param("sql") String sql, @Param("param") BaseData param);
@Select("${sql}")
List<BaseData> queryData(@Param("schema") POSchema schema, @Param("sql") String sql, @Param("srf") FilterData context, @Param("ew") QueryWrapper wrapper);
@Select("${sql}")
Page<BaseData> queryData(@Param("schema") POSchema schema, @Param("sql") String sql, @Param("srf") FilterData context, @Param("ew") QueryWrapper wrapper, IPage page);
int removeData(@Param("schema") POSchema schema, @Param("data") BaseData data);
} }
\ No newline at end of file
...@@ -571,12 +571,7 @@ public class POSchema { ...@@ -571,12 +571,7 @@ public class POSchema {
String cols=""; String cols="";
if(getBaseColumnMap()!=null) if(getBaseColumnMap()!=null)
{ {
for(String key:baseColumnMap.keySet()) cols=String.join(",",baseColumnMap.keySet());
{
if(!StringUtils.isEmpty(cols))
cols+=",";
cols+=("t1."+key+" as "+baseColumnMap.get(key));
}
} }
else else
cols="t1.*"; cols="t1.*";
......
...@@ -2,10 +2,12 @@ package cn.ibizlab.core.data.service; ...@@ -2,10 +2,12 @@ package cn.ibizlab.core.data.service;
import cn.ibizlab.core.data.domain.DOModel; import cn.ibizlab.core.data.domain.DOModel;
import cn.ibizlab.core.data.dto.BaseData; import cn.ibizlab.core.data.dto.BaseData;
import cn.ibizlab.core.data.dto.FilterData;
import cn.ibizlab.core.data.dto.RequestData; import cn.ibizlab.core.data.dto.RequestData;
import cn.ibizlab.core.data.dto.ResponseData; import cn.ibizlab.core.data.dto.ResponseData;
import cn.ibizlab.util.filter.SearchContextBase; import cn.ibizlab.util.filter.SearchContextBase;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import java.io.Serializable; import java.io.Serializable;
import java.sql.Timestamp; import java.sql.Timestamp;
...@@ -15,171 +17,223 @@ import java.util.List; ...@@ -15,171 +17,223 @@ import java.util.List;
public interface IDataService public interface IDataService
{ {
default ResponseData call(String system,String entity,String method,RequestData requestData) ResponseData call(DOModel model,String scope,String datasource,String method,RequestData requestData);
boolean create(DOModel model,String scope,String datasource,BaseData et);
void createBatch(DOModel model,String scope,String datasource,List<BaseData> list);
boolean update(DOModel model,String scope,String datasource,BaseData et);
void updateBatch(DOModel model,String scope,String datasource,List<BaseData> list);
boolean remove(DOModel model,String scope,String datasource, Serializable key);
void removeBatch(DOModel model,String scope,String datasource,List<Serializable> idList);
boolean removeByMap(DOModel model,String scope,String datasource, BaseData et);
BaseData get(DOModel model,String scope,String datasource,Serializable key);
List<BaseData> getBatch(DOModel model,String scope,String datasource,List<Serializable> idList);
BaseData getByMap(DOModel model,String scope,String datasource,BaseData et);
BaseData getDraft(DOModel model,String scope,String datasource,BaseData et);
boolean checkKey(DOModel model,String scope,String datasource,BaseData et);
boolean save(DOModel model,String scope,String datasource,BaseData et);
void saveBatch(DOModel model,String scope,String datasource,List<BaseData> list);
List<BaseData> select(DOModel model,String scope,String datasource,BaseData et);
Page<BaseData> select(DOModel model,String scope,String datasource,BaseData et,Pageable pageable);
List<BaseData> query(DOModel model,String scope,String datasource,String dataQuery,FilterData context);
Page<BaseData> query(DOModel model,String scope,String datasource,String dataQuery,FilterData context,Pageable pageable);
List<BaseData> selectRaw(DOModel model,String scope,String datasource,String sql,FilterData context);
boolean execRaw(DOModel model,String scope,String datasource,String sql,BaseData param);
List<BaseData> fetch(DOModel model,String scope,String datasource,String dataSet,FilterData context);
Page<BaseData> fetch(DOModel model,String scope,String datasource,String dataSet,FilterData context, Pageable pageable);
default ResponseData call(RequestData requestData)
{ {
return call(system,"",entity,method,"",requestData); return call(requestData.getSystem(),requestData.getScope(),requestData.getEntity(),requestData.getDataSource(),requestData.getMethod(),requestData);
} }
default ResponseData call(RequestData requestData)
default ResponseData call(String system,String entity,String method,RequestData requestData)
{ {
return call(getDOModel(requestData.getSystem(),requestData.getEntity()),requestData.getScope(),requestData.getMethod(),requestData.getDataSource(),requestData); return call(system,"",entity,method,"",requestData);
} }
default boolean create(String system,String entity,BaseData et) default boolean create(String system,String entity,BaseData et)
{ {
return create(getDOModel(system,entity),"",et); return create(system,"",entity,"",et);
} }
default void createBatch(String system,String entity,List<BaseData> list) default void createBatch(String system,String entity,List<BaseData> list)
{ {
createBatch(getDOModel(system,entity),"",list); createBatch(system,"",entity,"",list);
} }
default boolean update(String system,String entity,BaseData et) default boolean update(String system,String entity,BaseData et)
{ {
return update(getDOModel(system,entity),"",et); return update(system,"",entity,"",et);
} }
default void updateBatch(String system,String entity,List<BaseData> list) default void updateBatch(String system,String entity,List<BaseData> list)
{ {
updateBatch(getDOModel(system,entity),"",list); updateBatch(system,"",entity,"",list);
} }
default boolean remove(String system,String entity,Serializable key) default boolean remove(String system,String entity,Serializable key)
{ {
return remove(getDOModel(system,entity),"",key); return remove(system,"",entity,"",key);
} }
default void removeBatch(String system,String entity,List<Serializable> idList) default void removeBatch(String system,String entity,List<Serializable> idList)
{ {
removeBatch(getDOModel(system,entity),"",idList); removeBatch(system,"",entity,"",idList);
}
default boolean removeByMap(String system,String entity,BaseData et)
{
return removeByMap(system,"",entity,"",et);
} }
default BaseData get(String system,String entity,Serializable key) default BaseData get(String system,String entity,Serializable key)
{ {
return get(getDOModel(system,entity),"",key); return get(system,"",entity,"",key);
}
default List<BaseData> getBatch(String system,String entity,List<Serializable> idList)
{
return getBatch(system,"",entity,"",idList);
}
default BaseData getByMap(String system,String entity,BaseData et)
{
return getByMap(system,"",entity,"",et);
} }
default BaseData getDraft(String system,String entity,BaseData et) default BaseData getDraft(String system,String entity,BaseData et)
{ {
return getDraft(getDOModel(system,entity),"",et); return getDraft(system,"",entity,"",et);
} }
default boolean checkKey(String system,String entity,BaseData et) default boolean checkKey(String system,String entity,BaseData et)
{ {
return checkKey(getDOModel(system,entity),"",et); return checkKey(system,"",entity,"",et);
} }
default boolean save(String system,String entity,BaseData et) default boolean save(String system,String entity,BaseData et)
{ {
return save(getDOModel(system,entity),"",et); return save(system,"",entity,"",et);
} }
default void saveBatch(String system,String entity,List<BaseData> list) default void saveBatch(String system,String entity,List<BaseData> list)
{ {
saveBatch(getDOModel(system,entity),"",list); saveBatch(system,"",entity,"",list);
} }
default List<BaseData> select(String system,String entity,BaseData et){
default Page<BaseData> fetch(String system,String entity, String dataSet,SearchContextBase context) return select(system,"",entity,"",et);
{
return fetch(getDOModel(system,entity),dataSet,"",context);
} }
default List<BaseData> list(String system,String entity, String dataSet,SearchContextBase context) default Page<BaseData> select(String system,String entity,BaseData et,Pageable pageable){
{ return select(system,"",entity,"",et,pageable);
return list(getDOModel(system,entity),dataSet,"",context);
} }
default List<BaseData> query(String system,String entity,String dataQuery,FilterData context){
default Page<BaseData> fetchDefault(String system,String entity,SearchContextBase context) return query(system,"",entity,"",dataQuery,context);
{
return fetchDefault(getDOModel(system,entity),"",context);
} }
default List<BaseData> listDefault(String system,String entity,SearchContextBase context) default Page<BaseData> query(String system,String entity,String dataQuery,FilterData context,Pageable pageable){
{ return query(system,"",entity,"",dataQuery,context,pageable);
return listDefault(getDOModel(system,entity),"",context);
} }
default List<BaseData> selectRaw(String system,String entity,String sql,FilterData context){
return selectRaw(system,"",entity,"",sql,context);
DOModel getDOModel(String system,String entity);
ResponseData call(DOModel model,String scope,String method,String datasource, RequestData requestData);
boolean create(DOModel model,String datasource,BaseData et);
void createBatch(DOModel model,String datasource,List<BaseData> list);
boolean update(DOModel model,String datasource,BaseData et);
void updateBatch(DOModel model,String datasource,List<BaseData> list);
boolean remove(DOModel model,String datasource, Serializable key);
void removeBatch(DOModel model,String datasource,List<Serializable> idList);
BaseData get(DOModel model,String datasource,Serializable key);
BaseData getDraft(DOModel model,String datasource,BaseData et);
boolean checkKey(DOModel model,String datasource,BaseData et);
boolean save(DOModel model,String datasource,BaseData et);
void saveBatch(DOModel model,String datasource,List<BaseData> list);
Page<BaseData> fetch(DOModel model,String dataSet,String datasource,SearchContextBase context);
List<BaseData> list(DOModel model,String dataSet,String datasource,SearchContextBase context);
default Page<BaseData> fetchDefault(DOModel model,String datasource,SearchContextBase context){
return fetch(model,"default",datasource,context);
} }
default List<BaseData> listDefault(DOModel model,String datasource,SearchContextBase context){ default boolean execRaw(String system,String entity,String sql,BaseData param){
return list(model,"default",datasource,context); return execRaw(system,"",entity,"",sql,param);
}
default List<BaseData> fetch(String system,String entity, String dataSet,FilterData context)
{
return fetch(system,"",entity,"",dataSet,context);
}
default Page<BaseData> fetch(String system,String entity, String dataSet,FilterData context,Pageable pageable)
{
return fetch(system,"",entity,"",dataSet,context,pageable);
} }
default ResponseData call(String system,String scope,String entity,String method,String datasource,RequestData requestData)
default ResponseData call(String system,String scope,String entity,String datasource,String method,RequestData requestData)
{ {
requestData.setSystem(system).setScope(scope).setEntity(entity).setMethod(method).setDataSource(datasource); requestData.setSystem(system).setScope(scope).setEntity(entity).setMethod(method).setDataSource(datasource);
return call(getDOModel(system,entity),scope,method,datasource,requestData); return call(getDOModel(system,entity),scope,datasource,method,requestData);
} }
default boolean create(String system,String entity,String datasource,BaseData et) default boolean create(String system,String scope,String entity,String datasource,BaseData et)
{ {
return create(getDOModel(system,entity),datasource,et); return create(getDOModel(system,entity),scope,datasource,et);
} }
default void createBatch(String system,String entity,String datasource,List<BaseData> list) default void createBatch(String system,String scope,String entity,String datasource,List<BaseData> list)
{ {
createBatch(getDOModel(system,entity),datasource,list); createBatch(getDOModel(system,entity),scope,datasource,list);
} }
default boolean update(String system,String entity,String datasource,BaseData et) default boolean update(String system,String scope,String entity,String datasource,BaseData et)
{ {
return update(getDOModel(system,entity),datasource,et); return update(getDOModel(system,entity),scope,datasource,et);
} }
default void updateBatch(String system,String entity,String datasource,List<BaseData> list) default void updateBatch(String system,String scope,String entity,String datasource,List<BaseData> list)
{ {
updateBatch(getDOModel(system,entity),datasource,list); updateBatch(getDOModel(system,entity),scope,datasource,list);
} }
default boolean remove(String system,String entity,String datasource,Serializable key) default boolean remove(String system,String scope,String entity,String datasource,Serializable key)
{ {
return remove(getDOModel(system,entity),datasource,key); return remove(getDOModel(system,entity),scope,datasource,key);
} }
default void removeBatch(String system,String entity,String datasource,List<Serializable> idList) default void removeBatch(String system,String scope,String entity,String datasource,List<Serializable> idList)
{ {
removeBatch(getDOModel(system,entity),datasource,idList); removeBatch(getDOModel(system,entity),scope,datasource,idList);
} }
default BaseData get(String system,String entity,String datasource,Serializable key) default boolean removeByMap(String system,String scope,String entity,String datasource,BaseData et)
{ {
return get(getDOModel(system,entity),datasource,key); return removeByMap(getDOModel(system,entity),scope,datasource,et);
} }
default BaseData getDraft(String system,String entity,String datasource,BaseData et) default BaseData get(String system,String scope,String entity,String datasource,Serializable key)
{ {
return getDraft(getDOModel(system,entity),datasource,et); return get(getDOModel(system,entity),scope,datasource,key);
} }
default boolean checkKey(String system,String entity,String datasource,BaseData et) default List<BaseData> getBatch(String system,String scope,String entity,String datasource,List<Serializable> idList)
{ {
return checkKey(getDOModel(system,entity),datasource,et); return getBatch(getDOModel(system,entity),scope,datasource,idList);
} }
default boolean save(String system,String entity,String datasource,BaseData et) default BaseData getByMap(String system,String scope,String entity,String datasource,BaseData et)
{ {
return save(getDOModel(system,entity),datasource,et); return getByMap(getDOModel(system,entity),scope,datasource,et);
} }
default void saveBatch(String system,String entity,String datasource,List<BaseData> list) default BaseData getDraft(String system,String scope,String entity,String datasource,BaseData et)
{ {
saveBatch(getDOModel(system,entity),datasource,list); return getDraft(getDOModel(system,entity),scope,datasource,et);
} }
default Page<BaseData> fetch(String system,String entity,String dataSet,String datasource,SearchContextBase context) default boolean checkKey(String system,String scope,String entity,String datasource,BaseData et)
{ {
return fetch(getDOModel(system,entity),dataSet,datasource,context); return checkKey(getDOModel(system,entity),scope,datasource,et);
} }
default List<BaseData> list(String system,String entity,String dataSet,String datasource,SearchContextBase context) default boolean save(String system,String scope,String entity,String datasource,BaseData et)
{ {
return list(getDOModel(system,entity),dataSet,datasource,context); return save(getDOModel(system,entity),scope,datasource,et);
} }
default Page<BaseData> fetchDefault(String system,String entity,String datasource,SearchContextBase context) default void saveBatch(String system,String scope,String entity,String datasource,List<BaseData> list)
{ {
return fetchDefault(getDOModel(system,entity),datasource,context); saveBatch(getDOModel(system,entity),scope,datasource,list);
} }
default List<BaseData> listDefault(String system,String entity,String datasource,SearchContextBase context) default List<BaseData> select(String system,String scope,String entity,String datasource,BaseData et){
{ return select(getDOModel(system,entity),scope,datasource,et);
return listDefault(getDOModel(system,entity),datasource,context); }
default Page<BaseData> select(String system,String scope,String entity,String datasource,BaseData et,Pageable pageable){
return select(getDOModel(system,entity),scope,datasource,et,pageable);
}
default List<BaseData> query(String system,String scope,String entity,String datasource,String dataQuery,FilterData context){
return query(getDOModel(system,entity),scope,datasource,dataQuery,context);
}
default Page<BaseData> query(String system,String scope,String entity,String datasource,String dataQuery,FilterData context,Pageable pageable){
return query(getDOModel(system,entity),scope,datasource,dataQuery,context,pageable);
}
default List<BaseData> selectRaw(String system,String scope,String entity,String datasource,String sql,FilterData context){
return selectRaw(getDOModel(system,entity),scope,datasource,sql,context);
}
default boolean execRaw(String system,String scope,String entity,String datasource,String sql,BaseData param){
return execRaw(getDOModel(system,entity),scope,datasource,sql,param);
}
default List<BaseData> fetch(String system,String scope,String entity,String datasource,String dataSet,FilterData context){
return fetch(getDOModel(system,entity),scope,datasource,dataSet,context);
}
default Page<BaseData> fetch(String system,String scope,String entity,String datasource,String dataSet,FilterData context, Pageable pageable){
return fetch(getDOModel(system,entity),scope,datasource,dataSet,context,pageable);
} }
DOModel getDOModel(String system,String entity);
} }
package cn.ibizlab.core.data.service.impl; package cn.ibizlab.core.data.service.impl;
import cn.ibizlab.core.data.domain.DOModel; import cn.ibizlab.core.data.domain.DOModel;
import cn.ibizlab.core.data.dto.BaseData; import cn.ibizlab.core.data.dto.*;
import cn.ibizlab.core.data.dto.DbDataQuery;
import cn.ibizlab.core.data.dto.RequestData;
import cn.ibizlab.core.data.dto.ResponseData;
import cn.ibizlab.core.data.service.IDataService; import cn.ibizlab.core.data.service.IDataService;
import cn.ibizlab.core.data.service.ModelService; import cn.ibizlab.core.data.service.ModelService;
import cn.ibizlab.util.filter.SearchContextBase; import cn.ibizlab.util.filter.SearchContextBase;
...@@ -12,6 +9,7 @@ import lombok.extern.slf4j.Slf4j; ...@@ -12,6 +9,7 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Primary; import org.springframework.context.annotation.Primary;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils; import org.springframework.util.ObjectUtils;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
...@@ -57,21 +55,21 @@ public class BaseDataService implements IDataService { ...@@ -57,21 +55,21 @@ public class BaseDataService implements IDataService {
{ {
if("create".equalsIgnoreCase(method)) if("create".equalsIgnoreCase(method))
{ {
if(create(model, datasource, requestBody.getBaseData())) if(create(model, scope, datasource, requestBody.getBaseData()))
return ResponseData.ok(requestBody.getBaseData()); return ResponseData.ok(requestBody.getBaseData());
else else
return ResponseData.error(1,""); return ResponseData.error(1,"");
} }
else if("update".equalsIgnoreCase(method)) else if("update".equalsIgnoreCase(method))
{ {
if(update(model, datasource, requestBody.getBaseData())) if(update(model, scope, datasource, requestBody.getBaseData()))
return ResponseData.ok(requestBody.getBaseData()); return ResponseData.ok(requestBody.getBaseData());
else else
return ResponseData.error(1,""); return ResponseData.error(1,"");
} }
else if("save".equalsIgnoreCase(method)) else if("save".equalsIgnoreCase(method))
{ {
if(save(model, datasource, requestBody.getBaseData())) if(save(model, scope, datasource, requestBody.getBaseData()))
return ResponseData.ok(requestBody.getBaseData()); return ResponseData.ok(requestBody.getBaseData());
else else
return ResponseData.error(1,""); return ResponseData.error(1,"");
...@@ -83,7 +81,7 @@ public class BaseDataService implements IDataService { ...@@ -83,7 +81,7 @@ public class BaseDataService implements IDataService {
key=requestBody.getBaseData().getSerializableValue(model.getKeyPropertyName()); key=requestBody.getBaseData().getSerializableValue(model.getKeyPropertyName());
if(ObjectUtils.isEmpty(key)) if(ObjectUtils.isEmpty(key))
return ResponseData.error(400,"key 没有输入"); return ResponseData.error(400,"key 没有输入");
if(remove(model, datasource, key)) if(remove(model, scope, datasource, key))
return ResponseData.ok(requestBody.getBaseData()); return ResponseData.ok(requestBody.getBaseData());
else else
return ResponseData.error(1,""); return ResponseData.error(1,"");
...@@ -95,7 +93,7 @@ public class BaseDataService implements IDataService { ...@@ -95,7 +93,7 @@ public class BaseDataService implements IDataService {
key=requestBody.getBaseData().getSerializableValue(model.getKeyPropertyName()); key=requestBody.getBaseData().getSerializableValue(model.getKeyPropertyName());
if(ObjectUtils.isEmpty(key)) if(ObjectUtils.isEmpty(key))
return ResponseData.error(400,"key 没有输入"); return ResponseData.error(400,"key 没有输入");
BaseData data=get(model,datasource,key); BaseData data=get(model,scope,datasource,key);
if(data!=null) if(data!=null)
return ResponseData.ok(data); return ResponseData.ok(data);
else else
...@@ -103,124 +101,185 @@ public class BaseDataService implements IDataService { ...@@ -103,124 +101,185 @@ public class BaseDataService implements IDataService {
} }
else if("checkKey".equalsIgnoreCase(method)) else if("checkKey".equalsIgnoreCase(method))
{ {
if(checkKey(model, datasource, requestBody.getBaseData())) if(checkKey(model, scope, datasource, requestBody.getBaseData()))
return ResponseData.ok(requestBody.getBaseData()); return ResponseData.ok(requestBody.getBaseData());
else else
return ResponseData.error(1,""); return ResponseData.error(1,"");
} }
else if("getDraft".equalsIgnoreCase(method)) else if("getDraft".equalsIgnoreCase(method))
{ {
return ResponseData.ok(getDraft(model, datasource, requestBody.getBaseData())); return ResponseData.ok(getDraft(model, scope, datasource, requestBody.getBaseData()));
} }
else if("createBatch".equalsIgnoreCase(method)) else if("createBatch".equalsIgnoreCase(method))
{ {
createBatch(model, datasource, requestBody.getListData()); createBatch(model, scope, datasource, requestBody.getListData());
return ResponseData.ok(true); return ResponseData.ok(true);
} }
else if("updateBatch".equalsIgnoreCase(method)) else if("updateBatch".equalsIgnoreCase(method))
{ {
updateBatch(model, datasource, requestBody.getListData()); updateBatch(model, scope, datasource, requestBody.getListData());
return ResponseData.ok(true); return ResponseData.ok(true);
} }
else if("saveBatch".equalsIgnoreCase(method)) else if("saveBatch".equalsIgnoreCase(method))
{ {
saveBatch(model, datasource, requestBody.getListData()); saveBatch(model, scope, datasource, requestBody.getListData());
return ResponseData.ok(true); return ResponseData.ok(true);
} }
return null; return null;
} }
@Override @Override
public boolean create(DOModel model, String datasource, BaseData et) public boolean create(DOModel model, String scope, String datasource, BaseData et)
{ {
if(StringUtils.isEmpty(datasource))datasource=model.getDefaultDataSource(); if(StringUtils.isEmpty(datasource))datasource=model.getDefaultDataSource();
return getProxyService(datasource).create(model,datasource,et); return getProxyService(datasource).create(model,scope,datasource,et);
} }
@Override @Override
public void createBatch(DOModel model, String datasource, List<BaseData> list) public void createBatch(DOModel model, String scope, String datasource, List<BaseData> list)
{ {
if(StringUtils.isEmpty(datasource))datasource=model.getDefaultDataSource(); if(StringUtils.isEmpty(datasource))datasource=model.getDefaultDataSource();
getProxyService(datasource).createBatch(model,datasource,list); getProxyService(datasource).createBatch(model,scope,datasource,list);
} }
@Override @Override
public boolean update(DOModel model, String datasource, BaseData et) public boolean update(DOModel model, String scope, String datasource, BaseData et)
{ {
if(StringUtils.isEmpty(datasource))datasource=model.getDefaultDataSource(); if(StringUtils.isEmpty(datasource))datasource=model.getDefaultDataSource();
return getProxyService(datasource).update(model,datasource,et); return getProxyService(datasource).update(model,scope,datasource,et);
} }
@Override @Override
public void updateBatch(DOModel model, String datasource, List<BaseData> list) public void updateBatch(DOModel model, String scope, String datasource, List<BaseData> list)
{ {
if(StringUtils.isEmpty(datasource))datasource=model.getDefaultDataSource(); if(StringUtils.isEmpty(datasource))datasource=model.getDefaultDataSource();
getProxyService(datasource).updateBatch(model,datasource,list); getProxyService(datasource).updateBatch(model,scope,datasource,list);
} }
@Override @Override
public boolean remove(DOModel model, String datasource, Serializable key) public boolean remove(DOModel model, String scope, String datasource, Serializable key)
{ {
if(StringUtils.isEmpty(datasource))datasource=model.getDefaultDataSource(); if(StringUtils.isEmpty(datasource))datasource=model.getDefaultDataSource();
return getProxyService(datasource).remove(model,datasource,key); return getProxyService(datasource).remove(model,scope,datasource,key);
} }
@Override @Override
public void removeBatch(DOModel model, String datasource, List<Serializable> idList) public void removeBatch(DOModel model, String scope, String datasource, List<Serializable> idList)
{ {
if(StringUtils.isEmpty(datasource))datasource=model.getDefaultDataSource(); if(StringUtils.isEmpty(datasource))datasource=model.getDefaultDataSource();
getProxyService(datasource).removeBatch(model,datasource,idList); getProxyService(datasource).removeBatch(model,scope,datasource,idList);
} }
@Override @Override
public BaseData get(DOModel model, String datasource, Serializable key) public boolean removeByMap(DOModel model, String scope, String datasource, BaseData et)
{
return false;
}
@Override
public BaseData get(DOModel model, String scope, String datasource, Serializable key)
{ {
if(StringUtils.isEmpty(datasource))datasource=model.getDefaultDataSource(); if(StringUtils.isEmpty(datasource))datasource=model.getDefaultDataSource();
return getProxyService(datasource).get(model,datasource,key); return getProxyService(datasource).get(model,scope,datasource,key);
}
@Override
public List<BaseData> getBatch(DOModel model, String scope, String datasource, List<Serializable> idList)
{
return null;
} }
@Override @Override
public BaseData getDraft(DOModel model, String datasource, BaseData et) public BaseData getByMap(DOModel model, String scope, String datasource, BaseData et)
{
return null;
}
@Override
public BaseData getDraft(DOModel model, String scope, String datasource, BaseData et)
{ {
if(StringUtils.isEmpty(datasource))datasource=model.getDefaultDataSource(); if(StringUtils.isEmpty(datasource))datasource=model.getDefaultDataSource();
return getProxyService(datasource).getDraft(model,datasource,et); return getProxyService(datasource).getDraft(model,scope,datasource,et);
} }
@Override @Override
public boolean checkKey(DOModel model, String datasource, BaseData et) public boolean checkKey(DOModel model, String scope, String datasource, BaseData et)
{ {
if(StringUtils.isEmpty(datasource))datasource=model.getDefaultDataSource(); if(StringUtils.isEmpty(datasource))datasource=model.getDefaultDataSource();
return getProxyService(datasource).checkKey(model,datasource,et); return getProxyService(datasource).checkKey(model,scope,datasource,et);
} }
@Override @Override
public boolean save(DOModel model, String datasource, BaseData et) public boolean save(DOModel model, String scope, String datasource, BaseData et)
{ {
if(StringUtils.isEmpty(datasource))datasource=model.getDefaultDataSource(); if(StringUtils.isEmpty(datasource))datasource=model.getDefaultDataSource();
return getProxyService(datasource).save(model,datasource,et); return getProxyService(datasource).save(model,scope,datasource,et);
} }
@Override @Override
public void saveBatch(DOModel model, String datasource, List<BaseData> list) public void saveBatch(DOModel model, String scope, String datasource, List<BaseData> list)
{ {
if(StringUtils.isEmpty(datasource))datasource=model.getDefaultDataSource(); if(StringUtils.isEmpty(datasource))datasource=model.getDefaultDataSource();
getProxyService(datasource).saveBatch(model,datasource,list); getProxyService(datasource).saveBatch(model,scope,datasource,list);
} }
@Override @Override
public Page<BaseData> fetch(DOModel model, String dataSet, String datasource, SearchContextBase context) public List<BaseData> select(DOModel model, String scope, String datasource, BaseData et)
{ {
if(StringUtils.isEmpty(datasource))datasource=model.getDefaultDataSource(); if(StringUtils.isEmpty(datasource))datasource=model.getDefaultDataSource();
return getProxyService(datasource).fetch(model,dataSet,datasource,context); return getProxyService(datasource).select(model,scope,datasource,et);
} }
@Override @Override
public List<BaseData> list(DOModel model, String dataSet, String datasource, SearchContextBase context) public Page<BaseData> select(DOModel model, String scope, String datasource, BaseData et, Pageable pageable)
{ {
if(StringUtils.isEmpty(datasource))datasource=model.getDefaultDataSource(); if(StringUtils.isEmpty(datasource))datasource=model.getDefaultDataSource();
return getProxyService(datasource).list(model,dataSet,datasource,context); return getProxyService(datasource).select(model,scope,datasource,et,pageable);
} }
@Override
public List<BaseData> query(DOModel model, String scope, String datasource, String dataQuery, FilterData context)
{
if(StringUtils.isEmpty(datasource))datasource=model.getDefaultDataSource();
return getProxyService(datasource).fetch(model,scope,datasource,dataQuery,context);
}
@Override
public Page<BaseData> query(DOModel model, String scope, String datasource, String dataQuery, FilterData context, Pageable pageable)
{
if(StringUtils.isEmpty(datasource))datasource=model.getDefaultDataSource();
return getProxyService(datasource).fetch(model,scope,datasource,dataQuery,context,pageable);
}
@Override
public List<BaseData> selectRaw(DOModel model, String scope, String datasource, String sql, FilterData context)
{
if(StringUtils.isEmpty(datasource))datasource=model.getDefaultDataSource();
return getProxyService(datasource).selectRaw(model,scope,datasource,sql,context);
}
@Override
public boolean execRaw(DOModel model, String scope, String datasource, String sql, BaseData param)
{
if(StringUtils.isEmpty(datasource))datasource=model.getDefaultDataSource();
return getProxyService(datasource).execRaw(model,scope,datasource,sql,param);
}
@Override
public List<BaseData> fetch(DOModel model, String scope, String datasource, String dataSet, FilterData context)
{
if(StringUtils.isEmpty(datasource))datasource=model.getDefaultDataSource();
return getProxyService(datasource).fetch(model,scope,datasource,dataSet,context);
}
@Override
public Page<BaseData> fetch(DOModel model, String scope, String datasource, String dataSet, FilterData context, Pageable pageable)
{
if(StringUtils.isEmpty(datasource))datasource=model.getDefaultDataSource();
return getProxyService(datasource).fetch(model,scope,datasource,dataSet,context,pageable);
}
} }
...@@ -2,21 +2,23 @@ package cn.ibizlab.core.data.service.impl; ...@@ -2,21 +2,23 @@ package cn.ibizlab.core.data.service.impl;
import cn.ibizlab.core.data.domain.DOModel; import cn.ibizlab.core.data.domain.DOModel;
import cn.ibizlab.core.data.domain.DOModel; import cn.ibizlab.core.data.domain.DOModel;
import cn.ibizlab.core.data.dto.BaseData; import cn.ibizlab.core.data.dto.*;
import cn.ibizlab.core.data.dto.DbDataQuery;
import cn.ibizlab.core.data.filter.DOModelSearchContext; import cn.ibizlab.core.data.filter.DOModelSearchContext;
import cn.ibizlab.core.data.mapper.DbDataMapper; import cn.ibizlab.core.data.mapper.DbDataMapper;
import cn.ibizlab.core.data.model.POSchema; import cn.ibizlab.core.data.model.POSchema;
import cn.ibizlab.core.data.model.PojoSchema; import cn.ibizlab.core.data.model.PojoSchema;
import cn.ibizlab.core.data.service.IDOModelService; import cn.ibizlab.core.data.service.IDOModelService;
import cn.ibizlab.core.data.service.IDataService; import cn.ibizlab.core.data.service.IDataService;
import cn.ibizlab.core.data.service.ModelService;
import cn.ibizlab.util.errors.BadRequestAlertException; import cn.ibizlab.util.errors.BadRequestAlertException;
import cn.ibizlab.util.filter.SearchContextBase; import cn.ibizlab.util.filter.SearchContextBase;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.IdWorker; import com.baomidou.mybatisplus.core.toolkit.IdWorker;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageImpl; import org.springframework.data.domain.PageImpl;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.ObjectUtils; import org.springframework.util.ObjectUtils;
...@@ -31,127 +33,232 @@ import java.util.List; ...@@ -31,127 +33,232 @@ import java.util.List;
*/ */
@Slf4j @Slf4j
@Service @Service
public class DbDataServiceImpl extends BaseDataService { public class DbDataServiceImpl implements IDataService {
@Autowired @Autowired
private DbDataMapper dbDataMapper; private DbDataMapper dbDataMapper;
@Override @Override
public boolean create(DOModel model, String datasource, BaseData et) public ResponseData call(DOModel model, String scope, String datasource, String method, RequestData requestData)
{
return null;
}
@Override
public boolean create(DOModel model, String scope, String datasource, BaseData et)
{ {
Serializable key=model.getKeyValue(et,true); Serializable key=model.getKeyValue(et,true);
if(ObjectUtils.isEmpty(key)) if(ObjectUtils.isEmpty(key))
throw new BadRequestAlertException("未找到主键",model.getName(),null); throw new BadRequestAlertException("未找到主键",model.getName(),null);
if(dbDataMapper.insertData(model.getDefaultPOSchema(),et)==1) if(dbDataMapper.insertData(model.getPOSchema(datasource),et)==1)
et.setAll(get(model,datasource,key)); et.setAll(get(model,scope,datasource,key));
return true; return true;
} }
@Override @Override
public void createBatch(DOModel model, String datasource, List<BaseData> list) public void createBatch(DOModel model, String scope, String datasource, List<BaseData> list)
{ {
} }
@Override @Override
public boolean update(DOModel model, String datasource, BaseData et) public boolean update(DOModel model, String scope, String datasource, BaseData et)
{ {
Serializable key=model.getKeyValue(et,true); Serializable key=model.getKeyValue(et,false);
if(ObjectUtils.isEmpty(key)) if(ObjectUtils.isEmpty(key))
throw new BadRequestAlertException("未找到主键",model.getName(),null); throw new BadRequestAlertException("未找到主键",model.getName(),null);
dbDataMapper.updateData(model.getDefaultPOSchema(),et); dbDataMapper.updateData(model.getPOSchema(datasource),et);
et.setAll(get(model,datasource,(Serializable)key)); et.setAll(get(model,scope,datasource,(Serializable)key));
return true; return true;
} }
@Override @Override
public void updateBatch(DOModel model, String datasource, List<BaseData> list) public void updateBatch(DOModel model, String scope, String datasource, List<BaseData> list)
{ {
} }
@Override @Override
public boolean remove(DOModel model, String datasource, Serializable key) public boolean remove(DOModel model, String scope, String datasource, Serializable key)
{ {
if(ObjectUtils.isEmpty(key)) if(ObjectUtils.isEmpty(key))
throw new BadRequestAlertException("未找到主键",model.getName(),null); throw new BadRequestAlertException("未找到主键",model.getName(),null);
BaseData et = model.newData(key); BaseData et = model.newData(key);
if(et==null) if(et==null)
throw new BadRequestAlertException("未找到主键",model.getName(),null); throw new BadRequestAlertException("未找到主键",model.getName(),null);
dbDataMapper.removeData(model.getDefaultPOSchema(),et); dbDataMapper.removeData(model.getPOSchema(datasource),et);
return true; return true;
} }
@Override @Override
public void removeBatch(DOModel model, String datasource, List<Serializable> idList) public void removeBatch(DOModel model, String scope, String datasource, List<Serializable> idList)
{ {
} }
@Override @Override
public BaseData get(DOModel model, String datasource, Serializable key) public boolean removeByMap(DOModel model, String scope, String datasource, BaseData et)
{
Serializable key=model.getKeyValue(et,false);
if(ObjectUtils.isEmpty(key))
throw new BadRequestAlertException("未找到主键",model.getName(),null);
POSchema poSchema=model.getPOSchema(datasource);
dbDataMapper.removeData(poSchema,et);
return true;
}
@Override
public BaseData get(DOModel model, String scope, String datasource, Serializable key)
{ {
if(ObjectUtils.isEmpty(key)) if(ObjectUtils.isEmpty(key))
throw new BadRequestAlertException("未找到主键",model.getName(),null); throw new BadRequestAlertException("未找到主键",model.getName(),null);
BaseData et = model.newData(key); BaseData et = model.newData(key);
if(et==null) if(et==null)
throw new BadRequestAlertException("未找到主键",model.getName(),null); throw new BadRequestAlertException("未找到主键",model.getName(),null);
POSchema poSchema=model.getDefaultPOSchema(); POSchema poSchema=model.getPOSchema(datasource);
List<BaseData> list=dbDataMapper.getData(poSchema,et); List<BaseData> list=dbDataMapper.getData(poSchema,et);
if(ObjectUtils.isEmpty(list)||list.size()>1) if(ObjectUtils.isEmpty(list)||list.size()>1)
throw new BadRequestAlertException("未找到数据",model.getName(),key.toString()); throw new BadRequestAlertException("未找到数据",model.getName(),key.toString());
if(list.size()>1)
throw new BadRequestAlertException("数据不唯一",model.getName(),key.toString());
return poSchema.trans(list.get(0)); return poSchema.trans(list.get(0));
} }
@Override @Override
public BaseData getDraft(DOModel model, String datasource, BaseData et) public List<BaseData> getBatch(DOModel model, String scope, String datasource, List<Serializable> idList)
{ {
return null; return null;
} }
@Override @Override
public boolean checkKey(DOModel model, String datasource, BaseData et) public BaseData getByMap(DOModel model, String scope, String datasource, BaseData et)
{ {
Serializable key=model.getKeyValue(et,true); Serializable key=model.getKeyValue(et,false);
if(ObjectUtils.isEmpty(key))
throw new BadRequestAlertException("未找到主键",model.getName(),null);
POSchema poSchema=model.getPOSchema(datasource);
List<BaseData> list=dbDataMapper.getData(poSchema,et);
if(ObjectUtils.isEmpty(list)||list.size()>1)
throw new BadRequestAlertException("未找到数据",model.getName(),key.toString());
return poSchema.trans(list.get(0));
}
@Override
public BaseData getDraft(DOModel model, String scope, String datasource, BaseData et)
{
return null;
}
@Override
public boolean checkKey(DOModel model, String scope, String datasource, BaseData et)
{
Serializable key=model.getKeyValue(et,false);
if(ObjectUtils.isEmpty(key)) if(ObjectUtils.isEmpty(key))
return false; return false;
List<BaseData> list=dbDataMapper.getData(model.getDefaultPOSchema(),et); int cnt=dbDataMapper.countData(model.getPOSchema(datasource),et);
if(ObjectUtils.isEmpty(list)&&list.size()==1) return cnt==1;
return list.get(0).getIntegerValue("cnt",0)==1;
return false;
} }
@Override @Override
public boolean save(DOModel model, String datasource, BaseData et) public boolean save(DOModel model, String scope, String datasource, BaseData et)
{ {
if(checkKey(model,datasource,et)) if(checkKey(model,scope,datasource,et))
return update(model,datasource,et); return update(model,scope,datasource,et);
else else
return create(model,datasource,et); return create(model,scope,datasource,et);
} }
@Override @Override
public void saveBatch(DOModel model, String datasource, List<BaseData> list) public void saveBatch(DOModel model, String scope, String datasource, List<BaseData> list)
{ {
} }
@Override @Override
public Page<BaseData> fetch(DOModel model, String dataSet, String datasource, SearchContextBase context) public List<BaseData> select(DOModel model, String scope, String datasource, BaseData et)
{ {
return null; POSchema poSchema=model.getPOSchema(datasource);
return dbDataMapper.selectData(poSchema,et);
} }
@Override @Override
public List<BaseData> list(DOModel model, String dataSet, String datasource, SearchContextBase context) public Page<BaseData> select(DOModel model, String scope, String datasource, BaseData et, Pageable pageable)
{ {
return null; POSchema poSchema=model.getPOSchema(datasource);
com.baomidou.mybatisplus.extension.plugins.pagination.Page<BaseData> pages=dbDataMapper.selectData(poSchema,et,FilterData.getPages(poSchema,pageable));
return new PageImpl<BaseData>(pages.getRecords(), pageable, pages.getTotal());
}
@Override
public List<BaseData> query(DOModel model, String scope, String datasource, String dataQuery, FilterData context)
{
POSchema poSchema=model.getPOSchema(datasource);
POSchema.Segment segment=poSchema.getSegment("-dq-"+dataQuery+"-","");
return dbDataMapper.queryData(poSchema,context.getSql(segment),context,context.getSearchCond());
}
@Override
public Page<BaseData> query(DOModel model, String scope, String datasource, String dataQuery, FilterData context, Pageable pageable)
{
POSchema poSchema=model.getPOSchema(datasource);
POSchema.Segment segment=poSchema.getSegment("-dq-"+dataQuery+"-","");
if(pageable!=null)
context.setPageable(pageable);
else
pageable=context.getPageable();
com.baomidou.mybatisplus.extension.plugins.pagination.Page<BaseData> pages=
dbDataMapper.queryData(poSchema,context.getSql(segment),context,context.getSearchCond(),context.getPages(poSchema));
return new PageImpl<BaseData>(pages.getRecords(), pageable, pages.getTotal());
}
@Override
public List<BaseData> selectRaw(DOModel model, String scope, String datasource, String sql, FilterData context)
{
POSchema poSchema=model.getPOSchema(datasource);
return dbDataMapper.queryData(poSchema,sql,context,context.getSearchCond());
}
@Override
public boolean execRaw(DOModel model, String scope, String datasource, String sql, BaseData param)
{
POSchema poSchema=model.getPOSchema(datasource);
return dbDataMapper.executeRaw(poSchema,sql,param);
} }
@Override
public List<BaseData> fetch(DOModel model, String scope, String datasource, String dataSet, FilterData context)
{
POSchema poSchema=model.getPOSchema(datasource);
POSchema.Segment segment=poSchema.getSegment("-ds-"+dataSet+"-","");
return dbDataMapper.queryData(poSchema,context.getSql(segment),context,context.getSearchCond());
}
@Override
public Page<BaseData> fetch(DOModel model, String scope, String datasource, String dataSet, FilterData context, Pageable pageable)
{
POSchema poSchema=model.getPOSchema(datasource);
POSchema.Segment segment=poSchema.getSegment("-ds-"+dataSet+"-","");
if(pageable!=null)
context.setPageable(pageable);
else
pageable=context.getPageable();
com.baomidou.mybatisplus.extension.plugins.pagination.Page<BaseData> pages=
dbDataMapper.queryData(poSchema,context.getSql(segment),context,context.getSearchCond(),context.getPages(poSchema));
return new PageImpl<BaseData>(pages.getRecords(), pageable, pages.getTotal());
}
@Override
public DOModel getDOModel(String system, String entity)
{
return modelService.getDOModel(system,entity);
}
@Autowired
private ModelService modelService;
} }
......
...@@ -2,9 +2,14 @@ package cn.ibizlab.core.data.service.impl; ...@@ -2,9 +2,14 @@ package cn.ibizlab.core.data.service.impl;
import cn.ibizlab.core.data.domain.DOModel; import cn.ibizlab.core.data.domain.DOModel;
import cn.ibizlab.core.data.dto.BaseData; import cn.ibizlab.core.data.dto.BaseData;
import cn.ibizlab.core.data.dto.FilterData;
import cn.ibizlab.core.data.dto.RequestData;
import cn.ibizlab.core.data.dto.ResponseData;
import cn.ibizlab.core.data.service.IDataService;
import cn.ibizlab.util.filter.SearchContextBase; import cn.ibizlab.util.filter.SearchContextBase;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.io.Serializable; import java.io.Serializable;
...@@ -15,89 +20,152 @@ import java.util.List; ...@@ -15,89 +20,152 @@ import java.util.List;
*/ */
@Slf4j @Slf4j
@Service @Service
public class MongoDataServiceImpl extends BaseDataService { public class MongoDataServiceImpl implements IDataService
{
@Override
public ResponseData call(DOModel model, String scope, String datasource, String method, RequestData requestData)
{
return null;
}
@Override
public boolean create(DOModel model, String scope, String datasource, BaseData et)
{
return false;
}
@Override
public void createBatch(DOModel model, String scope, String datasource, List<BaseData> list)
{
}
@Override @Override
public boolean create(DOModel model, String datasource, BaseData et) public boolean update(DOModel model, String scope, String datasource, BaseData et)
{ {
return false; return false;
} }
@Override @Override
public void createBatch(DOModel model, String datasource, List<BaseData> list) public void updateBatch(DOModel model, String scope, String datasource, List<BaseData> list)
{ {
} }
@Override @Override
public boolean update(DOModel model, String datasource, BaseData et) public boolean remove(DOModel model, String scope, String datasource, Serializable key)
{ {
return false; return false;
} }
@Override @Override
public void updateBatch(DOModel model, String datasource, List<BaseData> list) public void removeBatch(DOModel model, String scope, String datasource, List<Serializable> idList)
{ {
} }
@Override @Override
public boolean remove(DOModel model, String datasource, Serializable key) public boolean removeByMap(DOModel model, String scope, String datasource, BaseData et)
{ {
return false; return false;
} }
@Override @Override
public void removeBatch(DOModel model, String datasource, List<Serializable> idList) public BaseData get(DOModel model, String scope, String datasource, Serializable key)
{ {
return null;
}
@Override
public List<BaseData> getBatch(DOModel model, String scope, String datasource, List<Serializable> idList)
{
return null;
} }
@Override @Override
public BaseData get(DOModel model, String datasource, Serializable key) public BaseData getByMap(DOModel model, String scope, String datasource, BaseData et)
{ {
return null; return null;
} }
@Override @Override
public BaseData getDraft(DOModel model, String datasource, BaseData et) public BaseData getDraft(DOModel model, String scope, String datasource, BaseData et)
{ {
return null; return null;
} }
@Override @Override
public boolean checkKey(DOModel model, String datasource, BaseData et) public boolean checkKey(DOModel model, String scope, String datasource, BaseData et)
{ {
return false; return false;
} }
@Override @Override
public boolean save(DOModel model, String datasource, BaseData et) public boolean save(DOModel model, String scope, String datasource, BaseData et)
{ {
return false; return false;
} }
@Override @Override
public void saveBatch(DOModel model, String datasource, List<BaseData> list) public void saveBatch(DOModel model, String scope, String datasource, List<BaseData> list)
{ {
} }
@Override @Override
public Page<BaseData> fetch(DOModel model, String dataSet, String datasource, SearchContextBase context) public List<BaseData> select(DOModel model, String scope, String datasource, BaseData et)
{ {
return null; return null;
} }
@Override @Override
public List<BaseData> list(DOModel model, String dataSet, String datasource, SearchContextBase context) public Page<BaseData> select(DOModel model, String scope, String datasource, BaseData et, Pageable pageable)
{ {
return null; return null;
} }
@Override
public List<BaseData> query(DOModel model, String scope, String datasource, String dataQuery, FilterData context)
{
return null;
}
@Override
public Page<BaseData> query(DOModel model, String scope, String datasource, String dataQuery, FilterData context, Pageable pageable)
{
return null;
}
@Override
public List<BaseData> selectRaw(DOModel model, String scope, String datasource, String sql, FilterData context)
{
return null;
}
@Override
public boolean execRaw(DOModel model, String scope, String datasource, String sql, BaseData param)
{
return false;
}
@Override
public List<BaseData> fetch(DOModel model, String scope, String datasource, String dataSet, FilterData context)
{
return null;
}
@Override
public Page<BaseData> fetch(DOModel model, String scope, String datasource, String dataSet, FilterData context, Pageable pageable)
{
return null;
}
@Override
public DOModel getDOModel(String system, String entity)
{
return null;
}
} }
package cn.ibizlab.core.util.config;
import cn.ibizlab.core.data.dto.FilterData;
import cn.ibizlab.util.filter.SearchContextBase;
import cn.ibizlab.util.domain.DTOBase;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.core.MethodParameter;
import org.springframework.web.bind.support.WebDataBinderFactory;
import org.springframework.web.context.request.NativeWebRequest;
import org.springframework.web.method.support.HandlerMethodArgumentResolver;
import org.springframework.web.method.support.ModelAndViewContainer;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
@Slf4j
@Configuration
public class FilterDataResolver implements HandlerMethodArgumentResolver {
@Value("${ibiz.pageLimit:1000}")
private int pageLimit=1000;
private static ObjectMapper objectMapper=new ObjectMapper();
@Override
public boolean supportsParameter(MethodParameter parameter) {
return SearchContextBase.class.isAssignableFrom(parameter.getParameterType()) || DTOBase.class.isAssignableFrom(parameter.getParameterType())
|| FilterData.class.isAssignableFrom(parameter.getParameterType());
}
@Override
public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer,
NativeWebRequest webRequest, WebDataBinderFactory binderFactory) throws Exception {
Map<String, String[]> params = webRequest.getParameterMap();
LinkedHashMap<String,Object> set = new LinkedHashMap<>();
for (String key : params.keySet()) {
set.put(key,params.get(key)[0]);
}
if(SearchContextBase.class.isAssignableFrom(parameter.getParameterType()) && (!set.containsKey("size"))){
set.put("size", pageLimit);
}
if(FilterData.class.isAssignableFrom(parameter.getParameterType()) && (!set.containsKey("size"))){
set.put("size", pageLimit);
}
String json = objectMapper.writeValueAsString(set);
return objectMapper.readValue(json, parameter.getParameterType());
}
}
\ No newline at end of file
...@@ -43,21 +43,42 @@ ...@@ -43,21 +43,42 @@
</update> </update>
<select id="getData" parameterType="cn.ibizlab.core.data.dto.BaseData" resultType="cn.ibizlab.core.data.dto.BaseData"> <select id="getData" parameterType="cn.ibizlab.core.data.dto.BaseData" resultType="cn.ibizlab.core.data.dto.BaseData">
select select t1.* from
<foreach collection="schema.baseColumnMap" item="value" index="key" separator=","> <choose>
${key} <when test="schema.defaultQueryScript!=null">
</foreach> ( ${schema.defaultQueryScript.body} ) t1 where
from ${schema.name} </when>
where <otherwise>
<if test="schema.logicValidColumn!=null"> ${schema.name} t1 where
${schema.logicValidCond} and <if test="schema.logicValidColumn!=null">
</if> ${schema.logicValidCond} and
</if>
</otherwise>
</choose>
<foreach collection="schema.keyMap" item="value" index="key" separator="and"> <foreach collection="schema.keyMap" item="value" index="key" separator="and">
${key}= #{data[${value}]} ${key}= #{data[${value}]}
</foreach> </foreach>
</select> </select>
<select id="checkData" parameterType="cn.ibizlab.core.data.dto.BaseData" resultType="cn.ibizlab.core.data.dto.BaseData"> <select id="selectData" parameterType="cn.ibizlab.core.data.dto.BaseData" resultType="cn.ibizlab.core.data.dto.BaseData">
select t1.* from
<choose>
<when test="schema.defaultQueryScript!=null">
( ${schema.defaultQueryScript.body} ) t1 where
</when>
<otherwise>
${schema.name} t1 where
<if test="schema.logicValidColumn!=null">
${schema.logicValidCond} and
</if>
</otherwise>
</choose>
<foreach collection="schema.resultMap" item="value" index="key" separator=",">
<if test="data.keys.contains(value)">${key}= #{data[${value}]}</if>
</foreach>
</select>
<select id="countData" parameterType="cn.ibizlab.core.data.dto.BaseData" resultType="java.lang.Integer">
select count(1) as cnt from ${schema.name} select count(1) as cnt from ${schema.name}
where where
<if test="schema.logicValidColumn!=null"> <if test="schema.logicValidColumn!=null">
......
package cn.ibizlab.api.rest; package cn.ibizlab.api.rest;
import cn.ibizlab.core.data.dto.BaseData; import cn.ibizlab.core.data.dto.BaseData;
import cn.ibizlab.core.data.dto.FilterData;
import cn.ibizlab.core.data.dto.RequestData; import cn.ibizlab.core.data.dto.RequestData;
import cn.ibizlab.core.data.dto.ResponseData; import cn.ibizlab.core.data.dto.ResponseData;
import cn.ibizlab.core.data.service.IDataService; import cn.ibizlab.core.data.service.IDataService;
...@@ -17,6 +18,7 @@ import org.springframework.validation.annotation.Validated; ...@@ -17,6 +18,7 @@ import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.List; import java.util.List;
import java.util.logging.Filter;
@Slf4j @Slf4j
@Api(tags = {"数据" }) @Api(tags = {"数据" })
...@@ -24,102 +26,170 @@ import java.util.List; ...@@ -24,102 +26,170 @@ import java.util.List;
@RequestMapping("") @RequestMapping("")
public class DataResource public class DataResource
{ {
@Autowired @Autowired
public IDataService dataService; public IDataService dataService;
@ApiOperation(value = "保存数据", tags = {"数据" }, notes = "保存数据") @ApiOperation(value = "保存数据", tags = {"数据" }, notes = "保存数据")
@RequestMapping(method = RequestMethod.POST, value = {"/{system}/{entity}/{method}","/{system}/{scope}/{entity}/{method}", @RequestMapping(method = RequestMethod.POST, value = {"/ibiz-repository/{system}/{scope}/{entity}/{method}","/ibiz-repo/{system}/{entity}/{method}"})
"/ibiz-repository/{system}/{entity}/{method}", public ResponseEntity call(@PathVariable(name = "system",required = true) String system,
"/ibiz-repository/{system}/{scope}/{entity}/{method}" @PathVariable(name = "scope",required = false) String scope,@PathVariable(name = "entity",required = true) String entity,
,"/ibiz-repo/{system}/{entity}/{method}","/ibiz-repo/{system}/{scope}/{entity}/{method}"}) @RequestParam(name = "datasource",required = false) String datasource,
public ResponseEntity call(@PathVariable(name = "system",required = true) String system,@PathVariable(name = "scope",required = false) String scope,@PathVariable(name = "entity",required = true) String entity,@PathVariable(name = "method",required = true) String method,@RequestParam(name = "datasource",required = false) String datasource,@RequestBody RequestData requestData) { @PathVariable(name = "method",required = true) String method,
ResponseData responseData=dataService.call(system,scope,entity,method,datasource,requestData); @RequestBody RequestData requestData) {
ResponseData responseData=dataService.call(system,scope,entity,datasource,method,requestData);
return ResponseEntity.status(HttpStatus.OK).body(responseData.getBody()); return ResponseEntity.status(HttpStatus.OK).body(responseData.getBody());
} }
@ApiOperation(value = "新建数据", tags = {"数据" }, notes = "新建数据") @ApiOperation(value = "新建数据", tags = {"数据" }, notes = "新建数据")
@RequestMapping(method = RequestMethod.POST, value = "/{system}/{entity}") @RequestMapping(method = RequestMethod.POST, value = {"/ibiz-repository/{system}/{scope}/{entity}","/ibiz-repo/{system}/{entity}",
public ResponseEntity<BaseData> create(@PathVariable(name = "system",required = true) String system,@PathVariable(name = "entity",required = true) String entity,@RequestParam(name = "datasource",required = false) String datasource, @Validated @RequestBody BaseData baseData) { "/ibiz-repository/{system}/{scope}/{entity}/create","/ibiz-repo/{system}/{entity}/create"})
dataService.create(system,entity,datasource,baseData); public ResponseEntity<BaseData> create(@PathVariable(name = "system",required = true) String system,
@PathVariable(name = "scope",required = false) String scope,@PathVariable(name = "entity",required = true) String entity,
@RequestParam(name = "datasource",required = false) String datasource, @Validated @RequestBody BaseData baseData) {
dataService.create(system,scope,entity,datasource,baseData);
return ResponseEntity.status(HttpStatus.OK).body(baseData); return ResponseEntity.status(HttpStatus.OK).body(baseData);
} }
@ApiOperation(value = "批量新建数据", tags = {"数据" }, notes = "批量新建数据") @ApiOperation(value = "批量新建数据", tags = {"数据" }, notes = "批量新建数据")
@RequestMapping(method = RequestMethod.POST, value = "/{system}/{entity}/batch") @RequestMapping(method = RequestMethod.POST, value = {"/ibiz-repository/{system}/{scope}/{entity}/batch","/ibiz-repo/{system}/{entity}/batch",
public ResponseEntity<Boolean> createBatch(@PathVariable(name = "system",required = true) String system,@PathVariable(name = "entity",required = true) String entity,@RequestParam(name = "datasource",required = false) String datasource, @RequestBody List<BaseData> baseDatas) { "/ibiz-repository/{system}/{scope}/{entity}/createbatch","/ibiz-repo/{system}/{entity}/createbatch"})
dataService.createBatch(system,entity,datasource,baseDatas); public ResponseEntity<Boolean> createBatch(@PathVariable(name = "system",required = true) String system,
@PathVariable(name = "scope",required = false) String scope,@PathVariable(name = "entity",required = true) String entity,
@RequestParam(name = "datasource",required = false) String datasource, @RequestBody List<BaseData> baseDatas) {
dataService.createBatch(system,scope,entity,datasource,baseDatas);
return ResponseEntity.status(HttpStatus.OK).body(true); return ResponseEntity.status(HttpStatus.OK).body(true);
} }
@ApiOperation(value = "获取数据", tags = {"数据" }, notes = "获取数据") @ApiOperation(value = "获取数据", tags = {"数据" }, notes = "获取数据")
@RequestMapping(method = RequestMethod.GET, value = "/{system}/{entity}/{key}") @RequestMapping(method = RequestMethod.GET, value = {"/ibiz-repository/{system}/{scope}/{entity}/{key}","/ibiz-repo/{system}/{entity}/{key}"})
public ResponseEntity<BaseData> get(@PathVariable(name = "system",required = true) String system,@PathVariable(name = "entity",required = true) String entity,@RequestParam(name = "datasource",required = false) String datasource, @PathVariable(name = "key",required = true) String key) { public ResponseEntity<BaseData> get(@PathVariable(name = "system",required = true) String system,
BaseData baseData = dataService.get(system,entity,datasource,key); @PathVariable(name = "scope",required = false) String scope,@PathVariable(name = "entity",required = true) String entity,
return ResponseEntity.status(HttpStatus.OK).body(baseData); @RequestParam(name = "datasource",required = false) String datasource, @PathVariable(name = "key",required = true) String key) {
return ResponseEntity.status(HttpStatus.OK).body(dataService.get(system,scope,entity,datasource,key));
} }
@ApiOperation(value = "获取数据", tags = {"数据" }, notes = "获取数据")
@RequestMapping(method = RequestMethod.POST, value = {"/ibiz-repository/{system}/{scope}/{entity}/get","/ibiz-repo/{system}/{entity}/get"})
public ResponseEntity<BaseData> get(@PathVariable(name = "system",required = true) String system,
@PathVariable(name = "scope",required = false) String scope,@PathVariable(name = "entity",required = true) String entity,
@RequestParam(name = "datasource",required = false) String datasource, @Validated @RequestBody BaseData baseData) {
return ResponseEntity.status(HttpStatus.OK).body(dataService.getByMap(system,scope,entity,datasource,baseData));
}
@ApiOperation(value = "删除数据", tags = {"数据" }, notes = "删除数据") @ApiOperation(value = "删除数据", tags = {"数据" }, notes = "删除数据")
@RequestMapping(method = RequestMethod.DELETE, value = "/{system}/{entity}/{key}") @RequestMapping(method = RequestMethod.DELETE, value = {"/ibiz-repository/{system}/{scope}/{entity}/{key}","/ibiz-repo/{system}/{entity}/{key}"})
public ResponseEntity<Boolean> remove(@PathVariable(name = "system",required = true) String system,@PathVariable(name = "entity",required = true) String entity,@RequestParam(name = "datasource",required = false) String datasource, @PathVariable(name = "key",required = true) String key) { public ResponseEntity<Boolean> remove(@PathVariable(name = "system",required = true) String system,@PathVariable(name = "scope",required = false) String scope,@PathVariable(name = "entity",required = true) String entity,@RequestParam(name = "datasource",required = false) String datasource, @PathVariable(name = "key",required = true) String key) {
return ResponseEntity.status(HttpStatus.OK).body(dataService.remove(system,entity,datasource,key)); return ResponseEntity.status(HttpStatus.OK).body(dataService.remove(system,scope,entity,datasource,key));
} }
@ApiOperation(value = "删除数据", tags = {"数据" }, notes = "删除数据")
@RequestMapping(method = RequestMethod.POST, value = {"/ibiz-repository/{system}/{scope}/{entity}/remove","/ibiz-repo/{system}/{entity}/remove"})
public ResponseEntity<Boolean> remove(@PathVariable(name = "system",required = true) String system,
@PathVariable(name = "scope",required = false) String scope,@PathVariable(name = "entity",required = true) String entity,
@RequestParam(name = "datasource",required = false) String datasource, @Validated @RequestBody BaseData baseData) {
return ResponseEntity.status(HttpStatus.OK).body(dataService.removeByMap(system,scope,entity,datasource,baseData));
}
@ApiOperation(value = "批量删除数据", tags = {"数据" }, notes = "批量删除数据") @ApiOperation(value = "批量删除数据", tags = {"数据" }, notes = "批量删除数据")
@RequestMapping(method = RequestMethod.DELETE, value = "/{system}/{entity}/batch") @RequestMapping(method = RequestMethod.DELETE, value = {"/ibiz-repository/{system}/{scope}/{entity}/batch","/ibiz-repo/{system}/{entity}/batch"})
public ResponseEntity<Boolean> removeBatch(@PathVariable(name = "system",required = true) String system,@PathVariable(name = "entity",required = true) String entity,@RequestParam(name = "datasource",required = false) String datasource, @RequestBody List ids) { public ResponseEntity<Boolean> removeBatch(@PathVariable(name = "system",required = true) String system,
dataService.removeBatch(system,entity,datasource,ids); @PathVariable(name = "scope",required = false) String scope,@PathVariable(name = "entity",required = true) String entity,
@RequestParam(name = "datasource",required = false) String datasource, @RequestBody List ids) {
dataService.removeBatch(system,scope,entity,datasource,ids);
return ResponseEntity.status(HttpStatus.OK).body(true); return ResponseEntity.status(HttpStatus.OK).body(true);
} }
@ApiOperation(value = "批量删除数据", tags = {"数据" }, notes = "批量删除数据")
@RequestMapping(method = RequestMethod.POST, value = {"/ibiz-repository/{system}/{scope}/{entity}/removebatch","/ibiz-repo/{system}/{entity}/removebatch"})
public ResponseEntity<Boolean> removeBatch2(@PathVariable(name = "system",required = true) String system,
@PathVariable(name = "scope",required = false) String scope,@PathVariable(name = "entity",required = true) String entity,
@RequestParam(name = "datasource",required = false) String datasource, @RequestBody List ids) {
dataService.removeBatch(system,scope,entity,datasource,ids);
return ResponseEntity.status(HttpStatus.OK).body(true);
}
@ApiOperation(value = "更新数据", tags = {"数据" }, notes = "更新数据") @ApiOperation(value = "更新数据", tags = {"数据" }, notes = "更新数据")
@RequestMapping(method = RequestMethod.PUT, value = "/{system}/{entity}/{key}") @RequestMapping(method = RequestMethod.PUT, value = {"/ibiz-repository/{system}/{scope}/{entity}/{key}","/ibiz-repo/{system}/{entity}/{key}",
public ResponseEntity<BaseData> update(@PathVariable(name = "system",required = true) String system,@PathVariable(name = "entity",required = true) String entity,@RequestParam(name = "datasource",required = false) String datasource, @PathVariable(name = "key",required = true) String key, @RequestBody BaseData baseData) { "/ibiz-repository/{system}/{scope}/{entity}","/ibiz-repo/{system}/{entity}"})
dataService.update(system,entity,datasource,baseData.setKey(key)); public ResponseEntity<BaseData> update(@PathVariable(name = "system",required = true) String system,
@PathVariable(name = "scope",required = false) String scope,@PathVariable(name = "entity",required = true) String entity,
@RequestParam(name = "datasource",required = false) String datasource,
@PathVariable(name = "key",required = false) String key, @RequestBody BaseData baseData) {
dataService.update(system,scope,entity,datasource,baseData.setKey(key));
return ResponseEntity.status(HttpStatus.OK).body(baseData); return ResponseEntity.status(HttpStatus.OK).body(baseData);
} }
@ApiOperation(value = "更新数据", tags = {"数据" }, notes = "更新数据")
@RequestMapping(method = RequestMethod.POST, value = {"/ibiz-repository/{system}/{scope}/{entity}/update","/ibiz-repo/{system}/{entity}/update"})
public ResponseEntity<BaseData> update(@PathVariable(name = "system",required = true) String system,
@PathVariable(name = "scope",required = false) String scope,@PathVariable(name = "entity",required = true) String entity,
@RequestParam(name = "datasource",required = false) String datasource, @RequestBody BaseData baseData) {
dataService.update(system,scope,entity,datasource,baseData);
return ResponseEntity.status(HttpStatus.OK).body(baseData);
}
@ApiOperation(value = "批量更新数据", tags = {"数据" }, notes = "批量更新数据") @ApiOperation(value = "批量更新数据", tags = {"数据" }, notes = "批量更新数据")
@RequestMapping(method = RequestMethod.PUT, value = "/{system}/{entity}/batch") @RequestMapping(method = RequestMethod.PUT, value = {"/ibiz-repository/{system}/{scope}/{entity}/batch","/ibiz-repo/{system}/{entity}/batch"})
public ResponseEntity<Boolean> updateBatch(@PathVariable(name = "system",required = true) String system,@PathVariable(name = "entity",required = true) String entity,@RequestParam(name = "datasource",required = false) String datasource, @RequestBody List<BaseData> baseDatas) { public ResponseEntity<Boolean> updateBatch(@PathVariable(name = "system",required = true) String system,
dataService.updateBatch(system,entity,datasource,baseDatas); @PathVariable(name = "scope",required = false) String scope,@PathVariable(name = "entity",required = true) String entity,
@RequestParam(name = "datasource",required = false) String datasource, @RequestBody List<BaseData> baseDatas) {
dataService.updateBatch(system,scope,entity,datasource,baseDatas);
return ResponseEntity.status(HttpStatus.OK).body(true); return ResponseEntity.status(HttpStatus.OK).body(true);
} }
@ApiOperation(value = "批量更新数据", tags = {"数据" }, notes = "批量更新数据")
@RequestMapping(method = RequestMethod.POST, value = {"/ibiz-repository/{system}/{scope}/{entity}/updatebatch","/ibiz-repo/{system}/{entity}/updatebatch"})
public ResponseEntity<Boolean> updateBatch2(@PathVariable(name = "system",required = true) String system,
@PathVariable(name = "scope",required = false) String scope,@PathVariable(name = "entity",required = true) String entity,
@RequestParam(name = "datasource",required = false) String datasource, @RequestBody List<BaseData> baseDatas) {
dataService.updateBatch(system,scope,entity,datasource,baseDatas);
return ResponseEntity.status(HttpStatus.OK).body(true);
}
@ApiOperation(value = "检查数据", tags = {"数据" }, notes = "检查数据") @ApiOperation(value = "检查数据", tags = {"数据" }, notes = "检查数据")
@RequestMapping(method = RequestMethod.POST, value = "/{system}/{entity}/checkkey") @RequestMapping(method = RequestMethod.POST, value = {"/ibiz-repository/{system}/{scope}/{entity}/checkkey","/ibiz-repo/{system}/{entity}/checkkey"})
public ResponseEntity<Boolean> checkKey(@PathVariable(name = "system",required = true) String system,@PathVariable(name = "entity",required = true) String entity,@RequestParam(name = "datasource",required = false) String datasource, @RequestBody BaseData baseData) { public ResponseEntity<Boolean> checkKey(@PathVariable(name = "system",required = true) String system,
return ResponseEntity.status(HttpStatus.OK).body(dataService.checkKey(system,entity,datasource,baseData)); @PathVariable(name = "scope",required = false) String scope,@PathVariable(name = "entity",required = true) String entity,
@RequestParam(name = "datasource",required = false) String datasource, @RequestBody BaseData baseData) {
return ResponseEntity.status(HttpStatus.OK).body(dataService.checkKey(system,scope,entity,datasource,baseData));
} }
@ApiOperation(value = "获取数据草稿", tags = {"数据" }, notes = "获取数据草稿") @ApiOperation(value = "获取数据草稿", tags = {"数据" }, notes = "获取数据草稿")
@RequestMapping(method = RequestMethod.GET, value = "/{system}/{entity}/getdraft") @RequestMapping(method = {RequestMethod.GET,RequestMethod.POST}, value = {"/ibiz-repository/{system}/{scope}/{entity}/getdraft","/ibiz-repo/{system}/{entity}/getdraft"})
public ResponseEntity<BaseData> getDraft(@PathVariable(name = "system",required = true) String system,@PathVariable(name = "entity",required = true) String entity,@RequestParam(name = "datasource",required = false) String datasource, @RequestBody(required = false) BaseData baseData) { public ResponseEntity<BaseData> getDraft(@PathVariable(name = "system",required = true) String system,
dataService.getDraft(system,entity,datasource,baseData); @PathVariable(name = "scope",required = false) String scope,@PathVariable(name = "entity",required = true) String entity,
@RequestParam(name = "datasource",required = false) String datasource, @RequestBody(required = false) BaseData baseData) {
dataService.getDraft(system,scope,entity,datasource,baseData);
return ResponseEntity.status(HttpStatus.OK).body(baseData); return ResponseEntity.status(HttpStatus.OK).body(baseData);
} }
@ApiOperation(value = "保存数据", tags = {"数据" }, notes = "保存数据") @ApiOperation(value = "保存数据", tags = {"数据" }, notes = "保存数据")
@RequestMapping(method = RequestMethod.POST, value = "/{system}/{entity}/save") @RequestMapping(method = RequestMethod.POST, value = {"/ibiz-repository/{system}/{scope}/{entity}/save","/ibiz-repo/{system}/{entity}/save"})
public ResponseEntity<BaseData> save(@PathVariable(name = "system",required = true) String system,@PathVariable(name = "entity",required = true) String entity,@RequestParam(name = "datasource",required = false) String datasource,@RequestBody BaseData baseData) { public ResponseEntity<BaseData> save(@PathVariable(name = "system",required = true) String system,
dataService.save(system,entity,datasource,baseData); @PathVariable(name = "scope",required = false) String scope,@PathVariable(name = "entity",required = true) String entity,
@RequestParam(name = "datasource",required = false) String datasource,@RequestBody BaseData baseData) {
dataService.save(system,scope,entity,datasource,baseData);
return ResponseEntity.status(HttpStatus.OK).body(baseData); return ResponseEntity.status(HttpStatus.OK).body(baseData);
} }
@ApiOperation(value = "批量保存数据", tags = {"数据" }, notes = "批量保存数据") @ApiOperation(value = "批量保存数据", tags = {"数据" }, notes = "批量保存数据")
@RequestMapping(method = RequestMethod.POST, value = "/{system}/{entity}/savebatch") @RequestMapping(method = RequestMethod.POST, value = {"/ibiz-repository/{system}/{scope}/{entity}/savebatch","/ibiz-repo/{system}/{entity}/savebatch"})
public ResponseEntity<Boolean> saveBatch(@PathVariable(name = "system",required = true) String system,@PathVariable(name = "entity",required = true) String entity,@RequestParam(name = "datasource",required = false) String datasource,@RequestBody List<BaseData> baseDatas) { public ResponseEntity<Boolean> saveBatch(@PathVariable(name = "system",required = true) String system,
dataService.saveBatch(system,entity,datasource,baseDatas); @PathVariable(name = "scope",required = false) String scope,@PathVariable(name = "entity",required = true) String entity,
@RequestParam(name = "datasource",required = false) String datasource,@RequestBody List<BaseData> baseDatas) {
dataService.saveBatch(system,scope,entity,datasource,baseDatas);
return ResponseEntity.status(HttpStatus.OK).body(true); return ResponseEntity.status(HttpStatus.OK).body(true);
} }
@ApiOperation(value = "获取数据集", tags = {"数据" } ,notes = "获取数据集") @ApiOperation(value = "获取数据集", tags = {"数据" } ,notes = "获取数据集")
@RequestMapping(method= RequestMethod.GET , value="/{system}/{entity}/fetch{dataset}") @RequestMapping(method= RequestMethod.GET , value={"/ibiz-repository/{system}/{scope}/{entity}/fetch{dataset}","/ibiz-repo/{system}/{entity}/fetch{dataset}"})
public ResponseEntity<List<BaseData>> fetchDefault(@PathVariable(name = "system",required = true) String system,@PathVariable(name = "entity",required = true) String entity,@PathVariable(name = "dataset",required = true) String dataset,@RequestParam(name = "datasource",required = false) String datasource, public ResponseEntity<List<BaseData>> fetch(@PathVariable(name = "system",required = true) String system,
SearchContextBase context) { @PathVariable(name = "scope",required = false) String scope,@PathVariable(name = "entity",required = true) String entity,
Page<BaseData> baseDatas = dataService.fetch(system,entity,dataset,datasource,context) ; @PathVariable(name = "dataset",required = true) String dataset,
FilterData context) {
Page<BaseData> baseDatas = dataService.fetch(system,scope,entity,context.getDataSource(),dataset,context,context.getPageable()) ;
List<BaseData> list = baseDatas.getContent(); List<BaseData> list = baseDatas.getContent();
return ResponseEntity.status(HttpStatus.OK) return ResponseEntity.status(HttpStatus.OK)
.header("x-page", String.valueOf(context.getPageable().getPageNumber())) .header("x-page", String.valueOf(context.getPageable().getPageNumber()))
...@@ -128,11 +198,29 @@ public class DataResource ...@@ -128,11 +198,29 @@ public class DataResource
.body(list); .body(list);
} }
@ApiOperation(value = "获取数据集", tags = {"数据" } ,notes = "获取数据集")
@RequestMapping(method= RequestMethod.POST , value={"/ibiz-repository/{system}/{scope}/{entity}/fetch{dataset}","/ibiz-repo/{system}/{entity}/fetch{dataset}"})
public ResponseEntity<List<BaseData>> fetch2(@PathVariable(name = "system",required = true) String system,
@PathVariable(name = "scope",required = false) String scope,@PathVariable(name = "entity",required = true) String entity,
@RequestParam(name = "datasource",required = false) String datasource,@PathVariable(name = "dataset",required = true) String dataset,
@RequestBody FilterData context) {
Page<BaseData> baseDatas = dataService.fetch(system,scope,entity,datasource,dataset,context,context.getPageable()) ;
List<BaseData> list = baseDatas.getContent();
return ResponseEntity.status(HttpStatus.OK)
.header("x-page", String.valueOf(context.getPageable().getPageNumber()))
.header("x-per-page", String.valueOf(context.getPageable().getPageSize()))
.header("x-total", String.valueOf(baseDatas.getTotalElements()))
.body(list);
}
@ApiOperation(value = "查询数据集", tags = {"数据" } ,notes = "查询数据集") @ApiOperation(value = "查询数据集", tags = {"数据" } ,notes = "查询数据集")
@RequestMapping(method= RequestMethod.POST , value="/{system}/{entity}/search{dataset}") @RequestMapping(method= RequestMethod.POST , value={"/ibiz-repository/{system}/{scope}/{entity}/search{dataset}","/ibiz-repo/{system}/{entity}/search{dataset}"})
public ResponseEntity<Page<BaseData>> searchDefault(@PathVariable(name = "system",required = true) String system,@PathVariable(name = "entity",required = true) String entity,@PathVariable(name = "dataset",required = true) String dataset,@RequestParam(name = "datasource",required = false) String datasource,@RequestBody SearchContextBase context) { public ResponseEntity<Page<BaseData>> search(@PathVariable(name = "system",required = true) String system,
Page<BaseData> baseDatas = dataService.fetch(system,entity,dataset,datasource,context) ; @PathVariable(name = "scope",required = false) String scope,@PathVariable(name = "entity",required = true) String entity,
return ResponseEntity.status(HttpStatus.OK) @RequestParam(name = "datasource",required = false) String datasource,@PathVariable(name = "dataset",required = true) String dataset,
@RequestBody FilterData context) {
Page<BaseData> baseDatas = dataService.fetch(system,scope,entity,datasource,dataset,context,context.getPageable()) ;
return ResponseEntity.status(HttpStatus.OK)
.body(new PageImpl(baseDatas.getContent(), context.getPageable(), baseDatas.getTotalElements())); .body(new PageImpl(baseDatas.getContent(), context.getPageable(), baseDatas.getTotalElements()));
} }
......
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册