| | |
| | | import java.math.RoundingMode; |
| | | import java.text.DecimalFormat; |
| | | import java.text.ParseException; |
| | | import java.util.Arrays; |
| | | import java.util.Calendar; |
| | | import java.util.LinkedList; |
| | | import java.util.List; |
| | | import java.util.*; |
| | | |
| | | /** |
| | | * 计算工具类 |
| | |
| | | } |
| | | return res; |
| | | }else{ |
| | | return 0; |
| | | if(type == 1){ |
| | | return 0.0; |
| | | }else{ |
| | | if(type==2){ |
| | | return "0"; |
| | | }else{ |
| | | return "0%"; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | public static float multiply(float num,float num2,int scale){ |
| | | return BigDecimal.valueOf(num).multiply(BigDecimal.valueOf(num2)).setScale(2,RoundingMode.HALF_UP).floatValue(); |
| | | } |
| | | |
| | | /** |
| | |
| | | 80d, |
| | | 71.9d, |
| | | 71d);*/ |
| | | long time1 = DateUtil.YYYY_MM_DD_HH_MM_SS.parse("2021-04-13 09:14:36").getTime(); |
| | | /*long time1 = DateUtil.YYYY_MM_DD_HH_MM_SS.parse("2021-04-13 09:14:36").getTime(); |
| | | long time2 = DateUtil.YYYY_MM_DD_HH_MM_SS.parse("2021-10-14 13:46:36").getTime(); |
| | | long time3 = DateUtil.YYYY_MM_DD_HH_MM_SS.parse("2022-03-18 11:08:36").getTime(); |
| | | long time4 = DateUtil.YYYY_MM_DD_HH_MM_SS.parse("2022-03-18 13:56:36").getTime(); |
| | | |
| | | long time5 = DateUtil.YYYY_MM_DD_HH_MM_SS.parse("2023-03-12 13:56:36").getTime(); |
| | | long time5 = DateUtil.YYYY_MM_DD_HH_MM_SS.parse("2023-03-12 13:56:36").getTime();*/ |
| | | long time1 = ThreadLocalUtil.parse("2021-04-13 09:14:36",1).getTime(); |
| | | long time2 = ThreadLocalUtil.parse("2021-10-14 13:46:36",1).getTime(); |
| | | long time3 = ThreadLocalUtil.parse("2022-03-18 11:08:36",1).getTime(); |
| | | long time4 = ThreadLocalUtil.parse("2022-03-18 13:56:36",1).getTime(); |
| | | long time5 = ThreadLocalUtil.parse("2023-03-12 13:56:36",1).getTime(); |
| | | |
| | | double c1 = 99d; |
| | | double c2 = 98d; |
| | |
| | | } |
| | | |
| | | |
| | | /** |
| | | * |
| | | * @param startNum 起始数 -1 = limitStart ,因为limit是从0开始 |
| | | * @param endNum 终止数 |
| | | * @param pageSize 每页条数 |
| | | * @param queryCountMap key-年份,value-数量 |
| | | * @return {"2023",[2,20]} |
| | | * 表名,[limit 2,20] |
| | | */ |
| | | public static Map<String, List<Integer>> getQueryTableAndLimit(int startNum, int endNum, int pageSize, Map<String, Integer> queryCountMap) { |
| | | Map<String,List<Integer>> resultMap = new LinkedHashMap<>(); |
| | | //定位起始数,在哪个年份范围内,起始数值;终止数,在哪个年份范围内,终止数值 |
| | | Set<String> queryKeySet = queryCountMap.keySet(); |
| | | int sum = 0; |
| | | int lastSum = 0; |
| | | |
| | | String limitStartYear = null; |
| | | int limitStart = 0; |
| | | String limitEndYear = null; |
| | | int limitEndSize = pageSize; |
| | | boolean limitStartFinished = false; |
| | | for (String queryKey : queryKeySet) { |
| | | int queryCount = queryCountMap.get(queryKey); |
| | | sum+=queryCount; |
| | | if(!limitStartFinished) { |
| | | if (startNum <= sum) { |
| | | limitStart = startNum - lastSum; |
| | | limitStartYear = queryKey; |
| | | //完成了limit 起始值的获取,后续不需要继续执行 |
| | | limitStartFinished = true; |
| | | } |
| | | } |
| | | if(limitStartFinished) { //limit 起始值获取后,开始计算终止的记录数量 |
| | | if (endNum <= sum) { |
| | | limitEndYear = queryKey; |
| | | |
| | | break; |
| | | } |
| | | //首次,执行起始limit的时候, limitEndSize(记录预留的查询个数)需要减去limitStart占用的 |
| | | if(limitEndSize == pageSize){ |
| | | limitEndSize = pageSize - (sum - startNum + 1); |
| | | }else{ //如果还没达到 终止数值,需要减去本次查询消耗掉的数量 |
| | | limitEndSize = limitEndSize - queryCount; |
| | | } |
| | | } |
| | | |
| | | lastSum = sum; |
| | | } |
| | | |
| | | boolean limitStartCompareFlag = true; |
| | | boolean tableStartFlag = false; |
| | | for (String queryKey : queryKeySet) { |
| | | int queryCount = queryCountMap.get(queryKey); |
| | | if(queryKey.equals(limitStartYear) && limitStartCompareFlag){ |
| | | tableStartFlag = true; |
| | | //从这里开始,取记录数 |
| | | LinkedList<Integer> limitList = new LinkedList<>(); |
| | | if(queryKey.equals(limitEndYear)) { //同一年 |
| | | limitList.add(limitStart-1); |
| | | limitList.add(pageSize); |
| | | resultMap.put(queryKey,limitList); |
| | | break; |
| | | }else{ |
| | | limitList.add(limitStart-1); |
| | | limitList.add(queryCount); |
| | | resultMap.put(queryKey,limitList); |
| | | } |
| | | limitStartCompareFlag = false; |
| | | continue; |
| | | } |
| | | //不同年,继续 |
| | | if(tableStartFlag) { //已经经过了起始年,才可以取数据. 起始年前的数据无效 |
| | | if (queryKey.equals(limitEndYear)) { //找到终止年 |
| | | LinkedList<Integer> limitList = new LinkedList<>(); |
| | | limitList.add(0); |
| | | limitList.add(limitEndSize); |
| | | resultMap.put(queryKey, limitList); |
| | | break; |
| | | } else { //不是终止年,属于中间年 |
| | | LinkedList<Integer> limitList = new LinkedList<>(); |
| | | limitList.add(0); |
| | | limitList.add(queryCount); |
| | | resultMap.put(queryKey, limitList); |
| | | } |
| | | } |
| | | } |
| | | return resultMap; |
| | | |
| | | } |
| | | } |