package com.product.mobile.core.service;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Component;
|
|
import java.util.ArrayList;
|
import java.util.Iterator;
|
import java.util.List;
|
import java.util.Map;
|
|
import com.product.common.lang.StringUtils;
|
import com.product.core.dao.BaseDao;
|
import com.product.core.entity.DataTableEntity;
|
import com.product.core.entity.FieldSetEntity;
|
import com.product.core.exception.BaseException;
|
import com.product.core.service.support.AbstractBaseService;
|
import com.product.util.BaseUtil;
|
|
/**
|
* 手机端,获取用户所有应用
|
* @author Administrator
|
*
|
*/
|
@Component
|
public class SystemTableMetaService extends AbstractBaseService{
|
@Autowired
|
public BaseDao baseDao;
|
/**
|
* 数据表结构信息
|
* @param cpage
|
* @param pagesize
|
* @return
|
* @throws BaseException
|
*/
|
public FieldSetEntity getSystemTableMeta(FieldSetEntity fse) throws BaseException{
|
|
Map<Object,Object> vs=fse.getValues();
|
StringBuilder b=new StringBuilder();
|
b.append("select t.table_name,f.field_name,f.field_length,f.field_show_name,f.field_type,f.field_reference,f.is_required from product_sys_datamodel_field f left join product_sys_datamodel_table t on f.table_uuid=t.uuid");
|
List<Object> ps=new ArrayList<>();
|
if(vs!=null && vs.size()>0) {
|
b.append(" where ");
|
Iterator keys=vs.keySet().iterator();
|
int c=0;
|
while(keys.hasNext()) {
|
Object key=keys.next();
|
Object field=vs.get(key);
|
// if(StringUtils.isEmpty(field)) {
|
// continue;
|
// }
|
if(c>0) {
|
b.append(" or ");
|
}
|
Object fp[]=BaseUtil.buildQuestionMarkFilter("f.field_name","in",field.toString());
|
b.append("(t.table_name=? ");
|
ps.add(key);
|
if(fp!=null && fp.length>1) {
|
b.append(" and ");
|
b.append(fp[0]);
|
ps.addAll((List)fp[1]);
|
}
|
b.append(")");
|
c++;
|
}
|
b.append(" order by t.table_name ");
|
FieldSetEntity fs=new FieldSetEntity("product_sys_datamodel_field");
|
DataTableEntity dt=baseDao.listTable(b.toString(), ps.toArray());
|
String table=null;
|
DataTableEntity sub=new DataTableEntity();
|
for(int i=0;i<dt.getRows();i++) {
|
String tb=dt.getString(i, "table_name");
|
if(table!=null && !table.equals(tb)) {
|
sub.getMeta().getTableName()[0]=table;
|
fs.addSubDataTable(sub);
|
sub=new DataTableEntity();
|
}
|
table=tb;
|
sub.addFieldSetEntity(dt.getFieldSetEntity(i));
|
}
|
sub.getMeta().getTableName()[0]=table;
|
fs.addSubDataTable(sub);
|
return fs;
|
}
|
return null;
|
}
|
}
|