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 list = headsUsersService.selectMjHeadsUsersListByWorking(); List list2 = headsUsersService.selectMjHeadsUsersListByUnWorking(); for(MjHeadsUsers headsUsers:list){ MjHeadsUsers find = new MjHeadsUsers(); find.setUserId(headsUsers.getUserId()); find.setHeadId(headsUsers.getHeadId()); find.setAuthorizeType(0); List 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 = 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 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 map= new LinkedMultiValueMap<>(); map.add("ip", head.getIpOrOther()); map.add("port", head.getPort()); map.add("userDatas", value); HttpEntity> request = new HttpEntity<>(map, headers); try { ResponseEntity 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 mjFingerprintList) { List wums = new ArrayList(); 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; } }