20 changed files with 215 additions and 125 deletions
-
2src/main/java/com/iflytop/colortitration/app/command/control/pipeline/PipelineCleanStartCommand.java
-
2src/main/java/com/iflytop/colortitration/app/command/control/pipeline/PipelineCleanStopCommand.java
-
2src/main/java/com/iflytop/colortitration/app/command/control/pipeline/PipelineDrainStartCommand.java
-
2src/main/java/com/iflytop/colortitration/app/command/control/pipeline/PipelineDrainStopCommand.java
-
2src/main/java/com/iflytop/colortitration/app/command/control/pipeline/PipelinePreFillStartCommand.java
-
2src/main/java/com/iflytop/colortitration/app/command/control/pipeline/PipelinePreFillStopCommand.java
-
2src/main/java/com/iflytop/colortitration/app/command/control/solution/SolutionAddCommand.java
-
2src/main/java/com/iflytop/colortitration/app/command/control/solution/SolutionStopCommand.java
-
5src/main/java/com/iflytop/colortitration/app/common/enums/AddSolutionType.java
-
5src/main/java/com/iflytop/colortitration/app/common/enums/TubeCurrentLocal.java
-
14src/main/java/com/iflytop/colortitration/app/controller/CraftsController.java
-
29src/main/java/com/iflytop/colortitration/app/core/crafts/CraftsContext.java
-
87src/main/java/com/iflytop/colortitration/app/core/crafts/CraftsDispatcher.java
-
100src/main/java/com/iflytop/colortitration/app/core/crafts/CraftsExecutionService.java
-
10src/main/java/com/iflytop/colortitration/app/core/crafts/CraftsStep.java
-
6src/main/java/com/iflytop/colortitration/app/model/dto/CommandDTO.java
-
18src/main/java/com/iflytop/colortitration/app/service/module/TitrationModuleService.java
-
2src/main/java/com/iflytop/colortitration/common/model/entity/Container.java
-
4src/main/java/com/iflytop/colortitration/common/service/CraftsService.java
@ -0,0 +1,5 @@ |
|||||
|
package com.iflytop.colortitration.app.common.enums; |
||||
|
|
||||
|
public enum AddSolutionType { |
||||
|
fixed,segmented,titration |
||||
|
} |
@ -0,0 +1,5 @@ |
|||||
|
package com.iflytop.colortitration.app.common.enums; |
||||
|
|
||||
|
public enum TubeCurrentLocal { |
||||
|
TRAY, TITRATION, HEAT |
||||
|
} |
@ -0,0 +1,100 @@ |
|||||
|
package com.iflytop.colortitration.app.core.crafts; |
||||
|
|
||||
|
import cn.hutool.json.JSONObject; |
||||
|
import cn.hutool.json.JSONUtil; |
||||
|
import com.iflytop.colortitration.app.common.enums.AddSolutionType; |
||||
|
import com.iflytop.colortitration.app.common.utils.CommandUtil; |
||||
|
import com.iflytop.colortitration.app.core.command.CommandFuture; |
||||
|
import com.iflytop.colortitration.app.service.DeviceCommandService; |
||||
|
import com.iflytop.colortitration.app.service.module.TitrationModuleService; |
||||
|
import lombok.RequiredArgsConstructor; |
||||
|
import lombok.extern.slf4j.Slf4j; |
||||
|
import org.springframework.stereotype.Service; |
||||
|
|
||||
|
import java.util.List; |
||||
|
|
||||
|
/** |
||||
|
* 工艺步骤执行服务 |
||||
|
*/ |
||||
|
@Slf4j |
||||
|
@Service |
||||
|
@RequiredArgsConstructor |
||||
|
public class CraftsExecutionService { |
||||
|
private final DeviceCommandService deviceCommandService; |
||||
|
private final TitrationModuleService titrationModuleService; |
||||
|
|
||||
|
/** |
||||
|
* 执行工艺步骤,直接从 CraftsContext 中获取步骤 |
||||
|
*/ |
||||
|
public boolean executeStep(CraftsContext craftsContext) throws Exception { |
||||
|
craftsContext.setCurrentCommandCount(0); |
||||
|
List<CraftsStep> craftsStepList = JSONUtil.parseArray(craftsContext.getCrafts().getSteps()).toList(CraftsStep.class); |
||||
|
for (CraftsStep craftsStep : craftsStepList) { |
||||
|
String method = craftsStep.getMethod(); |
||||
|
JSONObject params = craftsStep.getParams(); |
||||
|
return switch (method) { |
||||
|
case "addSolution" -> addSolution(craftsContext, params); |
||||
|
case "heat" -> heat(craftsContext, params); |
||||
|
case "addMagnet" -> addMagnet(craftsContext, params); |
||||
|
case "waiting" -> waiting(craftsContext, params); |
||||
|
default -> true; |
||||
|
}; |
||||
|
} |
||||
|
return true; |
||||
|
} |
||||
|
|
||||
|
private boolean addSolution(CraftsContext craftsContext, JSONObject params) throws Exception { |
||||
|
moveToTitration();//移动至滴定 |
||||
|
//TODO 调用相机判断滴定位是否存在试管 |
||||
|
Long solutionId = params.getLong("solutionId");//使用的溶液id |
||||
|
Double amount = params.getDouble("amount");//加液量 |
||||
|
Long colorId = params.getLong("colorId");//终点颜色 |
||||
|
String type = params.getStr("type");//加液方式 |
||||
|
AddSolutionType addSolutionType = AddSolutionType.valueOf(type); |
||||
|
Integer waitTime = params.getInt("waitTime");//加液后等待时长 |
||||
|
Double maxAmount = params.getDouble("maxAmount");//滴定最大体积 |
||||
|
Boolean stirFlag = params.getBool("stirFlag");//是否搅拌 |
||||
|
if(AddSolutionType.fixed.equals(addSolutionType)){//定量加液 |
||||
|
titrationModuleService.addSolutionStart(craftsContext.getCurrentTitrationModuleCode(), solutionId, amount); |
||||
|
}else if(AddSolutionType.segmented.equals(addSolutionType)){//分段加液 |
||||
|
|
||||
|
}else if(AddSolutionType.titration.equals(addSolutionType)){//滴定加液 |
||||
|
|
||||
|
} |
||||
|
return true; |
||||
|
} |
||||
|
|
||||
|
private boolean heat(CraftsContext craftsContext, JSONObject params) { |
||||
|
moveToHeat();//移动至加热 |
||||
|
//TODO 调用传感器判断加热位是否存在试管 |
||||
|
|
||||
|
return true; |
||||
|
} |
||||
|
|
||||
|
private boolean addMagnet(CraftsContext craftsContext, JSONObject params) { |
||||
|
return true; |
||||
|
} |
||||
|
|
||||
|
private boolean waiting(CraftsContext craftsContext, JSONObject params) { |
||||
|
return true; |
||||
|
} |
||||
|
//移动至滴定 |
||||
|
private void moveToTitration(){ |
||||
|
//动态分配使用的模块 |
||||
|
} |
||||
|
//移动至加热 |
||||
|
private void moveToHeat(){ |
||||
|
//动态分配使用的模块 |
||||
|
} |
||||
|
|
||||
|
private void wait(CraftsContext craftsContext, CommandFuture... futures) throws Exception { |
||||
|
wait(craftsContext, null, futures); |
||||
|
} |
||||
|
|
||||
|
private void wait(CraftsContext craftsContext, Long timeout, CommandFuture... futures) throws Exception { |
||||
|
CommandUtil.wait(timeout, futures); |
||||
|
craftsContext.incrementCurrentCommandCount(); |
||||
|
craftsContext.incrementHistoryCommandCount(); |
||||
|
} |
||||
|
|
||||
|
} |
@ -0,0 +1,10 @@ |
|||||
|
package com.iflytop.colortitration.app.core.crafts; |
||||
|
|
||||
|
import cn.hutool.json.JSONObject; |
||||
|
import lombok.Data; |
||||
|
|
||||
|
@Data |
||||
|
public class CraftsStep { |
||||
|
private String method; |
||||
|
private JSONObject params; |
||||
|
} |
Write
Preview
Loading…
Cancel
Save
Reference in new issue