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);