package com.kingdee.shr.customer.gtiit.util;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import org.apache.commons.lang3.StringUtils;
import java.util.stream.Collectors;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class RptUtils {
    
	/** 报表查询字段/导出excel标题 */
	public static ArrayList<String> englishList = new ArrayList<String>();
	public static ArrayList<String> chineseList = new ArrayList<String>();


	static {

		englishList.add("PersonNumber");
		englishList.add("LastName");
		englishList.add("FirstName");
		englishList.add("EnglishName");
		englishList.add("Department");
		englishList.add("Position");
		englishList.add("JobName");
		englishList.add("WorkerCategory");
		englishList.add("PersonType");
		englishList.add("FullorPartTime");
		englishList.add("HireDate");
		englishList.add("ProbationEndDate");
		englishList.add("ContractNo");
		englishList.add("Type");
		englishList.add("CommencingDate");
		englishList.add("ExpiredDate");
		englishList.add("Yearsofservice");
		
		
		chineseList.add("工号");
		chineseList.add("姓");
		chineseList.add("名");
		chineseList.add("英文名");
		chineseList.add("部门名称");
		chineseList.add("职位名称");
		chineseList.add("职务");
		chineseList.add("员工类别");
		chineseList.add("人员类型");
		chineseList.add("全职或兼职");
		chineseList.add("雇佣日期");
		chineseList.add("试用期结束日期");
		chineseList.add("合同/协议编码");
		chineseList.add("类型");
		chineseList.add("开始时间");
		chineseList.add("结束时间");
		chineseList.add("服务年限");
	}
	
	
	
	
	public static Map<String, Object> getRptSQLFilterate(JSONObject json, List<String> qfNames) {

		Map<String, Object> rptSQLFilterateMap = new HashMap<>();
		qfNames.forEach(item -> {
			JSONObject paramJson = json.getJSONObject(item);
			String dataType = paramJson.getString("dataType");
			if (dataType.equals("Date")) {
				// 转Map 区分日期和日期范围
				Map<String, Object> dateMap = new HashMap<>(3);

				JSONObject values = paramJson.getJSONObject("values");
				if (values == null) {
					dateMap.put("startDate", null);
					dateMap.put("endDate", null);
					dateMap.put("selectDate", null);
					dateMap.put("date", null);

				} else {
					Map<String, Object> map = values.entrySet().stream()
							.collect(Collectors.toMap(entry -> entry.getKey(), entry -> entry.getValue()));
					if (map.containsKey("startDate") || map.containsKey("startDate")) {
						// 日期范围
						dateMap.put("startDate", map.get("startDate"));
						dateMap.put("endDate", map.get("endDate"));
						dateMap.put("selectDate", map.get("selectDate"));
					} else {
						// 日期
						dateMap.put("date", map.get("date"));
					}
				}
				rptSQLFilterateMap.put(item, dateMap);
			} else if (dataType.equals("F7")) {
				// 将id转换成 支持sql in 查询

				String values = paramJson.getString("values");
				if (StringUtils.isNotBlank(values.toString())) {
					String ids = "'" + values.toString().replace(",", "','") + "'";
					ids = ids.replace(" ", "+");
					rptSQLFilterateMap.put(item, ids);
				} else {
					rptSQLFilterateMap.put(item, values);
				}
			} else if (dataType.equals("Enum")) {
				String values = paramJson.getString("values");

				rptSQLFilterateMap.put(item, values);
			}
		});

		return rptSQLFilterateMap;
	}
}
