From d4fbd26cb7828cf28a43d35fab02f602953e7dc1 Mon Sep 17 00:00:00 2001 From: pengjie <17373303529@163.com> Date: Mon, 9 Jun 2025 09:09:00 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9F=BA=E5=BB=BA=E5=A4=A7=E5=B1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/CarPassRecordServiceImpl.java | 2 +- .../review/controller/IndexController.java | 124 ++++++++++++++++-- .../controller/MonitorDevController.java | 8 ++ .../modules/review/entity/MonitorDev.java | 5 + .../review/entity/vo/AlarmNumStat.java | 2 +- .../review/entity/vo/MachineryDev.java | 65 +++++++++ .../review/entity/vo/MachineryStat.java | 22 ++++ .../review/service/IMonitorDevService.java | 3 + .../service/impl/MonitorDevServiceImpl.java | 115 +++++++--------- .../controller/SafetyHatDataController.java | 18 ++- .../entity/vo/WorkerNumAndRegionName.java | 10 +- .../service/ISafetyHatDataService.java | 6 +- .../impl/SafetyHatDataServiceImpl.java | 48 ++++++- .../VehiclePositionDataController.java | 13 +- .../mapper/xml/VehiclePositionDataMapper.xml | 3 +- .../mapper/xml/VehiclePositionDevMapper.xml | 5 +- .../service/IVehiclePositionDataService.java | 6 +- .../impl/VehiclePositionDataServiceImpl.java | 53 +++++++- 18 files changed, 405 insertions(+), 103 deletions(-) create mode 100644 src/main/java/com/zhgd/xmgl/modules/review/entity/vo/MachineryDev.java create mode 100644 src/main/java/com/zhgd/xmgl/modules/review/entity/vo/MachineryStat.java diff --git a/src/main/java/com/zhgd/xmgl/modules/car/service/impl/CarPassRecordServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/car/service/impl/CarPassRecordServiceImpl.java index e7c716af3..d6ea0ddaa 100644 --- a/src/main/java/com/zhgd/xmgl/modules/car/service/impl/CarPassRecordServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/car/service/impl/CarPassRecordServiceImpl.java @@ -205,7 +205,7 @@ public class CarPassRecordServiceImpl extends ServiceImpl machineryStat(@ApiIgnore @RequestBody Map paramMap) { + String projectSn = MapUtils.getString(paramMap, "projectSn"); + MachineryStat machineryStat = new MachineryStat(); + List devList = new ArrayList<>(); + int towerNum = towerService.count(Wrappers.lambdaQuery() + .eq(Tower::getProjectSn, projectSn)); + int bridgeDevNum = bridgeErectMachineDevService.count(Wrappers.lambdaQuery() + .eq(BridgeErectMachineDev::getProjectSn, projectSn)); + int gantryNum = gantryCraneService.count(Wrappers.lambdaQuery() + .eq(GantryCrane::getProjectSn, projectSn)); + int lifterNum = lifterService.count(Wrappers.lambdaQuery() + .eq(Lifter::getProjectSn, projectSn)); + machineryStat.setMachineryNum(towerNum + bridgeDevNum + gantryNum + lifterNum); + Set list = towerAlarmService.list(Wrappers.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 list5 = towerService.list(Wrappers.lambdaQuery().eq(Tower::getProjectSn, projectSn)); + Set list1 = bridgeErectMachineAlarmService.list(Wrappers.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 list6 = bridgeErectMachineDevService.list(Wrappers.lambdaQuery() + .eq(BridgeErectMachineDev::getProjectSn, projectSn)); + Set list2 = gantryCraneAlarmService.list(Wrappers.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 list7 = gantryCraneService.list(Wrappers.lambdaQuery() + .eq(GantryCrane::getProjectSn, projectSn)); + Set list3 = lifterAlarmService.list(Wrappers.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 list8 = lifterService.list(Wrappers.lambdaQuery() + .eq(Lifter::getProjectSn, projectSn)); + List 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 enterpriseInfoList = enterpriseInfoService.list(); + for (MonitorDev monitorDev : list4) { + MachineryDev machineryDev = new MachineryDev(); + BeanUtils.copyProperties(monitorDev, machineryDev); + if (monitorDev.getCategory() == 11) { + List list11 = list5.stream().filter(l -> list.contains(l.getId().toString()) && l.getId().toString().equals(monitorDev.getDevSn())).collect(Collectors.toList()); + List 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 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 list12 = list6.stream().filter(l -> list1.contains(l.getId().toString()) && l.getId().toString().equals(monitorDev.getDevSn())).collect(Collectors.toList()); + List 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 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 list13 = list7.stream().filter(l -> list2.contains(l.getId().toString()) && l.getId().toString().equals(monitorDev.getDevSn())).collect(Collectors.toList()); + List 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 list14 = list8.stream().filter(l -> list2.contains(l.getId().toString()) && l.getId().toString().equals(monitorDev.getDevSn())).collect(Collectors.toList()); + List 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 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({ diff --git a/src/main/java/com/zhgd/xmgl/modules/review/controller/MonitorDevController.java b/src/main/java/com/zhgd/xmgl/modules/review/controller/MonitorDevController.java index 62d6577a7..69b877ae3 100644 --- a/src/main/java/com/zhgd/xmgl/modules/review/controller/MonitorDevController.java +++ b/src/main/java/com/zhgd/xmgl/modules/review/controller/MonitorDevController.java @@ -247,4 +247,12 @@ public class MonitorDevController { List 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> getStationStat(@ApiIgnore @RequestBody MonitorDev monitorDev) { + return Result.success(monitorDevService.getStationStat(monitorDev.getProjectSn())); + } } diff --git a/src/main/java/com/zhgd/xmgl/modules/review/entity/MonitorDev.java b/src/main/java/com/zhgd/xmgl/modules/review/entity/MonitorDev.java index 4cb6682c9..2722fd7b3 100644 --- a/src/main/java/com/zhgd/xmgl/modules/review/entity/MonitorDev.java +++ b/src/main/java/com/zhgd/xmgl/modules/review/entity/MonitorDev.java @@ -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; } diff --git a/src/main/java/com/zhgd/xmgl/modules/review/entity/vo/AlarmNumStat.java b/src/main/java/com/zhgd/xmgl/modules/review/entity/vo/AlarmNumStat.java index 04e873e18..13433ea56 100644 --- a/src/main/java/com/zhgd/xmgl/modules/review/entity/vo/AlarmNumStat.java +++ b/src/main/java/com/zhgd/xmgl/modules/review/entity/vo/AlarmNumStat.java @@ -15,6 +15,6 @@ public class AlarmNumStat { @ApiModelProperty(value = "视频AI预警") private Integer videoAlarmNum; - @ApiModelProperty(value = "视频监控数量") + @ApiModelProperty(value = "机械设备数量") private Integer machineryAlarmNum; } diff --git a/src/main/java/com/zhgd/xmgl/modules/review/entity/vo/MachineryDev.java b/src/main/java/com/zhgd/xmgl/modules/review/entity/vo/MachineryDev.java new file mode 100644 index 000000000..3b50cbd32 --- /dev/null +++ b/src/main/java/com/zhgd/xmgl/modules/review/entity/vo/MachineryDev.java @@ -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; +} diff --git a/src/main/java/com/zhgd/xmgl/modules/review/entity/vo/MachineryStat.java b/src/main/java/com/zhgd/xmgl/modules/review/entity/vo/MachineryStat.java new file mode 100644 index 000000000..b572067da --- /dev/null +++ b/src/main/java/com/zhgd/xmgl/modules/review/entity/vo/MachineryStat.java @@ -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 devList; +} diff --git a/src/main/java/com/zhgd/xmgl/modules/review/service/IMonitorDevService.java b/src/main/java/com/zhgd/xmgl/modules/review/service/IMonitorDevService.java index 301e8845e..e2eac32d1 100644 --- a/src/main/java/com/zhgd/xmgl/modules/review/service/IMonitorDevService.java +++ b/src/main/java/com/zhgd/xmgl/modules/review/service/IMonitorDevService.java @@ -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 { List getDevList(MonitorDev monitorDev); + + Map getStationStat(String projectSn); } diff --git a/src/main/java/com/zhgd/xmgl/modules/review/service/impl/MonitorDevServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/review/service/impl/MonitorDevServiceImpl.java index 49d4b6260..9d1680765 100644 --- a/src/main/java/com/zhgd/xmgl/modules/review/service/impl/MonitorDevServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/review/service/impl/MonitorDevServiceImpl.java @@ -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 getDevList(MonitorDev monitorDev) { @@ -67,97 +74,73 @@ public class MonitorDevServiceImpl extends ServiceImpl 0) { List list2 = videoItemService.list(Wrappers.lambdaQuery().in(VideoItem::getGroupId, list1.stream().map(l -> l.getId()).collect(Collectors.toList()))); for (VideoItem videoItem : list2) { - MonitorDev dev = new MonitorDev(); - List 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 list1 = environmentDevService.list(Wrappers.lambdaQuery().eq(EnvironmentDev::getProjectSn, monitorDev.getProjectSn())); for (EnvironmentDev environmentDev : list1) { - MonitorDev dev = new MonitorDev(); - List 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.lambdaQuery().eq(MonitorDev::getCategory, 3)); + List stationType = dictionaryItemService.list(Wrappers.lambdaQuery() + .eq(DictionaryItem::getDictionaryEncoding, "station_type")); + for (MonitorDev monitorDev1 : devList) { + List 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 list1 = towerService.list(Wrappers.lambdaQuery().eq(Tower::getProjectSn, monitorDev.getProjectSn())); for (Tower tower : list1) { - MonitorDev dev = new MonitorDev(); - List 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 list1 = bridgeErectMachineDevService.list(Wrappers.lambdaQuery().eq(BridgeErectMachineDev::getProjectSn, monitorDev.getProjectSn())); for (BridgeErectMachineDev bridgeErectMachineDev : list1) { - MonitorDev dev = new MonitorDev(); - List 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 list1 = gantryCraneService.list(Wrappers.lambdaQuery().eq(GantryCrane::getProjectSn, monitorDev.getProjectSn())); for (GantryCrane gantryCrane : list1) { - MonitorDev dev = new MonitorDev(); - List 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 list1 = lifterService.list(Wrappers.lambdaQuery().eq(Lifter::getProjectSn, monitorDev.getProjectSn())); for (Lifter lifter : list1) { - MonitorDev dev = new MonitorDev(); - List 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 getStationStat(String projectSn) { + Map resultMap = new HashMap<>(); + List devList = this.list(Wrappers.lambdaQuery() + .eq(MonitorDev::getProjectSn, projectSn) + .eq(MonitorDev::getCategory, 3)); + List stationType = dictionaryItemService.list(Wrappers.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 list, String id, String devName, List devList, Integer category) { + MonitorDev dev = new MonitorDev(); + List 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); + } } diff --git a/src/main/java/com/zhgd/xmgl/modules/safetyhat/controller/SafetyHatDataController.java b/src/main/java/com/zhgd/xmgl/modules/safetyhat/controller/SafetyHatDataController.java index 423e797a1..4feaae6a1 100644 --- a/src/main/java/com/zhgd/xmgl/modules/safetyhat/controller/SafetyHatDataController.java +++ b/src/main/java/com/zhgd/xmgl/modules/safetyhat/controller/SafetyHatDataController.java @@ -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 getWorkerListByRegion(@ApiIgnore @RequestBody Map param) { + public Result> getWorkerListByRegion(@ApiIgnore @RequestBody Map 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> getWorkerListByRegion1(@ApiIgnore @RequestBody Map param) { + return Result.success(safetyHatDataService.getWorkerListByRegion1(param)); + } } diff --git a/src/main/java/com/zhgd/xmgl/modules/safetyhat/entity/vo/WorkerNumAndRegionName.java b/src/main/java/com/zhgd/xmgl/modules/safetyhat/entity/vo/WorkerNumAndRegionName.java index 5f25a8f69..e23c70148 100644 --- a/src/main/java/com/zhgd/xmgl/modules/safetyhat/entity/vo/WorkerNumAndRegionName.java +++ b/src/main/java/com/zhgd/xmgl/modules/safetyhat/entity/vo/WorkerNumAndRegionName.java @@ -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; } diff --git a/src/main/java/com/zhgd/xmgl/modules/safetyhat/service/ISafetyHatDataService.java b/src/main/java/com/zhgd/xmgl/modules/safetyhat/service/ISafetyHatDataService.java index 57fde35d2..c33ae9aa4 100644 --- a/src/main/java/com/zhgd/xmgl/modules/safetyhat/service/ISafetyHatDataService.java +++ b/src/main/java/com/zhgd/xmgl/modules/safetyhat/service/ISafetyHatDataService.java @@ -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 { WorkerNumByRegionVo countWorkerNumByRegionToday(Map param); - WorkerListyByRegionVo getWorkerListByRegion(Map param); + Page getWorkerListByRegion(Map param); + + Page getWorkerListByRegion1(Map param); } diff --git a/src/main/java/com/zhgd/xmgl/modules/safetyhat/service/impl/SafetyHatDataServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/safetyhat/service/impl/SafetyHatDataServiceImpl.java index d82590069..cf202e5c6 100644 --- a/src/main/java/com/zhgd/xmgl/modules/safetyhat/service/impl/SafetyHatDataServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/safetyhat/service/impl/SafetyHatDataServiceImpl.java @@ -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 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 param) { + public Page getWorkerListByRegion(Map 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 workerInfoList = workerInfoMapper.selectWorkerInfoList(new Page<>(-1, -1), param); - WorkerListyByRegionVo vo = new WorkerListyByRegionVo(); List 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 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 getWorkerListByRegion1(Map param) { + String projectSn = MapUtils.getString(param, "projectSn"); + String regionId = MapUtils.getString(param, "regionId"); + SafetyHatFence safetyHatFence = safetyHatFenceMapper.selectById(regionId); + List safetyHatDevs = safetyHatDevMapper.selectList(Wrappers.lambdaQuery().like(SafetyHatDev::getFenceId, regionId)); + // 区域绑定的人员 + List bindWorkerIds = safetyHatDevs.stream().map(s -> s.getWorkerInfoId()).collect(Collectors.toList()); + // 今天进入区域人员 + List datas = safetyHatDataMapper.getNewestDataGroupByProjectSn(projectSn); + // 在区域中的人员 + Set workerSet = getWorkerNumInFence(safetyHatFence, datas); + Set allWorker = new HashSet<>(); + allWorker.addAll(workerSet); + allWorker.addAll(bindWorkerIds); + allWorker.add(-1L); + param.put("workerIdList", allWorker); + List workerInfoList = workerInfoMapper.selectWorkerInfoList(new Page<>(-1, -1), param); List 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 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 getWorkerNumInFence(SafetyHatFence fence, List datas) { diff --git a/src/main/java/com/zhgd/xmgl/modules/vehicleposition/controller/VehiclePositionDataController.java b/src/main/java/com/zhgd/xmgl/modules/vehicleposition/controller/VehiclePositionDataController.java index ae9e18719..8db3ec9fb 100644 --- a/src/main/java/com/zhgd/xmgl/modules/vehicleposition/controller/VehiclePositionDataController.java +++ b/src/main/java/com/zhgd/xmgl/modules/vehicleposition/controller/VehiclePositionDataController.java @@ -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 getVehicleListByRegion(@ApiIgnore @RequestBody Map param) { + public Result> getVehicleListByRegion(@ApiIgnore @RequestBody Map 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> getVehicleListByRegion1(@ApiIgnore @RequestBody Map param) { + return Result.success(vehiclePositionDataService.getVehicleListByRegion1(param)); + } } diff --git a/src/main/java/com/zhgd/xmgl/modules/vehicleposition/mapper/xml/VehiclePositionDataMapper.xml b/src/main/java/com/zhgd/xmgl/modules/vehicleposition/mapper/xml/VehiclePositionDataMapper.xml index 01bab38d9..ddf02c91b 100644 --- a/src/main/java/com/zhgd/xmgl/modules/vehicleposition/mapper/xml/VehiclePositionDataMapper.xml +++ b/src/main/java/com/zhgd/xmgl/modules/vehicleposition/mapper/xml/VehiclePositionDataMapper.xml @@ -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 #{item} diff --git a/src/main/java/com/zhgd/xmgl/modules/vehicleposition/mapper/xml/VehiclePositionDevMapper.xml b/src/main/java/com/zhgd/xmgl/modules/vehicleposition/mapper/xml/VehiclePositionDevMapper.xml index 076693779..1f9b68b5f 100644 --- a/src/main/java/com/zhgd/xmgl/modules/vehicleposition/mapper/xml/VehiclePositionDevMapper.xml +++ b/src/main/java/com/zhgd/xmgl/modules/vehicleposition/mapper/xml/VehiclePositionDevMapper.xml @@ -2,11 +2,12 @@