From 0c553fadbaa50a322fbe283ef66cd32d8d26f98b Mon Sep 17 00:00:00 2001
From: yuxc <yuxc@vci-tech.com>
Date: 星期五, 29 十一月 2024 17:38:56 +0800
Subject: [PATCH] 1、获取当前业务类型下的数据权限相关信息接口。 2、保存数据权限数据接口。 3、删除数据权限接口。 4、使用当前用户的类型查询用户接口。

---
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/SmUserQueryServiceI.java         |    6 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmUserQueryServiceImpl.java |   15 +
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsDataAuthServiceImpl.java                  |  315 +++++++++++++++++++++++++++++++++++
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/OsDataAuthServiceI.java                          |   30 +++
 Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/constant/IRightConstant.java                             |   24 ++
 Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/dto/OsDataAuthDTO.java                                   |   33 +++
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/controller/SmUserQueryController.java          |   19 ++
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/OsDataAuthController.java                     |   95 ++++++++++
 8 files changed, 537 insertions(+), 0 deletions(-)

diff --git a/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/constant/IRightConstant.java b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/constant/IRightConstant.java
new file mode 100644
index 0000000..cb56f9a
--- /dev/null
+++ b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/constant/IRightConstant.java
@@ -0,0 +1,24 @@
+package com.vci.constant;
+
+public class IRightConstant {
+    //鍏ㄩ儴鏈夋潈
+    public static final String RULETYPE_ALL_HAS = "0";
+    //鍏佽瑙勫垯
+    public static final String RULETYPE__HAS = "1";
+    //鍏ㄩ儴鏃犳潈
+    public static final String RULETYPE_ALL_NOTHAS = "2";
+    //鎷掔粷瑙勫垯
+    public static final String RULETYPE__NOTHAS = "3";
+    //鐢ㄦ埛
+    public static final String User = "user";
+    //鐢ㄦ埛缁�
+    public static final String UserGroup = "userGroup";
+    //瑙掕壊
+    public static final String Role = "role";
+
+    //鎿嶄綔
+    public static final String OPS="query,add,edit,remove,choose,choosedoc,cpdoc,pastedoc,imp,analyze,exp,rev,transfer,del,imp,ptop.add ,ptop.del,ptop.mody,lc.begin,lc.end";
+    //	public static final String OPS_ORDINARY="query,add,edit,remove,choose,choosedoc,cpdoc,pastedoc,imp,analyze,exp,rev,transfer,del,imp";
+    public static final String OPS_ORDINARY="query";
+    public static final String OPS_RELATION_LIFECYCLE="ptop.add ,ptop.del,ptop.mody,lc.begin,lc.end";
+}
diff --git a/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/dto/OsDataAuthDTO.java b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/dto/OsDataAuthDTO.java
new file mode 100644
index 0000000..a2b0bf4
--- /dev/null
+++ b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/dto/OsDataAuthDTO.java
@@ -0,0 +1,33 @@
+package com.vci.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.vci.starter.web.util.VciDateUtil;
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 鏁版嵁鏉冮檺浼犺緭瀵硅薄
+ * @author yuxc
+ * @date 2024/11/26
+ */
+@Data
+public class OsDataAuthDTO implements java.io.Serializable {
+
+    /**
+     * 绂佹淇敼杩欎釜鍊�
+     */
+    private static final long serialVersionUID = 814342725285373312L;
+
+    // 璁剧疆Table鍒楀ご淇℃伅
+    List<String> tableHeader;
+
+    //鍒楄〃鏁版嵁
+    List<Map> rowList;
+
+    //action鐨刴ap
+    Map<String, String> actionMap;
+
+}
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/SmUserQueryServiceI.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/SmUserQueryServiceI.java
index 47cb4ec..5741c4f 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/SmUserQueryServiceI.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/SmUserQueryServiceI.java
@@ -271,4 +271,10 @@
      */
     List<String> queryUserNameByRoleType(String roleType) throws PLException;
 
+    /**
+     * 浣跨敤褰撳墠鐢ㄦ埛鐨勭被鍨嬫煡璇㈢敤鎴�
+     * @return
+     * @throws VciBaseException
+     */
+    List<SmUserVO> listUserByUserType() throws PLException;
 }
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmUserQueryServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmUserQueryServiceImpl.java
index 8c2133d..701a213 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmUserQueryServiceImpl.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmUserQueryServiceImpl.java
@@ -1664,4 +1664,19 @@
 		return userNameList;
 	}
 
+	/**
+	 * 浣跨敤褰撳墠鐢ㄦ埛鐨勭被鍨嬫煡璇㈢敤鎴�
+	 * @return
+	 * @throws VciBaseException
+	 */
+	@Override
+	public List<SmUserVO> listUserByUserType() throws PLException {
+		try {
+			UserInfo[] userInfo = platformClientUtil.getFrameworkService().fetchUserInfoByType(Short.parseShort(WebUtil.getCurrentUserSessionInfo().getUsertype()));
+			return userInfoArr2VO(userInfo);
+		} catch (PLException e) {
+			throw new VciBaseException("鐧诲綍鏃讹紝鑾峰彇鐢ㄦ埛淇℃伅澶辫触锛�"+e.getMessage());
+		}
+	}
+
 }
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/controller/SmUserQueryController.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/controller/SmUserQueryController.java
index f3d796e..03d28aa 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/controller/SmUserQueryController.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/controller/SmUserQueryController.java
@@ -174,6 +174,25 @@
         }
     }
 
+
+    /**
+     * 浣跨敤褰撳墠鐢ㄦ埛鐨勭被鍨嬫煡璇㈢敤鎴�
+     * @return
+     * @throws VciBaseException
+     */
+    @RequestMapping(value = "/listUserByUserType",method = RequestMethod.GET)
+    public BaseResult<List<SmUserVO>> listUserByUserType() throws VciBaseException{
+        try {
+            List<SmUserVO> smUserVOList = userQueryService.listUserByUserType();
+            return  BaseResult.dataList(smUserVOList);
+        }catch (Exception e){
+            e.printStackTrace();
+            String exceptionMessage = "閫氳繃褰撳墠鐢ㄦ埛鐨勭被鍨嬫潵鑾峰彇鐢ㄦ埛鏁版嵁鏃跺嚭鐜伴敊璇紝鍘熷洜锛�" + VciBaseUtil.getExceptionMessage(e);
+            logger.error(exceptionMessage);
+            return BaseResult.fail(exceptionMessage);
+        }
+    }
+
     /**
      * 浣跨敤瑙掕壊鑾峰彇涓嶅湪鏌愪釜瑙掕壊涓嬬殑鐢ㄦ埛鍙傜収鍒楄〃
      * @param pkRole 瑙掕壊鐨勪富閿紝涓嶈兘涓虹┖
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/OsDataAuthController.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/OsDataAuthController.java
new file mode 100644
index 0000000..0186199
--- /dev/null
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/OsDataAuthController.java
@@ -0,0 +1,95 @@
+package com.vci.web.controller;
+
+import com.vci.corba.common.PLException;
+import com.vci.corba.framework.data.GrandValue;
+import com.vci.dto.OsPvolumeDTO;
+import com.vci.starter.web.annotation.log.VciBusinessLog;
+import com.vci.starter.web.pagemodel.BaseResult;
+import com.vci.starter.web.util.ControllerUtil;
+import com.vci.starter.web.util.VciBaseUtil;
+import com.vci.web.service.OsDataAuthServiceI;
+import com.vci.web.util.Func;
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 鏁版嵁鏉冮檺鐨勬帶鍒跺櫒
+ * @author yuxc
+ * @date 2024-11-25
+ */
+@RequestMapping("/dataAuthController")
+@RestController
+public class OsDataAuthController {
+
+    /**
+     * 鏁版嵁鏉冮檺鏈嶅姟
+     */
+    @Autowired
+    private OsDataAuthServiceI osDataAuthServiceI;
+
+
+    /**
+     * 鏃ュ織
+     */
+    private Logger logger = LoggerFactory.getLogger(getClass());
+
+    /**
+     * 鑾峰彇褰撳墠涓氬姟绫诲瀷涓嬬殑鏁版嵁鏉冮檺鐩稿叧淇℃伅
+     * @return 鏁版嵁
+     */
+    @GetMapping("/getData")
+    public BaseResult getData(String typeName){
+        try {
+            return osDataAuthServiceI.getData(typeName);
+        } catch (PLException e) {
+            BaseResult objectBaseResult = new BaseResult<>();
+            objectBaseResult.setCode(Integer.parseInt(e.code));
+            objectBaseResult.setMsg(Arrays.toString(e.messages));
+            return objectBaseResult;
+        }
+    }
+
+
+    /**
+     * 淇濆瓨鏁版嵁鏉冮檺鏁版嵁
+     * @return 淇濆瓨缁撴灉
+     */
+    @PostMapping("/saveGrand")
+    public BaseResult saveGrand(@RequestBody List<GrandValue> grandValues){
+        try {
+            return osDataAuthServiceI.saveGrand(grandValues);
+        }catch (Exception e){
+            e.printStackTrace();
+            String exceptionMessage = "淇濆瓨鏁版嵁鏉冮檺鏃跺嚭鐜伴敊璇紝鍘熷洜锛�" + VciBaseUtil.getExceptionMessage(e);
+            logger.error(exceptionMessage);
+            return BaseResult.fail(exceptionMessage);
+        }
+    }
+
+    /**
+     * 鍒犻櫎鏁版嵁鏉冮檺
+     * @param typeName 涓氬姟绫诲瀷
+     * @param ruleName 瑙勫垯鍚嶇О
+     * @return 鍒犻櫎缁撴灉
+     */
+    @DeleteMapping("/deleteTypeRuleGrand")
+    public BaseResult deleteTypeRuleGrand(String typeName,String ruleName){
+        try {
+            return osDataAuthServiceI.deleteTypeRuleGrand(typeName,ruleName);
+        }catch (Exception e){
+            e.printStackTrace();
+            String exceptionMessage = "鍒犻櫎鏁版嵁鏉冮檺鏃跺嚭鐜伴敊璇紝鍘熷洜锛�" + 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/service/OsDataAuthServiceI.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/OsDataAuthServiceI.java
new file mode 100644
index 0000000..e57a2a1
--- /dev/null
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/OsDataAuthServiceI.java
@@ -0,0 +1,30 @@
+package com.vci.web.service;
+
+import com.vci.corba.common.PLException;
+import com.vci.corba.framework.data.GrandValue;
+import com.vci.starter.web.pagemodel.BaseResult;
+
+import java.util.List;
+
+/**
+ * 鏁版嵁鏉冮檺鐨勬帶鍒跺櫒
+ * @author yuxc
+ * @date 2024-11-25
+ */
+public interface OsDataAuthServiceI {
+
+    BaseResult getData(String typeName) throws PLException;
+    /**
+     * 淇濆瓨鏁版嵁鏉冮檺鏁版嵁
+     * @return 淇濆瓨缁撴灉
+     */
+    BaseResult saveGrand(List<GrandValue> grandValues) throws PLException;
+
+    /**
+     * 鍒犻櫎鏁版嵁鏉冮檺
+     * @param typeName 涓氬姟绫诲瀷
+     * @param ruleName 瑙勫垯鍚嶇О
+     * @return 鍒犻櫎缁撴灉
+     */
+    BaseResult deleteTypeRuleGrand(String typeName, String ruleName) throws PLException;
+}
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsDataAuthServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsDataAuthServiceImpl.java
new file mode 100644
index 0000000..1738a7c
--- /dev/null
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsDataAuthServiceImpl.java
@@ -0,0 +1,315 @@
+package com.vci.web.service.impl;
+
+import com.vci.common.qt.object.Symbol;
+import com.vci.constant.IRightConstant;
+import com.vci.corba.common.PLException;
+import com.vci.corba.framework.data.GrandValue;
+import com.vci.corba.omd.btm.BizType;
+import com.vci.corba.omd.lcm.LifeCycle;
+import com.vci.corba.omd.lcm.TransitionVO;
+import com.vci.corba.omd.ltm.LinkType;
+import com.vci.corba.portal.data.PLAction;
+import com.vci.dto.OsDataAuthDTO;
+import com.vci.starter.web.exception.VciBaseException;
+import com.vci.starter.web.pagemodel.BaseResult;
+import com.vci.web.service.OsDataAuthServiceI;
+import com.vci.web.util.PlatformClientUtil;
+import com.vci.web.util.WebUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.*;
+import java.util.stream.Collectors;
+
+/**
+ * 鏁版嵁鏉冮檺鐨勬帶鍒跺櫒
+ * @author yuxc
+ * @date 2024-11-25
+ */
+@Service
+public class OsDataAuthServiceImpl implements OsDataAuthServiceI {
+
+    @Autowired
+    private PlatformClientUtil platformClientUtil;
+
+    @Override
+    public BaseResult getData(String typeName) throws PLException {
+        GrandValue[] grandValues = platformClientUtil.getFrameworkService().queryGrand(typeName);
+        // 璁剧疆Table鍒楀ご淇℃伅
+        List<String> tableHeader = new ArrayList<String>();
+        //鑾峰彇琛ㄥご鏁版嵁
+        getTableHeader(grandValues, tableHeader, typeName);
+        //鍒楄〃鏁版嵁
+        List<Map> rowList = new ArrayList<>();
+        //鑾峰彇鍒楄〃鏁版嵁
+        getTableData(grandValues, tableHeader, typeName, rowList);
+        Map<String, String> actionsMap = getAllActionsByType2(typeName, "business");
+        OsDataAuthDTO tableData = new OsDataAuthDTO();
+        tableData.setTableHeader(tableHeader);
+        tableData.setRowList(rowList);
+        tableData.setActionMap(actionsMap);
+        return BaseResult.success(tableData);
+    }
+    /**
+     * 淇濆瓨鏁版嵁鏉冮檺鏁版嵁
+     * @return 淇濆瓨缁撴灉
+     */
+    @Override
+    public BaseResult saveGrand(List<GrandValue> grandValues) throws PLException {
+        boolean isTrue = false;
+        isTrue = platformClientUtil.getFrameworkService()
+                .deleteTypeRuleGrand(grandValues.get(0).identifier.split("_")[0], grandValues.get(0).ruleName);
+        if(!isTrue){
+            throw new VciBaseException("鏁版嵁鏉冮檺鍒犻櫎澶辫触锛�");
+        }
+        // save
+        boolean isTrue_add = false;
+        try {
+            isTrue_add = platformClientUtil.getFrameworkService()
+                    .saveGrand(grandValues.toArray(new GrandValue[grandValues.size()]));
+        } catch (Exception e) {
+            throw new VciBaseException("鏁版嵁鏉冮檺淇濆瓨澶辫触锛�");
+        }
+        if (isTrue_add) {
+            return BaseResult.success("淇濆瓨鎴愬姛锛�");
+        }
+        return BaseResult.success("淇濆瓨澶辫触锛�");
+    }
+    /**
+     * 鍒犻櫎鏁版嵁鏉冮檺
+     * @param typeName 涓氬姟绫诲瀷
+     * @param ruleName 瑙勫垯鍚嶇О
+     * @return 鍒犻櫎缁撴灉
+     */
+    @Override
+    public BaseResult deleteTypeRuleGrand(String typeName, String ruleName) throws PLException {
+        // DataBase
+        boolean isTrue = platformClientUtil.getFrameworkService().deleteTypeRuleGrand(typeName,
+                    ruleName);
+        if (!isTrue) {
+            return BaseResult.success("鍒犻櫎澶辫触锛�");
+        }
+        return BaseResult.success("鍒犻櫎鎴愬姛锛�");
+    }
+
+    //add by caill start 2015 12.18 灏嗘煡璇㈠嚭鏉ョ殑action鏀惧叆鍒癿ap涓�
+    private Map<String, String> getAllActionsByType2(String typeName, String type) throws PLException {
+        Map<String,String> boActions2 = new HashMap<String,String>();
+        boActions2.put("鏌ヨ", "query");
+        PLAction[] allActions = platformClientUtil.getUIService().getAllPLActionEntityByType(typeName);
+        if (allActions == null || allActions.length == 0) {
+            return boActions2;
+        }
+        for (int i = 0; i < allActions.length; i++) {
+            if(allActions[i].plTypeType.equals(type)){
+                boActions2.put(allActions[i].plName,allActions[i].plCode);	//灏嗕腑鏂囨樉绀轰綔涓簁ey,鑻辨枃鏄剧ず浣滀负value鏀惧埌map涓�
+            }
+        }
+        return boActions2;
+    }
+
+    private void getTableData(GrandValue[] grandValues, List<String> tableHeader, String typeName, List<Map> rowList) throws PLException {
+        // 渚濇嵁瑙勫垯鍚嶇О锛岃鍒欏垎绫�
+        Map<String, List<GrandValue>> splitRuleMap = splitRuleByName(grandValues);
+        // 渚濇嵁瑙勫垯鍚嶇О
+//        int row = 0;
+        // 璁剧疆瑙勫垯璁板綍琛屾暟
+//        ruleModel.setRowCount(splitRuleMap.size());
+        // add by caill start 2016.1.11 寰楀埌btm銆乴ink銆乴ifeCyles
+        LinkType[] links = null;
+        LifeCycle lifeCycle = null;
+        BizType btm = null;
+        try {
+            btm = platformClientUtil.getBtmService().getBizTypeByName(typeName);
+            links = platformClientUtil.getLinkTypeService().getLinkTypeByBtmName(btm.name, Symbol.FROM);
+            LifeCycle[] lifeCyles = platformClientUtil.getLifeCycleService().getLifeCycles();
+            for (int m = 0; m < lifeCyles.length; m++) {
+                if (lifeCyles[m].name.equals(btm.lifeCycle)) {
+                    lifeCycle = lifeCyles[m];
+                    break;
+                }
+            }
+        } catch (Throwable e) {
+            e.printStackTrace();
+        }
+
+        // add by caill end
+//        ActionConstants act = new ActionConstants();
+        PLAction[] allActions = platformClientUtil.getUIService().getAllPLActionEntityByType(typeName);
+//        platformClientUtil.getUIService().getAllPLActionEntityByType(typeName);
+        for (Iterator<Map.Entry<String, List<GrandValue>>> iter = splitRuleMap.entrySet().iterator(); iter.hasNext();) {
+            Map.Entry<String, List<GrandValue>> entry = iter.next();
+            List<GrandValue> rules = entry.getValue();
+
+            Map<Object, Object> columnData = new HashMap<>();
+            // 澧炲姞椤甸潰缂撳瓨
+//            ruleModel.setConditionValue(row, rules);
+            columnData.put("rules",rules.get(0));
+            // add by caill start 2015 12.18 灏嗘煡鍑虹殑action鏀惧埌map涓紝娉ㄦ剰涓嶈钀戒笅鈥滄煡璇⑩��
+            Map<String, String> actionMap = new HashMap<String, String>();
+            actionMap.put("query", "鏌ヨ"); // 灏嗘搷浣滀腑鐨剄uery鏀惧叆actionMap涓�
+            for (int i = 0; i < allActions.length; i++) {
+                if (allActions[i].plTypeType.equals("business")) {
+                    actionMap.put(allActions[i].plCode, allActions[i].plName); // 灏嗘搷浣滄斁鍏ctionMap涓�
+                }
+            }
+            for (int j = 0; j < links.length; j++) {
+                for (int i = 0; i < allActions.length; i++) {
+                    if (allActions[i].plTypeType.equals("link")) {
+                        actionMap.put(links[j].name + "." + allActions[i].plCode,
+                                links[j].name + "." + allActions[i].plName);// 灏嗗叧绯绘斁鍏ctionMap涓�
+                    }
+                }
+                actionMap.put(links[j].name + "." + "query", links[j].name + "." + "鏌ヨ"); // 灏嗗叧绯讳腑鐨剄uery鏀惧叆actionMap涓�
+            }
+
+            TransitionVO[] transitions = lifeCycle != null ? lifeCycle.routes : new TransitionVO[0];
+            for (int j = 0; j < transitions.length; j++) {
+                String name = lifeCycle.name + "." + transitions[j].connect;
+                actionMap.put(name, name); // 灏嗚穬杩佹斁鍏ctionMap涓�
+            }
+            // add by caill end
+            for (int j = 0; j < rules.size(); j++) {
+                // 瑙勫垯鍚嶅拰绫诲瀷
+//                ruleModel.setValueAt(rules.get(j).ruleName, row, 0);
+                columnData.put(0, rules.get(j).ruleName);
+                if (rules.get(j).ruleType.equals(IRightConstant.RULETYPE__HAS)) {
+                    columnData.put(1, "鍏佽瑙勫垯");
+                } else if (rules.get(j).ruleType.equals(IRightConstant.RULETYPE__NOTHAS)) {
+                    columnData.put(1, "鎷掔粷瑙勫垯");
+                } else if (rules.get(j).ruleType.equals(IRightConstant.RULETYPE_ALL_HAS)) {
+                    columnData.put(1, "鍏ㄩ儴鏈夋潈");
+                } else {
+                    columnData.put(1, "鍏ㄩ儴鏃犳潈");
+                }
+                // 鎸囧畾鐨勬搷浣滆祴鍊�
+//                TableColumnModel columnModel = funclet.getRightMainPanel().getRuleTable().getColumnModel();
+                int start = rules.get(j).identifier.lastIndexOf("_") + 1;
+                String op = rules.get(j).identifier.substring(start, rules.get(j).identifier.length());
+                // add by caill start 2015.12.18 閬嶅巻map锛屾牴鎹嫳鏂囧悕绉版壘鍒扮浉搴旂殑涓枃鍚嶇О锛屽苟鏍规嵁涓枃鍚嶇О鎵惧埌瀵瑰簲鐨勫垪
+                String headerName = null;
+                Set<String> keys = null;
+                if (actionMap.size() > 0) {
+                    keys = actionMap.keySet();
+                }
+                if (keys.size() != 0) {
+                    for (Iterator<String> iterator = keys.iterator(); iterator.hasNext();) {
+                        String key = iterator.next();
+                        if (op.equals(key)) {
+                            headerName = actionMap.get(key);
+                            break;
+                        }
+                    }
+                }
+
+                int columnIndex = -1;
+                if (headerName != null) {
+//                    columnIndex = columnModel.getColumnIndex(headerName);
+                    columnIndex = tableHeader.indexOf(headerName);
+                }
+                // add by caill end
+                // int columnIndex = columnModel.getColumnIndex(op);
+                if (columnIndex >= 0) {
+//                    ruleModel.setValueAt(rules.get(j).isGrand == '1' ? true : false, row, columnIndex);
+                    columnData.put(columnIndex, rules.get(j).isGrand == '1' ? true : false);
+                }
+
+            }
+//            ++row;
+            rowList.add(columnData);
+        }
+    }
+
+    private void getTableHeader(GrandValue[] grandValues, List<String> tableHeader, String typeName) throws PLException {
+        // 鎿嶄綔淇℃伅
+        List<String> ops = new ArrayList<String>();
+        for (int i = 0; i < grandValues.length; i++) {
+            int start = grandValues[i].identifier.lastIndexOf("_") + 1;
+            String op = grandValues[i].identifier.substring(start, grandValues[i].identifier.length());
+            if (!ops.contains(op)) {
+                ops.add(op);
+            }
+        }
+        // 鎿嶄綔淇℃伅
+        String[] operations = ops.toArray(new String[ops.size()]);
+//        List<String> tablerule = new ArrayList<String>();
+        tableHeader.add("瑙勫垯鍚嶇О");
+        tableHeader.add("瑙勫垯绫诲瀷");
+        PLAction[] allActions = platformClientUtil.getUIService().getAllPLActionEntityByType(typeName);
+
+        for (int m = 0; m < operations.length; m++) {
+            if (allActions != null && allActions.length != 0) {
+                for (int i = 0; i < allActions.length; i++) {
+                    if (allActions[i].plCode.equals(operations[m])) {
+                        tableHeader.add(allActions[i].plName);
+                        break;
+                    } else if (operations[m].endsWith("." + allActions[i].plCode)) {
+                        int index = operations[m].indexOf("." + allActions[i].plCode);
+                        StringBuilder sb = new StringBuilder(operations[m]);
+                        StringBuilder actionChina = sb.replace(index + 1, operations[m].length(), allActions[i].plName);
+                        tableHeader.add(actionChina.toString());
+                        break;
+                    } else if (operations[m].equals("query")) {
+                        tableHeader.add("鏌ヨ"); // 娉ㄦ剰涓嶈钀戒笅鍐欐鐨勨�滄煡璇⑩��
+                        break;
+                    } else if (operations[m].endsWith(".query")) {
+                        int index = operations[m].indexOf(".query");
+                        StringBuilder sb = new StringBuilder(operations[m]);
+                        StringBuilder actionChina = sb.replace(index + 1, operations[m].length(), "鏌ヨ");
+                        tableHeader.add(actionChina.toString());
+                        break;
+                    }
+
+                }
+            } else {
+                if (operations[m].equals("query")) {
+                    tableHeader.add("鏌ヨ"); // 娉ㄦ剰涓嶈钀戒笅鍐欐鐨勨�滄煡璇⑩��
+                }
+                if (operations[m].endsWith(".query")) {
+                    int index = operations[m].indexOf(".query");
+                    StringBuilder sb = new StringBuilder(operations[m]);
+                    StringBuilder actionChina = sb.replace(index + 1, operations[m].length(), "鏌ヨ");
+                    tableHeader.add(actionChina.toString());
+                }
+            }
+
+        }
+
+        LifeCycle lifeCycle = null;
+        BizType btm = null;
+        try {
+            btm = platformClientUtil.getBtmService().getBizTypeByName(typeName);
+            LifeCycle[] lifeCyles = platformClientUtil.getLifeCycleService().getLifeCycles();
+            for (int j = 0; j < lifeCyles.length; j++) {
+                if (lifeCyles[j].name.equals(btm.lifeCycle)) {
+                    lifeCycle = lifeCyles[j];
+                    break;
+                }
+            }
+        } catch (Throwable e) {
+            e.printStackTrace();
+        }
+        TransitionVO[] transitions = lifeCycle != null ? lifeCycle.routes : new TransitionVO[0];
+        for (int j = 0; j < transitions.length; j++) {
+            tableHeader.add(lifeCycle.name + "." + transitions[j].connect);
+        }
+    }
+
+    private Map<String, List<GrandValue>> splitRuleByName(GrandValue[] values) {
+        Map<String, List<GrandValue>> splitRuleMap = new HashMap<String, List<GrandValue>>();
+        for (int i = 0; i < values.length; i++) {
+            if (splitRuleMap.get(values[i].ruleName) == null) {
+                List<GrandValue> ruleOfOneName = new ArrayList<GrandValue>();
+                ruleOfOneName.add(values[i]);
+                splitRuleMap.put(values[i].ruleName, ruleOfOneName);
+            } else {
+                splitRuleMap.get(values[i].ruleName).add(values[i]);
+            }
+
+        }
+        return splitRuleMap;
+
+    }
+
+
+}

--
Gitblit v1.9.3