From e45b445e2145dbd83864eb28417ae02bffc1a900 Mon Sep 17 00:00:00 2001 From: ludc Date: 星期一, 02 九月 2024 15:21:02 +0800 Subject: [PATCH] ui定义:UI上下文区域查询、增加、修改、删除、克隆接口上传 --- Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsBtmServiceImpl.java | 36 +++ Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/pagemodel/PLUILayoutCloneVO.java | 38 +++ Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/UIManagerController.java | 154 ++++++++++++ Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/WebBtmTypeController.java | 1 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/OsBtmServiceI.java | 10 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/UIManagerServiceI.java | 62 +++++ Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIManagerServiceImpl.java | 369 ++++++++++++++++++++++++++++++ Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/UIEngineServiceI.java | 3 8 files changed, 669 insertions(+), 4 deletions(-) diff --git a/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/pagemodel/PLUILayoutCloneVO.java b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/pagemodel/PLUILayoutCloneVO.java new file mode 100644 index 0000000..e1c96bc --- /dev/null +++ b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/pagemodel/PLUILayoutCloneVO.java @@ -0,0 +1,38 @@ +package com.vci.pagemodel; + +import com.vci.corba.portal.data.PLUILayout; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * ui涓婁笅鏂囧厠闅嗗璞� + * @author ludc + * @date 2024/9/2 12:58 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +public class PLUILayoutCloneVO { + + /** + * 鍏嬮殕鐩爣涓婚敭 + */ + private String cloneTargetOid; + + /** + * 鍏嬮殕鐨勬簮瀵硅薄鐨勪俊鎭� + */ + private PLUILayout sourcePLUILayout; + + /** + * 鍏嬮殕鍚嶇О + */ + private String cloneName; + + /** + * 鍏嬮殕涓婁笅鏂囩紪鐮� + */ + private String cloneContextCode; + +} 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 new file mode 100644 index 0000000..5d143b7 --- /dev/null +++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/UIManagerController.java @@ -0,0 +1,154 @@ +package com.vci.web.controller; + +import com.vci.corba.common.PLException; +import com.vci.corba.portal.data.PLUILayout; +import com.vci.dto.OsBtmTypeDTO; +import com.vci.pagemodel.PLUILayoutCloneVO; +import com.vci.starter.web.annotation.log.VciBusinessLog; +import com.vci.starter.web.pagemodel.BaseQueryObject; +import com.vci.starter.web.pagemodel.BaseResult; +import com.vci.starter.web.util.VciBaseUtil; +import com.vci.web.service.OsBtmServiceI; +import com.vci.web.service.UIManagerServiceI; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.Arrays; + +/** + * UI瀹氫箟鎺у埗灞� + * @author ludc + * @date 2024/8/28 17:09 + */ +@RestController +@RequestMapping("/uiManagerController") +public class UIManagerController { + + /** + * 鏃ュ織 + */ + private Logger logger = LoggerFactory.getLogger(getClass()); + + /** + * 涓氬姟绫诲瀷鐨勬湇鍔� + */ + @Autowired + private OsBtmServiceI btmService; + + /** + * UI瀹氫箟鏈嶅姟 + */ + @Autowired + private UIManagerServiceI uiManagerService; + + /** + * 涓氬姟绫诲瀷鍒楄〃鏌ヨ锛岄潪鏍戠粨鏋勶細鐢ㄤ簬UI瀹氫箟宸︿晶涓氬姟绫诲瀷鏌ヨ + * @param btmName + * @return + * @throws PLException + */ + @GetMapping( "/getBizTree") + @VciBusinessLog(operateName = "涓氬姟绫诲瀷鍒楄〃(涓昏鐢ㄤ簬UI瀹氫箟涓氬姟绫诲瀷鏍戞煡璇娇鐢�)") + public BaseResult getBizTree(String btmName){ + try { + return BaseResult.success(btmService.getBizTree(btmName)); + }catch (Exception e) { + e.printStackTrace(); + String exceptionMessage = "鑾峰彇UI瀹氫箟涓氬姟绫诲瀷鍒楄〃鏃跺嚭鐜伴敊璇紝鍘熷洜锛�" + VciBaseUtil.getExceptionMessage(e); + logger.error(exceptionMessage); + return BaseResult.fail(exceptionMessage); + } + } + + /** + * 閫氳繃涓氬姟绫诲瀷name鏌ヨui涓婁笅鏂囷紝鏀寔鍒嗛〉 + * @param baseQueryObject + * @return + * @throws PLException + */ + @GetMapping( "/gridUIContextData") + @VciBusinessLog(operateName = "閫氳繃涓氬姟绫诲瀷name鏌ヨ鍑簎i涓婁笅鏂�") + public BaseResult gridUIContextData(BaseQueryObject baseQueryObject){ + try { + return BaseResult.dataGrid(uiManagerService.gridUIContextData(baseQueryObject)); + }catch (Exception e) { + e.printStackTrace(); + String exceptionMessage = "閫氳繃涓氬姟绫诲瀷name鏌ヨ鍑簎i涓婁笅鏂囨椂鍑虹幇閿欒锛屽師鍥狅細" + VciBaseUtil.getExceptionMessage(e); + logger.error(exceptionMessage); + return BaseResult.fail(exceptionMessage); + } + } + + /** + * 鍒涘缓UI涓婁笅鏂� + * btmTypeDTO 閾炬帴绫诲瀷鐨勪繚瀛樺璞� + * @return 淇濆瓨缁撴灉 + */ + @PostMapping("/saveUIContextData") + public BaseResult saveUIContextData(@RequestBody PLUILayout pluiLayout){ + try { + return uiManagerService.saveUIContextData(pluiLayout) ? BaseResult.success("UI涓婁笅鏂囧垱寤烘垚鍔燂紒"):BaseResult.fail("UI涓婁笅鏂囧垱寤哄け璐ワ紒"); + } catch (Exception e) { + e.printStackTrace(); + String exceptionMessage = "鍒涘缓UI涓婁笅鏂囨椂鍑虹幇閿欒锛屽師鍥狅細" + VciBaseUtil.getExceptionMessage(e); + logger.error(exceptionMessage); + return BaseResult.fail(exceptionMessage); + } + } + + /** + * 淇敼UI涓婁笅鏂� + * btmTypeDTO + * @return 淇敼缁撴灉 + */ + @PutMapping("/updateUIContextData") + public BaseResult updateUIContextData(@RequestBody PLUILayout pluiLayout){ + try { + return uiManagerService.updateUIContextData(pluiLayout) ? BaseResult.success("UI涓婁笅鏂囦慨鏀规垚鍔燂紒"):BaseResult.fail("UI涓婁笅鏂囦慨鏀瑰け璐ワ紒"); + } catch (Exception e) { + e.printStackTrace(); + String exceptionMessage = "淇敼UI涓婁笅鏂囨椂鍑虹幇閿欒锛屽師鍥狅細" + VciBaseUtil.getExceptionMessage(e); + logger.error(exceptionMessage); + return BaseResult.fail(exceptionMessage); + } + } + + /** + * 鍒犻櫎UI涓婁笅鏂囨暟鎹� + * oids 鍒犻櫎鐨刼id淇℃伅 + * @return 鍒犻櫎缁撴灉 + */ + @DeleteMapping("/delUIContextData") + public BaseResult delUIContextData(String[] oids){ + try { + return uiManagerService.delUIContextData(oids) ? BaseResult.success("UI涓婁笅鏂囧垹闄ゆ垚鍔燂紒"):BaseResult.fail("UI涓婁笅鏂囧垹闄ゅけ璐ワ紒"); + } catch (PLException e) { + e.printStackTrace(); + String exceptionMessage = "鍒犻櫎UI涓婁笅鏂囨椂鍑虹幇閿欒锛屽師鍥狅細" + VciBaseUtil.getExceptionMessage(e); + logger.error(exceptionMessage); + return BaseResult.fail(exceptionMessage); + } + } + + /** + * UI涓婁笅鏂囧厠闅� + * pluiLayoutCloneVO 鍏嬮殕鍙傛暟瀵硅薄 + * @return 鍏嬮殕缁撴瀯 + */ + @PostMapping("/cloneUiContextData") + public BaseResult cloneUiContextData(@RequestBody PLUILayoutCloneVO pluiLayoutCloneVO){ + try { + return uiManagerService.cloneUiContextData(pluiLayoutCloneVO) ? BaseResult.success("UI涓婁笅鏂囧厠闅嗘垚鍔燂紒"):BaseResult.fail("UI涓婁笅鏂囧厠闅嗗け璐ワ紒"); + } catch (PLException e) { + e.printStackTrace(); + String exceptionMessage = "UI涓婁笅鏂囧厠闅嗘椂鍑虹幇閿欒锛屽師鍥狅細" + VciBaseUtil.getExceptionMessage(e); + logger.error(exceptionMessage); + return BaseResult.fail(exceptionMessage); + } + } + + + +} diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/WebBtmTypeController.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/WebBtmTypeController.java index 10c2d5c..f9490cd 100644 --- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/WebBtmTypeController.java +++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/WebBtmTypeController.java @@ -104,7 +104,6 @@ */ @GetMapping( "/getBizTypes") @VciBusinessLog(operateName = "涓氬姟绫诲瀷鍒楄〃(涓昏鐢ㄤ簬瀵硅瘽妗嗕娇鐢�)") - @VciUnCheckRight public BaseResult getBizTypes(String btmName){ try { return BaseResult.dataList(Arrays.asList(btmService.getBizTypes(btmName))); diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/OsBtmServiceI.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/OsBtmServiceI.java index 2d07b7a..8c21a3c 100644 --- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/OsBtmServiceI.java +++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/OsBtmServiceI.java @@ -60,6 +60,14 @@ BizType[] getBizTypes(String btmName) throws PLException; /** + * 涓氬姟绫诲瀷鍒楄〃鏌ヨ锛岄潪鏍戠粨鏋勶細鐢ㄤ簬UI瀹氫箟宸︿晶涓氬姟绫诲瀷鏌ヨ锛屽彧杩斿洖name鍜宭able + * @param btmName + * @return + * @throws PLException + */ + Tree getBizTree(String btmName) throws PLException; + + /** * 鏌ヨ鎵�鏈夌殑涓氬姟绫诲瀷鏄犲皠 * @return key 鏄笟鍔$殑鑻辨枃鍚嶇О鐨勫皬鍐� */ @@ -276,7 +284,7 @@ /** * 瀵煎嚭涓氬姟绫诲瀷 * oid 涓氬姟绫诲瀷鍚嶇О - * @return 鍒涘缓缁撴灉 + * @return */ void expData(String oid, HttpServletResponse response) throws PLException, IOException; diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/UIEngineServiceI.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/UIEngineServiceI.java index 4e768f8..40b4ec7 100644 --- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/UIEngineServiceI.java +++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/UIEngineServiceI.java @@ -134,7 +134,6 @@ */ UIActionVO actionDO2VO(PLAction action); - /** * 鏌ヨ鎵�鏈夌殑UI涓婁笅鏂� * @return 鏄剧ず瀵硅薄 @@ -209,5 +208,5 @@ // UIContentVO UIContentDO2VO(PLPageLayoutDefination pageLayoutDefination, boolean queryDetail); UIContentVO UIContentDO2VO(PLUILayout pageLayoutDefination, boolean queryDetail); -; + } 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 new file mode 100644 index 0000000..a554efb --- /dev/null +++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/UIManagerServiceI.java @@ -0,0 +1,62 @@ +package com.vci.web.service; + +import com.vci.corba.common.PLException; +import com.vci.corba.portal.data.PLUILayout; +import com.vci.pagemodel.PLUILayoutCloneVO; +import com.vci.starter.web.pagemodel.BaseQueryObject; +import com.vci.starter.web.pagemodel.DataGrid; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; + +/** + * @author ludc + * @date 2024/8/28 17:05 + */ +public interface UIManagerServiceI { + + /** + * 閫氳繃涓氬姟绫诲瀷name鏌ヨui涓婁笅鏂囷紝鏀寔鍒嗛〉 + * @param baseQueryObject + * @return + * @throws PLException + */ + DataGrid gridUIContextData(BaseQueryObject baseQueryObject) throws PLException; + + /** + * 缁欎笟鍔$被鍨嬩笅娣诲姞ui涓婁笅鏂� + * @param pluiLayout + * @return + * @throws PLException + */ + boolean saveUIContextData(PLUILayout pluiLayout) throws PLException; + + /** + * 淇敼涓氬姟绫诲瀷涓嬫坊鍔爑i涓婁笅鏂� + * @param pluiLayout + * @return + * @throws PLException + */ + boolean updateUIContextData(PLUILayout pluiLayout) throws PLException; + + /** + * 鏍规嵁涓婚敭鍜屼笟鍔$被鍨媜id鍒犻櫎ui涓婁笅鏂囨暟鎹� + * @return + */ + boolean delUIContextData(String[] oids) throws PLException; + + /** + * 鍏嬮殕ui涓婁笅鏂� + * @param pluiLayoutCloneVO + * @return + */ + boolean cloneUiContextData(PLUILayoutCloneVO pluiLayoutCloneVO) throws PLException; + + /** + * 瀵煎嚭ui涓婁笅鏂�(鍕鹃�夌殑瑕佸鍑虹殑鎺у埗鍖虹殑鏁版嵁) + * oids + * @return + */ + void expUiContextData(String[] oids, HttpServletResponse response) throws PLException, IOException; + +} diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsBtmServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsBtmServiceImpl.java index e46d9c8..f573031 100644 --- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsBtmServiceImpl.java +++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsBtmServiceImpl.java @@ -493,6 +493,42 @@ } /** + * 涓氬姟绫诲瀷鍒楄〃鏌ヨ锛岄潪鏍戠粨鏋勶細鐢ㄤ簬UI瀹氫箟宸︿晶涓氬姟绫诲瀷鏌ヨ锛屽彧杩斿洖name鍜宭able + * @param btmName + * @return + * @throws PLException + */ + @Override + public Tree getBizTree(String btmName) throws PLException { + if(null == btmName){ + btmName = ""; + } + Tree returnTree = new Tree(); + BizType[] bizTypes = platformClientUtil.getBtmService().getBizTypes(btmName); + if(Func.isEmpty(bizTypes)){ + return returnTree; + } + returnTree.setOid(""); + returnTree.setText("涓氬姟绫诲瀷"); + returnTree.setLeaf(false); + List<Tree> trees = new ArrayList<>(); + Arrays.stream(bizTypes).forEach(bizType -> { + Tree tree = new Tree(); + tree.setText(bizType.name + " " +bizType.label); + tree.setOid(bizType.oid); + tree.setLeaf(true); + tree.setParentName(bizType.fName); + Map<String, String> atrrMap = new HashMap<>(); + atrrMap.put("name",bizType.name); + atrrMap.put("lable",bizType.label); + tree.setAttributes(atrrMap); + trees.add(tree); + }); + returnTree.setChildren(trees); + return returnTree; + } + + /** * 鍙傜収涓氬姟绫诲瀷 * * @param conditionMap 鏌ヨ鏉′欢 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 new file mode 100644 index 0000000..9a1b63a --- /dev/null +++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIManagerServiceImpl.java @@ -0,0 +1,369 @@ +package com.vci.web.service.impl; + +import com.sun.jnlp.ApiDialog; +import com.vci.client.mw.ClientContextVariable; +import com.vci.common.utility.ObjectUtility; +import com.vci.corba.common.PLException; +import com.vci.corba.portal.PortalService; +import com.vci.corba.portal.data.*; +import com.vci.pagemodel.PLUILayoutCloneVO; +import com.vci.starter.web.exception.VciBaseException; +import com.vci.starter.web.pagemodel.BaseQueryObject; +import com.vci.starter.web.pagemodel.DataGrid; +import com.vci.starter.web.pagemodel.SessionInfo; +import com.vci.starter.web.util.VciBaseUtil; +import com.vci.starter.web.util.WebThreadLocalUtil; +import com.vci.web.service.UIManagerServiceI; +import com.vci.web.util.Func; +import com.vci.web.util.PlatformClientUtil; +import com.vci.web.util.UITools; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.util.Arrays; +import java.util.Comparator; +import java.util.List; +import java.util.Map; + +/** + * UI瀹氫箟鏈嶅姟鐣岄潰鐩稿叧鎺ュ彛 + * @author ludc + * @date 2024/8/28 17:05 + */ +@Service +public class UIManagerServiceImpl implements UIManagerServiceI { + + /** + * 骞冲彴鐨勮皟鐢ㄥ伐鍏风被 + */ + @Resource + private PlatformClientUtil platformClientUtil; + /** + * 鏃ュ織 + */ + private Logger logger = LoggerFactory.getLogger(getClass()); + + /** + * 鎺掑簭姣旇緝鍣� + */ + private Comparator<PLUILayout> pageLayoutComparator = new Comparator<PLUILayout>() { + @Override + public int compare(PLUILayout o1, PLUILayout o2) { + return o1.plCode.compareTo(o2.plCode); + } + }; + + /** + * 鏍规嵁涓氬姟绫诲瀷鍚嶆煡璇i涓婁笅鏂囨暟鎹� + * @param baseQueryObject + * @return + * @throws PLException + */ + @Override + public DataGrid gridUIContextData(BaseQueryObject baseQueryObject) throws PLException { + VciBaseUtil.alertNotNull(baseQueryObject,"鏉′欢瀵硅薄"); + int page = baseQueryObject.getPage(); + int limit = baseQueryObject.getLimit(); + Map<String, String> conditionMap = baseQueryObject.getConditionMap(); + String btmName = conditionMap.getOrDefault("btmName",""); + if(Func.isEmpty(conditionMap) || Func.isBlank(btmName)){ + throw new PLException("500",new String[]{"鏈幏鍙栧埌涓氬姟绫诲瀷鍚嶇О锛�"}); + } + String txtName = conditionMap.getOrDefault("txtName","").trim(); + String txtCode = conditionMap.getOrDefault("txtCode","").trim(); + PortalService.GetPLUILayoutsByRelatedTypeAndQueryInfoResult result = platformClientUtil.getUIService() + .getPLUILayoutsByRelatedTypeAndQueryInfo(btmName, txtName, txtCode, page, limit); + DataGrid<PLUILayout> dataGrid = new DataGrid<>(); + int total = (int)result.total; + dataGrid.setTotal(total); + dataGrid.setLimit(limit); + dataGrid.setPage(page); + PLUILayout[] res = result.returnValue; + Arrays.sort(res,pageLayoutComparator); + List<PLUILayout> pluiLayouts = Arrays.asList(res); + dataGrid.setData(pluiLayouts); + return dataGrid; + } + + /** + * 缁欎笟鍔$被鍨嬩笅娣诲姞ui涓婁笅鏂� + * @param pluiLayout + * @return + * @throws PLException + */ + @Override + public boolean saveUIContextData(PLUILayout pluiLayout) throws VciBaseException { + try { + //ui涓婁笅鏂囧璞℃牎楠� + canContinue(pluiLayout); + + String code = pluiLayout.plCode; + String name = pluiLayout.plName; + boolean isExist = nameOrCodeIsExist(pluiLayout, false); + //鏄惁瀛樺湪鏍¢獙 + if (isExist){ + throw new VciBaseException("涓婁笅鏂囩紪鐮佹垨鍚嶇О宸茬粡瀛樺湪锛岃妫�鏌ワ紒"); + } + + PLUILayout pld = new PLUILayout(); + pld.plOId = ObjectUtility.getNewObjectID36(); + pld.plCode = code; + pld.plName = name; + pld.plRelatedType = pluiLayout.plRelatedType; + pld.plDesc = pluiLayout.plDesc; + SessionInfo sessionInfo = WebThreadLocalUtil.getCurrentUserSessionInfoInThread(); + pld.plCreateUser = sessionInfo.getUserId(); + pld.plModifyUser = sessionInfo.getUserId(); + //瀵艰埅鍖� + pld.plIsShowForm = pluiLayout.plIsShowForm; + //鎺у埗鍖� + pld.plIsShowNavigator = pluiLayout.plIsShowNavigator; + //鎿嶄綔鍖� + pld.plIsShowTab = pluiLayout.plIsShowTab; + //鎵ц淇濆瓨 + return platformClientUtil.getUIService().savePLUILayout(pld); + } catch (PLException e) { + e.printStackTrace(); + String exceptionMessage = VciBaseUtil.getExceptionMessage(e); + logger.error(exceptionMessage); + throw new VciBaseException(exceptionMessage); + } + } + + /** + * 淇敼ui涓婁笅鏂� + * @param pluiLayout + * @return + * @throws PLException + */ + @Override + public boolean updateUIContextData(PLUILayout pluiLayout) throws VciBaseException { + this.canContinue(pluiLayout); + try { + String code = pluiLayout.plCode; + String name = pluiLayout.plName; + boolean isExist = nameOrCodeIsExist(pluiLayout, true); + if (isExist){ + throw new VciBaseException("涓婁笅鏂囩紪鐮佹垨鍚嶇О宸茬粡瀛樺湪锛岃妫�鏌ワ紒"); + } + + PLUILayout pld = new PLUILayout(); + pld.plOId = pluiLayout.plOId; + pld.plCode = code; + pld.plName = name; + pld.plRelatedType = pluiLayout.plRelatedType; + pld.plDesc = pluiLayout.plDesc; + pld.plCreateUser = pluiLayout.plCreateUser; + pld.plModifyUser = WebThreadLocalUtil.getCurrentUserSessionInfoInThread().getUserId(); + + //瀵艰埅鍖� + pld.plIsShowForm = pluiLayout.plIsShowForm; + //鎺у埗鍖� + pld.plIsShowNavigator = pluiLayout.plIsShowNavigator; + //鎿嶄綔鍖� + pld.plIsShowTab = pluiLayout.plIsShowTab; + //鎵ц淇敼 + return platformClientUtil.getUIService().updatePLUILayout(pld); + } catch (PLException e) { + e.printStackTrace(); + String exceptionMessage = VciBaseUtil.getExceptionMessage(e); + logger.error(exceptionMessage); + throw new VciBaseException(exceptionMessage); + } + } + + /** + * 鏍规嵁涓婚敭鍜屼笟鍔$被鍨媜id鍒犻櫎ui涓婁笅鏂囨暟鎹� + * @return + */ + @Override + public boolean delUIContextData(String[] oids) throws PLException { + VciBaseUtil.alertNotNull(oids,"寰呭垹闄ょ殑瀵硅薄鍒楄〃"); + //鍒犻櫎鏂规硶涓湁鍏宠仈鏁版嵁鍒犻櫎鐨勬搷浣滈�昏緫 + return platformClientUtil.getUIService().deletePLUILayoutByOidsForCascade(oids); + } + + /** + * 鍏嬮殕ui涓婁笅鏂囷紙鍏峰鍏宠仈鏁版嵁鐨勫厠闅嗭級 + * @param pluiLayoutCloneVO + * @return + */ + @Override + public boolean cloneUiContextData(PLUILayoutCloneVO pluiLayoutCloneVO) throws PLException { + VciBaseUtil.alertNotNull( + pluiLayoutCloneVO,"鍏嬮殕鍙傛暟瀵硅薄", + pluiLayoutCloneVO.getSourcePLUILayout(),"鍏嬮殕鐨勬簮瀵硅薄淇℃伅", + pluiLayoutCloneVO.getCloneName(),"鍏嬮殕鐨勫璞″悕绉�", + pluiLayoutCloneVO.getCloneContextCode(),"鍏嬮殕鐨勫璞′笂涓嬫枃缂栫爜" + ); + PLUILayout pluiLayout = new PLUILayout(); + PLUILayout sourcePLUILayout = pluiLayoutCloneVO.getSourcePLUILayout(); + //濡傛灉閫夋嫨鍏嬮殕鐩爣锛屽垯鍏嬮殕鍒伴�夋嫨鐨勭被鍨嬩笅锛屽鏋滄病鏈夐�夋嫨鍏嬮殕鐩爣锛屽垯鍏嬮殕鍒板綋鍓嶇被鍨嬩笅 + if(Func.isBlank(pluiLayoutCloneVO.getCloneTargetOid())){ + pluiLayout.plRelatedType = sourcePLUILayout.plRelatedType; + } + //鍏嬮殕鐨勫悕绉板拰ui涓婁笅鏂囩紪鍙锋煡閲� + String cloneName = pluiLayoutCloneVO.getCloneName(); + String cloneContextCode = pluiLayoutCloneVO.getCloneContextCode(); + pluiLayout.plOId = ObjectUtility.getNewObjectID36(); + pluiLayout.plName = cloneName; + pluiLayout.plCode = cloneContextCode; + pluiLayout.plIsShowTab = sourcePLUILayout.plIsShowTab; + pluiLayout.plIsShowNavigator = sourcePLUILayout.plIsShowNavigator; + pluiLayout.plIsShowForm = sourcePLUILayout.plIsShowForm; + pluiLayout.plDesc = sourcePLUILayout.plDesc; + SessionInfo sessionInfo = WebThreadLocalUtil.getCurrentUserSessionInfoInThread(); + pluiLayout.plCreateUser = sessionInfo.getUserId(); + pluiLayout.plModifyUser = sessionInfo.getUserId(); + //鍏嬮殕鐩爣涓媢i鍚嶇О鍜岀紪鍙锋煡閲� + this.checkCodeName(pluiLayout); + //1銆佸厛淇濆瓨ui涓婁笅鏂� + boolean res = platformClientUtil.getUIService().savePLUILayout(pluiLayout); + //2銆佸啀鑰冭檻瀛愯妭鐐圭殑鍏嬮殕 + PLTabPage[] pages = platformClientUtil.getUIService().getPLTabPagesByPageDefinationOId(sourcePLUILayout.plOId); //鎺у埗鍖鸿妭鐐瑰強鍏跺瓙鑺傜偣鐨勫厠闅� + if(pages == null){ + return true; + } + try { + for (PLTabPage page : pages) { + savePlpageLayoutDefinationRelation(page,pluiLayout.plOId); + } + return true; + }catch (Exception e){ + e.printStackTrace(); + String exceptionMessage = VciBaseUtil.getExceptionMessage(e); + logger.error(exceptionMessage); + throw new VciBaseException(exceptionMessage); + } + } + + @Override + public void expUiContextData(String[] oids, HttpServletResponse response) throws PLException, IOException { + + } + + /** + * 鎺у埗鍖鸿妭鐐瑰強鍏跺瓙鑺傜偣鐨勫厠闅� + * @param obj + */ + private void savePlpageLayoutDefinationRelation(Object obj,String plUILayoutId) { + PLTabPage tabPage = (PLTabPage)obj; + try { + + PLPageDefination[] pLPageDefinations = platformClientUtil.getUIService().getPLPageDefinationsByPageContextOId(tabPage.plOId); + + tabPage.plOId = ObjectUtility.getNewObjectID36(); + tabPage.plContextOId = plUILayoutId; + //add by caill start 2016.8.15 瀵艰埅鍖恒�佹帶鍒跺尯銆佹搷浣滃尯鍦ㄦ病鏈夊瓙鑺傜偣鐨勬儏鍐典笅鐨勫厠闅� + if(pLPageDefinations.length==0){ + platformClientUtil.getUIService().savePLTabPage(tabPage); + } + //add by caill end + for(int j=0;j<pLPageDefinations.length;j++){ + PLPageDefination plPageDef = pLPageDefinations[j]; + + platformClientUtil.getUIService().savePLTabPage(tabPage); + PLTabButton[] pLTabButtons = platformClientUtil.getUIService().getPLTabButtonsByTableOId(plPageDef.plOId); + + plPageDef.plOId = ObjectUtility.getNewObjectID36(); + plPageDef.plTabPageOId = tabPage.plOId; + platformClientUtil.getUIService().savePLPageDefination(plPageDef); + + for(int b=0;b<pLTabButtons.length;b++){ + PLTabButton plTabButton = pLTabButtons[b]; + PLCommandParameter[] pLCommandParameters = platformClientUtil.getUIService().getPLCommandParametersByCommandOId(plTabButton.plOId); + + plTabButton.plOId = ObjectUtility.getNewObjectID36(); + plTabButton.plTableOId = plPageDef.plOId; + platformClientUtil.getUIService().savePLTabButton(plTabButton); + + for(int c=0;c<pLCommandParameters.length;c++){ + final PLCommandParameter plCommandParameter = pLCommandParameters[c]; + plCommandParameter.plOId = ObjectUtility.getNewObjectID36(); + plCommandParameter.plCommandOId = plTabButton.plOId; + platformClientUtil.getUIService().savePLCommandParameter(plCommandParameter); + } + } + } + } catch (PLException e) { + e.printStackTrace(); + } + } + + /** + * 鏈仛鍒ょ┖澶勭悊锛岃皟鐢ㄥ墠璇蜂繚璇乷bj涓嶄负绌� + * @param obj + * @throws PLException + */ + public void checkCodeName(PLUILayout obj) throws PLException { + PLUILayout[] plUILayouts = platformClientUtil.getUIService().getPLUILayoutsByRelatedType(obj.plRelatedType); + int length = plUILayouts.length; + String code = obj.plCode; + String name = obj.plName; + + if (Func.isNotBlank(name) || Func.isNotBlank(code)){ + for (int i =0;i<length;i++){//寰幆鑺傜偣鐨刄I涓婃枃鍜屽悕绉� + if (plUILayouts[i].plCode.equalsIgnoreCase(code) || plUILayouts[i].plName.equals(name)){ + throw new VciBaseException("涓氬姟绫诲瀷涓婾I鍚嶇О鎴朥I涓婁笅鏂囩紪鐮佸凡瀛樺湪锛�"); + } + } + } + } + + /** + * ui涓婁笅鏂囨柊澧炰慨鏀瑰墠妫�鏌� + * @param pluiLayout + */ + private void canContinue(PLUILayout pluiLayout){ + String code = pluiLayout.plCode; + String name = pluiLayout.plName; + if(Func.isBlank(code)){ + throw new VciBaseException("涓婁笅鏂囩紪鐮佷笉鑳戒负绌猴紒"); + } + if(Func.isBlank(name)){ + throw new VciBaseException("鍚嶇О涓嶈兘涓虹┖锛�"); + } + if((pluiLayout.plIsShowNavigator == 0) && (pluiLayout.plIsShowForm == 0) && (pluiLayout.plIsShowTab == 0)){ + throw new VciBaseException("涓婁笅鏂囪嚦灏戣鍖呭惈涓�涓尯鍩燂紒"); + } + } + + /** + * 妫�鏌ュ悕绉版垨鑰呯紪鐮佹槸鍚﹀凡瀛樺湪 + * @param pluiLayout + * @param isEdit + * @return + * @throws VciBaseException + */ + private boolean nameOrCodeIsExist(PLUILayout pluiLayout, boolean isEdit) throws PLException { + boolean res = false; + //鏌ヨ鍚屼竴涓氬姟绫诲瀷涓嬬殑ui涓婁笅鏂囷紝鐒跺悗鏌ラ噸 + PLUILayout[] plpagelayoutdefinations = platformClientUtil.getUIService().getPLUILayoutsByRelatedType(pluiLayout.plRelatedType); + int length = plpagelayoutdefinations.length; + for (int i =0;i<length;i++){ + String code = plpagelayoutdefinations[i].plCode; + String name = plpagelayoutdefinations[i].plName; + String ids = plpagelayoutdefinations[i].plOId; + if(isEdit){ + if(!ids.equals(pluiLayout.plOId)){ + if (pluiLayout.plCode.equalsIgnoreCase(code) || pluiLayout.plName.equals(name)){ + res = true; + break; + } + } + } + else { + if (code.equalsIgnoreCase(code) || name.equals(name)){ + res = true; + break; + } + } + } + return res; + } + +} -- Gitblit v1.9.3