package service import ( "apsClient/conf" "apsClient/model" "apsClient/model/request" "apsClient/pkg/ecode" "apsClient/pkg/logx" "apsClient/pkg/structx" "encoding/json" "errors" "github.com/jinzhu/gorm" ) type DevicePlcService struct{} func NewDevicePlcService() DevicePlcService { return DevicePlcService{} } func (slf DevicePlcService) GetDevicePlc() (*model.DevicePlc, int) { devicePlc, err := model.NewDevicePlcSearch().SetDeviceId(conf.Conf.CurrentDeviceID).First() if err == gorm.ErrRecordNotFound { logx.Errorf("GetDevicePlc failed:%v", err) return &model.DevicePlc{ DeviceID: "", Brand: "", Method: "", Address: "", Port: 0, BaudRate: 0, SerialName: "", DataBit: 0, StopBit: 0, Parity: 0, IsOpen: false, Details: make([]*model.DevicePlcAddress, 0), }, ecode.OK } if err != nil { logx.Errorf("GetDevicePlc failed:%v", err) return nil, ecode.DBErr } if len(devicePlc.Details) == 0 { return nil, ecode.PlcAddressError } return devicePlc, ecode.OK } func (slf DevicePlcService) GetDeviceChannelAmount() (int, error) { device, err := model.NewDeviceSearch().SetDeviceId(conf.Conf.CurrentDeviceID).First() if err != nil { return 0, errors.New("没有找到当前设备") } return device.ExtChannelAmount + 1, nil } func (DevicePlcService) UpdateDevicePlc(plc *request.UpdatePlc) int { var record model.DevicePlc err := structx.AssignTo(plc, &record) if err != nil { logx.Errorf("UpdateDevicePlc err: %v", err.Error()) return ecode.UnknownErr } detail, err := json.Marshal(plc.Details) if err != nil { return ecode.ParamsErr } record.Detail = string(detail) if record.ID == 0 { err = model.NewDevicePlcSearch().Create(&record) } else { err = model.NewDevicePlcSearch().Save(&record) } if err != nil { logx.Errorf("UpdateDevicePlc err: %v", err.Error()) return ecode.DBErr } return ecode.OK }