基建大屏
This commit is contained in:
parent
ee4af0566b
commit
d4fbd26cb7
@ -205,7 +205,7 @@ public class CarPassRecordServiceImpl extends ServiceImpl<CarPassRecordMapper, C
|
||||
String payload = JSON.toJSONString(carPassRecord);
|
||||
String topic = "carPassRecordList" + carPassRecord.getProjectSn();
|
||||
log.info("发送主题信息:{},主题为:{}", payload, topic);
|
||||
mqttSender.sendToMqtt(topic, 2, payload);
|
||||
// mqttSender.sendToMqtt(topic, 2, payload);
|
||||
asyncCar.sendCarVideoAnalysisData(carPassRecord, carCamera);
|
||||
if (carCamera != null && carInfo != null && carInfo.getIsBlack() == 1) {
|
||||
//黑名单车辆短信提醒
|
||||
|
||||
@ -2,13 +2,9 @@ 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;
|
||||
@ -17,19 +13,14 @@ import com.zhgd.xmgl.modules.bridgeerectmachine.service.IBridgeErectMachineAlarm
|
||||
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.entity.vo.*;
|
||||
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;
|
||||
@ -38,17 +29,19 @@ 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.EnterpriseInfo;
|
||||
import com.zhgd.xmgl.modules.worker.entity.WorkerAttendance;
|
||||
import com.zhgd.xmgl.modules.worker.entity.WorkerInfo;
|
||||
import com.zhgd.xmgl.modules.worker.service.IEnterpriseInfoService;
|
||||
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.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
@ -71,6 +64,9 @@ public class IndexController {
|
||||
@Autowired
|
||||
private IMonitorDevService monitorDevService;
|
||||
|
||||
@Autowired
|
||||
private IEnterpriseInfoService enterpriseInfoService;
|
||||
|
||||
@Autowired
|
||||
private ICarInfoService carInfoService;
|
||||
|
||||
@ -183,6 +179,112 @@ public class IndexController {
|
||||
return Result.success(workerNumByRegionVo);
|
||||
}
|
||||
|
||||
@OperLog(operModul = "基建大屏查询", operType = "统计", operDesc = "机械管理")
|
||||
@ApiOperation(value = " 机械管理", notes = "机械管理", httpMethod = "POST")
|
||||
@ApiImplicitParam(name = "projectSn", value = "项目SN", paramType = "body", required = true, dataType = "String")
|
||||
@PostMapping(value = "/machineryStat")
|
||||
public Result<MachineryStat> machineryStat(@ApiIgnore @RequestBody Map<String, Object> paramMap) {
|
||||
String projectSn = MapUtils.getString(paramMap, "projectSn");
|
||||
MachineryStat machineryStat = new MachineryStat();
|
||||
List<MachineryDev> devList = new ArrayList<>();
|
||||
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));
|
||||
machineryStat.setMachineryNum(towerNum + bridgeDevNum + gantryNum + lifterNum);
|
||||
Set<String> list = towerAlarmService.list(Wrappers.<TowerAlarm>lambdaQuery()
|
||||
.eq(TowerAlarm::getProjectSn, projectSn)
|
||||
.ge(TowerAlarm::getAddTime, DateUtil.offsetMinute(new Date(), -30)))
|
||||
.stream().map(t -> t.getDevSn()).collect(Collectors.toSet());
|
||||
list.add("1");
|
||||
List<Tower> list5 = towerService.list(Wrappers.<Tower>lambdaQuery().eq(Tower::getProjectSn, projectSn));
|
||||
Set<String> list1 = bridgeErectMachineAlarmService.list(Wrappers.<BridgeErectMachineAlarm>lambdaQuery()
|
||||
.eq(BridgeErectMachineAlarm::getProjectSn, projectSn)
|
||||
.ge(BridgeErectMachineAlarm::getAddTime, DateUtil.offsetMinute(new Date(), -30)))
|
||||
.stream().map(t -> t.getDevSn()).collect(Collectors.toSet());
|
||||
list1.add("1");
|
||||
List<BridgeErectMachineDev> list6 = bridgeErectMachineDevService.list(Wrappers.<BridgeErectMachineDev>lambdaQuery()
|
||||
.eq(BridgeErectMachineDev::getProjectSn, projectSn));
|
||||
Set<String> list2 = gantryCraneAlarmService.list(Wrappers.<GantryCraneAlarm>lambdaQuery()
|
||||
.eq(GantryCraneAlarm::getProjectSn, projectSn)
|
||||
.ge(GantryCraneAlarm::getAddTime, DateUtil.offsetMinute(new Date(), -30)))
|
||||
.stream().map(t -> t.getDevSn()).collect(Collectors.toSet());
|
||||
list2.add("1");
|
||||
List<GantryCrane> list7 = gantryCraneService.list(Wrappers.<GantryCrane>lambdaQuery()
|
||||
.eq(GantryCrane::getProjectSn, projectSn));
|
||||
Set<String> list3 = lifterAlarmService.list(Wrappers.<LifterAlarm>lambdaQuery()
|
||||
.eq(LifterAlarm::getProjectSn, projectSn)
|
||||
.ge(LifterAlarm::getAddTime, DateUtil.offsetMinute(new Date(), -30)))
|
||||
.stream().map(t -> t.getDevSn()).collect(Collectors.toSet());
|
||||
list3.add("1");
|
||||
List<Lifter> list8 = lifterService.list(Wrappers.<Lifter>lambdaQuery()
|
||||
.eq(Lifter::getProjectSn, projectSn));
|
||||
List<MonitorDev> list4 = new ArrayList<>();
|
||||
MonitorDev monitorDev1 = new MonitorDev();
|
||||
monitorDev1.setProjectSn(projectSn);
|
||||
monitorDev1.setCategory(11);
|
||||
list4.addAll(monitorDevService.getDevList(monitorDev1));
|
||||
monitorDev1.setCategory(12);
|
||||
list4.addAll(monitorDevService.getDevList(monitorDev1));
|
||||
monitorDev1.setCategory(13);
|
||||
list4.addAll(monitorDevService.getDevList(monitorDev1));
|
||||
monitorDev1.setCategory(14);
|
||||
list4.addAll(monitorDevService.getDevList(monitorDev1));
|
||||
// list4.sort((o1, o2) -> o2.get().compareTo(o1.getCreateTime()));
|
||||
List<EnterpriseInfo> enterpriseInfoList = enterpriseInfoService.list();
|
||||
for (MonitorDev monitorDev : list4) {
|
||||
MachineryDev machineryDev = new MachineryDev();
|
||||
BeanUtils.copyProperties(monitorDev, machineryDev);
|
||||
if (monitorDev.getCategory() == 11) {
|
||||
List<Tower> list11 = list5.stream().filter(l -> list.contains(l.getId().toString()) && l.getId().toString().equals(monitorDev.getDevSn())).collect(Collectors.toList());
|
||||
List<Tower> list21 = list5.stream().filter(l -> l.getId().toString().equals(monitorDev.getDevSn())).collect(Collectors.toList());
|
||||
machineryDev.setAlarmFlag(list11.size() > 0 ? 1 : 0);
|
||||
machineryDev.setCategoryName("塔吊");
|
||||
if (list21.size() > 0) {
|
||||
machineryDev.setAddTime(list21.get(0).getInstallationTime());
|
||||
List<EnterpriseInfo> collect = enterpriseInfoList.stream().filter(e -> e.getId().toString().equals(list21.get(0).getGeneralContractorsId())).collect(Collectors.toList());
|
||||
machineryDev.setEnterpriseName(collect.size() > 0 ? collect.get(0).getEnterpriseName() : "");
|
||||
}
|
||||
} else if (monitorDev.getCategory() == 12) {
|
||||
List<BridgeErectMachineDev> list12 = list6.stream().filter(l -> list1.contains(l.getId().toString()) && l.getId().toString().equals(monitorDev.getDevSn())).collect(Collectors.toList());
|
||||
List<BridgeErectMachineDev> list22 = list6.stream().filter(l -> l.getId().toString().equals(monitorDev.getDevSn())).collect(Collectors.toList());
|
||||
machineryDev.setAlarmFlag(list12.size() > 0 ? 1 : 0);
|
||||
machineryDev.setCategoryName("架桥机");
|
||||
if (list22.size() > 0) {
|
||||
machineryDev.setAddTime(DateUtil.formatDateTime(list22.get(0).getCreateDate()));
|
||||
List<EnterpriseInfo> collect = enterpriseInfoList.stream().filter(e -> e.getId().toString().equals(list22.get(0).getEnterpriseIds())).collect(Collectors.toList());
|
||||
machineryDev.setEnterpriseName(collect.size() > 0 ? collect.get(0).getEnterpriseName() : "");
|
||||
}
|
||||
} else if (monitorDev.getCategory() == 13) {
|
||||
List<GantryCrane> list13 = list7.stream().filter(l -> list2.contains(l.getId().toString()) && l.getId().toString().equals(monitorDev.getDevSn())).collect(Collectors.toList());
|
||||
List<GantryCrane> list23 = list7.stream().filter(l -> l.getId().toString().equals(monitorDev.getDevSn())).collect(Collectors.toList());
|
||||
machineryDev.setAlarmFlag(list13.size() > 0 ? 1 : 0);
|
||||
machineryDev.setCategoryName("龙门吊");
|
||||
if (list23.size() > 0) {
|
||||
machineryDev.setAddTime(list23.get(0).getInstallationTime());
|
||||
}
|
||||
} else if (monitorDev.getCategory() == 14) {
|
||||
List<Lifter> list14 = list8.stream().filter(l -> list2.contains(l.getId().toString()) && l.getId().toString().equals(monitorDev.getDevSn())).collect(Collectors.toList());
|
||||
List<Lifter> list24= list8.stream().filter(l -> l.getId().toString().equals(monitorDev.getDevSn())).collect(Collectors.toList());
|
||||
machineryDev.setAlarmFlag(list14.size() > 0 ? 1 : 0);
|
||||
machineryDev.setCategoryName("升降机");
|
||||
if (list24.size() > 0) {
|
||||
machineryDev.setAddTime(list24.get(0).getInstallationTime());
|
||||
List<EnterpriseInfo> collect = enterpriseInfoList.stream().filter(e -> e.getId().toString().equals(list24.get(0).getGeneralContractorsId())).collect(Collectors.toList());
|
||||
machineryDev.setEnterpriseName(collect.size() > 0 ? collect.get(0).getEnterpriseName() : "");
|
||||
}
|
||||
}
|
||||
devList.add(machineryDev);
|
||||
}
|
||||
machineryStat.setDevList(devList);
|
||||
machineryStat.setAlarmNum((int) devList.stream().filter(m -> m.getAlarmFlag() == 1).count());
|
||||
return Result.success(machineryStat);
|
||||
}
|
||||
|
||||
@OperLog(operModul = "基建大屏查询", operType = "统计", operDesc = "安全问题监测项")
|
||||
@ApiOperation(value = " 安全问题监测项", notes = "安全问题监测项", httpMethod = "POST")
|
||||
@ApiImplicitParams({
|
||||
|
||||
@ -247,4 +247,12 @@ public class MonitorDevController {
|
||||
List<MonitorDev> devList = monitorDevService.getDevList(monitorDev);
|
||||
return Result.success(devList);
|
||||
}
|
||||
|
||||
@OperLog(operModul = "地图设备点位信息管理", operType = "统计查询", operDesc = "查询场站类型数量统计")
|
||||
@ApiOperation(value = " 查询场站类型数量统计", notes = "查询场站类型数量统计", httpMethod = "POST")
|
||||
@ApiImplicitParam(name = "projectSn", value = "项目SN", paramType = "body", required = true, dataType = "String")
|
||||
@PostMapping(value = "/getStationStat")
|
||||
public Result<Map<String, Object>> getStationStat(@ApiIgnore @RequestBody MonitorDev monitorDev) {
|
||||
return Result.success(monitorDevService.getStationStat(monitorDev.getProjectSn()));
|
||||
}
|
||||
}
|
||||
|
||||
@ -4,6 +4,7 @@ import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
@ -127,4 +128,8 @@ public class MonitorDev implements Serializable {
|
||||
@Excel(name = "场站类型", width = 15)
|
||||
@ApiModelProperty(value = "场站类型")
|
||||
private String stationType;
|
||||
|
||||
@TableField(exist = false)
|
||||
@ApiModelProperty(value = "场站类型")
|
||||
private String stationTypeName;
|
||||
}
|
||||
|
||||
@ -15,6 +15,6 @@ public class AlarmNumStat {
|
||||
@ApiModelProperty(value = "视频AI预警")
|
||||
private Integer videoAlarmNum;
|
||||
|
||||
@ApiModelProperty(value = "视频监控数量")
|
||||
@ApiModelProperty(value = "机械设备数量")
|
||||
private Integer machineryAlarmNum;
|
||||
}
|
||||
|
||||
@ -0,0 +1,65 @@
|
||||
package com.zhgd.xmgl.modules.review.entity.vo;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
@Data
|
||||
public class MachineryDev {
|
||||
|
||||
|
||||
@ApiModelProperty(value = "设备点位ID")
|
||||
private Long monitorId;
|
||||
|
||||
@ApiModelProperty(value = "设备点位名称")
|
||||
private String name;
|
||||
|
||||
@ApiModelProperty(value = "设备编码")
|
||||
private String code;
|
||||
|
||||
@ApiModelProperty(value = "显示排序 越小越靠前(排序字段)")
|
||||
private Integer priority;
|
||||
|
||||
@ApiModelProperty(value = "经度")
|
||||
private String lng;
|
||||
|
||||
@ApiModelProperty(value = "纬度")
|
||||
private String lat;
|
||||
|
||||
@ApiModelProperty(value = "高度")
|
||||
private String alt;
|
||||
|
||||
@ApiModelProperty(value = "封面图")
|
||||
private String coverImage;
|
||||
|
||||
@ApiModelProperty(value = "创建时间")
|
||||
private Date createTime;
|
||||
|
||||
@ApiModelProperty(value = "修改时间")
|
||||
private Date updateTime;
|
||||
|
||||
@ApiModelProperty(value = "类别(1、视频监控;2、扬尘设备;3、场站;11、塔吊;12、架桥机;13、龙门吊;14、升降机;)")
|
||||
private Integer category;
|
||||
|
||||
@ApiModelProperty(value = "类别")
|
||||
private String categoryName;
|
||||
|
||||
@ApiModelProperty(value = "绑定的设备ID")
|
||||
private String devSn;
|
||||
|
||||
@ApiModelProperty(value = "项目ID")
|
||||
private String projectSn;
|
||||
|
||||
@ApiModelProperty(value = "备注")
|
||||
private String remark;
|
||||
|
||||
@ApiModelProperty(value = "是否预警(0:未预警;1:预警)")
|
||||
private Integer alarmFlag;
|
||||
|
||||
@ApiModelProperty(value = "进场日期")
|
||||
private String addTime;
|
||||
|
||||
@ApiModelProperty(value = "企业名称")
|
||||
private String enterpriseName;
|
||||
}
|
||||
@ -0,0 +1,22 @@
|
||||
package com.zhgd.xmgl.modules.review.entity.vo;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class MachineryStat {
|
||||
|
||||
@ApiModelProperty(value = "设备类型")
|
||||
private Integer typeNum = 4;
|
||||
|
||||
@ApiModelProperty(value = "进场机械")
|
||||
private Integer machineryNum;
|
||||
|
||||
@ApiModelProperty(value = "预警设备")
|
||||
private Integer alarmNum;
|
||||
|
||||
@ApiModelProperty(value = "机械设备列表")
|
||||
private List<MachineryDev> devList;
|
||||
}
|
||||
@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.zhgd.xmgl.modules.review.entity.MonitorDev;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @Description: 视频监控信息
|
||||
@ -14,4 +15,6 @@ import java.util.List;
|
||||
public interface IMonitorDevService extends IService<MonitorDev> {
|
||||
|
||||
List<MonitorDev> getDevList(MonitorDev monitorDev);
|
||||
|
||||
Map<String, Object> getStationStat(String projectSn);
|
||||
}
|
||||
|
||||
@ -3,6 +3,8 @@ 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.basicdata.entity.DictionaryItem;
|
||||
import com.zhgd.xmgl.modules.basicdata.service.IDictionaryItemService;
|
||||
import com.zhgd.xmgl.modules.bigdevice.entity.GantryCrane;
|
||||
import com.zhgd.xmgl.modules.bigdevice.entity.Lifter;
|
||||
import com.zhgd.xmgl.modules.bigdevice.entity.Tower;
|
||||
@ -24,7 +26,9 @@ import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
@ -57,6 +61,9 @@ public class MonitorDevServiceImpl extends ServiceImpl<MonitorDevMapper, Monitor
|
||||
@Autowired
|
||||
private ILifterService lifterService;
|
||||
|
||||
@Autowired
|
||||
private IDictionaryItemService dictionaryItemService;
|
||||
|
||||
|
||||
@Override
|
||||
public List<MonitorDev> getDevList(MonitorDev monitorDev) {
|
||||
@ -67,97 +74,73 @@ public class MonitorDevServiceImpl extends ServiceImpl<MonitorDevMapper, Monitor
|
||||
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);
|
||||
buildDevInfo(list, videoItem.getItemId().toString(), videoItem.getVideoName(), devList, 1);
|
||||
}
|
||||
}
|
||||
} 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);
|
||||
buildDevInfo(list, environmentDev.getId().toString(), environmentDev.getDeviceName(), devList, 2);
|
||||
}
|
||||
} else if (monitorDev.getCategory() == 3) {
|
||||
devList = this.list(Wrappers.<MonitorDev>lambdaQuery().eq(MonitorDev::getCategory, 3));
|
||||
List<DictionaryItem> stationType = dictionaryItemService.list(Wrappers.<DictionaryItem>lambdaQuery()
|
||||
.eq(DictionaryItem::getDictionaryEncoding, "station_type"));
|
||||
for (MonitorDev monitorDev1 : devList) {
|
||||
List<DictionaryItem> itemList = stationType.stream().filter(s -> s.getData().equals(monitorDev1.getStationType())).collect(Collectors.toList());
|
||||
monitorDev1.setStationTypeName(itemList.size() > 0 ? itemList.get(0).getName() : "");
|
||||
}
|
||||
} 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);
|
||||
buildDevInfo(list, tower.getId().toString(), tower.getDevName(), devList, 11);
|
||||
}
|
||||
} 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);
|
||||
buildDevInfo(list, bridgeErectMachineDev.getId().toString(), bridgeErectMachineDev.getDevName(), devList, 12);
|
||||
}
|
||||
} 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);
|
||||
buildDevInfo(list, gantryCrane.getId().toString(), gantryCrane.getDevName(), devList, 13);
|
||||
}
|
||||
} 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);
|
||||
buildDevInfo(list, lifter.getId().toString(), lifter.getDevName(), devList, 14);
|
||||
}
|
||||
}
|
||||
return devList;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Object> getStationStat(String projectSn) {
|
||||
Map<String, Object> resultMap = new HashMap<>();
|
||||
List<MonitorDev> devList = this.list(Wrappers.<MonitorDev>lambdaQuery()
|
||||
.eq(MonitorDev::getProjectSn, projectSn)
|
||||
.eq(MonitorDev::getCategory, 3));
|
||||
List<DictionaryItem> stationType = dictionaryItemService.list(Wrappers.<DictionaryItem>lambdaQuery()
|
||||
.eq(DictionaryItem::getDictionaryEncoding, "station_type"));
|
||||
for (DictionaryItem dictionaryItem : stationType) {
|
||||
Integer count = Math.toIntExact(devList.stream().filter(d -> d.getStationType().equals(dictionaryItem.getData())).count());
|
||||
resultMap.put(dictionaryItem.getName(), count);
|
||||
}
|
||||
return resultMap;
|
||||
}
|
||||
|
||||
private void buildDevInfo(List<MonitorDev> list, String id, String devName, List<MonitorDev> devList, Integer category) {
|
||||
MonitorDev dev = new MonitorDev();
|
||||
List<MonitorDev> collect = list.stream().filter(l -> StringUtils.isNotBlank(l.getDevSn()) && l.getDevSn().equals(id)).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.setCategory(category);
|
||||
dev.setDevSn(id);
|
||||
dev.setName(devName);
|
||||
devList.add(dev);
|
||||
}
|
||||
}
|
||||
|
||||
@ -7,6 +7,7 @@ import cn.hutool.http.HttpRequest;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.gexin.fastjson.JSON;
|
||||
import com.zhgd.annotation.OperLog;
|
||||
import com.zhgd.jeecg.common.api.vo.Result;
|
||||
@ -24,6 +25,7 @@ import com.zhgd.xmgl.modules.safetyhat.generator.PolygonTrajectoryGenerator;
|
||||
import com.zhgd.xmgl.modules.safetyhat.service.IMockSafetyHatDataConfigService;
|
||||
import com.zhgd.xmgl.modules.safetyhat.service.ISafetyHatDataService;
|
||||
import com.zhgd.xmgl.modules.safetyhat.service.ISafetyHatDevService;
|
||||
import com.zhgd.xmgl.modules.worker.entity.WorkerInfo;
|
||||
import com.zhgd.xmgl.util.RundeSafeyHatUtils;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiImplicitParam;
|
||||
@ -345,15 +347,25 @@ public class SafetyHatDataController {
|
||||
return Result.ok();
|
||||
}
|
||||
|
||||
@OperLog(operModul = "智能安全帽实时数据管理", operType = "查询", operDesc = "区域人员列表")
|
||||
@ApiOperation(value = "区域人员列表", notes = "区域人员列表", httpMethod = "POST")
|
||||
@OperLog(operModul = "智能安全帽实时数据管理", operType = "查询", operDesc = "区域绑定人员列表")
|
||||
@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 = "/getWorkerListByRegion")
|
||||
public Result<WorkerListyByRegionVo> getWorkerListByRegion(@ApiIgnore @RequestBody Map<String, Object> param) {
|
||||
public Result<Page<WorkerInfo>> getWorkerListByRegion(@ApiIgnore @RequestBody Map<String, Object> param) {
|
||||
return Result.success(safetyHatDataService.getWorkerListByRegion(param));
|
||||
}
|
||||
|
||||
@OperLog(operModul = "智能安全帽实时数据管理", operType = "查询", operDesc = "区域非法人员列表")
|
||||
@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 = "/getWorkerListByRegion1")
|
||||
public Result<Page<WorkerInfo>> getWorkerListByRegion1(@ApiIgnore @RequestBody Map<String, Object> param) {
|
||||
return Result.success(safetyHatDataService.getWorkerListByRegion1(param));
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,6 +1,8 @@
|
||||
package com.zhgd.xmgl.modules.safetyhat.entity.vo;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import org.jeecgframework.poi.excel.annotation.Excel;
|
||||
|
||||
@Data
|
||||
public class WorkerNumAndRegionName {
|
||||
@ -8,5 +10,11 @@ public class WorkerNumAndRegionName {
|
||||
private Integer workerNum;
|
||||
private Integer bindNum;
|
||||
private String regionName;
|
||||
|
||||
private Long regionId;
|
||||
private String fenceShape;
|
||||
private String fenceShapeArr;
|
||||
private Integer rangeType;
|
||||
private Integer areaRadius;
|
||||
private Double longitude;
|
||||
private Double latitude;
|
||||
}
|
||||
|
||||
@ -1,11 +1,13 @@
|
||||
package com.zhgd.xmgl.modules.safetyhat.service;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.zhgd.xmgl.modules.safetyhat.entity.SafetyHatData;
|
||||
import com.zhgd.xmgl.modules.safetyhat.entity.SafetyHatDev;
|
||||
import com.zhgd.xmgl.modules.safetyhat.entity.vo.WorkerListyByRegionVo;
|
||||
import com.zhgd.xmgl.modules.safetyhat.entity.vo.WorkerNumByRegionVo;
|
||||
import com.zhgd.xmgl.modules.worker.entity.WorkerInfo;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
@ -100,5 +102,7 @@ public interface ISafetyHatDataService extends IService<SafetyHatData> {
|
||||
|
||||
WorkerNumByRegionVo countWorkerNumByRegionToday(Map<String, Object> param);
|
||||
|
||||
WorkerListyByRegionVo getWorkerListByRegion(Map<String, Object> param);
|
||||
Page<WorkerInfo> getWorkerListByRegion(Map<String, Object> param);
|
||||
|
||||
Page<WorkerInfo> getWorkerListByRegion1(Map<String, Object> param);
|
||||
}
|
||||
|
||||
@ -16,7 +16,6 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.google.common.collect.Lists;
|
||||
import com.zhgd.jeecg.common.execption.OpenAlertException;
|
||||
import com.zhgd.jeecg.common.system.query.QueryGenerator;
|
||||
import com.zhgd.xmgl.constant.Cts;
|
||||
import com.zhgd.xmgl.modules.location.entity.LocationData;
|
||||
import com.zhgd.xmgl.modules.project.entity.Project;
|
||||
import com.zhgd.xmgl.modules.project.mapper.ProjectMapper;
|
||||
@ -353,7 +352,14 @@ public class SafetyHatDataServiceImpl extends ServiceImpl<SafetyHatDataMapper, S
|
||||
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());
|
||||
workerNumAndRegionName.setRegionName(region.getFenceName());
|
||||
workerNumAndRegionName.setRegionId(region.getId());
|
||||
workerNumAndRegionName.setFenceShape(region.getFenceShape());
|
||||
workerNumAndRegionName.setFenceShapeArr(region.getFenceShapeArr());
|
||||
workerNumAndRegionName.setRangeType(region.getRangeType());
|
||||
workerNumAndRegionName.setAreaRadius(region.getAreaRadius());
|
||||
workerNumAndRegionName.setLatitude(region.getLatitude());
|
||||
workerNumAndRegionName.setLongitude(region.getLongitude());
|
||||
list.add(workerNumAndRegionName);
|
||||
}
|
||||
WorkerNumByRegionVo oneVo = new WorkerNumByRegionVo();
|
||||
@ -363,7 +369,7 @@ public class SafetyHatDataServiceImpl extends ServiceImpl<SafetyHatDataMapper, S
|
||||
}
|
||||
|
||||
@Override
|
||||
public WorkerListyByRegionVo getWorkerListByRegion(Map<String, Object> param) {
|
||||
public Page<WorkerInfo> getWorkerListByRegion(Map<String, Object> param) {
|
||||
String projectSn = MapUtils.getString(param, "projectSn");
|
||||
String regionId = MapUtils.getString(param, "regionId");
|
||||
SafetyHatFence safetyHatFence = safetyHatFenceMapper.selectById(regionId);
|
||||
@ -380,19 +386,47 @@ public class SafetyHatDataServiceImpl extends ServiceImpl<SafetyHatDataMapper, S
|
||||
allWorker.add(-1L);
|
||||
param.put("workerIdList", allWorker);
|
||||
List<WorkerInfo> workerInfoList = workerInfoMapper.selectWorkerInfoList(new Page<>(-1, -1), param);
|
||||
WorkerListyByRegionVo vo = new WorkerListyByRegionVo();
|
||||
List<WorkerInfo> collect = workerInfoList.stream().filter(w -> bindWorkerIds.contains(w.getId())).collect(Collectors.toList());
|
||||
for (WorkerInfo workerInfo : collect) {
|
||||
workerInfo.setInserviceType(workerSet.contains(workerInfo.getId()) ? 1 : 2);
|
||||
}
|
||||
collect.sort((a,b) -> a.getInserviceType().compareTo(b.getInserviceType()));
|
||||
vo.setList(collect);
|
||||
Page<WorkerInfo> page = PageUtil.getPage(param);
|
||||
int fromIndex = (int) (page.getSize() * (page.getCurrent() - 1));
|
||||
int toIndex = (int) (fromIndex + page.getSize());
|
||||
toIndex = toIndex > collect.size() ? collect.size() : toIndex;
|
||||
page.setRecords(collect.subList(fromIndex, toIndex));
|
||||
return page;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Page<WorkerInfo> getWorkerListByRegion1(Map<String, Object> param) {
|
||||
String projectSn = MapUtils.getString(param, "projectSn");
|
||||
String regionId = MapUtils.getString(param, "regionId");
|
||||
SafetyHatFence safetyHatFence = safetyHatFenceMapper.selectById(regionId);
|
||||
List<SafetyHatDev> safetyHatDevs = safetyHatDevMapper.selectList(Wrappers.<SafetyHatDev>lambdaQuery().like(SafetyHatDev::getFenceId, regionId));
|
||||
// 区域绑定的人员
|
||||
List<Long> bindWorkerIds = safetyHatDevs.stream().map(s -> s.getWorkerInfoId()).collect(Collectors.toList());
|
||||
// 今天进入区域人员
|
||||
List<SafetyHatData> datas = safetyHatDataMapper.getNewestDataGroupByProjectSn(projectSn);
|
||||
// 在区域中的人员
|
||||
Set<Long> workerSet = getWorkerNumInFence(safetyHatFence, datas);
|
||||
Set<Long> allWorker = new HashSet<>();
|
||||
allWorker.addAll(workerSet);
|
||||
allWorker.addAll(bindWorkerIds);
|
||||
allWorker.add(-1L);
|
||||
param.put("workerIdList", allWorker);
|
||||
List<WorkerInfo> workerInfoList = workerInfoMapper.selectWorkerInfoList(new Page<>(-1, -1), param);
|
||||
List<WorkerInfo> collect1 = workerInfoList.stream().filter(w -> !bindWorkerIds.contains(w.getId()) && workerSet.contains(w.getId())).collect(Collectors.toList());
|
||||
for (WorkerInfo workerInfo : collect1) {
|
||||
workerInfo.setInserviceType(1);
|
||||
}
|
||||
vo.setList1(collect1);
|
||||
return vo;
|
||||
Page<WorkerInfo> page = PageUtil.getPage(param);
|
||||
int fromIndex = (int) (page.getSize() * (page.getCurrent() - 1));
|
||||
int toIndex = (int) (fromIndex + page.getSize());
|
||||
toIndex = toIndex > collect1.size() ? collect1.size() : toIndex;
|
||||
page.setRecords(collect1.subList(fromIndex, toIndex));
|
||||
return page;
|
||||
}
|
||||
|
||||
private Set<Long> getWorkerNumInFence(SafetyHatFence fence, List<SafetyHatData> datas) {
|
||||
|
||||
@ -12,6 +12,7 @@ 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.car.entity.CarInfo;
|
||||
import com.zhgd.xmgl.modules.safetyhat.entity.SafetyHatData;
|
||||
import com.zhgd.xmgl.modules.safetyhat.entity.SafetyHatDev;
|
||||
import com.zhgd.xmgl.modules.safetyhat.entity.SafetyHatFence;
|
||||
@ -260,7 +261,17 @@ public class VehiclePositionDataController {
|
||||
@ApiImplicitParam(name = "regionId", value = "区域ID", paramType = "body", required = true, dataType = "String")
|
||||
})
|
||||
@PostMapping(value = "/getVehicleListByRegion")
|
||||
public Result<VehicleListByRegionVo> getVehicleListByRegion(@ApiIgnore @RequestBody Map<String, Object> param) {
|
||||
public Result<Page<CarInfo>> getVehicleListByRegion(@ApiIgnore @RequestBody Map<String, Object> param) {
|
||||
return Result.success(vehiclePositionDataService.getVehicleListByRegion(param));
|
||||
}
|
||||
|
||||
@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 = "/getVehicleListByRegion1")
|
||||
public Result<Page<CarInfo>> getVehicleListByRegion1(@ApiIgnore @RequestBody Map<String, Object> param) {
|
||||
return Result.success(vehiclePositionDataService.getVehicleListByRegion1(param));
|
||||
}
|
||||
}
|
||||
|
||||
@ -24,8 +24,7 @@
|
||||
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
|
||||
where vpd.id in
|
||||
<foreach collection="param.devList" index="index" item="item" open="(" separator="," close=")">
|
||||
#{item}
|
||||
</foreach>
|
||||
|
||||
@ -2,11 +2,12 @@
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.zhgd.xmgl.modules.vehicleposition.mapper.VehiclePositionDevMapper">
|
||||
<select id="pageList" resultType="com.zhgd.xmgl.modules.vehicleposition.entity.VehiclePositionDev">
|
||||
select * from (select vpd.id, vpd.project_sn, vpd.dev_sn, vpd.heartbeat_time, vpd.fence_id, CONCAT(IFNULL(vpd.enterprise_name, ''), IFNULL(en.enterprise_name, '')) enterpriseName,
|
||||
select * from (select vpd.id, vpd.project_sn, vpd.dev_sn, vpd.type, vpd.heartbeat_time, vpd.fence_id, CONCAT(IFNULL(vpd.enterprise_name, ''), IFNULL(en.enterprise_name, '')) enterpriseName,
|
||||
CONCAT(IFNULL(vpd.number_plate, ''), IFNULL(ci.car_number, '')) numberPlate,
|
||||
CONCAT(IFNULL(vpd.car_type, ''), IFNULL(ct.car_type_name, '')) carType,
|
||||
CONCAT(IFNULL(vpd.driver, ''), IFNULL(wi.worker_name, '')) driver,
|
||||
CONCAT(IFNULL(vpd.driver_telephone, ''), IFNULL(ci.driver_telephone, '')) driverTelephone
|
||||
CONCAT(IFNULL(vpd.driver_telephone, ''), IFNULL(ci.driver_telephone, '')) driverTelephone,
|
||||
vpd2.longitude, vpd2.latitude
|
||||
from vehicle_position_dev vpd
|
||||
LEFT JOIN car_info ci ON ci.id = vpd.car_id
|
||||
LEFT JOIN enterprise_info en ON en.id = ci.enterprise_id
|
||||
|
||||
@ -1,7 +1,9 @@
|
||||
package com.zhgd.xmgl.modules.vehicleposition.service;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.zhgd.xmgl.modules.car.entity.CarInfo;
|
||||
import com.zhgd.xmgl.modules.vehicleposition.entity.VehiclePositionData;
|
||||
import com.zhgd.xmgl.modules.vehicleposition.entity.vo.VehicleListByRegionVo;
|
||||
|
||||
@ -39,5 +41,7 @@ public interface IVehiclePositionDataService extends IService<VehiclePositionDat
|
||||
*/
|
||||
void add(VehiclePositionData vehiclePositionData);
|
||||
|
||||
VehicleListByRegionVo getVehicleListByRegion(Map<String, Object> param);
|
||||
Page<CarInfo> getVehicleListByRegion(Map<String, Object> param);
|
||||
|
||||
Page<CarInfo> getVehicleListByRegion1(Map<String, Object> param);
|
||||
}
|
||||
|
||||
@ -107,7 +107,7 @@ public class VehiclePositionDataServiceImpl extends ServiceImpl<VehiclePositionD
|
||||
|
||||
|
||||
@Override
|
||||
public VehicleListByRegionVo getVehicleListByRegion(Map<String, Object> param) {
|
||||
public Page<CarInfo> 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);
|
||||
@ -116,10 +116,12 @@ public class VehiclePositionDataServiceImpl extends ServiceImpl<VehiclePositionD
|
||||
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))
|
||||
List<String> bindCars = vehiclePositionDevList.stream().filter(v -> v.getFenceId() != null && Arrays.asList(v.getFenceId().split(",")).contains(regionId))
|
||||
.map(s -> s.getNumberPlate()).collect(Collectors.toList());
|
||||
// 今天进入区域人员
|
||||
param.put("devList", onlineDev);
|
||||
List<Long> collect1 = onlineDev.stream().map(d -> d.getId()).collect(Collectors.toList());
|
||||
collect1.add(0L);
|
||||
param.put("devList", collect1);
|
||||
List<VehiclePositionData> datas = baseMapper.getNewestDataGroupByProjectSn(param);
|
||||
// 在区域中的车辆车牌
|
||||
Set<String> carSet = checkInFence(safetyHatFence, datas);
|
||||
@ -137,13 +139,52 @@ public class VehiclePositionDataServiceImpl extends ServiceImpl<VehiclePositionD
|
||||
carInfo.setInserviceType(carSet.contains(carInfo.getCarNumber()) ? 1 : 2);
|
||||
}
|
||||
collect.sort((a,b) -> a.getInserviceType().compareTo(b.getInserviceType()));
|
||||
vo.setList(collect);
|
||||
Page<CarInfo> page = PageUtil.getPage(param);
|
||||
int fromIndex = (int) (page.getSize() * (page.getCurrent() - 1));
|
||||
int toIndex = (int) (fromIndex + page.getSize());
|
||||
toIndex = toIndex > collect.size() ? collect.size() : toIndex;
|
||||
page.setRecords(collect.subList(fromIndex, toIndex));
|
||||
return page;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Page<CarInfo> getVehicleListByRegion1(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> bindCaIds = vehiclePositionDevList.stream().filter(v -> v.getFenceId() != null && Arrays.asList(v.getFenceId().split(",")).contains(regionId))
|
||||
.map(s -> s.getDevSn()).collect(Collectors.toList());
|
||||
List<String> bindCars = carInfoMapper.selectBatchIds(bindCaIds).stream().map(c -> c.getCarNumber()).collect(Collectors.toList());
|
||||
// 今天进入区域人员
|
||||
List<Long> collect2 = onlineDev.stream().map(d -> d.getId()).collect(Collectors.toList());
|
||||
collect2.add(0L);
|
||||
param.put("devList", collect2);
|
||||
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));
|
||||
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;
|
||||
Page<CarInfo> page = PageUtil.getPage(param);
|
||||
int fromIndex = (int) (page.getSize() * (page.getCurrent() - 1));
|
||||
int toIndex = (int) (fromIndex + page.getSize());
|
||||
toIndex = toIndex > collect1.size() ? collect1.size() : toIndex;
|
||||
page.setRecords(collect1.subList(fromIndex, toIndex));
|
||||
return page;
|
||||
}
|
||||
|
||||
private Set<String> checkInFence(SafetyHatFence fence, List<VehiclePositionData> datas) {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user