南昌市物联网技防平台-后台
Administrator
2021-04-12 36afc3a1f1437b8a3283dc0bf6475e96fded05a7
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;
   }