Levi.u преди 4 години
родител
ревизия
1009a6212e

+ 1 - 1
src/main/java/com/ebei/screen/common/util/ParkUtils.java

@@ -267,7 +267,7 @@ public class ParkUtils {
     }
 
     /**
-     * 给eba项目排序
+     * 给车场项目排序
      *
      * @param list
      * @return

+ 28 - 0
src/main/java/com/ebei/screen/controller/park/ParkSystemController.java

@@ -1,7 +1,9 @@
 package com.ebei.screen.controller.park;
 
+import com.ebei.screen.common.constants.CommonConstants;
 import com.ebei.screen.common.response.ResponseBean;
 import com.ebei.screen.modules.req.*;
+import com.ebei.screen.service.EbaSystemService;
 import com.ebei.screen.service.ParkSystemService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -22,6 +24,8 @@ public class ParkSystemController {
     @Autowired
     private ParkSystemService parkSystemService;
 
+    @Autowired
+    private EbaSystemService ebaSystemService;
 
     @ApiOperation("车场信息数据推送")
     @PostMapping("/parkInfo")
@@ -71,6 +75,12 @@ public class ParkSystemController {
         return parkSystemService.getTodayFlowAnalysisByPage(params);
     }
 
+    @ApiOperation("今日车场流量分析分页查询折线 ✔")
+    @PostMapping("/getTodayFlowAnalysisByLine")
+    public ResponseBean getTodayFlowAnalysisByLine(@RequestBody FlowAnalysisReq params) {
+        return parkSystemService.getTodayFlowAnalysisByLine(params);
+    }
+
     @ApiOperation("入场车辆通车时间段统计查询 ✔")
     @PostMapping("/inCarAnalysis")
     public ResponseBean inCarAnalysis(@RequestBody InCarAnalysisReq params) {
@@ -101,6 +111,12 @@ public class ParkSystemController {
         return parkSystemService.keyIndex(parkCode);
     }
 
+    @ApiOperation("关键指标分页查询详情 ✔")
+    @PostMapping("/keyIndexByPage")
+    public ResponseBean keyIndexByPage(@RequestBody KeyIndexPageReq params) {
+        return parkSystemService.keyIndexByPage(params);
+    }
+
     @ApiOperation("不同收费方式停车统计查询 ✔")
     @PostMapping(value = {"/differentPay/{parkCode}", "/differentPay"})
     public ResponseBean differentPay(@PathVariable(required = false) String parkCode) {
@@ -119,6 +135,12 @@ public class ParkSystemController {
         return parkSystemService.exceptionAnalysis(parkCode);
     }
 
+    @ApiOperation("获取crm项目列表 ✔")
+    @PostMapping("/getCrmProjectList")
+    public ResponseBean getCrmProjectList() {
+        return ebaSystemService.getCrmProjectList(CommonConstants.PARK_ORDER);
+    }
+
     @ApiOperation("查询已配置的crm项目列表 ✔")
     @PostMapping("/getShowProjectList")
     public ResponseBean getShowProjectList() {
@@ -131,5 +153,11 @@ public class ParkSystemController {
         return parkSystemService.deleteRelevance(ebeiProjectId);
     }
 
+    @ApiOperation("获取项目列表 ✔")
+    @PostMapping("/getProjectList")
+    public ResponseBean getProjectList() {
+        return parkSystemService.getProjectList();
+    }
+
 
 }

+ 3 - 0
src/main/java/com/ebei/screen/modules/req/FlowAnalysisReq.java

@@ -28,4 +28,7 @@ public class FlowAnalysisReq extends BasePageBean implements Serializable {
 
     @ApiModelProperty(value = "1入场 2出场 3异常")
     private Integer type;
+
+    @ApiModelProperty(value = "时间段 0, 3, 6, 9, 12, 15, 18, 21, 23")
+    private Integer timeIndex;
 }

+ 28 - 0
src/main/java/com/ebei/screen/modules/req/KeyIndexPageReq.java

@@ -0,0 +1,28 @@
+package com.ebei.screen.modules.req;
+
+import com.ebei.screen.common.response.BasePageBean;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.springframework.stereotype.Component;
+
+import java.io.Serializable;
+
+/**
+ * 关键指标统计
+ *
+ * @author Levi.u
+ * @date 2021/3/24 15:10
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Component
+public class KeyIndexPageReq extends BasePageBean implements Serializable {
+
+
+    private static final long serialVersionUID = 4868017539535074353L;
+    @ApiModelProperty(value = "停车场编号 查询全部传空")
+    private String parkCode;
+}

+ 22 - 0
src/main/java/com/ebei/screen/service/ParkSystemService.java

@@ -157,4 +157,26 @@ public interface ParkSystemService {
     ResponseBean deleteRelevance(String ebeiProjectId);
 
 
+    /**
+     * 获取项目列表
+     *
+     * @return
+     */
+    ResponseBean getProjectList();
+
+    /**
+     * 今日车场流量分析分页查询折线
+     *
+     * @param params
+     * @return
+     */
+    ResponseBean getTodayFlowAnalysisByLine(FlowAnalysisReq params);
+
+    /**
+     * 关键指标分页查询详情
+     *
+     * @param params
+     * @return
+     */
+    ResponseBean keyIndexByPage(KeyIndexPageReq params);
 }

+ 2 - 0
src/main/java/com/ebei/screen/service/impl/EbaSystemServiceImpl.java

@@ -639,6 +639,8 @@ public class EbaSystemServiceImpl implements EbaSystemService {
             nowCrmProjectSort = EbaUtils.getNowCrmProjectSort(projectLists, CommonConstants.ZHIHUI_ORDER);
         } else if (CommonConstants.WUYE_ORDER.equals(key)) {
             nowCrmProjectSort = EbaUtils.getNowCrmProjectSort(projectLists, CommonConstants.WUYE_ORDER);
+        }else if(CommonConstants.PARK_ORDER.equals(key)){
+            nowCrmProjectSort = EbaUtils.getNowCrmProjectSort(projectLists, CommonConstants.PARK_ORDER);
         }
         List<String> finalNowCrmProjectSort = nowCrmProjectSort;
         Collections.sort(projectLists, Comparator.comparingInt(o -> CollUtil.isNotEmpty(finalNowCrmProjectSort) ? finalNowCrmProjectSort.indexOf(o.get("projectId").toString()) : 0));

+ 93 - 2
src/main/java/com/ebei/screen/service/impl/ParkSystemServiceImpl.java

@@ -228,6 +228,45 @@ public class ParkSystemServiceImpl implements ParkSystemService {
         return ResponseBuilder.ok(Levi.by("inCount", inCountResult.get()).set("outCount", outCountResult.get()).set("inPercent", EnergyUtils.getPercent(inCountResult.get().doubleValue(), inCountOldResult.get().doubleValue())).set("outPercent", EnergyUtils.getPercent(outCountResult.get().doubleValue(), outCountOldResult.get().doubleValue())).set("list", result));
     }
 
+    /**
+     * 今日车场流量分析分页查询折线
+     *
+     * @param params
+     * @return
+     */
+    @Override
+    public ResponseBean getTodayFlowAnalysisByLine(FlowAnalysisReq params) {
+        String parkCode = params.getParkCode();
+        Integer type = params.getType();
+        Integer timeIndex = params.getTimeIndex();
+        List<Integer> indexs = Arrays.asList(0, 3, 6, 9, 12, 15, 18, 21, 23);
+        if (!indexs.contains(timeIndex)) {
+            return ResponseBuilder.fail("暂不支持该时间段查询");
+        }
+        if (type != 1 && type != 2 && type != 3) {
+            return ResponseBuilder.fail("类型只能为入场、出场、异常");
+        }
+        List<String> parkCodeList = Arrays.asList(parkCode);
+        if (StringUtils.isBlank(parkCode)) {
+            parkCodeList = ParkUtils.getParkCodeList();
+        }
+        List<Map> results = new ArrayList<>();
+        parkCodeList.forEach(code -> {
+            String format = LocalDateTimeUtil.format(LocalDateTime.now(), DatePattern.PURE_DATE_PATTERN);
+            JSONObject obj = mongoTemplate.findById(code + "_" + format, JSONObject.class, ParkType.getTypeByNo(type).getCode());
+            if (obj == null) {
+                return;
+            }
+            List<Map> maps = obj.getJSONArray("data").toJavaList(Map.class);
+            results.addAll((List<Map>) maps.get(timeIndex).get("data"));
+        });
+        List<Map> maps = ParkUtils.sortDateList(results, ParkType.getTypeByNo(type).getSort(), true);
+        Supplier<Stream<Map>> resStream = () -> maps.stream();
+        List<Map> resultsList = resStream.get().skip((params.getPageNum() - 1) * params.getPageSize()).limit(params.getPageSize()).collect(Collectors.toList());
+        return ResponseBuilder.ok(PageBean.<Map>builder().total(resStream.get().count()).row(resultsList).build());
+    }
+
+
     /**
      * 今日车场流量分析分页查询详情
      *
@@ -369,8 +408,10 @@ public class ParkSystemServiceImpl implements ParkSystemService {
         if (StringUtils.isBlank(parkCode)) {
             parkCodeList = ParkUtils.getParkCodeList();
         }
+        List<String> idsStr = Arrays.asList("1-3h", "3-6h", "6-9h", "9-12h", "12h以上");
         List<String> ids = Arrays.asList("1", "3", "6", "9", "12");
         Levi<String, Integer> result = Levi.create();
+        List<Levi> results = new ArrayList<>();
         ids.forEach(x -> result.set("count" + x, 0));
         parkCodeList.forEach(code -> {
             String format = LocalDateTimeUtil.format(LocalDateTime.now(), DatePattern.PURE_DATE_PATTERN);
@@ -380,7 +421,10 @@ public class ParkSystemServiceImpl implements ParkSystemService {
             }
             ids.forEach(x -> result.set("count" + x, result.get("count" + x) + obj.getInteger("count" + x)));
         });
-        return ResponseBuilder.ok(result);
+        for (int i = 0; i < ids.size(); i++) {
+            results.add(Levi.by("time", idsStr.get(i)).set("value", result.getInt("count" + ids.get(i))));
+        }
+        return ResponseBuilder.ok(results);
     }
 
     /**
@@ -453,6 +497,41 @@ public class ParkSystemServiceImpl implements ParkSystemService {
         return ResponseBuilder.ok(result);
     }
 
+
+    /**
+     * 关键指标分页查询详情
+     *
+     * @param params
+     * @return
+     */
+    @Override
+    public ResponseBean keyIndexByPage(KeyIndexPageReq params) {
+        String parkCode = params.getParkCode();
+        List<String> parkCodeList = Arrays.asList(parkCode);
+        if (StringUtils.isBlank(parkCode)) {
+            parkCodeList = ParkUtils.getParkCodeList();
+        }
+        Levi<String, String> parkCodeMap = ParkUtils.initParkCodeList();
+        List<Map> list = new ArrayList<>();
+        JSONObject obj = mongoTemplate.findById("parkSpaceLatest", JSONObject.class, "parkSpace");
+        if (obj != null) {
+            JSONObject data = obj != null ? obj.getJSONObject("data") : new JSONObject();
+            parkCodeList.forEach(code -> {
+                if (data.getJSONObject(code) != null) {
+                    JSONObject jsonObject = data.getJSONObject(code);
+                    Levi set = Levi.by("parkName", parkCodeMap.get(code)).set("tcwds", jsonObject.getInteger("totalSpace")).set("kxcws", jsonObject.getInteger("remainSpace")).set("yzcws", jsonObject.getInteger("totalSpace") - jsonObject.getInteger("remainSpace"));
+                    set.set("cwzzl", EnergyUtils.getPercent(Double.parseDouble(set.getStr("yzcws")), Double.parseDouble(set.getStr("tcwds"))));
+                    list.add(set);
+                } else {
+                    list.add(Levi.by("parkName", parkCodeMap.get(code)).set("tcwds", 0).set("kxcws", 0).set("yzcws", 0).set("cwzzl", "0%"));
+                }
+            });
+        }
+        Supplier<Stream<Map>> resStream = () -> list.stream();
+        List<Map> resultsList = resStream.get().skip((params.getPageNum() - 1) * params.getPageSize()).limit(params.getPageSize()).collect(Collectors.toList());
+        return ResponseBuilder.ok(PageBean.<Map>builder().total(resStream.get().count()).row(resultsList).build());
+    }
+
     /**
      * 不同收费方式停车统计
      *
@@ -477,7 +556,7 @@ public class ParkSystemServiceImpl implements ParkSystemService {
         });
         Map<String, List<Map>> payType = result.stream().collect(Collectors.groupingBy(x -> x.get("payType").toString()));
         result.clear();
-        payType.keySet().forEach(x -> result.add(Levi.by("name", PayTypeCode.getTypeByCode(x)).set("code", x).set("count", payType.get(x).size())));
+        payType.keySet().forEach(x -> result.add(Levi.by("name", StringUtils.isNotBlank(PayTypeCode.getTypeByCode(x)) ? PayTypeCode.getTypeByCode(x) : "未知方式").set("code", x).set("count", payType.get(x).size())));
         return ResponseBuilder.ok(result);
     }
 
@@ -563,4 +642,16 @@ public class ParkSystemServiceImpl implements ParkSystemService {
         return ResponseBuilder.ok("删除成功");
     }
 
+    /**
+     * 获取项目列表
+     *
+     * @return
+     */
+    @Override
+    public ResponseBean getProjectList() {
+        Levi<String, String> map = ParkUtils.initParkCodeList();
+        List<Levi> result = map.keySet().stream().map(key -> Levi.by("parkName", map.get(key)).set("parkCode", key)).collect(Collectors.toList());
+        return ResponseBuilder.ok(result);
+    }
+
 }

+ 1 - 1
src/main/resources/application-dev.yml

@@ -8,7 +8,7 @@ spring:
   data:
     mongodb:
       database: eaglescreen
-      host: 127.0.0.1
+      host: 172.18.0.23
       port: 27017
       username: root
       password: admin