Browse Source

feat:添加配置试管工艺接口

master
白凤吉 1 week ago
parent
commit
f5afe97dce
  1. 13
      src/main/java/com/iflytop/colortitration/app/controller/CraftsController.java
  2. 12
      src/main/java/com/iflytop/colortitration/app/core/state/TubeState.java
  3. 21
      src/main/java/com/iflytop/colortitration/app/model/dto/CraftsStartDTO.java
  4. 22
      src/main/java/com/iflytop/colortitration/app/model/dto/SetCraftsDTO.java
  5. 21
      src/main/java/com/iflytop/colortitration/common/service/CraftsService.java

13
src/main/java/com/iflytop/colortitration/app/controller/CraftsController.java

@ -1,5 +1,6 @@
package com.iflytop.colortitration.app.controller; 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.model.entity.Crafts;
import com.iflytop.colortitration.common.result.Result; import com.iflytop.colortitration.common.result.Result;
import com.iflytop.colortitration.common.result.ResultCode; import com.iflytop.colortitration.common.result.ResultCode;
@ -57,11 +58,13 @@ public class CraftsController {
return success ? Result.success() : Result.failed(); return success ? Result.success() : Result.failed();
} }
// @Operation(summary = "开始执行工艺")
// @PostMapping("/start")
// public Result<SetCraftsVO> 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 = "暂停执行工艺") // @Operation(summary = "暂停执行工艺")
// @PostMapping("/pause") // @PostMapping("/pause")

12
src/main/java/com/iflytop/colortitration/app/core/state/TubeState.java

@ -1,6 +1,7 @@
package com.iflytop.colortitration.app.core.state; package com.iflytop.colortitration.app.core.state;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.iflytop.colortitration.app.common.enums.MultipleModuleCode;
import com.iflytop.colortitration.app.common.enums.TitrationStatus; import com.iflytop.colortitration.app.common.enums.TitrationStatus;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
@ -8,6 +9,8 @@ import lombok.RequiredArgsConstructor;
import org.springframework.context.annotation.Scope; import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.util.List;
@Schema(description = "当前试管状态") @Schema(description = "当前试管状态")
@Data @Data
@Component @Component
@ -31,6 +34,15 @@ public class TubeState {
@Schema(description = "结果") @Schema(description = "结果")
private Double result; private Double result;
@Schema(description = "配置的工艺名称")
private String craftsName;
@Schema(description = "配置的工艺id")
private Long craftsId;
@Schema(description = "可以使用的滴定模块")
private List<MultipleModuleCode> moduleCodes;
public TubeState(Integer bubeNum) { public TubeState(Integer bubeNum) {
this.bubeNum = bubeNum; this.bubeNum = bubeNum;
} }

21
src/main/java/com/iflytop/colortitration/app/model/dto/CraftsStartDTO.java

@ -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;
}

22
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<MultipleModuleCode> moduleCodes;
@Schema(description = "试管编号")
private List<Integer> tubeNums;
}

21
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.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 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.mapper.CraftsMapper;
import com.iflytop.colortitration.common.model.entity.Crafts; import com.iflytop.colortitration.common.model.entity.Crafts;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
@ -15,9 +19,26 @@ import org.springframework.stereotype.Service;
@Service @Service
@RequiredArgsConstructor @RequiredArgsConstructor
public class CraftsService extends ServiceImpl<CraftsMapper, Crafts> { public class CraftsService extends ServiceImpl<CraftsMapper, Crafts> {
private final DeviceState deviceState;
public Crafts findByName(String name) { public Crafts findByName(String name) {
return this.getOne(new LambdaQueryWrapper<>(new Crafts()).eq(Crafts::getName, 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());
}
}
}
} }
Loading…
Cancel
Save