From e04e10a0765e1d32535d91292763289adf43d651 Mon Sep 17 00:00:00 2001 From: ludc Date: 星期一, 09 九月 2024 17:49:33 +0800 Subject: [PATCH] 按钮设计对话框:查询、添加、修改接口上传。 --- Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/UIManagerController.java | 54 ++++++ Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/UIManagerServiceI.java | 38 ++++ Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIManagerServiceImpl.java | 266 ++++++++++++++++++++++++++++++-- Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/pagemodel/PLTabButtonVO.java | 96 ++++++++++++ 4 files changed, 428 insertions(+), 26 deletions(-) diff --git a/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/pagemodel/PLTabButtonVO.java b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/pagemodel/PLTabButtonVO.java new file mode 100644 index 0000000..6aaa7e2 --- /dev/null +++ b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/pagemodel/PLTabButtonVO.java @@ -0,0 +1,96 @@ +package com.vci.pagemodel; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.LinkedHashMap; + +/** + * 鎸夐挳閰嶇疆VO瀵硅薄 + * @author ludc + * @date 2024/9/9 16:46 + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +public class PLTabButtonVO { + + /** + * 涓婚敭 + */ + private String oId; + + private String tableOId; + + /** + * 椤甸潰瀹氫箟涓婚敭 + */ + private String pageOId; + + /** + * action涓婚敭 + */ + private String actionOId; + + /** + * 鍚嶇О + */ + private String label; + + /** + * 鍖哄煙绫诲瀷 + */ + private String areaType; + + /** + * 鎻忚堪 + */ + private String desc; + + /** + * 缂栧彿 + */ + private short seq; + + private long createTime; + + private String createUser; + + private long modifyTime; + + private String modifyUser; + + private String licensOrs; + + /** + * 鐖舵寜閽富閿� + */ + private String parentOid; + + /** + * 鏄惁鏄剧ず + */ + private String displayMode; + + /** + * icon鍥炬爣璺緞 + */ + private String iconPath; + + /** + * 鏄惁鎺堟潈 + */ + private String authorization; + + /** + * 鏄剧ず鏂瑰紡 + */ + private String show; + + /** + * 鍙傛暟淇℃伅 + */ + LinkedHashMap<String, String> buttonParams; + +} diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/UIManagerController.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/UIManagerController.java index fe7860b..a0795b9 100644 --- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/UIManagerController.java +++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/UIManagerController.java @@ -5,6 +5,7 @@ import com.vci.corba.portal.data.PLTabPage; import com.vci.corba.portal.data.PLUILayout; import com.vci.dto.UIAuthorDTO; +import com.vci.pagemodel.PLDefinationVO; import com.vci.pagemodel.PLUILayoutCloneVO; import com.vci.starter.web.annotation.log.VciBusinessLog; import com.vci.starter.web.exception.VciBaseException; @@ -252,7 +253,7 @@ } /** - * 鍒犻櫎鏁版嵁 + * 鍒犻櫎鍖哄煙瀹氫箟鏁版嵁 * @param oids * @return */ @@ -288,6 +289,57 @@ } /** + * 娣诲姞椤甸潰瀹氫箟 + * @param pdVO + * @return 淇濆瓨缁撴灉 + */ + @PostMapping("/addPageDefination") + public BaseResult addPageDefination(@RequestBody PLDefinationVO pdVO){ + try { + return uiManagerService.addPageDefination(pdVO) ? BaseResult.success("椤甸潰瀹氫箟娣诲姞鎴愬姛锛�"):BaseResult.fail("椤甸潰瀹氫箟娣诲姞澶辫触锛�"); + } catch (Throwable e) { + e.printStackTrace(); + String exceptionMessage = "椤甸潰瀹氫箟娣诲姞鏃跺嚭鐜伴敊璇紝鍘熷洜锛�" + VciBaseUtil.getExceptionMessage(e); + logger.error(exceptionMessage); + return BaseResult.fail(exceptionMessage); + } + } + + /** + * 淇敼椤甸潰瀹氫箟鏁版嵁 + * @param pdVO + * @return 淇敼缁撴灉 + */ + @PutMapping("/updatePageDefination") + public BaseResult updatePageDefination(@RequestBody PLDefinationVO pdVO){ + try { + return uiManagerService.updatePageDefination(pdVO) ? BaseResult.success("淇敼椤甸潰瀹氫箟鎴愬姛锛�"):BaseResult.fail("淇敼椤甸潰瀹氫箟澶辫触锛�"); + } catch (Throwable e) { + e.printStackTrace(); + String exceptionMessage = "淇敼椤甸潰瀹氫箟鏃跺嚭鐜伴敊璇紝鍘熷洜锛�" + VciBaseUtil.getExceptionMessage(e); + logger.error(exceptionMessage); + return BaseResult.fail(exceptionMessage); + } + } + + /** + * 鍒犻櫎椤甸潰瀹氫箟鏁版嵁 + * @param oids + * @return + */ + @DeleteMapping("/delPageDefination") + public BaseResult delPageDefination(String[] oids){ + try { + return uiManagerService.delPageDefination(oids) ? BaseResult.success("鍒犻櫎椤甸潰瀹氫箟鎴愬姛锛�"):BaseResult.fail("鍒犻櫎椤甸潰瀹氫箟鏁版嵁澶辫触锛�"); + } catch (PLException e) { + e.printStackTrace(); + String exceptionMessage = "鍒犻櫎椤甸潰瀹氫箟鏁版嵁鏃跺嚭鐜伴敊璇紝鍘熷洜锛�" + VciBaseUtil.getExceptionMessage(e); + logger.error(exceptionMessage); + return BaseResult.fail(exceptionMessage); + } + } + + /** * 鏍规嵁瑙掕壊鑾峰彇UI/琛ㄥ崟/鎸夐挳鐨勬潈闄�. * @param baseQueryObject * @return diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/UIManagerServiceI.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/UIManagerServiceI.java index 0d0e61e..8cc0a49 100644 --- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/UIManagerServiceI.java +++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/UIManagerServiceI.java @@ -1,9 +1,11 @@ package com.vci.web.service; import com.vci.corba.common.PLException; +import com.vci.corba.portal.data.PLTabButton; import com.vci.corba.portal.data.PLUILayout; import com.vci.corba.portal.data.PLPageDefination; import com.vci.corba.portal.data.PLTabPage; +import com.vci.pagemodel.PLTabButtonVO; import com.vci.pagemodel.PLUILayoutCloneVO; import com.vci.starter.web.exception.VciBaseException; import com.vci.starter.web.pagemodel.BaseQueryObject; @@ -118,17 +120,17 @@ /** * 娣诲姞椤甸潰瀹氫箟 - * @param pd + * @param pdVO * @return */ - boolean addPageDefination(PLDefinationVO pd) throws Throwable; + boolean addPageDefination(PLDefinationVO pdVO) throws Throwable; /** * 淇敼椤甸潰瀹氫箟 - * @param pd + * @param pdVO * @return */ - boolean updatePageDefination(PLDefinationVO pd) throws Throwable; + boolean updatePageDefination(PLDefinationVO pdVO) throws Throwable; /** * 鍒犻櫎椤甸潰瀹氫箟 @@ -137,8 +139,34 @@ */ boolean delPageDefination(String[] oids) throws PLException; - //閰嶇疆鎸夐挳鐩稿叧鎺ュ彛 + //椤甸潰璁捐涓嬮厤缃寜閽浉鍏虫帴鍙� + /** + * 鑾峰彇椤电鍖哄煙鎸夐挳閰嶇疆淇℃伅 + * @param pageDefinationOid + * @return + */ + List<PLTabButtonVO> getTabButton(String pageDefinationOid); + /** + * 娣诲姞鎸夐挳閰嶇疆淇℃伅 + * @param tabButtonVO + * @return + */ + BaseResult addTapButton(PLTabButtonVO tabButtonVO); + + /** + * 淇敼鎸夐挳閰嶇疆淇℃伅 + * @param tabButtonVO + * @return + */ + BaseResult updateTapButton(PLTabButtonVO tabButtonVO); + + /** + * 淇濆瓨鎴栦慨鏀规寜閽厤缃俊鎭� + * @param tabButtonVO + * @return + */ + boolean saveOrUpdateTapButton(PLTabButtonVO tabButtonVO,boolean isAdd); /** diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIManagerServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIManagerServiceImpl.java index b315dc0..137973d 100644 --- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIManagerServiceImpl.java +++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIManagerServiceImpl.java @@ -8,9 +8,9 @@ import com.vci.corba.portal.data.*; import com.vci.dto.RoleRightDTO; import com.vci.dto.UIAuthorDTO; -import com.vci.frameworkcore.compatibility.SmRoleQueryServiceI; import com.vci.model.PLDefination; import com.vci.pagemodel.PLDefinationVO; +import com.vci.pagemodel.PLTabButtonVO; import com.vci.pagemodel.PLUILayoutCloneVO; import com.vci.pagemodel.RoleRightVO; import com.vci.starter.web.exception.VciBaseException; @@ -37,6 +37,7 @@ import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; +import javax.swing.*; import java.io.IOException; import java.util.*; import java.util.stream.Collectors; @@ -439,7 +440,6 @@ return plDefinationVOList; } - /** * 娣诲姞椤甸潰瀹氫箟 * @param pdVO @@ -563,15 +563,25 @@ */ @Override public boolean updatePageDefination(PLDefinationVO pdVO) throws Throwable { - /*PLPageDefination pd = getPageDefination(); - PLDefination d = UITools.getPLDefination(pd.plDefination); + VciBaseUtil.alertNotNull(pdVO,"椤甸潰瀹氫箟瀵硅薄",pdVO.getSeq(),"缂栧彿",pdVO.getName(),"鍚嶇О"); + PLPageDefination pd = new PLPageDefination(); + PLDefination d = new PLDefination(); + BeanUtil.copy(pdVO,d); //涓嶈兘涓虹┖灞炴�ф鏌� if(!this.baseInfoIsOk(pd,true)){ return false; } - setUIValueToObject(pd, d); + pd.name = pdVO.getName().trim(); + pd.seq = Short.valueOf(pdVO.getSeq().trim()); + pd.desc = pdVO.getDescription(); + pd.plType = Short.parseShort(pdVO.getTemplateType()); + + d.setName(pdVO.getName().trim()); + d.setUiParser(pdVO.getUiParser().trim()); + d.setExtAttr(pdVO.getExtAttr().trim()); + d.setTemplateType(pdVO.getTemplateType()); this.newPLDefinationIsOk(pdVO, true); @@ -652,13 +662,241 @@ break; } - d = comptPanel.getNewPLDefination(d); d = setEventDataToPLDefination(d,pdVO); - pd.plDefination = UITools.getPLDefinationText(d);*/ + pd.plDefination = UITools.getPLDefinationText(d); - boolean res = true;//platformClientUtil.getUIService().updatePLPageDefination(pd); + return platformClientUtil.getUIService().updatePLPageDefination(pd); + } + + /** + * 鍒犻櫎椤甸潰瀹氫箟 + * @param oids + * @return + */ + @Override + public boolean delPageDefination(String[] oids) throws PLException { + VciBaseUtil.alertNotNull(oids,"鍒犻櫎鐨勯〉闈㈠畾涔変富閿�"); + boolean res = platformClientUtil.getUIService().deletePLUILayoutByOidsForCascade(oids); return res; } + + /** + * 鑾峰彇椤电鍖哄煙鎸夐挳閰嶇疆淇℃伅 + * @param pageDefinationOid + * @return + */ + @Override + public List<PLTabButtonVO> getTabButton(String pageDefinationOid) { + VciBaseUtil.alertNotNull(pageDefinationOid,"椤甸潰瀹氫箟涓婚敭"); + List<PLTabButton> buttonList = new ArrayList<>(); + try { + PLTabButton[] plTabButtons = platformClientUtil.getUIService().getPLTabButtonsByTableOId(pageDefinationOid); + buttonList = Arrays.asList(plTabButtons); + return this.tabButton2TabButtonVOS(buttonList); + } catch (Exception e) { + e.printStackTrace(); + throw new VciBaseException("鍔犺浇椤电鍖哄煙鎸夐挳閰嶇疆淇℃伅寮傚父锛�" + e.getMessage()); + } + } + + /** + * 澶氫釜鎸夐挳閰嶇疆DO瀵硅薄杞涓猇O瀵硅薄 + * @param listDO + * @return + */ + private List<PLTabButtonVO> tabButton2TabButtonVOS(List<PLTabButton> listDO){ + List<PLTabButtonVO> plTabButtonVOList = new ArrayList<PLTabButtonVO>(); + if(Func.isEmpty(listDO)){ + return plTabButtonVOList; + } + listDO.stream().forEach(item->{ + try { + PLTabButtonVO plTabButtonVO = this.tabButton2TabButtonVO(item); + plTabButtonVOList.add(plTabButtonVO); + } catch (PLException e) { + e.printStackTrace(); + String errorLog = "鎸夐挳閰嶇疆DO TO VO鏃跺嚭鐜伴敊璇紝鍘熷洜锛�"+VciBaseUtil.getExceptionMessage(e); + logger.error(errorLog); + throw new VciBaseException(errorLog); + } + + }); + return plTabButtonVOList; + } + + /** + * 鎸夐挳閰嶇疆DO瀵硅薄杞琕O瀵硅薄 + * @param tabButtonDO + * @return + */ + private PLTabButtonVO tabButton2TabButtonVO(PLTabButton tabButtonDO) throws PLException { + PLTabButtonVO plTabButtonVO = new PLTabButtonVO(); + if(Func.isEmpty(tabButtonDO) && Func.isBlank(tabButtonDO.plOId)){ + return plTabButtonVO; + } + plTabButtonVO.setOId(tabButtonDO.plOId); + plTabButtonVO.setTableOId(tabButtonDO.plTableOId); + plTabButtonVO.setPageOId(tabButtonDO.plPageOId); + plTabButtonVO.setActionOId(tabButtonDO.plActionOId); + plTabButtonVO.setLabel(tabButtonDO.plLabel); + plTabButtonVO.setAreaType(tabButtonDO.plAreaType); + plTabButtonVO.setDesc(tabButtonDO.plDesc); + plTabButtonVO.setSeq(tabButtonDO.plSeq); + plTabButtonVO.setCreateUser(tabButtonDO.plCreateUser); + plTabButtonVO.setCreateTime(tabButtonDO.plCreateTime); + plTabButtonVO.setModifyUser(tabButtonDO.plModifyUser); + plTabButtonVO.setModifyTime(tabButtonDO.plModifyTime); + plTabButtonVO.setLicensOrs(tabButtonDO.plLicensOrs); + plTabButtonVO.setParentOid(tabButtonDO.plParentOid); + plTabButtonVO.setDisplayMode(tabButtonDO.displayMode); + plTabButtonVO.setIconPath(tabButtonDO.iconPath); + plTabButtonVO.setAuthorization(tabButtonDO.authorization); + plTabButtonVO.setShow(tabButtonDO.show); + //鍙傛暟淇℃伅鍥炲~ + PLCommandParameter[] parameters = platformClientUtil.getUIService().getPLCommandParametersByCommandOId(tabButtonDO.plOId); + if(Func.isNotEmpty(parameters)){ + LinkedHashMap<String, String> parameterMap = (LinkedHashMap<String, String>)Arrays.stream(parameters).collect(Collectors.toMap(parm -> parm.plKey, parm -> parm.plValue)); + plTabButtonVO.setButtonParams(parameterMap); + } + return plTabButtonVO; + } + + /** + * 鎸夐挳閰嶇疆VO瀵硅薄杞珼O瀵硅薄 + * @param tabButtonVO + * @return + * @throws PLException + */ + private PLTabButton tabButtonVO2TabButton(PLTabButton plTabButton,PLTabButtonVO tabButtonVO) { + plTabButton.plOId = tabButtonVO.getOId(); + plTabButton.plTableOId = tabButtonVO.getTableOId(); + plTabButton.plPageOId = tabButtonVO.getPageOId(); + plTabButton.plActionOId = tabButtonVO.getActionOId(); + plTabButton.plLabel = tabButtonVO.getLabel(); + plTabButton.plAreaType = tabButtonVO.getAreaType(); + plTabButton.plDesc = tabButtonVO.getDesc(); + plTabButton.plSeq = tabButtonVO.getSeq(); + plTabButton.plCreateUser = tabButtonVO.getCreateUser(); + plTabButton.plCreateTime = tabButtonVO.getCreateTime(); + plTabButton.plModifyUser = tabButtonVO.getModifyUser(); + plTabButton.plModifyTime = tabButtonVO.getModifyTime(); + plTabButton.plLicensOrs = tabButtonVO.getLicensOrs(); + plTabButton.plParentOid = tabButtonVO.getParentOid(); + plTabButton.displayMode = tabButtonVO.getDisplayMode(); + plTabButton.iconPath = tabButtonVO.getIconPath(); + plTabButton.authorization = tabButtonVO.getAuthorization(); + plTabButton.show = tabButtonVO.getShow(); + return plTabButton; + } + + /** + * 娣诲姞鎸夐挳閰嶇疆淇℃伅 + * @param tabButtonVO + * @return + */ + @Override + public BaseResult addTapButton(PLTabButtonVO tabButtonVO) { + boolean res = this.saveOrUpdateTapButton(tabButtonVO, true); + return res ? BaseResult.success("鎸夐挳閰嶇疆娣诲姞鎴愬姛锛�"):BaseResult.success("鎸夐挳閰嶇疆娣诲姞澶辫触锛�"); + } + + /** + * 淇敼鎸夐挳閰嶇疆淇℃伅 + * @param tabButtonVO + * @return + */ + @Override + public BaseResult updateTapButton(PLTabButtonVO tabButtonVO) { + boolean res = this.saveOrUpdateTapButton(tabButtonVO, false); + return res ? BaseResult.success("鎸夐挳閰嶇疆淇敼鎴愬姛锛�"):BaseResult.success("鎸夐挳閰嶇疆淇敼澶辫触锛�"); + } + + /** + * 淇濆瓨鎴栦慨鏀规寜閽厤缃俊鎭� + * @param tabButtonVO + * @return + */ + @Override + public boolean saveOrUpdateTapButton(PLTabButtonVO tabButtonVO,boolean isAdd){ + VciBaseUtil.alertNotNull(tabButtonVO,"鎸夐挳閰嶇疆瀵硅薄",tabButtonVO.getLabel(),"鍙傛暟鍚嶇О"); + //妫�鏌ュ綋鍓嶆坊鍔犵殑鍒楄〃鏄惁閲嶅锛屼絾鏄繖鍎垮彧鏀寔鍗曟潯鏁版嵁淇濆瓨锛屾墍鏈夊綋鍓嶅垪琛ㄥ垽閲嶅彲浠ュ墠绔潵鍋� + //String btnParamValidate = this.geCheckRes(); + + if (tabButtonVO.getSeq() < 1 || tabButtonVO.getSeq() > 63) { + throw new VciBaseException("鎸夊簭鍙疯秴鍑鸿寖鍥达紝璇蜂慨鏀癸紝鎸夐挳銆愮紪鍙枫�戝彧鑳藉湪銆�1-63銆戣寖鍥村唴銆�"); + } + //褰撳墠鐧诲綍鐢ㄦ埛鐨勪俊鎭� + SessionInfo sessionInfo = WebThreadLocalUtil.getCurrentUserSessionInfoInThread(); + //VO2DO + PLTabButton plTabButton = this.tabButtonVO2TabButton(new PLTabButton(), tabButtonVO); + if(isAdd) { + //濡傛灉鏄鍔犳搷浣滐紝鐩存帴鍒涘缓PLTabButton瀵硅薄 + plTabButton.plOId = ObjectUtility.getNewObjectID36(); + plTabButton.plCreateUser = sessionInfo.getUserId(); + plTabButton.plModifyUser = sessionInfo.getUserId(); + } else { + //淇敼鎿嶄綔 + plTabButton.plModifyUser = sessionInfo.getUserId(); + } + + try { + if(isAdd){ + boolean success = platformClientUtil.getUIService().savePLTabButton(plTabButton); + if(success == false) { + throw new VciBaseException("缂栧彿閲嶅锛岀紪鍙峰凡缁忓湪褰撳墠椤电涓嬪瓨鍦紒"); + } + } else if(!isAdd){ + platformClientUtil.getUIService().updatePLTabButton(plTabButton); + } + } catch (Exception e) { + e.printStackTrace(); + String errorLog = "淇濆瓨鎸夐挳淇℃伅鏃跺彂鐢熷紓甯革細" + e.getMessage(); + logger.error(errorLog); + throw new VciBaseException(errorLog); + } + //澶嶇敤浠ュ墠鐨勪唬鐮侊紝瀵逛簬鍙傛暟涓�鏉′竴鏉″垹闄わ紝涓�鏉′竴鏉″垱寤� + //鏁版嵁閲忓強骞跺彂杈冨皯锛屾殏鏃惰繖涔堝鐞嗘病鏈変粈涔堥棶棰� + if(!isAdd) { + try { + platformClientUtil.getUIService().deletePLCommandParameterByTabButtonId(plTabButton.plOId); + } catch (PLException e) { + e.printStackTrace(); + } + } + + LinkedHashMap<String, String> buttonParams = tabButtonVO.getButtonParams(); + if(!buttonParams.isEmpty()) { + Iterator<Map.Entry<String, String>> iterator = buttonParams.entrySet().iterator(); + while(iterator.hasNext()){ + Map.Entry<String, String> next = iterator.next(); + if(StringUtils.isEmpty(next.getKey()) || StringUtils.isEmpty(next.getValue())){ + iterator.remove(); + } + } + if(!buttonParams.isEmpty()){ + Iterator<Map.Entry<String, String>> kvItor = buttonParams.entrySet().iterator(); + while(kvItor.hasNext()){ + Map.Entry<String, String> next = kvItor.next(); + PLCommandParameter plCommandParameter = new PLCommandParameter(); + plCommandParameter.plOId = ObjectUtility.getNewObjectID36(); + plCommandParameter.plCommandOId = plTabButton.plOId; + plCommandParameter.plKey = next.getKey(); + plCommandParameter.plValue = next.getValue(); + plCommandParameter.plCreateUser = sessionInfo.getUserId(); + plCommandParameter.plModifyUser = sessionInfo.getUserId(); + try { + platformClientUtil.getUIService().savePLCommandParameter(plCommandParameter); + } catch (PLException e) { + e.printStackTrace(); + throw new VciBaseException("淇濆瓨鎸夐挳淇℃伅鏃跺彂鐢熷紓甯革細"+ e.getMessage()); + } + } + } + } + return true; + } + + /** * 澶勭悊閰嶇疆鐨別vent浜嬩欢 @@ -700,18 +938,6 @@ } else { res = true; } - return res; - } - - /** - * 鍒犻櫎椤甸潰瀹氫箟 - * @param oids - * @return - */ - @Override - public boolean delPageDefination(String[] oids) throws PLException { - VciBaseUtil.alertNotNull(oids,"鍒犻櫎鐨勯〉闈㈠畾涔変富閿�"); - boolean res = platformClientUtil.getUIService().deletePLUILayoutByOidsForCascade(oids); return res; } -- Gitblit v1.9.3