sige 1 year ago
parent
commit
ff5cac36c6
  1. BIN
      app.db
  2. 2
      pom.xml
  3. 10
      src/main/java/com/iflytop/digester/DigestionTaskThread.java
  4. 39
      src/main/java/com/iflytop/digester/model/MdbDigestionSolution.java
  5. 5
      src/main/java/com/iflytop/digester/model/MdbDigestionTask.java
  6. 5
      src/main/java/com/iflytop/digester/underframework/dao/model/TsMdbActuator.java
  7. 5
      src/main/java/com/iflytop/digester/underframework/dao/model/TsMdbActuatorCmd.java
  8. 3
      src/main/java/com/iflytop/digester/underframework/dao/model/TsMdbModule.java
  9. 3
      src/main/java/com/iflytop/digester/underframework/dao/model/TsMdbSnippet.java
  10. 19
      src/main/java/com/iflytop/digester/underframework/dao/record/UfActiveRecord.java
  11. 6
      src/main/java/com/iflytop/digester/underframework/dao/record/UfActiveRecordMapper.java
  12. 27
      src/main/resources/application.yml

BIN
app.db

2
pom.xml

@ -30,7 +30,7 @@
<dependency> <dependency>
<groupId>org.xerial</groupId> <groupId>org.xerial</groupId>
<artifactId>sqlite-jdbc</artifactId> <artifactId>sqlite-jdbc</artifactId>
<version>3.43.2.0</version>
<version>3.45.2.0</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.mybatis.spring.boot</groupId> <groupId>org.mybatis.spring.boot</groupId>

10
src/main/java/com/iflytop/digester/DigestionTaskThread.java

@ -46,7 +46,7 @@ public class DigestionTaskThread extends Thread {
this.tubeCheck(); this.tubeCheck();
// 异常处理执行 // 异常处理执行
var errorRound = this.solution.getErrorRound();
var errorRound = this.solution.getErrorRounds();
for ( int i=0; i<errorRound.maxRounds; i++ ) { for ( int i=0; i<errorRound.maxRounds; i++ ) {
this.executeErrorRound(errorRound); this.executeErrorRound(errorRound);
if (this.errorTubeIndexes.isEmpty()) { if (this.errorTubeIndexes.isEmpty()) {
@ -87,6 +87,8 @@ public class DigestionTaskThread extends Thread {
device.door.close(); device.door.close();
// 释放加热位 // 释放加热位
this.heatingSlot.setTubeRackNo(null); this.heatingSlot.setTubeRackNo(null);
this.updateTaskStatus("finish", "消解任务结束");
} }
// 检查试管 // 检查试管
@ -95,9 +97,9 @@ public class DigestionTaskThread extends Thread {
// 移动到加液盘 // 移动到加液盘
device.transferArm.moveTubeRackToLiquidPlate(this.heatingSlot.index); device.transferArm.moveTubeRackToLiquidPlate(this.heatingSlot.index);
// 拍照检查异常试管 // 拍照检查异常试管
var tubes = this.takeShotAndCheckErrorTubes();
this.errorTubeIndexes = this.takeShotAndCheckErrorTubes();
// 将异常试管放入异常处理区域 // 将异常试管放入异常处理区域
device.transferArm.moveTubesToErrorSlot(tubes);
device.transferArm.moveTubesToErrorSlot(this.errorTubeIndexes);
} }
// 执行消解每轮配置 // 执行消解每轮配置
@ -126,7 +128,7 @@ public class DigestionTaskThread extends Thread {
} }
// 执行消解异常处理配置 // 执行消解异常处理配置
private void executeErrorRound( MdbDigestionSolution.DigestionSolutionError errorRound ) throws InterruptedException {
private void executeErrorRound( MdbDigestionSolution.DigestionSolutionErrorRound errorRound ) throws InterruptedException {
var device = Device.getInstance(); var device = Device.getInstance();
// 移至加液区 // 移至加液区

39
src/main/java/com/iflytop/digester/model/MdbDigestionSolution.java

@ -10,14 +10,14 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
public class MdbDigestionSolution extends UfActiveRecord { public class MdbDigestionSolution extends UfActiveRecord {
@UfActiveRecordField @UfActiveRecordField
public Integer id;
@UfActiveRecordField
public String name; public String name;
@UfActiveRecordField @UfActiveRecordField
public String rounds; public String rounds;
@UfActiveRecordField
public String errorRounds;
// get rounds // get rounds
public List<DigestionSolutionRound> getRounds() { public List<DigestionSolutionRound> getRounds() {
ObjectMapper jsonMapper = new ObjectMapper(); ObjectMapper jsonMapper = new ObjectMapper();
@ -52,8 +52,35 @@ public class MdbDigestionSolution extends UfActiveRecord {
return list; return list;
} }
public DigestionSolutionError getErrorRound() {
return new DigestionSolutionError();
// get error round
public DigestionSolutionErrorRound getErrorRounds() {
ObjectMapper jsonMapper = new ObjectMapper();
JsonNode errorRoundsJsonTree = null;
try {
errorRoundsJsonTree = jsonMapper.readTree(this.errorRounds);
} catch (JsonProcessingException e) {
throw new RuntimeException(e);
}
var errorRound = new DigestionSolutionErrorRound();
// 加液配置
errorRound.liquids = new ArrayList<>();
errorRoundsJsonTree.get("liquid").forEach(liquidNode -> {
var liquid = new DigestionSolutionErrorRound.DigestionSolutionErrorLiquid();
liquid.type = liquidNode.get("type").asText();
liquid.volume = liquidNode.get("volume").asInt();
errorRound.liquids.add(liquid);
});
// 加热配置
errorRound.heatings = new ArrayList<>();
errorRoundsJsonTree.get("heating").forEach(heatingNode -> {
var heating = new DigestionSolutionErrorRound.DigestionSolutionErrorHeating();
heating.temperature = heatingNode.get("temperature").asInt();
heating.duration = heatingNode.get("duration").asInt();
errorRound.heatings.add(heating);
});
errorRound.maxRounds = errorRoundsJsonTree.get("maxRounds").asInt();
return errorRound;
} }
// get table name // get table name
@ -78,7 +105,7 @@ public class MdbDigestionSolution extends UfActiveRecord {
public List<DigestionSolutionRoundHeating> heatings; public List<DigestionSolutionRoundHeating> heatings;
} }
public static class DigestionSolutionError {
public static class DigestionSolutionErrorRound {
public static class DigestionSolutionErrorLiquid { public static class DigestionSolutionErrorLiquid {
public String type; public String type;
public Integer volume; public Integer volume;

5
src/main/java/com/iflytop/digester/model/MdbDigestionTask.java

@ -3,10 +3,7 @@ import com.iflytop.digester.underframework.dao.record.UfActiveRecord;
import com.iflytop.digester.underframework.dao.record.UfActiveRecordField; import com.iflytop.digester.underframework.dao.record.UfActiveRecordField;
public class MdbDigestionTask extends UfActiveRecord { public class MdbDigestionTask extends UfActiveRecord {
@UfActiveRecordField @UfActiveRecordField
public Integer id;
@UfActiveRecordField
public Integer digestionId;
public String digestionId;
@UfActiveRecordField @UfActiveRecordField
public String taskId; public String taskId;

5
src/main/java/com/iflytop/digester/underframework/dao/model/TsMdbActuator.java

@ -6,13 +6,10 @@ import com.iflytop.digester.underframework.dao.record.UfActiveRecordField;
*/ */
public class TsMdbActuator extends UfActiveRecord { public class TsMdbActuator extends UfActiveRecord {
@UfActiveRecordField @UfActiveRecordField
public Integer id;
@UfActiveRecordField
public Integer aid; public Integer aid;
@UfActiveRecordField @UfActiveRecordField
public Integer moduleId;
public String moduleId;
@UfActiveRecordField @UfActiveRecordField
public String key; public String key;

5
src/main/java/com/iflytop/digester/underframework/dao/model/TsMdbActuatorCmd.java

@ -3,10 +3,7 @@ import com.iflytop.digester.underframework.dao.record.UfActiveRecord;
import com.iflytop.digester.underframework.dao.record.UfActiveRecordField; import com.iflytop.digester.underframework.dao.record.UfActiveRecordField;
public class TsMdbActuatorCmd extends UfActiveRecord { public class TsMdbActuatorCmd extends UfActiveRecord {
@UfActiveRecordField @UfActiveRecordField
public Integer id;
@UfActiveRecordField
public Integer actuatorId;
public String actuatorId;
@UfActiveRecordField @UfActiveRecordField
public String name; public String name;

3
src/main/java/com/iflytop/digester/underframework/dao/model/TsMdbModule.java

@ -7,9 +7,6 @@ import com.iflytop.digester.underframework.dao.record.UfActiveRecordField;
*/ */
public class TsMdbModule extends UfActiveRecord { public class TsMdbModule extends UfActiveRecord {
@UfActiveRecordField @UfActiveRecordField
public Integer id;
@UfActiveRecordField
public String key; public String key;
@UfActiveRecordField @UfActiveRecordField

3
src/main/java/com/iflytop/digester/underframework/dao/model/TsMdbSnippet.java

@ -7,9 +7,6 @@ import com.iflytop.digester.underframework.dao.record.UfActiveRecordField;
*/ */
public class TsMdbSnippet extends UfActiveRecord { public class TsMdbSnippet extends UfActiveRecord {
@UfActiveRecordField @UfActiveRecordField
public Integer id;
@UfActiveRecordField
public String name; public String name;
@UfActiveRecordField @UfActiveRecordField

19
src/main/java/com/iflytop/digester/underframework/dao/record/UfActiveRecord.java

@ -6,11 +6,12 @@ import java.lang.reflect.Constructor;
import java.lang.reflect.Field; import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException; import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method; import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
public class UfActiveRecord { public class UfActiveRecord {
@UfActiveRecordField
public String id = UUID.randomUUID().toString();
// is new record // is new record
@JsonIgnore @JsonIgnore
public Boolean isNewRecord = true; public Boolean isNewRecord = true;
@ -30,7 +31,7 @@ public class UfActiveRecord {
mapper.insert(tableName, data); mapper.insert(tableName, data);
this.isNewRecord = false; this.isNewRecord = false;
} else { } else {
mapper.update(tableName, (Integer)data.get("id"), data);
mapper.update(tableName, (String)data.get("id"), data);
} }
} }
@ -40,7 +41,7 @@ public class UfActiveRecord {
UfActiveRecordMapper mapper = context.getBean(UfActiveRecordMapper.class); UfActiveRecordMapper mapper = context.getBean(UfActiveRecordMapper.class);
String tableName = UfActiveRecord.getTableNameFromModelClass(this.getClass()); String tableName = UfActiveRecord.getTableNameFromModelClass(this.getClass());
Map<String,Object> data = UfActiveRecord.exportModelData(this); Map<String,Object> data = UfActiveRecord.exportModelData(this);
mapper.delete(tableName, (Integer)data.get("id"));
mapper.delete(tableName, (String)data.get("id"));
} }
// set attributes // set attributes
@ -69,7 +70,7 @@ public class UfActiveRecord {
} }
// find by id // find by id
public static <T extends UfActiveRecord> T findOne(Class<T> modelClass, Integer id) {
public static <T extends UfActiveRecord> T findOne(Class<T> modelClass, String id) {
return UfActiveRecord.findOne(modelClass, Map.of("id", id)); return UfActiveRecord.findOne(modelClass, Map.of("id", id));
} }
@ -159,7 +160,7 @@ public class UfActiveRecord {
String key = entry.getKey(); String key = entry.getKey();
Field field = null; Field field = null;
try { try {
field = model.getClass().getDeclaredField(key);
field = model.getClass().getField(key);
} catch (NoSuchFieldException e) { } catch (NoSuchFieldException e) {
continue ; continue ;
} }
@ -183,7 +184,7 @@ public class UfActiveRecord {
// model to map // model to map
private static Map<String,Object> exportModelData(Object model) { private static Map<String,Object> exportModelData(Object model) {
Map<String,Object> data = new HashMap<>(); Map<String,Object> data = new HashMap<>();
var fields = model.getClass().getDeclaredFields();
var fields = model.getClass().getFields();
for ( var field : fields ) { for ( var field : fields ) {
var annotation = field.getAnnotation(UfActiveRecordField.class); var annotation = field.getAnnotation(UfActiveRecordField.class);
if ( annotation == null ) { if ( annotation == null ) {

6
src/main/java/com/iflytop/digester/underframework/dao/record/UfActiveRecordMapper.java

@ -31,7 +31,7 @@ public interface UfActiveRecordMapper {
Integer count(UfActiveRecordCriteria criteria); Integer count(UfActiveRecordCriteria criteria);
@Select("SELECT * FROM ${tableName} WHERE id = #{id}") @Select("SELECT * FROM ${tableName} WHERE id = #{id}")
Map<String,Object> findById(String tableName, Integer id);
Map<String,Object> findById(String tableName, String id);
@Insert( @Insert(
"<script>" + "<script>" +
@ -50,8 +50,8 @@ public interface UfActiveRecordMapper {
"WHERE id = #{id}" + "WHERE id = #{id}" +
"</script>" "</script>"
) )
Integer update(String tableName, Integer id, Map<String,Object> data);
Integer update(String tableName, String id, Map<String,Object> data);
@Delete("DELETE FROM ${tableName} WHERE id = #{id}") @Delete("DELETE FROM ${tableName} WHERE id = #{id}")
Integer delete(String tableName, Integer id);
Integer delete(String tableName, String id);
} }

27
src/main/resources/application.yml

@ -1,12 +1,15 @@
#spring:
# datasource:
# url: jdbc:sqlite:D:/Sige5193/digester/app.db
# username: 1
# password: 1
# driver-class-name: org.sqlite.JDBC
#
#device:
# connections:
# - name : zcancmder
# type : ZcancmderWebsocket
# uri: ws://192.168.8.10:19005
server :
port : 80
spring:
datasource:
url: jdbc:sqlite:D:/Sige5193/digester/app.db
username: 1
password: 1
driver-class-name: org.sqlite.JDBC
device:
connections:
- name : zcancmder
type : ZcancmderWebsocket
uri: ws://192.168.8.10:19005
Loading…
Cancel
Save