getMatrixinfo.jsp 8.97 KB
<%@ page import="com.engine.hrm.cmd.matrix.biz.MatrixMaintColComInfo" %>
<%@ page import="com.engine.hrm.cmd.matrix.biz.MatrixMaintConditionComInfo" %>
<%@ page import="com.engine.hrm.cmd.matrix.biz.chain.Condition164Chain" %>
<%@ page import="com.engine.hrm.cmd.matrix.biz.chain.Condition1Chain" %>
<%@ page import="com.engine.hrm.cmd.matrix.biz.chain.Condition24Chain" %>
<%@ page import="com.engine.hrm.cmd.matrix.biz.chain.Condition4Chain" %>
<%@ page import="com.engine.hrm.cmd.matrix.biz.chain.Condition7Chain" %>
<%@ page import="com.engine.hrm.cmd.matrix.biz.chain.Condition8Chain" %>
<%@ page import="com.engine.hrm.cmd.matrix.biz.chain.ConditionChain" %>
<%@ page import="com.engine.hrm.cmd.matrix.biz.chain.MatrixCondition" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.List" %>
<%@ page import="java.util.Map" %>
<%@ page import="java.util.concurrent.ConcurrentHashMap" %>
<%@ page import="weaver.conn.RecordSet" %>
<%@ page import="weaver.general.Util" %>
<%@ page import="weaver.hrm.resource.ResourceComInfo" %>
<%@ page import="com.alibaba.fastjson.JSON" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" %>
<%!

    private void loadMaintInfoByUser(String resourceid, String matrixid, String maintid,
            ConcurrentHashMap<String, Object> resourceMatrixMaints) throws Exception{

        RecordSet rs = new RecordSet();
        MatrixMaintConditionComInfo conditionComInfo = new MatrixMaintConditionComInfo();
        MatrixMaintColComInfo colComInfo = new MatrixMaintColComInfo();
        ResourceComInfo ResourceComInfo = new ResourceComInfo();

        //获取当前用户的id,分部id和部门id
        String subcompanyid = ResourceComInfo.getSubCompanyID(resourceid);
        String departmentid = ResourceComInfo.getDepartmentID(resourceid);
        String jobtitleid = ResourceComInfo.getJobTitle(resourceid);

        List<Map<String,String>> conditionList = conditionComInfo.getCondition(maintid);
        conditionList = conditionList == null ? new ArrayList<>() : conditionList;
        List<Map<String,String>> colList = colComInfo.getCol(maintid);
        colList = colList == null ? new ArrayList<>() : colList;
        MatrixCondition matrixCondition = null;

        ConcurrentHashMap<String, Object> matrixMaintMap = null;
        if (resourceMatrixMaints.containsKey(resourceid)) {
            matrixMaintMap = (ConcurrentHashMap<String, Object>) resourceMatrixMaints.get(resourceid);
            if(matrixMaintMap.containsKey(matrixid)){
                matrixCondition = (MatrixCondition) matrixMaintMap.get(matrixid);
                fillFullMatrixCondition(matrixCondition,colList);
            }else{
                matrixCondition = new MatrixCondition();
                matrixCondition.setResourceid(resourceid);
                matrixCondition.setSubcompanyid(subcompanyid);
                matrixCondition.setDepartmentid(departmentid);
                matrixCondition.setJobtitleid(jobtitleid);
                fillEmptyMatrixCondition(matrixCondition,colList);
            }
        } else {
            matrixMaintMap = new ConcurrentHashMap<>();
            matrixCondition = new MatrixCondition();
            matrixCondition.setResourceid(resourceid);
            matrixCondition.setSubcompanyid(subcompanyid);
            matrixCondition.setDepartmentid(departmentid);
            matrixCondition.setJobtitleid(jobtitleid);
            fillEmptyMatrixCondition(matrixCondition,colList);
        }
        if(matrixCondition == null){
            matrixCondition = new MatrixCondition();
        }
        rs.writeLog("conditionList:"+conditionList);
        rs.writeLog("matrixCondition:"+ JSON.toJSONString(matrixCondition));
        for(Map<String,String> conditionMap : conditionList){
            String mainttype = conditionMap.get("mainttype");
            String typevalue = conditionMap.get("typevalue");
            String typebrowservalue = conditionMap.get("typebrowservalue");
            ConditionChain conditionChain1 = new Condition1Chain("人力资源",mainttype, typevalue, typebrowservalue);
            ConditionChain conditionChain4 = new Condition4Chain("部门",mainttype, typevalue, typebrowservalue);
            ConditionChain conditionChain7 = new Condition7Chain("客户",mainttype, typevalue, typebrowservalue);
            ConditionChain conditionChain8 = new Condition8Chain("项目",mainttype, typevalue, typebrowservalue);
            ConditionChain conditionChain24 = new Condition24Chain("岗位",mainttype, typevalue, typebrowservalue);
            ConditionChain conditionChain164 = new Condition164Chain("分部",mainttype, typevalue, typebrowservalue);

            conditionChain1.setConditionChain(conditionChain4);
            conditionChain4.setConditionChain(conditionChain7);
            conditionChain7.setConditionChain(conditionChain8);
            conditionChain8.setConditionChain(conditionChain24);
            conditionChain24.setConditionChain(conditionChain164);

            conditionChain1.handleCondition(matrixCondition);
        }

        matrixMaintMap.put(matrixid, matrixCondition);
        resourceMatrixMaints.put(resourceid, matrixMaintMap);
    }

    private void fillFullMatrixCondition(MatrixCondition matrixCondition,
            List<Map<String, String>> colList) {

        if(!colList.isEmpty()){
            String tmpColids = "";
            String tmpColnames = "";
            if(matrixCondition != null){
                tmpColids = matrixCondition.getColids();
                tmpColnames = matrixCondition.getColnames();
            }

            String colids = "";
            String colnames = "";
            for(Map<String,String> colListMap : colList){
                colids += ","+colListMap.get("colid");
                colnames += ","+colListMap.get("colname");
            }
            if(colids.length() > 0){
                colids = colids.substring(1);
                if(tmpColids.length() > 0){
                    colids += ","+tmpColids;
                }
                matrixCondition.setColids(colids);
            }
            if(colnames.length() > 0){
                colnames = colnames.substring(1);
                if(tmpColnames.length() > 0){
                    colnames += ","+tmpColnames;
                }
                matrixCondition.setColnames(colnames);
            }
        }
    }
    private void fillEmptyMatrixCondition(MatrixCondition matrixCondition,
            List<Map<String, String>> colList) {

        if(!colList.isEmpty()){
            String colids = "";
            String colnames = "";
            for(Map<String,String> colListMap : colList){
                colids += ","+colListMap.get("colid");
                colnames += ","+colListMap.get("colname");
            }
            if(colids.length() > 0){
                colids = colids.substring(1);
                matrixCondition.setColids(colids);
            }
            if(colnames.length() > 0){
                colnames = colnames.substring(1);
                matrixCondition.setColnames(colnames);
            }
        }
    }

    private void loadMatrixidsByUser(String resourceid, String matrixid,
            ConcurrentHashMap<String, Object> resourceMatrixs) throws Exception{
        List<Object> matrixids = null;
        if (resourceMatrixs.containsKey(resourceid)) {
            matrixids = (List<Object>) resourceMatrixs.get(resourceid);
        } else {
            matrixids = new ArrayList<>();
        }
        if(!matrixids.contains(matrixid)){
            matrixids.add(matrixid);
        }
        resourceMatrixs.put(resourceid, matrixids);
    }
%>
<%

    try {
        String resourceid = Util.null2String(request.getParameter("resourceid"));
        String matrixid = Util.null2String(request.getParameter("matrixid"));
        if(resourceid.length() == 0){
            out.println("param resourceid is null:<br/>");
            return ;
        }
        if(matrixid.length() == 0){
            out.println("param matrixid is null:<br/>");
            return ;
        }
        ConcurrentHashMap<String, Object> resourceMatrixMaints = new ConcurrentHashMap<>();
        ConcurrentHashMap<String, Object> resourceMatrixs = new ConcurrentHashMap<>();
        RecordSet rs = new RecordSet();
        //查询所有的矩阵维护人
        String sql = "select * from MatrixMaintInfo where 1=1 ";
        if(resourceid.length() > 0){
          sql += " and resourceid="+resourceid;
        }
        if(matrixid.length() > 0){
          sql += " and matrixid="+matrixid;
        }
        rs.executeQuery(sql);
        out.print("sql::"+sql+">br/>");
        while (rs.next()) {
            String maintid = rs.getString("maintid");
            loadMaintInfoByUser(resourceid,matrixid,maintid,resourceMatrixMaints);
            loadMatrixidsByUser(resourceid,matrixid, resourceMatrixs);
        }
        out.print("resourceMatrixMaints::"+resourceMatrixMaints+">br/>");
        out.print("resourceMatrixs::"+resourceMatrixs+">br/>");

    } catch (Exception e) {
        e.printStackTrace();
        out.print(e.getMessage());
    }

%>