From 6716cdf53d0fe3e0f84fb69b22ec89a1e07d85b5 Mon Sep 17 00:00:00 2001
From: Administrator <admin>
Date: Thu, 11 Mar 2021 14:51:06 +0800
Subject: [PATCH] 包裹数接口返回修改

---
 blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/JfptApplication.java                       |    2 
 blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/parcel/vo/ConditionVo.java                 |    6 +
 blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/parcel/util/DateUtils.java                 |  127 +++++++++++++++++++++
 blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/parcel/service/ParcelService.java          |    7 +
 blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/parcel/controller/ParcelController.java    |   27 +++-
 blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/parcel/service/impl/ParcelServiceImpl.java |  147 +++++++++++++++++++++---
 6 files changed, 288 insertions(+), 28 deletions(-)

diff --git a/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/JfptApplication.java b/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/JfptApplication.java
index 1a6344c..7b0b6e2 100644
--- a/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/JfptApplication.java
+++ b/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/JfptApplication.java
@@ -40,7 +40,7 @@
 	@Override
 	public void run(String... args) throws Exception {
 		Server server=new Server(8088);
-		TcpServer tcpServer = new TcpServer(8099);
+		//TcpServer tcpServer = new TcpServer(8099);
 		//UdpServer udpServer=new UdpServer(8099);
 	}
 
diff --git a/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/parcel/controller/ParcelController.java b/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/parcel/controller/ParcelController.java
index e4d86c6..3876ddb 100644
--- a/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/parcel/controller/ParcelController.java
+++ b/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/parcel/controller/ParcelController.java
@@ -5,10 +5,7 @@
 import org.springblade.jfpt.animalheat.vo.AnimalHeatVo;
 import org.springblade.jfpt.parcel.service.ParcelService;
 import org.springblade.jfpt.parcel.vo.ConditionVo;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletResponse;
 
@@ -26,18 +23,32 @@
 	private final ParcelService parcelService;
 
 	/**
-	 * 获取查询条件
-	 * @param conditionVo 查询条件对象
+	 * 获取违禁包裹统计数据,远程调用接口
+	 * @param conditionVo 查询条件对象  状态码 0:本天    1:本周   2:本月
 	 * @param response 返回作用域
 	 * @return
 	 */
-	@PostMapping("/parcelKindStatis")
-	public R parcelKindStatis(@RequestBody ConditionVo conditionVo, HttpServletResponse response){
+	@GetMapping("/parcelKindStatis")
+	public R parcelKindStatis(ConditionVo conditionVo, HttpServletResponse response){
 		response.setHeader("Access-Control-Allow-Origin", "*");
 		response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
 		response.setHeader("Access-Control-Allow-Credentials","true");
 		return R.data(parcelService.parcelKindStatis(conditionVo));
 	}
 
+	/**
+	 * 获取包裹统计数据,远程调用接口获取数据
+	 * @param conditionVo 查询条件对象  status 状态码 0:本天    1:本周   2:本月
+	 * @param response 返回作用域
+	 * @return
+	 */
+	@GetMapping("/getParcelStatis")
+	public R getParcelStatis(ConditionVo conditionVo, HttpServletResponse response){
+		response.setHeader("Access-Control-Allow-Origin", "*");
+		response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
+		response.setHeader("Access-Control-Allow-Credentials","true");
+		return R.data(parcelService.getParcelStatis(conditionVo));
+	}
+
 
 }
diff --git a/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/parcel/service/ParcelService.java b/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/parcel/service/ParcelService.java
index c2a9a9b..73e005a 100644
--- a/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/parcel/service/ParcelService.java
+++ b/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/parcel/service/ParcelService.java
@@ -15,4 +15,11 @@
 	 * @return
 	 */
 	List<Map<String,Object>> parcelKindStatis(ConditionVo conditionVo);
+
+	/**
+	 * 获取包裹统计数据,远程调用接口获取数据
+	 * @param conditionVo 查询条件对象  status 状态码 0:本天    1:本周   2:本月
+	 * @return
+	 */
+    Object getParcelStatis(ConditionVo conditionVo);
 }
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 d0d07c8..8e68cb7 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
@@ -5,6 +5,7 @@
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.nacos.common.utils.JacksonUtils;
 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.vo.ConditionVo;
@@ -28,6 +29,9 @@
 	@Value("${PARCEL_CONTRABAND_URL}")
 	private String PARCEL_CONTRABAND_URL;
 
+	@Value("${PARCEL_URL}")
+	private String PARCEL_URL;
+
 
 
 	/**
@@ -37,27 +41,132 @@
 	 */
 	@Override
 	public List<Map<String, Object>> parcelKindStatis(ConditionVo conditionVo) {
-		//1.创建map对象,用于存储请求接口的秘钥
-		Map<String, String> map = new HashMap<>();
-		 //2.时间不为空
-		if (null!=conditionVo.getStartDate() && null!=conditionVo.getEndDate()) {
-			map.put("startDate", conditionVo.getStartDate());
-			map.put("endDate", conditionVo.getEndDate());
-		}
-		//3.调用远程接口获取数据
-		String params = HttpClientUtils.httpPost(PARCEL_CONTRABAND_URL, PARCEL_KEY, PARCEL_SECRET, map);
-		//4.数据转换
-		Map<String,Object> data = (Map<String, Object>) JSONObject.parse(params);
-		List<Object> objectList = JSON.parseArray(data.get("result").toString());
-		//5.遍历,分别取出数据
-		for (Object object:objectList) {
-			Map <String,Object> objectMap = (Map<String, Object>) object;//取出list里面的值转为map
-			System.out.println("liMap.get(\"objCode\") = " + objectMap.get("objCode"));
-			System.out.println("liMap.get(\"objCode\") = " + objectMap.get("objCount"));
-			System.out.println("liMap.get(\"objCode\") = " + objectMap.get("dateStr"));
-			System.out.println("liMap.get(\"objCode\") = " + objectMap.get("objName"));
+		//1.判空
+		if (null!=conditionVo.getStatus()) {
+			//获取数据
+			List<Object> objectList = getParcelData(conditionVo,PARCEL_CONTRABAND_URL,PARCEL_KEY,PARCEL_SECRET);
+			//5.遍历,分别取出数据
+			for (Object object : objectList) {
+				Map<String, Object> objectMap = (Map<String, Object>) object;//取出list里面的值转为map
+				System.out.println("liMap.get(\"objCode\") = " + objectMap.get("objCode"));
+				System.out.println("liMap.get(\"objCode\") = " + objectMap.get("objCount"));
+				System.out.println("liMap.get(\"objCode\") = " + objectMap.get("dateStr"));
+				System.out.println("liMap.get(\"objCode\") = " + objectMap.get("objName"));
+			}
 		}
 
 		return null;
 	}
+
+	/**
+	 * 获取包裹统计数据,远程调用接口获取数据
+	 * @param conditionVo 查询条件对象  status 状态码 0:本天    1:本周   2:本月
+	 * @return
+	 */
+	@Override
+	public Object getParcelStatis(ConditionVo conditionVo) {
+		List<Object> list = new ArrayList<>();//返回
+		//1.判空
+		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.获取本周开始时间和结束时间的每一天数组
+				listTime = DateUtils.pastDay(DateUtils.getWeekEnd());
+				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);
+					}
+				}
+			}
+			//12.封装数据
+			list.add(listTime);
+			list.add(parcelList);
+			//13.返回
+			return list;
+		}
+		return null;
+	}
+
+
+	/**
+	 * 数据请求处理
+	 * @param conditionVo  条件
+	 * @param url url
+	 * @param key 请求Key
+	 * @param secret 请求 secret
+	 * @return
+	 */
+	private List<Object> getParcelData(ConditionVo conditionVo, String url, String key, String secret) {
+		//1.创建map对象,用于存储请求接口的秘钥
+		Map<String, String> map = new HashMap<>();
+		String startDate = null;
+		String endDate = null;
+		//2.2查询本天的数据
+		if (conditionVo.getStatus() == 0) {
+			//3.获取本天开始时间和结束时间
+			startDate = DateUtils.getToday();
+			endDate = DateUtils.getToday();
+		}
+		//2.2查询本周内每天的数据
+		if (conditionVo.getStatus() == 1) {
+			//3.获取本周开始时间和结束时间
+			startDate = DateUtils.getWeekStart();
+			endDate = DateUtils.getWeekEnd();
+		}
+		//2.2查询本月的数据
+		if (conditionVo.getStatus() == 2) {
+			//3.获取本月开始时间和结束时间
+			startDate = DateUtils.getWeekStart();
+			endDate = DateUtils.getWeekEnd();
+		}
+		map.put("startDate", startDate);
+		map.put("endDate", endDate);
+		//4.远程调用数据
+		String params = HttpClientUtils.httpPost(url, key, secret, map);
+		//5.数据转换
+		Map<String, Object> data = (Map<String, Object>) JSONObject.parse(params);
+		return JSON.parseArray(data.get("result").toString());
+	}
 }
diff --git a/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/parcel/util/DateUtils.java b/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/parcel/util/DateUtils.java
new file mode 100644
index 0000000..964b0d7
--- /dev/null
+++ b/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/parcel/util/DateUtils.java
@@ -0,0 +1,127 @@
+package org.springblade.jfpt.parcel.util;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Date;
+
+/**
+ * 日期工具类
+ */
+public class DateUtils {
+
+	/**
+	 * 获取今天
+	 * @return String
+	 * */
+	public static String getToday(){
+		return new SimpleDateFormat("yyyy-MM-dd").format(new Date());
+	}
+	/**
+	 * 获取昨天
+	 * @return String
+	 * */
+	public static String getYestoday(){
+		Calendar cal=Calendar.getInstance();
+		cal.add(Calendar.DATE,-1);
+		Date time=cal.getTime();
+		return new SimpleDateFormat("yyyy-MM-dd").format(time);
+	}
+	/**
+	 * 获取本月开始日期
+	 * @return String
+	 * **/
+	public static String getMonthStart(){
+		Calendar cal=Calendar.getInstance();
+		cal.add(Calendar.MONTH, 0);
+		cal.set(Calendar.DAY_OF_MONTH, 1);
+		Date time=cal.getTime();
+		return new SimpleDateFormat("yyyy-MM-dd").format(time);
+	}
+	/**
+	 * 获取本月最后一天
+	 * @return String
+	 * **/
+	public static String getMonthEnd(){
+		Calendar cal=Calendar.getInstance();
+		cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH));
+		Date time=cal.getTime();
+		return new SimpleDateFormat("yyyy-MM-dd").format(time);
+	}
+	/**
+	 * 获取本周的第一天
+	 * @return String
+	 * **/
+	public static String getWeekStart(){
+		Calendar cal=Calendar.getInstance();
+		cal.add(Calendar.WEEK_OF_MONTH, 0);
+		cal.set(Calendar.DAY_OF_WEEK, 2);
+		Date time=cal.getTime();
+		return new SimpleDateFormat("yyyy-MM-dd").format(time);
+	}
+	/**
+	 * 获取本周的最后一天
+	 * @return String
+	 * **/
+	public static String getWeekEnd(){
+		Calendar cal=Calendar.getInstance();
+		cal.set(Calendar.DAY_OF_WEEK, cal.getActualMaximum(Calendar.DAY_OF_WEEK));
+		cal.add(Calendar.DAY_OF_WEEK, 1);
+		Date time=cal.getTime();
+		return new SimpleDateFormat("yyyy-MM-dd").format(time);
+	}
+	/**
+	 * 获取本年的第一天
+	 * @return String
+	 * **/
+	public static String getYearStart(){
+		return new SimpleDateFormat("yyyy").format(new Date())+"-01-01";
+	}
+
+	/**
+	 * 获取本年的最后一天
+	 * @return String
+	 * **/
+	public static String getYearEnd(){
+		Calendar calendar = Calendar.getInstance();
+		calendar.set(Calendar.MONTH,calendar.getActualMaximum(Calendar.MONTH));
+		calendar.set(Calendar.DAY_OF_MONTH,calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
+		Date currYearLast = calendar.getTime();
+		return new SimpleDateFormat("yyyy-MM-dd").format(currYearLast)+" 23:59:59";
+	}
+
+	/**
+	 * 获取过去7天内的日期数组
+	 * @return  日期数组
+	 */
+	public static ArrayList<String> pastDay(String time){
+		ArrayList<String> pastDaysList = new ArrayList<>();
+		try {
+			//我这里传来的时间是个string类型的,所以要先转为date类型的。
+			SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd");
+			Date date = sdf.parse(time);
+			for (int i = 6; i >= 0; i--) {
+				pastDaysList.add(getPastDate(i,date));
+			}
+		}catch (ParseException e){
+			e.printStackTrace();
+		}
+		return pastDaysList;
+	}
+
+	/**
+	 * 获取过去第几天的日期
+	 *
+	 * @param past
+	 * @return
+	 */
+	public static String getPastDate(int past,Date date) {
+		Calendar calendar = Calendar.getInstance();
+		calendar.setTime(date);
+		calendar.set(Calendar.DATE, calendar.get(Calendar.DATE) - past);
+		Date today = calendar.getTime();
+		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+		return sdf.format(today);
+	}
+}
diff --git a/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/parcel/vo/ConditionVo.java b/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/parcel/vo/ConditionVo.java
index 3be6368..cc98f2b 100644
--- a/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/parcel/vo/ConditionVo.java
+++ b/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/parcel/vo/ConditionVo.java
@@ -1,5 +1,6 @@
 package org.springblade.jfpt.parcel.vo;
 
+import io.swagger.models.auth.In;
 import lombok.Data;
 
 import java.io.Serializable;
@@ -14,4 +15,9 @@
 	 * 结束时间
 	 */
 	private String endDate;
+
+	/**
+	 * 状态码 0:本天    1:本周   2:本月
+	 */
+	private Integer status;
 }

--
Gitblit v1.9.3