package com.ruoyi.quartz.task; import com.ruoyi.station.domain.*; import com.ruoyi.station.service.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.util.*; /** * 定时扫描工单,如有生效工单则推送对应负责人到控制板 */ @Component("pushUserInfoTask") public class PushUserInfoTask { @Autowired private IMjHeadsUsersService iMjHeadsUsersService; public void pushUser() { MjWorkOrder mjWorkOrder = new MjWorkOrder(); mjWorkOrder.setEndTime(new Date()); iMjHeadsUsersService.deleteByEndTime(mjWorkOrder); //System.out.println("删除过期扫描完成"); } /*public void pushUser() { checkOrderValid(); checkOrderInvalid(); } //监测生效工单 private void checkOrderValid() { MjDataPushLog mjDataPushLog = new MjDataPushLog(); List mjWorkOrderList = mjWorkOrderService.selectMjWorkOrderByDate(); //从无效工单中获取有效工单 List mjWorkUserList = new ArrayList<>(); List AreaIdList = new ArrayList<>(); if(mjWorkOrderList != null && mjWorkOrderList.size() > 0) { for(MjWorkOrder mjWorkOrder : mjWorkOrderList) { //日志记录 mjDataPushLog.setId(IdUtils.getUUIDInOrderId()+""); mjDataPushLog.setType(mjWorkOrder.getType()); mjDataPushLog.setTypeName(mjWorkOrder.getTypeName()); mjDataPushLog.setWorkType(mjWorkOrder.getWorkType()); mjDataPushLog.setOrderId(mjWorkOrder.getId()); mjDataPushLog.setOrderName(mjWorkOrder.getOrderName()); mjDataPushLog.setTaskName(mjWorkOrder.getTaskName()); mjDataPushLog.setOrganizationId(mjWorkOrder.getOrganizationId()); mjDataPushLog.setOrderName(mjWorkOrder.getOrganizationName()); mjDataPushLog.setOpenMode(mjWorkOrder.getOpenMode()); mjDataPushLog.setStartTime(mjWorkOrder.getStartTime()); mjDataPushLog.setEndTime(mjWorkOrder.getEndTime()); mjDataPushLog.setCreateTime(new Date()); mjDataPushLog.setCreateBy(mjWorkOrder.getCreateBy()); if(mjWorkOrder != null && mjWorkOrder.getId() != null) { MjOrderDetail mjOrderDetail = new MjOrderDetail(); mjOrderDetail.setOrderId(mjWorkOrder.getId()); List mjOrderDetailList = mjOrderDetailService.selectMjOrderDetailList(mjOrderDetail); //获取工单对应详情信息 if(mjOrderDetailList != null && mjOrderDetailList.size() > 0) { String togetherUserIds = ""; for(MjOrderDetail mjOrderDetail1 : mjOrderDetailList) { if(mjOrderDetail1 != null && mjOrderDetail1.getUserId() != null) { if(mjOrderDetail1.getAreaId() != null && StringUtils.isNotEmpty(mjOrderDetail1.getAreaId())) { AreaIdList.add(mjOrderDetail1.getAreaId()); } mjDataPushLog.setAreaId(mjOrderDetail1.getAreaId()); mjDataPushLog.setAreaName(mjOrderDetail1.getAreaName()); mjDataPushLog.setDoorId(mjOrderDetail1.getDoorId()); mjDataPushLog.setOperationType(0); //新增 mjDataPushLog.setAuthorizeType("0"); //增加授权 MjWorkUser mjWorkUser = mjWorkUserService.selectMjWorkUserById(mjOrderDetail1.getUserId()); //获取负责人 if(mjWorkUser != null) { // if(mjOrderDetailList.get(0).getId() == mjOrderDetail1.getId() && mjWorkUser != null) { //第一人为主负责人 if(mjOrderDetail1.getMainUser() != null ) { if(mjOrderDetail1.getMainUser() == 1){ //第一人为主负责人 mjDataPushLog.setUserId(mjWorkUser.getId().toString()); mjDataPushLog.setOperator(mjOrderDetail.getUserName()); mjWorkUser.setFlag("a"); }else { //拼接同行人id if(togetherUserIds == "") { togetherUserIds+=mjWorkUser.getId().toString(); }else { togetherUserIds+=","+mjWorkUser.getId().toString(); } // mjDataPushLog.setUserId(mjWorkUser.getId().toString()); mjWorkUser.setFlag("x"); } } mjWorkUserList.add(mjWorkUser); } } } mjDataPushLog.setTogetherUserIds(togetherUserIds); } } } } if(mjWorkUserList.size() > 0) { List workUserModelList = new ArrayList<>(); for(MjWorkUser mjWorkUser : mjWorkUserList) { if(mjWorkUser != null && mjWorkUser.getId() != null) { List mjFingerprintList = mjFingerprintService.selectMjFingerprintListByUserId(mjWorkUser.getId()); //获取负责人指纹信息 WorkUserModel workUserModel = domainToModel(mjWorkUser, mjFingerprintList); workUserModelList.add(workUserModel); } } JSONArray jsonArray=new JSONArray(Collections.singletonList(workUserModelList)); String userDatas = jsonArray.toString().substring(1, jsonArray.toString().length()-1); addOrDelUserList(mjDataPushLog, userDatas, AreaIdList, true); } } //监测失效工单 private void checkOrderInvalid() { MjDataPushLog mjDataPushLog = new MjDataPushLog(); List mjWorkOrderList = mjWorkOrderService.selectMjWorkOrderByDateForInvalid(); //从有效工单中获取无效工单 List mjWorkUserList = new ArrayList<>(); List AreaIdList = new ArrayList<>(); if(mjWorkOrderList != null && mjWorkOrderList.size() > 0) { for(MjWorkOrder mjWorkOrder : mjWorkOrderList) { //日志记录 mjDataPushLog.setId(IdUtils.getUUIDInOrderId()+""); mjDataPushLog.setType(mjWorkOrder.getType()); mjDataPushLog.setTypeName(mjWorkOrder.getTypeName()); mjDataPushLog.setWorkType(mjWorkOrder.getWorkType()); mjDataPushLog.setOrderId(mjWorkOrder.getId()); mjDataPushLog.setOrderName(mjWorkOrder.getOrderName()); mjDataPushLog.setTaskName(mjWorkOrder.getTaskName()); mjDataPushLog.setOrganizationId(mjWorkOrder.getOrganizationId()); mjDataPushLog.setOrderName(mjWorkOrder.getOrganizationName()); mjDataPushLog.setOpenMode(mjWorkOrder.getOpenMode()); mjDataPushLog.setStartTime(mjWorkOrder.getStartTime()); mjDataPushLog.setEndTime(mjWorkOrder.getEndTime()); mjDataPushLog.setCreateTime(new Date()); mjDataPushLog.setCreateBy(mjWorkOrder.getCreateBy()); if(mjWorkOrder != null && mjWorkOrder.getId() != null) { MjOrderDetail mjOrderDetail = new MjOrderDetail(); mjOrderDetail.setOrderId(mjWorkOrder.getId()); List mjOrderDetailList = mjOrderDetailService.selectMjOrderDetailList(mjOrderDetail); //获取工单对应详情信息 if(mjOrderDetailList != null && mjOrderDetailList.size() > 0) { String userIds = ""; for(MjOrderDetail mjOrderDetail1 : mjOrderDetailList) { if(mjOrderDetail1.getAreaId() != null && StringUtils.isNotEmpty(mjOrderDetail1.getAreaId())) { AreaIdList.add(mjOrderDetail1.getAreaId()); } mjDataPushLog.setAreaId(mjOrderDetail1.getAreaId()); mjDataPushLog.setAreaName(mjOrderDetail1.getAreaName()); mjDataPushLog.setDoorId(mjOrderDetail1.getDoorId()); mjDataPushLog.setOperationType(2); //删除 mjDataPushLog.setAuthorizeType("1"); //取消授权 if(mjOrderDetail1 != null && mjOrderDetail1.getUserId() != null) { MjWorkUser mjWorkUser = mjWorkUserService.selectMjWorkUserById(mjOrderDetail1.getUserId()); //获取负责人 if(mjWorkUser != null) { if(userIds == "") { userIds += mjWorkUser.getId().toString(); }else { userIds += "," + mjWorkUser.getId().toString(); } } } } mjDataPushLog.setTogetherUserIds(userIds); //包含负责人(删除的记录包含负责人,添加的只有同行人) addOrDelUserList(mjDataPushLog, userIds, AreaIdList, false); } } } } } //添加、删除工单负责人 private void addOrDelUserList(MjDataPushLog mjDataPushLog, String value, List AreaIdList, boolean isAdd) { RestTemplate restTemplate = new RestTemplate(); HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED); if(AreaIdList.size() > 0) { ResponseEntity response = null; for(String areaId : AreaIdList) { String[] areaIds = areaId.split(","); if(areaIds != null && AreaIdList.size() > 0) { for(String aId : areaIds) { MjFingerprintReadHead fingerprintReadHead = new MjFingerprintReadHead(); fingerprintReadHead.setAreaId(aId); List fingerprintReadHeads = mjFingerprintReadHeadService.selectMjFingerprintReadHeadList(fingerprintReadHead); for(MjFingerprintReadHead head : fingerprintReadHeads) { MultiValueMap map= new LinkedMultiValueMap<>(); // map.add("ip",UrlConstant.FIGERPRINT_URL); // map.add("port",UrlConstant.FIGERPRINT_PORT); map.add("ip", head.getIpOrOther()); map.add("port", head.getPort()); map.add("userDatas", value); HttpEntity> request = new HttpEntity<>(map, headers); try { if(head.getNewOldStatus() == 0) { //新设备 if(isAdd) { response = restTemplate.postForEntity( UrlConstant.ZK_URL+"api/SDZ/ZktAddUserToOpenDoor", request , String.class ); }else { response = restTemplate.postForEntity( UrlConstant.ZK_URL+"api/SDZ/ZktdelUserToOpenDoor", request , String.class ); } }else if(head.getNewOldStatus() == 1) { //旧设备 if(isAdd) { response = restTemplate.postForEntity( UrlConstant.ZK_URL+"api/SDZ1/ZktAddUserToOpenDoor", request , String.class ); }else { response = restTemplate.postForEntity( UrlConstant.ZK_URL+"api/SDZ1/ZktdelUserToOpenDoor", request , String.class ); } } }catch (Exception e) { e.printStackTrace(); mjDataPushLog.setAuthorizeResult("2"); //授权失败 mjDataPushLogService.insertMjDataPushLog(mjDataPushLog); //日志 return; } System.out.println(response.getBody()); JSONObject jsonObject = JSONObject.parseObject(response.getBody()); System.out.println(jsonObject.get("code")); if(jsonObject.get("code").toString().equals("0")) { // regEvent(head.getIpOrOther(), head.getPort(), "http://localhost:8088/api/visit/addVisitInfo/"); //注册 mjDataPushLog.setAuthorizeResult("1"); //授权成功 MjWorkOrder mjWorkOrder = new MjWorkOrder(); mjWorkOrder.setId(mjDataPushLog.getOrderId()); if(isAdd) { mjWorkOrder.setValidFlag(1); //工单状态生效 }else { mjWorkOrder.setValidFlag(0); //工单状态失效 } mjWorkOrderService.updateMjWorkOrder(mjWorkOrder); }else { mjDataPushLog.setAuthorizeResult("2"); //授权失败 } } } } } if(response != null) { mjDataPushLogService.insertMjDataPushLog(mjDataPushLog); //日志 } } } //转换为访问所需model private WorkUserModel domainToModel(MjWorkUser mjWorkUser, List mjFingerprintList) { WorkUserModel workUserModel = new WorkUserModel(); workUserModel.setId(mjWorkUser.getId().toString()); workUserModel.setName(mjWorkUser.getUserName()); workUserModel.setPass(mjWorkUser.getPass()); workUserModel.setiPrivilege(Integer.valueOf(mjWorkUser.getiPrivilege())); workUserModel.setFlag(mjWorkUser.getFlag()); workUserModel.setTmpDatas(mjFingerprintList); return workUserModel; } //读头注册监听 private Integer regEvent(String ip, String port, String url) { RestTemplate restTemplate = new RestTemplate(); HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED); MultiValueMap map= new LinkedMultiValueMap<>(); map.add("ip", ip); map.add("port", port); map.add("url", url); HttpEntity> request = new HttpEntity<>(map, headers); ResponseEntity response = restTemplate.postForEntity( UrlConstant.ZK_URL+"api/SDZ/ZktRegEvent", request , String.class ); JSONObject jsonObject = JSONObject.parseObject(response.getBody()); return (int)jsonObject.get("code"); }*/ }