From 8bb85606a294d2c6d2d4840d42a62744d7ef909b Mon Sep 17 00:00:00 2001
From: 田源 <lastanimals@163.com>
Date: 星期五, 27 九月 2024 09:51:54 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIManagerServiceImpl.java | 2658 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 2,595 insertions(+), 63 deletions(-)
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 4dc9c1c..da050fc 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
@@ -1,39 +1,48 @@
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.common.data.UserEntityInfo;
import com.vci.corba.framework.data.RoleRightInfo;
import com.vci.corba.omd.btm.BizType;
+import com.vci.corba.omd.qtm.QTInfo;
import com.vci.corba.portal.PortalService;
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.pagemodel.OsBtmTypeVO;
-import com.vci.pagemodel.PLUILayoutCloneVO;
-import com.vci.pagemodel.RoleRightVO;
+import com.vci.model.PLDefination;
+import com.vci.pagemodel.*;
+import com.vci.starter.poi.bo.*;
+import com.vci.starter.poi.util.ExcelUtil;
import com.vci.starter.web.exception.VciBaseException;
import com.vci.starter.web.pagemodel.*;
-import com.vci.starter.web.util.VciBaseUtil;
-import com.vci.starter.web.util.VciDateUtil;
-import com.vci.starter.web.util.WebThreadLocalUtil;
+import com.vci.starter.web.pagemodel.BaseQueryObject;
+import com.vci.starter.web.pagemodel.BaseResult;
+import com.vci.starter.web.pagemodel.DataGrid;
+import com.vci.starter.web.pagemodel.SessionInfo;
+import com.vci.starter.web.util.*;
+import com.vci.starter.web.redis.RedisService;
import com.vci.web.service.OsBtmServiceI;
import com.vci.web.service.UIManagerServiceI;
import com.vci.web.util.*;
+import com.vci.web.util.BeanUtil;
import org.apache.commons.lang3.StringUtils;
-import org.apache.poi.ss.formula.functions.T;
+import com.vci.web.util.Func;
+import com.vci.web.util.PlatformClientUtil;
+import com.vci.web.util.UITools;
+import lombok.AllArgsConstructor;
+import lombok.NoArgsConstructor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
-
import javax.annotation.Resource;
-import javax.servlet.http.HttpServletResponse;
-import java.io.IOException;
+import java.io.File;
import java.util.*;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicInteger;
import java.util.stream.Collectors;
-import java.util.stream.Stream;
+import java.util.regex.Pattern;
/**
* UI瀹氫箟鏈嶅姟鐣岄潰鐩稿叧鎺ュ彛
@@ -48,11 +57,18 @@
*/
@Resource
private PlatformClientUtil platformClientUtil;
+
/**
- * 瑙掕壊
+ * 缂撳瓨宸ュ叿
*/
@Resource
- private SmRoleQueryServiceI smRoleQueryServiceI;
+ private RedisService redisService;
+
+ /***
+ * 鏄惁鏄鐞嗗憳
+ */
+ @Autowired
+ RightControlUtil rightControlUtil;
/**
* 涓氬姟绫诲瀷
@@ -66,12 +82,27 @@
private Logger logger = LoggerFactory.getLogger(getClass());
/**
+ * 瀵煎叆鏁版嵁鐨剆heet闆嗗悎
+ */
+ private final String IMPORTUIKEY = "importUIKey:";
+
+ /**
* 鎺掑簭姣旇緝鍣�
*/
private Comparator<PLUILayout> pageLayoutComparator = new Comparator<PLUILayout>() {
@Override
public int compare(PLUILayout o1, PLUILayout o2) {
return o1.plCode.compareTo(o2.plCode);
+ }
+ };
+
+ /**
+ * 鎺掑簭姣旇緝鍣�
+ */
+ private Comparator<PLDefinationVO> pageDefinationComparator = new Comparator<PLDefinationVO>() {
+ @Override
+ public int compare(PLDefinationVO o1, PLDefinationVO o2) {
+ return new Integer(o1.getSeq()).compareTo(new Integer(o2.getSeq()));
}
};
@@ -117,7 +148,7 @@
public List<PLUILayout> getUIContextDataByBtName(String btemName,String context) throws PLException {
VciBaseUtil.alertNotNull(btemName,"涓氬姟绫诲瀷");
List<PLUILayout> pluiLayoutList=new ArrayList<>();
- List<String> contextList= VciBaseUtil.str2List(context);
+ List<String> contextList= new ArrayList<>();
if(StringUtils.isNotBlank(context)){
contextList=VciBaseUtil.str2List(context);
}else{
@@ -149,7 +180,6 @@
try {
//ui涓婁笅鏂囧璞℃牎楠�
canContinue(pluiLayout);
-
String code = pluiLayout.plCode;
String name = pluiLayout.plName;
boolean isExist = nameOrCodeIsExist(pluiLayout, false);
@@ -230,9 +260,9 @@
* @return
*/
@Override
- public boolean delUIContextData(String[] oids) throws PLException {
+ public boolean delUIContextData(String[] oids,String plRelatedType) throws PLException {
VciBaseUtil.alertNotNull(oids,"寰呭垹闄ょ殑瀵硅薄鍒楄〃");
- //鍒犻櫎鏂规硶涓湁鍏宠仈鏁版嵁鍒犻櫎鐨勬搷浣滈�昏緫
+ //鍒犻櫎鏂规硶涓湁鍏宠仈鏁版嵁鍒犻櫎鐨勬搷浣滈�昏緫,浣嗘槸杩欎釜鏂规硶瀛樺湪闂灏辨槸鍒犻櫎鐨勬暟鎹苟娌℃湁灏嗙紦瀛樼殑涓滆タ娓呯悊骞插噣
return platformClientUtil.getUIService().deletePLUILayoutByOidsForCascade(oids);
}
@@ -242,7 +272,7 @@
* @return
*/
@Override
- public boolean cloneUiContextData(PLUILayoutCloneVO pluiLayoutCloneVO) throws PLException {
+ public boolean cloneUIContextData(PLUILayoutCloneVO pluiLayoutCloneVO) throws PLException {
VciBaseUtil.alertNotNull(
pluiLayoutCloneVO,"鍏嬮殕鍙傛暟瀵硅薄",
pluiLayoutCloneVO.getSourcePLUILayout(),"鍏嬮殕鐨勬簮瀵硅薄淇℃伅",
@@ -251,8 +281,9 @@
);
PLUILayout pluiLayout = new PLUILayout();
PLUILayout sourcePLUILayout = pluiLayoutCloneVO.getSourcePLUILayout();
+ pluiLayout.plRelatedType = pluiLayoutCloneVO.getCloneTargetName();
//濡傛灉閫夋嫨鍏嬮殕鐩爣锛屽垯鍏嬮殕鍒伴�夋嫨鐨勭被鍨嬩笅锛屽鏋滄病鏈夐�夋嫨鍏嬮殕鐩爣锛屽垯鍏嬮殕鍒板綋鍓嶇被鍨嬩笅
- if(Func.isBlank(pluiLayoutCloneVO.getCloneTargetOid())){
+ if(Func.isBlank(pluiLayoutCloneVO.getCloneTargetName())){
pluiLayout.plRelatedType = sourcePLUILayout.plRelatedType;
}
//鍏嬮殕鐨勫悕绉板拰ui涓婁笅鏂囩紪鍙锋煡閲�
@@ -272,6 +303,9 @@
this.checkCodeName(pluiLayout);
//1銆佸厛淇濆瓨ui涓婁笅鏂�
boolean res = platformClientUtil.getUIService().savePLUILayout(pluiLayout);
+ if(!res){
+ return res;
+ }
//2銆佸啀鑰冭檻瀛愯妭鐐圭殑鍏嬮殕
PLTabPage[] pages = platformClientUtil.getUIService().getPLTabPagesByPageDefinationOId(sourcePLUILayout.plOId); //鎺у埗鍖鸿妭鐐瑰強鍏跺瓙鑺傜偣鐨勫厠闅�
if(pages == null){
@@ -290,9 +324,1347 @@
}
}
+ /**
+ * 鏍规嵁鍕鹃�夌殑鏉′欢鑾峰彇闇�瑕佸鍑虹殑ui涓婁笅鏂囨爲
+ * @param expDatas
+ * @return
+ */
@Override
- public void expUiContextData(String[] oids, HttpServletResponse response) throws PLException, IOException {
+ public Tree getExpContextTree(List<String> expDatas) {
+ VciBaseUtil.alertNotNull(expDatas,"瀵煎嚭鏌ヨ鍒楄〃");
+ Tree tree = new Tree();
+ String newObjectID36 = ObjectUtility.getNewObjectID36();
+ tree.setOid(newObjectID36);
+ tree.setText("鍖哄煙");
+ tree.setLevel(0);
+ List<Tree> treeList = new ArrayList<>();
+ expDatas.stream().forEach(oid->{
+ try {
+ PLUILayout pluiLayout = platformClientUtil.getUIService().getPLUILayoutById(oid);
+ if(Func.isNotEmpty(pluiLayout) && Func.isNotBlank(pluiLayout.plOId)){
+ Tree tree1 = new Tree();
+ tree1.setText(pluiLayout.plName);
+ tree1.setOid(pluiLayout.plOId);
+ tree1.setLevel(1);
+ tree1.setParentId(newObjectID36);
+ //鏌ヨ
+ PLTabPage[] plTabPages = platformClientUtil.getUIService().getPLTabPagesByPageDefinationOId(pluiLayout.plOId);
+ List<Tree> treeChildrens = new ArrayList<>();
+ Arrays.stream(plTabPages).forEach(item->{
+ Tree tree2 = new Tree();
+ tree2.setLeaf(true);
+ tree2.setOid(item.plOId);
+ tree2.setText(item.plName);
+ tree2.setLevel(2);
+ tree2.setParentId(item.plContextOId);
+ treeChildrens.add(tree2);
+ });
+ tree1.setChildren(treeChildrens);
+ treeList.add(tree1);
+ }
+ } catch (PLException e) {
+ e.printStackTrace();
+ }
+ });
+ tree.setChildren(treeList);
+ return tree;
+ }
+
+ /**
+ * 瀵煎嚭ui涓婁笅鏂�(鍕鹃�夌殑瑕佸鍑虹殑鎺у埗鍖虹殑鏁版嵁)
+ * oids
+ * @return
+ */
+ @Override
+ public String expUIContextData(Map<String,String> expConditionMap) throws PLException {
+ if(Func.isEmpty(expConditionMap)){
+ throw new PLException("500",new String[]{"璇峰嬀閫夎瀵煎嚭鐨刄I涓婁笅鏂囨暟鎹�!"});
+ }
+ //鐣岄潰娌′紶鍚嶇О锛屼娇鐢ㄩ粯璁ゅ鍑哄悕绉�
+ String exportFileName = "UI涓婁笅鏂囧鍑篲" + Func.format(new Date(),"yyyy-MM-dd HHmmss.sss");
+ //璁剧疆鍒楀悕
+ /*List<String> columns = Arrays.asList(
+ "鎵�灞炰笟鍔$被鍨�","鍚嶇О", "UI涓婁笅鏂�", "瀵艰埅鍖�", "鎺у埗鍖�","鎿嶄綔鍖�",
+ "椤电搴忓彿","鍖哄煙缂栫爜","鍖哄煙鍚嶇О","鏄惁鍚敤","鏄剧ず琛ㄨ揪寮�", "UI瑙f瀽绫�",
+ "鎵╁睍灞炴��", "鎻忚堪","椤甸潰璁捐淇℃伅","椤甸潰涓嬮厤缃殑鎸夐挳"
+ );*/
+
+ //鍐檈xcel
+ String excelPath = LocalFileUtil.getDefaultTempFolder() + File.separator + exportFileName + ".xls";
+ try {
+ new File(excelPath).createNewFile();
+ } catch (Throwable e) {
+ throw new VciBaseException(LangBaseUtil.getErrorMsg(e), new String[]{excelPath}, e);
+ }
+ //璁剧疆鍒�
+ List<WriteExcelData> pldDataList = new ArrayList<>();
+ List<WriteExcelData> tpDataList = new ArrayList<>();
+ List<WriteExcelData> pdDataList = new ArrayList<>();
+ List<WriteExcelData> tbDataList = new ArrayList<>();
+ List<WriteExcelData> cpDataList = new ArrayList<>();
+ //璁剧疆鍒楀ご
+ /*for (int index = 0; index < columns.size(); index++) {
+ excelDataList.add(new WriteExcelData(0,index, columns.get(index)));
+ }*/
+ AtomicInteger pldRow = new AtomicInteger(0);
+ AtomicInteger tpRow = new AtomicInteger(0);
+ AtomicInteger pdRow = new AtomicInteger(0);
+ AtomicInteger tbRow = new AtomicInteger(0);
+ AtomicInteger cpRow = new AtomicInteger(0);
+
+ expConditionMap.entrySet().stream().forEach(item->{
+ //key瀛樻斁鐨剈i涓婁笅鏂囩殑id
+ try {
+ PLUILayout pluiLayout = platformClientUtil.getUIService().getPLUILayoutById(item.getKey());
+ pldDataList.add(new WriteExcelData(pldRow.get(),0, pluiLayout.plOId));
+ pldDataList.add(new WriteExcelData(pldRow.get(),1, pluiLayout.plCode));
+ pldDataList.add(new WriteExcelData(pldRow.get(),2, pluiLayout.plName));
+ pldDataList.add(new WriteExcelData(pldRow.get(),3, pluiLayout.plRelatedType));
+ pldDataList.add(new WriteExcelData(pldRow.get(),4, pluiLayout.plIsShowForm));
+ pldDataList.add(new WriteExcelData(pldRow.get(),5, pluiLayout.plIsShowNavigator));
+ pldDataList.add(new WriteExcelData(pldRow.get(),6, pluiLayout.plIsShowTab));
+ pldRow.getAndIncrement();
+
+ //value涓瓨鏀剧殑澶氫釜浠ラ�楀彿闂撮殧鐨勯〉绛緄d,閫氳繃杩欎釜id鏌ヨ鍑哄叾涓嬬殑椤甸潰璁捐鍜屾寜閽厤缃�
+ List<String> plTabPageOIds = Arrays.asList(item.getValue().split(","));
+ if(Func.isNotEmpty(pluiLayout) && Func.isNotBlank(pluiLayout.plOId) && Func.isNotEmpty(plTabPageOIds)){
+ PLTabPage[] plTabPages = platformClientUtil.getUIService().getPLTabPagesByPageDefinationOId(pluiLayout.plOId);
+ List<PLTabPage> filterTabPages = Arrays.stream(plTabPages).filter(plTabPage -> plTabPageOIds.contains(plTabPage.plOId)).collect(Collectors.toList());
+ filterTabPages.stream().forEach(tabPage->{
+ //鍖哄煙瀹氫箟
+ tpDataList.add(new WriteExcelData(tpRow.get(),0, tabPage.plOId));
+ tpDataList.add(new WriteExcelData(tpRow.get(),1, tabPage.plSeq));
+ tpDataList.add(new WriteExcelData(tpRow.get(),2, tabPage.plCode));
+ tpDataList.add(new WriteExcelData(tpRow.get(),3, tabPage.plLabel));
+ tpDataList.add(new WriteExcelData(tpRow.get(),4, tabPage.plName));
+ tpDataList.add(new WriteExcelData(tpRow.get(),5, tabPage.plContextOId));
+ tpDataList.add(new WriteExcelData(tpRow.get(),6, tabPage.plAreaType));
+ tpDataList.add(new WriteExcelData(tpRow.get(),7, tabPage.plIsOpen));
+ tpDataList.add(new WriteExcelData(tpRow.get(),8, tabPage.plOpenExpression));
+ tpDataList.add(new WriteExcelData(tpRow.get(),9, tabPage.plUIParser));
+ tpDataList.add(new WriteExcelData(tpRow.get(),10, tabPage.plExtAttr));
+ tpDataList.add(new WriteExcelData(tpRow.get(),11, tabPage.plDesc));
+ tpDataList.add(new WriteExcelData(tpRow.get(),12, tabPage.plLicensOrs));
+ tpRow.getAndIncrement();
+ try {
+ PLPageDefination[] plPageDefinations = platformClientUtil.getUIService().getPLPageDefinationsByPageContextOId(tabPage.plOId);
+ if(Func.isNotEmpty(plPageDefinations)){
+ //List<PLTabButtonVO> tabButtonsTotal = new ArrayList<>();
+ Arrays.stream(plPageDefinations).forEach(plPageDefination->{
+ pdDataList.add(new WriteExcelData(pdRow.get(),0, plPageDefination.plOId));
+ pdDataList.add(new WriteExcelData(pdRow.get(),1, plPageDefination.plTabPageOId));
+ pdDataList.add(new WriteExcelData(pdRow.get(),2, plPageDefination.plType));
+ pdDataList.add(new WriteExcelData(pdRow.get(),3, plPageDefination.name));
+ pdDataList.add(new WriteExcelData(pdRow.get(),4, plPageDefination.desc));
+ pdDataList.add(new WriteExcelData(pdRow.get(),5, plPageDefination.seq));
+ pdDataList.add(new WriteExcelData(pdRow.get(),6, plPageDefination.plDefination));
+ pdRow.getAndIncrement();
+ //鏌ヨ鎸夐挳
+ try {
+ PLTabButton[] tabButtons = platformClientUtil.getUIService().getPLTabButtonsByTableOId(plPageDefination.plOId);
+ for (PLTabButton tabButton:tabButtons){
+ tbDataList.add(new WriteExcelData(tbRow.get(),0, tabButton.plOId));
+ tbDataList.add(new WriteExcelData(tbRow.get(),1, tabButton.plTableOId));
+ tbDataList.add(new WriteExcelData(tbRow.get(),2, tabButton.plPageOId));
+ tbDataList.add(new WriteExcelData(tbRow.get(),3, tabButton.plActionOId));
+ tbDataList.add(new WriteExcelData(tbRow.get(),4, tabButton.plLabel));
+ tbDataList.add(new WriteExcelData(tbRow.get(),5, tabButton.plAreaType));
+ tbDataList.add(new WriteExcelData(tbRow.get(),6, tabButton.plDesc));
+ tbDataList.add(new WriteExcelData(tbRow.get(),7, tabButton.plSeq));
+ tbDataList.add(new WriteExcelData(tbRow.get(),8, tabButton.plParentOid));
+ tbDataList.add(new WriteExcelData(tbRow.get(),9, tabButton.displayMode));
+ tbDataList.add(new WriteExcelData(tbRow.get(),10, tabButton.iconPath));
+ tbDataList.add(new WriteExcelData(tbRow.get(),11, tabButton.authorization));
+ tbDataList.add(new WriteExcelData(tbRow.get(),12, tabButton.show));
+ tbRow.getAndIncrement();
+ PLCommandParameter[] parameters = platformClientUtil.getUIService().getPLCommandParametersByCommandOId(tabButton.plOId);
+ if(Func.isNotEmpty(parameters)){
+ Arrays.stream(parameters).forEach(param->{
+ cpDataList.add(new WriteExcelData(cpRow.get(),0, param.plOId));
+ cpDataList.add(new WriteExcelData(cpRow.get(),1, param.plCommandOId));
+ cpDataList.add(new WriteExcelData(cpRow.get(),2, param.plKey));
+ cpDataList.add(new WriteExcelData(cpRow.get(),3, param.plValue));
+ cpRow.getAndIncrement();
+ });
+ }
+ }
+ } catch (PLException e) {
+ e.printStackTrace();
+ }
+ });
+ }
+ } catch (PLException e) {
+ e.printStackTrace();
+ }
+ });
+ }
+ } catch (PLException e) {
+ e.printStackTrace();
+ }
+ });
+ WriteExcelOption excelOption = new WriteExcelOption();
+ excelOption.addSheetDataList("PlpageLayoutDefnation",pldDataList);
+ excelOption.addSheetDataList("Pltabpage",tpDataList);
+ excelOption.addSheetDataList("Plpagedefination",pdDataList);
+ excelOption.addSheetDataList("Pltabbutton",tbDataList);
+ excelOption.addSheetDataList("PlcommondParam",cpDataList);
+ ExcelUtil.writeDataToFile(excelPath, excelOption);
+ return excelPath;
+ }
+
+ /**
+ * 瀵煎叆UI涓婁笅鏂�
+ * @param file
+ * @param isCovered 鏄惁瑕嗙洊
+ * @param selectBtm 閫夋嫨鐨勪笟鍔$被鍨�
+ * @return
+ */
+ @Override
+ public BaseResult impUIContextData(File file,boolean isCovered,String selectBtm) {
+ if(!isCovered){
+ VciBaseUtil.alertNotNull(file,"excel鏂囦欢");
+ if(!file.exists()){
+ throw new VciBaseException("瀵煎叆鐨別xcel鏂囦欢涓嶅瓨鍦�,{0}",new String[]{file.getPath()});
+ }
+ }
+
+ try {
+ List<SheetDataSet> sheetDataSets = null;
+ SessionInfo sessionInfo = WebThreadLocalUtil.getCurrentUserSessionInfoInThread();
+ //鏄鐩栨搷浣滐紝鎵�浠ョ洿鎺ヨ鍙�
+ if(isCovered){
+ sheetDataSets = redisService.getCacheList(IMPORTUIKEY + sessionInfo.getUserId());
+ if(Func.isEmpty(sheetDataSets)){
+ throw new VciBaseException("浠庣紦瀛樹腑鏈幏鍙栧埌瀵煎叆鐨勬暟鎹紝璇峰埛鏂板悗閲嶈瘯锛侊紒");
+ }
+ }else{
+ //璇诲彇excel琛�
+ ReadExcelOption readExcelOption = new ReadExcelOption();
+ readExcelOption.setReadAllSheet(true); //璇诲彇鍏ㄩ儴鐨剆heet
+ sheetDataSets = ExcelUtil.readDataObjectFromExcel(file,SheetDataSet.class,readExcelOption);
+ }
+
+ PLUILayout[] plpagelayoutdefinations = null;
+
+ SheetDataSet plpagelayoutdefnationsheet = sheetDataSets.get(0);
+ SheetDataSet pltabpagesheet = sheetDataSets.get(1);
+ SheetDataSet plpagedefinationsheet = sheetDataSets.get(2);
+ SheetDataSet pltabbuttonsheet = sheetDataSets.get(3);
+ SheetDataSet plcommondparamsheet = sheetDataSets.get(4);
+
+ Map<PLUILayout,List<PLTabPage>> pdMap = new HashMap<>();
+ Map<PLTabPage,List<PLPageDefination>> tdMap = new HashMap<>();
+ Map<PLPageDefination,List<PLTabButton>> dbMap = new HashMap<>();
+ Map<PLTabButton,List<PLCommandParameter>> bcMap = new HashMap<>();
+
+ List<PLUILayout> plpagelayoutdefinationList = new ArrayList<>();
+ List<PLTabPage> pltabpagelist = new ArrayList<>();
+ List<PLPageDefination> plpagedefinationlist = new ArrayList<>();
+ List<PLTabButton> pltabbuttonlist = new ArrayList<>();
+ List<PLCommandParameter> plcommandparameterlist = new ArrayList<>();
+
+ /*StringBuffer checkplpagelayoutdefination = new StringBuffer();
+ StringBuffer checkplpagelayoutdefinationPlcode = new StringBuffer();*/
+ StringBuffer plActionIDNulls = new StringBuffer();
+
+ //add by caill start 鍒濆鍖栨爣璁�
+ int count=0;
+ int preCount=0;
+ String preOID="";
+ String doublePreOID="";
+ String plpageLayoutDefinationId="";
+ String plPageContextOId="";
+ String plCommandOId="";
+ String plTableOId="";
+
+ //add by caill end
+ PLAction[] allPLAction = platformClientUtil.getUIService().getAllPLAction();
+ Map<String,String> relation = null;
+ List<SheetRowData> rowData = plpagelayoutdefnationsheet.getRowData();
+ for(int i=0; i<rowData.size(); i++){
+ pltabpagelist = new ArrayList<PLTabPage>();
+ PLUILayout p = new PLUILayout();
+ //HSSFRow readrow = plpagelayoutdefnationsheet.getRowData();
+ Map<Integer, String> dataMap = rowData.get(i).getData();
+ if(Func.isEmpty(dataMap)){
+ break;
+ }
+ //鏍规嵁涓氬姟绫诲瀷鏌ヨui涓婁笅鏂�
+ plpagelayoutdefinations = platformClientUtil.getUIService().getPLUILayoutsByRelatedType(selectBtm);
+
+ p.plOId = ObjectUtility.getNewObjectID36();
+ p.plCode = dataMap.get(1);
+ p.plName = dataMap.get(2);
+ //add by caill start
+ //閬嶅巻UI鍚嶇О
+ for(PLUILayout pd : plpagelayoutdefinations){
+ if(pd.plName.equals(p.plName) && !isCovered){
+ //濡傛灉鐢ㄦ埛閫夋嫨瑕嗙洊锛岀浜屾璋冪敤灏变笉浼氫紶瀵煎叆鏂囦欢锛屾墍浠ヨ繖閲屽瓨鍏ョ紦瀛�
+ redisService.setCacheList(IMPORTUIKEY+sessionInfo.getUserId(),sheetDataSets);
+ //璁剧疆杩囨湡鏃堕棿涓�5鍒嗛挓锛屽洜涓轰竴鑸儏鍐典笅涓嶄細璇存槸绛夊お涔�
+ redisService.expire(IMPORTUIKEY+sessionInfo.getUserId(),5, TimeUnit.MINUTES);
+ throw new VciBaseException(pd.plName+"鍚嶇О宸茬粡瀛樺湪,鏄惁瑕嗙洊?");
+ }
+ //鏍规嵁UI涓婁笅鏂囧仛鍒ゆ柇
+ if(pd.plCode.equals(p.plCode)){
+ count=1;
+ preOID=pd.plOId; //濡傛灉UI涓婁笅鏂囩浉鍚岋紝灏辨妸绯荤粺涓殑id璧嬪�肩粰鏂板鍏ョ殑id
+ p.plOId=pd.plOId;
+ }
+ }
+ //add by caill end
+ plpageLayoutDefinationId = dataMap.get(0);
+ String name = dataMap.get(3);
+ p.plRelatedType = dataMap.get(3);
+ p.plIsShowNavigator = Short.parseShort(dataMap.get(4));
+ p.plIsShowTab = Short.parseShort(dataMap.get(5));
+ p.plIsShowForm = Short.parseShort(dataMap.get(6));
+ //閫夋嫨鐨勫拰瀵煎叆鐨勪笟鍔$被鍨嬭妭鐐逛笉涓�鑷�
+ if(!selectBtm.equals(name)){
+ throw new VciBaseException("璇烽�夋嫨瑕佸鍏ョ殑绫诲瀷鑺傜偣鍚嶇О锛�");
+ }
+
+ plpagelayoutdefinationList.add(p);
+
+ //鍖哄煙瀹氫箟sheet澶勭悊
+ List<SheetRowData> tabPageRowData = pltabpagesheet.getRowData();
+ if(Func.isNotEmpty(tabPageRowData)){
+ for(int j=0; j<tabPageRowData.size(); j++){
+ plpagedefinationlist = new ArrayList<PLPageDefination>();
+ PLTabPage pt = new PLTabPage();
+ Map<Integer, String> tabPageDataMap = tabPageRowData.get(j).getData();
+ if(Func.isEmpty(tabPageDataMap)){
+ break;
+ }
+ pt.plOId = ObjectUtility.getNewObjectID36();
+ pt.plCode = tabPageDataMap.get(2);
+ pt.plName = tabPageDataMap.get(4);
+ //add by caill start
+ if(count==1) {
+ PLTabPage[] PLTabPages = platformClientUtil.getUIService().getPLTabPagesByPageDefinationOId(preOID);
+ //閬嶅巻鎺у埗鍖鸿〃鏍�
+ for(PLTabPage pl : PLTabPages){
+ if(pl.plCode.equals(pt.plCode)){
+ pt.plOId=pl.plOId; //濡傛灉鎺у埗鍖鸿〃鏍肩殑缂栫爜鍜屽鍏ョ殑缂栫爜涓�鏍凤紝灏辨妸鎺у埗鍖篿d璧嬪�肩粰鏂板鍏ョ殑id
+ preCount=1;
+ doublePreOID=pl.plOId;
+ }
+ }
+ }
+ //add by caill end
+ pt.plSeq = Short.parseShort(tabPageDataMap.get(1));
+ pt.plLabel = tabPageDataMap.get(3);
+ pt.plContextOId = tabPageDataMap.get(5);
+ pt.plAreaType = Short.parseShort(tabPageDataMap.get(6));
+ pt.plIsOpen = Short.parseShort(tabPageDataMap.get(7));
+ pt.plOpenExpression = tabPageDataMap.get(8);
+ pt.plUIParser = tabPageDataMap.get(9);
+ pt.plExtAttr = tabPageDataMap.get(10);
+ pt.plDesc = tabPageDataMap.get(11);
+ pt.plLicensOrs = tabPageDataMap.get(12);
+ plPageContextOId = tabPageDataMap.get(5);
+ if(pt.plContextOId.equals(plpageLayoutDefinationId)){
+ pt.plContextOId = p.plOId;
+ pltabpagelist.add(pt);
+ //椤甸潰璁捐澶勭悊
+ List<SheetRowData> pagedefinationRowData = plpagedefinationsheet.getRowData();
+ if(Func.isNotEmpty(pagedefinationRowData)){
+ for(int k=0;k<pagedefinationRowData.size();k++){
+ pltabbuttonlist = new ArrayList<>();
+ PLPageDefination plpagedefination = new PLPageDefination();
+ Map<Integer, String> pagedefinationDataMap = pagedefinationRowData.get(k).getData();
+
+ if(Func.isEmpty(pagedefinationDataMap)){
+ break;
+ }
+ plpagedefination.plOId = ObjectUtility.getNewObjectID36();
+ plpagedefination.name = pagedefinationDataMap.get(3);
+ //add by caill start
+ //鏈�鍚庝竴绾х殑鍒ゆ柇
+ if(preCount==1) {
+ PLPageDefination[] PLPageDefinations = platformClientUtil.getUIService().getPLPageDefinationsByPageContextOId(doublePreOID);
+ for(PLPageDefination plp : PLPageDefinations) {
+ if(plp.name.equals(plpagedefination.name)) {
+ plpagedefination.plOId=plp.plOId;
+
+ }
+
+ }
+ }
+ //add by caill end
+ plpagedefination.plDefination = pagedefinationDataMap.get(6);
+ plpagedefination.seq = Short.parseShort(pagedefinationDataMap.get(5));
+ plpagedefination.plTabPageOId = pagedefinationDataMap.get(1);
+ plpagedefination.desc = pagedefinationDataMap.get(4);
+ plpagedefination.plType = Short.parseShort(pagedefinationDataMap.get(2));
+ plTableOId = pagedefinationDataMap.get(1);
+ if(plpagedefination.plTabPageOId.equals(plPageContextOId)){
+ plpagedefination.plTabPageOId = pt.plOId;
+ plpagedefinationlist.add(plpagedefination);
+ //淇濆瓨鏂版棫oid鐨勫叧绯伙紝鍦ㄧ‘瀹氬眰绾у叧绯绘椂浣跨敤
+ relation = new HashMap<String,String>();
+ List<SheetRowData> tabbuttonRowData = pltabbuttonsheet.getRowData();
+ if(Func.isNotEmpty(tabbuttonRowData)){
+ for(int a=0;a<tabbuttonRowData.size();a++){
+ Map<Integer, String> tabbuttonDataMap = tabbuttonRowData.get(a).getData();
+ if(Func.isNotEmpty(tabbuttonDataMap)){
+ plCommandOId = tabbuttonDataMap.get(1);
+ String newOId = ObjectUtility.getNewObjectID36();
+ relation.put(plCommandOId, newOId);
+ }
+ }
+ for(int a=0;a<tabbuttonRowData.size();a++){
+ plcommandparameterlist = new ArrayList<PLCommandParameter>();
+ PLTabButton plTabButton = new PLTabButton();
+ Map<Integer, String> tabbuttonDataMap = tabbuttonRowData.get(a).getData();
+ if(Func.isEmpty(tabbuttonDataMap)){
+ break;
+ }
+ plTabButton.plOId = ObjectUtility.getNewObjectID36();
+ plTabButton.plLabel = tabbuttonDataMap.get(4);
+ plTabButton.plAreaType = tabbuttonDataMap.get(5);
+ plTabButton.plTableOId = tabbuttonDataMap.get(1);
+ plTabButton.plSeq = Short.parseShort(tabbuttonDataMap.get(7));
+ String plActionId = "";
+ //PLAction[] allPLAction = Tool.getService().getAllPLAction();
+ for(PLAction action : allPLAction){
+ if((tabbuttonDataMap.get(3)!=null&&!"".equals(tabbuttonDataMap.get(3))
+ )&&(tabbuttonDataMap.get(3).trim().equals(action.plCode.trim()))
+ ){
+ plActionId = action.plOId;
+ break;
+ }
+ }
+ if(plActionId==null||"".equals(plActionId)){
+ if(!plActionIDNulls.toString().contains(tabbuttonDataMap.get(3))){
+ plActionIDNulls.append("\n\tAction缂栧彿:"+tabbuttonDataMap.get(3));
+ }
+ }
+ plTabButton.plActionOId = plActionId;
+ plTabButton.plAreaType = tabbuttonDataMap.get(5);
+ plTabButton.plDesc = tabbuttonDataMap.get(6);
+ String parentOid = tabbuttonDataMap.get(8);//鐖秓id
+ plCommandOId = tabbuttonDataMap.get(1);
+ plTabButton.displayMode = tabbuttonDataMap.get(9);
+ plTabButton.iconPath = tabbuttonDataMap.get(10);
+ plTabButton.authorization = tabbuttonDataMap.get(11);
+ plTabButton.show = tabbuttonDataMap.get(12);
+
+ //璧嬩簣淇濆瓨濂界殑鍊硷紝鏉ヤ繚璇佸眰绾у叧绯讳笉浼氫涪澶�
+ plTabButton.plOId = relation.get(plCommandOId);
+ if(parentOid != null && parentOid.length() > 0) {
+ plTabButton.plParentOid =
+ relation.get(parentOid) == null ? "" : relation.get(parentOid);
+ }
+ if(plTabButton.plTableOId.equals(plTableOId)){
+ plTabButton.plTableOId = plpagedefination.plOId;
+ pltabbuttonlist.add(plTabButton);
+ List<SheetRowData> commondparamsRowData = plcommondparamsheet.getRowData();
+ if(Func.isNotEmpty(commondparamsRowData)){
+ for(int b=0;b<commondparamsRowData.size();b++){
+ PLCommandParameter plCommandParameter = new PLCommandParameter();
+ Map<Integer, String> commandParameterDataMap = commondparamsRowData.get(b).getData();
+ if(Func.isEmpty(commandParameterDataMap)){
+ break;
+ }
+ plCommandParameter.plOId = ObjectUtility.getNewObjectID36();
+ plCommandParameter.plCommandOId = commandParameterDataMap.get(1);
+ plCommandParameter.plKey = commandParameterDataMap.get(2);
+ plCommandParameter.plValue = commandParameterDataMap.get(3);
+ if(plCommandParameter.plCommandOId.equals(plCommandOId)){
+ plCommandParameter.plCommandOId = plTabButton.plOId;
+ plcommandparameterlist.add(plCommandParameter);
+ }
+ }
+ bcMap.put(plTabButton, plcommandparameterlist);
+ }
+ }
+ }
+ dbMap.put(plpagedefination, pltabbuttonlist);
+ }
+ }
+ }
+ tdMap.put(pt, plpagedefinationlist);
+ }
+ }
+ }
+ pdMap.put(p, pltabpagelist);
+ }
+ }
+
+ if(plActionIDNulls.length()>0){
+ throw new VciBaseException(plActionIDNulls.toString()+"涓嶅瓨鍦紒");
+ }
+
+ //鍒犻櫎鍘熸湁button鏁版嵁
+ if(tdMap.size() > 0) {
+ for(List<PLPageDefination> list : tdMap.values()) {
+ for(PLPageDefination ppd : list) {
+ if(ppd.plOId != null && ppd.plOId.length() > 0) {
+ PLTabButton[] buttons = platformClientUtil.getUIService().getPLTabButtonsByTableOId(ppd.plOId);
+ if(buttons != null && buttons.length > 0) {
+ for(PLTabButton ptb : buttons) {
+ platformClientUtil.getUIService().deletePLTabButtonByID(ptb.plOId);
+ }
+ }
+ }
+ }
+ }
+ }
+
+ for(PLUILayout plPageLayoutDefination : plpagelayoutdefinationList){
+ List<PLTabPage> pltabpagelists = pdMap.get(plPageLayoutDefination);
+ for(PLTabPage pltabpage:pltabpagelists){
+ List<PLPageDefination> plpagedefinationlists = tdMap.get(pltabpage);
+ for(PLPageDefination plpagedefination : plpagedefinationlists){
+ List<PLTabButton> pltabbuttons = dbMap.get(plpagedefination);
+ for(PLTabButton pltabbutton : pltabbuttons){
+ List<PLCommandParameter> plcommandParams = bcMap.get(pltabbutton);
+ for(PLCommandParameter plcommandparameter : plcommandParams){
+ plcommandparameter.plCreateUser = sessionInfo.getUserId();
+ plcommandparameter.plModifyUser = sessionInfo.getUserId();
+ platformClientUtil.getUIService().savePLCommandParameter(plcommandparameter);
+ }
+ pltabbutton.plCreateUser = sessionInfo.getUserId();
+ pltabbutton.plModifyUser = sessionInfo.getUserId();
+ platformClientUtil.getUIService().savePLTabButton(pltabbutton);
+ }
+ platformClientUtil.getUIService().savePLPageDefination(plpagedefination);
+ }
+ pltabpage.plCreateUser = sessionInfo.getUserId();
+ pltabpage.plModifyUser = sessionInfo.getUserId();
+ platformClientUtil.getUIService().savePLTabPage(pltabpage);
+ }
+ plPageLayoutDefination.plCreateUser = sessionInfo.getUserId();
+ plPageLayoutDefination.plModifyUser = sessionInfo.getUserId();
+ platformClientUtil.getUIService().savePLUILayout(plPageLayoutDefination);
+ }
+ return BaseResult.success("UI涓婁笅鏂囧鍏ユ垚鍔燂紒");
+ } catch (PLException e) {
+ e.printStackTrace();
+ return BaseResult.success("UI涓婁笅鏂囧鍏ュけ璐�,鍘熷洜锛�"+VciBaseUtil.getExceptionMessage(e));
+ }
+ }
+
+ /**
+ * 鏍规嵁涓婁笅鏂嘔D鍜屽尯鍩熺被鍨嬶紝鎸夐『搴忚幏鍙栧綋鍓嶅尯鍩熺殑tab椤�
+ */
+ @Override
+ public DataGrid getTabByContextIdAndType(String contextId, int areaType) throws PLException {
+ VciBaseUtil.alertNotNull(contextId,"涓婁笅鏂囦富閿�",areaType,"鍖哄煙绫诲瀷");
+ PLTabPage[] plTabPages = platformClientUtil.getUIService().getTabPagesByContextIdAndType(contextId, (short) areaType);
+ DataGrid dataGrid = new DataGrid();
+ dataGrid.setTotal(plTabPages.length);
+ dataGrid.setData(Arrays.asList(plTabPages));
+ return dataGrid;
+ }
+
+ /**
+ * 娣诲姞鍖哄煙鏁版嵁
+ * @param plTabPage
+ * @return
+ */
+ @Override
+ public boolean addTabData(PLTabPage plTabPage) throws PLException {
+ VciBaseUtil.alertNotNull(plTabPage,"娣诲姞鍖哄煙鏁版嵁");
+ SessionInfo sessionInfo = WebThreadLocalUtil.getCurrentUserSessionInfoInThread();
+ plTabPage.plCreateUser = sessionInfo.getUserId();
+ plTabPage.plModifyUser = sessionInfo.getUserId();
+ plTabPage.plOId = ObjectUtility.getNewObjectID36();
+ //鏂板鍜屼慨鏀瑰墠妫�鏌ワ紝鍑洪敊鐩存帴鎶涘嚭寮傚父
+ checkEdit(plTabPage);
+
+ return platformClientUtil.getUIService().savePLTabPage(plTabPage);
+ }
+
+ /**
+ * 淇敼鍖哄煙鏁版嵁
+ * @param plTabPage
+ * @return
+ */
+ @Override
+ public boolean updateTabData(PLTabPage plTabPage) throws PLException {
+ VciBaseUtil.alertNotNull(plTabPage,"娣诲姞鍖哄煙鏁版嵁");
+ SessionInfo sessionInfo = WebThreadLocalUtil.getCurrentUserSessionInfoInThread();
+ plTabPage.plModifyUser = sessionInfo.getUserId();
+
+ //鏂板鍜屼慨鏀瑰墠妫�鏌ワ紝鍑洪敊鐩存帴鎶涘嚭寮傚父
+ checkEdit(plTabPage);
+
+ return platformClientUtil.getUIService().updatePLTabPage(plTabPage);
+ }
+
+ /**
+ * 鍒犻櫎鍖哄煙鏁版嵁
+ * @param oids
+ * @return
+ */
+ @Override
+ public boolean deleteTabData(String[] oids) throws PLException {
+ VciBaseUtil.alertNotNull(oids,"寰呭垹闄ょ殑涓婚敭鍒楄〃");
+ return platformClientUtil.getUIService().deletePLTabPageByOidsForCascade(oids);
+ }
+
+ /**
+ * 鎵╁睍灞炴�у悎瑙勬娴�
+ * @param extAttr
+ * @return
+ */
+ public BaseResult checkTabPageExtAttrIsOk(String extAttr){
+ // 鏁版嵁鏍煎紡锛歟xt1:xx;ext2;ext3:xx;ext4:xxx;extn:xxx;
+ boolean res = checkExtValIsOk(extAttr);
+ return res ? BaseResult.success(true,"鎵╁睍灞炴�ф暟鎹牸寮忔纭紒"):BaseResult.fail("鎵╁睍灞炴�ф暟鎹牸寮忎笉姝g‘锛侊紒");
+ }
+
+ /**
+ * 鏌ヨ椤甸潰璁捐瀹氫箟
+ * @param pageContextOId
+ * @return
+ */
+ @Override
+ public DataGrid getPLPageDefinations(String pageContextOId) throws PLException {
+ DataGrid dataGrid = new DataGrid();
+ if(Func.isBlank(pageContextOId)) return dataGrid;
+ PLPageDefination[] plPageDefinations = platformClientUtil.getUIService().getPLPageDefinationsByPageContextOId(pageContextOId);
+ if(Func.isEmpty(plPageDefinations)){
+ return dataGrid;
+ }
+ //DO2VO
+ List<PLDefinationVO> plDefinationVOS = this.pageDefinations2PLDefinationVO(Arrays.asList(plPageDefinations));
+ dataGrid.setTotal(plDefinationVOS.size());
+ Collections.sort(plDefinationVOS, Comparator.comparing(PLDefinationVO::getSeq));
+ //Arrays.sort(plDefinationVOS, pageDefinationComparator);
+ dataGrid.setData(plDefinationVOS);
+ return dataGrid;
+ }
+
+ /**
+ * 椤甸潰瀹氫箟鐨凞O2VO瀵硅薄
+ * @param plPageDefinations
+ * @return
+ */
+ private List<PLDefinationVO> pageDefinations2PLDefinationVO(List<PLPageDefination> plPageDefinations){
+ List<PLDefinationVO> plDefinationVOList = new ArrayList<>();
+ plPageDefinations.stream().forEach(item->{
+ try {
+ PLDefinationVO plDefinationVO = new PLDefinationVO();
+ PLDefination plDefination = UITools.getPLDefination(item.plDefination);
+ BeanUtil.copy(plDefination,plDefinationVO);
+ plDefinationVO.setDescription(item.desc);
+ plDefinationVO.setSeq(String.valueOf(item.seq));
+ plDefinationVO.setTabPageOId(item.plTabPageOId);
+ plDefinationVO.setId(item.plOId);
+ plDefinationVO.setName(item.name);
+ plDefinationVO.setType(item.plType);
+ plDefinationVO.setTemplateType(String.valueOf(plDefination.getTemplateType()));
+ plDefinationVOList.add(plDefinationVO);
+ } catch (Throwable e) {
+ e.printStackTrace();
+ logger.error(e.getMessage());
+ throw new VciBaseException("椤甸潰瀹氫箟DO瀵硅薄杞琕O瀵硅薄鏃跺嚭鐜伴敊璇�,鍘熷洜锛�"+e.getMessage());
+ }
+ });
+ return plDefinationVOList;
+ }
+
+ /**
+ * 娣诲姞椤甸潰瀹氫箟
+ * @param pdVO
+ * @return
+ */
+ @Override
+ public boolean addPageDefination(PLDefinationVO pdVO) throws Throwable {
+ VciBaseUtil.alertNotNull(pdVO,"椤甸潰瀹氫箟瀵硅薄",pdVO.getSeq(),"缂栧彿",pdVO.getName(),"鍚嶇О");
+
+ PLDefination d = new PLDefination();
+ PLPageDefination pd = new PLPageDefination();
+ pd.plTabPageOId = pdVO.getTabPageOId();
+ pd.plOId = ObjectUtility.getNewObjectID36();
+ //涓嶈兘涓虹┖灞炴�ф鏌�
+ /*if(!this.baseInfoIsOk(pd,false)){
+ return false;
+ }*/
+
+ pd.name = pdVO.getName().trim();
+ pd.seq = Short.valueOf(pdVO.getSeq().trim());
+ pd.desc = pdVO.getDescription();
+ pd.plType = (short) pdVO.getType();
+
+ d.setName(pdVO.getName().trim());
+ d.setUiParser(pdVO.getUiParser().trim());
+ d.setExtAttr(pdVO.getExtAttr().trim());
+ d.setTemplateType(pdVO.getTemplateType());
+
+ //鍚嶇О鍜岀紪鍙锋煡閲�
+ newPLDefinationIsOk(pdVO, false);
+
+ // 妫�鏌ュ悇涓被鍨嬩笅鐨勬暟鎹槸鍚﹁緭鍏ユ垨鏈夋晥,涓�鍏�6绉嶇被鍨嬫寜绫诲瀷妫�楠�
+ String templateType = pdVO.getTemplateType();
+ switch (templateType){
+ //Table(琛ㄦ牸)
+ case "1":
+ //From(琛ㄥ崟)
+ case "4":
+ TableComptCheckInput tci = new TableComptCheckInput(
+ pdVO.getSearchTarger()
+ ,pdVO.getShowType()
+ ,pdVO.getLinkType()
+ ,pdVO.getTemplateId()
+ ,pdVO.getQueryTemplateName()
+ );
+ if(!tci.checkInputIsOk()){
+ return false;
+ }
+ d = tci.getNewPLDefination(d);
+ break;
+ //Custom(鑷畾涔夋ā鏉�)
+ case "2":
+ //鍙鏌ユ帶鍒惰矾寰勪笉鑳戒负绌�,鏈夐棶棰樹細鐩存帴鎶ラ敊
+ CustomComptCheckInput ccci = new CustomComptCheckInput(pdVO.getControlPath());
+ if(!ccci.checkInputIsOk()){
+ return false;
+ }
+ d = ccci.getNewPLDefination(d);
+ break;
+ //TreeTable(鏍戣〃)
+ case "3":
+ TreeTableComptCheckInput ttcci = new TreeTableComptCheckInput(
+ pdVO.getSearchTarger()
+ ,pdVO.getShowType()
+ ,pdVO.getLinkType()
+ ,pdVO.getTemplateId()
+ ,pdVO.getQueryTemplateName()
+ ,pdVO.getExpandCols()
+ ,pdVO.getExpandMode()
+ );
+ if(!ttcci.checkInputIsOk()){
+ return false;
+ }
+ d = ttcci.getNewPLDefination(d);
+ break;
+ //Tree(鏍�)
+ case "5":
+ TreeComptCheckInput tcci = new TreeComptCheckInput(
+ pdVO.getShowType(),
+ pdVO.getLinkType(),
+ pdVO.getQueryTemplateName(),
+ pdVO.getShowExpressionRoot(),
+ pdVO.getShowExpression(),
+ pdVO.getRefTreeSet(),
+ pdVO.getSeparator(),
+ pdVO.getExpandMode()
+ );
+ if(!tcci.checkInputIsOk()){
+ return false;
+ }
+ d = tcci.getNewPLDefination(d);
+ break;
+ //UILayout(UI瀹氫箟)
+ case "6":
+ UILayoutComptCheckInput ulci = new UILayoutComptCheckInput(
+ pdVO.getSearchTarger(),
+ pdVO.getShowType(),
+ pdVO.getUiLayout(),
+ pdVO.getQueryTemplateName(),
+ pdVO.getQryType()
+ );
+ if(!ulci.checkInputIsOk()){
+ return false;
+ }
+ d = ulci.getNewPLDefination(d);
+ break;
+ }
+
+ d = setEventDataToPLDefination(d,pdVO);
+ //杞瑇ml璧嬪�煎埌plDefination涓�
+ pd.plDefination = UITools.getPLDefinationText(d);
+
+ //鎵ц淇濆瓨
+ return platformClientUtil.getUIService().savePLPageDefination(pd);
+ }
+
+ /**
+ * 淇敼椤甸潰瀹氫箟
+ * @param pdVO
+ * @return
+ */
+ @Override
+ public boolean updatePageDefination(PLDefinationVO pdVO) throws Throwable {
+
+ 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;
+ }*/
+ pd.plOId = pdVO.getId();
+ pd.plTabPageOId = pdVO.getTabPageOId();
+ pd.name = pdVO.getName().trim();
+ pd.seq = Short.valueOf(pdVO.getSeq().trim());
+ pd.desc = pdVO.getDescription();
+ pd.plType = (short) pdVO.getType();
+
+ d.setId(pdVO.getId());
+ d.setName(pdVO.getName().trim());
+ d.setUiParser(pdVO.getUiParser().trim());
+ d.setExtAttr(pdVO.getExtAttr().trim());
+ d.setTemplateType(pdVO.getTemplateType());
+
+ this.newPLDefinationIsOk(pdVO, true);
+
+ // 妫�鏌ュ悇涓粍浠跺唴閮ㄧ殑鏁版嵁鏄惁鏈夋晥
+ String templateType = pdVO.getTemplateType();
+ switch (templateType){
+ //Table(琛ㄦ牸)
+ case "1":
+ //From(琛ㄥ崟)
+ case "4":
+ TableComptCheckInput tci = new TableComptCheckInput(
+ pdVO.getSearchTarger()
+ ,pdVO.getShowType()
+ ,pdVO.getLinkType()
+ ,pdVO.getTemplateId()
+ ,pdVO.getQueryTemplateName()
+ );
+ if(!tci.checkInputIsOk()){
+ return false;
+ }
+ d = tci.getNewPLDefination(d);
+ break;
+ //Custom(鑷畾涔夋ā鏉�)
+ case "2":
+ //鍙鏌ユ帶鍒惰矾寰勪笉鑳戒负绌�,鏈夐棶棰樹細鐩存帴鎶ラ敊
+ CustomComptCheckInput ccci = new CustomComptCheckInput(pdVO.getControlPath());
+ if(!ccci.checkInputIsOk()){
+ return false;
+ }
+ d = ccci.getNewPLDefination(d);
+ break;
+ //TreeTable(鏍戣〃)
+ case "3":
+ TreeTableComptCheckInput ttcci = new TreeTableComptCheckInput(
+ pdVO.getSearchTarger()
+ ,pdVO.getShowType()
+ ,pdVO.getLinkType()
+ ,pdVO.getTemplateId()
+ ,pdVO.getQueryTemplateName()
+ ,pdVO.getExpandCols()
+ ,pdVO.getExpandMode()
+ );
+ if(!ttcci.checkInputIsOk()){
+ return false;
+ }
+ d = ttcci.getNewPLDefination(d);
+ break;
+ //Tree(鏍�)
+ case "5":
+ TreeComptCheckInput tcci = new TreeComptCheckInput(
+ pdVO.getShowType(),
+ pdVO.getLinkType(),
+ pdVO.getQueryTemplateName(),
+ pdVO.getShowExpressionRoot(),
+ pdVO.getShowExpression(),
+ pdVO.getRefTreeSet(),
+ pdVO.getSeparator(),
+ pdVO.getExpandMode()
+ );
+ if(!tcci.checkInputIsOk()){
+ return false;
+ }
+ d = tcci.getNewPLDefination(d);
+ break;
+ //UILayout(UI瀹氫箟)
+ case "6":
+ UILayoutComptCheckInput ulci = new UILayoutComptCheckInput(
+ pdVO.getSearchTarger(),
+ pdVO.getShowType(),
+ pdVO.getUiLayout(),
+ pdVO.getQueryTemplateName(),
+ pdVO.getQryType()
+ );
+ if(!ulci.checkInputIsOk()){
+ return false;
+ }
+ d = ulci.getNewPLDefination(d);
+ break;
+ }
+
+ d = setEventDataToPLDefination(d,pdVO);
+ pd.plDefination = UITools.getPLDefinationText(d);
+
+ return platformClientUtil.getUIService().updatePLPageDefination(pd);
+ }
+
+ /**
+ * 鍒犻櫎椤甸潰瀹氫箟
+ * @param oids
+ * @return
+ */
+ @Override
+ public boolean delPageDefination(String[] oids) throws PLException {
+ VciBaseUtil.alertNotNull(oids,"鍒犻櫎鐨勯〉闈㈠畾涔変富閿�");
+ boolean res = platformClientUtil.getUIService().deletePLPageDefinationByOidsForCascade(oids);
+ return res;
+ }
+
+ /**
+ * 鑾峰彇椤电鍖哄煙鎸夐挳閰嶇疆淇℃伅
+ * @param pageDefinationOid
+ * @return
+ */
+ @Override
+ public List<PLTabButtonVO> getTabButtons(String pageDefinationOid) {
+ VciBaseUtil.alertNotNull(pageDefinationOid,"椤甸潰瀹氫箟涓婚敭");
+ List<PLTabButton> buttonList = new ArrayList<>();
+ try {
+ PLTabButton[] plTabButtons = platformClientUtil.getUIService().getPLTabButtonsByTableOId(pageDefinationOid);
+ buttonList = Arrays.asList(plTabButtons);
+ List<PLTabButtonVO> plTabButtonVOList = this.tabButton2TabButtonVOS(buttonList);
+ PLTabButtonVO plTabButtonVO = new PLTabButtonVO();
+ for(int i = 0; i < plTabButtonVOList.size(); i++){
+ plTabButtonVO = plTabButtonVOList.get(i);
+
+ if(plTabButtonVO.getParentOid().equals("")){
+ plTabButtonVO.setChildren(plTabButtonVO2Children(plTabButtonVOList,plTabButtonVO.getOId()));
+ }
+ }
+ return plTabButtonVOList;
+ } 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 = Arrays.stream(parameters)
+ .collect(Collectors.toMap(
+ parm -> parm.plKey,
+ parm -> parm.plValue,
+ (existing, replacement) -> existing, // 澶勭悊閲嶅閿殑鎯呭喌
+ LinkedHashMap::new // 鎸囧畾浣跨敤 LinkedHashMap
+ ));
+ plTabButtonVO.setButtonParams(parameterMap);
+ }
+ return plTabButtonVO;
+ }
+
+ /**
+ * 鎸夐挳閰嶇疆瀛愯妭鐐规煡鎵�
+ * @param plOid
+ * @param plTabButtonVOList
+ * @return
+ */
+ private List<PLTabButtonVO> plTabButtonVO2Children(List<PLTabButtonVO> plTabButtonVOList, String plOid){
+ ArrayList<PLTabButtonVO> plTabButtonVOS = new ArrayList<>();
+ for (PLTabButtonVO plTabButtonVO : plTabButtonVOList) {
+ if(StringUtils.isBlank(plTabButtonVO.getParentOid())){
+ continue;
+ }
+ if(plTabButtonVO.getParentOid().equals(plOid)){
+ plTabButtonVO.setChildren(plTabButtonVO2Children(plTabButtonVOList,plOid));
+ plTabButtonVOS.add(plTabButtonVO);
+ }
+ }
+ return plTabButtonVOS;
+ }
+
+ /**
+ * 鎸夐挳閰嶇疆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(Func.isNotEmpty(buttonParams)) {
+ 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();
+ }
+ }
+ 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;
+ }
+
+ /**
+ * 鍒犻櫎鍗曚釜鎸夐挳閰嶇疆
+ * @param tabButtonVO
+ * @return
+ */
+ @Override
+ public boolean deleteTapButton(PLTabButtonVO tabButtonVO) throws PLException {
+ VciBaseUtil.alertNotNull(tabButtonVO,"鍒犻櫎鐨勬寜閽厤缃璞�");
+ boolean success = platformClientUtil.getUIService().deletePLTabButton(this.tabButtonVO2TabButton(new PLTabButton(),tabButtonVO));
+ if(success == false){
+ throw new VciBaseException("璇ユ湁瀛愮骇鎸夐挳锛屼笉鑳藉垹闄わ紒");
+ }
+ return true;
+ }
+
+ /**
+ * 璋冩暣涓轰笅绾ф寜閽�
+ * @param tabButtonVO
+ * @return
+ */
+ @Override
+ public BaseResult joinBtn(PLTabButtonVO tabButtonVO) throws PLException {
+ VciBaseUtil.alertNotNull(tabButtonVO,"闇�璋冩暣涓轰笅绾ф寜閽�",tabButtonVO.getTableOId(),"褰撳墠鎸夐挳閰嶇疆鎵�鍦ㄧ殑椤甸潰涓婚敭");
+ //鍚屼竴椤甸潰涓嬬殑鎸夐挳
+ List<PLTabButtonVO> plTabButtons = this.getTabButtons(tabButtonVO.getTableOId());
+ if(Func.isEmpty(plTabButtons)){
+ return BaseResult.fail("鏈幏鍙栧埌鎸夐挳閰嶇疆淇℃伅锛�");
+ }
+ //鑾峰彇褰撳墠瑕佺Щ鍔ㄧ殑鎸夐挳鐨勪笅鏍�
+ int index = 0;
+ for (int i = 0; i < plTabButtons.size(); i++) {
+ if (plTabButtons.get(i).getOId().equals(tabButtonVO.getOId())) {
+ index = i; // 鎵惧埌鍚庤褰曚笅鏍�
+ break; // 鎵惧埌鍚庨��鍑哄惊鐜�
+ }
+ }
+ //褰撻�夋嫨鐨勬寜閽负鏍戠殑绗竴涓妭鐐圭殑鏃跺�欙紝浠栫殑鍏勮妭鐐规槸浠栬嚜宸憋紝瀵艰嚧璋冩暣涓轰笅绾ф寜閽椂鍑洪敊锛屾晠浣滄鍒ゆ柇銆�
+ if(index == 0){
+ return BaseResult.fail("褰撳墠鑺傜偣涓嶅瓨鍦ㄥ厔鑺傜偣锛屾棤娉曡皟鏁翠负涓嬬骇鎸夐挳锛�");
+ }
+ //璁剧疆鐖秈d涓轰笂涓�涓妭鐐圭殑
+ tabButtonVO.setParentOid(plTabButtons.get(index-1).getOId());
+ PLTabButton plTabButton = this.tabButtonVO2TabButton(new PLTabButton(), tabButtonVO);
+ boolean success = platformClientUtil.getUIService().updatePLTabButton(plTabButton);
+ if(success == false) {
+ return BaseResult.fail("淇敼澶辫触锛�");
+ }
+ return BaseResult.fail("淇敼鎴愬姛锛�");
+ }
+
+ /**
+ * 璋冩暣涓轰笂绾ф寜閽�
+ * @param tabButtonVO
+ * @return
+ */
+ @Override
+ public BaseResult exitBtn(PLTabButtonVO tabButtonVO) throws PLException {
+ tabButtonVO.setParentOid("");
+ PLTabButton plTabButton = this.tabButtonVO2TabButton(new PLTabButton(), tabButtonVO);
+ boolean success = platformClientUtil.getUIService().updatePLTabButton(plTabButton);
+ if(success == false) {
+ BaseResult.fail("鎾ら攢澶辫触锛�");
+ }
+ return BaseResult.success("鎾ら攢鎴愬姛锛�");
+ }
+
+ /**
+ * 澶勭悊閰嶇疆鐨別vent浜嬩欢
+ * @param d
+ * @param pdVO
+ * @return
+ */
+ private PLDefination setEventDataToPLDefination(PLDefination d,PLDefinationVO pdVO){
+ Map<String, String> eventMap = pdVO.getEventMap();
+ if(Func.isNotEmpty(eventMap)){
+ String eventKey = eventMap.keySet().stream().collect(Collectors.joining(","));
+ d.setEventKey(eventKey);
+ String eventValue = eventMap.values().stream().collect(Collectors.joining(","));
+ d.setEventValue(eventValue);
+ }else{
+ d.setEventKey("");
+ d.setEventValue("");
+ }
+ return d;
+ }
+
+ private boolean baseInfoIsOk(PLPageDefination pd, boolean isEdit) throws PLException{
+ boolean res = false;
+ if(!checkRequiredIsOk("鍚嶇О", pd.name)){
+ return false;
+ }
+ //short绫诲瀷鐨勫氨涓嶇敤妫�鏌ヤ簡
+ /*else if(!checkRequiredIsOk("缂栧彿", pd.seq)){
+ return false;
+ }*/
+ res = true;
+ return res;
+ }
+
+ private boolean checkRequiredIsOk(String tip, String txt) throws PLException {
+ boolean res = false;
+ if(Func.isBlank(txt)){
+ throw new PLException("500", new String[]{tip + " 涓嶈兘涓虹┖锛�"});
+ } else {
+ res = true;
+ }
+ return res;
+ }
+
+ /**
+ * 椤甸潰瀹氫箟鍚嶇О鍜岀紪鍙锋煡閲�
+ * @param pd
+ * @param isEdit
+ * @throws PLException
+ */
+ private void newPLDefinationIsOk(PLDefinationVO pd, boolean isEdit) throws PLException{
+ boolean nameExist = false;
+ boolean seqExist = false;
+ PLPageDefination[] pds = platformClientUtil.getUIService().getPLPageDefinationsByPageContextOId(pd.getTabPageOId());
+ for (PLPageDefination pdGet : pds) {
+ if(!isEdit){
+ if(pd.getName().equals(pdGet.name)){
+ nameExist = true;
+ } else if(Short.parseShort(pd.getSeq()) == pdGet.seq){
+ seqExist = true;
+ }
+ } else {
+ if(!pd.getId().equals(pdGet.plOId)){
+ if(pd.getName().equals(pdGet.name)){
+ nameExist = true;
+ } else if(Short.parseShort(pd.getSeq()) == pdGet.seq){
+ seqExist = true;
+ }
+ }
+ }
+ if(nameExist || seqExist){
+ break;
+ }
+ }
+ if(nameExist){
+ throw new VciBaseException("鍚嶇О宸茬粡瀛樺湪锛�");
+ }
+
+ if(seqExist){
+ throw new VciBaseException("缂栧彿宸茬粡瀛樺湪锛�");
+ }
+ }
+
+ /**
+ * 缁欏尯鍩熶腑娣诲姞鏁版嵁鍓嶆牎楠�
+ * @param plTabPage
+ * @return
+ */
+ private void checkEdit(PLTabPage plTabPage) throws PLException {
+ /*if(plTabPage.plSeq >= 0){
+ throw new VciBaseException("搴忓彿涓嶈兘涓虹┖!");
+ }else if(!isNumber(plseq.getText().trim())){
+ throw new VciBaseException("搴忓彿鍙兘鏄暟瀛楋紝璇烽噸鏂板~鍐�!");
+ }*/
+ if(!checkTabPageUIParserIsOk(plTabPage)){
+ throw new VciBaseException("UI瑙f瀽绫绘牸寮忎笉姝g‘锛岃閲嶆柊濉啓!");
+ }
+ //鐙珛鍑烘潵鍗曠嫭鍋氫竴涓帴鍙h鍓嶇杩涜璋冪敤
+ /*else if(!checkTabPageExtAttrIsOk(plTabPage)){
+ //缁欏嚭鎻愮ず锛屽浜巑pm閰嶇疆鍙互鍏佽鍏朵繚瀛橈紝鍏蜂綋瑙f瀽mpm鑷繁鎺у埗 by liucq
+ int confirm = VCIOptionPane.showConfirmDialog(PLTApplication.frame, "鎵╁睍灞炴�ф暟鎹牸寮忎笉姝g‘\n鏄惁缁х画淇濆瓨锛�", "绯荤粺鎻愮ず", JOptionPane.YES_NO_OPTION);
+ }*/
+
+ PLTabPage[] tps = platformClientUtil.getUIService().getTabPagesByContextIdAndType(plTabPage.plContextOId, plTabPage.plAreaType);
+ for (PLTabPage tp : tps) {
+ if(tp.plSeq == plTabPage.plSeq && !tp.plOId.equals(plTabPage.plOId)){
+ throw new VciBaseException("搴忓彿閲嶅锛�");
+ }
+ if(tp.plName.equalsIgnoreCase(plTabPage.plName) && !tp.plOId.equals(plTabPage.plOId)){
+ throw new VciBaseException("鍚嶇О閲嶅锛�");
+ }
+ if(tp.plCode.equalsIgnoreCase(plTabPage.plCode) && !tp.plOId.equals(plTabPage.plOId)){
+ throw new VciBaseException("椤甸潰缂栫爜閲嶅锛�");
+ }
+ }
+ }
+
+ /**
+ * 妫�鏌I瑙f瀽绫绘槸鍚﹀悎瑙�
+ * @param tabPage
+ * @return
+ */
+ private boolean checkTabPageUIParserIsOk(PLTabPage tabPage){
+ // 鏁版嵁鏍煎紡锛� java_cs:xxx;java_bs:xxx;net_cs:xxx;net_bs:xxx;mobile_cs:xx;mobile_bs:xxx;
+ String uiParser = tabPage.plUIParser;
+ return checkExtValIsOk(uiParser);
+ }
+
+ /**
+ * UI瑙f瀽绫绘鍒欐鏌�
+ * @param value
+ * @return
+ */
+ private boolean checkExtValIsOk(String value){
+ boolean res = true;
+ if(value == null || "".equals(value)){
+ return res;
+ }
+ Pattern ptn = Pattern.compile("([\\w\\.\\_\\-\\+]+:[\\w\\.\\_\\-\\+]+(;)?)+");
+ res = ptn.matcher(value).matches();
+ return res;
}
/**
@@ -317,7 +1689,7 @@
String userName= WebThreadLocalUtil.getCurrentUserSessionInfoInThread().getUserId();
RoleRightInfo[] rightInfos= platformClientUtil.getFrameworkService().getRoleRightList(roleId,userName);
List<RoleRightVO> roleRightVOList=roleRightDOO2VOS(Arrays.asList(rightInfos));
- roleRightVOMap=roleRightVOList.stream().collect(Collectors.toMap(RoleRightVO::getFuncId,roleRightVO ->roleRightVO));
+ roleRightVOMap=roleRightVOList.stream().collect(Collectors.toMap(RoleRightVO::getFuncId,roleRightVO ->roleRightVO,(oldValue,newOldValue)->oldValue));
}
BizType[] bizTypes=osBtmServiceI.getBizTypes(type);
List<Tree> treeList=new ArrayList<>();
@@ -335,18 +1707,22 @@
bizTypeTree.setShowCheckbox(true);
bizTypeTree.setParentBtmName(bizTypes[i].name);
childList.add(bizTypeTree);
- if(roleRightVOMap.containsKey(bizTypes[i].oid)){
- List<PLUILayout>contextList=getUIContextDataByBtName(bizTypes[i].name,context);
- List<Tree> btmChildList=new ArrayList<>();
- btmChildList.add(bizTypeTree);
- setChildNode(btmChildList,contextList,roleRightVOMap,showCheckBox);
- }
+ List<PLUILayout>contextList=getUIContextDataByBtName(bizTypes[i].name,context);
+ List<Tree> btmChildList=new ArrayList<>();
+ btmChildList.add(bizTypeTree);
+ setChildNode(btmChildList,contextList,roleRightVOMap,showCheckBox);
}
rootNode.setChildren(childList);
treeList.add(rootNode);
return treeList;
}
+ /***
+ * UI鎺堟潈
+ * @param uiAuthorDTO
+ * @return
+ * @throws Exception
+ */
@Override
public boolean authorizedUI(UIAuthorDTO uiAuthorDTO) throws Exception {
boolean res=false;
@@ -362,48 +1738,231 @@
treeQueryObject.setConditionMap(conditionMap);
List<Tree> treeList=this.getUIAuthor(treeQueryObject);
HashMap<String,Tree> allTreeMap=new HashMap<>();
+ Map<String,RoleRightDTO> roleRightVOMap=new HashMap<>();
if(!CollectionUtil.isEmpty(treeList)){
+ if(StringUtils.isNotBlank(uiAuthorDTO.getRoleId())){
+ String userName= WebThreadLocalUtil.getCurrentUserSessionInfoInThread().getUserId();
+ RoleRightInfo[] rightInfos= platformClientUtil.getFrameworkService().getRoleRightList(uiAuthorDTO.getRoleId(),userName);
+ List<RoleRightVO> roleRightVOList=roleRightDOO2VOS(Arrays.asList(rightInfos));
+ roleRightVOMap=roleRightVOList.stream().collect(Collectors.toMap(RoleRightVO::getFuncId,roleRightVO ->roleRightVOO2DTO(roleRightVO),(oldValue,newValue)->oldValue));
+ }
convertTreeDOO2Map(treeList,allTreeMap);
List<RoleRightDTO> roleRightDTOList=new ArrayList<>();
List<Tree> selectTreeList= uiAuthorDTO.getSelectTreeList();
- getRoleRightDTOS(uiAuthorDTO.getRoleId(),selectTreeList,allTreeMap,roleRightDTOList);
+ getSelectedRoleRightObjs(uiAuthorDTO.getRoleId(),selectTreeList,allTreeMap,roleRightVOMap,roleRightDTOList);
+ SessionInfo sessionInfo = WebThreadLocalUtil.getCurrentUserSessionInfoInThread();
+ String currentUserName = sessionInfo.getUserId();
+ boolean isDeveloper= rightControlUtil.isDeveloper(currentUserName);
+ List<RoleRightInfo> roleRightInfoList= roleRightDTOO2InfoS(roleRightDTOList);
+ UserEntityInfo info=new UserEntityInfo();
+ info.modules="UI鎺堟潈";
+ info.userName=currentUserName;
+ try {
+ res= platformClientUtil.getFrameworkService().saveRoleRight(roleRightInfoList.toArray(new RoleRightInfo[]{}),uiAuthorDTO.getRoleId(),currentUserName,info);
+ }catch (PLException e){
+ throw new Exception("淇濆瓨澶辫触锛�"+e.getMessage());
+ }
}
return res;
}
- private void getRoleRightDTOS(String roleOid,List<Tree> selectTreeList,HashMap<String,Tree> allTreeMap, List<RoleRightDTO> roleRightDTOList){
- selectTreeList.stream().forEach(tree -> {
- RoleRightDTO roleRightDTO=new RoleRightDTO();
- String id=ObjectUtility.getNewObjectID36();
- Object data= tree.getData();
+ /**
+ *鏍规嵁鏉冮檺璁$畻涓婁笅鏉冮檺
+ * @param roleOid
+ * @param selectTreeList
+ * @param allTreeMap
+ * @param roleRightDTOList
+ */
+ private void getSelectedRoleRightObjs(String roleOid,List<Tree> selectTreeList,HashMap<String,Tree> allTreeMap,Map<String,RoleRightDTO> allRoleRightDTOMap, List<RoleRightDTO> roleRightDTOList){
+ Date date=new Date();
+ Map<String,RoleRightDTO> roleRightDTOMap=new HashMap<>();
+ if(!CollectionUtil.isEmpty(selectTreeList)){
+ selectTreeList.stream().forEach(tree -> {
+ String oid=tree.getOid();
+ if(allTreeMap.containsKey(oid)){
+ tree= allTreeMap.get(oid);
+ Object data= tree.getData();
+ if (data instanceof String) {
+ getRightValue(roleOid, tree, allTreeMap, false, roleRightDTOMap);//鍚戜笅鑾峰彇鎵�鏈夋ā鍧楃殑鏉冮檺鍊�
+ } else if (!(data instanceof PLTabButton)) {//涓氬姟绫诲瀷
+ getRightValue(roleOid, tree, allTreeMap, true, roleRightDTOMap);//鍚戜笂澶勭悊
+ getRightValue(roleOid, tree, allTreeMap, false, roleRightDTOMap);//鍚戜笅澶勭悊锛堝寘鍚綋鍓嶈妭鐐癸級
+ } else if (data instanceof PLTabButton) {//鎸夐挳
+ String parrentId=tree.getParentId();
+ if(allTreeMap.containsKey(parrentId)){
+ SessionInfo sessionInfo = WebThreadLocalUtil.getCurrentUserSessionInfoInThread();
+ String currentUserName = sessionInfo.getUserId();
+ boolean isDeveloper= rightControlUtil.isDeveloper(currentUserName);
+ Tree parentNode= allTreeMap.get(parrentId);
+ String funcId = parentNode.getOid();
+ getRightValue(roleOid,tree, allTreeMap, true, roleRightDTOMap);//鍚戜笂澶勭悊璇ユ搷浣滅埗绾х殑涓婄骇妯″潡鏉冮檺(涓嶅寘鍚埗鑺傜偣)
+ if(!roleRightDTOMap.containsKey(funcId)){
+ RoleRightDTO roleRightDTO = new RoleRightDTO();
+ roleRightDTO.setId(ObjectUtility.getNewObjectID36());//涓婚敭
+ roleRightDTO.setFuncId(funcId);
+ if(isDeveloper) {
+ roleRightDTO.setRightType((short) 1);//鏉冮檺绫诲瀷 鏉冮檺绫诲瀷锛岃秴绾х鐞嗗憳缁欑鐞嗗憳鎺堟潈涓�1锛岀鐞嗗憳缁欐櫘閫氱敤鎴锋巿鏉冧负2
+ }else{
+ roleRightDTO.setRightType((short) 2);
+ }
+ roleRightDTO.setRightValue(1);// 鏉冮檺鍊硷紝娌℃湁鎿嶄綔鐨勬ā鍧楁潈闄愬�煎瓨鍌ㄤ负0
+ roleRightDTO.setRoleId(roleOid);//瑙掕壊ID
+ roleRightDTO.setCreateUser(currentUserName);//鍒涘缓鑰�
+ roleRightDTO.setCreateTime(VciDateUtil.date2Str(new Date(),""));//鍒涘缓鏃堕棿
+ roleRightDTO.setModifyUser(currentUserName);//淇敼鑰�
+ roleRightDTO.setModifyTime(VciDateUtil.date2Str(new Date(),""));//淇敼鏃堕棿
+ roleRightDTO.setLicensor("");
+ if(!roleRightDTOMap.containsKey(funcId)){
+ roleRightDTOMap.put(funcId, roleRightDTO);
+ }
+ roleRightDTOMap.put(funcId, roleRightDTO);
+ }
+ }
- if (data instanceof BizType) {//涓氬姟绫诲瀷
- BizType bizType=(BizType)data;
- roleRightDTO.setId(id);//涓婚敭
- roleRightDTO.setCreateUser(null);//鍒涘缓鑰�
- roleRightDTO.setCreateTime(null);//鍒涘缓鏃堕棿
- roleRightDTO.setModifyUser(null);//淇敼鑰�
- roleRightDTO.setModifyTime(null);//淇敼鏃堕棿
- roleRightDTO.setRoleId(roleOid);//瑙掕壊ID
- roleRightDTO.setRightValue(1);// 鏉冮檺鍊�
- roleRightDTO.setRightType((short) -1);//鏉冮檺绫诲瀷 鏉冮檺绫诲瀷锛岃秴绾х鐞嗗憳缁欑鐞嗗憳鎺堟潈涓�1锛岀鐞嗗憳缁欐櫘閫氱敤鎴锋巿鏉冧负2
- roleRightDTO.setFuncId(null);
- roleRightDTO.setLicensor(null);
- }else if (data instanceof PLUILayout){//UI
+ }
- }else if (data instanceof PLTabPage) {//UI涓婁笅鏂�
+ }
+ });
+ /* allRoleRightDTOMap.putAll(roleRightDTOMap.entrySet().stream()
+ .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry:: getValue)));*/
+ List<RoleRightDTO> newRoleRightDTOList=Optional.ofNullable(roleRightDTOMap).orElseGet(()->new HashMap<String,RoleRightDTO>()).values().stream().collect(Collectors.toList());
+ roleRightDTOList.addAll(newRoleRightDTOList);
+ }
+ }
-
- }else if (data instanceof PLPageDefination) {//
-
-
- }else if (data instanceof PLTabButton) {//鎸夐挳
-
+ /**
+ * 鑾峰彇鏉冮檺
+ * @param isUp 鏄惁鏄悜涓婅幏鍙栵紝濡傛灉鏄悜涓婅幏鍙栵紝浼犺繘鏉ョ殑蹇呯劧鏄ā鍧楄妭鐐癸紝涓斾笂绾фā鍧楀繀鐒舵槸娌℃湁閫変腑
+ */
+ private void getRightValue(String roleId,Tree node,HashMap<String,Tree> allTreeMap,boolean isUp,Map<String,RoleRightDTO> rightMap){
+ SessionInfo sessionInfo = WebThreadLocalUtil.getCurrentUserSessionInfoInThread();
+ String currentUserName = sessionInfo.getUserId();
+ boolean isDeveloper= rightControlUtil.isDeveloper(currentUserName);
+ String id=ObjectUtility.getNewObjectID36();
+ Object data=node.getData();
+ if(isUp) {//鍚戜笂鑾峰彇锛屽瓨鍌ㄦ瘡涓笂绾фā鍧楃殑鏉冮檺鍊�
+ while (!"root".equals(node.getData())){
+ data=node.getData();
+ String oid=node.getOid();
+ if(allTreeMap.containsKey(oid)){
+ String funcId = "";
+ if (data instanceof BizType) {
+ BizType bizType = (BizType) data;
+ funcId = bizType.name;
+ } else if (data instanceof PLUILayout) {
+ PLUILayout context = (PLUILayout)data;
+ funcId = context.plOId;
+ } else if (data instanceof PLTabPage) {
+ PLTabPage tab = (PLTabPage) data;
+ funcId = tab.plOId;
+ } else if (data instanceof PLPageDefination){
+ PLPageDefination pageDef = (PLPageDefination) data;
+ funcId = pageDef.plOId;
+ } else if (data instanceof PLTabButton) {
+ PLTabButton but = (PLTabButton)data;
+ funcId = but.plOId;
+ }
+ RoleRightDTO roleRightDTO = new RoleRightDTO();
+ roleRightDTO.setId(id);//涓婚敭
+ roleRightDTO.setFuncId(funcId);
+ if(isDeveloper) {
+ roleRightDTO.setRightType((short) 1);//鏉冮檺绫诲瀷 鏉冮檺绫诲瀷锛岃秴绾х鐞嗗憳缁欑鐞嗗憳鎺堟潈涓�1锛岀鐞嗗憳缁欐櫘閫氱敤鎴锋巿鏉冧负2
+ }else{
+ roleRightDTO.setRightType((short) 2);
+ }
+ roleRightDTO.setRightValue(1);// 鏉冮檺鍊硷紝娌℃湁鎿嶄綔鐨勬ā鍧楁潈闄愬�煎瓨鍌ㄤ负0
+ roleRightDTO.setRoleId(roleId);//瑙掕壊ID
+ roleRightDTO.setCreateUser(currentUserName);//鍒涘缓鑰�
+ roleRightDTO.setCreateTime(VciDateUtil.date2Str(new Date(),""));//鍒涘缓鏃堕棿
+ roleRightDTO.setModifyUser(currentUserName);//淇敼鑰�
+ roleRightDTO.setModifyTime(VciDateUtil.date2Str(new Date(),""));//淇敼鏃堕棿
+ roleRightDTO.setLicensor("");
+ if(!rightMap.containsKey(funcId)){
+ rightMap.put(funcId, roleRightDTO);
+ }
+ oid= node.getParentId();
+ if(allTreeMap.containsKey(oid)) {
+ node=allTreeMap.get(oid);
+ }
+ }
}
- });
+ }else {
+ String funcId = "";
+ if (data instanceof String) {
+ funcId = (String) data;
+ } else if (data instanceof BizType) {
+ BizType bizType = (BizType) data;
+ funcId = bizType.name;
+ } else if (data instanceof PLUILayout) {
+ PLUILayout context = (PLUILayout) data;
+ funcId = context.plOId;
+ } else if (data instanceof PLTabPage) {
+ PLTabPage tab = (PLTabPage) data;
+ funcId = tab.plOId;
+ } else if (data instanceof PLPageDefination) {
+ PLPageDefination pageDef = (PLPageDefination) data;
+ funcId = pageDef.plOId;
+ } else if (data instanceof PLTabButton) {
+ PLTabButton but = (PLTabButton) data;
+ funcId = but.plOId;
+ }
+ if (!(data instanceof PLPageDefination)) {//瀛愯妭鐐逛笉鏄搷浣�
+ if (!rightMap.containsKey(funcId) && !funcId.equals("root")) {
+ RoleRightDTO roleRightDTO = new RoleRightDTO();
+ roleRightDTO.setFuncId(funcId);
+ if (isDeveloper) {
+ roleRightDTO.setRightType((short) 1);//鏉冮檺绫诲瀷 鏉冮檺绫诲瀷锛岃秴绾х鐞嗗憳缁欑鐞嗗憳鎺堟潈涓�1锛岀鐞嗗憳缁欐櫘閫氱敤鎴锋巿鏉冧负2
+ } else {
+ roleRightDTO.setRightType((short) 2);
+ }
+ roleRightDTO.setRightValue(0);//娌℃湁鎿嶄綔鐨勬ā鍧楁潈闄愬�煎瓨鍌ㄤ负0
+ roleRightDTO.setRoleId(roleId);
+ roleRightDTO.setCreateUser(currentUserName);
+ roleRightDTO.setCreateTime(VciDateUtil.date2Str(new Date(),""));
+ roleRightDTO.setModifyUser(currentUserName);
+ roleRightDTO.setModifyTime(VciDateUtil.date2Str(new Date(),""));
+ roleRightDTO.setLicensor("");
+ rightMap.put(funcId, roleRightDTO);
+ }
+ for (int i = 0; i < node.getChildren().size(); i++) {
+ //瀵规瘡涓瓙鍚戜笅閫掑綊閬嶅巻
+ getRightValue(roleId, node.getChildren().get(i), allTreeMap, false, rightMap);
+ }
+ } else {
+ if (!rightMap.containsKey(funcId)) {
+ RoleRightDTO roleRightDTO = new RoleRightDTO();
+ roleRightDTO.setFuncId(funcId);
+ roleRightDTO.setRightType((short) 2); // 璁剧疆UI鏉冮檺
+ roleRightDTO.setRightValue(countRightValue(node, true));//娌℃湁鎿嶄綔鐨勬ā鍧楁潈闄愬�煎瓨鍌ㄤ负0
+ roleRightDTO.setRoleId(roleId);
+ roleRightDTO.setCreateUser(currentUserName);
+ roleRightDTO.setCreateTime(VciDateUtil.date2Str(new Date(),""));
+ roleRightDTO.setModifyUser(currentUserName);
+ roleRightDTO.setModifyTime(VciDateUtil.date2Str(new Date(),""));
+ roleRightDTO.setLicensor("");
+ rightMap.put(funcId, roleRightDTO);
+ }
+ }
+ }
+ }
-
+ /**
+ * 浼犲叆鐩存帴鎸傛帴鎿嶄綔鐨勬ā鍧楃殑鑺傜偣,璁$畻璇ヨ妭鐐圭殑鏉冮檺鍊�
+ * @param node 妯″潡鑺傜偣
+ * @param isAll 鏄惁瀛愮骇鍏ㄩ儴閫変腑
+ * @return
+ */
+ private long countRightValue(Tree node,boolean isAll){
+ long value = 0;
+ for(int i = 0;i < node.getChildren().size();i++){
+ Tree childNode = (Tree)node.getChildren().get(i);
+ if(isAll && node.getData() instanceof PLTabButton ){
+ PLTabButton obj = (PLTabButton)node.getData();
+ value += (long)Math.pow(2, obj.plSeq);//绱鍔犱笂鍚勪釜鎿嶄綔鐨勬潈闄愬��
+ }
+ }
+ return value;
}
/**
@@ -420,6 +1979,14 @@
}
});
}
+
+ /***
+ * 閬嶅巻瀛愯妭鐐�
+ * @param parentTree
+ * @param contextList
+ * @param roleRightVOMap
+ * @param isShowCheckBox
+ */
private void setChildNode(List<Tree> parentTree, List<PLUILayout>contextList,Map<String,RoleRightVO> roleRightVOMap,boolean isShowCheckBox){
Optional.ofNullable(parentTree).orElseGet(()->new ArrayList<Tree>()).stream().forEach(pTree -> {
Object funcObj= pTree.getData();
@@ -536,6 +2103,22 @@
}
});
}
+
+ /**
+ * UI瑙掕壊瀵硅薄杞崲
+ * @param vos
+ * @return
+ */
+ private List<RoleRightDTO> roleRightVOO2DTOS(List<RoleRightVO> vos){
+ List<RoleRightDTO> roleRightVOS=new ArrayList<>();
+ Optional.ofNullable(vos).orElseGet(()->new ArrayList<>()).stream().forEach(vo -> {
+ RoleRightDTO dto=roleRightVOO2DTO(vo);
+ roleRightVOS.add(dto);
+ });
+
+ return roleRightVOS;
+ }
+
/**
* UI瑙掕壊瀵硅薄杞崲
* @param infos
@@ -549,6 +2132,26 @@
});
return roleRightVOS;
+ }
+
+ /**
+ * UI瑙掕壊瀵硅薄杞崲
+ * @param dtos
+ * @return
+ */
+ private List<RoleRightInfo> roleRightDTOO2InfoS(List<RoleRightDTO> dtos){
+ List<RoleRightInfo> roleRightInfoList=new ArrayList<>();
+ Optional.ofNullable(dtos).orElseGet(()->new ArrayList<>()).stream().forEach(dto -> {
+ RoleRightInfo info= null;
+ try {
+ info = roleRightDTOO2Info(dto);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ roleRightInfoList.add(info);
+ });
+
+ return roleRightInfoList;
}
/**
@@ -569,6 +2172,46 @@
vo.setModifyTime(VciDateUtil.date2Str(VciDateUtil.long2Date(info.modifyTime),""));
vo.setModifyUser(info.modifyUser);
return vo;
+ }
+
+ /**
+ * UI瑙掕壊瀵硅薄杞崲
+ * @param vo
+ * @return
+ */
+ private RoleRightDTO roleRightVOO2DTO(RoleRightVO vo){
+ RoleRightDTO dto=new RoleRightDTO();
+ dto.setId(vo.getId());
+ dto.setCreateTime(vo.getCreateTime());
+ dto.setCreateUser(vo.getCreateUser());
+ dto.setRoleId(vo.getRoleId());
+ dto.setRightType(vo.getRightType());
+ dto.setLicensor(vo.getLicensor());
+ dto.setRightValue(vo.getRightValue());
+ dto.setFuncId(vo.getFuncId());
+ dto.setModifyTime(vo.getModifyTime());
+ dto.setModifyUser(vo.getModifyUser());
+ return dto;
+ }
+
+ /**
+ * UI瑙掕壊瀵硅薄杞崲
+ * @param dto
+ * @return
+ */
+ private RoleRightInfo roleRightDTOO2Info(RoleRightDTO dto) throws Exception {
+ RoleRightInfo info=new RoleRightInfo();
+ info.id=StringUtils.isBlank(dto.getId())?"":dto.getId();
+ info.createTime=StringUtils.isBlank(dto.getCreateTime())?new Date().getTime():VciDateUtil.getTime(VciDateUtil.str2Date(dto.getCreateTime(),""));
+ info.createUser=StringUtils.isBlank(dto.getCreateUser())?"":dto.getCreateUser();
+ info.roleId=StringUtils.isBlank(dto.getRoleId())?"":dto.getRoleId();
+ info.rightType=dto.getRightType();
+ info.licensor =StringUtils.isBlank(dto.getLicensor())?"":dto.getLicensor();
+ info.rightValue=dto.getRightValue();
+ info.funcId=StringUtils.isBlank(dto.getFuncId())?"":dto.getFuncId();
+ info.modifyTime=StringUtils.isBlank(dto.getModifyTime())? new Date().getTime() :VciDateUtil.getTime(VciDateUtil.str2Date(dto.getModifyTime(),""));
+ info.modifyUser=StringUtils.isBlank(dto.getModifyUser())?"":dto.getModifyUser();
+ return info;
}
/**
@@ -624,7 +2267,7 @@
* @param obj
* @throws PLException
*/
- public void checkCodeName(PLUILayout obj) throws PLException {
+ private void checkCodeName(PLUILayout obj) throws PLException {
PLUILayout[] plUILayouts = platformClientUtil.getUIService().getPLUILayoutsByRelatedType(obj.plRelatedType);
int length = plUILayouts.length;
String code = obj.plCode;
@@ -669,7 +2312,7 @@
//鏌ヨ鍚屼竴涓氬姟绫诲瀷涓嬬殑ui涓婁笅鏂囷紝鐒跺悗鏌ラ噸
PLUILayout[] plpagelayoutdefinations = platformClientUtil.getUIService().getPLUILayoutsByRelatedType(pluiLayout.plRelatedType);
int length = plpagelayoutdefinations.length;
- for (int i =0;i<length;i++){
+ for (int i =0; i<length; i++){
String code = plpagelayoutdefinations[i].plCode;
String name = plpagelayoutdefinations[i].plName;
String ids = plpagelayoutdefinations[i].plOId;
@@ -680,9 +2323,8 @@
break;
}
}
- }
- else {
- if (code.equalsIgnoreCase(code) || name.equals(name)){
+ }else {
+ if (code.equalsIgnoreCase(pluiLayout.plCode) || name.equals(pluiLayout.plName)){
res = true;
break;
}
@@ -691,4 +2333,894 @@
return res;
}
+ /**
+ * 涓氬姟绫诲瀷銆佹簮瀵硅薄绫诲瀷銆侀《灞傝妭鐐规樉绀虹被鍨嬬瓑閮借皟鐢ㄨ繖涓帴鍙f煡璇�
+ * @param baseQueryObject
+ * @return
+ * @throws PLException
+ */
+ public DataGrid<BizType> getBtmDatasByPage(BaseQueryObject baseQueryObject) throws PLException{
+ BizType[] btmNames = null;
+ int start = baseQueryObject.getPage() <= 1 ? 1 : (baseQueryObject.getPage() - 1) * baseQueryObject.getLimit() + 1;
+ int end = baseQueryObject.getPage() <= 1 ? baseQueryObject.getLimit() : (baseQueryObject.getPage() * baseQueryObject.getLimit());
+
+
+ String where = " 1=1 ";
+ String text = "";
+ Map<String, String> conditionMap = baseQueryObject.getConditionMap();
+ if(Func.isNotEmpty(conditionMap)){
+ //杩囨护鏉′欢
+ String filterInputValue = conditionMap.get("filterInputValue");
+ if(Func.isNotBlank(filterInputValue)){
+ where += String.format(" and (bt.name like '%%%s%%' or bt.label like '%%%s%%')", text, text);
+ }
+ }
+
+ String fromWhere = String.format(" from plbtmtype bt where %s ", where);
+ String fromWhereOrderBy = String.format(" %s order by bt.name", fromWhere);
+ String sql = String.format("select * from(" +
+ " select row_.*,rownum rownum_ from( " +
+ " select bt.name, bt.label %s" +
+ " ) row_ " +
+ ") where rownum_ >= %d and rownum_ <= %d ", fromWhereOrderBy, start, end);
+ List<BizType> list = new LinkedList<BizType>();
+ String[][] kvss = platformClientUtil.getQueryService().queryBySqlWithoutKey(sql);
+ for(String[] kvs : kvss){
+ BizType bi = new BizType();
+ bi.name = kvs[0];
+ bi.label = kvs[1];
+ list.add(bi);
+ }
+ btmNames = list.toArray(new BizType[]{});
+
+ sql = String.format("select count(1) count_ %s", fromWhere);
+ kvss = platformClientUtil.getQueryService().queryBySqlWithoutKey(sql);
+ int total = Integer.valueOf(kvss[0][0]);
+
+ DataGrid<BizType> res = new DataGrid<>();
+ res.setData(Arrays.asList(btmNames));
+ res.setTotal(total);
+ return res;
+ }
+
+ /**
+ * UI瀹氫箟涓嬫媺鏌ヨ锛坱emplateType涓篣I瀹氫箟鏃剁殑UI瀹氫箟涓嬫媺鏌ヨ锛�
+ * @param baseQueryObject selectBtmType 閫夋嫨鐨勬簮瀵硅薄,甯﹀垎椤典俊鎭�
+ * @return
+ * @throws PLException
+ */
+ public DataGrid<PLUILayout> getUILayoutDatasByPage(BaseQueryObject baseQueryObject) throws PLException{
+ PLUILayout[] datas = null;
+ int start = baseQueryObject.getPage() <= 1 ? 1 : (baseQueryObject.getPage() - 1) * baseQueryObject.getLimit() + 1;
+ int end = baseQueryObject.getPage() <= 1 ? baseQueryObject.getLimit() : (baseQueryObject.getPage() * baseQueryObject.getLimit());
+
+ String where = " 1=1 ";
+
+ Map<String, String> conditionMap = baseQueryObject.getConditionMap();
+ if(Func.isNotEmpty(conditionMap)){
+ //閫夋嫨鐨勫璞$被鍨�
+ String selectBtmType = conditionMap.get("selectBtmType");
+ if(selectBtmType != null){
+ where += String.format(" and ui.PLRELATEDTYPE = '%s' ", selectBtmType);
+ }
+ //杩囨护鏉′欢
+ String filterInputValue = conditionMap.get("filterInputValue");
+ if(Func.isNotBlank(filterInputValue)){
+ where += String.format(" and (ui.plname like '%%%s%%') ", filterInputValue, filterInputValue);
+ }
+ }
+ String fromWhere = String.format(" from PLUILAYOUT ui where %s ", where);
+ String fromWhereOrderBy = String.format(" %s order by ui.plname", fromWhere);
+ String sql = String.format("select * from(" +
+ " select row_.*,rownum rownum_ from( " +
+ " select ui.plname, ui.plcode %s" +
+ " ) row_ " +
+ ") where rownum_ >= %d and rownum_ <= %d ", fromWhereOrderBy, start, end);
+ List<PLUILayout> list = new LinkedList<PLUILayout>();
+ String[][] kvss = platformClientUtil.getQueryService().queryBySqlWithoutKey(sql);
+ for(String[] kvs : kvss){
+ PLUILayout bi = new PLUILayout();
+ bi.plName = kvs[0];
+ bi.plCode = kvs[1];
+ list.add(bi);
+ }
+ datas = list.toArray(new PLUILayout[0]);
+
+ sql = String.format("select count(1) count_ %s", fromWhere);
+ kvss = platformClientUtil.getQueryService().queryBySqlWithoutKey(sql);
+ int total = Integer.valueOf(kvss[0][0]);
+
+ DataGrid<PLUILayout> res = new DataGrid<PLUILayout>();
+ res.setData(Arrays.asList(datas));
+ res.setTotal(total);
+ return res;
+ }
+
+ /**
+ * 閫夋嫨妯℃澘涓嬫媺鏌ヨ锛坱emplateType涓鸿〃鏍笺�佽〃鍗曘�佹爲琛ㄦ椂鐨勯�夋嫨瀵硅薄涓嬫媺鏌ヨ锛�
+ * @param baseQueryObject
+ * @return
+ * @throws PLException
+ */
+ public DataGrid<PortalVI> getPortalVIDatasByPage(BaseQueryObject baseQueryObject) throws PLException{
+ PortalVI[] datas = null;
+ int start = baseQueryObject.getPage() <= 1 ? 1 : (baseQueryObject.getPage() - 1) * baseQueryObject.getLimit() + 1;
+ int end = baseQueryObject.getPage() <= 1 ? baseQueryObject.getLimit() : (baseQueryObject.getPage() * baseQueryObject.getLimit());
+
+ String where = " 1=1 ";
+
+ Map<String, String> conditionMap = baseQueryObject.getConditionMap();
+ if(Func.isNotEmpty(conditionMap)){
+ //閫夋嫨鐨勬簮瀵硅薄鎴栬�呮槸閫夋嫨鐨勭埗鑺傜偣鏄剧ず绫诲瀷
+ String selectBtmType = conditionMap.get("selectBtmType");
+ if(selectBtmType != null){
+ where += String.format(" and vi.typename = '%s' ", selectBtmType);
+ }
+ /*if(getPopupDialog().getPortalVIType() != null){
+ where += String.format(" and vi.vitype = %d ", getPopupDialog().getPortalVIType().getIntVal());
+ }*/
+ //杩囨护鏉′欢
+ String filterInputValue = conditionMap.get("filterInputValue");
+ if(Func.isNotBlank(filterInputValue)){
+ where += String.format(" and (vi.viname like '%%%s%%') ", filterInputValue, filterInputValue);
+ }
+ }
+
+ String fromWhere = String.format(" from plportalvi vi where %s ", where);
+ String fromWhereOrderBy = String.format(" %s order by vi.viname", fromWhere);
+ String sql = String.format("select * from(" +
+ " select row_.*,rownum rownum_ from( " +
+ " select vi.viname,vi.vitype %s" +
+ " ) row_ " +
+ ") where rownum_ >= %d and rownum_ <= %d ", fromWhereOrderBy, start, end);
+ List<PortalVI> list = new LinkedList<>();
+ String[][] kvss = platformClientUtil.getQueryService().queryBySqlWithoutKey(sql);
+ for(String[] kvs : kvss){
+ PortalVI bi = new PortalVI();
+ bi.viName = kvs[0];
+ bi.viType = Short.valueOf(kvs[1]);
+ list.add(bi);
+ }
+ datas = list.toArray(new PortalVI[]{});
+
+ sql = String.format("select count(1) count_ %s", fromWhere);
+ kvss = platformClientUtil.getQueryService().queryBySqlWithoutKey(sql);
+ int total = Integer.valueOf(kvss[0][0]);
+
+ DataGrid<PortalVI> res = new DataGrid<>();
+ res.setData(Arrays.asList(datas));
+ res.setTotal(total);
+ return res;
+ }
+
+ /**
+ * 鏌ヨ妯℃澘涓嬫媺鏌ヨ
+ * @param baseQueryObject
+ * @return
+ * @throws PLException
+ */
+ public DataGrid<QTInfo> getQTInfoDatasByPage(BaseQueryObject baseQueryObject) throws PLException{
+ QTInfo[] datas = null;
+ int start = baseQueryObject.getPage() <= 1 ? 1 : (baseQueryObject.getPage() - 1) * baseQueryObject.getLimit() + 1;
+ int end = baseQueryObject.getPage() <= 1 ? baseQueryObject.getLimit() : (baseQueryObject.getPage() * baseQueryObject.getLimit());
+
+ String where = " 1=1 ";
+
+ Map<String, String> conditionMap = baseQueryObject.getConditionMap();
+ if(Func.isNotEmpty(conditionMap)){
+ //閫夋嫨鐨勬簮瀵硅薄鎴栬�呮槸閫夋嫨鐨勭埗鑺傜偣鏄剧ず绫诲瀷
+ String selectBtmType = conditionMap.get("selectBtmType");
+ if(selectBtmType != null){
+ where += String.format(" and qt.btmname = '%s' ", selectBtmType);
+ }
+ //杩囨护鏉′欢
+ String filterInputValue = conditionMap.get("filterInputValue");
+ if(Func.isNotBlank(filterInputValue)){
+ where += String.format(" and (qt.qtname like '%%%s%%') ", filterInputValue, filterInputValue);
+ }
+ }
+
+ String fromWhere = String.format(" from PL_QTEMPLATE qt where %s ", where);
+ String fromWhereOrderBy = String.format(" %s order by qt.qtname ", fromWhere);
+ String sql = String.format("select * from(" +
+ " select row_.*,rownum rownum_ from( " +
+ " select qt.qtname,qt.btmname %s" +
+ " ) row_ " +
+ ") where rownum_ >= %d and rownum_ <= %d ", fromWhereOrderBy, start, end);
+ List<QTInfo> list = new LinkedList<QTInfo>();
+ String[][] kvss = platformClientUtil.getQueryService().queryBySqlWithoutKey(sql);
+ for(String[] kvs : kvss){
+ QTInfo bi = new QTInfo();
+ bi.qtName = kvs[0];
+ bi.btmName = kvs[1];
+ list.add(bi);
+ }
+ datas = list.toArray(new QTInfo[]{});
+
+ sql = String.format("select count(1) count_ %s", fromWhere);
+ kvss = platformClientUtil.getQueryService().queryBySqlWithoutKey(sql);
+ int total = Integer.valueOf(kvss[0][0]);
+
+ DataGrid<QTInfo> res = new DataGrid<QTInfo>();
+ res.setData(Arrays.asList(datas));
+ res.setTotal(total);
+ return res;
+ }
+
+ //鍩虹鍏叡妫�鏌ユ帴鍙�
+ private abstract class BaseComptInter {
+
+ /**
+ * 鍏叡鏍¢獙鏂规硶
+ * @return
+ * @throws PLException
+ */
+ public abstract boolean checkInputIsOk() throws PLException;
+
+ /**
+ * 鏍规嵁绫诲瀷涓嶅悓璁剧疆涓嶅悓鐨勫睘鎬�
+ * @param d
+ * @return
+ */
+ public abstract PLDefination getNewPLDefination(PLDefination d);
+
+ /**
+ * 闈炵┖妫�鏌�
+ * @param tip 鎻愮ず淇℃伅
+ * @param txt 鏍¢獙鐨勫唴瀹�
+ * @param isRequired 鏄惁蹇呭~
+ * @return
+ */
+ protected boolean checkRequiredIsOk(String tip, String txt,boolean isRequired/*鏄惁蹇呭~*/){
+ boolean res = false;
+ if(Func.isBlank(txt) && isRequired){
+ throw new VciBaseException(tip + " 涓嶈兘涓虹┖锛�");
+ } else {
+ res = true;
+ }
+ return res;
+ }
+
+ /**
+ * 妫�鏌tmType杈撳叆鏄惁鏈夋晥
+ * @param tipName 鎻愮ず鐨勪俊鎭�
+ * @param btmName 涓氬姟绫诲瀷鍚�
+ * @return
+ */
+ protected boolean checkBtmTypeTxtIsOk(String tipName, String btmName,boolean isRequired) throws PLException {
+ boolean res = false;
+ if(tipName == null) return true;
+ if(btmName == null) return true;
+ if(!checkRequiredIsOk(tipName, btmName, isRequired)){
+ res = false;
+ } else if(!checkBtmNameIsExist(tipName, btmName)){
+ res = false;
+ } else {
+ res = true;
+ }
+ return res;
+ }
+
+ /**
+ * 妫�鏌ヤ笟鍔$被鍨嬫槸鍚﹀瓨鍦�
+ * @param tip
+ * @param btmName
+ * @return
+ */
+ protected boolean checkBtmNameIsExist(String tip, String btmName) throws PLException {
+ boolean res = false;
+ String sql = "select count(1) count_ from plbtmtype bt where bt.name='" + btmName.trim() + "'";
+ res = checkCountNotEqualZero(sql);
+ if(!res){
+ throw new PLException("500",
+ new String[]{String.format("%s %s 鏃犳晥锛�", tip, btmName)});
+ } else {
+ res = true;
+ }
+ return res;
+ }
+
+ /**
+ * 鎵цsql锛屾鏌ユ槸鍚︽湁杩斿洖鍊�
+ * @param sql
+ * @return
+ */
+ protected boolean checkCountNotEqualZero(String sql){
+ boolean res = false;
+ try{
+ String[][] kvss = platformClientUtil.getQueryService().queryBySqlWithoutKey(sql);
+ res = Integer.valueOf(kvss[0][0]) > 0;
+ }catch(Exception ex){
+ ex.printStackTrace();
+ }
+ return res;
+ }
+
+ /**
+ * 妫�鏌ヨ〃鍗曡緭鍏ユ槸鍚︽湁鏁�
+ * @param tip
+ * @param txtVIName
+ * @param btmLinkType
+ * @return
+ */
+ protected boolean checkPortalVITxtIsOk(String tip, String txtVIName, String btmLinkType, boolean isRequired) throws PLException {
+ boolean res = false;
+ if(tip == null) return true;
+ if(txtVIName == null) return true;
+ if(!checkRequiredIsOk(tip, txtVIName,isRequired)){
+ res = false;
+ } else if(!checkPortalVIIsExist(tip, txtVIName, btmLinkType)){
+ res = false;
+ } else {
+ res = true;
+ }
+ return res;
+ }
+
+ /**
+ * 妫�鏌ユā鏉�
+ * @param tip
+ * @param txtVIName
+ * @param btmLinkType
+ * @return
+ */
+ protected boolean checkPortalVIIsExist(String tip, String txtVIName, String btmLinkType) throws PLException {
+ boolean res = false;
+ String sql = "select count(1) count_ from plportalvi vi " +
+ "where vi.typename='" + btmLinkType.trim() + "' " +
+ "and vi.viname='" + txtVIName.trim() + "'";
+ res = checkCountNotEqualZero(sql);
+ if(!res){
+ throw new PLException("500",
+ new String[]{String.format("%s %s 鏃犳晥锛�", tip, txtVIName)});
+ } else {
+ res = true;
+ }
+ return res;
+ }
+
+ /**
+ * 妫�鏌ユ煡璇㈡ā鏉胯緭鍏ユ槸鍚︽湁鏁�
+ * @param tip 杈撳叆妗嗙殑鍚嶇О锛岀敤鏉ユ彁绀�
+ * @param txtQTName 鏌ヨ妯℃澘
+ * @param btmLinkType
+ * @return
+ */
+ protected boolean checkQTNameTxtIsOk(String tip, String txtQTName, String btmLinkType, boolean isRequired) throws PLException {
+ boolean res = false;
+ if(tip == null) return true;
+ if(txtQTName == null) return true;
+ if(!checkRequiredIsOk(tip, txtQTName, isRequired)){
+ res = false;
+ } else if(Func.isNotBlank(txtQTName) && !checkQTIsExist(tip, txtQTName, btmLinkType)){
+ res = false;
+ } else {
+ res = true;
+ }
+ return res;
+ }
+
+ /**
+ * 妫�鏌ヨ〃鍗曡緭鍏ユ槸鍚︽湁鏁�
+ * @param tip
+ * @param uiName
+ * @param btmLinkType
+ * @return
+ */
+ protected boolean checkUILayoutTxtIsOk(String tip, String uiName, String btmLinkType, boolean isRequired) throws PLException {
+ boolean res = false;
+ if(tip == null) return true;
+ if(uiName == null) return true;
+ if(!checkRequiredIsOk(tip, uiName,isRequired)){
+ res = false;
+ } else if(!checkUILayoutIsExist(tip, uiName, btmLinkType)){
+ res = false;
+ } else {
+ res = true;
+ }
+ return res;
+ }
+
+ private boolean checkUILayoutIsExist(String tip, String uiName, String txtType) throws PLException {
+ boolean res = false;
+ String sql = "select count(1) count_ from PLUILAYOUT ui " +
+ "where ui.PLRELATEDTYPE='" + txtType.trim() + "' " +
+ "and ui.plcode='" + uiName.trim() + "'";
+ res = checkCountNotEqualZero(sql);
+ if(!res){
+ throw new PLException("500",
+ new String[]{String.format("%s %s 鏃犳晥锛�", tip, uiName)});
+ } else {
+ res = true;
+ }
+ return res;
+ }
+
+ /**
+ * 妫�鏌ュ綋鍓嶈緭鍏ョ殑鏌ヨ妯℃澘鏄惁瀛樺湪
+ * @param tip
+ * @param txtQTName
+ * @param txtType
+ * @return
+ */
+ protected boolean checkQTIsExist(String tip, String txtQTName, String txtType) throws PLException {
+ boolean res = false;
+
+ String sql = "select count(1) count_ from PL_QTEMPLATE qt " +
+ "where qt.btmname ='" + txtType.trim() + "' " +
+ "and qt.qtname='" + txtQTName.trim() + "'";
+
+ if(!res){
+ throw new PLException("500",
+ new String[]{String.format("%s %s 鏃犳晥锛�", tip, txtQTName)});
+ } else {
+ res = true;
+ }
+ return res;
+ }
+
+ /**
+ * 妫�鏌inkType杈撳叆鏄惁鏈夋晥
+ * @param tip
+ * @param linkTypeName
+ * @return
+ */
+ protected boolean checkLinkTypeTxtIsOk(String tip, String linkTypeName, boolean isRequired) throws PLException {
+ boolean res = false;
+ if(tip == null) return true;
+ if(linkTypeName == null) return true;
+ if(!checkRequiredIsOk(tip, linkTypeName,isRequired)){
+ res = false;
+ } else if(!checkLinkTypeIsExist(tip, linkTypeName)){
+ res = false;
+ } else {
+ res = true;
+ }
+ return res;
+ }
+
+ private boolean checkLinkTypeIsExist(String tip, String linkTypeName) throws PLException {
+ boolean res = false;
+ String sql = "select count(1) count_ from pllinktype lt " +
+ "where lt.name ='" + linkTypeName.trim() + "'";
+ res = checkCountNotEqualZero(sql);
+ if(!res){
+ throw new PLException("500",
+ new String[]{String.format("%s %s 鏃犳晥锛�", tip, linkTypeName)});
+ } else {
+ res = true;
+ }
+ return res;
+ }
+
+ }
+
+ //妯℃澘绫诲瀷涓篊ustom绫诲瀷鏃舵牎楠岃緭鍏�
+ @AllArgsConstructor
+ @NoArgsConstructor
+ private class CustomComptCheckInput extends BaseComptInter{
+
+ /**
+ * 鎺у埗璺緞
+ */
+ private String ctrlPath;
+
+ @Override
+ public boolean checkInputIsOk() throws PLException {
+ boolean res = true;
+ if(!checkRequiredIsOk(this.ctrlPath)){
+ res = false;
+ }
+ return res;
+ }
+
+ /**
+ * 鎺у埗璺緞蹇呰緭妫�鏌�
+ * @param ctrlPath
+ * @return
+ */
+ protected boolean checkRequiredIsOk(String ctrlPath) throws PLException {
+ boolean res = false;
+ String text = ctrlPath.trim();
+
+ if(Func.isBlank(text)){
+ throw new PLException("500", new String[]{"鎺у埗璺緞涓嶈兘涓虹┖锛�"});
+ } else {
+ res = true;
+ }
+ return res;
+ }
+
+ @Override
+ public PLDefination getNewPLDefination(PLDefination d) {
+ if(d == null){
+ d = new PLDefination();
+ }
+ d.setControlPath(ctrlPath);
+ return d;
+ }
+
+ }
+
+ @AllArgsConstructor
+ @NoArgsConstructor
+ private class TableComptCheckInput extends BaseComptInter{
+
+ /**
+ * 鎼滅储绫诲瀷锛氭湰瀵硅薄灞炴�э細1锛屽叧鑱斿璞″睘鎬э細2
+ */
+ private String searchTarger;
+
+ /**
+ * 涓氬姟绫诲瀷
+ */
+ private String btmType;
+
+ /**
+ * 閾炬帴绫诲瀷
+ */
+ private String linkType;
+
+ /**
+ * 閫夋嫨妯℃澘
+ */
+ private String txtVIName;
+
+ /**
+ * 鏌ヨ妯℃澘
+ */
+ private String txtQTName;
+
+ @Override
+ public boolean checkInputIsOk() throws PLException {
+ boolean res = false;
+ if(searchTarger.equals("1")){
+ res = checkBtmTypeInputIsOk(btmType,txtVIName,txtQTName);
+ } else if(searchTarger.equals("2")){
+ res = checkLinkTypeInputIsOk(txtVIName,txtQTName,btmType);
+ }
+ return res;
+ }
+
+ @Override
+ public PLDefination getNewPLDefination(PLDefination d) {
+ if(d == null){
+ d = new PLDefination();
+ }
+ if("1".equals(searchTarger)){
+ d.setSearchTarger("1");
+ d.setShowType(btmType.trim());
+ d.setTemplateId(txtVIName);
+ d.setQueryTemplateName(txtQTName);
+
+ } else if("2".equals(searchTarger)){
+ d.setSearchTarger("2");
+
+ d.setShowType(btmType);
+ d.setLinkType(linkType);
+ d.setTemplateId(txtVIName);
+ d.setQueryTemplateName(txtQTName);
+ }
+ return d;
+ }
+
+ /**
+ * 妫�鏌ヤ笟鍔$被鍨嬫槸鍚﹁緭鍏ワ紝鏄惁瀛樺湪
+ * @param txtVIName
+ * @param btmType
+ * @param txtQTName
+ * @return
+ */
+ private boolean checkBtmTypeInputIsOk(String btmType,String txtVIName/*閫夋嫨妯℃澘*/,String txtQTName/*鏌ヨ妯℃澘*/) throws PLException {
+ boolean res = false;
+ if(!super.checkBtmTypeTxtIsOk("涓氬姟绫诲瀷", btmType,true)){
+ res = false;
+ } else if(!super.checkPortalVITxtIsOk("閫夋嫨妯℃澘", txtVIName, btmType,true)){
+ res = false;
+ } else if(!super.checkQTNameTxtIsOk("鏌ヨ妯℃澘", txtQTName, btmType,false)){
+ res = false;
+ } else {
+ res = true;
+ }
+ return res;
+ }
+
+ /**
+ * 妫�鏌ラ摼鎺ョ被鍨嬫槸鍚﹁緭鍏ワ紝鏄惁瀛樺湪
+ * @param txtVIName
+ * @param txtQTName
+ * @param btmType
+ * @return
+ */
+ private boolean checkLinkTypeInputIsOk(String txtVIName/*閫夋嫨鐨勬ā鏉�*/,String txtQTName/*鏌ヨ妯℃澘*/,String btmType) throws PLException {
+ boolean res = false;
+ if(!(this.checkBtmTypeTxtIsOk("鐩爣瀵硅薄", linkType,true))){
+ res = false;
+ } else if(!(this.checkPortalVITxtIsOk("閫夋嫨妯℃澘", txtVIName, linkType,true))){
+ res = false;
+ } else if(!(this.checkQTNameTxtIsOk("鏌ヨ妯℃澘", txtQTName, linkType,false))){
+ res = false;
+ } else {
+ res = true;
+ }
+ return res;
+ }
+
+ }
+
+ @AllArgsConstructor
+ @NoArgsConstructor
+ private class TreeTableComptCheckInput extends BaseComptInter{
+
+ /**
+ * 鎼滅储绫诲瀷锛氭湰瀵硅薄灞炴�э細1锛屽叧鑱斿璞″睘鎬э細2
+ */
+ private String searchTarger;
+
+ /**
+ * 涓氬姟绫诲瀷
+ */
+ private String btmType;
+
+ /**
+ * 閾炬帴绫诲瀷
+ */
+ private String linkType;
+
+ /**
+ * 閫夋嫨妯℃澘
+ */
+ private String txtVIName;
+
+ /**
+ * 鏌ヨ妯℃澘
+ */
+ private String txtQTName;
+
+ /**
+ * 鏍戝舰缁撴瀯灞曞紑鍒�
+ */
+ private String expandCols;
+
+ /**
+ * 灞曞紑褰㈠紡锛氶�愮骇灞曞紑 1锛屽叏閮ㄥ睍寮� 0
+ */
+ private String expandMode;
+
+ @Override
+ public boolean checkInputIsOk() throws PLException {
+ boolean res = false;
+ if(searchTarger.equals("1")){
+ res = this.checkBtmTypeInputIsOk();
+ } else if(searchTarger.equals("2")){
+ res = checkLinkTypeInputIsOk();
+ }
+ return res;
+ }
+
+ @Override
+ public PLDefination getNewPLDefination(PLDefination d) {
+ if(d == null){
+ d = new PLDefination();
+ }
+ //灞炴�ц祴鍊奸噸鍙狅紝鎵�浠ヨ繖鍎挎敼鍙樹簡閫昏緫
+ d.setSearchTarger(searchTarger);
+ d.setShowType(btmType);
+ d.setTemplateId(txtVIName);
+ d.setQueryTemplateName(txtQTName);
+ d.setExpandCols(expandCols);
+ d.setExpandMode(expandMode);
+ if("2".equals(searchTarger)){
+ d.setLinkType(linkType);
+ }
+ return d;
+ }
+
+ private boolean checkBtmTypeInputIsOk() throws PLException {
+ boolean res = false;
+ if(!(super.checkBtmTypeTxtIsOk("椤剁骇鑺傜偣鏄剧ず绫诲瀷", btmType,true))){
+ res = false;
+ } else if(!(super.checkPortalVITxtIsOk("閫夋嫨妯℃澘", txtVIName, btmType,true))){
+ res = false;
+ } else if(!(super.checkQTNameTxtIsOk("鏌ヨ妯℃澘", txtQTName , btmType,false))){
+ res = false;
+ } else {
+ res = true;
+ }
+ return res;
+ }
+
+ private boolean checkLinkTypeInputIsOk() throws PLException {
+ boolean res = false;
+ if(!(super.checkBtmTypeTxtIsOk("椤剁骇鑺傜偣鏄剧ず绫诲瀷", linkType,true))){
+ res = false;
+ } else if(!(super.checkPortalVITxtIsOk("閫夋嫨妯℃澘", txtVIName, linkType,true))){
+ res = false;
+ } else if(!(super.checkQTNameTxtIsOk("鏌ヨ妯℃澘", txtQTName, linkType,false))){
+ res = false;
+ } else {
+ res = true;
+ }
+ return res;
+ }
+
+ }
+
+ @AllArgsConstructor
+ @NoArgsConstructor
+ private class TreeComptCheckInput extends BaseComptInter{
+
+ /**
+ * 涓氬姟绫诲瀷
+ */
+ private String btmType;
+
+ /**
+ * 閾炬帴绫诲瀷
+ */
+ private String linkType;
+
+ /**
+ * 鏌ヨ妯℃澘
+ */
+ private String queryTemplateName;
+
+ /**
+ * 鏍硅妭鐐规樉绀鸿〃杈惧紡
+ */
+ private String showExpressionRoot;
+
+ /**
+ * 鏍戣妭鐐规樉绀鸿〃杈惧紡
+ */
+ private String showExpression;
+
+ /**
+ * 鍙傜収鏍戣缃�
+ */
+ private String refTreeSet;
+
+
+ /**
+ * 鍒嗛殧绗�
+ */
+ private String splitChar;
+
+ /**
+ * 灞曞紑鏂瑰紡锛氶�愮骇灞曞紑 1锛屽叏閮ㄥ睍寮� 0
+ */
+ private String expandMode;
+
+ @Override
+ public boolean checkInputIsOk() throws PLException {
+ return checkBtmTypeInputIsOk();
+ }
+
+ @Override
+ public PLDefination getNewPLDefination(PLDefination d) {
+ if(d == null){
+ d = new PLDefination();
+ }
+ d.setShowType(btmType);
+ d.setLinkType(linkType);
+ d.setTemplateId(queryTemplateName);
+ d.setRootContent(showExpressionRoot.trim());
+ d.setShowAbs(showExpression.trim());
+ d.setShowLinkAbs(refTreeSet.trim());
+ d.setSeparator(splitChar.trim());
+ d.setExpandMode(expandMode);
+ return d;
+ }
+
+ private boolean checkBtmTypeInputIsOk() throws PLException {
+ boolean res = false;
+ if(!(super.checkBtmTypeTxtIsOk("涓氬姟绫诲瀷", btmType,true))){
+ res = false;
+ return res;
+ }
+ // 閾炬帴绫诲瀷涓嶄负绌烘椂锛岄渶瑕佸悓鏃舵鏌ラ摼鎺ョ被鍨嬪強閾炬帴绫诲瀷涓嬬殑鏌ヨ妯℃澘鏄惁鏈夋晥
+ if(Func.isBlank(linkType)){
+ if(!(super.checkLinkTypeTxtIsOk("閾炬帴绫诲瀷", linkType,false))){
+ res = false;
+ return res;
+ } else if(!(super.checkQTNameTxtIsOk("鏌ヨ妯℃澘", queryTemplateName, linkType,true))){
+ res = false;
+ return res;
+ }
+ } else {
+ // 閾炬帴绫诲瀷涓虹┖鏃讹紝鍙渶瑕佹鏌ヤ笟鍔$被鍨嬩笅鐨勬煡璇㈡ā鏉挎槸鍚︽湁鏁�
+ if(!(super.checkQTNameTxtIsOk("鏌ヨ妯℃澘", queryTemplateName, btmType,true))){
+ res = false;
+ return res;
+ }
+ }
+
+ if(!super.checkRequiredIsOk("鏍硅妭鐐规樉绀鸿〃杈惧紡", showExpressionRoot,true)){
+ res = false;
+ }
+ else if(!super.checkRequiredIsOk("鏍戣妭鐐规樉绀鸿〃杈惧紡", showExpression,true)){
+ res = false;
+ }
+ else if(!super.checkRequiredIsOk("鍙傜収鏍戣缃�", refTreeSet,true)){
+ res = false;
+ }
+ else {
+ res = true;
+ }
+ return res;
+ }
+
+ }
+
+ @AllArgsConstructor
+ @NoArgsConstructor
+ private class UILayoutComptCheckInput extends BaseComptInter{
+
+ /**
+ * 鎼滅储绫诲瀷锛氭湰瀵硅薄灞炴�э細1锛屽叧鑱斿璞″睘鎬э細2
+ * 鏌ヨ绫诲瀷涔熸槸璧嬪�煎埌杩欎釜灞炴�т笂锛� 涓氬姟绫诲瀷锛�1锛岄摼鎺ョ被鍨嬶細2
+ */
+ private String searchTarger;
+
+ /**
+ * 瀵硅薄绫诲瀷
+ */
+ private String uiBtmType;
+
+ /**
+ * UI瀹氫箟
+ */
+ private String uiLayout;
+
+ /**
+ * 鏌ヨ妯℃澘
+ */
+ private String queryTemplateName;
+
+ /**
+ * 鏌ヨ瀵硅薄绫诲瀷
+ */
+ private String qryType;
+
+ @Override
+ public boolean checkInputIsOk() throws PLException{
+ return checkUILayoutInputIsOk();
+ }
+
+ @Override
+ public PLDefination getNewPLDefination(PLDefination d) {
+ if (d == null) {
+ d = new PLDefination();
+ }
+
+ d.setSearchTarger(searchTarger);
+ d.setSubUiObjType(uiBtmType.trim());
+ d.setSubUILayout(uiLayout.trim());
+
+ if (searchTarger.equals("1")) {
+ d.setShowType(qryType.trim());
+ } else {
+ d.setLinkType(qryType.trim());
+ }
+ d.setQueryTemplateName(queryTemplateName.trim());
+
+ return d;
+ }
+
+ private boolean checkUILayoutInputIsOk() throws PLException {
+ boolean res = false;
+ if (!(super.checkBtmTypeTxtIsOk("瀵硅薄绫诲瀷", uiBtmType,true))) {
+ res = false;
+ } else if (!(super.checkUILayoutTxtIsOk("UI瀹氫箟", uiLayout, uiBtmType,true))) {
+ res = false;
+ } else if (!(super.checkQTNameTxtIsOk("鏌ヨ妯℃澘", queryTemplateName, qryType,false))) {
+ res = false;
+ } else {
+ res = true;
+ }
+ return res;
+ }
+
+ }
+
}
--
Gitblit v1.9.3