diff --git a/src/main/java/com/iflytop/colortitration/app/controller/CraftsController.java b/src/main/java/com/iflytop/colortitration/app/controller/CraftsController.java index 0321b4a..09107f6 100644 --- a/src/main/java/com/iflytop/colortitration/app/controller/CraftsController.java +++ b/src/main/java/com/iflytop/colortitration/app/controller/CraftsController.java @@ -1,5 +1,6 @@ package com.iflytop.colortitration.app.controller; +import com.iflytop.colortitration.app.model.dto.SetCraftsDTO; import com.iflytop.colortitration.common.model.entity.Crafts; import com.iflytop.colortitration.common.result.Result; import com.iflytop.colortitration.common.result.ResultCode; @@ -57,11 +58,13 @@ public class CraftsController { return success ? Result.success() : Result.failed(); } -// @Operation(summary = "开始执行工艺") -// @PostMapping("/start") -// public Result startCrafts(@Valid @RequestBody CraftsStartDTO startCraftsDTO) { -// return Result.success(craftsService.startCrafts(startCraftsDTO)); -// } + @Operation(summary = "配置试管工艺") + @PostMapping("/set-crafts") + public Result setCrafts(@Valid @RequestBody SetCraftsDTO startCraftsDTO) { + craftsService.setCrafts(startCraftsDTO); + return Result.success(); + } + // // @Operation(summary = "暂停执行工艺") // @PostMapping("/pause") diff --git a/src/main/java/com/iflytop/colortitration/app/core/state/TubeState.java b/src/main/java/com/iflytop/colortitration/app/core/state/TubeState.java index a3ecae4..6eeae70 100644 --- a/src/main/java/com/iflytop/colortitration/app/core/state/TubeState.java +++ b/src/main/java/com/iflytop/colortitration/app/core/state/TubeState.java @@ -1,6 +1,7 @@ package com.iflytop.colortitration.app.core.state; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.iflytop.colortitration.app.common.enums.MultipleModuleCode; import com.iflytop.colortitration.app.common.enums.TitrationStatus; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; @@ -8,6 +9,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Component; +import java.util.List; + @Schema(description = "当前试管状态") @Data @Component @@ -31,6 +34,15 @@ public class TubeState { @Schema(description = "结果") private Double result; + @Schema(description = "配置的工艺名称") + private String craftsName; + + @Schema(description = "配置的工艺id") + private Long craftsId; + + @Schema(description = "可以使用的滴定模块") + private List moduleCodes; + public TubeState(Integer bubeNum) { this.bubeNum = bubeNum; } diff --git a/src/main/java/com/iflytop/colortitration/app/model/dto/CraftsStartDTO.java b/src/main/java/com/iflytop/colortitration/app/model/dto/CraftsStartDTO.java deleted file mode 100644 index 8bcec7c..0000000 --- a/src/main/java/com/iflytop/colortitration/app/model/dto/CraftsStartDTO.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.iflytop.colortitration.app.model.dto; - -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import jakarta.validation.constraints.Positive; -import lombok.Data; - -@Schema(description = "开始工艺") -@Data -public class CraftsStartDTO { - @Positive(message = "工艺ID 必须是正数") - @NotNull - @Schema(description = "工艺id") - private Long craftId; -// -// @Schema(description = "加热区id,非必填,如果不传递则自动分配加热区") -// private HeatModuleCode heatId; - - @Schema(description = "需要加液的试管") - private int[] tubes; -} diff --git a/src/main/java/com/iflytop/colortitration/app/model/dto/SetCraftsDTO.java b/src/main/java/com/iflytop/colortitration/app/model/dto/SetCraftsDTO.java new file mode 100644 index 0000000..717c6db --- /dev/null +++ b/src/main/java/com/iflytop/colortitration/app/model/dto/SetCraftsDTO.java @@ -0,0 +1,22 @@ +package com.iflytop.colortitration.app.model.dto; + +import com.iflytop.colortitration.app.common.enums.MultipleModuleCode; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.util.List; + +@Schema(description = "设置试管工艺") +@Data +public class SetCraftsDTO { + @NotNull + @Schema(description = "工艺id") + private Long craftId; + + @Schema(description = "可以使用的滴定模块") + private List moduleCodes; + + @Schema(description = "试管编号") + private List tubeNums; +} diff --git a/src/main/java/com/iflytop/colortitration/common/service/CraftsService.java b/src/main/java/com/iflytop/colortitration/common/service/CraftsService.java index dda38ef..620342a 100644 --- a/src/main/java/com/iflytop/colortitration/common/service/CraftsService.java +++ b/src/main/java/com/iflytop/colortitration/common/service/CraftsService.java @@ -2,6 +2,10 @@ package com.iflytop.colortitration.common.service; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.iflytop.colortitration.app.common.enums.TitrationStatus; +import com.iflytop.colortitration.app.core.state.DeviceState; +import com.iflytop.colortitration.app.core.state.TubeState; +import com.iflytop.colortitration.app.model.dto.SetCraftsDTO; import com.iflytop.colortitration.common.mapper.CraftsMapper; import com.iflytop.colortitration.common.model.entity.Crafts; import lombok.RequiredArgsConstructor; @@ -15,9 +19,26 @@ import org.springframework.stereotype.Service; @Service @RequiredArgsConstructor public class CraftsService extends ServiceImpl { + private final DeviceState deviceState; public Crafts findByName(String name) { return this.getOne(new LambdaQueryWrapper<>(new Crafts()).eq(Crafts::getName, name)); } + /** + * 设置试管的工艺 + */ + public void setCrafts(SetCraftsDTO startCraftsDTO) { + Crafts crafts = this.getById(startCraftsDTO.getCraftId()); + for (Integer tubeNum : startCraftsDTO.getTubeNums()) { + TubeState tubeState = deviceState.getTrayTubeStateMap().get(tubeNum); + if (tubeState != null && tubeState.getTitrationStatus() == TitrationStatus.NOT_STARTED) { + tubeState.setCraftsId(crafts.getId()); + tubeState.setCraftsName(crafts.getName()); + tubeState.setModuleCodes(tubeState.getModuleCodes()); + } + } + + } + }