diff --git a/src/main/java/a8k/config/SpringDocConfig.java b/src/main/java/a8k/config/SpringDocConfig.java index 3fedf9d..84e7a19 100644 --- a/src/main/java/a8k/config/SpringDocConfig.java +++ b/src/main/java/a8k/config/SpringDocConfig.java @@ -17,10 +17,69 @@ public class SpringDocConfig { @Bean - public GroupedOpenApi publicApi() { + public GroupedOpenApi basicApi() { return GroupedOpenApi.builder() - .group("A8k前端接口") - .pathsToMatch("/api/v1/app/**") + .group("v1.app.basic") + .packagesToScan("a8k.controler.api.v1.app.basic") .build(); } + + @Bean + public GroupedOpenApi ctrlApi() { + return GroupedOpenApi.builder() + .group("v1.app.ctrl") + .packagesToScan("a8k.controler.api.v1.app.ctrl") + .build(); + } + + @Bean + public GroupedOpenApi dataApi() { + return GroupedOpenApi.builder() + .group("v1.app.data") + .packagesToScan("a8k.controler.api.v1.app.data") + .build(); + } + + @Bean + public GroupedOpenApi settingApi() { + return GroupedOpenApi.builder() + .group("v1.app.setting") + .packagesToScan("a8k.controler.api.v1.app.setting") + .build(); + } + + @Bean + public GroupedOpenApi stateApi() { + return GroupedOpenApi.builder() + .group("v1.app.state") + .packagesToScan("a8k.controler.api.v1.app.state") + .build(); + } + + @Bean + public GroupedOpenApi allApi() { + return GroupedOpenApi.builder() + .group("v1.app.all") + .packagesToScan("a8k.controler.api.v1.app") + .build(); + } + + // @Bean + // public GroupedOpenApi testApi() { + // return GroupedOpenApi.builder() + // .group("v1.app.test") + // .packagesToScan("a8k.controler.api.v1.app.test") + // .build(); + // } + + // assistant + + @Bean + public GroupedOpenApi assistantApi() { + return GroupedOpenApi.builder() + .group("v1.app.assistant") + .packagesToScan("a8k.controler.api.v1.app.assistant") + .build(); + } + } \ No newline at end of file diff --git a/src/main/java/a8k/controler/api_v1/ApiV1ControllerAdvice.java b/src/main/java/a8k/controler/api/v1/ApiV1ControllerAdvice.java similarity index 95% rename from src/main/java/a8k/controler/api_v1/ApiV1ControllerAdvice.java rename to src/main/java/a8k/controler/api/v1/ApiV1ControllerAdvice.java index 4be47b1..17aef5b 100644 --- a/src/main/java/a8k/controler/api_v1/ApiV1ControllerAdvice.java +++ b/src/main/java/a8k/controler/api/v1/ApiV1ControllerAdvice.java @@ -1,4 +1,4 @@ -package a8k.controler.api_v1; +package a8k.controler.api.v1; import a8k.type.appret.ApiV1Ret; import a8k.type.ecode.AppError; diff --git a/src/main/java/a8k/controler/api_v1/app/ApiRetTestControler.java b/src/main/java/a8k/controler/api/v1/app/assistant/ApiRetTestControler.java similarity index 96% rename from src/main/java/a8k/controler/api_v1/app/ApiRetTestControler.java rename to src/main/java/a8k/controler/api/v1/app/assistant/ApiRetTestControler.java index 0d410a3..4115464 100644 --- a/src/main/java/a8k/controler/api_v1/app/ApiRetTestControler.java +++ b/src/main/java/a8k/controler/api/v1/app/assistant/ApiRetTestControler.java @@ -1,4 +1,4 @@ -package a8k.controler.api_v1.app; +package a8k.controler.api.v1.app.assistant; import a8k.hardware.type.a8kcanprotocol.A8kEcode; import a8k.hardware.type.a8kcanprotocol.CmdId; @@ -17,7 +17,7 @@ import org.springframework.web.bind.annotation.ResponseBody; @Tag(name = "通用返回值结构示例", description = "") @Slf4j @Controller -@RequestMapping(value = "api/v1/app/assistant") +@RequestMapping(value = "api/v1/app/apiRetTest") @ResponseBody public class ApiRetTestControler { diff --git a/src/main/java/a8k/controler/api_v1/app/AppEventBusControler.java b/src/main/java/a8k/controler/api/v1/app/basic/AppEventBusControler.java similarity index 89% rename from src/main/java/a8k/controler/api_v1/app/AppEventBusControler.java rename to src/main/java/a8k/controler/api/v1/app/basic/AppEventBusControler.java index 28f0522..0d288c3 100644 --- a/src/main/java/a8k/controler/api_v1/app/AppEventBusControler.java +++ b/src/main/java/a8k/controler/api/v1/app/basic/AppEventBusControler.java @@ -1,4 +1,4 @@ -package a8k.controler.api_v1.app; +package a8k.controler.api.v1.app.basic; import a8k.service.bases.FrontEndEventRouter; import a8k.service.bases.appevent.AppEvent; @@ -24,13 +24,13 @@ public class AppEventBusControler { FrontEndEventRouter frontEndEventRouter; - @Operation(summary = "获取系统设置") + @Operation(summary = "获取一个事件") @PostMapping("/pollAppEvent") public ApiV1Ret pollAppEvent() { return ApiV1Ret.success(frontEndEventRouter.pollAppEvent()); } - @Operation(summary = "获取系统设置") + @Operation(summary = "获取全部事件") @PostMapping("/pollAllAppEvents") public ApiV1Ret> pollAllAppEvents() { return ApiV1Ret.success(frontEndEventRouter.pollAllAppEvents()); diff --git a/src/main/java/a8k/controler/api/v1/app/ctrl/ConsumableScanControler.java b/src/main/java/a8k/controler/api/v1/app/ctrl/ConsumableScanControler.java new file mode 100644 index 0000000..afd0709 --- /dev/null +++ b/src/main/java/a8k/controler/api/v1/app/ctrl/ConsumableScanControler.java @@ -0,0 +1,48 @@ +package a8k.controler.api.v1.app.ctrl; + +import a8k.service.app.appctrl.AppConsumablesScanService; +import a8k.service.app.appstate.ConsumablesMgrService; +import a8k.type.ConsumableGroup; +import a8k.type.ConsumablesOneChannelScanResultPacket; +import a8k.type.ConsumablesScanResultPacket; +import a8k.type.appret.ApiV1Ret; +import a8k.type.exception.AppException; +import a8k.type.type.TipGroup; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.annotation.Resource; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +@Tag(name = "耗材扫描", description = "") +@Slf4j +@Controller +@RequestMapping(value = "/api/v1/app/consumableScan/") +@ResponseBody +public class ConsumableScanControler { + @Resource + AppConsumablesScanService appConsumablesScanService; //耗材扫描模块 + @Resource + ConsumablesMgrService consumablesMgrService; //耗材管理模块 + + /*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + * 耗材扫描 + +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/ + @Operation(summary = "扫描耗材(阻塞接口,耗时大概30多秒)") + @PostMapping("/scanConsumables") + public ApiV1Ret scanConsumables() throws AppException { + log.info("扫描耗材"); + return ApiV1Ret.success(appConsumablesScanService.scanConsumables()); + } + + @Operation(summary = "扫描某一组耗材(阻塞接口,耗时大概5秒)") + @PostMapping("/scanOneGroupConsumables") + public ApiV1Ret scanOneGroupConsumables(ConsumableGroup group) throws AppException { + log.info("扫描某一组耗材"); + return ApiV1Ret.success(appConsumablesScanService.scanOneGroupConsumables(group)); + } + +} diff --git a/src/main/java/a8k/controler/api_v1/app/DeviceCtrlControler.java b/src/main/java/a8k/controler/api/v1/app/ctrl/DeviceCtrlControler.java similarity index 88% rename from src/main/java/a8k/controler/api_v1/app/DeviceCtrlControler.java rename to src/main/java/a8k/controler/api/v1/app/ctrl/DeviceCtrlControler.java index 5c00e8a..d60a276 100644 --- a/src/main/java/a8k/controler/api_v1/app/DeviceCtrlControler.java +++ b/src/main/java/a8k/controler/api/v1/app/ctrl/DeviceCtrlControler.java @@ -1,12 +1,7 @@ -package a8k.controler.api_v1.app; +package a8k.controler.api.v1.app.ctrl; import a8k.service.app.appctrl.AppDeviceCtrlService; -import a8k.service.app.appstate.GStateService; -import a8k.service.app.appstate.SensorState; -import a8k.service.app.appstate.type.*; import a8k.type.appret.ApiV1Ret; -import a8k.type.appret.AppRetV1; -import a8k.type.consumables.ConsumableState; import a8k.type.exception.AppException; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; diff --git a/src/main/java/a8k/controler/api/v1/app/ctrl/DeviceInit.java b/src/main/java/a8k/controler/api/v1/app/ctrl/DeviceInit.java new file mode 100644 index 0000000..3e6ad04 --- /dev/null +++ b/src/main/java/a8k/controler/api/v1/app/ctrl/DeviceInit.java @@ -0,0 +1,41 @@ +package a8k.controler.api.v1.app.ctrl; + +import a8k.service.app.appctrl.AppDeviceCtrlService; +import a8k.type.appret.ApiV1Ret; +import a8k.type.checkpoint.CheckResult; +import a8k.type.exception.AppException; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.annotation.Resource; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import java.util.List; + +@Tag(name = "设备初始化", description = "") +@Slf4j +@Controller +@RequestMapping(value = "/api/v1/app/deviceInit/") +@ResponseBody +public class DeviceInit { + + @Resource + AppDeviceCtrlService appDeviceCtrlService; + + @Operation(description = "初始化设备") + @PostMapping("/initDevice") + public ApiV1Ret> initDevice() throws AppException { + return ApiV1Ret.success(appDeviceCtrlService.initDevice()); + } + + @Operation(description = "初始化设备前检查") + @PostMapping("/check") + public ApiV1Ret> check() throws AppException { + return ApiV1Ret.success(appDeviceCtrlService.checkBeforeInitDevice()); + } + + +} diff --git a/src/main/java/a8k/controler/api_v1/app/OsCtrlControler.java b/src/main/java/a8k/controler/api/v1/app/ctrl/OsCtrlControler.java similarity index 94% rename from src/main/java/a8k/controler/api_v1/app/OsCtrlControler.java rename to src/main/java/a8k/controler/api/v1/app/ctrl/OsCtrlControler.java index 091bde3..de28d5e 100644 --- a/src/main/java/a8k/controler/api_v1/app/OsCtrlControler.java +++ b/src/main/java/a8k/controler/api/v1/app/ctrl/OsCtrlControler.java @@ -1,10 +1,8 @@ -package a8k.controler.api_v1.app; +package a8k.controler.api.v1.app.ctrl; import a8k.OS; -import a8k.service.app.appctrl.AppDeviceCtrlService; import a8k.service.app.appstate.GStateService; import a8k.type.appret.ApiV1Ret; -import a8k.type.exception.AppException; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.annotation.Resource; diff --git a/src/main/java/a8k/controler/api_v1/app/A8kProjectCardControler.java b/src/main/java/a8k/controler/api/v1/app/data/A8kProjectCardControler.java similarity index 88% rename from src/main/java/a8k/controler/api_v1/app/A8kProjectCardControler.java rename to src/main/java/a8k/controler/api/v1/app/data/A8kProjectCardControler.java index 1f6710f..e2d9440 100644 --- a/src/main/java/a8k/controler/api_v1/app/A8kProjectCardControler.java +++ b/src/main/java/a8k/controler/api/v1/app/data/A8kProjectCardControler.java @@ -1,4 +1,4 @@ -package a8k.controler.api_v1.app; +package a8k.controler.api.v1.app.data; import a8k.service.app.appdata.ProjIdCardInfoMgrService; import a8k.service.app.appstate.GStateService; @@ -15,7 +15,7 @@ import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; -@Tag(name = "反应记录", description = "") +@Tag(name = "A8k项目信息卡", description = "") @Slf4j @Controller @RequestMapping(value = "/api/v1/app/a8kProjectCardControler/") @@ -41,21 +41,21 @@ public class A8kProjectCardControler { return ApiV1Ret.success(); } - @Operation(summary = "删除A8k项目信息卡") + @Operation(summary = "删除A8k项目信息") @PostMapping("/delete") public ApiV1Ret delete(Integer id) { projIdCardInfoMgrService.delete(id); return ApiV1Ret.success(); } - @Operation(summary = "删除所有A8k项目信息卡") + @Operation(summary = "删除所有A8k项目信息") @PostMapping("/deleteAll") public ApiV1Ret deleteAll() { projIdCardInfoMgrService.deleteAll(); return ApiV1Ret.success(); } - @Operation(summary = "获取A8k项目信息卡") + @Operation(summary = "获取A8k项目信息(Page)") @PostMapping("/get") public ApiV1Ret> get(Integer pageNum, Integer pageSize) { return ApiV1Ret.success(projIdCardInfoMgrService.get(pageNum, pageSize)); diff --git a/src/main/java/a8k/controler/api_v1/app/ReactionResultControler.java b/src/main/java/a8k/controler/api/v1/app/data/ReactionResultControler.java similarity index 97% rename from src/main/java/a8k/controler/api_v1/app/ReactionResultControler.java rename to src/main/java/a8k/controler/api/v1/app/data/ReactionResultControler.java index 9c210b5..a606ac3 100644 --- a/src/main/java/a8k/controler/api_v1/app/ReactionResultControler.java +++ b/src/main/java/a8k/controler/api/v1/app/data/ReactionResultControler.java @@ -1,4 +1,4 @@ -package a8k.controler.api_v1.app; +package a8k.controler.api.v1.app.data; import a8k.service.app.appdata.ReactionRecordMgrService; import a8k.service.app.appstate.GStateService; diff --git a/src/main/java/a8k/controler/api_v1/app/UsrControler.java b/src/main/java/a8k/controler/api/v1/app/data/UsrControler.java similarity index 97% rename from src/main/java/a8k/controler/api_v1/app/UsrControler.java rename to src/main/java/a8k/controler/api/v1/app/data/UsrControler.java index 452ae93..cb9ce88 100644 --- a/src/main/java/a8k/controler/api_v1/app/UsrControler.java +++ b/src/main/java/a8k/controler/api/v1/app/data/UsrControler.java @@ -1,4 +1,4 @@ -package a8k.controler.api_v1.app; +package a8k.controler.api.v1.app.data; import a8k.service.app.appdata.AppUserMgrService; import a8k.service.dao.type.AppUser; @@ -14,7 +14,7 @@ import org.springframework.web.bind.annotation.*; import java.util.List; -@Tag(name = "用户操作", description = "") +@Tag(name = "用户", description = "") @Slf4j @Controller @RequestMapping(value = "/api/v1/app/Usr/") diff --git a/src/main/java/a8k/controler/api_v1/app/AppSettingControler.java b/src/main/java/a8k/controler/api/v1/app/setting/AppSettingControler.java similarity index 98% rename from src/main/java/a8k/controler/api_v1/app/AppSettingControler.java rename to src/main/java/a8k/controler/api/v1/app/setting/AppSettingControler.java index 1f4e49f..2a5eed3 100644 --- a/src/main/java/a8k/controler/api_v1/app/AppSettingControler.java +++ b/src/main/java/a8k/controler/api/v1/app/setting/AppSettingControler.java @@ -1,4 +1,4 @@ -package a8k.controler.api_v1.app; +package a8k.controler.api.v1.app.setting; import a8k.service.app.appsetting.AppSettingsMgrService; import a8k.service.dao.type.AppSetting; diff --git a/src/main/java/a8k/controler/api_v1/app/AppTubeSettingMgrControler.java b/src/main/java/a8k/controler/api/v1/app/state/AppTubeSettingMgrControler.java similarity index 97% rename from src/main/java/a8k/controler/api_v1/app/AppTubeSettingMgrControler.java rename to src/main/java/a8k/controler/api/v1/app/state/AppTubeSettingMgrControler.java index 479df88..265a1f4 100644 --- a/src/main/java/a8k/controler/api_v1/app/AppTubeSettingMgrControler.java +++ b/src/main/java/a8k/controler/api/v1/app/state/AppTubeSettingMgrControler.java @@ -1,11 +1,10 @@ -package a8k.controler.api_v1.app; +package a8k.controler.api.v1.app.state; import a8k.service.app.appctrl.AppTubeSettingMgrService; import a8k.service.app.appstate.GStateService; import a8k.type.appret.ApiV1Ret; import a8k.type.exception.AppException; import a8k.type.tube_setting.TubeHolderSetting; -import a8k.type.type.A8kTubeHolderType; import a8k.type.type.BloodType; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; diff --git a/src/main/java/a8k/controler/api_v1/app/ConsumablesMgrControler.java b/src/main/java/a8k/controler/api/v1/app/state/ConsumablesMgrControler.java similarity index 64% rename from src/main/java/a8k/controler/api_v1/app/ConsumablesMgrControler.java rename to src/main/java/a8k/controler/api/v1/app/state/ConsumablesMgrControler.java index 6b74701..a012a92 100644 --- a/src/main/java/a8k/controler/api_v1/app/ConsumablesMgrControler.java +++ b/src/main/java/a8k/controler/api/v1/app/state/ConsumablesMgrControler.java @@ -1,11 +1,13 @@ -package a8k.controler.api_v1.app; +package a8k.controler.api.v1.app.state; import a8k.service.app.appctrl.AppConsumablesScanService; import a8k.service.app.appstate.ConsumablesMgrService; +import a8k.service.app.appstate.GStateService; import a8k.type.ConsumableGroup; import a8k.type.ConsumablesScanResultPacket; import a8k.type.ConsumablesOneChannelScanResultPacket; import a8k.type.appret.ApiV1Ret; +import a8k.type.consumables.ConsumableState; import a8k.type.exception.AppException; import a8k.type.type.TipGroup; import io.swagger.v3.oas.annotations.Operation; @@ -17,34 +19,18 @@ import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; -@Tag(name = "耗材管理", description = "") +@Tag(name = "耗材设置", description = "") @Slf4j @Controller -@RequestMapping(value = "/api/v1/app/consumablesMgrControler/") +@RequestMapping(value = "/api/v1/app/consumablesMgr/") @ResponseBody public class ConsumablesMgrControler { @Resource AppConsumablesScanService appConsumablesScanService; //耗材扫描模块 @Resource ConsumablesMgrService consumablesMgrService; //耗材管理模块 - - /*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - * 耗材扫描 - +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/ - @Operation(summary = "扫描耗材(阻塞接口,耗时大概30多秒)") - @PostMapping("/scanConsumables") - public ApiV1Ret scanConsumables() throws AppException { - log.info("扫描耗材"); - return ApiV1Ret.success(appConsumablesScanService.scanConsumables()); - } - - @Operation(summary = "扫描某一组耗材(阻塞接口,耗时大概5秒)") - @PostMapping("/scanOneGroupConsumables") - public ApiV1Ret scanOneGroupConsumables(ConsumableGroup group) throws AppException { - log.info("扫描某一组耗材"); - return ApiV1Ret.success(appConsumablesScanService.scanOneGroupConsumables(group)); - } - + @Resource + GStateService gstate; /** * 设置Tip数量 @@ -69,4 +55,10 @@ public class ConsumablesMgrControler { consumablesMgrService.setCounsumableNum(group, num); return ApiV1Ret.success(); } + + @Operation(summary = "获取<耗材>状态") + @PostMapping("/getConsumablesState") + public ApiV1Ret getConsumablesState() { + return ApiV1Ret.success(gstate.getConsumableState()); + } } diff --git a/src/main/java/a8k/controler/api_v1/app/DeviceStateControler.java b/src/main/java/a8k/controler/api/v1/app/state/DeviceStateControler.java similarity index 90% rename from src/main/java/a8k/controler/api_v1/app/DeviceStateControler.java rename to src/main/java/a8k/controler/api/v1/app/state/DeviceStateControler.java index 201b0aa..3e28ea8 100644 --- a/src/main/java/a8k/controler/api_v1/app/DeviceStateControler.java +++ b/src/main/java/a8k/controler/api/v1/app/state/DeviceStateControler.java @@ -1,4 +1,4 @@ -package a8k.controler.api_v1.app; +package a8k.controler.api.v1.app.state; import a8k.service.app.appstate.GStateService; import a8k.service.app.appstate.SensorState; @@ -57,11 +57,7 @@ public class DeviceStateControler { return ApiV1Ret.success(gstate.getEmergencyTubePos()); } - @Operation(summary = "获取<耗材>状态") - @PostMapping("/getConsumablesState") - public ApiV1Ret getConsumablesState() { - return ApiV1Ret.success(gstate.getConsumableState()); - } + @Operation(summary = "获取<传感器>状态") @PostMapping("/getSensorState") diff --git a/src/main/java/a8k/controler/api/v1/type/EmergencyTubeSetting.java b/src/main/java/a8k/controler/api/v1/type/EmergencyTubeSetting.java new file mode 100644 index 0000000..f898772 --- /dev/null +++ b/src/main/java/a8k/controler/api/v1/type/EmergencyTubeSetting.java @@ -0,0 +1,19 @@ +package a8k.controler.api.v1.type; + +import a8k.type.type.BloodType; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.List; + +@Data +public class EmergencyTubeSetting { + @Schema(description = "usrid") + String userid; + @Schema(description = "sampleBarcode") + String sampleBarcode; + @Schema(description = "血液类型") + BloodType bloodType; + @Schema(description = "待做项目id") + List projIds; +} diff --git a/src/main/java/a8k/extapi_controler/pagecontrol/ExtApiTabConfig.java b/src/main/java/a8k/extapi_controler/pagecontrol/ExtApiTabConfig.java index 1632486..be8809c 100644 --- a/src/main/java/a8k/extapi_controler/pagecontrol/ExtApiTabConfig.java +++ b/src/main/java/a8k/extapi_controler/pagecontrol/ExtApiTabConfig.java @@ -1,21 +1,12 @@ package a8k.extapi_controler.pagecontrol; public enum ExtApiTabConfig { - AppDebugHelperService("调试助手", true), - FrontEndEventRouter("基础组件.前端事件路由", true), - - AppDeviceCtrlService("应用控制.应用控制", true), - BackgroudProcessCtrlService("应用控制.后台线程控制", true), - - AppTubeSettingMgrService("应用控制.试管(样本)配置", true),//OK - EmergencySamplePosStateMgrService("应用控制.急诊位状态管理", true),//OK - - AppSettingsMgr("应用数据.设备配置管理", true), //OK - ProjIdCardInfoMgrService("应用数据.项目与ID卡管理", true), //OK - AppReactionResultMgrService("应用数据.反应结果管理", true), //OK + VirtualDeviceSimulationTest("测试.虚拟设备测试", true), + MainflowCtrlTestService("测试.主流程控制测试", true), - LowerDeviceParamMgr("底层参数管理", true),//OK + BackgroudProcessCtrlService("测试模式.后台线程控制", true), + LowerDeviceParamMgr("校准.参数管理", true),//OK MiniServoReferencePointSetting("校准.舵机参考点设置", true), ReactionPlatesTransmitControlerCalibration("校准.反应板相关位置校准", true), TubeFeedingModulePosCalibration("校准.试管入料校准", true), @@ -31,13 +22,11 @@ public enum ExtApiTabConfig { OptModuleParamCalibration("校准.光学模块参数校准", true), TemperatureCtrlParamCalibration("校准.温度控制参数校准", true), - VirtualDeviceSimulationTest("测试.虚拟设备测试", true), - MainflowCtrlTestService("测试.主流程控制测试", true), - A8kPipetteCtrlModule("硬件驱动测试.移液枪测试", true), - StepMotorCtrlDriver("硬件驱动测试.步进电机测试", true), + + A8kPipetteCtrlModule("硬件驱动.移液枪测试", false), + StepMotorCtrlDriver("硬件驱动.步进电机测试", false), ActionReactorService("底层调试.单步调试", false),//OK - ReactionPlatesTransmitCtrl("ReactionPlatesTransmitCtrl", false), HbotControlService("HbotControlService", false), TubeTubeFeedingModule("硬件控制.入料模块", false), diff --git a/src/main/java/a8k/service/app/appdata/EmergencyTubeControler.java b/src/main/java/a8k/service/app/appdata/EmergencyTubeControler.java new file mode 100644 index 0000000..b3f0136 --- /dev/null +++ b/src/main/java/a8k/service/app/appdata/EmergencyTubeControler.java @@ -0,0 +1,42 @@ +package a8k.service.app.appdata; + + +import a8k.controler.api.v1.type.EmergencyTubeSetting; +import a8k.service.app.appstate.EmergencySamplePosStateMgrService; +import a8k.service.app.appstate.GStateService; +import a8k.type.appret.ApiV1Ret; +import a8k.type.exception.AppException; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.annotation.Resource; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +@Tag(name = "急诊试管", description = "") +@Slf4j +@Controller +@RequestMapping(value = "/api/v1/app/emergencyTube/") +@ResponseBody +public class EmergencyTubeControler { + @Resource + GStateService gstate; + + @Resource + EmergencySamplePosStateMgrService emergencySamplePosStateMgrService; + + @Operation(summary = "提交紧急样本设置") + @PostMapping("/addNew") + public ApiV1Ret addNew(EmergencyTubeSetting setting) throws AppException { + emergencySamplePosStateMgrService.commitEmergencySampleSetting( + setting.getUserid(), + setting.getSampleBarcode(), + setting.getBloodType(), + setting.getProjIds() + ); + return ApiV1Ret.success(); + } + +} diff --git a/src/main/java/a8k/service/app/appdata/ProjIdCardInfoMgrService.java b/src/main/java/a8k/service/app/appdata/ProjIdCardInfoMgrService.java index bf06f7e..6970274 100644 --- a/src/main/java/a8k/service/app/appdata/ProjIdCardInfoMgrService.java +++ b/src/main/java/a8k/service/app/appdata/ProjIdCardInfoMgrService.java @@ -18,7 +18,6 @@ import java.util.ArrayList; import java.util.List; @Component -@ExtApiTab(cfg = ExtApiTabConfig.ProjIdCardInfoMgrService) public class ProjIdCardInfoMgrService { @Resource GStateService gstate; diff --git a/src/main/java/a8k/service/app/appstate/EmergencySamplePosStateMgrService.java b/src/main/java/a8k/service/app/appstate/EmergencySamplePosStateMgrService.java index 773aa1d..826fd2d 100644 --- a/src/main/java/a8k/service/app/appstate/EmergencySamplePosStateMgrService.java +++ b/src/main/java/a8k/service/app/appstate/EmergencySamplePosStateMgrService.java @@ -21,7 +21,6 @@ import org.springframework.stereotype.Component; import java.util.ArrayList; import java.util.List; -@ExtApiTab(cfg = ExtApiTabConfig.EmergencySamplePosStateMgrService) @Component public class EmergencySamplePosStateMgrService { static Logger logger = org.slf4j.LoggerFactory.getLogger(EmergencySamplePosStateMgrService.class); @@ -44,33 +43,23 @@ public class EmergencySamplePosStateMgrService { * * 提交后就默认样本已经放置好了,所以需要前台提醒用户需要先暂停设备,放好样本 */ - @ExtApiFn(name = "提交紧急样本设置", group = "紧急样本设置") public void commitEmergencySampleSetting(String userid, String sampleBarcode, BloodType bloodType,// - @EnginnerPageActionParam(name = "逗号分割项目列表(例子1,2,3)") String projIndexList) throws AppException { + List projIds) throws AppException { EmergencyTubePos emergencyTubePos = gstate.getEmergencyTubePos(); Tube tube = emergencyTubePos.tube; - List projIndex = new ArrayList<>(); List projInfo = new ArrayList<>(); if (gstate.getDeviceWorkState().workState.equals(A8kWorkState.WORKING)) { throw new AppException(A8kEcode.APPE_ACTION_IS_NOT_ALLOWED_WHEN_WORKING); } - if(projIndexList == null || projIndexList.isEmpty()) { + if (projIds.isEmpty()) { throw new AppException(A8kEcode.APPE_PROJ_INDEX_IS_EMPTY); } - for (String index : projIndexList.split(",")) { - projIndex.add(Integer.parseInt(index)); - } - - - if (projIndex.isEmpty()) { - throw new AppException(A8kEcode.APPE_PROJ_INDEX_IS_EMPTY); - } - projInfo = projCfgMgrService.getProjBriefInfo(projIndex); - if (projInfo == null || projInfo.size() != projIndex.size()) { + projInfo = projCfgMgrService.getProjBriefInfo(projIds); + if (projInfo == null || projInfo.size() != projIds.size()) { throw new AppException(A8kEcode.APPE_CAN_NOT_FIND_PROJ_INFO); } @@ -93,7 +82,6 @@ public class EmergencySamplePosStateMgrService { } } - @ExtApiFn(name = "获取急诊样本位状态", group = "急诊样本位状态") public EmergencyTubePos getEmergencyPosRunState() { return gstate.getEmergencyTubePos(); } diff --git a/src/main/java/a8k/service/app/appstate/SensorState.java b/src/main/java/a8k/service/app/appstate/SensorState.java index 7d14a77..72e7de3 100644 --- a/src/main/java/a8k/service/app/appstate/SensorState.java +++ b/src/main/java/a8k/service/app/appstate/SensorState.java @@ -11,6 +11,8 @@ public class SensorState { Integer incubateBoxTemperature = 25; @Schema(description = "废液桶满标志") Boolean wasteBinFullFlag = false; + @Schema(description = "A8K项目卡状态") + Boolean A8kProjCardState = false; public synchronized Integer getPboxTemperature() { return pboxTemperature; diff --git a/src/main/java/a8k/service/app/devicectrl/ctrlservice/OptScanModuleCtrlService.java b/src/main/java/a8k/service/app/devicectrl/ctrlservice/OptScanModuleCtrlService.java index 3656e69..cef3a28 100644 --- a/src/main/java/a8k/service/app/devicectrl/ctrlservice/OptScanModuleCtrlService.java +++ b/src/main/java/a8k/service/app/devicectrl/ctrlservice/OptScanModuleCtrlService.java @@ -32,7 +32,6 @@ import org.springframework.util.Assert; @Component @Slf4j -@ExtApiTab(cfg = ExtApiTabConfig.ReactionPlatesTransmitCtrl) public class OptScanModuleCtrlService { static final Integer overtime = 10000; diff --git a/src/main/java/a8k/service/app/devicectrl/ctrlservice/PlateBoxCtrlService.java b/src/main/java/a8k/service/app/devicectrl/ctrlservice/PlateBoxCtrlService.java index 475a6c4..0656f02 100644 --- a/src/main/java/a8k/service/app/devicectrl/ctrlservice/PlateBoxCtrlService.java +++ b/src/main/java/a8k/service/app/devicectrl/ctrlservice/PlateBoxCtrlService.java @@ -15,7 +15,6 @@ import org.springframework.stereotype.Component; @Component @Slf4j -@ExtApiTab(cfg = ExtApiTabConfig.ReactionPlatesTransmitCtrl) public class PlateBoxCtrlService { static final Integer overtime = 10000; diff --git a/src/main/java/a8k/service/app/devicectrl/ctrlservice/TurnableMoveCtrlService.java b/src/main/java/a8k/service/app/devicectrl/ctrlservice/TurnableMoveCtrlService.java index 47c3fe5..f626d25 100644 --- a/src/main/java/a8k/service/app/devicectrl/ctrlservice/TurnableMoveCtrlService.java +++ b/src/main/java/a8k/service/app/devicectrl/ctrlservice/TurnableMoveCtrlService.java @@ -18,7 +18,6 @@ import org.springframework.stereotype.Component; @Component @Slf4j -@ExtApiTab(cfg = ExtApiTabConfig.ReactionPlatesTransmitCtrl) public class TurnableMoveCtrlService { static final Integer overtime = 10000; diff --git a/src/main/java/a8k/service/bases/appevent/AppEvent.java b/src/main/java/a8k/service/bases/appevent/AppEvent.java index 0132bb6..90b38ba 100644 --- a/src/main/java/a8k/service/bases/appevent/AppEvent.java +++ b/src/main/java/a8k/service/bases/appevent/AppEvent.java @@ -6,7 +6,7 @@ import java.util.UUID; public class AppEvent { public String typeName; public Integer timestamp = (int) (new Date().getTime() / 1000); - public String id = UUID.randomUUID().toString(); +// public String id = UUID.randomUUID().toString(); public AppEvent(String typeName) { this.typeName = typeName; diff --git a/src/main/java/a8k/type/appret/ApiV1Ret.java b/src/main/java/a8k/type/appret/ApiV1Ret.java index f46c3d8..9f33f24 100644 --- a/src/main/java/a8k/type/appret/ApiV1Ret.java +++ b/src/main/java/a8k/type/appret/ApiV1Ret.java @@ -13,9 +13,7 @@ import org.springframework.web.method.annotation.HandlerMethodValidationExceptio @JsonInclude(JsonInclude.Include.NON_NULL) public class ApiV1Ret { // 错误信息 - @Schema(name = "数据类型") public String dataType; - @Schema(name = "数据") public T data; // 接口请求时间 diff --git a/src/main/java/a8k/type/ecode/AECodeError.java b/src/main/java/a8k/type/ecode/AECodeError.java index 15e5a2e..8ec50a9 100644 --- a/src/main/java/a8k/type/ecode/AECodeError.java +++ b/src/main/java/a8k/type/ecode/AECodeError.java @@ -1,8 +1,10 @@ package a8k.type.ecode; import a8k.hardware.type.a8kcanprotocol.A8kEcode; +import io.swagger.v3.oas.annotations.media.Schema; public class AECodeError extends AppError { + @Schema(description = "额外信息") public String exmsg; public AECodeError(String exmsg) { diff --git a/src/main/java/a8k/type/ecode/AECommonError.java b/src/main/java/a8k/type/ecode/AECommonError.java index ad6748c..d3aae34 100644 --- a/src/main/java/a8k/type/ecode/AECommonError.java +++ b/src/main/java/a8k/type/ecode/AECommonError.java @@ -1,8 +1,10 @@ package a8k.type.ecode; import a8k.hardware.type.a8kcanprotocol.A8kEcode; +import io.swagger.v3.oas.annotations.media.Schema; public class AECommonError extends AppError { + @Schema(description = "异常信息") public String exmsg; public AECommonError(String exmsg) { diff --git a/src/main/java/a8k/type/ecode/AEConsumeNotEnoughError.java b/src/main/java/a8k/type/ecode/AEConsumeNotEnoughError.java index 14ab437..0c15e07 100644 --- a/src/main/java/a8k/type/ecode/AEConsumeNotEnoughError.java +++ b/src/main/java/a8k/type/ecode/AEConsumeNotEnoughError.java @@ -1,8 +1,10 @@ package a8k.type.ecode; import a8k.hardware.type.a8kcanprotocol.A8kEcode; +import io.swagger.v3.oas.annotations.media.Schema; public class AEConsumeNotEnoughError extends AppError { + @Schema(description = "项目名称") public String projName; public AEConsumeNotEnoughError(String projName) { diff --git a/src/main/java/a8k/type/ecode/AEHardwareError.java b/src/main/java/a8k/type/ecode/AEHardwareError.java index c483ffa..e6d8202 100644 --- a/src/main/java/a8k/type/ecode/AEHardwareError.java +++ b/src/main/java/a8k/type/ecode/AEHardwareError.java @@ -3,9 +3,12 @@ package a8k.type.ecode; import a8k.hardware.type.a8kcanprotocol.A8kEcode; import a8k.hardware.type.a8kcanprotocol.CmdId; import a8k.hardware.type.a8kcanprotocol.MId; +import io.swagger.v3.oas.annotations.media.Schema; public class AEHardwareError extends AppError { + @Schema(description = "模块id(辅助调试,直接原始显示就行)") public MId mid; + @Schema(description = "命令id(辅助调试,直接原始显示就行)") public CmdId cmdId; public AEHardwareError(A8kEcode errorCode, MId mid, CmdId cmdId) { diff --git a/src/main/java/a8k/type/ecode/AETubeError.java b/src/main/java/a8k/type/ecode/AETubeError.java index 917075d..fa433b6 100644 --- a/src/main/java/a8k/type/ecode/AETubeError.java +++ b/src/main/java/a8k/type/ecode/AETubeError.java @@ -1,8 +1,10 @@ package a8k.type.ecode; import a8k.hardware.type.a8kcanprotocol.A8kEcode; +import io.swagger.v3.oas.annotations.media.Schema; public class AETubeError extends AppError { + @Schema(description = "试管在试管架中偏移", example = "1") public Integer tubeOff; public AETubeError(A8kEcode ecode, Integer tubeOff) { diff --git a/src/main/java/a8k/type/ecode/AEUnkownExceptionError.java b/src/main/java/a8k/type/ecode/AEUnkownExceptionError.java index 299312d..3e7406a 100644 --- a/src/main/java/a8k/type/ecode/AEUnkownExceptionError.java +++ b/src/main/java/a8k/type/ecode/AEUnkownExceptionError.java @@ -1,12 +1,22 @@ package a8k.type.ecode; import a8k.hardware.type.a8kcanprotocol.A8kEcode; +import io.swagger.v3.oas.annotations.media.Schema; + +import java.util.Arrays; public class AEUnkownExceptionError extends AppError { + @Schema(description = "异常描述") + public String decription; + @Schema(description = "异常栈信息") + public String stackTrace; Exception exception; + public AEUnkownExceptionError(Exception exception) { super(A8kEcode.CODEERROR_UNKOWN_EXCEPTION); - this.exception = exception; + this.decription = exception.getMessage(); + this.stackTrace = Arrays.toString(exception.getStackTrace()); + this.exception = exception; } } diff --git a/src/main/java/a8k/type/ecode/AppError.java b/src/main/java/a8k/type/ecode/AppError.java index 7b64165..3aa8562 100644 --- a/src/main/java/a8k/type/ecode/AppError.java +++ b/src/main/java/a8k/type/ecode/AppError.java @@ -2,11 +2,16 @@ package a8k.type.ecode; import a8k.hardware.type.a8kcanprotocol.A8kEcode; import a8k.utils.ZJsonHelper; +import io.swagger.v3.oas.annotations.media.Schema; public class AppError { + @Schema(description = "错误码") public A8kEcode code; + public String type; + public AppError(A8kEcode errorCode) { this.code = errorCode; + this.type = this.getClass().getSimpleName(); } public String toString() { diff --git a/src/main/java/a8k/utils/ZSqlite.java b/src/main/java/a8k/utils/ZSqlite.java index 11370db..b8bf38e 100644 --- a/src/main/java/a8k/utils/ZSqlite.java +++ b/src/main/java/a8k/utils/ZSqlite.java @@ -3,12 +3,15 @@ package a8k.utils; import a8k.type.db.CommonPage; import jakarta.annotation.Nullable; import lombok.SneakyThrows; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.jdbc.core.JdbcTemplate; import java.sql.ResultSet; import java.util.List; public class ZSqlite { + private static final Logger log = LoggerFactory.getLogger(ZSqlite.class); JdbcTemplate jdbcTemplate; Class tClass; public String tableName; @@ -58,7 +61,11 @@ public class ZSqlite { } public T findById(int id) { - return jdbcTemplate.query("select * from " + tableName + " where id = ?", this::rowMapperOne, id); + List list = jdbcTemplate.query("select * from " + tableName + " where id = ?", this::rowMapperList, id); + if (list.isEmpty()) { + return null; + } + return list.get(0); } @@ -67,10 +74,10 @@ public class ZSqlite { return tClass.cast(ret); } - @SneakyThrows public T rowMapperOne(ResultSet rs) { - // return (T) ZSqliteJdbcHelper.rowMapper(rs, tClass); - return tClass.cast(ZSqliteJdbcHelper.rowMapper(rs, tClass)); - } + // @SneakyThrows public T rowMapperOne(ResultSet rs) { + // // return (T) ZSqliteJdbcHelper.rowMapper(rs, tClass); + // return tClass.cast(ZSqliteJdbcHelper.rowMapper(rs, tClass)); + // } public Boolean isTableExist() { return ZSqliteJdbcHelper.isTableExist(jdbcTemplate, tableName); @@ -106,7 +113,11 @@ public class ZSqlite { } public T queryOne(String sql, @Nullable Object... args) { - return jdbcTemplate.query(sql, this::rowMapperOne, args); + List list = jdbcTemplate.query(sql, this::rowMapperList, args); + if (list.isEmpty()) { + return null; + } + return list.get(0); } public List queryList(String sql, @Nullable Object... args) {