diff --git a/business-css/pom.xml b/business-css/pom.xml
index 37db454..8763eea 100644
--- a/business-css/pom.xml
+++ b/business-css/pom.xml
@@ -23,7 +23,7 @@
UTF-8
-
+
org.springframework.boot
@@ -66,6 +66,18 @@
plain
+
+
+ org.apache.poi
+ poi
+ 4.1.2
+
+
+ org.apache.poi
+ poi-ooxml
+ 4.1.2
+
+
diff --git a/business-css/src/main/java/com/yfd/business/css/controller/CriticalDataController.java b/business-css/src/main/java/com/yfd/business/css/controller/CriticalDataController.java
index d5e1700..d3c39c4 100644
--- a/business-css/src/main/java/com/yfd/business/css/controller/CriticalDataController.java
+++ b/business-css/src/main/java/com/yfd/business/css/controller/CriticalDataController.java
@@ -18,6 +18,10 @@ public class CriticalDataController {
/**
* 1. 新增临界数据
+ * 输入参数:请求体中的临界数据对象
+ * 输出参数:布尔值,表示是否新增成功
+ * @param data 临界数据对象
+ * @return 是否新增成功
*/
@PostMapping
public boolean create(@RequestBody CriticalData data) {
@@ -26,6 +30,10 @@ public class CriticalDataController {
/**
* 2. 修改临界数据
+ * 输入参数:请求体中的临界数据对象(需包含主键)
+ * 输出参数:布尔值,表示是否修改成功
+ * @param data 临界数据对象
+ * @return 是否修改成功
*/
@PutMapping
public boolean update(@RequestBody CriticalData data) {
@@ -34,6 +42,10 @@ public class CriticalDataController {
/**
* 3.1 删除临界数据(单条)
+ * 输入参数:路径参数临界数据ID
+ * 输出参数:布尔值,表示是否删除成功
+ * @param id 临界数据ID
+ * @return 是否删除成功
*/
@DeleteMapping("/{id}")
public boolean delete(@PathVariable String id) {
@@ -42,6 +54,10 @@ public class CriticalDataController {
/**
* 3.2 删除临界数据(多条)
+ * 输入参数:请求体中的临界数据ID列表
+ * 输出参数:布尔值,表示是否删除成功
+ * @param ids 临界数据ID列表
+ * @return 是否删除成功
*/
@DeleteMapping
public boolean deleteBatch(@RequestBody List ids) {
@@ -49,23 +65,27 @@ public class CriticalDataController {
}
/**
- * 4. 导入临界数据
+ * 4. 导入临界数据(Excel/CSV)
+ * 输入参数:表单文件字段 file
+ * 模板表头:device_type, diameter, height, fissile_concentration, isotopic_abundance, keff_value, extra_features
+ * 采集规则:仅采集上述字段,表头中多余字段不予采集;extra_features 校验为合法 JSON,非法或占位符将置为 null
+ * 输出参数:布尔值,表示是否导入成功
+ * @param file Excel/CSV 文件
+ * @return 是否导入成功
*/
@PostMapping("/import")
public boolean importCriticalData(@RequestParam("file") MultipartFile file) {
return criticalDataService.importCriticalData(file);
}
- /**
- * 5. 获取设备类型列表(去重)
- */
- @GetMapping("/device-types")
- public List listDeviceTypes() {
- return criticalDataService.listDeviceTypes();
- }
+
/**
* 6. 根据设备类型获取临界数据列表
+ * 输入参数:查询参数 deviceType(设备类型)
+ * 输出参数:临界数据列表(按创建时间倒序)
+ * @param deviceType 设备类型
+ * @return 临界数据列表
*/
@GetMapping("/by-device-type")
public List listByDeviceType(@RequestParam String deviceType) {
diff --git a/business-css/src/main/java/com/yfd/business/css/controller/DeviceController.java b/business-css/src/main/java/com/yfd/business/css/controller/DeviceController.java
index 7c83348..5c28783 100644
--- a/business-css/src/main/java/com/yfd/business/css/controller/DeviceController.java
+++ b/business-css/src/main/java/com/yfd/business/css/controller/DeviceController.java
@@ -18,6 +18,10 @@ public class DeviceController {
/**
* 1. 新增设备
+ * 输入参数:请求体中的设备对象
+ * 输出参数:布尔值,表示是否新增成功
+ * @param device 设备对象
+ * @return 是否新增成功
*/
@PostMapping
public boolean create(@RequestBody Device device) {
@@ -26,6 +30,10 @@ public class DeviceController {
/**
* 2. 编辑设备
+ * 输入参数:请求体中的设备对象(需包含主键)
+ * 输出参数:布尔值,表示是否修改成功
+ * @param device 设备对象
+ * @return 是否修改成功
*/
@PutMapping
public boolean update(@RequestBody Device device) {
@@ -34,6 +42,10 @@ public class DeviceController {
/**
* 3.1 删除设备(单条)
+ * 输入参数:路径参数设备ID
+ * 输出参数:布尔值,表示是否删除成功
+ * @param id 设备ID
+ * @return 是否删除成功
*/
@DeleteMapping("/{id}")
public boolean delete(@PathVariable String id) {
@@ -42,6 +54,10 @@ public class DeviceController {
/**
* 3.2 删除设备(多条)
+ * 输入参数:请求体中的设备ID列表
+ * 输出参数:布尔值,表示是否删除成功
+ * @param ids 设备ID列表
+ * @return 是否删除成功
*/
@DeleteMapping
public boolean deleteBatch(@RequestBody List ids) {
@@ -49,24 +65,43 @@ public class DeviceController {
}
/**
- * 4. 导入设备
- * (Excel / CSV,具体解析逻辑在 Service)
+ * 4. 导入设备(Excel/CSV)
+ * 输入参数:表单文件字段 file
+ * 模板表头:type, code, name, size, volume, flow_rate, pulse_velocity
+ * 采集规则:仅采集上述字段,表头中多余字段不予采集;size 校验为合法 JSON,非法或占位符将置为 null;导入记录的 project_id 统一写入 -1
+ * 输出参数:布尔值,表示是否导入成功
+ * @param file Excel/CSV 文件
+ * @return 是否导入成功
*/
@PostMapping("/import")
public boolean importDevices(@RequestParam("file") MultipartFile file) {
return deviceService.importDevices(file);
}
+
/**
- * 5. 获取设备类型列表(去重)
+ * 5. 根据项目ID获取设备列表
+ * 输入参数:查询参数 projectId(项目ID)
+ * 输出参数:设备列表(按创建时间倒序)
+ * @param projectId 项目ID
+ * @return 设备列表
*/
- @GetMapping("/types")
- public List listDeviceTypes() {
- return deviceService.listDeviceTypes();
+ @GetMapping("/by-project")
+ public List listByProject(@RequestParam String projectId) {
+ return deviceService.list(
+ new QueryWrapper()
+ .eq("project_id", projectId)
+ .orderByDesc("created_at")
+ );
}
+
/**
* 6. 根据设备类型获取设备列表
+ * 输入参数:查询参数 type(设备类型)
+ * 输出参数:设备列表(按创建时间倒序)
+ * @param type 设备类型
+ * @return 设备列表
*/
@GetMapping("/by-type")
public List listByType(@RequestParam String type) {
@@ -79,6 +114,11 @@ public class DeviceController {
/**
* 7. 设备查询(类型 + 名称)
+ * 输入参数:查询参数 type(可选),name(可选)
+ * 输出参数:设备列表(按创建时间倒序)
+ * @param type 设备类型(可选)
+ * @param name 设备名称关键词(可选)
+ * @return 设备列表
*/
@GetMapping("/search")
public List search(@RequestParam(required = false) String type,
diff --git a/business-css/src/main/java/com/yfd/business/css/controller/EventController.java b/business-css/src/main/java/com/yfd/business/css/controller/EventController.java
index f6d9fb3..8b6e990 100644
--- a/business-css/src/main/java/com/yfd/business/css/controller/EventController.java
+++ b/business-css/src/main/java/com/yfd/business/css/controller/EventController.java
@@ -5,7 +5,9 @@ import com.yfd.business.css.service.EventService;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import java.util.Map;
+import java.util.List;
@RestController
@RequestMapping("/events")
@@ -57,4 +59,43 @@ public class EventController {
"data", updatedEvent
));
}
+
+ /**
+ * 根据情景ID获取始发事件列表
+ * 输入参数:查询参数 scenarioId(情景ID)
+ * 输出参数:事件列表(按创建时间倒序)
+ * @param scenarioId 情景ID
+ * @return 始发事件列表
+ */
+ @GetMapping("/by-scenario")
+ public List listByScenario(@RequestParam String scenarioId) {
+ return eventService.list(
+ new QueryWrapper()
+ .eq("scenario_id", scenarioId)
+ .orderByDesc("created_at")
+ );
+ }
+
+ /**
+ * 删除始发事件
+ * 输入参数:路径参数 eventId(事件ID)
+ * 输出参数:标准响应结构,表示删除结果
+ * @param eventId 事件ID
+ * @return 删除结果
+ */
+ @DeleteMapping("/{eventId}")
+ public ResponseEntity