From 1b5578be64dbd09144a1d102096cf04f85f728a9 Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期四, 29 二月 2024 18:33:46 +0800
Subject: [PATCH] 整理

---
 admin/src/views/business/carEvent.vue                                                                             |    8 
 admin/src/components/business/OperaCarEventHkWindow.vue                                                           |  173 +++++++++++++++++++
 server/dmvisit_service/src/main/java/com/doumee/core/haikang/service/HKService.java                               |   18 ++
 server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKConstants.java                               |    2 
 server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/ParkCrossRecordInfoResponse.java |   37 ++++
 server/dmvisit_service/src/main/resources/application-testYL.yml                                                  |    3 
 server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKTools.java                                   |   11 +
 server/dmvisit_admin/src/main/resources/application.yml                                                           |    2 
 server/dmvisit_screen/src/main/java/com/doumee/service/impl/ScreenServiceImpl.java                                |   42 +++-
 server/dmvisit_service/src/main/java/com/doumee/service/business/ext/HkSyncService.java                           |    1 
 server/dmvisit_service/src/main/java/com/doumee/dao/business/model/Visits.java                                    |    4 
 server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/ParkCrossRecordListRequest.java  |   13 +
 server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/TimeRangeListRequest.java        |   11 +
 server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncParkServiceImpl.java           |  140 +++++++++++++++
 server/dmvisit_admin/src/main/java/com/doumee/api/business/CarEventController.java                                |   13 +
 admin/src/api/business/carEvent.js                                                                                |    4 
 server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncBaseServiceImpl.java           |    4 
 17 files changed, 462 insertions(+), 24 deletions(-)

diff --git a/admin/src/api/business/carEvent.js b/admin/src/api/business/carEvent.js
index 60df117..f3959bd 100644
--- a/admin/src/api/business/carEvent.js
+++ b/admin/src/api/business/carEvent.js
@@ -14,3 +14,7 @@
     download: true
   })
 }
+
+export function syncByDate (data) {
+  return request.post('/business/carEvent/syncByDate', data)
+}
diff --git a/admin/src/components/business/OperaCarEventHkWindow.vue b/admin/src/components/business/OperaCarEventHkWindow.vue
new file mode 100644
index 0000000..d42bf43
--- /dev/null
+++ b/admin/src/components/business/OperaCarEventHkWindow.vue
@@ -0,0 +1,173 @@
+<template>
+  <GlobalWindow
+      :title="title"
+      width="500px"
+      :visible.sync="visible"
+      :confirm-working="isWorking"
+      @confirm="confirm"
+  >
+    <el-form :model="form" ref="form" :rules="rules" >
+      <el-form-item label="鍚屾鏃ユ湡" prop="createDate">
+        <el-date-picker
+            v-model="form.createDate"
+            format="yyyy-MM-dd"
+            value-format="yyyy-MM-dd HH:ss:mm"
+            type="date">
+        </el-date-picker>
+      </el-form-item>
+    </el-form>
+  </GlobalWindow>
+</template>
+
+<script>
+import BaseOpera from '@/components/base/BaseOpera'
+import GlobalWindow from '@/components/common/GlobalWindow'
+import { syncByDate } from '@/api/business/carEvent'
+export default {
+  name: 'OperaVisitsHkWindow',
+  extends: BaseOpera,
+  components: { GlobalWindow },
+  data () {
+    return {
+      form:{createDate: null},
+      rules: {
+        createDate: [
+          { required: true, message: '璇烽�夋嫨鏃ユ湡', trigger: 'blur' }
+        ]
+      }
+    }
+  },
+  methods: {
+    open(title){
+      this.visible=true
+      this.title=title
+    },
+    // 鍚屾淇℃伅
+    confirm () {
+
+      this.$refs.form.validate((valid) => {
+        if (!valid) {
+          return
+        }
+        // 璋冪敤鏂板缓鎺ュ彛
+        this.isWorking = true
+        syncByDate({
+          createDate: this.form.createDate
+        })
+          .then(() => {
+            this.visible = false
+            this.$tip.apiSuccess('鍚屾鎴愬姛')
+            this.$emit('success')
+          })
+          .catch(e => {
+            this.$tip.apiFailed(e)
+          })
+          .finally(() => {
+            this.isWorking = false
+          })
+      })
+    }
+  }
+}
+</script>
+<style>
+    .el-image-viewer__wrapper {
+        z-index: 3000 !important;
+    }
+</style>
+<style lang="scss" scoped>
+    .list {
+        width: 100%;
+        display: flex;
+        flex-direction: column;
+        .list_item {
+            width: 100%;
+            margin-bottom: 30px;
+            &:last-child {
+                margin-bottom: 0 !important;
+            }
+            .list_item_label {
+                font-size: 18px;
+                font-weight: 600;
+                color: #000000;
+                margin-bottom: 15px;
+            }
+            .list_item_info {
+                font-size: 14px;
+                color: #222222;
+                margin-bottom: 10px;
+            }
+            .list_item_status {
+                width: 100%;
+                display: flex;
+                flex-direction: column;
+                .list_item_status_item {
+                    width: 100%;
+                    max-height: 100px;
+                    position: relative;
+                    margin-bottom: 30px;
+                    .dian {
+                        width: 15px;
+                        height: 15px;
+                        border-radius: 50%;
+                        background: #ffb447;
+                        position: absolute;
+                        left: 0;
+                        top: 50%;
+                        transform: translate(0, -50%);
+                    }
+                    .xian {
+                        width: 1px;
+                        height: calc(100% + 30px);
+                        background: #ffb447;
+                        position: absolute;
+                        top: 50%;
+                        left: 7px;
+                        transform: translate(-50%, 0);
+                    }
+                    .status_info {
+                        /*width: 100%;*/
+                        height: 100%;
+                        display: flex;
+                        flex-direction: column;
+                        margin-left: 30px;
+                        box-sizing: border-box;
+                        .status_info_a {
+                            font-size: 16px;
+                            color: black;
+                            margin-bottom: 10px;
+                        }
+                        .status_info_b {
+                            font-size: 13px;
+                            color: #666666;
+                            margin-bottom: 10px;
+                        }
+                        .status_info_c {
+                            padding: 5px 10px;
+                            background: #ececec;
+                            font-size: 13px;
+                            color: black;
+                            border-radius: 5px;
+                            box-sizing: border-box;
+                        }
+                    }
+                }
+            }
+            .list_item_val {
+                width: 100%;
+                margin-bottom: 15px;
+                &:last-child {
+                    margin-bottom: 0 !important;
+                }
+                .list_item_val_item {
+                    font-size: 14px;
+                    color: #222222;
+                    margin-bottom: 5px;
+                    &:last-child {
+                        margin-bottom: 0 !important;
+                    }
+                }
+            }
+        }
+    }
+</style>
diff --git a/admin/src/views/business/carEvent.vue b/admin/src/views/business/carEvent.vue
index c925a69..baf8d1e 100644
--- a/admin/src/views/business/carEvent.vue
+++ b/admin/src/views/business/carEvent.vue
@@ -51,7 +51,8 @@
         <!-- 琛ㄦ牸鍜屽垎椤� -->
         <template v-slot:table-wrap>
             <ul class="toolbar" v-permissions="['business:carevent:exportExcel']">
-                <li><el-button type="primary" :loading="isWorking.export" v-permissions="['business:carevent:exportExcel']" @click="exportExcel">瀵煎嚭</el-button></li>
+              <li><el-button type="primary"   v-permissions="['business:carevent:sync']" @click="$refs.OperaCarEventHkWindow.open('鍚屾杩囪溅璁板綍')">鍚屾</el-button></li>
+              <li><el-button type="primary" :loading="isWorking.export" v-permissions="['business:carevent:exportExcel']" @click="exportExcel">瀵煎嚭</el-button></li>
             </ul>
             <el-table
                 v-loading="isWorking.search"
@@ -108,6 +109,8 @@
                 :pagination="tableData.pagination"
             >
             </pagination>
+
+          <OperaCarEventHkWindow ref="OperaCarEventHkWindow" @success="search()" />
         </template>
     </TableLayout>
 </template>
@@ -116,11 +119,12 @@
 import BaseTable from '@/components/base/BaseTable'
 import TableLayout from '@/layouts/TableLayout'
 import Pagination from '@/components/common/Pagination'
+import OperaCarEventHkWindow from '@/components/business/OperaCarEventHkWindow'
 import { timeForMat } from '@/utils/util'
 export default {
   name: 'CarEvent',
   extends: BaseTable,
-  components: { TableLayout, Pagination },
+  components: { TableLayout, Pagination ,OperaCarEventHkWindow},
   data () {
     return {
       // 鎼滅储
diff --git a/server/dmvisit_admin/src/main/java/com/doumee/api/business/CarEventController.java b/server/dmvisit_admin/src/main/java/com/doumee/api/business/CarEventController.java
index 717c587..19e8665 100644
--- a/server/dmvisit_admin/src/main/java/com/doumee/api/business/CarEventController.java
+++ b/server/dmvisit_admin/src/main/java/com/doumee/api/business/CarEventController.java
@@ -10,12 +10,14 @@
 import com.doumee.dao.business.model.CarEvent;
 import com.doumee.dao.system.vo.CarEventVo;
 import com.doumee.service.business.CarEventService;
+import com.doumee.service.business.impl.hksync.HkSyncParkServiceImpl;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 import javax.servlet.http.HttpServletResponse;
+import javax.swing.event.CaretEvent;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -28,6 +30,9 @@
 @RestController
 @RequestMapping("/business/carEvent")
 public class CarEventController extends BaseController {
+
+    @Autowired
+    private HkSyncParkServiceImpl hkSyncParkService;
 
     @Autowired
     private CarEventService carEventService;
@@ -83,7 +88,13 @@
 //        ExcelExporter.build(CarEventVo.class).exportWithFirstAndEnd (carEventService.findPageExcel(pageWrap),"鍋滆溅鍦轰簨浠舵帹閫佽褰曡〃", null, "鍋滆溅鍦轰簨浠舵帹閫佽褰曞鍑烘姤琛�",null , response);
         ExcelExporter.build(CarEventDTO.class).export(carEventService.findVisitCarPage(pageWrap).getRecords(), "鍋滆溅鍦轰簨浠舵帹閫佽褰曡〃", response);
     }
-
+    @ApiOperation("鏍规嵁鏃ユ湡(starttime)鍚屾杩囪溅鏁版嵁")
+    @PostMapping("/syncByDate")
+    @RequiresPermissions("business:carevent:sync")
+    public ApiResponse syncByDate(@RequestBody CarEvent param) {
+        hkSyncParkService.syncParkRecords(param.getCreateDate());
+        return ApiResponse.success(null);
+    }
     @ApiOperation("鏍规嵁ID鏌ヨ")
     @GetMapping("/{id}")
     @RequiresPermissions("business:carevent:query")
diff --git a/server/dmvisit_admin/src/main/resources/application.yml b/server/dmvisit_admin/src/main/resources/application.yml
index 2153ee8..f31fd8b 100644
--- a/server/dmvisit_admin/src/main/resources/application.yml
+++ b/server/dmvisit_admin/src/main/resources/application.yml
@@ -10,7 +10,7 @@
   #  application:
   #    name: doumeemes
   profiles:
-    active: testHS
+    active: devYL
 
   # JSON杩斿洖閰嶇疆
   jackson:
diff --git a/server/dmvisit_screen/src/main/java/com/doumee/service/impl/ScreenServiceImpl.java b/server/dmvisit_screen/src/main/java/com/doumee/service/impl/ScreenServiceImpl.java
index b42f62c..590c909 100644
--- a/server/dmvisit_screen/src/main/java/com/doumee/service/impl/ScreenServiceImpl.java
+++ b/server/dmvisit_screen/src/main/java/com/doumee/service/impl/ScreenServiceImpl.java
@@ -38,13 +38,13 @@
     public   CountDataResponse countData(BaseRequest param){
         MPJLambdaWrapper<Visits> queryWrapper = new MPJLambdaWrapper<>();
         queryWrapper.select("count(1) as applyTotalNum");
-        queryWrapper.select("(select count(1) from visits where TO_DAYS(create_date)=TO_DAYS(now()) and status not in(5,6,8)) as applyPassNum");
-        queryWrapper.select("(select count(1) from visits where TO_DAYS(create_date)=TO_DAYS(now()) and status in (5)) as visitInNum");
-        queryWrapper.select("(select count(1) from visits where TO_DAYS(create_date)=TO_DAYS(now()) and status in (6,8)) as visitOutNum");
+        queryWrapper.select("(select count(1) from visits where TO_DAYS(starttime)=TO_DAYS(now()) and status not in(5,6,8)) as applyPassNum");
+        queryWrapper.select("(select count(1) from visits where TO_DAYS(starttime)=TO_DAYS(now()) and status in (5)) as visitInNum");
+        queryWrapper.select("(select count(1) from visits where TO_DAYS(starttime)=TO_DAYS(now()) and status in (6,8)) as visitOutNum");
         queryWrapper.select("(select count(1) from car_event where TO_DAYS(create_date)=TO_DAYS(now()) and inout_type=0 and event_type="+ HKConstants.EventTypes.PARK_PASS_IN.getKey() +") as carInNum");
         queryWrapper.select("(select count(1) from car_event where TO_DAYS(create_date)=TO_DAYS(now()) and (inout_type !=0 ) and event_type="+ HKConstants.EventTypes.PARK_PASS_OUT.getKey() +") as carOutNum");
         queryWrapper.eq(Visits::getIsdeleted, Constants.ZERO );
-        queryWrapper.apply("TO_DAYS(create_date)=TO_DAYS(now())" );
+        queryWrapper.apply("TO_DAYS(starttime)=TO_DAYS(now())" );
         queryWrapper.last("limit 1");
         CountDataResponse vModel =visitsMapper.selectJoinOne(CountDataResponse.class,queryWrapper);
         vModel.setVisitorNum(vModel.getVisitInNum()+vModel.getVisitOutNum());//浠婃棩璁垮鎬绘暟
@@ -56,7 +56,7 @@
         wrapper.last("limit 1");
         CountDataResponse cModel =carEventMapper.selectJoinOne(CountDataResponse.class,wrapper);
         vModel.setMemberCarNum(vModel.getMemberCarNum());//浠婃棩鍛樺伐杞﹁締杩涘満鏁�
-        vModel.setMemberCarNum(vModel.getCarInNum() - vModel.getMemberCarNum());//浠婃棩棰勭害杞﹁締杩涘満鏁�
+        vModel.setVisitCarNum(vModel.getCarInNum() - vModel.getMemberCarNum());//浠婃棩棰勭害杞﹁締杩涘満鏁�
         return vModel;
     }
 
@@ -99,7 +99,7 @@
         wrapper.selectAll(VisitEvent.class) ;
         wrapper.apply("TO_DAYS(create_date)=TO_DAYS(now())" );
         wrapper.last("limit 50");
-        wrapper.orderByDesc(VisitEvent::getCreateDate);
+        wrapper.orderByDesc(VisitEvent::getStartTime);
         List<VisitEvent> result =visitEventMapper.selectList( wrapper);
         if(result!=null){
             for(VisitEvent event :result){
@@ -202,7 +202,7 @@
         MPJLambdaWrapper<CarEvent> wrapper = new MPJLambdaWrapper<>();
         wrapper.select("count(id) as num, create_date");
         wrapper.apply("TO_DAYS(create_date)+"+days+" >= TO_DAYS(now()) " );
-        wrapper.eq(CarEvent::getEventType,  HKConstants.EventTypes.PARK_LINE_IN.getKey());
+        wrapper.in(CarEvent::getEventType,  HKConstants.EventTypes.PARK_PASS_IN.getKey(), HKConstants.EventTypes.PARK_PASS_OUT.getKey());
         wrapper.groupBy("TO_DAYS(create_date)");
         wrapper.orderByDesc(CarEvent::getCreateDate);
         List<CarEvent> result =carEventMapper.selectJoinList(CarEvent.class,wrapper);
@@ -210,12 +210,22 @@
     }
     private List<VisitEvent> getVisitEventListByDays(int days) {
         MPJLambdaWrapper<VisitEvent> wrapper = new MPJLambdaWrapper<>();
-        wrapper.select("count(id) as num, create_date");
-        wrapper.apply("TO_DAYS(create_date)+"+days+" >= TO_DAYS(now()) " );
+        wrapper.select("count(id) as num, starttime");
+        wrapper.apply("TO_DAYS(starttime)+"+days+" >= TO_DAYS(now()) " );
         wrapper.eq(VisitEvent::getEventType,  HKConstants.EventTypes.VISIT_SIGN_IN.getKey());
-        wrapper.groupBy("TO_DAYS(create_date)");
+        wrapper.groupBy("TO_DAYS(starttime)");
         wrapper.orderByDesc(CarEvent::getCreateDate);
         List<VisitEvent> result =visitEventMapper.selectJoinList(VisitEvent.class,wrapper);
+        return  result;
+    }
+    private List<Visits> getVisitListByDays(int days) {
+        MPJLambdaWrapper<Visits> wrapper = new MPJLambdaWrapper<>();
+        wrapper.select("count(id) as num, starttime");
+        wrapper.apply("TO_DAYS(starttime)+"+days+" >= TO_DAYS(now()) " );
+        wrapper.in(Visits::getStatus,  5,6,7);
+        wrapper.groupBy("TO_DAYS(starttime)");
+        wrapper.orderByDesc(CarEvent::getCreateDate);
+        List<Visits> result =visitsMapper.selectJoinList(Visits.class,wrapper);
         return  result;
     }
     @Override
@@ -254,9 +264,17 @@
         }
         return 0;
     }
-    private Integer getVisistNumByDate(String s, List<VisitEvent> result) {
+    private Integer getVisistEventNumByDate(String s, List<VisitEvent> result) {
         for(VisitEvent event:result){
             if(StringUtils.equals(s,DateUtil.formatDate(event.getCreateDate(),"MM.dd"))){
+                return event.getNum();
+            }
+        }
+        return 0;
+    }
+    private Integer getVisistNumByDate(String s, List<Visits> result) {
+        for(Visits event:result){
+            if(StringUtils.equals(s,DateUtil.formatDate(event.getStarttime(),"MM.dd"))){
                 return event.getNum();
             }
         }
@@ -287,7 +305,7 @@
             times.add(DateUtil.formatDate(DateUtil.dateDayAdd(new Date(), -(days-i)+1),"MM.dd"));
             numList.add(0);
         }
-        List<VisitEvent> result = getVisitEventListByDays(days);
+        List<Visits> result = getVisitListByDays(days);
         if(result!=null&& result.size()>0){
             for (int i = 0; i < days; i++) {
                 numList.set(i,getVisistNumByDate(times.get(i),result));
diff --git a/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKConstants.java b/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKConstants.java
index 44bdb2d..fc17cc3 100644
--- a/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKConstants.java
+++ b/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKConstants.java
@@ -28,7 +28,7 @@
     public interface InterfacePath{
 //        String doorEvents = "/api/acs/v2/door/events";//闂ㄧ浜嬩欢鏌ヨ
 //        String visitEvents = "/api/visitor/v1/event/turnover/search";//璁垮浜嬩欢鏌ヨ
-//        String parkEvents = "/api/pms/v1/crossRecords/page";//鍋滆溅鍦轰簨浠舵煡璇�
+        String parkCrossRecords = "/api/pms/v1/crossRecords/page";//鍋滆溅鍦鸿繃绋嬭褰�
         String rootOrg = "/api/resource/v1/org/rootOrg";//鑾峰彇璺熺粍缁�
         String orgAllList = "/api/resource/v1/org/orgList";//鑾峰彇鍏ㄩ噺缁勭粐淇℃伅
         String userAllList = "/api/resource/v2/person/personList";//鑾峰彇鍏ㄩ噺鐢ㄦ埛鍒楄〃
diff --git a/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKTools.java b/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKTools.java
index cf3b378..9680ddc 100644
--- a/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKTools.java
+++ b/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKTools.java
@@ -684,5 +684,16 @@
 		saveInterfaceLog(body,result,path);
 		return  result;
 	}
+	/**
+	 *	鍋滆溅鍦鸿繃杞﹁褰曟煡璇�
+	 * @param body
+	 * @return
+	 */
+	public static String parkCrossRecords(String body) {
+		Map<String, String> path = getPath(HKConstants.InterfacePath.parkCrossRecords);
+		String result = ArtemisHttpUtil.doPostStringArtemis(path, body, null, null, "application/json", null);// post璇锋眰application/json绫诲瀷鍙傛暟
+		saveInterfaceLog(body,result,path);
+		return  result;
+	}
 
 }
diff --git a/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/ParkCrossRecordListRequest.java b/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/ParkCrossRecordListRequest.java
new file mode 100644
index 0000000..2ee471e
--- /dev/null
+++ b/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/ParkCrossRecordListRequest.java
@@ -0,0 +1,13 @@
+package com.doumee.core.haikang.model.param.request;
+
+import lombok.Data;
+
+@Data
+public class ParkCrossRecordListRequest {
+
+    private String startTime	;//string	True	閽堝鏇存柊鏃堕棿鐨勬煡璇㈠紑濮嬫棩鏈燂紝IOS8601鏍煎紡锛屽弬鑰冮檮褰旴 ISO8601鏃堕棿鏍煎紡璇存槑
+    private String  endTime;//	string	False	閽堝鏇存柊鏃堕棿鐨勬煡璇㈡埅姝㈡棩鏈燂紝IOS8601鏍煎紡锛屽弬鑰冮檮褰旴 ISO8601鏃堕棿鏍煎紡璇存槑
+    private Integer  pageNo	;//integer	True	椤电爜,pageNo鈮�1
+    private Integer  pageSize;//	integer	True	鍒嗛〉澶у皬
+
+}
diff --git a/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/TimeRangeListRequest.java b/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/TimeRangeListRequest.java
index bac0630..435537b 100644
--- a/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/TimeRangeListRequest.java
+++ b/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/TimeRangeListRequest.java
@@ -4,7 +4,16 @@
 
 @Data
 public class TimeRangeListRequest {
-
+  private String  parkSyscode;//	string	False	鍋滆溅搴撳敮涓�鏍囪瘑锛堟渶澶ч暱搴�64锛�  涓嶅~涓嶅皢鍏朵綔涓鸿繃婊ゆ潯浠讹紝   鍙�氳繃鑾峰彇鍋滆溅搴撳垪琛ㄦ帴鍙h幏鍙�
+    private String   entranceSyscode;//	string	False	鍑哄叆鍙e敮涓�鏍囪瘑锛堟渶澶ч暱搴�64锛�  涓嶅~涓嶅皢鍏朵綔涓鸿繃婊ゆ潯浠�
+    private String plateNo	;//string	False	杞︾墝鍙凤紙鏈�澶ч暱搴�16锛�
+    private String  cardNo	;//string	False	鍗″彿
+    private Integer  vehicleOut;//	number	False	杩涘嚭鍦烘爣璇�0-杩涘満1-鍑哄満
+    private Integer vehicleType;//	number	False	杞﹁締绫诲瀷0锛氬叾浠栬溅1锛氬皬鍨嬭溅2锛氬ぇ鍨嬭溅3锛氭懇鎵樿溅
+    private Integer  releaseResult;//	number	False	鏀捐缁撴灉0-鏈斁琛�1-姝e父鏀捐2-绂荤嚎鏀捐
+    private Integer    releaseWay;//	number	False	鏀捐鏂瑰紡10-鏈紑闂�11-鑷姩寮�闂�12-浜哄伐/浜哄伐寮�闂�13-閬ユ帶鍣ㄥ紑闂�
+    private Integer releaseReason;//	number	False	鏀捐鍘熷洜100-鍥哄畾杞﹁嚜鍔ㄦ斁琛�101-涓存椂杞﹁嚜鍔ㄦ斁琛�102-棰勭害杞﹁嚜鍔ㄦ斁琛�103-涓�鎴峰杞﹁嚜鍔ㄦ斁琛�
+    private String  carCategory	;//string	False	杞﹁締鍒嗙被9-榛戝悕鍗�10-鍥哄畾杞�11-涓存椂杞�12-棰勭害杞�14-鐗规畩杞�
     private String startTime	;//string	True	閽堝鏇存柊鏃堕棿鐨勬煡璇㈠紑濮嬫棩鏈燂紝IOS8601鏍煎紡锛屽弬鑰冮檮褰旴 ISO8601鏃堕棿鏍煎紡璇存槑
     private String  endTime;//	string	False	閽堝鏇存柊鏃堕棿鐨勬煡璇㈡埅姝㈡棩鏈燂紝IOS8601鏍煎紡锛屽弬鑰冮檮褰旴 ISO8601鏃堕棿鏍煎紡璇存槑
     private Integer  pageNo	;//integer	True	椤电爜,pageNo鈮�1
diff --git a/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/ParkCrossRecordInfoResponse.java b/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/ParkCrossRecordInfoResponse.java
new file mode 100644
index 0000000..30d1ab6
--- /dev/null
+++ b/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/ParkCrossRecordInfoResponse.java
@@ -0,0 +1,37 @@
+package com.doumee.core.haikang.model.param.respose;
+
+import lombok.Data;
+
+@Data
+public class ParkCrossRecordInfoResponse {
+
+
+
+     private String vehicleId	;//	string	False	杞﹁締ID锛堟渶澶ч暱搴�64锛�
+         private String crossRecordSyscode;//	string	False	杩囪溅璁板綍鍞竴鏍囪瘑锛堟渶澶ч暱搴�64锛�
+                  private String parkSyscode;//	string	False	鍋滆溅搴撳敮涓�鏍囪瘑锛堟渶澶ч暱搴�64锛�
+                  private String parkName	;//string	False	鍋滆溅搴撳悕绉帮紙鏈�澶ч暱搴�64锛�
+                  private String entranceSyscode	;//string	False	鍑哄叆鍙e敮涓�鏍囪瘑锛堟渶澶ч暱搴�64锛�
+                  private String entranceName;//	string	False	鍑哄叆鍙e悕绉帮紙鏈�澶ч暱搴�64锛�
+                  private String roadwaySyscode	;//string	False	杞﹂亾鍞竴鏍囪瘑
+     private String roadwayName;//	string	False	杞﹂亾鍚嶇О
+     private Integer vehicleOut	;//number	False	鏄惁鍑哄満0-杩涘満锛�1-鍑哄満
+     private Integer releaseMode	;//number	False	鏀捐妯″紡0-绂佹鏀捐锛�1-鍥哄畾杞﹀寘鏈燂紝2-涓存椂杞﹀叆鍦猴紝3-棰勭害杞﹀叆鍦猴紝10-绂荤嚎鍑哄満锛�11-缂磋垂鍑哄満锛�12-棰勪粯璐瑰嚭鍦猴紝13-鍏嶈垂鍑哄満锛�30- 闈炴硶鍗′笉鏀捐锛�31-鎵嬪姩鏀捐锛�32-鐗规畩杞﹁締鏀捐锛�33-鑺傚亣鏃ユ斁琛岋紝35-缇ょ粍鏀捐锛�36-閬ユ帶鍣ㄥ紑闂�
+     private Integer releaseResult	;//number	False	鏀捐缁撴灉0-鏈斁琛�1-姝e父鏀捐2-绂荤嚎鏀捐
+     private Integer releaseWay;//	number	False	鏀捐鏂瑰紡10-鏈紑闂�11-鑷姩寮�闂�12-浜哄伐/浜哄伐寮�闂�13-閬ユ帶鍣ㄥ紑闂�
+     private Integer releaseReason;//	number	False	鏀捐鍘熷洜锛�100-鍥哄畾杞﹁嚜鍔ㄦ斁琛�101-涓存椂杞﹁嚜鍔ㄦ斁琛�102-棰勭害杞﹁嚜鍔ㄦ斁琛�103-涓�鎴峰杞﹁嚜鍔ㄦ斁琛�
+     private String plateNo	;//string	False	杞︾墝鍙风爜锛堟渶澶ч暱搴�16锛�
+     private String cardNo	;//string	False	鍗$墖鍙风爜锛堟渶澶ч暱搴�32锛�
+     private Integer vehicleColor;//	number	False	杞﹁締棰滆壊0锛氬叾浠栭鑹诧紱1锛氱櫧鑹诧紱2锛氶摱鑹诧紱3锛氱伆鑹诧紱4锛氶粦鑹诧紱 5锛氱孩鑹诧紱  6锛氭繁钃濊壊锛� 7锛氳摑鑹诧紱8锛氶粍鑹诧紱9锛氱豢鑹诧紱10锛氭鑹诧紱 11锛氱矇鑹诧紱 12锛氱传鑹测��
+    private Integer vehicleType	;//number	False	杞﹁締绫诲瀷0锛氬叾浠栬溅锛�1锛氬皬鍨嬭溅锛�2锛氬ぇ鍨嬭溅锛�  3锛氭懇鎵樿溅
+     private Integer plateColor	;//	number	False	杞︾墝棰滆壊0:钃濊壊,1:榛勮壊,2:鐧借壊,3:榛戣壊,4:缁胯壊,5:姘戣埅榛戣壊, 255:鍏朵粬棰滆壊
+     private Integer plateType	;//	number	False	杞︾墝绫诲瀷0:鏍囧噯姘戠敤杞�,1:02寮忔皯鐢ㄨ溅,3:璀﹁溅,4:姘戠敤杞﹀弻琛屽熬鐗岃溅,5:浣块杞�,6:鍐滅敤杞�,7:鎽╂墭杞�,8:鏂拌兘婧愯溅
+     private String carCategory;//	string	False	杞﹁締鍒嗙被
+     private String carCategoryName;//	string	False	杞﹁締鍒嗙被鍚嶇О
+     private String vehiclePicUri;//	string	False	杞﹁締鍥剧墖uri锛堟渶澶ч暱搴�256锛�
+     private String plateNoPicUri;//	string	False	杞︾墝鍥剧墖uri锛堟渶澶ч暱搴�256锛�
+     private String facePicUri;//	string	False	浜鸿劯鍥剧墖uri锛堟渶澶ч暱搴�256锛�
+      private String aswSyscode	;//string	False	鍥剧墖鏈嶅姟鍞竴鏍囪瘑锛堟渶澶ч暱搴�64锛�
+      private String crossTime	;//string	False	閫氳繃鏃堕棿ISO8601鏍煎紡锛� yyyy-MM-ddTHH:mm:ss+褰撳墠鏃跺尯锛屼緥濡傚寳浜椂闂达細 2018-07-26T15:00:00+08:00 璇﹁ISO8601鍗忚瑙i噴
+     private String createTime;//	string	False	鍒涘缓鏃堕棿  ISO8601鏍煎紡锛� yyyy-MM-ddTHH:mm:ss+褰撳墠鏃跺尯锛屼緥濡傚寳浜椂闂达細  2018-07-26T15:00:00+08:00璇﹁ISO8601鍗忚瑙i噴
+}
diff --git a/server/dmvisit_service/src/main/java/com/doumee/core/haikang/service/HKService.java b/server/dmvisit_service/src/main/java/com/doumee/core/haikang/service/HKService.java
index b4c1173..633cfdf 100644
--- a/server/dmvisit_service/src/main/java/com/doumee/core/haikang/service/HKService.java
+++ b/server/dmvisit_service/src/main/java/com/doumee/core/haikang/service/HKService.java
@@ -910,6 +910,24 @@
         return  null;
     }
     /**
+     *杩囪溅璁板綍鏌ヨ锛堝垎椤碉級
+     * @return
+     */
+    public  static  BaseResponse<BaseListPageResponse<ParkCrossRecordInfoResponse>>   parkCrossRecords(ParkCrossRecordListRequest param){
+        log.info("銆愭捣搴疯繃杞﹁褰曟煡璇㈡煡璇€��================寮�濮�===="+JSONObject.toJSONString(param));
+        try {
+            String res = HKTools.parkCrossRecords(JSONObject.toJSONString(param));
+            TypeReference typeReference =
+                    new TypeReference< BaseResponse<BaseListPageResponse<ParkCrossRecordInfoResponse>> >(){};
+            BaseResponse<BaseListPageResponse<ParkCrossRecordInfoResponse>>   result = JSONObject.parseObject(res, typeReference.getType());
+            logResult(result,"娴峰悍杩囪溅璁板綍鏌ヨ鏌ヨ");
+            return  result;
+        }catch (Exception e){
+            log.error("銆愭捣搴疯繃杞﹁褰曟煡璇㈡煡璇€��================澶辫触====锛歕n"+ e.getMessage());
+        }
+        return  null;
+    }
+    /**
      *澧為噺杞﹁締鏌ヨ锛堝垎椤碉級
      * @return
      */
diff --git a/server/dmvisit_service/src/main/java/com/doumee/dao/business/model/Visits.java b/server/dmvisit_service/src/main/java/com/doumee/dao/business/model/Visits.java
index 38bacc3..7b6ebfe 100644
--- a/server/dmvisit_service/src/main/java/com/doumee/dao/business/model/Visits.java
+++ b/server/dmvisit_service/src/main/java/com/doumee/dao/business/model/Visits.java
@@ -228,6 +228,10 @@
     private String erpId;
 
 
+    @ApiModelProperty(value = "缁熻鏁伴噺 ")
+    @TableField(exist = false)
+    private int num  ;
+
     @ApiModelProperty(value = "鍒涘缓浜虹紪鐮侊紙鍏宠仈member琛�)", example = "1")
     @ExcelColumn(name="鍒涘缓浜虹紪鐮侊紙鍏宠仈member琛�)")
     private Integer createMemberId;
diff --git a/server/dmvisit_service/src/main/java/com/doumee/service/business/ext/HkSyncService.java b/server/dmvisit_service/src/main/java/com/doumee/service/business/ext/HkSyncService.java
index 96ea7fa..918db83 100644
--- a/server/dmvisit_service/src/main/java/com/doumee/service/business/ext/HkSyncService.java
+++ b/server/dmvisit_service/src/main/java/com/doumee/service/business/ext/HkSyncService.java
@@ -74,4 +74,5 @@
     void syncParkBookBySingleModel(ParkBook c);
     void syncEmpowerResultData();
     void syncEmpowerDetailData();
+    void syncParkRecords(Date date);
 }
diff --git a/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncBaseServiceImpl.java b/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncBaseServiceImpl.java
index e485929..cbad3b6 100644
--- a/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncBaseServiceImpl.java
+++ b/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncBaseServiceImpl.java
@@ -42,6 +42,10 @@
     }
     @Override
 //    @Async
+    public  void syncParkRecords(Date date){
+    }
+    @Override
+//    @Async
     public String syncDoors(DoorsListRequest param){
         return null;
     }
diff --git a/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncParkServiceImpl.java b/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncParkServiceImpl.java
index 9056ab5..b902487 100644
--- a/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncParkServiceImpl.java
+++ b/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncParkServiceImpl.java
@@ -1,16 +1,23 @@
 package com.doumee.service.business.impl.hksync;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.doumee.config.DataSyncConfig;
 import com.doumee.core.constants.ResponseStatus;
 import com.doumee.core.exception.BusinessException;
 import com.doumee.core.haikang.model.HKConstants;
+import com.doumee.core.haikang.model.param.BaseListPageResponse;
 import com.doumee.core.haikang.model.param.BaseResponse;
-import com.doumee.core.haikang.model.param.request.CarChargeAddRequest;
-import com.doumee.core.haikang.model.param.request.CarChargeDelRequest;
-import com.doumee.core.haikang.model.param.request.ParkListRequest;
+import com.doumee.core.haikang.model.param.request.*;
+import com.doumee.core.haikang.model.param.respose.AppointmentInfoResponse;
+import com.doumee.core.haikang.model.param.respose.ParkCrossRecordInfoResponse;
 import com.doumee.core.haikang.model.param.respose.ParkListResponse;
 import com.doumee.core.haikang.service.HKService;
 import com.doumee.core.utils.Constants;
+import com.doumee.core.utils.DESUtil;
 import com.doumee.core.utils.DateUtil;
+import com.doumee.core.utils.Utils;
+import com.doumee.dao.business.CarEventMapper;
 import com.doumee.dao.business.ParksMapper;
 import com.doumee.dao.business.join.ParkBookJoinMapper;
 import com.doumee.dao.business.model.*;
@@ -18,6 +25,8 @@
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
@@ -31,9 +40,13 @@
 public class HkSyncParkServiceImpl extends HkSyncBaseServiceImpl {
 
     @Autowired
+    private DataSyncConfig dataSyncConfig;
+    @Autowired
     private ParksMapper parksMapper;
     @Autowired
     private ParkBookJoinMapper parkBookMapper;
+    @Autowired
+    private CarEventMapper carEventMapper;
     @Override
     public  void syncParkBookData() {
         if(Constants.DEALING_HK_PARKBOOK){
@@ -282,5 +295,124 @@
         return  true;
 
     }
-    
+
+
+
+    @Override
+    @Transactional
+    public   void syncParkRecords(Date date){
+        try {
+            if( Constants.formatIntegerNum(dataSyncConfig.getVisitorDataOrigin()) != DataSyncConfig.origin.hk){
+                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "瀵逛笉璧凤紝褰撳墠涓嶆敮鎸佹捣搴锋暟鎹悓姝ユ搷浣渵");
+            }
+            ParkCrossRecordListRequest param =  new ParkCrossRecordListRequest();
+            //锛堝叏閲忓悓姝ワ級
+            boolean hasNext = true;
+            int curTotal = 0;
+            int curPage = 1;
+            //鏌ヨ浠婂ぉ鐨�
+            Date start = Utils.Date.getStart(date);
+            Date end = new Date();
+            if(DateUtil.daysBetweenDates(end,start) >1){
+                end =  Utils.Date.getEnd(date);
+            }
+            param.setStartTime(DateUtil.getISO8601Timestamp2( start));
+            param.setEndTime(DateUtil.getISO8601Timestamp2( end));
+
+            List<CarEvent>  allHkList = new ArrayList<>();
+            while (hasNext){
+                //鍒嗛〉閬嶅巻寰幆鏌ヨ鎵�鏈夐棬绂佽澶囨暟鎹�
+                param.setPageNo(curPage);
+                param.setPageSize(100);
+                BaseResponse<BaseListPageResponse<ParkCrossRecordInfoResponse>> response = HKService.parkCrossRecords(param);
+                if(response == null || !StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE)  ){
+                    throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "瀵逛笉璧凤紝娴峰悍鍚屾鏁版嵁澶辫触~");
+                }
+                if(response.getData() == null || response.getData().getTotal() ==0){
+                    throw  new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏈悓姝ュ埌浠讳綍淇℃伅锛�");
+                }
+                BaseListPageResponse<ParkCrossRecordInfoResponse> r = response.getData();
+                curTotal += 100;
+                if(curTotal >= r.getTotal()){
+                    hasNext = false;
+                }
+                if(r.getList() == null || r.getList().size()==0){
+                    hasNext =false;
+                }else{
+                    allHkList.addAll(getNewCarEventModelBYList(r.getList()));
+                }
+                curPage++;
+            }
+            if(allHkList .size() == 0){
+                throw  new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏈悓姝ュ埌浠讳綍淇℃伅锛�");
+            }
+            //娓呯┖鍘熸湁褰撳ぉ鐨勬暟鎹�
+            carEventMapper.delete(new UpdateWrapper<CarEvent>().lambda()
+                    .ge(CarEvent::getCreateDate,start)
+                    .le(CarEvent::getCreateDate,end));
+            if(allHkList.size()>0){
+                int sublistSize = 500;
+
+                int startIndex = 0;
+                int endIndex = sublistSize;
+
+                while (startIndex < allHkList.size()) {
+                    if (endIndex > allHkList.size()) {
+                        endIndex = allHkList.size();
+                    }
+
+                    List<CarEvent> sublist = allHkList.subList(startIndex, endIndex);
+                    if(sublist.size()>0){
+                        carEventMapper.insertBatchSomeColumn(sublist);//鎻掑叆鏂版暟鎹�
+                    }
+                    startIndex = endIndex;
+                    endIndex += sublistSize;
+                }
+            }
+
+        }catch (BusinessException e){
+            throw  e;
+        }
+    }
+
+    private List<CarEvent> getNewCarEventModelBYList(List<ParkCrossRecordInfoResponse> list ) {
+        List<CarEvent> newList = new ArrayList<>();
+        if(list == null || list.size()==0){
+            return  newList;
+        }
+        for(ParkCrossRecordInfoResponse model :list){
+            if( model.getReleaseResult() ==null || !( model.getReleaseResult() ==   1||  model.getReleaseResult() ==   2  )){
+                continue;
+            }
+            CarEvent c = new CarEvent();
+            c.setHappenTime(model.getCrossTime());
+            c.setCreateDate(DateUtil.getISO8601DateByStr2(model.getCrossTime()));
+            c.setSvrIndex(model.getAswSyscode());
+            c.setVehiclePicUrl(model.getVehiclePicUri());
+            c.setPlatePicUrl(model.getPlateNoPicUri());
+            c.setVehicleType(model.getVehicleType());
+            c.setPlateColor(model.getPlateColor());
+            c.setPlateType(model.getPlateType());
+            c.setCardNo(model.getCardNo());
+            c.setReleaseReason(model.getReleaseReason());
+            c.setPlateNos(model.getPlateNo());
+            c.setReleaseResult(model.getReleaseResult());
+            c.setInoutType(model.getVehicleOut());
+            c.setParkIndex(model.getParkSyscode());
+            c.setParkName(model.getParkName());
+            c.setEventId(model.getCrossRecordSyscode());
+            c.setGateIndex(model.getEntranceSyscode());
+            c.setGateName(model.getEntranceName());
+            c.setIsdeleted(Constants.ZERO);
+            if(model.getVehicleOut() !=null &&model.getVehicleOut() ==   0 ){
+                c.setEventType(HKConstants.EventTypes.PARK_PASS_IN.getKey());
+            }else {
+                c.setEventType(HKConstants.EventTypes.PARK_PASS_OUT.getKey());
+            }
+            newList.add(c);
+        }
+        return newList;
+    }
+
+
 }
diff --git a/server/dmvisit_service/src/main/resources/application-testYL.yml b/server/dmvisit_service/src/main/resources/application-testYL.yml
index e76e605..4324462 100644
--- a/server/dmvisit_service/src/main/resources/application-testYL.yml
+++ b/server/dmvisit_service/src/main/resources/application-testYL.yml
@@ -43,7 +43,7 @@
   title: ${project.name}鎺ュ彛鏂囨。
   description: ${project.name}鎺ュ彛鏂囨。
   enabled: true
-  context-path: /erp_api
+  context-path:
   # 绂佺敤swagger鏃剁殑閲嶅畾鍚戝湴鍧�
   redirect-uri: /
 
@@ -61,7 +61,6 @@
   map:
     remoteHost: https://apis.map.qq.com
     appKey: 3AYBZ-I5R3V-2BVP3-UWBDQ-ETBM5-B2BBQ
-
 
 
 des_pwd: 123456SDFKDJF

--
Gitblit v1.9.3