From e29b68ad1bd455f21bccb98d5411dc08b2ef5112 Mon Sep 17 00:00:00 2001 From: guo Date: Wed, 27 Mar 2024 16:26:12 +0800 Subject: [PATCH] =?UTF-8?q?bug=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/SafetyHatDataController.java | 1 + .../safetyhat/entity/SafetyHatData.java | 4 ++ .../safetyhat/entity/SafetyHatFence.java | 18 ++++-- .../safetyhat/mapper/SafetyHatDataMapper.java | 4 +- .../mapper/xml/SafetyHatDataMapper.xml | 7 ++- .../service/ISafetyHatDataService.java | 2 + .../impl/SafetyHatDataServiceImpl.java | 1 + .../impl/SafetyHatFenceServiceImpl.java | 58 +++++++++++-------- 8 files changed, 62 insertions(+), 33 deletions(-) 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 51ebd6aa9..c6e503994 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 @@ -6,6 +6,7 @@ import com.zhgd.jeecg.common.api.vo.Result; import com.zhgd.xmgl.modules.safetyhat.entity.SafetyHatData; import com.zhgd.xmgl.modules.safetyhat.entity.SafetyHatDev; import com.zhgd.xmgl.modules.safetyhat.service.ISafetyHatDataService; +import com.zhgd.xmgl.modules.worker.entity.WorkerInfo; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; diff --git a/src/main/java/com/zhgd/xmgl/modules/safetyhat/entity/SafetyHatData.java b/src/main/java/com/zhgd/xmgl/modules/safetyhat/entity/SafetyHatData.java index e34fb1559..8725366d9 100644 --- a/src/main/java/com/zhgd/xmgl/modules/safetyhat/entity/SafetyHatData.java +++ b/src/main/java/com/zhgd/xmgl/modules/safetyhat/entity/SafetyHatData.java @@ -94,4 +94,8 @@ public class SafetyHatData implements Serializable { @ApiModelProperty(value = "人员名称") @TableField(exist = false) private java.lang.String workerName; + + @TableField(exist = false) + @ApiModelProperty(value = "身份证号") + private java.lang.String idCard; } diff --git a/src/main/java/com/zhgd/xmgl/modules/safetyhat/entity/SafetyHatFence.java b/src/main/java/com/zhgd/xmgl/modules/safetyhat/entity/SafetyHatFence.java index ec718deb2..2868863d5 100644 --- a/src/main/java/com/zhgd/xmgl/modules/safetyhat/entity/SafetyHatFence.java +++ b/src/main/java/com/zhgd/xmgl/modules/safetyhat/entity/SafetyHatFence.java @@ -1,18 +1,20 @@ package com.zhgd.xmgl.modules.safetyhat.entity; -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; import com.fasterxml.jackson.annotation.JsonFormat; -import org.springframework.format.annotation.DateTimeFormat; -import org.jeecgframework.poi.excel.annotation.Excel; +import com.zhgd.xmgl.modules.worker.entity.WorkerInfo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; /** * @Description: 智能安全帽-围栏 @@ -92,4 +94,8 @@ public class SafetyHatFence implements Serializable { @TableField(exist = false) @ApiModelProperty(value = "围栏内人数") private Integer workerNum; + + @TableField(exist = false) + @ApiModelProperty(value = "围栏内人员列表") + private List workerListInFence; } diff --git a/src/main/java/com/zhgd/xmgl/modules/safetyhat/mapper/SafetyHatDataMapper.java b/src/main/java/com/zhgd/xmgl/modules/safetyhat/mapper/SafetyHatDataMapper.java index a736a8c7d..4f83fc552 100644 --- a/src/main/java/com/zhgd/xmgl/modules/safetyhat/mapper/SafetyHatDataMapper.java +++ b/src/main/java/com/zhgd/xmgl/modules/safetyhat/mapper/SafetyHatDataMapper.java @@ -5,6 +5,7 @@ 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.worker.entity.WorkerInfo; import org.apache.ibatis.annotations.Mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; @@ -25,7 +26,8 @@ public interface SafetyHatDataMapper extends BaseMapper { List queryList(@Param(Constants.WRAPPER) QueryWrapper queryWrapper); - List getNewestData(String projectSn); + List getNewestDataGroupByDevSn(String projectSn); List getNewestList(HashMap paramMap); + } diff --git a/src/main/java/com/zhgd/xmgl/modules/safetyhat/mapper/xml/SafetyHatDataMapper.xml b/src/main/java/com/zhgd/xmgl/modules/safetyhat/mapper/xml/SafetyHatDataMapper.xml index c0b402dfe..64aaf1c47 100644 --- a/src/main/java/com/zhgd/xmgl/modules/safetyhat/mapper/xml/SafetyHatDataMapper.xml +++ b/src/main/java/com/zhgd/xmgl/modules/safetyhat/mapper/xml/SafetyHatDataMapper.xml @@ -8,13 +8,16 @@ ${ew.customSqlSegment} - + select shd.*,wi.worker_name,wi.id_card from safety_hat_data shd join (select max(create_time) as create_time, dev_sn from safety_hat_data where project_sn = #{projectSn} group by dev_sn) t on t.create_time = shd.create_time and t.dev_sn=shd.dev_sn + join safety_hat_dev shd2 on shd2.dev_sn = shd.dev_sn + left join worker_info wi on wi.id = shd.worker_info_id + where shd2.online=1 group by shd.dev_sn 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 0160a1f41..997b977da 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 @@ -4,6 +4,7 @@ import com.zhgd.xmgl.modules.safetyhat.entity.SafetyHatData; import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.core.metadata.IPage; import com.zhgd.xmgl.modules.safetyhat.entity.SafetyHatDev; +import com.zhgd.xmgl.modules.worker.entity.WorkerInfo; import java.util.HashMap; import java.util.List; @@ -29,4 +30,5 @@ public interface ISafetyHatDataService extends IService { List getNewestList(HashMap paramMap); void updateStatus(SafetyHatDev safetyHatDev); + } 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 184cdc081..d83094c24 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 @@ -19,6 +19,7 @@ import com.zhgd.xmgl.modules.safetyhat.mapper.SafetyHatDevMapper; import com.zhgd.xmgl.modules.safetyhat.mapper.SafetyHatFenceMapper; import com.zhgd.xmgl.modules.safetyhat.service.ISafetyHatAlarmService; import com.zhgd.xmgl.modules.safetyhat.service.ISafetyHatDataService; +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; diff --git a/src/main/java/com/zhgd/xmgl/modules/safetyhat/service/impl/SafetyHatFenceServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/safetyhat/service/impl/SafetyHatFenceServiceImpl.java index 69dd1eb20..5f8651651 100644 --- a/src/main/java/com/zhgd/xmgl/modules/safetyhat/service/impl/SafetyHatFenceServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/safetyhat/service/impl/SafetyHatFenceServiceImpl.java @@ -7,6 +7,7 @@ import com.zhgd.xmgl.modules.safetyhat.entity.SafetyHatFence; import com.zhgd.xmgl.modules.safetyhat.mapper.SafetyHatDataMapper; import com.zhgd.xmgl.modules.safetyhat.mapper.SafetyHatFenceMapper; import com.zhgd.xmgl.modules.safetyhat.service.ISafetyHatFenceService; +import com.zhgd.xmgl.modules.worker.entity.WorkerInfo; import com.zhgd.xmgl.util.RegionUtil; import org.apache.commons.collections.MapUtils; import org.apache.commons.lang3.StringUtils; @@ -19,6 +20,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.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Objects; @@ -59,35 +61,43 @@ public class SafetyHatFenceServiceImpl extends ServiceImpl dealList(List list, HashMap paramMap) { String projectSn = MapUtils.getString(paramMap, "projectSn"); - for (SafetyHatFence fence : list) { - List dataList = safetyHatDataMapper.getNewestData(projectSn); - int workerNum = 0; - if (CollUtil.isNotEmpty(dataList)) { - for (SafetyHatData d : dataList) { - boolean inFence = false; - //判断是否在围栏范围内 - if (Objects.equals(fence.getRangeType(), 1)) { - inFence = 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]); + if (CollUtil.isNotEmpty(list)) { + List dataList = safetyHatDataMapper.getNewestDataGroupByDevSn(projectSn); + for (SafetyHatFence fence : list) { + ArrayList workerInfos = new ArrayList<>(); + int workerNum = 0; + if (CollUtil.isNotEmpty(dataList)) { + for (SafetyHatData d : dataList) { + boolean inFence = false; + //判断是否在围栏范围内 + if (Objects.equals(fence.getRangeType(), 1)) { + inFence = 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]); + } + inFence = RegionUtil.isInPolygon(d.getLongitude(), d.getLatitude(), lon, lat); } - inFence = RegionUtil.isInPolygon(d.getLongitude(), d.getLatitude(), lon, lat); } - } - if (inFence) { - workerNum++; + if (inFence) { + workerNum++; + WorkerInfo workerInfo = new WorkerInfo(); + workerInfo.setWorkerName(d.getWorkerName()); + workerInfo.setIdCard(d.getIdCard()); + workerInfos.add(workerInfo); + } } } fence.setWorkerNum(workerNum); + fence.setWorkerListInFence(workerInfos); } } return list;