Commit dd107ff9 authored by 赵啸非's avatar 赵啸非

修改同步人员接口

parent 0a2b8d27
...@@ -100,12 +100,8 @@ public class SyncUserTaskImpl implements ITaskExcuteService { ...@@ -100,12 +100,8 @@ public class SyncUserTaskImpl implements ITaskExcuteService {
} }
} else { } else {
//todo 设备直连 //todo 设备直连
// deptService.syncDeptByDevice(null);
deptService.syncDeptByDevice(null);
staffService.syncPersonsByDevices(null); staffService.syncPersonsByDevices(null);
} }
......
...@@ -505,6 +505,11 @@ public class StaffServiceImpl extends AbstractCRUDCacheServiceImpl<StaffDao, Sta ...@@ -505,6 +505,11 @@ public class StaffServiceImpl extends AbstractCRUDCacheServiceImpl<StaffDao, Sta
public Rest<Void> syncPersonsByDevices(Context context) { public Rest<Void> syncPersonsByDevices(Context context) {
log.info("同步人员!"); log.info("同步人员!");
//todo 门禁获取人员 //todo 门禁获取人员
StaffQuery staffQuery = new StaffQuery();
staffQuery.setSource(1);
staffQuery.setStatusNotList(Arrays.asList(StaffSatusEnum.离职.getValue()));
Map<String, StaffEntity> staffCollect = this.find(staffQuery).stream().collect(Collectors.toMap(x -> x.getWorkNum(), y -> y, (o, n) -> n));
List<DoorEntity> doorEntities = doorService.find(new DoorQuery()); List<DoorEntity> doorEntities = doorService.find(new DoorQuery());
for (DoorEntity doorEntity : doorEntities) { for (DoorEntity doorEntity : doorEntities) {
StaffReq staffReq = new StaffReq(); StaffReq staffReq = new StaffReq();
...@@ -519,14 +524,7 @@ public class StaffServiceImpl extends AbstractCRUDCacheServiceImpl<StaffDao, Sta ...@@ -519,14 +524,7 @@ public class StaffServiceImpl extends AbstractCRUDCacheServiceImpl<StaffDao, Sta
searchReq.setPageSize(size); searchReq.setPageSize(size);
Rest<UserSearchInfo> rest = hikStaffService.getPersonList(searchReq, doorEntity); Rest<UserSearchInfo> rest = hikStaffService.getPersonList(searchReq, doorEntity);
if (rest.getCode() == YesNoEnum.YES.getValue()) { if (rest.getCode() == YesNoEnum.YES.getValue()) {
//做差集 更新本地用户为离职员工 //做差集 更新本地用户为离职员工
StaffQuery staffQuery = new StaffQuery();
staffQuery.setSource(1);
staffQuery.setStatusNotList(Arrays.asList(StaffSatusEnum.离职.getValue()));
Map<String, StaffEntity> staffCollect = this.find(staffQuery).stream().collect(Collectors.toMap(x -> x.getWorkNum(), y -> y, (o, n) -> n));
UserInfoSearch userInfoSearch = rest.getData().getUserInfoSearch(); UserInfoSearch userInfoSearch = rest.getData().getUserInfoSearch();
List<UserInfoItem> userInfoList = userInfoSearch.getUserInfo(); List<UserInfoItem> userInfoList = userInfoSearch.getUserInfo();
for (UserInfoItem userInfoItem : userInfoList) { for (UserInfoItem userInfoItem : userInfoList) {
...@@ -539,96 +537,87 @@ public class StaffServiceImpl extends AbstractCRUDCacheServiceImpl<StaffDao, Sta ...@@ -539,96 +537,87 @@ 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())); //DeptEntity deptEntity = deptService.selectOne(new DeptQuery().deptCode(userInfoItem.getBelongGroup()));
//设置到默认部门
//判断本地数据是否为空 //判断本地数据是否为空
if (ObjectUtils.isEmpty(staffEntity)) { if (ObjectUtils.isEmpty(staffEntity)) {
//新增员工信息 //新增员工信息
staffEntity = new StaffEntity(); staffEntity = new StaffEntity();
staffEntity.initAttrValue(); staffEntity.initAttrValue();
DeptQuery deptQuery = new DeptQuery();
deptQuery.setParentId(0L);
DeptEntity deptEntity = deptService.selectOne(deptQuery);
if (!ObjectUtils.isEmpty(deptEntity)) { if (!ObjectUtils.isEmpty(deptEntity)) {
staffEntity.setDeptId(deptEntity.getId()); staffEntity.setDeptId(deptEntity.getId());
staffEntity.setDeptName(deptEntity.getDeptName());
} }
staffEntity.setName(userInfoItem.getName()); staffEntity.setName(userInfoItem.getName());
staffEntity.setDeptName(userInfoItem.getBelongGroup());
staffEntity.setGender("male".equals(userInfoItem.getGender()) ? 1 : 2); staffEntity.setGender("male".equals(userInfoItem.getGender()) ? 1 : 2);
staffEntity.setWorkNum(userInfoItem.getEmployeeNo()); staffEntity.setWorkNum(userInfoItem.getEmployeeNo());
staffEntity.setCreateUserId(1L); staffEntity.setCreateUserId(1L);
staffEntity.setCreateTime(new Date()); staffEntity.setCreateTime(new Date());
this.save(staffEntity); this.save(staffEntity);
} else {
//更新
if (!ObjectUtils.isEmpty(deptEntity)) {
staffEntity.setDeptId(deptEntity.getId());
}
staffEntity.setName(userInfoItem.getName());
staffEntity.setDeptName(userInfoItem.getBelongGroup());
staffEntity.setGender("male".equals(userInfoItem.getGender()) ? 1 : 2);
staffEntity.setWorkNum(userInfoItem.getEmployeeNo());
staffEntity.setUpdateUserId(1L);
staffEntity.setUpdateTime(new Date());
this.update(staffEntity);
} }
} }
if (staffCollect.size() > 0) {
//需要将此人员变更为离职
staffCollect.entrySet().stream().forEach(item -> {
String key = item.getKey();
if (!ObjectUtils.isEmpty(key)) {
StaffEntity staff = item.getValue();
staff.setStatus(StaffSatusEnum.离职.getValue());
staff.setUpdateTime(new Date());
staff.setUpdateUserId(1L);
this.update(staff);
//新增离职人员
StaffLeaveEntity staffLeaveEntity = new StaffLeaveEntity();
staffLeaveEntity.initAttrValue();
staffLeaveEntity.setStaffId(staff.getId());
staffLeaveEntity.setStaffName(staff.getName());
staffLeaveEntity.setGender(staff.getGender());
staffLeaveEntity.setBirthday(staff.getBirthday());
staffLeaveEntity.setPhotoPath(staff.getPhotoPath());
staffLeaveEntity.setPhoneNumber(staff.getPhoneNumber());
staffLeaveEntity.setIdCard(staff.getIdCard());
staffLeaveEntity.setWorkNum(staff.getWorkNum());
staffLeaveEntity.setPoliticalstatus(staff.getPoliticalstatus());
staffLeaveEntity.setDeptId(staff.getDeptId());
staffLeaveEntity.setDeptName(staff.getDeptName());
staffLeaveEntity.setJobId(staff.getPositionId());
staffLeaveEntity.setJobName(staff.getPositionName());
staffLeaveEntity.setStaffType(staff.getStaffType());
staffLeaveEntity.setStatus(StaffSatusEnum.离职.getValue());
staffLeaveEntity.setLeaveDate(new Date());
staffLeaveEntity.setLeaveReason("");
staffLeaveEntity.setAuditStatus(AuditStatusEnum.通过.getValue());
staffLeaveEntity.setCreateUserId(1L);
staffLeaveEntity.setCreateTime(new Date());
StaffLeaveQuery staffLeaveQuery = new StaffLeaveQuery();
staffLeaveQuery.setWorkNum(staff.getWorkNum());
int count = staffLeaveService.count(staffLeaveQuery, null);
if (count == 0) {
staffLeaveService.save(staffLeaveEntity);
}
Long[] groudStaffIds = attendanceGroupStaffService.find(new AttendanceGroupStaffQuery().staffId(staff.getId())).stream().map(m -> m.getId()).toArray(Long[]::new);
if (!ObjectUtils.isEmpty(groudStaffIds)) {
attendanceGroupStaffService.remove(groudStaffIds, null);
}
}
});
}
} }
} }
} }
} }
if (staffCollect.size() > 0) {
//需要将此人员变更为离职
staffCollect.entrySet().stream().forEach(item -> {
String key = item.getKey();
if (!ObjectUtils.isEmpty(key)) {
StaffEntity staff = item.getValue();
staff.setStatus(StaffSatusEnum.离职.getValue());
staff.setUpdateTime(new Date());
staff.setUpdateUserId(1L);
this.update(staff);
//新增离职人员
StaffLeaveEntity staffLeaveEntity = new StaffLeaveEntity();
staffLeaveEntity.initAttrValue();
staffLeaveEntity.setStaffId(staff.getId());
staffLeaveEntity.setStaffName(staff.getName());
staffLeaveEntity.setGender(staff.getGender());
staffLeaveEntity.setBirthday(staff.getBirthday());
staffLeaveEntity.setPhotoPath(staff.getPhotoPath());
staffLeaveEntity.setPhoneNumber(staff.getPhoneNumber());
staffLeaveEntity.setIdCard(staff.getIdCard());
staffLeaveEntity.setWorkNum(staff.getWorkNum());
staffLeaveEntity.setPoliticalstatus(staff.getPoliticalstatus());
staffLeaveEntity.setDeptId(staff.getDeptId());
staffLeaveEntity.setDeptName(staff.getDeptName());
staffLeaveEntity.setJobId(staff.getPositionId());
staffLeaveEntity.setJobName(staff.getPositionName());
staffLeaveEntity.setStaffType(staff.getStaffType());
staffLeaveEntity.setStatus(StaffSatusEnum.离职.getValue());
staffLeaveEntity.setLeaveDate(new Date());
staffLeaveEntity.setLeaveReason("");
staffLeaveEntity.setAuditStatus(AuditStatusEnum.通过.getValue());
staffLeaveEntity.setCreateUserId(1L);
staffLeaveEntity.setCreateTime(new Date());
StaffLeaveQuery staffLeaveQuery = new StaffLeaveQuery();
staffLeaveQuery.setWorkNum(staff.getWorkNum());
int count = staffLeaveService.count(staffLeaveQuery, null);
if (count == 0) {
staffLeaveService.save(staffLeaveEntity);
}
Long[] groudStaffIds = attendanceGroupStaffService.find(new AttendanceGroupStaffQuery().staffId(staff.getId())).stream().map(m -> m.getId()).toArray(Long[]::new);
if (!ObjectUtils.isEmpty(groudStaffIds)) {
attendanceGroupStaffService.remove(groudStaffIds, null);
}
}
});
}
return Rest.ok(); return Rest.ok();
} }
@Override @Override
public Rest<Void> syncRegisterUsersPhotos() { public Rest<Void> syncRegisterUsersPhotos() {
List<StaffEntity> staffList = this.find(new StaffQuery().source(1)).stream() List<StaffEntity> staffList = this.find(new StaffQuery().source(1)).stream()
......
...@@ -33,6 +33,7 @@ import com.mortals.xhx.module.staff.model.vo.StaffCheckAuthorizePdu; ...@@ -33,6 +33,7 @@ import com.mortals.xhx.module.staff.model.vo.StaffCheckAuthorizePdu;
import com.mortals.xhx.module.staff.model.vo.StaffInfoVo; import com.mortals.xhx.module.staff.model.vo.StaffInfoVo;
import com.mortals.xhx.module.staff.service.StaffService; import com.mortals.xhx.module.staff.service.StaffService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.util.ObjectUtils; import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
...@@ -70,6 +71,9 @@ public class StaffController extends BaseCRUDJsonBodyMappingController<StaffServ ...@@ -70,6 +71,9 @@ public class StaffController extends BaseCRUDJsonBodyMappingController<StaffServ
@Autowired @Autowired
private AttendanceLeaveRecordService leaveRecordService; private AttendanceLeaveRecordService leaveRecordService;
@Value("${hik.host:}")
protected String hikhost;
public StaffController() { public StaffController() {
super.setModuleDesc("员工基本信息"); super.setModuleDesc("员工基本信息");
...@@ -227,11 +231,15 @@ public class StaffController extends BaseCRUDJsonBodyMappingController<StaffServ ...@@ -227,11 +231,15 @@ public class StaffController extends BaseCRUDJsonBodyMappingController<StaffServ
JSONObject jsonObject = new JSONObject(); JSONObject jsonObject = new JSONObject();
String busiDesc = this.getModuleDesc() + "同步"; String busiDesc = this.getModuleDesc() + "同步";
try { try {
//同步部门 if (!ObjectUtils.isEmpty(hikhost)) {
deptService.syncDept(getContext()); //同步部门
Rest<Void> rest = this.service.syncPersons(getContext()); deptService.syncDept(getContext());
if (rest.getCode() == YesNoEnum.NO.getValue()) { Rest<Void> rest = this.service.syncPersons(getContext());
throw new AppException("同步异常!"); if (rest.getCode() == YesNoEnum.NO.getValue()) {
throw new AppException("同步异常!");
}
}else{
this.service.syncPersonsByDevices(null);
} }
recordSysLog(request, busiDesc + " 【成功】"); recordSysLog(request, busiDesc + " 【成功】");
jsonObject.put(KEY_RESULT_CODE, VALUE_RESULT_SUCCESS); jsonObject.put(KEY_RESULT_CODE, VALUE_RESULT_SUCCESS);
......
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