sige 1 year ago
parent
commit
9a93d7e974
  1. 5
      src/src/main/java/com/my/graphiteDigesterBg/diframe/DiDevice.java
  2. 65
      src/src/main/java/com/my/graphiteDigesterBg/diframe/DiDeviceRuntimeVariableManager.java
  3. 22
      src/src/main/java/com/my/graphiteDigesterBg/diframe/DiOptionManager.java
  4. 2
      src/src/main/java/com/my/graphiteDigesterBg/diframe/api/DiApiDevice.java
  5. 15
      src/src/main/java/com/my/graphiteDigesterBg/diframe/model/DiMdbOption.java
  6. 18
      src/src/main/java/com/my/graphiteDigesterBg/diframe/model/DiMdbRuntimeVariable.java
  7. 4
      src/src/main/java/com/my/graphiteDigesterBg/move/MoveLiquidAdd.java
  8. 22
      src/src/main/java/com/my/graphiteDigesterBg/resource/ResAcidBucket.java
  9. 28
      src/src/main/java/com/my/graphiteDigesterBg/resource/ResAcidManager.java
  10. 10
      src/src/main/java/com/my/graphiteDigesterBg/task/TaskStartReset.java
  11. 2
      src/web/src/pages/main/contents/AcidManagement.vue

5
src/src/main/java/com/my/graphiteDigesterBg/diframe/DiDevice.java

@ -257,4 +257,9 @@ public class DiDevice {
request.parameter = ByteBuffer.wrap(hex.getBytes());
return request;
}
// get option
public DiOptionManager getOption() {
return new DiOptionManager();
}
}

65
src/src/main/java/com/my/graphiteDigesterBg/diframe/DiDeviceRuntimeVariableManager.java

@ -1,50 +1,55 @@
package com.my.graphiteDigesterBg.diframe;
import com.my.graphiteDigesterBg.diframe.model.DiMdbRuntimeVariable;
import java.util.Map;
public class DiDeviceRuntimeVariableManager {
// variables
private final Map<String, Object> variables;
// get location value
public DiMdbRuntimeVariable getVariable(String key, Object ... args ) {
key = this.buildKey(key, args);
return DiActiveRecord.findOne(DiMdbRuntimeVariable.class, Map.of("key", key));
}
// constructor
public DiDeviceRuntimeVariableManager() {
this.variables = new java.util.HashMap<>();
// build key
private String buildKey(String key, Object ... args) {
StringBuilder keyBuilder = new StringBuilder(key);
for (Object arg : args) {
keyBuilder.append(".").append(arg.toString());
}
return keyBuilder.toString();
}
// get string
public String getString(String name) {
return (String)this.variables.get(name);
public String getString(String name, Object ... args ) {
var variable = this.getVariable(name, args);
return null == variable ? null : variable.value;
}
// get integer
public Integer getInteger(String name) {
return (Integer)this.variables.get(name);
}
// get object
public Object get(String name) {
return this.variables.get(name);
}
// get by class
public <T> T get(String name, Class<T> clazz) {
return (T)this.variables.get(name);
public Integer getInteger(String name, Object ... args ) {
var variable = this.getVariable(name, args);
return null == variable ? null : Integer.parseInt(variable.value);
}
// set string
public void setString(String name, String value) {
this.variables.put(name, value);
}
public void setInteger(String name, Integer value) {
this.variables.put(name, value);
public void setString(String value, String name, Object ... args ) {
var variable = this.getVariable(name, args);
if ( null == variable ) {
variable = new DiMdbRuntimeVariable();
variable.key = this.buildKey(name, args);
}
variable.value = value;
variable.save();
}
// set object
public void set(String name, Object value) {
this.variables.put(name, value);
// set integer
public void setInteger(Integer value, String name, Object ... args ) {
this.setString(value.toString(), name, args);
}
// remove
public void remove(String name) {
this.variables.remove(name);
public void remove(String name, Object ... args ) {
var variable = this.getVariable(name);
if ( null != variable ) {
variable.delete();
}
}
}

22
src/src/main/java/com/my/graphiteDigesterBg/diframe/DiOptionManager.java

@ -0,0 +1,22 @@
package com.my.graphiteDigesterBg.diframe;
import com.my.graphiteDigesterBg.diframe.model.DiMdbOption;
import java.util.Map;
public class DiOptionManager {
// get integer
public Integer getInteger(String key, Object ... args ) {
var option = this.getOption(key, args);
return Integer.parseInt(option.value);
}
// get location value
public DiMdbOption getOption(String key, Object ... args ) {
StringBuilder keyBuilder = new StringBuilder(key);
for (Object arg : args) {
keyBuilder.append(".").append(arg.toString());
}
key = keyBuilder.toString();
var option = DiActiveRecord.findOne(DiMdbOption.class, Map.of("key", key));
assert option != null;
return option;
}
}

2
src/src/main/java/com/my/graphiteDigesterBg/diframe/api/DiApiDevice.java

@ -45,7 +45,7 @@ public class DiApiDevice extends DiApiControllerBase {
@PostMapping("/api/device/runtime-variable/get")
public DiApiResponse getRuntimeVariable(@RequestBody Map<String, Object> params ) {
String name = (String)params.get("name");
Object value = this.device.getRuntimeVariables().get(name);
Object value = this.device.getRuntimeVariables().getString(name);
Map<String,Object> result = new HashMap<>();
result.put("value", value);
return this.success(result);

15
src/src/main/java/com/my/graphiteDigesterBg/diframe/model/DiMdbOption.java

@ -0,0 +1,15 @@
package com.my.graphiteDigesterBg.diframe.model;
import com.my.graphiteDigesterBg.diframe.DiActiveRecord;
public class DiMdbOption extends DiActiveRecord {
// id
public Integer id;
// key
public String key;
// value
public String value;
// get table name
public static String getTableName() {
return "app_options";
}
}

18
src/src/main/java/com/my/graphiteDigesterBg/diframe/model/DiMdbRuntimeVariable.java

@ -0,0 +1,18 @@
package com.my.graphiteDigesterBg.diframe.model;
import com.my.graphiteDigesterBg.diframe.ActiveRecordField;
import com.my.graphiteDigesterBg.diframe.DiActiveRecord;
public class DiMdbRuntimeVariable extends DiActiveRecord {
@ActiveRecordField
public Integer id;
@ActiveRecordField
public String key;
@ActiveRecordField
public String value;
// get table name
public static String getTableName() {
return "app_runtime_variables";
}
}

4
src/src/main/java/com/my/graphiteDigesterBg/move/MoveLiquidAdd.java

@ -29,14 +29,14 @@ public class MoveLiquidAdd extends DiTaskMoveBase {
liquidPlateMotor.moveTo("LiquidPlateSlotPumpOutGroup", i);
groupOutPump.pump(this.liquidVolume);
groupInPump.pump(this.liquidVolume);
bucket.volume -= this.liquidVolume * 2;
bucket.consume(this.liquidVolume * 2);
// 内圈试管加液
liquidMotor.moveTo("LiquidArmPumpGroupIn");
liquidPlateMotor.moveTo("LiquidPlateSlotPumpInGroup", i);
groupInPump.pump(this.liquidVolume);
groupOutPump.pump(this.liquidVolume);
bucket.volume -= this.liquidVolume * 2;
bucket.consume(this.liquidVolume * 2);
}
liquidMotor.moveTo("LiquidArmStandby");

22
src/src/main/java/com/my/graphiteDigesterBg/resource/ResAcidBucket.java

@ -4,13 +4,27 @@ public class ResAcidBucket {
public Integer volume;
public Integer maxVolume;
public String acidType;
private ResAcidManager manager;
private final ResAcidManager manager;
// constructor
public ResAcidBucket( ResAcidManager manager, Integer index ) {
this.index = index;
this.volume = 5000;
this.maxVolume = 5000;
this.acidType = "sulfuric";
this.volume = 0;
this.maxVolume = 0;
this.acidType = "";
this.manager = manager;
}
// get volume
public void consume(Integer volume) {
this.volume -= volume;
this.manager.getDevice().getRuntimeVariables().setInteger(this.volume, "AcidSlotVolume", this.index);
}
// update
public void update() {
var variables = this.manager.getDevice().getRuntimeVariables();
variables.setString(this.acidType, "AcidSlotType", this.index);
variables.setInteger(this.volume, "AcidSlotVolume", this.index);
}
}

28
src/src/main/java/com/my/graphiteDigesterBg/resource/ResAcidManager.java

@ -12,14 +12,24 @@ public class ResAcidManager extends DiResourceManagerBase {
// constructor
public ResAcidManager() {
this.buckets = new ArrayList<>();
}
@Override
public void setup() {
var option = this.getDevice().getOption();
var runtimeVariable = this.getDevice().getRuntimeVariables();
for (int i = 0; i < 8; i++) {
ResAcidBucket bucket = new ResAcidBucket(this, i);
// @TODO : remove this
bucket.acidType = "sulfuric";
bucket.volume = 5000;
bucket.maxVolume = 5000;
bucket.acidType = runtimeVariable.getString("AcidSlotType", i);
if ( null == bucket.acidType ) {
bucket.acidType = "";
}
bucket.volume = runtimeVariable.getInteger("AcidSlotVolume", i);
if ( null == bucket.volume ) {
bucket.volume = 0;
}
bucket.maxVolume = option.getInteger("AcidSlotVolume", i);
bucket.update();
this.buckets.add(bucket);
}
}
@ -36,8 +46,12 @@ public class ResAcidManager extends DiResourceManagerBase {
String acidType = (String)params.get("acidType");
ResAcidBucket bucket = this.buckets.get(index);
bucket.volume = volume;
bucket.acidType = acidType;
bucket.volume = volume;
if ( 0 == bucket.volume ) {
bucket.volume = bucket.maxVolume;
}
bucket.update();
}
// get bucket by acid type

10
src/src/main/java/com/my/graphiteDigesterBg/task/TaskStartReset.java

@ -10,8 +10,8 @@ public class TaskStartReset extends DiTaskBase {
@Override
public void run() {
var runtimeVars = this.getDevice().getRuntimeVariables();
runtimeVars.set("IsDeviceReady", "NO");
runtimeVars.set("IsTaskStartResetExecuting", "YES");
runtimeVars.setString("IsDeviceReady", "NO");
runtimeVars.setString("IsTaskStartResetExecuting", "YES");
this.setProgressMessage("设备初始化...");
// this.setProgressMessage("设备初始化 : 关闭设备门");
@ -75,14 +75,14 @@ public class TaskStartReset extends DiTaskBase {
// }
this.setProgressMessage("设备初始化 : 完成");
runtimeVars.set("IsDeviceReady", "YES");
runtimeVars.set("IsTaskStartResetExecuting", "NO");
runtimeVars.setString("IsDeviceReady", "YES");
runtimeVars.setString("IsTaskStartResetExecuting", "NO");
this.setStatus(TaskStatus.FINISHED);
}
// set progress message
private void setProgressMessage(String message) {
var runtimeVars = this.getDevice().getRuntimeVariables();
runtimeVars.set("TaskStartResetMessage", message);
runtimeVars.setString("TaskStartResetMessage", message);
}
}

2
src/web/src/pages/main/contents/AcidManagement.vue

@ -58,7 +58,7 @@ async function actionReload(bucket) {
await client.resourceActionExecute('Acid', 'bucketUpdate', {
index : bucket.index,
acidType : bucket.acidType,
volume : 5000,
volume : 0, // 0
});
refresh();
}
Loading…
Cancel
Save