From d8ab702e37077c5f822a6ec1997a2d10b530c439 Mon Sep 17 00:00:00 2001
From: zhangqian <zhangqian@123.com>
Date: 星期六, 16 九月 2023 22:42:29 +0800
Subject: [PATCH] 增加实时获取生产进度接口
---
api/v1/plc.go | 63 +++++++++++++++++++++
router/index.go | 5 +
docs/swagger.yaml | 24 ++++++++
docs/docs.go | 42 ++++++++++++++
docs/swagger.json | 42 ++++++++++++++
5 files changed, 174 insertions(+), 2 deletions(-)
diff --git a/api/v1/plc.go b/api/v1/plc.go
index 5f3b279..1d528fb 100644
--- a/api/v1/plc.go
+++ b/api/v1/plc.go
@@ -6,6 +6,8 @@
"apsClient/model/response"
_ "apsClient/model/response"
"apsClient/pkg/contextx"
+ "apsClient/pkg/ecode"
+ "apsClient/pkg/logx"
"apsClient/pkg/plc/apacheplc4x"
"apsClient/service"
"github.com/gin-gonic/gin"
@@ -60,3 +62,64 @@
}
ctx.Ok()
}
+
+// GetProductProgressRealTime
+// @Tags 鐢熶骇鏁伴噺
+// @Summary 瀹炴椂鑾峰彇鐢熶骇杩涘害
+// @Produce application/json
+// @Param object body request.SendProcessParams true "鏌ヨ鍙傛暟"
+// @Success 200 {object} contextx.Response{data=response.ProductProgress} "鎴愬姛"
+// @Router /v1/plc/productProgressRealTime [post]
+func (slf *PlcApi) GetProductProgressRealTime(c *gin.Context) {
+ var params request.GetProductProgress
+ ctx, ok := contextx.NewContext(c, ¶ms)
+ if !ok {
+ return
+ }
+ var finishNumber, totalNumber int64
+ plcConfig, code := service.NewDevicePlcService().GetDevicePlc()
+ if code != ecode.OK {
+ return
+ }
+ for _, addressItem := range plcConfig.Details {
+ if addressItem.FieldName == constvar.PlcStartAddressTypeFinishNumber {
+ value, err := service.PlcReadDirect(plcConfig, addressItem.StartAddress, addressItem.Length, addressItem.Type)
+ if err != nil {
+ logx.Infof("plc read finish number err: %v", err)
+ continue
+ }
+ finishNumber = cast.ToInt64(value)
+ logx.Infof("plc read finish number: %v", finishNumber)
+ break
+ }
+ }
+
+ for _, addressItem := range plcConfig.Details {
+ if addressItem.FieldName == constvar.PlcStartAddressTypeTotalNumber {
+ value, err := service.PlcReadDirect(plcConfig, addressItem.StartAddress, addressItem.Length, addressItem.Type)
+ if err != nil {
+ logx.Infof("plc read total number err: %v", err)
+ continue
+ }
+ totalNumber = cast.ToInt64(value)
+ logx.Infof("plc read total number: %v", totalNumber)
+ break
+ }
+ }
+ resp := new(response.ProductProgress)
+ resp.FinishNumber = cast.ToInt(finishNumber)
+ resp.TotalNumber = cast.ToInt(totalNumber)
+
+ plcStatus := 1 //鏂紑杩炴帴
+ isConnect := apacheplc4x.IsConnect()
+ if isConnect {
+ if resp.FinishNumber > 0 { //鐢熶骇
+ plcStatus = 2
+ } else { //寰呮満
+ plcStatus = 3
+ }
+ }
+ resp.PlcStatus = plcStatus
+
+ ctx.OkWithDetailed(resp)
+}
diff --git a/docs/docs.go b/docs/docs.go
index 2f9b1f7..02797c6 100644
--- a/docs/docs.go
+++ b/docs/docs.go
@@ -194,6 +194,48 @@
}
}
},
+ "/v1/plc/productProgressRealTime": {
+ "post": {
+ "produces": [
+ "application/json"
+ ],
+ "tags": [
+ "鐢熶骇鏁伴噺"
+ ],
+ "summary": "瀹炴椂鑾峰彇鐢熶骇杩涘害",
+ "parameters": [
+ {
+ "description": "鏌ヨ鍙傛暟",
+ "name": "object",
+ "in": "body",
+ "required": true,
+ "schema": {
+ "$ref": "#/definitions/request.SendProcessParams"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "鎴愬姛",
+ "schema": {
+ "allOf": [
+ {
+ "$ref": "#/definitions/contextx.Response"
+ },
+ {
+ "type": "object",
+ "properties": {
+ "data": {
+ "$ref": "#/definitions/response.ProductProgress"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ }
+ },
"/v1/plc/setProductNumber": {
"post": {
"produces": [
diff --git a/docs/swagger.json b/docs/swagger.json
index 47b9642..d7906cb 100644
--- a/docs/swagger.json
+++ b/docs/swagger.json
@@ -182,6 +182,48 @@
}
}
},
+ "/v1/plc/productProgressRealTime": {
+ "post": {
+ "produces": [
+ "application/json"
+ ],
+ "tags": [
+ "鐢熶骇鏁伴噺"
+ ],
+ "summary": "瀹炴椂鑾峰彇鐢熶骇杩涘害",
+ "parameters": [
+ {
+ "description": "鏌ヨ鍙傛暟",
+ "name": "object",
+ "in": "body",
+ "required": true,
+ "schema": {
+ "$ref": "#/definitions/request.SendProcessParams"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "鎴愬姛",
+ "schema": {
+ "allOf": [
+ {
+ "$ref": "#/definitions/contextx.Response"
+ },
+ {
+ "type": "object",
+ "properties": {
+ "data": {
+ "$ref": "#/definitions/response.ProductProgress"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ }
+ },
"/v1/plc/setProductNumber": {
"post": {
"produces": [
diff --git a/docs/swagger.yaml b/docs/swagger.yaml
index 4f651d1..7074af1 100644
--- a/docs/swagger.yaml
+++ b/docs/swagger.yaml
@@ -488,6 +488,30 @@
summary: 鑾峰彇鐢熶骇杩涘害
tags:
- 鐢熶骇鏁伴噺
+ /v1/plc/productProgressRealTime:
+ post:
+ parameters:
+ - description: 鏌ヨ鍙傛暟
+ in: body
+ name: object
+ required: true
+ schema:
+ $ref: '#/definitions/request.SendProcessParams'
+ produces:
+ - application/json
+ responses:
+ "200":
+ description: 鎴愬姛
+ schema:
+ allOf:
+ - $ref: '#/definitions/contextx.Response'
+ - properties:
+ data:
+ $ref: '#/definitions/response.ProductProgress'
+ type: object
+ summary: 瀹炴椂鑾峰彇鐢熶骇杩涘害
+ tags:
+ - 鐢熶骇鏁伴噺
/v1/plc/setProductNumber:
post:
produces:
diff --git a/router/index.go b/router/index.go
index 7740bee..3c71534 100644
--- a/router/index.go
+++ b/router/index.go
@@ -54,8 +54,9 @@
plcApi := new(v1.PlcApi)
plcGroup := v1Group.Group("plc")
{
- plcGroup.POST("productProgress", plcApi.GetProductProgress) // 鑾峰彇缃戠粶閰嶇疆
- plcGroup.POST("setProductNumber", plcApi.SetProductNumber) // 涓嬪彂鐢熶骇鎬婚噺
+ plcGroup.POST("productProgress", plcApi.GetProductProgress) // 鑾峰彇鐢熶骇杩涘害
+ plcGroup.POST("productProgressRealTime", plcApi.GetProductProgressRealTime) // 瀹炴椂鑾峰彇鐢熶骇杩涘害
+ plcGroup.POST("setProductNumber", plcApi.SetProductNumber) // 涓嬪彂鐢熶骇鎬婚噺
}
InitPlcBrandRouter(v1Group)
--
Gitblit v1.8.0