package com.ps.visualization.service.impl;

import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import javax.annotation.Resource;

import org.springframework.stereotype.Repository;

import com.ps.base.dao.BaseDao;
import com.ps.base.service.impl.BaseServiceImpl;
import com.ps.visualization.dao.RegnameProgressDao;
import com.ps.visualization.service.RegnameProgressService;
import com.ps.visualization.vo.RegnameProgress;

@Repository(value = "regnameProgressService")
public class RegnameProgressServiceImpl extends
		BaseServiceImpl<RegnameProgress, Integer> implements
		RegnameProgressService {

	@Resource(name = "regnameProgressDao")
	private RegnameProgressDao regnameProgressDao;

	@Override
	public BaseDao<RegnameProgress, Integer> getBaseDao() {
		// TODO Auto-generated method stub
		return regnameProgressDao;
	}

	@Override
	public List getRegnameTopKey(String regname) {
		// TODO Auto-generated method stub
		List<Object> returnList = new ArrayList<Object>();
		List<Object[]> spList = regnameProgressDao.getRegnameTopKey(regname);
		for (Object[] objArray : spList) {
			HashMap<String, Object> currentMap = new HashMap<String, Object>();
			currentMap.put("regName", objArray[0]);
			currentMap.put("exist", objArray[1]);
			returnList.add(currentMap);
		}

		return returnList;
	}

	@Override
	public List getScanProgress(String regName) {
		// TODO Auto-generated method stub
		List<Object> returnList = new ArrayList<Object>();
		List<Object[]> spList = regnameProgressDao.getScanProgress(regName);
		for (Object[] objArray : spList) {
			HashMap<String, Object> currentMap = new HashMap<String, Object>();
			switch (objArray[0].toString()) {
			case "Anhui":
				currentMap.put("regName", "安徽");
				break;
			case "Beijing":
				currentMap.put("regName", "北京");
				break;
			case "Chongqing":
				currentMap.put("regName", "重庆");
				break;
			case "Fujian":
				currentMap.put("regName", "福建");
				break;
			case "Gansu":
				currentMap.put("regName", "甘肃");
				break;
			case "Guangdong":
				currentMap.put("regName", "广东");
				break;
			case "Guangxi":
				currentMap.put("regName", "广西");
				break;
			case "Guizhou":
				currentMap.put("regName", "贵州");
				break;
			case "Hainan":
				currentMap.put("regName", "海南");
				break;
			case "Hebei":
				currentMap.put("regName", "河北");
				break;
			case "Heilongjiang":
				currentMap.put("regName", "黑龙江");
				break;
			case "Henan":
				currentMap.put("regName", "河南");
				break;
			case "Hubei":
				currentMap.put("regName", "湖北");
				break;
			case "Hunan":
				currentMap.put("regName", "湖南");
				break;
			case "Jiangsu":
				currentMap.put("regName", "江苏");
				break;
			case "Jiangxi":
				currentMap.put("regName", "江西");
				break;
			case "Jilin":
				currentMap.put("regName", "吉林");
				break;
			case "Liaoning":
				currentMap.put("regName", "辽宁");
				break;
			case "Ningsia Hui Autonomous Region":
				currentMap.put("regName", "宁夏");
				break;
			case "Qinghai":
				currentMap.put("regName", "青海");
				break;
			case "Shaanxi":
				currentMap.put("regName", "陕西");
				break;
			case "Shandong":
				currentMap.put("regName", "山东");
				break;
			case "Shanghai":
				currentMap.put("regName", "上海");
				break;
			case "Shanxi":
				currentMap.put("regName", "山西");
				break;
			case "Sichuan":
				currentMap.put("regName", "四川");
				break;
			case "Tianjin":
				currentMap.put("regName", "天津");
				break;
			case "Tibet":
				currentMap.put("regName", "西藏");
				break;
			case "Xinjiang":
				currentMap.put("regName", "新疆");
				break;
			case "Yunnan":
				currentMap.put("regName", "云南");
				break;
			case "Zhejiang":
				currentMap.put("regName", "浙江");
				break;
			case "Taiwan":
				currentMap.put("regName", "台湾");
				break;
			case "Neimenggu":
				currentMap.put("regName", "内蒙古");
				break;
			default:
				break;
			}
			double rate = 0;
			Object tempObj = objArray[1];
			if (tempObj == null || tempObj == "")
				rate = 0;
			else {
				rate = Double.parseDouble(objArray[1].toString()) * 100;
			}
			DecimalFormat df = new DecimalFormat("#.00");
			String answer = df.format(rate);
			currentMap.put("progress", answer);
			returnList.add(currentMap);
		}

		return returnList;
	}

}
