123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277 |
- /**
- * Copyright (C), 2022-04-28
- * FileName: UserTask
- * Author: wanglongda
- * Date: 2022/4/28 12:03
- * Description: 同步用户
- */
- package me.zhengjie.modules.quartz.task;/**
- * Created Name: wanglongda
- * Created Time: 2022/4/28 12:03
- * Description: iot-zhyd
- */
- import cn.hutool.http.HttpRequest;
- import com.alibaba.fastjson.JSONArray;
- import com.alibaba.fastjson.JSONObject;
- import lombok.RequiredArgsConstructor;
- import lombok.extern.slf4j.Slf4j;
- import me.zhengjie.modules.dm.user.domain.DmUser;
- import me.zhengjie.modules.dm.user.repository.DmUserRepository;
- import me.zhengjie.modules.system.domain.Dept;
- import me.zhengjie.modules.system.domain.Job;
- import me.zhengjie.modules.system.domain.Role;
- import me.zhengjie.modules.system.domain.User;
- import me.zhengjie.modules.system.repository.DeptRepository;
- import me.zhengjie.modules.system.repository.UserRepository;
- import me.zhengjie.utils.SecurityUtils;
- import org.springframework.beans.factory.annotation.Value;
- import org.springframework.stereotype.Component;
- import org.springframework.util.ObjectUtils;
- import java.util.HashSet;
- import java.util.Map;
- import java.util.Set;
- /**
- * <功能简要> <br>
- * <同步用户>
- *
- * @Author wanglongda
- * @createTime 2022/4/28 12:03
- * @Version 1.0.0
- */
- @Component
- @Slf4j
- @RequiredArgsConstructor
- public class UserTask {
- @Value("${zkApiUrl}")
- private String zkApiUrl;
- @Value("${deptApi}")
- private String deptApi;
- @Value("${userApi}")
- private String userApi;
- @Value("${headerKey}")
- private String header_key;
- @Value("${key}")
- private String key;
- private final UserRepository userRepository;
- private final DmUserRepository dmUserRepository;
- private final DeptRepository deptRepository;
- public void runDept(){
- log.info("deptsync 执行开始");
- deptSyncAll();
- log.info("deptsync 执行结束");
- }
- public void runUser(){
- log.info("usersync 执行开始");
- userSyncAll();
- log.info("usersync 执行结束");
- }
- /**
- * 部门数据同步(全量)
- */
- private void deptSyncAll() {
- // String api = "/api/thirdparty/v1/user/getzkdeps";
- //计算总页数
- int total = getDatas(deptApi,null,0,100,2).getJSONObject("data").getInteger("totalElements");
- int pageSize = 100;
- int pageTotal = (total / pageSize);
- if (total % pageSize != 0) {
- pageTotal++;
- }
- log.info("pageTotal:"+pageTotal);
- //按页获取
- for (int k = 0; k < pageTotal; k++) {
- JSONObject json = getDatas(deptApi,null,k,pageSize,2);
- JSONObject data = json.getJSONObject("data");
- JSONArray content = data.getJSONArray("content");
- for (int i = 0; i < content.size(); i++) {
- Dept dept = JSONObject.parseObject(content.getString(i), Dept.class);
- deptRepository.save(dept);
- }
- }
- }
- /**
- * 人员数据同步(全量)
- */
- private void userSyncAll() {
- // String api = "/api/thirdparty/v1/user/getZkSysUsers";
- //计算总页数
- int total = getDatas(userApi,null,0,1,2).getJSONObject("data").getInteger("totalElements");
- int pageSize = 10;
- int pageTotal = (total / pageSize);
- if (total % pageSize != 0) {
- pageTotal++;
- }
- log.info("pageTotal:"+pageTotal);
- //按页获取
- for (int k = 0; k <= pageTotal; k++) {
- JSONObject json = getDatas(userApi, null,k,pageSize,1);
- JSONObject data = json.getJSONObject("data");
- JSONArray content = data.getJSONArray("content");
- for (int i = 0; i < content.size(); i++) {
- User user = new User();
- JSONObject userData = content.getJSONObject(i);
- user.setId(userData.getString("id"));
- if(userData.containsKey("username")) {
- user.setUsername(userData.getString("username"));
- }
- user.setPassword(userData.getString("password"));
- user.setOrgPassword("12345678");
- if(userData.containsKey("jobs")) {
- Set<Job> jobs = new HashSet<>(JSONArray.parseArray(userData.getString("jobs"), Job.class));
- user.setJobs(jobs);
- }
- if(userData.containsKey("roles")) {
- Set<Role> roles = new HashSet<>(JSONArray.parseArray(userData.getString("roles"), Role.class));
- user.setRoles(roles);
- }
- if(userData.containsKey("gender")) {
- user.setGender(userData.getString("gender"));
- }
- if(userData.containsKey("dept")) {
- user.setDept(JSONObject.parseObject(userData.getString("dept"), Dept.class));
- }
- if(userData.containsKey("email")) {
- user.setEmail(userData.getString("email"));
- }
- if(userData.containsKey("nickName")) {
- user.setNickName(userData.getString("nickName"));
- }
- if(userData.containsKey("phone")) {
- user.setPhone(userData.getString("phone"));
- }
- if(userData.containsKey("enabled")) {
- user.setEnabled(userData.getBoolean("enabled"));
- }
- if(userData.containsKey("userRootGroupId")) {
- user.setUserRootGroupId(userData.getString("userRootGroupId"));
- }
- if(userData.containsKey("userRootGroupName")) {
- user.setUserRootGroupName(userData.getString("userRootGroupName"));
- }
- DmUser dmUser = new DmUser();
- dmUser.setDept(user.getDept());
- dmUser.setId(user.getId());
- dmUser.setEmail(user.getEmail());
- dmUser.setContacts(user.getPhone());
- dmUser.setName(user.getNickName());
- dmUser.setSex(user.getGender());
- if(!ObjectUtils.isEmpty(userData.getJSONObject("dmUser"))){
- JSONObject dmUserObject = userData.getJSONObject("dmUser");
- if(dmUserObject.containsKey("cardid")) {
- dmUser.setCardId(dmUserObject.getString("cardid"));
- }
- if(dmUserObject.containsKey("userNumber")) {
- dmUser.setUserNumber(dmUserObject.getString("userNumber"));
- }
- if(dmUserObject.containsKey("type")) {
- dmUser.setUsertype(dmUserObject.getString("type"));
- }
- if(dmUserObject.containsKey("faceid")) {
- dmUser.setPicture(dmUserObject.getString("faceid"));
- }
- }
- //判断是否是新离职的员工,如果是则修改门禁和停车权限
- // if(!user.getEnabled()){
- // UserDto userDto = userService.findById(user.getId());
- // if(!ObjectUtils.isEmpty(userDto)){
- // if(userDto.getEnabled()){
- // //删除门禁一楼进入设备权限
- // JSONArray deviceInfoArray = new JSONArray();
- // List<String> deviceList = Arrays.asList(deviceInfo.split(","));
- // for(String device : deviceList){
- // log.info("device:"+device);
- // DmRoomDevice dmRoomDevice = dmRoomDeviceService.findByCode(device).get(0);
- // if(!ObjectUtils.isEmpty(dmRoomDevice)){
- // JSONObject object = new JSONObject();
- // object.put("serialNumber",dmRoomDevice.getCode());
- // object.put("doorID",dmRoomDevice.getDoorID());
- // object.put("deviceType",dmRoomDevice.getDeviceType());
- // deviceInfoArray.add(object);
- // }
- // }
- // JSONObject device = new JSONObject();
- // device.put("userId",dmUser.getUserNumber());
- // device.put("operateType","2");
- // device.put("deviceInfo",deviceInfoArray);
- // log.info("device:"+device.toJSONString());
- // String msg = HttpRequest.post(synchronizationDeviceUrl).form("device", device.toJSONString()).execute().body();
- // log.info("msg:"+msg);
- //
- // DmPlateNumberQueryCriteria dmPlateNumberQueryCriteria = new DmPlateNumberQueryCriteria();
- // dmPlateNumberQueryCriteria.setUserNumber(dmUser.getId());
- // List<DmPlateNumberDto> dmPlateNumberDtoList = dmPlateNumberService.queryAll(dmPlateNumberQueryCriteria);
- // if(!ObjectUtils.isEmpty(dmPlateNumberDtoList)){
- // for(DmPlateNumberDto dmPlateNumberDto : dmPlateNumberDtoList){
- // dmPlateNumberService.deleteYuePlate(dmPlateNumberDto.getPlateNumber());
- //
- // JSONObject generateProcJson = new JSONObject();
- // generateProcJson.put("name",dmPlateNumberDto.getUserNumber().getName());
- // generateProcJson.put("phone",dmPlateNumberDto.getUserNumber().getContacts());
- // generateProcJson.put("carplate",dmPlateNumberDto.getPlateNumber());
- // SimpleDateFormat formater2 = new SimpleDateFormat("yyyy-MM-dd");
- // generateProcJson.put("startdate",formater2.format(dmPlateNumberDto.getStartTime()));
- // generateProcJson.put("enddate",formater2.format(dmPlateNumberDto.getEndTime()));
- // generateProcJson.put("cardtype","A");
- // generateProcJson.put("controllers", "3,4");
- // String generateProcData = BeanMapUtils.doPostForm(yueUrl,generateProcJson);
- // JSONObject generateProcDataJson = JSONObject.parseObject(generateProcData);
- // System.out.println("generateProcJson"+generateProcJson);
- // System.out.println("generateProcDataJson:"+generateProcDataJson);
- // }
- // }
- //
- // }
- // }
- // }
- DmUser newDmUser = dmUserRepository.save(dmUser);
- user.setDmUser(newDmUser);
- userRepository.save(user);
- }
- }
- }
- private JSONObject getDatas(String api,JSONArray time, int pageNum, int pageSize,int type) {
- Map<String,Object> tokenData = SecurityUtils.getToken(key);
- JSONObject body = new JSONObject();
- body.put("timestamp",tokenData.get("timestamp"));
- body.put("nonce",tokenData.get("nonce"));
- JSONObject query = new JSONObject();
- if(type == 1){
- query.put("updateTime",time);
- }
- body.put("query",query);
- String res = HttpRequest.get(zkApiUrl + api+"?page="+pageNum+"&size="+pageSize)
- .header(header_key, tokenData.get("token").toString())
- .body(body.toString()).execute().body();
- JSONObject json = JSONObject.parseObject(res);
- log.info("json:"+json);
- return json;
- }
- }
|