package com.ruoyi.quartz.task;
|
|
import com.alibaba.fastjson.JSONArray;
|
import com.alibaba.fastjson.JSONObject;
|
import com.ruoyi.common.constant.UrlConstant;
|
import com.ruoyi.common.utils.StringUtils;
|
import com.ruoyi.station.domain.*;
|
import com.ruoyi.station.model.TmpDataModel;
|
import com.ruoyi.station.model.WorkUserModel;
|
import com.ruoyi.station.service.*;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.http.HttpEntity;
|
import org.springframework.http.HttpHeaders;
|
import org.springframework.http.MediaType;
|
import org.springframework.http.ResponseEntity;
|
import org.springframework.stereotype.Component;
|
import org.springframework.util.LinkedMultiValueMap;
|
import org.springframework.util.MultiValueMap;
|
import org.springframework.web.client.RestTemplate;
|
|
import java.util.*;
|
|
|
@Component("operationHeadTask")
|
public class OperationHeadTask {
|
|
@Autowired
|
private IMjHeadsUsersService headsUsersService;
|
@Autowired
|
private IMjFingerprintReadHeadService fingerprintReadHeadService;
|
@Autowired
|
private IMjWorkUserPushService mjWorkUserPushService;
|
@Autowired
|
private IMjWorkUserService workUserService;
|
@Autowired
|
private IMjFingerprintService fingerprintService;
|
|
public void tongBu() {
|
int flag = 0;
|
List<MjHeadsUsers> list = headsUsersService.selectMjHeadsUsersListByWorking();
|
List<MjHeadsUsers> list2 = headsUsersService.selectMjHeadsUsersListByUnWorking();
|
for(MjHeadsUsers headsUsers:list){
|
MjHeadsUsers find = new MjHeadsUsers();
|
find.setUserId(headsUsers.getUserId());
|
find.setHeadId(headsUsers.getHeadId());
|
find.setAuthorizeType(0);
|
List<MjHeadsUsers> mjHeadsUsers = headsUsersService.selectMjHeadsUsersList(find);
|
if(mjHeadsUsers.size()==0){
|
addPush(headsUsers);
|
flag++;
|
}
|
}
|
//System.out.println("推送读头:"+flag+"个");
|
|
int flag2=0;
|
for(MjHeadsUsers headsUsers:list2){
|
MjHeadsUsers find = new MjHeadsUsers();
|
find.setUserId(headsUsers.getUserId());
|
find.setHeadId(headsUsers.getHeadId());
|
find.setAuthorizeType(0);
|
List<MjHeadsUsers> mjHeadsUsers = headsUsersService.selectMjHeadsUsersList(find);
|
if(mjHeadsUsers.size()==0){
|
Thread t = new Thread(new Runnable(){
|
public void run(){
|
MjFingerprintReadHead head = fingerprintReadHeadService.selectMjFingerprintReadHeadById(headsUsers.getHeadId());
|
if(StringUtils.isNotEmpty(head.getIpOrOther()) && StringUtils.isNotEmpty(head.getPort())) {
|
try {
|
mjWorkUserPushService.removeFingerTmp(headsUsers.getUserId().toString(), head.getIpOrOther(), head.getPort());
|
} catch (Exception e) {
|
//System.out.println("把指纹从读头取消授权异常!");
|
}
|
}
|
}
|
});
|
t.start();
|
headsUsersService.deleteMjHeadsUsersById(headsUsers.getId());
|
flag2++;
|
//System.out.println("删除读头:"+headsUsers.getId());
|
}else{
|
headsUsersService.deleteMjHeadsUsersById(headsUsers.getId());
|
flag2++;
|
}
|
}
|
//System.out.println("删除headUser的读头:"+flag2);
|
}
|
|
public void addPush(MjHeadsUsers headsUsers){
|
Thread t = new Thread(new Runnable(){
|
public void run(){
|
MjFingerprintReadHead head = fingerprintReadHeadService.selectMjFingerprintReadHeadById(headsUsers.getHeadId());
|
List<TmpDataModel> tmpDataModels = fingerprintService.selectMjFingerprintListByUserId(headsUsers.getUserId());
|
String users = domainToModel(headsUsers, tmpDataModels);
|
|
int code = addTeamUsers(users,head);
|
if(code==0){
|
//System.out.println("室外读头推送成功"+head.getIpOrOther());
|
}else{
|
//System.out.println("推送失败");
|
}
|
}
|
});
|
t.start();
|
headsUsers.setAuthorizeResult(2);
|
headsUsersService.updateMjHeadsUsers(headsUsers);
|
}
|
|
//增加组用户
|
private Integer addTeamUsers(String value, MjFingerprintReadHead head) {
|
RestTemplate restTemplate = new RestTemplate();
|
HttpHeaders headers = new HttpHeaders();
|
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
|
JSONObject jsonObject = null;
|
|
MultiValueMap<String, Object> map= new LinkedMultiValueMap<>();
|
|
map.add("ip", head.getIpOrOther());
|
map.add("port", head.getPort());
|
map.add("userDatas", value);
|
|
HttpEntity<MultiValueMap<String, Object>> request = new HttpEntity<>(map, headers);
|
try {
|
ResponseEntity<String> response = restTemplate.postForEntity( UrlConstant.ZK_URL+"api/SDZ/ZktAddUserTmpByList", request , String.class );
|
jsonObject = JSONObject.parseObject(response.getBody());
|
//System.out.println(response.getBody());
|
}catch (Exception e) {
|
e.printStackTrace();
|
return 1;
|
}
|
if(jsonObject != null) {
|
return (int)jsonObject.get("code");
|
}
|
return 1;
|
}
|
|
//转换为访问所需model
|
private String domainToModel(MjHeadsUsers headsUsers, List<TmpDataModel> mjFingerprintList) {
|
List<WorkUserModel> wums = new ArrayList<WorkUserModel>();
|
|
WorkUserModel workUserModel = new WorkUserModel();
|
workUserModel.setId(headsUsers.getUserId().toString().trim());
|
MjWorkUser workUser = workUserService.selectMjWorkUserById(headsUsers.getUserId());
|
workUserModel.setName(workUser.getUserName().trim());
|
workUserModel.setPass("");
|
workUserModel.setiPrivilege(0);
|
workUserModel.setFlag("a");
|
workUserModel.setTmpDatas(mjFingerprintList);
|
wums.add(workUserModel);
|
|
JSONArray jsonArray=new JSONArray(Collections.singletonList(wums));
|
String userDatas = jsonArray.toString().substring(1, jsonArray.toString().length()-1);
|
return userDatas;
|
}
|
}
|