diff --git a/src/main/java/com/hivekion/CodeGenerator.java b/src/main/java/com/hivekion/CodeGenerator.java
index 478cf8a..ef2ea8a 100644
--- a/src/main/java/com/hivekion/CodeGenerator.java
+++ b/src/main/java/com/hivekion/CodeGenerator.java
@@ -28,12 +28,12 @@ public class CodeGenerator {
})
.packageConfig(builder -> {
builder.parent("com.hivekion") // 设置父包名
- .moduleName("scenario") // 设置模块名(可选)
+ .moduleName("basedata") // 设置模块名(可选)
.pathInfo(Collections.singletonMap(OutputFile.xml,
basePath + "/src/main/resources/mapper/tbl")); // 设置mapperXml生成路径
})
.strategyConfig(builder -> {
- builder.addInclude("TBL_ROOM_LOG".toLowerCase()) // 设置需要生成的表名(多个用逗号分隔)
+ builder.addInclude("IMG_VEHICLE_IMAGE".toLowerCase()) // 设置需要生成的表名(多个用逗号分隔)
.addTablePrefix("tbl_"); // 设置过滤表前缀
})
.execute();
diff --git a/src/main/java/com/hivekion/baseData/controller/ImgVehicleImageController.java b/src/main/java/com/hivekion/baseData/controller/ImgVehicleImageController.java
new file mode 100644
index 0000000..3d1c029
--- /dev/null
+++ b/src/main/java/com/hivekion/baseData/controller/ImgVehicleImageController.java
@@ -0,0 +1,18 @@
+package com.hivekion.basedata.controller;
+
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 前端控制器
+ *
+ *
+ * @author liDongYu
+ * @since 2025-09-18
+ */
+@Controller
+@RequestMapping("/basedata/imgVehicleImage")
+public class ImgVehicleImageController {
+
+}
diff --git a/src/main/java/com/hivekion/baseData/controller/TblVehicleController.java b/src/main/java/com/hivekion/baseData/controller/TblVehicleController.java
index 9dae541..bd551d2 100644
--- a/src/main/java/com/hivekion/baseData/controller/TblVehicleController.java
+++ b/src/main/java/com/hivekion/baseData/controller/TblVehicleController.java
@@ -19,6 +19,7 @@ import com.hivekion.baseData.domain.tblvehicleVo.ImgVehicleImageInfoVo;
import com.hivekion.baseData.domain.tblvehicleVo.VehicleAddInputVo;
import com.hivekion.baseData.domain.tblvehicleVo.VehicleSearchVo;
import com.hivekion.baseData.domain.tblvehicleVo.VehicleViewVo;
+import com.hivekion.baseData.service.IImgAircraftImageService;
import com.hivekion.baseData.service.IImgVehicleImageService;
import com.hivekion.common.annotation.AutoLog;
import com.hivekion.common.entity.PagedResultVo;
@@ -27,10 +28,13 @@ import com.hivekion.scenario.entity.Resource;
import com.hivekion.scenario.entity.Vehicle;
import com.hivekion.scenario.service.IVehicleService;
import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.util.List;
@@ -47,6 +51,9 @@ public class TblVehicleController {
@Autowired
private IImgVehicleImageService iImgVehicleImageService;
+ @Autowired
+ private IImgVehicleImageService imageService;
+
@PostMapping("/getList")
@ApiOperation(value = "获取车辆列表", notes = "")
@AutoLog(value = "获取车辆列表", operationType = OperationTypeEnum.SELECT, module = "基础数据/车辆")
@@ -96,6 +103,19 @@ public class TblVehicleController {
return iImgVehicleImageService.getInfo(Id);
}
+ @PostMapping("/addimg")
+ @ApiOperation(value = "新增车辆图片", notes = "")
+ @AutoLog(value = "新增车辆图片", operationType = OperationTypeEnum.INSERT, module = "基础数据/新增车辆图片")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "id",
+ value = "id",
+ required = true
+ )
+ })
+ public boolean addImgList(@RequestPart("file") MultipartFile file, Integer id) throws IOException {
+ return imageService.add(file,id);
+ }
+
/**
* 生成新Id
*
diff --git a/src/main/java/com/hivekion/baseData/domain/tblvehicleVo/VehicleViewVo.java b/src/main/java/com/hivekion/baseData/domain/tblvehicleVo/VehicleViewVo.java
index b096632..ff3740c 100644
--- a/src/main/java/com/hivekion/baseData/domain/tblvehicleVo/VehicleViewVo.java
+++ b/src/main/java/com/hivekion/baseData/domain/tblvehicleVo/VehicleViewVo.java
@@ -12,10 +12,10 @@ public class VehicleViewVo implements Serializable {
private static final long serialVersionUID = 1L;
@JsonProperty("ID")
- private Integer id;
+ private Integer Id;
- @ApiModelProperty("名称")
- private String vehicleName;
+ @JsonProperty("Name")
+ private String Name;
@ApiModelProperty("速度")
private String vehicleSpreed;
diff --git a/src/main/java/com/hivekion/baseData/entity/ImgVehicleImage.java b/src/main/java/com/hivekion/baseData/entity/ImgVehicleImage.java
new file mode 100644
index 0000000..48a3556
--- /dev/null
+++ b/src/main/java/com/hivekion/baseData/entity/ImgVehicleImage.java
@@ -0,0 +1,82 @@
+package com.hivekion.basedata.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ *
+ *
+ *
+ *
+ * @author liDongYu
+ * @since 2025-09-18
+ */
+@TableName("IMG_VEHICLE_IMAGE")
+@ApiModel(value = "ImgVehicleImage对象", description = "")
+public class ImgVehicleImage implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ private Integer id;
+
+ private String guid;
+
+ private byte[] icon;
+
+ private byte[] image;
+
+ private String model3d;
+
+ public Integer getId() {
+ return id;
+ }
+
+ public void setId(Integer id) {
+ this.id = id;
+ }
+
+ public String getGuid() {
+ return guid;
+ }
+
+ public void setGuid(String guid) {
+ this.guid = guid;
+ }
+
+ public byte[] getIcon() {
+ return icon;
+ }
+
+ public void setIcon(byte[] icon) {
+ this.icon = icon;
+ }
+
+ public byte[] getImage() {
+ return image;
+ }
+
+ public void setImage(byte[] image) {
+ this.image = image;
+ }
+
+ public String getModel3d() {
+ return model3d;
+ }
+
+ public void setModel3d(String model3d) {
+ this.model3d = model3d;
+ }
+
+ @Override
+ public String toString() {
+ return "ImgVehicleImage{" +
+ "id = " + id +
+ ", guid = " + guid +
+ ", icon = " + icon +
+ ", image = " + image +
+ ", model3d = " + model3d +
+ "}";
+ }
+}
diff --git a/src/main/java/com/hivekion/common/utils.java b/src/main/java/com/hivekion/common/utils.java
index cc916a9..3f18fb1 100644
--- a/src/main/java/com/hivekion/common/utils.java
+++ b/src/main/java/com/hivekion/common/utils.java
@@ -1,8 +1,8 @@
package com.hivekion.common;
import com.hivekion.common.exception.BusinessException;
-import com.sun.javafx.binding.StringFormatter;
-import java.time.Duration;
+
+
import net.sourceforge.pinyin4j.PinyinHelper;
import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
@@ -10,6 +10,9 @@ import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
import net.sourceforge.pinyin4j.format.HanyuPinyinVCharType;
import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;
+
+import java.text.MessageFormat;
+import java.time.Duration;
import java.util.List;
import java.util.stream.Collectors;
@@ -17,6 +20,7 @@ import java.util.stream.Collectors;
* 一些公用的方法集
*/
public class utils {
+
/**
* 取差集
*/
@@ -95,7 +99,7 @@ public class utils {
long hours = duration.toHours();
long minutes = duration.minusHours(hours).toMinutes();
long seconds = duration.minusHours(hours).minusMinutes(minutes).getSeconds();
- return StringFormatter.format("%d小时%d分钟%d秒\n", hours, minutes, seconds).get();
+ return MessageFormat.format("{0}小时{1}分钟{2}秒", hours, minutes, seconds);
}
public static void main(String[] args) {
diff --git a/src/main/java/com/hivekion/room/RoomManager.java b/src/main/java/com/hivekion/room/RoomManager.java
index 2f583d8..14137e8 100644
--- a/src/main/java/com/hivekion/room/RoomManager.java
+++ b/src/main/java/com/hivekion/room/RoomManager.java
@@ -19,8 +19,8 @@ public class RoomManager {
private static final Map roomsMap = new ConcurrentHashMap<>();
- public static void startRoom(String id, Scenario scenario,long time) {
- Room room = new Room(id,scenario);
+ public static void startRoom(String id, Scenario scenario, long time) {
+ Room room = new Room(id, scenario);
roomsMap.put(id, room);
room.start(time);
}
@@ -52,4 +52,12 @@ public class RoomManager {
room.addAction(time, action);
}
}
+
+ public static long getRoomDuringTime(String id) {
+ Room room = roomsMap.get(id);
+ if (room != null) {
+ return room.getDuringTime();
+ }
+ return 0;
+ }
}
diff --git a/src/main/java/com/hivekion/room/bean/AbtParentTask.java b/src/main/java/com/hivekion/room/bean/AbtParentTask.java
index c9f8982..853336b 100644
--- a/src/main/java/com/hivekion/room/bean/AbtParentTask.java
+++ b/src/main/java/com/hivekion/room/bean/AbtParentTask.java
@@ -27,16 +27,16 @@ import org.springframework.web.reactive.function.client.WebClient;
public abstract class AbtParentTask implements TaskAction {
- protected final AtomicLong duringTime = new AtomicLong(0);
- protected final ScheduledExecutorService schedule = Executors.newScheduledThreadPool(
- 1);
- protected ScheduledFuture> scheduledFuture;
+
+
//任务数据
protected final ScenarioTask scenarioTask;
-
+ //房间ID
protected final String roomId;
+ //http请求
protected WebClient webClient = WebClient.create();
- ThreadPoolExecutor executor = new ThreadPoolExecutor(
+ //线程池
+ protected ThreadPoolExecutor executor = new ThreadPoolExecutor(
5, // 核心线程数
10, // 最大线程数
60L, // 空闲线程存活时间
@@ -52,23 +52,10 @@ public abstract class AbtParentTask implements TaskAction {
}
- protected void start() {
- scheduledFuture = schedule.scheduleAtFixedRate(() -> {
- ScenarioWsParam scenarioWsParam = Global.roomParamMap.get(
- scenarioTask.getScenarioId() + "_" + roomId);
- if (scenarioWsParam == null) {
- duringTime.getAndSet(1);
- } else {
- duringTime.getAndSet(scenarioWsParam.getMag());
- }
- }, 0, 1, TimeUnit.SECONDS);
- }
- protected abstract void finished();
- protected abstract void setMag(int mag);
@Override
public void doSomeThing() {
@@ -85,13 +72,9 @@ public abstract class AbtParentTask implements TaskAction {
return scenarioTask.getTaskType();
}
- public void cancelAllTask() {
- if (scheduledFuture != null) {
- scheduledFuture.cancel(true);
- }
- }
- protected abstract void business();
+
+
}
// 自定义线程工厂
diff --git a/src/main/java/com/hivekion/room/bean/BattleRootTask.java b/src/main/java/com/hivekion/room/bean/BattleRootTask.java
index e18d277..de91523 100644
--- a/src/main/java/com/hivekion/room/bean/BattleRootTask.java
+++ b/src/main/java/com/hivekion/room/bean/BattleRootTask.java
@@ -23,23 +23,9 @@ public class BattleRootTask extends AbtParentTask {
public void doSomeThing() {
//会知道想定ID, resourceId;
}
- //固定间隔执行
- @Override
- protected void business() {
- // Global.roomParamMap.get(scenarioTask.getScenarioId() + "," + this.roomId); 可以获取当前想定的步长
- //战斗需要消耗弹药 按时间消耗,30秒
- //人员消耗
- //可能会产生需求,保障需求
- }
- @Override
- protected void finished() {
- }
- @Override
- protected void setMag(int mag) {
- }
}
diff --git a/src/main/java/com/hivekion/room/bean/MoveRootTask.java b/src/main/java/com/hivekion/room/bean/MoveRootTask.java
index 317f49d..04230f0 100644
--- a/src/main/java/com/hivekion/room/bean/MoveRootTask.java
+++ b/src/main/java/com/hivekion/room/bean/MoveRootTask.java
@@ -11,6 +11,9 @@ import com.hivekion.room.func.TaskAction;
import com.hivekion.scenario.entity.ScenarioTask;
import java.util.Map;
import java.util.TreeMap;
+import java.util.concurrent.Executors;
+import java.util.concurrent.ScheduledExecutorService;
+import java.util.concurrent.ScheduledFuture;
import lombok.extern.slf4j.Slf4j;
import org.springframework.core.env.Environment;
@@ -26,7 +29,9 @@ import org.springframework.core.env.Environment;
@Slf4j
public class MoveRootTask extends AbtParentTask implements TaskAction {
-
+ protected final ScheduledExecutorService schedule = Executors.newScheduledThreadPool(
+ 1);
+ protected ScheduledFuture> scheduledFuture;
private final double SPEED = 170;
private double accumulatedDistance = 0;
@@ -84,21 +89,10 @@ public class MoveRootTask extends AbtParentTask implements TaskAction {
}
- @Override
- protected void business() {
-
- }
- @Override
- protected void finished() {
- }
- @Override
- protected void setMag(int mag) {
-
- }
}
diff --git a/src/main/java/com/hivekion/room/bean/Room.java b/src/main/java/com/hivekion/room/bean/Room.java
index 961fe81..f7200de 100644
--- a/src/main/java/com/hivekion/room/bean/Room.java
+++ b/src/main/java/com/hivekion/room/bean/Room.java
@@ -12,7 +12,6 @@ import java.util.HashMap;
import java.util.Map;
import java.util.NavigableMap;
import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentNavigableMap;
import java.util.concurrent.ConcurrentSkipListMap;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
@@ -110,7 +109,12 @@ public class Room implements AutoCloseable {
startTask();
}
-
+ public long getDuringTime() {
+ return duringTime.get();
+ }
+ public long getTotalTime() {
+ return totalTime.get();
+ }
// 启动定时任务
private void startTask() {
@@ -125,16 +129,15 @@ public class Room implements AutoCloseable {
sendRemainTime((totalTime.get() - curTime));
- Map actions = actionMap.ceilingEntry(curTime);
- if (actions != null && !actions.isEmpty()) {
+ NavigableMap> actions = actionMap.headMap(curTime, true);
+ if (!actions.isEmpty() ) {
+ actions.forEach((key, action) -> {
+ action.forEach((taskAction, task) -> {
+ actionExecutor.submit(task::doSomeThing);
+ });
+ });
- for (Map.Entry entry : actions.entrySet()) {
- actionExecutor.submit(entry.getValue()::doSomeThing);
- }
- // 全部执行后再清空
actions.clear();
-
- actionMap.remove(curTime);
}
}, 0, 1, TimeUnit.SECONDS);
}
diff --git a/src/main/java/com/hivekion/room/bean/SupplierTask.java b/src/main/java/com/hivekion/room/bean/SupplierTask.java
index 666f1ae..b57bd9e 100644
--- a/src/main/java/com/hivekion/room/bean/SupplierTask.java
+++ b/src/main/java/com/hivekion/room/bean/SupplierTask.java
@@ -18,24 +18,15 @@ public class SupplierTask extends AbtParentTask implements TaskAction {
super(scenarioTask,roomId);
}
- @Override
- protected void finished() {
- }
@Override
public void doSomeThing() {
}
- @Override
- protected void business() {
-
- }
- @Override
- protected void setMag(int mag) {
- }
+
}
diff --git a/src/main/java/com/hivekion/scenario/entity/Vehicle.java b/src/main/java/com/hivekion/scenario/entity/Vehicle.java
index 573a731..dd239f5 100644
--- a/src/main/java/com/hivekion/scenario/entity/Vehicle.java
+++ b/src/main/java/com/hivekion/scenario/entity/Vehicle.java
@@ -21,12 +21,12 @@ public class Vehicle implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty("物理主键id")
- @TableField(value = "id")
- private Integer id;
+ @TableField(value = "ID")
+ private Integer Id;
@ApiModelProperty("名称")
- @TableField(value="vehicle_name")
- private String vehicleName;
+ @TableField(value="NAME")
+ private String Name;
@ApiModelProperty("速度")
@TableField(value = "vehicle_spreed")
@@ -93,19 +93,19 @@ public class Vehicle implements Serializable {
}
public Integer getId() {
- return id;
+ return Id;
}
public void setId(Integer id) {
- this.id = id;
+ Id = id;
}
- public String getVehicleName() {
- return vehicleName;
+ public String getName() {
+ return Name;
}
- public void setVehicleName(String vehicleName) {
- this.vehicleName = vehicleName;
+ public void setName(String name) {
+ Name = name;
}
public String getVehicleSpreed() {
@@ -207,8 +207,8 @@ public class Vehicle implements Serializable {
@Override
public String toString() {
return "Vehicle{" +
- "id=" + id +
- ", vehicleName='" + vehicleName + '\'' +
+ "id=" + Id +
+ ", vehicleName='" + Name + '\'' +
", vehicleSpreed='" + vehicleSpreed + '\'' +
", vehicleType='" + vehicleType + '\'' +
", fuelAbility=" + fuelAbility +
diff --git a/src/main/resources/mapper/tbl/ImgVehicleImageMapper.xml b/src/main/resources/mapper/tbl/ImgVehicleImageMapper.xml
new file mode 100644
index 0000000..10911a3
--- /dev/null
+++ b/src/main/resources/mapper/tbl/ImgVehicleImageMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+