zhangzengfei
2024-10-20 cf5a63e3ba397649cb1cbf379f0ad6cd3c2a937e
nvcs/cache.go
@@ -24,6 +24,9 @@
// 存储数据到缓存中
func (c *simpleCache) store(data elevatorRunData) {
   var floorChanged = true
   // 取RFID楼层
   if config.RFIDConf.ReadFloor && gRFIDFloor != data.Floor {
      if data.RunState == RunStop {
         logger.Warn("A floor error has occurred rfid epc %s, nvcs floor %s", gRFIDFloor, data.Floor)
@@ -35,27 +38,34 @@
   lastData := c.data.Back()
   // 如果楼层相同,并且数据在1秒内,则忽略
   if lastData != nil && lastData.Value.(elevatorRunData).Timestamp == data.Timestamp {
   if lastData != nil {
      if lastData.Value.(elevatorRunData).Floor == data.Floor {
         return
         floorChanged = false
         if lastData.Value.(elevatorRunData).Timestamp == data.Timestamp {
            return
         }
      }
   }
   // 数据库保存一份
   go func() {
      var d = models.Positions{
         DeviceId:   data.Device,
         Pos:        data.Floor,
         RunDir:     data.RunState,
         CreateTime: time.Now().Unix(),
         TimeString: time.Now().Format("2006-01-02 15:04:05"),
      }
   c.data.PushBack(data)
      err := d.Save()
      if err != nil {
         logger.Warn("Device position update error:%s", err.Error())
      }
   }()
   if !floorChanged {
      return
   }
   // 数据库保存一份
   var d = models.Positions{
      DeviceId:   data.Device,
      Pos:        data.Floor,
      RunDir:     data.RunState,
      CreateTime: time.Now().Unix(),
      TimeString: time.Now().Format("2006-01-02 15:04:05"),
   }
   err := d.Save()
   if err != nil {
      logger.Warn("Device position update error:%s", err.Error())
   }
   // 写OSD
   var runStateStr string
@@ -72,10 +82,9 @@
      floorText := fmt.Sprintf("%s%s %s", data.Floor, runStateStr, config.NVCSConf.OSD)
      // 调用hik api 将文字添加到osd的左下角
      go addFloorToOSD(floorText)
      addFloorToOSD(floorText)
   }
   c.data.PushBack(data)
}
// 删除过期数据