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

repair

上级 7f802de5
...@@ -5,6 +5,8 @@ import cn.ibizlab.core.lite.service.IDstDataSourceService; ...@@ -5,6 +5,8 @@ import cn.ibizlab.core.lite.service.IDstDataSourceService;
import cn.ibizlab.core.lite.service.impl.DstDataSourceServiceImpl; import cn.ibizlab.core.lite.service.impl.DstDataSourceServiceImpl;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.baomidou.dynamic.datasource.DynamicRoutingDataSource; import com.baomidou.dynamic.datasource.DynamicRoutingDataSource;
import com.baomidou.dynamic.datasource.creator.BasicDataSourceCreator;
import com.baomidou.dynamic.datasource.creator.DataSourceCreator;
import com.baomidou.dynamic.datasource.creator.DruidDataSourceCreator; import com.baomidou.dynamic.datasource.creator.DruidDataSourceCreator;
import com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DataSourceProperty; import com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DataSourceProperty;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
...@@ -44,25 +46,29 @@ public class DstDataSourceExService extends DstDataSourceServiceImpl { ...@@ -44,25 +46,29 @@ public class DstDataSourceExService extends DstDataSourceServiceImpl {
if(!(StringUtils.isEmpty(dstDataSource.getDsCfg()))) if(!(StringUtils.isEmpty(dstDataSource.getDsCfg())))
{ {
DataSourceProperty dataSourceProperty = new DataSourceProperty(); synchronized (lock)
DynamicRoutingDataSource ds = dataSource;
List<Setting> settings= JSONArray.parseArray(dstDataSource.getDsCfg(),Setting.class);
for(Setting setting:settings)
{ {
if(setting.getProperty().equalsIgnoreCase("driver-class-name")) DataSourceProperty dataSourceProperty = new DataSourceProperty();
dataSourceProperty.setDriverClassName(setting.getValue()); DynamicRoutingDataSource ds = dataSource;
else if(setting.getProperty().equalsIgnoreCase("username")) List<Setting> settings = JSONArray.parseArray(dstDataSource.getDsCfg(), Setting.class);
dataSourceProperty.setUsername(setting.getValue()); for (Setting setting : settings)
else if(setting.getProperty().equalsIgnoreCase("password")) {
dataSourceProperty.setPassword(setting.getValue()); if (setting.getProperty().equalsIgnoreCase("driver-class-name"))
else if(setting.getProperty().equalsIgnoreCase("url")) dataSourceProperty.setDriverClassName(setting.getValue());
dataSourceProperty.setUrl(setting.getValue()); else if (setting.getProperty().equalsIgnoreCase("username"))
else if(setting.getProperty().equalsIgnoreCase("defaultSchema")) dataSourceProperty.setUsername(setting.getValue());
dataSourceProperty.setSchema(setting.getValue()); else if (setting.getProperty().equalsIgnoreCase("password"))
} dataSourceProperty.setPassword(setting.getValue());
DataSource dataSource = druidDataSourceCreator.createDataSource(dataSourceProperty); else if (setting.getProperty().equalsIgnoreCase("url"))
dataSourceProperty.setUrl(setting.getValue());
else if (setting.getProperty().equalsIgnoreCase("defaultSchema"))
dataSourceProperty.setSchema(setting.getValue());
}
DataSource dataSource = BasicDataSourceCreator.getInstance().createDataSource(dataSourceProperty);
ds.addDataSource(dstDataSource.getDsName(), dataSource); ds.addDataSource(dstDataSource.getDsName(), dataSource);
check.put(dstDataSource.getDsName(), 1);
}
} }
return super.buildDS(dstDataSource); return super.buildDS(dstDataSource);
...@@ -77,29 +83,47 @@ public class DstDataSourceExService extends DstDataSourceServiceImpl { ...@@ -77,29 +83,47 @@ public class DstDataSourceExService extends DstDataSourceServiceImpl {
private DruidDataSourceCreator druidDataSourceCreator; private DruidDataSourceCreator druidDataSourceCreator;
private HashMap<String,Integer> check=new HashMap<>();
private Object lock=new Object();
public void initDataSource(String dsName) public void initDataSource(String dsName)
{ {
// if(dataSource.getDataSource(dsName)==null) synchronized (lock)
{ {
DstDataSource dstDataSource=this.getOne(Wrappers.<DstDataSource>lambdaQuery().eq(DstDataSource::getDsId,dsName).or().eq(DstDataSource::getDsName,dsName),false); if (check.containsKey(dsName))
if(dstDataSource!=null) return;
{ }
dstDataSource.setDsName(dsName);
buildDS(dstDataSource); DstDataSource dstDataSource=this.getOne(Wrappers.<DstDataSource>lambdaQuery().eq(DstDataSource::getDsId,dsName).or().eq(DstDataSource::getDsName,dsName),false);
} if(dstDataSource!=null)
{
dstDataSource.setDsName(dsName);
buildDS(dstDataSource);
} }
} }
@Override @Override
public boolean update(DstDataSource et) { public boolean update(DstDataSource et) {
if(!super.update(et)) if(!super.update(et))
return false; return false;
DynamicRoutingDataSource ds = (DynamicRoutingDataSource) dataSource; synchronized (lock)
if(ds.getDataSource(et.getDsId())!=null) {
ds.removeDataSource(et.getDsId()); DynamicRoutingDataSource ds = (DynamicRoutingDataSource) dataSource;
if(ds.getDataSource(et.getDsName())!=null) if (check.containsKey(et.getDsId()))
ds.removeDataSource(et.getDsName()); {
ds.removeDataSource(et.getDsId());
check.remove(et.getDsId());
}
if (check.containsKey(et.getDsName()))
{
ds.removeDataSource(et.getDsName());
check.remove(et.getDsName());
}
}
buildDS(et); buildDS(et);
return true; return true;
} }
} }
......
...@@ -37,7 +37,8 @@ public class DataObj<K,V> extends ConcurrentHashMap<K,V> { ...@@ -37,7 +37,8 @@ public class DataObj<K,V> extends ConcurrentHashMap<K,V> {
public <T> T set(String key, V value) public <T> T set(String key, V value)
{ {
return (T)this.put((K)key.toUpperCase(),value); this.put((K)key.toUpperCase(),value);
return (T)this;
} }
@Override @Override
......
...@@ -99,6 +99,11 @@ public class EntityObj extends DataObj<String,Object> { ...@@ -99,6 +99,11 @@ public class EntityObj extends DataObj<String,Object> {
return this.set("_DSTSYSTEMID",dstSystemId); return this.set("_DSTSYSTEMID",dstSystemId);
} }
@Override
public EntityObj set(String key, Object value)
{
return super.set(key,value);
}
@JsonIgnore @JsonIgnore
@JSONField(serialize = false) @JSONField(serialize = false)
......
...@@ -46,7 +46,7 @@ public class ModelObj extends DataObj<String,Object> { ...@@ -46,7 +46,7 @@ public class ModelObj extends DataObj<String,Object> {
@JsonIgnore @JsonIgnore
@JSONField(serialize = false) @JSONField(serialize = false)
public EntityObj setDataModelId(String dataModelId) public ModelObj setDataModelId(String dataModelId)
{ {
return this.set("_DATAMODELID",dataModelId); return this.set("_DATAMODELID",dataModelId);
} }
...@@ -144,7 +144,11 @@ public class ModelObj extends DataObj<String,Object> { ...@@ -144,7 +144,11 @@ public class ModelObj extends DataObj<String,Object> {
DataModel model=this.getDataModel().getNestedDataModel(name); DataModel model=this.getDataModel().getNestedDataModel(name);
if(model!=null) if(model!=null)
return new NestedArray().setParent(this); {
NestedArray array = new NestedArray().setParent(this);
this.set(model.getDataModelName(),array);
return array;
}
if(recursion) if(recursion)
{ {
...@@ -158,6 +162,7 @@ public class ModelObj extends DataObj<String,Object> { ...@@ -158,6 +162,7 @@ public class ModelObj extends DataObj<String,Object> {
tmpModel=model.getParentDataModel(); tmpModel=model.getParentDataModel();
steps.add(0,tmpModel.getDataModelName()); steps.add(0,tmpModel.getDataModelName());
} }
steps.add(model.getDataModelName());
if(steps.size()>1) if(steps.size()>1)
{ {
...@@ -198,6 +203,12 @@ public class ModelObj extends DataObj<String,Object> { ...@@ -198,6 +203,12 @@ public class ModelObj extends DataObj<String,Object> {
return super.get(key); return super.get(key);
} }
@Override
public ModelObj set(String key, Object value)
{
return super.set(key,value);
}
@Override @Override
public String getRowKey() public String getRowKey()
{ {
......
...@@ -138,8 +138,7 @@ public class Property { ...@@ -138,8 +138,7 @@ public class Property {
{ {
if(!StringUtils.isEmpty(cond)) if(!StringUtils.isEmpty(cond))
cond += ","; cond += ",";
else cond += val;
cond += val;
} }
return "("+sql+") in ("+cond+")"; return "("+sql+") in ("+cond+")";
......
...@@ -100,8 +100,8 @@ public class DbEntityService extends ServiceImpl<DbEntityMapper, EntityObj> impl ...@@ -100,8 +100,8 @@ public class DbEntityService extends ServiceImpl<DbEntityMapper, EntityObj> impl
FieldModel lastModifyField=entityModel.getLastModifyField(); FieldModel lastModifyField=entityModel.getLastModifyField();
QueryFilter filter=new QueryFilter(); QueryFilter filter=new QueryFilter();
//if(lastModifyField!=null) if(lastModifyField!=null)
// filter.ge(lastModifyField.getColumnName(), lastModify); filter.ge(lastModifyField.getColumnName(), lastModify);
List<EntityObj> kEntityObjs=this.selectCore(entityModel, filter); List<EntityObj> kEntityObjs=this.selectCore(entityModel, filter);
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
<mapper namespace="cn.ibizlab.core.extensions.mapper.DbEntityMapper"> <mapper namespace="cn.ibizlab.core.extensions.mapper.DbEntityMapper">
<!--数据集合[Default]--> <!--数据集合[Default]-->
<select id="searchDefault" parameterType="cn.ibizlab.core.lite.extensions.filter.DbEntitySearchContext" resultType="cn.ibizlab.core.lite.extensions.domain.EntityObj"> <select id="search" parameterType="cn.ibizlab.core.lite.extensions.filter.DbEntitySearchContext" resultType="cn.ibizlab.core.lite.extensions.domain.EntityObj">
${sql} ${sql}
<where><if test="ew!=null and ew.sqlSegment!=null and !ew.emptyOfWhere">${ew.sqlSegment}</if></where> <where><if test="ew!=null and ew.sqlSegment!=null and !ew.emptyOfWhere">${ew.sqlSegment}</if></where>
<if test="ew!=null and ew.sqlSegment!=null and ew.emptyOfWhere">${ew.sqlSegment}</if> <if test="ew!=null and ew.sqlSegment!=null and ew.emptyOfWhere">${ew.sqlSegment}</if>
......
...@@ -56,7 +56,9 @@ public class LiteCoreResource { ...@@ -56,7 +56,9 @@ public class LiteCoreResource {
if(StringUtils.isEmpty(modelid)) if(StringUtils.isEmpty(modelid))
modelid="dataModelff8080816a8b510c016a8c2f18b10001"; modelid="dataModelff8080816a8b510c016a8c2f18b10001";
return ResponseEntity.ok(dbEntityService.getModelObjs(modelid, DataObject.getBeginDate())); List<ModelObj> list=dbEntityService.getModelObjs(modelid, DataObject.getBeginDate());
return ResponseEntity.ok(list);
} }
@RequestMapping(method = RequestMethod.GET, value = "/lite/{system}/entitys") @RequestMapping(method = RequestMethod.GET, value = "/lite/{system}/entitys")
......
...@@ -130,7 +130,7 @@ public class QueryFilter { ...@@ -130,7 +130,7 @@ public class QueryFilter {
public QueryFilter cust(String custSqlSegment) public QueryFilter cust(String custSqlSegment)
{ {
this.custSqlSegment=custSqlSegment; this.custSqlSegment=custSqlSegment;
return null; return this;
} }
@JsonIgnore @JsonIgnore
@Transient @Transient
......
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册