package com.fuzamei.util;


import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.Map;
import java.util.Map.Entry;

/**
 * 
 * @author fzm_sdy
 * 
 */
public class PageUtil {
	/**					分页 fzm_sdy
	 * 
	 * @param map		
	 * @param total		总条数
	 * @param pageSize	每页行数
	 * @param pageIndex	页码
	 * @return
	 */
	public static LinkedHashMap<String, Object> getPageIndex(
			LinkedHashMap<String, Object> map, int total, int pageSize,
			int pageIndex) {

			int beginPage = pageSize * (pageIndex - 1);
			map.put("beginPage", beginPage);
			map.put("pageSize", pageSize);
		

		return map;

	}

	/**
	 * 检测参数
	 * 
	 * @param mapParam
	 *            需要检测的参数
	 * @param data
	 *            前端传递的数据
	 * @return
	 */
	public static Map<String, Object> checkParam(
			LinkedHashMap<String, Object> mapParam, String data) {
		Map<String, Object> dataMap = JSONUtil.jsonToMap(data); // json转map
		for (Entry<String, Object> map : mapParam.entrySet()) {

			if (Integer.parseInt(map.getValue().toString()) == 1) { // 1，表示该参数必须存在且不能为空

				if (dataMap.containsKey(map.getKey()) == false) { // 判断参数是否存在
					
					return JSONUtil.getJsonMap(10001, false, getParamName(map.getKey())
							+ "参数不足", null);
				}
				if (dataMap.get(map.getKey()).equals("")) { // 判断参数是否为空
					return JSONUtil.getJsonMap(10001, false, getParamName(map.getKey())
							+ "参数为空", null);
				}
			}

			else { // 1，表示该参数必须存但可以为空
				if (dataMap.containsKey(map.getKey()) == false) { // 判断参数是否为空

					return JSONUtil.getJsonMap(10001, false,getParamName(map.getKey())
							+ "参数不足", null);

				}

			}

		}
		return JSONUtil.getJsonMap(200, true, "参数核对完成", null);

	}
	public static String getParamName(String param){
		if(("enterprise_id").endsWith(param)){
			return "企业编号";
		}else if(("enterprise_id").endsWith(param)){
			return "企业名称";
		}else if(("input").endsWith(param)){
			return "搜索内容";
		}else if(("enterprise_name").endsWith(param)){
			return "企业名称";
		}else if(("beginDate").endsWith(param)){
			return "搜索日期";
		}else if(("endDate").endsWith(param)){
			return "搜索日期";
		}else if(("pageSize").endsWith(param)){
			return "每页行数";
		}else if(("pageIndex").endsWith(param)){
			return "页码";
		}else if(("sign").endsWith(param)){
			return "签名数据";
		}
		else if(("outbill_date").endsWith(param)){
			return "出账日";
		}
		else if(("warrantor").endsWith(param)){
			return "担保人";
		}
		else if(("evidence_front").endsWith(param)){
			return "凭证";
		}else if(("end_date").endsWith(param)){
			return "到期日";
		}else if(("order_id").endsWith(param)){
			return "应收款编号";
		}else if(("in_enterprise").endsWith(param)){
			return "接收企业";
		}else if(("contract_no").endsWith(param)){
			return "合同编号";
		}else if(("agreed_interest_rates").endsWith(param)){
			return "协议利率";
		}else{
			return "参数";
		}
		
	}

	/**
	 * 分页查询
	 * @param parameter 查询结果
	 * @param pageSize 每页要显示的条数
	 * @param pageIndex 页码
	 * @author WangBin
	 * @return result 要分页的结果
	 */
	public static LinkedList<LinkedHashMap<String, Object>> pagingQuery(
			LinkedList<LinkedHashMap<String, Object>> parameter, Integer pageSize, Integer pageIndex){
		
		LinkedList<LinkedHashMap<String, Object>> result = 
				new LinkedList<LinkedHashMap<String,Object>>();
		
		// TODO 分页页码判断
		if(pageIndex != null){
			if(pageIndex == 0){
				pageIndex = 1;
			}
		}
		// TODO 分页条数判断
		if(pageSize != null){
			if(pageSize == 0){
				pageSize = 5;
			}
		}
		// TODO 判断要显示第一条页码是否大于总条数
		if(((pageIndex - 1) * pageSize + 1) > parameter.size()){
			pageIndex = 1;
			pageSize  = 5;
		}
		// TODO 计算要显示开始条数   集合从0开始  所有不加1
		int STARTSIZE = (pageIndex - 1) * pageSize;
		// TODO 计算要显示结束条数   集合从0开始  所有减1
		int ENSDSIZE = pageIndex * pageSize - 1;
		int i = 0;
		
		// TODO 分页
		if(result.size() > 0 && STARTSIZE < result.size()){
			// TODO 结束条数是否大于总条数    大于就按照总条数的结束条数作为要显示的最后一条   否则按照计算的结束条数作为要显示的最后一条
			if(ENSDSIZE > parameter.size()){
				while(STARTSIZE + i < parameter.size()){
					result.add(parameter.get(STARTSIZE + i));
					i++;
				}
			}else{
				while(STARTSIZE + i < (ENSDSIZE + 1)){
					result.add(parameter.get(STARTSIZE + i));
					i++;
				}
			}
		}
		return result;
	}
}
