You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

395 lines
9.5 KiB

2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
  1. package com.dreamworks.boditech.controller;
  2. import com.dreamworks.boditech.controller.entity.ApiResponse;
  3. import com.dreamworks.boditech.driver.actuator.ActModuleTestCardBoxCaseTemperature;
  4. import com.dreamworks.boditech.driver.actuator.ActuatorModule;
  5. import com.dreamworks.boditech.driver.entity.ParamBufferTubeUpdateByBox;
  6. import com.dreamworks.boditech.driver.entity.ParamLargeBufferTubeUpdate;
  7. import com.dreamworks.boditech.driver.entity.ParamPipetteTipUpdate;
  8. import com.dreamworks.boditech.driver.entity.ParamTestCardUpdateByBox;
  9. import com.dreamworks.boditech.driver.task.Task;
  10. import com.dreamworks.boditech.service.DeviceService;
  11. import jakarta.annotation.Resource;
  12. import org.springframework.beans.factory.annotation.Value;
  13. import org.springframework.stereotype.Controller;
  14. import org.springframework.web.bind.annotation.*;
  15. import java.io.IOException;
  16. import java.util.*;
  17. @Controller
  18. public class DeviceController extends BaseController {
  19. @Resource
  20. private DeviceService deviceService;
  21. @ResponseBody
  22. @PostMapping("/api/device/power-off")
  23. public ApiResponse powerOff() {
  24. DeviceService theDeviceService = this.deviceService;
  25. TimerTask timerTask = new TimerTask() {
  26. @Override
  27. public void run() {
  28. theDeviceService.powerOff();
  29. }
  30. };
  31. Timer timer = new Timer();
  32. timer.schedule(timerTask, 1000);
  33. return this.success();
  34. }
  35. @ResponseBody
  36. @PostMapping("/api/device/reboot")
  37. public ApiResponse reboot() {
  38. DeviceService theDeviceService = this.deviceService;
  39. TimerTask timerTask = new TimerTask() {
  40. @Override
  41. public void run() {
  42. theDeviceService.reboot();
  43. }
  44. };
  45. Timer timer = new Timer();
  46. timer.schedule(timerTask, 1000);
  47. return this.success();
  48. }
  49. /**
  50. * load consumable resources
  51. * @return api response
  52. */
  53. @ResponseBody
  54. @PostMapping("/api/device/load")
  55. public ApiResponse load() {
  56. this.deviceService.load();
  57. return this.success();
  58. }
  59. @ResponseBody
  60. @PostMapping("/api/device/unload")
  61. public ApiResponse unload() {
  62. this.deviceService.unload();
  63. return this.success();
  64. }
  65. @ResponseBody
  66. @PostMapping("/api/device/temperature-get")
  67. public ApiResponse temperatureGet() {
  68. Integer mid = ActuatorModule.TEST_CARD_BOX_CASE_TEMPERATURE;
  69. ActModuleTestCardBoxCaseTemperature module = (ActModuleTestCardBoxCaseTemperature)this.deviceService.device.getActuator(mid);
  70. Double temperature = module.getTemperature();
  71. return this.success(Map.of(
  72. "testCardBoxCase", temperature
  73. ));
  74. }
  75. @ResponseBody
  76. @PostMapping("/api/device/pipette-tip-update-by-box")
  77. public ApiResponse pipetteTipUpdate( @RequestBody ParamPipetteTipUpdate param ) {
  78. this.deviceService.pipetteTipUpdateByBox(param);
  79. return this.success();
  80. }
  81. @ResponseBody
  82. @PostMapping("/api/device/pipette-tip-box-status-get")
  83. public ApiResponse pipetteTipStatusGet() {
  84. return this.success(this.deviceService.device.pipetteTips.getAll());
  85. }
  86. @ResponseBody
  87. @PostMapping("/api/device/start")
  88. public ApiResponse start() {
  89. this.deviceService.start();
  90. return this.success();
  91. }
  92. @ResponseBody
  93. @PostMapping("/api/device/service-status-get")
  94. public ApiResponse serviceStatusGet() {
  95. String deviceConnection = this.deviceService.device.getConnectionStatus();
  96. // @TODO : 想个办法获取数据库连接状态
  97. String databaseConnection = "connected";
  98. return this.success(Map.of(
  99. "deviceConnection", deviceConnection,
  100. "databaseConnection", databaseConnection
  101. ));
  102. }
  103. @ResponseBody
  104. @PostMapping("/api/device/init")
  105. public ApiResponse init() {
  106. // this.deviceService.reset(false);
  107. return this.success();
  108. }
  109. @ResponseBody
  110. @PostMapping("/api/device/restore")
  111. public ApiResponse restore() {
  112. this.deviceService.reset(true);
  113. return this.success();
  114. }
  115. @ResponseBody
  116. @RequestMapping("/api/device/id-chip-status-get")
  117. public ApiResponse statusGet() {
  118. return this.success(Map.of(
  119. "status" , "OFFLINE"
  120. ));
  121. }
  122. @ResponseBody
  123. @PostMapping("/api/device/test-card-load")
  124. public ApiResponse testCardLoad(@RequestHeader(name="IS-FS-READY",required = false) String isFsReady ) {
  125. // @TODO : 删除该标记
  126. if ( "NO".equals(isFsReady) ) {
  127. return this.success();
  128. }
  129. this.deviceService.testCardLoad();
  130. return this.success();
  131. }
  132. @ResponseBody
  133. @PostMapping("/api/device/test-card-update-by-box")
  134. public ApiResponse testCardUpdateByBox( @RequestBody ParamTestCardUpdateByBox update ) {
  135. this.deviceService.testCardUpdateByBox(update);
  136. return this.success();
  137. }
  138. @ResponseBody
  139. @PostMapping("/api/device/test-card-status-get")
  140. public ApiResponse testCardStatusGet() {
  141. return this.success(this.deviceService.device.testCards.getAllBoxes());
  142. }
  143. @ResponseBody
  144. @PostMapping("/api/device/buffer-tube-load")
  145. public ApiResponse bufferTubeLoad() {
  146. // List<CsmBufferTube> list = this.deviceService.bufferTubeLoad();
  147. return this.success();
  148. }
  149. @ResponseBody
  150. @PostMapping("/api/device/buffer-tube-update-by-box")
  151. public ApiResponse bufferTubeUpdateByBox( @RequestBody ParamBufferTubeUpdateByBox param) {
  152. this.deviceService.bufferTubeUpdateByBox(param);
  153. return this.success();
  154. }
  155. @ResponseBody
  156. @PostMapping("/api/device/buffer-tube-status-get")
  157. public ApiResponse bufferTubeStatusGet() {
  158. return this.success(this.deviceService.device.bufferTubes.getAllBoxes());
  159. }
  160. @ResponseBody
  161. @PostMapping("/api/device/large-buffer-tube-load")
  162. public ApiResponse largeBufferTubeLoad() {
  163. // List< CsmLargeBufferTube> list = this.deviceService.largeBufferTubeLoad();
  164. return this.success();
  165. }
  166. @ResponseBody
  167. @PostMapping("/api/device/large-buffer-tube-update")
  168. public ApiResponse largeBufferTubeUpdate(@RequestBody ParamLargeBufferTubeUpdate param) {
  169. this.deviceService.largeBufferTubeUpdate(param);
  170. return this.success();
  171. }
  172. @ResponseBody
  173. @PostMapping("/api/device/large-buffer-tube-status-get")
  174. public ApiResponse largeBufferTubeStatusGet() {
  175. return this.success(this.deviceService.device.largeBufferTubes.getAll());
  176. }
  177. @ResponseBody
  178. @PostMapping("/api/device/emergency-slot-status-get")
  179. public ApiResponse emergencySlotStatusGet() {
  180. return this.success(Map.of(
  181. "slotA", Map.of("status","EMPTY"),
  182. "slotB", Map.of("status","EMPTY")
  183. ));
  184. }
  185. @ResponseBody
  186. @PostMapping("/api/device/status-get")
  187. public ApiResponse status() {
  188. return this.success(Map.of(
  189. "status", "WAIT_FOR_TUBE_RACK"
  190. ));
  191. }
  192. @ResponseBody
  193. @PostMapping("/api/device/stop")
  194. public ApiResponse stop() {
  195. // this.deviceService.stop();
  196. return this.success();
  197. }
  198. @ResponseBody
  199. @PostMapping("/api/device/pause")
  200. public ApiResponse pause() {
  201. return this.success();
  202. }
  203. @ResponseBody
  204. @PostMapping("/api/device/resume")
  205. public ApiResponse resume() {
  206. return this.success();
  207. }
  208. @ResponseBody
  209. @PostMapping("/api/device/trash-box-status-get")
  210. public ApiResponse trashBoxStatusGet() {
  211. return this.success(Map.of(
  212. "status", "EMPTY"
  213. ));
  214. }
  215. @ResponseBody
  216. @PostMapping("/api/device/incubator-status-get")
  217. public ApiResponse incubatorStatusGet() {
  218. List<Map<String,Object>> slots = new ArrayList<>();
  219. for ( int i=0; i<20; i++) {
  220. Map<String,Object> slot = new HashMap<>();
  221. slot.put("index", Integer.toString(i));
  222. slot.put("status", "INUSE");
  223. slot.put("task", Map.of(
  224. "recordUUID", "202110-01",
  225. "samplePID", "ABCD1234",
  226. "sampleUID", "016",
  227. "projectName", "hsCRP",
  228. "lotCode", "1234567890",
  229. "tubeIndex", "05",
  230. "tubeType", "WB",
  231. "sampleType", "FB",
  232. "incubateStartedAt", "2012-12-15 00:00:44",
  233. "incubateTime", "3600"
  234. ));
  235. slots.add(slot);
  236. }
  237. return this.success(Map.of(
  238. "temperature", 37,
  239. "slots", slots
  240. ));
  241. }
  242. @ResponseBody
  243. @PostMapping("/api/device/test-tube-rack-status-get")
  244. public ApiResponse testTubeRackStatusGet() {
  245. List<Map<String,Object>> tubes = new ArrayList<>();
  246. for ( int i=0; i<10; i++ ) {
  247. List<Map<String,Object>> tasks = new ArrayList<>();
  248. for ( int ti=0; ti<3; ti++ ) {
  249. Map<String,Object> task = new HashMap<>();
  250. task.put("projectName", "hsCRP");
  251. task.put("projectId", "01");
  252. tasks.add(task);
  253. }
  254. Map<String,Object> tube = new HashMap<>();
  255. tube.put("index", Integer.toString(i));
  256. tube.put("status", "WAITING");
  257. tube.put("sampleUID", "016");
  258. tube.put("sampleType","FB");
  259. tube.put("projects",tasks);
  260. tubes.add(tube);
  261. }
  262. return this.success(Map.of(
  263. "type" , "AUTO",
  264. "tubes", tubes
  265. ));
  266. }
  267. }