From 36afc3a1f1437b8a3283dc0bf6475e96fded05a7 Mon Sep 17 00:00:00 2001
From: Administrator <admin>
Date: Mon, 12 Apr 2021 22:35:36 +0800
Subject: [PATCH] 新增主动报警alarm,健康码,体温,包裹,违禁品导出数据接口

---
 blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/parcel/service/impl/ParcelServiceImpl.java |  821 ++++++++++++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 707 insertions(+), 114 deletions(-)

diff --git a/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/parcel/service/impl/ParcelServiceImpl.java b/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/parcel/service/impl/ParcelServiceImpl.java
index 83084f6..4be1cbe 100644
--- a/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/parcel/service/impl/ParcelServiceImpl.java
+++ b/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/parcel/service/impl/ParcelServiceImpl.java
@@ -1,16 +1,26 @@
 package org.springblade.jfpt.parcel.service.impl;
 
 import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.alibaba.nacos.common.utils.JacksonUtils;
+import io.swagger.models.auth.In;
+import org.springblade.jfpt.alarm.constant.AlarmTimeConstant;
+import org.springblade.jfpt.animalheat.util.ImageUtil;
 import org.springblade.jfpt.parcel.service.ParcelService;
-import org.springblade.jfpt.parcel.util.DateUtils;
-import org.springblade.jfpt.parcel.util.HttpClientUtils;
+import org.springblade.jfpt.parcel.util.*;
 import org.springblade.jfpt.parcel.vo.ConditionVo;
+import org.springblade.jfpt.parcel.vo.ParcelExcel;
+import org.springblade.jfpt.parcel.vo.ParcelKindExcel;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
+import javax.validation.constraints.NotBlank;
+import java.lang.reflect.Array;
+import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.*;
+import java.util.stream.Collectors;
 
 import static org.springblade.core.tool.utils.DateUtil.now;
 
@@ -25,11 +35,28 @@
 	@Value("${PARCEL_SECRET}")
 	private String PARCEL_SECRET;
 
+	//查询某期间的违禁物品(违禁小类)统计
 	@Value("${PARCEL_CONTRABAND_URL}")
 	private String PARCEL_CONTRABAND_URL;
 
+	//查询某期间的包裹统计
 	@Value("${PARCEL_URL}")
 	private String PARCEL_URL;
+
+	//查询安检图片
+	@Value("${PARCEL_PICTURE_URL}")
+	private String PARCEL_PICTURE_URL;
+
+	//查询安检明细列表
+	@Value("${PARCEL_DETAIL_RUL}")
+	private String PARCEL_DETAIL_RUL;
+
+	//查询安检违禁品列表
+	@Value("${PARCEL_KIND_URL}")
+	private String PARCEL_KIND_URL;
+
+	@Value("${PARCEL_PRE_URL}")
+	private String PARCEL_PRE_URL;
 
 
 
@@ -52,7 +79,6 @@
 				//将所有的违禁包裹编码存起来
 				mapCode.put(objectMap.get("objCode").toString(),objectMap.get("objCode").toString());
 			}
-			System.out.println("mapCode = " + mapCode);
 			//遍历违禁编码map数据
 			List<Map<String,Object>> list = new ArrayList<>();
 			for (String value:mapCode.values()) {
@@ -83,65 +109,66 @@
 	public Object getParcelStatis(ConditionVo conditionVo) {
 		List<Object> list = new ArrayList<>();//返回
 		//1.判空
-		if (null!=conditionVo.getStatus()){
+		if (null!=conditionVo.getStatus()) {
 			//2.获取数据
-			List<Object> objectList = getParcelData(conditionVo,PARCEL_URL,PARCEL_KEY,PARCEL_SECRET);
-			System.out.println("objectList = " + objectList);
-			//3.创建时间集合,包裹集合数据
-			List<String> listTime = new ArrayList<>();
-			List<Map<String,Object>> parcelList = new ArrayList<>();
-			if (conditionVo.getStatus() == 1) {
-				//3.获取今天之前的每一天数组   2021-3-12 arsn修改
-				listTime = DateUtils.pastDay(new SimpleDateFormat("yyyy-MM-dd").format(new Date()));
-				List<String> percelTimeList = new ArrayList<>();
-				for (Object object:objectList) {
-					//4.取出list里面的值转为map
-					Map<String, Object> objectMap = (Map<String, Object>) object;
-					//5.将远程时间数据存入集合
-					percelTimeList.add(objectMap.get("dateStr").toString());
-				}
-				for (String time:listTime) {
-					//6.创建map,用于存储包裹数据
-					HashMap<String, Object> hashMap = new HashMap<>();
-					//7.如果远程数据哪天数据没有,则为0
-					if (!percelTimeList.contains(time)){
-						hashMap.put("dateStr",time);
-						hashMap.put("checkCount",0);
-						hashMap.put("dangerCount",0);
-						parcelList.add(hashMap);
-					}else {
-						//8.遍历,分别取出数据
-						for (Object object : objectList) {
-							//9.取出list里面的值转为map
-							Map<String, Object> objectMap = (Map<String, Object>) object;
-							String dateStr = objectMap.get("dateStr").toString();  //安检时间
-							Integer checkCount = Integer.parseInt(objectMap.get("checkCount").toString()); //安检包裹数量
-							Integer dangerCount = Integer.parseInt(objectMap.get("dangerCount").toString()); //违禁包裹数量
-							//10.判断,存入数据
-							if (time.equals(dateStr)) {
-								Set<Map.Entry<String, Object>> entries = objectMap.entrySet();
-								for (Map.Entry<String, Object> m : entries) {
-									if (m.getKey().equals("checkCount")) {
-										hashMap.put("checkCount", checkCount);
-										hashMap.put("dateStr", dateStr);
-									}
-									if (m.getKey().equals("dangerCount")) {
-										hashMap.put("dangerCount", dangerCount);
+			List<Object> objectList = getParcelData(conditionVo, PARCEL_URL, PARCEL_KEY, PARCEL_SECRET);
+			if (null != objectList) {
+				//3.创建时间集合,包裹集合数据
+				List<String> listTime = new ArrayList<>();
+				List<Map<String, Object>> parcelList = new ArrayList<>();
+				if (conditionVo.getStatus() == 1) {
+					//3.获取今天之前的每一天数组   2021-3-12 arsn修改
+					listTime = DateUtils.pastDay(new SimpleDateFormat("yyyy-MM-dd").format(new Date()));
+					List<String> percelTimeList = new ArrayList<>();
+					for (Object object : objectList) {
+						//4.取出list里面的值转为map
+						Map<String, Object> objectMap = (Map<String, Object>) object;
+						//5.将远程时间数据存入集合
+						percelTimeList.add(objectMap.get("dateStr").toString());
+					}
+					for (String time : listTime) {
+						//6.创建map,用于存储包裹数据
+						HashMap<String, Object> hashMap = new HashMap<>();
+						//7.如果远程数据哪天数据没有,则为0
+						if (!percelTimeList.contains(time)) {
+							hashMap.put("dateStr", time);
+							hashMap.put("checkCount", 0);
+							hashMap.put("dangerCount", 0);
+							parcelList.add(hashMap);
+						} else {
+							//8.遍历,分别取出数据
+							for (Object object : objectList) {
+								//9.取出list里面的值转为map
+								Map<String, Object> objectMap = (Map<String, Object>) object;
+								String dateStr = objectMap.get("dateStr").toString();  //安检时间
+								Integer checkCount = Integer.parseInt(objectMap.get("checkCount").toString()); //安检包裹数量
+								Integer dangerCount = Integer.parseInt(objectMap.get("dangerCount").toString()); //违禁包裹数量
+								//10.判断,存入数据
+								if (time.equals(dateStr)) {
+									Set<Map.Entry<String, Object>> entries = objectMap.entrySet();
+									for (Map.Entry<String, Object> m : entries) {
+										if (m.getKey().equals("checkCount")) {
+											hashMap.put("checkCount", checkCount);
+											hashMap.put("dateStr", dateStr);
+										}
+										if (m.getKey().equals("dangerCount")) {
+											hashMap.put("dangerCount", dangerCount);
+										}
 									}
 								}
 							}
+							//11.加入到集合中
+							parcelList.add(hashMap);
 						}
-						//11.加入到集合中
-						parcelList.add(hashMap);
 					}
 				}
+				//12.封装数据
+				list.add(listTime);
+				list.add(parcelList);
+				list.add(getKindServenDataList(conditionVo));
+				//13.返回
+				return list;
 			}
-			//12.封装数据
-			list.add(listTime);
-			list.add(parcelList);
-			list.add(getKindServenDataList());
-			//13.返回
-			return list;
 		}
 		return null;
 	}
@@ -157,32 +184,40 @@
 	 */
 	private List<Object> getParcelData(ConditionVo conditionVo, String url, String key, String secret) {
 		//1.创建map对象,用于存储请求接口的秘钥
-		Map<String, String> map = new HashMap<>();
+		Map<String, Object> map = new HashMap<>();
 		String startDate = null;
 		String endDate = null;
 		//2.2查询本天的数据
-		if (conditionVo.getStatus() == 0) {
-			//3.获取本天开始时间和结束时间
-			startDate = DateUtils.getToday();
-			endDate = DateUtils.getToday();
+		if (null!=conditionVo.getStatus()) {
+			if (conditionVo.getStatus() == 0) {
+				//3.获取本天开始时间和结束时间
+				startDate = DateUtils.getToday();
+				endDate = DateUtils.getToday();
+			}
+			//2.2查询过去6天及当天的的数据
+			if (conditionVo.getStatus() == 1) {
+				//3.获取过去6天及当天开始时间和结束时间
+				startDate = DateUtils.getPastDate(6, now());
+				endDate = DateUtils.getToday();
+			}
+			//2.4查询本周的数据
+			if (conditionVo.getStatus() == 3) {
+				//3.获取过去6天及当天开始时间和结束时间
+				startDate = DateUtils.getWeekStart();
+				endDate = DateUtils.getWeekEnd();
+			}
+			//2.2查询本月的数据
+			if (conditionVo.getStatus() == 2) {
+				//3.获取本月开始时间和结束时间
+				startDate = DateUtils.getMonthStart();
+				endDate = DateUtils.getMonthEnd();
+			}
 		}
-		//2.2查询过去6天及当天的的数据
-		if (conditionVo.getStatus() == 1) {
-			//3.获取过去6天及当天开始时间和结束时间
-			startDate = DateUtils.getPastDate(6,now());
-			endDate = DateUtils.getToday();
-		}
-		//2.4查询本周的数据
-		if (conditionVo.getStatus() == 3) {
-			//3.获取过去6天及当天开始时间和结束时间
-			startDate = DateUtils.getWeekStart();
-			endDate = DateUtils.getWeekEnd();
-		}
-		//2.2查询本月的数据
-		if (conditionVo.getStatus() == 2) {
-			//3.获取本月开始时间和结束时间
-			startDate = DateUtils.getMonthStart();
-			endDate = DateUtils.getMonthEnd();
+		//2.5 按时间条件查询
+		if (null!=conditionVo.getStartTime() && conditionVo.getStartTime()!=""
+			&& null != conditionVo.getEndTime() && conditionVo.getEndTime()!=""){
+			startDate = conditionVo.getStartTime().substring(0,10);
+			endDate = conditionVo.getEndTime().substring(0,10);
 		}
 		map.put("startDate", startDate);
 		map.put("endDate", endDate);
@@ -190,39 +225,54 @@
 		String params = HttpClientUtils.httpPost(url, key, secret, map);
 		//5.数据转换
 		Map<String, Object> data = (Map<String, Object>) JSONObject.parse(params);
-		//System.out.println("data = " + data);
-		return JSON.parseArray(data.get("result").toString());
+		if (data.get("succ").toString().equals("ok")){
+			//6.返回数据
+			return JSON.parseArray(data.get("result").toString());
+		}
+		return null;
 	}
 
 
 	/**
 	 * 查询包裹,违禁品总数
-	 * @param status 状态码 0:本天    1:本周   2:本月
+	 * @param conditionVo status 状态码 0:本天    1:本周   2:本月
 	 * @return
 	 */
 	@Override
-	public List<Integer> selectParcelCount(Integer status) {
+	public List<Integer> selectParcelCount(ConditionVo conditionVo) {
 		List<Integer> list = new ArrayList<>();
-		ConditionVo conditionVo = new ConditionVo();
-		conditionVo.setStatus(status);
 		//获取包裹数据
 		List<Object> parcelData = getParcelData(conditionVo, PARCEL_URL, PARCEL_KEY, PARCEL_SECRET);
-		//查询当天的包裹总数
-		Integer dangerCount = null;
-		Integer contrabandCount = null;
-		if (status == 0) {
-			for (Object object : parcelData) {
-				//取出list里面的值转为map
-				Map<String, Object> objectMap = (Map<String, Object>) object;
-				dangerCount = Integer.parseInt(objectMap.get("dangerCount").toString()); //违禁包裹数量
-				contrabandCount = Integer.parseInt(objectMap.get("contrabandCount").toString()); //违禁物品数量
+		if (null!=parcelData) {
+			//声明包裹和物品数量
+			Integer dangerCount = 0;
+			Integer contrabandCount = 0;
+			if (null!=conditionVo.getStartTime()){
+				for (Object object : parcelData) {
+					//取出list里面的值转为map
+					Map<String, Object> objectMap = (Map<String, Object>) object;
+					dangerCount += Integer.parseInt(objectMap.get("dangerCount").toString()); //违禁包裹数量
+					contrabandCount += Integer.parseInt(objectMap.get("contrabandCount").toString()); //违禁物品数量
+				}
+			}else {
+				//查询当天的包裹总数
+				conditionVo.setStatus(0);
+				if (conditionVo.getStatus() == 0) {
+					for (Object object : parcelData) {
+						//取出list里面的值转为map
+						Map<String, Object> objectMap = (Map<String, Object>) object;
+						dangerCount = Integer.parseInt(objectMap.get("dangerCount").toString()); //违禁包裹数量
+						contrabandCount = Integer.parseInt(objectMap.get("contrabandCount").toString()); //违禁物品数量
+					}
+				}
 			}
+			//封装数据
+			list.add(dangerCount);
+			list.add(contrabandCount);
+			//返回数据
+			return list;
 		}
-		//封装数据
-		list.add(dangerCount);
-		list.add(contrabandCount);
-		//返回数据
-		return list;
+		return null;
 	}
 
 	/**
@@ -230,9 +280,9 @@
 	 * @return
 	 */
 	@Override
-	public Map<String, Object> selectParcelData() {
+	public Map<String, Object> selectParcelData(ConditionVo conditionVo) {
 		HashMap<String, Object> map = new HashMap<>();
-		map.put("parcelData",getKindServenDataList());
+		map.put("parcelData",getKindServenDataList(conditionVo));
 		return map;
 	}
 
@@ -240,21 +290,31 @@
 	 * 获取危险违禁品7天内每天的数量集合
 	 * @return
 	 */
-	public List<Integer> getKindServenDataList(){
-		ConditionVo conditionVo = new ConditionVo();
-		conditionVo.setStatus(1);//近7天status 为 1
+	public List<Integer> getKindServenDataList(ConditionVo conditionVo){
+		if (null==conditionVo.getStartTime()){
+			conditionVo.setStatus(1);//近7天status 为 1
+		}
 		//获取数据
 		List<Object> objectList = getParcelData(conditionVo,PARCEL_CONTRABAND_URL,PARCEL_KEY,PARCEL_SECRET);
-		//遍历违禁编码map数据
-		List<String> times = DateUtils.pastDay(new SimpleDateFormat("yyyy-MM-dd").format(new Date()));
-		List<Integer> list = new ArrayList<>();
-		for (String time:times) {
-			Integer count = 0;
-			//遍历集合数据获取每一天的count
-			for (Object object : objectList) {
-				Map<String, Object> objectMap = (Map<String, Object>) object;//取出list里面的值转为map
-				//对比时间和objCode,危险品,刀具,枪支等
-				if (time.equals(objectMap.get("dateStr").toString()) ){
+		List<String> times = new ArrayList<>();
+		if (null!=objectList) {
+			//遍历违禁编码map数据
+			//获取时间
+			if (null!=conditionVo.getStatus()) {
+				times = DateUtils.pastDay(new SimpleDateFormat("yyyy-MM-dd").format(new Date()));
+			}
+			if (null!=conditionVo.getStartTime()){
+				times = DateUtils.getTimeOverOneDate(conditionVo.getStartTime(),conditionVo.getEndTime());
+			}
+
+			List<Integer> list = new ArrayList<>();
+			for (String time : times) {
+				Integer count = 0;
+				//遍历集合数据获取每一天的count
+				for (Object object : objectList) {
+					Map<String, Object> objectMap = (Map<String, Object>) object;//取出list里面的值转为map
+					//对比时间和objCode,危险品,刀具,枪支等
+					if (time.equals(objectMap.get("dateStr").toString())) {
 //					//枪支
 //					if (objectMap.get("objCode").toString().equals("gan")) {
 //						count += Integer.parseInt(objectMap.get("objCount").toString());
@@ -267,11 +327,544 @@
 //					if (objectMap.get("objCode").toString().equals("boomExplosive")) {
 //						count += Integer.parseInt(objectMap.get("objCount").toString());
 //					}
-					//3-20 修改不筛选危险品,由第三方筛选好
-					count += Integer.parseInt(objectMap.get("objCount").toString());
+						//3-20 修改不筛选危险品,由第三方筛选好
+						count += Integer.parseInt(objectMap.get("objCount").toString());
+					}
+				}
+				list.add(count);
+			}
+			return list;
+		}
+		return null;
+	}
+
+	/**
+	 * 获取图片地址
+	 * @param imgUrl 图片Url
+	 * @return
+	 */
+	@Override
+	public Map<String, Object> getParcelPic(String imgUrl) {
+		//截取图片imgKey信息
+		String[] imgKeys = imgUrl.split("=", imgUrl.length());
+		String imgKey = imgKeys[1];
+		//封装成map对象
+		HashMap<String, String> map = new HashMap<>();
+		map.put("imgKey",imgKey);
+		//执行http远程调用
+		String s = HttpClientUtils.doGetHeaderPictureBase64(PARCEL_PICTURE_URL, PARCEL_KEY, PARCEL_SECRET, map);
+		System.out.println("s = " + s);
+		if (null==s || s=="" || s.isEmpty()){
+			return null;
+		}
+		//获取图片的长宽
+		Map<String, Object> imageMap = ImageUtil.getBase64ImageWidthAndHeight(s);
+		//封装数据
+		imageMap.put("imgBase64",s);
+		//返回
+		return imageMap;
+	}
+
+	/**
+	 * 获取包裹明细分页数据,远程调用api获取数据
+	 * @param conditionVo  请求参数对象
+	 * @return
+	 */
+	@Override
+	public Object getParcelDetailPage(ConditionVo conditionVo) {
+		Map<String,Object> result =(Map<String,Object>) getParcelDataPageList(conditionVo, PARCEL_DETAIL_RUL, PARCEL_KEY, PARCEL_SECRET).get("result");
+		if (null!=result) {
+			return JSONObject.parse(result.toString());
+		}
+		return null;
+	}
+
+
+	/**
+	 * 获取包裹违禁品明细分页数据,远程调用api获取数据
+	 * @param conditionVo  请求参数对象
+	 * @return
+	 */
+	@Override
+	public Object getParcelkindDetailPage(ConditionVo conditionVo) {
+		if(null!=conditionVo.getTimeDesc() && conditionVo.getTimeDesc()!=""){
+			Map<Object, Object> map = new HashMap<>();
+			List<List<Object>> objectArrayList = new ArrayList<>();
+			List<Object> list = new ArrayList<>();
+			//设置页码数
+			ConditionVo vo = new ConditionVo();
+			vo.setCurrentPage(1);
+			vo.setPageSize(100);
+			vo.setDecisioDiagramResult(conditionVo.getDecisioDiagramResult());
+			vo.setStartTime(conditionVo.getStartTime());
+			vo.setEndTime(conditionVo.getEndTime());
+			Map<String,Object> result =(Map<String,Object>) getParcelDataPageList(vo, PARCEL_KIND_URL, PARCEL_KEY, PARCEL_SECRET).get("result");
+			if (null!=result){
+				List<Object> dataList = JSONArray.parseArray(result.get("data").toString());
+				objectArrayList.add(dataList);
+				//取第一次获取到的数据总数,每次取100条,多于100分批次取
+				int totalSize = Integer.parseInt(result.get("totalSize").toString());
+				int i = totalSize/100+1;
+				if (i>1){
+					for (int j=1;j<i;j++) {
+						vo.setCurrentPage(j+1);
+						//获取数据
+						Map<String,Object> result0 =(Map<String,Object>) getParcelDataPageList(vo, PARCEL_KIND_URL, PARCEL_KEY, PARCEL_SECRET).get("result");
+						List<Object> dataLists = JSONArray.parseArray(result0.get("data").toString());
+						objectArrayList.add(dataLists);
+					}
+				}
+				//合并集合
+				List<Object> collect = objectArrayList.stream().flatMap(List::stream).collect(Collectors.toList());
+				//选出符合条件的数据
+				list = TimeDisData(conditionVo,collect);
+				//分页
+				List<Object> listPaging = PageList.getListPaging(list, conditionVo.getCurrentPage(), conditionVo.getPageSize());
+				map.put("currentPage",conditionVo.getCurrentPage());
+				map.put("pageSize",conditionVo.getPageSize());
+				map.put("totalSize",list.size());
+				map.put("data",listPaging);
+				//返回数据
+				return map;
+			}
+		}else {
+			String result = getParcelDataPageList(conditionVo, PARCEL_KIND_URL, PARCEL_KEY, PARCEL_SECRET).get("result").toString();
+			//获取违禁品数据
+			if (null!=result) {
+				return JSONObject.parse(result);
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * 获取符合符合时间区间的违禁品明细集合数据
+	 * @param collect
+	 * @return
+	 */
+	private List<Object> TimeDisData(ConditionVo conditionVo,List<Object> collect) {
+		List<Object> list = new ArrayList<>();
+		//遍历集合,选出符合条件的
+		for (Object object:collect) {
+			Map<String,Object> objectMap = (Map<String, Object>) object;
+			try {
+				long time = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(objectMap.get("createTime").toString()).getHours();
+				if (conditionVo.getTimeDesc().equals("0-2")){
+					if (time>=0 && time<2){
+						list.add(objectMap);
+					}
+				}
+				if (conditionVo.getTimeDesc().equals("2-4")){
+					if (time>=2 && time<4){
+						list.add(objectMap);
+					}
+				}
+				if (conditionVo.getTimeDesc().equals("4-6")){
+					if (time>=4 && time<6){
+						list.add(objectMap);
+					}
+				}
+				if (conditionVo.getTimeDesc().equals("6-8")){
+					if (time>=6 && time<8){
+						list.add(objectMap);
+					}
+				}
+				if (conditionVo.getTimeDesc().equals("8-10")){
+					if (time>=8 && time<10){
+						list.add(objectMap);
+					}
+				}
+				if (conditionVo.getTimeDesc().equals("10-12")){
+					if (time>=10 && time<12){
+						list.add(objectMap);
+					}
+				}
+				if (conditionVo.getTimeDesc().equals("12-14")){
+					if (time>=12 && time<14){
+						list.add(objectMap);
+					}
+				}
+				if (conditionVo.getTimeDesc().equals("14-16")){
+					if (time>=14 && time<16){
+						list.add(objectMap);
+					}
+				}
+				if (conditionVo.getTimeDesc().equals("16-18")){
+					if (time>=16 && time<18){
+						list.add(objectMap);
+					}
+				}
+				if (conditionVo.getTimeDesc().equals("18-20")){
+					if (time>=18 && time<20){
+						list.add(objectMap);
+					}
+				}
+				if (conditionVo.getTimeDesc().equals("20-22")){
+					if (time>=20 && time<22){
+						list.add(objectMap);
+					}
+				}
+				if (conditionVo.getTimeDesc().equals("22-24")){
+					if (time>=22 && time<24){
+						list.add(objectMap);
+					}
+				}
+			} catch (ParseException e) {
+				e.printStackTrace();
+			}
+		}
+		return list;
+	}
+
+	/**
+	 * 远程调用api 获取违禁品详细数据
+	 * @param conditionVo 条件
+	 * @param url 违禁品详细数据Url
+	 * @param key key
+	 * @param secret 秘钥
+	 * @return
+	 */
+	public Map<String,Object> getParcelDataPageList(ConditionVo conditionVo, String url, String key, String secret){
+		//1.创建map对象存储数据
+		HashMap<String, Object> map = new HashMap<>();
+		//2.条件判断
+		if (null!=conditionVo.getStartTime()){
+			map.put("startTime", conditionVo.getStartTime());
+		}
+		if (null!=conditionVo.getEndTime()){
+			map.put("endTime", conditionVo.getEndTime());
+		}
+		if (null!=conditionVo.getDecisioDiagramResult()){
+			map.put("decisioDiagramResult", conditionVo.getDecisioDiagramResult());
+		}
+		if (null!=conditionVo.getCurrentPage()){
+			map.put("currentPage", conditionVo.getCurrentPage());
+		}
+		if (null!=conditionVo.getPageSize()){
+			map.put("pageSize", conditionVo.getPageSize());
+		}
+		//3.远程调用api 获取数据
+		String params = HttpClientUtils.httpPost(url, key, secret, map);
+		Map<String,Object> paramsMap = (Map<String, Object>) JSONObject.parse(params);
+		if (paramsMap.get("succ").toString().equals("ok")){
+			//4返回数据
+			return paramsMap;
+		}
+		//4返回数据
+		return null;
+	}
+
+	/**
+	 * 查询当前时间段违禁品总个数
+	 * @param conditionVo
+	 * @return
+	 */
+	@Override
+	public Integer selParcelTimeCount(ConditionVo conditionVo) {
+		return selectParcelCount(conditionVo).get(1);
+	}
+
+	/**
+	 *查询当前时间段区间时间违禁品个数
+	 * @param conditionVo
+	 * @return
+	 */
+	@Override
+	public List<Integer> selParcelTimeDis(ConditionVo conditionVo) {
+		ArrayList<List<Object>> objectArrayList = new ArrayList<>();
+		//设置页码数
+		conditionVo.setCurrentPage(1);
+		conditionVo.setPageSize(100);
+		//获取数据
+		Map<String,Object> result =(Map<String,Object>) getParcelDataPageList(conditionVo, PARCEL_KIND_URL, PARCEL_KEY, PARCEL_SECRET).get("result");
+		if (null!=result) {
+			List<Object> dataList = JSONArray.parseArray(result.get("data").toString());
+			objectArrayList.add(dataList);
+			//取第一次获取到的数据总数,每次取100条,多于100分批次取
+			int totalSize = Integer.parseInt(result.get("totalSize").toString());
+			int i = totalSize/100+1;
+			if (i>1){
+				for (int j=1;j<i;j++) {
+					conditionVo.setCurrentPage(j+1);
+					//获取数据
+					Map<String,Object> result0 =(Map<String,Object>) getParcelDataPageList(conditionVo, PARCEL_KIND_URL, PARCEL_KEY, PARCEL_SECRET).get("result");
+					List<Object> dataLists = JSONArray.parseArray(result0.get("data").toString());
+					objectArrayList.add(dataLists);
 				}
 			}
-			list.add(count);
+			//合并集合
+			List<Object> collect = objectArrayList.stream().flatMap(List::stream).collect(Collectors.toList());
+			//筛选数据,返回数据
+			return getParcelTimeDis(collect);
+		}
+		return Arrays.asList(0,0,0,0,0,0,0,0,0,0,0,0);
+	}
+
+	/**
+	 * 筛选数据,分类返回
+	 * @param collect 集合数据
+	 * @return
+	 */
+	private List<Integer> getParcelTimeDis(List<Object> collect) {
+		List<Integer> list = new ArrayList<>();
+		int count02 = 0;
+		int count0204 = 0;
+		int count0406 = 0;
+		int count0608 = 0;
+		int count0810 = 0;
+		int count1012 = 0;
+		int count1214 = 0;
+		int count1416 = 0;
+		int count1618 = 0;
+		int count1820 = 0;
+		int count2022 = 0;
+		int count2224 = 0;
+		//遍历集合
+		for (Object data:collect) {
+			Map<String,Object> parcelData =(Map<String,Object>)data;
+			try {
+				long hours = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(parcelData.get("createTime").toString()).getHours();
+				if (hours>0 && hours< AlarmTimeConstant.TWO){
+					count02+=1;
+				}
+				if (hours>=AlarmTimeConstant.TWO && hours<AlarmTimeConstant.FOUR){
+					count0204+=1;
+				}
+				if (hours>=AlarmTimeConstant.FOUR && hours<AlarmTimeConstant.SIX){
+					count0406+=1;
+				}
+				if (hours>=AlarmTimeConstant.SIX && hours<AlarmTimeConstant.EIGHT){
+					count0608+=1;
+				}
+				if (hours>=AlarmTimeConstant.EIGHT && hours<AlarmTimeConstant.TEN){
+					count0810+=1;
+				}
+				if (hours>=AlarmTimeConstant.TEN && hours<AlarmTimeConstant.TWEKVE){
+					count1012+=1;
+				}
+				if (hours>=AlarmTimeConstant.TWEKVE && hours<AlarmTimeConstant.FOURTEEN){
+					count1214+=1;
+				}
+				if (hours>=AlarmTimeConstant.FOURTEEN && hours<AlarmTimeConstant.SIXTEEN){
+					count1416+=1;
+				}
+				if (hours>=AlarmTimeConstant.SIXTEEN && hours<AlarmTimeConstant.EIGHTEEN){
+					count1618+=1;
+				}
+				if (hours>=AlarmTimeConstant.EIGHTEEN && hours<AlarmTimeConstant.TWENTY){
+					count1820+=1;
+				}
+				if (hours>=AlarmTimeConstant.TWENTY && hours<AlarmTimeConstant.TWENTY_TWO){
+					count2022+=1;
+				}
+				if (hours>=AlarmTimeConstant.TWENTY_TWO && hours<AlarmTimeConstant.TWENTY_FOUR){
+					count2224+=1;
+				}
+			} catch (ParseException e) {
+				e.printStackTrace();
+			}
+		}
+		//封装数据
+		list.add(count02);
+		list.add(count0204);
+		list.add(count0406);
+		list.add(count0608);
+		list.add(count0810);
+		list.add(count1012);
+		list.add(count1214);
+		list.add(count1416);
+		list.add(count1618);
+		list.add(count1820);
+		list.add(count2022);
+		list.add(count2224);
+		//返回数据
+		return list;
+	}
+
+
+	/**
+	 * 导出包裹数据表格
+	 * @param conditionVo 查询条件
+	 */
+	@Override
+	public List<ParcelExcel> exportParcel(ConditionVo conditionVo) {
+		ArrayList<List<ParcelExcel>> parcelExcelList = new ArrayList<>();
+		//设置页码数
+		conditionVo.setCurrentPage(1);
+		conditionVo.setPageSize(100);
+		//获取数据
+		Map<String,Object> result =(Map<String,Object>)getParcelDataPageList(conditionVo, PARCEL_DETAIL_RUL, PARCEL_KEY, PARCEL_SECRET).get("result");
+		if (null!=result) {
+			String data = result.get("data").toString();
+			List<ParcelExcel> dataList = JsonUtils.jsonToList(data, ParcelExcel.class);
+			parcelExcelList.add(dataList);
+			//取第一次获取到的数据总数,每次取100条,多于100分批次取
+			int totalSize = Integer.parseInt(result.get("totalSize").toString());
+			int i = totalSize/100+1;
+			if (i>1){
+				for (int j=1;j<i;j++) {
+					conditionVo.setCurrentPage(j+1);
+					//获取数据
+					Map<String,Object> result0 =(Map<String,Object>) getParcelDataPageList(conditionVo, PARCEL_DETAIL_RUL, PARCEL_KEY, PARCEL_SECRET).get("result");
+					String data0 = result0.get("data").toString();
+					List<ParcelExcel> dataLists = JsonUtils.jsonToList(data0, ParcelExcel.class);
+					parcelExcelList.add(dataLists);
+				}
+			}
+			//合并集合
+			List<ParcelExcel> parcelExcels = parcelExcelList.stream().flatMap(List::stream).collect(Collectors.toList());
+			System.out.println("parcelExcels = " + parcelExcels);
+			return parcelExcels;
+		}
+		return null;
+	}
+
+	/**
+	 * 导出违禁品数据表格
+	 * @param conditionVo 查询条件
+	 */
+	@Override
+	public List<ParcelKindExcel> exportParcelKind(ConditionVo conditionVo) {
+		System.out.println("conditionVo = " + conditionVo);
+		List<List<ParcelKindExcel>> parcelKindExcelList = new ArrayList<>();
+		List<ParcelKindExcel> list = new ArrayList<>();
+		if(null!=conditionVo.getTimeDesc() && conditionVo.getTimeDesc()!="" && !conditionVo.getTimeDesc().equals("undefined") ){
+			//设置页码数
+			ConditionVo vo = new ConditionVo();
+			vo.setCurrentPage(1);
+			vo.setPageSize(100);
+			vo.setDecisioDiagramResult(conditionVo.getDecisioDiagramResult());
+			vo.setStartTime(conditionVo.getStartTime());
+			vo.setEndTime(conditionVo.getEndTime());
+			Map<String,Object> result =(Map<String,Object>) getParcelDataPageList(vo, PARCEL_KIND_URL, PARCEL_KEY, PARCEL_SECRET).get("result");
+			if (null!=result){
+				String data = result.get("data").toString();
+				List<ParcelKindExcel> dataList = JsonUtils.jsonToList(data, ParcelKindExcel.class);
+				parcelKindExcelList.add(dataList);
+				//取第一次获取到的数据总数,每次取100条,多于100分批次取
+				int totalSize = Integer.parseInt(result.get("totalSize").toString());
+				int i = totalSize/100+1;
+				if (i>1){
+					for (int j=1;j<i;j++) {
+						vo.setCurrentPage(j+1);
+						//获取数据
+						Map<String,Object> result0 =(Map<String,Object>) getParcelDataPageList(vo, PARCEL_KIND_URL, PARCEL_KEY, PARCEL_SECRET).get("result");
+						String data0 = result0.get("data").toString();
+						List<ParcelKindExcel> kindExcels = JsonUtils.jsonToList(data0, ParcelKindExcel.class);
+						parcelKindExcelList.add(kindExcels);
+					}
+				}
+				//合并集合
+				List<ParcelKindExcel> collect = parcelKindExcelList.stream().flatMap(List::stream).collect(Collectors.toList());
+				//选出符合条件的数据
+				list = TimeDisDataExcel(conditionVo,collect);
+				//返回数据
+				return list;
+			}
+		}else {
+			conditionVo.setCurrentPage(1);
+			conditionVo.setPageSize(100);
+			Map<String,Object> result =(Map<String,Object>) getParcelDataPageList(conditionVo, PARCEL_KIND_URL, PARCEL_KEY, PARCEL_SECRET).get("result");
+			//获取违禁品数据
+			if (null!=result) {
+				String data = result.get("data").toString();
+				List<ParcelKindExcel> dataList = JsonUtils.jsonToList(data, ParcelKindExcel.class);
+				parcelKindExcelList.add(dataList);
+				//取第一次获取到的数据总数,每次取100条,多于100分批次取
+				int totalSize = Integer.parseInt(result.get("totalSize").toString());
+				int i = totalSize/100+1;
+				if (i>1){
+					for (int j=1;j<i;j++) {
+						conditionVo.setCurrentPage(j+1);
+						//获取数据
+						Map<String,Object> result0 =(Map<String,Object>) getParcelDataPageList(conditionVo, PARCEL_KIND_URL, PARCEL_KEY, PARCEL_SECRET).get("result");
+						String data0 = result0.get("data").toString();
+						List<ParcelKindExcel> kindExcels = JsonUtils.jsonToList(data0, ParcelKindExcel.class);
+						parcelKindExcelList.add(kindExcels);
+					}
+				}
+				//合并集合并返回
+				return parcelKindExcelList.stream().flatMap(List::stream).collect(Collectors.toList());
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * 表格导出帅选数据
+	 * @param conditionVo
+	 * @param collect
+	 * @return
+	 */
+	private List<ParcelKindExcel> TimeDisDataExcel(ConditionVo conditionVo, List<ParcelKindExcel> collect) {
+		List<ParcelKindExcel> list = new ArrayList<>();
+		//遍历集合,选出符合条件的
+		for (ParcelKindExcel parcelKindExcel:collect) {
+			try {
+				long time = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(parcelKindExcel.getCreateTime()).getHours();
+				if (conditionVo.getTimeDesc().equals("0-2")){
+					if (time>=0 && time<2){
+						list.add(parcelKindExcel);
+					}
+				}
+				if (conditionVo.getTimeDesc().equals("2-4")){
+					if (time>=2 && time<4){
+						list.add(parcelKindExcel);
+					}
+				}
+				if (conditionVo.getTimeDesc().equals("4-6")){
+					if (time>=4 && time<6){
+						list.add(parcelKindExcel);
+					}
+				}
+				if (conditionVo.getTimeDesc().equals("6-8")){
+					if (time>=6 && time<8){
+						list.add(parcelKindExcel);
+					}
+				}
+				if (conditionVo.getTimeDesc().equals("8-10")){
+					if (time>=8 && time<10){
+						list.add(parcelKindExcel);
+					}
+				}
+				if (conditionVo.getTimeDesc().equals("10-12")){
+					if (time>=10 && time<12){
+						list.add(parcelKindExcel);
+					}
+				}
+				if (conditionVo.getTimeDesc().equals("12-14")){
+					if (time>=12 && time<14){
+						list.add(parcelKindExcel);
+					}
+				}
+				if (conditionVo.getTimeDesc().equals("14-16")){
+					if (time>=14 && time<16){
+						list.add(parcelKindExcel);
+					}
+				}
+				if (conditionVo.getTimeDesc().equals("16-18")){
+					if (time>=16 && time<18){
+						list.add(parcelKindExcel);
+					}
+				}
+				if (conditionVo.getTimeDesc().equals("18-20")){
+					if (time>=18 && time<20){
+						list.add(parcelKindExcel);
+					}
+				}
+				if (conditionVo.getTimeDesc().equals("20-22")){
+					if (time>=20 && time<22){
+						list.add(parcelKindExcel);
+					}
+				}
+				if (conditionVo.getTimeDesc().equals("22-24")){
+					if (time>=22 && time<24){
+						list.add(parcelKindExcel);
+					}
+				}
+			} catch (ParseException e) {
+				e.printStackTrace();
+			}
 		}
 		return list;
 	}

--
Gitblit v1.9.3