| | |
| | | package org.springblade.jfpt.parcel.service.impl; |
| | | |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.alibaba.fastjson.JSONArray; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | 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.JacksonUtil; |
| | | import org.springblade.jfpt.parcel.util.PageList; |
| | | import org.springblade.jfpt.parcel.vo.ConditionVo; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.stereotype.Service; |
| | |
| | | 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()); |
| | | //13.返回 |
| | | return list; |
| | | } |
| | | //12.封装数据 |
| | | list.add(listTime); |
| | | list.add(parcelList); |
| | | list.add(getKindServenDataList()); |
| | | //13.返回 |
| | | return list; |
| | | } |
| | | return null; |
| | | } |
| | |
| | | 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; |
| | | } |
| | | |
| | | |
| | |
| | | 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 = 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()); //违禁物品数量 |
| | | } |
| | | } |
| | | //封装数据 |
| | | list.add(dangerCount); |
| | | list.add(contrabandCount); |
| | | //返回数据 |
| | | return list; |
| | | } |
| | | //封装数据 |
| | | list.add(dangerCount); |
| | | list.add(contrabandCount); |
| | | //返回数据 |
| | | return list; |
| | | return null; |
| | | } |
| | | |
| | | /** |
| | |
| | | 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()) ){ |
| | | if (null!=objectList) { |
| | | //遍历违禁编码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())) { |
| | | // //枪支 |
| | | // if (objectMap.get("objCode").toString().equals("gan")) { |
| | | // count += Integer.parseInt(objectMap.get("objCount").toString()); |
| | |
| | | // 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); |
| | | } |
| | | list.add(count); |
| | | return list; |
| | | } |
| | | return list; |
| | | return null; |
| | | } |
| | | |
| | | /** |
| | |
| | | */ |
| | | @Override |
| | | public Object getParcelDetailPage(ConditionVo conditionVo) { |
| | | String result = getParcelDataPageList(conditionVo, PARCEL_DETAIL_RUL, PARCEL_KEY, PARCEL_SECRET).get("result").toString(); |
| | | if (null!=result) { |
| | | return JSONObject.parse(result); |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 获取包裹违禁品明细分页数据,远程调用api获取数据 |
| | | * @param conditionVo 请求参数对象 |
| | | * @return |
| | | */ |
| | | @Override |
| | | public Object getParcelkindDetailPage(ConditionVo conditionVo) { |
| | | conditionVo.setDecisioDiagramResult("contraband"); |
| | | Map<Object, Object> map = new HashMap<>(); |
| | | List<Object> list = new ArrayList<>(); |
| | | //获取违禁包裹数据 |
| | | Map<String,Object> result = (Map<String,Object>)getParcelDataPageList(conditionVo, PARCEL_DETAIL_RUL, PARCEL_KEY, PARCEL_SECRET).get("result"); |
| | | if (null!=result) { |
| | | //提取违禁品数据 |
| | | List<Object> dataList = JSON.parseArray(result.get("data").toString()); |
| | | for (Object data : dataList) { |
| | | //取出list里面的值转为map |
| | | Map<String, Object> objectMap = (Map<String, Object>) data; |
| | | //获取违禁包裹名称,包裹Id,包裹图片,过机时间 |
| | | String checkMachineName = objectMap.get("checkMachineName").toString(); |
| | | String packageId = objectMap.get("packageId").toString(); |
| | | String imgUrl = objectMap.get("imgUrl").toString(); |
| | | String samplingTime = objectMap.get("samplingTime").toString(); |
| | | //获取违禁品集合数据 |
| | | List<Object> detailVoList = JSON.parseArray(objectMap.get("coordsDetailVoList").toString()); |
| | | //遍历违禁品集合数据 |
| | | for (Object detailVo : detailVoList) { |
| | | //封装违禁包裹信息 |
| | | Map<String, Object> detailVoMap = (Map<String, Object>) detailVo; |
| | | detailVoMap.put("checkMachineName", checkMachineName); |
| | | detailVoMap.put("packageId", packageId); |
| | | detailVoMap.put("imgUrl", imgUrl); |
| | | detailVoMap.put("samplingTime", samplingTime); |
| | | list.add(detailVoMap); |
| | | } |
| | | } |
| | | //对组装好的违禁品集合数据排序,按时间 |
| | | //分页 |
| | | List<Object> listPaging = PageList.getListPaging(list, conditionVo.getCurrentPage(), conditionVo.getPageSize()); |
| | | //封装数据 |
| | | map.put("totalSize", listPaging.size()); |
| | | map.put("data", listPaging); |
| | | map.put("currentPage", conditionVo.getCurrentPage()); |
| | | map.put("pageSize", conditionVo.getPageSize()); |
| | | //返回数据 |
| | | return map; |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | /** |
| | | * 远程调用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.getPageSize()){ |
| | | map.put("pageSize", conditionVo.getPageSize()); |
| | | } |
| | | //3.远程调用api 获取数据 |
| | | String params = HttpClientUtils.httpPost(PARCEL_DETAIL_RUL, PARCEL_KEY, PARCEL_SECRET, map); |
| | | Map<String, Object> data = (Map<String, Object>) JSONObject.parse(params); |
| | | //4.远程调用数据 |
| | | return JSONObject.parse(data.get("result").toString()); |
| | | Map<String,Object> paramsMap = (Map<String, Object>) JSONObject.parse(params); |
| | | if (paramsMap.get("succ").toString().equals("ok")){ |
| | | //4返回数据 |
| | | return paramsMap; |
| | | } |
| | | //4返回数据 |
| | | return null; |
| | | } |
| | | |
| | | } |