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); } 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)); } } 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); } 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()); } } blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/parcel/util/DateUtils.java
New file @@ -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); } } 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; }