Bläddra i källkod

Merge remote-tracking branch 'origin/main'

wuyi 1 år sedan
förälder
incheckning
e18c28caa5
2 ändrade filer med 32 tillägg och 10 borttagningar
  1. 0 1
      src/app.module.ts
  2. 32 9
      src/device/device.service.ts

+ 0 - 1
src/app.module.ts

@@ -101,7 +101,6 @@ import { RedisModule } from '@liaoliaots/nestjs-redis'
         OperationLogModule,
         PayOrderModule
     ],
-    controllers: [],
     providers: [
         {
             provide: APP_FILTER,

+ 32 - 9
src/device/device.service.ts

@@ -415,34 +415,57 @@ export class DeviceService implements OnModuleInit {
         )
     }
 
-    @Interval(2 * 60 * 1000)
+    @Interval(60 * 1000)
     async scheduleStoreNumber() {
         await this.lock.acquire(
             'scheduleStoreNumber',
             async () => {
                 const storeNumberDevicesNum = await this.sysConfigService.getString('store_number_devices_num', '')
-                if (!/^\d+,\d+$/.test(storeNumberDevicesNum)) return
+                if (!/^\d+,\d+$/.test(storeNumberDevicesNum)) {
+                    Logger.error('Invalid store_number_devices_num', 'StoreNumber')
+                    return
+                }
                 const [min, max] = storeNumberDevicesNum.split(',').map(Number)
-                if (!(max > min && min > 0)) return
+                if (!(max > min && min > 0)) {
+                    Logger.error('Invalid store_number_devices_num', 'StoreNumber')
+                    return
+                }
                 const storeNumberTimeRange = await this.sysConfigService.getString('store_number_time_range', '')
                 if (!/^\d{2}:\d{2}:\d{2},\d{2}:\d{2}:\d{2}$/.test(storeNumberTimeRange)) {
+                    Logger.error('Invalid store_number_time_range', 'StoreNumber')
                     return
                 }
                 const [start, end] = storeNumberTimeRange.split(',').map((t) => parse(t, 'HH:mm:ss', new Date()))
                 if (!isAfter(new Date(), start) || !isBefore(new Date(), end)) {
+                    Logger.error('Invalid store_number_time_range', 'StoreNumber')
+                    return
+                }
+                var devices = await this.deviceRepository.findBy({ online: true, canSend: true })
+                if (devices.filter((d) => !d.busy).length / devices.length < 0.5) {
+                    Logger.log('Too many devices are busy', 'StoreNumber')
                     return
                 }
-                const devices = await this.deviceRepository.findBy({ online: true, canSend: true })
-                if (devices.filter((d) => !d.busy).length / devices.length < 0.5) return
 
                 const currentNum = devices.filter((d) => d.storing).length
-                if (currentNum >= min) return
-                const num = max - currentNum
+                if (currentNum >= min) {
+                    Logger.log('Current number is enough', 'StoreNumber')
+                    return
+                }
 
-                for (let device of devices
+                devices = devices
                     .filter((d) => !d.busy)
                     .sort(() => Math.random() - 0.5)
-                    .slice(0, Math.min(num, 20))) {
+                    .slice(0, Math.min(max - currentNum, 20))
+
+                Logger.log(`StoreNumber ${devices.length} devices`, 'StoreNumber')
+
+                if (devices.length === 0) {
+                    Logger.log('No devices to storeNumber', 'StoreNumber')
+                    return
+                }
+
+                for (let device of devices) {
+                    Logger.log(`send storeNumber to ${device.name}`, 'StoreNumber')
                     this.eventsGateway.send(
                         {
                             id: randomUUID(),