22 changed files with 241 additions and 130 deletions
-
2src/main/java/a8k/service/app/appctrl/mainflowctrl/CondtionMgrService.java
-
2src/main/java/a8k/service/app/appctrl/mainflowctrl/action/DO_FINISH_TUBE_PROCESS.java
-
4src/main/java/a8k/service/app/appctrl/mainflowctrl/action/DO_PROCESS_ERROR_PLATE.java
-
2src/main/java/a8k/service/app/appctrl/mainflowctrl/action/DO_START.java
-
2src/main/java/a8k/service/app/appctrl/mainflowctrl/action/DO_STOP.java
-
12src/main/java/a8k/service/app/appctrl/mainflowctrl/action/PLATE_OPT_SCAN.java
-
2src/main/java/a8k/service/app/appctrl/mainflowctrl/action/PROCESS_INCUBATE_COMPLETED_PLATE.java
-
30src/main/java/a8k/service/app/appctrl/mainflowctrl/action/SEQ1_ENTER_TUBEHOLDER_AND_SCAN.java
-
2src/main/java/a8k/service/app/appctrl/mainflowctrl/action/SEQ2_SWITCH_TO_THE_NEXT_TUBE.java
-
44src/main/java/a8k/service/app/appctrl/mainflowctrl/action/SEQ4_PRE_PROCESS.java
-
2src/main/java/a8k/service/app/appctrl/mainflowctrl/action/SEQ5_PROCESS.java
-
26src/main/java/a8k/service/app/appctrl/mainflowctrl/action/SEQ6_POST_PROCESS.java
-
2src/main/java/a8k/service/app/appctrl/mainflowctrl/action/SEQ7_EJECT_TUBEHOLDER.java
-
2src/main/java/a8k/service/app/appctrl/mainflowctrl/base/A8kStepAction.java
-
4src/main/java/a8k/service/app/devicectrl/ctrlservice/DeviceInitCtrlService.java
-
18src/main/java/a8k/service/app/devicectrl/ctrlservice/OptScanModuleCtrlService.java
-
117src/main/java/a8k/service/test/MainflowCtrlTestService.java
-
15src/main/java/a8k/service/test/state/TestModeState.java
-
9src/main/java/a8k/service/test/state/VirtualDevice.java
-
8src/main/java/a8k/type/exception/MutiAppException.java
-
51src/main/java/a8k/utils/ActionParallerExceutor.java
-
15src/main/java/a8k/utils/AppExceptionUtils.java
@ -0,0 +1,51 @@ |
|||
package a8k.utils; |
|||
|
|||
import a8k.OS; |
|||
import a8k.type.ecode.AppError; |
|||
import a8k.type.exception.AppException; |
|||
import a8k.type.exception.MutiAppException; |
|||
|
|||
import java.util.ArrayList; |
|||
import java.util.List; |
|||
import java.util.Objects; |
|||
import java.util.concurrent.*; |
|||
|
|||
public class ActionParallerExceutor { |
|||
ThreadPoolExecutor executor = new ThreadPoolExecutor(3, 3, 0, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<>(10)); |
|||
List<Future<AppException>> futures = new ArrayList<>(); |
|||
|
|||
// var doPrepareReactionPlateFuture = executor.submit(() -> ZFnCall.callfn(this::prepareReactionPlate)); |
|||
//摇匀并取盖 |
|||
// var doShakeAndTakeCapFuture = executor.submit(() -> ZFnCall.callfn(this::shakeAndTakeCap)); |
|||
//准备Hbot Tip |
|||
// var doHbotPrepareTipFuture = executor.submit(() -> ZFnCall.callfn(this::hbotPrepareTip)); |
|||
|
|||
|
|||
public void submit(ZFnCall.Fn fn) { |
|||
var future = executor.submit(() -> ZFnCall.callfn(fn)); |
|||
futures.add(future); |
|||
} |
|||
|
|||
public MutiAppException waitAll() { |
|||
futures.forEach(this::wait); |
|||
List<AppException> exceptions = new java.util.ArrayList<>(List.of()); |
|||
try { |
|||
for (Future<AppException> future : futures) { |
|||
exceptions.add(future.get()); |
|||
} |
|||
} catch (InterruptedException | ExecutionException ignored) { |
|||
} |
|||
exceptions.removeIf(Objects::isNull); |
|||
return new MutiAppException(exceptions); |
|||
// List<AppError> errors = new java.util.ArrayList<>(List.of()); |
|||
// exceptions.forEach(e -> errors.add(e.getError())); |
|||
} |
|||
|
|||
|
|||
void wait(Future<?> future) { |
|||
while (!future.isDone()) { |
|||
OS.forceSleep(100); |
|||
} |
|||
} |
|||
|
|||
} |
@ -0,0 +1,15 @@ |
|||
package a8k.utils; |
|||
|
|||
import a8k.type.ecode.AppError; |
|||
import a8k.type.exception.AppException; |
|||
|
|||
import java.util.List; |
|||
|
|||
public class AppExceptionUtils { |
|||
|
|||
public static List<AppError> toAppErrorList(List<AppException> exceptions) { |
|||
List<AppError> errors = new java.util.ArrayList<>(List.of()); |
|||
exceptions.forEach(e -> errors.add(e.getError())); |
|||
return errors; |
|||
} |
|||
} |
Write
Preview
Loading…
Cancel
Save
Reference in new issue