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, &params)
+	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