tudc hace 4 años
padre
commit
500d3c4e7a
Se han modificado 1 ficheros con 193 adiciones y 162 borrados
  1. 193 162
      src/main/java/com/minpay/common/service/impl/ReportServiceImpl.java

+ 193 - 162
src/main/java/com/minpay/common/service/impl/ReportServiceImpl.java

@@ -328,7 +328,7 @@ public class ReportServiceImpl implements IReportService {
 				countMap.put("gaoxin",CommonUtil.add(countMap.get("gaoxin"), "1"));
 				shihuMap.put("gaoxin",CommonUtil.add(shihuMap.get("gaoxin"), minute));
 			} else {
-				break;
+				continue;
 			}
 			countMap.put("heji",CommonUtil.add(countMap.get("heji"), "1"));
 			shihuMap.put("heji",CommonUtil.add(shihuMap.get("heji"), minute));
@@ -429,6 +429,8 @@ public class ReportServiceImpl implements IReportService {
 				tqtdGsMap.put("taishanjingqu", map.get("num"));
 			} else if ("高新".equals(map.get("area"))) {
 				tqtdGsMap.put("gaoxin", map.get("num"));
+			} else {
+				continue;
 			}
 			tqtdGsMap.put("heji",CommonUtil.add(tqtdGsMap.get("heji"), map.get("num")));
 		}
@@ -446,7 +448,7 @@ public class ReportServiceImpl implements IReportService {
 		resList.add(childList4);
 		
 		// monthNum个月内停电 countNum次以上的台区
-		String beginDay = DateUtil.dateAddMonth(rangeArray[1], Integer.parseInt("-" + monthNum));
+		String beginDay = DateUtil.dateAddDay(DateUtil.dateAddMonth(rangeArray[1], Integer.parseInt("-" + monthNum)), 1);
 		param.put("beginDay", beginDay + beginTime.substring(8, 14));
 		param.put("endDay", rangeArray[1] + endTime.substring(8, 14));
 		param.put("countNum", countNum);
@@ -478,6 +480,8 @@ public class ReportServiceImpl implements IReportService {
 				taiQuMap.put("taishanjingqu",taiQuMap.get("taishanjingqu") + 1);
 			} else if ("高新".equals(map.get("area"))) {
 				taiQuMap.put("gaoxin",taiQuMap.get("gaoxin") + 1);
+			} else {
+				continue;
 			}
 			taiQuMap.put("heji",taiQuMap.get("heji") + 1);
 		}
@@ -533,6 +537,8 @@ public class ReportServiceImpl implements IReportService {
 				yesterdayTaiQuMap.put("taishanjingqu",yesterdayTaiQuMap.get("taishanjingqu") + 1);
 			} else if ("高新".equals(map.get("area"))) {
 				yesterdayTaiQuMap.put("gaoxin",yesterdayTaiQuMap.get("gaoxin") + 1);
+			} else {
+				continue;
 			}
 			yesterdayTaiQuMap.put("heji",yesterdayTaiQuMap.get("heji") + 1);
 		}
@@ -582,6 +588,8 @@ public class ReportServiceImpl implements IReportService {
 				yiciMap.put("taishanjingqu",yiciMap.get("taishanjingqu") + 1);
 			} else if ("高新".equals(map.get("area"))) {
 				yiciMap.put("gaoxin",yiciMap.get("gaoxin") + 1);
+			} else {
+				continue;
 			}
 			yiciMap.put("heji",yiciMap.get("heji") + 1);
 		}
@@ -620,6 +628,8 @@ public class ReportServiceImpl implements IReportService {
 		    	tingdianNumDesc += "泰山景区" + mapValue + "个,";
 		    } else if ("gaoxin".equals(mapKey)) {
 		    	tingdianNumDesc += "高新" + mapValue + "个,";
+		    } else {
+		    	continue;
 		    }
 		}
 		
@@ -645,6 +655,8 @@ public class ReportServiceImpl implements IReportService {
 		    	sanciyishangNumDesc += "泰山景区" + mapValue + "个,";
 		    } else if ("gaoxin".equals(mapKey)) {
 		    	sanciyishangNumDesc += "高新" + mapValue + "个,";
+		    } else {
+		    	continue;
 		    }
 		}
 		
@@ -941,17 +953,147 @@ public class ReportServiceImpl implements IReportService {
 			zuichangSj = CommonUtil.divide(zuichangTaiquList.get(0).get("timeMinute"), "60", 2);
 		}
 		
-		String totalMonthChongfuTaici = "0";
-		String totalMonthChongfuTaishu = "0";
-		beginTime = DateUtil.dateAddDay(DateUtil.dateAddMonth(rangeArray[1], -2), 1);
+		// 本周督办频繁停电台次
+		String begin = rangeArray[0];
+		String end = rangeArray[1];
+		
+		List<String> xintaiDubanList = new ArrayList<String>();
+		List<String> daiyueDubanList = new ArrayList<String>();
+		List<String> ningyangDubanList = new ArrayList<String>();
+		List<String> taishanDubanList = new ArrayList<String>();
+		List<String> dongpingDubanList = new ArrayList<String>();
+		List<String> feichengDubanList = new ArrayList<String>();
+		List<String> taishanjingquDubanList = new ArrayList<String>();
+		List<String> gaoxinDubanList = new ArrayList<String>();
+		// 查询每天的停电三次以上且当日停电的台次
+		while (CommonUtil.compare(begin, end) != 1) {
+			param.put("yesterday", begin);
+			List<Map<String, String>> yesterdayList = db.getMybatisMapper(ReportServiceMapper.class).queryYesterdayDetail(param);
+			if (yesterdayList.size() == 0) {
+				begin = DateUtil.dateAddDay(begin, 1);
+				continue;
+			}
+			
+			param.put("yesterdayDetail", yesterdayList);
+			param.put("beginDay",	DateUtil.dateAddDay(DateUtil.dateAddMonth(begin, -2), 1)  + beginTime.substring(8, 14));
+			param.put("endDay", begin + endTime.substring(8, 14));
+			param.put("countNum", 3);
+			List<Map<String, String>> sanciData = db.getMybatisMapper(ReportServiceMapper.class).selectMountCount00(param);
+			
+			for (Map<String, String> map : sanciData) {
+				if ("新泰".equals(map.get("area"))) {
+					if (xintai.size() >= 7) {
+						xintai.set(6, CommonUtil.add(xintai.get(6), "1"));
+					} else {
+						xintai.add("1");
+					}
+					if (!xintaiDubanList.contains(map.get("addressNum"))) {
+						xintaiDubanList.add(map.get("addressNum"));
+					}
+				} else if ("岱岳".equals(map.get("area"))) {
+					if (daiyue.size() >= 7) {
+						daiyue.set(6, CommonUtil.add(daiyue.get(6), "1"));
+					} else {
+						daiyue.add("1");
+					}
+					if (!daiyueDubanList.contains(map.get("addressNum"))) {
+						daiyueDubanList.add(map.get("addressNum"));
+					}
+				} else if ("宁阳".equals(map.get("area"))) {
+					if (ningyang.size() >= 7) {
+						ningyang.set(6, CommonUtil.add(ningyang.get(6), "1"));
+					} else {
+						ningyang.add("1");
+					}
+					if (!ningyangDubanList.contains(map.get("addressNum"))) {
+						ningyangDubanList.add(map.get("addressNum"));
+					}
+				} else if ("泰山".equals(map.get("area"))) {
+					if (taishan.size() >= 7) {
+						taishan.set(6, CommonUtil.add(taishan.get(6), "1"));
+					} else {
+						taishan.add("1");
+					}
+					if (!taishanDubanList.contains(map.get("addressNum"))) {
+						taishanDubanList.add(map.get("addressNum"));
+					}
+				} else if ("东平".equals(map.get("area"))) {
+					if (dongping.size() >= 7) {
+						dongping.set(6, CommonUtil.add(dongping.get(6), "1"));
+					} else {
+						dongping.add("1");
+					}
+					if (!dongpingDubanList.contains(map.get("addressNum"))) {
+						dongpingDubanList.add(map.get("addressNum"));
+					}
+				} else if ("肥城".equals(map.get("area"))) {
+					if (feicheng.size() >= 7) {
+						feicheng.set(6, CommonUtil.add(feicheng.get(6), "1"));
+					} else {
+						feicheng.add("1");
+					}
+					if (!feichengDubanList.contains(map.get("addressNum"))) {
+						feichengDubanList.add(map.get("addressNum"));
+					}
+				} else if ("泰山景区".equals(map.get("area"))) {
+					if (taishanjingqu.size() >= 7) {
+						taishanjingqu.set(6, CommonUtil.add(taishanjingqu.get(6), "1"));
+					} else {
+						taishanjingqu.add("1");
+					}
+					if (!taishanjingquDubanList.contains(map.get("addressNum"))) {
+						taishanjingquDubanList.add(map.get("addressNum"));
+					}
+				} else if ("高新".equals(map.get("area"))) {
+					if (gaoxin.size() >= 7) {
+						gaoxin.set(6, CommonUtil.add(gaoxin.get(6), "1"));
+					} else {
+						gaoxin.add("1");
+					}
+					if (!gaoxinDubanList.contains(map.get("addressNum"))) {
+						gaoxinDubanList.add(map.get("addressNum"));
+					}
+				} else {
+					continue;
+				}
+				// 合计
+				if (heji.size() >= 7) {
+					heji.set(6, CommonUtil.add(heji.get(6), "1"));
+				} else {
+					heji.add("1");
+				}
+			}
+			// 天数 + 1
+			begin = DateUtil.dateAddDay(begin, 1);
+		}
+		// 没有数据的区域数值为0
+		for (List<String> list : resList) {
+			if (list.size() == 6) {
+				list.add("0");
+			}
+		}
+		
+		xintai.add(String.valueOf(xintaiDubanList.size()));
+		daiyue.add(String.valueOf(daiyueDubanList.size()));
+		ningyang.add(String.valueOf(ningyangDubanList.size()));
+		taishan.add(String.valueOf(taishanDubanList.size()));
+		dongping.add(String.valueOf(dongpingDubanList.size()));
+		feicheng.add(String.valueOf(feichengDubanList.size()));
+		taishanjingqu.add(String.valueOf(taishanjingquDubanList.size()));
+		gaoxin.add(String.valueOf(gaoxinDubanList.size()));
+		heji.add(String.valueOf(xintaiDubanList.size() + daiyueDubanList.size() + ningyangDubanList.size() + taishanDubanList.size() + dongpingDubanList.size() + feichengDubanList.size() + taishanjingquDubanList.size() + taishanjingquDubanList.size()));
+		
+		// 督办总次数
+		String totalMonthChongfuTaici = heji.get(6);
 		if (CommonUtil.isEmpty(timeRange)) {
-			param.put("beginDay", beginTime = DateUtil.dateAddDay(DateUtil.dateAddMonth(rangeArray[1], -2), 1) + "000000");
+			param.put("beginDay", DateUtil.dateAddDay(DateUtil.dateAddMonth(rangeArray[1], -2), 1) + "000000");
 		} else {
 			String[] timeRangeArray = timeRange.split("-");
 			param.put("beginDay", DateUtil.dateAddDay(DateUtil.dateAddMonth(rangeArray[1], -2), 1) + timeRangeArray[0]);
 		}
 		param.put("endDay", endTime);
-		param.put("countNum", "3");
+		param.put("countNum", "1");
+		param.put("yesterdayDetail", null);
 		List<Map<String, String>> twiceMonthCountList = db.getMybatisMapper(ReportServiceMapper.class).selectMountCount00(param);
 		
 		// 停电次数最多的台区
@@ -959,104 +1101,10 @@ public class ReportServiceImpl implements IReportService {
 		// 停电最多的次数
 		String liangyueMostAddressNum = "";
 		
-		// 本周督办频繁停电台次/本周督办频繁停电台区数
+		// 本周督办频繁停电台区数
 		for (Map<String, String> map : twiceMonthCountList) {
-			String area = map.get("area");
 			String addressName = map.get("addressName");
 			String num = map.get("num");
-			if ("新泰".equals(area)) {
-				if (xintai.size() >= 7) {
-					xintai.set(6, CommonUtil.add(xintai.get(6), num));
-				} else {
-					xintai.add(6, num);
-				}
-				if (xintai.size() >= 8) {
-					xintai.set(7, CommonUtil.add(xintai.get(7), "1"));
-				} else {
-					xintai.add(7, "1");
-				}
-			} else if ("岱岳".equals(area)) {
-				if (daiyue.size() >= 7) {
-					daiyue.set(6, CommonUtil.add(daiyue.get(6), num));
-				} else {
-					daiyue.add(6, num);
-				}
-				if (daiyue.size() >= 8) {
-					daiyue.set(7, CommonUtil.add(daiyue.get(7), "1"));
-				} else {
-					daiyue.add(7, "1");
-				}
-			} else if ("宁阳".equals(area)) {
-				if (ningyang.size() >= 7) {
-					ningyang.set(6, CommonUtil.add(ningyang.get(6), num));
-				} else {
-					ningyang.add(6, num);
-				}
-				if (ningyang.size() >= 8) {
-					ningyang.set(7, CommonUtil.add(ningyang.get(7), "1"));
-				} else {
-					ningyang.add(7, "1");
-				}
-			} else if ("泰山".equals(area)) {
-				if (taishan.size() >= 7) {
-					taishan.set(6, CommonUtil.add(taishan.get(6), num));
-				} else {
-					taishan.add(6, num);
-				}
-				if (taishan.size() >= 8) {
-					taishan.set(7, CommonUtil.add(taishan.get(7), "1"));
-				} else {
-					taishan.add(7, "1");
-				}
-			} else if ("东平".equals(area)) {
-				if (dongping.size() >= 7) {
-					dongping.set(6, CommonUtil.add(dongping.get(6), num));
-				} else {
-					dongping.add(6, num);
-				}
-				if (dongping.size() >= 8) {
-					dongping.set(7, CommonUtil.add(dongping.get(7), "1"));
-				} else {
-					dongping.add(7, "1");
-				}
-			} else if ("肥城".equals(area)) {
-				if (feicheng.size() >= 7) {
-					feicheng.set(6, CommonUtil.add(feicheng.get(6), num));
-				} else {
-					feicheng.add(6, num);
-				}
-				if (feicheng.size() >= 8) {
-					feicheng.set(7, CommonUtil.add(feicheng.get(7), "1"));
-				} else {
-					feicheng.add(7, "1");
-				}
-			} else if ("泰山景区".equals(area)) {
-				if (taishanjingqu.size() >= 7) {
-					taishanjingqu.set(6, CommonUtil.add(taishanjingqu.get(6), num));
-				} else {
-					taishanjingqu.add(6, num);
-				}
-				if (taishanjingqu.size() >= 8) {
-					taishanjingqu.set(7, CommonUtil.add(taishanjingqu.get(7), "1"));
-				} else {
-					taishanjingqu.add(7, "1");
-				}
-			} else if ("高新".equals(area)) {
-				if (gaoxin.size() >= 7) {
-					gaoxin.set(6, CommonUtil.add(gaoxin.get(6), num));
-				} else {
-					gaoxin.add(6, num);
-				}
-				if (gaoxin.size() >= 8) {
-					gaoxin.set(7, CommonUtil.add(gaoxin.get(7), "1"));
-				} else {
-					gaoxin.add(7, "1");
-				}
-			} else {
-				continue;
-			}
-			totalMonthChongfuTaici= CommonUtil.add(totalMonthChongfuTaici, num);
-			totalMonthChongfuTaishu = CommonUtil.add(totalMonthChongfuTaishu, "1");
 			
 			if (CommonUtil.isEmpty(liangyueMostAddressNum)) {
 				liangyueMostAddressNum = num;
@@ -1067,56 +1115,51 @@ public class ReportServiceImpl implements IReportService {
 		}
 		// 去除最后一个符号
 		liangyueMostAddressNumDesc = liangyueMostAddressNumDesc.substring(0, liangyueMostAddressNumDesc.length() - 1);
-		heji.add(totalMonthChongfuTaici);
-		heji.add(totalMonthChongfuTaishu);
-		
-		// 没有数据的区域数值为0
-		for (List<String> list : resList) {
-			if (list.size() == 6) {
-				list.add("0");
-				list.add("0");
-			}
-		}
 		
 		// 环比
 		String huanbi = "0";
-		String huanbiBeginTime = DateUtil.dateAddMonth(rangeArray[1], -4);	// 减四个月加一天
-		String huanbiEndTime = DateUtil.dateAddMonth(rangeArray[1], -2);							// 减两个月
-		if (CommonUtil.isEmpty(timeRange)) {
-			huanbiBeginTime = huanbiBeginTime + "000000";
-			huanbiEndTime = huanbiEndTime + "235959";
-		} else {
-			String[] timeRangeArray = timeRange.split("-");
-			huanbiBeginTime = huanbiBeginTime + timeRangeArray[0];
-			huanbiEndTime = huanbiEndTime + timeRangeArray[1];
+		String huanbiBegin = DateUtil.dateAddMonth(rangeArray[0], -2);		// 环比周开始时间
+		String huanbiEnd = DateUtil.dateAddMonth(rangeArray[1], -2);		// 环比周结束时间
+		while (CommonUtil.compare(huanbiBegin, huanbiEnd) != 1) {
+			param.put("yesterday", huanbiBegin);
+			List<Map<String, String>> yesterdayList = db.getMybatisMapper(ReportServiceMapper.class).queryYesterdayDetail(param);
+			if (yesterdayList.size() == 0) {
+				huanbiBegin = DateUtil.dateAddDay(huanbiBegin, 1);
+				continue;
+			}
+			
+			param.put("yesterdayDetail", yesterdayList);
+			param.put("beginDay",	DateUtil.dateAddDay(DateUtil.dateAddMonth(huanbiBegin, -2), 1)  + beginTime.substring(8, 14));
+			param.put("endDay", huanbiBegin + endTime.substring(8, 14));
+			param.put("countNum", 3);
+			List<Map<String, String>> sanciData = db.getMybatisMapper(ReportServiceMapper.class).selectMountCount00(param);
+			huanbi = CommonUtil.add(huanbi, String.valueOf(sanciData.size()));
+			// 天数 + 1
+			huanbiBegin = DateUtil.dateAddDay(huanbiBegin, 1);
 		}
 		
-		param.put("beginDay", huanbiBeginTime);
-		param.put("endDay", huanbiEndTime);
-		List<Map<String, String>> huanbiTwiceMonthCountList = db.getMybatisMapper(ReportServiceMapper.class).selectMountCount00(param);
-		for (Map<String, String> map : huanbiTwiceMonthCountList) {
-			String num = map.get("num");
-			huanbi = CommonUtil.add(huanbi, num);
-		}
 		// 同比
 		String tongbi = "0";
-		String tongbiBeginTime = DateUtil.dateAddMonth(DateUtil.dateAddYear(rangeArray[1], -1), -2);	// 减一年两个月
-		String tongbiEndTime = DateUtil.dateAddYear(rangeArray[1], -1);															// 减一年
-		if (CommonUtil.isEmpty(timeRange)) {
-			tongbiBeginTime = tongbiBeginTime + "000000";
-			tongbiEndTime = tongbiEndTime + "235959";
-		} else {
-			String[] timeRangeArray = timeRange.split("-");
-			tongbiBeginTime = tongbiBeginTime + timeRangeArray[0];
-			tongbiEndTime = tongbiEndTime + timeRangeArray[1];
-		}
+		String tongbiBegin = DateUtil.dateAddYear(rangeArray[0], -1);	// 同比周开始时间
+		String tongbiEnd = DateUtil.dateAddYear(rangeArray[1], -1);		// 同比周结束时间
 		
-		param.put("beginDay", tongbiBeginTime);
-		param.put("endDay", tongbiEndTime);
-		List<Map<String, String>> tongbiTwiceMonthCountList = db.getMybatisMapper(ReportServiceMapper.class).selectMountCount00(param);
-		for (Map<String, String> map : tongbiTwiceMonthCountList) {
-			String num = map.get("num");
-			tongbi = CommonUtil.add(tongbi, num);
+		while (CommonUtil.compare(tongbiBegin, tongbiEnd) != 1) {
+			param.put("yesterday", tongbiBegin);
+			List<Map<String, String>> yesterdayList = db.getMybatisMapper(ReportServiceMapper.class).queryYesterdayDetail(param);
+			
+			if (yesterdayList.size() == 0) {
+				tongbiBegin = DateUtil.dateAddDay(tongbiBegin, 1);
+				continue;
+			}
+			
+			param.put("yesterdayDetail", yesterdayList);
+			param.put("beginDay",	DateUtil.dateAddDay(DateUtil.dateAddMonth(tongbiBegin, -2), 1)  + beginTime.substring(8, 14));
+			param.put("endDay", tongbiBegin + endTime.substring(8, 14));
+			param.put("countNum", 3);
+			List<Map<String, String>> sanciData = db.getMybatisMapper(ReportServiceMapper.class).selectMountCount00(param);
+			tongbi = CommonUtil.add(tongbi, String.valueOf(sanciData.size()));
+			// 天数 + 1
+			tongbiBegin = DateUtil.dateAddDay(tongbiBegin, 1);
 		}
 		
 		// 返回excel数据
@@ -1160,29 +1203,17 @@ public class ReportServiceImpl implements IReportService {
 
 		
 		// 环比
-		if (CommonUtil.compare(huanbi, "0") != 0) {
-			if (CommonUtil.compare(totalMonthChongfuTaici, huanbi) == 1) {
-				dataMap.put("huanbi", "环比增加" + CommonUtil.multiply(CommonUtil.divide(CommonUtil.subtract(totalMonthChongfuTaici, huanbi), huanbi, 4), "100", 2) + "%");
-			} else {
-				dataMap.put("huanbi", "环比减少" + CommonUtil.multiply(CommonUtil.divide(CommonUtil.subtract(huanbi, totalMonthChongfuTaici), huanbi, 4), "100", 2) + "%");
-			}
+		if (CommonUtil.compare(totalMonthChongfuTaici, huanbi) == 1) {
+			dataMap.put("huanbi", "环比增加" + CommonUtil.multiply(CommonUtil.divide(CommonUtil.subtract(totalMonthChongfuTaici, huanbi), huanbi, 4), "100", 2) + "%");
 		} else {
-			dataMap.put("huanbi", "");
+			dataMap.put("huanbi", "环比减少" + CommonUtil.multiply(CommonUtil.divide(CommonUtil.subtract(huanbi, totalMonthChongfuTaici), huanbi, 4), "100", 2) + "%");
 		}
 		
 		// 同比
-		if (CommonUtil.compare(tongbi, "0") != 0) {
-			if (CommonUtil.compare(totalMonthChongfuTaici, tongbi) == 1) {
-				if (CommonUtil.compare(tongbi, "0") == 0) {
-					dataMap.put("tongbi", "");
-				} else {
-					dataMap.put("tongbi", "同比增加" + CommonUtil.multiply(CommonUtil.divide(CommonUtil.subtract(totalMonthChongfuTaici, tongbi), tongbi, 4), "100", 2) + "%。");
-				}
-			} else {
-				dataMap.put("tongbi", "同比减少" + CommonUtil.multiply(CommonUtil.divide(CommonUtil.subtract(tongbi, totalMonthChongfuTaici), tongbi, 4), "100", 2) + "%。");
-			}
+		if (CommonUtil.compare(totalMonthChongfuTaici, tongbi) == 1) {
+			dataMap.put("tongbi", "同比增加" + CommonUtil.multiply(CommonUtil.divide(CommonUtil.subtract(totalMonthChongfuTaici, tongbi), tongbi, 4), "100", 2) + "%。");
 		} else {
-			dataMap.put("tongbi", "");
+			dataMap.put("tongbi", "同比减少" + CommonUtil.multiply(CommonUtil.divide(CommonUtil.subtract(tongbi, totalMonthChongfuTaici), tongbi, 4), "100", 2) + "%。");
 		}
 		
 		resMap.put("dataMap", dataMap);