安全帽接口修改

This commit is contained in:
2025-10-13 09:55:16 +08:00
parent bc85fe64a4
commit 8a7726e216
8 changed files with 159 additions and 9 deletions

View File

@ -83,6 +83,7 @@ public class RedisSubscribeManager {
Object object = RedisUtils.getCacheObject("xmjdap:ws"); Object object = RedisUtils.getCacheObject("xmjdap:ws");
log.info("开始执行Redis订阅更新定时任务..."); log.info("开始执行Redis订阅更新定时任务...");
if (object == null) { if (object == null) {
cancelAllSubscribes();
return; return;
} }
long oldTime = Long.parseLong(String.valueOf(object)); long oldTime = Long.parseLong(String.valueOf(object));

View File

@ -13,8 +13,7 @@ import org.dromara.contractor.domain.SubConstructionUser;
import org.dromara.contractor.domain.dto.constructionuser.SubConstructionUserQueryReq; import org.dromara.contractor.domain.dto.constructionuser.SubConstructionUserQueryReq;
import org.dromara.contractor.service.ISubConstructionUserService; import org.dromara.contractor.service.ISubConstructionUserService;
import org.dromara.gps.domain.bo.GpsEquipmentBo; import org.dromara.gps.domain.bo.GpsEquipmentBo;
import org.dromara.gps.domain.vo.ConstructionUser; import org.dromara.gps.domain.vo.*;
import org.dromara.gps.domain.vo.GpsProjectVo;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.dromara.common.idempotent.annotation.RepeatSubmit; import org.dromara.common.idempotent.annotation.RepeatSubmit;
@ -26,7 +25,6 @@ import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup; import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.log.enums.BusinessType; import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.excel.utils.ExcelUtil; import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.gps.domain.vo.DeviceVo;
import org.dromara.gps.domain.bo.DeviceBo; import org.dromara.gps.domain.bo.DeviceBo;
import org.dromara.gps.service.IDeviceService; import org.dromara.gps.service.IDeviceService;
import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.TableDataInfo;
@ -114,6 +112,15 @@ public class DeviceController extends BaseController {
return toAjax(deviceService.deleteWithValidByIds(List.of(ids), true)); return toAjax(deviceService.deleteWithValidByIds(List.of(ids), true));
} }
/**
* 查询GPS设备用户列表
*/
@SaCheckPermission("gps:device:getUserList")
@GetMapping("/getUserList")
public R<List<AnqmUserVo>> getUserList(DeviceBo bo) {
return R.ok(deviceService.getUserList(bo));
}
/** /**
* 项目列表 * 项目列表

View File

@ -97,5 +97,7 @@ public class DeviceBo extends BaseEntity {
*/ */
private String batteryOff; private String batteryOff;
private Integer type;
} }

View File

@ -0,0 +1,51 @@
package org.dromara.gps.domain.vo;
import lombok.Data;
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 AnqmUserVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
*类型1、历史0、当前
*/
// @ExcelProperty(value = "")
private Integer type;
/**
*
*/
// @ExcelProperty(value = "")
private Long userId;
/**
* 用户名
*/
private String userName;
/**
*
*/
// @ExcelProperty(value = "")
private Long projectId;
/**
* 用户名
*/
private String projectName;
private String devNum;
}

View File

@ -34,6 +34,13 @@ public class DeviceVo implements Serializable {
@ExcelProperty(value = "id") @ExcelProperty(value = "id")
private Long id; private Long id;
/**
* 用户id
*/
private Long userId;
private String userName;
/** /**
* 设备编号 * 设备编号
*/ */
@ -58,6 +65,8 @@ public class DeviceVo implements Serializable {
@ExcelProperty(value = "项目id") @ExcelProperty(value = "项目id")
private Long projectId; private Long projectId;
private String projectName;
/** /**
* 设备采集温度 * 设备采集温度
*/ */
@ -112,5 +121,7 @@ public class DeviceVo implements Serializable {
@ExcelProperty(value = "电池关机时间") @ExcelProperty(value = "电池关机时间")
private String batteryOff; private String batteryOff;
private Integer type;
} }

View File

@ -1,9 +1,15 @@
package org.dromara.gps.mapper; package org.dromara.gps.mapper;
import jakarta.validation.constraints.NotBlank;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.dromara.gps.domain.Device; import org.dromara.gps.domain.Device;
import org.dromara.gps.domain.vo.AnqmUserVo;
import org.dromara.gps.domain.vo.DeviceVo; import org.dromara.gps.domain.vo.DeviceVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
import java.util.List;
/** /**
* 安全帽设备Mapper接口 * 安全帽设备Mapper接口
* *
@ -12,4 +18,17 @@ import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
*/ */
public interface DeviceMapper extends BaseMapperPlus<Device, DeviceVo> { public interface DeviceMapper extends BaseMapperPlus<Device, DeviceVo> {
@Select("SELECT\n" +
" gm.user_id AS userId,\n" +
" su.user_name AS userName, \n" +
" gm.project_id AS projectId,\n" +
" bp.project_name AS projectName \n" +
"FROM\n" +
" location gm\n" +
" LEFT JOIN sys_user su ON gm.user_id = su.user_id \n" +
"LEFT JOIN bus_project bp ON gm.project_id = bp.id \n" +
"WHERE\n" +
" gm.dev_num = #{devNum}" +
" GROUP BY gm.user_id,gm.project_id")
List<AnqmUserVo> getUserList(@Param("devNum") String devNum);
} }

View File

@ -1,6 +1,7 @@
package org.dromara.gps.service; package org.dromara.gps.service;
import org.dromara.gps.domain.bo.GpsEquipmentBo; import org.dromara.gps.domain.bo.GpsEquipmentBo;
import org.dromara.gps.domain.vo.AnqmUserVo;
import org.dromara.gps.domain.vo.DeviceVo; import org.dromara.gps.domain.vo.DeviceVo;
import org.dromara.gps.domain.bo.DeviceBo; import org.dromara.gps.domain.bo.DeviceBo;
import org.dromara.gps.domain.Device; import org.dromara.gps.domain.Device;
@ -9,6 +10,7 @@ import org.dromara.common.mybatis.core.page.PageQuery;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import org.dromara.gps.domain.vo.GpsProjectVo; import org.dromara.gps.domain.vo.GpsProjectVo;
import org.dromara.gps.domain.vo.GpsUserVo;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.Collection; import java.util.Collection;
@ -79,4 +81,6 @@ public interface IDeviceService extends IService<Device>{
Boolean unbindManmachine(DeviceBo bo); Boolean unbindManmachine(DeviceBo bo);
List<DeviceVo> getUserListByProjectId(Long projectId, LocalDateTime startOfDay, LocalDateTime now); List<DeviceVo> getUserListByProjectId(Long projectId, LocalDateTime startOfDay, LocalDateTime now);
List<AnqmUserVo> getUserList(DeviceBo bo);
} }

View File

@ -15,25 +15,24 @@ import lombok.RequiredArgsConstructor;
import org.dromara.gps.domain.AnqmManmachine; import org.dromara.gps.domain.AnqmManmachine;
import org.dromara.gps.domain.GpsEquipment; import org.dromara.gps.domain.GpsEquipment;
import org.dromara.gps.domain.GpsManmachine; import org.dromara.gps.domain.GpsManmachine;
import org.dromara.gps.domain.vo.GpsProjectVo; import org.dromara.gps.domain.bo.GpsEquipmentBo;
import org.dromara.gps.domain.vo.*;
import org.dromara.gps.mapper.AnqmManmachineMapper; import org.dromara.gps.mapper.AnqmManmachineMapper;
import org.dromara.gps.service.ILocationService; import org.dromara.gps.service.ILocationService;
import org.dromara.project.domain.vo.project.BusProjectVo; import org.dromara.project.domain.vo.project.BusProjectVo;
import org.dromara.project.service.IBusProjectService; import org.dromara.project.service.IBusProjectService;
import org.dromara.system.domain.vo.SysUserVo;
import org.dromara.system.service.ISysUserService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.dromara.gps.domain.bo.DeviceBo; import org.dromara.gps.domain.bo.DeviceBo;
import org.dromara.gps.domain.vo.DeviceVo;
import org.dromara.gps.domain.Device; import org.dromara.gps.domain.Device;
import org.dromara.gps.mapper.DeviceMapper; import org.dromara.gps.mapper.DeviceMapper;
import org.dromara.gps.service.IDeviceService; import org.dromara.gps.service.IDeviceService;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.ArrayList; import java.util.*;
import java.util.List;
import java.util.Map;
import java.util.Collection;
/** /**
* 安全帽设备Service业务层处理 * 安全帽设备Service业务层处理
@ -56,6 +55,9 @@ public class DeviceServiceImpl extends ServiceImpl<DeviceMapper, Device> impleme
@Autowired @Autowired
private ILocationService locationService; private ILocationService locationService;
@Autowired
private ISysUserService userService;
/** /**
* 查询安全帽设备 * 查询安全帽设备
* *
@ -78,6 +80,40 @@ public class DeviceServiceImpl extends ServiceImpl<DeviceMapper, Device> impleme
public TableDataInfo<DeviceVo> queryPageList(DeviceBo bo, PageQuery pageQuery) { public TableDataInfo<DeviceVo> queryPageList(DeviceBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<Device> lqw = buildQueryWrapper(bo); LambdaQueryWrapper<Device> lqw = buildQueryWrapper(bo);
Page<DeviceVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw); Page<DeviceVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
if (bo.getType() == 1){
List<DeviceVo> list = result.getRecords().stream()
.filter(gpsEquipment -> gpsEquipment.getProjectId() != null)
.toList();
list.forEach(item -> {
if (item.getUserId() != null){
item.setType(1);
}else{
item.setType(2);
}
SysUserVo sysUserVo = userService.queryById(item.getUserId());
if (sysUserVo != null) {
item.setUserName(sysUserVo.getUserName());
}
BusProjectVo busProjectVo = projectService.selectById(item.getProjectId());
if (busProjectVo != null) {
item.setProjectName(busProjectVo.getProjectName());
}
});
result.setRecords(list);
}else if (bo.getType() == 2){
List<DeviceVo> list = result.getRecords().stream()
.filter(gpsEquipment -> gpsEquipment.getProjectId() == null).toList();
list.forEach(item ->{
if (item.getProjectId() != null) {
BusProjectVo busProjectVo = projectService.selectById(item.getProjectId());
if (busProjectVo != null) {
item.setProjectName(busProjectVo.getProjectName());
}
}
item.setType(2);
});
result.setRecords(list);
}
return TableDataInfo.build(result); return TableDataInfo.build(result);
} }
@ -222,4 +258,23 @@ public class DeviceServiceImpl extends ServiceImpl<DeviceMapper, Device> impleme
public List<DeviceVo> getUserListByProjectId(Long projectId, LocalDateTime startOfDay, LocalDateTime now) { public List<DeviceVo> getUserListByProjectId(Long projectId, LocalDateTime startOfDay, LocalDateTime now) {
return locationService.getUserListByProjectId(projectId,startOfDay,now); return locationService.getUserListByProjectId(projectId,startOfDay,now);
} }
@Override
public List<AnqmUserVo> getUserList(DeviceBo bo) {
List<AnqmUserVo> gpsUserVos = baseMapper.getUserList(bo.getDevNum());
if (gpsUserVos == null || gpsUserVos.isEmpty()) {
return null;
}
List<AnqmUserVo> list = gpsUserVos.stream().filter(Objects::nonNull).toList();
AnqmManmachine gpsManmachine = anqmManmachineMapper.selectOne(new LambdaQueryWrapper<AnqmManmachine>().eq(AnqmManmachine::getClientId, bo.getDevNum()));
for (AnqmUserVo item : list) {
item.setDevNum(bo.getDevNum());
if (gpsManmachine != null && gpsManmachine.getUserId().equals(item.getUserId())) {
item.setType(0);
}else {
item.setType(1);
}
}
return list;
}
} }