From e6c81b3916494ef51edc21774a27402d0f16c49c Mon Sep 17 00:00:00 2001
From: zhangqian <zhangqian@123.com>
Date: 星期四, 24 八月 2023 17:21:04 +0800
Subject: [PATCH] plc配置支持serial和modbusTCP两种方式
---
constvar/const.go | 11 +++
model/device_plc.go | 17 +++--
service/device_plc.go | 19 +++---
docs/swagger.yaml | 36 +++++++++--
api/v1/config.go | 15 +++++
docs/docs.go | 39 +++++++++---
docs/swagger.json | 39 +++++++++---
7 files changed, 132 insertions(+), 44 deletions(-)
diff --git a/api/v1/config.go b/api/v1/config.go
index 4cf65b0..4765bcf 100644
--- a/api/v1/config.go
+++ b/api/v1/config.go
@@ -2,6 +2,7 @@
import (
"apsClient/conf"
+ "apsClient/constvar"
"apsClient/model"
"apsClient/model/request"
_ "apsClient/model/response"
@@ -119,6 +120,20 @@
return
}
+ if !params.Method.Valid() {
+ ctx.FailWithMsg(ecode.ParamsErr, "鎺ュ彛鏂瑰紡涓嶆纭�")
+ return
+ }
+
+ if params.Method == constvar.PlcMethodModbusTCP && (params.Address == "" || params.Port == 0) {
+ ctx.FailWithMsg(ecode.ParamsErr, "褰撴帴鍙f柟寮忎负modbusTCP鏃讹紝address鍜宲ort涓嶈兘涓虹┖")
+ return
+ }
+ if params.Method == constvar.PlcMethodSerial && (params.BaudRate == 0 || params.SerialName == "") {
+ ctx.FailWithMsg(ecode.ParamsErr, "褰撴帴鍙f柟寮忎负serial鏃讹紝baudRate鍜宻erialName涓嶈兘涓虹┖")
+ return
+ }
+
errCode := service.NewDevicePlcService().UpdateDevicePlc(¶ms)
if errCode != ecode.OK {
ctx.Fail(errCode)
diff --git a/constvar/const.go b/constvar/const.go
index c64e44b..087eeb5 100644
--- a/constvar/const.go
+++ b/constvar/const.go
@@ -20,3 +20,14 @@
PlcAddressDataKeyFileName = "plc_address_key"
PlcAddressDataValueFileName = "plc_address_value"
)
+
+type PlcMethod string
+
+const (
+ PlcMethodModbusTCP PlcMethod = "modbusTCP"
+ PlcMethodSerial PlcMethod = "serial"
+)
+
+func (slf PlcMethod) Valid() bool {
+ return slf == PlcMethodModbusTCP || slf == PlcMethodSerial
+}
diff --git a/docs/docs.go b/docs/docs.go
index 13c6d5b..1f4a9ab 100644
--- a/docs/docs.go
+++ b/docs/docs.go
@@ -524,6 +524,17 @@
}
}
},
+ "constvar.PlcMethod": {
+ "type": "string",
+ "enum": [
+ "modbusTCP",
+ "serial"
+ ],
+ "x-enum-varnames": [
+ "PlcMethodModbusTCP",
+ "PlcMethodSerial"
+ ]
+ },
"contextx.Response": {
"type": "object",
"properties": {
@@ -540,7 +551,12 @@
"type": "object",
"properties": {
"address": {
+ "description": "PortName string ` + "`" + `gorm:\"type:varchar(191);comment:绔彛鍚嶇О\" json:\"portName\"` + "`" + `\nFrequency int ` + "`" + `gorm:\"type:int(11);comment:鏁版嵁鏇存柊棰戠巼 0-瀹炴椂鏇存柊 1-1娆�/绉抃" json:\"frequency\"` + "`" + `",
"type": "string"
+ },
+ "baudRate": {
+ "description": "涓插彛娉㈢壒鐜囷紝 method = serial鏃� 鐢�",
+ "type": "integer"
},
"brand": {
"type": "string"
@@ -551,9 +567,6 @@
"$ref": "#/definitions/model.DevicePlcAddress"
}
},
- "frequency": {
- "type": "integer"
- },
"id": {
"type": "integer"
},
@@ -561,12 +574,14 @@
"type": "boolean"
},
"method": {
- "type": "string"
+ "$ref": "#/definitions/constvar.PlcMethod"
},
"port": {
+ "description": "plc 绔彛鍙凤紝 method = modbusTCP鐢�",
"type": "integer"
},
- "portName": {
+ "serialName": {
+ "description": "涓插彛鍚嶇О锛宮ethod = serial鏃� 鐢�",
"type": "string"
}
}
@@ -767,7 +782,12 @@
"type": "object",
"properties": {
"address": {
+ "description": "PortName string ` + "`" + `gorm:\"type:varchar(191);comment:绔彛鍚嶇О\" json:\"portName\"` + "`" + `\nFrequency int ` + "`" + `gorm:\"type:int(11);comment:鏁版嵁鏇存柊棰戠巼 0-瀹炴椂鏇存柊 1-1娆�/绉抃" json:\"frequency\"` + "`" + `",
"type": "string"
+ },
+ "baudRate": {
+ "description": "涓插彛娉㈢壒鐜囷紝 method = serial鏃� 鐢�",
+ "type": "integer"
},
"brand": {
"type": "string"
@@ -778,9 +798,6 @@
"$ref": "#/definitions/model.DevicePlcAddress"
}
},
- "frequency": {
- "type": "integer"
- },
"id": {
"type": "integer"
},
@@ -788,12 +805,14 @@
"type": "boolean"
},
"method": {
- "type": "string"
+ "$ref": "#/definitions/constvar.PlcMethod"
},
"port": {
+ "description": "plc 绔彛鍙凤紝 method = modbusTCP鐢�",
"type": "integer"
},
- "portName": {
+ "serialName": {
+ "description": "涓插彛鍚嶇О锛宮ethod = serial鏃� 鐢�",
"type": "string"
}
}
diff --git a/docs/swagger.json b/docs/swagger.json
index 8f746a2..fec7e88 100644
--- a/docs/swagger.json
+++ b/docs/swagger.json
@@ -512,6 +512,17 @@
}
}
},
+ "constvar.PlcMethod": {
+ "type": "string",
+ "enum": [
+ "modbusTCP",
+ "serial"
+ ],
+ "x-enum-varnames": [
+ "PlcMethodModbusTCP",
+ "PlcMethodSerial"
+ ]
+ },
"contextx.Response": {
"type": "object",
"properties": {
@@ -528,7 +539,12 @@
"type": "object",
"properties": {
"address": {
+ "description": "PortName string `gorm:\"type:varchar(191);comment:绔彛鍚嶇О\" json:\"portName\"`\nFrequency int `gorm:\"type:int(11);comment:鏁版嵁鏇存柊棰戠巼 0-瀹炴椂鏇存柊 1-1娆�/绉抃" json:\"frequency\"`",
"type": "string"
+ },
+ "baudRate": {
+ "description": "涓插彛娉㈢壒鐜囷紝 method = serial鏃� 鐢�",
+ "type": "integer"
},
"brand": {
"type": "string"
@@ -539,9 +555,6 @@
"$ref": "#/definitions/model.DevicePlcAddress"
}
},
- "frequency": {
- "type": "integer"
- },
"id": {
"type": "integer"
},
@@ -549,12 +562,14 @@
"type": "boolean"
},
"method": {
- "type": "string"
+ "$ref": "#/definitions/constvar.PlcMethod"
},
"port": {
+ "description": "plc 绔彛鍙凤紝 method = modbusTCP鐢�",
"type": "integer"
},
- "portName": {
+ "serialName": {
+ "description": "涓插彛鍚嶇О锛宮ethod = serial鏃� 鐢�",
"type": "string"
}
}
@@ -755,7 +770,12 @@
"type": "object",
"properties": {
"address": {
+ "description": "PortName string `gorm:\"type:varchar(191);comment:绔彛鍚嶇О\" json:\"portName\"`\nFrequency int `gorm:\"type:int(11);comment:鏁版嵁鏇存柊棰戠巼 0-瀹炴椂鏇存柊 1-1娆�/绉抃" json:\"frequency\"`",
"type": "string"
+ },
+ "baudRate": {
+ "description": "涓插彛娉㈢壒鐜囷紝 method = serial鏃� 鐢�",
+ "type": "integer"
},
"brand": {
"type": "string"
@@ -766,9 +786,6 @@
"$ref": "#/definitions/model.DevicePlcAddress"
}
},
- "frequency": {
- "type": "integer"
- },
"id": {
"type": "integer"
},
@@ -776,12 +793,14 @@
"type": "boolean"
},
"method": {
- "type": "string"
+ "$ref": "#/definitions/constvar.PlcMethod"
},
"port": {
+ "description": "plc 绔彛鍙凤紝 method = modbusTCP鐢�",
"type": "integer"
},
- "portName": {
+ "serialName": {
+ "description": "涓插彛鍚嶇О锛宮ethod = serial鏃� 鐢�",
"type": "string"
}
}
diff --git a/docs/swagger.yaml b/docs/swagger.yaml
index ab9ad60..260f74c 100644
--- a/docs/swagger.yaml
+++ b/docs/swagger.yaml
@@ -59,6 +59,14 @@
$ref: '#/definitions/common.ProcedureWorker'
type: array
type: object
+ constvar.PlcMethod:
+ enum:
+ - modbusTCP
+ - serial
+ type: string
+ x-enum-varnames:
+ - PlcMethodModbusTCP
+ - PlcMethodSerial
contextx.Response:
properties:
code:
@@ -70,24 +78,30 @@
model.DevicePlc:
properties:
address:
+ description: |-
+ PortName string `gorm:"type:varchar(191);comment:绔彛鍚嶇О" json:"portName"`
+ Frequency int `gorm:"type:int(11);comment:鏁版嵁鏇存柊棰戠巼 0-瀹炴椂鏇存柊 1-1娆�/绉�" json:"frequency"`
type: string
+ baudRate:
+ description: 涓插彛娉㈢壒鐜囷紝 method = serial鏃� 鐢�
+ type: integer
brand:
type: string
details:
items:
$ref: '#/definitions/model.DevicePlcAddress'
type: array
- frequency:
- type: integer
id:
type: integer
isOpen:
type: boolean
method:
- type: string
+ $ref: '#/definitions/constvar.PlcMethod'
port:
+ description: plc 绔彛鍙凤紝 method = modbusTCP鐢�
type: integer
- portName:
+ serialName:
+ description: 涓插彛鍚嶇О锛宮ethod = serial鏃� 鐢�
type: string
type: object
model.DevicePlcAddress:
@@ -223,24 +237,30 @@
request.UpdatePlc:
properties:
address:
+ description: |-
+ PortName string `gorm:"type:varchar(191);comment:绔彛鍚嶇О" json:"portName"`
+ Frequency int `gorm:"type:int(11);comment:鏁版嵁鏇存柊棰戠巼 0-瀹炴椂鏇存柊 1-1娆�/绉�" json:"frequency"`
type: string
+ baudRate:
+ description: 涓插彛娉㈢壒鐜囷紝 method = serial鏃� 鐢�
+ type: integer
brand:
type: string
details:
items:
$ref: '#/definitions/model.DevicePlcAddress'
type: array
- frequency:
- type: integer
id:
type: integer
isOpen:
type: boolean
method:
- type: string
+ $ref: '#/definitions/constvar.PlcMethod'
port:
+ description: plc 绔彛鍙凤紝 method = modbusTCP鐢�
type: integer
- portName:
+ serialName:
+ description: 涓插彛鍚嶇О锛宮ethod = serial鏃� 鐢�
type: string
type: object
request.UpdatePlcBrand:
diff --git a/model/device_plc.go b/model/device_plc.go
index e37a718..785ab8e 100644
--- a/model/device_plc.go
+++ b/model/device_plc.go
@@ -1,6 +1,7 @@
package model
import (
+ "apsClient/constvar"
"apsClient/pkg/sqlitex"
"encoding/json"
"fmt"
@@ -12,13 +13,15 @@
// DevicePlc 璁惧鐨凱LC閰嶇疆
DevicePlc struct {
gorm.Model `json:"-"`
- Id int `gorm:"primarykey;type:int;" json:"id"`
- 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"`
+ Id int `gorm:"primarykey;type:int;" json:"id"`
+ Brand string `gorm:"type:varchar(191);comment:PLC鍝佺墝" json:"brand"`
+ Method constvar.PlcMethod `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"` //plc ip鍦板潃锛� method = modbusTCP鐢�
+ Port int `gorm:"type:int(11);comment:绔彛" json:"port"` //plc 绔彛鍙凤紝 method = modbusTCP鐢�
+ BaudRate int `gorm:"type:int(11);comment:娉㈢壒鐜�" json:"baudRate"` //涓插彛娉㈢壒鐜囷紝 method = serial鏃� 鐢�
+ SerialName string `gorm:"type:int(11);comment:涓插彛鍚嶇О" json:"serialName"` //涓插彛鍚嶇О锛宮ethod = serial鏃� 鐢�
IsOpen bool `gorm:"type:tinyint(1);comment:鏄惁寮�鍚�" json:"isOpen"`
Detail string `gorm:"type:varchar(2048);comment:鏁版嵁璇︽儏" json:"-"`
diff --git a/service/device_plc.go b/service/device_plc.go
index 7ec6fee..db1fd71 100644
--- a/service/device_plc.go
+++ b/service/device_plc.go
@@ -20,15 +20,16 @@
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),
+ Id: 0,
+ Brand: "",
+ Method: "",
+ Address: "",
+ Port: 0,
+ BaudRate: 0,
+ SerialName: "",
+ IsOpen: false,
+ Detail: "",
+ Details: make([]*model.DevicePlcAddress, 0),
}, ecode.OK
}
if err != nil {
--
Gitblit v1.8.0