diff --git a/doc/A8000测试流程(非最终稿)第二版 2023.5.15.xlsx b/doc/A8000测试流程(非最终稿)第二版 2023.5.15.xlsx
new file mode 100644
index 0000000..b4d2a6b
Binary files /dev/null and b/doc/A8000测试流程(非最终稿)第二版 2023.5.15.xlsx differ
diff --git a/src/main/java/com/dreamworks/boditech/controller/AccountController.java b/src/main/java/com/dreamworks/boditech/controller/AccountController.java
index a64437e..4134130 100644
--- a/src/main/java/com/dreamworks/boditech/controller/AccountController.java
+++ b/src/main/java/com/dreamworks/boditech/controller/AccountController.java
@@ -37,7 +37,12 @@ public class AccountController extends BaseController {
return this.success();
}
-
+ @ResponseBody
+ @PostMapping("/api/account/current-get")
+ public ApiResponse get() {
+ Account user = this.accountService.getCurAccount();
+ return this.success(user);
+ }
diff --git a/src/main/java/com/dreamworks/boditech/controller/DeviceController.java b/src/main/java/com/dreamworks/boditech/controller/DeviceController.java
index 2c0d744..d4e4ee1 100644
--- a/src/main/java/com/dreamworks/boditech/controller/DeviceController.java
+++ b/src/main/java/com/dreamworks/boditech/controller/DeviceController.java
@@ -60,16 +60,6 @@ public class DeviceController extends BaseController {
@ResponseBody
@PostMapping("/api/device/load")
public ApiResponse load() {
- if ( !this.deviceEnable ) { // @TODO: 测试完成后删除
-// this.deviceService.device.testCards.appendByBoxCode(0, "1||CAGGB66U||2024.03.26||1279||06");
-// this.deviceService.device.testCards.appendByBoxCode(1, "2||CAGGB66U||2024.03.26||1279||06");
-// this.deviceService.device.testCards.appendByBoxCode(2, "3||CAGGB66U||2024.03.26||1279||06");
-// this.deviceService.device.testCards.appendByBoxCode(3, "4||CAGGB66U||2024.03.26||1279||06");
-// this.deviceService.device.testCards.appendByBoxCode(4, "5||CAGGB66U||2024.03.26||1279||06");
-// this.deviceService.device.testCards.appendByBoxCode(5, "6||CAGGB66U||2024.03.26||1279||06");
- return this.success();
- }
-
this.deviceService.load();
return this.success();
}
diff --git a/src/main/java/com/dreamworks/boditech/driver/consumable/CsmBufferTubeBox.java b/src/main/java/com/dreamworks/boditech/driver/consumable/CsmBufferTubeBox.java
index e0ee325..44773a3 100644
--- a/src/main/java/com/dreamworks/boditech/driver/consumable/CsmBufferTubeBox.java
+++ b/src/main/java/com/dreamworks/boditech/driver/consumable/CsmBufferTubeBox.java
@@ -1,10 +1,16 @@
package com.dreamworks.boditech.driver.consumable;
public class CsmBufferTubeBox {
- public static final String STATUS_NOT_LOADED = "NOT_LOADED";
-
+ // index of buffer tube box : 0 - 5
public Integer index;
+ // if the buffer tube box is loaded
+ public Boolean isLoaded = false;
+
public Integer projectId;
public String projectName;
+ public String projectColor;
public Integer tubeAmount;
+
+ public static final String STATUS_NOT_LOADED = "NOT_LOADED";
+ public static final String STATUS_LOADED = "LOADED";
public String status;
}
diff --git a/src/main/java/com/dreamworks/boditech/driver/consumable/CsmBufferTubeManager.java b/src/main/java/com/dreamworks/boditech/driver/consumable/CsmBufferTubeManager.java
index 208c445..d372ac4 100644
--- a/src/main/java/com/dreamworks/boditech/driver/consumable/CsmBufferTubeManager.java
+++ b/src/main/java/com/dreamworks/boditech/driver/consumable/CsmBufferTubeManager.java
@@ -1,9 +1,12 @@
package com.dreamworks.boditech.driver.consumable;
import com.dreamworks.boditech.driver.Device;
import com.dreamworks.boditech.driver.entity.ParamBufferTubeUpdateByBox;
+import com.dreamworks.boditech.entity.IdChip;
import com.dreamworks.boditech.entity.Project;
import java.util.ArrayList;
import java.util.List;
+import java.util.Objects;
+
public class CsmBufferTubeManager {
// device instance
private final Device device;
@@ -24,15 +27,6 @@ public class CsmBufferTubeManager {
box.status = CsmBufferTubeBox.STATUS_NOT_LOADED;
this.bufferTubeBoxes.add(box);
}
-
- // @TODO : 移除demo数据
- if ( !this.device.enable ) {
- for ( int i=0; i<6; i++ ) {
- CsmBufferTubeBox box = this.bufferTubeBoxes.get(i);
- box.tubeAmount = 25;
- box.projectName = "demo" + i;
- }
- }
}
// get all buffer tube boxes
@@ -48,37 +42,40 @@ public class CsmBufferTubeManager {
/**
* append buffer tube by box code string
- * code example : 1||CAGGB66U||2024.03.26||1279||06
- * code format : projectCodeNum||lotCode||expireDate||unknown||unknown
- * @param index
- * @param code
+ * code example : 01CAGGB66U
+ * code format : [projectCodeNum(2)][lotCode(8)]
+ * @link Generate barcode
+ * @param index - position of buffer tube in cell
+ * @param code - box code string
*/
public void appendByCode( Integer index, String code ) {
- // @TODO : 由于缺少 code 格式,所以都做 "hsCRP" 项目处理
- String projectName = "hsCRP";
- Project project = this.device.projectService.findByName(projectName);
- if ( null == project ) {
- throw new RuntimeException("project not found");
+ String lotCode = code.substring(2);
+ Integer projectCode = Integer.parseInt(code.substring(0, 2));
+ Project project = this.device.projectService.activeProjectGetByCodeNum(projectCode, lotCode);
+ if (!Objects.equals(project.posIndex, index)) {
+ throw new RuntimeException("BUFFER_TUBE_PROJECT_NOT_MATCHED");
}
- // remove all buffer tube A with matched zoneIndex
- this.bufferTubeList.removeIf(bufferTubeA -> bufferTubeA.areaIndex.equals(index));
-
- for ( int i=0; i<25; i++ ) {
- // append new buffer tube A
- CsmBufferTube bufferTube = new CsmBufferTube(this);
- bufferTube.areaIndex = index;
- bufferTube.position = i;
- bufferTube.projectName = project.name;
- // @TODO : 这里没法判断是那种盖子,所以都做 500μl 处理
- bufferTube.coverType = CsmBufferTube.COVER_TYPE_150;
- this.bufferTubeList.add(bufferTube);
- }
+ CsmBufferTubeBox box = this.bufferTubeBoxes.get(index);
+ box.projectName = project.name;
+ box.projectId = project.id;
+ box.projectColor = project.color;
+ box.tubeAmount = 25;
+ box.isLoaded = true;
+ box.status = CsmBufferTubeBox.STATUS_LOADED;
}
+
+
+
+
+
+
+
+
// list of buffer tube
private final List bufferTubeList = new ArrayList<>();
diff --git a/src/main/java/com/dreamworks/boditech/driver/consumable/CsmLargeBufferTube.java b/src/main/java/com/dreamworks/boditech/driver/consumable/CsmLargeBufferTube.java
index de9df7b..c5e3008 100644
--- a/src/main/java/com/dreamworks/boditech/driver/consumable/CsmLargeBufferTube.java
+++ b/src/main/java/com/dreamworks/boditech/driver/consumable/CsmLargeBufferTube.java
@@ -1,11 +1,28 @@
package com.dreamworks.boditech.driver.consumable;
public class CsmLargeBufferTube {
+ // index of tube : 0 - 5
+ public Integer index = -1;
+ // if the tube is loaded
+ public Boolean isLoaded = false;
+
+
// position
public Integer position = -1;
+ // project id
+ public Integer projectId = 0;
// project name
public String projectName = "";
+ // project color
+ public String projectColor = "";
// amount
public Integer amount;
+
+
+ public static final String STATUS_NOT_LOADED = "NOT_LOADED";
+ public static final String STATUS_LOADED = "LOADED";
+ // status
+ public String status = CsmLargeBufferTube.STATUS_NOT_LOADED;
+
// exists
public Boolean exists = false;
diff --git a/src/main/java/com/dreamworks/boditech/driver/consumable/CsmLargeBufferTubeManager.java b/src/main/java/com/dreamworks/boditech/driver/consumable/CsmLargeBufferTubeManager.java
index ac127e8..2649f30 100644
--- a/src/main/java/com/dreamworks/boditech/driver/consumable/CsmLargeBufferTubeManager.java
+++ b/src/main/java/com/dreamworks/boditech/driver/consumable/CsmLargeBufferTubeManager.java
@@ -4,6 +4,7 @@ import com.dreamworks.boditech.driver.entity.ParamLargeBufferTubeUpdate;
import com.dreamworks.boditech.entity.Project;
import java.util.ArrayList;
import java.util.List;
+import java.util.Objects;
public class CsmLargeBufferTubeManager {
// device instance
private final Device device;
@@ -13,13 +14,11 @@ public class CsmLargeBufferTubeManager {
// constructor
public CsmLargeBufferTubeManager(Device device) {
this.device = device;
-
- //@TODO: demo 数据
for ( int i=0; i<6; i++ ) {
CsmLargeBufferTube tube = new CsmLargeBufferTube(this);
tube.position = i;
- tube.amount = 15;
- tube.projectName = "demo" + i;
+ tube.index = i;
+ tube.status = CsmLargeBufferTube.STATUS_NOT_LOADED;
this.largeBufferTubes.add(tube);
}
}
@@ -35,27 +34,67 @@ public class CsmLargeBufferTubeManager {
}
/**
- * append large buffer tube by box code
- * @param code box code string
+ * append large buffer tube by box code string
+ * code example : 01CAGGB66U
+ * code format : [projectCodeNum(2)][lotCode(8)]
+ * @link Generate barcode
+ * @param index - position of buffer tube in cell
+ * @param code - box code string
*/
- public void appendByCode( Integer position, String code ) {
- // @TODO : code 格式暂无,所以都做 "hsCRP" 项目处理
- String projectName = "hsCRP";
- Project project = this.device.projectService.findByName(projectName);
- if ( null == project ) {
- throw new RuntimeException("project not found");
+ public void appendByCode( Integer index, String code ) {
+ String lotCode = code.substring(2);
+ Integer projectCode = Integer.parseInt(code.substring(0, 2));
+ Project project = this.device.projectService.activeProjectGetByCodeNum(projectCode, lotCode);
+ if (!Objects.equals(project.posIndex, index)) {
+ throw new RuntimeException("BUFFER_TUBE_PROJECT_NOT_MATCHED");
}
- // remove all large buffer tubes with matched position
- this.largeBufferTubes.removeIf(largeBufferTube -> largeBufferTube.position.equals(position));
-
- // append new large buffer tubes
- CsmLargeBufferTube largeBufferTube = new CsmLargeBufferTube(this);
- largeBufferTube.position = position;
- largeBufferTube.projectName = "hsCRP";
- this.largeBufferTubes.add(largeBufferTube);
+ CsmLargeBufferTube box = this.largeBufferTubes.get(index);
+ box.projectName = project.name;
+ box.projectId = project.id;
+ box.projectColor = project.color;
+ box.amount = 25;
+ box.isLoaded = true;
+ box.status = CsmLargeBufferTube.STATUS_LOADED;
}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
// get large buffer tube
public CsmLargeBufferTube getTubeByProjectName( String projectName ) {
CsmLargeBufferTube tube = null;
diff --git a/src/main/java/com/dreamworks/boditech/driver/consumable/CsmTestCardBox.java b/src/main/java/com/dreamworks/boditech/driver/consumable/CsmTestCardBox.java
index 0c9a8ec..5894bf6 100644
--- a/src/main/java/com/dreamworks/boditech/driver/consumable/CsmTestCardBox.java
+++ b/src/main/java/com/dreamworks/boditech/driver/consumable/CsmTestCardBox.java
@@ -1,12 +1,10 @@
package com.dreamworks.boditech.driver.consumable;
public class CsmTestCardBox {
- // status of test card box : OK
- public static final String STATUS_OK = "OK";
-
- /**
- * index of test card box : 0 - 5
- */
+ // index of test card box : 0 - 5
public Integer index = -1;
+ // if the test card box is loaded
+ public Boolean isLoaded = false;
+
public Integer projectId;
public String projectName;
@@ -15,6 +13,8 @@ public class CsmTestCardBox {
public String lotCode;
public Integer cardAmount = 0;
+ // status of test card box : OK
+ public static final String STATUS_OK = "OK";
/**
* status of test card box :
* - OK
diff --git a/src/main/java/com/dreamworks/boditech/driver/consumable/CsmTestCardManager.java b/src/main/java/com/dreamworks/boditech/driver/consumable/CsmTestCardManager.java
index 24b2e5d..3b7f9a0 100644
--- a/src/main/java/com/dreamworks/boditech/driver/consumable/CsmTestCardManager.java
+++ b/src/main/java/com/dreamworks/boditech/driver/consumable/CsmTestCardManager.java
@@ -16,18 +16,9 @@ public class CsmTestCardManager {
// constructor
public CsmTestCardManager(Device device) {
this.device = device;
-
- String[] colors = new String[]{"red", "green", "blue", "yellow", "purple", "orange"};
-
for ( int i=0; i<6; i++ ) {
CsmTestCardBox box = new CsmTestCardBox();
box.index = i;
-
- // @TODO : demo 数据
- box.projectName = "demo" + i;
- box.projectId = 1;
- box.projectColor = colors[i];
-
this.testCardBoxes.add(box);
}
}
@@ -76,12 +67,13 @@ public class CsmTestCardManager {
}
Integer projectCodeNum = Integer.parseInt(parts[0]);
- Project project = this.device.projectService.activeProjectByCodeNum(projectCodeNum);
+ Project project = this.device.projectService.activeProjectByCodeNum(index, projectCodeNum, box.lotCode);
box.projectId = project.id;
box.projectName = project.name;
box.projectColor = project.color;
box.cardAmount = 25;
box.status = CsmTestCardBox.STATUS_OK;
+ box.isLoaded = true;
}
diff --git a/src/main/java/com/dreamworks/boditech/driver/task/TaskLoad.java b/src/main/java/com/dreamworks/boditech/driver/task/TaskLoad.java
index 61dfe97..195c679 100644
--- a/src/main/java/com/dreamworks/boditech/driver/task/TaskLoad.java
+++ b/src/main/java/com/dreamworks/boditech/driver/task/TaskLoad.java
@@ -5,16 +5,20 @@ import com.dreamworks.boditech.driver.actuator.ActCodeScanner;
import com.dreamworks.boditech.driver.actuator.ActModuleTestCardBoxCase;
import com.dreamworks.boditech.driver.actuator.ActuatorModule;
public class TaskLoad extends TaskBase {
+ // arm xy
+ private ActArmXY armXY;
+
@Override
public void execute(Executor executor) {
Device device = executor.getDevice();
- ActArmXY armXY = (ActArmXY)device.getActuator(ActuatorModule.ARM_XY);
+ this.armXY = (ActArmXY)device.getActuator(ActuatorModule.ARM_XY);
try {
this.testCardLoad(executor);
this.bufferTubeLoad(executor);
+ this.largeBufferTubeLoad(executor);
} catch (RuntimeException e) {
- armXY.reset();
+ this.armXY.reset();
throw e;
}
}
@@ -22,7 +26,16 @@ public class TaskLoad extends TaskBase {
// load test card
private void testCardLoad(Executor executor) {
Device device = executor.getDevice();
- ActArmXY armXY = (ActArmXY)device.getActuator(ActuatorModule.ARM_XY);
+ if ( !device.enable ) { // @TODO : 移除测试数据
+ device.testCards.appendByBoxCode(0, "1||CAGGB66U||2024.03.26||1279||06");
+ device.testCards.appendByBoxCode(1, "2||CAGGB66U||2024.03.26||1279||06");
+ device.testCards.appendByBoxCode(2, "3||CAGGB66U||2024.03.26||1279||06");
+ device.testCards.appendByBoxCode(3, "4||CAGGB66U||2024.03.26||1279||06");
+ device.testCards.appendByBoxCode(4, "5||CAGGB66U||2024.03.26||1279||06");
+ device.testCards.appendByBoxCode(5, "6||CAGGB66U||2024.03.26||1279||06");
+ return ;
+ }
+
ActCodeScanner codeScanner = (ActCodeScanner)device.getActuator(ActuatorModule.ARM_Z_SCANNER);
// 检查试卡盒仓盖是否关闭
@@ -35,7 +48,7 @@ public class TaskLoad extends TaskBase {
Integer scanStartY = device.getLocationByName("testCardScanStart.y");
Integer scanDistance = device.getLocationByName("testCardBoxScanDistance");
for ( int i=0; i<6; i++ ) {
- armXY.moveTo(scanStartX, scanStartY + i * scanDistance);
+ this.armXY.moveTo(scanStartX, scanStartY + i * scanDistance);
String code = codeScanner.scan(500);
if ( "".equals(code) ) {
continue ;
@@ -43,13 +56,22 @@ public class TaskLoad extends TaskBase {
device.testCards.appendByBoxCode(i, code);
}
- armXY.reset();
+ this.armXY.reset();
}
// load buffer tube
private void bufferTubeLoad(Executor executor) {
Device device = executor.getDevice();
- ActArmXY armXY = (ActArmXY)device.getActuator(ActuatorModule.ARM_XY);
+ if ( !device.enable ) { // @TODO : 移除测试数据
+ device.bufferTubes.appendByCode(0, "01CAGGB66U");
+ device.bufferTubes.appendByCode(1, "02CAGGB66U");
+ device.bufferTubes.appendByCode(2, "03CAGGB66U");
+ device.bufferTubes.appendByCode(3, "04CAGGB66U");
+ device.bufferTubes.appendByCode(4, "05CAGGB66U");
+ device.bufferTubes.appendByCode(5, "06CAGGB66U");
+ return ;
+ }
+
ActCodeScanner codeScanner = (ActCodeScanner)device.getActuator(ActuatorModule.ARM_Z_SCANNER);
Integer scanStartX = device.getLocationByName("bufferTubeLineOneScanStart.x");
@@ -57,7 +79,7 @@ public class TaskLoad extends TaskBase {
// buffer tube line one
for ( int i=0; i<3; i++ ) {
- armXY.moveTo(scanStartX - i * 1200, scanStartY);
+ this.armXY.moveTo(scanStartX - i * 1200, scanStartY);
String code = codeScanner.scan(500);
if ( "".equals(code) ) {
continue ;
@@ -69,7 +91,7 @@ public class TaskLoad extends TaskBase {
scanStartX = device.getLocationByName("bufferTubeLineTwoScanStart.x");
scanStartY = device.getLocationByName("bufferTubeLineTwoScanStart.y");
for ( int i=0; i<3; i++ ) {
- armXY.moveTo(scanStartX - i * 1200, scanStartY);
+ this.armXY.moveTo(scanStartX - i * 1200, scanStartY);
String code = codeScanner.scan(500);
if ( "".equals(code) ) {
continue ;
@@ -77,6 +99,48 @@ public class TaskLoad extends TaskBase {
device.bufferTubes.appendByCode(i+3, code);
}
- armXY.reset();
+ this.armXY.reset();
+ }
+
+ // load large buffer tube
+ private void largeBufferTubeLoad(Executor executor) {
+ Device device = executor.getDevice();
+ if ( !device.enable ) { // @TODO : 移除测试数据
+ device.largeBufferTubes.appendByCode(0, "01CAGGB66U");
+ device.largeBufferTubes.appendByCode(1, "02CAGGB66U");
+ device.largeBufferTubes.appendByCode(2, "03CAGGB66U");
+ device.largeBufferTubes.appendByCode(3, "04CAGGB66U");
+ device.largeBufferTubes.appendByCode(4, "05CAGGB66U");
+ device.largeBufferTubes.appendByCode(5, "06CAGGB66U");
+ return ;
+ }
+
+ ActCodeScanner codeScanner = (ActCodeScanner)device.getActuator(ActuatorModule.ARM_Z_SCANNER);
+
+ Integer scanStartX = device.getLocationByName("largeBufferTubeRowOneScanStart.x");
+ Integer scanStartY = device.getLocationByName("largeBufferTubeRowOneScanStart.y");
+
+ // row one
+ for ( int i=0; i<3; i++ ) {
+ this.armXY.moveTo(scanStartX - i * 300, scanStartY);
+ String code = codeScanner.scan(500);
+ if ( "".equals(code) ) {
+ continue ;
+ }
+ device.largeBufferTubes.appendByCode(i, code);
+ }
+
+ // row two
+ scanStartY -= 600;
+ for ( int i=0; i<3; i++ ) {
+ this.armXY.moveTo(scanStartX - i * 300, scanStartY);
+ String code = codeScanner.scan(500);
+ if ( "".equals(code) ) {
+ continue ;
+ }
+ device.largeBufferTubes.appendByCode(i + 3, code);
+ }
+
+ this.armXY.reset();
}
}
diff --git a/src/main/java/com/dreamworks/boditech/entity/Project.java b/src/main/java/com/dreamworks/boditech/entity/Project.java
index 5e66beb..4294be4 100644
--- a/src/main/java/com/dreamworks/boditech/entity/Project.java
+++ b/src/main/java/com/dreamworks/boditech/entity/Project.java
@@ -7,4 +7,17 @@ public class Project {
// color of project
public String color;
public String steps;
+
+ /**
+ * position code in device, available values are 0, 1, 2, 3, 4, 5.
+ * this property would not be saved in database.
+ * @NOT-DATABASE-FIELD
+ */
+ public Integer posIndex = 0;
+
+ /**
+ * lot code of project
+ * @NOT-DATABASE-FIELD
+ */
+ public String lotCode = "";
}
diff --git a/src/main/java/com/dreamworks/boditech/service/AccountService.java b/src/main/java/com/dreamworks/boditech/service/AccountService.java
index 17e2f51..34b107d 100644
--- a/src/main/java/com/dreamworks/boditech/service/AccountService.java
+++ b/src/main/java/com/dreamworks/boditech/service/AccountService.java
@@ -20,6 +20,11 @@ public class AccountService {
// current user
private Account curAccount = null;
+ // get current user
+ public Account getCurAccount() {
+ return this.curAccount;
+ }
+
// list-login-accounts
public List listLoginAccounts(Integer limit) {
return this.userMapper.listLoginAccounts(limit);
diff --git a/src/main/java/com/dreamworks/boditech/service/ActionLogService.java b/src/main/java/com/dreamworks/boditech/service/ActionLogService.java
index 3775ce9..e967530 100644
--- a/src/main/java/com/dreamworks/boditech/service/ActionLogService.java
+++ b/src/main/java/com/dreamworks/boditech/service/ActionLogService.java
@@ -2,6 +2,8 @@ package com.dreamworks.boditech.service;
import com.dreamworks.boditech.entity.ActionLogEntry;
import com.dreamworks.boditech.mapper.ActionLogMapper;
import jakarta.annotation.Resource;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
import java.time.LocalDateTime;
@@ -10,6 +12,8 @@ import java.util.ArrayList;
import java.util.List;
@Service
public class ActionLogService {
+ // logger
+ private static final Logger LOG = LoggerFactory.getLogger(ActionLogService.class);
@Resource
private ActionLogMapper actionLogMapper;
// user id
@@ -34,5 +38,6 @@ public class ActionLogService {
entry.params = String.join(",", paramList);
entry.startedAt = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
this.actionLogMapper.insert(entry);
+ LOG.info("[User:{}#{}] {}", entry.userId, entry.action, entry.params);
}
}
diff --git a/src/main/java/com/dreamworks/boditech/service/DeviceService.java b/src/main/java/com/dreamworks/boditech/service/DeviceService.java
index 03d32c7..86349ca 100644
--- a/src/main/java/com/dreamworks/boditech/service/DeviceService.java
+++ b/src/main/java/com/dreamworks/boditech/service/DeviceService.java
@@ -16,6 +16,8 @@ public class DeviceService {
public Device device;
@Resource
public RuntimeVariableService runtimeVariableService;
+ @Resource
+ private ActionLogService actionLog;
// tasks
private final List tasks = new ArrayList<>();
@@ -39,6 +41,7 @@ public class DeviceService {
* load consumable resources
*/
public void load() {
+ this.actionLog.log("device.load");
TaskLoad task = new TaskLoad();
Executor.executeTask(this.device, task);
}
diff --git a/src/main/java/com/dreamworks/boditech/service/ProjectService.java b/src/main/java/com/dreamworks/boditech/service/ProjectService.java
index 8799215..ec23596 100644
--- a/src/main/java/com/dreamworks/boditech/service/ProjectService.java
+++ b/src/main/java/com/dreamworks/boditech/service/ProjectService.java
@@ -14,30 +14,44 @@ public class ProjectService {
private List projects;
// project colors
private final String[] colors = new String[]{"red", "green", "blue", "yellow", "orange", "pink"};
- // project color index
- private Integer colorIndex = 0;
@PostConstruct
public void init() {
this.projects = new ArrayList<>();
+ for ( int i=0; i<6; i++ ) {
+ this.projects.add(null);
+ }
}
- // active project
- public Project activeProjectByCodeNum(Integer codeNum) {
+ // get active project by given code num
+ public Project activeProjectGetByCodeNum( Integer codeNum, String lotCode ) {
for ( Project project : this.projects ) {
- if ( project.codeNum.equals(codeNum) ) {
+ if ( null != project
+ && project.codeNum.equals(codeNum)
+ && project.lotCode.equals(lotCode)
+ ) {
return project;
}
}
+ throw new RuntimeException("PROJECT_CODE_NOT_ACTIVE");
+ }
+
+ // active project
+ public Project activeProjectByCodeNum(Integer posIndex, Integer codeNum, String lotCode) {
+ Project project = this.projects.get(posIndex);
+ if ( null != project ) {
+ throw new RuntimeException("PROJECT_CODE_ALREADY_ACTIVE");
+ }
- Project project = this.findByCodeNum(codeNum);
+ project = this.findByCodeNum(codeNum);
if ( project == null ) {
throw new RuntimeException("PROJECT_CODE_NOT_AVAILABLE");
}
- project.color = this.colors[this.colorIndex % this.colors.length];
- this.projects.add(project);
- this.colorIndex++;
+ project.posIndex = posIndex;
+ project.lotCode = lotCode;
+ project.color = this.colors[posIndex];
+ this.projects.set(posIndex, project);
return project;
}