systemMonitorOperation.jsp 14.1 KB

<%@ page language="java" contentType="text/html; charset=UTF-8" %>
<%@page import="com.engine.workflow.cmd.monitor.MonitorBaseDataProcessingCmd"%>
<%@page import="org.apache.ibatis.scripting.xmltags.ForEachSqlNode"%>
 <%@ include file="/systeminfo/init_wev8.jsp" %>
<%@ page import="weaver.general.Util" %>
<%@ page import="java.util.*" %>
<%@ page import="weaver.general.TimeUtil"%>
<%@ page import="weaver.systeminfo.SystemEnv" %>
<%@ page import="weaver.conn.RecordSet" %>
<%@ page import="weaver.workflow.monitor.MonitorDTO"%>
<jsp:useBean id="rs" class="weaver.conn.RecordSet" scope="page" />
<jsp:useBean id="rs2" class="weaver.conn.RecordSet" scope="page" />
<jsp:useBean id="WorkflowComInfo" class="weaver.workflow.workflow.WorkflowComInfo" scope="page"/>
<jsp:useBean id="CheckSubCompanyRight" class="weaver.systeminfo.systemright.CheckSubCompanyRight" scope="page" />
<jsp:useBean id="manageDetachComInfo" class="weaver.hrm.moduledetach.ManageDetachComInfo" scope="page" />
<jsp:useBean id="subCompanyComInfo" class="weaver.hrm.company.SubCompanyComInfo" scope="page" />
<jsp:useBean id="ResourceComInfo" class="weaver.hrm.resource.ResourceComInfo" scope="page"/>
<jsp:useBean id="Monitor" class="weaver.workflow.monitor.Monitor" scope="page" />
<%
	if (user == null) {
		response.sendRedirect("/login/Login.jsp");
		return;
	}
	if (!HrmUserVarify.checkUserRight("WorkflowMonitor:All", user)){
		response.sendRedirect("/notice/noright.jsp");
		return;
	}
	String  actionKey = request.getParameter("actionKey");
	int userid=user.getUID();
	String loginid = ResourceComInfo.getLoginID(""+userid);

	String currentDate=TimeUtil.getCurrentDateString();
	String currentTime=(TimeUtil.getCurrentTimeString()).substring(11,19);
    
    int infoid = Util.getIntValue(request.getParameter("infoid"),-1);
    int monitortypeid = Util.getIntValue(request.getParameter("monitortypeid"),0);
    int subcompanyid = Util.getIntValue(request.getParameter("subcompanyid"),0);
    int detachable = Util.getIntValue(request.getParameter("detachable"),0);
     
    if("saveOrUpdate".equals(actionKey)){
    	String  monitorhrmids = Util.null2String(request.getParameter("monitorhrmids"));
        String  typeids = Util.null2String(request.getParameter("typeids"));
        String isclose = Util.null2String(request.getParameter("isclose"));
        
        //监控人
        String jkvalue = "";//监控人值
        String jktype = Util.null2String(request.getParameter("jktype")); //监控人类型
        String hrmmanageids = Util.null2String(request.getParameter("hrmmanageids"));//监控人值(管理员)
        String hrmids = Util.null2String(request.getParameter("hrmids"));//监控人值(人力资源)
        String roleids = Util.null2String(request.getParameter("roleids"));//监控人值(角色)
        
        String queryTypeid = Util.null2String(request.getParameter("queryTypeid"));
        
        //监控类型
        monitortypeid = Util.getIntValue(request.getParameter("inputt2"),0);
        
        //监控范围
        String fwtype = "";//监控范围类型
        String fwvalue = "";//监控范围取值
        String jkfw1 = Util.null2String(request.getParameter("jkfw1"));//监控范围(监控人类型为【角色】,【指定人员】时使用)
        String jkfw2 = Util.null2String(request.getParameter("jkfw2"));//监控范围(监控人类型为【系统管理员】时使用)
        String subcompanyids = Util.null2String(request.getParameter("subcompanyids"));//监控范围(指定分部)
        String departmentids = Util.null2String(request.getParameter("departmentids"));//监控范围(指定部门)
        String hrmids_fw = Util.null2String(request.getParameter("hrmids_fw"));//监控范围(指定人员)
        
        //监控路径
        int jkljtype = Util.getIntValue(Util.null2String(request.getParameter("jkljtype")),1);//0、全部 1、选择
        String ljxz = Util.null2String(request.getParameter("ljxz"));//路径选择
        
        //操作权限
        int czqxtype = Util.getIntValue(Util.null2String(request.getParameter("czqxtype")),1);//0、统一设置  1、每路径单独设置
        int isview = Util.getIntValue(Util.null2String(request.getParameter("isview")),0);//可查看流程内容
        int isdelete = Util.getIntValue(Util.null2String(request.getParameter("isdelete")),0);//可删除
        int isintervenor = Util.getIntValue(Util.null2String(request.getParameter("isintervenor")),0);//可干预流程流转
        int isForceDrawBack = Util.getIntValue(Util.null2String(request.getParameter("isForceDrawBack")),0);//可强制收回 
        int isForceOver = Util.getIntValue(Util.null2String(request.getParameter("isForceOver")),0);//可强制归档
        int issooperator = Util.getIntValue(Util.null2String(request.getParameter("issooperator")),0);//可暂停撤销启用
        if(czqxtype == 1){
        	isview = 0;
        	isdelete = 0;
        	isintervenor = 0;
        	isForceDrawBack = 0;
        	isForceOver = 0;
        	issooperator = 0;
        }
        
        //jktype监控人员类型
        if("1".equals(jktype)){ //人力资源
        	jkvalue = hrmids;
        	fwtype = jkfw1;
        }else if("2".equals(jktype)){//角色
        	jkvalue = roleids;
        	fwtype = jkfw1;
        }else if("3".equals(jktype)){//管理员帐号
        	jkvalue = hrmmanageids;
        	fwtype = jkfw2;
        }
        
        //fwtype监控范围
        if("4".equals(fwtype)){//指定分部
        	fwvalue = subcompanyids;
        }else if("7".equals(fwtype)){//指定部门
        	fwvalue = departmentids;
        }else if("10".equals(fwtype)){//指定人员
        	fwvalue = hrmids_fw;
        }
        
        String allsql = "";
	    try{
	    	List<String> wfidList = new ArrayList<String>();
		    if(jkljtype == 0){
		    	allsql = "select id from workflow_base where 1 = 1 and isvalid in ('0','1','2')";
		    	if(detachable == 1 && !"sysadmin".equals(loginid)){
		    		//sql += " and subcompanyid in ("+Monitor.getRoleCompany(""+userid)+")";
		    		allsql += " and subcompanyid in ("+subCompanyComInfo.getRightSubCompany(user.getUID(),"WorkflowMonitor:All",0)+")";
		    	}
		    	rs.execute(allsql);
		    	while(rs.next()){
		    		wfidList.add(rs.getString(1));
		    	}
		    }else{
		    	wfidList = Util.TokenizerString(ljxz,",");
		    }
		    
		    if(infoid > 0){
		    	if(jkljtype == 0) {//全部
		    		rs.execute("delete from workflow_monitor_detail where infoid = " + infoid + " and workflowid not in ("+allsql+")");
		    	
		    		rs.execute(allsql + " and id not in (select workflowid from workflow_monitor_detail where infoid = "+infoid+")");
		    		while(rs.next()){
		    			String wfid_temp = rs.getString(1);
		    			rs.executeSql("insert into workflow_monitor_detail(infoid,workflowid,operatordate,operatortime,isview,isintervenor,isdelete,isForceDrawBack,isForceOver,issooperator,operator,monitortype,subcompanyid) values ("+infoid+","+wfid_temp+",'"+currentDate+"','"+currentTime+"',"+isview+",'"+isintervenor+"','"+isdelete+"','"+isForceDrawBack+"','"+isForceOver+"','"+issooperator+"',"+userid+","+monitortypeid+","+subcompanyid+")");
		    		}
		    	}
		    	
		    	//czqxtype 统一控制的时候,需要重新初始化权限列表
		    	if(czqxtype == 0){
		    		String updatesql = "update workflow_monitor_detail set isview = "+isview+",isdelete = '"+isdelete+"',isintervenor = '"+isintervenor+"',isForceDrawBack = '"+isForceDrawBack+"',isForceOver = '"+isForceOver+"',issooperator = '"+issooperator+"' where infoid = " + infoid ;
		    		rs.execute(updatesql);
		    	}
		    	rs.execute("update workflow_monitor_info set monitortype = "+monitortypeid+", operatordate = '" + currentDate + "',operatortime = '" + currentTime + "',subcompanyid = "+subcompanyid+",flowcount = 0,jktype = '"+jktype+"',jkvalue = '"+jkvalue+"',fwtype = "+fwtype+",fwvalue = '"+fwvalue+"' where id = " + infoid);
		    }else{
		    	if(rs.getDBType().equals("oracle")){
		   		     rs.execute("select monitor_infoid.nextval from dual");
		   			 rs.next();
		   			 infoid = rs.getInt(1);
		       	 }else{
		       		 rs.execute("select max(id) from workflow_monitor_info");
		       		 if(rs.next())
		       			 infoid = rs.getInt(1) + 1;
		       		 else
		       			 infoid = 1;
		       	 }
		    	rs.execute("insert into workflow_monitor_info (id,monitortype,flowcount,operatordate,operatortime,operator,subcompanyid,jktype,jkvalue,fwtype,fwvalue) values ("+infoid+","+monitortypeid+",0,'"+currentDate+"','"+currentTime+"',"+userid+","+subcompanyid+",'"+jktype+"','"+jkvalue+"',"+fwtype+",'"+fwvalue+"')");
		    	
		    	//插入workflow_monitor_detail表
		    	for(String wfid : wfidList){
			    	rs.executeSql("insert into workflow_monitor_detail(infoid,workflowid,operatordate,operatortime,isview,isintervenor,isdelete,isForceDrawBack,isForceOver,issooperator,operator,monitortype,subcompanyid) values ("+infoid+","+wfid+",'"+currentDate+"','"+currentTime+"',"+isview+",'"+isintervenor+"','"+isdelete+"','"+isForceDrawBack+"','"+isForceOver+"','"+issooperator+"',"+userid+","+monitortypeid+","+subcompanyid+")");
			    }
		    }
		    
		    response.sendRedirect("systemMonitorSet.jsp?infoid="+infoid+"&typeid="+queryTypeid+"&subcompanyid="+subcompanyid+"&isclose="+isclose);
	   }catch(Exception e){
	   }
	}else if("del".equals(actionKey)){
		
		rs.execute("delete from workflow_monitor_info where id = " + infoid );
		rs.execute("delete from workflow_monitor_detail where infoid = " + infoid );
	    response.sendRedirect("systemMonitorStatic.jsp?typeid="+monitortypeid+"&subcompanyid="+subcompanyid);
	}else if("deleteAll".equals(actionKey)){
		String infoids = Util.null2String(request.getParameter("infoids"));
		if(!"".equals(infoids)){
			if(infoids.startsWith(","))
				infoids = infoids.substring(1);
			if(infoids.endsWith(","))
				infoids = infoids.substring(0,infoids.length()-1);
			
			rs.execute("delete from workflow_monitor_info where id in ("+infoids+")" );
			rs.execute("delete from workflow_monitor_detail where infoid in ("+infoids+")" );
		}
	    response.sendRedirect("systemMonitorStatic.jsp?typeid="+monitortypeid+"&subcompanyid="+subcompanyid);
	}else if("deldetail".equals(actionKey)){
		 String ids = request.getParameter("ids");
		 rs.execute("delete from workflow_monitor_detail where infoid = " + infoid + " and workflowid in ("+ids+")");
	}else if("updateDetail".equals(actionKey)){
		Map map = request.getParameterMap();
		String isOpenWorkflowStopOrCancel = GCONST.getWorkflowStopOrCancel();//是否开启流程暂停或取消设置
		for(Object s : map.keySet()){
			String pname = (String)s;
			if(pname.indexOf("hiddenwfid_") >= 0){
				String wfid = pname.split("\\_")[1];
				if("all".equals(wfid))
					continue;
				int isview_temp = Util.getIntValue(Util.null2String(request.getParameter("isview_"+wfid)),0);//可查看流程内容
		        int isdelete_temp = Util.getIntValue(Util.null2String(request.getParameter("isdelete_"+wfid)),0);//可删除
		        int isintervenor_temp = Util.getIntValue(Util.null2String(request.getParameter("isintervenor_"+wfid)),0);//可干预流程流转
		        int isForceDrawBack_temp = Util.getIntValue(Util.null2String(request.getParameter("isForceDrawBack_"+wfid)),0);//可强制收回 
		        int isForceOver_temp = Util.getIntValue(Util.null2String(request.getParameter("isForceOver_"+wfid)),0);//可强制归档
		        int issooperator_temp = Util.getIntValue(Util.null2String(request.getParameter("issooperator_"+wfid)),0);//可暂停撤销启用
				if(!"".equals(wfid)){
					String updatesql = "update workflow_monitor_detail set isview = "+isview_temp+",isdelete = '"+isdelete_temp+"',isintervenor = '"+isintervenor_temp+"',isForceDrawBack = '"+isForceDrawBack_temp+"',isForceOver = '"+isForceOver_temp+"'" ;
					if("1".equals(isOpenWorkflowStopOrCancel))
						updatesql += ",issooperator = '"+issooperator_temp+"'";
					updatesql += " where infoid = " + infoid + " and workflowid = " + wfid;
					rs.execute(updatesql);
				}
			}
		}
	}else if("addDetail".equals(actionKey)){
		String ids = request.getParameter("ids");
		
		//判断是否为统一设置
		String isOpenWorkflowStopOrCancel=GCONST.getWorkflowStopOrCancel();
		MonitorDTO dto = Monitor.getUnifiedSetInfo(infoid+"",isOpenWorkflowStopOrCancel);
		int isview = dto.getIsview() ? 1 : 0;
		int isintervenor = dto.getIsintervenor() ? 1 : 0;
		int isdelete = dto.getIsdelete() ? 1 : 0;
		int isForceDrawBack = dto.getIsforcedrawback() ? 1 : 0;
		int isForceOver = dto.getIsforceover() ? 1 : 0;
		int issooperator = dto.getIssooperator() ? 1 : 0;
		
		String[] idarray = ids.split(",");
		rs.execute("select subcompanyid,monitortype from workflow_monitor_info where id = " + infoid);
		rs.next();
		subcompanyid = Util.getIntValue(Util.null2String(rs.getString(1)),0);
		monitortypeid = rs.getInt(2);
		for(String wfid : idarray){
			rs.execute("select 1 from workflow_monitor_detail where infoid = " + infoid + " and workflowid = " + wfid);
			if(!rs.next()){
				rs.executeSql("insert into workflow_monitor_detail(infoid,workflowid,operatordate,operatortime,isview,isintervenor,isdelete,isForceDrawBack,isForceOver,issooperator,operator,monitortype,subcompanyid) values ("+infoid+","+wfid+",'"+currentDate+"','"+currentTime+"',"+isview+",'"+isintervenor+"','"+isdelete+"','"+isForceDrawBack+"','"+isForceOver+"','"+issooperator+"',"+userid+","+monitortypeid+","+subcompanyid+")");
			}
		}
	}
    
    /*Monitor newtable init Start*/
    //luosy 2017/12/6 (更新新表WORKFLOW_MONITOR_DT_WFID)
    MonitorBaseDataProcessingCmd monitorCmd = new MonitorBaseDataProcessingCmd();
    String[] ids = null;
    if(infoid < 0){
    	 String infoids = Util.null2String(request.getParameter("infoids"));
    		if(!"".equals(infoids)){
    			if(infoids.startsWith(","))
    				infoids = infoids.substring(1);
    			if(infoids.endsWith(","))
    				infoids = infoids.substring(0,infoids.length()-1);
    		}
    		if(infoids.indexOf(",") != -1){
    			ids = Util.TokenizerString2(infoids, ",");
    		}else{
    			ids = new String[]{infoid+""};
    		}
    }else{
    	ids = new String[]{infoid+""};
    }
   	if(ids != null || ids.length > 0){
   		for(int i = 0;i < ids.length; i++){
    		monitorCmd.initMonitorBaseData(infoid+"",user,"");
   		}
   }
   	/*Monitor newtable init End*/
%>