智能安全帽-实时数据-围栏中间表

This commit is contained in:
guoshengxiong 2024-06-13 14:12:17 +08:00
parent 10889f8b6e
commit c88492ff5a
7 changed files with 322 additions and 4 deletions

View File

@ -0,0 +1,120 @@
package com.zhgd.xmgl.modules.safetyhat.controller;
import com.zhgd.xmgl.modules.safetyhat.entity.SafetyHatDataToFence;
import com.zhgd.xmgl.modules.safetyhat.service.ISafetyHatDataToFenceService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiImplicitParams;
import java.util.HashMap;
import springfox.documentation.annotations.ApiIgnore;
import java.util.List;
import com.zhgd.jeecg.common.api.vo.Result;
import org.apache.commons.collections.MapUtils;
import org.simpleframework.xml.core.Validate;
import com.baomidou.mybatisplus.core.metadata.IPage;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
/**
* @Title: Controller
* @Description: 智能安全帽-实时数据-围栏中间表
* @author pds
* @date 2024-06-13
* @version V1.0
*/
@RestController
@RequestMapping("/xmgl/safetyHatDataToFence")
@Slf4j
@Api(tags = "智能安全帽-实时数据-围栏中间表相关Api")
public class SafetyHatDataToFenceController {
@Autowired
private ISafetyHatDataToFenceService safetyHatDataToFenceService;
/**
* 分页列表查询
*
* @return
*/
@ApiOperation(value = "分页列表查询智能安全帽-实时数据-围栏中间表信息", notes = "分页列表查询智能安全帽-实时数据-围栏中间表信息", httpMethod = "GET")
@ApiImplicitParams({
@ApiImplicitParam(name = "pageNo", value = "第几页", paramType = "query", required = true, dataType = "Integer"),
@ApiImplicitParam(name = "pageSize", value = "每页显示条数", paramType = "query", required = true, dataType = "Integer"),
})
@GetMapping(value = "/page")
public Result<IPage<SafetyHatDataToFence>> queryPageList(@ApiIgnore @RequestParam HashMap<String, Object> param) {
return Result.success(safetyHatDataToFenceService.queryPageList(param));
}
/**
* 列表查询
*
* @return
*/
@ApiOperation(value = "列表查询智能安全帽-实时数据-围栏中间表信息", notes = "列表查询智能安全帽-实时数据-围栏中间表信息", httpMethod = "GET")
@GetMapping(value = "/list")
public Result<List<SafetyHatDataToFence>> queryList(@ApiIgnore @RequestParam HashMap<String, Object> param) {
return Result.success(safetyHatDataToFenceService.queryList(param));
}
/**
* 添加
*
* @param safetyHatDataToFence
* @return
*/
@ApiOperation(value = "添加智能安全帽-实时数据-围栏中间表信息", notes = "添加智能安全帽-实时数据-围栏中间表信息", httpMethod = "POST")
@PostMapping(value = "/add")
public Result<SafetyHatDataToFence> add(@RequestBody @Validate SafetyHatDataToFence safetyHatDataToFence) {
safetyHatDataToFenceService.add(safetyHatDataToFence);
return Result.ok();
}
/**
* 编辑
*
* @param safetyHatDataToFence
* @return
*/
@ApiOperation(value = "编辑智能安全帽-实时数据-围栏中间表信息", notes = "编辑智能安全帽-实时数据-围栏中间表信息", httpMethod = "POST")
@PostMapping(value = "/edit")
public Result<SafetyHatDataToFence> edit(@RequestBody SafetyHatDataToFence safetyHatDataToFence) {
safetyHatDataToFenceService.edit(safetyHatDataToFence);
return Result.ok();
}
/**
* 通过id删除
*
* @return
*/
@ApiOperation(value = "删除智能安全帽-实时数据-围栏中间表信息", notes = "删除智能安全帽-实时数据-围栏中间表信息", httpMethod = "POST")
@ApiImplicitParam(name = "id", value = "智能安全帽-实时数据-围栏中间表ID", paramType = "body", required = true, dataType = "String", example = "{\"id\":\"1\"}")
@PostMapping(value = "/delete")
public Result<SafetyHatDataToFence> delete(@ApiIgnore @RequestBody HashMap<String, Object> map) {
safetyHatDataToFenceService.delete(MapUtils.getString(map, "id"));
return Result.ok();
}
/**
* 通过id查询
*
* @param id
* @return
*/
@ApiOperation(value = "通过id查询智能安全帽-实时数据-围栏中间表信息", notes = "通过id查询智能安全帽-实时数据-围栏中间表信息", httpMethod = "GET")
@ApiImplicitParam(name = "id", value = "智能安全帽-实时数据-围栏中间表ID", paramType = "query", required = true, dataType = "Integer")
@GetMapping(value = "/queryById")
public Result<SafetyHatDataToFence> queryById(@RequestParam(name = "id", required = true) String id) {
return Result.success(safetyHatDataToFenceService.queryById(id));
}
}

View File

@ -0,0 +1,46 @@
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.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 io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
/**
* @Description: 智能安全帽-实时数据-围栏中间表
* @author pds
* @date 2024-06-13
* @version V1.0
*/
@Data
@TableName("safety_hat_data_to_fence")
@ApiModel(value = "SafetyHatDataToFence实体类", description = "SafetyHatDataToFence")
public class SafetyHatDataToFence implements Serializable {
private static final long serialVersionUID = 1L;
/**
* id
*/
@TableId(type = IdType.ASSIGN_ID)
@ApiModelProperty(value = "id")
private java.lang.Long id;
/**
* 智能安全帽-实时数据id
*/
@Excel(name = "智能安全帽-实时数据id", width = 15)
@ApiModelProperty(value = "智能安全帽-实时数据id")
private java.lang.Long safetyHatDataId;
/**
* 智能安全帽-围栏id
*/
@Excel(name = "智能安全帽-围栏id", width = 15)
@ApiModelProperty(value = "智能安全帽-围栏id")
private java.lang.Long safetyHatFenceId;
}

View File

@ -0,0 +1,16 @@
package com.zhgd.xmgl.modules.safetyhat.mapper;
import com.zhgd.xmgl.modules.safetyhat.entity.SafetyHatDataToFence;
import org.apache.ibatis.annotations.Mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* @Description: 智能安全帽-实时数据-围栏中间表
* @author pds
* @date 2024-06-13
* @version V1.0
*/
@Mapper
public interface SafetyHatDataToFenceMapper extends BaseMapper<SafetyHatDataToFence> {
}

View File

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zhgd.xmgl.modules.safetyhat.mapper.SafetyHatDataToFenceMapper">
</mapper>

View File

@ -0,0 +1,30 @@
package com.zhgd.xmgl.modules.safetyhat.service;
import com.zhgd.xmgl.modules.safetyhat.entity.SafetyHatDataToFence;
import com.baomidou.mybatisplus.extension.service.IService;
import com.baomidou.mybatisplus.core.metadata.IPage;
import java.util.HashMap;
import java.util.List;
/**
* @Description: 智能安全帽-实时数据-围栏中间表
* @author pds
* @date 2024-06-13
* @version V1.0
*/
public interface ISafetyHatDataToFenceService extends IService<SafetyHatDataToFence> {
IPage<SafetyHatDataToFence> queryPageList(HashMap<String, Object> param);
List<SafetyHatDataToFence> queryList(HashMap<String, Object> param);
void add(SafetyHatDataToFence safetyHatDataToFence);
void edit(SafetyHatDataToFence safetyHatDataToFence);
void delete(String id);
SafetyHatDataToFence queryById(String id);
}

View File

@ -26,6 +26,8 @@ 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.safetyhat.entity.SafetyHatDataToFence;
import com.zhgd.xmgl.modules.safetyhat.mapper.SafetyHatDataToFenceMapper;
import com.zhgd.xmgl.util.PageUtil;
import com.zhgd.xmgl.util.RefUtil;
import com.zhgd.xmgl.util.RegionUtil;
@ -51,6 +53,8 @@ public class SafetyHatDataServiceImpl extends ServiceImpl<SafetyHatDataMapper, S
@Autowired
private SafetyHatDataMapper safetyHatDataMapper;
@Autowired
private SafetyHatDataToFenceMapper safetyHatDataToFenceMapper;
@Autowired
private SafetyHatDevMapper safetyHatDevMapper;
@Autowired
private SafetyHatFenceMapper safetyHatFenceMapper;
@ -117,11 +121,12 @@ public class SafetyHatDataServiceImpl extends ServiceImpl<SafetyHatDataMapper, S
List<SafetyHatFence> fenceList = safetyHatFenceMapper.selectList(new LambdaQueryWrapper<SafetyHatFence>()
.eq(SafetyHatFence::getProjectSn, dev.getProjectSn()));
if (CollUtil.isNotEmpty(fenceList)) {
boolean isInFence = false;
boolean inFence = false;
for (SafetyHatFence fence : fenceList) {
//判断是否在围栏范围内
if (Objects.equals(fence.getRangeType(), 1)) {
inFence = RegionUtil.isInCircle(safetyHatData.getLongitude(), safetyHatData.getLatitude(), fence.getLongitude(), fence.getLatitude(), fence.getAreaRadius());
isInFence = RegionUtil.isInCircle(safetyHatData.getLongitude(), safetyHatData.getLatitude(), fence.getLongitude(), fence.getLatitude(), fence.getAreaRadius());
} else if (Objects.equals(fence.getRangeType(), 2)) {
String fenceShape = fence.getFenceShape();
if (StrUtil.isNotBlank(fenceShape)) {
@ -134,11 +139,15 @@ public class SafetyHatDataServiceImpl extends ServiceImpl<SafetyHatDataMapper, S
lon[i] = Double.valueOf(two[0]);
lat[i] = Double.valueOf(two[1]);
}
inFence = RegionUtil.isInPolygon(safetyHatData.getLongitude(), safetyHatData.getLatitude(), lon, lat);
isInFence = RegionUtil.isInPolygon(safetyHatData.getLongitude(), safetyHatData.getLatitude(), lon, lat);
}
}
if (inFence) {
break;
if (isInFence) {
SafetyHatDataToFence toFence = new SafetyHatDataToFence();
toFence.setSafetyHatDataId(safetyHatData.getId());
toFence.setSafetyHatFenceId(fence.getId());
safetyHatDataToFenceMapper.insert(toFence);
inFence = true;
}
}
if (!inFence) {

View File

@ -0,0 +1,93 @@
package com.zhgd.xmgl.modules.safetyhat.service.impl;
import com.zhgd.jeecg.common.execption.OpenAlertException;
import com.zhgd.xmgl.modules.safetyhat.entity.SafetyHatDataToFence;
import com.zhgd.xmgl.modules.safetyhat.service.ISafetyHatDataToFenceService;
import com.zhgd.xmgl.modules.safetyhat.mapper.SafetyHatDataToFenceMapper;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
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.HashMap;
import java.util.List;
import com.zhgd.xmgl.util.RefUtil;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.beans.factory.annotation.Autowired;
/**
* @Description: 智能安全帽-实时数据-围栏中间表
* @author pds
* @date 2024-06-13
* @version V1.0
*/
@Service
@Transactional(rollbackFor = Exception.class)
public class SafetyHatDataToFenceServiceImpl extends ServiceImpl<SafetyHatDataToFenceMapper, SafetyHatDataToFence> implements ISafetyHatDataToFenceService {
@Autowired
private SafetyHatDataToFenceMapper safetyHatDataToFenceMapper;
@Override
public IPage<SafetyHatDataToFence> queryPageList(HashMap<String, Object> param) {
QueryWrapper<SafetyHatDataToFence> queryWrapper = getQueryWrapper(param);
Page<SafetyHatDataToFence> page = PageUtil.getPage(param);
IPage<SafetyHatDataToFence> pageList = this.page(page, queryWrapper);
pageList.setRecords(dealList(pageList.getRecords()));
return pageList;
}
@Override
public List<SafetyHatDataToFence> queryList(HashMap<String, Object> param) {
QueryWrapper<SafetyHatDataToFence> queryWrapper = getQueryWrapper(param);
return dealList(this.list(queryWrapper));
}
private QueryWrapper<SafetyHatDataToFence> getQueryWrapper(HashMap<String, Object> param) {
String alias = "";
QueryWrapper<SafetyHatDataToFence> queryWrapper = QueryGenerator.initPageQueryWrapper(SafetyHatDataToFence.class, param, alias);
queryWrapper.orderByDesc(alias + RefUtil.fieldNameUlc(SafetyHatDataToFence::getId));
return queryWrapper;
}
private List<SafetyHatDataToFence> dealList(List<SafetyHatDataToFence> list) {
return list;
}
@Override
public void add(SafetyHatDataToFence safetyHatDataToFence) {
safetyHatDataToFence.setId(null);
baseMapper.insert(safetyHatDataToFence);
}
@Override
public void edit(SafetyHatDataToFence safetyHatDataToFence) {
SafetyHatDataToFence oldSafetyHatDataToFence = baseMapper.selectById(safetyHatDataToFence.getId());
if (oldSafetyHatDataToFence == null) {
throw new OpenAlertException("未找到对应实体");
}
baseMapper.updateById(safetyHatDataToFence);
}
@Override
public void delete(String id) {
SafetyHatDataToFence safetyHatDataToFence = baseMapper.selectById(id);
if (safetyHatDataToFence == null) {
throw new OpenAlertException("未找到对应实体");
}
baseMapper.deleteById(id);
}
@Override
public SafetyHatDataToFence queryById(String id) {
SafetyHatDataToFence entity = getById(id);
if (entity == null) {
throw new OpenAlertException("未找到对应实体");
}
return entity;
}
}