<%@ page contentType="text/html;charset=gbk" %>
<%@ page import="java.util.*" %>
<%@ page import="net.sz600.tool.SzDateHelp"%>
<%@ page import="net.sz600.basicdata.*" %>
<%@ page import="net.sz600.tool.SzConvert" %>
<%@ page import="net.sz600.database.SzPageInfo" %>
<%@ page import="net.sz600.system.*" %>
<%@ page import="net.sz600.stat.*" %>
<%@ include file="/sessionInfo.jsp"%>

<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=gbk">
<link href="<%=strSkin_SESSION%>/css2007.css" rel="stylesheet" type="text/css">
<script language="javascript" src="../../../share/js/commonTool.js"></script>
</head>
<%
	
	//查询时间段
	String sSearchBegin = SzConvert.strWriteData(request.getParameter("txtSearchBegin"));
	String sSearchEnd = SzConvert.strWriteData(request.getParameter("txtSearchEnd"));
	//获取选择的部门信息
	String BMID = SzConvert.toZeroStr(request.getParameter("BMID"));
	String BMMC = SzConvert.strWriteData(request.getParameter("BMMC"));
	//员工姓名
	String YGXM = SzConvert.strWriteData(request.getParameter("YGXM"));
	//如果开始时间和结束时间都为空，就默认为当前月
	Date curDate = null;
	if(sSearchBegin.equals("")&&sSearchEnd.equals("")){
		curDate = SzDateHelp.getFirstDateMonth();
		sSearchBegin = SzDateHelp.dateToYMD(SzDateHelp.getFirstDateMonth());
		sSearchEnd = SzDateHelp.dateToYMD(SzDateHelp.getLastDateMonth());
	}
	StringBuffer sCond = new StringBuffer("");
	
	//========获取部门信息=============
	SzLogin szLogin = new SzLogin();
	SzLoginInfo szLoginInfo = (SzLoginInfo)szLogin.getInfoByCond(" DLID = " + iDLID_SESSION);
	SzDepart depart = new SzDepart();
	StringBuffer departStr = new StringBuffer(" 1=1 ");
	String strManageDepartID = "";
	
	ArrayList loginList = new ArrayList();
	//是管理员时查询所有部门，否则查询当前用户的部门/选择的部门
	if (BMMC.equals("")){
		 if (!isBarManager_SESSION){
			SzUserHelp szUserHelp = new SzUserHelp(); 
			strManageDepartID = SzConvert.toZeroStr(szUserHelp.getManageDepartID(iDLID_SESSION));			
			if (strManageDepartID.equals("0")){
				departStr.append(" and BMID = "+szLoginInfo.getDLBM());
			} else {
				departStr.append(" and BMID IN( " + strManageDepartID + ")");
				sCond.append(" and BMID IN( " + strManageDepartID + ")");
			}
		 }
	 } else {
		 departStr.append(" and BMMC = '"+BMMC+"'");
	 }
	 ArrayList departList = depart.getArrayList(departStr.toString());
	 SzDepartInfo departInfo = null;
	 //如果是管理员，还要显示没有部门的员工
	 if(BMMC.equals("")&&isBarManager_SESSION){
		 departInfo = new SzDepartInfo();
		 departInfo.setBMID(0);
		 departInfo.setBMMC("其他");
		 departList.add(departInfo);
	 }
	 int departSize = departList!=null?departList.size():0;
	 
	//取得用户
	ArrayList loginInfoList = SzUserHelp.getUserStaticList();
	//根据姓名查询
	if (!YGXM.equals("")){
		szLoginInfo = (SzLoginInfo)szLogin.getInfoByCond(" DLXM='" + YGXM + "'");
		loginInfoList = new ArrayList();
		if (szLoginInfo != null){
			loginInfoList.add(szLoginInfo);
		}
	}
	int loginCount = loginInfoList != null? loginInfoList.size():0;
  	//用于存放所有可看员工的ID
	 StringBuffer loginIDStr = new StringBuffer();
	 //用于存放所有部门的员工
	 Map loginMap = new HashMap();
	 int departID = 0;
	 //用于存入某个部门的员工
	 ArrayList userList = new ArrayList();
	 for (int i=0;i < departSize;i++ ){
		 userList = new ArrayList();
		 departInfo = (SzDepartInfo)departList.get(i);
		 departID = departInfo.getBMID();
		 userList = new ArrayList();
		 for (int j = 0;j<loginCount;j++){
			 szLoginInfo = (SzLoginInfo)loginInfoList.get(j);
			 //System.out.println(szLoginInfo.getDLBM()+":"+szLoginInfo.getDLXM());
			 if (isBarManager_SESSION && szLoginInfo.getDLBM() == departID){
				 userList.add(szLoginInfo);
				 loginIDStr.append(szLoginInfo.getDLID()+",");
			 } else if (strManageDepartID.equals("0") && szLoginInfo.getDLID() == iDLID_SESSION){
				 userList.add(szLoginInfo);
				 loginIDStr.append(szLoginInfo.getDLID()+",");
			 } else if (!strManageDepartID.equals("0") && szLoginInfo.getDLBM() == departID){
				 userList.add(szLoginInfo);
				 loginIDStr.append(szLoginInfo.getDLID()+",");
			 }
			 
		 }
		 loginMap.put(departID,userList);
	 }
	 loginIDStr.append("-1");
	 
	//获取对象信息
	Customer customer = new Customer();
	
	String searchStr = customer.getStat_SQL("BM.BMMC",BMMC,"HT.HTXXMC26",YGXM,"", "", "", "");
	Map AllHTMap = customer.getYG_HT_Map(searchStr);
	searchStr = customer.getStat_SQL("BM.BMMC",BMMC,"HT.HTXXMC26",YGXM,"HT.HTXXMC14", sSearchBegin, sSearchEnd, sCond.toString());
	Map HTMap = customer.getYG_HT_Map(searchStr);
	
    Map[] allMap = new Map[]{AllHTMap,HTMap};
	int allMapSize = allMap.length;
	
%>
<!-----上面的工具栏------>
<%@ include file="/share/title.jsp"%>
<table width="100%">
  <form name="formBar" method="post">
  <tr>
  	<td valign="bottom" style="padding-bottom: 5px;padding-top: 5px;" align="center">
  		<h4 style="display: inline;">个人业务数据统计</h4>
  	</td>
  </tr>
  <tr>
    <td>
      部门<input type="text" name="BMMC" class="txtClassSearch" value="<%=BMMC%>">
      姓名<input type="text" name="YGXM" class="txtClassSearch" value="<%=YGXM%>">
      开始<input type="text" name="txtSearchBegin" class="txtClassSearch" value="<%=sSearchBegin%>">
      <%=SzPageHelp.calendar2Select("../../../","formBar.txtSearchBegin")%>
      结束<input type="text" name="txtSearchEnd" class="txtClassSearch" value="<%=sSearchEnd%>">
      <%=SzPageHelp.calendar2Select("../../../","formBar.txtSearchEnd")%>
      <%=SzPageHelp.button("查询", "javascript:FormSubmit(formBar,'stat_customer_user2.jsp');")%>
    </td>
  </tr>
  </form>
</table>

<!-----信息列表----->
<table width="100%" border="1" bordercolorlight="#C0C0C0" bordercolordark="#FFFFFF" class="tableClass" cellpadding="1" cellspacing="0">
  <form name="formList" method="post">
  <tr class="trClassTitle_c">
    <td>部门名称</td>
    <td>姓名</td>
    <td>合同总数</td>
    <td>合同总金额</td>
    <td>总已收款</td>
    <td>新合同数量</td>
    <td>新合同金额</td>
    <td>已收款</td>
  </tr>
<%

	StringBuffer outSB = new StringBuffer();
	int spanRowCount = 0;
	int rowCount = 0;
	int count = 0;
	int uCont = 0;
	int departCount = 0;
	double money = 0;
	double departMoney = 0;
	double sumMoney = 0;
	int sum = 0;
	Object obj = null;
	Object objvalue[] = null;
	double[] departValue = new double[allMapSize*3];
	double[] sumValue = new double[allMapSize*3];
	int sumValuLength = sumValue.length;
	int sBMID = 0;
	String sBMMC = "";
	int loginSize = 0;
	int Lid = 0;	//用户ID
	String Lxm = "";	//用户姓名
	String strKey = "";
	boolean isOut = false;
	Map objMap = null;
    for (int i=0;i<departSize;i++){
    	departValue = new double[allMapSize*3];
    	departInfo = (SzDepartInfo)departList.get(i);
 		sBMID = departInfo.getBMID();
 		sBMMC = departInfo.getBMMC();
 		loginList = (ArrayList)loginMap.get(sBMID);
 		loginSize = loginList == null? 0:loginList.size();
    	departCount = 0;
    	departMoney = 0;
    	outSB = new StringBuffer();
    	spanRowCount = 0;
    	isOut = false;
    	for(int j = 0;j<loginSize;j++){
    		szLoginInfo = (SzLoginInfo)loginList.get(j);
 			if (szLoginInfo == null){
 				continue;
 			} 
 			
 			uCont = 0;
 			Lid = szLoginInfo.getDLID();
 			Lxm = szLoginInfo.getDLXM();
 			strKey = sBMMC+ ":" + Lxm;

 			if (!(AllHTMap.containsKey(strKey)||HTMap.containsKey(strKey))){
 				continue;
 			}
    		if (spanRowCount > 0){
    			outSB.append("<tr align=\"center\">");
    		}
    		outSB.append("<td>"+ Lxm +"&nbsp;</td>");
    		spanRowCount++;
    		for (int m = 0;m < allMapSize;m++){
    			objMap = allMap[m];
    			obj = objMap.get(strKey);
               	objvalue = obj != null? (Object[])obj:null;
				if (objvalue!=null){
					int objvaluelen = objvalue.length;
					for (int n = 0;n < objvaluelen; n++){
						money = objvalue!=null? Double.valueOf(objvalue[n].toString()):0;
		               	if (money > 0){
		               		isOut = true;
		               	}
		               	if (n == 0){
		       				outSB.append("<td align=\"center\">"+ (int)money +"&nbsp;</td>");
		               	} else {
		               		outSB.append("<td align=\"center\">"+ SzConvert.formatFloat2Str(money) +"&nbsp;</td>");
		               	}
		               	
		            	departValue[m*objvaluelen+n] = departValue[m*objvaluelen+n] + money;
		            	sumValue[m*objvaluelen+n] = sumValue[m*objvaluelen+n] + money;
					}
				} else {
					for (int n = 0;n < sumValuLength/allMapSize; n++){
						if (n == 0){
							outSB.append("<td align=\"center\">0&nbsp;</td>");
		               	} else {
		               		outSB.append("<td align=\"center\">"+ SzConvert.formatFloat2Str(0.0) +"&nbsp;</td>");
		               	}
					}
				}
    		}
    		outSB.append("</tr>");
 		}
    	if (isOut && loginSize > 0){
    		out.println("<tr align=\"center\">");
    		out.println("<td rowspan=\""+ spanRowCount +"\">"+ sBMMC +"&nbsp;</td>");
    		
    		out.println(outSB.toString());
	    	out.println("<tr class=\"trClassTitle2\" align=\"center\">");
	        out.println("<td style=\"color: blue;\">部门合计</td>");
	        out.println("<td>&nbsp;</td>");
	        for (int j = 0;j<sumValuLength;j++) {
        		if (j == 0 || j == 3){
           			out.println("<td align=\"center\">"+ (int)departValue[j] +"&nbsp;</td>");
               	} else {
               		out.println("<td align=\"center\">"+ SzConvert.formatFloat2Str(departValue[j]) +"&nbsp;</td>");
               	}
	        }
	        out.println("<tr>");
    	}
    	
    }
    out.println("<tr class=\"trClassTitle2\" align=\"center\">");
    out.println("<td style=\"color: red;\">合计</td>");
    out.println("<td>&nbsp;</td>");
    for (int j = 0;j<sumValuLength;j++) {
   		if (j == 0 || j == 3){
   			out.println("<td align=\"center\">"+ (int)sumValue[j] +"&nbsp;</td>");
       	} else {
       		out.println("<td align=\"center\">"+ SzConvert.formatFloat2Str(sumValue[j]) +"&nbsp;</td>");
       	}
    }
    out.println("<tr>");
    
    loginMap = null;
    allMap = null;
    AllHTMap = null;
    HTMap = null;
%>

  </form>
</table>

<!-----下面的工具栏------>
<table width="100%">
  <form name="formPage" method="post">
  </form>
</table>

<!-----这里包含要提交的内容--->
<form name="formHidden" method="post">
</form>
<%
    ////如果要使用日历控件，必须输出这个calendarFrame
    out.println(SzPageHelp.calendar2Frame("../../../"));
%>