package com.ruoyi;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collections;
import java.util.Comparator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.TimeUnit;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.alibaba.druid.support.json.JSONUtils;
import com.ruoyi.common.config.RuoYiConfig;
import com.ruoyi.common.core.redis.RedisCache;
import com.ruoyi.common.utils.http.HttpUtils;
import com.ruoyi.common.utils.spring.SpringUtils;
import com.ruoyi.report.domain.RzlClassStatisticsInfo;
import com.ruoyi.report.service.IRzlClassStatisticsInfoService;
import com.ruoyi.reportpub.domain.RzgClassStatisticsInfo;
import com.ruoyi.reportpub.service.IRzgClassStatisticsInfoService;
import com.ruoyi.reportrzs.domain.RzsClassStatisticsInfo;
import com.ruoyi.reportrzs.service.IRzsClassStatisticsInfoService;


public class NationalRankingUtils {

	public static final Logger logger=LoggerFactory.getLogger(NationalRankingUtils.class);
	private static IRzlClassStatisticsInfoService _rzlClassStatisticsInfoService;
	private static IRzsClassStatisticsInfoService _rzsClassStatisticsInfoService;
	private static IRzgClassStatisticsInfoService _rzgClassStatisticsInfoService;
//	private static String res = "{\"code\":200,\"results\":[" + "{\"全国专利公开量\":42811457,\"全国专利授权量\":32683019,"
//			+ "\"全国发明公开量\":15959412,\"全国实用新型公开量\":18869075,\"全国外观设计公开量\":7982970," + "\"全国发明授权量\":5830974,"
//			+ "\"全国专利有效量\":18583803," + "\"全国发明专利有效量\":4380661,\"全国实用新型有效量\":11252738,\"全国外观设计有效量\":2950404},"
//			+ "{\"广东省专利公开量\":6974260,\"广东省专利授权量\":5683031,"
//			+ "\"广东省发明公开量\":1968933,\"广东省实用新型公开量\":2851252,\"广东省外观设计公开量\":2154075," + "\"广东省发明授权量\":677704,"
//			+ "\"广东省专利有效量\":3530475,\"广东省发明专利有效量\":573932,\"广东省实用新型有效量\":1940382," + "\"广东省外观设计有效量\":1016161},"
//			+ "{\"江苏省专利公开量\":5906277,\"江苏省专利授权量\":4466338,\"江苏省发明公开量\":1950571,\"江苏省实用新型公开量\":2722483,\"江苏省外观设计公开量\":1233223,\"江苏省发明授权量\":510632,\"江苏省专利有效量\":2373829,\"江苏省发明专利有效量\":425763,\"江苏省实用新型有效量\":1764380,\"江苏省外观设计有效量\":183686},{\"浙江省专利公开量\":4485721,\"浙江省专利授权量\":3777628,\"浙江省发明公开量\":1100281,\"浙江省实用新型公开量\":2071865,\"浙江省外观设计公开量\":1313575,\"浙江省发明授权量\":392188,\"浙江省专利有效量\":1942379,\"浙江省发明专利有效量\":325804,\"浙江省实用新型有效量\":1150816,\"浙江省外观设计有效量\":465759},{\"北京市专利公开量\":2366925,\"北京市专利授权量\":1586691,\"北京市发明公开量\":1385700,\"北京市实用新型公开量\":768082,\"北京市外观设计公开量\":213143,\"北京市发明授权量\":605466,\"北京市专利有效量\":1088809,\"北京市发明专利有效量\":502285,\"北京市实用新型有效量\":461976,\"北京市外观设计有效量\":124548},{\"山东省专利公开量\":2659195,\"山东省专利授权量\":2086337,\"山东省发明公开量\":841240,\"山东省实用新型公开量\":1551713,\"山东省外观设计公开量\":266242,\"山东省发明授权量\":268382,\"山东省专利有效量\":1199155,\"山东省发明专利有效量\":208062,\"山东省实用新型有效量\":871554,\"山东省外观设计有效量\":119539},{\"上海市专利公开量\":1866582,\"上海市专利授权量\":1356329,\"上海市发明公开量\":788434,\"上海市实用新型公开量\":794748,\"上海市外观设计公开量\":283400,\"上海市发明授权量\":278181,\"上海市专利有效量\":833406,\"上海市发明专利有效量\":215948,\"上海市实用新型有效量\":507390,\"上海市外观设计有效量\":110068},{\"安徽省专利公开量\":1631544,\"安徽省专利授权量\":1037268,\"安徽省发明公开量\":758327,\"安徽省实用新型公开量\":725079,\"安徽省外观设计公开量\":148138,\"安徽省发明授权量\":164051,\"安徽省专利有效量\":620752,\"安徽省发明专利有效量\":142585,\"安徽省实用新型有效量\":421624,\"安徽省外观设计有效量\":56543},{\"四川省专利公开量\":1392375,\"四川省专利授权量\":1066973,\"四川省发明公开量\":473494,\"四川省实用新型公开量\":622258,\"四川省外观设计公开量\":296623,\"四川省发明授权量\":148092,\"四川省专利有效量\":560342,\"四川省发明专利有效量\":115678,\"四川省实用新型有效量\":369097,\"四川省外观设计有效量\":75567},{\"福建省专利公开量\":1276908,\"福建省专利授权量\":1090789,\"福建省发明公开量\":284152,\"福建省实用新型公开量\":677903,\"福建省外观设计公开量\":314853,\"福建省发明授权量\":98033,\"福建省专利有效量\":611969,\"福建省发明专利有效量\":80412,\"福建省实用新型有效量\":402217,\"福建省外观设计有效量\":129340},{\"湖北省专利公开量\":1203873,\"湖北省专利授权量\":909507,\"湖北省发明公开量\":447818,\"湖北省实用新型公开量\":639924,\"湖北省外观设计公开量\":116131,\"湖北省发明授权量\":153452,\"湖北省专利有效量\":577543,\"湖北省发明专利有效量\":123266,\"湖北省实用新型有效量\":402565,\"湖北省外观设计有效量\":51712},{\"河南省专利公开量\":1201418,\"河南省专利授权量\":960210,\"河南省发明公开量\":336186,\"河南省实用新型公开量\":708376,\"河南省外观设计公开量\":156856,\"河南省发明授权量\":94978,\"河南省专利有效量\":536964,\"河南省发明专利有效量\":68380,\"河南省实用新型有效量\":405924,\"河南省外观设计有效量\":62660},{\"湖南省专利公开量\":891426,\"湖南省专利授权量\":670171,\"湖南省发明公开量\":334853,\"湖南省实用新型公开量\":401915,\"湖南省外观设计公开量\":154658,\"湖南省发明授权量\":113598,\"湖南省专利有效量\":380349,\"湖南省发明专利有效量\":91905,\"湖南省实用新型有效量\":224561,\"湖南省外观设计有效量\":63883},{\"天津市专利公开量\":857831,\"天津市专利授权量\":636878,\"天津市发明公开量\":296939,\"天津市实用新型公开量\":500019,\"天津市外观设计公开量\":60873,\"天津市发明授权量\":75986,\"天津市专利有效量\":341579,\"天津市发明专利有效量\":52645,\"天津市实用新型有效量\":267419,\"天津市外观设计有效量\":21515},{\"陕西省专利公开量\":791569,\"陕西省专利授权量\":567442,\"陕西省发明公开量\":342038,\"陕西省实用新型公开量\":353957,\"陕西省外观设计公开量\":95574,\"陕西省发明授权量\":117911,\"陕西省专利有效量\":311516,\"陕西省发明专利有效量\":88753,\"陕西省实用新型有效量\":200083,\"陕西省外观设计有效量\":22680},{\"河北省专利公开量\":820780,\"河北省专利授权量\":696813,\"河北省发明公开量\":190254,\"河北省实用新型公开量\":498833,\"河北省外观设计公开量\":131693,\"河北省发明授权量\":66287,\"河北省专利有效量\":439179,\"河北省发明专利有效量\":53024,\"河北省实用新型有效量\":319419,\"河北省外观设计有效量\":66736},{\"辽宁省专利公开量\":784164,\"辽宁省专利授权量\":593501,\"辽宁省发明公开量\":285996,\"辽宁省实用新型公开量\":438414,\"辽宁省外观设计公开量\":59754,\"辽宁省发明授权量\":95333,\"辽宁省专利有效量\":312907,\"辽宁省发明专利有效量\":66440,\"辽宁省实用新型有效量\":226537,\"辽宁省外观设计有效量\":19930},{\"重庆市专利公开量\":728197,\"重庆市专利授权量\":558244,\"重庆市发明公开量\":243824,\"重庆市实用新型公开量\":378431,\"重庆市外观设计公开量\":105942,\"重庆市发明授权量\":73871,\"重庆市专利有效量\":285691,\"重庆市发明专利有效量\":56749,\"重庆市实用新型有效量\":194458,\"重庆市外观设计有效量\":34484},{\"江西省专利公开量\":634468,\"江西省专利授权量\":534780,\"江西省发明公开量\":138300,\"江西省实用新型公开量\":327903,\"江西省外观设计公开量\":168265,\"江西省发明授权量\":38612,\"江西省专利有效量\":283887,\"江西省发明专利有效量\":31307,\"江西省实用新型有效量\":182743,\"江西省外观设计有效量\":69837},{\"台湾省专利公开量\":463468,\"台湾省专利授权量\":354066,\"台湾省发明公开量\":213980,\"台湾省实用新型公开量\":206654,\"台湾省外观设计公开量\":42834,\"台湾省发明授权量\":104578,\"台湾省专利有效量\":104817,\"台湾省发明专利有效量\":66694,\"台湾省实用新型有效量\":30975,\"台湾省外观设计有效量\":7148},{\"广西壮族自治区专利公开量\":460414,\"广西壮族自治区专利授权量\":277452,\"广西壮族自治区发明公开量\":225852,\"广西壮族自治区实用新型公开量\":176237,\"广西壮族自治区外观设计公开量\":58325,\"广西壮族自治区发明授权量\":42890,\"广西壮族自治区专利有效量\":165050,\"广西壮族自治区发明专利有效量\":33000,\"广西壮族自治区实用新型有效量\":105443,\"广西壮族自治区外观设计有效量\":26607},{\"黑龙江省专利公开量\":427841,\"黑龙江省专利授权量\":328523,\"黑龙江省发明公开量\":157956,\"黑龙江省实用新型公开量\":220434,\"黑龙江省外观设计公开量\":49451,\"黑龙江省发明授权量\":58638,\"黑龙江省专利有效量\":138400,\"黑龙江省发明专利有效量\":40228,\"黑龙江省实用新型有效量\":85757,\"黑龙江省外观设计有效量\":12415},{\"云南省专利公开量\":317956,\"云南省专利授权量\":252042,\"云南省发明公开量\":96890,\"云南省实用新型公开量\":185139,\"云南省外观设计公开量\":35927,\"云南省发明授权量\":30976,\"云南省专利有效量\":151587,\"云南省发明专利有效量\":22474,\"云南省实用新型有效量\":115641,\"云南省外观设计有效量\":13472},{\"贵州省专利公开量\":322448,\"贵州省专利授权量\":236376,\"贵州省发明公开量\":110351,\"贵州省实用新型公开量\":163222,\"贵州省外观设计公开量\":48875,\"贵州省发明授权量\":24279,\"贵州省专利有效量\":127915,\"贵州省发明专利有效量\":18522,\"贵州省实用新型有效量\":92573,\"贵州省外观设计有效量\":16820},{\"吉林省专利公开量\":280789,\"吉林省专利授权量\":211146,\"吉林省发明公开量\":111728,\"吉林省实用新型公开量\":143671,\"吉林省外观设计公开量\":25390,\"吉林省发明授权量\":42085,\"吉林省专利有效量\":114764,\"吉林省发明专利有效量\":28095,\"吉林省实用新型有效量\":75422,\"吉林省外观设计有效量\":11247},{\"山西省专利公开量\":286919,\"山西省专利授权量\":223770,\"山西省发明公开量\":97553,\"山西省实用新型公开量\":164498,\"山西省外观设计公开量\":24868,\"山西省发明授权量\":34404,\"山西省专利有效量\":130855,\"山西省发明专利有效量\":24352,\"山西省实用新型有效量\":96164,\"山西省外观设计有效量\":10339},{\"甘肃省专利公开量\":203262,\"甘肃省专利授权量\":157438,\"甘肃省发明公开量\":63760,\"甘肃省实用新型公开量\":120453,\"甘肃省外观设计公开量\":19049,\"甘肃省发明授权量\":17936,\"甘肃省专利有效量\":81957,\"甘肃省发明专利有效量\":12564,\"甘肃省实用新型有效量\":63285,\"甘肃省外观设计有效量\":6108},{\"内蒙古自治区专利公开量\":172605,\"内蒙古自治区专利授权量\":140760,\"内蒙古自治区发明公开量\":45043,\"内蒙古自治区实用新型公开量\":108247,\"内蒙古自治区外观设计公开量\":19315,\"内蒙古自治区发明授权量\":13198,\"内蒙古自治区专利有效量\":86990,\"内蒙古自治区发明专利有效量\":9728,\"内蒙古自治区实用新型有效量\":69103,\"内蒙古自治区外观设计有效量\":8159},{\"新疆维吾尔自治区专利公开量\":161995,\"新疆维吾尔自治区专利授权量\":134642,\"新疆维吾尔自治区发明公开量\":39236,\"新疆维吾尔自治区实用新型公开量\":104328,\"新疆维吾尔自治区外观设计公开量\":18431,\"新疆维吾尔自治区发明授权量\":11883,\"新疆维吾尔自治区专利有效量\":69212,\"新疆维吾尔自治区发明专利有效量\":8028,\"新疆维吾尔自治区实用新型有效量\":55972,\"新疆维吾尔自治区外观设计有效量\":5212},{\"宁夏回族自治区专利公开量\":85635,\"宁夏回族自治区专利授权量\":66272,\"宁夏回族自治区发明公开量\":26841,\"宁夏回族自治区实用新型公开量\":52921,\"宁夏回族自治区外观设计公开量\":5873,\"宁夏回族自治区发明授权量\":7478,\"宁夏回族自治区专利有效量\":43179,\"宁夏回族自治区发明专利有效量\":5990,\"宁夏回族自治区实用新型有效量\":35193,\"宁夏回族自治区外观设计有效量\":1996},{\"海南省专利公开量\":79548,\"海南省专利授权量\":62224,\"海南省发明公开量\":25376,\"海南省实用新型公开量\":43963,\"海南省外观设计公开量\":10209,\"海南省发明授权量\":8052,\"海南省专利有效量\":43349,\"海南省发明专利有效量\":6167,\"海南省实用新型有效量\":32954,\"海南省外观设计有效量\":4228},{\"香港特别行政区专利公开量\":68388,\"香港特别行政区专利授权量\":58267,\"香港特别行政区发明公开量\":18511,\"香港特别行政区实用新型公开量\":15871,\"香港特别行政区外观设计公开量\":34006,\"香港特别行政区发明授权量\":8390,\"香港特别行政区专利有效量\":16777,\"香港特别行政区发明专利有效量\":5357,\"香港特别行政区实用新型有效量\":4919,\"香港特别行政区外观设计有效量\":6501},{\"青海省专利公开量\":42150,\"青海省专利授权量\":32446,\"青海省发明公开量\":13074,\"青海省实用新型公开量\":25180,\"青海省外观设计公开量\":3896,\"青海省发明授权量\":3370,\"青海省专利有效量\":20103,\"青海省发明专利有效量\":2504,\"青海省实用新型有效量\":16310,\"青海省外观设计有效量\":1289},{\"西藏自治区专利公开量\":12950,\"西藏自治区专利授权量\":10334,\"西藏自治区发明公开量\":3611,\"西藏自治区实用新型公开量\":6534,\"西藏自治区外观设计公开量\":2805,\"西藏自治区发明授权量\":995,\"西藏自治区专利有效量\":6696,\"西藏自治区发明专利有效量\":793,\"西藏自治区实用新型有效量\":4886,\"西藏自治区外观设计有效量\":1017},{\"澳门特别行政区专利公开量\":2213,\"澳门特别行政区专利授权量\":1621,\"澳门特别行政区发明公开量\":891,\"澳门特别行政区实用新型公开量\":685,\"澳门特别行政区外观设计公开量\":637,\"澳门特别行政区发明授权量\":299,\"澳门特别行政区专利有效量\":785,\"澳门特别行政区发明专利有效量\":198,\"澳门特别行政区实用新型有效量\":269,\"澳门特别行政区外观设计有效量\":318}]}";
 
	public static String provinces[] = new String[] { "北京市", "天津市", "河北省", "山西省", "内蒙古自治区", "辽宁省", "吉林省", "黑龙江省", "上海市",
			"江苏省", "浙江省", "安徽省", "福建省", "江西省", "山东省", "河南省", "湖北省", "湖南省", "广东省", "广西壮族自治区", "海南省", "重庆市", "四川省", "贵州省",
			"云南省", "西藏自治区", "陕西省", "甘肃省", "青海省", "宁夏回族自治区", "新疆维吾尔自治区", "香港特别行政区", "澳门特别行政区", "台湾省" };

	private static IRzgClassStatisticsInfoService getIRzgClassStatisticsInfoService() {
		if(_rzgClassStatisticsInfoService==null) {
			_rzgClassStatisticsInfoService=SpringUtils.getBean(IRzgClassStatisticsInfoService.class);
		}
		return _rzgClassStatisticsInfoService;
	}
	private static IRzsClassStatisticsInfoService getIRzsClassStatisticsInfoService() {
		if(_rzsClassStatisticsInfoService==null) {
			_rzsClassStatisticsInfoService=SpringUtils.getBean(IRzsClassStatisticsInfoService.class);
		}
		return _rzsClassStatisticsInfoService;
	}
	private static IRzlClassStatisticsInfoService getIRzlClassStatisticsInfoService() {
		if(_rzlClassStatisticsInfoService==null) {
			_rzlClassStatisticsInfoService=SpringUtils.getBean(IRzlClassStatisticsInfoService.class);
		}
		return _rzlClassStatisticsInfoService;
	}
	
	public static void main(String[] args) {
		String yyyyMM="202302";
		getLastDayOfMonth(yyyyMM);
	}
	public static String getLastDayOfMonth(String yyyyMM){
	    Calendar calendar = Calendar.getInstance();
	    //MONTH的值从0-11分别是12个月份
	    String yearStr=yyyyMM.substring(0,4);
	    int yearInt=Integer.parseInt(yearStr);
	     
	    String monthStr=yyyyMM.substring(4,6);
	    int monthInt=Integer.parseInt(monthStr);
	    
	    calendar.set(Calendar.YEAR,yearInt);
	    calendar.set(Calendar.MONTH,monthInt);
	    //DAY_OF_MONTH的值按照月份的第一天从1开始，设置为0可以得到前一月的最后一天
	    calendar.set(Calendar.DAY_OF_MONTH,0);
	    SimpleDateFormat dateFormat=new SimpleDateFormat("yyyyMMdd");
	    String lastDayOfMonth = dateFormat.format(calendar.getTime());
	    System.out.println(lastDayOfMonth);
	    return lastDayOfMonth;
	}


	
	public static Map<String,Item> getKeyItems(String type) {
		Map<String,Item>map=new LinkedHashMap<String, Item>();
		String suffix = "";
		if ("act".equals(type)) {
//			suffix = "专利有效量";
			suffix = "发明授权有效量";
		} else if ("pub".equals(type)) {
//			suffix = "专利公开量";
			suffix = "发明公开量";
		} else if ("auth".equals(type)) {
//			suffix = "专利授权量";
			suffix="发明授权量";
		}

		for (String province : provinces) {
			String key=province + suffix;
			Item item=new Item();
			item.type=type;
			item.province=province;
			map.put(key, item);
		}
		return map;
	}
	
	

	public static class Item {
		// 省
		public String province;

		// act 有效量,pub 公开量,auth 授权量
		public String type;

		// 数量
		public Integer number;
		
		// 排名
		public Integer ranking;

	}
	
//	public static void main(String[] args) {
//		LinkedHashMap map = (LinkedHashMap) JSONUtils.parse(res);
//		List<LinkedHashMap> list = (List<LinkedHashMap>) map.get("results");
//		List<Item> itemList=getRankingList("act",list);
//		System.out.println(list.size());
//	}
	
	
	private static String getCacheKey(String timeUpdate) {
		String key="NationalRankingUtils:timeUpdate:"+timeUpdate;
		return key;
	}
	
	public static List<Item>getRankingList(String type,String beginTime,String endTime,RedisCache cache,RuoYiConfig ruoYiConfig,String year,String month){
		String key=getCacheKey(beginTime);
//		String cacheRes=cache.getCacheObject(key);
		String cacheRes=null;//暂时不用缓存
		
		boolean flag=false;
		String res =null;
		
//		if(cacheRes!=null && !"".equals(cacheRes.trim()) && !"null".equalsIgnoreCase(cacheRes.trim())) {
//			res = cacheRes;
//			logger.debug("全国排名数据缓存命中，timeUpdate:"+beginTime);
//			flag=true;
//		}else {
//			String url="http://111.198.99.166:20000/pat/patent_total?project_code=530000&ak=827394369%4020230406&time_update=20221201";
//			String url="http://192.168.203.86:20000/pat/patent_total?project_code=530000&ak=827394369%4020230406&time_update="+timeUpdate;
			
			String url="";
			if("act".equals(type)) {
				url=ruoYiConfig.getPressApiServer()+"pat/patent_total_valid?project_code=530000&ak=269394369%4020230406&end_date="+beginTime;
			}else {
//				/pat/patent_total_pub
				url=ruoYiConfig.getPressApiServer()+"pat/patent_total_pub?project_code=530000&ak=259394268@20230406&bgn_pub_date="+beginTime+"&end_pub_date="+endTime;
			}
			
			logger.debug("开始发送查询全国排名请求,url:"+url);
			res = HttpUtils.sendGet(url);
			logger.debug("收到全国排名查询结果:"+res);
//		}
		
		LinkedHashMap map = (LinkedHashMap) JSONUtils.parse(res);
		List<LinkedHashMap> list = (List<LinkedHashMap>) map.get("results");
//		List<Item> itemList=getRankingList("act",list);
				
		List<Item> item=getRankingList(type, list,year,month);
		
		if(!flag && item.size()>0) {
//			cache.setCacheObject(key, res, 10, TimeUnit.DAYS);//不再缓存
		}
		
		return item;

		
		
	}
	
	private static List<Item>getRankingList(String type,List<LinkedHashMap> list,String time1,String time2){
		List<Item>itemList=new ArrayList<Item>();
		
		Map<String,Item> items=getKeyItems(type);
//		TODO	这里还要取云南的本地数据
		
		Long sum =0l;
		if("act".equals(type)) {
			RzlClassStatisticsInfo rzlClassStatisticsInfo=new RzlClassStatisticsInfo();
			rzlClassStatisticsInfo.setYear(time1);
			rzlClassStatisticsInfo.setMonth(time2);
			sum =getIRzlClassStatisticsInfoService().sumByReport(rzlClassStatisticsInfo);
		}else if("auth".equals(type)){
			RzsClassStatisticsInfo classStatisticsInfo=new RzsClassStatisticsInfo();
			classStatisticsInfo.setCreateTimeBegin(time1);
			classStatisticsInfo.setCreateTimeEnd(time2);
			sum =getIRzsClassStatisticsInfoService().sumByRank(classStatisticsInfo);
			
			
		}else if("pub".equals(type)){
			RzgClassStatisticsInfo rzgClassStatisticsInfo=new RzgClassStatisticsInfo();
			rzgClassStatisticsInfo.setCreateTimeBegin(time1);
			rzgClassStatisticsInfo.setCreateTimeEnd(time2);
			sum =getIRzgClassStatisticsInfoService().sumByRank(rzgClassStatisticsInfo);
			
		}
		
		
		
		for(LinkedHashMap<String,Integer> map:list) {
			for(Map.Entry<String,Integer> ent:map.entrySet()) {
				String key=ent.getKey();
				if(items.containsKey(key)) {
					Item item=items.get(key);
					if("云南省".equals(item.province) ) {
						logger.info("云南省["+type+"]排名数据["+time1+"],["+time2+"]接口排名数据:["+ent.getValue()+"],本地数据:["+sum+"]");
					}
					
					//云南的用本地数据
					if("云南省".equals(item.province) && sum.longValue()>0) {
						item.number=Integer.parseInt(sum+"");
					}else {
						item.number=ent.getValue();
					}
					
					itemList.add(item);
					continue;
				}
			}
		}
		
		Collections.sort(itemList, new Comparator<Item>() {
			@Override
			public int compare(Item o1, Item o2) {
				if(o1==null && o2==null) {
					return 0;
				}else if(o1==null) {
					return -1;
				}else if(o2==null) {
					return 1;
				}else {
					if(o1.number==null && o2.number==null) {
						return 0;
					}else if(o1.number==null) {
						return -1;
					}else if(o2.number==null) {
						return 1;
					}else {
						return o2.number-o1.number;
					}
				}
			}
		});
		
		for(int i=0;i<itemList.size();i++) {
			itemList.get(i).ranking=i+1;
		}
		
		return itemList;
	}
	



}
