Browse Source

update

tags/v0
zhaohe 10 months ago
parent
commit
9c92bce435
  1. 2
      src/main/java/a8k/baseservice/appeventbus/appevent/A8kEcodeContextListPromptEvent.java
  2. 2
      src/main/java/a8k/baseservice/appeventbus/appevent/DoA8kStepActionEvent.java
  3. 5
      src/main/java/a8k/service/appctrl/AppDeviceCtrlService.java
  4. 25
      src/main/java/a8k/service/appctrl/ConsumablesScanService.java
  5. 11
      src/main/java/a8k/service/appctrl/MainFlowCtrlService.java
  6. 4
      src/main/java/a8k/service/appctrl/TubeSettingMgrService.java
  7. 4
      src/main/java/a8k/service/appctrl/mainflowctrl/CondtionMgrService.java
  8. 43
      src/main/java/a8k/service/appctrl/mainflowctrl/MainFlowCtrlScheduler.java
  9. 12
      src/main/java/a8k/service/appctrl/mainflowctrl/action/DO_CLEAR_ERROR_BEFORE_WORK.java
  10. 7
      src/main/java/a8k/service/appctrl/mainflowctrl/action/DO_PAUSE.java
  11. 9
      src/main/java/a8k/service/appctrl/mainflowctrl/action/DO_PROCESS_ERROR_PLATE.java
  12. 9
      src/main/java/a8k/service/appctrl/mainflowctrl/action/DO_PROCESS_ERROR_TUBE.java
  13. 6
      src/main/java/a8k/service/appctrl/mainflowctrl/action/DO_RESUME.java
  14. 6
      src/main/java/a8k/service/appctrl/mainflowctrl/action/DO_START.java
  15. 6
      src/main/java/a8k/service/appctrl/mainflowctrl/action/DO_STOP.java
  16. 12
      src/main/java/a8k/service/appctrl/mainflowctrl/action/PLATE_OPT_SCAN.java
  17. 10
      src/main/java/a8k/service/appctrl/mainflowctrl/action/PROCESS_INCUBATE_COMPLETED_PLATE.java
  18. 18
      src/main/java/a8k/service/appctrl/mainflowctrl/action/SEQ1_ENTER_TUBEHOLDER_AND_SCAN.java
  19. 8
      src/main/java/a8k/service/appctrl/mainflowctrl/action/SEQ2_SWITCH_TO_THE_NEXT_TUBE.java
  20. 8
      src/main/java/a8k/service/appctrl/mainflowctrl/action/SEQ3_APPLAY_RESOURCE.java
  21. 8
      src/main/java/a8k/service/appctrl/mainflowctrl/action/SEQ4_PRE_PROCESS.java
  22. 8
      src/main/java/a8k/service/appctrl/mainflowctrl/action/SEQ5_PROCESS.java
  23. 8
      src/main/java/a8k/service/appctrl/mainflowctrl/action/SEQ6_POST_PROCESS.java
  24. 8
      src/main/java/a8k/service/appctrl/mainflowctrl/action/SEQ7_EJECT_TUBEHOLDER.java
  25. 2
      src/main/java/a8k/service/appctrl/mainflowctrl/base/A8kActionStepType.java
  26. 3
      src/main/java/a8k/service/appctrl/mainflowctrl/base/A8kErrorContext.java
  27. 2
      src/main/java/a8k/service/appctrl/mainflowctrl/base/A8kStepAction.java
  28. 8
      src/main/java/a8k/service/appctrl/type/app_consumables_mgr_service/ConsumablesScanResult.java
  29. 2
      src/main/java/a8k/service/appstate/GStateService.java
  30. 2
      src/main/java/a8k/service/appstate/type/MainFlowCtrlState.java
  31. 2
      src/main/java/a8k/type/consumables/ConsumableState.java
  32. 2
      src/main/java/a8k/type/consumables/LarBSGroup.java
  33. 2
      src/main/java/a8k/type/consumables/LittBSGroup.java
  34. 2
      src/main/java/a8k/type/consumables/ReactionPlateGroup.java
  35. 2
      src/main/java/a8k/type/consumables/ScanResultState.java
  36. 2
      src/main/java/a8k/type/consumables/Tips.java

2
src/main/java/a8k/baseservice/appeventbus/appevent/A8kEcodeContextListPromptEvent.java

@ -1,6 +1,6 @@
package a8k.baseservice.appeventbus.appevent; package a8k.baseservice.appeventbus.appevent;
import a8k.service.appctrl.type.A8kErrorContext;
import a8k.service.appctrl.mainflowctrl.base.A8kErrorContext;
import java.util.List; import java.util.List;

2
src/main/java/a8k/baseservice/appeventbus/appevent/DoA8kStepActionEvent.java

@ -1,6 +1,6 @@
package a8k.baseservice.appeventbus.appevent; package a8k.baseservice.appeventbus.appevent;
import a8k.service.appctrl.action.base.A8kActionStepType;
import a8k.service.appctrl.mainflowctrl.base.A8kActionStepType;
public class DoA8kStepActionEvent extends AppEvent { public class DoA8kStepActionEvent extends AppEvent {
public A8kActionStepType actionStep; public A8kActionStepType actionStep;

5
src/main/java/a8k/service/appctrl/AppDeviceCtrlService.java

@ -3,16 +3,13 @@ package a8k.service.appctrl;
import a8k.controler.extapi.pagecontrol.ExtApiTabConfig; import a8k.controler.extapi.pagecontrol.ExtApiTabConfig;
import a8k.controler.extapi.utils.ExtApiFn; import a8k.controler.extapi.utils.ExtApiFn;
import a8k.controler.extapi.utils.ExtApiTab; import a8k.controler.extapi.utils.ExtApiTab;
import a8k.service.appctrl.action.base.A8kStepAction;
import a8k.service.appctrl.mainflowctrl.base.A8kStepAction;
import a8k.service.appstate.type.MainFlowCtrlState; import a8k.service.appstate.type.MainFlowCtrlState;
import a8k.service.appstate.type.TubeHolder; import a8k.service.appstate.type.TubeHolder;
import a8k.type.ConsumableGroup; import a8k.type.ConsumableGroup;
import a8k.type.checkpoint.CheckResult; import a8k.type.checkpoint.CheckResult;
import a8k.service.appstate.GStateService; import a8k.service.appstate.GStateService;
import a8k.service.appstate.type.state.A8kWorkState;
import a8k.type.exception.AppException; import a8k.type.exception.AppException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ObjectNode;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;

25
src/main/java/a8k/service/appctrl/ConsumablesScanService.java

@ -1,11 +1,15 @@
package a8k.service.appctrl; package a8k.service.appctrl;
import a8k.constant.AppConstant;
import a8k.hardware.type.a8kcanprotocol.A8kEcode; import a8k.hardware.type.a8kcanprotocol.A8kEcode;
import a8k.service.appdata.AppProjInfoMgrService; import a8k.service.appdata.AppProjInfoMgrService;
import a8k.service.appctrl.type.app_consumables_mgr_service.*;
import a8k.service.appstate.GStateService; import a8k.service.appstate.GStateService;
import a8k.service.devicedriver.ctrl.ConsumablesScanCtrl; import a8k.service.devicedriver.ctrl.ConsumablesScanCtrl;
import a8k.type.ConsumableGroup; import a8k.type.ConsumableGroup;
import a8k.type.consumables.LarBSGroup;
import a8k.type.consumables.LittBSGroup;
import a8k.type.consumables.ReactionPlateGroup;
import a8k.type.consumables.ScanResultState;
import a8k.type.exception.AppException; import a8k.type.exception.AppException;
import a8k.type.projecttype.A8kReactionFlowType; import a8k.type.projecttype.A8kReactionFlowType;
import a8k.type.projecttype.a8kidcard.A8kIdCardInfo; import a8k.type.projecttype.a8kidcard.A8kIdCardInfo;
@ -22,14 +26,19 @@ import java.util.Map;
@Component @Component
public class ConsumablesScanService { public class ConsumablesScanService {
static Logger logger = org.slf4j.LoggerFactory.getLogger(ConsumablesScanService.class); static Logger logger = org.slf4j.LoggerFactory.getLogger(ConsumablesScanService.class);
static final Integer EachConsumableNum = 20;
public static class ConsumablesScanResult {
public Integer chNum;
public ScanResultState state;
public Integer projIndex;
public String lotId;
}
@Resource @Resource
GStateService gstate; GStateService gstate;
@Resource @Resource
AppProjInfoMgrService appProjMgr; AppProjInfoMgrService appProjMgr;
@Resource @Resource
ConsumablesScanCtrl scanCtrlService; ConsumablesScanCtrl scanCtrlService;
@ -111,13 +120,13 @@ public class ConsumablesScanService {
assert a8kIdCardInfo != null; assert a8kIdCardInfo != null;
assert reactionType != null; assert reactionType != null;
cState.reactionPlateGroup[ch] = new ReactionPlateGroup(result.projIndex, a8kIdCardInfo.projName, result.lotId, a8kIdCardInfo.color, EachConsumableNum);
cState.reactionPlateGroup[ch] = new ReactionPlateGroup(result.projIndex, a8kIdCardInfo.projName, result.lotId, a8kIdCardInfo.color, AppConstant.CONSUMABLE_NUM);
if (reactionType.equals(A8kReactionFlowType.ReactionWithLittBS)) { if (reactionType.equals(A8kReactionFlowType.ReactionWithLittBS)) {
cState.littBSGroup[ch] = new LittBSGroup(result.projIndex, a8kIdCardInfo.projName, result.lotId, a8kIdCardInfo.color, EachConsumableNum);
cState.littBSGroup[ch] = new LittBSGroup(result.projIndex, a8kIdCardInfo.projName, result.lotId, a8kIdCardInfo.color, AppConstant.CONSUMABLE_NUM);
cState.larBSGroup[ch] = new LarBSGroup(); cState.larBSGroup[ch] = new LarBSGroup();
} else if (reactionType.equals(A8kReactionFlowType.ReactionWithLarBsAndDetection)) { } else if (reactionType.equals(A8kReactionFlowType.ReactionWithLarBsAndDetection)) {
cState.littBSGroup[ch] = new LittBSGroup(result.projIndex, a8kIdCardInfo.projName, result.lotId, a8kIdCardInfo.color, EachConsumableNum);
cState.larBSGroup[ch] = new LarBSGroup(result.projIndex, a8kIdCardInfo.projName, result.lotId, a8kIdCardInfo.color, EachConsumableNum);
cState.littBSGroup[ch] = new LittBSGroup(result.projIndex, a8kIdCardInfo.projName, result.lotId, a8kIdCardInfo.color, AppConstant.CONSUMABLE_NUM);
cState.larBSGroup[ch] = new LarBSGroup(result.projIndex, a8kIdCardInfo.projName, result.lotId, a8kIdCardInfo.color, AppConstant.CONSUMABLE_NUM);
} else { } else {
throw new RuntimeException("未知的反应流程类型"); throw new RuntimeException("未知的反应流程类型");
} }

11
src/main/java/a8k/service/appctrl/MainFlowCtrlService.java

@ -1,10 +1,10 @@
package a8k.service.appctrl; package a8k.service.appctrl;
import a8k.service.appctrl.action.base.A8kActionStepType;
import a8k.service.appctrl.action.base.A8kStepAction;
import a8k.service.appctrl.action.ctrl.DO_STOP;
import a8k.service.appctrl.scheduler.MainFlowCtrlScheduler;
import a8k.service.appctrl.type.A8kErrorContext;
import a8k.service.appctrl.mainflowctrl.MainFlowCtrlScheduler;
import a8k.service.appctrl.mainflowctrl.base.A8kActionStepType;
import a8k.service.appctrl.mainflowctrl.base.A8kErrorContext;
import a8k.service.appctrl.mainflowctrl.base.A8kStepAction;
import a8k.service.appctrl.mainflowctrl.action.DO_STOP;
import a8k.service.appstate.GStateService; import a8k.service.appstate.GStateService;
import a8k.service.appstate.type.MainFlowCtrlState; import a8k.service.appstate.type.MainFlowCtrlState;
import a8k.service.appstate.type.state.A8kWorkState; import a8k.service.appstate.type.state.A8kWorkState;
@ -40,7 +40,6 @@ public class MainFlowCtrlService {
@PostConstruct @PostConstruct
void init() { void init() {
scheduler.regClearErrorProcesser(this::clearErrorcodeBeforeContinueDo);
scheduler.regEcodePostProcesser(this::postPorcessA8kEcode); scheduler.regEcodePostProcesser(this::postPorcessA8kEcode);
scheduler.regCheckBeforeGuess(this::checkBeforeGuess); scheduler.regCheckBeforeGuess(this::checkBeforeGuess);

4
src/main/java/a8k/service/appctrl/AppTubeSettingMgrService.java → src/main/java/a8k/service/appctrl/TubeSettingMgrService.java

@ -22,8 +22,8 @@ import java.util.List;
@Component @Component
@ExtApiTab(cfg = ExtApiTabConfig.AppTubeSettingMgrService) @ExtApiTab(cfg = ExtApiTabConfig.AppTubeSettingMgrService)
public class AppTubeSettingMgrService {
static Logger logger = LoggerFactory.getLogger(AppTubeSettingMgrService.class);
public class TubeSettingMgrService {
static Logger logger = LoggerFactory.getLogger(TubeSettingMgrService.class);
static class ORDER { static class ORDER {
static final int getA8kDeviceCfg = 1; static final int getA8kDeviceCfg = 1;

4
src/main/java/a8k/service/appctrl/CondtionMgrService.java → src/main/java/a8k/service/appctrl/mainflowctrl/CondtionMgrService.java

@ -1,4 +1,4 @@
package a8k.service.appctrl;
package a8k.service.appctrl.mainflowctrl;
import a8k.hardware.A8kCanBusService; import a8k.hardware.A8kCanBusService;
import a8k.hardware.type.a8kcanprotocol.IOId; import a8k.hardware.type.a8kcanprotocol.IOId;
@ -7,10 +7,8 @@ import a8k.service.appstate.IncubationPlateMgrService;
import a8k.service.appstate.OptScanModuleStateMgrService; import a8k.service.appstate.OptScanModuleStateMgrService;
import a8k.service.appstate.type.Tube; import a8k.service.appstate.type.Tube;
import a8k.service.appstate.type.state.A8kWorkState; import a8k.service.appstate.type.state.A8kWorkState;
import a8k.service.appstate.type.state.IncubationSubTankState;
import a8k.service.appstate.type.state.TubeHolderState; import a8k.service.appstate.type.state.TubeHolderState;
import a8k.service.appstate.type.state.TubeState; import a8k.service.appstate.type.state.TubeState;
import a8k.type.exception.AppException;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;

43
src/main/java/a8k/service/appctrl/scheduler/MainFlowCtrlScheduler.java → src/main/java/a8k/service/appctrl/mainflowctrl/MainFlowCtrlScheduler.java

@ -1,12 +1,12 @@
package a8k.service.appctrl.scheduler;
package a8k.service.appctrl.mainflowctrl;
import a8k.OS; import a8k.OS;
import a8k.baseservice.appeventbus.AppEventBusService; import a8k.baseservice.appeventbus.AppEventBusService;
import a8k.baseservice.appeventbus.appevent.A8kEcodeContextListPromptEvent; import a8k.baseservice.appeventbus.appevent.A8kEcodeContextListPromptEvent;
import a8k.baseservice.appeventbus.appevent.DoA8kStepActionEvent; import a8k.baseservice.appeventbus.appevent.DoA8kStepActionEvent;
import a8k.service.appctrl.action.base.A8kActionStepType;
import a8k.service.appctrl.action.base.A8kStepAction;
import a8k.service.appctrl.type.*;
import a8k.service.appctrl.mainflowctrl.base.A8kActionStepType;
import a8k.service.appctrl.mainflowctrl.base.A8kErrorContext;
import a8k.service.appctrl.mainflowctrl.base.A8kStepAction;
import a8k.service.appstate.GStateService; import a8k.service.appstate.GStateService;
import a8k.service.appstate.ResourceMgrService; import a8k.service.appstate.ResourceMgrService;
import a8k.service.appstate.type.MainFlowCtrlState; import a8k.service.appstate.type.MainFlowCtrlState;
@ -35,31 +35,18 @@ public class MainFlowCtrlScheduler {
void process(List<A8kErrorContext> ecodeList); void process(List<A8kErrorContext> ecodeList);
} }
@FunctionalInterface
public interface A8kEcodeClearProcesser {
boolean process(List<A8kErrorContext> ecodeList) throws AppException;
}
@Resource @Resource
GStateService gstate; GStateService gstate;
@Resource @Resource
AppEventBusService ebus; AppEventBusService ebus;
@Resource @Resource
ResourceMgrService resourceMgrService; ResourceMgrService resourceMgrService;
MainFlowCtrlState state = null; MainFlowCtrlState state = null;
Thread workThread; Thread workThread;
ThreadPoolExecutor executor = new ThreadPoolExecutor(1, 5, 0, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<>(10)); ThreadPoolExecutor executor = new ThreadPoolExecutor(1, 5, 0, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<>(10));
Runnable checkBeforeGuess; Runnable checkBeforeGuess;
A8kEcodePostProcesser ecodePostProcesser; A8kEcodePostProcesser ecodePostProcesser;
A8kEcodeClearProcesser ecodeClearProcesser;
List<A8kStepAction> stepActionList = new ArrayList<>(); List<A8kStepAction> stepActionList = new ArrayList<>();
@PostConstruct @PostConstruct
@ -71,10 +58,6 @@ public class MainFlowCtrlScheduler {
* Ext * Ext
*/ */
public void regClearErrorProcesser(A8kEcodeClearProcesser ecodeClearProcesser) {
this.ecodeClearProcesser = ecodeClearProcesser;
}
public void regEcodePostProcesser(A8kEcodePostProcesser ecodePostProcesser) { public void regEcodePostProcesser(A8kEcodePostProcesser ecodePostProcesser) {
this.ecodePostProcesser = ecodePostProcesser; this.ecodePostProcesser = ecodePostProcesser;
} }
@ -145,24 +128,6 @@ public class MainFlowCtrlScheduler {
} }
} }
// void clearError() {
// /*
// * 清除错误
// */
// clearErrorPendingFlag = false;
// try {
// beforeDoWhat(A8kActionStepType.DO_CLEAR_ERROR);
// boolean suc = ecodeClearProcesser.process(state.ecodeList);
// if (suc) {
// state.ecodeList.clear();
// state.errorFlag = false;
// }
// } catch (AppException appe) {
// A8kErrorContext context = new A8kErrorContext(A8kActionStepType.DO_CLEAR_ERROR, appe.error);
// a8kEcodePostProcesser(List.of(context));
// }
// }
List<A8kErrorContext> waitAllActionIsDone(List<Future<A8kErrorContext>> futureList) { List<A8kErrorContext> waitAllActionIsDone(List<Future<A8kErrorContext>> futureList) {
List<A8kErrorContext> ecodeList = new ArrayList<>(); List<A8kErrorContext> ecodeList = new ArrayList<>();

12
src/main/java/a8k/service/appctrl/action/errorhandler/DO_CLEAR_ERROR_BEFORE_WORK.java → src/main/java/a8k/service/appctrl/mainflowctrl/action/DO_CLEAR_ERROR_BEFORE_WORK.java

@ -1,18 +1,14 @@
package a8k.service.appctrl.action.errorhandler;
package a8k.service.appctrl.mainflowctrl.action;
import a8k.OS;
import a8k.service.appctrl.CondtionMgrService;
import a8k.service.appctrl.action.base.A8kActionStepType;
import a8k.service.appctrl.action.base.A8kStepAction;
import a8k.service.appctrl.mainflowctrl.CondtionMgrService;
import a8k.service.appctrl.mainflowctrl.base.A8kActionStepType;
import a8k.service.appctrl.mainflowctrl.base.A8kStepAction;
import a8k.service.appstate.GStateService; import a8k.service.appstate.GStateService;
import a8k.service.appstate.IncubationPlateMgrService; import a8k.service.appstate.IncubationPlateMgrService;
import a8k.service.appstate.OptScanModuleStateMgrService; import a8k.service.appstate.OptScanModuleStateMgrService;
import a8k.service.appstate.resource.A8kPublicResourceType; import a8k.service.appstate.resource.A8kPublicResourceType;
import a8k.service.appstate.type.IncubationSubTank;
import a8k.service.appstate.type.MainFlowCtrlState; import a8k.service.appstate.type.MainFlowCtrlState;
import a8k.service.appstate.type.state.A8kWorkState; import a8k.service.appstate.type.state.A8kWorkState;
import a8k.service.appstate.type.state.IncubationSubTankState;
import a8k.service.appstate.type.state.TubeState;
import a8k.type.exception.AppException; import a8k.type.exception.AppException;
import jakarta.annotation.PostConstruct; import jakarta.annotation.PostConstruct;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;

7
src/main/java/a8k/service/appctrl/action/ctrl/DO_PAUSE.java → src/main/java/a8k/service/appctrl/mainflowctrl/action/DO_PAUSE.java

@ -1,12 +1,11 @@
package a8k.service.appctrl.action.ctrl;
package a8k.service.appctrl.mainflowctrl.action;
import a8k.service.appctrl.action.base.A8kActionStepType;
import a8k.service.appctrl.action.base.A8kStepAction;
import a8k.service.appctrl.mainflowctrl.base.A8kActionStepType;
import a8k.service.appctrl.mainflowctrl.base.A8kStepAction;
import a8k.service.appstate.GStateService; import a8k.service.appstate.GStateService;
import a8k.service.appstate.resource.A8kPublicResourceType; import a8k.service.appstate.resource.A8kPublicResourceType;
import a8k.service.appstate.type.MainFlowCtrlState; import a8k.service.appstate.type.MainFlowCtrlState;
import a8k.service.appstate.type.state.A8kWorkState; import a8k.service.appstate.type.state.A8kWorkState;
import a8k.service.devicedriver.ctrl.SampleScanTransportCtrl;
import a8k.type.exception.AppException; import a8k.type.exception.AppException;
import jakarta.annotation.PostConstruct; import jakarta.annotation.PostConstruct;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;

9
src/main/java/a8k/service/appctrl/action/errorhandler/DO_PROCESS_ERROR_PLATE.java → src/main/java/a8k/service/appctrl/mainflowctrl/action/DO_PROCESS_ERROR_PLATE.java

@ -1,16 +1,15 @@
package a8k.service.appctrl.action.errorhandler;
package a8k.service.appctrl.mainflowctrl.action;
import a8k.OS; import a8k.OS;
import a8k.service.appctrl.CondtionMgrService;
import a8k.service.appctrl.action.base.A8kActionStepType;
import a8k.service.appctrl.action.base.A8kStepAction;
import a8k.service.appctrl.mainflowctrl.CondtionMgrService;
import a8k.service.appctrl.mainflowctrl.base.A8kActionStepType;
import a8k.service.appctrl.mainflowctrl.base.A8kStepAction;
import a8k.service.appstate.GStateService; import a8k.service.appstate.GStateService;
import a8k.service.appstate.IncubationPlateMgrService; import a8k.service.appstate.IncubationPlateMgrService;
import a8k.service.appstate.OptScanModuleStateMgrService; import a8k.service.appstate.OptScanModuleStateMgrService;
import a8k.service.appstate.resource.A8kPublicResourceType; import a8k.service.appstate.resource.A8kPublicResourceType;
import a8k.service.appstate.type.IncubationSubTank; import a8k.service.appstate.type.IncubationSubTank;
import a8k.service.appstate.type.MainFlowCtrlState; import a8k.service.appstate.type.MainFlowCtrlState;
import a8k.service.appstate.type.state.A8kWorkState;
import a8k.service.appstate.type.state.IncubationSubTankState; import a8k.service.appstate.type.state.IncubationSubTankState;
import a8k.type.exception.AppException; import a8k.type.exception.AppException;
import jakarta.annotation.PostConstruct; import jakarta.annotation.PostConstruct;

9
src/main/java/a8k/service/appctrl/action/errorhandler/DO_PROCESS_ERROR_TUBE.java → src/main/java/a8k/service/appctrl/mainflowctrl/action/DO_PROCESS_ERROR_TUBE.java

@ -1,9 +1,9 @@
package a8k.service.appctrl.action.errorhandler;
package a8k.service.appctrl.mainflowctrl.action;
import a8k.OS; import a8k.OS;
import a8k.service.appctrl.CondtionMgrService;
import a8k.service.appctrl.action.base.A8kActionStepType;
import a8k.service.appctrl.action.base.A8kStepAction;
import a8k.service.appctrl.mainflowctrl.CondtionMgrService;
import a8k.service.appctrl.mainflowctrl.base.A8kActionStepType;
import a8k.service.appctrl.mainflowctrl.base.A8kStepAction;
import a8k.service.appstate.GStateService; import a8k.service.appstate.GStateService;
import a8k.service.appstate.IncubationPlateMgrService; import a8k.service.appstate.IncubationPlateMgrService;
import a8k.service.appstate.OptScanModuleStateMgrService; import a8k.service.appstate.OptScanModuleStateMgrService;
@ -11,7 +11,6 @@ import a8k.service.appstate.TubeProcessStateMgrService;
import a8k.service.appstate.resource.A8kPublicResourceType; import a8k.service.appstate.resource.A8kPublicResourceType;
import a8k.service.appstate.type.MainFlowCtrlState; import a8k.service.appstate.type.MainFlowCtrlState;
import a8k.service.appstate.type.Tube; import a8k.service.appstate.type.Tube;
import a8k.service.appstate.type.state.A8kWorkState;
import a8k.service.appstate.type.state.TubeState; import a8k.service.appstate.type.state.TubeState;
import a8k.type.exception.AppException; import a8k.type.exception.AppException;
import jakarta.annotation.PostConstruct; import jakarta.annotation.PostConstruct;

6
src/main/java/a8k/service/appctrl/action/ctrl/DO_RESUME.java → src/main/java/a8k/service/appctrl/mainflowctrl/action/DO_RESUME.java

@ -1,7 +1,7 @@
package a8k.service.appctrl.action.ctrl;
package a8k.service.appctrl.mainflowctrl.action;
import a8k.service.appctrl.action.base.A8kActionStepType;
import a8k.service.appctrl.action.base.A8kStepAction;
import a8k.service.appctrl.mainflowctrl.base.A8kActionStepType;
import a8k.service.appctrl.mainflowctrl.base.A8kStepAction;
import a8k.service.appstate.GStateService; import a8k.service.appstate.GStateService;
import a8k.service.appstate.resource.A8kPublicResourceType; import a8k.service.appstate.resource.A8kPublicResourceType;
import a8k.service.appstate.type.MainFlowCtrlState; import a8k.service.appstate.type.MainFlowCtrlState;

6
src/main/java/a8k/service/appctrl/action/ctrl/DO_START.java → src/main/java/a8k/service/appctrl/mainflowctrl/action/DO_START.java

@ -1,7 +1,7 @@
package a8k.service.appctrl.action.ctrl;
package a8k.service.appctrl.mainflowctrl.action;
import a8k.service.appctrl.action.base.A8kActionStepType;
import a8k.service.appctrl.action.base.A8kStepAction;
import a8k.service.appctrl.mainflowctrl.base.A8kActionStepType;
import a8k.service.appctrl.mainflowctrl.base.A8kStepAction;
import a8k.service.appstate.GStateService; import a8k.service.appstate.GStateService;
import a8k.service.appstate.resource.A8kPublicResourceType; import a8k.service.appstate.resource.A8kPublicResourceType;
import a8k.service.appstate.type.MainFlowCtrlState; import a8k.service.appstate.type.MainFlowCtrlState;

6
src/main/java/a8k/service/appctrl/action/ctrl/DO_STOP.java → src/main/java/a8k/service/appctrl/mainflowctrl/action/DO_STOP.java

@ -1,7 +1,7 @@
package a8k.service.appctrl.action.ctrl;
package a8k.service.appctrl.mainflowctrl.action;
import a8k.service.appctrl.action.base.A8kActionStepType;
import a8k.service.appctrl.action.base.A8kStepAction;
import a8k.service.appctrl.mainflowctrl.base.A8kActionStepType;
import a8k.service.appctrl.mainflowctrl.base.A8kStepAction;
import a8k.service.appstate.GStateService; import a8k.service.appstate.GStateService;
import a8k.service.appstate.resource.A8kPublicResourceType; import a8k.service.appstate.resource.A8kPublicResourceType;
import a8k.service.appstate.type.MainFlowCtrlState; import a8k.service.appstate.type.MainFlowCtrlState;

12
src/main/java/a8k/service/appctrl/action/opt/PLATE_OPT_SCAN.java → src/main/java/a8k/service/appctrl/mainflowctrl/action/PLATE_OPT_SCAN.java

@ -1,19 +1,15 @@
package a8k.service.appctrl.action.opt;
package a8k.service.appctrl.mainflowctrl.action;
import a8k.OS;
import a8k.dbservice.type.ReactionResultRecord;
import a8k.service.appctrl.CondtionMgrService;
import a8k.service.appctrl.action.base.A8kActionStepType;
import a8k.service.appctrl.action.base.A8kStepAction;
import a8k.service.appctrl.mainflowctrl.CondtionMgrService;
import a8k.service.appctrl.mainflowctrl.base.A8kActionStepType;
import a8k.service.appctrl.mainflowctrl.base.A8kStepAction;
import a8k.service.appdata.AppReactionResultMgrService; import a8k.service.appdata.AppReactionResultMgrService;
import a8k.service.appstate.GStateService; import a8k.service.appstate.GStateService;
import a8k.service.appstate.IncubationPlateMgrService; import a8k.service.appstate.IncubationPlateMgrService;
import a8k.service.appstate.OptScanModuleStateMgrService; import a8k.service.appstate.OptScanModuleStateMgrService;
import a8k.service.appstate.TubeProcessStateMgrService; import a8k.service.appstate.TubeProcessStateMgrService;
import a8k.service.appstate.resource.A8kPublicResourceType; import a8k.service.appstate.resource.A8kPublicResourceType;
import a8k.service.appstate.type.IncubationSubTank;
import a8k.service.appstate.type.MainFlowCtrlState; import a8k.service.appstate.type.MainFlowCtrlState;
import a8k.service.appstate.type.state.IncubationSubTankState;
import a8k.type.ReactionResult; import a8k.type.ReactionResult;
import a8k.type.exception.AppException; import a8k.type.exception.AppException;
import a8k.type.reaction_result_type.ReactionResultStatus; import a8k.type.reaction_result_type.ReactionResultStatus;

10
src/main/java/a8k/service/appctrl/action/incubate/PROCESS_INCUBATE_COMPLETED_PLATE.java → src/main/java/a8k/service/appctrl/mainflowctrl/action/PROCESS_INCUBATE_COMPLETED_PLATE.java

@ -1,9 +1,9 @@
package a8k.service.appctrl.action.incubate;
package a8k.service.appctrl.mainflowctrl.action;
import a8k.OS; import a8k.OS;
import a8k.service.appctrl.CondtionMgrService;
import a8k.service.appctrl.action.base.A8kActionStepType;
import a8k.service.appctrl.action.base.A8kStepAction;
import a8k.service.appctrl.mainflowctrl.CondtionMgrService;
import a8k.service.appctrl.mainflowctrl.base.A8kActionStepType;
import a8k.service.appctrl.mainflowctrl.base.A8kStepAction;
import a8k.service.appstate.GStateService; import a8k.service.appstate.GStateService;
import a8k.service.appstate.IncubationPlateMgrService; import a8k.service.appstate.IncubationPlateMgrService;
import a8k.service.appstate.OptScanModuleStateMgrService; import a8k.service.appstate.OptScanModuleStateMgrService;
@ -11,9 +11,7 @@ import a8k.service.appstate.TubeProcessStateMgrService;
import a8k.service.appstate.resource.A8kPublicResourceType; import a8k.service.appstate.resource.A8kPublicResourceType;
import a8k.service.appstate.type.IncubationSubTank; import a8k.service.appstate.type.IncubationSubTank;
import a8k.service.appstate.type.MainFlowCtrlState; import a8k.service.appstate.type.MainFlowCtrlState;
import a8k.service.appstate.type.Tube;
import a8k.service.appstate.type.state.IncubationSubTankState; import a8k.service.appstate.type.state.IncubationSubTankState;
import a8k.service.appstate.type.state.TubeState;
import a8k.type.exception.AppException; import a8k.type.exception.AppException;
import jakarta.annotation.PostConstruct; import jakarta.annotation.PostConstruct;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;

18
src/main/java/a8k/service/appctrl/action/mainflow/SEQ1_ENTER_TUBEHOLDER_AND_SCAN.java → src/main/java/a8k/service/appctrl/mainflowctrl/action/SEQ1_ENTER_TUBEHOLDER_AND_SCAN.java

@ -1,13 +1,13 @@
package a8k.service.appctrl.action.mainflow;
package a8k.service.appctrl.mainflowctrl.action;
import a8k.baseservice.appeventbus.AppEventBusService; import a8k.baseservice.appeventbus.AppEventBusService;
import a8k.baseservice.appeventbus.appevent.AppWarningNotifyEvent; import a8k.baseservice.appeventbus.appevent.AppWarningNotifyEvent;
import a8k.hardware.A8kCanBusService; import a8k.hardware.A8kCanBusService;
import a8k.hardware.type.a8kcanprotocol.A8kEcode; import a8k.hardware.type.a8kcanprotocol.A8kEcode;
import a8k.service.appctrl.CondtionMgrService;
import a8k.service.appctrl.AppTubeSettingMgrService;
import a8k.service.appctrl.action.base.A8kActionStepType;
import a8k.service.appctrl.action.base.A8kStepAction;
import a8k.service.appctrl.mainflowctrl.CondtionMgrService;
import a8k.service.appctrl.TubeSettingMgrService;
import a8k.service.appctrl.mainflowctrl.base.A8kActionStepType;
import a8k.service.appctrl.mainflowctrl.base.A8kStepAction;
import a8k.service.appstate.GStateService; import a8k.service.appstate.GStateService;
import a8k.service.appstate.TubeProcessContextMgrService; import a8k.service.appstate.TubeProcessContextMgrService;
import a8k.service.appstate.resource.A8kPublicResourceType; import a8k.service.appstate.resource.A8kPublicResourceType;
@ -69,7 +69,7 @@ public class SEQ1_ENTER_TUBEHOLDER_AND_SCAN extends A8kStepAction {
@Resource @Resource
A8kCanBusService canBus; A8kCanBusService canBus;
@Resource @Resource
AppTubeSettingMgrService appTubeSettingMgrService;
TubeSettingMgrService tubeSettingMgrService;
@Resource @Resource
TubeProcessContextMgrService tubeProcessContextMgrService; TubeProcessContextMgrService tubeProcessContextMgrService;
@ -128,7 +128,7 @@ public class SEQ1_ENTER_TUBEHOLDER_AND_SCAN extends A8kStepAction {
TubeHolder parseScanResult(SampleScanResult scanResult) throws AppException { TubeHolder parseScanResult(SampleScanResult scanResult) throws AppException {
TubeHolder state = new TubeHolder(); TubeHolder state = new TubeHolder();
TubeHolderSetting setting = appTubeSettingMgrService.getThelastActiveTubeHolderSettingAndLock();
TubeHolderSetting setting = tubeSettingMgrService.getThelastActiveTubeHolderSettingAndLock();
try { try {
//获取试管架类型 //获取试管架类型
A8kTubeHolderType tubeHolderType = A8kTubeHolderType.of(scanResult.tubeHolderType); A8kTubeHolderType tubeHolderType = A8kTubeHolderType.of(scanResult.tubeHolderType);
@ -184,12 +184,12 @@ public class SEQ1_ENTER_TUBEHOLDER_AND_SCAN extends A8kStepAction {
//设置试管架状态 //设置试管架状态
state.state = TubeHolderState.PROCESSING; state.state = TubeHolderState.PROCESSING;
//删除之前的试管架配置 //删除之前的试管架配置
appTubeSettingMgrService.removeTubeHolderSetting(setting);
tubeSettingMgrService.removeTubeHolderSetting(setting);
return state; return state;
} catch (AppException e) { } catch (AppException e) {
//回滚部分状态 //回滚部分状态
appTubeSettingMgrService.removeTubeHolderSetting(setting);
tubeSettingMgrService.removeTubeHolderSetting(setting);
throw e; throw e;
} }
} }

8
src/main/java/a8k/service/appctrl/action/mainflow/SEQ2_SWITCH_TO_THE_NEXT_TUBE.java → src/main/java/a8k/service/appctrl/mainflowctrl/action/SEQ2_SWITCH_TO_THE_NEXT_TUBE.java

@ -1,8 +1,8 @@
package a8k.service.appctrl.action.mainflow;
package a8k.service.appctrl.mainflowctrl.action;
import a8k.service.appctrl.CondtionMgrService;
import a8k.service.appctrl.action.base.A8kActionStepType;
import a8k.service.appctrl.action.base.A8kStepAction;
import a8k.service.appctrl.mainflowctrl.CondtionMgrService;
import a8k.service.appctrl.mainflowctrl.base.A8kActionStepType;
import a8k.service.appctrl.mainflowctrl.base.A8kStepAction;
import a8k.service.appstate.*; import a8k.service.appstate.*;
import a8k.service.appstate.resource.A8kPublicResourceType; import a8k.service.appstate.resource.A8kPublicResourceType;
import a8k.service.appstate.type.MainFlowCtrlState; import a8k.service.appstate.type.MainFlowCtrlState;

8
src/main/java/a8k/service/appctrl/action/mainflow/SEQ3_APPLAY_RESOURCE.java → src/main/java/a8k/service/appctrl/mainflowctrl/action/SEQ3_APPLAY_RESOURCE.java

@ -1,11 +1,11 @@
package a8k.service.appctrl.action.mainflow;
package a8k.service.appctrl.mainflowctrl.action;
import a8k.baseservice.AppExceptionBuilder; import a8k.baseservice.AppExceptionBuilder;
import a8k.hardware.type.a8kcanprotocol.A8kEcode; import a8k.hardware.type.a8kcanprotocol.A8kEcode;
import a8k.service.appctrl.CondtionMgrService;
import a8k.service.appctrl.mainflowctrl.CondtionMgrService;
import a8k.service.appdata.AppProjInfoMgrService; import a8k.service.appdata.AppProjInfoMgrService;
import a8k.service.appctrl.action.base.A8kActionStepType;
import a8k.service.appctrl.action.base.A8kStepAction;
import a8k.service.appctrl.mainflowctrl.base.A8kActionStepType;
import a8k.service.appctrl.mainflowctrl.base.A8kStepAction;
import a8k.service.appstate.*; import a8k.service.appstate.*;
import a8k.service.appstate.resource.A8kPublicResourceType; import a8k.service.appstate.resource.A8kPublicResourceType;
import a8k.service.appstate.type.MainFlowCtrlState; import a8k.service.appstate.type.MainFlowCtrlState;

8
src/main/java/a8k/service/appctrl/action/mainflow/SEQ4_PRE_PROCESS.java → src/main/java/a8k/service/appctrl/mainflowctrl/action/SEQ4_PRE_PROCESS.java

@ -1,12 +1,12 @@
package a8k.service.appctrl.action.mainflow;
package a8k.service.appctrl.mainflowctrl.action;
import a8k.OS; import a8k.OS;
import a8k.service.appctrl.CondtionMgrService;
import a8k.service.appctrl.mainflowctrl.CondtionMgrService;
import a8k.service.appdata.AppProjInfoMgrService; import a8k.service.appdata.AppProjInfoMgrService;
import a8k.baseservice.AppExceptionBuilder; import a8k.baseservice.AppExceptionBuilder;
import a8k.baseservice.appeventbus.AppEventBusService; import a8k.baseservice.appeventbus.AppEventBusService;
import a8k.service.appctrl.action.base.A8kActionStepType;
import a8k.service.appctrl.action.base.A8kStepAction;
import a8k.service.appctrl.mainflowctrl.base.A8kActionStepType;
import a8k.service.appctrl.mainflowctrl.base.A8kStepAction;
import a8k.service.appstate.*; import a8k.service.appstate.*;
import a8k.service.appstate.resource.A8kPublicResourceType; import a8k.service.appstate.resource.A8kPublicResourceType;
import a8k.service.appstate.type.Tube; import a8k.service.appstate.type.Tube;

8
src/main/java/a8k/service/appctrl/action/mainflow/SEQ5_PROCESS.java → src/main/java/a8k/service/appctrl/mainflowctrl/action/SEQ5_PROCESS.java

@ -1,10 +1,10 @@
package a8k.service.appctrl.action.mainflow;
package a8k.service.appctrl.mainflowctrl.action;
import a8k.OS; import a8k.OS;
import a8k.baseservice.AppExceptionBuilder; import a8k.baseservice.AppExceptionBuilder;
import a8k.service.appctrl.CondtionMgrService;
import a8k.service.appctrl.action.base.A8kActionStepType;
import a8k.service.appctrl.action.base.A8kStepAction;
import a8k.service.appctrl.mainflowctrl.CondtionMgrService;
import a8k.service.appctrl.mainflowctrl.base.A8kActionStepType;
import a8k.service.appctrl.mainflowctrl.base.A8kStepAction;
import a8k.service.appstate.*; import a8k.service.appstate.*;
import a8k.service.appstate.resource.A8kPublicResourceType; import a8k.service.appstate.resource.A8kPublicResourceType;
import a8k.service.appstate.type.MainFlowCtrlState; import a8k.service.appstate.type.MainFlowCtrlState;

8
src/main/java/a8k/service/appctrl/action/mainflow/SEQ6_POST_PROCESS.java → src/main/java/a8k/service/appctrl/mainflowctrl/action/SEQ6_POST_PROCESS.java

@ -1,10 +1,10 @@
package a8k.service.appctrl.action.mainflow;
package a8k.service.appctrl.mainflowctrl.action;
import a8k.OS; import a8k.OS;
import a8k.baseservice.AppExceptionBuilder; import a8k.baseservice.AppExceptionBuilder;
import a8k.service.appctrl.CondtionMgrService;
import a8k.service.appctrl.action.base.A8kActionStepType;
import a8k.service.appctrl.action.base.A8kStepAction;
import a8k.service.appctrl.mainflowctrl.CondtionMgrService;
import a8k.service.appctrl.mainflowctrl.base.A8kActionStepType;
import a8k.service.appctrl.mainflowctrl.base.A8kStepAction;
import a8k.service.appstate.*; import a8k.service.appstate.*;
import a8k.service.appstate.resource.A8kPublicResourceType; import a8k.service.appstate.resource.A8kPublicResourceType;
import a8k.service.appstate.type.MainFlowCtrlState; import a8k.service.appstate.type.MainFlowCtrlState;

8
src/main/java/a8k/service/appctrl/action/mainflow/SEQ7_EJECT_TUBEHOLDER.java → src/main/java/a8k/service/appctrl/mainflowctrl/action/SEQ7_EJECT_TUBEHOLDER.java

@ -1,8 +1,8 @@
package a8k.service.appctrl.action.mainflow;
package a8k.service.appctrl.mainflowctrl.action;
import a8k.service.appctrl.CondtionMgrService;
import a8k.service.appctrl.action.base.A8kActionStepType;
import a8k.service.appctrl.action.base.A8kStepAction;
import a8k.service.appctrl.mainflowctrl.CondtionMgrService;
import a8k.service.appctrl.mainflowctrl.base.A8kActionStepType;
import a8k.service.appctrl.mainflowctrl.base.A8kStepAction;
import a8k.service.appstate.GStateService; import a8k.service.appstate.GStateService;
import a8k.service.appstate.type.MainFlowCtrlState; import a8k.service.appstate.type.MainFlowCtrlState;
import a8k.service.appstate.resource.A8kPublicResourceType; import a8k.service.appstate.resource.A8kPublicResourceType;

2
src/main/java/a8k/service/appctrl/action/base/A8kActionStepType.java → src/main/java/a8k/service/appctrl/mainflowctrl/base/A8kActionStepType.java

@ -1,4 +1,4 @@
package a8k.service.appctrl.action.base;
package a8k.service.appctrl.mainflowctrl.base;
public enum A8kActionStepType { public enum A8kActionStepType {
DO_START,//启动 DO_START,//启动

3
src/main/java/a8k/service/appctrl/type/A8kErrorContext.java → src/main/java/a8k/service/appctrl/mainflowctrl/base/A8kErrorContext.java

@ -1,6 +1,5 @@
package a8k.service.appctrl.type;
package a8k.service.appctrl.mainflowctrl.base;
import a8k.service.appctrl.action.base.A8kActionStepType;
import a8k.type.ecode.AppError; import a8k.type.ecode.AppError;
public class A8kErrorContext { public class A8kErrorContext {

2
src/main/java/a8k/service/appctrl/action/base/A8kStepAction.java → src/main/java/a8k/service/appctrl/mainflowctrl/base/A8kStepAction.java

@ -1,4 +1,4 @@
package a8k.service.appctrl.action.base;
package a8k.service.appctrl.mainflowctrl.base;
import a8k.service.appstate.resource.A8kPublicResourceType; import a8k.service.appstate.resource.A8kPublicResourceType;

8
src/main/java/a8k/service/appctrl/type/app_consumables_mgr_service/ConsumablesScanResult.java

@ -1,8 +0,0 @@
package a8k.service.appctrl.type.app_consumables_mgr_service;
public class ConsumablesScanResult {
public Integer chNum;
public ScanResultState state;
public Integer projIndex;
public String lotId;
}

2
src/main/java/a8k/service/appstate/GStateService.java

@ -1,7 +1,7 @@
package a8k.service.appstate; package a8k.service.appstate;
import a8k.constant.AppConstant; import a8k.constant.AppConstant;
import a8k.service.appctrl.type.app_consumables_mgr_service.ConsumableState;
import a8k.type.consumables.ConsumableState;
import a8k.service.appstate.type.*; import a8k.service.appstate.type.*;
import a8k.service.appstate.type.state.A8kWorkState; import a8k.service.appstate.type.state.A8kWorkState;
import a8k.service.appstate.type.state.TubeHolderState; import a8k.service.appstate.type.state.TubeHolderState;

2
src/main/java/a8k/service/appstate/type/MainFlowCtrlState.java

@ -1,6 +1,6 @@
package a8k.service.appstate.type; package a8k.service.appstate.type;
import a8k.service.appctrl.type.A8kErrorContext;
import a8k.service.appctrl.mainflowctrl.base.A8kErrorContext;
import a8k.service.appstate.type.state.A8kWorkState; import a8k.service.appstate.type.state.A8kWorkState;
import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonIgnore;

2
src/main/java/a8k/service/appctrl/type/app_consumables_mgr_service/ConsumableState.java → src/main/java/a8k/type/consumables/ConsumableState.java

@ -1,4 +1,4 @@
package a8k.service.appctrl.type.app_consumables_mgr_service;
package a8k.type.consumables;
import java.util.Date; import java.util.Date;

2
src/main/java/a8k/service/appctrl/type/app_consumables_mgr_service/LarBSGroup.java → src/main/java/a8k/type/consumables/LarBSGroup.java

@ -1,4 +1,4 @@
package a8k.service.appctrl.type.app_consumables_mgr_service;
package a8k.type.consumables;
public class LarBSGroup { public class LarBSGroup {
public Integer projIndex; //项目ID public Integer projIndex; //项目ID

2
src/main/java/a8k/service/appctrl/type/app_consumables_mgr_service/LittBSGroup.java → src/main/java/a8k/type/consumables/LittBSGroup.java

@ -1,4 +1,4 @@
package a8k.service.appctrl.type.app_consumables_mgr_service;
package a8k.type.consumables;
public class LittBSGroup { public class LittBSGroup {
public Integer projIndex; //项目ID public Integer projIndex; //项目ID

2
src/main/java/a8k/service/appctrl/type/app_consumables_mgr_service/ReactionPlateGroup.java → src/main/java/a8k/type/consumables/ReactionPlateGroup.java

@ -1,4 +1,4 @@
package a8k.service.appctrl.type.app_consumables_mgr_service;
package a8k.type.consumables;
public class ReactionPlateGroup { public class ReactionPlateGroup {
public Integer projIndex; //项目ID public Integer projIndex; //项目ID

2
src/main/java/a8k/service/appctrl/type/app_consumables_mgr_service/ScanResultState.java → src/main/java/a8k/type/consumables/ScanResultState.java

@ -1,4 +1,4 @@
package a8k.service.appctrl.type.app_consumables_mgr_service;
package a8k.type.consumables;
public enum ScanResultState { public enum ScanResultState {
PASS, //通过 PASS, //通过

2
src/main/java/a8k/service/appctrl/type/app_consumables_mgr_service/Tips.java → src/main/java/a8k/type/consumables/Tips.java

@ -1,4 +1,4 @@
package a8k.service.appctrl.type.app_consumables_mgr_service;
package a8k.type.consumables;
public class Tips { public class Tips {
public Integer tipNum = 0;//剩余可用数量 public Integer tipNum = 0;//剩余可用数量
Loading…
Cancel
Save