@@ -11,6 +11,7 @@ import org.springframework.jdbc.core.ResultSetExtractor; | |||||
import java.sql.ResultSet; | import java.sql.ResultSet; | ||||
import java.sql.SQLException; | import java.sql.SQLException; | ||||
import java.util.ArrayList; | import java.util.ArrayList; | ||||
import java.util.Comparator; | |||||
import java.util.List; | import java.util.List; | ||||
import java.util.Set; | import java.util.Set; | ||||
@@ -21,7 +22,7 @@ import java.util.Set; | |||||
public class ModelTableCache extends AbstractCache<ModelTable> { | public class ModelTableCache extends AbstractCache<ModelTable> { | ||||
private final static String mk = "k"; | private final static String mk = "k"; | ||||
private final static String md = "d"; | private final static String md = "d"; | ||||
private final static String mf = "l"; | |||||
private final static String mc = "c"; | |||||
public static ModelTableCache getInstance() { | public static ModelTableCache getInstance() { | ||||
return CacheManager.getIntance().getCache(ModelTableCache.class); | return CacheManager.getIntance().getCache(ModelTableCache.class); | ||||
@@ -30,6 +31,7 @@ public class ModelTableCache extends AbstractCache<ModelTable> { | |||||
public ModelTableCache() { | public ModelTableCache() { | ||||
regMap(mk, k-> k.getName().toUpperCase()); | regMap(mk, k-> k.getName().toUpperCase()); | ||||
regList(md, k-> String.valueOf(k.getDatabaseId())); | regList(md, k-> String.valueOf(k.getDatabaseId())); | ||||
regList(mc, k-> String.valueOf(k.getCatalogId())); | |||||
// regList(mf, k-> k.get); | // regList(mf, k-> k.get); | ||||
} | } | ||||
@@ -90,4 +92,16 @@ public class ModelTableCache extends AbstractCache<ModelTable> { | |||||
public final Set<ModelTable> getDbTables(long dbId) { | public final Set<ModelTable> getDbTables(long dbId) { | ||||
return getListByKey(md, String.valueOf(dbId)); | return getListByKey(md, String.valueOf(dbId)); | ||||
} | } | ||||
public final Set<ModelTable> getTablesByMc(long mcId) { | |||||
return getListByKey(mc, String.valueOf(mcId)); | |||||
} | |||||
public final List<ModelTable> getTablesByMc(long mcId, Comparator<ModelTable> comparator) { | |||||
Set<ModelTable> set = getListByKey(mc, String.valueOf(mcId)); | |||||
if (set == null || set.isEmpty()) return null; | |||||
List<ModelTable> list = new ArrayList<>(set); | |||||
list.sort(comparator); | |||||
return list; | |||||
} | |||||
} | } |
@@ -28,11 +28,11 @@ public abstract class AbstractCompService { | |||||
private IHandler getHandler(SwMap params, UserSession us, String type) throws Exception { | private IHandler getHandler(SwMap params, UserSession us, String type) throws Exception { | ||||
IHandler handler = createHanlder(type); | IHandler handler = createHanlder(type); | ||||
if (handler == null) throw new SwException("暂不支持此类服务:" + type); | |||||
if (params == null) params = new SwMap(); | |||||
if (us == null) us = UserSession.createSys(); | |||||
handler.init(params, us); | |||||
return handler; | |||||
if (handler == null) throw new SwException("暂不支持此类服务:" + type); | |||||
if (params == null) params = new SwMap(); | |||||
if (us == null) us = UserSession.createSys(); | |||||
handler.init(params, us); | |||||
return handler; | |||||
} | } | ||||
private R pageHandler(SwMap params, UserSession us, String type) { | private R pageHandler(SwMap params, UserSession us, String type) { | ||||
@@ -52,7 +52,7 @@ public abstract class AbstractCompService { | |||||
//树,换爹 | //树,换爹 | ||||
public R trcp(@SwBody SwMap params, UserSession us) { | public R trcp(@SwBody SwMap params, UserSession us) { | ||||
try { | try { | ||||
DefaultSaveHandler handler = (DefaultSaveHandler)getHandler(params, us,TYPE_SAVE); | |||||
DefaultSaveHandler handler = (DefaultSaveHandler) getHandler(params, us, TYPE_SAVE); | |||||
return handler.changeParent(); | return handler.changeParent(); | ||||
} catch (Exception e) { | } catch (Exception e) { | ||||
return R.error("操作失败!", e); | return R.error("操作失败!", e); | ||||
@@ -63,38 +63,54 @@ public abstract class AbstractCompService { | |||||
public R load(@SwBody SwMap params, UserSession us) { | public R load(@SwBody SwMap params, UserSession us) { | ||||
return pageHandler(params, us, TYPE_LOAD); | return pageHandler(params, us, TYPE_LOAD); | ||||
} | } | ||||
//删除 | //删除 | ||||
public R del(@SwBody SwMap params, UserSession us) { | public R del(@SwBody SwMap params, UserSession us) { | ||||
return pageHandler(params, us, TYPE_DEL); | return pageHandler(params, us, TYPE_DEL); | ||||
} | } | ||||
//列表数据 | //列表数据 | ||||
public R list(@SwBody SwMap params, UserSession us) { | public R list(@SwBody SwMap params, UserSession us) { | ||||
return pageHandler(params, us, TYPE_LIST); | return pageHandler(params, us, TYPE_LIST); | ||||
} | } | ||||
//列表总记录数及合计栏 | //列表总记录数及合计栏 | ||||
public R listTotal(@SwBody SwMap params, UserSession us) { | public R listTotal(@SwBody SwMap params, UserSession us) { | ||||
try { | try { | ||||
AbstractListHandler handler = (AbstractListHandler)getHandler(params, us, TYPE_LIST); | |||||
AbstractListHandler handler = (AbstractListHandler) getHandler(params, us, TYPE_LIST); | |||||
return handler.getTotal(); | return handler.getTotal(); | ||||
} catch (Exception e) { | } catch (Exception e) { | ||||
return R.error("操作失败!", e); | return R.error("操作失败!", e); | ||||
} | } | ||||
} | } | ||||
//combo数据 | //combo数据 | ||||
public R combo(@SwBody SwMap params, UserSession us) { | public R combo(@SwBody SwMap params, UserSession us) { | ||||
return pageHandler(params, us, TYPE_COMBO); | return pageHandler(params, us, TYPE_COMBO); | ||||
} | } | ||||
//combo总记录数及合计栏 | //combo总记录数及合计栏 | ||||
public R comboTotal(@SwBody SwMap params, UserSession us) { | public R comboTotal(@SwBody SwMap params, UserSession us) { | ||||
try { | try { | ||||
AbstractListHandler handler = (AbstractListHandler)getHandler(params, us, TYPE_COMBO); | |||||
AbstractListHandler handler = (AbstractListHandler) getHandler(params, us, TYPE_COMBO); | |||||
return handler.getTotal(); | return handler.getTotal(); | ||||
} catch (Exception e) { | } catch (Exception e) { | ||||
return R.error("操作失败!", e); | return R.error("操作失败!", e); | ||||
} | } | ||||
} | } | ||||
//树数据 | //树数据 | ||||
public R tree(@SwBody SwMap params, UserSession us) { | public R tree(@SwBody SwMap params, UserSession us) { | ||||
return pageHandler(params, us, TYPE_TREE); | return pageHandler(params, us, TYPE_TREE); | ||||
} | } | ||||
//树过滤 | |||||
public R treeFilter(@SwBody SwMap params, UserSession us) { | |||||
try { | |||||
AbstractTreeHandler handler = (AbstractTreeHandler) getHandler(params, us, TYPE_TREE); | |||||
return handler.filter(); | |||||
} catch (Exception e) { | |||||
return R.error("操作失败!", e); | |||||
} | |||||
} | |||||
} | } |
@@ -11,18 +11,10 @@ import lombok.extern.slf4j.Slf4j; | |||||
* 保存 | * 保存 | ||||
*/ | */ | ||||
@Slf4j | @Slf4j | ||||
public abstract class AbstractDelHandler<T> implements IHandler{ | |||||
protected SwMap params; | |||||
protected UserSession us; | |||||
public abstract class AbstractDelHandler<T> extends AbstractHandler<T>{ | |||||
protected long id; | protected long id; | ||||
@Override | @Override | ||||
public void init(SwMap params, UserSession us) { | |||||
this.params = params; | |||||
this.us = us; | |||||
} | |||||
@Override | |||||
public R doWork() throws Exception { | public R doWork() throws Exception { | ||||
id = readId(); | id = readId(); | ||||
@@ -0,0 +1,19 @@ | |||||
package cc.smtweb.framework.core.mvc.service; | |||||
import cc.smtweb.framework.core.R; | |||||
import cc.smtweb.framework.core.SwMap; | |||||
import cc.smtweb.framework.core.session.UserSession; | |||||
/** | |||||
* Created by Akmm at 2022/3/2 19:44 | |||||
*/ | |||||
public abstract class AbstractHandler<T> implements IHandler { | |||||
protected SwMap params; | |||||
protected UserSession us; | |||||
@Override | |||||
public void init(SwMap params, UserSession us) { | |||||
this.params = params; | |||||
this.us = us; | |||||
} | |||||
} |
@@ -23,22 +23,14 @@ import java.util.Map; | |||||
* 列表服务 | * 列表服务 | ||||
*/ | */ | ||||
@Slf4j | @Slf4j | ||||
public abstract class AbstractListHandler implements IHandler { | |||||
public abstract class AbstractListHandler extends AbstractHandler { | |||||
protected static String KEY_SQLPARA = "query-sqlPara"; | protected static String KEY_SQLPARA = "query-sqlPara"; | ||||
protected static String KEY_SQLPARA_SUM = "query-sqlPara-sum"; | protected static String KEY_SQLPARA_SUM = "query-sqlPara-sum"; | ||||
protected static String KEY_PARAMS = "query-params"; | protected static String KEY_PARAMS = "query-params"; | ||||
protected SwMap params; | |||||
protected UserSession us; | |||||
private SessionCache sessionCache; | private SessionCache sessionCache; | ||||
@Override | @Override | ||||
public void init(SwMap params, UserSession us) { | |||||
this.params = params; | |||||
this.us = us; | |||||
} | |||||
@Override | |||||
public R doWork() throws Exception { | public R doWork() throws Exception { | ||||
return R.success(listData()); | return R.success(listData()); | ||||
} | } | ||||
@@ -7,15 +7,7 @@ import cc.smtweb.framework.core.session.UserSession; | |||||
/** | /** | ||||
* Created by Akmm at 2022/3/2 19:44 | * Created by Akmm at 2022/3/2 19:44 | ||||
*/ | */ | ||||
public abstract class AbstractLoadHandler<T> implements IHandler { | |||||
protected SwMap params; | |||||
protected UserSession us; | |||||
@Override | |||||
public void init(SwMap params, UserSession us) { | |||||
this.params = params; | |||||
this.us = us; | |||||
} | |||||
public abstract class AbstractLoadHandler<T> extends AbstractHandler { | |||||
@Override | @Override | ||||
public R doWork() throws Exception { | public R doWork() throws Exception { | ||||
@@ -13,17 +13,10 @@ import lombok.extern.slf4j.Slf4j; | |||||
* 保存 | * 保存 | ||||
*/ | */ | ||||
@Slf4j | @Slf4j | ||||
public abstract class AbstractSaveHandler<T> implements IHandler { | |||||
protected SwMap params; | |||||
protected UserSession us; | |||||
public abstract class AbstractSaveHandler<T> extends AbstractHandler { | |||||
protected T bean; | protected T bean; | ||||
protected boolean isNew; | protected boolean isNew; | ||||
@Override | |||||
public void init(SwMap params, UserSession us) { | |||||
this.params = params; | |||||
this.us = us; | |||||
} | |||||
@Override | @Override | ||||
public R doWork() throws Exception { | public R doWork() throws Exception { | ||||
@@ -0,0 +1,82 @@ | |||||
package cc.smtweb.framework.core.mvc.service; | |||||
import cc.smtweb.framework.core.R; | |||||
import cc.smtweb.framework.core.SwMap; | |||||
import cc.smtweb.framework.core.cache.SessionCache; | |||||
import cc.smtweb.framework.core.cache.SessionCacheFactory; | |||||
import cc.smtweb.framework.core.db.DbEngine; | |||||
import cc.smtweb.framework.core.db.EntityDao; | |||||
import cc.smtweb.framework.core.mvc.service.list.FooterField; | |||||
import cc.smtweb.framework.core.session.UserSession; | |||||
import lombok.extern.slf4j.Slf4j; | |||||
import org.apache.commons.lang3.StringUtils; | |||||
import java.util.ArrayList; | |||||
import java.util.HashMap; | |||||
import java.util.List; | |||||
import java.util.Map; | |||||
/** | |||||
* Created by Akmm at 2022/3/2 19:44 | |||||
* 列表服务 | |||||
*/ | |||||
@Slf4j | |||||
public abstract class AbstractTreeHandler<T> extends AbstractHandler { | |||||
@Override | |||||
public R doWork() throws Exception { | |||||
return R.success(data()); | |||||
} | |||||
//树过滤 | |||||
public R filter() throws Exception { | |||||
List<T> rows = filterData(); | |||||
List<SwMap> listRet = buildNodes(rows, true); | |||||
return R.success(listRet); | |||||
} | |||||
protected List<SwMap> data() throws Exception { | |||||
List<T> rows = getChildren(params.readLong("parent_id")); | |||||
List<SwMap> listRet = buildNodes(rows, params.readBool("lazy")); | |||||
return listRet; | |||||
} | |||||
//搜索 | |||||
protected abstract List<T> filterData(); | |||||
//获取指定节点的下级节点 | |||||
protected abstract List<T> getChildren(long id); | |||||
protected List<T> getChildren(T bean) { | |||||
return getChildren(getId(bean)); | |||||
} | |||||
//根据bean,构建treenode | |||||
private List<SwMap> buildNodes(List<T> rows, boolean lazy) { | |||||
List<SwMap> listRet = new ArrayList<>(); | |||||
if (rows == null || rows.isEmpty()) { | |||||
return listRet; | |||||
} | |||||
for (T row : rows) { | |||||
SwMap node = new SwMap(); | |||||
node.put("id", getId(row)); | |||||
node.put("text", getText(row)); | |||||
List<T> children = getChildren(row); | |||||
node.put("leaf", children == null || children.isEmpty()); | |||||
node.put("bean", row); | |||||
buildNode(node, row); | |||||
listRet.add(node); | |||||
if (!lazy) { | |||||
List<SwMap> list = buildNodes(children, lazy); | |||||
node.put("children", list); | |||||
} | |||||
} | |||||
return listRet; | |||||
} | |||||
//根据bean,构建treenode | |||||
protected void buildNode(SwMap node, T bean) {} | |||||
protected abstract long getId(T bean); | |||||
protected abstract String getText(T bean); | |||||
} |
@@ -75,7 +75,7 @@ public class DefaultSaveHandler<T extends DefaultEntity> extends AbstractSaveHan | |||||
} else { | } else { | ||||
dao.updateEntity(bean); | dao.updateEntity(bean); | ||||
listTreeBean = new TreeHelper<T>(tableName).resetTreeLevel(bean); | |||||
listTreeBean = TreeHelper.getTreeHelper(tableName).resetTreeLevel(bean); | |||||
} | } | ||||
} | } | ||||
@@ -129,6 +129,7 @@ public class DefaultSaveHandler<T extends DefaultEntity> extends AbstractSaveHan | |||||
@Override | @Override | ||||
public void work() throws Exception { | public void work() throws Exception { | ||||
EntityDao dao = DbEngine.getInstance().findDao(tableName); | EntityDao dao = DbEngine.getInstance().findDao(tableName); | ||||
listTreeBean = TreeHelper.getTreeHelper(tableName).resetTreeLevel(bean); | |||||
dao.updateEntity(bean, fieldParentCode.getName()); | dao.updateEntity(bean, fieldParentCode.getName()); | ||||
} | } | ||||
@@ -14,13 +14,13 @@ import cc.smtweb.framework.core.db.vo.def.TableType; | |||||
import java.util.ArrayList; | import java.util.ArrayList; | ||||
import java.util.Collection; | import java.util.Collection; | ||||
import java.util.Comparator; | |||||
import java.util.List; | import java.util.List; | ||||
/** | /** | ||||
* Created by Akmm at 2022/3/17 19:56 | * Created by Akmm at 2022/3/17 19:56 | ||||
*/ | */ | ||||
public class TreeHelper<T extends DefaultEntity> { | public class TreeHelper<T extends DefaultEntity> { | ||||
private String tableName; | private String tableName; | ||||
private ModelTable table; | private ModelTable table; | ||||
@@ -30,7 +30,13 @@ public class TreeHelper<T extends DefaultEntity> { | |||||
private String fieldParent; | private String fieldParent; | ||||
private String fieldLevelCode; | private String fieldLevelCode; | ||||
public TreeHelper(String tableName) { | |||||
//todo 待扩展,进缓存 | |||||
public static TreeHelper getTreeHelper(String tableName) { | |||||
return new TreeHelper(tableName); | |||||
} | |||||
//先禁止外部创建 | |||||
private TreeHelper(String tableName) { | |||||
this.tableName = tableName; | this.tableName = tableName; | ||||
table = ModelTableCache.getInstance().getByName(tableName); | table = ModelTableCache.getInstance().getByName(tableName); | ||||
cache = CacheManager.getIntance().getCache(tableName); | cache = CacheManager.getIntance().getCache(tableName); | ||||
@@ -51,7 +57,19 @@ public class TreeHelper<T extends DefaultEntity> { | |||||
} | } | ||||
public Collection<T> getChildren(T bean) { | public Collection<T> getChildren(T bean) { | ||||
return cache.getListByKey(AbstractCache.KEY_PARENT_ID, String.valueOf(bean.getEntityId())); | |||||
return getChildren(bean.getEntityId()); | |||||
} | |||||
public Collection<T> getChildren(long id) { | |||||
return cache.getListByKey(AbstractCache.KEY_PARENT_ID, String.valueOf(id)); | |||||
} | |||||
public List<T> getChildren(long id, Comparator<T> comparator) { | |||||
Collection<T> set = cache.getListByKey(AbstractCache.KEY_PARENT_ID, String.valueOf(id)); | |||||
List<T> list = new ArrayList<>(set); | |||||
if (comparator != null) | |||||
list.sort(comparator); | |||||
return list; | |||||
} | } | ||||
public List<T> resetTreeLevel(T bean) throws Exception { | public List<T> resetTreeLevel(T bean) throws Exception { | ||||
@@ -9,8 +9,10 @@ import org.apache.commons.lang3.StringUtils; | |||||
import java.io.Serializable; | import java.io.Serializable; | ||||
import java.lang.reflect.ParameterizedType; | import java.lang.reflect.ParameterizedType; | ||||
import java.lang.reflect.Type; | import java.lang.reflect.Type; | ||||
import java.text.Collator; | |||||
import java.util.Collection; | import java.util.Collection; | ||||
import java.util.HashSet; | import java.util.HashSet; | ||||
import java.util.Locale; | |||||
import java.util.Set; | import java.util.Set; | ||||
/** | /** | ||||
@@ -19,6 +21,7 @@ import java.util.Set; | |||||
*/ | */ | ||||
@Slf4j | @Slf4j | ||||
public class CommUtil { | public class CommUtil { | ||||
private static Collator chineseCollator = Collator.getInstance(Locale.CHINA); | |||||
/** | /** | ||||
* 找指定类的泛型类 | * 找指定类的泛型类 | ||||
@@ -98,4 +101,8 @@ public class CommUtil { | |||||
if (s.length() == 0) return ""; | if (s.length() == 0) return ""; | ||||
return s.substring(0, s.length() - 1); | return s.substring(0, s.length() - 1); | ||||
} | } | ||||
public static int chineseCompare(String s1, String s2) { | |||||
return chineseCollator.compare(s1, s2); | |||||
} | |||||
} | } |
@@ -14,75 +14,75 @@ public class ModelCatalog extends DefaultEntity { | |||||
super(ENTITY_NAME); | super(ENTITY_NAME); | ||||
} | } | ||||
private long getMcId() { | |||||
public long getId() { | |||||
return getLong("mc_id"); | return getLong("mc_id"); | ||||
} | } | ||||
private void setMcId(long mcId) { | |||||
public void setId(long mcId) { | |||||
put("mc_id", mcId); | put("mc_id", mcId); | ||||
} | } | ||||
private long getMcParentId() { | |||||
public long getParentId() { | |||||
return getLong("mc_parent_id"); | return getLong("mc_parent_id"); | ||||
} | } | ||||
private void setMcParentId(long mcParentId) { | |||||
public void setParentId(long mcParentId) { | |||||
put("mc_parent_id", mcParentId); | put("mc_parent_id", mcParentId); | ||||
} | } | ||||
private String getMcCode() { | |||||
public String getCode() { | |||||
return getStr("mc_code"); | return getStr("mc_code"); | ||||
} | } | ||||
private void setMcCode(String mcCode) { | |||||
public void setCode(String mcCode) { | |||||
put("mc_code", mcCode); | put("mc_code", mcCode); | ||||
} | } | ||||
private String getMcName() { | |||||
public String getName() { | |||||
return getStr("mc_name"); | return getStr("mc_name"); | ||||
} | } | ||||
private void setMcName(String mcName) { | |||||
public void setName(String mcName) { | |||||
put("mc_name", mcName); | put("mc_name", mcName); | ||||
} | } | ||||
private long getMcPrjId() { | |||||
public long getPrjId() { | |||||
return getLong("mc_prj_id"); | return getLong("mc_prj_id"); | ||||
} | } | ||||
private void setMcPrjId(long mcPrjId) { | |||||
public void setPrjId(long mcPrjId) { | |||||
put("mc_prj_id", mcPrjId); | put("mc_prj_id", mcPrjId); | ||||
} | } | ||||
private long getMcCreateUid() { | |||||
public long getCreateUid() { | |||||
return getLong("mc_create_uid"); | return getLong("mc_create_uid"); | ||||
} | } | ||||
private void setMcCreateUid(long mcCreateUid) { | |||||
public void setCreateUid(long mcCreateUid) { | |||||
put("mc_create_uid", mcCreateUid); | put("mc_create_uid", mcCreateUid); | ||||
} | } | ||||
private long getMcUpdateUid() { | |||||
public long getUpdateUid() { | |||||
return getLong("mc_update_uid"); | return getLong("mc_update_uid"); | ||||
} | } | ||||
private void setMcUpdateUid(long mcUpdateUid) { | |||||
public void setUpdateUid(long mcUpdateUid) { | |||||
put("mc_update_uid", mcUpdateUid); | put("mc_update_uid", mcUpdateUid); | ||||
} | } | ||||
private long getMcCreateAt() { | |||||
public long getCreateAt() { | |||||
return getLong("mc_create_at"); | return getLong("mc_create_at"); | ||||
} | } | ||||
private void setMcCreateAt(long mcCreateAt) { | |||||
public void setCreateAt(long mcCreateAt) { | |||||
put("mc_create_at", mcCreateAt); | put("mc_create_at", mcCreateAt); | ||||
} | } | ||||
private long getMcUpdateAt() { | |||||
public long getUpdateAt() { | |||||
return getLong("mc_update_at"); | return getLong("mc_update_at"); | ||||
} | } | ||||
private void setMcUpdateAt(long mcUpdateAt) { | |||||
public void setUpdateAt(long mcUpdateAt) { | |||||
put("mc_update_at", mcUpdateAt); | put("mc_update_at", mcUpdateAt); | ||||
} | } | ||||
} | } |
@@ -24,8 +24,8 @@ public class ModelCatalogService extends AbstractCompService { | |||||
return new DefaultDelHandler<>(ModelCatalog.ENTITY_NAME); | return new DefaultDelHandler<>(ModelCatalog.ENTITY_NAME); | ||||
case TYPE_LIST: | case TYPE_LIST: | ||||
return new DefaultListHandler<>(ModelCatalog.ENTITY_NAME); | return new DefaultListHandler<>(ModelCatalog.ENTITY_NAME); | ||||
case TYPE_COMBO: | |||||
return new DefaultListHandler<>(ModelCatalog.ENTITY_NAME); | |||||
case TYPE_TREE: | |||||
return new ModelCatalogTreeHandler(); | |||||
} | } | ||||
return null; | return null; | ||||
} | } | ||||
@@ -0,0 +1,142 @@ | |||||
package cc.smtweb.system.bpm.web.design.catalog; | |||||
import cc.smtweb.framework.core.SwMap; | |||||
import cc.smtweb.framework.core.cache.AbstractCache; | |||||
import cc.smtweb.framework.core.cache.CacheManager; | |||||
import cc.smtweb.framework.core.db.DbEngine; | |||||
import cc.smtweb.framework.core.db.EntityDao; | |||||
import cc.smtweb.framework.core.db.cache.ModelTableCache; | |||||
import cc.smtweb.framework.core.db.impl.DefaultEntity; | |||||
import cc.smtweb.framework.core.db.vo.ModelTable; | |||||
import cc.smtweb.framework.core.mvc.service.AbstractTreeHandler; | |||||
import cc.smtweb.framework.core.mvc.service.TreeHelper; | |||||
import cc.smtweb.framework.core.session.UserSession; | |||||
import cc.smtweb.framework.core.util.CommUtil; | |||||
import org.apache.commons.lang3.StringUtils; | |||||
import java.util.*; | |||||
/** | |||||
* Created by Akmm at 2022/3/21 18:22 | |||||
*/ | |||||
public class ModelCatalogTreeHandler extends AbstractTreeHandler<Object> { | |||||
//查询类型:0-目录;1-表定义;2-页面定义 | |||||
private final static int TYPE_CATALOG = 0; | |||||
private final static int TYPE_TABLE = 1; | |||||
private final static int TYPE_PAGE = 2; | |||||
private long prj_id;//所属项目 | |||||
private int type;//查询类型:0-目录;1-表定义;2-页面定义 | |||||
private TreeHelper<ModelCatalog> mcTreeHelper = null; | |||||
@Override | |||||
public void init(SwMap params, UserSession us) { | |||||
super.init(params, us); | |||||
type = params.readInt("type"); | |||||
prj_id = params.readLong("prj_id"); | |||||
mcTreeHelper = (TreeHelper<ModelCatalog>) TreeHelper.getTreeHelper(ModelCatalog.ENTITY_NAME); | |||||
} | |||||
@Override | |||||
protected List<Object> getChildren(Object bean) { | |||||
if (bean instanceof ModelCatalog) { | |||||
return super.getChildren(bean); | |||||
} | |||||
return null; | |||||
} | |||||
@Override | |||||
protected List<Object> filterData() { | |||||
List<Object> listRet = new ArrayList<>(); | |||||
EntityDao<ModelCatalog> dao = DbEngine.getInstance().findDao(ModelCatalog.ENTITY_NAME); | |||||
String text = "%" + params.readString("text") + "%"; | |||||
List<ModelCatalog> list = dao.queryWhere(" where mc_prj_id=? and (mc_name like ? or mc_code like ?) order by mc_name", prj_id, text, text); | |||||
listRet.addAll(list); | |||||
switch (type) { | |||||
case TYPE_TABLE: | |||||
EntityDao<ModelTable> tabledao = DbEngine.getInstance().findDao(ModelTable.class); | |||||
List<ModelTable> l = tabledao.queryWhere(" where tb_prj_id=? and (tb_name like ? or tb_title like ?) order by tb_name", prj_id, text, text); | |||||
listRet.addAll(l); | |||||
break; | |||||
case TYPE_PAGE: | |||||
; | |||||
} | |||||
return listRet; | |||||
} | |||||
@Override | |||||
protected List<Object> getChildren(long id) { | |||||
List<Object> listRet = new ArrayList<>(); | |||||
List<ModelCatalog> list; | |||||
if (id > 0) { | |||||
list = mcTreeHelper.getChildren(id, (o1, o2) -> CommUtil.chineseCompare(o1.getName(), o2.getName())); | |||||
} else { | |||||
list = mcTreeHelper.getChildren(prj_id, (o1, o2) -> CommUtil.chineseCompare(o1.getName(), o2.getName())); | |||||
} | |||||
listRet.addAll(list); | |||||
switch (type) { | |||||
case TYPE_TABLE: | |||||
addTableChildren(listRet, id); | |||||
break; | |||||
case TYPE_PAGE: | |||||
addPageChildren(listRet, id); | |||||
} | |||||
return listRet; | |||||
} | |||||
//增加表 | |||||
private void addTableChildren(List<Object> listRet, long id) { | |||||
Collection<ModelTable> set = ModelTableCache.getInstance().getTablesByMc(id, (o1, o2) -> CommUtil.chineseCompare(o1.getName(), o2.getName())); | |||||
if (set == null || set.isEmpty()) return; | |||||
listRet.addAll(set); | |||||
} | |||||
//增加页面定义 | |||||
private void addPageChildren(List<Object> listRet, long id) { | |||||
} | |||||
@Override | |||||
protected long getId(Object bean) { | |||||
if (bean instanceof DefaultEntity) { | |||||
return ((DefaultEntity) bean).getEntityId(); | |||||
} | |||||
if (bean instanceof ModelTable) { | |||||
return ((ModelTable) bean).getId(); | |||||
} | |||||
return 0; | |||||
} | |||||
@Override | |||||
protected String getText(Object bean) { | |||||
if (bean instanceof ModelCatalog) { | |||||
return ((ModelCatalog) bean).getName(); | |||||
} | |||||
if (bean instanceof ModelTable) { | |||||
return ((ModelTable) bean).getTitle(); | |||||
} | |||||
/*if (bean instanceof ModelTable) { | |||||
return ((ModelTable)bean).getTitle(); | |||||
}*/ | |||||
return null; | |||||
} | |||||
@Override | |||||
protected void buildNode(SwMap node, Object bean) { | |||||
super.buildNode(node, bean); | |||||
if (bean instanceof ModelCatalog) { | |||||
node.put("type", TYPE_CATALOG); | |||||
} else if (bean instanceof ModelTable) { | |||||
node.put("type", TYPE_TABLE); | |||||
}/* else if (bean instanceof ModelTable) { | |||||
node.put("type", TYPE_TABLE); | |||||
}*/ | |||||
} | |||||
} |
@@ -14,75 +14,75 @@ public class ModelProject extends DefaultEntity { | |||||
super(ENTITY_NAME); | super(ENTITY_NAME); | ||||
} | } | ||||
public long getPrjId() { | |||||
public long getId() { | |||||
return getLong("prj_id"); | return getLong("prj_id"); | ||||
} | } | ||||
public void setPrjId(long prjId) { | |||||
public void setId(long prjId) { | |||||
put("prj_id", prjId); | put("prj_id", prjId); | ||||
} | } | ||||
public String getPrjName() { | |||||
public String getName() { | |||||
return getStr("prj_name"); | return getStr("prj_name"); | ||||
} | } | ||||
public void setPrjName(String prjName) { | |||||
public void setName(String prjName) { | |||||
put("prj_name", prjName); | put("prj_name", prjName); | ||||
} | } | ||||
public String getPrjDepends() { | |||||
public String getDepends() { | |||||
return getStr("prj_depends"); | return getStr("prj_depends"); | ||||
} | } | ||||
public void setPrjDepends(String prjDepends) { | |||||
public void setDepends(String prjDepends) { | |||||
put("prj_depends", prjDepends); | put("prj_depends", prjDepends); | ||||
} | } | ||||
public String getPrjDesc() { | |||||
public String getDesc() { | |||||
return getStr("prj_desc"); | return getStr("prj_desc"); | ||||
} | } | ||||
public void setPrjDesc(String prjDesc) { | |||||
public void setDesc(String prjDesc) { | |||||
put("prj_desc", prjDesc); | put("prj_desc", prjDesc); | ||||
} | } | ||||
public int getPrjStatus() { | |||||
public int getStatus() { | |||||
return getInt("prj_status"); | return getInt("prj_status"); | ||||
} | } | ||||
public void setPrjStatus(int prjStatus) { | |||||
public void setStatus(int prjStatus) { | |||||
put("prj_status", prjStatus); | put("prj_status", prjStatus); | ||||
} | } | ||||
public long getPrjCreateUid() { | |||||
public long getCreateUid() { | |||||
return getLong("prj_create_uid"); | return getLong("prj_create_uid"); | ||||
} | } | ||||
public void setPrjCreateUid(long prjCreateUid) { | |||||
public void setCreateUid(long prjCreateUid) { | |||||
put("prj_create_uid", prjCreateUid); | put("prj_create_uid", prjCreateUid); | ||||
} | } | ||||
public long getPrjUpdateUid() { | |||||
public long getUpdateUid() { | |||||
return getLong("prj_update_uid"); | return getLong("prj_update_uid"); | ||||
} | } | ||||
public void setPrjUpdateUid(long prjUpdateUid) { | |||||
public void setUpdateUid(long prjUpdateUid) { | |||||
put("prj_update_uid", prjUpdateUid); | put("prj_update_uid", prjUpdateUid); | ||||
} | } | ||||
public long getPrjCreateAt() { | |||||
public long getCreateAt() { | |||||
return getLong("prj_create_at"); | return getLong("prj_create_at"); | ||||
} | } | ||||
public void setPrjCreateAt(long prjCreateAt) { | |||||
public void setCreateAt(long prjCreateAt) { | |||||
put("prj_create_at", prjCreateAt); | put("prj_create_at", prjCreateAt); | ||||
} | } | ||||
public long getPrjUpdateAt() { | |||||
public long getUpdateAt() { | |||||
return getLong("prj_update_at"); | return getLong("prj_update_at"); | ||||
} | } | ||||
public void setPrjUpdateAt(long prjUpdateAt) { | |||||
public void setUpdateAt(long prjUpdateAt) { | |||||
put("prj_update_at", prjUpdateAt); | put("prj_update_at", prjUpdateAt); | ||||
} | } | ||||
} | } |
@@ -11,21 +11,27 @@ import org.junit.Test; | |||||
public class BuildJavaBean { | public class BuildJavaBean { | ||||
@Test | @Test | ||||
public void buildBean() { | public void buildBean() { | ||||
String str = "`mc_id` bigint(20) NOT NULL,\n" + | |||||
" `mc_parent_id` bigint(20) DEFAULT NULL COMMENT '-1',\n" + | |||||
" `mc_code` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL,\n" + | |||||
" `mc_name` varchar(50) COLLATE utf8_unicode_ci NOT NULL COMMENT '项目名称',\n" + | |||||
" `mc_prj_id` bigint(20) NOT NULL DEFAULT '-1',\n" + | |||||
" `mc_create_uid` bigint(20) DEFAULT NULL,\n" + | |||||
" `mc_update_uid` bigint(20) DEFAULT NULL,\n" + | |||||
" `mc_create_at` bigint(20) NOT NULL DEFAULT '0',\n" + | |||||
" `mc_update_at` bigint(20) NOT NULL DEFAULT '0',"; | |||||
String str = "`tb_id` bigint(20) NOT NULL,\n" + | |||||
" `tb_prj_id` bigint(20) DEFAULT NULL,\n" + | |||||
" `tb_mc_id` bigint(20) NOT NULL,\n" + | |||||
" `tb_db_id` bigint(20) NOT NULL COMMENT '数据库id',\n" + | |||||
" `tb_extends` varchar(200) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '继承关系',\n" + | |||||
" `tb_name` varchar(32) COLLATE utf8_unicode_ci NOT NULL COMMENT '名称',\n" + | |||||
" `tb_title` varchar(200) COLLATE utf8_unicode_ci NOT NULL COMMENT '表中文名称',\n" + | |||||
" `tb_abbr` varchar(32) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '缩写,用于字段和索引组成',\n" + | |||||
" `tb_type` tinyint(4) NOT NULL DEFAULT '0' COMMENT '类别:0-普通表,1 树型表 2 编码表 9-虚拟抽象表 11 视图',\n" + | |||||
" `tb_need_cache` tinyint(4) NOT NULL DEFAULT '0' COMMENT '需要缓存',\n" + | |||||
" `tb_content` text COLLATE utf8_unicode_ci COMMENT '表详细信息',\n" + | |||||
" `tb_create_uid` bigint(20) DEFAULT NULL,\n" + | |||||
" `tb_update_uid` bigint(20) DEFAULT NULL,\n" + | |||||
" `tb_create_at` bigint(20) NOT NULL DEFAULT '0' COMMENT '创建时间',\n" + | |||||
" `tb_update_at` bigint(20) NOT NULL DEFAULT '0' COMMENT '更新时间',\n"; | |||||
String[] ss = str.split("\n"); | String[] ss = str.split("\n"); | ||||
for (String s: ss) { | for (String s: ss) { | ||||
String[] s0 = s.trim().split(" "); | String[] s0 = s.trim().split(" "); | ||||
if (StringUtils.isEmpty(s0[0])) continue; | if (StringUtils.isEmpty(s0[0])) continue; | ||||
String tn = s0[0].substring(1, s0[0].indexOf("`", 2)); | String tn = s0[0].substring(1, s0[0].indexOf("`", 2)); | ||||
String tnu = CodeGenUtil.underlineToUpperHump(tn); | |||||
String tnu = CodeGenUtil.underlineToUpperHump(tn.substring(tn.indexOf("_") + 1)); | |||||
String tnn = CodeGenUtil.underlineToHump(tn); | String tnn = CodeGenUtil.underlineToHump(tn); | ||||
String tt = s0[1]; | String tt = s0[1]; | ||||
@@ -46,11 +52,11 @@ public class BuildJavaBean { | |||||
ttj = "Str"; | ttj = "Str"; | ||||
break; | break; | ||||
} | } | ||||
System.out.println("private " + tt + " get" + tnu + "(){\n" + | |||||
System.out.println("public " + tt + " get" + tnu + "(){\n" + | |||||
"return get" + ttj + "(\"" + tn + "\");\n" + | "return get" + ttj + "(\"" + tn + "\");\n" + | ||||
"}\n" + | "}\n" + | ||||
"" + | "" + | ||||
"private void set" + tnu + "(" + tt + " " + tnn + "){\n" + | |||||
"public void set" + tnu + "(" + tt + " " + tnn + "){\n" + | |||||
"put(\"" + tn + "\", " + tnn + ");\n" + | "put(\"" + tn + "\", " + tnn + ");\n" + | ||||
"}\n"); | "}\n"); | ||||
} | } | ||||