diff --git a/src/main/java/com/iflytop/a800/controller/MaterialController.java b/src/main/java/com/iflytop/a800/controller/MaterialController.java new file mode 100644 index 0000000..13c0709 --- /dev/null +++ b/src/main/java/com/iflytop/a800/controller/MaterialController.java @@ -0,0 +1,108 @@ +package com.iflytop.a800.controller; +import com.iflytop.a800.device.Device; +import com.iflytop.a800.task.MaterialLoadTask; +import com.iflytop.uf.controller.UfApiControllerBase; +import com.iflytop.uf.controller.UfApiResponse; +import com.iflytop.uf.model.UfMdbRuntimeVariable; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.ResponseBody; +import java.util.List; +import java.util.Map; +@Controller +public class MaterialController extends UfApiControllerBase { + @PostMapping("/api/material/load") + @ResponseBody + public UfApiResponse load() { + var task = new MaterialLoadTask(); + try { + task.start(); + task.join(); + } catch (InterruptedException e) { + return this.error("任务执行失败 : " + e.getMessage()); + } + if ( task.hasError() ) { + return this.error(task.getErrorMessage()); + } + return this.success(); + } + + @PostMapping("/api/material/unload") + @ResponseBody + public UfApiResponse unload() { + Device.getInstance().testCard.clear(); + Device.getInstance().bufferTube.clear(); + Device.getInstance().largeBufferTube.clear(); + UfMdbRuntimeVariable.setString("IsMaterialLoaded", "no"); + return this.success(); + } + + + @PostMapping("/api/material/test-card-status-get") + @ResponseBody + public UfApiResponse testCardStatusGet() { + var cardMan = Device.getInstance().testCard; + var boxes = cardMan.getBoxes(); + return this.success(boxes); + } + + @PostMapping("/api/material/test-card-update-by-box") + @ResponseBody + public UfApiResponse testCardUpdateByBox(@RequestBody Map params) { + Integer index = (Integer)params.get("index"); + Integer cardAmount = (Integer)params.get("cardAmount"); + var cardMan = Device.getInstance().testCard; + cardMan.getBoxByIndex(index).cardAmount = cardAmount; + return this.success(); + } + + @PostMapping("/api/material/buffer-tube-status-get") + @ResponseBody + public UfApiResponse bufferTubeStatusGet() { + var bufferTubes = Device.getInstance().bufferTube; + var list = bufferTubes.getZones(); + return this.success(list); + } + + @PostMapping("/api/material/buffer-tube-update-by-box") + @ResponseBody + public UfApiResponse bufferTubeUpdateByBox(@RequestBody Map params) { + Integer index = (Integer)params.get("index"); + Integer tubeAmount = (Integer)params.get("tubeAmount"); + var bufferTubes = Device.getInstance().bufferTube; + bufferTubes.getZoneByIndex(index).tubeAmount = tubeAmount; + return this.success(); + } + + @PostMapping("/api/material/large-buffer-tube-status-get") + @ResponseBody + public UfApiResponse largeBufferTubeStatusGet() { + var largeBufferTubes = Device.getInstance().largeBufferTube; + var list = largeBufferTubes.getTubes(); + return this.success(list); + } + + @PostMapping("/api/material/pipette-tip-update-by-box") + @ResponseBody + public UfApiResponse pipetteTipUpdateByBox(@RequestBody Map params) { + Integer index = (Integer)params.get("index"); + Integer tipAmount = (Integer)params.get("tipAmount"); + var pipette = Device.getInstance().pipette; + pipette.setTipAmount(index, tipAmount); + return this.success(); + } + + @PostMapping("/api/material/pipette-tip-box-status-get") + @ResponseBody + public UfApiResponse pipetteTipBoxStatusGet() { + var pipette = Device.getInstance().pipette; + var amountList = pipette.getTipAmountList(); + var list = List.of( + Map.of("index", 0, "tipAmount", amountList.get(0)), + Map.of("index", 1, "tipAmount", amountList.get(1)), + Map.of("index", 2, "tipAmount", amountList.get(2)) + ); + return this.success(list); + } +}