Explorar el Código

增加停车场24小时历史数据厕所每日统计

wanxinliang hace 2 años
padre
commit
3888230ede

+ 4 - 0
src/main/java/com/template/api/ParkingControllerAPI.java

@@ -38,4 +38,8 @@ public interface ParkingControllerAPI {
     @GetMapping("/getParkingInfoById")
     @ApiOperation(value = "根据id查询停车场详细信息", notes = "根据id查询停车场详细信息", httpMethod = "GET")
     CommonResult getParkingInfoById(String id);
+
+    @GetMapping("/getParkingInfoByTime")
+    @ApiOperation(value = "同步停车场实时数据", notes = "同步停车场实时数据", httpMethod = "GET")
+    CommonResult getParkingInfoByTime(String dayId);
 }

+ 41 - 2
src/main/java/com/template/controller/ParkingController.java

@@ -4,12 +4,18 @@ package com.template.controller;
 import com.template.annotation.PassToken;
 import com.template.api.HotelControllerAPI;
 import com.template.api.ParkingControllerAPI;
+import com.template.common.utils.TimeExchange;
 import com.template.mapper.HotelMapper;
 import com.template.mapper.ParkingMapper;
 import com.template.model.result.CommonResult;
+import com.template.scheduled.ScheduledService;
+import org.apache.commons.lang3.time.DateUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
@@ -28,6 +34,8 @@ public class ParkingController implements ParkingControllerAPI {
     private ParkingMapper parkingMapper;
 
 
+
+
     @Override
     @PassToken
     public CommonResult getParkingCount() {
@@ -73,9 +81,40 @@ public class ParkingController implements ParkingControllerAPI {
     public CommonResult getParkingInfoById(String id) {
         List<Map<String, String>> parkingInfoById= parkingMapper.getParkingInfoById(id);
         if(parkingInfoById.isEmpty()){
-            return CommonResult.fail("数据为空");
+            return CommonResult.fail("实时数据为空");
+        }
+        SimpleDateFormat sp = new SimpleDateFormat("yyyy-MM-dd HH");
+        String endTime=sp.format(new Date());
+        String startTime= sp.format(DateUtils.addHours(new Date(), -24));
+        List<Map<String, String>> parkingInfoHis = parkingMapper.getParkingInfoHis(id, startTime, endTime);
+        Map<String, Object> resultMap=new HashMap<>();
+        resultMap.put("parkingInfo",parkingInfoById);
+        resultMap.put("parkingHistory",parkingInfoHis);
+        return CommonResult.ok(resultMap);
+    }
+
+    @Override
+    @PassToken
+    public CommonResult getParkingInfoByTime(String dayId) {
+
+        try {
+            TimeExchange.StringToDate(dayId,"yyyy-MM-dd HH");
+        } catch (Exception e) {
+            e.printStackTrace();
+            return CommonResult.fail(dayId+"日期格式不符yyyy-MM-dd HH");
+        }
+        String result=this.getParkingInfo(dayId);
+        return CommonResult.ok(result);
+    }
+
+    public String getParkingInfo(String dayId) {
+
+        if(dayId!=null&&dayId!=""){
+            SimpleDateFormat sp = new SimpleDateFormat("yyyy-MM-dd HH");
+            dayId=sp.format(new Date());
         }
-        return CommonResult.ok(parkingInfoById);
+        int a= parkingMapper.getTrendByTime(dayId);
+        return "停车场实时数据同步结束,当前账期"+dayId+" 更新了"+a+"条数据";
     }
 }
 

+ 2 - 1
src/main/java/com/template/controller/ToiletBaseController.java

@@ -94,7 +94,8 @@ public class ToiletBaseController implements ToiletBaseControllerAPI {
         }
         Map<String, Object> resultMap=new HashMap<>();
         resultMap.put("ToiletCount",ToiletCount);
-        resultMap.put("intoNumTotal",intoNum);
+       Long intoNumTotal= toiletBaseMapper.getToiletBaseInfoHis();
+        resultMap.put("intoNumTotal",intoNumTotal);
         resultMap.put("intoNum",intoNum);
         return CommonResult.ok(resultMap);
     }

+ 10 - 2
src/main/java/com/template/mapper/ParkingMapper.java

@@ -38,7 +38,15 @@ public interface ParkingMapper {
             "where pdfs .third_open_id =pi2.third_open_id and pi2.id=#{id}")
     List<Map<String,String>> getParkingInfoById(@Param("id") String id);
 
-    @Select("")
-    List<Map<String,String>> get7Trend(@Param("id") String id);
+    @Select("INSERT INTO parking_data_for_server_tmp (day_id,third_open_id,num_of_total,number_of_remainder, `status`,update_time) \n" +
+            "SELECT #{dayId},third_open_id,num_of_total,number_of_remainder, `status`,update_time FROM \n" +
+            "disease_command.parking_data_for_server02 \n")
+    Integer getTrendByTime(@Param("dayId") String dayId);
+
+    @Select("SELECT pdfs.day_id ,pdfs.num_of_total,pdfs.number_of_remainder,pdfs.third_open_id ,pi2.id\n" +
+            "            FROM parking_data_for_server_tmp pdfs ,parking_info pi2 \n" +
+            "            WHERE pdfs .third_open_id =pi2.third_open_id AND pi2.id=#{id}\n" +
+            "            AND pdfs.day_id >#{startTime} AND pdfs.day_id <=#{endTime}")
+    List<Map<String,String>> getParkingInfoHis(@Param("id") String id,@Param("startTime") String start,@Param("endTime") String endTime);
 
 }

+ 5 - 0
src/main/java/com/template/mapper/ToiletBaseMapper.java

@@ -22,5 +22,10 @@ public interface ToiletBaseMapper {
     @Select("select id,name from disease_command.toilet_base tb  where third_open_flag is not null\n")
     List<Map<String,String>> getToiletBaseInfo();
 
+    @Select("INSERT INTO toilet_base_tmp (day_id,num) VALUES(#{dayId},#{num})")
+    Integer insertToiletBaseInfoHis(@Param("dayId") String dayId,@Param("num") String num);
+
+    @Select("select sum(num) toilet_base_tmp")
+    Long getToiletBaseInfoHis();
 
 }

+ 55 - 1
src/main/java/com/template/scheduled/ScheduledService.java

@@ -1,5 +1,6 @@
 package com.template.scheduled;
 
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -9,7 +10,9 @@ import com.template.common.utils.TimeExchange;
 import com.template.common.utils.TimeExchange2;
 import com.template.config.MySecurity;
 import com.template.mapper.BookingMapper;
+import com.template.mapper.ParkingMapper;
 import com.template.mapper.SmsCodeMapper;
+import com.template.mapper.ToiletBaseMapper;
 import com.template.model.pojo.SmsCode;
 import com.template.model.pojo.SystemUser;
 import com.template.model.result.CommonResult;
@@ -19,11 +22,15 @@ import lombok.extern.slf4j.Slf4j;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.http.ResponseEntity;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
 import org.springframework.stereotype.Controller;
 import org.springframework.stereotype.Service;
+import org.springframework.web.client.RestTemplate;
 
+import java.text.SimpleDateFormat;
 import java.time.LocalDateTime;
 import java.util.*;
 
@@ -51,6 +58,15 @@ public class ScheduledService {
     private BookingMapper bookingMapper;
 
     @Autowired
+    private ParkingMapper parkingMapper;
+
+    @Autowired
+    private ToiletBaseMapper toiletBaseMapper;
+
+    @Value("${diseaseRightUrl}")
+    String url;
+
+    @Autowired
     MySecurity mySecurity;
 
     private static final int MAX_JSON_STRING = 40;
@@ -63,7 +79,7 @@ public class ScheduledService {
         return CommonResult.ok();
     }
 
-    //定时生成民宿定单假数据
+    //定时生成民宿定单假数据 每天1点
     @Scheduled(cron="0 0 1 * * ? ")
     public void createBooking() {
 
@@ -114,5 +130,43 @@ public class ScheduledService {
         logger.info("定单生成结束,当前时间"+TimeExchange.getTime());
     }
 
+    //定时保存停车场实时数据 每小时一次
+    @Scheduled(cron="0 1 * * * ? ")
+    public void getParkingInfoScheduled() {
+        SimpleDateFormat sp = new SimpleDateFormat("yyyy-MM-dd HH");
+        String dayId=sp.format(new Date());
+        int a= parkingMapper.getTrendByTime(dayId);
+        logger.info("停车场实时数据同步结束,当前账期"+dayId+" 更新了"+a+"条数据");
+    }
 
+    //定时保存停车场实时数据 每天23:58一次
+    @Scheduled(cron="0 58 23 * * ? ")
+    public void getToiletBaseScheduled() throws Exception {
+        RestTemplate client = new RestTemplate();
+        SimpleDateFormat sp = new SimpleDateFormat("yyyy-MM-dd");
+        String dayId=sp.format(new Date());
+        List<Map<String, String>> toiletBaseInfo = toiletBaseMapper.getToiletBaseInfo();
+        int intoNum=0;
+        if(!toiletBaseInfo.isEmpty()){
+            for (Map<String, String> infoMap:toiletBaseInfo) {
+                String id=String.valueOf(infoMap.get("id"));
+                ResponseEntity<String> responseEntity = client.getForEntity(url+id, String.class);
+                String body = responseEntity.getBody();
+                if (!responseEntity.getStatusCode().is2xxSuccessful()) {
+                    continue;
+                }
+                if ("false".equals(JSONObject.parseObject(body).getString("success"))) {
+                    throw new Exception("请求实时数据异常:"+JSONObject.parseObject(body).getString("message"));
+                }
+                JSONObject jsonObject=JSONObject.parseObject(body).getJSONObject("data");
+                //入流量
+                int dataOfMan=jsonObject.getJSONObject("dataOfMan").getInteger("intoNum");
+                int dataOfWoman=jsonObject.getJSONObject("dataOfWoman").getInteger("intoNum");
+                int dataOfThird=jsonObject.getJSONObject("dataOfThird").getInteger("intoNum");
+                intoNum=intoNum+dataOfMan+dataOfWoman+dataOfThird;
+            }
+        }
+        int a=toiletBaseMapper.insertToiletBaseInfoHis(dayId,String.valueOf(intoNum));
+        logger.info("实时数据同步结束,当前账期"+dayId+" 更新了"+a+"条数据");
+    }
 }