| | |
| | | |
| | | import ( |
| | | "apsClient/model" |
| | | "apsClient/model/request" |
| | | _ "apsClient/model/response" |
| | | "apsClient/pkg/contextx" |
| | | "apsClient/pkg/ecode" |
| | |
| | | // @Produce application/json |
| | | // @Param object body model.NetConfig true "参数" |
| | | // @Success 200 {object} contextx.Response{data=[]response.ProcessParams} "成功" |
| | | // @Router /v1/config/net [put] |
| | | // @Router /v1/config/net [post] |
| | | func (slf *ConfigApi) SetNetConfig(c *gin.Context) { |
| | | var params model.NetConfig |
| | | ctx, ok := contextx.NewContext(c, ¶ms) |
| | |
| | | } |
| | | ctx.Ok() |
| | | } |
| | | |
| | | // PlcGet |
| | | // @Tags Config |
| | | // @Summary 获取plc配置 |
| | | // @Produce application/json |
| | | // @Success 200 {object} contextx.Response{data=model.DevicePlc} "成功" |
| | | // @Router /v1/config/plc [get] |
| | | func (slf *ConfigApi) PlcGet(c *gin.Context) { |
| | | ctx, ok := contextx.NewContext(c, nil) |
| | | if !ok { |
| | | return |
| | | } |
| | | |
| | | plcData, code := service.NewDevicePlcService().GetDevicePlc() |
| | | if code != ecode.OK { |
| | | ctx.Fail(code) |
| | | return |
| | | } |
| | | ctx.OkWithDetailed(plcData) |
| | | } |
| | | |
| | | // PlcUpdate |
| | | // @Tags Config |
| | | // @Summary 更新plc配置 |
| | | // @Produce application/json |
| | | // @Param object body request.UpdatePlc true "查询参数" |
| | | // @Success 200 {object} contextx.Response{} |
| | | // @Router /v1/config/plc [post] |
| | | func (slf *ConfigApi) PlcUpdate(c *gin.Context) { |
| | | var params request.UpdatePlc |
| | | ctx, ok := contextx.NewContext(c, ¶ms) |
| | | if !ok { |
| | | return |
| | | } |
| | | |
| | | errCode := service.NewDevicePlcService().UpdateDevicePlc(¶ms) |
| | | if errCode != ecode.OK { |
| | | ctx.Fail(errCode) |
| | | return |
| | | } |
| | | |
| | | ctx.Ok() |
| | | } |
| | |
| | | "host": "{{.Host}}", |
| | | "basePath": "{{.BasePath}}", |
| | | "paths": { |
| | | "/v1/cc/nn": { |
| | | "/v1/config/net": { |
| | | "get": { |
| | | "produces": [ |
| | | "application/json" |
| | |
| | | } |
| | | } |
| | | }, |
| | | "put": { |
| | | "post": { |
| | | "produces": [ |
| | | "application/json" |
| | | ], |
| | |
| | | } |
| | | } |
| | | }, |
| | | "/v1/config/net": { |
| | | "/v1/config/plc": { |
| | | "get": { |
| | | "produces": [ |
| | | "application/json" |
| | |
| | | "tags": [ |
| | | "Config" |
| | | ], |
| | | "summary": "获取网络配置", |
| | | "summary": "获取plc配置", |
| | | "responses": { |
| | | "200": { |
| | | "description": "成功", |
| | |
| | | "type": "object", |
| | | "properties": { |
| | | "data": { |
| | | "type": "array", |
| | | "items": { |
| | | "$ref": "#/definitions/model.NetConfig" |
| | | } |
| | | "$ref": "#/definitions/model.DevicePlc" |
| | | } |
| | | } |
| | | } |
| | |
| | | } |
| | | } |
| | | }, |
| | | "put": { |
| | | "post": { |
| | | "produces": [ |
| | | "application/json" |
| | | ], |
| | | "tags": [ |
| | | "Config" |
| | | ], |
| | | "summary": "设置网络配置", |
| | | "summary": "更新plc配置", |
| | | "parameters": [ |
| | | { |
| | | "description": "参数", |
| | | "description": "查询参数", |
| | | "name": "object", |
| | | "in": "body", |
| | | "required": true, |
| | | "schema": { |
| | | "$ref": "#/definitions/model.NetConfig" |
| | | "$ref": "#/definitions/request.UpdatePlc" |
| | | } |
| | | } |
| | | ], |
| | | "responses": { |
| | | "200": { |
| | | "description": "成功", |
| | | "description": "OK", |
| | | "schema": { |
| | | "allOf": [ |
| | | { |
| | | "$ref": "#/definitions/contextx.Response" |
| | | }, |
| | | { |
| | | "type": "object", |
| | | "properties": { |
| | | "data": { |
| | | "type": "array", |
| | | "items": { |
| | | "$ref": "#/definitions/response.ProcessParams" |
| | | } |
| | | } |
| | | } |
| | | } |
| | | ] |
| | | "$ref": "#/definitions/contextx.Response" |
| | | } |
| | | } |
| | | } |
| | |
| | | } |
| | | } |
| | | }, |
| | | "model.DevicePlc": { |
| | | "type": "object", |
| | | "properties": { |
| | | "address": { |
| | | "type": "string" |
| | | }, |
| | | "brand": { |
| | | "type": "string" |
| | | }, |
| | | "details": { |
| | | "type": "array", |
| | | "items": { |
| | | "$ref": "#/definitions/model.DevicePlcAddress" |
| | | } |
| | | }, |
| | | "frequency": { |
| | | "type": "integer" |
| | | }, |
| | | "id": { |
| | | "type": "integer" |
| | | }, |
| | | "isOpen": { |
| | | "type": "boolean" |
| | | }, |
| | | "method": { |
| | | "type": "string" |
| | | }, |
| | | "port": { |
| | | "type": "integer" |
| | | }, |
| | | "portName": { |
| | | "type": "string" |
| | | } |
| | | } |
| | | }, |
| | | "model.DevicePlcAddress": { |
| | | "type": "object", |
| | | "properties": { |
| | | "fieldName": { |
| | | "description": "对应系统字段", |
| | | "type": "string" |
| | | }, |
| | | "length": { |
| | | "description": "数据长度", |
| | | "type": "integer" |
| | | }, |
| | | "startAddress": { |
| | | "description": "数据起始地址", |
| | | "type": "integer" |
| | | }, |
| | | "type": { |
| | | "description": "数据类型", |
| | | "type": "string" |
| | | } |
| | | } |
| | | }, |
| | | "model.NetConfig": { |
| | | "type": "object", |
| | | "required": [ |
| | |
| | | } |
| | | } |
| | | }, |
| | | "request.UpdatePlc": { |
| | | "type": "object", |
| | | "properties": { |
| | | "address": { |
| | | "type": "string" |
| | | }, |
| | | "brand": { |
| | | "type": "string" |
| | | }, |
| | | "details": { |
| | | "type": "array", |
| | | "items": { |
| | | "$ref": "#/definitions/model.DevicePlcAddress" |
| | | } |
| | | }, |
| | | "frequency": { |
| | | "type": "integer" |
| | | }, |
| | | "id": { |
| | | "type": "integer" |
| | | }, |
| | | "isOpen": { |
| | | "type": "boolean" |
| | | }, |
| | | "method": { |
| | | "type": "string" |
| | | }, |
| | | "port": { |
| | | "type": "integer" |
| | | }, |
| | | "portName": { |
| | | "type": "string" |
| | | } |
| | | } |
| | | }, |
| | | "request.UpdatePlcBrand": { |
| | | "type": "object", |
| | | "properties": { |
| | |
| | | "contact": {} |
| | | }, |
| | | "paths": { |
| | | "/v1/cc/nn": { |
| | | "/v1/config/net": { |
| | | "get": { |
| | | "produces": [ |
| | | "application/json" |
| | |
| | | } |
| | | } |
| | | }, |
| | | "put": { |
| | | "post": { |
| | | "produces": [ |
| | | "application/json" |
| | | ], |
| | |
| | | } |
| | | } |
| | | }, |
| | | "/v1/config/net": { |
| | | "/v1/config/plc": { |
| | | "get": { |
| | | "produces": [ |
| | | "application/json" |
| | |
| | | "tags": [ |
| | | "Config" |
| | | ], |
| | | "summary": "获取网络配置", |
| | | "summary": "获取plc配置", |
| | | "responses": { |
| | | "200": { |
| | | "description": "成功", |
| | |
| | | "type": "object", |
| | | "properties": { |
| | | "data": { |
| | | "type": "array", |
| | | "items": { |
| | | "$ref": "#/definitions/model.NetConfig" |
| | | } |
| | | "$ref": "#/definitions/model.DevicePlc" |
| | | } |
| | | } |
| | | } |
| | |
| | | } |
| | | } |
| | | }, |
| | | "put": { |
| | | "post": { |
| | | "produces": [ |
| | | "application/json" |
| | | ], |
| | | "tags": [ |
| | | "Config" |
| | | ], |
| | | "summary": "设置网络配置", |
| | | "summary": "更新plc配置", |
| | | "parameters": [ |
| | | { |
| | | "description": "参数", |
| | | "description": "查询参数", |
| | | "name": "object", |
| | | "in": "body", |
| | | "required": true, |
| | | "schema": { |
| | | "$ref": "#/definitions/model.NetConfig" |
| | | "$ref": "#/definitions/request.UpdatePlc" |
| | | } |
| | | } |
| | | ], |
| | | "responses": { |
| | | "200": { |
| | | "description": "成功", |
| | | "description": "OK", |
| | | "schema": { |
| | | "allOf": [ |
| | | { |
| | | "$ref": "#/definitions/contextx.Response" |
| | | }, |
| | | { |
| | | "type": "object", |
| | | "properties": { |
| | | "data": { |
| | | "type": "array", |
| | | "items": { |
| | | "$ref": "#/definitions/response.ProcessParams" |
| | | } |
| | | } |
| | | } |
| | | } |
| | | ] |
| | | "$ref": "#/definitions/contextx.Response" |
| | | } |
| | | } |
| | | } |
| | |
| | | } |
| | | } |
| | | }, |
| | | "model.DevicePlc": { |
| | | "type": "object", |
| | | "properties": { |
| | | "address": { |
| | | "type": "string" |
| | | }, |
| | | "brand": { |
| | | "type": "string" |
| | | }, |
| | | "details": { |
| | | "type": "array", |
| | | "items": { |
| | | "$ref": "#/definitions/model.DevicePlcAddress" |
| | | } |
| | | }, |
| | | "frequency": { |
| | | "type": "integer" |
| | | }, |
| | | "id": { |
| | | "type": "integer" |
| | | }, |
| | | "isOpen": { |
| | | "type": "boolean" |
| | | }, |
| | | "method": { |
| | | "type": "string" |
| | | }, |
| | | "port": { |
| | | "type": "integer" |
| | | }, |
| | | "portName": { |
| | | "type": "string" |
| | | } |
| | | } |
| | | }, |
| | | "model.DevicePlcAddress": { |
| | | "type": "object", |
| | | "properties": { |
| | | "fieldName": { |
| | | "description": "对应系统字段", |
| | | "type": "string" |
| | | }, |
| | | "length": { |
| | | "description": "数据长度", |
| | | "type": "integer" |
| | | }, |
| | | "startAddress": { |
| | | "description": "数据起始地址", |
| | | "type": "integer" |
| | | }, |
| | | "type": { |
| | | "description": "数据类型", |
| | | "type": "string" |
| | | } |
| | | } |
| | | }, |
| | | "model.NetConfig": { |
| | | "type": "object", |
| | | "required": [ |
| | |
| | | } |
| | | } |
| | | }, |
| | | "request.UpdatePlc": { |
| | | "type": "object", |
| | | "properties": { |
| | | "address": { |
| | | "type": "string" |
| | | }, |
| | | "brand": { |
| | | "type": "string" |
| | | }, |
| | | "details": { |
| | | "type": "array", |
| | | "items": { |
| | | "$ref": "#/definitions/model.DevicePlcAddress" |
| | | } |
| | | }, |
| | | "frequency": { |
| | | "type": "integer" |
| | | }, |
| | | "id": { |
| | | "type": "integer" |
| | | }, |
| | | "isOpen": { |
| | | "type": "boolean" |
| | | }, |
| | | "method": { |
| | | "type": "string" |
| | | }, |
| | | "port": { |
| | | "type": "integer" |
| | | }, |
| | | "portName": { |
| | | "type": "string" |
| | | } |
| | | } |
| | | }, |
| | | "request.UpdatePlcBrand": { |
| | | "type": "object", |
| | | "properties": { |
| | |
| | | msg: |
| | | type: string |
| | | type: object |
| | | model.DevicePlc: |
| | | properties: |
| | | address: |
| | | type: string |
| | | brand: |
| | | type: string |
| | | details: |
| | | items: |
| | | $ref: '#/definitions/model.DevicePlcAddress' |
| | | type: array |
| | | frequency: |
| | | type: integer |
| | | id: |
| | | type: integer |
| | | isOpen: |
| | | type: boolean |
| | | method: |
| | | type: string |
| | | port: |
| | | type: integer |
| | | portName: |
| | | type: string |
| | | type: object |
| | | model.DevicePlcAddress: |
| | | properties: |
| | | fieldName: |
| | | description: 对应系统字段 |
| | | type: string |
| | | length: |
| | | description: 数据长度 |
| | | type: integer |
| | | startAddress: |
| | | description: 数据起始地址 |
| | | type: integer |
| | | type: |
| | | description: 数据类型 |
| | | type: string |
| | | type: object |
| | | model.NetConfig: |
| | | properties: |
| | | dns: |
| | |
| | | name: |
| | | type: string |
| | | type: object |
| | | request.UpdatePlc: |
| | | properties: |
| | | address: |
| | | type: string |
| | | brand: |
| | | type: string |
| | | details: |
| | | items: |
| | | $ref: '#/definitions/model.DevicePlcAddress' |
| | | type: array |
| | | frequency: |
| | | type: integer |
| | | id: |
| | | type: integer |
| | | isOpen: |
| | | type: boolean |
| | | method: |
| | | type: string |
| | | port: |
| | | type: integer |
| | | portName: |
| | | type: string |
| | | type: object |
| | | request.UpdatePlcBrand: |
| | | properties: |
| | | id: |
| | |
| | | info: |
| | | contact: {} |
| | | paths: |
| | | /v1/cc/nn: |
| | | get: |
| | | produces: |
| | | - application/json |
| | | responses: |
| | | "200": |
| | | description: 成功 |
| | | schema: |
| | | allOf: |
| | | - $ref: '#/definitions/contextx.Response' |
| | | - properties: |
| | | data: |
| | | items: |
| | | $ref: '#/definitions/model.NetConfig' |
| | | type: array |
| | | type: object |
| | | summary: 获取网络配置 |
| | | tags: |
| | | - Config |
| | | put: |
| | | parameters: |
| | | - description: 参数 |
| | | in: body |
| | | name: object |
| | | required: true |
| | | schema: |
| | | $ref: '#/definitions/model.NetConfig' |
| | | produces: |
| | | - application/json |
| | | responses: |
| | | "200": |
| | | description: 成功 |
| | | schema: |
| | | allOf: |
| | | - $ref: '#/definitions/contextx.Response' |
| | | - properties: |
| | | data: |
| | | items: |
| | | $ref: '#/definitions/response.ProcessParams' |
| | | type: array |
| | | type: object |
| | | summary: 设置网络配置 |
| | | tags: |
| | | - Config |
| | | /v1/config/net: |
| | | get: |
| | | produces: |
| | |
| | | summary: 获取网络配置 |
| | | tags: |
| | | - Config |
| | | put: |
| | | post: |
| | | parameters: |
| | | - description: 参数 |
| | | in: body |
| | |
| | | summary: 设置网络配置 |
| | | tags: |
| | | - Config |
| | | /v1/config/plc: |
| | | get: |
| | | produces: |
| | | - application/json |
| | | responses: |
| | | "200": |
| | | description: 成功 |
| | | schema: |
| | | allOf: |
| | | - $ref: '#/definitions/contextx.Response' |
| | | - properties: |
| | | data: |
| | | $ref: '#/definitions/model.DevicePlc' |
| | | type: object |
| | | summary: 获取plc配置 |
| | | tags: |
| | | - Config |
| | | post: |
| | | parameters: |
| | | - description: 查询参数 |
| | | in: body |
| | | name: object |
| | | required: true |
| | | schema: |
| | | $ref: '#/definitions/request.UpdatePlc' |
| | | produces: |
| | | - application/json |
| | | responses: |
| | | "200": |
| | | description: OK |
| | | schema: |
| | | $ref: '#/definitions/contextx.Response' |
| | | summary: 更新plc配置 |
| | | tags: |
| | | - Config |
| | | /v1/plcBrand/add: |
| | | post: |
| | | parameters: |
New file |
| | |
| | | package model |
| | | |
| | | import ( |
| | | "apsClient/pkg/sqlitex" |
| | | "encoding/json" |
| | | "fmt" |
| | | "gorm.io/gorm" |
| | | ) |
| | | |
| | | type ( |
| | | |
| | | // DevicePlc 设备的PLC配置 |
| | | DevicePlc struct { |
| | | gorm.Model `json:"-"` |
| | | Id int `gorm:"primarykey;type:int;"` |
| | | Brand string `gorm:"type:varchar(191);comment:PLC品牌" json:"brand"` |
| | | Method string `gorm:"type:varchar(191);comment:接口方式" json:"method"` |
| | | PortName string `gorm:"type:varchar(191);comment:端口名称" json:"portName"` |
| | | Frequency int `gorm:"type:int(11);comment:数据更新频率 0-实时更新 1-1次/秒" json:"frequency"` |
| | | Address string `gorm:"type:varchar(191);comment:PLC地址" json:"address"` |
| | | Port int `gorm:"type:int(11);comment:端口" json:"port"` |
| | | IsOpen bool `gorm:"type:tinyint(1);comment:是否开启" json:"isOpen"` |
| | | Detail string `gorm:"type:varchar(2048);comment:数据详情" json:"-"` |
| | | |
| | | Details []*DevicePlcAddress `gorm:"-" json:"details"` |
| | | } |
| | | |
| | | DevicePlcAddress struct { |
| | | StartAddress int `json:"startAddress"` // 数据起始地址 |
| | | Length int `json:"length"` // 数据长度 |
| | | Type string `json:"type"` // 数据类型 |
| | | FieldName string `json:"fieldName"` // 对应系统字段 |
| | | } |
| | | |
| | | DevicePlcSearch struct { |
| | | DevicePlc |
| | | Order string |
| | | PageNum int |
| | | PageSize int |
| | | Orm *gorm.DB |
| | | } |
| | | ) |
| | | |
| | | func (slf *DevicePlc) TableName() string { |
| | | return "device_plc" |
| | | } |
| | | |
| | | func (slf *DevicePlc) AfterFind(tx *gorm.DB) error { |
| | | details := make([]*DevicePlcAddress, 0) |
| | | err := json.Unmarshal([]byte(slf.Detail), &details) |
| | | if err != nil { |
| | | return err |
| | | } |
| | | slf.Details = details |
| | | return nil |
| | | } |
| | | |
| | | func NewDevicePlcSearch() *DevicePlcSearch { |
| | | return &DevicePlcSearch{Orm: sqlitex.GetDB()} |
| | | } |
| | | |
| | | func (slf *DevicePlcSearch) SetOrm(tx *gorm.DB) *DevicePlcSearch { |
| | | slf.Orm = tx |
| | | return slf |
| | | } |
| | | |
| | | func (slf *DevicePlcSearch) SetPage(page, size int) *DevicePlcSearch { |
| | | slf.PageNum, slf.PageSize = page, size |
| | | return slf |
| | | } |
| | | |
| | | func (slf *DevicePlcSearch) SetOrder(order string) *DevicePlcSearch { |
| | | slf.Order = order |
| | | return slf |
| | | } |
| | | |
| | | func (slf *DevicePlcSearch) SetId(id int) *DevicePlcSearch { |
| | | slf.Id = id |
| | | return slf |
| | | } |
| | | |
| | | func (slf *DevicePlcSearch) build() *gorm.DB { |
| | | var db = slf.Orm.Table(slf.TableName()) |
| | | |
| | | if slf.Id > 0 { |
| | | db = db.Where("id = ?", slf.Id) |
| | | } |
| | | |
| | | if slf.Order != "" { |
| | | db = db.Order(slf.Order) |
| | | } |
| | | |
| | | return db |
| | | } |
| | | |
| | | // Create 单条插入 |
| | | func (slf *DevicePlcSearch) Create(record *DevicePlc) error { |
| | | var db = slf.build() |
| | | |
| | | if err := db.Create(record).Error; err != nil { |
| | | return fmt.Errorf("create err: %v, record: %+v", err, record) |
| | | } |
| | | |
| | | return nil |
| | | } |
| | | |
| | | // CreateBatch 批量插入 |
| | | func (slf *DevicePlcSearch) CreateBatch(records []*DevicePlc) error { |
| | | var db = slf.build() |
| | | |
| | | if err := db.Create(&records).Error; err != nil { |
| | | return fmt.Errorf("create batch err: %v, records: %+v", err, records) |
| | | } |
| | | |
| | | return nil |
| | | } |
| | | |
| | | func (slf *DevicePlcSearch) Save(record *DevicePlc) error { |
| | | var db = slf.build() |
| | | |
| | | if err := db.Omit("CreatedAt").Save(record).Error; err != nil { |
| | | return fmt.Errorf("save err: %v, record: %+v", err, record) |
| | | } |
| | | |
| | | return nil |
| | | } |
| | | |
| | | func (slf *DevicePlcSearch) UpdateByMap(upMap map[string]interface{}) error { |
| | | var ( |
| | | db = slf.build() |
| | | ) |
| | | |
| | | if err := db.Updates(upMap).Error; err != nil { |
| | | return fmt.Errorf("update by map err: %v, upMap: %+v", err, upMap) |
| | | } |
| | | |
| | | return nil |
| | | } |
| | | |
| | | func (slf *DevicePlcSearch) UpdateByQuery(query string, args []interface{}, upMap map[string]interface{}) error { |
| | | var ( |
| | | db = slf.Orm.Table(slf.TableName()).Where(query, args...) |
| | | ) |
| | | |
| | | if err := db.Updates(upMap).Error; err != nil { |
| | | return fmt.Errorf("update by query err: %v, query: %s, args: %+v, upMap: %+v", err, query, args, upMap) |
| | | } |
| | | |
| | | return nil |
| | | } |
| | | |
| | | func (slf *DevicePlcSearch) Delete() error { |
| | | var db = slf.build() |
| | | |
| | | if err := db.Unscoped().Delete(&DevicePlc{}).Error; err != nil { |
| | | return err |
| | | } |
| | | |
| | | return nil |
| | | } |
| | | |
| | | func (slf *DevicePlcSearch) First() (*DevicePlc, error) { |
| | | var ( |
| | | record = new(DevicePlc) |
| | | db = slf.build() |
| | | ) |
| | | |
| | | if err := db.First(record).Error; err != nil { |
| | | return record, err |
| | | } |
| | | |
| | | return record, nil |
| | | } |
| | | |
| | | func (slf *DevicePlcSearch) Find() ([]*DevicePlc, int64, error) { |
| | | var ( |
| | | records = make([]*DevicePlc, 0) |
| | | total int64 |
| | | db = slf.build() |
| | | ) |
| | | |
| | | if err := db.Count(&total).Error; err != nil { |
| | | return records, total, fmt.Errorf("find count err: %v", err) |
| | | } |
| | | if slf.PageNum*slf.PageSize > 0 { |
| | | db = db.Offset((slf.PageNum - 1) * slf.PageSize).Limit(slf.PageSize) |
| | | } |
| | | if err := db.Find(&records).Error; err != nil { |
| | | return records, total, fmt.Errorf("find records err: %v", err) |
| | | } |
| | | |
| | | return records, total, nil |
| | | } |
| | | |
| | | func (slf *DevicePlcSearch) FindNotTotal() ([]*DevicePlc, error) { |
| | | var ( |
| | | records = make([]*DevicePlc, 0) |
| | | db = slf.build() |
| | | ) |
| | | |
| | | if slf.PageNum*slf.PageSize > 0 { |
| | | db = db.Offset((slf.PageNum - 1) * slf.PageSize).Limit(slf.PageSize) |
| | | } |
| | | if err := db.Find(&records).Error; err != nil { |
| | | return records, fmt.Errorf("find records err: %v", err) |
| | | } |
| | | |
| | | return records, nil |
| | | } |
| | | |
| | | // FindByQuery 指定条件查询. |
| | | func (slf *DevicePlcSearch) FindByQuery(query string, args []interface{}) ([]*DevicePlc, int64, error) { |
| | | var ( |
| | | records = make([]*DevicePlc, 0) |
| | | total int64 |
| | | db = slf.Orm.Table(slf.TableName()).Where(query, args...) |
| | | ) |
| | | |
| | | if err := db.Count(&total).Error; err != nil { |
| | | return records, total, fmt.Errorf("find by query count err: %v", err) |
| | | } |
| | | if slf.PageNum*slf.PageSize > 0 { |
| | | db = db.Offset((slf.PageNum - 1) * slf.PageSize).Limit(slf.PageSize) |
| | | } |
| | | if err := db.Find(&records).Error; err != nil { |
| | | return records, total, fmt.Errorf("find by query records err: %v, query: %s, args: %+v", err, query, args) |
| | | } |
| | | |
| | | return records, total, nil |
| | | } |
| | | |
| | | // FindByQueryNotTotal 指定条件查询&不查询总条数. |
| | | func (slf *DevicePlcSearch) FindByQueryNotTotal(query string, args []interface{}) ([]*DevicePlc, error) { |
| | | var ( |
| | | records = make([]*DevicePlc, 0) |
| | | db = slf.Orm.Table(slf.TableName()).Where(query, args...) |
| | | ) |
| | | |
| | | if slf.PageNum*slf.PageSize > 0 { |
| | | db = db.Offset((slf.PageNum - 1) * slf.PageSize).Limit(slf.PageSize) |
| | | } |
| | | if err := db.Find(&records).Error; err != nil { |
| | | return records, fmt.Errorf("find by query records err: %v, query: %s, args: %+v", err, query, args) |
| | | } |
| | | |
| | | return records, nil |
| | | } |
| | |
| | | Procedures{}, |
| | | NetConfig{}, |
| | | PlcBrand{}, |
| | | DevicePlc{}, |
| | | ) |
| | | return err |
| | | } |
| | |
| | | |
| | | models := []interface{}{ |
| | | NewNetConfigSearch(nil), |
| | | NewPlcBrandSearch(), |
| | | } |
| | | |
| | | for _, model := range models { |
| | |
| | | "errors" |
| | | "fmt" |
| | | "gorm.io/gorm" |
| | | "sync" |
| | | ) |
| | | |
| | | type ( |
| | |
| | | } |
| | | |
| | | // InitDefaultData 初始化数据 |
| | | func (slf *PlcBrandSearch) InitDefaultData() error { |
| | | func (slf *PlcBrandSearch) InitDefaultData(errCh chan<- error, wg *sync.WaitGroup) { |
| | | var ( |
| | | db = slf.Orm.Table(slf.TableName()) |
| | | total int64 = 0 |
| | | ) |
| | | defer wg.Done() |
| | | |
| | | if err := db.Count(&total).Error; err != nil { |
| | | return err |
| | | errCh <- err |
| | | return |
| | | } |
| | | if total != 0 { |
| | | return nil |
| | | return |
| | | } |
| | | records := []*PlcBrand{} |
| | | return slf.CreateBatch(records) |
| | | records := []*PlcBrand{ |
| | | {1, "欧姆龙"}, |
| | | {2, "西门子"}, |
| | | {3, "松下"}, |
| | | } |
| | | err := slf.CreateBatch(records) |
| | | if err != nil { |
| | | errCh <- err |
| | | return |
| | | } |
| | | } |
New file |
| | |
| | | package request |
| | | |
| | | import ( |
| | | "apsClient/model" |
| | | ) |
| | | |
| | | type AddPlc struct { |
| | | model.DevicePlc |
| | | } |
| | | |
| | | type UpdatePlc struct { |
| | | Id int `json:"id"` |
| | | model.DevicePlc |
| | | } |
| | |
| | | { |
| | | configGroup.GET("net", configApi.GetNetConfig) // 获取网络配置 |
| | | configGroup.POST("net", configApi.SetNetConfig) // 设置网络 |
| | | } |
| | | |
| | | configApi1 := new(v1.ConfigApi2) |
| | | configGroup1 := v1Group.Group("cc") |
| | | { |
| | | configGroup1.GET("nn", configApi1.GetNetConfig) // 获取网络配置 |
| | | configGroup1.POST("nn", configApi1.SetNetConfig) // 设置网络 |
| | | configGroup.GET("plc", configApi.PlcGet) // 获取plc配置 |
| | | configGroup.POST("plc", configApi.PlcUpdate) // 设置plc |
| | | } |
| | | |
| | | InitPlcBrandRouter(v1Group) |
New file |
| | |
| | | package service |
| | | |
| | | import ( |
| | | "apsClient/model" |
| | | "apsClient/model/request" |
| | | "apsClient/pkg/ecode" |
| | | "apsClient/pkg/logx" |
| | | "apsClient/pkg/structx" |
| | | "encoding/json" |
| | | "gorm.io/gorm" |
| | | ) |
| | | |
| | | type DevicePlcService struct{} |
| | | |
| | | func NewDevicePlcService() DevicePlcService { |
| | | return DevicePlcService{} |
| | | } |
| | | |
| | | func (DevicePlcService) GetDevicePlc() (*model.DevicePlc, int) { |
| | | DevicePlc, err := model.NewDevicePlcSearch().SetOrder("id desc").First() |
| | | if err == gorm.ErrRecordNotFound { |
| | | return &model.DevicePlc{ |
| | | Brand: "", |
| | | Method: "", |
| | | PortName: "", |
| | | Frequency: 0, |
| | | Address: "", |
| | | Port: 0, |
| | | IsOpen: false, |
| | | Detail: "", |
| | | Details: make([]*model.DevicePlcAddress, 0), |
| | | }, ecode.OK |
| | | } |
| | | if err != nil { |
| | | return nil, ecode.DBErr |
| | | } |
| | | |
| | | return DevicePlc, ecode.OK |
| | | } |
| | | |
| | | 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 plc.Id == 0 { |
| | | err = model.NewDevicePlcSearch().Create(&record) |
| | | } else { |
| | | err = model.NewDevicePlcSearch().SetId(plc.Id).Save(&record) |
| | | } |
| | | |
| | | if err != nil { |
| | | logx.Errorf("UpdateDevicePlc err: %v", err.Error()) |
| | | return ecode.DBErr |
| | | } |
| | | return ecode.OK |
| | | } |