Explorar el Código

reduce the frequency of notification

kungtinglin hace 6 años
padre
commit
860b003ea6

+ 30 - 0
migrations/20191218063558-add_current_alarm_type_to_equipments_table.js

@@ -0,0 +1,30 @@
+'use strict'
+
+module.exports = {
+  up: async (queryInterface, Sequelize) => {
+    return await queryInterface.addColumn('equipments', 'current_alarm_type', {
+      type: Sequelize.TINYINT.UNSIGNED,
+      allowNull: true
+    })
+
+    /*
+      Add altering commands here.
+      Return a promise to correctly handle asynchronicity.
+
+      Example:
+      return queryInterface.createTable('users', { id: Sequelize.INTEGER });
+    */
+  },
+
+  down: async (queryInterface, Sequelize) => {
+    return await queryInterface.removeColumn('equipments', 'current_alarm_type')
+
+    /*
+      Add reverting commands here.
+      Return a promise to correctly handle asynchronicity.
+
+      Example:
+      return queryInterface.dropTable('users');
+    */
+  }
+}

+ 9 - 2
src/controllers/EquipmentController.ts

@@ -67,6 +67,11 @@ class EquipmentController {
 
     const equipment = await Equipment.findByPk(Number(req.body.AidID))
 
+    if (!equipment) {
+      res.status(400).json({ message: 'Equipment not found.' })
+      return
+    }
+
     await EquipmentData.create({
       ap_id: req.body.APID,
       aid_id: req.body.AidID,
@@ -78,12 +83,14 @@ class EquipmentController {
       alarm: JSON.stringify(req.body.Alarm)
     })
 
-    if (req.body.Alarm.length > 0) {
-      sendAlarm(equipment ? equipment.name : `輔具ID ${req.body.AidID}`, String(req.body.Alarm[0]))
+    if (req.body.Alarm.length > 0 && equipment.current_alarm_type == req.body.Alarm[0]) {
+      sendAlarm(equipment.name, String(req.body.Alarm[0]))
     } else {
       sendUpdateRequest()
     }
 
+    equipment.update({ current_alarm_type: req.body.Alarm.length > 0 ? req.body.Alarm[0] : null })
+
     res.json({ message: 'ok' })
   }
 }

+ 3 - 0
src/database/models/Equipment.ts

@@ -10,4 +10,7 @@ export class Equipment extends Model<Equipment> {
 
   @Column
   site_id: Number
+
+  @Column
+  current_alarm_type: Number
 }