| | |
| | | record.Detail = string(detail) |
| | | record.DeviceID = msg.ID |
| | | oldPlcRecord, err := model.NewDevicePlcSearch().SetDeviceId(msg.ID).First() |
| | | logx.Errorf("-------------------------------plc record not found:%v", err) |
| | | if err == gorm.ErrRecordNotFound { |
| | | logx.Errorf("-------------------------------plc record not found:%v", err) |
| | | err = model.NewDevicePlcSearch().Create(&record) |
| | | } else if record.Port != oldPlcRecord.Port || |
| | | record.Method != oldPlcRecord.Method || |
| | | } else if record.Port != oldPlcRecord.Port || record.Method != oldPlcRecord.Method || |
| | | record.Address != oldPlcRecord.Address || |
| | | record.Detail != oldPlcRecord.Detail { |
| | | err = model.NewDevicePlcSearch().SetDeviceId(msg.ID).Save(&record) |
| | | record.Detail != oldPlcRecord.Detail || |
| | | record.BaudRate != oldPlcRecord.BaudRate || |
| | | record.SerialName != oldPlcRecord.SerialName || |
| | | record.DataBit != oldPlcRecord.DataBit || |
| | | record.StopBit != oldPlcRecord.StopBit || |
| | | record.Parity != oldPlcRecord.Parity { |
| | | |
| | | oldPlcRecord.Method = record.Method |
| | | oldPlcRecord.Address = record.Address |
| | | oldPlcRecord.Port = record.Port |
| | | oldPlcRecord.Detail = record.Detail |
| | | oldPlcRecord.BaudRate = record.BaudRate |
| | | oldPlcRecord.SerialName = record.SerialName |
| | | oldPlcRecord.DataBit = record.DataBit |
| | | oldPlcRecord.StopBit = record.StopBit |
| | | oldPlcRecord.Parity = record.Parity |
| | | |
| | | err = model.NewDevicePlcSearch().Save(oldPlcRecord) |
| | | } |
| | | if err != nil { |
| | | return err |
| | |
| | | } |
| | | |
| | | func (slf *PullDataResponse) DealDeviceData(data interface{}) error { |
| | | var devices []*model.Device |
| | | err := mapstructure.Decode(data, &devices) |
| | | if err != nil { |
| | | return err |
| | | } |
| | | numbers := make([]string, 0, len(devices)) |
| | | for _, item := range devices { |
| | | numbers = append(numbers, item.DeviceID) |
| | | } |
| | | existsDevices, err := model.NewDeviceSearch().SetDeviceIds(numbers).FindNotTotal() |
| | | if err != nil { |
| | | return err |
| | | } |
| | | |
| | | existsDeviceMap := make(map[string]*model.Device, len(existsDevices)) |
| | | for _, device := range existsDevices { |
| | | existsDeviceMap[device.DeviceID] = device |
| | | } |
| | | |
| | | for _, device := range devices { |
| | | if oldDevice, exists := existsDeviceMap[device.DeviceID]; exists { |
| | | if oldDevice.ExtChannelAmount != device.ExtChannelAmount || //todo to be continued |
| | | oldDevice.Procedures != device.Procedures { |
| | | err = model.NewDeviceSearch().SetDeviceId(device.DeviceID).Save(device) |
| | | } |
| | | } else { |
| | | err = model.NewDeviceSearch().Create(device) |
| | | } |
| | | } |
| | | return err |
| | | return nil |
| | | } |