基建大屏
This commit is contained in:
parent
d6d5456157
commit
ffac33b47b
@ -29,6 +29,7 @@ import org.apache.commons.collections.MapUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
@ -177,7 +178,9 @@ public class BridgeErectMachineDataServiceImpl extends ServiceImpl<BridgeErectMa
|
||||
private double randomDouble(double min, double max) {
|
||||
Random random = new Random();
|
||||
double randomInRange = min + (max - min) * random.nextDouble();
|
||||
return randomInRange;
|
||||
BigDecimal bd = new BigDecimal(randomInRange);
|
||||
double A = bd.setScale(0, bd.ROUND_HALF_UP).doubleValue();
|
||||
return A;
|
||||
}
|
||||
|
||||
private QueryWrapper<BridgeErectMachineData> getQueryWrapper(HashMap<String, Object> paramMap) {
|
||||
|
||||
@ -181,6 +181,9 @@ public class CarInfo implements Serializable {
|
||||
@ApiModelProperty(value = "从审批流过来")
|
||||
private Boolean fromFlow;
|
||||
|
||||
@TableField(exist = false)
|
||||
@ApiModelProperty(value = "1在岗 2离岗")
|
||||
private java.lang.Integer inserviceType;
|
||||
public String toExistString() {
|
||||
return "CarInfo{" +
|
||||
", enterFactoryEndDate='" + enterFactoryEndDate + '\'' +
|
||||
|
||||
@ -25,6 +25,7 @@ import com.zhgd.jeecg.common.system.query.QueryGenerator;
|
||||
import com.zhgd.xmgl.util.PageUtil;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.*;
|
||||
|
||||
import com.zhgd.xmgl.util.RefUtil;
|
||||
@ -171,6 +172,8 @@ public class PaveCompactionRecordServiceImpl extends ServiceImpl<PaveCompactionR
|
||||
private double randomDouble(double min, double max) {
|
||||
Random random = new Random();
|
||||
double randomInRange = min + (max - min) * random.nextDouble();
|
||||
return randomInRange;
|
||||
BigDecimal bd = new BigDecimal(randomInRange);
|
||||
double A = bd.setScale(0, bd.ROUND_HALF_UP).doubleValue();
|
||||
return A;
|
||||
}
|
||||
}
|
||||
|
||||
@ -26,6 +26,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
@ -167,7 +168,9 @@ public class PaveRecordServiceImpl extends ServiceImpl<PaveRecordMapper, PaveRec
|
||||
private double randomDouble(double min, double max) {
|
||||
Random random = new Random();
|
||||
double randomInRange = min + (max - min) * random.nextDouble();
|
||||
return randomInRange;
|
||||
BigDecimal bd = new BigDecimal(randomInRange);
|
||||
double A = bd.setScale(0, bd.ROUND_HALF_UP).doubleValue();
|
||||
return A;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -0,0 +1,281 @@
|
||||
package com.zhgd.xmgl.modules.review.controller;
|
||||
|
||||
import cn.hutool.core.date.DateTime;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.zhgd.annotation.OperLog;
|
||||
import com.zhgd.jeecg.common.api.vo.Result;
|
||||
import com.zhgd.jeecg.common.system.query.QueryGenerator;
|
||||
import com.zhgd.xmgl.modules.bigdevice.entity.*;
|
||||
import com.zhgd.xmgl.modules.bigdevice.service.*;
|
||||
import com.zhgd.xmgl.modules.bridgeerectmachine.entity.BridgeErectMachineAlarm;
|
||||
import com.zhgd.xmgl.modules.bridgeerectmachine.entity.BridgeErectMachineDev;
|
||||
import com.zhgd.xmgl.modules.bridgeerectmachine.service.IBridgeErectMachineAlarmService;
|
||||
import com.zhgd.xmgl.modules.bridgeerectmachine.service.IBridgeErectMachineDevService;
|
||||
import com.zhgd.xmgl.modules.car.entity.CarInfo;
|
||||
import com.zhgd.xmgl.modules.car.service.ICarInfoService;
|
||||
import com.zhgd.xmgl.modules.environment.service.IEnvironmentDevService;
|
||||
import com.zhgd.xmgl.modules.review.entity.GltfModel;
|
||||
import com.zhgd.xmgl.modules.review.entity.MonitorDev;
|
||||
import com.zhgd.xmgl.modules.review.entity.vo.AlarmInfo;
|
||||
import com.zhgd.xmgl.modules.review.entity.vo.AlarmNumStat;
|
||||
import com.zhgd.xmgl.modules.review.entity.vo.TopStat;
|
||||
import com.zhgd.xmgl.modules.review.service.IMonitorDevService;
|
||||
import com.zhgd.xmgl.modules.safetyhat.entity.SafetyHatAlarm;
|
||||
import com.zhgd.xmgl.modules.safetyhat.entity.vo.WorkerNumAndRegionName;
|
||||
import com.zhgd.xmgl.modules.safetyhat.entity.vo.WorkerNumByRegionVo;
|
||||
import com.zhgd.xmgl.modules.safetyhat.service.ISafetyHatAlarmService;
|
||||
import com.zhgd.xmgl.modules.safetyhat.service.ISafetyHatDataService;
|
||||
import com.zhgd.xmgl.modules.safetyhat.service.ISafetyHatDevService;
|
||||
import com.zhgd.xmgl.modules.vehicleposition.entity.VehiclePositionAlarm;
|
||||
import com.zhgd.xmgl.modules.vehicleposition.service.IVehiclePositionAlarmService;
|
||||
import com.zhgd.xmgl.modules.video.entity.AiAnalyseHardWareAlarmRecord;
|
||||
import com.zhgd.xmgl.modules.video.entity.VideoGroup;
|
||||
import com.zhgd.xmgl.modules.video.entity.VideoItem;
|
||||
import com.zhgd.xmgl.modules.video.service.IAiAnalyseHardWareAlarmRecordService;
|
||||
import com.zhgd.xmgl.modules.video.service.IVideoGroupService;
|
||||
import com.zhgd.xmgl.modules.video.service.IVideoItemService;
|
||||
import com.zhgd.xmgl.modules.worker.entity.WorkerAttendance;
|
||||
import com.zhgd.xmgl.modules.worker.entity.WorkerInfo;
|
||||
import com.zhgd.xmgl.modules.worker.service.IWorkerAttendanceService;
|
||||
import com.zhgd.xmgl.modules.worker.service.IWorkerInfoService;
|
||||
import com.zhgd.xmgl.util.PageUtil;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiImplicitParam;
|
||||
import io.swagger.annotations.ApiImplicitParams;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections.MapUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
import springfox.documentation.annotations.ApiIgnore;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/xmgl/reviewIndex")
|
||||
@Slf4j
|
||||
@Api(tags = "基建大屏")
|
||||
public class IndexController {
|
||||
|
||||
@Autowired
|
||||
private IWorkerInfoService workerInfoService;
|
||||
|
||||
@Autowired
|
||||
private IMonitorDevService monitorDevService;
|
||||
|
||||
@Autowired
|
||||
private ICarInfoService carInfoService;
|
||||
|
||||
@Autowired
|
||||
private IVideoGroupService videoGroupService;
|
||||
|
||||
@Autowired
|
||||
private IVideoItemService videoItemService;
|
||||
|
||||
// @Autowired
|
||||
// private IEnvironmentDevService environmentDevService;
|
||||
|
||||
@Autowired
|
||||
private ITowerService towerService;
|
||||
|
||||
@Autowired
|
||||
private IBridgeErectMachineDevService bridgeErectMachineDevService;
|
||||
|
||||
@Autowired
|
||||
private IGantryCraneService gantryCraneService;
|
||||
|
||||
@Autowired
|
||||
private ILifterService lifterService;
|
||||
|
||||
@Autowired
|
||||
private ISafetyHatDataService safetyHatDataService;
|
||||
|
||||
@Autowired
|
||||
private IWorkerAttendanceService workerAttendanceService;
|
||||
|
||||
@Autowired
|
||||
private ISafetyHatAlarmService safetyHatAlarmService;
|
||||
|
||||
@Autowired
|
||||
private IVehiclePositionAlarmService vehiclePositionAlarmService;
|
||||
|
||||
@Autowired
|
||||
private IAiAnalyseHardWareAlarmRecordService aiAnalyseHardWareAlarmRecordService;
|
||||
|
||||
@Autowired
|
||||
private ITowerAlarmService towerAlarmService;
|
||||
|
||||
@Autowired
|
||||
private IBridgeErectMachineAlarmService bridgeErectMachineAlarmService;
|
||||
|
||||
@Autowired
|
||||
private IGantryCraneAlarmService gantryCraneAlarmService;
|
||||
|
||||
@Autowired
|
||||
private ILifterAlarmService lifterAlarmService;
|
||||
|
||||
@OperLog(operModul = "基建大屏查询", operType = "统计", operDesc = "顶部数量统计")
|
||||
@ApiOperation(value = " 顶部数量统计", notes = "顶部数量统计", httpMethod = "POST")
|
||||
@ApiImplicitParam(name = "projectSn", value = "项目SN", paramType = "body", required = true, dataType = "String")
|
||||
@PostMapping(value = "/topStat")
|
||||
public Result<TopStat> topStat(@ApiIgnore @RequestBody Map<String, Object> paramMap) {
|
||||
String projectSn = MapUtils.getString(paramMap, "projectSn");
|
||||
TopStat topStat = new TopStat();
|
||||
int workerNum = workerInfoService.count(Wrappers.<WorkerInfo>lambdaQuery()
|
||||
.eq(WorkerInfo::getProjectSn, projectSn)
|
||||
.eq(WorkerInfo::getInserviceType, 1));
|
||||
int towerNum = towerService.count(Wrappers.<Tower>lambdaQuery()
|
||||
.eq(Tower::getProjectSn, projectSn));
|
||||
int bridgeDevNum = bridgeErectMachineDevService.count(Wrappers.<BridgeErectMachineDev>lambdaQuery()
|
||||
.eq(BridgeErectMachineDev::getProjectSn, projectSn));
|
||||
int gantryNum = gantryCraneService.count(Wrappers.<GantryCrane>lambdaQuery()
|
||||
.eq(GantryCrane::getProjectSn, projectSn));
|
||||
int lifterNum = lifterService.count(Wrappers.<Lifter>lambdaQuery()
|
||||
.eq(Lifter::getProjectSn, projectSn));
|
||||
int stationNum = monitorDevService.count(Wrappers.<MonitorDev>lambdaQuery()
|
||||
.eq(MonitorDev::getProjectSn, projectSn)
|
||||
.eq(MonitorDev::getCategory, 3));
|
||||
List<VideoGroup> videoGroupList = videoGroupService.list(Wrappers.<VideoGroup>lambdaQuery()
|
||||
.eq(VideoGroup::getProjectSn, projectSn));
|
||||
int videoNum = 0;
|
||||
if (videoGroupList.size() > 0) {
|
||||
videoNum = videoItemService.count(Wrappers.<VideoItem>lambdaQuery()
|
||||
.in(VideoItem::getGroupId, videoGroupList.stream().map(v -> v.getId()).collect(Collectors.toList())));
|
||||
}
|
||||
int carNum = carInfoService.count(Wrappers.<CarInfo>lambdaQuery()
|
||||
.eq(CarInfo::getProjectSn, projectSn));
|
||||
topStat.setWorkerNum(workerNum);
|
||||
topStat.setMachineryDevNum(towerNum + bridgeDevNum + gantryNum + lifterNum);
|
||||
topStat.setStationNum(stationNum);
|
||||
topStat.setVideoNum(videoNum);
|
||||
topStat.setCarNum(carNum);
|
||||
return Result.success(topStat);
|
||||
}
|
||||
|
||||
@OperLog(operModul = "基建大屏查询", operType = "统计", operDesc = "人员管理统计")
|
||||
@ApiOperation(value = " 人员管理统计", notes = "人员管理统计", httpMethod = "POST")
|
||||
@ApiImplicitParam(name = "projectSn", value = "项目SN", paramType = "body", required = true, dataType = "String")
|
||||
@PostMapping(value = "/workerStat")
|
||||
public Result<WorkerNumByRegionVo> workerStat(@ApiIgnore @RequestBody Map<String, Object> paramMap) {
|
||||
String projectSn = MapUtils.getString(paramMap, "projectSn");
|
||||
int totalWorker = workerInfoService.count(Wrappers.<WorkerInfo>lambdaQuery()
|
||||
.eq(WorkerInfo::getProjectSn, projectSn)
|
||||
.eq(WorkerInfo::getInserviceType, 1));
|
||||
Set<String> attendSet = workerAttendanceService.list(Wrappers.<WorkerAttendance>lambdaQuery()
|
||||
.eq(WorkerAttendance::getProjectSn, projectSn)).stream().map(w -> w.getPersonSn()).collect(Collectors.toSet());
|
||||
WorkerNumByRegionVo workerNumByRegionVo = safetyHatDataService.countWorkerNumByRegionToday(paramMap);
|
||||
int workerNum = 0;
|
||||
List<WorkerNumAndRegionName> list = workerNumByRegionVo.getList();
|
||||
for (WorkerNumAndRegionName workerNumAndRegionName : list) {
|
||||
workerNum = workerNum + workerNumAndRegionName.getWorkerNum();
|
||||
}
|
||||
workerNumByRegionVo.setWorkerNum(workerNum);
|
||||
workerNumByRegionVo.setTotalWorker(totalWorker);
|
||||
workerNumByRegionVo.setAttendWorker(attendSet.size());
|
||||
return Result.success(workerNumByRegionVo);
|
||||
}
|
||||
|
||||
@OperLog(operModul = "基建大屏查询", operType = "统计", operDesc = "安全问题监测项")
|
||||
@ApiOperation(value = " 安全问题监测项", notes = "安全问题监测项", httpMethod = "POST")
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "projectSn", value = "项目SN", paramType = "body", required = true, dataType = "String"),
|
||||
@ApiImplicitParam(name = "type", value = "1:全部;2:今日", paramType = "body", required = true, dataType = "Integer")
|
||||
})
|
||||
@PostMapping(value = "/alarmNumStat")
|
||||
public Result<AlarmNumStat> alarmNumStat(@ApiIgnore @RequestBody Map<String, Object> paramMap) {
|
||||
String projectSn = MapUtils.getString(paramMap, "projectSn");
|
||||
Integer type = MapUtils.getInteger(paramMap, "type");
|
||||
DateTime beginOfDay = DateUtil.beginOfDay(new Date());
|
||||
DateTime endOfDay = DateUtil.endOfDay(new Date());
|
||||
AlarmNumStat alarmNumStat = new AlarmNumStat();
|
||||
int safeAlarm = safetyHatAlarmService.count(Wrappers.<SafetyHatAlarm>lambdaQuery()
|
||||
.eq(SafetyHatAlarm::getProjectSn, projectSn)
|
||||
.ge(type == 2, SafetyHatAlarm::getAlarmTime, beginOfDay)
|
||||
.le(type == 2, SafetyHatAlarm::getAlarmTime, endOfDay));
|
||||
int vehicleAlarm = vehiclePositionAlarmService.count(Wrappers.<VehiclePositionAlarm>lambdaQuery()
|
||||
.eq(VehiclePositionAlarm::getProjectSn, projectSn)
|
||||
.ge(type == 2, VehiclePositionAlarm::getCreateTime, beginOfDay)
|
||||
.le(type == 2, VehiclePositionAlarm::getCreateTime, endOfDay));
|
||||
int aiAlarm = aiAnalyseHardWareAlarmRecordService.count(Wrappers.<AiAnalyseHardWareAlarmRecord>lambdaQuery()
|
||||
.eq(AiAnalyseHardWareAlarmRecord::getProjectSn, projectSn)
|
||||
.ne(AiAnalyseHardWareAlarmRecord::getStatus, 1)
|
||||
.ge(type == 2, AiAnalyseHardWareAlarmRecord::getCreateTime, beginOfDay)
|
||||
.le(type == 2, AiAnalyseHardWareAlarmRecord::getCreateTime, endOfDay));
|
||||
int towerAlarm = towerAlarmService.count(Wrappers.<TowerAlarm>lambdaQuery()
|
||||
.eq(TowerAlarm::getProjectSn, projectSn)
|
||||
.ge(type == 2, TowerAlarm::getAddTime, beginOfDay)
|
||||
.le(type == 2, TowerAlarm::getAddTime, endOfDay));
|
||||
int bridgeAlarm = bridgeErectMachineAlarmService.count(Wrappers.<BridgeErectMachineAlarm>lambdaQuery()
|
||||
.eq(BridgeErectMachineAlarm::getProjectSn, projectSn)
|
||||
.ge(type == 2, BridgeErectMachineAlarm::getAddTime, beginOfDay)
|
||||
.le(type == 2, BridgeErectMachineAlarm::getAddTime, endOfDay));
|
||||
int gantryAlarm = gantryCraneAlarmService.count(Wrappers.<GantryCraneAlarm>lambdaQuery()
|
||||
.eq(GantryCraneAlarm::getProjectSn, projectSn)
|
||||
.ge(type == 2, GantryCraneAlarm::getAddTime, beginOfDay)
|
||||
.le(type == 2, GantryCraneAlarm::getAddTime, endOfDay));
|
||||
int liftAlarm = lifterAlarmService.count(Wrappers.<LifterAlarm>lambdaQuery()
|
||||
.eq(LifterAlarm::getProjectSn, projectSn)
|
||||
.ge(type == 2, LifterAlarm::getAddTime, beginOfDay)
|
||||
.le(type == 2, LifterAlarm::getAddTime, endOfDay));
|
||||
alarmNumStat.setVideoAlarmNum(aiAlarm);
|
||||
alarmNumStat.setFenceAlarmNum(safeAlarm + vehicleAlarm);
|
||||
alarmNumStat.setMachineryAlarmNum(towerAlarm + bridgeAlarm + gantryAlarm + liftAlarm);
|
||||
alarmNumStat.setTotalNum(aiAlarm + safeAlarm + vehicleAlarm + towerAlarm + bridgeAlarm + gantryAlarm + liftAlarm);
|
||||
return Result.success(alarmNumStat);
|
||||
}
|
||||
|
||||
@OperLog(operModul = "基建大屏查询", operType = "统计", operDesc = "现场动态")
|
||||
@ApiOperation(value = " 现场动态", notes = "现场动态", httpMethod = "POST")
|
||||
@ApiImplicitParam(name = "projectSn", value = "项目SN", paramType = "body", required = true, dataType = "String")
|
||||
@PostMapping(value = "/alarmList")
|
||||
public Result<List<AlarmInfo>> alarmList(@ApiIgnore @RequestBody Map<String, Object> paramMap) {
|
||||
String projectSn = MapUtils.getString(paramMap, "projectSn");
|
||||
DateTime beginOfDay = DateUtil.beginOfDay(new Date());
|
||||
DateTime endOfDay = DateUtil.endOfDay(new Date());
|
||||
List<AlarmInfo> resultList = new ArrayList<>();
|
||||
List<SafetyHatAlarm> list = safetyHatAlarmService.list(Wrappers.<SafetyHatAlarm>lambdaQuery()
|
||||
.eq(SafetyHatAlarm::getProjectSn, projectSn)
|
||||
.ge(SafetyHatAlarm::getAlarmTime, beginOfDay)
|
||||
.le(SafetyHatAlarm::getAlarmTime, endOfDay));
|
||||
for (SafetyHatAlarm safetyHatAlarm : list) {
|
||||
addAlarm(2, safetyHatAlarm.getAlarmInfo(), safetyHatAlarm.getWorkerInfoName(), safetyHatAlarm.getDevSn(),
|
||||
DateUtil.formatDateTime(safetyHatAlarm.getAlarmTime()), resultList);
|
||||
}
|
||||
List<VehiclePositionAlarm> list1 = vehiclePositionAlarmService.list(Wrappers.<VehiclePositionAlarm>lambdaQuery()
|
||||
.eq(VehiclePositionAlarm::getProjectSn, projectSn)
|
||||
.ge(VehiclePositionAlarm::getCreateTime, beginOfDay)
|
||||
.le(VehiclePositionAlarm::getCreateTime, endOfDay));
|
||||
for (VehiclePositionAlarm vehiclePositionAlarm : list1) {
|
||||
addAlarm(3, vehiclePositionAlarm.getAlarmInformation(), vehiclePositionAlarm.getNumberPlate(), vehiclePositionAlarm.getDevSn(),
|
||||
DateUtil.formatDateTime(vehiclePositionAlarm.getCreateTime()), resultList);
|
||||
}
|
||||
List<AiAnalyseHardWareAlarmRecord> list2 = aiAnalyseHardWareAlarmRecordService.list(Wrappers.<AiAnalyseHardWareAlarmRecord>lambdaQuery()
|
||||
.eq(AiAnalyseHardWareAlarmRecord::getProjectSn, projectSn)
|
||||
.ne(AiAnalyseHardWareAlarmRecord::getStatus, 1)
|
||||
.ge(AiAnalyseHardWareAlarmRecord::getCreateTime, beginOfDay)
|
||||
.le(AiAnalyseHardWareAlarmRecord::getCreateTime, endOfDay));
|
||||
for (AiAnalyseHardWareAlarmRecord aiAnalyseHardWareAlarmRecord : list2) {
|
||||
addAlarm(1, aiAnalyseHardWareAlarmRecord.getAlarmDesc(), aiAnalyseHardWareAlarmRecord.getHardwareName(), aiAnalyseHardWareAlarmRecord.getHardwareId(),
|
||||
aiAnalyseHardWareAlarmRecord.getCreateTime(), resultList);
|
||||
}
|
||||
return Result.success(resultList);
|
||||
}
|
||||
|
||||
private void addAlarm(Integer type, String alarmDesc, String alarmObj, String devCode, String alarmTime, List<AlarmInfo> list) {
|
||||
AlarmInfo alarmInfo = new AlarmInfo();
|
||||
alarmInfo.setType(type);
|
||||
alarmInfo.setAlarmDesc(alarmDesc);
|
||||
alarmInfo.setAlarmObj(alarmObj);
|
||||
alarmInfo.setDevCode(devCode);
|
||||
alarmInfo.setAlarmTime(alarmTime);
|
||||
list.add(alarmInfo);
|
||||
}
|
||||
}
|
||||
@ -1,7 +1,9 @@
|
||||
package com.zhgd.xmgl.modules.review.controller;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.zhgd.annotation.OperLog;
|
||||
import com.zhgd.jeecg.common.api.vo.Result;
|
||||
@ -37,7 +39,7 @@ import java.util.Map;
|
||||
|
||||
/**
|
||||
* @Title: Controller
|
||||
* @Description: 视频监控信息
|
||||
* @Description: 地图设备点位信息管理
|
||||
* @author: pengj
|
||||
* @date: 2023-11-08
|
||||
* @version: V1.0
|
||||
@ -45,7 +47,7 @@ import java.util.Map;
|
||||
@RestController
|
||||
@RequestMapping("/xmgl/monitorDev")
|
||||
@Slf4j
|
||||
@Api(tags = "视频监控信息管理")
|
||||
@Api(tags = "地图设备点位信息管理")
|
||||
public class MonitorDevController {
|
||||
@Autowired
|
||||
private IMonitorDevService monitorDevService;
|
||||
@ -57,7 +59,7 @@ public class MonitorDevController {
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@OperLog(operModul = "视频监控信息管理", operType = "分页查询", operDesc = "分页列表查询视频监控信息信息")
|
||||
@OperLog(operModul = "地图设备点位信息管理", operType = "分页查询", operDesc = "分页列表查询视频监控信息信息")
|
||||
@ApiOperation(value = " 分页列表查询视频监控信息信息", notes = "分页列表查询视频监控信息信息", httpMethod = "POST")
|
||||
@PostMapping(value = "/page")
|
||||
public Result<IPage<MonitorDev>> queryPageList(@ApiIgnore @RequestBody Map<String, Object> paramMap) {
|
||||
@ -73,7 +75,7 @@ public class MonitorDevController {
|
||||
* @param monitorDev
|
||||
* @return
|
||||
*/
|
||||
@OperLog(operModul = "视频监控信息管理", operType = "列表查询", operDesc = "列表查询视频监控信息信息")
|
||||
@OperLog(operModul = "地图设备点位信息管理", operType = "列表查询", operDesc = "列表查询视频监控信息信息")
|
||||
@ApiOperation(value = " 列表查询视频监控信息信息", notes = "列表查询视频监控信息信息", httpMethod = "POST")
|
||||
@PostMapping(value = "/list")
|
||||
public Result<List<MonitorDev>> queryList(@RequestBody MonitorDev monitorDev) {
|
||||
@ -89,7 +91,7 @@ public class MonitorDevController {
|
||||
* @param monitorDev
|
||||
* @return
|
||||
*/
|
||||
@OperLog(operModul = "视频监控信息管理", operType = "新增", operDesc = "添加视频监控信息信息")
|
||||
@OperLog(operModul = "地图设备点位信息管理", operType = "新增", operDesc = "添加视频监控信息信息")
|
||||
@ApiOperation(value = " 添加视频监控信息信息", notes = "添加视频监控信息信息", httpMethod = "POST")
|
||||
@PostMapping(value = "/add")
|
||||
public Result<Object> add(@RequestBody MonitorDev monitorDev) {
|
||||
@ -103,7 +105,7 @@ public class MonitorDevController {
|
||||
* @param monitorDev
|
||||
* @return
|
||||
*/
|
||||
@OperLog(operModul = "视频监控信息管理", operType = "修改", operDesc = "编辑视频监控信息信息")
|
||||
@OperLog(operModul = "地图设备点位信息管理", operType = "修改", operDesc = "编辑视频监控信息信息")
|
||||
@ApiOperation(value = "编辑视频监控信息信息", notes = "编辑视频监控信息信息", httpMethod = "POST")
|
||||
@PostMapping(value = "/edit")
|
||||
public Result<MonitorDev> edit(@RequestBody MonitorDev monitorDev) {
|
||||
@ -122,12 +124,31 @@ public class MonitorDevController {
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* 编辑
|
||||
*
|
||||
* @param monitorDev
|
||||
* @return
|
||||
*/
|
||||
@OperLog(operModul = "地图设备点位信息管理", operType = "修改", operDesc = "清除定位信息")
|
||||
@ApiOperation(value = "清除定位信息", notes = "清除定位信息", httpMethod = "POST")
|
||||
@PostMapping(value = "/clearLocate")
|
||||
public Result<MonitorDev> clearLocate(@RequestBody MonitorDev monitorDev) {
|
||||
LambdaUpdateWrapper<MonitorDev> wrapper = Wrappers.<MonitorDev>lambdaUpdate();
|
||||
wrapper.set(MonitorDev::getLat, null);
|
||||
wrapper.set(MonitorDev::getLng, null);
|
||||
wrapper.set(MonitorDev::getAlt, null);
|
||||
wrapper.eq(MonitorDev::getMonitorId, monitorDev.getMonitorId());
|
||||
monitorDevService.update(wrapper);
|
||||
return Result.ok();
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过id删除
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@OperLog(operModul = "视频监控信息管理", operType = "删除", operDesc = "删除视频监控信息信息")
|
||||
@OperLog(operModul = "地图设备点位信息管理", operType = "删除", operDesc = "删除视频监控信息信息")
|
||||
@ApiOperation(value = "删除视频监控信息信息", notes = "删除视频监控信息信息", httpMethod = "POST")
|
||||
@ApiImplicitParam(name = "monitorId", value = "视频监控信息ID", paramType = "body", required = true, dataType = "Integer")
|
||||
@PostMapping(value = "/delete")
|
||||
@ -152,7 +173,7 @@ public class MonitorDevController {
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@OperLog(operModul = "视频监控信息管理", operType = "批量删除", operDesc = "批量删除视频监控信息信息")
|
||||
@OperLog(operModul = "地图设备点位信息管理", operType = "批量删除", operDesc = "批量删除视频监控信息信息")
|
||||
@ApiOperation(value = "批量删除视频监控信息信息", notes = "批量删除视频监控信息信息", httpMethod = "POST")
|
||||
@ApiImplicitParam(name = "ids", value = "视频监控信息ID字符串", paramType = "body", required = true, dataType = "String")
|
||||
@PostMapping(value = "/deleteBatch")
|
||||
@ -173,7 +194,7 @@ public class MonitorDevController {
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@OperLog(operModul = "视频监控信息管理", operType = "查询", operDesc = "通过id查询视频监控信息信息")
|
||||
@OperLog(operModul = "地图设备点位信息管理", operType = "查询", operDesc = "通过id查询视频监控信息信息")
|
||||
@ApiOperation(value = "通过id查询视频监控信息信息", notes = "通过id查询视频监控信息信息", httpMethod = "POST")
|
||||
@ApiImplicitParam(name = "id", value = "视频监控信息ID", paramType = "body", required = true, dataType = "Integer")
|
||||
@PostMapping(value = "/queryById")
|
||||
@ -192,7 +213,7 @@ public class MonitorDevController {
|
||||
* 获取指定接口信息
|
||||
* @return
|
||||
*/
|
||||
@OperLog(operModul = "视频监控信息管理", operType = "查询", operDesc = "获取指定接口信息")
|
||||
@OperLog(operModul = "地图设备点位信息管理", operType = "查询", operDesc = "获取指定接口信息")
|
||||
@ApiOperation(value = "获取指定接口信息", notes = "获取指定接口信息", httpMethod = "POST")
|
||||
@ApiImplicitParam(name = "id", value = "视频监控信息ID", paramType = "body", required = true, dataType = "Integer")
|
||||
@PostMapping(value = "/queryInfo")
|
||||
@ -213,4 +234,17 @@ public class MonitorDevController {
|
||||
return Result.success(url, "操作成功");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@OperLog(operModul = "地图设备点位信息管理", operType = "列表查询", operDesc = "查询设备列表")
|
||||
@ApiOperation(value = " 查询设备列表", notes = "查询设备列表", httpMethod = "POST")
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "category", value = "类别(1、视频监控;2、扬尘设备;3、场站;11、塔吊;12、架桥机;13、龙门吊;14、升降机;)", paramType = "body", required = true, dataType = "Integer"),
|
||||
@ApiImplicitParam(name = "projectSn", value = "项目SN", paramType = "body", required = true, dataType = "String")
|
||||
})
|
||||
@PostMapping(value = "/getDevList")
|
||||
public Result<List<MonitorDev>> getDevList(@ApiIgnore @RequestBody MonitorDev monitorDev) {
|
||||
List<MonitorDev> devList = monitorDevService.getDevList(monitorDev);
|
||||
return Result.success(devList);
|
||||
}
|
||||
}
|
||||
|
||||
@ -14,7 +14,7 @@ import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
|
||||
/**
|
||||
* @Description: 视频监控信息
|
||||
* @Description: 地图设备点位信息
|
||||
* @author: pengj
|
||||
* @date: 2023-11-08
|
||||
* @version: V1.0
|
||||
@ -26,16 +26,16 @@ public class MonitorDev implements Serializable {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 监控ID
|
||||
* 设备点位ID
|
||||
*/
|
||||
@TableId(type = IdType.INPUT)
|
||||
@ApiModelProperty(value = "监控ID")
|
||||
private String monitorId;
|
||||
@TableId(type = IdType.ASSIGN_ID)
|
||||
@ApiModelProperty(value = "设备点位ID")
|
||||
private Long monitorId;
|
||||
/**
|
||||
* 视频名称
|
||||
*/
|
||||
@Excel(name = "视频名称", width = 15)
|
||||
@ApiModelProperty(value = "视频名称")
|
||||
@ApiModelProperty(value = "设备点位名称")
|
||||
private String name;
|
||||
/**
|
||||
* 设备编码
|
||||
@ -92,17 +92,17 @@ public class MonitorDev implements Serializable {
|
||||
@ApiModelProperty(value = "修改时间")
|
||||
private Date updateTime;
|
||||
/**
|
||||
* 类别(自定义)
|
||||
* 类别(1、视频监控;2、扬尘设备;3、场站;11、塔吊;12、架桥机;13、龙门吊;14、升降机;)
|
||||
*/
|
||||
@Excel(name = "类别(自定义)", width = 15)
|
||||
@ApiModelProperty(value = "类别(自定义)")
|
||||
private String category;
|
||||
@Excel(name = "类别(1、视频监控;2、扬尘设备;3、场站;11、塔吊;12、架桥机;13、龙门吊;14、升降机;)", width = 15)
|
||||
@ApiModelProperty(value = "类别(1、视频监控;2、扬尘设备;3、场站;11、塔吊;12、架桥机;13、龙门吊;14、升降机;)")
|
||||
private Integer category;
|
||||
/**
|
||||
* 类型
|
||||
* 绑定的设备ID
|
||||
*/
|
||||
@Excel(name = "类型", width = 15)
|
||||
@ApiModelProperty(value = "类型")
|
||||
private Integer type;
|
||||
@Excel(name = "绑定的设备ID", width = 15)
|
||||
@ApiModelProperty(value = "绑定的设备ID")
|
||||
private String devSn;
|
||||
/**
|
||||
* 自定义接口请求地址
|
||||
*/
|
||||
@ -115,4 +115,16 @@ public class MonitorDev implements Serializable {
|
||||
@Excel(name = "项目ID", width = 15)
|
||||
@ApiModelProperty(value = "项目ID")
|
||||
private String projectSn;
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
@Excel(name = "备注", width = 15)
|
||||
@ApiModelProperty(value = "备注")
|
||||
private String remark;
|
||||
/**
|
||||
* 场站类型
|
||||
*/
|
||||
@Excel(name = "场站类型", width = 15)
|
||||
@ApiModelProperty(value = "场站类型")
|
||||
private String stationType;
|
||||
}
|
||||
|
||||
@ -0,0 +1,23 @@
|
||||
package com.zhgd.xmgl.modules.review.entity.vo;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class AlarmInfo {
|
||||
|
||||
@ApiModelProperty(value = "报警类型1、视频AI监控;2、安全帽;3、车辆定位;")
|
||||
private Integer type;
|
||||
|
||||
@ApiModelProperty(value = "报警信息")
|
||||
private String alarmDesc;
|
||||
|
||||
@ApiModelProperty(value = "报警对象")
|
||||
private String alarmObj;
|
||||
|
||||
@ApiModelProperty(value = "设备编码")
|
||||
private String devCode;
|
||||
|
||||
@ApiModelProperty(value = "报警时间")
|
||||
private String alarmTime;
|
||||
}
|
||||
@ -0,0 +1,20 @@
|
||||
package com.zhgd.xmgl.modules.review.entity.vo;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class AlarmNumStat {
|
||||
|
||||
@ApiModelProperty(value = "安全问题检测项")
|
||||
private Integer totalNum;
|
||||
|
||||
@ApiModelProperty(value = "围栏预警")
|
||||
private Integer fenceAlarmNum;
|
||||
|
||||
@ApiModelProperty(value = "视频AI预警")
|
||||
private Integer videoAlarmNum;
|
||||
|
||||
@ApiModelProperty(value = "视频监控数量")
|
||||
private Integer machineryAlarmNum;
|
||||
}
|
||||
@ -0,0 +1,23 @@
|
||||
package com.zhgd.xmgl.modules.review.entity.vo;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class TopStat {
|
||||
|
||||
@ApiModelProperty(value = "人员管理数量")
|
||||
private Integer workerNum;
|
||||
|
||||
@ApiModelProperty(value = "机械设备数量")
|
||||
private Integer machineryDevNum;
|
||||
|
||||
@ApiModelProperty(value = "场站管理数量")
|
||||
private Integer stationNum;
|
||||
|
||||
@ApiModelProperty(value = "视频监控数量")
|
||||
private Integer videoNum;
|
||||
|
||||
@ApiModelProperty(value = "车辆数量")
|
||||
private Integer carNum;
|
||||
}
|
||||
@ -3,6 +3,8 @@ package com.zhgd.xmgl.modules.review.service;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.zhgd.xmgl.modules.review.entity.MonitorDev;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Description: 视频监控信息
|
||||
* @author: pengj
|
||||
@ -11,4 +13,5 @@ import com.zhgd.xmgl.modules.review.entity.MonitorDev;
|
||||
*/
|
||||
public interface IMonitorDevService extends IService<MonitorDev> {
|
||||
|
||||
List<MonitorDev> getDevList(MonitorDev monitorDev);
|
||||
}
|
||||
|
||||
@ -1,11 +1,32 @@
|
||||
package com.zhgd.xmgl.modules.review.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.zhgd.xmgl.modules.bigdevice.entity.GantryCrane;
|
||||
import com.zhgd.xmgl.modules.bigdevice.entity.Lifter;
|
||||
import com.zhgd.xmgl.modules.bigdevice.entity.Tower;
|
||||
import com.zhgd.xmgl.modules.bigdevice.service.IGantryCraneService;
|
||||
import com.zhgd.xmgl.modules.bigdevice.service.ILifterService;
|
||||
import com.zhgd.xmgl.modules.bigdevice.service.ITowerService;
|
||||
import com.zhgd.xmgl.modules.bridgeerectmachine.entity.BridgeErectMachineDev;
|
||||
import com.zhgd.xmgl.modules.bridgeerectmachine.service.IBridgeErectMachineDevService;
|
||||
import com.zhgd.xmgl.modules.environment.entity.EnvironmentDev;
|
||||
import com.zhgd.xmgl.modules.environment.service.IEnvironmentDevService;
|
||||
import com.zhgd.xmgl.modules.review.entity.MonitorDev;
|
||||
import com.zhgd.xmgl.modules.review.mapper.MonitorDevMapper;
|
||||
import com.zhgd.xmgl.modules.review.service.IMonitorDevService;
|
||||
import com.zhgd.xmgl.modules.video.entity.VideoGroup;
|
||||
import com.zhgd.xmgl.modules.video.entity.VideoItem;
|
||||
import com.zhgd.xmgl.modules.video.service.IVideoGroupService;
|
||||
import com.zhgd.xmgl.modules.video.service.IVideoItemService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @Description: 视频监控信息
|
||||
* @author: pengj
|
||||
@ -15,4 +36,128 @@ import org.springframework.stereotype.Service;
|
||||
@Service
|
||||
public class MonitorDevServiceImpl extends ServiceImpl<MonitorDevMapper, MonitorDev> implements IMonitorDevService {
|
||||
|
||||
@Autowired
|
||||
private IVideoGroupService videoGroupService;
|
||||
|
||||
@Autowired
|
||||
private IVideoItemService videoItemService;
|
||||
|
||||
@Autowired
|
||||
private IEnvironmentDevService environmentDevService;
|
||||
|
||||
@Autowired
|
||||
private ITowerService towerService;
|
||||
|
||||
@Autowired
|
||||
private IBridgeErectMachineDevService bridgeErectMachineDevService;
|
||||
|
||||
@Autowired
|
||||
private IGantryCraneService gantryCraneService;
|
||||
|
||||
@Autowired
|
||||
private ILifterService lifterService;
|
||||
|
||||
|
||||
@Override
|
||||
public List<MonitorDev> getDevList(MonitorDev monitorDev) {
|
||||
List<MonitorDev> list = this.list(Wrappers.<MonitorDev>lambdaQuery().eq(MonitorDev::getProjectSn, monitorDev.getProjectSn()));
|
||||
List<MonitorDev> devList = new ArrayList<>();
|
||||
if (monitorDev.getCategory() == 1) {
|
||||
List<VideoGroup> list1 = videoGroupService.list(Wrappers.<VideoGroup>lambdaQuery().eq(VideoGroup::getProjectSn, monitorDev.getProjectSn()));
|
||||
if (list1.size() > 0) {
|
||||
List<VideoItem> list2 = videoItemService.list(Wrappers.<VideoItem>lambdaQuery().in(VideoItem::getGroupId, list1.stream().map(l -> l.getId()).collect(Collectors.toList())));
|
||||
for (VideoItem videoItem : list2) {
|
||||
MonitorDev dev = new MonitorDev();
|
||||
List<MonitorDev> collect = list.stream().filter(l -> StringUtils.isNotBlank(l.getDevSn()) && l.getDevSn().equals(videoItem.getItemId().toString())).collect(Collectors.toList());
|
||||
if (collect.size() > 0) {
|
||||
dev.setMonitorId(collect.get(0).getMonitorId());
|
||||
dev.setLat(collect.get(0).getLat());
|
||||
dev.setLng(collect.get(0).getLng());
|
||||
dev.setAlt(collect.get(0).getAlt());
|
||||
}
|
||||
dev.setDevSn(videoItem.getItemId().toString());
|
||||
dev.setName(videoItem.getVideoName());
|
||||
devList.add(dev);
|
||||
}
|
||||
}
|
||||
} else if (monitorDev.getCategory() == 2) {
|
||||
List<EnvironmentDev> list1 = environmentDevService.list(Wrappers.<EnvironmentDev>lambdaQuery().eq(EnvironmentDev::getProjectSn, monitorDev.getProjectSn()));
|
||||
for (EnvironmentDev environmentDev : list1) {
|
||||
MonitorDev dev = new MonitorDev();
|
||||
List<MonitorDev> collect = list.stream().filter(l -> StringUtils.isNotBlank(l.getDevSn()) && l.getDevSn().equals(environmentDev.getId().toString())).collect(Collectors.toList());
|
||||
if (collect.size() > 0) {
|
||||
dev.setMonitorId(collect.get(0).getMonitorId());
|
||||
dev.setLat(collect.get(0).getLat());
|
||||
dev.setLng(collect.get(0).getLng());
|
||||
dev.setAlt(collect.get(0).getAlt());
|
||||
}
|
||||
dev.setDevSn(environmentDev.getId().toString());
|
||||
dev.setName(environmentDev.getDeviceName());
|
||||
devList.add(dev);
|
||||
}
|
||||
} else if (monitorDev.getCategory() == 3) {
|
||||
devList = this.list(Wrappers.<MonitorDev>lambdaQuery().eq(MonitorDev::getCategory, 3));
|
||||
} else if (monitorDev.getCategory() == 11) {
|
||||
List<Tower> list1 = towerService.list(Wrappers.<Tower>lambdaQuery().eq(Tower::getProjectSn, monitorDev.getProjectSn()));
|
||||
for (Tower tower : list1) {
|
||||
MonitorDev dev = new MonitorDev();
|
||||
List<MonitorDev> collect = list.stream().filter(l -> StringUtils.isNotBlank(l.getDevSn()) && l.getDevSn().equals(tower.getId().toString())).collect(Collectors.toList());
|
||||
if (collect.size() > 0) {
|
||||
dev.setMonitorId(collect.get(0).getMonitorId());
|
||||
dev.setLat(collect.get(0).getLat());
|
||||
dev.setLng(collect.get(0).getLng());
|
||||
dev.setAlt(collect.get(0).getAlt());
|
||||
}
|
||||
dev.setDevSn(tower.getId().toString());
|
||||
dev.setName(tower.getDevName());
|
||||
devList.add(dev);
|
||||
}
|
||||
} else if (monitorDev.getCategory() == 12) {
|
||||
List<BridgeErectMachineDev> list1 = bridgeErectMachineDevService.list(Wrappers.<BridgeErectMachineDev>lambdaQuery().eq(BridgeErectMachineDev::getProjectSn, monitorDev.getProjectSn()));
|
||||
for (BridgeErectMachineDev bridgeErectMachineDev : list1) {
|
||||
MonitorDev dev = new MonitorDev();
|
||||
List<MonitorDev> collect = list.stream().filter(l -> StringUtils.isNotBlank(l.getDevSn()) && l.getDevSn().equals(bridgeErectMachineDev.getId().toString())).collect(Collectors.toList());
|
||||
if (collect.size() > 0) {
|
||||
dev.setMonitorId(collect.get(0).getMonitorId());
|
||||
dev.setLat(collect.get(0).getLat());
|
||||
dev.setLng(collect.get(0).getLng());
|
||||
dev.setAlt(collect.get(0).getAlt());
|
||||
}
|
||||
dev.setDevSn(bridgeErectMachineDev.getId().toString());
|
||||
dev.setName(bridgeErectMachineDev.getDevName());
|
||||
devList.add(dev);
|
||||
}
|
||||
} else if (monitorDev.getCategory() == 13) {
|
||||
List<GantryCrane> list1 = gantryCraneService.list(Wrappers.<GantryCrane>lambdaQuery().eq(GantryCrane::getProjectSn, monitorDev.getProjectSn()));
|
||||
for (GantryCrane gantryCrane : list1) {
|
||||
MonitorDev dev = new MonitorDev();
|
||||
List<MonitorDev> collect = list.stream().filter(l -> StringUtils.isNotBlank(l.getDevSn()) && l.getDevSn().equals(gantryCrane.getId().toString())).collect(Collectors.toList());
|
||||
if (collect.size() > 0) {
|
||||
dev.setMonitorId(collect.get(0).getMonitorId());
|
||||
dev.setLat(collect.get(0).getLat());
|
||||
dev.setLng(collect.get(0).getLng());
|
||||
dev.setAlt(collect.get(0).getAlt());
|
||||
}
|
||||
dev.setDevSn(gantryCrane.getId().toString());
|
||||
dev.setName(gantryCrane.getDevName());
|
||||
devList.add(dev);
|
||||
}
|
||||
} else if (monitorDev.getCategory() == 14) {
|
||||
List<Lifter> list1 = lifterService.list(Wrappers.<Lifter>lambdaQuery().eq(Lifter::getProjectSn, monitorDev.getProjectSn()));
|
||||
for (Lifter lifter : list1) {
|
||||
MonitorDev dev = new MonitorDev();
|
||||
List<MonitorDev> collect = list.stream().filter(l -> StringUtils.isNotBlank(l.getDevSn()) && l.getDevSn().equals(lifter.getId().toString())).collect(Collectors.toList());
|
||||
if (collect.size() > 0) {
|
||||
dev.setMonitorId(collect.get(0).getMonitorId());
|
||||
dev.setLat(collect.get(0).getLat());
|
||||
dev.setLng(collect.get(0).getLng());
|
||||
dev.setAlt(collect.get(0).getAlt());
|
||||
}
|
||||
dev.setDevSn(lifter.getId().toString());
|
||||
dev.setName(lifter.getDevName());
|
||||
devList.add(dev);
|
||||
}
|
||||
}
|
||||
return devList;
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package com.zhgd.xmgl.modules.safetyhat.entity.vo;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
@ -8,4 +9,13 @@ import java.util.List;
|
||||
public class WorkerNumByRegionVo {
|
||||
private String date;
|
||||
private List<WorkerNumAndRegionName> list;
|
||||
|
||||
@ApiModelProperty(value = "作业面人数")
|
||||
private Integer workerNum;
|
||||
|
||||
@ApiModelProperty(value = "人员总数")
|
||||
private Integer totalWorker;
|
||||
|
||||
@ApiModelProperty(value = "今日出勤")
|
||||
private Integer attendWorker;
|
||||
}
|
||||
|
||||
@ -25,7 +25,8 @@
|
||||
</select>
|
||||
|
||||
<select id="getNewestList" resultType="com.zhgd.xmgl.modules.safetyhat.entity.SafetyHatData">
|
||||
select shd.*, wi.worker_name, ei.enterprise_name, wi.id_card, wi.phone_number, wt.type_name workerTypeName from safety_hat_data shd join (
|
||||
select shd.*, CONCAT(IFNULL(wi.worker_name, ''), IFNULL(shd.worker_info_name, '')) worker_name, ei.enterprise_name, wi.phone_number, wt.type_name workerTypeName
|
||||
from safety_hat_data shd join (
|
||||
select max(upload_time) as upload_time, dev_sn
|
||||
from safety_hat_data
|
||||
where project_sn = #{projectSn}
|
||||
|
||||
@ -98,5 +98,7 @@ public interface ISafetyHatDataService extends IService<SafetyHatData> {
|
||||
*/
|
||||
List<WorkerNumByRegionVo> countWorkerNumByRegion(Map<String, Object> param);
|
||||
|
||||
WorkerNumByRegionVo countWorkerNumByRegionToday(Map<String, Object> param);
|
||||
|
||||
WorkerListyByRegionVo getWorkerListByRegion(Map<String, Object> param);
|
||||
}
|
||||
|
||||
@ -332,6 +332,36 @@ public class SafetyHatDataServiceImpl extends ServiceImpl<SafetyHatDataMapper, S
|
||||
return vos;
|
||||
}
|
||||
|
||||
@Override
|
||||
public WorkerNumByRegionVo countWorkerNumByRegionToday(Map<String, Object> param) {
|
||||
String projectSn = MapUtils.getString(param, "projectSn");
|
||||
List<SafetyHatData> datas = safetyHatDataMapper.selectList(new LambdaQueryWrapper<SafetyHatData>()
|
||||
.eq(SafetyHatData::getProjectSn, projectSn)
|
||||
.ge(SafetyHatData::getUploadTime, DateUtil.formatDate(DateUtil.offsetDay(new Date(), -6))));
|
||||
List<SafetyHatDev> devList = safetyHatDevMapper.selectList(new LambdaQueryWrapper<SafetyHatDev>()
|
||||
.eq(SafetyHatDev::getProjectSn, projectSn));
|
||||
List<SafetyHatFence> regions = safetyHatFenceService.queryList(new MapBuilder<String, Object>()
|
||||
.put("projectSn", projectSn)
|
||||
.build());
|
||||
String date = DateUtil.formatDate(new Date());
|
||||
List<WorkerNumAndRegionName> list = new ArrayList<>();
|
||||
for (SafetyHatFence region : regions) {
|
||||
List<SafetyHatData> datas1 = datas.stream().filter(safetyHatData -> DateUtil.compare(safetyHatData.getUploadTime(), DateUtil.beginOfDay(DateUtil.parse(date))) >= 0
|
||||
&& DateUtil.compare(safetyHatData.getUploadTime(), DateUtil.endOfDay(DateUtil.parse(date))) <= 0).collect(Collectors.toList());
|
||||
int workerNum = getWorkerNumInFence(region, datas1).size();
|
||||
WorkerNumAndRegionName workerNumAndRegionName = new WorkerNumAndRegionName();
|
||||
workerNumAndRegionName.setWorkerNum(workerNum);
|
||||
workerNumAndRegionName.setBindNum((int) devList.stream().filter(d -> Arrays.asList(d.getFenceId().split(",")).contains(region.getId().toString())).count());
|
||||
workerNumAndRegionName.setDate(date);
|
||||
workerNumAndRegionName.setRegionName(region.getRegionName());
|
||||
list.add(workerNumAndRegionName);
|
||||
}
|
||||
WorkerNumByRegionVo oneVo = new WorkerNumByRegionVo();
|
||||
oneVo.setDate(date);
|
||||
oneVo.setList(list);
|
||||
return oneVo;
|
||||
}
|
||||
|
||||
@Override
|
||||
public WorkerListyByRegionVo getWorkerListByRegion(Map<String, Object> param) {
|
||||
String projectSn = MapUtils.getString(param, "projectSn");
|
||||
|
||||
@ -5,14 +5,23 @@ import cn.hutool.core.util.StrUtil;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.zhgd.annotation.OperLog;
|
||||
import com.zhgd.jeecg.common.api.vo.Result;
|
||||
import com.zhgd.jeecg.common.execption.OpenAlertException;
|
||||
import com.zhgd.jeecg.common.system.query.QueryGenerator;
|
||||
import com.zhgd.jeecg.common.util.oConvertUtils;
|
||||
import com.zhgd.xmgl.modules.safetyhat.entity.SafetyHatData;
|
||||
import com.zhgd.xmgl.modules.safetyhat.entity.SafetyHatDev;
|
||||
import com.zhgd.xmgl.modules.safetyhat.entity.SafetyHatFence;
|
||||
import com.zhgd.xmgl.modules.safetyhat.entity.vo.WorkerListyByRegionVo;
|
||||
import com.zhgd.xmgl.modules.vehicleposition.entity.MockVehiclePositionDataConfig;
|
||||
import com.zhgd.xmgl.modules.vehicleposition.entity.VehiclePositionData;
|
||||
import com.zhgd.xmgl.modules.vehicleposition.entity.vo.VehicleListByRegionVo;
|
||||
import com.zhgd.xmgl.modules.vehicleposition.service.IMockVehiclePositionDataConfigService;
|
||||
import com.zhgd.xmgl.modules.vehicleposition.service.IVehiclePositionDataService;
|
||||
import com.zhgd.xmgl.modules.worker.entity.WorkerInfo;
|
||||
import com.zhgd.xmgl.util.EntityUtils;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiImplicitParam;
|
||||
@ -33,11 +42,9 @@ import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.net.URLDecoder;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.ThreadLocalRandom;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
|
||||
/**
|
||||
@ -247,4 +254,13 @@ public class VehiclePositionDataController {
|
||||
return Result.ok();
|
||||
}
|
||||
|
||||
@ApiOperation(value = "区域车辆列表", notes = "区域车辆列表", httpMethod = "POST")
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "projectSn", value = "项目sn", paramType = "body", required = true, dataType = "String"),
|
||||
@ApiImplicitParam(name = "regionId", value = "区域ID", paramType = "body", required = true, dataType = "String")
|
||||
})
|
||||
@PostMapping(value = "/getVehicleListByRegion")
|
||||
public Result<VehicleListByRegionVo> getVehicleListByRegion(@ApiIgnore @RequestBody Map<String, Object> param) {
|
||||
return Result.success(vehiclePositionDataService.getVehicleListByRegion(param));
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,7 +1,5 @@
|
||||
package com.zhgd.xmgl.modules.vehicleposition.controller;
|
||||
|
||||
import com.zhgd.annotation.OperLog;
|
||||
import com.zhgd.xmgl.modules.safetyhat.entity.SafetyHatDev;
|
||||
import com.zhgd.xmgl.modules.vehicleposition.entity.VehiclePositionDev;
|
||||
import com.zhgd.xmgl.modules.vehicleposition.entity.vo.CountVehiclePositionDevVo;
|
||||
import com.zhgd.xmgl.modules.vehicleposition.service.IVehiclePositionDevService;
|
||||
@ -17,13 +15,14 @@ import springfox.documentation.annotations.ApiIgnore;
|
||||
import java.util.List;
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.net.URLDecoder;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import com.zhgd.jeecg.common.api.vo.Result;
|
||||
import com.zhgd.jeecg.common.system.query.QueryGenerator;
|
||||
import com.zhgd.jeecg.common.util.oConvertUtils;
|
||||
import org.apache.commons.collections.MapUtils;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
@ -205,4 +204,14 @@ public class VehiclePositionDevController {
|
||||
vehiclePositionDevService.unBind(vehiclePositionDev);
|
||||
return Result.ok();
|
||||
}
|
||||
|
||||
@ApiOperation(value = "统计车辆车种信息", notes = "统计车辆车种信息", httpMethod = "POST")
|
||||
@ApiImplicitParam(name = "projectSn", value = "项目sn", paramType = "body", required = true, dataType = "String")
|
||||
@PostMapping(value = "/countVehiclePositionDevCarType")
|
||||
public Result<Map<String, Long>> countVehiclePositionDevCarType(@ApiIgnore @RequestBody HashMap<String, Object> paramMap) {
|
||||
paramMap.put("type", 1);
|
||||
List<VehiclePositionDev> vehiclePositionDevList = vehiclePositionDevService.queryList(paramMap);
|
||||
Map<String, Long> collect = vehiclePositionDevList.stream().collect(Collectors.groupingBy(VehiclePositionDev::getCarType, Collectors.counting()));
|
||||
return Result.success(collect);
|
||||
}
|
||||
}
|
||||
|
||||
@ -0,0 +1,19 @@
|
||||
package com.zhgd.xmgl.modules.vehicleposition.entity.vo;
|
||||
|
||||
import com.zhgd.xmgl.modules.car.entity.CarInfo;
|
||||
import com.zhgd.xmgl.modules.vehicleposition.entity.VehiclePositionDev;
|
||||
import com.zhgd.xmgl.modules.worker.entity.WorkerInfo;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class VehicleListByRegionVo {
|
||||
|
||||
@ApiModelProperty(value = "合法车辆信息")
|
||||
private List<CarInfo> list;
|
||||
|
||||
@ApiModelProperty(value = "非法车辆信息")
|
||||
private List<CarInfo> list1;
|
||||
}
|
||||
@ -5,11 +5,13 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Constants;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.zhgd.xmgl.modules.safetyhat.entity.SafetyHatData;
|
||||
import com.zhgd.xmgl.modules.vehicleposition.entity.VehiclePositionData;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @Description: 车辆(人员)定位-实时数据
|
||||
@ -40,4 +42,12 @@ public interface VehiclePositionDataMapper extends BaseMapper<VehiclePositionDat
|
||||
* @return
|
||||
*/
|
||||
VehiclePositionData getTodayBeginData(String devSn);
|
||||
|
||||
/**
|
||||
* 查询最想的数据列表
|
||||
*
|
||||
* @param param
|
||||
* @return
|
||||
*/
|
||||
List<VehiclePositionData> getNewestDataGroupByProjectSn(@Param("param") Map<String, Object> param);
|
||||
}
|
||||
|
||||
@ -16,4 +16,19 @@
|
||||
order by vpd.create_time
|
||||
limit 1
|
||||
</select>
|
||||
|
||||
<select id="getNewestDataGroupByProjectSn" resultType="com.zhgd.xmgl.modules.vehicleposition.entity.VehiclePositionData">
|
||||
select vpd.*
|
||||
from vehicle_position_data vpd
|
||||
join (select max(create_time) as create_time, dev_sn
|
||||
from vehicle_position_data
|
||||
where project_sn = #{param.projectSn}
|
||||
group by dev_sn) t on t.create_time = vpd.create_time and t.dev_sn=vpd.dev_sn
|
||||
join vehicle_position_data vpd2 on vpd2.dev_sn = vpd.dev_sn
|
||||
where vpd2.id in
|
||||
<foreach collection="param.devList" index="index" item="item" open="(" separator="," close=")">
|
||||
#{item}
|
||||
</foreach>
|
||||
group by vpd.dev_sn
|
||||
</select>
|
||||
</mapper>
|
||||
|
||||
@ -3,9 +3,11 @@ package com.zhgd.xmgl.modules.vehicleposition.service;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.zhgd.xmgl.modules.vehicleposition.entity.VehiclePositionData;
|
||||
import com.zhgd.xmgl.modules.vehicleposition.entity.vo.VehicleListByRegionVo;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @Description: 车辆(人员)定位-实时数据
|
||||
@ -36,4 +38,6 @@ public interface IVehiclePositionDataService extends IService<VehiclePositionDat
|
||||
* @param vehiclePositionData
|
||||
*/
|
||||
void add(VehiclePositionData vehiclePositionData);
|
||||
|
||||
VehicleListByRegionVo getVehicleListByRegion(Map<String, Object> param);
|
||||
}
|
||||
|
||||
@ -1,29 +1,44 @@
|
||||
package com.zhgd.xmgl.modules.vehicleposition.service.impl;
|
||||
|
||||
import cn.hutool.core.date.DateUnit;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.zhgd.jeecg.common.execption.OpenAlertException;
|
||||
import com.zhgd.jeecg.common.system.query.QueryGenerator;
|
||||
import com.zhgd.xmgl.modules.car.entity.CarInfo;
|
||||
import com.zhgd.xmgl.modules.car.mapper.CarInfoMapper;
|
||||
import com.zhgd.xmgl.modules.location.entity.LocationData;
|
||||
import com.zhgd.xmgl.modules.safetyhat.entity.SafetyHatData;
|
||||
import com.zhgd.xmgl.modules.safetyhat.entity.SafetyHatDev;
|
||||
import com.zhgd.xmgl.modules.safetyhat.entity.SafetyHatFence;
|
||||
import com.zhgd.xmgl.modules.safetyhat.entity.vo.WorkerListyByRegionVo;
|
||||
import com.zhgd.xmgl.modules.safetyhat.mapper.SafetyHatFenceMapper;
|
||||
import com.zhgd.xmgl.modules.vehicleposition.entity.VehiclePositionAlarm;
|
||||
import com.zhgd.xmgl.modules.vehicleposition.entity.VehiclePositionData;
|
||||
import com.zhgd.xmgl.modules.vehicleposition.entity.VehiclePositionDev;
|
||||
import com.zhgd.xmgl.modules.vehicleposition.entity.VehiclePositionFence;
|
||||
import com.zhgd.xmgl.modules.vehicleposition.entity.vo.VehicleListByRegionVo;
|
||||
import com.zhgd.xmgl.modules.vehicleposition.mapper.VehiclePositionDataMapper;
|
||||
import com.zhgd.xmgl.modules.vehicleposition.mapper.VehiclePositionDevMapper;
|
||||
import com.zhgd.xmgl.modules.vehicleposition.service.IVehiclePositionAlarmService;
|
||||
import com.zhgd.xmgl.modules.vehicleposition.service.IVehiclePositionDataService;
|
||||
import com.zhgd.xmgl.modules.worker.entity.WorkerInfo;
|
||||
import com.zhgd.xmgl.util.PageUtil;
|
||||
import com.zhgd.xmgl.util.RefUtil;
|
||||
import com.zhgd.xmgl.util.RegionUtil;
|
||||
import org.apache.commons.collections4.MapUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @Description: 车辆(人员)定位-实时数据
|
||||
@ -38,6 +53,12 @@ public class VehiclePositionDataServiceImpl extends ServiceImpl<VehiclePositionD
|
||||
@Autowired
|
||||
VehiclePositionDevMapper vehiclePositionDevMapper;
|
||||
|
||||
@Autowired
|
||||
SafetyHatFenceMapper safetyHatFenceMapper;
|
||||
|
||||
@Autowired
|
||||
CarInfoMapper carInfoMapper;
|
||||
|
||||
@Override
|
||||
public IPage<VehiclePositionData> queryPageList(HashMap<String, Object> paramMap) {
|
||||
QueryWrapper<VehiclePositionData> queryWrapper = getQueryWrapper(paramMap);
|
||||
@ -83,4 +104,74 @@ public class VehiclePositionDataServiceImpl extends ServiceImpl<VehiclePositionD
|
||||
private List<VehiclePositionData> dealList(List<VehiclePositionData> list) {
|
||||
return list;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public VehicleListByRegionVo getVehicleListByRegion(Map<String, Object> param) {
|
||||
String projectSn = org.apache.commons.collections.MapUtils.getString(param, "projectSn");
|
||||
String regionId = org.apache.commons.collections.MapUtils.getString(param, "regionId");
|
||||
SafetyHatFence safetyHatFence = safetyHatFenceMapper.selectById(regionId);
|
||||
List<VehiclePositionDev> vehiclePositionDevList = vehiclePositionDevMapper.selectList(Wrappers.<VehiclePositionDev>lambdaQuery()
|
||||
.like(VehiclePositionDev::getProjectSn, projectSn));
|
||||
List<VehiclePositionDev> onlineDev = vehiclePositionDevList.stream().filter(dev -> dev.getHeartbeatTime() != null && DateUtil.between(dev.getHeartbeatTime(), new Date(), DateUnit.MINUTE) < 30 )
|
||||
.collect(Collectors.toList());
|
||||
// 区域绑定的车辆车牌
|
||||
List<String> bindCars = vehiclePositionDevList.stream().filter(v -> v.getFenceId().toString().equals(regionId))
|
||||
.map(s -> s.getNumberPlate()).collect(Collectors.toList());
|
||||
// 今天进入区域人员
|
||||
param.put("devList", onlineDev);
|
||||
List<VehiclePositionData> datas = baseMapper.getNewestDataGroupByProjectSn(param);
|
||||
// 在区域中的车辆车牌
|
||||
Set<String> carSet = checkInFence(safetyHatFence, datas);
|
||||
Set<String> allWorker = new HashSet<>();
|
||||
allWorker.addAll(carSet);
|
||||
allWorker.addAll(bindCars);
|
||||
allWorker.add("0");
|
||||
param.put("workerIdList", allWorker);
|
||||
List<CarInfo> carInfoList = carInfoMapper.selectList(Wrappers.<CarInfo>lambdaQuery()
|
||||
.in(CarInfo::getCarNumber, allWorker)
|
||||
.eq(CarInfo::getProjectSn, projectSn));
|
||||
VehicleListByRegionVo vo = new VehicleListByRegionVo();
|
||||
List<CarInfo> collect = carInfoList.stream().filter(w -> bindCars.contains(w.getCarNumber())).collect(Collectors.toList());
|
||||
for (CarInfo carInfo : collect) {
|
||||
carInfo.setInserviceType(carSet.contains(carInfo.getCarNumber()) ? 1 : 2);
|
||||
}
|
||||
collect.sort((a,b) -> a.getInserviceType().compareTo(b.getInserviceType()));
|
||||
vo.setList(collect);
|
||||
List<CarInfo> collect1 = carInfoList.stream().filter(w -> !bindCars.contains(w.getId()) && carSet.contains(w.getId())).collect(Collectors.toList());
|
||||
for (CarInfo carInfo : collect1) {
|
||||
carInfo.setInserviceType(1);
|
||||
}
|
||||
vo.setList1(collect1);
|
||||
return vo;
|
||||
}
|
||||
|
||||
private Set<String> checkInFence(SafetyHatFence fence, List<VehiclePositionData> datas) {
|
||||
Set<String> inCarSet = new HashSet<>();
|
||||
for (VehiclePositionData d : datas) {
|
||||
boolean alarm = false;
|
||||
//判断是否在围栏范围内
|
||||
if (Objects.equals(fence.getRangeType(), 1)) {
|
||||
alarm = !RegionUtil.isInCircle(d.getLongitude(), d.getLatitude(), fence.getLongitude(), fence.getLatitude(), fence.getAreaRadius());
|
||||
} else if (Objects.equals(fence.getRangeType(), 2)) {
|
||||
String fenceShape = fence.getFenceShape();
|
||||
if (StrUtil.isNotBlank(fenceShape)) {
|
||||
String[] couples = StringUtils.split(fenceShape, ",");
|
||||
Double[] lon = new Double[couples.length];
|
||||
Double[] lat = new Double[couples.length];
|
||||
for (int i = 0; i < couples.length; i++) {
|
||||
String couple = couples[i];
|
||||
String[] two = StringUtils.split(couple, "|");
|
||||
lon[i] = Double.valueOf(two[0]);
|
||||
lat[i] = Double.valueOf(two[1]);
|
||||
}
|
||||
alarm = !RegionUtil.isInPolygon(d.getLongitude(), d.getLatitude(), lon, lat);
|
||||
}
|
||||
}
|
||||
if (alarm) {
|
||||
inCarSet.add(d.getDevSn());
|
||||
}
|
||||
}
|
||||
return inCarSet;
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user