南昌市物联网技防平台-后台
Administrator
2021-03-11 6716cdf53d0fe3e0f84fb69b22ec89a1e07d85b5
包裹数接口返回修改
5 files modified
1 files added
316 ■■■■■ changed files
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/JfptApplication.java 2 ●●● patch | view | raw | blame | history
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/parcel/controller/ParcelController.java 27 ●●●● patch | view | raw | blame | history
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/parcel/service/ParcelService.java 7 ●●●●● patch | view | raw | blame | history
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/parcel/service/impl/ParcelServiceImpl.java 147 ●●●● patch | view | raw | blame | history
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/parcel/util/DateUtils.java 127 ●●●●● patch | view | raw | blame | history
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/parcel/vo/ConditionVo.java 6 ●●●●● patch | view | raw | blame | history
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;
}