大屏接口修改
This commit is contained in:
@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import jakarta.annotation.Resource;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.dromara.bigscreen.domain.dto.TanchuangInfoReq;
|
||||
import org.dromara.bigscreen.domain.dto.Ys7DeviceUpdateReq;
|
||||
import org.dromara.bigscreen.domain.vo.ProjectImageProgressVo;
|
||||
import org.dromara.bigscreen.domain.vo.ProjectLandVo;
|
||||
@ -418,4 +419,12 @@ public class ProjectBigScreenController extends BaseController {
|
||||
projectBigScreenService.setWrjHc();
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新无人机缓存
|
||||
*/
|
||||
@GetMapping("/getInfoData")
|
||||
public R<Map<String, Map<String, Object>>> getInfoData(TanchuangInfoReq req){
|
||||
return R.ok(projectBigScreenService.getInfoData(req));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -8,8 +8,4 @@ import java.io.Serializable;
|
||||
public class TanchuangInfoReq implements Serializable {
|
||||
|
||||
private Long id;
|
||||
|
||||
private String sn;
|
||||
|
||||
private Integer type;
|
||||
}
|
||||
|
||||
@ -53,22 +53,30 @@ public class RedisMessageListener implements MessageListener {
|
||||
key = "wrj:osd2:"+gateway;
|
||||
}else if (JSONUtil.parseObj(stringRedisTemplate.getStringSerializer().deserialize(message.getBody())).getJSONObject("data").get("network_state") != null) {
|
||||
key = "wrj:osd3:"+gateway;
|
||||
DroProjectDrone droProjectDrone = droProjectDroneService.getBaseMapper().selectOne(new LambdaQueryWrapper<DroProjectDrone>().eq(DroProjectDrone::getDroneSn, gateway));
|
||||
setWs(message, gateway, droProjectDrone);
|
||||
}else{
|
||||
key = "wrj:osd4:"+gateway;
|
||||
DroProjectDrone droProjectDrone = droProjectDroneService.getBaseMapper().selectOne(new LambdaQueryWrapper<DroProjectDrone>().eq(DroProjectDrone::getDroneSn, gateway));
|
||||
setWs(message, gateway, droProjectDrone);
|
||||
|
||||
}
|
||||
stringRedisTemplate
|
||||
.opsForValue()
|
||||
.set(key
|
||||
, Objects.requireNonNull(stringRedisTemplate.getStringSerializer().deserialize(message.getBody())));
|
||||
DroProjectDrone droProjectDrone = droProjectDroneService.getBaseMapper().selectOne(new LambdaQueryWrapper<DroProjectDrone>().eq(DroProjectDrone::getDroneSn, gateway));
|
||||
String pushContent = buildPushMessage(gateway,stringRedisTemplate.getStringSerializer().deserialize(message.getBody()),droProjectDrone.getProjectId());
|
||||
|
||||
}
|
||||
|
||||
private void setWs(Message message, String gateway, DroProjectDrone droProjectDrone) {
|
||||
String pushContent = buildPushMessage(gateway,stringRedisTemplate.getStringSerializer().deserialize(message.getBody()), droProjectDrone.getProjectId());
|
||||
// 发送给指定用户(equipment.getUserId())
|
||||
WebSocketMessageDto messageDto = new WebSocketMessageDto();
|
||||
messageDto.setMessage(pushContent);
|
||||
messageDto.setSessionKeys(Collections.singletonList(droProjectDrone.getProjectId()));
|
||||
WebSocketUtils.publishMessage(messageDto);
|
||||
|
||||
}
|
||||
|
||||
private String buildPushMessage(String key, String message, Long projectId) {
|
||||
JSONObject messageObj = new JSONObject();
|
||||
messageObj.put("type", "wrj_DATA_UPDATE");
|
||||
|
||||
@ -77,7 +77,7 @@ public class RedisSubscribeManager {
|
||||
* 4. 定时任务:定期更新订阅(每5分钟执行一次,可调整cron表达式)
|
||||
* cron格式:秒 分 时 日 月 周 年(示例:0 0/5 * * * ? 表示每5分钟)
|
||||
*/
|
||||
@Scheduled(cron = "0 0/5 * * * ?")
|
||||
@Scheduled(cron = "0 0/6 * * * ?")
|
||||
public void dynamicUpdateSubscribe() {
|
||||
try {
|
||||
Object object = RedisUtils.getCacheObject("xmjdap:ws");
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package org.dromara.bigscreen.service;
|
||||
|
||||
import org.dromara.bigscreen.domain.dto.TanchuangInfoReq;
|
||||
import org.dromara.bigscreen.domain.vo.ProjectImageProgressVo;
|
||||
import org.dromara.bigscreen.domain.vo.ProjectPeopleVo;
|
||||
import org.dromara.bigscreen.domain.vo.ProjectSafetyInspectionVo;
|
||||
@ -84,4 +85,5 @@ public interface ProjectBigScreenService {
|
||||
*/
|
||||
void setWrjHc();
|
||||
|
||||
Map<String, Map<String, Object>> getInfoData(TanchuangInfoReq req);
|
||||
}
|
||||
|
||||
@ -5,6 +5,7 @@ import cn.hutool.json.JSONArray;
|
||||
import cn.hutool.json.JSONObject;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.dromara.bigscreen.domain.dto.TanchuangInfoReq;
|
||||
import org.dromara.bigscreen.domain.vo.ProjectImageProgressVo;
|
||||
import org.dromara.bigscreen.domain.vo.ProjectPeopleVo;
|
||||
import org.dromara.bigscreen.domain.vo.ProjectSafetyInspectionVo;
|
||||
@ -18,7 +19,9 @@ import org.dromara.contractor.domain.SubConstructionUser;
|
||||
import org.dromara.contractor.service.ISubConstructionUserService;
|
||||
import org.dromara.drone.service.IDroProjectDroneService;
|
||||
import org.dromara.gps.domain.bo.GpsEquipmentBo;
|
||||
import org.dromara.gps.domain.vo.DeviceVo;
|
||||
import org.dromara.gps.domain.vo.GpsEquipmentSonVo;
|
||||
import org.dromara.gps.service.IDeviceService;
|
||||
import org.dromara.gps.service.IGpsEquipmentService;
|
||||
import org.dromara.manager.weathermanager.vo.WeatherVo;
|
||||
import org.dromara.other.domain.OthYs7Device;
|
||||
@ -88,6 +91,9 @@ public class ProjectBigScreenServiceImpl implements ProjectBigScreenService {
|
||||
@Lazy
|
||||
private StringRedisTemplate stringRedisTemplate;
|
||||
|
||||
@Resource
|
||||
private IDeviceService deviceService;
|
||||
|
||||
/**
|
||||
* 获取项目天气
|
||||
*
|
||||
@ -473,6 +479,7 @@ public class ProjectBigScreenServiceImpl implements ProjectBigScreenService {
|
||||
LocalDateTime now = LocalDateTime.now();
|
||||
List<GpsEquipmentSonVo> voList = gpsEquipmentService.getClientList(projectId, startOfDay, now);
|
||||
List<GpsEquipmentSonVo> appList = gpsEquipmentService.getUserListByProjectId(projectId, startOfDay, now);
|
||||
List<DeviceVo> anqmList = deviceService.getUserListByProjectId(projectId, startOfDay, now);
|
||||
List<OthYs7Device> othYs7DeviceList = othYs7DeviceService.lambdaQuery()
|
||||
.eq(OthYs7Device::getProjectId, projectId)
|
||||
.between(OthYs7Device::getUpdateTime, startOfDay, now)
|
||||
@ -515,6 +522,7 @@ public class ProjectBigScreenServiceImpl implements ProjectBigScreenService {
|
||||
for (GpsEquipmentSonVo item : voList) {
|
||||
Map<String, Object> gps = new HashMap<>();
|
||||
gps.put("id", item.getClientId());
|
||||
gps.put("userId", item.getUserId());
|
||||
gps.put("label", item.getClientId());
|
||||
gps.put("name", item.getDeviceName());
|
||||
gps.put("type", "gps");
|
||||
@ -528,6 +536,7 @@ public class ProjectBigScreenServiceImpl implements ProjectBigScreenService {
|
||||
for (GpsEquipmentSonVo item : appList) {
|
||||
Map<String, Object> app = new HashMap<>();
|
||||
app.put("id", item.getClientId());
|
||||
app.put("userId", item.getUserId());
|
||||
app.put("label", item.getClientId());
|
||||
app.put("name", item.getDeviceName());
|
||||
app.put("type", "app");
|
||||
@ -554,6 +563,12 @@ public class ProjectBigScreenServiceImpl implements ProjectBigScreenService {
|
||||
if (wrjKeys != null && !wrjKeys.isEmpty()) {
|
||||
for (String key : wrjKeys) {
|
||||
Object object = stringRedisTemplate.opsForValue().get("wrj:osd4:" + key);
|
||||
Object object6 = stringRedisTemplate.opsForValue().get("wrj:osd2:" + key);
|
||||
String status = "";
|
||||
if (object6 != null) {
|
||||
JSONObject object1 = JSONUtil.parseObj(object6);
|
||||
status = object1.getJSONObject("data").get("flighttask_step_code").toString();
|
||||
}
|
||||
if (object != null) {
|
||||
JSONObject object1 = JSONUtil.parseObj(object);
|
||||
Map<String, Object> wrj = new HashMap<>();
|
||||
@ -561,9 +576,26 @@ public class ProjectBigScreenServiceImpl implements ProjectBigScreenService {
|
||||
wrj.put("label", key);
|
||||
wrj.put("name", key);
|
||||
wrj.put("type", "wurenji");
|
||||
wrj.put("status", status);
|
||||
wrj.put("lat", object1.getJSONObject("data").get("latitude"));
|
||||
wrj.put("lng", object1.getJSONObject("data").get("longitude"));
|
||||
wrj.put("alt", object1.getJSONObject("data").get("height"));
|
||||
wrjChildrenMap.add(wrj);
|
||||
}else {
|
||||
Object object2 = stringRedisTemplate.opsForValue().get("wrj:osd3:" + key);
|
||||
if (object2 != null) {
|
||||
JSONObject object3 = JSONUtil.parseObj(object2);
|
||||
Map<String, Object> wrj = new HashMap<>();
|
||||
wrj.put("id", key);
|
||||
wrj.put("label", key);
|
||||
wrj.put("name", key);
|
||||
wrj.put("type", "wurenji");
|
||||
wrj.put("status", status);
|
||||
wrj.put("lat", object3.getJSONObject("data").get("latitude"));
|
||||
wrj.put("lng", object3.getJSONObject("data").get("longitude"));
|
||||
wrj.put("alt", object3.getJSONObject("data").get("height"));
|
||||
wrjChildrenMap.add(wrj);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -601,4 +633,9 @@ public class ProjectBigScreenServiceImpl implements ProjectBigScreenService {
|
||||
public void setWrjHc() {
|
||||
RedisUtils.setCacheObject("xmjdap:ws",System.currentTimeMillis() );
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Map<String, Object>> getInfoData(TanchuangInfoReq req) {
|
||||
return projectService.getInfoData(req);
|
||||
}
|
||||
}
|
||||
|
||||
@ -25,7 +25,7 @@ public interface GpsEquipmentSonMapper extends BaseMapperPlus<GpsEquipmentSon, G
|
||||
" gps_equipment_son \n" +
|
||||
"WHERE \n" +
|
||||
"project_id = #{projectId} \n " +
|
||||
"AND create_time BETWEEN #{startTime} AND #{endTime}\n" +
|
||||
// "AND create_time BETWEEN #{startTime} AND #{endTime}\n" +
|
||||
")\n" +
|
||||
"SELECT\n" +
|
||||
" *\n" +
|
||||
@ -67,7 +67,7 @@ public interface GpsEquipmentSonMapper extends BaseMapperPlus<GpsEquipmentSon, G
|
||||
"WHERE \n" +
|
||||
"project_id = #{projectId}\n " +
|
||||
"AND client_id IS NULL \n" +
|
||||
"AND create_time BETWEEN #{startTime} AND #{endTime} \n" +
|
||||
// "AND create_time BETWEEN #{startTime} AND #{endTime} \n" +
|
||||
")\n" +
|
||||
"SELECT\n" +
|
||||
" *\n" +
|
||||
|
||||
@ -3,9 +3,11 @@ package org.dromara.gps.mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import org.apache.ibatis.annotations.Select;
|
||||
import org.dromara.gps.domain.Location;
|
||||
import org.dromara.gps.domain.vo.DeviceVo;
|
||||
import org.dromara.gps.domain.vo.LocationVo;
|
||||
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
@ -28,4 +30,23 @@ public interface LocationMapper extends BaseMapperPlus<Location, LocationVo> {
|
||||
"FROM ges " +
|
||||
"WHERE rn=1;")
|
||||
List<LocationVo> selectVoFristList(@Param("projectId") Long projectId);
|
||||
|
||||
|
||||
@Select("WITH RankedData AS (\n" +
|
||||
" SELECT\n" +
|
||||
" *,\n" +
|
||||
" ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY create_time DESC) AS rn\n" +
|
||||
" FROM\n" +
|
||||
" location \n " +
|
||||
"WHERE \n" +
|
||||
"project_id = #{projectId}\n " +
|
||||
// "AND create_time BETWEEN #{startTime} AND #{endTime} \n" +
|
||||
")\n" +
|
||||
"SELECT\n" +
|
||||
" *\n" +
|
||||
"FROM\n" +
|
||||
" RankedData\n" +
|
||||
"WHERE\n" +
|
||||
" rn = 1;")
|
||||
List<DeviceVo> getUserListByProjectId(Long projectId, LocalDateTime startOfDay, LocalDateTime now);
|
||||
}
|
||||
|
||||
@ -10,6 +10,7 @@ import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import org.dromara.gps.domain.vo.GpsProjectVo;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
@ -76,4 +77,6 @@ public interface IDeviceService extends IService<Device>{
|
||||
Boolean bindManmachine(DeviceBo bo);
|
||||
|
||||
Boolean unbindManmachine(DeviceBo bo);
|
||||
|
||||
List<DeviceVo> getUserListByProjectId(Long projectId, LocalDateTime startOfDay, LocalDateTime now);
|
||||
}
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package org.dromara.gps.service;
|
||||
|
||||
import org.dromara.gps.domain.vo.DeviceVo;
|
||||
import org.dromara.gps.domain.vo.LocationVo;
|
||||
import org.dromara.gps.domain.bo.LocationBo;
|
||||
import org.dromara.gps.domain.Location;
|
||||
@ -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 java.time.LocalDateTime;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
@ -69,4 +72,6 @@ public interface ILocationService extends IService<Location>{
|
||||
Boolean deleteWithValidByIds(Collection<String> ids, Boolean isValid);
|
||||
|
||||
List<LocationVo> getLargerScreenList(LocationBo bo);
|
||||
|
||||
List<DeviceVo> getUserListByProjectId(Long projectId, LocalDateTime startOfDay, LocalDateTime now);
|
||||
}
|
||||
|
||||
@ -17,6 +17,7 @@ import org.dromara.gps.domain.GpsEquipment;
|
||||
import org.dromara.gps.domain.GpsManmachine;
|
||||
import org.dromara.gps.domain.vo.GpsProjectVo;
|
||||
import org.dromara.gps.mapper.AnqmManmachineMapper;
|
||||
import org.dromara.gps.service.ILocationService;
|
||||
import org.dromara.project.domain.vo.project.BusProjectVo;
|
||||
import org.dromara.project.service.IBusProjectService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@ -28,6 +29,7 @@ import org.dromara.gps.mapper.DeviceMapper;
|
||||
import org.dromara.gps.service.IDeviceService;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@ -51,6 +53,9 @@ public class DeviceServiceImpl extends ServiceImpl<DeviceMapper, Device> impleme
|
||||
@Autowired
|
||||
private AnqmManmachineMapper anqmManmachineMapper;
|
||||
|
||||
@Autowired
|
||||
private ILocationService locationService;
|
||||
|
||||
/**
|
||||
* 查询安全帽设备
|
||||
*
|
||||
@ -212,4 +217,9 @@ public class DeviceServiceImpl extends ServiceImpl<DeviceMapper, Device> impleme
|
||||
return anqmManmachineMapper.delete(new LambdaQueryWrapper<AnqmManmachine>()
|
||||
.eq(AnqmManmachine::getClientId, gpsManmachine.getClientId()))> 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<DeviceVo> getUserListByProjectId(Long projectId, LocalDateTime startOfDay, LocalDateTime now) {
|
||||
return locationService.getUserListByProjectId(projectId,startOfDay,now);
|
||||
}
|
||||
}
|
||||
|
||||
@ -11,6 +11,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.dromara.gps.domain.GpsEquipmentSon;
|
||||
import org.dromara.gps.domain.vo.DeviceVo;
|
||||
import org.dromara.gps.domain.vo.GpsEquipmentSonVo;
|
||||
import org.dromara.system.domain.vo.SysUserVo;
|
||||
import org.dromara.system.service.ISysUserService;
|
||||
@ -22,6 +23,7 @@ import org.dromara.gps.domain.Location;
|
||||
import org.dromara.gps.mapper.LocationMapper;
|
||||
import org.dromara.gps.service.ILocationService;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Collection;
|
||||
@ -152,4 +154,9 @@ public class LocationServiceImpl extends ServiceImpl<LocationMapper, Location> i
|
||||
}
|
||||
return gpsEquipmentSonVoList;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<DeviceVo> getUserListByProjectId(Long projectId, LocalDateTime startOfDay, LocalDateTime now) {
|
||||
return baseMapper.getUserListByProjectId(projectId,startOfDay,now);
|
||||
}
|
||||
}
|
||||
|
||||
@ -5,6 +5,7 @@ import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.util.PhoneUtil;
|
||||
import cn.hutool.core.util.RandomUtil;
|
||||
import cn.hutool.json.JSONObject;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
@ -28,7 +29,9 @@ import org.dromara.common.core.utils.StringUtils;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.common.satoken.utils.LoginHelper;
|
||||
import org.dromara.contractor.domain.SubConstructionUser;
|
||||
import org.dromara.contractor.domain.SubContractor;
|
||||
import org.dromara.contractor.service.ISubConstructionUserService;
|
||||
import org.dromara.contractor.service.ISubContractorService;
|
||||
import org.dromara.design.service.IDesTechnicalStandardService;
|
||||
import org.dromara.facility.domain.FacMatrix;
|
||||
@ -38,6 +41,8 @@ import org.dromara.facility.service.IFacMatrixService;
|
||||
import org.dromara.manager.weathermanager.WeatherConstant;
|
||||
import org.dromara.manager.weathermanager.WeatherManager;
|
||||
import org.dromara.manager.weathermanager.vo.WeatherVo;
|
||||
import org.dromara.other.domain.OthYs7Device;
|
||||
import org.dromara.other.service.IOthYs7DeviceService;
|
||||
import org.dromara.progress.domain.PgsProgressCategory;
|
||||
import org.dromara.progress.domain.enums.PgsRelevancyStructureEnum;
|
||||
import org.dromara.progress.domain.vo.progresscategory.PgsProgressCategoryStructureVo;
|
||||
@ -142,6 +147,10 @@ public class BusProjectServiceImpl extends ServiceImpl<BusProjectMapper, BusProj
|
||||
@Resource
|
||||
private ISysDictDataService dictDataService;
|
||||
|
||||
@Resource
|
||||
@Lazy
|
||||
private ISubConstructionUserService constructionUserService;
|
||||
|
||||
private final Cache<String, String> WEATHER_CACHE =
|
||||
Caffeine.newBuilder().initialCapacity(1024)
|
||||
.maximumSize(10000L)
|
||||
@ -1180,21 +1189,17 @@ public class BusProjectServiceImpl extends ServiceImpl<BusProjectMapper, BusProj
|
||||
|
||||
@Override
|
||||
public Map<String, Map<String, Object>> getInfoData(TanchuangInfoReq req) {
|
||||
switch (req.getType()) {
|
||||
case 1:
|
||||
break;
|
||||
case 2:
|
||||
break;
|
||||
case 3:
|
||||
break;
|
||||
case 4:
|
||||
break;
|
||||
case 5:
|
||||
break;
|
||||
case 6:
|
||||
break;
|
||||
}
|
||||
return Map.of();
|
||||
Map<String, Map<String, Object>> map = new HashMap<>();
|
||||
SubConstructionUser byUserId = constructionUserService.getByUserId(req.getId());
|
||||
SubContractor contractor = contractorService.getById(byUserId.getContractorId());
|
||||
Map<String, Object> renyuan = new HashMap<>();
|
||||
renyuan.put("name", byUserId.getUserName());
|
||||
renyuan.put("teamName", byUserId.getTeamName());
|
||||
renyuan.put("phone", byUserId.getPhone());
|
||||
renyuan.put("typeOfWork", dictDataService.selectDictLabel("type_of_work", byUserId.getTypeOfWork()));
|
||||
renyuan.put("contractorNmae", contractor.getName());
|
||||
map.put("renyuan", renyuan);
|
||||
return map;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user