From dc8a89f05e56c6aad38154197875dcf2823497f8 Mon Sep 17 00:00:00 2001 From: dfdg <2710245601@qq.com> Date: Thu, 4 Sep 2025 11:23:50 +0800 Subject: [PATCH] =?UTF-8?q?gps=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/GpsEquipmentController.java | 31 +++++++ .../org/dromara/gps/domain/GpsEquipment.java | 1 + .../dromara/gps/domain/GpsEquipmentSon.java | 5 +- .../org/dromara/gps/domain/GpsManmachine.java | 5 +- .../gps/domain/bo/GpsEquipmentSonBo.java | 6 +- .../gps/domain/vo/GpsEquipmentSonVo.java | 5 +- .../org/dromara/gps/domain/vo/GpsUserVo.java | 44 ++++++++++ .../gps/mapper/GpsEquipmentMapper.java | 17 ++++ .../gps/service/IGpsEquipmentService.java | 19 +++++ .../service/impl/GpsEquipmentServiceImpl.java | 85 +++++++++++++++---- 10 files changed, 194 insertions(+), 24 deletions(-) create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/domain/vo/GpsUserVo.java diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/controller/GpsEquipmentController.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/controller/GpsEquipmentController.java index 0d8aaf69..20625ffe 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/controller/GpsEquipmentController.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/controller/GpsEquipmentController.java @@ -7,6 +7,7 @@ import jakarta.servlet.http.HttpServletResponse; import jakarta.validation.constraints.*; import cn.dev33.satoken.annotation.SaCheckPermission; import lombok.extern.slf4j.Slf4j; +import org.dromara.gps.domain.vo.GpsUserVo; import org.springframework.web.bind.annotation.*; import org.springframework.validation.annotation.Validated; import org.dromara.common.idempotent.annotation.RepeatSubmit; @@ -60,6 +61,15 @@ public class GpsEquipmentController extends BaseController { return gpsEquipmentService.queryPageList(bo, pageQuery); } + /** + * 查询GPS设备用户列表 + */ + @SaCheckPermission("gps:equipment:list") + @GetMapping("/getUserList") + public R> getUserList(GpsEquipmentBo bo) { + return R.ok(gpsEquipmentService.getUserList(bo)); + } + /** * 导出GPS设备详细列表 */ @@ -105,6 +115,27 @@ public class GpsEquipmentController extends BaseController { return toAjax(gpsEquipmentService.updateByBo(bo)); } + /** + * GPS人机关联绑定 + */ + @SaCheckPermission("gps:equipment:bindManmachine") + @Log(title = "GPS设备详细", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PostMapping("/bindManmachine") + public R bindManmachine(@RequestBody GpsEquipmentBo bo) { + return toAjax(gpsEquipmentService.bindManmachine(bo)); + } + /** + * GPS人机关联解绑 + */ + @SaCheckPermission("gps:equipment:unbindManmachine") + @Log(title = "GPS设备详细", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PostMapping("/unbindManmachine") + public R unbindManmachine(@RequestBody GpsEquipmentBo bo) { + return toAjax(gpsEquipmentService.unbindManmachine(bo)); + } + /** * 删除GPS设备详细 * diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/domain/GpsEquipment.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/domain/GpsEquipment.java index 17cada03..b1261af4 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/domain/GpsEquipment.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/domain/GpsEquipment.java @@ -35,6 +35,7 @@ public class GpsEquipment extends BaseEntity { /** * 用户id */ + @TableField("user_id") private Long userId; /** diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/domain/GpsEquipmentSon.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/domain/GpsEquipmentSon.java index b7e1f263..9484af58 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/domain/GpsEquipmentSon.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/domain/GpsEquipmentSon.java @@ -6,6 +6,7 @@ import lombok.Data; import lombok.EqualsAndHashCode; import java.io.Serial; +import java.math.BigDecimal; /** * GPS设备定位信息对象 gps_equipment_son @@ -75,12 +76,12 @@ public class GpsEquipmentSon extends BaseEntity { /** * 纬度(精确到6位小数) */ - private Long locLatitude; + private BigDecimal locLatitude; /** * 经度(精确到6位小数) */ - private Long locLongitude; + private BigDecimal locLongitude; /** * 海拔高度(单位未明确,默认0) diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/domain/GpsManmachine.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/domain/GpsManmachine.java index 75ee5c6c..0521514b 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/domain/GpsManmachine.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/domain/GpsManmachine.java @@ -6,6 +6,7 @@ import lombok.Data; import lombok.EqualsAndHashCode; import java.io.Serial; +import java.io.Serializable; /** * GPS人机关联对象 gps_manmachine @@ -14,9 +15,9 @@ import java.io.Serial; * @date 2025-08-28 */ @Data -@EqualsAndHashCode(callSuper = true) +//@EqualsAndHashCode(callSuper = true) @TableName("gps_manmachine") -public class GpsManmachine extends BaseEntity { +public class GpsManmachine implements Serializable { @Serial private static final long serialVersionUID = 1L; diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/domain/bo/GpsEquipmentSonBo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/domain/bo/GpsEquipmentSonBo.java index 7b2f56c3..0bb133b2 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/domain/bo/GpsEquipmentSonBo.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/domain/bo/GpsEquipmentSonBo.java @@ -9,6 +9,8 @@ import lombok.Data; import lombok.EqualsAndHashCode; import jakarta.validation.constraints.*; +import java.math.BigDecimal; + /** * GPS设备定位信息业务对象 gps_equipment_son * @@ -74,12 +76,12 @@ public class GpsEquipmentSonBo extends BaseEntity { /** * 纬度(精确到6位小数) */ - private Long locLatitude; + private BigDecimal locLatitude; /** * 经度(精确到6位小数) */ - private Long locLongitude; + private BigDecimal locLongitude; /** * 海拔高度(单位未明确,默认0) diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/domain/vo/GpsEquipmentSonVo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/domain/vo/GpsEquipmentSonVo.java index c2a959af..04e8b226 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/domain/vo/GpsEquipmentSonVo.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/domain/vo/GpsEquipmentSonVo.java @@ -10,6 +10,7 @@ import lombok.Data; import java.io.Serial; import java.io.Serializable; +import java.math.BigDecimal; import java.util.Date; @@ -96,14 +97,14 @@ public class GpsEquipmentSonVo implements Serializable { */ @ExcelProperty(value = "纬度", converter = ExcelDictConvert.class) @ExcelDictFormat(readConverterExp = "精=确到6位小数") - private Long locLatitude; + private BigDecimal locLatitude; /** * 经度(精确到6位小数) */ @ExcelProperty(value = "经度", converter = ExcelDictConvert.class) @ExcelDictFormat(readConverterExp = "精=确到6位小数") - private Long locLongitude; + private BigDecimal locLongitude; /** * 海拔高度(单位未明确,默认0) diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/domain/vo/GpsUserVo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/domain/vo/GpsUserVo.java new file mode 100644 index 00000000..924dbea4 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/domain/vo/GpsUserVo.java @@ -0,0 +1,44 @@ +package org.dromara.gps.domain.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import org.dromara.gps.domain.GpsManmachine; + +import java.io.Serial; +import java.io.Serializable; + + +/** + * GPS人机关联视图对象 gps_manmachine + * + * @author Lion Li + * @date 2025-08-28 + */ +@Data +//@ExcelIgnoreUnannotated +//@AutoMapper(target = GpsManmachine.class) +public class GpsUserVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + *类型(1、历史,0、当前) + */ +// @ExcelProperty(value = "") + private Integer type; + + /** + * + */ +// @ExcelProperty(value = "") + private Long userId; + /** + * 用户名 + */ + private String userName; + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/mapper/GpsEquipmentMapper.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/mapper/GpsEquipmentMapper.java index df76fff3..9df47717 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/mapper/GpsEquipmentMapper.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/mapper/GpsEquipmentMapper.java @@ -1,8 +1,15 @@ package org.dromara.gps.mapper; +import jakarta.validation.constraints.NotNull; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; +import org.apache.ibatis.annotations.Update; import org.dromara.gps.domain.GpsEquipment; import org.dromara.gps.domain.vo.GpsEquipmentVo; import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; +import org.dromara.gps.domain.vo.GpsUserVo; + +import java.util.List; /** * GPS设备详细Mapper接口 @@ -12,4 +19,14 @@ import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; */ public interface GpsEquipmentMapper extends BaseMapperPlus { + @Select("SELECT\n" + + " gm.user_id AS userId,\n" + + " su.user_name AS userName \n" + + "FROM\n" + + " gps_equipment_son gm\n" + + " LEFT JOIN sys_user su ON gm.user_id = su.user_id \n" + + "WHERE\n" + + " gm.client_id = #{clientId}" + + " GROUP BY gm.user_id") + List getUserList(@Param("clientId") String clientId); } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/service/IGpsEquipmentService.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/service/IGpsEquipmentService.java index 63f35abd..76cfbb7f 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/service/IGpsEquipmentService.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/service/IGpsEquipmentService.java @@ -1,5 +1,6 @@ package org.dromara.gps.service; +import org.dromara.common.core.domain.R; import org.dromara.gps.domain.vo.GpsEquipmentVo; import org.dromara.gps.domain.bo.GpsEquipmentBo; import org.dromara.gps.domain.GpsEquipment; @@ -7,6 +8,8 @@ import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.PageQuery; import com.baomidou.mybatisplus.extension.service.IService; +import org.dromara.gps.domain.vo.GpsUserVo; + import java.util.Collection; import java.util.List; @@ -73,4 +76,20 @@ public interface IGpsEquipmentService extends IService{ * @param jsonData */ void dataAcceptance(String jsonData); + + /** + * GPS人机关联绑定 + * @param bo + * @return + */ + Boolean bindManmachine(GpsEquipmentBo bo); + + /** + * GPS人机关联解绑 + * @param bo + * @return + */ + Boolean unbindManmachine(GpsEquipmentBo bo); + + List getUserList(GpsEquipmentBo bo); } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/service/impl/GpsEquipmentServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/service/impl/GpsEquipmentServiceImpl.java index 6dbe9629..9d8d37e7 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/service/impl/GpsEquipmentServiceImpl.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/service/impl/GpsEquipmentServiceImpl.java @@ -2,7 +2,9 @@ package org.dromara.gps.service.impl; import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.dromara.common.core.domain.R; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.StringUtils; import org.dromara.common.mybatis.core.page.TableDataInfo; @@ -14,6 +16,7 @@ import lombok.RequiredArgsConstructor; import org.dromara.gps.domain.GpsEquipmentSon; import org.dromara.gps.domain.GpsManmachine; import org.dromara.gps.domain.bo.GpsEquipmentSonBo; +import org.dromara.gps.domain.vo.GpsUserVo; import org.dromara.gps.mapper.GpsManmachineMapper; import org.dromara.gps.service.IGpsEquipmentSonService; import org.dromara.gps.service.IGpsManmachineService; @@ -26,9 +29,8 @@ import org.dromara.gps.domain.GpsEquipment; import org.dromara.gps.mapper.GpsEquipmentMapper; import org.dromara.gps.service.IGpsEquipmentService; -import java.util.List; -import java.util.Map; -import java.util.Collection; +import java.math.BigDecimal; +import java.util.*; /** * GPS设备详细Service业务层处理 @@ -160,22 +162,73 @@ public class GpsEquipmentServiceImpl extends ServiceImpl() + .set(GpsEquipment::getUserId,bo.getUserId()) + .eq(GpsEquipment::getId,bo.getId())); + GpsManmachine gpsManmachine = new GpsManmachine(); + gpsManmachine.setClientId(bo.getClientId()); + gpsManmachine.setUserId(bo.getUserId()); + return gpsManmachineMapper.insert(gpsManmachine) > 0; + + } + + @Override + public Boolean unbindManmachine(GpsEquipmentBo bo) { + baseMapper.update(new LambdaUpdateWrapper() + .set(GpsEquipment::getUserId,null) + .eq(GpsEquipment::getId,bo.getId())); + GpsManmachine gpsManmachine = new GpsManmachine(); + gpsManmachine.setClientId(bo.getClientId()); + gpsManmachine.setUserId(bo.getUserId()); + return gpsManmachineMapper.delete(new LambdaQueryWrapper() + .eq(GpsManmachine::getClientId, gpsManmachine.getClientId()) + .eq(GpsManmachine::getUserId,gpsManmachine.getUserId()))> 0; + } + + /** + * 获取设备绑定用户列表 + * @param bo + * @return + */ + @Override + public List getUserList(GpsEquipmentBo bo) { + List gpsUserVos = baseMapper.getUserList(bo.getClientId()); + if (gpsUserVos == null || gpsUserVos.isEmpty()) { + return null; + } + List list = gpsUserVos.stream().filter(Objects::nonNull).toList(); +// GpsEquipment gpsEquipment = baseMapper.selectOne(new LambdaQueryWrapper().eq(GpsEquipment::getClientId, bo.getClientId())); + GpsManmachine gpsManmachine = gpsManmachineMapper.selectOne(new LambdaQueryWrapper().eq(GpsManmachine::getClientId, bo.getClientId())); + for (GpsUserVo item : list) { + if (gpsManmachine != null && gpsManmachine.getUserId().equals(item.getUserId())) { + item.setType(0); + }else { + item.setType(1); + } + } + return list; } }