package com.xiaopeng.operation.task;
|
|
|
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSONObject;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.xiaopeng.api.model.operation.XpElectronicFenceArea;
|
import com.xiaopeng.api.model.operation.XpPoint;
|
import com.xiaopeng.operation.service.IXpElectronicFenceAreaService;
|
import com.xiaopeng.operation.service.IXpElectronicFenceService;
|
import com.xiaopeng.operation.service.XpPointService;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.scheduling.annotation.Scheduled;
|
import org.springframework.stereotype.Component;
|
|
import javax.annotation.Resource;
|
import java.util.ArrayList;
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
import java.util.stream.Collectors;
|
|
|
/**
|
* 定时任务工具类
|
*/
|
@Component
|
@Slf4j
|
public class TaskUtil {
|
@Resource
|
private XpPointService xpPointService;
|
@Resource
|
|
private IXpElectronicFenceAreaService xpElectronicFenceAreaService;
|
@Resource
|
|
private IXpElectronicFenceService xpElectronicFenceService;
|
// 每隔1分钟执行一次 如果运营区域不处于启用状态 将关联的点位状态修改为已失效
|
@Scheduled(fixedRate = 60 * 1000)
|
public void checkPointInFenceArea() {
|
List<XpElectronicFenceArea> electronicFenceAreaList = xpElectronicFenceAreaService.lambdaQuery().eq(XpElectronicFenceArea::getAreaStatus, 2)
|
.list();
|
if (!electronicFenceAreaList.isEmpty()){
|
List<Long> areaIds = electronicFenceAreaList.stream().map(XpElectronicFenceArea::getId)
|
.collect(Collectors.toList());
|
if (!areaIds.isEmpty()){
|
List<XpPoint> xpPoints = xpPointService.lambdaQuery()
|
.in(XpPoint::getElectronicAreaId, areaIds)
|
.list();
|
for (XpPoint xpPoint : xpPoints) {
|
xpPoint.setElectronicAreaId(null);
|
xpPoint.setOperationStatus(4);
|
}
|
xpPointService.updateBatchById(xpPoints);
|
}
|
}
|
}
|
// 每隔1分钟执行一次 如果电子围栏失效,所属点位和运营区域都要改成失效
|
@Scheduled(fixedRate = 60 * 1000)
|
public void checkFenceAreaStatus() {
|
List<XpElectronicFenceArea> electronicFenceAreaList = xpElectronicFenceAreaService.lambdaQuery().eq(XpElectronicFenceArea::getAreaStatus, 2)
|
.list();
|
if (!electronicFenceAreaList.isEmpty()){
|
List<Long> areaIds = electronicFenceAreaList.stream().map(XpElectronicFenceArea::getId)
|
.collect(Collectors.toList());
|
if (!areaIds.isEmpty()){
|
List<XpPoint> xpPoints = xpPointService.lambdaQuery()
|
.in(XpPoint::getElectronicAreaId, areaIds)
|
.list();
|
for (XpPoint xpPoint : xpPoints) {
|
xpPoint.setElectronicAreaId(null);
|
xpPoint.setOperationStatus(4);
|
}
|
xpPointService.updateBatchById(xpPoints);
|
}
|
}
|
}
|
|
|
}
|