Commit 73fa84cc authored by 赵啸非's avatar 赵啸非

修改同步人员接口

parent dd107ff9
...@@ -8,9 +8,9 @@ module.exports = { ...@@ -8,9 +8,9 @@ module.exports = {
hot: true,//自动保存 hot: true,//自动保存
proxy: { proxy: {
'/attendance': { '/attendance': {
target: 'http://192.168.0.98:11039', //target: 'http://192.168.0.98:11039',
// target: 'http://112.19.80.237:11039', // target: 'http://112.19.80.237:11039',
// target: 'http://localhost:17500', target: 'http://localhost:17500',
changeOrigin: true, changeOrigin: true,
secure: false, secure: false,
cookieDomainRewrite: 'localhost', cookieDomainRewrite: 'localhost',
......
package com.mortals.xhx.busiz; package com.mortals.xhx.busiz;
import cn.hutool.core.codec.Base64;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.PageUtil; import cn.hutool.core.util.PageUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
...@@ -9,32 +8,30 @@ import com.alibaba.fastjson.JSON; ...@@ -9,32 +8,30 @@ import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.mortals.framework.annotation.UnAuth; import com.mortals.framework.annotation.UnAuth;
import com.mortals.framework.common.Rest; import com.mortals.framework.common.Rest;
import com.mortals.framework.model.Context;
import com.mortals.framework.service.ICacheService; import com.mortals.framework.service.ICacheService;
import com.mortals.framework.util.DateUtils;
import com.mortals.framework.utils.ServletUtils; import com.mortals.framework.utils.ServletUtils;
import com.mortals.xhx.base.system.idgenerator.service.IdgeneratorService;
import com.mortals.xhx.base.system.upload.service.UploadService; import com.mortals.xhx.base.system.upload.service.UploadService;
import com.mortals.xhx.base.system.user.model.UserEntity; import com.mortals.xhx.base.system.user.model.UserEntity;
import com.mortals.xhx.base.system.user.model.UserQuery; import com.mortals.xhx.base.system.user.model.UserQuery;
import com.mortals.xhx.base.system.user.service.UserService; 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.common.code.YesNoEnum;
import com.mortals.xhx.module.attendance.model.AttendanceLeaveRecordEntity; import com.mortals.xhx.module.attendance.model.AttendanceLeaveRecordEntity;
import com.mortals.xhx.module.attendance.model.AttendanceRecordHikEntity; import com.mortals.xhx.module.attendance.model.AttendanceRecordHikEntity;
import com.mortals.xhx.module.attendance.model.AttendanceRecordHikQuery;
import com.mortals.xhx.module.attendance.service.AttendanceLeaveRecordService; import com.mortals.xhx.module.attendance.service.AttendanceLeaveRecordService;
import com.mortals.xhx.module.attendance.service.AttendanceRecordHikService; import com.mortals.xhx.module.attendance.service.AttendanceRecordHikService;
import com.mortals.xhx.module.dept.model.DeptEntity; import com.mortals.xhx.module.dept.model.DeptEntity;
import com.mortals.xhx.module.dept.model.DeptQuery; import com.mortals.xhx.module.dept.model.DeptQuery;
import com.mortals.xhx.module.dept.service.DeptService; import com.mortals.xhx.module.dept.service.DeptService;
import com.mortals.xhx.module.door.model.DoorEntity;
import com.mortals.xhx.module.door.model.DoorQuery;
import com.mortals.xhx.module.door.service.DoorService;
import com.mortals.xhx.module.hik.door.model.req.door.DoorEventReq; import com.mortals.xhx.module.hik.door.model.req.door.DoorEventReq;
import com.mortals.xhx.module.hik.door.model.req.door.HikDoorEventReq;
import com.mortals.xhx.module.hik.door.model.rsp.door.DoorEventDataInfo; 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.door.service.IHikDoorService;
import com.mortals.xhx.module.hik.face.model.req.img.ImgReq; 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.hik.face.service.IHikFaceService;
import com.mortals.xhx.module.perform.service.PerformPerposeStaffService; import com.mortals.xhx.module.hik.staff.service.IHikStaffService;
import com.mortals.xhx.module.staff.model.StaffEntity; import com.mortals.xhx.module.staff.model.StaffEntity;
import com.mortals.xhx.module.staff.model.StaffQuery; import com.mortals.xhx.module.staff.model.StaffQuery;
import com.mortals.xhx.module.staff.service.StaffService; import com.mortals.xhx.module.staff.service.StaffService;
...@@ -45,9 +42,11 @@ import org.springframework.util.ObjectUtils; ...@@ -45,9 +42,11 @@ import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import java.io.ByteArrayInputStream;
import java.io.InputStream; import java.io.InputStream;
import java.util.*; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
...@@ -61,10 +60,6 @@ import java.util.stream.Collectors; ...@@ -61,10 +60,6 @@ import java.util.stream.Collectors;
@Slf4j @Slf4j
@RequestMapping("/test") @RequestMapping("/test")
public class TestController { public class TestController {
@Autowired
private IdgeneratorService idgeneratorService;
@Autowired @Autowired
private ICacheService cacheService; private ICacheService cacheService;
@Autowired @Autowired
...@@ -77,15 +72,15 @@ public class TestController { ...@@ -77,15 +72,15 @@ public class TestController {
private UploadService uploadService; private UploadService uploadService;
@Autowired @Autowired
private DeptService deptService; private DeptService deptService;
@Autowired
private PerformPerposeStaffService performPerposeStaffService;
@Autowired @Autowired
private AttendanceRecordHikService recordHikService; private AttendanceRecordHikService recordHikService;
@Autowired @Autowired
private IHikDoorService hikDoorService; private IHikDoorService hikDoorService;
@Autowired
private DoorService doorService;
@Autowired
private IHikStaffService hikStaffService;
/** /**
* 同步指定日期的海康数据 * 同步指定日期的海康数据
...@@ -174,26 +169,8 @@ public class TestController { ...@@ -174,26 +169,8 @@ public class TestController {
} catch (Exception e) { } catch (Exception e) {
log.error("异常", e); log.error("异常", e);
} }
} }
} }
/*
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());*/
} }
...@@ -241,73 +218,15 @@ public class TestController { ...@@ -241,73 +218,15 @@ public class TestController {
// updateDeptPersonNum(parentDept); // updateDeptPersonNum(parentDept);
} }
} }
} }
/*
//更新父部门的人数归集
collect.entrySet().stream().forEach(item -> {
Long deptId = item.getKey();
DeptEntity deptEntity = deptService.get(deptId);
if (!ObjectUtils.isEmpty(deptEntity) && !ObjectUtils.isEmpty(deptEntity.getParentId())) {
int sum = deptService.find(new DeptQuery().parentId(deptEntity.getId())).stream().mapToInt(i -> i.getPersonNum()).sum();
DeptEntity parentDept = deptService.get(deptEntity.getParentId());
if (ObjectUtils.isEmpty(parentDept)) {
parentDept.setPersonNum(sum);
deptService.update(parentDept);
updateDeptPersonNum(parentDept);
}
}
// updateDeptPersonNum(deptEntity);
});*/
return "ok"; return "ok";
} }
public static void calculateParentValue(DeptEntity root) {
if (root == null) {
return;
}
// 递归处理叶子节点
if (root.getChildren().isEmpty()) {
return;
}
// 递归计算所有子节点的值之和
int sum = 0;
for (DeptEntity child : root.getChildren()) {
calculateParentValue(child);
sum += child.getPersonNum();
}
// 更新当前节点的值为所有子节点值之和
root.setPersonNum(sum);
}
private void updateDeptPersonNum(DeptEntity deptEntity) {
if (!ObjectUtils.isEmpty(deptEntity) && !ObjectUtils.isEmpty(deptEntity.getParentId())) {
int sum = deptService.find(new DeptQuery().parentId(deptEntity.getId())).stream().mapToInt(i -> i.getPersonNum()).sum();
DeptEntity parentDept = deptService.get(deptEntity.getParentId());
if (ObjectUtils.isEmpty(parentDept)) {
parentDept.setPersonNum(sum);
deptService.update(parentDept);
updateDeptPersonNum(parentDept);
}
}
}
// //
@GetMapping("updatePersons") @GetMapping("updatePersons")
@UnAuth @UnAuth
public String updatePersons() { public String updatePersons() {
log.info("更新用户手机号码"); log.info("更新用户手机号码");
cacheService.select(1); cacheService.select(1);
Map<String, String> map = cacheService.hgetAll("com:mortals:xhx:module:workman:model:WorkmanEntity"); Map<String, String> map = cacheService.hgetAll("com:mortals:xhx:module:workman:model:WorkmanEntity");
cacheService.select(14); cacheService.select(14);
...@@ -363,7 +282,6 @@ public class TestController { ...@@ -363,7 +282,6 @@ public class TestController {
ImgReq imgReq = new ImgReq(); ImgReq imgReq = new ImgReq();
imgReq.setUrl(staffEntity.getPicUri()); imgReq.setUrl(staffEntity.getPicUri());
imgReq.setServerIndexCode(staffEntity.getServerIndexCode()); imgReq.setServerIndexCode(staffEntity.getServerIndexCode());
//Rest<String> rest = faceService.downloadPicture(imgReq);
try { try {
InputStream in = faceService.callPostImgs(imgReq); InputStream in = faceService.callPostImgs(imgReq);
if (!ObjectUtils.isEmpty(in)) { if (!ObjectUtils.isEmpty(in)) {
...@@ -375,20 +293,6 @@ public class TestController { ...@@ -375,20 +293,6 @@ public class TestController {
} catch (Exception e) { } catch (Exception e) {
log.error("下载出错"); log.error("下载出错");
} }
/*
if (YesNoEnum.YES.getValue() == rest.getCode()) {
byte[] bytes = Base64.decode(rest.getData());
if (!org.springframework.util.ObjectUtils.isEmpty(bytes)) {
InputStream inputStream = new ByteArrayInputStream(bytes);
MultipartFile file = ServletUtils.getMultipartFile(inputStream, "snap.jpg");
String filePath = uploadService.saveFileUpload(file, "file/fileupload/snap/" + DateUtil.today(), null);
staffEntity.setPhotoPath(filePath);
updateList.add(staffEntity);
}
} else {
log.info("download:{}", JSON.toJSONString(rest));
}*/
} }
} }
if (!ObjectUtils.isEmpty(updateList)) { if (!ObjectUtils.isEmpty(updateList)) {
...@@ -462,11 +366,44 @@ public class TestController { ...@@ -462,11 +366,44 @@ public class TestController {
try { try {
attendanceLeaveRecordService.doUpdateRecord(processInstanceId, leaveRecordEntity); attendanceLeaveRecordService.doUpdateRecord(processInstanceId, leaveRecordEntity);
} catch (Exception e) { } catch (Exception e) {
log.error("异常",e); log.error("异常", e);
}
return Rest.ok();
} }
return Rest.ok(); /**
* 同步指定设备人员信息
*
* @param testReq
* @return
*/
@PostMapping("updatePersonsByDevices")
@UnAuth
public String updatePersonsByDevices(@RequestBody TestReq testReq) {
log.info("更新设备人员==>{}",JSON.toJSONString(testReq));
staffService.syncPersonsByDevices(null);
return "ok";
}
/**
* 查询设备考勤事件信息
*
* @param testReq
* @return
*/
@PostMapping("searchEventsByDevices")
@UnAuth
public String searchEventsByDevices(@RequestBody TestReq testReq) {
log.info("查询设备考勤信息==>{}",JSON.toJSONString(testReq));
HikDoorEventReq hikDoorEventReq = new HikDoorEventReq();
hikDoorEventReq.setStartTime(testReq.getCreateTimeStart());
hikDoorEventReq.setEndTime(testReq.getCreateTimeEnd());
DoorEntity doorEntity = doorService.get(testReq.getDeviceId());
doorService.syncDoorDeviceEvents(doorEntity, hikDoorEventReq);
return "ok";
} }
......
...@@ -11,4 +11,8 @@ public class TestReq { ...@@ -11,4 +11,8 @@ public class TestReq {
private Date createTimeStart; private Date createTimeStart;
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
private Date createTimeEnd; private Date createTimeEnd;
private Long deviceId;
} }
...@@ -99,12 +99,9 @@ public class SyncUserTaskImpl implements ITaskExcuteService { ...@@ -99,12 +99,9 @@ public class SyncUserTaskImpl implements ITaskExcuteService {
log.error("同步钉钉usreId失败"); log.error("同步钉钉usreId失败");
} }
} else { } else {
//todo 设备直连 log.info("设备直连同步人员信息");
// deptService.syncDeptByDevice(null);
staffService.syncPersonsByDevices(null); staffService.syncPersonsByDevices(null);
} }
} catch (Exception e) { } catch (Exception e) {
log.error("同步人事异常", e); log.error("同步人事异常", e);
} }
......
...@@ -92,7 +92,7 @@ public class AcsMain { ...@@ -92,7 +92,7 @@ public class AcsMain {
/**登录*/ /**登录*/
login_V40("192.168.0.111","admin","asd12345",(short)8000); login_V40("10.102.221.201","admin","10.102.221.201",(short)8000);
/**远程控门*/ /**远程控门*/
......
...@@ -53,13 +53,9 @@ public class DoorServiceImpl extends AbstractCRUDServiceImpl<DoorDao, DoorEntity ...@@ -53,13 +53,9 @@ public class DoorServiceImpl extends AbstractCRUDServiceImpl<DoorDao, DoorEntity
@Override @Override
public Rest<Void> syncDoorDeviceEvents(DoorEntity doorEntity, HikDoorEventReq hikDoorEventReq) { public Rest<Void> syncDoorDeviceEvents(DoorEntity doorEntity, HikDoorEventReq hikDoorEventReq) {
Rest<List<EventInfo>> listRest = hikDoorService.searchDoorEventsList(hikDoorEventReq, doorEntity); Rest<List<EventInfo>> listRest = hikDoorService.searchDoorEventsList(hikDoorEventReq, doorEntity);
if (listRest.getCode() == YesNoEnum.YES.getValue()) { if (listRest.getCode() == YesNoEnum.YES.getValue()) {
List<EventInfo> list = listRest.getData(); List<EventInfo> list = listRest.getData();
List<AttendanceRecordHikEntity> attRecords = list.stream().map(item -> { List<AttendanceRecordHikEntity> attRecords = list.stream().map(item -> {
AttendanceRecordHikEntity recordHikEntity = new AttendanceRecordHikEntity(); AttendanceRecordHikEntity recordHikEntity = new AttendanceRecordHikEntity();
recordHikEntity.initAttrValue(); recordHikEntity.initAttrValue();
......
...@@ -33,4 +33,21 @@ public interface IHikStaffService { ...@@ -33,4 +33,21 @@ public interface IHikStaffService {
/**
* 获取人员人脸信息
*
* @param personReq
* @return
*/
Rest<UserSearchInfo> getPersonPicByDevices(StaffReq personReq, DoorEntity doorEntity);
/**
* 下发图片到指定设备
*
* @param personReq
* @return
*/
Rest<UserSearchInfo> downPersonPicToDevice(StaffReq personReq, DoorEntity doorEntity);
} }
...@@ -202,4 +202,14 @@ public class HikStaffServiceImpl extends AbstractHikService implements IHikStaff ...@@ -202,4 +202,14 @@ public class HikStaffServiceImpl extends AbstractHikService implements IHikStaff
} }
} }
@Override
public Rest<UserSearchInfo> getPersonPicByDevices(StaffReq personReq, DoorEntity doorEntity) {
return null;
}
@Override
public Rest<UserSearchInfo> downPersonPicToDevice(StaffReq personReq, DoorEntity doorEntity) {
return null;
}
} }
...@@ -352,10 +352,6 @@ public class StaffServiceImpl extends AbstractCRUDCacheServiceImpl<StaffDao, Sta ...@@ -352,10 +352,6 @@ public class StaffServiceImpl extends AbstractCRUDCacheServiceImpl<StaffDao, Sta
//设置初始密码 //设置初始密码
entity.setLoginPwd("123456"); entity.setLoginPwd("123456");
} }
//生成用户id,不与门户服务用户相同
// Long userId = idgeneratorService.getLongId(USER_KEY);
// entity.setId(userId);
userEntity.setLoginName(StrUtil.cleanBlank(entity.getLoginName())); userEntity.setLoginName(StrUtil.cleanBlank(entity.getLoginName()));
userEntity.setRealName(entity.getName()); userEntity.setRealName(entity.getName());
userEntity.setUserType(UserType.WORK_PERSON.getValue()); userEntity.setUserType(UserType.WORK_PERSON.getValue());
...@@ -537,7 +533,6 @@ public class StaffServiceImpl extends AbstractCRUDCacheServiceImpl<StaffDao, Sta ...@@ -537,7 +533,6 @@ public class StaffServiceImpl extends AbstractCRUDCacheServiceImpl<StaffDao, Sta
staffCollect.remove(userInfoItem.getEmployeeNo()); staffCollect.remove(userInfoItem.getEmployeeNo());
} }
StaffEntity staffEntity = this.getExtCache(StrUtil.padPre(userInfoItem.getEmployeeNo(), 8, "0")); StaffEntity staffEntity = this.getExtCache(StrUtil.padPre(userInfoItem.getEmployeeNo(), 8, "0"));
//DeptEntity deptEntity = deptService.selectOne(new DeptQuery().deptCode(userInfoItem.getBelongGroup()));
//设置到默认部门 //设置到默认部门
//判断本地数据是否为空 //判断本地数据是否为空
if (ObjectUtils.isEmpty(staffEntity)) { if (ObjectUtils.isEmpty(staffEntity)) {
......
...@@ -146,3 +146,8 @@ Content-Type: application/json ...@@ -146,3 +146,8 @@ Content-Type: application/json
"windowNum": "123123" "windowNum": "123123"
} }
###设备直连更新人员
GET {{baseUrl}}/test/updatePersonsByDevices
Content-Type: application/json
{}
\ No newline at end of file
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