sige 1 year ago
parent
commit
a8ef1b6e5b
  1. BIN
      app.db
  2. 18
      src/main/java/com/iflytop/digester/DigesterApplicationRunner.java
  3. 19
      src/main/java/com/iflytop/digester/controller/DigestionController.java
  4. 12
      src/main/java/com/iflytop/digester/controller/LiquidController.java
  5. 38
      src/main/java/com/iflytop/digester/controller/OperationLogController.java
  6. 21
      src/main/java/com/iflytop/digester/deviceinstance/LiquidAdditionInstance.java
  7. 28
      src/main/java/com/iflytop/digester/model/MdbOperationLog.java
  8. 3
      src/main/java/com/iflytop/digester/underframework/controller/UfApiRuntimeVariable.java
  9. 31
      src/main/java/com/iflytop/digester/underframework/dao/model/UfMdbOption.java
  10. 12
      src/main/java/com/iflytop/digester/underframework/dao/model/UfMdbRuntimeVariable.java
  11. 2
      web

BIN
app.db

18
src/main/java/com/iflytop/digester/DigesterApplicationRunner.java

@ -0,0 +1,18 @@
package com.iflytop.digester;
import com.iflytop.digester.deviceinstance.Device;
import jakarta.annotation.Resource;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;
@Order(2)
@Component
public class DigesterApplicationRunner implements ApplicationRunner {
@Resource
private Device device;
@Override
public void run(ApplicationArguments args) throws Exception {
this.device.liquidAddition.setup();
}
}

19
src/main/java/com/iflytop/digester/controller/DigestionController.java

@ -0,0 +1,19 @@
package com.iflytop.digester.controller;
import com.iflytop.digester.model.MdbDigestionSolution;
import com.iflytop.digester.underframework.controller.UfApiControllerBase;
import com.iflytop.digester.underframework.controller.UfApiResponse;
import com.iflytop.digester.underframework.dao.record.UfActiveRecord;
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.Map;
@Controller
public class DigestionController extends UfApiControllerBase {
@ResponseBody
@PostMapping("/api/digestion/list")
public UfApiResponse list(@RequestBody Map<String,Object> params) {
var items = UfActiveRecord.find(MdbDigestionSolution.class);
return this.success(items);
}
}

12
src/main/java/com/iflytop/digester/controller/LiquidController.java

@ -5,6 +5,7 @@ import com.iflytop.digester.underframework.controller.UfApiResponse;
import jakarta.annotation.Resource;
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.Map;
@Controller
@ -18,4 +19,15 @@ public class LiquidController extends UfApiControllerBase {
var liquids = this.device.liquidAddition.getLiquids();
return this.success(Map.of("liquids", liquids));
}
@ResponseBody
@PostMapping("/api/liquid/bucket-update")
public UfApiResponse updateBucket(@RequestBody Map<String,Object> params) {
Integer bucketIndex = (Integer)params.get("index");
String liquidType = (String)params.get("type");
var bucket = this.device.liquidAddition.getLiquidByIndex(bucketIndex);
bucket.type = liquidType;
bucket.volume = bucket.totalVolume;
return this.success();
}
}

38
src/main/java/com/iflytop/digester/controller/OperationLogController.java

@ -0,0 +1,38 @@
package com.iflytop.digester.controller;
import com.iflytop.digester.model.MdbOperationLog;
import com.iflytop.digester.underframework.controller.UfApiControllerBase;
import com.iflytop.digester.underframework.controller.UfApiResponse;
import com.iflytop.digester.underframework.dao.model.UfMdbUser;
import com.iflytop.digester.underframework.dao.record.UfActiveRecord;
import com.iflytop.digester.underframework.dao.record.UfActiveRecordCriteria;
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.ArrayList;
import java.util.Map;
@Controller
public class OperationLogController extends UfApiControllerBase {
@ResponseBody
@PostMapping("/api/operation-log/list")
public UfApiResponse list(@RequestBody Map<String,Object> params) {
var criteria = new UfActiveRecordCriteria();
criteria.limit = 10;
criteria.offset = (Integer)params.getOrDefault("offset", 0);
var logs = UfActiveRecord.find(MdbOperationLog.class, criteria);
var list = new ArrayList<Map<String,Object>>();
for ( var log : logs ) {
var map = log.toMap();
map.put("user", null);
var user = UfActiveRecord.findOne(UfMdbUser.class, log.userId);
if ( null != user ) {
map.put("user", user.toMap());
}
list.add(map);
}
var total = UfActiveRecord.count(MdbOperationLog.class, criteria);
return this.success(Map.of("list",list, "total", total));
}
}

21
src/main/java/com/iflytop/digester/deviceinstance/LiquidAdditionInstance.java

@ -1,6 +1,9 @@
package com.iflytop.digester.deviceinstance;
import com.iflytop.digester.underframework.UfCmdSnippetExecutor;
import com.iflytop.digester.underframework.dao.model.UfMdbOption;
import com.iflytop.digester.underframework.dao.model.UfMdbRuntimeVariable;
import jakarta.annotation.PostConstruct;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.List;
@ -10,16 +13,15 @@ public class LiquidAdditionInstance {
// list of liquids
private List<LiquidAdditionLiquid> liquids;
@PostConstruct
public void init() {
// setup
public void setup() {
this.liquids = new ArrayList<>();
for (int i = 0; i < 8; i++) {
LiquidAdditionLiquid liquid = new LiquidAdditionLiquid();
// @TODO : 测试用要删除
liquid.type = "hydrochloric";
liquid.volume = 100;
liquid.bucketIndex = i;
liquid.totalVolume = UfMdbOption.getInteger(String.format("LiquidBucketMaxVolume.%d", i), 0);
liquid.type = UfMdbRuntimeVariable.getString(String.format("LiquidBucketType.%d", i), "hydrochloric");
liquid.volume = UfMdbRuntimeVariable.getInteger(String.format("LiquidBucketVolume.%d", i), 0);
liquids.add(liquid);
}
}
@ -29,6 +31,11 @@ public class LiquidAdditionInstance {
return this.liquids;
}
// get liquid
public LiquidAdditionLiquid getLiquidByIndex( Integer index ) {
return this.liquids.get(index);
}
// 针对试管加液
public void addLiquidToTubes(List<Integer> tubes, String type, int volume ) {

28
src/main/java/com/iflytop/digester/model/MdbOperationLog.java

@ -0,0 +1,28 @@
package com.iflytop.digester.model;
import com.iflytop.digester.underframework.dao.model.UfMdbUser;
import com.iflytop.digester.underframework.dao.record.UfActiveRecord;
import com.iflytop.digester.underframework.dao.record.UfActiveRecordField;
public class MdbOperationLog extends UfActiveRecord {
@UfActiveRecordField
public String userId;
@UfActiveRecordField
public String content;
@UfActiveRecordField
public Integer time;
// get table name
public static String getTableName() {
return "app_operation_logs";
}
// log
public static void log(UfMdbUser user, String content, Object ... args ) {
var log = new MdbOperationLog();
log.userId = user.id;
log.content = String.format(content, args);
log.time = (int)(System.currentTimeMillis() / 1000);
log.save();
}
}

3
src/main/java/com/iflytop/digester/underframework/controller/UfApiRuntimeVariable.java

@ -11,8 +11,7 @@ public class UfApiRuntimeVariable extends UfApiControllerBase {
@PostMapping("/api/runtime-variable/get")
public UfApiResponse get(@RequestBody Map<String, Object> params ) {
String key = (String)params.get("key");
var value = UfMdbRuntimeVariable.getString(key);
assert value != null;
var value = UfMdbRuntimeVariable.getString(key, "");
return success(Map.of("value", value));
}
}

31
src/main/java/com/iflytop/digester/underframework/dao/model/UfMdbOption.java

@ -0,0 +1,31 @@
package com.iflytop.digester.underframework.dao.model;
import com.iflytop.digester.underframework.dao.record.UfActiveRecord;
import com.iflytop.digester.underframework.dao.record.UfActiveRecordField;
import java.util.Map;
public class UfMdbOption extends UfActiveRecord {
@UfActiveRecordField
public String key;
@UfActiveRecordField
public String value;
// get table name
public static String getTableName() {
return "app_options";
}
// get option
public static String getString(String key, String defaultValue ) {
var option = UfActiveRecord.findOne(UfMdbOption.class, Map.of("key", key));
if ( null == option ) {
return defaultValue;
}
return option.value;
}
// get option
public static Integer getInteger(String key, Integer defaultValue ) {
var option = UfMdbOption.getString(key, defaultValue.toString());
return Integer.parseInt(option);
}
}

12
src/main/java/com/iflytop/digester/underframework/dao/model/UfMdbRuntimeVariable.java

@ -30,15 +30,15 @@ public class UfMdbRuntimeVariable extends UfActiveRecord {
}
// get string
public static String getString(String name, Object ... args ) {
var variable = UfMdbRuntimeVariable.getVariable(name, args);
return null == variable ? null : variable.value;
public static String getString(String name, String defaultValue) {
var variable = UfActiveRecord.findOne(UfMdbRuntimeVariable.class, Map.of("key", name));
return null == variable ? defaultValue : variable.value;
}
// get integer
public static Integer getInteger(String name, Object ... args ) {
var variable = UfMdbRuntimeVariable.getVariable(name, args);
return null == variable ? null : Integer.parseInt(variable.value);
public static Integer getInteger(String name, Integer defaultValue ) {
var variable = UfActiveRecord.findOne(UfMdbRuntimeVariable.class, Map.of("key", name));
return null == variable ? defaultValue : Integer.parseInt(variable.value);
}
// set string

2
web

@ -1 +1 @@
Subproject commit 7f4d0b8bfe683b41e75233368ed1ec1e98c8c350
Subproject commit 568b1f82efb64410bbc4a54f923a5f5f2c0f8d5d
Loading…
Cancel
Save