Browse Source

增加system_config列表和更新

自检添加type参数 表示失败和成功
master
王梦远 2 months ago
parent
commit
cf92233369
  1. 17
      src/main/java/com/iflytop/sgs/app/cmd/selftest/MoveTestCommand.java
  2. 18
      src/main/java/com/iflytop/sgs/app/controller/SystemController.java
  3. 3
      src/main/java/com/iflytop/sgs/app/core/SelfMoveTestGenerator.java
  4. 8
      src/main/java/com/iflytop/sgs/app/model/bo/status/device/HeatModuleState.java
  5. 20
      src/main/java/com/iflytop/sgs/app/service/crafts/CraftsStepService.java
  6. 6
      src/main/java/com/iflytop/sgs/app/service/device/DeviceSensorService.java

17
src/main/java/com/iflytop/sgs/app/cmd/selftest/MoveTestCommand.java

@ -12,6 +12,7 @@ import com.iflytop.sgs.app.service.device.module.SolutionModuleService;
import com.iflytop.sgs.app.service.device.module.TransferModuleService;
import com.iflytop.sgs.app.ws.server.WebSocketSender;
import com.iflytop.sgs.common.annotation.CommandMapping;
import com.iflytop.sgs.common.enums.DevicePartId;
import com.iflytop.sgs.common.enums.DeviceSensorCode;
import com.iflytop.sgs.common.enums.HeatModuleCode;
import com.iflytop.sgs.common.enums.data.DevicePositionCode;
@ -53,22 +54,26 @@ public class MoveTestCommand extends BaseCommandHandler {
deviceStateService.getCommandMutexState().get().setMoveTest(true);
return runAsync(() -> {
try {
boolean clawTrayExist = deviceSensorService.getSensorStatus(DeviceSensorCode.CLAW_TRAY_EXIST);
if (clawTrayExist) {
webSocketService.pushSelfMoveTest(SelfMoveTestGenerator.generateJson(cmdDTO.getCommandId(), cmdDTO.getCommand(), "机械臂夹爪存在试管架,请取出!", 0, "error"));
throw new AppException(ResultCode.TRANSFER_MODULE_YES_TRAY);//夹爪存在托盘
}
deviceSensorService.collectSensorState();//收集传感器转态
webSocketService.pushSelfMoveTest(SelfMoveTestGenerator.generateJson(cmdDTO.getCommandId(), cmdDTO.getCommand(), "1、各项传感器正常", 25));
webSocketService.pushSelfMoveTest(SelfMoveTestGenerator.generateJson(cmdDTO.getCommandId(), cmdDTO.getCommand(), "1、各项传感器正常", 25, "success"));
solutionModuleService.solutionMotorMoveZero(cmdDTO.getCommandId(), cmdDTO.getCommand());//加液机械臂抬升至最高
transferModuleService.transferZMoveZero(cmdDTO.getCommandId(), cmdDTO.getCommand());//Z轴抬升至最高
transferModuleService.transferMove(cmdDTO.getCommandId(), cmdDTO.getCommand(),liquidAreaTrayPoint3D);//转移至加液区托盘点位
boolean clawTrayExist=deviceSensorService.getSensorStatus(DeviceSensorCode.CLAW_TRAY_EXIST);
transferModuleService.transferMove(cmdDTO.getCommandId(), cmdDTO.getCommand(), liquidAreaTrayPoint3D);//转移至加液区托盘点位
transferModuleService.transferXMove(cmdDTO.getCommandId(), cmdDTO.getCommand(), annealHeatModuleTrayClawPoint3D.getX());//将X轴移动至托盘夹取点
solutionModuleService.solutionMotorMove(cmdDTO.getCommandId(), cmdDTO.getCommand(), solutionModuleMotorDownInTubeExtPositon);//加液模块下降进入试管抽取位置
solutionModuleService.solutionMotorMoveZero(cmdDTO.getCommandId(), cmdDTO.getCommand());//加液机械臂抬升至最高
webSocketService.pushSelfMoveTest(SelfMoveTestGenerator.generateJson(cmdDTO.getCommandId(), cmdDTO.getCommand(), "2、加液模块升降电机检测完毕", 50));
webSocketService.pushSelfMoveTest(SelfMoveTestGenerator.generateJson(cmdDTO.getCommandId(), cmdDTO.getCommand(), "2、加液模块升降电机检测完毕", 50, "success"));
transferModuleService.transferXMove(cmdDTO.getCommandId(), cmdDTO.getCommand(), liquidAreaTrayPoint3D.getX());//将X轴移动至加液时托盘位置点
transferModuleService.transferXMove(cmdDTO.getCommandId(), cmdDTO.getCommand(), feedAreaTrayPoint3D.getX());//将X轴移动至上料区位置点
webSocketService.pushSelfMoveTest(SelfMoveTestGenerator.generateJson(cmdDTO.getCommandId(), cmdDTO.getCommand(), "3、x轴电机检测完毕", 75));
webSocketService.pushSelfMoveTest(SelfMoveTestGenerator.generateJson(cmdDTO.getCommandId(), cmdDTO.getCommand(), "3、x轴电机检测完毕", 75, "success"));
transferModuleService.transferZMove(cmdDTO.getCommandId(), cmdDTO.getCommand(), feedAreaTrayPoint3D.getZ());//Z轴下降至夹取点使托盘落入上料区
transferModuleService.transferZMoveZero(cmdDTO.getCommandId(), cmdDTO.getCommand());//Z轴抬升至最高
webSocketService.pushSelfMoveTest(SelfMoveTestGenerator.generateJson(cmdDTO.getCommandId(), cmdDTO.getCommand(), "4、z轴电机检测完毕", 100));
webSocketService.pushSelfMoveTest(SelfMoveTestGenerator.generateJson(cmdDTO.getCommandId(), cmdDTO.getCommand(), "4、z轴电机检测完毕", 100, "success"));
} finally {
deviceStateService.getCommandMutexState().get().setMoveTest(false);
}

18
src/main/java/com/iflytop/sgs/app/controller/SystemController.java

@ -2,6 +2,7 @@ package com.iflytop.sgs.app.controller;
import com.iflytop.sgs.app.model.bo.status.device.DeviceState;
import com.iflytop.sgs.app.model.dto.SetSystemDatetimeDTO;
import com.iflytop.sgs.app.model.entity.SystemConfig;
import com.iflytop.sgs.app.service.api.SystemConfigService;
import com.iflytop.sgs.app.service.device.DeviceStateService;
import com.iflytop.sgs.common.result.Result;
@ -13,6 +14,7 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
import java.time.Instant;
import java.util.List;
@Tag(name = "系统")
@RestController
@ -35,10 +37,26 @@ public class SystemController {
systemConfigService.setDatetime(setSystemDatetimeDTO.getDatetime());
return Result.success();
}
@Operation(summary = "获取系统时间")
@GetMapping("/datetime")
public Result<?> getDatetime() {
return Result.success(Instant.now().toEpochMilli());
}
@Operation(summary = "获取系统配置")
@GetMapping("/config-list")
public Result<?> getConfigList() {
List<SystemConfig> systemConfigList = systemConfigService.list();
return Result.success(systemConfigList);
}
@Operation(summary = "更新系统配置")
@PostMapping("/update-config")
public Result<?> updateConfig(@Valid @RequestBody SystemConfig systemConfig) {
return Result.success(systemConfigService.saveOrUpdate(systemConfig));
}
}

3
src/main/java/com/iflytop/sgs/app/core/SelfMoveTestGenerator.java

@ -4,12 +4,13 @@ import cn.hutool.json.JSONObject;
public class SelfMoveTestGenerator {
public static JSONObject generateJson(String commandId, String command, String title, Object schedule) {
public static JSONObject generateJson(String commandId, String command, String title, Object schedule,String type) {
JSONObject jsonObject = new JSONObject();
jsonObject.set("commandId", commandId);
jsonObject.set("command", command);
jsonObject.set("title", title);
jsonObject.set("schedule", schedule);
jsonObject.set("type", type);
return jsonObject;
}

8
src/main/java/com/iflytop/sgs/app/model/bo/status/device/HeatModuleState.java

@ -9,6 +9,8 @@ import lombok.RequiredArgsConstructor;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
import java.time.LocalDateTime;
@Schema(description = "加热模块")
@Data
@Component
@ -46,6 +48,12 @@ public class HeatModuleState {
@Schema(description = "加热器当前温度")
private Double temperature = null;
@Schema(description = "加热器目标加热时间,单位秒")
private Integer targetTime = null;
@Schema(description = "开始加热时间")
private LocalDateTime startHeatTime = null;
public HeatModuleState(HeatModuleCode moduleCode) {
this.moduleCode = moduleCode;
}

20
src/main/java/com/iflytop/sgs/app/service/crafts/CraftsStepService.java

@ -29,6 +29,7 @@ import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
@ -388,6 +389,9 @@ public class CraftsStepService {
}
log.info("工艺{},温度达到", heatModuleCode);
webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatModuleCode.toString(), "温度达到", temperature));
deviceStateService.getDeviceState().getHeatModuleByCode(heatModuleCode).setHeatingType(HeatingType.constant); //恒温中
deviceStateService.getDeviceState().getHeatModuleByCode(heatModuleCode).setStartHeatTime(LocalDateTime.now());//开始加热时间
deviceStateService.getDeviceState().getHeatModuleByCode(heatModuleCode).setTargetTime(time);//加热器目标加热时间
int clock = 0;
int cycle = time / 60;
int seconds = cycle % 60;
@ -404,6 +408,7 @@ public class CraftsStepService {
/*保存到工艺监控*/
}
delay(seconds);
deviceStateService.getDeviceState().getHeatModuleByCode(heatModuleCode).setHeatingType(HeatingType.finish); //加热完成
log.info("工艺{},加热结束", heatModuleCode);
craftMonitor.setCurrentStepResult(String.valueOf(result));
craftMonitor.setDeviceState(JSONUtil.toJsonStr(deviceStateService.getDeviceState()));
@ -586,7 +591,7 @@ public class CraftsStepService {
//Assert.isTrue(temperature != null && time != null, () -> new AppException(ResultCode.CRAFT_PARAMS_MISTAKE));//参数错误
webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatModuleCode.toString(), "打开加热棒", temperature));
heatModuleService.heatRodOpen(heatModuleCode, temperature);//打开加热棒
deviceStateService.getDeviceState().getHeatModuleByCode(heatModuleCode).setHeatingType(HeatingType.drying); //设置加热区状态 加热
deviceStateService.getDeviceState().getHeatModuleByCode(heatModuleCode).setHeatingType(HeatingType.heating); //设置加热区状态 烘干
deviceStateService.getDeviceState().getHeatModuleByCode(heatModuleCode).setTargetTemperature(temperature);//将加热温度设定为目标温度
log.info("工艺{},开始加热", heatModuleCode);
heatModuleService.heatRodOpen(heatModuleCode, temperature);
@ -594,6 +599,9 @@ public class CraftsStepService {
while (!heatIsSuitable(heatModuleCode, temperature)) { //判断当前温度是否在设置温度范围内
delay(1);
}
deviceStateService.getDeviceState().getHeatModuleByCode(heatModuleCode).setHeatingType(HeatingType.drying); //烘干中
deviceStateService.getDeviceState().getHeatModuleByCode(heatModuleCode).setStartHeatTime(LocalDateTime.now());//开始加热时间
deviceStateService.getDeviceState().getHeatModuleByCode(heatModuleCode).setTargetTime(time);//加热器目标加热时间
int clock = 0;
result.set("time", clock);//添加到结果
craftMonitor.setCurrentStepResult(String.valueOf(result));
@ -615,7 +623,7 @@ public class CraftsStepService {
log.info("工艺{},关闭加热棒", heatModuleCode);
webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(heatModuleCode.toString(), "关闭加热棒", ""));
heatModuleService.heatRodClose(heatModuleCode);//关闭加热棒
deviceStateService.getDeviceState().getHeatModuleByCode(heatModuleCode).setHeatingType(HeatingType.stop); //设置加热区状态 加热中
deviceStateService.getDeviceState().getHeatModuleByCode(heatModuleCode).setHeatingType(HeatingType.stop); //设置加热区状态
return true;
}
@ -672,15 +680,17 @@ public class CraftsStepService {
deviceStateService.getDeviceState().getHeatModuleByCode(HeatModuleCode.heat_module_04).setTrayStatus(true);
webSocketService.pushCraftsDebug(CraftsDebugGenerator.generateJson(HeatModuleCode.heat_module_04.name(), "打开加热棒", temperature));
deviceStateService.getDeviceState().getHeatModuleByCode(HeatModuleCode.heat_module_04).setHeatingType(HeatingType.annealing); //设置加热区状态 加热中
deviceStateService.getDeviceState().getHeatModuleByCode(HeatModuleCode.heat_module_04).setHeatingType(HeatingType.heating); //设置加热区状态 加热中
deviceStateService.getDeviceState().getHeatModuleByCode(HeatModuleCode.heat_module_04).setTargetTemperature(temperature);//将加热温度设定为目标温度
log.info("工艺{},开始加热", heatModuleCode);
heatModuleService.heatRodOpen(HeatModuleCode.heat_module_04, temperature);//打开加热棒
deviceStateService.getDeviceState().getHeatModuleByCode(HeatModuleCode.heat_module_04).setHeatingType(HeatingType.annealing); //设置加热区状态 加热中
//判断当前温度是否在设置温度范围内
while (!heatIsSuitable(HeatModuleCode.heat_module_04, temperature)) {
delay(1);
}
deviceStateService.getDeviceState().getHeatModuleByCode(HeatModuleCode.heat_module_04).setHeatingType(HeatingType.annealing); //设置加热区状态退火中
deviceStateService.getDeviceState().getHeatModuleByCode(HeatModuleCode.heat_module_04).setStartHeatTime(LocalDateTime.now());//开始加热时间
deviceStateService.getDeviceState().getHeatModuleByCode(HeatModuleCode.heat_module_04).setTargetTime(time);//加热器目标加热时间
int clock = 0;
result.set("time", clock);//添加到结果
craftMonitor.setCurrentStepResult(String.valueOf(result));
@ -699,6 +709,8 @@ public class CraftsStepService {
}
log.info("工艺{},恒温中", HeatModuleCode.heat_module_04);
delay(seconds);
log.info("工艺{},加热完毕", heatModuleCode);
log.info("工艺{},获取转运模组锁", heatModuleCode);
transferModuleService.requestTransferModule(CraftsTransferTypeCode.move_heat);//获取转运模组锁

6
src/main/java/com/iflytop/sgs/app/service/device/DeviceSensorService.java

@ -117,16 +117,20 @@ public class DeviceSensorService {
HeatModuleState heat_module_04 = deviceStateService.getDeviceState().getHeatModuleByCode(HeatModuleCode.heat_module_04);
heat_module_04.setTrayStatus(this.getSensorStatus(DeviceSensorCode.HEATER_TRAY_4_EXIST));
SolutionModuleState solutionModuleState = deviceStateService.getDeviceState().getSolutionModule();
//todo 需要确认传感器个数以及这个传感器是否是加液传感器
solutionModuleState.setFeedAreaTrayStatus(this.getSensorStatus(DeviceSensorCode.LIQUID_TRAY_EXIST));
SolutionContainerState container_01 = solutionModuleState.getContainerStateByCode(ContainerCode.container_01);
container_01.setEmpty(this.getSensorStatus(DeviceSensorCode.THIN_LOW_LEVEL));
SolutionContainerState container_02 = solutionModuleState.getContainerStateByCode(ContainerCode.container_02);
container_02.setEmpty(this.getSensorStatus(DeviceSensorCode.THICK_LOW_LEVEL));
SolutionContainerState container_03 = solutionModuleState.getContainerStateByCode(ContainerCode.container_03);
container_03.setEmpty(this.getSensorStatus(DeviceSensorCode.WATER_LOW_LEVEL));
SolutionContainerState container_04 = solutionModuleState.getContainerStateByCode(ContainerCode.container_04);
container_04.setFull(this.getSensorStatus(DeviceSensorCode.WASTE_HIGH_LEVEL));

Loading…
Cancel
Save