|
|
@ -32,7 +32,7 @@ public class HeatCountdownScheduledTask { |
|
|
|
private final HeatModuleService heatModuleService; |
|
|
|
private final WebSocketSender webSocketSender; |
|
|
|
|
|
|
|
@Scheduled(fixedRate = 1000) |
|
|
|
@Scheduled(fixedDelay = 1000) |
|
|
|
public void fetchTemperature() { |
|
|
|
try { |
|
|
|
LocalDateTime now = LocalDateTime.now(); |
|
|
@ -40,39 +40,43 @@ public class HeatCountdownScheduledTask { |
|
|
|
for (HeatModuleState heatModuleState : deviceStateService.getDeviceState().getHeatModule()) { |
|
|
|
if (heatModuleState.getHeatingType() == HeatingType.thermostatic) {//如果这个加热模块在加热中 |
|
|
|
if (heatModuleState.getTemperature() + 1 > heatModuleState.getHeatTemperature()) {//当前温度达到目标温度,允许有1度以内的误差 |
|
|
|
heatModuleState.setStartHeatTime(now); |
|
|
|
heatModuleState.setHeatingType(HeatingType.constant);//修改状态为恒温中 |
|
|
|
if (heatModuleState.getStartHeatTime() == null) { |
|
|
|
//设定开始加热时间 |
|
|
|
heatModuleState.setStartHeatTime(now); |
|
|
|
} else { |
|
|
|
LocalDateTime endTime = heatModuleState.getStartHeatTime().minusSeconds(heatModuleState.getTargetTime()); |
|
|
|
//判断是否达到目标加热时间 |
|
|
|
if (endTime.isBefore(now)) {//加热完毕 |
|
|
|
double trayLift = devicePositionService.getPosition(DevicePositionCode.trayLift).getDistance(); |
|
|
|
//抬起托盘 |
|
|
|
heatModuleService.heaterMotorMove(heatModuleState.getModuleCode(), trayLift); |
|
|
|
heatModuleState.setTrayUp(1); |
|
|
|
//关闭加棒 |
|
|
|
heatModuleService.heatRodClose(heatModuleState.getModuleCode()); |
|
|
|
heatModuleState.setHeatingType(HeatingType.stop); |
|
|
|
//还原状态 |
|
|
|
heatModuleState.setStartHeatTime(null); |
|
|
|
heatModuleState.setTargetTime(null); |
|
|
|
heatModuleState.setWarmUpTemperature(null); |
|
|
|
heatModuleState.setHeatTemperature(null); |
|
|
|
heatModuleState.setTargetTemperature(null); |
|
|
|
heatModuleState.setHeatingType(HeatingType.stop); |
|
|
|
} else {//加热中 |
|
|
|
long diffSeconds = Duration.between(now, endTime).getSeconds();//计算剩余时间 |
|
|
|
HeatCountdownVO heatCountdownVO = new HeatCountdownVO(); |
|
|
|
heatCountdownVO.setHeatModuleCode(heatModuleState.getModuleCode()); |
|
|
|
heatCountdownVO.setCountdown((int) diffSeconds); |
|
|
|
heatCountdownVO.setCountdownStr(LocalDateTimeUtil.formatSecondsToHMS(diffSeconds)); |
|
|
|
heatCountdownVO.setStartTime(heatModuleState.getStartHeatTime()); |
|
|
|
heatCountdownVO.setEndTime(endTime); |
|
|
|
heatCountdownVOList.add(heatCountdownVO); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} else if (heatModuleState.getHeatingType() == HeatingType.constant) { |
|
|
|
LocalDateTime endTime = heatModuleState.getStartHeatTime().plusSeconds(heatModuleState.getTargetTime()); |
|
|
|
//判断是否达到目标加热时间 |
|
|
|
long diffSeconds = Duration.between(now, endTime).getSeconds();//计算剩余时间 |
|
|
|
if (diffSeconds <= 0) {//加热完毕 |
|
|
|
double trayLift = devicePositionService.getPosition(DevicePositionCode.trayLift).getDistance(); |
|
|
|
//抬起托盘 |
|
|
|
heatModuleService.heaterMotorMove(heatModuleState.getModuleCode(), trayLift); |
|
|
|
heatModuleState.setTrayUp(1); |
|
|
|
//关闭加棒 |
|
|
|
heatModuleService.heatRodClose(heatModuleState.getModuleCode()); |
|
|
|
//还原状态 |
|
|
|
// heatModuleState.setStartHeatTime(null); |
|
|
|
// heatModuleState.setTargetTime(null); |
|
|
|
// heatModuleState.setWarmUpTemperature(null); |
|
|
|
// heatModuleState.setHeatTemperature(null); |
|
|
|
// heatModuleState.setTargetTemperature(null); |
|
|
|
heatModuleState.setHeatingType(HeatingType.finish); |
|
|
|
|
|
|
|
// HeatCountdownVO heatCountdownVO = new HeatCountdownVO(); |
|
|
|
// heatCountdownVO.setHeatModuleCode(heatModuleState.getModuleCode()); |
|
|
|
// heatCountdownVO.setCountdown((int) diffSeconds); |
|
|
|
// heatCountdownVO.setCountdownStr("加热完毕"); |
|
|
|
// heatCountdownVO.setStartTime(heatModuleState.getStartHeatTime()); |
|
|
|
// heatCountdownVO.setEndTime(endTime); |
|
|
|
// heatCountdownVOList.add(heatCountdownVO); |
|
|
|
} else {//加热中 推送倒计时 |
|
|
|
// HeatCountdownVO heatCountdownVO = new HeatCountdownVO(); |
|
|
|
// heatCountdownVO.setHeatModuleCode(heatModuleState.getModuleCode()); |
|
|
|
// heatCountdownVO.setCountdown((int) diffSeconds); |
|
|
|
// heatCountdownVO.setCountdownStr(LocalDateTimeUtil.formatSecondsToHMS(diffSeconds)); |
|
|
|
// heatCountdownVO.setStartTime(heatModuleState.getStartHeatTime()); |
|
|
|
// heatCountdownVO.setEndTime(endTime); |
|
|
|
// heatCountdownVOList.add(heatCountdownVO); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|