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