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<MjWorkOrder> mjWorkOrderList = mjWorkOrderService.selectMjWorkOrderByDate(); //从无效工单中获取有效工单
|
|
List<MjWorkUser> mjWorkUserList = new ArrayList<>();
|
List<String> 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<MjOrderDetail> 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<WorkUserModel> workUserModelList = new ArrayList<>();
|
for(MjWorkUser mjWorkUser : mjWorkUserList) {
|
if(mjWorkUser != null && mjWorkUser.getId() != null) {
|
|
List<TmpDataModel> 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<MjWorkOrder> mjWorkOrderList = mjWorkOrderService.selectMjWorkOrderByDateForInvalid(); //从有效工单中获取无效工单
|
|
List<MjWorkUser> mjWorkUserList = new ArrayList<>();
|
List<String> 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<MjOrderDetail> 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<String> AreaIdList, boolean isAdd) {
|
RestTemplate restTemplate = new RestTemplate();
|
HttpHeaders headers = new HttpHeaders();
|
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
|
|
if(AreaIdList.size() > 0) {
|
ResponseEntity<String> 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<MjFingerprintReadHead> fingerprintReadHeads = mjFingerprintReadHeadService.selectMjFingerprintReadHeadList(fingerprintReadHead);
|
for(MjFingerprintReadHead head : fingerprintReadHeads) {
|
MultiValueMap<String, Object> 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<MultiValueMap<String, Object>> 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<TmpDataModel> 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<String, String> map= new LinkedMultiValueMap<>();
|
map.add("ip", ip);
|
map.add("port", port);
|
map.add("url", url);
|
|
HttpEntity<MultiValueMap<String, String>> request = new HttpEntity<>(map, headers);
|
ResponseEntity<String> response = restTemplate.postForEntity( UrlConstant.ZK_URL+"api/SDZ/ZktRegEvent", request , String.class );
|
JSONObject jsonObject = JSONObject.parseObject(response.getBody());
|
|
return (int)jsonObject.get("code");
|
}*/
|
}
|