From e02e19c2d1a1de70ec8f97e511d866899054b0a1 Mon Sep 17 00:00:00 2001 From: wangwenhua <12345678> Date: Sun, 21 Sep 2025 11:57:12 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E5=A4=A9=E6=B0=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/WeatherResourceController.java | 66 ++++++++++++++++++- .../baseData/entity/WeatherResource.java | 8 ++- .../mapper/WeatherResourceMapper.java | 7 ++ .../service/IWeatherResourceService.java | 8 +++ .../impl/WeatherResourceServiceImpl.java | 16 ++++- .../hivekion/statistic/bean/ScenarioInfo.java | 3 + .../service/impl/ScenarioServiceImpl.java | 60 +++++++++++++++++ .../hivekion/thread/HandleSendRunable.java | 1 - .../mapper/tbl/WeatherResourceMapper.xml | 33 ++++++++++ 9 files changed, 196 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/hivekion/baseData/controller/WeatherResourceController.java b/src/main/java/com/hivekion/baseData/controller/WeatherResourceController.java index 390bfce..bc1ae55 100644 --- a/src/main/java/com/hivekion/baseData/controller/WeatherResourceController.java +++ b/src/main/java/com/hivekion/baseData/controller/WeatherResourceController.java @@ -1,8 +1,23 @@ package com.hivekion.baseData.controller; -import org.springframework.web.bind.annotation.RequestMapping; +import com.hivekion.baseData.domain.tblvehicleVo.VehicleAddInputVo; +import com.hivekion.baseData.entity.WeatherResource; +import com.hivekion.baseData.service.IWeatherResourceService; +import com.hivekion.common.annotation.AutoLog; +import com.hivekion.common.entity.PagedResultVo; +import com.hivekion.common.entity.ResponseData; +import com.hivekion.common.enums.OperationTypeEnum; +import com.hivekion.common.enums.ResultCodeEnum; +import com.hivekion.environment.entity.SimtoolEbe; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; import org.springframework.stereotype.Controller; +import javax.annotation.Resource; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.List; + /** *

* 气像资源信息 前端控制器 @@ -11,8 +26,53 @@ import org.springframework.stereotype.Controller; * @author liDongYu * @since 2025-09-14 */ -@Controller +@RestController @RequestMapping("/baseData/weatherResource") -public class WeatherResourceController { +public class WeatherResourceController extends BaseController{ + @Resource + private IWeatherResourceService weatherResourceService; + + @PostMapping("/add") + @ApiOperation(value = "新增天气信息", notes = "") + @AutoLog(value = "新增天气信息", operationType = OperationTypeEnum.INSERT, module = "基础数据/新增车辆信息") + public boolean add(@RequestBody WeatherResource inputVo) throws Exception { + DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + LocalDateTime begDate = LocalDateTime.parse(inputVo.getLastBegTimeStr(),dtf); + LocalDateTime endDate = LocalDateTime.parse(inputVo.getLastEndTimeStr(),dtf); + inputVo.setLastBegTime(begDate); + inputVo.setLastEndTime(endDate); + return weatherResourceService.save(inputVo); + } + + @ApiOperation(value = "查询天气列表", notes = "") + @GetMapping("/list") + + public PagedResultVo list(WeatherResource search) { + + + //设置开始索引 + search.setStart(search.getPageSize() * (search.getPageNum() - 1)); + //查询结果列表 + List list = weatherResourceService.list(search); + //查询总数 + Long total = weatherResourceService.count(search); + return list(search, list, total); + + } + /** + * 删除天气数据 + * + * @param id 记录ID + * @return 操作结果 + */ + @GetMapping("/remove/{id}") + public ResponseData remove(@PathVariable("id") Integer id) { + WeatherResource weather = weatherResourceService.getById(id); + if (weather == null) { + return ResponseData.error(ResultCodeEnum.RECORD_NOT_EXIT, null); + } + weatherResourceService.removeById(id); + return ResponseData.success(null); + } } diff --git a/src/main/java/com/hivekion/baseData/entity/WeatherResource.java b/src/main/java/com/hivekion/baseData/entity/WeatherResource.java index 162b32c..8e5eed6 100644 --- a/src/main/java/com/hivekion/baseData/entity/WeatherResource.java +++ b/src/main/java/com/hivekion/baseData/entity/WeatherResource.java @@ -4,6 +4,7 @@ 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 com.hivekion.common.entity.SearchInputVo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import java.io.Serializable; @@ -21,7 +22,7 @@ import lombok.Data; @TableName("TBL_WEATHER_RESOURCE") @ApiModel(value = "WeatherResource对象", description = "气像资源信息") @Data -public class WeatherResource implements Serializable { +public class WeatherResource extends SearchInputVo implements Serializable { private static final long serialVersionUID = 1L; @@ -51,5 +52,10 @@ public class WeatherResource implements Serializable { @TableField(exist = false) private String status = "init"; + @TableField(exist = false) + private String lastBegTimeStr; + @TableField(exist = false) + private String lastEndTimeStr; + } diff --git a/src/main/java/com/hivekion/baseData/mapper/WeatherResourceMapper.java b/src/main/java/com/hivekion/baseData/mapper/WeatherResourceMapper.java index b14b0c6..7505cf7 100644 --- a/src/main/java/com/hivekion/baseData/mapper/WeatherResourceMapper.java +++ b/src/main/java/com/hivekion/baseData/mapper/WeatherResourceMapper.java @@ -2,6 +2,9 @@ package com.hivekion.baseData.mapper; import com.hivekion.baseData.entity.WeatherResource; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.hivekion.environment.entity.SimtoolEbe; + +import java.util.List; /** *

@@ -13,4 +16,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; */ public interface WeatherResourceMapper extends BaseMapper { + List list(WeatherResource ebe); + + Long count(WeatherResource ebe); + } diff --git a/src/main/java/com/hivekion/baseData/service/IWeatherResourceService.java b/src/main/java/com/hivekion/baseData/service/IWeatherResourceService.java index 8cfc15a..127c6bc 100644 --- a/src/main/java/com/hivekion/baseData/service/IWeatherResourceService.java +++ b/src/main/java/com/hivekion/baseData/service/IWeatherResourceService.java @@ -2,6 +2,9 @@ package com.hivekion.baseData.service; import com.hivekion.baseData.entity.WeatherResource; import com.baomidou.mybatisplus.extension.service.IService; +import com.hivekion.environment.entity.SimtoolEbe; + +import java.util.List; /** *

@@ -13,4 +16,9 @@ import com.baomidou.mybatisplus.extension.service.IService; */ public interface IWeatherResourceService extends IService { + List list(WeatherResource ebe); + + Long count(WeatherResource ebe); + + } diff --git a/src/main/java/com/hivekion/baseData/service/impl/WeatherResourceServiceImpl.java b/src/main/java/com/hivekion/baseData/service/impl/WeatherResourceServiceImpl.java index c44b5e3..05bc715 100644 --- a/src/main/java/com/hivekion/baseData/service/impl/WeatherResourceServiceImpl.java +++ b/src/main/java/com/hivekion/baseData/service/impl/WeatherResourceServiceImpl.java @@ -1,11 +1,14 @@ package com.hivekion.baseData.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.hivekion.baseData.entity.WeatherResource; import com.hivekion.baseData.mapper.WeatherResourceMapper; import com.hivekion.baseData.service.IWeatherResourceService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; +import java.util.List; + /** *

* 气像资源信息 服务实现类 @@ -17,4 +20,15 @@ import org.springframework.stereotype.Service; @Service public class WeatherResourceServiceImpl extends ServiceImpl implements IWeatherResourceService { + @Override + public List list(WeatherResource ebe) { + + return this.list(new QueryWrapper().eq("scenario_id",ebe.getScenarioId())); + } + + @Override + public Long count(WeatherResource ebe) { + return this.baseMapper.count(ebe); + } + } diff --git a/src/main/java/com/hivekion/statistic/bean/ScenarioInfo.java b/src/main/java/com/hivekion/statistic/bean/ScenarioInfo.java index 714b968..ffc4f51 100644 --- a/src/main/java/com/hivekion/statistic/bean/ScenarioInfo.java +++ b/src/main/java/com/hivekion/statistic/bean/ScenarioInfo.java @@ -3,6 +3,7 @@ package com.hivekion.statistic.bean; import com.hivekion.baseData.entity.Fightpowerstaff; import com.hivekion.baseData.entity.OrgSupplier; import com.hivekion.scenario.entity.ScenarioOrgPost; +import com.hivekion.scenario.entity.ScenarioResource; import com.hivekion.scenario.entity.ScenarioTask; import com.hivekion.supplier.entity.SupplierRequest; import lombok.Data; @@ -38,4 +39,6 @@ public class ScenarioInfo implements Serializable { //药材 private MedicalInfo medical = new MedicalInfo(); + private ScenarioResource sdzy; + } diff --git a/src/main/java/com/hivekion/statistic/service/impl/ScenarioServiceImpl.java b/src/main/java/com/hivekion/statistic/service/impl/ScenarioServiceImpl.java index ac39ceb..ef740f9 100644 --- a/src/main/java/com/hivekion/statistic/service/impl/ScenarioServiceImpl.java +++ b/src/main/java/com/hivekion/statistic/service/impl/ScenarioServiceImpl.java @@ -71,6 +71,12 @@ public class ScenarioServiceImpl implements ScenarioService { @Override public ScenarioInfo listScenarioInfo(Integer scenarioId, String roomId, String resourceId) { ScenarioInfo scenarioInfo = new ScenarioInfo(); + //图标Map + Map iconMap = iconService.iconMap(); + //装备Map + Map entityMap = iTblEntityService.entityMap(); + Map hResourceMap = resourcesService.listBuildResourceByType(7); + Map wResourceMap = resourcesService.listBuildResourceByType(8); //获取分队信息 Map map = teamInfoService.teamInfoMap(); Map resourceMap = resourceService.resourceMap(); @@ -90,6 +96,59 @@ public class ScenarioServiceImpl implements ScenarioService { log.error("============={}==========================",resourceId); ex.printStackTrace(); } + switch (resourceInstance.getResourceType()) { + case 1: + case 2: + case 3: + case 4: + if (entityMap.get(resourceInstance.getResourceId()) != null) { + TblEntity entity = entityMap.get(resourceInstance.getResourceId()); + resourceInstance.setTitle(entity.getEntityName()); + resourceInstance.setImgBase64( + iconMap.get(entity.getIconId()) == null ? "" : iconMap.get(entity.getIconId())); + } + break; + case 5: + case 6: + if (map.get(resourceInstance.getResourceId()) != null) { + Teaminfo teaminfo = map.get(resourceInstance.getResourceId()); + resourceInstance.setTitle(teaminfo.getName()); + resourceInstance.setImgBase64( + iconMap.get(teaminfo.getIconId()) == null ? "" : iconMap.get(teaminfo.getIconId())); + } + break; + case 7: + if(hResourceMap.get(resourceInstance.getResourceId()) != null){ + com.hivekion.scenario.entity.Resource resource1 = hResourceMap.get(resourceInstance.getResourceId()); + resourceInstance.setTitle(resource1.getResourceName()); + resourceInstance.setImgBase64( + iconMap.get(resource1.getIcon()) == null ? "" : iconMap.get(resource1.getIcon())); + } + break; + case 8: + if(wResourceMap.get(resourceInstance.getResourceId()) != null){ + com.hivekion.scenario.entity.Resource resource1 = wResourceMap.get(resourceInstance.getResourceId()); + resourceInstance.setTitle(resource1.getResourceName()); + resourceInstance.setImgBase64( + iconMap.get(resource1.getIcon()) == null ? "" : iconMap.get(resource1.getIcon())); + } + break; + } + if (resourceMap.get(resourceId) != null) { + ScenarioResource resource = resourceMap.get(resourceId); + if (map.get(resource.getResourceId()) != null) { + scenarioInfo.getTeam().setTeamName(map.get(resource.getResourceId()).getName()); + resourceInstance.setResourceName(map.get(resource.getResourceId()).getName()); + } + } + try { + scenarioInfo.getTeam().setType(resourceInstance.getType()); + scenarioInfo.getTeam().setLat(resourceInstance.getLat()); + scenarioInfo.getTeam().setLng(resourceInstance.getLng()); + }catch (Exception ex){ + log.error("============={}==========================",resourceId); + ex.printStackTrace(); + } //获取关联的组织机构信息 ScenarioOrgPost post = new ScenarioOrgPost(); post.setResourceId(resourceId); @@ -173,6 +232,7 @@ public class ScenarioServiceImpl implements ScenarioService { scenarioInfo.setOrgPostList(orgPostList); scenarioInfo.setSuppliers(suppliers); scenarioInfo.setSupplierRequests(supplierRequests); + scenarioInfo.setSdzy(resourceInstance); return scenarioInfo; } diff --git a/src/main/java/com/hivekion/thread/HandleSendRunable.java b/src/main/java/com/hivekion/thread/HandleSendRunable.java index ae7bb4f..ab45586 100644 --- a/src/main/java/com/hivekion/thread/HandleSendRunable.java +++ b/src/main/java/com/hivekion/thread/HandleSendRunable.java @@ -25,7 +25,6 @@ public class HandleSendRunable implements Runnable { try { ResponseCmdInfo response = Global.sendCmdInfoQueue.take(); - WsServer.sendMessage(response.getScenarioId(), response.getRoom(), JSON.toJSONString(response)); } catch (Exception e) { log.error("error::", e); diff --git a/src/main/resources/mapper/tbl/WeatherResourceMapper.xml b/src/main/resources/mapper/tbl/WeatherResourceMapper.xml index 069c31d..3ed8c4a 100644 --- a/src/main/resources/mapper/tbl/WeatherResourceMapper.xml +++ b/src/main/resources/mapper/tbl/WeatherResourceMapper.xml @@ -1,5 +1,38 @@ + + + + + + + + + + + + From 10cf9622bbe63b1b84d433944720b188f6120aed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E7=8E=89=E4=B8=9C?= <129883742+liyudong2018@users.noreply.github.com> Date: Sun, 21 Sep 2025 12:32:21 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E7=9B=B8=E5=85=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../thread/HandleReceiveRunnable.java | 45 +++++++++++++++++-- 1 file changed, 41 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/hivekion/thread/HandleReceiveRunnable.java b/src/main/java/com/hivekion/thread/HandleReceiveRunnable.java index 61ff83e..3de07e1 100644 --- a/src/main/java/com/hivekion/thread/HandleReceiveRunnable.java +++ b/src/main/java/com/hivekion/thread/HandleReceiveRunnable.java @@ -3,12 +3,18 @@ package com.hivekion.thread; import cn.hutool.extra.spring.SpringUtil; import com.alibaba.fastjson.JSON; import com.hivekion.Global; +import com.hivekion.baseData.entity.Scenario; +import com.hivekion.baseData.entity.WeatherResource; +import com.hivekion.baseData.service.impl.ScenarioServiceImpl; +import com.hivekion.baseData.service.impl.WeatherResourceServiceImpl; import com.hivekion.common.entity.RequestCmdInfo; import com.hivekion.common.entity.ResponseCmdInfo; import com.hivekion.room.RoomManager; import com.hivekion.room.bean.Room; import com.hivekion.scenario.entity.ScenarioResource; +import java.time.LocalDateTime; import java.util.HashMap; +import java.util.List; import java.util.Map; import lombok.extern.slf4j.Slf4j; @@ -39,8 +45,10 @@ public class HandleReceiveRunnable implements Runnable { //消息分发业务bean处理 if (SpringUtil.getBean(WebsocketMsgWrapper.class) != null) { try { - WebsocketMsgWrapper websocketMsgWrapper = SpringUtil.getBean(WebsocketMsgWrapper.class); - websocketMsgWrapper.msgHandle(requestCmdInfo.getScenarioId(), requestCmdInfo.getRoom(), + WebsocketMsgWrapper websocketMsgWrapper = SpringUtil.getBean( + WebsocketMsgWrapper.class); + websocketMsgWrapper.msgHandle(requestCmdInfo.getScenarioId(), + requestCmdInfo.getRoom(), requestCmdInfo.getResourceId(), requestCmdInfo.getMessage()); } catch (Exception e) { log.error("error::", e); @@ -52,8 +60,6 @@ public class HandleReceiveRunnable implements Runnable { } - - } catch (Exception e) { log.error("error::", e); } @@ -70,6 +76,9 @@ public class HandleReceiveRunnable implements Runnable { case "get_room_info": handleGetRootInfo(requestCmdInfo); break; + case "get_weather": + handleGetWeather(requestCmdInfo); + break; default: break; @@ -130,4 +139,32 @@ public class HandleReceiveRunnable implements Runnable { }); } } + + private void handleGetWeather(RequestCmdInfo requestCmdInfo) { + //获取想定 + Scenario scenario = SpringUtil.getBean(ScenarioServiceImpl.class) + .getScenarioById(requestCmdInfo.getScenarioId()); + LocalDateTime startTime = scenario.getStartTime(); + Room room = RoomManager.getRoom(requestCmdInfo.getRoom()); + if (room != null) { + long duringTime = room.getDuringTime(); + List weatherList = SpringUtil.getBean(WeatherResourceServiceImpl.class) + .list(); + weatherList.forEach(weatherResource -> { + ResponseCmdInfo respObj = new ResponseCmdInfo<>(); + LocalDateTime weatherTime = weatherResource.getLastBegTime(); + LocalDateTime weatherEndTime = weatherResource.getLastEndTime(); + if (startTime.plusSeconds(duringTime).isAfter(weatherTime) && startTime.plusSeconds( + duringTime).isBefore(weatherEndTime)) { + + respObj.setCmdType("start_" + weatherResource.getWeatherType()); + } + if (startTime.plusSeconds(duringTime).isAfter(weatherEndTime)) { + respObj.setCmdType("stop_" + weatherResource.getWeatherType()); + } + Global.sendCmdInfoQueue.add(respObj); + }); + } + + } }