Commit 4a7f75bd authored by 赵啸非's avatar 赵啸非

修改同步人员接口

parent 73fa84cc
...@@ -42,12 +42,6 @@ public class SyncDoorsEventAfterTaskImpl implements ITaskExcuteService { ...@@ -42,12 +42,6 @@ public class SyncDoorsEventAfterTaskImpl implements ITaskExcuteService {
@Autowired @Autowired
private AttendanceRecordHikService recordHikService; private AttendanceRecordHikService recordHikService;
@Autowired
private StaffService staffService;
@Autowired
private IHikDoorService hikDoorService;
@Autowired @Autowired
private AttendanceStatService attendanceStatService; private AttendanceStatService attendanceStatService;
......
...@@ -38,7 +38,7 @@ import java.util.stream.Collectors; ...@@ -38,7 +38,7 @@ import java.util.stream.Collectors;
* 同步获取当天海康门禁事件 * 同步获取当天海康门禁事件
*/ */
@Slf4j @Slf4j
@Service("SyncDoorsEventByDevicesTask") //@Service("SyncDoorsEventByDevicesTask")
public class SyncDoorsEventByDevicesTaskImpl implements ITaskExcuteService { public class SyncDoorsEventByDevicesTaskImpl implements ITaskExcuteService {
@Autowired @Autowired
...@@ -87,110 +87,6 @@ public class SyncDoorsEventByDevicesTaskImpl implements ITaskExcuteService { ...@@ -87,110 +87,6 @@ public class SyncDoorsEventByDevicesTaskImpl implements ITaskExcuteService {
} }
} }
/**
* 查询当前间隔时间的门禁事件
*
* @param doorEntity
*/
private void syncDoorEvents(DoorEntity doorEntity) {
HikDoorEventReq hikDoorEventReq = new HikDoorEventReq();
//当前时间前一个小时
// Date startTime = DateUtil.offsetHour(new Date(), -1).toJdkDate();
Date startTime = DateUtil.offsetDay(new Date(), -1).toJdkDate();
Date endTime = new Date();
hikDoorEventReq.setStartTime(startTime);
hikDoorEventReq.setEndTime(endTime);
Rest<List<EventInfo>> listRest = hikDoorService.searchDoorEventsList(hikDoorEventReq, doorEntity);
if (listRest.getCode() == YesNoEnum.YES.getValue()) {
List<EventInfo> list = listRest.getData();
List<AttendanceRecordHikEntity> attRecords = list.stream().map(item -> {
AttendanceRecordHikEntity recordHikEntity = new AttendanceRecordHikEntity();
recordHikEntity.initAttrValue();
String jobNo = "";
byte[] byEmployeeNo = item.getStruAcsEventInfo().getByEmployeeNo();
if (ObjectUtils.isEmpty(new String(byEmployeeNo).trim())) {
int dwEmployeeNo = item.getStruAcsEventInfo().getDwEmployeeNo();
if (dwEmployeeNo == 0) {
//log.info("jobNo is null ==>{}", JSON.toJSONString(item));
return null;
} else {
jobNo = String.valueOf(dwEmployeeNo);
}
} else {
jobNo = new String(byEmployeeNo).trim();
}
log.info("jobNo==>{}",jobNo);
//查看考勤状态
int dwMajor = item.getDwMajor();//报警主类型
int dwMinor = item.getDwMinor();//报警次类型
String dwMinorStr = Integer.toHexString(dwMinor);
//判断次类型 是否在白名单里面
Set<String> dwSet = DwMinorEnum.getEnumMap().keySet();
if (dwSet.contains(dwMinorStr)) {
//符号考勤 添加到考勤里面
StruTime struTime = item.getStruTime();
//格式化时间 年月日 时分秒 yyyy-MM-dd HH:mm:ss
int dwYear = struTime.getDwYear();
int dwMonth = struTime.getDwMonth();
int dwDay = struTime.getDwDay();
int dwHour = struTime.getDwHour();
int dwMinute = struTime.getDwMinute();
int dwSecond = struTime.getDwSecond();
LocalDateTime localDateTime = LocalDateTime.of(dwYear, dwMonth, dwDay, dwHour, dwMinute, dwSecond);
ZoneId zoneId = ZoneId.systemDefault();
ZonedDateTime zdt = localDateTime.atZone(zoneId);
Date attendDate = Date.from(zdt.toInstant());
StaffEntity staffCache = staffService.getExtCache(StrUtil.padPre(jobNo, 8, "0"));
if (ObjectUtils.isEmpty(staffCache)) {
log.info("staff is null !staffCode:{}", jobNo);
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(attendDate);
// recordHikEntity.setAttendanceAddress(item.getDoorName());
recordHikEntity.setEventSource("门禁点");
//recordHikEntity.setRemark(item.getEventId());
recordHikEntity.setCreateTime(new Date());
recordHikEntity.setCreateUserName("系统管理员");
recordHikEntity.setCreateUserId(1L);
return recordHikEntity;
} else {
log.info("考勤次类型dwMinorCode:" + dwMinorStr);
return null;
}
}).filter(f -> f != null).collect(Collectors.toList());
log.info("attRecords size:{}", attRecords.size());
if (!ObjectUtils.isEmpty(attRecords)) {
//单个插入 去掉重复时间段的打卡记录
for (AttendanceRecordHikEntity recordHikEntity : attRecords) {
try {
recordHikService.getDao().insert(recordHikEntity);
} catch (Exception e) {
log.error("基础考勤数据保存异常", e.getMessage());
}
}
}
}
}
@Override @Override
public void stopTask(ITask task) throws AppException { public void stopTask(ITask task) throws AppException {
......
...@@ -50,24 +50,13 @@ public class SyncDoorsEventTaskImpl implements ITaskExcuteService { ...@@ -50,24 +50,13 @@ public class SyncDoorsEventTaskImpl implements ITaskExcuteService {
@Autowired @Autowired
private AttendanceRecordHikService recordHikService; private AttendanceRecordHikService recordHikService;
@Autowired
private StaffService staffService;
@Autowired
private IHikDoorService hikDoorService;
private Integer day; private Integer day;
@Autowired
private ICacheService cacheService;
@Value("${hik.host:}") @Value("${hik.host:}")
protected String hikhost; protected String hikhost;
@Autowired @Autowired
private DoorService doorService; private DoorService doorService;
@Override @Override
public void excuteTask(ITask task) throws AppException { public void excuteTask(ITask task) throws AppException {
//同步多久时间段的 偏移量为天 默认当天 //同步多久时间段的 偏移量为天 默认当天
...@@ -77,20 +66,20 @@ public class SyncDoorsEventTaskImpl implements ITaskExcuteService { ...@@ -77,20 +66,20 @@ public class SyncDoorsEventTaskImpl implements ITaskExcuteService {
} else { } else {
day = 0; day = 0;
} }
Date beginDateTime=DateUtil.parseDateTime(DateUtil.today()+" 08:00:00"); Date beginDateTime = DateUtil.parseDateTime(DateUtil.today() + " 08:00:00");
Date endDateTime=DateUtil.parseDateTime(DateUtil.today()+" 23:30:00"); Date endDateTime = DateUtil.parseDateTime(DateUtil.today() + " 23:30:00");
boolean in = DateUtil.isIn(new Date(), beginDateTime, endDateTime); boolean in = DateUtil.isIn(new Date(), beginDateTime, endDateTime);
if(in){ if (in) {
AttendanceRecordHikQuery hikQuery = new AttendanceRecordHikQuery(); AttendanceRecordHikQuery hikQuery = new AttendanceRecordHikQuery();
DateTime startTime = DateUtil.offsetDay(new Date(), day > 0 ? -day : 0); DateTime startTime = DateUtil.offsetDay(new Date(), day > 0 ? -day : 0);
hikQuery.setAttendanceDateStart( startTime.toDateStr()); hikQuery.setAttendanceDateStart(startTime.toDateStr());
// 获取当天的结束时间 // 获取当天的结束时间
hikQuery.setAttendanceDateEnd(DateUtil.today()); hikQuery.setAttendanceDateEnd(DateUtil.today());
if (!ObjectUtils.isEmpty(hikhost)) { if (!ObjectUtils.isEmpty(hikhost)) {
recordHikService.syncDoorEvents(hikQuery); recordHikService.syncDoorEvents(hikQuery);
recordHikService.deletFakeRecord(hikQuery, null); recordHikService.deletFakeRecord(hikQuery, null);
}else{ } else {
log.info("同步设备上门禁事件!"); log.info("同步设备上门禁事件!");
HikDoorEventReq hikDoorEventReq = new HikDoorEventReq(); HikDoorEventReq hikDoorEventReq = new HikDoorEventReq();
hikDoorEventReq.setStartTime(startTime.toJdkDate()); hikDoorEventReq.setStartTime(startTime.toJdkDate());
...@@ -104,114 +93,6 @@ public class SyncDoorsEventTaskImpl implements ITaskExcuteService { ...@@ -104,114 +93,6 @@ public class SyncDoorsEventTaskImpl implements ITaskExcuteService {
} }
} }
private void syncDoorEvents() {
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);
// eventTypes.add(196893);//人脸认证通过
doorEventReq.setEventTypes(eventTypes);
// 获取当天的开始时间
//Date todayStart = DateUtil.offsetHour(new Date(), -5).toJdkDate();
Date todayStart = DateUtil.beginOfDay(DateUtil.offsetDay(new Date(), day > 0 ? -day : 0));
// 获取当天的结束时间
Date todayEnd = DateUtil.endOfDay(new Date());
doorEventReq.setStartTime(todayStart);
doorEventReq.setEndTime(todayEnd);
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);
}
}
}
private void getDoorEvents(Rest<DoorEventDataInfo> doorEventsRest) {
//同步当前考勤数据
List<AttendanceRecordHikEntity> attRecords = doorEventsRest.getData().getList().stream().map(item -> {
AttendanceRecordHikEntity recordHikEntity = new AttendanceRecordHikEntity();
recordHikEntity.initAttrValue();
if (ObjectUtils.isEmpty(item.getJobNo())) {
log.info("jobNo is null ==>{}", JSON.toJSONString(item));
return null;
}
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.setSalaId(staffCache.getSalaId());
recordHikEntity.setSalaName(staffCache.getSalaName());
recordHikEntity.setPositionId(staffCache.getPositionId());
recordHikEntity.setPositionName(staffCache.getPositionName());
recordHikEntity.setAttendanceDate(item.getEventTime());
recordHikEntity.setAttendanceAddress(item.getDoorName());
recordHikEntity.setEventSource("门禁点");
recordHikEntity.setRemark(item.getEventId());
recordHikEntity.setCreateTime(new Date());
recordHikEntity.setCreateUserName("系统管理员");
recordHikEntity.setCreateUserId(1L);
return recordHikEntity;
}).filter(f -> f != null).collect(Collectors.toList());
log.info("attRecords size:{}", attRecords.size());
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)) {
//单个插入 去掉重复时间段的打卡记录
for (AttendanceRecordHikEntity recordHikEntity : saveRecordList) {
try {
recordHikService.getDao().insert(recordHikEntity);
} catch (Exception e) {
//log.error("基础考勤数据保存异常", e.getMessage());
}
}
// recordHikService.save(saveRecordList);
}
log.info("saveRecordList size:{}", saveRecordList.size());
AttendanceRecordHikQuery hikQuery = new AttendanceRecordHikQuery();
hikQuery.setAttendanceDateStart(DateUtil.beginOfMonth(new Date()).toDateStr());
hikQuery.setAttendanceDateEnd(DateUtil.today());
Long totalCache = recordHikService.find(hikQuery).parallelStream().map(item -> item.getStaffId()).distinct().count();
cacheService.hset(RedisKey.KEY_ATTENC_TOTOAL_CACHE, DateUtil.format(new Date(), "yyyy-MM"), totalCache);
}
@Override @Override
public void stopTask(ITask task) throws AppException { public void stopTask(ITask task) throws AppException {
......
...@@ -67,10 +67,6 @@ public class SyncPortalUserTaskImpl implements ITaskExcuteService { ...@@ -67,10 +67,6 @@ public class SyncPortalUserTaskImpl implements ITaskExcuteService {
//当前用户map //当前用户map
Map<String, UserEntity> oldUserMap = oldUserList.parallelStream().collect(Collectors.toMap(x -> x.getLoginName(), y -> y, (o, n) -> n)); Map<String, UserEntity> oldUserMap = oldUserList.parallelStream().collect(Collectors.toMap(x -> x.getLoginName(), y -> y, (o, n) -> n));
//门户用户map
// Map<String, UserEntity> newUserMap = newUserList.stream().collect(Collectors.toMap(x -> x.getLoginName(), y -> y, (o, n) -> n));
List<UserEntity> saveUserList = newUserList.stream().map(item -> { List<UserEntity> saveUserList = newUserList.stream().map(item -> {
if (!oldUserMap.containsKey(item.getLoginName())) { if (!oldUserMap.containsKey(item.getLoginName())) {
item.setCreateUserId(1L); item.setCreateUserId(1L);
...@@ -88,10 +84,7 @@ public class SyncPortalUserTaskImpl implements ITaskExcuteService { ...@@ -88,10 +84,7 @@ public class SyncPortalUserTaskImpl implements ITaskExcuteService {
userService.getUserDao().insert(item); userService.getUserDao().insert(item);
}); });
} }
} }
//查找新增 与更新
} }
} }
......
...@@ -53,41 +53,13 @@ public class SyncRegisterUserPicTaskImpl implements ITaskExcuteService { ...@@ -53,41 +53,13 @@ public class SyncRegisterUserPicTaskImpl implements ITaskExcuteService {
} else { } else {
List<DoorEntity> doorEntities = doorService.find(new DoorQuery()); List<DoorEntity> doorEntities = doorService.find(new DoorQuery());
for (DoorEntity doorEntity : doorEntities) { for (DoorEntity doorEntity : doorEntities) {
//todo 直连设备 //todo 直连设备获取员工照片
} }
} }
// syncRegisterUsersPhotos();
log.info("同步员工任务照片完成"); log.info("同步员工任务照片完成");
} }
private void syncRegisterUsersPhotos() {
List<StaffEntity> staffList = staffService.find(new StaffQuery().source(1)).stream()
.filter(item -> ObjectUtils.isEmpty(item.getPhotoPath()))
.filter(item -> !ObjectUtils.isEmpty(item.getPicUri())).collect(Collectors.toList());
for (StaffEntity staff : staffList) {
ImgReq imgReq = new ImgReq();
imgReq.setServerIndexCode(staff.getServerIndexCode());
imgReq.setPicUri(staff.getPicUri());
try {
InputStream inputStream = hikFaceService.callPostImgs(imgReq);
if (!ObjectUtils.isEmpty(inputStream)) {
MultipartFile file = ServletUtils.getMultipartFile(inputStream, "photo.jpg");
String filePath = uploadService.saveFileUpload(file, "file/fileupload/staff", null);
staff.setPhotoPath(filePath);
staffService.update(staff);
} else {
log.error("获取图片异常!");
}
} catch (Exception e) {
log.error("下载图片异常", e.getMessage());
}
}
}
@Override @Override
public void stopTask(ITask task) throws AppException { public void stopTask(ITask task) throws AppException {
......
...@@ -30,7 +30,7 @@ import java.util.List; ...@@ -30,7 +30,7 @@ import java.util.List;
* 同步海康用户 * 同步海康用户
*/ */
@Slf4j @Slf4j
@Service("SyncUserByDeviceDoorsTask") //@Service("SyncUserByDeviceDoorsTask")
public class SyncUserByDeviceDoorsTaskImpl implements ITaskExcuteService { public class SyncUserByDeviceDoorsTaskImpl implements ITaskExcuteService {
@Autowired @Autowired
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment