window.print() 打印学时证明



主要按照MVC的顺序,+mapper.xml文件.
参考前台打印. //
主要技能点:
1.复选框的多选.
2.window.print();







deptViewPersonList.jsp 培训组织者的学员查询页面. 含有打印按钮和复选框的批量打印.

<%@ page language="java" contentType="text/html; charset=utf-8"
	pageEncoding="utf-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<%@ include file="/common/common.jsp"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>学员查询</title>

<%--北京方面制定的样式 添加. --%>
<script type="text/javascript" src="${pageContext.request.contextPath}/js/common/jquery/jquery-1.7.2.js"></script>
<script type="text/javascript" src="${pageContext.request.contextPath}/js/common/myLand.js"></script>
<%--分页用CSS --%>
<link href="${pageContext.request.contextPath}/css/adminx/common_style.css" rel="stylesheet" type="text/css">
<script type="text/javascript" src="${pageContext.request.contextPath}/js/webcustomer/pagination.js"></script>

<link href="${pageContext.request.contextPath}/css/adminx/jquery.fancybox-1.3.4.css" rel="stylesheet" type="text/css" media="screen"></link>
<link href="${pageContext.request.contextPath}/css/adminx/basic_layout.css" rel="stylesheet" type="text/css">

<script type="text/javascript" src="${pageContext.request.contextPath}/js/adminx/commonAll.js"></script>
<script type="text/javascript" src="${pageContext.request.contextPath}/js/adminx/fancybox/jquery.fancybox-1.3.4.js"></script>
<script type="text/javascript" src="${pageContext.request.contextPath}/js/adminx/fancybox/jquery.fancybox-1.3.4.pack.js"></script>

<%--时间控件部分 放在上面--%>
<script type="text/javascript" src="${pageContext.request.contextPath}/js/common/My97DatePicker/WdatePicker.js"></script>
<!-- artDialog样式: 3+1-->
<link id="artDialogSkin" href="${pageContext.request.contextPath }/js/adminx/artDialog/skins/blue.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="${pageContext.request.contextPath }/js/adminx/artDialog/jquery.artDialog.source.js"></script>
<script type="text/javascript" src="${pageContext.request.contextPath }/js/adminx/artDialog/plugins/iframeTools.source.js"></script>
<!-- artDialog样式 end-->

<!-- 树形图专属 3个js+2个css -->
<script type="text/javascript" src="${pageContext.request.contextPath}/js/adminx/catType.js"></script>
<script type="text/javascript" src="${pageContext.request.contextPath}/js/common/ztree/jquery.ztree.core-3.5.js"></script>
<script type="text/javascript" src="${pageContext.request.contextPath}/jsp/demo/ztreeNodes.js"></script>
<link href="${pageContext.request.contextPath}/css/common/zTreeStyle/demo.css" rel="stylesheet" type="text/css" />
<link href="${pageContext.request.contextPath}/css/adminx/zTreeStyle_special.css" rel="stylesheet" type="text/css" />
<script type="text/javascript">
	var zNodes = ${jsonTree};
	var isIE;
	
	$(document).ready(function(){
		$.fn.zTree.init($("#treeDemo"),setting,zNodes);
		if(document.all){ 
			isIE = true;
		}else{ 
			isIE = false;
		}
	});
//打印学时证明预览  单打.
function printac(startDate,endDate,targetTime,courseName,realName,idCard,certificationNum,registerFaceImage,pId){
	
	var url = "${pageContext.request.contextPath}/adminx/personAction!enterPrintAc.do?startDate="+startDate+"&endDate="+endDate+"&targetTime="+targetTime
			+"&courseName="+courseName+"&realName="+realName+"&idCard="+idCard+"&certificationNum="+certificationNum
			+"&id="+pId+"&isIE="+isIE; //personAction | +"&registerFaceImage="+registerFaceImage
	
	
	url = encodeURI(encodeURI(url));
	var res = showModalDialog(url,window,"dialogHeight=630px;dialogWidth=1000px;status=no;");
	
}


	/*
	 * 批量打印
	 */
	function printAll(){
		var ids = $("input[name='ids']:checked").length;
 		if(ids == 0){
			mylandAlert("信息提示", "请选择要打印的学时证明!");
			return;
		}else{
			var s = "";
			$("input[name='ids']:checked").each(function(){
				if($(this).attr("checked")){
					s+=$(this).val()+",";
				}
			});
			// alert("s:"+s); //把选中结合起来.
			mylandConfirmByFunc("批量打印", "确定批量打印吗?", 
					
					function(){
						
						//way2:直接请求返回页面中. 判断是否是IE,是IE提示.
						var url =  '${pageContext.request.contextPath}/adminx/personAction!batchPrintByOnePage.do?act=printer_all&idsString='+s+"&isIE="+isIE;
		    	
						url = encodeURI(encodeURI(url));
						//resizable=yes ;测试过程中; 提交的时候要改为不可调整.
					    //window.open(url,'newwindow','height=630,width=1000,top=0,left=0,toolbar=no,menubar=no,scrollbars=yes, resizable=yes,location=no, status=no')
						var res = showModalDialog(url, window,"dialogHeight=630px;dialogWidth=1000px;status=no;");		
						//way1:ajax请求.
						//myLandAjaxJson("${pageContext.request.contextPath}/adminx/personAction!batchPrint.do", "agentAction", showView);
					},
					function(){
						return;
					}
			);
		}
		
	}

	

	function showView(code,ajaxPara){
		var temp = eval("("+ajaxPara+")");
		if(code == "00" && temp.code == "00"){
			//myLandAlert("提示", temp.message); 批量获取成功.
			
			//批量打印
			var data= temp.message; //
			
		    data_count = 0;
		    var jsonarray = $.parseJSON(data);
		    
		    printer(jsonarray,data_count); //
		    
		    //way2:pringBatchByOnePage(); //在一个页面实现批量打印,通过分页的方式.
		}else{
			return;
		}
	}
	
	/*
	5s弹出,打印
	*/
	function printer(jsonarray,data_count){ //
		
		/*
	   	 在前台,使用jquery的parseJSON方法来进行解析,并用jquery的foreach的方法来进行解析
	    */
	    if(jsonarray.length == data_count){ return false; }
		
		//.B
	    //alert(jsonarray[data_count].realName);
	    /* var url = "${pageContext.request.contextPath}/adminx/personAction!enterPrintAc.do?startDate="+startDate+"&endDate="+endDate+"&targetTime="+targetTime
			+"&courseName="+courseName+"&realName="+realName
			+"&idCard="+idCard+ "&certificationNum="+certificationNum+"&registerFaceImage="+registerFaceImage +"&id="+pId; */
	    var url =  '${pageContext.request.contextPath}/adminx/personAction!enterPrintAc.do?act=printer_all&realName='+jsonarray[data_count].realName+'&idCard='+jsonarray[data_count].idCard+'&startDate='+jsonarray[data_count].startDate+
    		'&endDate='+jsonarray[data_count].endDate+'&courseName='+jsonarray[data_count].courseName+'&targetTime='+jsonarray[data_count].targetTime+'&currentDate='+jsonarray[data_count].currentDate
    		+"&idCard="+jsonarray[data_count].idCard+ "&certificationNum="+jsonarray[data_count].certificationNum+"&registerFaceImage="+jsonarray[data_count].registerFaceImage +"&id="+jsonarray[data_count].pId;
    		+'&print=1';
    	//alert("url转码前:"+url);
		url = encodeURI(encodeURI(url));
		//alert("url转码后:"+url);
		//way2:window.open(); 请求action. //${pageContext.request.contextPath}/adminx/viewPerson/printAc.jsp || +Math.random()
	    window.open(url,'newwindow','height=630,width=1000,top=0,left=0,toolbar=no,menubar=no,scrollbars=no, resizable=no,location=no, status=no')
	   
	    //way1.B :showModalDialog(); //"${pageContext.request.contextPath}/adminx/personAction!enterPrintAc.do?startDate="+startDate+"&endDate="+endDate+"&targetTime="+targetTime+"&courseName="+courseName+"&realName="+realName+"&idCard="+idCard; //personAction |
	    if(data_count < jsonarray.length){
	        data_count++;
	        window.setTimeout(printer,5000,jsonarray,data_count);
	    }
	    
	    /*
	    $.each(jsonarray,function(i,n)){
	    	alert(n.realName);
	    }
	    */
	    
	}
	
	/*
	需注意: setTimeout()
	如果传入的是一个对象,那么它是不支持的。我要传的参数那必须是有obj的。通过网络的力量得到解决,假如此方法,就可以传obj参数了:
	*/
	var __sto = setTimeout;
	window.setTimeout = function(callback,timeout,param)
	{
	    var args = Array.prototype.slice.call(arguments,2);
	    var _cb = function()
	    {
	        callback.apply(null,args);
	    }
	    __sto(_cb,timeout);
	}
	
</script>

</head>
<body>

	<%--学员信息列表查询 --%>
<form id="agentAction" name="quryForm" action="${pageContext.request.contextPath}/adminx/deptViewPerson.do" method="post">
<s:hidden name="flag" id="flag"></s:hidden>
	<div id="container"><!-- 总外容器 含两部分,头部条件,下部分列表显示的-->
		<div class="ui_content"> <!-- 头部 溢出隐藏. -->
			<div class="ui_text_indent">
				<%--整体盒子分 三大部分.头部 搜索提示 --%>
				<div id="box_border" > <%--头部的css --%>
					<c:if test="${ agent_id==null}">
					<%--如果没有agent_id,就是从组织者学员查询来的;有则是从代理明细/学员查询过来的. --%>
					<div id="box_center" style="height: 110px;"> <!--css 时间,普通用2,select用4.提交的时候,不管我的form -->
					<table > <%--border="2px black solid;" --%>
						<tr>
							<td>
							身份证号:</td>
							<td>
							<input id="pIdCard" class="ui_input_txt02" name="viewPerson.pIdCard" value="${qc.conditionsObj.pIdCard }"/>
							</td>
							<td>
							姓名:</td>
							<td>
							<input  id="pRealName" name="viewPerson.pRealName" class="ui_input_txt02" value="${qc.conditionsObj.pRealName }"/>
							</td>
							<td>
							组织机构:</td>
							<td>
							<select id="deptId" name="deptId"  class="ui_input_txt05">
								<option value="all">全部</option>
								<c:if test="${deptList!=null && fun:length(deptList)>0 }"> <%--和数据统计的 对比. ★ --%>
									<c:forEach var="t" items="${deptList }">
										<option value="${t.id }"<c:if test="${qc.conditionsStr.deptId==t.id }">selected</c:if>>${t.name }</option>
									</c:forEach>
								</c:if>
							</select>
							</td>
						</tr>
						<tr>
							<td>
								类别体系:
							</td>
							<td>
								<div class="menuContent">
									<div class="zTreeDemoBackground left"> <%--value="${qc.conditionsStr.licenseType}" 对应7--%>
										<input type="text" id="catTypeId" name="catTypeId" style="width:220px; readonly="readonly" class="ui_input_txt02" onclick="showMenu(); return false;" value="${qc.conditionsStr.catTypeId }"/> 
										<input type="hidden" name="licenseType" id="licenseType"/>
									</div>
								</div>
								
								<div id="menuContent" class="menuContent" style="display:none;position:absolute;z-index: 100;">
									<ul id="treeDemo" class="ztree" style="margin-top: 0;height:120px;"></ul>
								</div>
							</td>
							<td>
								时间段:
							</td>
							<td>
								<input id="begintime" class="Wdate ui_input_txt02"  name="begintime" value="<s:date name="begintime" format="yyyy-MM-dd"/>"  onfocus="WdatePicker({maxDate:'#F{$dp.$D(\'endtime\')}'})" />
								至
								<input id="endtime" class="Wdate ui_input_txt02"  name="endtime" value="<s:date name="endtime" format="yyyy-MM-dd"/>"   onfocus="WdatePicker({minDate:'#F{$dp.$D(\'begintime\')}'})"/>
								<%--style="height:28px;"
								1.B原,精确到s onfocus="WdatePicker({lang:'zh-cn',dateFmt:'yyyy-MM-dd HH:mm:ss'})" 
								2.B <s:textfield  id="begintime" name="begintime"  cssClass="ui_select01" onfocus="WdatePicker({lang:'zh-cn',dateFmt:'yyyy-MM-dd'})"></s:textfield> 缺陷:onfocus
								关键控制显示的值.否则,onclick变为1900年的.
								--%>
							</td>
							<td>
								学习状态:
							</td>
							<td>
								<select id="planStatus" name="viewPerson.ppPlanStatus" class="ui_input_txt05">
									<option value="all">全部</option>
									<option value="0" <c:if test="${qc.conditionsStr.ppPlanStatus == '0' }">selected</c:if>>未开通</option>
									<option value="1" <c:if test="${qc.conditionsStr.ppPlanStatus == '1' }">selected</c:if>>未支付</option>
									<option value="2" <c:if test="${qc.conditionsStr.ppPlanStatus == '2' }">selected</c:if>>支付中</option>
									<option value="3" <c:if test="${qc.conditionsStr.ppPlanStatus == '3' }">selected</c:if>>学习中</option>
									<option value="4" <c:if test="${qc.conditionsStr.ppPlanStatus == '4' }">selected</c:if>>已完成</option>
									<option value="9" <c:if test="${qc.conditionsStr.ppPlanStatus == '9' }">selected</c:if>>已取消</option>
								</select>
							</td>
						</tr>
					</table>
					</div> <!-- 中间部分的搜索条件 **) end-->
					
					<div id="box_bottom" style="text-align:left;border: 2px;">
						<input type="submit" value="查询" class="ui_input_btn01"  /><!-- &nbsp; -->
						<input type="button" value="打印合格证明" class="ui_input_btn01" onclick="javascript:printAll();"/>
						<font class="tip">注:打印功能仅限完成学习的学员</font>
					</div>
					</c:if>
				</div>
			</div> <!-- ui_text_indent end-->
		</div>	<!-- ui_content end -->
		<div class="ui_content">
			<div class="ui_tb">
				<table  id="dataTable" class="table" cellspacing="0" cellpadding="0" width="100%" align="center" border="0">
				<tr>
					<th width="5%">
						<input name="chkAll" id="chkAll" type="checkbox" onclick="javascript:checkAll('chkAll', 'ids');" value="checkbox"/>
					</th>
					<th width="50">序号</th>
					<th>身份证号</th>
					<th>姓名</th>
					<%--<th>性别</th>  --%>
					<th>联系电话</th>
					<%-- <th>学员状态</th>--%>
					<th>最后登录时间</th>
					<th>计划名称</th>
					<%-- 
					<th>计划状态</th>
					--%>
					<th>注册时间</th>
					<%--<th>有效期开始</th>
					<th>有效期结束</th> --%>
					<th>当前学时/目标学时</th>
					<th>最后学习时间</th>
					<th>操作</th>
				</tr>
				<c:choose>
					<c:when test="${empty viewList}">
						<tr>
							<td colspan="15">
								无相关记录
							</td>
						</tr>
					</c:when>
					<c:otherwise>
						<c:forEach var="viewList" items="${viewList}" varStatus="stats">
						<tr>
							<td align="center"> <%--disabled="disabled" --%>
								
								<input name="ids" id="ids" type="checkbox" value="${viewList.ppId }" <c:if test="${ viewList.ppPlanStatus != '4'}">disabled="true"</c:if>/>
							</td>
							<td>
								<%-- <input type="text" name="ppId" id="ppId" value="${viewList.ppId }"/> --%>
								<myland:index qc="${qc}" step="${stats.index+1}"/><%-- ppId为:${viewList.ppId } --%>
							</td>
							<td>${viewList.pIdCard}</td>
							<td>${viewList.pRealName}</td>
							<%-- <td>
								<c:choose>
									<c:when test="${viewList.pSex=='0'}">男</c:when>
									<c:when test="${viewList.pSex=='1'}">女</c:when>
									<c:when test="${viewList.pSex=='2'}">未知</c:when>
								</c:choose>
							</td> --%>
							<td>${viewList.pTel}</td>
							<%-- <td>
								<c:choose>
									<c:when test="${viewList.pPStatus=='0'}">注册</c:when>
									<c:when test="${viewList.pPStatus=='1'}">已付费</c:when>
									<c:when test="${viewList.pPStatus=='2'}">付费中</c:when>
									<c:when test="${viewList.pPStatus=='3'}">学习中</c:when>
									<c:when test="${viewList.pPStatus=='4'}">完成</c:when>
								</c:choose>
							</td> --%>
							<td>${viewList.pLastLogin}</td>
							<td>${viewList.planName}</td>
							<%-- 
							<td>
								<c:choose>
									<c:when test="${viewList.ppPlanStatus=='0'}">测试学员</c:when>
									<c:when test="${viewList.ppPlanStatus=='1'}">普通学员</c:when>
								</c:choose>
								<td>
								<c:choose>
									<c:when test="${viewList.ppAddType=='0'}">注册</c:when>
									<c:when test="${viewList.ppAddType=='1'}">导入</c:when>
								</c:choose>
							</td>
							</td>
							 --%>
							<td>
							${viewList.pAddTime }<%--datetime的显示方式 --%>
							</td><%-- String的显示方式 s:date format="yyyy-MM-dd" datetime 数据类型 只显示时分秒--%>
							<td>${viewList.ppSumStudyTime}/${viewList.ppTargetStudyTime}</td>
							<td>
								<fmt:formatDate value="${viewList.ppLastDate}" pattern="yyyy-MM-dd HH:mm:ss"/>
							</td>
							<td width="80">
								<span class="chakan">
									<a href="${pageContext.request.contextPath}/adminx/personRecordAction.do?personId=${viewList.ppPersonId}&personPlanId=${viewList.ppId}">学习记录</a>									
								</span>
								<span class="chakan">
									<a href="${pageContext.request.contextPath}/adminx/personExamAction.do?personPlanId=${viewList.ppId}">考试记录</a>
								</span>
								<span class="chakan">
									<myland:adminx_auth action="/adminx/personPhotoCheckAction.do">
										<a href="${pageContext.request.contextPath}/adminx/personPhotoCheckAction.do?personPlanId=${viewList.ppId}">照片审核</a>
									</myland:adminx_auth>
								</span>
								<span class="chakan">
									<%-- <myland:adminx_auth action=""></myland:adminx_auth> 
									ppStartDate,
		pp_end_date AS ppEndDate,
									
									 ${viewList.ppRegisterFaceImage }--%>
									<c:if test="${ viewList.ppPlanStatus == '4'}">
										<a href="#" onclick="printac('<fmt:formatDate value="${viewList.startLearnTime}" pattern="yyyy-MM-dd"/>','<fmt:formatDate value="${viewList.finishLearnTime}" pattern="yyyy-MM-dd"/>','${viewList.ppTargetStudyTime }','${viewList.planName }','${viewList.pRealName }','${viewList.pIdCard}','${viewList.certificationNum }','${viewList.ppRegisterFaceImage }','${viewList.pId }');return false;" >打印学时证明</a>
									</c:if>
								</span>
							</td>
						</tr>
					</c:forEach>
					</c:otherwise>
				</c:choose>
			</table>
			</div> <%--中部 end --%>
			<myland:page pagination="${qc.pagination}" showType="002"/>
		</div><%--ui_content end --%>
	</div><!-- 总外容器 end-->
</form> <!-- 总form end -->	
<%-- 提交打印的表单 --%>
<form action="" id="printForm" name="printForm" method="post">
	<input type="hidden" id="startDate" name="startDate"/>
	<input type="hidden" id="endDate" name="endDate"/>
	<input type="hidden" id="targetTime" name="targetTime"/>
	<input type="hidden" id="courseName" name="courseName" />
	<input type="hidden" id="realName" name="realName" />
	<input type="hidden" id="idCard" name="idCard" />
</form>
</body>
</html>


PersonAction.java 主要方法printAc(); 打印;
printAcBatch(); 批量打印
package com.myland.jp.adminx.person.action;

import java.io.File;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

import com.google.gson.Gson;
import com.myland.framework.annotation.Token;
import com.myland.framework.base.AjaxHead;
import com.myland.framework.base.BaseAction;
import com.myland.framework.init.BaseConf;
import com.myland.framework.mybatis.query.Condition;
import com.myland.framework.mybatis.query.CxxString;
import com.myland.framework.mybatis.query.QueryCriterion;
import com.myland.framework.mybatis.query.QueryRulesCreator;
import com.myland.framework.util.ExceptionPrintUtil;
import com.myland.framework.util.LogUtil;
import com.myland.framework.util.collections.ListUtil;
import com.myland.framework.util.collections.MapUtil;
import com.myland.framework.util.time.DateFormatUtil;
import com.myland.jp.common.CommonMessage;
import com.myland.jp.common.service.AgentService;
import com.myland.jp.common.service.PersonFaceImageService;
import com.myland.jp.common.service.PersonPlanService;
import com.myland.jp.common.service.PersonService;
import com.myland.jp.common.service.PlanService;
import com.myland.jp.common.service.ViewPersonPersonPlanService;
import com.myland.pojo.Person;
import com.myland.pojo.PersonFaceImage;
import com.myland.pojo.Plan;
import com.myland.pojo.User;


/**学员管理
 * 
 * @create 2015年1月12日
 */
public class PersonAction extends BaseAction {

    /**
     * 序列号
     */
    private static final long serialVersionUID = 1759551448629970681L;
    
    /**
     * 日志工具类
     */
    private static final Logger log = LogManager.getLogger(PersonAction.class);
    
    /**
     * 学员业务逻辑操作
     */
    private PersonService personService;
    
    /**
     * 学习计划业务逻辑操作
     */
    private PlanService planService;
    
    /**
     * 学员学习计划业务逻辑操作
     */
    private PersonPlanService personPlanService;
    
    /**
     * 代理商业务逻辑处理类
     */
    private AgentService agentService;
    
    /**
     * 学员权限Map
     */
    private Map<String, String> resDatasMap;
    
    /**
     * 学员对应的权限
     */
    private String resDatas_dept;
    
    /**
     * 代理商对应的权限
     */
    private String resDatas_agent;
    
    /**
     * 学习计划ids
     */
    private String planIds;
    
    /**
     * 学员id
     */
    private String id;
    
    private String personPlanStatus;
    
    
    /**
     * 学员实体
     */
    private Person person;
    
    /**
     * 学员身份证(登录账号)
     */
    private String loginId;
    
    /**
     * 学员姓名
     */
    private String realName;
    
    /**
     * 代理商Id
     */
    private String agentId;
    
    /**
     * 代理商列表
     */
    private List agentList;
    
    /**
     * 学员列表
     */
    private List<Map> personList;
    
    private List<Person> impPersonList = new ArrayList<Person>();
    
    private String newFileName; //新生成的文件名
    
    private String errFlag ;
    
    /**
     * 学习计划集合列表
     */
    private List<Plan> planList;
    
    /**
     * 标准查询
     */
    private QueryCriterion qc;

    /**
     * 学员列表页脚
     */
    private String bar;
    
    /**
     * 权限不足跳转的页面
     */
    final String loginPage = BaseConf.get().getString(BaseConf._ADMINX_NAMED_RESOURCES_LOGIN);
    
    /**
     * 上传文件
     */
    private File impPerson;
    
    /**
     * 上传文件名
     */
    private String impPersonFileName ;
    
    /*startDate").attr("value",startDate);
    $("#endDate").attr("value",endDate);
    $("#targetTime").attr("value",targetTime);
    $("#courseName
*/    
    //打印相关 开始时间etc.
    private String startDate;
    private String endDate;
    private String targetTime;
    private String courseName;
    private String idCard;
    
    /**
     * id数组
     */
    private String ids[];
    
    /**
     * ,拼接的ids
     */
    private String idsString;
    /**
     * 学员信息列表
     */
    private List<Map<String, Object>> viewList;
    
    private List<Map<String,Object>> ppInfoAndImage = new ArrayList<Map<String,Object>>();

    /**
     * json返回信息
     */
    private AjaxHead bm = new AjaxHead("00", null);

    /**
     * 当前时间
     */
    private String currentDate; 
    
    /**
     * 是否是批量打印. print_all为批量打印.
     */
    private String act;

    /**
     * 从业资格证件号
     */
    private String certificationNum;
    
    /**
     * 获取人脸识别的照片
     */
    private PersonFaceImageService personFaceImageService;
    /**
     * 注册人脸照片
     */
    private String registerFaceImage;
    
    /**
     * 学员的最后四张照片.
     */
    private List<PersonFaceImage> personFaceImages = new ArrayList<PersonFaceImage>();
    
    /**
     * 判断浏览器是否是IE
     */
    private String isIE;
    
    @Override
    public String execute() throws Exception {
        int ret = this.initPerson();
        if(ret != 0) {
            getRequest().setAttribute("err","权限不足!");
            getRequest().setAttribute("rtnurl", loginPage);
            return ERROR;
        }
        return SUCCESS;
    }

    /**
     * 学员列表初始化
     * @author wangdaiwei
     * @create 2015年1月12日 下午7:00:12
     */
    public int initPerson(){
        //从session中获取数据权限Map并找到部门信息访问权限,进行控制
        resDatasMap = (Map<String, String>) getSession().getAttribute("resDatas");
        if (MapUtil.isNotEmpty(resDatasMap)) {
            resDatas_dept = resDatasMap.get("ORGANIZER_DATA");
            resDatas_agent = resDatasMap.get("AGENT_DATA");
        }        
        if(StringUtils.isBlank(resDatas_dept)){
            return -1;
        }

     // 查询数据权限范围内的代理商
        agentList = agentService.getAgentByIds(resDatas_agent);
        StringBuffer sbf = new StringBuffer();
        for(String deptId : resDatas_dept.split(",")){
            sbf.append("'").append(deptId).append("',");
        }        
        final String deptIds = sbf.toString();
        qc = this.getQueryCriterion(new QueryRulesCreator(){

            @Override
            public Map<String, Condition> createConditions() {
                // TODO Auto-generated method stub
                Map<String, Condition> conditions = new HashMap<String, Condition>();
                conditions.put("deptId",new CxxString(deptIds.substring(0,deptIds.length()-1)));
                if (!"".equals(loginId) && loginId != null) {
                    conditions.put("pLoginId", new CxxString(loginId));
                }
                if (!"".equals(realName) && realName != null) {
                    conditions.put("pRealName", new CxxString(realName));
                }
                if (!"all".equals(agentId) && agentId != null) {
                    conditions.put("agentId", new CxxString(agentId));
                }
                return conditions;
            }

            @Override
            public String createKeyFlds() {
                // TODO Auto-generated method stub
                return null;
            }
            
        });
        
        //分页样式
        qc.getPagination().setShowType("002");
        //根据标准查询获得银行信息分页列表
        personList = personService.queryPersonForPage(qc);        
        // 获取分页页脚
        bar = qc.getPagination().toBar();   
        return 0;
    }
    
    /**
     * 添加学员及学员的学习计划
     * @author wangdaiwei
     * @create 2015年1月13日 下午7:48:39
     * @return
     */
    public String addPerson(){
        //从session中获取数据权限Map并找到部门信息访问权限,进行控制
        resDatasMap = (Map<String, String>) getSession().getAttribute("resDatas");
        if (MapUtil.isNotEmpty(resDatasMap)) {
            resDatas_dept = resDatasMap.get("ORGANIZER_DATA");
        }        
        if(StringUtils.isBlank(resDatas_dept)){
            getRequest().setAttribute("err","权限不足!");
            getRequest().setAttribute("rtnurl", loginPage);
            return ERROR;
        }
        
        StringBuffer sbf = new StringBuffer();
        for(String deptId : resDatas_dept.split(",")){
            sbf.append("'").append(deptId).append("',");
        }
        final String deptIds = sbf.toString().substring(0,sbf.toString().length()-1);
        planList = planService.getPlanListByDeptIds(deptIds);        
        return "addPerson";
    }
    
    /**
     * 修改学员及学员的学习计划
     * @author wangdaiwei
     * @create 2015年1月15日 上午9:32:08
     * @return
     */
    public String modifyPerson(){
      //从session中获取数据权限Map并找到部门信息访问权限,进行控制
        resDatasMap = (Map<String, String>) getSession().getAttribute("resDatas");
        if (MapUtil.isNotEmpty(resDatasMap)) {
            resDatas_dept = resDatasMap.get("ORGANIZER_DATA");
        }        
        if(StringUtils.isBlank(resDatas_dept)){
            getRequest().setAttribute("err","权限不足!");
            getRequest().setAttribute("rtnurl", loginPage);
            return ERROR;
        }
        person = personService.getPersonById(Long.valueOf(id));
        if(person != null) {
        	// 查询取消的计划学员是否已重新绑定计划
        	int cnt = personPlanService.getPersonPlanCountForNotCancel(person.getId());
        	if(cnt > 0) {
        		personPlanStatus = "0";
        	}
        }
       
        planIds = personPlanService.getPlanIdsByPersonId(person.getId().toString());
        StringBuffer sbf = new StringBuffer();
        for(String deptId : resDatas_dept.split(",")){
            sbf.append("'").append(deptId).append("',");
        }
        final String deptIds = sbf.toString().substring(0,sbf.toString().length()-1);
        planList = planService.getPlanListByDeptIds(deptIds); 
        return "modifyPerson";
    }
    
    /**
     * 删除学员
     * @author wangdaiwei
     * @create 2015年1月15日 下午5:21:29
     * @return
     */
    public String deletePerson(){
        User curuser = (User) getRequest().getSession().getAttribute("curuser");
        if (null == curuser) {
            getRequest().setAttribute("err", "session信息丢失!");
            getRequest().setAttribute("rtnurl", loginPage);
            return ERROR;
        }
        if(StringUtils.isBlank(id)){
            getRequest().setAttribute("err","参数不正确!");
            getRequest().setAttribute("rtnurl", loginPage);
            return ERROR;
        }
        try{
            Person ps = new Person();
            ps.setId(Long.valueOf(id));
            ps.setPStatus("9");
            personService.updatePerson(ps);
            LogUtil.Log("13", curuser.getId(), curuser.getName(), "删除学员" ,"Person",Long.valueOf(id),"3");
        }catch(Exception e){
            ExceptionPrintUtil.PrintErrorMessage(e, log);
            getRequest().setAttribute("err",e.getMessage());
            getRequest().setAttribute("rtnurl",loginPage);
            return ERROR;
        }
        this.initPerson();
        return SUCCESS;
    }
    
    /**
     * 根据学员身份证号(登录账号)检查是否有该学员,有 把相关信息查出来
     * @author wangdaiwei
     * @create 2015年1月14日 下午8:38:46
     */
    public void checkPersonByloginId(){
        Gson gson = new Gson();
        Map<String,Object> paraMap = new HashMap<String,Object>();
        paraMap.put("loginId", loginId);
        List<Person> personList = personService.queryPersonByLoginId(paraMap);
        if(ListUtil.isEmpty(personList)){
            CommonMessage cm = new CommonMessage(false, null);
            String rsMsg = gson.toJson(cm);
            printAjaxMessage(rsMsg);
        } else {
        	CommonMessage cm = new CommonMessage(true, personList.get(0));
            String rsMsg = gson.toJson(cm);
            printAjaxMessage(rsMsg);
        }
    }
    
    /**
     * 添加保存学员及学员的学习计划
     * @author wangdaiwei
     * @create 2015年1月14日 下午1:53:39
     * @return
     */
    @Token
    public String savePerson(){
        User curuser = (User) getRequest().getSession().getAttribute("curuser");
        if (null == curuser) {
            getRequest().setAttribute("err", "session信息丢失!");
            getRequest().setAttribute("rtnurl", loginPage);
            return ERROR;
        }
        if(null == person || StringUtils.isBlank(planIds)){
            getRequest().setAttribute("err","参数不正确!");
            getRequest().setAttribute("rtnurl", loginPage);
            return ERROR;
        }
        try{
            personService.addPersonAndPersonPlan(person, planIds);
            LogUtil.Log("13", curuser.getId(), curuser.getName(), "新增学员" ,"Person",person.getId(),"1");
        }catch(Exception e){
            ExceptionPrintUtil.PrintErrorMessage(e, log);
            getRequest().setAttribute("err",e.getMessage());
            getRequest().setAttribute("rtnurl",loginPage);
            return ERROR;
        }
        this.initPerson();
        return SUCCESS;
    }
    
    /**
     * 修改保存学员及学员的学习计划
     * @author wangdaiwei
     * @create 2015年1月15日 下午4:05:28
     * @return
     */
    @Token
    public String updatePerson(){
        User curuser = (User) getRequest().getSession().getAttribute("curuser");
        if (null == curuser) {
            getRequest().setAttribute("err", "session信息丢失!");
            getRequest().setAttribute("rtnurl", loginPage);
            return ERROR;
        }
        if(null == person){
            getRequest().setAttribute("err","参数不正确!");
            getRequest().setAttribute("rtnurl", loginPage);
            return ERROR;
        }
        try{
            Person oldPerson = personService.getPersonById(person.getId());
            String oldPlanIds = personPlanService.getPlanIdsByPersonId(person.getId().toString());
            personService.updatePersonAndPersonPlan(person, planIds);
            //记录日志
            Map<String,String> fieldsMap = new HashMap<String,String>();
            fieldsMap.put("姓名", "realName");
            fieldsMap.put("性别", "sex");
            fieldsMap.put("手机号", "tel");
            fieldsMap.put("电子邮件", "email");
            fieldsMap.put("地址", "address");
            String logContStr = LogUtil.getObjectChangeLogInfo(oldPerson,person,fieldsMap);            
            StringBuffer contStrbuf = new StringBuffer();
            contStrbuf.append(logContStr);
            if(StringUtils.isNotBlank(planIds)){
                contStrbuf.append("学习计划:").append(oldPlanIds).append("-->").append(oldPlanIds);
                contStrbuf.append(",").append(planIds);
            }
            LogUtil.Log("13", curuser.getId(), curuser.getName(), contStrbuf.toString() ,"Person",person.getId(),"2");
        }catch(Exception e){
            ExceptionPrintUtil.PrintErrorMessage(e, log);
            getRequest().setAttribute("err",e.getMessage());
            getRequest().setAttribute("rtnurl",loginPage);
            return ERROR;
        }
        this.initPerson();
        return SUCCESS;
    }    

    /**
     * 打开导入学员信息页面
     * @return
     */
    public String impPerson(){
    	return "impPerson";
    }
    
    
    /**
     * 加载excel文件中学员信息
     * @return
     */
    @SuppressWarnings("unchecked")
	public String readExcelPerson(){
    	User curuser = (User) getRequest().getSession().getAttribute("curuser");
    	//从session中获取数据权限Map并找到部门信息访问权限,进行控制
        resDatasMap = (Map<String, String>) getSession().getAttribute("resDatas");
        if (MapUtil.isNotEmpty(resDatasMap)) {
            resDatas_dept = resDatasMap.get("ORGANIZER_DATA");
        }        
        if(StringUtils.isBlank(resDatas_dept)){
            getRequest().setAttribute("err","权限不足!");
            getRequest().setAttribute("rtnurl", loginPage);
            return ERROR;
        }
        //文件大小不能大于1M
        if(impPerson != null && impPerson.length() > 1048576) {  // 2097152 =2M    1048576大于1M 1M= 1*1024*1024  
        	 getRequest().setAttribute("err","导入文件不能大于1M!");
             getRequest().setAttribute("rtnurl", "");
             return ERROR;
        }
        StringBuffer sbf = new StringBuffer();
        for(String deptId : resDatas_dept.split(",")){
            sbf.append("'").append(deptId).append("',");
        }
        final String deptIds = sbf.toString().substring(0,sbf.toString().length()-1);
        planList = planService.getPlanListByDeptIds(deptIds);  
    	
    	//加载文件 读取excel 并验证
        Map<String, String> flagMap = new HashMap<String, String>();
        Map<String, String> fileNameMap = new HashMap<String, String>();
        impPersonList = personService.impAndCheckFile(impPerson, impPersonFileName, curuser, flagMap, fileNameMap);
		if(impPersonList == null || impPersonList.size() ==0) {
			 getRequest().setAttribute("err","导入文件为空或格式不正确!");
             getRequest().setAttribute("rtnurl", "");
             return ERROR;
		}
        if(flagMap != null && flagMap.size() > 0) {
			errFlag = "1"; //有错
		} 
		if(fileNameMap != null && fileNameMap.size() > 0) {
			newFileName = fileNameMap.get("newFileName");
		}
		
    	return "loadExcel";
    }
    
    /**
     * 保存学员,绑定学习计划
     * @return
     */
    @Token
	public String  saveImpPerson(){
		impPersonList = personService.loadImpFile(newFileName);
		personService.impPersonAndPersonPlan(impPersonList, planIds);
    	return "saveImpPerson";
    }
    
    /**
     * 进入打印页预览
     * @author lengzl
     * @create 2015年8月12日 下午8:32:35
     * @return
     */
    public String enterPrintAc(){
        User curuser = (User)getSession().getAttribute("curuser");      
        if(null==curuser){
            if (curuser == null) {
                getRequest().setAttribute("err", "session信息丢失!");
                getRequest().setAttribute("rtnurl", BaseConf.get().getString(BaseConf._ADMINX_NAMED_RESOURCES_LOGIN));
                return ERROR;
            }
        }
        
        try {
            startDate = java.net.URLDecoder.decode(startDate,"utf-8");
            endDate = java.net.URLDecoder.decode(endDate,"utf-8");
            targetTime = java.net.URLDecoder.decode(targetTime,"utf-8");
            courseName = java.net.URLDecoder.decode(courseName,"utf-8");
            realName = java.net.URLDecoder.decode(realName,"utf-8");
            idCard = java.net.URLDecoder.decode(idCard,"utf-8");
            certificationNum = java.net.URLDecoder.decode(certificationNum,"utf-8");
            // registerFaceImage = java.net.URLDecoder.decode(registerFaceImage,"utf-8"); //
            
            /*
             * 最后的四张照片.
             
            Map<String,Object> map = new HashMap<String, Object>();
            map.put("personId", id);
            personFaceImages  = personFaceImageService.getPersonFaceImageListByPid(map);
            */
            currentDate = DateFormatUtil.formatCnYyyyMMdd(new Date());
            
        } catch(UnsupportedEncodingException e) {
            log.error("转码出现异常!");
            ExceptionPrintUtil.PrintErrorMessage(e, log);
        }
        //getRequest().setAttribute("currentDate",currentDate);
        return "printOne";
    }
    
    /**
     * 批量打印学时证明,5s循环弹出窗口.废弃.C
     * @author lengzl
     * @create 2015年8月14日 下午1:40:18
     */
    public void batchPrint(){
        try {
            String str = "";
            //Cau:如果有且只有一个disabled的被选中,那么传到后台为null.
            if (ids != null&&ids.length > 0) {
                for (int i = 0, m = ids.length; i < m; i++) {
                    str = str + ids[i];
                    if (i < (m - 1)) {
                        str = str + ",";
                    }
                }
            }
            viewList = personService.getPersonLearnTimeCertificate(str);
            JSONArray jsonArray = new JSONArray();
            for (int i = 0; i < viewList.size(); i++) {
                JSONObject jsonObject = new JSONObject();
                /*
                                 需要的人名,身份证号,开始,结束时间,目标学时,当前时间.id="+jsonarray[data_count].pId;
                 */
                jsonObject.put("realName", viewList.get(i).get("pRealName"));
                jsonObject.put("idCard", viewList.get(i).get("pIdCard"));
                jsonObject.put("startDate", viewList.get(i).get("ppStartDate").toString());
                jsonObject.put("endDate", viewList.get(i).get("ppEndDate").toString());
                jsonObject.put("courseName", viewList.get(i).get("planName"));
                jsonObject.put("certificationNum", viewList.get(i).get("certificationNum"));
                //jsonObject.put("registerFaceImage", viewList.get(i).get("ppRegisterFaceImage"));
                jsonObject.put("targetTime", viewList.get(i).get("ppTargetStudyTime"));
                jsonObject.put("pId", viewList.get(i).get("pId")); //person 的id.
                /*不用传递,每次打开调用就行.
                String currentDate = DateFormatUtil.formatCnYyyyMMdd(new Date());
                jsonObject.put("currentDate", currentDate);*/
                jsonArray.add(jsonObject);
                jsonObject = null;
            }
            bm.setCode("00");
            bm.setMessage(jsonArray.toString());
            System.out.println(jsonArray.toString()+"←===============================================****");
            printAjaxMessage(JSONObject.fromObject(bm).toString());
        } catch(Exception e) {
            log.error("批量打印异常!");
            ExceptionPrintUtil.PrintErrorMessage(e, log);
        }
    }
    
    /**
     * 通过一个页面的分页 实现批量打印学时证明
     * @author lengzl
     * @create 2015年8月14日 下午1:40:18
     */
    public String batchPrintByOnePage(){
       
            String str = "";
                        
            str = idsString.substring(0,idsString.length()-1);
            
            viewList = personService.getPersonLearnTimeCertificate(str);
            //遍历,找到id,查一下,放到Map中科.
            for (int i = 0; i < viewList.size(); i++) {
                //Long ppId = (Long) viewList.get(i).get("ppPersonId");
                
                //放置单个学员信息
                Map<String,Object> personPlanCyMap = new HashMap<String, Object>();
                /*
                 * 最后的四张照片
                 */
                /*Map<String,Object> map = new HashMap<String, Object>();
                map.put("personId", ppId);
                personFaceImages  = personFaceImageService.getPersonFaceImageListByPid(map);*/
                
                personPlanCyMap.put("ppInfo", viewList.get(i));
                //personPlanCyMap.put("ppFaceImage", personFaceImages);
                
                ppInfoAndImage.add(personPlanCyMap);
            }
            currentDate = DateFormatUtil.formatCnYyyyMMdd(new Date());
            return "printAll";
            /*
            JSONArray jsonArray = new JSONArray();
            for (int i = 0; i < viewList.size(); i++) {
                JSONObject jsonObject = new JSONObject();
                
                                 需要的人名,身份证号,开始,结束时间,目标学时,当前时间.id="+jsonarray[data_count].pId;
                 
                //System.out.println("真实姓名:"+viewList.get(i).get("pRealName")+viewList.get(i).get("pIdCard")+viewList.get(i).get("ppStartDate"));
                jsonObject.put("realName", viewList.get(i).get("pRealName"));
                jsonObject.put("idCard", viewList.get(i).get("pIdCard"));
                jsonObject.put("startDate", viewList.get(i).get("ppStartDate").toString());
                jsonObject.put("endDate", viewList.get(i).get("ppEndDate").toString());
                jsonObject.put("courseName", viewList.get(i).get("planName"));
                jsonObject.put("certificationNum", viewList.get(i).get("certificationNum"));
                jsonObject.put("registerFaceImage", viewList.get(i).get("ppRegisterFaceImage"));
                jsonObject.put("targetTime", viewList.get(i).get("ppTargetStudyTime"));
                jsonObject.put("pId", viewList.get(i).get("pId")); //person 的id.
                不用传递,每次打开调用就行.
                String currentDate = DateFormatUtil.formatCnYyyyMMdd(new Date());
                jsonObject.put("currentDate", currentDate);
                jsonArray.add(jsonObject);
                jsonObject = null;
            }
            bm.setCode("00");
            bm.setMessage(jsonArray.toString());
            System.out.println(jsonArray.toString()+"←===============================================****");
            printAjaxMessage(JSONObject.fromObject(bm).toString());
        } catch(Exception e) {
            log.error("批量打印异常!");
            ExceptionPrintUtil.PrintErrorMessage(e, log);
        }
        */
    }

    /**
     * @return the personService
     */
    public PersonService getPersonService() {
        return personService;
    }

    
    /**
     * @param personService the personService to set
     */
    public void setPersonService(PersonService personService) {
        this.personService = personService;
    }

    
    /**
     * @return the person
     */
    public Person getPerson() {
        return person;
    }

    
    /**
     * @param person the person to set
     */
    public void setPerson(Person person) {
        this.person = person;
    }
    
    /**
     * @return the loginId
     */
    public String getLoginId() {
        return loginId;
    }

    
    /**
     * @param loginId the loginId to set
     */
    public void setLoginId(String loginId) {
        this.loginId = loginId;
    }

    
    /**
     * @return the realName
     */
    public String getRealName() {
        return realName;
    }

    
    /**
     * @param realName the realName to set
     */
    public void setRealName(String realName) {
        this.realName = realName;
    }

    /**
     * @return the personList
     */
    public List<Map> getPersonList() {
        return personList;
    }

    
    /**
     * @param personList the personList to set
     */
    public void setPersonList(List<Map> personList) {
        this.personList = personList;
    }

    
    /**
     * @return the qc
     */
    public QueryCriterion getQc() {
        return qc;
    }

    
    /**
     * @param qc the qc to set
     */
    public void setQc(QueryCriterion qc) {
        this.qc = qc;
    }

    
    /**
     * @return the bar
     */
    public String getBar() {
        return bar;
    }

    
    /**
     * @param bar the bar to set
     */
    public void setBar(String bar) {
        this.bar = bar;
    }

    
    /**
     * @return the planService
     */
    public PlanService getPlanService() {
        return planService;
    }

    
    /**
     * @param planService the planService to set
     */
    public void setPlanService(PlanService planService) {
        this.planService = planService;
    }

    
    /**
     * @return the planList
     */
    public List<Plan> getPlanList() {
        return planList;
    }

    
    /**
     * @param planList the planList to set
     */
    public void setPlanList(List<Plan> planList) {
        this.planList = planList;
    }

    
    /**
     * @return the planIds
     */
    public String getPlanIds() {
        return planIds;
    }

    
    /**
     * @param planIds the planIds to set
     */
    public void setPlanIds(String planIds) {
        this.planIds = planIds;
    }

    
    /**
     * @return the id
     */
    public String getId() {
        return id;
    }

    
    /**
     * @param id the id to set
     */
    public void setId(String id) {
        this.id = id;
    }

    
    /**
     * @return the personPlanService
     */
    public PersonPlanService getPersonPlanService() {
        return personPlanService;
    }

    
    /**
     * @param personPlanService the personPlanService to set
     */
    public void setPersonPlanService(PersonPlanService personPlanService) {
        this.personPlanService = personPlanService;
    }

    
    /**
     * @return the agentList
     */
    public List getAgentList() {
        return agentList;
    }

    
    /**
     * @param agentList the agentList to set
     */
    public void setAgentList(List agentList) {
        this.agentList = agentList;
    }

    
    /**
     * @return the agentService
     */
    public AgentService getAgentService() {
        return agentService;
    }

    
    /**
     * @param agentService the agentService to set
     */
    public void setAgentService(AgentService agentService) {
        this.agentService = agentService;
    }

    
    /**
     * @return the agentId
     */
    public String getAgentId() {
        return agentId;
    }

    
    /**
     * @param agentId the agentId to set
     */
    public void setAgentId(String agentId) {
        this.agentId = agentId;
    }

	public File getImpPerson() {
		return impPerson;
	}

	public void setImpPerson(File impPerson) {
		this.impPerson = impPerson;
	}

	public String getImpPersonFileName() {
		return impPersonFileName;
	}

	public void setImpPersonFileName(String impPersonFileName) {
		this.impPersonFileName = impPersonFileName;
	}
	

	public String getErrFlag() {
		return errFlag;
	}

	public void setErrFlag(String errFlag) {
		this.errFlag = errFlag;
	}

	public List<Person> getImpPersonList() {
		return impPersonList;
	}

	public void setImpPersonList(List<Person> impPersonList) {
		this.impPersonList = impPersonList;
	}

	public String getNewFileName() {
		return newFileName;
	}

	public void setNewFileName(String newFileName) {
		this.newFileName = newFileName;
	}

	public String getPersonPlanStatus() {
		return personPlanStatus;
	}

	public void setPersonPlanStatus(String personPlanStatus) {
		this.personPlanStatus = personPlanStatus;
	}

    
    public String getResDatas_agent() {
        return resDatas_agent;
    }

    
    public void setResDatas_agent(String resDatas_agent) {
        this.resDatas_agent = resDatas_agent;
    }

    
    public String getStartDate() {
        return startDate;
    }

    
    public void setStartDate(String startDate) {
        this.startDate = startDate;
    }

    
    public String getEndDate() {
        return endDate;
    }

    
    public void setEndDate(String endDate) {
        this.endDate = endDate;
    }

    
    public String getTargetTime() {
        return targetTime;
    }

    
    public void setTargetTime(String targetTime) {
        this.targetTime = targetTime;
    }

    
    public String getCourseName() {
        return courseName;
    }

    
    public void setCourseName(String courseName) {
        this.courseName = courseName;
    }

    
    public String getIdCard() {
        return idCard;
    }

    
    public void setIdCard(String idCard) {
        this.idCard = idCard;
    }

    
    public String[] getIds() {
        return ids;
    }

    
    public void setIds(String[] ids) {
        this.ids = ids;
    }

    
    public List<Map<String, Object>> getViewList() {
        return viewList;
    }

    
    public void setViewList(List<Map<String, Object>> viewList) {
        this.viewList = viewList;
    }

    
    public AjaxHead getBm() {
        return bm;
    }

    
    public void setBm(AjaxHead bm) {
        this.bm = bm;
    }

    
    public String getCurrentDate() {
        return currentDate;
    }

    
    public void setCurrentDate(String currentDate) {
        this.currentDate = currentDate;
    }

    
    public String getAct() {
        return act;
    }

    
    public void setAct(String act) {
        this.act = act;
    }

    
    public String getCertificationNum() {
        return certificationNum;
    }

    
    public void setCertificationNum(String certificationNum) {
        this.certificationNum = certificationNum;
    }

    
    public String getRegisterFaceImage() {
        return registerFaceImage;
    }

    
    public void setRegisterFaceImage(String registerFaceImage) {
        this.registerFaceImage = registerFaceImage;
    }

    
    public PersonFaceImageService getPersonFaceImageService() {
        return personFaceImageService;
    }

    
    public void setPersonFaceImageService(PersonFaceImageService personFaceImageService) {
        this.personFaceImageService = personFaceImageService;
    }

    
    public List<PersonFaceImage> getPersonFaceImages() {
        return personFaceImages;
    }

    
    public void setPersonFaceImages(List<PersonFaceImage> personFaceImages) {
        this.personFaceImages = personFaceImages;
    }

    
    public String getIdsString() {
        return idsString;
    }

    
    public void setIdsString(String idsString) {
        this.idsString = idsString;
    }

    
    public List<Map<String, Object>> getPpInfoAndImage() {
        return ppInfoAndImage;
    }

    
    public void setPpInfoAndImage(List<Map<String, Object>> ppInfoAndImage) {
        this.ppInfoAndImage = ppInfoAndImage;
    }

    
    public String getIsIE() {
        return isIE;
    }

    
    public void setIsIE(String isIE) {
        this.isIE = isIE;
    }

    
}



struts-adminx.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"
    "http://struts.apache.org/dtds/struts-2.1.7.dtd">
<struts>
<!-- 去Struts2默认标签样式的. -->
<constant name="struts.ui.theme" value="simple" />
<constant name="struts.ui.templateDir" value="template" />
<constant name="struts.ui.templateSuffix" value="ftl" />

    <!-- 后台管理员action配置 -->
    <package name="adminx" extends="default" namespace="/adminx">
    	<!-- 后台管理员拦截器队列 -->
    	<interceptors>
    		<interceptor-stack name="adminxInterceptorStack">
    			<interceptor-ref name="myLandInterceptorStack"></interceptor-ref>
    		</interceptor-stack>
    	</interceptors>
    	<default-interceptor-ref name="adminxInterceptorStack"/>
    	
    	<!-- 后台用户登录action -->
    	<action name="adminLogin" class="com.myland.jp.adminx.login.action.AdminLoginAction">
    		<result name="success">/adminx/login/adminLogin.jsp</result>
    		<result name="home" type="redirect">/adminx/home/home.jsp</result>
    	</action>
    	<action name="menusAction" class="com.myland.jp.adminx.login.action.MenusAction">
        </action>
    	
    	<!-- 后台考题管理action -->
    	<action name="examAction" class="com.myland.jp.adminx.exam.action.ExamAction">
    		<result name="success">/adminx/exam/examList.jsp</result>
    		<result name="addexam">/adminx/exam/examAdd.jsp</result>
    		<result name="editexam">/adminx/exam/examUpdate.jsp</result>
    		<result name="batchAddExam">/adminx/exam/examBatchAdd.jsp</result>
    		<result name="examCheck">/adminx/exam/examCheckList.jsp</result>
    		<result name="viewexam">/adminx/exam/examView.jsp</result>
    		<result name="show">/adminx/common/examContentShow.jsp</result>
    	</action>
    	<action name="examQueryAction" class="com.myland.jp.adminx.exam.action.ExamAction" method="examQueryList">
    		<result name="examList">/adminx/exam/examQueryList.jsp</result>
    	</action>
    	<action name="examCheckQueryAction" class="com.myland.jp.adminx.exam.action.ExamAction" method="examCheckQueryList">
    		<result name="examCheckList">/adminx/exam/examCheckQueryList.jsp</result>
    	</action>
    	<!-- 后台试卷管理action -->
    	<action name="testPaperAction" class="com.myland.jp.adminx.testpaper.action.TestPaperAction">
    		<result name="success">/adminx/testpaper/testPaperList.jsp</result>
    		<result name="addtestpaper">/adminx/testpaper/testPaperAdd.jsp</result>
    		<result name="forupdatetestpaper">/adminx/testpaper/testPaperUpdate.jsp</result>
    	</action>
    	<action name="testPaperQueryAction" class="com.myland.jp.adminx.testpaper.action.TestPaperAction" method="testPaperQueryList">
    		<result name="testPaperList">/adminx/testpaper/testPaperQueryList.jsp</result>
    	</action>
    	
    	<!-- 学习计划 -->
    	<action name="plan" class="com.myland.jp.adminx.plan.action.PlanAction">
    		<result name="success">/adminx/plan/planList.jsp</result>
    		<result name="conditionSearch">/adminx/plan/planList.jsp</result>
    		<result name="planNode">/adminx/plan/planList.jsp</result>
    		<result name="addPlan">/adminx/plan/planAdd.jsp</result>
    		<result name="modifyPlan">/adminx/plan/planModify.jsp</result>
    		<result name="planDetail">/adminx/plan/planDetail.jsp</result>
    		<result name="showImg">/adminx/plan/showImg.jsp</result>
    	</action>
    	<!-- 学习计划节点 -->
    	<action name="planNode" class="com.myland.jp.adminx.planNode.action.PlanNodeAction">
    		<result name="success">/adminx/plan/planNodeList.jsp</result>
    		<result name="planList" type="redirect">/adminx/plan.do</result>
    		<result name="planDetail">/adminx/plan/planNodeAdd.jsp</result>
    		<result name="planNodeInterface">/adminx/plan/interfaceList.jsp</result>
    		<result name="planNodeJsMethod">/adminx/plan/jsPlanNode.jsp</result>
    		<result name="orderPlanNode">/adminx/plan/orderPlanNode.jsp</result>
    	</action>
    	<action name="planNodeCourse" class="com.myland.jp.adminx.planNode.action.PlanNodeAction" method="showPlanCourse">
    		<result name="planNodeCourse">/adminx/plan/courseList.jsp</result>
    	</action>
    	<action name="planNodeExam" class="com.myland.jp.adminx.planNode.action.PlanNodeAction" method="showPlanExam">
    		<result name="planNodeExam">/adminx/plan/examList.jsp</result>
    	</action>
    	<!-- 代理商 -->
    	<action name="agent" class="com.myland.jp.adminx.agent.action.AgentAction">
    		<result name="success">/adminx/agent/agentList.jsp</result>
    		<result name="addAgent">/adminx/agent/agentAdd.jsp</result>
    		<result name="modifyAgent">/adminx/agent/agentModify.jsp</result>
    		<result name="detailAgent">/adminx/agent/agentDetail.jsp</result>
    		<result name="binded">/adminx/agent/bindedPlanAgent.jsp</result>
    	</action>
    	<!--获取学习计划  -->
    	<action name="bindAgent"  class="com.myland.jp.adminx.agent.action.AgentAction" method="bindAgent">
    		<result name="bindAgent">/adminx/agent/bindAgent.jsp</result>
    	</action>
    	<!-- 已绑定学习计划 -->
    	<action name="bindedPlan"  class="com.myland.jp.adminx.agent.action.AgentAction" method="bindedPlan">
    		<result name="binded">/adminx/agent/bindedPlanAgent.jsp</result>
    	</action>
    	<!-- 供应商 -->
    	<action name="cont" class="com.myland.jp.adminx.cont.action.ContAction">
    		<result name="success">/adminx/cont/contList.jsp</result>
    		<result name="addAgent">/adminx/cont/contAdd.jsp</result>
    		<result name="modifyAgent">/adminx/cont/contModify.jsp</result>
    		<result name="detailAgent">/adminx/cont/contDetail.jsp</result>
    		<result name="contView">/adminx/cont/contView.jsp</result>
    	</action>
    	
    	<!-- 供应商审核 -->
    	<action name="contApplyReview" class="com.myland.jp.adminx.contApplyReview.action.contApplyReviewAction">
            <result name="success">/adminx/cont/personDataSuccess.jsp</result>
    		<result name="viewDetailInfo">/adminx/cont/viewDetailInfo.jsp</result>
    		<result name="viewImageFile">/adminx/cont/showImage.jsp?fileName=${fileName}</result>
        </action>
    	
    	<!-- 账户信息 -->
    	<action name="payAccnt" class="com.myland.jp.adminx.payAccnt.action.PayAccntAction">
    		<result name="success">/adminx/payAccnt/payAccntList.jsp</result>
    		<result name="addPayAccnt">/adminx/payAccnt/payAccntAdd.jsp</result>
    		<result name="modifyPayAccnt">/adminx/payAccnt/payAccntModify.jsp</result>
    	</action>
    	<!-- 账户明细 原payAccntFlow {1}-->
    	<action name="payAccntFlow_*" class="com.myland.jp.adminx.payAccnt.action.PayAccntAction" method="payAccntFlow">
    		<result name="payAccntFlow">/adminx/payAccnt/payAccntFlowList.jsp</result>
    	</action>
    	<!-- 统计账户信息 -->
    	<action name="payAccntFlowSum" class="com.myland.jp.adminx.payAccnt.action.PayAccntAction" method="payAccntFlowSum">
    		<result name="success">/adminx/payAccnt/payAccntFlowSum.jsp</result>
    	</action>
    	
    	<!-- 课程销售量统计 -->
    	<action name="courseSaledSum" class="com.myland.jp.adminx.payAccnt.action.PayAccntAction" method="courseSaledSum">
    		<result name="success">/adminx/payAccnt/courseSaledSum.jsp</result>
    	</action>
    	<!-- 课程销售量统计图表展示 -->
    	<action name="showChartCourseSaledSum" class="com.myland.jp.adminx.payAccnt.action.PayAccntAction" method="showChartCourseSaledSum">
    		<result name="pie">/adminx/payAccnt/showPieChartCourseSaledSum.jsp</result>
    		<result name="column">/adminx/payAccnt/showColumnChartCourseSaledSum.jsp</result>
    		<result name="line">/adminx/payAccnt/showLineChartCourseSaledSum.jsp</result>
    	</action>
    	
    	
    	<action name="addPayAccntAction" class="com.myland.jp.adminx.payAccnt.action.PayAccntAction" method="addPayAccnt">
    		<result name="addPayAccnt">/adminx/payAccnt/payAccntAdd.jsp</result>
    	</action>
    	
    	<action name="agentList" class="com.myland.jp.adminx.payAccnt.action.PayAccntAction" method="loadAgentList">
    		<result name="agentList">/adminx/payAccnt/agentList.jsp</result>
    	</action>
    	<action name="contList" class="com.myland.jp.adminx.payAccnt.action.PayAccntAction" method="loadContList">
    		<result name="contList">/adminx/payAccnt/contList.jsp</result>
    	</action>
    	
    	<!-- 根据数据权限显示相应列表 -->
    	<action name="payAccntByDepIdList" class="com.myland.jp.adminx.payAccnt.action.PayAccntAction" method="payAccntByDepIdList">
    		<result name="payAccntByDepIdList">/adminx/payAccnt/payAccntByDeptIdList.jsp</result>
    	</action>
    	
    	<!-- 代理商学员查询 -->
    	<action name="agentViewPerson" class="com.myland.jp.adminx.viewPerson.action.ViewPersonAction">
    		<result name="agentSuccess">/adminx/viewPerson/agentViewPersonList.jsp</result>
    	</action>
    	
    	<!-- 组织者学员查询 -->
    	<action name="deptViewPerson" class="com.myland.jp.adminx.viewPerson.action.ViewPersonAction" method="initViewPersonPerosnPlanForDept">
    		<result name="deptSuccess">/adminx/viewPerson/deptViewPersonList.jsp</result>
    	</action>
    	<!-- 组织者学员查询,市区及以下的. -->
    	<action name="deptViewPerson_sum" class="com.myland.jp.adminx.viewPerson.action.ViewPersonAction" method="initViewPersonPerosnPlanForDept_sum">
    		<result name="deptSuccess">/adminx/viewPerson/deptViewPersonList_sum.jsp</result>
    	</action>
    	<!-- 客服学员查询 -->
    	<action name="deptViewPerson_cs" class="com.myland.jp.adminx.viewPerson.action.ViewPersonAction" method="initViewPersonPersonPlanForDept_cs">
    		<result name="deptSuccess">/adminx/viewPerson/deptViewPersonList_cs.jsp</result>
    	</action>
    	<!-- 重置学员密码 -->
    	<action name="resetPersonPwd" class="com.myland.jp.adminx.viewPerson.action.ViewPersonAction" method="resetPersonPwd">
    	</action>
    	<!-- 重置学员人脸 -->
    	<action name="resetPersonFace" class="com.myland.jp.adminx.viewPerson.action.ViewPersonAction" method="resetPersonFace">
    	</action>
    	<!-- 关闭开启学员人脸识别 -->
    	<action name="effectIsFace" class="com.myland.jp.adminx.viewPerson.action.ViewPersonAction" method="effectPersonPlanIsFace">
    		<result name="success" type="redirect">/adminx/deptViewPerson_cs.do</result>
    	</action>
    	<!-- 改变部门,改变计划. 其实不会改变页面的. -->
    	<action name="changePlanList" class="com.myland.jp.adminx.viewPerson.action.ViewPersonAction">
    		<result name="success">/adminx/viewPerson/deptViewPersonList_cs.jsp</result>
    	</action>
    	
    	<!-- 学习记录查询 -->
    	<action name="personRecordAction" class="com.myland.jp.adminx.viewPerson.action.ViewPersonAction" method="personPlanRecordList">
    		<result name="personPlanRecordList">/adminx/viewPerson/personPlanRecord.jsp</result>
    	</action>
    	
    	<!--驾校学员退款申请查询 -->
    	<action name="agentRefundApplyPage" class="com.myland.jp.adminx.agentAccntRefund.action.AgentAccntRefundAction" method="agentRefundApplyPage">
    		<result name="agentRefundApplyPage">/adminx/agentRefund/agentRefundApplyPage.jsp</result>
    	</action>
    	
    	<!--驾校学员退款申请 -->
    	<action name="saveAgentRefundApply" class="com.myland.jp.adminx.agentAccntRefund.action.AgentAccntRefundAction" method="saveAgentRefundApply">
    	</action>
    	
    	<!--驾校学员退款审核列表-->
    	<action name="agentRefundAuditPage" class="com.myland.jp.adminx.agentAccntRefund.action.AgentAccntRefundAction" method="agentRefundAuditPage">
    		<result name="agentRefundAuditPage">/adminx/agentRefund/agentRefundAuditPage.jsp</result>
    	</action>
    	
    	<!--驾校学员退款审核明细-->
    	<action name="agentRefundAuditDetail" class="com.myland.jp.adminx.agentAccntRefund.action.AgentAccntRefundAction" method="agentRefundAuditDetail">
    		<result name="agentRefundAuditDetail">/adminx/agentRefund/agentRefundAuditDetail.jsp</result>
    	</action>
    	
    	<!--驾校学员退款审核-->
    	<action name="saveAgentRefundAudit" class="com.myland.jp.adminx.agentAccntRefund.action.AgentAccntRefundAction" method="saveAgentRefundAudit">
    		<result name="saveAgentRefundAudit" type="redirect">/adminx/agentRefundAuditPage.do</result>
    	</action>
    	<!-- 退款记录 -->
    	<action name="agentAccntRefundPage" class="com.myland.jp.adminx.agentAccntRefund.action.AgentAccntRefundAction" method="agentAccntRefundPage">
    		<result name="agentAccntRefundPage">/adminx/agentRefund/agentAccntRefundPage.jsp</result>
    	</action>
    	
    	<!-- 考试记录查询 -->
    	<action name="personExamAction" class="com.myland.jp.adminx.viewPerson.action.ViewPersonAction" method="personPlanExamList">
    		<result name="personPlanExamList">/adminx/viewPerson/personPlanExam.jsp</result>
    	</action>
    	
    	<!-- 学习记录查询_客服 -->
    	<action name="personRecordAction_cs" class="com.myland.jp.adminx.viewPerson.action.ViewPersonAction" method="personPlanRecordList">
    		<result name="personPlanRecordList">/adminx/viewPerson/personPlanRecord.jsp</result>
    	</action>
    	
    	<!-- 考试记录查询_客服 -->
    	<action name="personExamAction_cs" class="com.myland.jp.adminx.viewPerson.action.ViewPersonAction" method="personPlanExamList">
    		<result name="personPlanExamList">/adminx/viewPerson/personPlanExam.jsp</result>
    	</action>
    	
    	<!-- 学习记录查询_数据统计的 -->
    	<action name="personRecordAction_sum" class="com.myland.jp.adminx.viewPerson.action.ViewPersonAction" method="personPlanRecordList">
    		<result name="personPlanRecordList">/adminx/viewPerson/personPlanRecord.jsp</result>
    	</action>
    	
    	<!-- 考试记录查询_数据统计的 -->
    	<action name="personExamAction_sum" class="com.myland.jp.adminx.viewPerson.action.ViewPersonAction" method="personPlanExamList">
    		<result name="personPlanExamList">/adminx/viewPerson/personPlanExam.jsp</result>
    	</action>
    	
    	<!-- 学员照片审核页面 -->
    	<action name="personPhotoCheckAction" class="com.myland.jp.adminx.viewPerson.action.ViewPersonAction" method="personPhotoCheck">
    		<result name="personPhotoView">/adminx/viewPerson/personPhotoView.jsp</result>
    	</action>
    	<!-- 学员照片审核 -->
    	<action name="personPhotoToExamineAction" class="com.myland.jp.adminx.viewPerson.action.ViewPersonAction" method="personPhotoToExamine">
    		<result name="success"  type="redirect">/adminx/deptViewPerson.do</result>
    	</action>
    	
    	<!--组织者 数据统计 针对 personPlan的./jpv2/WebContent/common/error.jsp 菜单使用-->
    	<action name="deptViewSummary" class="com.myland.jp.adminx.viewPerson.action.ViewPersonAction" method="initViewPersonSummaryForDept">
    		<result name="list">/adminx/statisticalSummary/deptViewSummary.jsp</result>
    		<result name="noRight">/common/error.jsp</result>
    		<result name="listData">/adminx/statisticalSummary/deptViewSummary_list.jsp</result>
    	</action>
    	<!-- 通用数据统计 -->
    	<action name="dataStatistics" class="com.myland.jp.adminx.viewPerson.action.ViewPersonAction">
    		<result name="listData">/adminx/statisticalSummary/deptViewSummary_list.jsp</result>
    		<result name="listDataAgent">/adminx/statisticalSummary/agentViewSummary_list.jsp</result>
    	</action>
    	<!-- 下级明细,也要分页的. -->
    	<action name="deptViewSummary_subDetial" class="com.myland.jp.adminx.viewPerson.action.ViewPersonAction" method="subDetial"> 
    		<result name="subList">/adminx/statisticalSummary/deptViewSummary.jsp</result>
    		<result name="listData">/adminx/statisticalSummary/deptViewSummary_list.jsp</result>
    	</action>
    	
    	<!-- 不需要分页的统计汇总,图表显示 -->
    	<!-- 4.result柱状图显示的 -->
    	<action name="highcharts" class="com.myland.jp.adminx.viewPerson.action.ViewPersonAction" >
    		<result name="success">/adminx/statisticalSummary/highcharts.jsp</result>
    		<result name="payAccntFlow">/adminx/payAccnt/payAccntFlowList.jsp</result>
    		<result name="subList">/adminx/statisticalSummary/deptViewSummary.jsp</result>
    		<result name="success_agentDetialForColumnChart">/adminx/statisticalSummary/highcharts_column.jsp</result>
    		<result name="success_columnChart">/adminx/statisticalSummary/deptColumnChart.jsp</result>
    	</action>
    	
    	<!-- 代理明细. 考虑将来可能分页,so动态 -->
    	<action name="agentViewDetail" class="com.myland.jp.adminx.viewPerson.action.ViewPersonAction" method="queryAgentDetail">
    		<result name="success_agentDetial">/adminx/statisticalSummary/agentViewSummary.jsp</result>
    		
    	</action>
    	   	
    	<!-- 汇总统计 end -->
    	
    	<!-- 银行信息 -->
    	<action name="payBank" class="com.myland.jp.adminx.payBank.action.PayBankAction">
    		<result name="success">/adminx/payBank/payBankList.jsp</result>
    		<result name="addPayBank">/adminx/payBank/payBankAdd.jsp</result>
    		<result name="modifyPayBank">/adminx/payBank/payBankModify.jsp</result>
    		<result name="backDetailed">/adminx/payBank/payBankDetailed.jsp</result>
    	</action>
    	<!-- 代理商充值 -->
    	<action name="agentChange" class="com.myland.jp.adminx.agentChange.action.AgentChangeAction">
    		<result name="success">/adminx/agentChange/agentList.jsp</result>
    		<result name="modifyAgent">/adminx/agentChange/agentModify.jsp</result>
    		<result name="angetChange">/adminx/agentChange/agentChangeList.jsp</result>
    		<result name="modifyAngetChagne">/adminx/agentChange/agentChangeModify.jsp</result>
    		<result name="modifyAgentChangeP">/adminx/agentChange/agentChangeModifyP.jsp</result>
    		<result name="payInvoice">/adminx/agentChange/agentInvoiceModify.jsp</result>
    		<result name="payInvoiceView">/adminx/agentChange/agentInvoiceView.jsp</result>
    		<result name="agentChangeConfirm" type="redirect">/adminx/agentChangeConfirmAction.do</result>
    		<result name="agentChangePage">/adminx/agentChange/agentChangePage.jsp</result>
    		<result name="payAccountSelect">/adminx/agentChange/payAccntListSelect.jsp</result>
    		<result name="viewAgentChangeDetail">/adminx/agentChange/viewAgentChangeDetail.jsp</result>
    	</action>
    	<action name="agentChangeLoad" class="com.myland.jp.adminx.agentChange.action.AgentChangeAction" method="loadAgentChange">
    		<result name="angetChange">/adminx/agentChange/agentChangeList.jsp</result>
    	</action>
    	<!-- 充值详情 -->
    	<action name="viewAgentChangeDetail" class="com.myland.jp.adminx.agentChange.action.AgentChangeAction" method="viewAgentChangeDetail">
    		<result name="viewAgentChangeDetail">/adminx/agentChange/viewAgentChangeDetail.jsp</result>
    	</action>
    	
    	<action name="addAgentChangeAction" class="com.myland.jp.adminx.agentChange.action.AgentChangeAction" method="addAgentChange">
    		<result name="addAgentChange">/adminx/agentChange/agentChangeAdd.jsp</result>
    	</action>
    	<action name="agentChangeAccnt" class="com.myland.jp.adminx.agentChange.action.AgentChangeAction" method="initPayAccntList">
    		<result name="payAccntList">/adminx/agentChange/payAccntList.jsp</result>
    	</action>
    	<action name="agentChangeBank" class="com.myland.jp.adminx.agentChange.action.AgentChangeAction" method="initPayBankList">
    		<result name="payBankList">/adminx/agentChange/payBankListSelect.jsp</result>
    	</action>
    	<!-- 确认 -->
    	<action name="agentChangeConfirmAction" class="com.myland.jp.adminx.agentChange.action.AgentChangeAction" method="agentChangeConfirm">
    		<result name="agentChagneConfirm">/adminx/agentChange/agentChangeConfirm.jsp</result>
    	</action>
    	<!-- 部门操作 -->
    	<action name="deptAction" class="com.myland.jp.adminx.dept.action.DeptAction">
    		<result name="success">/adminx/dept/deptList.jsp</result>
    		<result name="open">/adminx/dept/deptUpdate.jsp?hotId=${hotId}&amp;hotPid=${hotPid}</result>
    		<result name="add" type="redirect">/adminx/deptAction.do?hotId=${hotId}&amp;hotPid=${hotPid}</result>
    		<result name="del" type="redirect">/adminx/deptAction.do?hotId=${hotPid}&amp;hotPid=${hotPid}&amp;delFlag=1</result>
    		<result name="update" type="redirect">/adminx/deptAction.do?hotId=${hotPid}</result>
    	</action>
    	
    	<!-- 角色操作action -->
    	<action name="roleAction" class="com.myland.jp.adminx.role.action.RoleAction">
    		<result name="success">/adminx/role/roleList.jsp</result>
    		<result name="add" type="redirect">/adminx/roleAction.do?conditions=keep</result>
    		<result name="open">/adminx/role/roleUpdate.jsp</result>
    		<result name="update" type="redirect">/adminx/roleAction.do?conditions=keep</result>
    		<result name="del" type="redirect">/adminx/roleAction.do?conditions=keep</result>
    		<result name="detail">/adminx/role/roleDetail.jsp</result>
    		<result name="menuAllocate">/adminx/role/menuAllocate.jsp</result>
    		<result name="funcAllocate">/adminx/role/funcAllocate.jsp</result>
    	</action>
    	
    	<!-- 系统用户操作action begin 
    	原:update_myinfoSuccess =>/adminx/home/main.jsp //现在改为重定向可.
    	2.这个改为ajax的.
    	<result name="add" type="redirect">/adminx/getUsersInfo.do?conditions=keep</result>
    	-->
    	<action name="userAction" class="com.myland.jp.adminx.user.action.UserAction">
    		<result name="add" type="redirect">/adminx/getUsersInfo.do?conditions=keep</result>
    		<result name="view">/adminx/user/userView.jsp</result>
    		<result name="open">/adminx/user/userUpdate.jsp</result>
    		<result name="update" type="redirect">/adminx/getUsersInfo.do?conditions=keep</result>
    		<result name="del" type="redirect">/adminx/getUsersInfo.do?conditions=keep</result>
    		<result name="open_myInfo">/adminx/user/myInfoUpdate.jsp</result>
    		<result name="tools">/adminx/user/tools.jsp</result>
    		
    	</action>
    	
    	<!-- 个人设置部分 -->
    	<action name="editMyInfo" class="com.myland.jp.adminx.user.action.UserAction" method="openMyInfo">
    		<result name="open_myInfo">/adminx/user/myInfoUpdate.jsp</result>
    	</action>
    	<!-- editMyPass -->
    	<action name="editMyPass" class="com.myland.jp.adminx.user.action.UserAction" method="openMyPass">
    		<result name="openPwdSuccess">/adminx/user/myPassUpdate.jsp</result>
    	</action>
    	<!-- 个人设置 end -->
    	<action name="getUsersInfo" class="com.myland.jp.adminx.user.action.UserAction" method="getUsersInfo">
    		<result name="list">/adminx/user/userList.jsp</result>
    	</action>
    	
    	<action name="openUserAdd" class="com.myland.jp.adminx.user.action.UserAction" method="openUserAdd">
    		<result name="openUserAdd">/adminx/user/userAdd.jsp</result>
    	</action>
    	<!-- 系统用户操作action end -->
    	
    	<!-- 数据权限操作action -->
    	<action name="resDataAction" class="com.myland.jp.adminx.resdata.action.ResDataAction">
    		<result name="open">/adminx/resdata/resdataDetail.jsp</result>
    		<result>/adminx/resdata/resdataDetail.jsp</result>
    	</action>
    	
    	 <!-- 方法名直接指定action的方法 ok-->
    	 
    	<!-- 安全性,使用method,防止动态调用 为了以后  注释不要写到里面-->
    	<action name="simpleHelp" class="com.myland.jp.adminx.resdata.action.SimpleHelpAction" method="simpleHelp">
    		<result name="success">/adminx/resdata/simpleHelp.jsp</result>
    	</action>
    	<!-- 请求 一样.帮助页面 左边的请求 故意不写 与方法名相同,保证权限的. -->
    	<action name="searchData" class="com.myland.jp.adminx.resdata.action.SimpleHelpAction" method="resDataSearch">
    		<result name="list">/adminx/resdata/resDataList.jsp</result>
    	</action>
    	
    	<!-- 数据权限操作 end -->
    	
    	
    	
    	<!-- 后台订单相关操作 -->
    	<action name="queryPayOrderAction" class="com.myland.jp.adminx.pay.action.PayOrderAdminAction"  method="queryPayOrderInfoByPage">
    		<result name="payOrderFlowList">/adminx/pay/payOrderListAdminx.jsp</result>
    		<result name="payOrdersFlowList">/adminx/pay/payOrdersListAdminx.jsp</result>
    		<result name="payResult">/web/pay/alipayapi.jsp</result>
    		<result name="payResults">/web/pay/alipayapi.jsp</result>
    		<result name="orderDetail">/adminx/pay/orderDetail.jsp</result>
    		<result name="detail">/adminx/pay/orderDetailInfo.jsp</result>
    	</action>
    	
    	<action name="queryPayOrdersInfoByPage" class="com.myland.jp.adminx.pay.action.PayOrderAdminAction"  method="queryPayOrdersInfoByPage">
    		<result name="payOrdersFlowList">/adminx/pay/payOrdersListAdminx.jsp</result>
    	</action>
    	
    	<action name="examVersionAction" class="com.myland.jp.adminx.exam.action.ExamVersionAction">
    		<result name="success">/adminx/exam/appExamVersion.jsp</result>
    	</action>
    	
    	<!-- 定单退款申请列表 -->
    	<action name="orderRefundApplyPage" class="com.myland.jp.adminx.pay.action.PayOrderAdminAction" method="orderRefundApplyPage">
    		<result name="success">/adminx/pay/orderRefundApplyPage.jsp</result>
    	</action>
    	<action name="orderRefundApply" class="com.myland.jp.adminx.pay.action.PayOrderAdminAction" method="orderRefundApply">
    	</action>
    	<action name="orderRefundApplyDetail" class="com.myland.jp.adminx.pay.action.PayOrderAdminAction" method="orderRefundApplyDetail">
    		<result name="success">/adminx/pay/orderRefundApplyDetailPage.jsp</result>
    	</action>
    	<action name="orderRefundAuditPage" class="com.myland.jp.adminx.pay.action.PayOrderAdminAction" method="orderRefundAuditPage">
    		<result name="success">/adminx/pay/orderRefundAuditPage.jsp</result>
    	</action>
    	<action name="saveOrderRefundAudit" class="com.myland.jp.adminx.pay.action.PayOrderAdminAction" method="saveOrderRefundAudit">
    		<result name="success" type="redirect">/adminx/orderRefundAuditPage.do</result>
    	</action>
    	
    	<!-- 类别体系 begin -->
		<action name="catTypeAction" class="com.myland.jp.adminx.catType.action.CatTypeAction">
			<result>/adminx/catType/catTypeList.jsp</result>
			<result name="insertCatType">/adminx/catType/catTypeAdd.jsp</result>
			<result name="updateCatType">/adminx/catType/catTypeUpdate.jsp</result>
		</action>
    	<!-- 类别体系end -->
    	
    	<!-- 内容管理 begin -->
		<action name="chapterAction" class="com.myland.jp.adminx.chapter.action.ChapterAction">
			<result name="success">/adminx/chapter/chapterParentList.jsp</result>
			<result name="insertChapterParent">/adminx/chapter/chapterParentAdd.jsp</result>
			<result name="updateChapterParent">/adminx/chapter/chapterParentUpdate.jsp</result>
			<result name="toWorks">/adminx/chapter/works.jsp</result>
			<result name="chapterTopList">/adminx/chapter/chapterTopList.jsp</result>
			<result name="chapterTree">/adminx/chapter/chapterTree.jsp</result>
			<result name="chapterList">/adminx/chapter/chapterList.jsp</result>
			<result name="insertChapter">/adminx/chapter/chapterAdd.jsp</result>
			<result name="updateChapter">/adminx/chapter/chapterUpdate.jsp</result>
			<result name="toChapterList" type="redirect">/adminx/chapterAction!getChapterList.do?id=${pid}</result>
			<result name="uploadCCWareList">/adminx/chapter/uploadCCWareList.jsp</result>
			<result name="refreshUploadCCList">/adminx/chapter/uploadCCWareList_list.jsp</result>
			<result name="importExcel">/adminx/chapter/importExcel.jsp</result>
		</action>
		<action name="chapterQueryAction" class="com.myland.jp.adminx.chapter.action.ChapterAction" method="chapterQueryList">
			<result name="chapterParentList">/adminx/chapter/chapterQueryList.jsp</result>
		</action>
		
    	<!-- 内容管理end -->
    	
    	<!-- 章节考题管理 begin -->
		<action name="chapterExamAction" class="com.myland.jp.adminx.chapter.action.ChapterExamAction">
			<result name="success">/adminx/chapter/examHelp.jsp</result>
			<result name="chapterExamList">/adminx/chapter/chapterExamList.jsp</result>
			<result name="insertChapterExam">/adminx/chapter/chapterExamAdd.jsp</result>
			<result name="updateChapterExam">/adminx/chapter/chapterExamUpdate.jsp</result>
			<result name="getChapterExamList" type="redirect">/adminx/chapterExamAction!getChapterExamList.do?id=${id}</result>
		</action>
		
		<action name="examListAction" class="com.myland.jp.adminx.chapter.action.ChapterExamAction" method="findExamList">
			<result name="examList">/adminx/chapter/examList.jsp</result>
		</action>
		
    	<!-- 章节考题管理end -->
    	<!-- 章节课件管理 begin -->
    	<action name="chapterWareAction" class="com.myland.jp.adminx.chapter.action.ChapterWareAction">
			<result name="success">/adminx/chapter/chapterWareList.jsp</result>
			<result name="insertChapterWare">/adminx/chapter/chapterWareAdd.jsp</result>
			<result name="updateChapterWare">/adminx/chapter/chapterWareUpdate.jsp</result>
			<result name="addChapterWare">/adminx/chapter/wareAdd.jsp </result>
			<result name="viewChapterWare">/adminx/chapter/chapterWareView.jsp </result>
			<result name="delCW" type="redirect">/adminx/chapterWareAction!getChapterWareList.do?chapterId=${chapterId} </result>
		</action>
		<!-- 章节课件管理 end -->
    	
    	<!-- 课程管理 begin -->
		<action name="courseAction" class="com.myland.jp.adminx.course.action.CourseAction">
			<result name="success">/adminx/course/courseList.jsp</result>
			<result name="insertCourse">/adminx/course/courseAdd.jsp</result>
			<result name="updateCourse">/adminx/course/courseUpdate.jsp</result>
			<result name="courseCheck">/adminx/course/courseCheckList.jsp</result>
			<result name="works">/adminx/course/works.jsp</result>
			<result name="courseTree">/adminx/course/courseTree.jsp</result>
			<result name="chapterList">/adminx/course/chaptersList.jsp</result>
			<result name="chapterWareList">/adminx/course/chapterWareList.jsp</result>
			<result name="chapterExamList">/adminx/course/chapterExamList.jsp</result>
			<result name="uploadCCWareList">/adminx/course/uploadCCWareList.jsp</result>
			<result name="refreshUploadCCList">/adminx/course/uploadCCWareList_list.jsp</result>
			<result name="viewCourse">/adminx/course/courseView.jsp</result>
		</action>
		<action name="courseQueryAction" class="com.myland.jp.adminx.course.action.CourseAction" method="courseQueryList">
			<result name="success">/adminx/course/courseQueryList.jsp</result>
		</action>
		<!-- 课程审核 -->
		<action name="courseCheckQueryAction" class="com.myland.jp.adminx.course.action.CourseAction" method="courseCheckQueryList">
			<result name="success">/adminx/course/courseCheckQueryList.jsp</result>
		</action>
    	<!-- 课程管理end -->
    	
    	<!-- 课程配置章节begin -->
    	<action name="coursePowerAction" class="com.myland.jp.adminx.course.action.CoursePowerAction">
    		<result name="coursePower">/adminx/course/coursePower.jsp</result>
    		<result name="chapterSelList">/adminx/course/chapterSelectList.jsp</result>
    		<result name="insert" type="redirect">/adminx/chapterSelListAction.do?id=${id}</result>
    		<result name="del" type="redirect">/adminx/chapterSelListAction.do?id=${id}</result>
    	</action>
    	
    	<action name="chapterListAction" class="com.myland.jp.adminx.course.action.CoursePowerAction" method="findChapterList">
    		<result name="chapterList">/adminx/course/chapterList.jsp</result>
    	</action>
    	
    	<action name="chapterSelListAction" class="com.myland.jp.adminx.course.action.CoursePowerAction" method="findSelectChapterList">
    		<result name="chapterSelList">/adminx/course/chapterSelectList.jsp</result>
    	</action>
    	
    	<action name="delCourseChapter" class="com.myland.jp.adminx.course.action.CoursePowerAction" method="delCourseChapter">
    		<result name="chapterSelList">/adminx/course/chapterSelectList.jsp</result>
    	</action>
    	<!-- 课程配置章节end -->
    	
    	<!-- 发票管理 st--><!-- 针对代理商的操作 不可放里面?★$30min-->
    	<action name="payInvoiceAdmin" class="com.myland.jp.adminx.pay.action.PayInvoiceAdminAction">
    		<result name="payInvoiceList">/adminx/pay/payInvoiceListAdminx.jsp</result>
    		<result name="payInvoice" type="chain">
    			<param name="method">queryInvoice</param>
    			<param name="actionName">payInvoiceAdmin</param> 
    			<param name="namespace">/adminx</param> 
    		</result><!-- /adminx/pay/payInvoiceListAdminx_agent.jsp -->
    		<result name="payInvoice_agent" type="chain">
    			<param name="method">queryInvoice_agent</param>
    			<param name="actionName">payInvoiceAdmin_agent</param>
    			<param name="namespace">/adminx</param>
    		</result>
    	</action>
    	
    	<!-- 驾校发票管理 st--><!-- 针对代理商的操作 不可放里面?★$30min-->
    	<action name="payInvoiceAdmin_a" class="com.myland.jp.adminx.pay.action.PayInvoiceAdminAction">
    		<result name="payInvoiceList">/adminx/pay/payInvoiceListAdminx.jsp</result>
    		<result name="payInvoice" type="chain">
    			<param name="method">queryInvoice</param>
    			<param name="actionName">payInvoiceAdmin</param> 
    			<param name="namespace">/adminx</param> 
    		</result><!-- /adminx/pay/payInvoiceListAdminx_agent.jsp -->
    		<result name="payInvoice_agent" type="chain">
    			<param name="method">queryInvoice_agent</param>
    			<param name="actionName">payInvoiceAdmin_agent</param>
    			<param name="namespace">/adminx</param>
    		</result>
    	</action>
    	
    	<action name="payInvoiceConfirmAdmin" class="com.myland.jp.adminx.pay.action.PayInvoiceAdminAction" method="queryInvoice">
    		<result name="payInvoiceList">/adminx/pay/payInvoiceListAdminx.jsp</result>
    	</action>
    	<!-- 分页不能动态 ! -->
    	<action name="payInvoiceAdmin_agent" class="com.myland.jp.adminx.pay.action.PayInvoiceAdminAction" method="queryInvoice_agent">
    		<result>/adminx/pay/payInvoiceListAdminx_agent.jsp</result>
    		<result name="payInvoiceList_agent">/adminx/pay/payInvoiceListAdminx_agent.jsp</result> <!-- 专门用来分页显示的. -->
    	</action>
    	<!-- 发票管理 end -->
    	
    	<!-- 字典维护 begin -->
    	<action name="dicAction" class="com.myland.jp.adminx.dic.action.DicAction">
    		<result name="success">/adminx/dic/dicMain.jsp</result> <!-- 默认的不想用,配上 -->
    	</action>
    	<!-- 分页一定不可动态代理 -->
    	<action name="queryCodeByTypeAction" class="com.myland.jp.adminx.dic.action.DicAction" method="queryCodeByType">
            <result name="list">/adminx/dic/dicList.jsp</result>
        </action>
    	<!-- 字典维护 end -->
    	
    	<!-- 学员管理 -->
    	<action name="personAction" class="com.myland.jp.adminx.person.action.PersonAction">
    		<result name="success">/adminx/person/personList.jsp</result>
    		<result name="addPerson">/adminx/person/personAdd.jsp</result>
    		<result name="modifyPerson">/adminx/person/personModify.jsp</result>
    		<result name="impPerson">/adminx/person/impPerson.jsp</result>
    		<result name="loadExcel">/adminx/person/loadImpPerson.jsp</result>
    		<result name="saveImpPerson" type="redirect">/adminx/personAction.do</result>
    		<result name="printOne">/adminx/viewPerson/printAc.jsp</result>
    		<result name="printAll">/adminx/viewPerson/printAcBatch.jsp</result>
    	</action>
    	<!-- 学员管理end logOrderAction_queryLogOrder-->
    	<action name="logOrderAction_*" class="com.myland.jp.adminx.LogOrder.action.LogOrderAction" method="{1}">
    		<result>/adminx/pay/logOrderList.jsp</result>
    	</action>
    	
    	<!-- 菜单管理 -->
    	<action name="menuAction" class="com.myland.jp.adminx.menu.action.MenuAction">
    		<result name="success">/adminx/menu/menuInfo.jsp</result>
    		<result name="addTopMenuInfo">/adminx/menu/menuTopAdd.jsp</result>
    		<result name="addSubMenuInfo">/adminx/menu/menuSubAdd.jsp</result>
    		<result name="editTopMenuInfo">/adminx/menu/menuTopUpdate.jsp</result>
    		<result name="editSubMenuInfo">/adminx/menu/menuSubUpdate.jsp</result>
    		<result name="menuList" type="redirect">/adminx/menuListAction.do?pid=${pid}</result>
    	</action>
    	<action name="menuTreeAction" class="com.myland.jp.adminx.menu.action.MenuAction" method="menuTreeShow">
    		<result name="success">/adminx/menu/menuTree.jsp</result>
    	</action>
    	<action name="menuListAction" class="com.myland.jp.adminx.menu.action.MenuAction" method="menuListByPid">
    		<result name="menuTopList">/adminx/menu/menuTopList.jsp</result>
    		<result name="menuSubList">/adminx/menu/menuSubList.jsp</result>
    	</action>
    	
    	<!-- 功能权限管理 -->
    	<action name="funcInfoAction" class="com.myland.jp.adminx.funcInfo.action.FuncInfoAction">
    		<result name="funcInfoList" type="redirect">/adminx/funcInfoListAction.do?pid=${pid}</result>
    		<result name="funcUrlsList" type="redirect">/adminx/funcUrlsListAction.do?funcId=${funcId}</result>
    		<result name="addFuncInfo">/adminx/menu/funcInfoAdd.jsp</result>
    		<result name="editFuncInfo">/adminx/menu/funcInfoUpdate.jsp</result>
    		<result name="addFuncUrls">/adminx/menu/funcUrlsAdd.jsp</result>
    		<result name="editFuncUrls">/adminx/menu/funcUrlsUpdate.jsp</result>
    	</action>
    	<action name="funcInfoListAction" class="com.myland.jp.adminx.funcInfo.action.FuncInfoAction" method="funcInfoListByPid">
    		<result name="success">/adminx/menu/funcInfoList.jsp</result>
    	</action>
    	<action name="funcUrlsListAction" class="com.myland.jp.adminx.funcInfo.action.FuncInfoAction" method="funcUrlsListByFuncId">
    		<result name="success">/adminx/menu/funcUrlsList.jsp</result>
    	</action>
 
 		<!-- 考点管理 begin -->
 		<action name="examPointAction" class="com.myland.jp.adminx.examPoint.action.ExamPointAction">
 			<result name="success">/adminx/examPoint/examPointList.jsp</result>
 			<result name="insertExamPoint">/adminx/examPoint/examPointAdd.jsp</result>
 			<result name="updateExamPoint">/adminx/examPoint/examPointUpdate.jsp</result>
 		</action>
 		<action name="examPointQueryAction" class="com.myland.jp.adminx.examPoint.action.ExamPointAction" method="examPointQueryList">
 			<result name="examPointQueryList">/adminx/examPoint/examPointQueryList.jsp</result>
 		</action>
 		<!-- 考点管理 end -->
 		
 			
        <!-- 问卷调查 -->
    	<action name="surveyAction" class="com.myland.jp.adminx.survey.action.surveyAction">
    		<result name="success">/adminx/survey/surveyList.jsp</result>
    		<result name="toAdd">/adminx/survey/questionAdd.jsp</result>
    		<result name="saveSurvey">/adminx/surveyAction.do</result>
    		<result name="toModifyQuestion">/adminx/survey/questionModify.jsp</result>
    	</action>
    	<!-- 问卷调查 -->
 		
 		<!-- 打回信息管理begin -->
 		<action name="applyReplyAction" class="com.myland.jp.adminx.applyReply.action.ApplyReplyAction">
 			<result name="applyReplyList">/adminx/applyReply/applyReplyList.jsp</result>
 		</action>
 		
 		<!-- 打回信息管理end -->
 		<!-- 接口管理 -->
 		<action name="interFaceAction" class="com.myland.jp.adminx.interfaces.action.InterFaceAction">
 			<result name="success">/adminx/interFace/interFaceList.jsp</result>
 			<result name="addInterFace">/adminx/interFace/interFaceAdd.jsp</result>
 			<result name="editInterFace">/adminx/interFace/interFaceEdit.jsp</result>
 			<result name="viewInterFace">/adminx/interFace/interFaceView.jsp</result>
 		</action>
 		
 		<!-- 刷新缓存 -->
	     <action name="refreshCache_*" class="com.myland.framework.cache.action.RefreshCacheAction" method="{1}">
            <result name="open">/adminx/cache/refreshCache.jsp</result>
        </action>
        
        <!-- 日志管理 begin -->
        <action name="logAction" class="com.myland.jp.adminx.log.action.LogAction">
        	<result name="courseLogList">/adminx/log/LogList.jsp</result>
        </action>
        <!-- 后台日志集合 -->
		<action name="LogQueryAction" class="com.myland.jp.adminx.log.action.LogAction" method="LogQueryList">
			<result name="success">/adminx/log/LogQueryList.jsp</result>
		</action>
		<!-- 前台日志集合 -->
		<action name="webLogQueryAction" class="com.myland.jp.adminx.log.action.LogAction" method="WebLogQueryList">
			<result name="success">/adminx/log/WebLogQueryList.jsp</result>
		</action>
		<!-- 日志管理 end -->
		<!-- 统计汇总 -->
		<action name="summaryAction_*" class="com.myland.jp.adminx.summary.action.SummaryAction" method="{1}">
			<result name="success">/adminx/summary/summaryMonthList.jsp</result>
			<result name="{1}">/adminx/summary/summaryNumList.jsp</result>
		</action>
		<!-- 月度内每天学员汇总 -->
		<action name="summaryDaysOfMonth" class="com.myland.jp.adminx.summary.action.SummaryAction" method="summaryDaysOfMonth">
			<result name="summaryDay">/adminx/summary/summaryDayList.jsp</result>
		</action>
		<!-- 每天学习学员明细 -->
		<action name="detailSummaryDay" class="com.myland.jp.adminx.summary.action.SummaryAction" method="detailSummaryDay">
			<result name="detailSummary">/adminx/summary/detailDayList.jsp</result>
		</action>
		<!-- App问题查询 母页面 -->
		<action name="messageAction" class="com.myland.jp.adminx.message.action.MessageAction">
			<result name="messageList">/adminx/message/messageCheckList.jsp</result>
		</action>
		<!-- App问题查询 子页面 -->
		<action name="messageActionQuery" class="com.myland.jp.adminx.message.action.MessageAction" method="messageQuery">
			<result name="messageCheckList">/adminx/message/messageQueryList.jsp</result>
		<!-- 动态调用,App问题审核 -->
		</action>
		<action name="messageCheckAction" class="com.myland.jp.adminx.message.action.MessageAction">
			<result name="show">/adminx/message/messageContentShow.jsp</result>
			<result name="detailList">/adminx/message/messageDetailList.jsp</result>
			<result name="showDetail">/adminx/message/messageDetailContentShow.jsp</result>
		</action>
		<!-- 回复问题的审核 子页面  -->
		<action name="messageDetailActionQuery" class="com.myland.jp.adminx.message.action.MessageAction" method="messageDetailQuery">
			<result name="messageDetailQueryList">/adminx/message/messageDetailQueryList.jsp</result>
		</action>
		<!-- 订单汇总 -->
		<action name="payOrderFlowTotalAction" class="com.myland.jp.adminx.payOrderFlowTotal.action.PayOrderFlowTotalAction">
			<result name="summarizeList">/adminx/payOrderFlowTotal/orderTotalList.jsp</result>
		</action>
    </package>
</struts>

猜你喜欢

转载自timeil.iteye.com/blog/2242439