From 0457f96716de8125560f332fcf718100b9f754eb Mon Sep 17 00:00:00 2001
From: zhangqian <zhangqian@123.com>
Date: 星期三, 13 九月 2023 21:03:56 +0800
Subject: [PATCH] 适应性改动

---
 api/v1/plc.go            |    4 
 service/task.go          |   45 ++++++++++++--
 nsq/msg_handler.go       |    2 
 model/common/common.go   |    7 +-
 conf/apsClient.json      |    2 
 model/response/common.go |    7 +
 router/index.go          |    4 
 docs/swagger.yaml        |   12 +++
 docs/docs.go             |   16 +++++
 api/v1/task.go           |    6 -
 docs/swagger.json        |   16 +++++
 11 files changed, 93 insertions(+), 28 deletions(-)

diff --git a/api/v1/plc.go b/api/v1/plc.go
index 907e8d8..7fdf89d 100644
--- a/api/v1/plc.go
+++ b/api/v1/plc.go
@@ -19,9 +19,9 @@
 // @Produce   application/json
 // @Param     object  body    request.SendProcessParams true  "鏌ヨ鍙傛暟"
 // @Success   200   {object}  contextx.Response{data=response.ProductProgress}  "鎴愬姛"
-// @Router    /v1/plc/productProgress [get]
+// @Router    /v1/plc/productProgress [post]
 func (slf *PlcApi) GetProductProgress(c *gin.Context) {
-	var params request.SendProcessParams
+	var params request.GetProductProgress
 	ctx, ok := contextx.NewContext(c, &params)
 	if !ok {
 		return
diff --git a/api/v1/task.go b/api/v1/task.go
index ca697e9..7eb2142 100644
--- a/api/v1/task.go
+++ b/api/v1/task.go
@@ -65,14 +65,10 @@
 		params.PageSize = 1
 	}
 
-	taskDataList, count, code := service.NewTaskService().GetTask(params.Page, params.PageSize)
+	taskResponse, code := service.NewTaskService().GetTask(params.Page, params.PageSize)
 	if code != ecode.OK {
 		ctx.Fail(code)
 		return
-	}
-	taskResponse := &response.TaskResponse{
-		Tasks:     taskDataList,
-		TaskCount: count,
 	}
 	ctx.OkWithDetailed(taskResponse)
 }
diff --git a/conf/apsClient.json b/conf/apsClient.json
index b22d9a1..b1188f5 100644
--- a/conf/apsClient.json
+++ b/conf/apsClient.json
@@ -2,7 +2,7 @@
   "system": {
     "env": "develop",
     "port": 8003,
-    "deviceId": "111",
+    "deviceId": "qwwt",
     "netSetShellPath": "/data/network/",
     "netUpShellName": "up.sh",
     "netDownShellName": "down.sh"
diff --git a/docs/docs.go b/docs/docs.go
index 307d0b1..ab10e06 100644
--- a/docs/docs.go
+++ b/docs/docs.go
@@ -153,7 +153,7 @@
             }
         },
         "/v1/plc/productProgress": {
-            "get": {
+            "post": {
                 "produces": [
                     "application/json"
                 ],
@@ -551,6 +551,13 @@
         "common.ProductProcedure": {
             "type": "object",
             "properties": {
+                "allProcedureNames": {
+                    "description": "鎵�灞炲伐鍗曞伐搴忓垪琛�",
+                    "type": "array",
+                    "items": {
+                        "type": "string"
+                    }
+                },
                 "deviceId": {
                     "type": "string"
                 },
@@ -1050,6 +1057,13 @@
                 },
                 "procedure": {
                     "$ref": "#/definitions/model.Procedures"
+                },
+                "workers": {
+                    "description": "浜哄憳鍒楄〃",
+                    "type": "array",
+                    "items": {
+                        "$ref": "#/definitions/common.ProcedureWorker"
+                    }
                 }
             }
         }
diff --git a/docs/swagger.json b/docs/swagger.json
index cc4599b..a946339 100644
--- a/docs/swagger.json
+++ b/docs/swagger.json
@@ -141,7 +141,7 @@
             }
         },
         "/v1/plc/productProgress": {
-            "get": {
+            "post": {
                 "produces": [
                     "application/json"
                 ],
@@ -539,6 +539,13 @@
         "common.ProductProcedure": {
             "type": "object",
             "properties": {
+                "allProcedureNames": {
+                    "description": "鎵�灞炲伐鍗曞伐搴忓垪琛�",
+                    "type": "array",
+                    "items": {
+                        "type": "string"
+                    }
+                },
                 "deviceId": {
                     "type": "string"
                 },
@@ -1038,6 +1045,13 @@
                 },
                 "procedure": {
                     "$ref": "#/definitions/model.Procedures"
+                },
+                "workers": {
+                    "description": "浜哄憳鍒楄〃",
+                    "type": "array",
+                    "items": {
+                        "$ref": "#/definitions/common.ProcedureWorker"
+                    }
                 }
             }
         }
diff --git a/docs/swagger.yaml b/docs/swagger.yaml
index ba90e7f..a6908c8 100644
--- a/docs/swagger.yaml
+++ b/docs/swagger.yaml
@@ -25,6 +25,11 @@
     type: object
   common.ProductProcedure:
     properties:
+      allProcedureNames:
+        description: 鎵�灞炲伐鍗曞伐搴忓垪琛�
+        items:
+          type: string
+        type: array
       deviceId:
         type: string
       deviceName:
@@ -367,6 +372,11 @@
         type: integer
       procedure:
         $ref: '#/definitions/model.Procedures'
+      workers:
+        description: 浜哄憳鍒楄〃
+        items:
+          $ref: '#/definitions/common.ProcedureWorker'
+        type: array
     type: object
 info:
   contact: {}
@@ -451,7 +461,7 @@
       tags:
       - Config
   /v1/plc/productProgress:
-    get:
+    post:
       parameters:
       - description: 鏌ヨ鍙傛暟
         in: body
diff --git a/model/common/common.go b/model/common/common.go
index 31ece9c..8a8783a 100644
--- a/model/common/common.go
+++ b/model/common/common.go
@@ -44,9 +44,10 @@
 		StartTime         int64                `gorm:"comment:璁″垝寮�濮嬫椂闂�" json:"startTime"`
 		EndTime           int64                `gorm:"comment:璁″垝缁撴潫鏃堕棿" json:"endTime"`
 		WorkHours         decimal.Decimal      `gorm:"type:decimal(35,18);comment:宸ユ椂" json:"workHours"`
-		InputMaterials    []*ProcedureMaterial `json:"inputMaterials"`  // 杈撳叆鐗╂枡鍒楄〃
-		OutputMaterials   []*ProcedureMaterial `json:"outputMaterials"` // 杈撳嚭鐗╂枡鍒楄〃
-		Workers           []*ProcedureWorker   `json:"workers"`         // 浜哄憳鍒楄〃
+		InputMaterials    []*ProcedureMaterial `json:"inputMaterials"`    // 杈撳叆鐗╂枡鍒楄〃
+		OutputMaterials   []*ProcedureMaterial `json:"outputMaterials"`   // 杈撳嚭鐗╂枡鍒楄〃
+		Workers           []*ProcedureWorker   `json:"workers"`           // 浜哄憳鍒楄〃
+		AllProcedureNames []string             `json:"allProcedureNames"` // 鎵�灞炲伐鍗曞伐搴忓垪琛�
 	}
 
 	DeliverScheduleTask struct {
diff --git a/model/response/common.go b/model/response/common.go
index 269909f..39b65be 100644
--- a/model/response/common.go
+++ b/model/response/common.go
@@ -2,6 +2,7 @@
 
 import (
 	"apsClient/model"
+	"apsClient/model/common"
 )
 
 type PageResult struct {
@@ -19,8 +20,9 @@
 }
 
 type TaskData struct {
-	Order                 *model.Order
-	Procedure             *model.Procedures
+	Order     *model.Order
+	Procedure *model.Procedures
+
 	Position              int //褰撳墠浠诲姟鍦ㄨ澶囩鍑犱釜浣嶇疆
 	AllProcedures         []string
 	CurrentProcedureIndex int
@@ -29,6 +31,7 @@
 type TaskResponse struct {
 	Tasks     []*TaskData
 	TaskCount int64
+	Workers   []*common.ProcedureWorker `json:"workers"` // 浜哄憳鍒楄〃
 }
 
 type Config struct {
diff --git a/nsq/msg_handler.go b/nsq/msg_handler.go
index 180f1b5..36b5b9a 100644
--- a/nsq/msg_handler.go
+++ b/nsq/msg_handler.go
@@ -49,7 +49,6 @@
 		}
 
 		procedureRecords := make([]*model.Procedures, 0, len(task.Procedures))
-		procedureIds := make([]string, 0, len(task.Procedures))
 		for _, procedure := range task.Procedures {
 			procedureRecord := model.Procedures{
 				WorkOrderID:    task.WorkOrder.WorkOrderID,
@@ -67,7 +66,6 @@
 			}
 			procedureRecord.ProcedureData = string(procedureData)
 			procedureRecords = append(procedureRecords, &procedureRecord)
-			procedureIds = append(procedureIds, procedure.ProcedureID)
 		}
 
 		var orderRecord model.Order
diff --git a/router/index.go b/router/index.go
index 2368213..7740bee 100644
--- a/router/index.go
+++ b/router/index.go
@@ -54,8 +54,8 @@
 	plcApi := new(v1.PlcApi)
 	plcGroup := v1Group.Group("plc")
 	{
-		plcGroup.GET("productProgress", plcApi.GetProductProgress) // 鑾峰彇缃戠粶閰嶇疆
-		plcGroup.POST("setProductNumber", plcApi.SetProductNumber) // 涓嬪彂鐢熶骇鎬婚噺
+		plcGroup.POST("productProgress", plcApi.GetProductProgress) // 鑾峰彇缃戠粶閰嶇疆
+		plcGroup.POST("setProductNumber", plcApi.SetProductNumber)  // 涓嬪彂鐢熶骇鎬婚噺
 	}
 
 	InitPlcBrandRouter(v1Group)
diff --git a/service/task.go b/service/task.go
index 16bfd92..372c164 100644
--- a/service/task.go
+++ b/service/task.go
@@ -24,7 +24,10 @@
 }
 
 // GetTask 鑾峰彇浠诲姟锛屾湭瀹屾垚鐨勫紑濮嬫椂闂存渶鏃╃殑浠诲姟
-func (slf TaskService) GetTask(page, pageSize int) (taskDataList []*response.TaskData, count int64, code int) {
+func (slf TaskService) GetTask(page, pageSize int) (taskResp *response.TaskResponse, code int) {
+	var taskList []*response.TaskData
+	var count int64
+	var workers []*common.ProcedureWorker
 	nowTs := time.Now().Unix()
 	var (
 		err          error
@@ -39,17 +42,17 @@
 		SetPage(page, pageSize).
 		FindNotTotal()
 	if err != nil {
-		return nil, 0, ecode.DBErr
+		return nil, ecode.DBErr
 	}
 	count, err = model.NewProceduresSearch(nil).
 		SetDeviceId(conf.Conf.System.DeviceId).
 		SetStatusNot(model.ProcedureStatusFinished).
 		Count()
 	if err != nil {
-		return nil, 0, ecode.DBErr
+		return nil, ecode.DBErr
 	}
 	if len(procedures) == 0 {
-		return nil, 0, ecode.OK
+		return nil, ecode.OK
 	}
 
 	for _, procedure := range procedures {
@@ -57,7 +60,7 @@
 	}
 	orders, err = model.NewOrderSearch(nil).SetWorkOrderIds(workOrderIds).FindNotTotal() //鐢卞伐搴忓弽鎺ㄥ伐鍗�
 	if err != nil {
-		return nil, 0, ecode.DBErr
+		return nil, ecode.DBErr
 	}
 
 	orderMap := make(map[string]*model.Order, len(workOrderIds))
@@ -68,13 +71,39 @@
 		taskData := response.TaskData{
 			Order:                 orderMap[procedure.WorkOrderID],
 			Procedure:             procedure,
-			AllProcedures:         nil,
+			AllProcedures:         procedure.ProceduresInfo.AllProcedureNames,
 			CurrentProcedureIndex: 0,
 			Position:              procedure.Position,
 		}
-		taskDataList = append(taskDataList, &taskData)
+		index := 0
+		for _, name := range procedure.ProceduresInfo.AllProcedureNames {
+			if name == procedure.ProceduresInfo.ProcedureName {
+				break
+			}
+			index++
+		}
+		taskData.CurrentProcedureIndex = index
+		taskList = append(taskList, &taskData)
+		workers = append(workers, procedure.ProceduresInfo.Workers...)
 	}
-	return taskDataList, count, ecode.OK
+	taskResp = &response.TaskResponse{
+		Tasks:     taskList,
+		TaskCount: count,
+		Workers:   slf.WorkerDistinct(workers),
+	}
+	return taskResp, ecode.OK
+}
+
+func (slf TaskService) WorkerDistinct(workers []*common.ProcedureWorker) (NoRepeatedWorkers []*common.ProcedureWorker) {
+	exists := make(map[string]bool, 0)
+	for _, worker := range workers {
+		key := fmt.Sprintf("%v%v", worker.WorkerID, worker.StartTime)
+		if !exists[key] {
+			NoRepeatedWorkers = append(NoRepeatedWorkers, worker)
+			exists[key] = true
+		}
+	}
+	return NoRepeatedWorkers
 }
 
 func (slf TaskService) GetProcedureById(id int) (*model.Procedures, int) {

--
Gitblit v1.8.0