28 changed files with 1535 additions and 10 deletions
-
13src/main/java/com/iflytop/colortitration/app/cache/DevicePositionData.java
-
39src/main/java/com/iflytop/colortitration/app/command/control/heat/HeatRodCloseCommand.java
-
40src/main/java/com/iflytop/colortitration/app/command/control/heat/HeatRodOpenCommand.java
-
42src/main/java/com/iflytop/colortitration/app/command/control/pipeline/PipelineCleanStartCommand.java
-
40src/main/java/com/iflytop/colortitration/app/command/control/pipeline/PipelineCleanStopCommand.java
-
41src/main/java/com/iflytop/colortitration/app/command/control/pipeline/PipelineDrainStartCommand.java
-
40src/main/java/com/iflytop/colortitration/app/command/control/pipeline/PipelineDrainStopCommand.java
-
41src/main/java/com/iflytop/colortitration/app/command/control/pipeline/PipelinePreFillStartCommand.java
-
40src/main/java/com/iflytop/colortitration/app/command/control/pipeline/PipelinePreFillStopCommand.java
-
29src/main/java/com/iflytop/colortitration/app/command/control/pipeline/WastePoolDrainStartCommand.java
-
29src/main/java/com/iflytop/colortitration/app/command/control/pipeline/WastePoolDrainStopCommand.java
-
41src/main/java/com/iflytop/colortitration/app/command/control/solution/ShakeStartCommand.java
-
39src/main/java/com/iflytop/colortitration/app/command/control/solution/ShakeStopCommand.java
-
48src/main/java/com/iflytop/colortitration/app/command/control/solution/SolutionAddCommand.java
-
40src/main/java/com/iflytop/colortitration/app/command/control/solution/SolutionStopCommand.java
-
75src/main/java/com/iflytop/colortitration/app/command/control/transfer/HeatAreaMoveTitrationAreaCommand.java
-
75src/main/java/com/iflytop/colortitration/app/command/control/transfer/TitrationAreaMoveHeatAreaCommand.java
-
70src/main/java/com/iflytop/colortitration/app/command/control/transfer/TitrationMoveTrayAreaCommand.java
-
76src/main/java/com/iflytop/colortitration/app/command/control/transfer/TrayMoveTitrationAreaCommand.java
-
72src/main/java/com/iflytop/colortitration/app/common/enums/DevicePositionCode.java
-
35src/main/java/com/iflytop/colortitration/app/common/enums/DevicePositionType.java
-
1src/main/java/com/iflytop/colortitration/app/service/DeviceInitService.java
-
25src/main/java/com/iflytop/colortitration/app/service/module/HeatModuleService.java
-
348src/main/java/com/iflytop/colortitration/app/service/module/TitrationModuleService.java
-
151src/main/java/com/iflytop/colortitration/app/service/module/TransferModuleService.java
-
28src/main/java/com/iflytop/colortitration/common/model/entity/Position.java
-
17src/main/java/com/iflytop/colortitration/common/result/ResultCode.java
-
10src/main/java/com/iflytop/colortitration/common/service/PositionService.java
@ -0,0 +1,13 @@ |
|||
package com.iflytop.colortitration.app.cache; |
|||
|
|||
|
|||
public class DevicePositionData { |
|||
|
|||
public static final String HEAT_AREA_1 = ""; |
|||
public static final String HEAT_AREA_2 = "HEAT_AREA_2"; |
|||
|
|||
public static final String TITRATION_AREA_1 = "TITRATION_AREA_1"; // |
|||
public static final String TITRATION_AREA_2 = "TITRATION_AREA_2"; |
|||
|
|||
|
|||
} |
@ -0,0 +1,39 @@ |
|||
package com.iflytop.colortitration.app.command.control.heat; |
|||
|
|||
import com.iflytop.colortitration.app.common.annotation.CommandDebugMapping; |
|||
import com.iflytop.colortitration.app.common.enums.MultipleModuleCode; |
|||
import com.iflytop.colortitration.app.core.command.BaseCommandHandler; |
|||
import com.iflytop.colortitration.app.model.dto.CommandDTO; |
|||
import com.iflytop.colortitration.app.service.module.HeatModuleService; |
|||
import com.iflytop.colortitration.common.exception.AppException; |
|||
import com.iflytop.colortitration.common.result.ResultCode; |
|||
import lombok.RequiredArgsConstructor; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
import org.apache.commons.lang3.StringUtils; |
|||
import org.springframework.stereotype.Component; |
|||
|
|||
import java.util.concurrent.CompletableFuture; |
|||
|
|||
/** |
|||
* 关闭加热棒 |
|||
*/ |
|||
@Slf4j |
|||
@Component |
|||
@RequiredArgsConstructor |
|||
@CommandDebugMapping("heater_stop") |
|||
public class HeatRodCloseCommand extends BaseCommandHandler { |
|||
private final HeatModuleService heatModuleService; |
|||
|
|||
@Override |
|||
public CompletableFuture<Void> handle(CommandDTO commandDTO) { |
|||
String heatModuleCodeStr = commandDTO.getStringParam("heatModuleCode"); |
|||
if (StringUtils.isEmpty(heatModuleCodeStr)) { |
|||
throw new AppException(ResultCode.INVALID_PARAMETER);//参数缺失 |
|||
} |
|||
MultipleModuleCode heatModuleCode = MultipleModuleCode.valueOf(heatModuleCodeStr); |
|||
return runAsync(() -> { |
|||
heatModuleService.closeHeatRod(heatModuleCode); |
|||
}); |
|||
} |
|||
} |
|||
|
@ -0,0 +1,40 @@ |
|||
package com.iflytop.colortitration.app.command.control.heat; |
|||
|
|||
import com.iflytop.colortitration.app.common.annotation.CommandDebugMapping; |
|||
import com.iflytop.colortitration.app.common.enums.MultipleModuleCode; |
|||
import com.iflytop.colortitration.app.core.command.BaseCommandHandler; |
|||
import com.iflytop.colortitration.app.model.dto.CommandDTO; |
|||
import com.iflytop.colortitration.app.service.module.HeatModuleService; |
|||
import com.iflytop.colortitration.common.exception.AppException; |
|||
import com.iflytop.colortitration.common.result.ResultCode; |
|||
import lombok.RequiredArgsConstructor; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
import org.apache.commons.lang3.StringUtils; |
|||
import org.springframework.stereotype.Component; |
|||
|
|||
import java.util.concurrent.CompletableFuture; |
|||
|
|||
/** |
|||
* 开启加热棒 |
|||
*/ |
|||
@Slf4j |
|||
@Component |
|||
@RequiredArgsConstructor |
|||
@CommandDebugMapping("heater_start") |
|||
public class HeatRodOpenCommand extends BaseCommandHandler { |
|||
private final HeatModuleService heatModuleService; |
|||
|
|||
@Override |
|||
public CompletableFuture<Void> handle(CommandDTO commandDTO) { |
|||
String heatModuleCodeStr = commandDTO.getStringParam("heatModuleCode"); |
|||
Double temperature = commandDTO.getDoubleParam("temperature"); |
|||
if (StringUtils.isEmpty(heatModuleCodeStr) || temperature == null) { |
|||
throw new AppException(ResultCode.INVALID_PARAMETER);//参数缺失 |
|||
} |
|||
MultipleModuleCode heatModuleCode = MultipleModuleCode.valueOf(heatModuleCodeStr); |
|||
return runAsync(() -> { |
|||
heatModuleService.openHeatRod(heatModuleCode, temperature); |
|||
}); |
|||
} |
|||
} |
|||
|
@ -0,0 +1,42 @@ |
|||
package com.iflytop.colortitration.app.command.control.pipeline; |
|||
|
|||
import com.iflytop.colortitration.app.common.annotation.CommandDebugMapping; |
|||
import com.iflytop.colortitration.app.common.enums.MultipleModuleCode; |
|||
import com.iflytop.colortitration.app.core.command.BaseCommandHandler; |
|||
import com.iflytop.colortitration.app.model.dto.CommandDTO; |
|||
import com.iflytop.colortitration.app.service.module.TitrationModuleService; |
|||
import com.iflytop.colortitration.common.exception.AppException; |
|||
import com.iflytop.colortitration.common.result.ResultCode; |
|||
import lombok.RequiredArgsConstructor; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
import org.apache.commons.lang3.StringUtils; |
|||
import org.springframework.stereotype.Component; |
|||
|
|||
import java.util.concurrent.CompletableFuture; |
|||
|
|||
/** |
|||
* 开始清洗管路 |
|||
*/ |
|||
@Slf4j |
|||
@Component |
|||
@RequiredArgsConstructor |
|||
@CommandDebugMapping("solution_clean_start") |
|||
public class PipelineCleanStartCommand extends BaseCommandHandler { |
|||
private final TitrationModuleService titrationModuleService; |
|||
|
|||
|
|||
@Override |
|||
public CompletableFuture<Void> handle(CommandDTO commandDTO) { |
|||
Integer solutionId = commandDTO.getIntegerParam("solutionId"); |
|||
String titrationModuleCodeStr = commandDTO.getStringParam("titrationModuleCode"); |
|||
if (StringUtils.isEmpty(titrationModuleCodeStr) || solutionId == null) { |
|||
throw new AppException(ResultCode.INVALID_PARAMETER);//参数缺失 |
|||
} |
|||
MultipleModuleCode titrationModuleCode = MultipleModuleCode.valueOf(titrationModuleCodeStr); |
|||
return runAsync(() -> { |
|||
titrationModuleService.titrationMotorMoveToWastePool(titrationModuleCode);//移动到废液池 |
|||
titrationModuleService.cleanStart(titrationModuleCode, solutionId);//开始清洗 |
|||
}); |
|||
} |
|||
} |
|||
|
@ -0,0 +1,40 @@ |
|||
package com.iflytop.colortitration.app.command.control.pipeline; |
|||
|
|||
import com.iflytop.colortitration.app.common.annotation.CommandDebugMapping; |
|||
import com.iflytop.colortitration.app.common.enums.MultipleModuleCode; |
|||
import com.iflytop.colortitration.app.core.command.BaseCommandHandler; |
|||
import com.iflytop.colortitration.app.model.dto.CommandDTO; |
|||
import com.iflytop.colortitration.app.service.module.TitrationModuleService; |
|||
import com.iflytop.colortitration.common.exception.AppException; |
|||
import com.iflytop.colortitration.common.result.ResultCode; |
|||
import lombok.RequiredArgsConstructor; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
import org.apache.commons.lang3.StringUtils; |
|||
import org.springframework.stereotype.Component; |
|||
|
|||
import java.util.concurrent.CompletableFuture; |
|||
|
|||
/** |
|||
* 停止清洗管路 |
|||
*/ |
|||
@Slf4j |
|||
@Component |
|||
@RequiredArgsConstructor |
|||
@CommandDebugMapping("solution_clean_stop") |
|||
public class PipelineCleanStopCommand extends BaseCommandHandler { |
|||
private final TitrationModuleService titrationModuleService; |
|||
|
|||
@Override |
|||
public CompletableFuture<Void> handle(CommandDTO commandDTO) { |
|||
Integer solutionId = commandDTO.getIntegerParam("solutionId"); |
|||
String titrationModuleCodeStr = commandDTO.getStringParam("titrationModuleCode"); |
|||
if (StringUtils.isEmpty(titrationModuleCodeStr) || solutionId == null) { |
|||
throw new AppException(ResultCode.INVALID_PARAMETER);//参数缺失 |
|||
} |
|||
MultipleModuleCode titrationModuleCode = MultipleModuleCode.valueOf(titrationModuleCodeStr); |
|||
return runAsync(() -> { |
|||
titrationModuleService.cleanStop(titrationModuleCode, solutionId); |
|||
}); |
|||
} |
|||
} |
|||
|
@ -0,0 +1,41 @@ |
|||
package com.iflytop.colortitration.app.command.control.pipeline; |
|||
|
|||
import com.iflytop.colortitration.app.common.annotation.CommandDebugMapping; |
|||
import com.iflytop.colortitration.app.common.enums.MultipleModuleCode; |
|||
import com.iflytop.colortitration.app.core.command.BaseCommandHandler; |
|||
import com.iflytop.colortitration.app.model.dto.CommandDTO; |
|||
import com.iflytop.colortitration.app.service.module.TitrationModuleService; |
|||
import com.iflytop.colortitration.common.exception.AppException; |
|||
import com.iflytop.colortitration.common.result.ResultCode; |
|||
import lombok.RequiredArgsConstructor; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
import org.apache.commons.lang3.StringUtils; |
|||
import org.springframework.stereotype.Component; |
|||
|
|||
import java.util.concurrent.CompletableFuture; |
|||
|
|||
/** |
|||
* 开始排空管路 |
|||
*/ |
|||
@Slf4j |
|||
@Component |
|||
@RequiredArgsConstructor |
|||
@CommandDebugMapping("solution_drain_start") |
|||
public class PipelineDrainStartCommand extends BaseCommandHandler { |
|||
private final TitrationModuleService titrationModuleService; |
|||
|
|||
@Override |
|||
public CompletableFuture<Void> handle(CommandDTO commandDTO) { |
|||
Integer solutionId = commandDTO.getIntegerParam("solutionId"); |
|||
String titrationModuleCodeStr = commandDTO.getStringParam("titrationModuleCode"); |
|||
if (StringUtils.isEmpty(titrationModuleCodeStr) || solutionId == null) { |
|||
throw new AppException(ResultCode.INVALID_PARAMETER);//参数缺失 |
|||
} |
|||
MultipleModuleCode titrationModuleCode = MultipleModuleCode.valueOf(titrationModuleCodeStr); |
|||
return runAsync(() -> { |
|||
titrationModuleService.titrationMotorMoveToWastePool(titrationModuleCode);//移动到废液池 |
|||
titrationModuleService.drainStart(titrationModuleCode, solutionId);//开始排空 |
|||
}); |
|||
} |
|||
} |
|||
|
@ -0,0 +1,40 @@ |
|||
package com.iflytop.colortitration.app.command.control.pipeline; |
|||
|
|||
import com.iflytop.colortitration.app.common.annotation.CommandDebugMapping; |
|||
import com.iflytop.colortitration.app.common.enums.MultipleModuleCode; |
|||
import com.iflytop.colortitration.app.core.command.BaseCommandHandler; |
|||
import com.iflytop.colortitration.app.model.dto.CommandDTO; |
|||
import com.iflytop.colortitration.app.service.module.TitrationModuleService; |
|||
import com.iflytop.colortitration.common.exception.AppException; |
|||
import com.iflytop.colortitration.common.result.ResultCode; |
|||
import lombok.RequiredArgsConstructor; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
import org.apache.commons.lang3.StringUtils; |
|||
import org.springframework.stereotype.Component; |
|||
|
|||
import java.util.concurrent.CompletableFuture; |
|||
|
|||
/** |
|||
* 停止排空管路 |
|||
*/ |
|||
@Slf4j |
|||
@Component |
|||
@RequiredArgsConstructor |
|||
@CommandDebugMapping("solution_drain_stop") |
|||
public class PipelineDrainStopCommand extends BaseCommandHandler { |
|||
private final TitrationModuleService titrationModuleService; |
|||
|
|||
@Override |
|||
public CompletableFuture<Void> handle(CommandDTO commandDTO) { |
|||
Integer solutionId = commandDTO.getIntegerParam("solutionId"); |
|||
String motorCode = commandDTO.getStringParam("titrationModuleCode"); |
|||
if (StringUtils.isEmpty(motorCode) || solutionId == null) { |
|||
throw new AppException(ResultCode.INVALID_PARAMETER); |
|||
} |
|||
MultipleModuleCode titrationModuleCode = MultipleModuleCode.valueOf(motorCode); |
|||
return runAsync(() -> { |
|||
titrationModuleService.drainStop(titrationModuleCode, solutionId); |
|||
}); |
|||
} |
|||
} |
|||
|
@ -0,0 +1,41 @@ |
|||
package com.iflytop.colortitration.app.command.control.pipeline; |
|||
|
|||
import com.iflytop.colortitration.app.common.annotation.CommandDebugMapping; |
|||
import com.iflytop.colortitration.app.common.enums.MultipleModuleCode; |
|||
import com.iflytop.colortitration.app.core.command.BaseCommandHandler; |
|||
import com.iflytop.colortitration.app.model.dto.CommandDTO; |
|||
import com.iflytop.colortitration.app.service.module.TitrationModuleService; |
|||
import com.iflytop.colortitration.common.exception.AppException; |
|||
import com.iflytop.colortitration.common.result.ResultCode; |
|||
import lombok.RequiredArgsConstructor; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
import org.apache.commons.lang3.StringUtils; |
|||
import org.springframework.stereotype.Component; |
|||
|
|||
import java.util.concurrent.CompletableFuture; |
|||
|
|||
/** |
|||
* 开始预充管路 |
|||
*/ |
|||
@Slf4j |
|||
@Component |
|||
@RequiredArgsConstructor |
|||
@CommandDebugMapping("solution_pre_fill_start") |
|||
public class PipelinePreFillStartCommand extends BaseCommandHandler { |
|||
private final TitrationModuleService titrationModuleService; |
|||
|
|||
@Override |
|||
public CompletableFuture<Void> handle(CommandDTO commandDTO) { |
|||
Integer solutionId = commandDTO.getIntegerParam("solutionId"); |
|||
String titrationModuleCodeStr = commandDTO.getStringParam("titrationModuleCode"); |
|||
if (StringUtils.isEmpty(titrationModuleCodeStr) || solutionId == null) { |
|||
throw new AppException(ResultCode.INVALID_PARAMETER);//参数缺失 |
|||
} |
|||
MultipleModuleCode titrationModuleCode = MultipleModuleCode.valueOf(titrationModuleCodeStr); |
|||
return runAsync(() -> { |
|||
titrationModuleService.titrationMotorMoveToWastePool(titrationModuleCode);//移动到废液池 |
|||
titrationModuleService.preFillStart(titrationModuleCode, solutionId);//开始预充 |
|||
}); |
|||
} |
|||
} |
|||
|
@ -0,0 +1,40 @@ |
|||
package com.iflytop.colortitration.app.command.control.pipeline; |
|||
|
|||
import com.iflytop.colortitration.app.common.annotation.CommandDebugMapping; |
|||
import com.iflytop.colortitration.app.common.enums.MultipleModuleCode; |
|||
import com.iflytop.colortitration.app.core.command.BaseCommandHandler; |
|||
import com.iflytop.colortitration.app.model.dto.CommandDTO; |
|||
import com.iflytop.colortitration.app.service.module.TitrationModuleService; |
|||
import com.iflytop.colortitration.common.exception.AppException; |
|||
import com.iflytop.colortitration.common.result.ResultCode; |
|||
import lombok.RequiredArgsConstructor; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
import org.apache.commons.lang3.StringUtils; |
|||
import org.springframework.stereotype.Component; |
|||
|
|||
import java.util.concurrent.CompletableFuture; |
|||
|
|||
/** |
|||
* 停止预充管窥 |
|||
*/ |
|||
@Slf4j |
|||
@Component |
|||
@RequiredArgsConstructor |
|||
@CommandDebugMapping("solution_pre_fill_stop") |
|||
public class PipelinePreFillStopCommand extends BaseCommandHandler { |
|||
private final TitrationModuleService titrationModuleService; |
|||
|
|||
@Override |
|||
public CompletableFuture<Void> handle(CommandDTO commandDTO) { |
|||
Integer solutionId = commandDTO.getIntegerParam("solutionId"); |
|||
String titrationModuleCodeStr = commandDTO.getStringParam("titrationModuleCode"); |
|||
if (StringUtils.isEmpty(titrationModuleCodeStr) || solutionId == null) { |
|||
throw new AppException(ResultCode.INVALID_PARAMETER);//参数缺失 |
|||
} |
|||
MultipleModuleCode titrationModuleCode = MultipleModuleCode.valueOf(titrationModuleCodeStr); |
|||
return runAsync(() -> { |
|||
titrationModuleService.preFillStop(titrationModuleCode, solutionId); |
|||
}); |
|||
} |
|||
} |
|||
|
@ -0,0 +1,29 @@ |
|||
package com.iflytop.colortitration.app.command.control.pipeline; |
|||
|
|||
import com.iflytop.colortitration.app.common.annotation.CommandDebugMapping; |
|||
import com.iflytop.colortitration.app.core.command.BaseCommandHandler; |
|||
import com.iflytop.colortitration.app.model.dto.CommandDTO; |
|||
import com.iflytop.colortitration.app.service.module.TitrationModuleService; |
|||
import lombok.RequiredArgsConstructor; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
import org.springframework.stereotype.Component; |
|||
|
|||
import java.util.concurrent.CompletableFuture; |
|||
|
|||
/** |
|||
* 开始抽废液 |
|||
*/ |
|||
@Slf4j |
|||
@Component |
|||
@RequiredArgsConstructor |
|||
@CommandDebugMapping("solution_waste_drain_start") |
|||
public class WastePoolDrainStartCommand extends BaseCommandHandler { |
|||
private final TitrationModuleService titrationModuleService; |
|||
|
|||
|
|||
@Override |
|||
public CompletableFuture<Void> handle(CommandDTO commandDTO) { |
|||
return runAsync(titrationModuleService::drainWasteStart); |
|||
} |
|||
} |
|||
|
@ -0,0 +1,29 @@ |
|||
package com.iflytop.colortitration.app.command.control.pipeline; |
|||
|
|||
import com.iflytop.colortitration.app.common.annotation.CommandDebugMapping; |
|||
import com.iflytop.colortitration.app.core.command.BaseCommandHandler; |
|||
import com.iflytop.colortitration.app.model.dto.CommandDTO; |
|||
import com.iflytop.colortitration.app.service.module.TitrationModuleService; |
|||
import lombok.RequiredArgsConstructor; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
import org.springframework.stereotype.Component; |
|||
|
|||
import java.util.concurrent.CompletableFuture; |
|||
|
|||
/** |
|||
* 停止抽废液 |
|||
*/ |
|||
@Slf4j |
|||
@Component |
|||
@RequiredArgsConstructor |
|||
@CommandDebugMapping("solution_waste_drain_stop") |
|||
public class WastePoolDrainStopCommand extends BaseCommandHandler { |
|||
private final TitrationModuleService titrationModuleService; |
|||
|
|||
@Override |
|||
public CompletableFuture<Void> handle(CommandDTO commandDTO) { |
|||
|
|||
return runAsync(titrationModuleService::drainWasteStop); |
|||
} |
|||
} |
|||
|
@ -0,0 +1,41 @@ |
|||
package com.iflytop.colortitration.app.command.control.solution; |
|||
|
|||
import com.iflytop.colortitration.app.common.annotation.CommandDebugMapping; |
|||
import com.iflytop.colortitration.app.common.enums.MultipleModuleCode; |
|||
import com.iflytop.colortitration.app.core.command.BaseCommandHandler; |
|||
import com.iflytop.colortitration.app.model.dto.CommandDTO; |
|||
import com.iflytop.colortitration.app.service.module.TitrationModuleService; |
|||
import com.iflytop.colortitration.common.exception.AppException; |
|||
import com.iflytop.colortitration.common.result.ResultCode; |
|||
import lombok.RequiredArgsConstructor; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
import org.apache.commons.lang3.StringUtils; |
|||
import org.springframework.stereotype.Component; |
|||
|
|||
import java.util.concurrent.CompletableFuture; |
|||
|
|||
/** |
|||
* 开始摇匀溶液 |
|||
*/ |
|||
@Slf4j |
|||
@Component |
|||
@RequiredArgsConstructor |
|||
@CommandDebugMapping("shake_start") |
|||
public class ShakeStartCommand extends BaseCommandHandler { |
|||
private final TitrationModuleService titrationModuleService; |
|||
|
|||
@Override |
|||
public CompletableFuture<Void> handle(CommandDTO commandDTO) { |
|||
String motorCode = commandDTO.getStringParam("titrationModuleCode"); |
|||
Double speed = commandDTO.getDoubleParam("speed"); |
|||
Integer time = commandDTO.getIntegerParam("time"); |
|||
if (StringUtils.isEmpty(motorCode)) { |
|||
throw new AppException(ResultCode.INVALID_PARAMETER); |
|||
} |
|||
MultipleModuleCode titrationModuleCode = MultipleModuleCode.valueOf(motorCode); |
|||
return runAsync(() -> { |
|||
titrationModuleService.shakeStart(titrationModuleCode, speed, time); |
|||
}); |
|||
} |
|||
} |
|||
|
@ -0,0 +1,39 @@ |
|||
package com.iflytop.colortitration.app.command.control.solution; |
|||
|
|||
import com.iflytop.colortitration.app.common.annotation.CommandDebugMapping; |
|||
import com.iflytop.colortitration.app.common.enums.MultipleModuleCode; |
|||
import com.iflytop.colortitration.app.core.command.BaseCommandHandler; |
|||
import com.iflytop.colortitration.app.model.dto.CommandDTO; |
|||
import com.iflytop.colortitration.app.service.module.TitrationModuleService; |
|||
import com.iflytop.colortitration.common.exception.AppException; |
|||
import com.iflytop.colortitration.common.result.ResultCode; |
|||
import lombok.RequiredArgsConstructor; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
import org.apache.commons.lang3.StringUtils; |
|||
import org.springframework.stereotype.Component; |
|||
|
|||
import java.util.concurrent.CompletableFuture; |
|||
|
|||
/** |
|||
* 停止摇匀加液 |
|||
*/ |
|||
@Slf4j |
|||
@Component |
|||
@RequiredArgsConstructor |
|||
@CommandDebugMapping("shake_stop") |
|||
public class ShakeStopCommand extends BaseCommandHandler { |
|||
private final TitrationModuleService titrationModuleService; |
|||
|
|||
@Override |
|||
public CompletableFuture<Void> handle(CommandDTO commandDTO) { |
|||
String motorCode = commandDTO.getStringParam("titrationModuleCode"); |
|||
if (StringUtils.isEmpty(motorCode)) { |
|||
throw new AppException(ResultCode.INVALID_PARAMETER); |
|||
} |
|||
MultipleModuleCode titrationModuleCode = MultipleModuleCode.valueOf(motorCode); |
|||
return runAsync(() -> { |
|||
titrationModuleService.shakeStop(titrationModuleCode); |
|||
}); |
|||
} |
|||
} |
|||
|
@ -0,0 +1,48 @@ |
|||
package com.iflytop.colortitration.app.command.control.solution; |
|||
|
|||
import com.iflytop.colortitration.app.common.annotation.CommandDebugMapping; |
|||
import com.iflytop.colortitration.app.common.enums.MultipleModuleCode; |
|||
import com.iflytop.colortitration.app.core.command.BaseCommandHandler; |
|||
import com.iflytop.colortitration.app.model.dto.CommandDTO; |
|||
import com.iflytop.colortitration.app.service.module.TitrationModuleService; |
|||
import com.iflytop.colortitration.common.exception.AppException; |
|||
import com.iflytop.colortitration.common.result.ResultCode; |
|||
import lombok.RequiredArgsConstructor; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
import org.apache.commons.lang3.StringUtils; |
|||
import org.springframework.stereotype.Component; |
|||
|
|||
import java.util.concurrent.CompletableFuture; |
|||
|
|||
/** |
|||
* 开始加液 |
|||
*/ |
|||
@Slf4j |
|||
@Component |
|||
@RequiredArgsConstructor |
|||
@CommandDebugMapping("solution_add_start") |
|||
public class SolutionAddCommand extends BaseCommandHandler { |
|||
private final TitrationModuleService titrationModuleService; |
|||
|
|||
@Override |
|||
public CompletableFuture<Void> handle(CommandDTO commandDTO) { |
|||
String moduleCodeStr = commandDTO.getStringParam("titrationModuleCode"); |
|||
Integer solutionId = commandDTO.getIntegerParam("solutionId"); |
|||
Double volume = commandDTO.getDoubleParam("volume"); |
|||
String type = commandDTO.getStringParam("type"); |
|||
if (type.equals("drop")) { |
|||
volume = 0.5; |
|||
} |
|||
if (StringUtils.isEmpty(moduleCodeStr) || solutionId == null || StringUtils.isEmpty(type)) { |
|||
throw new AppException(ResultCode.INVALID_PARAMETER);//参数缺失 |
|||
} |
|||
MultipleModuleCode titrationModuleCode = MultipleModuleCode.valueOf(moduleCodeStr); |
|||
Double finalVolume = volume; |
|||
return runAsync(() -> { |
|||
//移动滴定电机到滴定位 |
|||
titrationModuleService.titrationMotorMoveToSolution(titrationModuleCode); |
|||
titrationModuleService.addSolutionStart(titrationModuleCode, solutionId, finalVolume); |
|||
}); |
|||
} |
|||
} |
|||
|
@ -0,0 +1,40 @@ |
|||
package com.iflytop.colortitration.app.command.control.solution; |
|||
|
|||
import com.iflytop.colortitration.app.common.annotation.CommandDebugMapping; |
|||
import com.iflytop.colortitration.app.common.enums.MultipleModuleCode; |
|||
import com.iflytop.colortitration.app.core.command.BaseCommandHandler; |
|||
import com.iflytop.colortitration.app.model.dto.CommandDTO; |
|||
import com.iflytop.colortitration.app.service.module.TitrationModuleService; |
|||
import com.iflytop.colortitration.common.exception.AppException; |
|||
import com.iflytop.colortitration.common.result.ResultCode; |
|||
import lombok.RequiredArgsConstructor; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
import org.apache.commons.lang3.StringUtils; |
|||
import org.springframework.stereotype.Component; |
|||
|
|||
import java.util.concurrent.CompletableFuture; |
|||
|
|||
/** |
|||
* 结束加液 |
|||
*/ |
|||
@Slf4j |
|||
@Component |
|||
@RequiredArgsConstructor |
|||
@CommandDebugMapping("solution_add_stop") |
|||
public class SolutionStopCommand extends BaseCommandHandler { |
|||
private final TitrationModuleService titrationModuleService; |
|||
|
|||
@Override |
|||
public CompletableFuture<Void> handle(CommandDTO commandDTO) { |
|||
String moduleCodeStr = commandDTO.getStringParam("titrationModuleCode"); |
|||
Integer solutionId = commandDTO.getIntegerParam("solutionId"); |
|||
if (StringUtils.isEmpty(moduleCodeStr) || solutionId == null) { |
|||
throw new AppException(ResultCode.INVALID_PARAMETER);//参数缺失 |
|||
} |
|||
MultipleModuleCode titrationModuleCode = MultipleModuleCode.valueOf(moduleCodeStr); |
|||
return runAsync(() -> { |
|||
titrationModuleService.addSolutionStop(titrationModuleCode, solutionId); |
|||
}); |
|||
} |
|||
} |
|||
|
@ -0,0 +1,75 @@ |
|||
package com.iflytop.colortitration.app.command.control.transfer; |
|||
|
|||
import com.iflytop.colortitration.app.common.annotation.CommandDebugMapping; |
|||
import com.iflytop.colortitration.app.common.enums.MultipleModuleCode; |
|||
import com.iflytop.colortitration.app.core.command.BaseCommandHandler; |
|||
import com.iflytop.colortitration.app.core.state.DeviceState; |
|||
import com.iflytop.colortitration.app.model.dto.CommandDTO; |
|||
import com.iflytop.colortitration.app.service.module.TitrationModuleService; |
|||
import com.iflytop.colortitration.app.service.module.TransferModuleService; |
|||
import com.iflytop.colortitration.common.exception.AppException; |
|||
import com.iflytop.colortitration.common.result.ResultCode; |
|||
import lombok.RequiredArgsConstructor; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
import org.apache.commons.lang3.StringUtils; |
|||
import org.springframework.stereotype.Component; |
|||
|
|||
import java.util.concurrent.CompletableFuture; |
|||
|
|||
/** |
|||
* 加热区转移至滴定区 |
|||
*/ |
|||
@Slf4j |
|||
@Component |
|||
@RequiredArgsConstructor |
|||
@CommandDebugMapping("heat_move_to_titration_area") |
|||
public class HeatAreaMoveTitrationAreaCommand extends BaseCommandHandler { |
|||
private final DeviceState deviceState; |
|||
private final TransferModuleService transferModuleService; |
|||
private final TitrationModuleService titrationModuleService; |
|||
|
|||
@Override |
|||
public CompletableFuture<Void> handle(CommandDTO commandDTO) { |
|||
String heatModuleCodeStr = commandDTO.getStringParam("heatModuleCode"); |
|||
String titrationModuleCodeStr = commandDTO.getStringParam("titrationModuleCode"); |
|||
if (StringUtils.isEmpty(heatModuleCodeStr) || StringUtils.isEmpty(titrationModuleCodeStr)) { |
|||
throw new AppException(ResultCode.INVALID_PARAMETER);//参数缺失 |
|||
} |
|||
MultipleModuleCode titrationModuleCode = MultipleModuleCode.valueOf(titrationModuleCodeStr); |
|||
MultipleModuleCode heatModuleCode = MultipleModuleCode.valueOf(heatModuleCodeStr); |
|||
boolean tubeExist = switch (titrationModuleCode) { //首先滴定位是否存在试管 |
|||
case MultipleModuleCode.MODULE_1 -> deviceState.isTrayExist1(); |
|||
case MultipleModuleCode.MODULE_2 -> deviceState.isTrayExist2(); |
|||
}; |
|||
if (!tubeExist) throw new AppException(ResultCode.TARGET_MODULE_NO_TUBE);//目标模块无试管 |
|||
boolean heatTubeExist = switch (heatModuleCode) { //加热位是否存在试管 |
|||
case MultipleModuleCode.MODULE_1 -> |
|||
deviceState.getHeatModuleStateMap().get(MultipleModuleCode.MODULE_1).isBubeExist(); |
|||
case MultipleModuleCode.MODULE_2 -> |
|||
deviceState.getHeatModuleStateMap().get(MultipleModuleCode.MODULE_2).isBubeExist(); |
|||
}; |
|||
if (heatTubeExist) throw new AppException(ResultCode.TARGET_MODULE_OCCUPIED);//目标模块被占用 |
|||
//3、判断夹爪是否夹取了试管 todo |
|||
return runAsync(() -> { |
|||
//滴定电机回原点 |
|||
titrationModuleService.titrationMotorOrigin(titrationModuleCode); |
|||
//移动到需要移动的试管为止,z轴先抬升,再移动到试管上方 |
|||
transferModuleService.roboticMoveToHeat(heatModuleCode); |
|||
//打开夹爪 |
|||
transferModuleService.clawOpen(); |
|||
//z轴下降 |
|||
transferModuleService.zMoveDownWithHeatArea(); |
|||
//关闭夹爪 |
|||
transferModuleService.clawClose(); |
|||
//1移动到滴定位上方 |
|||
transferModuleService.roboticMoveToTitration(titrationModuleCode); |
|||
//z轴下降 |
|||
transferModuleService.zMoveDownWithTitrationArea(); |
|||
//打开夹爪 |
|||
transferModuleService.clawOpen(); |
|||
//机械臂回到原点 |
|||
transferModuleService.roboticMoveToOrigin(); |
|||
}); |
|||
} |
|||
} |
|||
|
@ -0,0 +1,75 @@ |
|||
package com.iflytop.colortitration.app.command.control.transfer; |
|||
|
|||
import com.iflytop.colortitration.app.common.annotation.CommandDebugMapping; |
|||
import com.iflytop.colortitration.app.common.enums.MultipleModuleCode; |
|||
import com.iflytop.colortitration.app.core.command.BaseCommandHandler; |
|||
import com.iflytop.colortitration.app.core.state.DeviceState; |
|||
import com.iflytop.colortitration.app.model.dto.CommandDTO; |
|||
import com.iflytop.colortitration.app.service.module.TitrationModuleService; |
|||
import com.iflytop.colortitration.app.service.module.TransferModuleService; |
|||
import com.iflytop.colortitration.common.exception.AppException; |
|||
import com.iflytop.colortitration.common.result.ResultCode; |
|||
import lombok.RequiredArgsConstructor; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
import org.apache.commons.lang3.StringUtils; |
|||
import org.springframework.stereotype.Component; |
|||
|
|||
import java.util.concurrent.CompletableFuture; |
|||
|
|||
/** |
|||
* 滴定区转移至加热区 |
|||
*/ |
|||
@Slf4j |
|||
@Component |
|||
@RequiredArgsConstructor |
|||
@CommandDebugMapping("titration_move_to_heat_area") |
|||
public class TitrationAreaMoveHeatAreaCommand extends BaseCommandHandler { |
|||
private final DeviceState deviceState; |
|||
private final TransferModuleService transferModuleService; |
|||
private final TitrationModuleService titrationModuleService; |
|||
|
|||
@Override |
|||
public CompletableFuture<Void> handle(CommandDTO commandDTO) { |
|||
String heatModuleCodeStr = commandDTO.getStringParam("heatModuleCode"); |
|||
String titrationModuleCodeStr = commandDTO.getStringParam("titrationModuleCode"); |
|||
if (StringUtils.isEmpty(heatModuleCodeStr) || StringUtils.isEmpty(titrationModuleCodeStr)) { |
|||
throw new AppException(ResultCode.INVALID_PARAMETER);//参数缺失 |
|||
} |
|||
MultipleModuleCode titrationModuleCode = MultipleModuleCode.valueOf(titrationModuleCodeStr); |
|||
MultipleModuleCode heatModuleCode = MultipleModuleCode.valueOf(heatModuleCodeStr); |
|||
boolean tubeExist = switch (titrationModuleCode) { //首先滴定位是否存在试管 |
|||
case MultipleModuleCode.MODULE_1 -> deviceState.isTrayExist1(); |
|||
case MultipleModuleCode.MODULE_2 -> deviceState.isTrayExist2(); |
|||
}; |
|||
if (!tubeExist) throw new AppException(ResultCode.TARGET_MODULE_NO_TUBE);//目标模块无试管 |
|||
boolean heatTubeExist = switch (heatModuleCode) { //加热位是否存在试管 |
|||
case MultipleModuleCode.MODULE_1 -> |
|||
deviceState.getHeatModuleStateMap().get(MultipleModuleCode.MODULE_1).isBubeExist(); |
|||
case MultipleModuleCode.MODULE_2 -> |
|||
deviceState.getHeatModuleStateMap().get(MultipleModuleCode.MODULE_2).isBubeExist(); |
|||
}; |
|||
if (heatTubeExist) throw new AppException(ResultCode.TARGET_MODULE_OCCUPIED);//目标模块被占用 |
|||
//3、判断夹爪是否夹取了试管 todo |
|||
return runAsync(() -> { |
|||
//滴定电机回原点 |
|||
titrationModuleService.titrationMotorOrigin(titrationModuleCode); |
|||
//移动到需要移动的试管为止,z轴先抬升,再移动到试管上方 |
|||
transferModuleService.roboticMoveToTitration(titrationModuleCode); |
|||
//打开夹爪 |
|||
transferModuleService.clawOpen(); |
|||
//z轴下降 |
|||
transferModuleService.zMoveDownWithTitrationArea(); |
|||
//关闭夹爪 |
|||
transferModuleService.clawClose(); |
|||
//1移动到滴定位上方 |
|||
transferModuleService.roboticMoveToHeat(heatModuleCode); |
|||
//z轴下降 |
|||
transferModuleService.zMoveDownWithHeatArea(); |
|||
//打开夹爪 |
|||
transferModuleService.clawOpen(); |
|||
//机械臂回到原点 |
|||
transferModuleService.roboticMoveToOrigin(); |
|||
}); |
|||
} |
|||
} |
|||
|
@ -0,0 +1,70 @@ |
|||
package com.iflytop.colortitration.app.command.control.transfer; |
|||
|
|||
import com.iflytop.colortitration.app.common.annotation.CommandDebugMapping; |
|||
import com.iflytop.colortitration.app.common.enums.MultipleModuleCode; |
|||
import com.iflytop.colortitration.app.core.command.BaseCommandHandler; |
|||
import com.iflytop.colortitration.app.core.state.DeviceState; |
|||
import com.iflytop.colortitration.app.model.dto.CommandDTO; |
|||
import com.iflytop.colortitration.app.service.module.TitrationModuleService; |
|||
import com.iflytop.colortitration.app.service.module.TransferModuleService; |
|||
import com.iflytop.colortitration.common.exception.AppException; |
|||
import com.iflytop.colortitration.common.result.ResultCode; |
|||
import lombok.RequiredArgsConstructor; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
import org.apache.commons.lang3.StringUtils; |
|||
import org.springframework.stereotype.Component; |
|||
|
|||
import java.util.concurrent.CompletableFuture; |
|||
|
|||
/** |
|||
* 滴定区转移至托盘位 |
|||
*/ |
|||
@Slf4j |
|||
@Component |
|||
@RequiredArgsConstructor |
|||
@CommandDebugMapping("titration_move_tray_area") |
|||
public class TitrationMoveTrayAreaCommand extends BaseCommandHandler { |
|||
private final DeviceState deviceState; |
|||
private final TransferModuleService transferModuleService; |
|||
private final TitrationModuleService titrationModuleService; |
|||
|
|||
@Override |
|||
public CompletableFuture<Void> handle(CommandDTO commandDTO) { |
|||
Integer tubeNum = commandDTO.getIntegerParam("tubeNum"); |
|||
String moduleCode = commandDTO.getStringParam("moduleCode"); |
|||
if (StringUtils.isEmpty(moduleCode) || tubeNum == null) { |
|||
throw new AppException(ResultCode.INVALID_PARAMETER);//参数缺失 |
|||
} |
|||
MultipleModuleCode titrationModuleCode = MultipleModuleCode.valueOf(moduleCode); |
|||
boolean tubeExist = switch (titrationModuleCode) { //1首先滴定位试管状态 |
|||
case MultipleModuleCode.MODULE_1 -> |
|||
deviceState.getTitrationModuleStateMap().get(titrationModuleCode).isBubeExist(); |
|||
case MultipleModuleCode.MODULE_2 -> |
|||
deviceState.getTitrationModuleStateMap().get(titrationModuleCode).isBubeExist(); |
|||
}; |
|||
if (!tubeExist) throw new AppException(ResultCode.TARGET_MODULE_NO_TUBE);//目标被占用 |
|||
//3、判断夹爪是否夹取了试管 todo |
|||
|
|||
return runAsync(() -> { |
|||
//滴定电机回原点 |
|||
titrationModuleService.titrationMotorOrigin(titrationModuleCode); |
|||
//移动到滴定位 |
|||
transferModuleService.roboticMoveToTitration(titrationModuleCode); |
|||
//打开夹爪 |
|||
transferModuleService.clawOpen(); |
|||
//z轴下降 |
|||
transferModuleService.zMoveDownWithTitrationArea(); |
|||
//抓紧夹爪 |
|||
transferModuleService.clawClose(); |
|||
//移动到试管位上方 |
|||
transferModuleService.roboticMoveToTubePosition(tubeNum); |
|||
//z轴下降 |
|||
transferModuleService.zMoveDownWithTitrationArea(); |
|||
//打开夹爪 |
|||
transferModuleService.clawOpen(); |
|||
//机械臂回到原点 |
|||
transferModuleService.roboticMoveToOrigin(); |
|||
}); |
|||
} |
|||
} |
|||
|
@ -0,0 +1,76 @@ |
|||
package com.iflytop.colortitration.app.command.control.transfer; |
|||
|
|||
import com.iflytop.colortitration.app.common.annotation.CommandDebugMapping; |
|||
import com.iflytop.colortitration.app.common.enums.MultipleModuleCode; |
|||
import com.iflytop.colortitration.app.core.command.BaseCommandHandler; |
|||
import com.iflytop.colortitration.app.core.state.DeviceState; |
|||
import com.iflytop.colortitration.app.model.dto.CommandDTO; |
|||
import com.iflytop.colortitration.app.service.module.TitrationModuleService; |
|||
import com.iflytop.colortitration.app.service.module.TransferModuleService; |
|||
import com.iflytop.colortitration.common.exception.AppException; |
|||
import com.iflytop.colortitration.common.result.ResultCode; |
|||
import lombok.RequiredArgsConstructor; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
import org.apache.commons.lang3.StringUtils; |
|||
import org.springframework.stereotype.Component; |
|||
|
|||
import java.util.concurrent.CompletableFuture; |
|||
|
|||
/** |
|||
* 托盘位转移至滴定区 |
|||
*/ |
|||
@Slf4j |
|||
@Component |
|||
@RequiredArgsConstructor |
|||
@CommandDebugMapping("tray_move_titration_area") |
|||
public class TrayMoveTitrationAreaCommand extends BaseCommandHandler { |
|||
private final DeviceState deviceState; |
|||
private final TransferModuleService transferModuleService; |
|||
private final TitrationModuleService titrationModuleService; |
|||
|
|||
@Override |
|||
public CompletableFuture<Void> handle(CommandDTO commandDTO) { |
|||
Integer tubeNum = commandDTO.getIntegerParam("tubeNum"); |
|||
String moduleCode = commandDTO.getStringParam("titrationModuleCode"); |
|||
if (StringUtils.isEmpty(moduleCode) || tubeNum == null) { |
|||
throw new AppException(ResultCode.INVALID_PARAMETER);//参数缺失 |
|||
} |
|||
MultipleModuleCode titrationModuleCode = MultipleModuleCode.valueOf(moduleCode); |
|||
boolean trayExist = switch (titrationModuleCode) { //1、首先检测试管所在的托盘传感器的值 |
|||
case MultipleModuleCode.MODULE_1 -> deviceState.isTrayExist1(); |
|||
case MultipleModuleCode.MODULE_2 -> deviceState.isTrayExist2(); |
|||
}; |
|||
if (!trayExist) throw new AppException(ResultCode.TARGET_MODULE_OCCUPIED);//目标模块无试管 |
|||
//3、判断夹爪是否夹取了试管 todo |
|||
|
|||
return runAsync(() -> { |
|||
//滴定电机回原点 |
|||
titrationModuleService.titrationMotorOrigin(titrationModuleCode); |
|||
//移动到需要移动的试管为止,z轴先抬升,再移动到试管上方 |
|||
transferModuleService.roboticMoveToTubePosition(tubeNum); |
|||
//打开夹爪 |
|||
transferModuleService.clawOpen(); |
|||
//z轴下降 |
|||
transferModuleService.zMoveDownWithTrayArea(); |
|||
//关闭夹爪 |
|||
transferModuleService.clawClose(); |
|||
//判断滴定位传感器状态 |
|||
boolean titrationExist = switch (titrationModuleCode) { //1、首先检测试管所在的托盘传感器的值 |
|||
case MultipleModuleCode.MODULE_1 -> |
|||
deviceState.getTitrationModuleStateMap().get(MultipleModuleCode.MODULE_1).isBubeExist(); |
|||
case MultipleModuleCode.MODULE_2 -> |
|||
deviceState.getTitrationModuleStateMap().get(MultipleModuleCode.MODULE_2).isBubeExist(); |
|||
}; |
|||
if (titrationExist) throw new AppException(ResultCode.TARGET_MODULE_OCCUPIED);//目标模块被占用 |
|||
//移动到滴定位上方 |
|||
transferModuleService.roboticMoveToTitration(titrationModuleCode); |
|||
//z轴下降 |
|||
transferModuleService.zMoveDownWithTitrationArea(); |
|||
//打开夹爪 |
|||
transferModuleService.clawOpen(); |
|||
//机械臂回到原点 |
|||
transferModuleService.roboticMoveToOrigin(); |
|||
}); |
|||
} |
|||
} |
|||
|
@ -0,0 +1,72 @@ |
|||
package com.iflytop.colortitration.app.common.enums; |
|||
|
|||
import lombok.Getter; |
|||
|
|||
/** |
|||
* 设备位置代码 |
|||
*/ |
|||
@Getter |
|||
public enum DevicePositionCode { |
|||
////////////相对距离 |
|||
/** |
|||
* 夹爪松开距离 |
|||
*/ |
|||
clawReleaseDistance(DevicePositionType.DISTANCE, "夹爪松开距离"), |
|||
/** |
|||
* 夹爪收紧距离 |
|||
*/ |
|||
clawGripDistance(DevicePositionType.DISTANCE, "夹爪收紧距离"), |
|||
/** |
|||
* z轴下降高度 |
|||
*/ |
|||
trayDownDistance(DevicePositionType.DISTANCE, "试管位托盘下降距离"), |
|||
/** |
|||
* 滴定位下降高度 |
|||
*/ |
|||
titrationDownDistance(DevicePositionType.DISTANCE, "滴定位下降高度"), |
|||
/** |
|||
* 加热位下降高度 |
|||
*/ |
|||
heatDownDistance(DevicePositionType.DISTANCE, "加热位托盘下降距离"), |
|||
/** |
|||
* 滴定电机1加液位置 |
|||
*/ |
|||
titrationAddSolutionDistance_1(DevicePositionType.DISTANCE, "滴定电机1加液位置"), |
|||
/** |
|||
* 滴定电机2加液位置 |
|||
*/ |
|||
titrationAddSolutionDistance_2(DevicePositionType.DISTANCE, "滴定电机2加液位置"), |
|||
/** |
|||
* 滴定电机移动至废液池距离 |
|||
*/ |
|||
titrationWastePoolDistance(DevicePositionType.DISTANCE, "滴定电机移动至废液池距离"), |
|||
////////////////位置 |
|||
/** |
|||
* 滴定位1位置 |
|||
*/ |
|||
titrationArea_1(DevicePositionType.POINT_3D, "滴定位1位置"), |
|||
/** |
|||
* 滴定位2位置 |
|||
*/ |
|||
titrationArea_2(DevicePositionType.POINT_3D, "滴定位2位置"), |
|||
/** |
|||
* 加热位置1 |
|||
*/ |
|||
heatArea_1(DevicePositionType.POINT_3D, "加热位置1"), |
|||
/** |
|||
* 加热位置2 |
|||
*/ |
|||
heatArea_2(DevicePositionType.POINT_3D, "加热位置2"), |
|||
/** |
|||
* 试管架1号试管位置 |
|||
*/ |
|||
tube(DevicePositionType.POINT_3D, "试管1位置"); |
|||
|
|||
private final DevicePositionType type; |
|||
private final String name; |
|||
|
|||
DevicePositionCode(DevicePositionType type, String name) { |
|||
this.type = type; |
|||
this.name = name; |
|||
} |
|||
} |
@ -0,0 +1,35 @@ |
|||
package com.iflytop.colortitration.app.common.enums; |
|||
|
|||
import lombok.Getter; |
|||
|
|||
/** |
|||
* 设备位置类型 |
|||
*/ |
|||
@Getter |
|||
public enum DevicePositionType { |
|||
/** |
|||
* 直线距离 |
|||
*/ |
|||
DISTANCE("距离"), |
|||
/** |
|||
* 位置 |
|||
*/ |
|||
POSITION("位置"), |
|||
/** |
|||
* 二维点 |
|||
*/ |
|||
POINT_2D("二维点"), |
|||
/** |
|||
* 三维点 |
|||
*/ |
|||
POINT_3D("三维点"); |
|||
|
|||
|
|||
private final String name; |
|||
|
|||
// 构造函数 |
|||
DevicePositionType(String name) { |
|||
this.name = name; |
|||
} |
|||
|
|||
} |
Write
Preview
Loading…
Cancel
Save
Reference in new issue