1秒推送一次水闸的信息,其中控制水闸开合度的那个字段nz_kaihedu,0-8为抬起闸门、8-0为降下闸门;当闸门升起的时候等待5秒之后降下闸门;
Nest.js、@nestjs/schedule 、typeorm
offset = 1;
delay1 = 0;
delay2 = 0;
@Cron('* * * * * *') //1秒执行一次
async handleCron() {
// 闸门移动米数
const step = 1;
// 闸门上升至顶部暂停秒数
const delay11 = 5;
// 闸门下降至底部暂停秒数
const delay22 = 10;
if (this.wz_kaihedu >= 12) {
this.offset = -step;
this.delay1++;
if (this.delay1 <= delay11) {
return;
} else {
this.delay1 = 0;
}
} else if (this.wz_kaihedu <= 0) {
this.offset = step;
this.delay2++;
if (this.delay2 <= delay22) {
return;
} else {
this.delay2 = 0;
}
}
if (this.wz_kaihedu <= 12) {
this.wz_kaihedu += this.offset;
this.nz_kaihedu += this.offset;
} else {
this.wz_kaihedu -= this.offset;
this.nz_kaihedu -= this.offset;
}
// 水闸状态模拟数据,定时插入数据库
await this.saveSzkh();
}
private async saveSzkh() {
const sluice = {
// 外闸数据
wz_kaihedu: this.wz_kaihedu,
wz_status: this.wz_kaihedu > 0 ? '打开' : '关闭',
wz_statusnum: this.wz_kaihedu > 0 ? 1 : 0,
// 内闸数据
nz_kaihedu: this.nz_kaihedu,
nz_status: this.nz_kaihedu > 0 ? '打开' : '关闭',
nz_statusnum: this.nz_kaihedu > 0 ? 1 : 0,
};
// 插入数据库
await this.szkhRepository.insert(sluice);
}