@@ -9,26 +9,32 @@ import cc.smtweb.framework.core.db.vo.ModelCatalog; | |||||
import cc.smtweb.framework.core.exception.BizException; | import cc.smtweb.framework.core.exception.BizException; | ||||
import cc.smtweb.framework.core.session.UserSession; | import cc.smtweb.framework.core.session.UserSession; | ||||
import cc.smtweb.framework.core.util.CommUtil; | import cc.smtweb.framework.core.util.CommUtil; | ||||
import cc.smtweb.framework.core.util.PubUtil; | |||||
import cc.smtweb.system.bpm.util.TreeDataUtil; | import cc.smtweb.system.bpm.util.TreeDataUtil; | ||||
import cc.smtweb.system.bpm.web.design.db.ModelCatalogCache; | import cc.smtweb.system.bpm.web.design.db.ModelCatalogCache; | ||||
import cc.smtweb.system.bpm.web.design.db.ModelProjectCache; | import cc.smtweb.system.bpm.web.design.db.ModelProjectCache; | ||||
import cc.smtweb.system.bpm.web.design.form.ModelForm; | import cc.smtweb.system.bpm.web.design.form.ModelForm; | ||||
import cc.smtweb.system.bpm.web.design.form.ModelFormCache; | import cc.smtweb.system.bpm.web.design.form.ModelFormCache; | ||||
import cc.smtweb.system.bpm.web.sys.user.menu.MenuCache; | |||||
import cc.smtweb.system.bpm.web.sys.user.menuPlan.MenuPlan; | |||||
import cc.smtweb.system.bpm.web.sys.user.menuPlan.MenuPlanCache; | |||||
import cc.smtweb.system.bpm.web.sys.user.menuPlan.MenuPlanContent; | |||||
import cc.smtweb.system.bpm.web.sys.user.menuPlan.MenuPlanItem; | |||||
import org.apache.commons.lang3.StringUtils; | import org.apache.commons.lang3.StringUtils; | ||||
import java.util.ArrayList; | |||||
import java.util.HashMap; | |||||
import java.util.List; | |||||
import java.util.Map; | |||||
import java.util.*; | |||||
@SwService | @SwService | ||||
public class PreviewMenuTreeService { | public class PreviewMenuTreeService { | ||||
@SwParam | @SwParam | ||||
private DbEngine dbEngine; | private DbEngine dbEngine; | ||||
public R treeAll(@SwParam("module") String module, UserSession us) { | |||||
public R treeAll(@SwParam("module") String module, @SwParam("type") int type, UserSession us) { | |||||
String prj_id = ModelProjectCache.getInstance().getIdByModule(module); | String prj_id = ModelProjectCache.getInstance().getIdByModule(module); | ||||
List<MenuVO> menuVOList = buildMenu(prj_id, module, us); | |||||
if (type == 1 && PubUtil.isNotEmpty(menuVOList)) { | |||||
return R.success(menuVOList); | |||||
} | |||||
List<ModelForm> listForm; | List<ModelForm> listForm; | ||||
if (StringUtils.isNotEmpty(prj_id)) { | if (StringUtils.isNotEmpty(prj_id)) { | ||||
listForm = new ArrayList<>(ModelFormCache.getInstance().getFormsByPrj(Long.parseLong(prj_id))); | listForm = new ArrayList<>(ModelFormCache.getInstance().getFormsByPrj(Long.parseLong(prj_id))); | ||||
@@ -54,9 +60,8 @@ public class PreviewMenuTreeService { | |||||
MenuVO menu = new MenuVO(); | MenuVO menu = new MenuVO(); | ||||
menu.setId(form.getId()); | menu.setId(form.getId()); | ||||
menu.setName(form.getTitle()); | menu.setName(form.getTitle()); | ||||
menu.setPath("/bpm/" + module+"."+form.getName()); | |||||
menu.setPath("/bpm/" + module + "." + form.getName()); | |||||
menu.setParentId(form.getMcId()); | menu.setParentId(form.getMcId()); | ||||
setMenuChildren(map.get(form.getMcId()), menu); | setMenuChildren(map.get(form.getMcId()), menu); | ||||
} | } | ||||
@@ -69,6 +74,46 @@ public class PreviewMenuTreeService { | |||||
return R.success(data); | return R.success(data); | ||||
} | } | ||||
public List<MenuVO> buildMenu(String prj_id, String module, UserSession us) { | |||||
Set<MenuPlan> set = MenuPlanCache.getInstance().getByP(prj_id); | |||||
if (PubUtil.isEmpty(set)) new ArrayList<>(); | |||||
MenuPlan menuPlan = set.iterator().next(); | |||||
MenuPlanContent mpc = new MenuPlanContent(menuPlan.getContent()); | |||||
List<MenuVO> list = new ArrayList<>(); | |||||
for (MenuPlanItem mp : mpc.getChildren(0)) { | |||||
List<MenuVO> menuVOList = buildMenu(-1, mp); | |||||
if (menuVOList == null) continue; | |||||
list.addAll(menuVOList); | |||||
} | |||||
MenuVO root = new MenuVO(); | |||||
root.setName("项目"); | |||||
root.setPath(module); | |||||
root.setId(-1L); | |||||
return TreeDataUtil.buildTree(root, list, MenuVO.createTreeHandler()); | |||||
} | |||||
private List<MenuVO> buildMenu(long parent_id, MenuPlanItem mp) { | |||||
if (mp == null) return null; | |||||
List<MenuVO> list = new ArrayList<>(); | |||||
MenuVO menu = new MenuVO(); | |||||
menu.setId(mp.getId()); | |||||
menu.setName(mp.getLabel()); | |||||
menu.setIcon(mp.getIcon()); | |||||
menu.setPath(MenuCache.getInstance().getPath(mp.getMenu())); | |||||
menu.setParentId(parent_id); | |||||
List<MenuVO> child = new ArrayList<>(); | |||||
if (PubUtil.isNotEmpty(mp.getChildren())) { | |||||
for (MenuPlanItem cmp : mp.getChildren()) { | |||||
List<MenuVO> m = buildMenu(menu.getId(), cmp); | |||||
if (m == null) continue; | |||||
child.addAll(m); | |||||
} | |||||
} | |||||
menu.setChildren(child); | |||||
list.add(menu); | |||||
return list; | |||||
} | |||||
private MenuVO setMenuParent(Long parent_id, Map<Long, MenuVO> map, List<MenuVO> list) { | private MenuVO setMenuParent(Long parent_id, Map<Long, MenuVO> map, List<MenuVO> list) { | ||||
MenuVO parent = map.get(parent_id); | MenuVO parent = map.get(parent_id); | ||||
if (parent != null) return parent; | if (parent != null) return parent; | ||||
@@ -3,10 +3,9 @@ package cc.smtweb.system.bpm.web.sys.user.menu; | |||||
import cc.smtweb.framework.core.annotation.SwCache; | import cc.smtweb.framework.core.annotation.SwCache; | ||||
import cc.smtweb.framework.core.cache.AbstractEntityCache; | import cc.smtweb.framework.core.cache.AbstractEntityCache; | ||||
import cc.smtweb.framework.core.cache.CacheManager; | import cc.smtweb.framework.core.cache.CacheManager; | ||||
import cc.smtweb.framework.core.util.JsonUtil; | |||||
import cc.smtweb.framework.core.util.PubUtil; | |||||
import java.util.ArrayList; | |||||
import java.util.Comparator; | |||||
import java.util.List; | |||||
import java.util.Set; | import java.util.Set; | ||||
/** | /** | ||||
@@ -31,4 +30,13 @@ public class MenuCache extends AbstractEntityCache<Menu> { | |||||
public final Set<Menu> getByM(String key) { | public final Set<Menu> getByM(String key) { | ||||
return getListByKey(mk_m, key); | return getListByKey(mk_m, key); | ||||
} | } | ||||
public final String getPath(long menu_id) { | |||||
Menu menu = get(menu_id); | |||||
if (menu == null) return ""; | |||||
String content = menu.getContent(); | |||||
if (PubUtil.isEmpty(content)) return ""; | |||||
return JsonUtil.parseMap(menu.getContent()).get("path").toString(); | |||||
} | |||||
} | } |
@@ -10,17 +10,25 @@ import java.util.List; | |||||
import java.util.Set; | import java.util.Set; | ||||
/** | /** | ||||
* Created by 1 at 2022-08-01 18:08:28 | |||||
* Created by 1 at 2022-08-05 19:41:15 | |||||
* 实体【[菜单方案](SYS_MENU_PLAN)】的缓存类 | * 实体【[菜单方案](SYS_MENU_PLAN)】的缓存类 | ||||
*/ | */ | ||||
@SwCache(ident = "SYS_MENU_PLAN", title = "菜单方案") | @SwCache(ident = "SYS_MENU_PLAN", title = "菜单方案") | ||||
public class MenuPlanCache extends AbstractEntityCache<MenuPlan> { | public class MenuPlanCache extends AbstractEntityCache<MenuPlan> { | ||||
//缓存key:按项目缓存 | |||||
public final static String mk_p = "p"; | |||||
public static MenuPlanCache getInstance() { | public static MenuPlanCache getInstance() { | ||||
return CacheManager.getIntance().getCache(MenuPlanCache.class); | return CacheManager.getIntance().getCache(MenuPlanCache.class); | ||||
} | } | ||||
public MenuPlanCache() { | public MenuPlanCache() { | ||||
//缓存key:按项目缓存 | |||||
regList(mk_p, "smp_prj_id"); | |||||
} | } | ||||
//缓存key:按项目缓存 | |||||
public final Set<MenuPlan> getByP(String key) { | |||||
return getListByKey(mk_p, key); | |||||
} | |||||
} | } |
@@ -0,0 +1,17 @@ | |||||
package cc.smtweb.system.bpm.web.sys.user.menuPlan; | |||||
import java.util.Comparator; | |||||
/** | |||||
* @Author yaoq | |||||
* @Date 2022年08月05日 20:24 | |||||
* @Description | |||||
*/ | |||||
public class MenuPlanComparator implements Comparator<MenuPlanItem> { | |||||
@Override | |||||
public int compare(MenuPlanItem o1, MenuPlanItem o2) { | |||||
return o1.getSeq() - o2.getSeq(); | |||||
} | |||||
} |
@@ -6,6 +6,7 @@ import cc.smtweb.framework.core.util.JsonUtil; | |||||
import cc.smtweb.framework.core.util.PubUtil; | import cc.smtweb.framework.core.util.PubUtil; | ||||
import java.util.ArrayList; | import java.util.ArrayList; | ||||
import java.util.Collections; | |||||
import java.util.List; | import java.util.List; | ||||
/** | /** | ||||
@@ -15,57 +16,60 @@ import java.util.List; | |||||
*/ | */ | ||||
public class MenuPlanContent { | public class MenuPlanContent { | ||||
private List<MenuPlanItem> list = new ArrayList<>(); | private List<MenuPlanItem> list = new ArrayList<>(); | ||||
public MenuPlanContent(String content){ | |||||
List<MenuPlanItem> tempList = JsonUtil.parseList(content,MenuPlanItem.class); | |||||
if(tempList!=null){ | |||||
list = tempList; | |||||
} | |||||
public MenuPlanContent(String content) { | |||||
List<MenuPlanItem> tempList = JsonUtil.parseList(content, MenuPlanItem.class); | |||||
if (tempList != null) { | |||||
list = tempList; | |||||
} | |||||
Collections.sort(list, new MenuPlanComparator()); | |||||
} | } | ||||
// 保存节点 | // 保存节点 | ||||
public void saveItem(MenuPlanItem item,long parentId){ | |||||
boolean isNew = item.getId() <=0; | |||||
if(isNew){ | |||||
public void saveItem(MenuPlanItem item, long parentId) { | |||||
boolean isNew = item.getId() <= 0; | |||||
if (isNew) { | |||||
item.setId(DbEngine.getInstance().nextId()); | item.setId(DbEngine.getInstance().nextId()); | ||||
if(parentId<=0){ | |||||
if (parentId <= 0) { | |||||
list.add(item); | list.add(item); | ||||
}else { | |||||
} else { | |||||
MenuPlanItem parentItem = findById(parentId); | MenuPlanItem parentItem = findById(parentId); | ||||
if(parentItem==null){ | |||||
if (parentItem == null) { | |||||
throw new BizException("上级节点无效"); | throw new BizException("上级节点无效"); | ||||
} | } | ||||
List<MenuPlanItem> children = parentItem.getChildren(); | List<MenuPlanItem> children = parentItem.getChildren(); | ||||
if(children == null){ | |||||
if (children == null) { | |||||
children = new ArrayList<>(); | children = new ArrayList<>(); | ||||
parentItem.setChildren(children); | parentItem.setChildren(children); | ||||
} | } | ||||
children.add(item); | children.add(item); | ||||
} | } | ||||
}else { | |||||
if(item.getId() == parentId) { | |||||
} else { | |||||
if (item.getId() == parentId) { | |||||
throw new BizException("上级不允许选自己!"); | throw new BizException("上级不允许选自己!"); | ||||
} | } | ||||
MenuPlanItem oldItem = findById(item.getId()); | MenuPlanItem oldItem = findById(item.getId()); | ||||
if(oldItem==null){ | |||||
if (oldItem == null) { | |||||
throw new BizException("未找到修改对象"); | throw new BizException("未找到修改对象"); | ||||
} | } | ||||
// 判断是否修改了父节点 | // 判断是否修改了父节点 | ||||
MenuPlanItem oldParent = findParentById(item.getId()); | MenuPlanItem oldParent = findParentById(item.getId()); | ||||
MenuPlanItem newParent = findById(parentId); | MenuPlanItem newParent = findById(parentId); | ||||
boolean changeParent = (oldParent ==null? -1 : oldParent.getId()) != parentId; | |||||
if(changeParent){ | |||||
boolean changeParent = (oldParent == null ? -1 : oldParent.getId()) != parentId; | |||||
if (changeParent) { | |||||
// 改了父节点 父节点的children需要移除,新的父节点需要添加 | // 改了父节点 父节点的children需要移除,新的父节点需要添加 | ||||
removeById(item.getId(),oldParent==null ? list: oldParent.getChildren()); | |||||
if(newParent==null){ | |||||
removeById(item.getId(), oldParent == null ? list : oldParent.getChildren()); | |||||
if (newParent == null) { | |||||
addItem(item, list); | addItem(item, list); | ||||
}else { | |||||
} else { | |||||
List<MenuPlanItem> children = newParent.getChildren(); | List<MenuPlanItem> children = newParent.getChildren(); | ||||
if(children==null){ | |||||
if (children == null) { | |||||
children = new ArrayList<>(); | children = new ArrayList<>(); | ||||
newParent.setChildren(children); | newParent.setChildren(children); | ||||
} | } | ||||
addItem(item, children); | addItem(item, children); | ||||
} | } | ||||
}else { | |||||
} else { | |||||
// 没有改变父节点 直接拷贝值 | // 没有改变父节点 直接拷贝值 | ||||
oldItem.setLabel(item.getLabel()); | oldItem.setLabel(item.getLabel()); | ||||
oldItem.setMenu(item.getMenu()); | oldItem.setMenu(item.getMenu()); | ||||
@@ -75,85 +79,94 @@ public class MenuPlanContent { | |||||
} | } | ||||
} | } | ||||
// 删除节点 | // 删除节点 | ||||
public void delItem(long id){ | |||||
public void delItem(long id) { | |||||
MenuPlanItem parent = findParentById(id); | MenuPlanItem parent = findParentById(id); | ||||
if(parent==null){ | |||||
removeById(id,list); | |||||
}else { | |||||
if (parent == null) { | |||||
removeById(id, list); | |||||
} else { | |||||
List<MenuPlanItem> children = parent.getChildren(); | List<MenuPlanItem> children = parent.getChildren(); | ||||
if(PubUtil.isNotEmpty(children)){ | |||||
removeById(id,children); | |||||
if (PubUtil.isNotEmpty(children)) { | |||||
removeById(id, children); | |||||
} | } | ||||
} | } | ||||
} | } | ||||
// 转换成字符串 | // 转换成字符串 | ||||
public String toContentStr(){ | |||||
public String toContentStr() { | |||||
return JsonUtil.encodeString(list); | return JsonUtil.encodeString(list); | ||||
} | } | ||||
// 根据id找节点 | // 根据id找节点 | ||||
public MenuPlanItem findById(long id){ | |||||
if(id<=0){ | |||||
public MenuPlanItem findById(long id) { | |||||
if (id <= 0) { | |||||
return null; | return null; | ||||
} | } | ||||
return findById(id,list); | |||||
return findById(id, list); | |||||
} | } | ||||
// 根据id找父节点 | // 根据id找父节点 | ||||
public MenuPlanItem findParentById(long id){ | |||||
if(id<=0){ | |||||
public MenuPlanItem findParentById(long id) { | |||||
if (id <= 0) { | |||||
return null; | return null; | ||||
} | } | ||||
return findParentById(id,list); | |||||
return findParentById(id, list); | |||||
} | } | ||||
// 获取子节点 | // 获取子节点 | ||||
public List<MenuPlanItem> getChildren(long parentId){ | |||||
if(parentId<=0){ | |||||
public List<MenuPlanItem> getChildren(long parentId) { | |||||
if (parentId <= 0) { | |||||
return list; | return list; | ||||
} | } | ||||
MenuPlanItem parent = findById(parentId); | MenuPlanItem parent = findById(parentId); | ||||
return parent == null ? new ArrayList<>(): parent.getChildren() ; | |||||
return parent == null ? new ArrayList<>() : parent.getChildren(); | |||||
} | } | ||||
private MenuPlanItem findById(long id,List<MenuPlanItem> itemList){ | |||||
if(PubUtil.isEmpty(itemList)){ | |||||
private MenuPlanItem findById(long id, List<MenuPlanItem> itemList) { | |||||
if (PubUtil.isEmpty(itemList)) { | |||||
return null; | return null; | ||||
} | } | ||||
for(MenuPlanItem item: itemList){ | |||||
if(item.getId() == id){ | |||||
return item; | |||||
for (MenuPlanItem item : itemList) { | |||||
if (item.getId() == id) { | |||||
return item; | |||||
} | } | ||||
if(PubUtil.isNotEmpty(item.getChildren())){ | |||||
return findById(id,item.getChildren()); | |||||
if (PubUtil.isNotEmpty(item.getChildren())) { | |||||
return findById(id, item.getChildren()); | |||||
} | } | ||||
} | } | ||||
return null; | return null; | ||||
} | } | ||||
private MenuPlanItem findParentById(long id,List<MenuPlanItem> itemList){ | |||||
if(PubUtil.isEmpty(itemList)){ | |||||
private MenuPlanItem findParentById(long id, List<MenuPlanItem> itemList) { | |||||
if (PubUtil.isEmpty(itemList)) { | |||||
return null; | return null; | ||||
} | } | ||||
for(MenuPlanItem item: itemList){ | |||||
for (MenuPlanItem item : itemList) { | |||||
List<MenuPlanItem> children = item.getChildren(); | List<MenuPlanItem> children = item.getChildren(); | ||||
if(PubUtil.isNotEmpty(children)){ | |||||
for(MenuPlanItem i : children){ | |||||
if(i.getId() == id){ | |||||
return item; | |||||
} | |||||
if(PubUtil.isNotEmpty(i.getChildren())){ | |||||
return findParentById(id,i.getChildren()); | |||||
} | |||||
} | |||||
if (PubUtil.isNotEmpty(children)) { | |||||
for (MenuPlanItem i : children) { | |||||
if (i.getId() == id) { | |||||
return item; | |||||
} | |||||
if (PubUtil.isNotEmpty(i.getChildren())) { | |||||
return findParentById(id, i.getChildren()); | |||||
} | |||||
} | |||||
} | } | ||||
} | } | ||||
return null; | return null; | ||||
} | } | ||||
private void removeById(long id, List<MenuPlanItem> itemList){ | |||||
if(itemList == null || itemList.size()<=0){ | |||||
private void removeById(long id, List<MenuPlanItem> itemList) { | |||||
if (itemList == null || itemList.size() <= 0) { | |||||
return; | return; | ||||
} | } | ||||
itemList.removeIf(item -> item.getId() == id); | itemList.removeIf(item -> item.getId() == id); | ||||
} | } | ||||
private void addItem(MenuPlanItem item, List<MenuPlanItem> itemList){ | |||||
if(itemList == null){ | |||||
private void addItem(MenuPlanItem item, List<MenuPlanItem> itemList) { | |||||
if (itemList == null) { | |||||
return; | return; | ||||
} | } | ||||
itemList.add(item); | itemList.add(item); | ||||
@@ -28,79 +28,81 @@ public class MenuPlanHandler { | |||||
private static String DS_MENU_LIST = "menuList"; | private static String DS_MENU_LIST = "menuList"; | ||||
private static String DS_MENU_CARD = "menuCard"; | private static String DS_MENU_CARD = "menuCard"; | ||||
private static String DS_MENU_TREE = "menuTree"; | private static String DS_MENU_TREE = "menuTree"; | ||||
static class MenuCustHandler extends AbstractHandler { | static class MenuCustHandler extends AbstractHandler { | ||||
// 保存方案明细 | // 保存方案明细 | ||||
public R savePlanItem(){ | |||||
// 方案ID | |||||
long plan_id = params.readLong("plan_id"); | |||||
if(plan_id<=0){ | |||||
throw new BizException("所属方案不能为空!"); | |||||
} | |||||
MenuPlan menuPlan = MenuPlanCache.getInstance().get(plan_id); | |||||
if(menuPlan==null){ | |||||
throw new BizException("所属方案不能为空!"); | |||||
} | |||||
long parent_id = params.readLong("parent_id",-1L); | |||||
MenuPlanItem menuPlanItem = JsonUtil.parse(params, MenuPlanItem.class); | |||||
// 处理content大字段 | |||||
MenuPlanContent menuPlanContent = new MenuPlanContent(menuPlan.getContent()); | |||||
menuPlanContent.saveItem(menuPlanItem,parent_id); | |||||
menuPlan.setContent(menuPlanContent.toContentStr()); | |||||
DbEngine.getInstance().doTrans(new AbsDbWorker() { | |||||
@Override | |||||
public void work() { | |||||
DbEngine.getInstance().updateEntity(menuPlan,"smp_content"); | |||||
} | |||||
@Override | |||||
public void doAfterDbCommit() { | |||||
MenuPlanCache.getInstance().put(menuPlan); | |||||
} | |||||
}); | |||||
return R.success(menuPlanItem); | |||||
} | |||||
// 删除方案明细 | |||||
public R delPlanItem(){ | |||||
// 方案ID | |||||
long plan_id = params.readLong("plan_id"); | |||||
long id = params.readLong("id"); | |||||
if(plan_id<=0 || id<=0){ | |||||
throw new BizException("参数错误!"); | |||||
} | |||||
MenuPlan menuPlan = MenuPlanCache.getInstance().get(plan_id); | |||||
if(menuPlan==null){ | |||||
throw new BizException("参数错误!"); | |||||
} | |||||
// 处理content大字段 | |||||
MenuPlanContent menuPlanContent = new MenuPlanContent(menuPlan.getContent()); | |||||
menuPlanContent.delItem(id); | |||||
menuPlan.setContent(menuPlanContent.toContentStr()); | |||||
DbEngine.getInstance().doTrans(new AbsDbWorker() { | |||||
@Override | |||||
public void work() { | |||||
DbEngine.getInstance().updateEntity(menuPlan,"smp_content"); | |||||
} | |||||
@Override | |||||
public void doAfterDbCommit() { | |||||
MenuPlanCache.getInstance().put(menuPlan); | |||||
} | |||||
}); | |||||
return R.success(); | |||||
} | |||||
public R savePlanItem() { | |||||
// 方案ID | |||||
long plan_id = params.readLong("plan_id"); | |||||
if (plan_id <= 0) { | |||||
throw new BizException("所属方案不能为空!"); | |||||
} | |||||
MenuPlan menuPlan = MenuPlanCache.getInstance().get(plan_id); | |||||
if (menuPlan == null) { | |||||
throw new BizException("所属方案不能为空!"); | |||||
} | |||||
long parent_id = params.readLong("parent_id", -1L); | |||||
MenuPlanItem menuPlanItem = JsonUtil.parse(params, MenuPlanItem.class); | |||||
// 处理content大字段 | |||||
MenuPlanContent menuPlanContent = new MenuPlanContent(menuPlan.getContent()); | |||||
menuPlanContent.saveItem(menuPlanItem, parent_id); | |||||
menuPlan.setContent(menuPlanContent.toContentStr()); | |||||
DbEngine.getInstance().doTrans(new AbsDbWorker() { | |||||
@Override | |||||
public void work() { | |||||
DbEngine.getInstance().updateEntity(menuPlan, "smp_content"); | |||||
} | |||||
@Override | |||||
public void doAfterDbCommit() { | |||||
MenuPlanCache.getInstance().put(menuPlan); | |||||
} | |||||
}); | |||||
return R.success(menuPlanItem); | |||||
} | |||||
// 删除方案明细 | |||||
public R delPlanItem() { | |||||
// 方案ID | |||||
long plan_id = params.readLong("plan_id"); | |||||
long id = params.readLong("id"); | |||||
if (plan_id <= 0 || id <= 0) { | |||||
throw new BizException("参数错误!"); | |||||
} | |||||
MenuPlan menuPlan = MenuPlanCache.getInstance().get(plan_id); | |||||
if (menuPlan == null) { | |||||
throw new BizException("参数错误!"); | |||||
} | |||||
// 处理content大字段 | |||||
MenuPlanContent menuPlanContent = new MenuPlanContent(menuPlan.getContent()); | |||||
menuPlanContent.delItem(id); | |||||
menuPlan.setContent(menuPlanContent.toContentStr()); | |||||
DbEngine.getInstance().doTrans(new AbsDbWorker() { | |||||
@Override | |||||
public void work() { | |||||
DbEngine.getInstance().updateEntity(menuPlan, "smp_content"); | |||||
} | |||||
@Override | |||||
public void doAfterDbCommit() { | |||||
MenuPlanCache.getInstance().put(menuPlan); | |||||
} | |||||
}); | |||||
return R.success(); | |||||
} | |||||
} | } | ||||
static class MenuLoadHandler extends DynPageLoadHandler{ | |||||
static class MenuLoadHandler extends DynPageLoadHandler { | |||||
@Override | @Override | ||||
public DynPageProvider getProvider() { | public DynPageProvider getProvider() { | ||||
return new MenuProvider(); | return new MenuProvider(); | ||||
} | } | ||||
public DynPageListHandler getListWorker(SwMap filter, PageDataset pageDataSet) { | public DynPageListHandler getListWorker(SwMap filter, PageDataset pageDataSet) { | ||||
if(DS_MENU_LIST.equals(pageDataSet.name)){ | |||||
return new MenuListHandler(pageId,filter,pageDataSet); | |||||
if (DS_MENU_LIST.equals(pageDataSet.name)) { | |||||
return new MenuListHandler(pageId, filter, pageDataSet); | |||||
} | } | ||||
DynPageListHandler listHandler = new DynPageListHandler(pageId, filter, pageDataSet); | DynPageListHandler listHandler = new DynPageListHandler(pageId, filter, pageDataSet); | ||||
listHandler.init(params, us); | listHandler.init(params, us); | ||||
@@ -109,7 +111,7 @@ public class MenuPlanHandler { | |||||
@Override | @Override | ||||
public DynPageTreeHandler getTreeWorker(SwMap filter, PageDataset pageDataSet) { | public DynPageTreeHandler getTreeWorker(SwMap filter, PageDataset pageDataSet) { | ||||
MenuTreeHandler treeHandler = new MenuPlanHandler.MenuTreeHandler(pageId,filter,pageDataSet); | |||||
MenuTreeHandler treeHandler = new MenuPlanHandler.MenuTreeHandler(pageId, filter, pageDataSet); | |||||
treeHandler.init(params, us); | treeHandler.init(params, us); | ||||
return treeHandler; | return treeHandler; | ||||
} | } | ||||
@@ -117,11 +119,12 @@ public class MenuPlanHandler { | |||||
@Override | @Override | ||||
protected void afterAddBean(PageDataset dataset, SwMap bean) { | protected void afterAddBean(PageDataset dataset, SwMap bean) { | ||||
super.afterAddBean(dataset, bean); | super.afterAddBean(dataset, bean); | ||||
if(DS_MENU_CARD.equals(dataset.name)){ | |||||
bean.put("type",0); | |||||
if (DS_MENU_CARD.equals(dataset.name)) { | |||||
bean.put("type", 0); | |||||
} | } | ||||
} | } | ||||
} | } | ||||
static class MenuListHandler extends DynPageListHandler { | static class MenuListHandler extends DynPageListHandler { | ||||
public MenuListHandler(long pageId, SwMap filter, PageDataset pageDataSet) { | public MenuListHandler(long pageId, SwMap filter, PageDataset pageDataSet) { | ||||
super(pageId, filter, pageDataSet); | super(pageId, filter, pageDataSet); | ||||
@@ -129,22 +132,23 @@ public class MenuPlanHandler { | |||||
@Override | @Override | ||||
public SwListData buildListData() { | public SwListData buildListData() { | ||||
long plan_id = filter.readLong("plan_id",-1L); | |||||
long plan_id = filter.readLong("plan_id", -1L); | |||||
List<MenuPlanItem> children = getChildren(); | List<MenuPlanItem> children = getChildren(); | ||||
List<SwMap> list = new ArrayList<>(); | List<SwMap> list = new ArrayList<>(); | ||||
int total = 0; | int total = 0; | ||||
if(PubUtil.isNotEmpty(children)){ | |||||
total= children.size(); | |||||
for(MenuPlanItem bean: children){ | |||||
if (PubUtil.isNotEmpty(children)) { | |||||
total = children.size(); | |||||
for (MenuPlanItem bean : children) { | |||||
SwMap map = bean.getData(); | SwMap map = bean.getData(); | ||||
map.put("plan_id",plan_id); | |||||
map.put("type",bean.getMenu()> 0 ? 1: 0); | |||||
map.put("type_text",bean.getMenu()> 0 ? "菜单": "目录"); | |||||
map.put("plan_id", plan_id); | |||||
map.put("type", bean.getMenu() > 0 ? 1 : 0); | |||||
map.put("type_text", bean.getMenu() > 0 ? "菜单" : "目录"); | |||||
list.add(map); | list.add(map); | ||||
} | } | ||||
} | } | ||||
return SwListData.create(list,total); | |||||
return SwListData.create(list, total); | |||||
} | } | ||||
@Override | @Override | ||||
public R getTotal() { | public R getTotal() { | ||||
SwMap r = new SwMap(); | SwMap r = new SwMap(); | ||||
@@ -152,54 +156,58 @@ public class MenuPlanHandler { | |||||
r.put("total", children.size()); | r.put("total", children.size()); | ||||
return R.success(r); | return R.success(r); | ||||
} | } | ||||
private List<MenuPlanItem> getChildren(){ | |||||
long plan_id = filter.readLong("plan_id",-1L); | |||||
long parent_id = filter.readLong("parent_id",-1L); | |||||
if(plan_id<=0){ | |||||
private List<MenuPlanItem> getChildren() { | |||||
long plan_id = filter.readLong("plan_id", -1L); | |||||
long parent_id = filter.readLong("parent_id", -1L); | |||||
if (plan_id <= 0) { | |||||
return new ArrayList<>(); | return new ArrayList<>(); | ||||
} | } | ||||
MenuPlan menuPlan = MenuPlanCache.getInstance().get(plan_id); | |||||
if(menuPlan==null){ | |||||
MenuPlan menuPlan = MenuPlanCache.getInstance().get(plan_id); | |||||
if (menuPlan == null) { | |||||
return new ArrayList<>(); | return new ArrayList<>(); | ||||
} | } | ||||
MenuPlanContent menuPlanContent = new MenuPlanContent(menuPlan.getContent()); | MenuPlanContent menuPlanContent = new MenuPlanContent(menuPlan.getContent()); | ||||
return menuPlanContent.getChildren(parent_id); | return menuPlanContent.getChildren(parent_id); | ||||
} | } | ||||
} | } | ||||
static class MenuProvider extends DynPageProvider{ | |||||
static class MenuProvider extends DynPageProvider { | |||||
@Override | @Override | ||||
public SwMap loadData(SwMap filter, PageDataset pageDataSet) { | public SwMap loadData(SwMap filter, PageDataset pageDataSet) { | ||||
if(DS_MENU_CARD.equals(pageDataSet.name)){ | |||||
long id = filter.readLong("id",1L); | |||||
long plan_id = filter.readLong("plan_id",1L); | |||||
if (DS_MENU_CARD.equals(pageDataSet.name)) { | |||||
long id = filter.readLong("id", 1L); | |||||
long plan_id = filter.readLong("plan_id", 1L); | |||||
MenuPlan menuPlan = MenuPlanCache.getInstance().get(plan_id); | MenuPlan menuPlan = MenuPlanCache.getInstance().get(plan_id); | ||||
if(menuPlan==null) { | |||||
if (menuPlan == null) { | |||||
return new SwMap(); | return new SwMap(); | ||||
} | } | ||||
MenuPlanContent menuPlanContent = new MenuPlanContent(menuPlan.getContent()); | MenuPlanContent menuPlanContent = new MenuPlanContent(menuPlan.getContent()); | ||||
MenuPlanItem menuPlanItem = menuPlanContent.findById(id); | MenuPlanItem menuPlanItem = menuPlanContent.findById(id); | ||||
if(menuPlanItem == null){ | |||||
if (menuPlanItem == null) { | |||||
return new SwMap(); | return new SwMap(); | ||||
} | } | ||||
SwMap r = new SwMap(); | SwMap r = new SwMap(); | ||||
r.putAll(menuPlanItem.getData()); | r.putAll(menuPlanItem.getData()); | ||||
r.put("plan_id",plan_id); | |||||
r.put("type",menuPlanItem.getMenu()> 0 ? 1: 0); | |||||
r.put("plan_id", plan_id); | |||||
r.put("type", menuPlanItem.getMenu() > 0 ? 1 : 0); | |||||
return r; | return r; | ||||
} | } | ||||
return super.loadData(filter, pageDataSet); | return super.loadData(filter, pageDataSet); | ||||
} | } | ||||
} | } | ||||
static class MenuTreeHandler extends DynPageTreeHandler{ | |||||
static class MenuTreeHandler extends DynPageTreeHandler { | |||||
private MenuPlanContent menuPlanContent; | private MenuPlanContent menuPlanContent; | ||||
public MenuTreeHandler(long pageId, SwMap filter, PageDataset pageDataSet) { | public MenuTreeHandler(long pageId, SwMap filter, PageDataset pageDataSet) { | ||||
super(pageId, filter, pageDataSet); | super(pageId, filter, pageDataSet); | ||||
long plan_id = filter.readLong("plan_id",-1L); | |||||
if(plan_id<=0){ | |||||
long plan_id = filter.readLong("plan_id", -1L); | |||||
if (plan_id <= 0) { | |||||
menuPlanContent = new MenuPlanContent(null); | menuPlanContent = new MenuPlanContent(null); | ||||
} | } | ||||
MenuPlan menuPlan = MenuPlanCache.getInstance().get(plan_id); | MenuPlan menuPlan = MenuPlanCache.getInstance().get(plan_id); | ||||
menuPlanContent = new MenuPlanContent(menuPlan == null ? null: menuPlan.getContent()); | |||||
menuPlanContent = new MenuPlanContent(menuPlan == null ? null : menuPlan.getContent()); | |||||
} | } | ||||
@Override | @Override | ||||
@@ -207,9 +215,9 @@ public class MenuPlanHandler { | |||||
boolean exc_menu = params.readBool("exc_menu"); | boolean exc_menu = params.readBool("exc_menu"); | ||||
List<SwMap> list = new ArrayList<>(); | List<SwMap> list = new ArrayList<>(); | ||||
List<MenuPlanItem> temList = menuPlanContent.getChildren(id); | List<MenuPlanItem> temList = menuPlanContent.getChildren(id); | ||||
if(PubUtil.isNotEmpty(temList)){ | |||||
temList.forEach(bean-> { | |||||
if(exc_menu&&bean.getMenu()>0){ | |||||
if (PubUtil.isNotEmpty(temList)) { | |||||
temList.forEach(bean -> { | |||||
if (exc_menu && bean.getMenu() > 0) { | |||||
return; | return; | ||||
} | } | ||||
list.add(bean.getData()); | list.add(bean.getData()); | ||||
@@ -218,6 +226,10 @@ public class MenuPlanHandler { | |||||
return list; | return list; | ||||
} | } | ||||
protected void buildMenuRight(String menu_id, SwMap bean) { | |||||
} | |||||
@Override | @Override | ||||
protected long getId(SwMap bean) { | protected long getId(SwMap bean) { | ||||
return bean.readLong("id"); | return bean.readLong("id"); | ||||
@@ -2,7 +2,8 @@ package cc.smtweb.system.bpm.web.sys.user.menuPlan; | |||||
import cc.smtweb.framework.core.db.impl.BaseBean; | import cc.smtweb.framework.core.db.impl.BaseBean; | ||||
import java.util.ArrayList; | |||||
import java.util.Collections; | |||||
import java.util.Comparator; | |||||
import java.util.List; | import java.util.List; | ||||
/** | /** | ||||
@@ -11,58 +12,85 @@ import java.util.List; | |||||
* @Desc: | * @Desc: | ||||
*/ | */ | ||||
public class MenuPlanItem extends BaseBean { | public class MenuPlanItem extends BaseBean { | ||||
/** 主键 */ | |||||
/** | |||||
* 主键 | |||||
*/ | |||||
public long getId() { | public long getId() { | ||||
return getLong("id"); | return getLong("id"); | ||||
} | } | ||||
/** 主键 */ | |||||
/** | |||||
* 主键 | |||||
*/ | |||||
public void setId(long id) { | public void setId(long id) { | ||||
put("id", id); | put("id", id); | ||||
} | } | ||||
/** 菜单ID */ | |||||
/** | |||||
* 菜单ID | |||||
*/ | |||||
public long getMenu() { | public long getMenu() { | ||||
return getLong("menu"); | return getLong("menu"); | ||||
} | } | ||||
/** 菜单ID */ | |||||
/** | |||||
* 菜单ID | |||||
*/ | |||||
public void setMenu(long menu) { | public void setMenu(long menu) { | ||||
put("menu", menu); | put("menu", menu); | ||||
} | } | ||||
/** 标题 */ | |||||
/** | |||||
* 标题 | |||||
*/ | |||||
public String getLabel() { | public String getLabel() { | ||||
return getStr("label"); | return getStr("label"); | ||||
} | } | ||||
/** 标题 */ | |||||
/** | |||||
* 标题 | |||||
*/ | |||||
public void setLabel(String label) { | public void setLabel(String label) { | ||||
put("label", label); | put("label", label); | ||||
} | } | ||||
/** 图标 */ | |||||
/** | |||||
* 图标 | |||||
*/ | |||||
public String getIcon() { | public String getIcon() { | ||||
return getStr("icon"); | return getStr("icon"); | ||||
} | } | ||||
/** 图标 */ | |||||
/** | |||||
* 图标 | |||||
*/ | |||||
public void setIcon(String icon) { | public void setIcon(String icon) { | ||||
put("icon", icon); | put("icon", icon); | ||||
} | } | ||||
/** 排序码 */ | |||||
/** | |||||
* 排序码 | |||||
*/ | |||||
public int getSeq() { | public int getSeq() { | ||||
return getInt("seq"); | return getInt("seq"); | ||||
} | } | ||||
/** 排序码 */ | |||||
/** | |||||
* 排序码 | |||||
*/ | |||||
public void setSeq(int seq) { | public void setSeq(int seq) { | ||||
put("seq", seq); | put("seq", seq); | ||||
} | } | ||||
public void setChildren(List<MenuPlanItem> children){ | |||||
put("children",children); | |||||
public void setChildren(List<MenuPlanItem> children) { | |||||
put("children", children); | |||||
} | } | ||||
public List<MenuPlanItem> getChildren(){ | |||||
public List<MenuPlanItem> getChildren() { | |||||
Object obj = get("children"); | Object obj = get("children"); | ||||
return obj==null ? null : (List<MenuPlanItem>) obj; | |||||
if (obj == null) return null; | |||||
List<MenuPlanItem> list = (List<MenuPlanItem>) obj; | |||||
Collections.sort(list, new MenuPlanComparator()); | |||||
return list; | |||||
} | } | ||||
} | } |