123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- package dao
- import (
- "iot_manager_service/app/record/edge_service"
- "time"
- )
- type AkeyAlarmRecord struct {
- ID int `gorm:"column:id;type:int(11);primary_key;AUTO_INCREMENT" json:"id" :"ID"`
- ServeId int `gorm:"column:serve_id;type:int(11);comment:管理端ID" json:"serveId" :"serveId"`
- ServeName string `gorm:"column:serve_name;type:varchar(60);comment:管理端名称" json:"serveName" :"serveName"`
- ServeSn string `gorm:"column:serve_sn;type:varchar(60);comment:管理端编码" json:"serveSn" :"serveSn"`
- TerminalId int `gorm:"column:terminal_id;type:int(11);comment:客户端ID" json:"terminalId" :"terminalId"`
- TerminalName string `gorm:"column:terminal_name;type:varchar(60);comment:客户端名称" json:"terminalName" :"terminalName"`
- TerminalSn string `gorm:"column:terminal_sn;type:varchar(60);comment:客户端编码" json:"terminalSn"`
- LocalAddress string `gorm:"column:local_address;type:varchar(255);comment:灯杆地址" json:"localAddress"`
- AlarmStartTime time.Time `gorm:"column:alarm_start_time;type:datetime;comment:报警开始时间" json:"alarmStartTime"`
- AlarmEndTime time.Time `gorm:"column:alarm_end_time;type:datetime;comment:报警结束时间" json:"alarmEndTime"`
- AlarmCountTime int `gorm:"column:alarm_count_time;type:int(11);default:0;comment:报警时长(秒)" json:"alarmCountTime"`
- IsDispose int `gorm:"column:is_dispose;type:int(11);default:0;comment:是否处理:0-未处理,1-已处理" json:"isDispose"`
- Remark string `gorm:"column:remark;type:varchar(1000);comment:备注" json:"remark"`
- TenantId string `gorm:"column:tenant_id;type:varchar(12);comment:租户ID" json:"tenantId"`
- CreateTime time.Time `gorm:"column:create_time;type:datetime;comment:创建时间" json:"createTime"`
- IsDeleted int `gorm:"column:is_deleted;type:int(11);default:0;comment:是否删除:0-否-1删除" json:"isDeleted"`
- }
- func (a AkeyAlarmRecord) TableName() string {
- return "device_a_key_alarm_record_his"
- }
- func (a AkeyAlarmRecord) GetRecords(offset int, limit int, start string, end string, searchValue string, serveId int) ([]AkeyAlarmRecord, error) {
- var records []AkeyAlarmRecord
- db := Db.Model(&a)
- if serveId > 0 {
- db.Where("serve_id=?", serveId)
- }
- if searchValue != "" {
- db = db.Where("terminal_sn like ? or terminal_name like ?", "%"+searchValue+"%", "%"+searchValue+"%")
- }
- if start != "" {
- start = start + " 00:00:00"
- end = end + " 23:59:59"
- db = db.Where("alarm_start_time >=? and alarm_end_time <= ?", start, end)
- }
- err := db.Where("is_deleted = 0").Offset(offset).Limit(limit).Find(&records).Error
- return records, err
- }
- func (a AkeyAlarmRecord) GetMaxIdAndUpDateTime() (int64, string) {
- var record AkeyAlarmRecord
- err := Db.Order("id desc").First(&record).Error
- if err != nil {
- return 0, "2020-01-01 00:00:00"
- }
- return int64(record.ID), record.CreateTime.Format("2006-01-02 15:04:05")
- }
- func (a AkeyAlarmRecord) BatchCreate(record []edge_service.RecordAlarmSosData) error {
- his, err := a.assembleRecordHis(record)
- if err != nil {
- return err
- }
- return Db.CreateInBatches(his, 1000).Error
- }
- func (a AkeyAlarmRecord) assembleRecordHis(records []edge_service.RecordAlarmSosData) ([]AkeyAlarmRecord, error) {
- var temRecords []AkeyAlarmRecord
- Db.Raw("select a.tenant_id,a.id terminal_id,a.terminal_name,a.terminal_sn, a.lamp_pole_location local_address,a.serve_id, b.serve_name,b.serve_sn FROM device_a_key_alarm_terminal a LEFT JOIN device_a_key_alarm_serve b ON a.serve_id=b.id WHERE a.is_deleted=0").
- Scan(&temRecords)
- m := make(map[string]AkeyAlarmRecord)
- for _, temSosRecord := range temRecords {
- m[temSosRecord.TerminalSn] = temSosRecord
- }
- var realLightRecords []AkeyAlarmRecord
- for _, record := range records {
- lightRecord := m[record.Code]
- if lightRecord.ServeId == 0 {
- continue
- }
- lightRecord.ID = record.ID
- lightRecord.AlarmStartTime, _ = time.ParseInLocation("2006-01-02 15:04:05", record.Tstart, time.Local)
- lightRecord.AlarmEndTime, _ = time.ParseInLocation("2006-01-02 15:04:05", record.Tend, time.Local)
- lightRecord.AlarmCountTime = int(record.Duration)
- lightRecord.IsDeleted = 0
- lightRecord.IsDispose = 0
- lightRecord.TerminalSn = record.Code
- lightRecord.CreateTime = time.Now()
- realLightRecords = append(realLightRecords, lightRecord)
- }
- return realLightRecords, nil
- }
- func (a AkeyAlarmRecord) Get() (*AkeyAlarmRecord, error) {
- var record AkeyAlarmRecord
- err := Db.Model(&a).First(&record).Error
- return &record, err
- }
- func (a AkeyAlarmRecord) Update() error {
- err := Db.Model(&a).Updates(&a).Error
- return err
- }
|