From 9d17c580116545d9057ec22d5fb2f518c0565d51 Mon Sep 17 00:00:00 2001 From: zhaohe Date: Mon, 28 Oct 2024 23:05:20 +0800 Subject: [PATCH] update --- .../api_v1/app/AppTubeSettingMgrControler.java | 93 ++++++++++++++++++++++ .../controler/api_v1/app/DeviceInitControler.java | 48 ----------- .../app/appctrl/AppTubeSettingMgrService.java | 35 +++----- .../action/SEQ1_ENTER_TUBEHOLDER_AND_SCAN.java | 4 +- .../a8k/service/test/MainflowCtrlTestService.java | 4 +- .../java/a8k/service/test/TestStateMgrService.java | 4 +- .../a8k/type/tube_setting/TubeHolderSetting.java | 9 ++- .../java/a8k/type/tube_setting/TubeSetting.java | 10 ++- src/main/java/a8k/type/type/A8kTubeHolderType.java | 2 + src/main/java/a8k/type/type/BloodType.java | 4 + 10 files changed, 132 insertions(+), 81 deletions(-) create mode 100644 src/main/java/a8k/controler/api_v1/app/AppTubeSettingMgrControler.java delete mode 100644 src/main/java/a8k/controler/api_v1/app/DeviceInitControler.java diff --git a/src/main/java/a8k/controler/api_v1/app/AppTubeSettingMgrControler.java b/src/main/java/a8k/controler/api_v1/app/AppTubeSettingMgrControler.java new file mode 100644 index 0000000..479df88 --- /dev/null +++ b/src/main/java/a8k/controler/api_v1/app/AppTubeSettingMgrControler.java @@ -0,0 +1,93 @@ +package a8k.controler.api_v1.app; + +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; +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/appTubeSettingMgr/") +@ResponseBody +public class AppTubeSettingMgrControler { + + + @Resource + AppTubeSettingMgrService appTubeSettingMgrService; + @Resource + GStateService gstate; + // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + // EXTERNAL API + // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + + @Operation(summary = "获取试管架配置") + @PostMapping("/TubeHolderSetting") + public ApiV1Ret> getTubeHolderSettings() { + return ApiV1Ret.success(gstate.getTubeHolderSettings()); + } + + //添加试管架,返回整个列表 + @Operation(summary = "添加<试管架>配置") + @PostMapping("/newTubeHolderSetting") + public ApiV1Ret newTubeHolderSetting() { + appTubeSettingMgrService.newTubeHolderSetting(); + return ApiV1Ret.success(); + } + + @Operation(summary = "删除<试管架>配置") + @PostMapping("/removeTubeHolderSetting") + public ApiV1Ret removeTubeHolderSetting(String uuid) throws AppException { + appTubeSettingMgrService.removeTubeHolderSetting(uuid); + return ApiV1Ret.success(); + } + + @Operation(summary = "设置<试管架>激活状态") + @PostMapping("/setActiveState") + public ApiV1Ret setActiveState(String uuid, Boolean active) throws AppException { + appTubeSettingMgrService.setActiveState(uuid, active); + return ApiV1Ret.success(); + } + + // @Operation(summary = "设置<试管架>类型") + // @PostMapping("/setTubeHolderType") + // public ApiV1Ret setTubeHolderType(String uuid, A8kTubeHolderType type) throws AppException { + // appTubeSettingMgrService.setTubeHolderType(uuid, type); + // return ApiV1Ret.success(); + // } + + @Operation(summary = "复位<试管>配置") + @PostMapping("/resetTubeSetting") + public ApiV1Ret resetTubeSetting(String uuid, Integer tubeIndex) throws AppException { + appTubeSettingMgrService.resetTubeSetting(uuid, tubeIndex); + return ApiV1Ret.success(); + } + + @Operation(summary = "修改<试管>用户信息配置") + @PostMapping("/setTubeSettingUserIdAndSampleBarcode") + public ApiV1Ret setTubeSettingUserIdAndSampleBarcode(String uuid, Integer tubeIndex, String userid, String sampleBarcode) throws AppException { + appTubeSettingMgrService.setTubeSettingUserIdAndSampleBarcode(uuid, tubeIndex, userid, sampleBarcode); + return ApiV1Ret.success(); + } + + @Operation(summary = "修改<试管>配置(ps:projIndex格式为逗号分割的数字)") + @PostMapping("/setTubeSetting") + public ApiV1Ret setTubeSetting(String uuid, Integer tubeIndex, BloodType bloodType, String projIndex) throws AppException { + appTubeSettingMgrService.setTubeSetting(uuid, tubeIndex, bloodType, projIndex); + return ApiV1Ret.success(); + } + +} diff --git a/src/main/java/a8k/controler/api_v1/app/DeviceInitControler.java b/src/main/java/a8k/controler/api_v1/app/DeviceInitControler.java deleted file mode 100644 index 263259e..0000000 --- a/src/main/java/a8k/controler/api_v1/app/DeviceInitControler.java +++ /dev/null @@ -1,48 +0,0 @@ -package a8k.controler.api_v1.app; - -import a8k.service.app.appctrl.AppDeviceCtrlService; -import a8k.service.app.background.BackgroudProcessCtrlService; -import a8k.service.app.devicectrl.ctrlservice.DeviceInitCtrlService; -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 jdk.jfr.Description; -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 DeviceInitControler { - - - @Resource - BackgroudProcessCtrlService backgroudProcessCtrlService; - - @Resource - DeviceInitCtrlService deviceInitCtrlService; - - - @Operation(summary = "设备初始化前检查") - @PostMapping("/checkBeforeInitDevice") - public ApiV1Ret> checkBeforeInitDevice() throws AppException { - return ApiV1Ret.success(deviceInitCtrlService.checkBeforeInitDevice()); - } - - @Operation(summary = "设备初始化(阻塞接口)") - @PostMapping("/initDevice") - public ApiV1Ret> initDevice() throws AppException { - backgroudProcessCtrlService.startProcess(); - return ApiV1Ret.success(deviceInitCtrlService.deviceMoveToZero()); - } -} diff --git a/src/main/java/a8k/service/app/appctrl/AppTubeSettingMgrService.java b/src/main/java/a8k/service/app/appctrl/AppTubeSettingMgrService.java index 4ae76a0..2a5ed62 100644 --- a/src/main/java/a8k/service/app/appctrl/AppTubeSettingMgrService.java +++ b/src/main/java/a8k/service/app/appctrl/AppTubeSettingMgrService.java @@ -3,9 +3,6 @@ package a8k.service.app.appctrl; import a8k.service.bases.AppEventBusService; import a8k.service.bases.appevent.AppTubeholderSettingUpdateEvent; import a8k.service.app.appstate.GStateService; -import a8k.extapi_controler.utils.ExtApiTab; -import a8k.extapi_controler.utils.ExtApiFn; -import a8k.extapi_controler.pagecontrol.ExtApiTabConfig; import a8k.type.exception.AppException; import a8k.type.type.A8kTubeHolderType; import a8k.type.type.BloodType; @@ -21,19 +18,9 @@ import java.util.ArrayList; import java.util.List; @Component -@ExtApiTab(cfg = ExtApiTabConfig.AppTubeSettingMgrService) public class AppTubeSettingMgrService { static Logger logger = LoggerFactory.getLogger(AppTubeSettingMgrService.class); - static class ORDER { - static final int getA8kDeviceCfg = 1; - static final int addCfg = 2; - static final int removeCfg = 3; - static final int activeCfg = 4; - static final int setTubeSettingU = 5; - static final int clearTubeProjectCfg = 6; - static final int setTubeSetting = 7; - } @Resource GStateService gState; @@ -68,13 +55,13 @@ public class AppTubeSettingMgrService { // EXTERNAL API // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - @ExtApiFn(name = "获取试管架配置", group = "配置读取", order = ORDER.getA8kDeviceCfg) + synchronized public List getTubeHolderSettings() { return gState.getTubeHolderSettings(); } //添加试管架,返回整个列表 - @ExtApiFn(name = "添加<试管架>配置", group = "试管架", order = ORDER.addCfg) + synchronized public List newTubeHolderSetting() { var newSetting = new TubeHolderSetting(); logger.info("newTubeHolderSetting {}", newSetting.uuid); @@ -91,7 +78,7 @@ public class AppTubeSettingMgrService { return newSetting; } - @ExtApiFn(name = "删除<试管架>配置", group = "试管架", order = ORDER.removeCfg) + synchronized public List removeTubeHolderSetting(String uuid) throws AppException { logger.info("removeTubeHolderSetting {}", uuid); getTubeHolderSettingAndCheckIsEditable(uuid); @@ -100,8 +87,8 @@ public class AppTubeSettingMgrService { } - @ExtApiFn(name = "设置<试管架>激活状态", group = "试管架", order = ORDER.activeCfg) - synchronized public List tubeHodlerSettingSetActiveState(String uuid, Boolean active) throws AppException { + + synchronized public List setActiveState(String uuid, Boolean active) throws AppException { logger.info("tubeHodlerSettingSetActiveState {} {}", uuid, active); TubeHolderSetting setting = getTubeHolderSettingAndCheckIsEditable(uuid); @@ -109,15 +96,15 @@ public class AppTubeSettingMgrService { return getTubeHolderSettings(); } - @ExtApiFn(name = "设置<试管架>类型", group = "试管架", order = ORDER.activeCfg) - synchronized public List tubeHodlerSettingSetTubeHolderType(String uuid, A8kTubeHolderType type) throws AppException { + + synchronized public List setTubeHolderType(String uuid, A8kTubeHolderType type) throws AppException { logger.info("tubeHodlerSettingSetTubeHolderType {} {}", uuid, type); TubeHolderSetting setting = getTubeHolderSettingAndCheckIsEditable(uuid); setting.tubeHolderType = type; return getTubeHolderSettings(); } - @ExtApiFn(name = "复位<试管>配置", group = "试管", order = ORDER.clearTubeProjectCfg) + synchronized public List resetTubeSetting(String uuid, Integer tubeIndex) throws AppException { logger.info("resetTubeSetting {} {}", uuid, tubeIndex); TubeHolderSetting thSetting = getTubeHolderSettingAndCheckIsEditable(uuid); @@ -126,7 +113,7 @@ public class AppTubeSettingMgrService { } - @ExtApiFn(name = "修改<试管>用户信息配置", group = "试管", order = ORDER.setTubeSettingU) + synchronized public List setTubeSettingUserIdAndSampleBarcode(String uuid, Integer tubeIndex, String userid, String sampleBarcode) throws AppException { logger.info("setTubeSettingUserIdAndSampleBarcode {} {} {} {}", uuid, tubeIndex, userid, sampleBarcode); TubeHolderSetting thSetting = getTubeHolderSettingAndCheckIsEditable(uuid); @@ -136,7 +123,7 @@ public class AppTubeSettingMgrService { return getTubeHolderSettings(); } - @ExtApiFn(name = "修改<试管>配置(ps:projIndex格式为逗号分割的数字)", group = "试管", order = ORDER.setTubeSetting) + synchronized public List setTubeSetting(String uuid, Integer tubeIndex, BloodType bloodType, String projIndex) throws AppException { logger.info("setTubeSetting {} {} {} {}", uuid, tubeIndex, bloodType, projIndex); TubeHolderSetting thSetting = getTubeHolderSettingAndCheckIsEditable(uuid); @@ -148,7 +135,7 @@ public class AppTubeSettingMgrService { } var tubeSetting = thSetting.tubeSettings[tubeIndex]; tubeSetting.bloodType = bloodType; - tubeSetting.projIndex = projIndexList; + tubeSetting.projId = projIndexList; return getTubeHolderSettings(); } diff --git a/src/main/java/a8k/service/app/appctrl/mainflowctrl/action/SEQ1_ENTER_TUBEHOLDER_AND_SCAN.java b/src/main/java/a8k/service/app/appctrl/mainflowctrl/action/SEQ1_ENTER_TUBEHOLDER_AND_SCAN.java index 7e5599f..6125918 100644 --- a/src/main/java/a8k/service/app/appctrl/mainflowctrl/action/SEQ1_ENTER_TUBEHOLDER_AND_SCAN.java +++ b/src/main/java/a8k/service/app/appctrl/mainflowctrl/action/SEQ1_ENTER_TUBEHOLDER_AND_SCAN.java @@ -122,10 +122,10 @@ public class SEQ1_ENTER_TUBEHOLDER_AND_SCAN extends A8kStepAction { tube.setBloodType(setting.tubeSettings[i].bloodType); tube.setSampleBarcode(setting.tubeSettings[i].sampleBarcode); tube.setUserid(setting.tubeSettings[i].userid); - tube.setProjInfo(appProjInfoMgr.getProjBriefInfo(setting.tubeSettings[i].projIndex)); + tube.setProjInfo(appProjInfoMgr.getProjBriefInfo(setting.tubeSettings[i].projId)); if (tube.getProjInfo() == null) { - logger.error("项目信息不存在,{}", setting.tubeSettings[i].projIndex); + logger.error("项目信息不存在,{}", setting.tubeSettings[i].projId); return A8kEcode.APPE_PROJ_INFO_IS_NOT_EXIST; } } diff --git a/src/main/java/a8k/service/test/MainflowCtrlTestService.java b/src/main/java/a8k/service/test/MainflowCtrlTestService.java index f221e31..9b40291 100644 --- a/src/main/java/a8k/service/test/MainflowCtrlTestService.java +++ b/src/main/java/a8k/service/test/MainflowCtrlTestService.java @@ -113,8 +113,8 @@ public class MainflowCtrlTestService { setting.active = true; for (int i = 0; i < setting.tubeSettings.length; i++) { if (i < tubeNum) { - setting.tubeSettings[i].userid = "FAUID" + i; - setting.tubeSettings[i].projIndex = projIndex; + setting.tubeSettings[i].userid = "FAUID" + i; + setting.tubeSettings[i].projId = projIndex; } } return setting; diff --git a/src/main/java/a8k/service/test/TestStateMgrService.java b/src/main/java/a8k/service/test/TestStateMgrService.java index e80a4c0..a16d67f 100644 --- a/src/main/java/a8k/service/test/TestStateMgrService.java +++ b/src/main/java/a8k/service/test/TestStateMgrService.java @@ -110,8 +110,8 @@ public TubeHolderSetting createOneActiveTubeHolderSetting(A8kTubeHolderType type setting.active = true; for (int i = 0; i < setting.tubeSettings.length; i++) { if (i < tubeNum) { - setting.tubeSettings[i].userid = "FAUID" + i; - setting.tubeSettings[i].projIndex = projIndex; + setting.tubeSettings[i].userid = "FAUID" + i; + setting.tubeSettings[i].projId = projIndex; } } return setting; diff --git a/src/main/java/a8k/type/tube_setting/TubeHolderSetting.java b/src/main/java/a8k/type/tube_setting/TubeHolderSetting.java index c0a28dd..56e3d8a 100644 --- a/src/main/java/a8k/type/tube_setting/TubeHolderSetting.java +++ b/src/main/java/a8k/type/tube_setting/TubeHolderSetting.java @@ -1,22 +1,29 @@ package a8k.type.tube_setting; import a8k.type.type.A8kTubeHolderType; +import io.swagger.v3.oas.annotations.media.Schema; import java.util.ArrayList; import java.util.UUID; +@Schema(description = "试管架配置") public class TubeHolderSetting { + @Schema(description = "唯一标识") public String uuid = UUID.randomUUID().toString(); //唯一标识 + @Schema(description = "是否激活") public Boolean active = false;//是否激活 + @Schema(description = "试管架类型") public A8kTubeHolderType tubeHolderType = A8kTubeHolderType.BloodTube; //试管架类型 + @Schema(description = "试管配置") public TubeSetting[] tubeSettings = new TubeSetting[10]; + @Schema(description = "是否锁定(锁住后,该配置不允许被修改)") public Boolean lock = false;//如果后台已经使用,前端不允许修改 public TubeHolderSetting() { for (int i = 0; i < tubeSettings.length; i++) { var tubeSetting = new TubeSetting(); tubeSetting.tubeIndex = i; - tubeSettings[i] = tubeSetting; + tubeSettings[i] = tubeSetting; } } } diff --git a/src/main/java/a8k/type/tube_setting/TubeSetting.java b/src/main/java/a8k/type/tube_setting/TubeSetting.java index 9d68bc2..8460449 100644 --- a/src/main/java/a8k/type/tube_setting/TubeSetting.java +++ b/src/main/java/a8k/type/tube_setting/TubeSetting.java @@ -1,22 +1,28 @@ package a8k.type.tube_setting; import a8k.type.type.BloodType; +import io.swagger.v3.oas.annotations.media.Schema; import java.util.ArrayList; import java.util.List; +@Schema(description = "试管配置") public class TubeSetting { public int tubeIndex; + @Schema(description = "用户输入的样本ID,不做逻辑,只做展示(允许为空)") public String userid = ""; //用户输入的样本ID,不做逻辑,只做展示 + @Schema(description = "用于请求用户信息的条码ID") public String sampleBarcode = ""; //用于请求用户信息的条码ID - public List projIndex = new ArrayList<>(); //项目编码,标明需要做的项目 + @Schema(description = "项目编码,标明需要做的项目") + public List projId = new ArrayList<>(); //项目编码,标明需要做的项目 + @Schema(description = "血型") public BloodType bloodType = BloodType.WHOLE_BLOOD; //血型 public void reset() { userid = ""; sampleBarcode = ""; - projIndex = new ArrayList<>(); + projId = new ArrayList<>(); bloodType = BloodType.WHOLE_BLOOD; } } diff --git a/src/main/java/a8k/type/type/A8kTubeHolderType.java b/src/main/java/a8k/type/type/A8kTubeHolderType.java index ff44419..ee14922 100644 --- a/src/main/java/a8k/type/type/A8kTubeHolderType.java +++ b/src/main/java/a8k/type/type/A8kTubeHolderType.java @@ -1,6 +1,8 @@ package a8k.type.type; +import io.swagger.v3.oas.annotations.media.Schema; +@Schema(description = "试管架类型") public enum A8kTubeHolderType { BloodTube("0000"), //全血试管 diff --git a/src/main/java/a8k/type/type/BloodType.java b/src/main/java/a8k/type/type/BloodType.java index 055b1af..812ddae 100644 --- a/src/main/java/a8k/type/type/BloodType.java +++ b/src/main/java/a8k/type/type/BloodType.java @@ -2,6 +2,10 @@ package a8k.type.type; import io.swagger.v3.oas.annotations.media.Schema; +@Schema(description = """ + 血液类型: + * WHOLE_BLOOD:全血 + * SERUM_OR_PLASMA:血清或者血浆""") public enum BloodType { WHOLE_BLOOD,//全血 SERUM_OR_PLASMA,//血清或者血浆