diff --git a/attendance-performance-manager/src/main/java/com/mortals/xhx/busiz/TestController.java b/attendance-performance-manager/src/main/java/com/mortals/xhx/busiz/TestController.java
index 04d2114dd23ac7433aa8515deb4ebd963db46af7..8e324146bf08e04355f0c518fcfb10b143403fc6 100644
--- a/attendance-performance-manager/src/main/java/com/mortals/xhx/busiz/TestController.java
+++ b/attendance-performance-manager/src/main/java/com/mortals/xhx/busiz/TestController.java
@@ -3,11 +3,15 @@ package com.mortals.xhx.busiz;
 
 import cn.hutool.core.codec.Base64;
 import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.PageUtil;
+import cn.hutool.core.util.StrUtil;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.mortals.framework.annotation.UnAuth;
 import com.mortals.framework.common.Rest;
+import com.mortals.framework.model.Context;
 import com.mortals.framework.service.ICacheService;
+import com.mortals.framework.util.DateUtils;
 import com.mortals.framework.utils.ServletUtils;
 import com.mortals.xhx.base.system.idgenerator.service.IdgeneratorService;
 import com.mortals.xhx.base.system.upload.service.UploadService;
@@ -17,9 +21,15 @@ import com.mortals.xhx.base.system.user.service.UserService;
 import com.mortals.xhx.busiz.h5.rsp.ApiResp;
 import com.mortals.xhx.common.code.ApiRespCodeEnum;
 import com.mortals.xhx.common.code.YesNoEnum;
+import com.mortals.xhx.module.attendance.model.AttendanceRecordHikEntity;
+import com.mortals.xhx.module.attendance.model.AttendanceRecordHikQuery;
+import com.mortals.xhx.module.attendance.service.AttendanceRecordHikService;
 import com.mortals.xhx.module.dept.model.DeptEntity;
 import com.mortals.xhx.module.dept.model.DeptQuery;
 import com.mortals.xhx.module.dept.service.DeptService;
+import com.mortals.xhx.module.hik.door.model.req.door.DoorEventReq;
+import com.mortals.xhx.module.hik.door.model.rsp.door.DoorEventDataInfo;
+import com.mortals.xhx.module.hik.door.service.IHikDoorService;
 import com.mortals.xhx.module.hik.face.model.req.img.ImgReq;
 import com.mortals.xhx.module.hik.face.service.IHikFaceService;
 import com.mortals.xhx.module.perform.service.PerformPerposeStaffService;
@@ -35,10 +45,7 @@ import org.springframework.web.multipart.MultipartFile;
 
 import java.io.ByteArrayInputStream;
 import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.stream.Collectors;
 
 
@@ -72,6 +79,12 @@ public class TestController {
     @Autowired
     private PerformPerposeStaffService performPerposeStaffService;
 
+    @Autowired
+    private AttendanceRecordHikService recordHikService;
+
+    @Autowired
+    private IHikDoorService hikDoorService;
+
     /**
      * 鍚屾鎸囧畾鏃ユ湡鐨勬捣搴锋暟鎹�
      *
@@ -79,14 +92,98 @@ public class TestController {
      * @return
      */
     @PostMapping("hik")
-    public String register(@RequestBody BaseReq req) {
+    public String register(@RequestBody TestReq req) {
         log.info("銆愭祴璇曟秷鎭€戙€愯姹備綋銆�-->  " + JSONObject.toJSONString(req));
 
 
+        DoorEventReq doorEventReq = new DoorEventReq();
+        List<Integer> eventTypes = new ArrayList<>();
+        eventTypes.add(196885);
+        eventTypes.add(196887);
+        eventTypes.add(196893);
+        eventTypes.add(196888);
+        eventTypes.add(196889);
+        eventTypes.add(196890);
+        eventTypes.add(196891);
+        doorEventReq.setEventTypes(eventTypes);
+
+        doorEventReq.setStartTime(req.getCreateTimeStart());
+        doorEventReq.setEndTime(req.getCreateTimeEnd());
+        doorEventReq.setPageNo(1);
+        doorEventReq.setPageSize(1);
+
+        Rest<DoorEventDataInfo> doorEventsRest = hikDoorService.getDoorEvents(doorEventReq);
+        log.info("doorEventsRest:{} msg:{}", doorEventsRest.getCode(), doorEventsRest.getMsg());
+        if (doorEventsRest.getCode() == YesNoEnum.YES.getValue()) {
+            //鍒嗛〉鑾峰彇鑰冨嫟鏁版嵁
+            Integer total = doorEventsRest.getData().getTotal();
+            int pageCount = PageUtil.totalPage(total, 1000);
+            for (int i = 1; i <= pageCount; i++) {
+                doorEventReq.setPageNo(i);
+                doorEventReq.setPageSize(1000);
+                doorEventsRest = hikDoorService.getDoorEvents(doorEventReq);
+                log.info("doorEventsRest:{} msg:{},page:{}", doorEventsRest.getCode(), doorEventsRest.getMsg(), doorEventReq.getPageNo());
+                getDoorEvents(doorEventsRest);
+            }
+        }
         return "ok";
     }
 
 
+
+    private void getDoorEvents(Rest<DoorEventDataInfo> doorEventsRest) {
+        //鍚屾褰撳墠鑰冨嫟鏁版嵁
+        List<AttendanceRecordHikEntity> attRecords = doorEventsRest.getData().getList().stream().map(item -> {
+            AttendanceRecordHikEntity recordHikEntity = new AttendanceRecordHikEntity();
+            recordHikEntity.initAttrValue();
+            StaffEntity staffCache = staffService.getExtCache(StrUtil.padPre(item.getJobNo(), 8, "0"));
+            if (ObjectUtils.isEmpty(staffCache)) {
+                log.info("staff is null !staffCode:{}",item.getJobNo());
+                return null;
+            }
+
+            recordHikEntity.setStaffId(staffCache.getId());
+            recordHikEntity.setStaffName(staffCache.getName());
+            recordHikEntity.setWorkNum(staffCache.getWorkNum());
+            recordHikEntity.setDeptId(staffCache.getDeptId());
+            recordHikEntity.setDeptName(staffCache.getDeptName());
+            recordHikEntity.setPositionId(staffCache.getPositionId());
+            recordHikEntity.setPositionName(staffCache.getPositionName());
+
+            recordHikEntity.setAttendanceDate(item.getEventTime());
+            recordHikEntity.setAttendanceAddress(item.getDoorName());
+            recordHikEntity.setEventSource("闂ㄧ鐐�");
+            recordHikEntity.setRemark(item.getEventId());
+            recordHikEntity.setCreateTime(item.getEventTime());
+            recordHikEntity.setCreateUserName("system");
+            recordHikEntity.setCreateUserId(1L);
+            return recordHikEntity;
+        }).filter(f->f!=null).collect(Collectors.toList());
+
+        log.info("attRecords size:{}", attRecords.size());
+
+        if (!ObjectUtils.isEmpty(attRecords)) {
+            recordHikService.save(attRecords);
+        }
+
+/*
+        List<String> eventIds = attRecords.parallelStream().filter(f -> !ObjectUtils.isEmpty(f) && !ObjectUtils.isEmpty(f.getRemark())).map(i -> i.getRemark()).collect(Collectors.toList());
+
+        //鏌ヨ褰撳ぉ鑰冨嫟璁板綍鏄惁鏈夐噸澶嶇殑 鏈夌殑 鍒欎笉娣诲姞
+        AttendanceRecordHikQuery recordHikQuery = new AttendanceRecordHikQuery();
+        recordHikQuery.setAttendanceDateStart(DateUtil.format(DateUtil.beginOfDay(new Date()), "yyyy-MM-dd"));
+        recordHikQuery.setAttendanceDateEnd(DateUtil.format(DateUtil.beginOfDay(new Date()), "yyyy-MM-dd"));
+        recordHikQuery.setRemarkList(eventIds);
+        Set<String> eventIdSet = recordHikService.find(recordHikQuery).parallelStream().map(i -> i.getRemark()).collect(Collectors.toSet());
+
+        List<AttendanceRecordHikEntity> saveRecordList = attRecords.stream().filter(f -> !eventIdSet.contains(f.getRemark())).collect(Collectors.toList());
+        if (!ObjectUtils.isEmpty(saveRecordList)) {
+            recordHikService.save(saveRecordList);
+        }
+        log.info("saveRecordList size:{}", saveRecordList.size());*/
+    }
+
+
     @GetMapping("updateDeptNum")
     @UnAuth
     public String updateDeptNum() {
@@ -115,12 +212,13 @@ public class TestController {
             Long deptId = item.getKey();
             if (deptId == -1) continue;
             DeptEntity deptEntity = deptService.get(deptId);
-            if (!ObjectUtils.isEmpty(deptEntity) ) {
+            if (!ObjectUtils.isEmpty(deptEntity)) {
                 //鏌ヨ褰撳墠鐖惰妭鐐圭殑鎵€鏈夊瓙閮ㄩ棬
                 DeptQuery deptQuery = new DeptQuery();
                 deptQuery.setParentId(deptEntity.getParentId());
 
-                int sum = deptService.find(new DeptQuery().parentId(deptEntity.getParentId())).stream().map(i -> i.getPersonNum()).reduce(0, Integer::sum);;
+                int sum = deptService.find(new DeptQuery().parentId(deptEntity.getParentId())).stream().map(i -> i.getPersonNum()).reduce(0, Integer::sum);
+                ;
                 DeptEntity parentDept = deptService.get(deptEntity.getParentId());
                 log.info("dept:{},sum:{}", parentDept.getDeptName(), sum);
 
diff --git a/attendance-performance-manager/src/main/java/com/mortals/xhx/module/dingding/AbstractDingTalkService.java b/attendance-performance-manager/src/main/java/com/mortals/xhx/module/dingding/AbstractDingTalkService.java
index ffde5357c0593d230e815b64979998f3e4c79414..9d48b61d116fb792f9e00439611d21fb599f4711 100644
--- a/attendance-performance-manager/src/main/java/com/mortals/xhx/module/dingding/AbstractDingTalkService.java
+++ b/attendance-performance-manager/src/main/java/com/mortals/xhx/module/dingding/AbstractDingTalkService.java
@@ -52,6 +52,12 @@ public abstract class AbstractDingTalkService implements IDingPersonService {
     @Value("${dingtalk.AppSecret:''}")
     protected String appSecret;
 
+    /**
+     * appKey
+     */
+    @Value("${dingtalk.oaUrl:}")
+    protected String oaUrl;
+
     @Autowired
     private ICacheService cacheService;
 
diff --git a/attendance-performance-manager/src/main/java/com/mortals/xhx/module/dingding/personal/service/impl/DingPersonServiceImpl.java b/attendance-performance-manager/src/main/java/com/mortals/xhx/module/dingding/personal/service/impl/DingPersonServiceImpl.java
index 59dcc7c43618b92cf063aefb2732300b9230f4e2..b8053b27b59477fddbf2be5bcaf145a06cb0e5f3 100644
--- a/attendance-performance-manager/src/main/java/com/mortals/xhx/module/dingding/personal/service/impl/DingPersonServiceImpl.java
+++ b/attendance-performance-manager/src/main/java/com/mortals/xhx/module/dingding/personal/service/impl/DingPersonServiceImpl.java
@@ -120,9 +120,11 @@ public class DingPersonServiceImpl extends AbstractDingTalkService implements ID
      */
     public com.aliyun.dingtalkworkflow_1_0.Client createClient() throws Exception {
         com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config();
+        //config.protocol = "https";
         config.protocol = "https";
         config.regionId = "central";
-       // config.endpoint = domain.replace("http://", "");
+        //config.endpoint = domain.replace("http://", "");
+        //config.endpoint = oaUrl;
         return new com.aliyun.dingtalkworkflow_1_0.Client(config);
     }
 
@@ -132,11 +134,11 @@ public class DingPersonServiceImpl extends AbstractDingTalkService implements ID
             com.aliyun.dingtalkworkflow_1_0.Client client = createClient();
             com.aliyun.dingtalkworkflow_1_0.models.GetProcessInstanceHeaders getProcessInstanceHeaders = new com.aliyun.dingtalkworkflow_1_0.models.GetProcessInstanceHeaders();
             getProcessInstanceHeaders.xAcsDingtalkAccessToken = getToken();
-/*            HashMap<String, String> map = new HashMap<>();
+            HashMap<String, String> map = new HashMap<>();
             getProcessInstanceHeaders.setCommonHeaders(map);
             getProcessInstanceHeaders.getCommonHeaders().put("host", "172.15.28.113");
-            getProcessInstanceHeaders.getCommonHeaders().put("port", "8918");
-            getProcessInstanceHeaders.getCommonHeaders().put("protocol", "http");*/
+            getProcessInstanceHeaders.getCommonHeaders().put("port", "8919");
+            getProcessInstanceHeaders.getCommonHeaders().put("protocol", "http");
 
             com.aliyun.dingtalkworkflow_1_0.models.GetProcessInstanceRequest getProcessInstanceRequest = new com.aliyun.dingtalkworkflow_1_0.models.GetProcessInstanceRequest()
                     .setProcessInstanceId(processInstanceId);