From fcc5eaccffbbd0980077cf3fc4707566546f879a Mon Sep 17 00:00:00 2001
From: zhangqian <zhangqian@123.com>
Date: 星期四, 17 八月 2023 17:31:18 +0800
Subject: [PATCH] 增加plc pkg, 增加获取任务,完成任务,开始任务接口
---
service/task.go | 69 ++
nsq/msg_handler.go | 55 +
.gitignore | 3
logs/apsClient.info.log | 133 ++++
model/procedures.go | 80 ++
go.mod | 1
docs/swagger.yaml | 146 +++-
logs/apsClient.err.log | 11
docs/docs.go | 198 ++++-
api/v1/task.go | 111 +++
docs/swagger.json | 198 ++++-
/dev/null | 260 --------
pkg/plc/plc4x.go | 127 ++++
model/order.go | 268 +++++++++
model/index.go | 2
conf/config.go | 24
conf/apsClient.json | 16
model/response/common.go | 9
router/index.go | 11
19 files changed, 1,188 insertions(+), 534 deletions(-)
diff --git a/.gitignore b/.gitignore
index 5f530a0..ca9b9ad 100644
--- a/.gitignore
+++ b/.gitignore
@@ -22,4 +22,5 @@
*.exe
*.test
apsClient
-aps.db
\ No newline at end of file
+aps.db
+.idea
\ No newline at end of file
diff --git a/api/v1/notice.go b/api/v1/notice.go
deleted file mode 100644
index 53b7a01..0000000
--- a/api/v1/notice.go
+++ /dev/null
@@ -1,44 +0,0 @@
-package v1
-
-import (
- "apsClient/model/request"
- _ "apsClient/model/response"
- "apsClient/pkg/contextx"
- "apsClient/pkg/logx"
- "apsClient/pkg/safe"
- "apsClient/service"
- "github.com/gin-gonic/gin"
-)
-
-type NoticeApi struct{}
-
-// TaskStart
-// @Tags Base
-// @Summary 浠诲姟寮�鍚�氱煡
-// @Produce application/json
-// @Param object body request.TaskInfo true "鏌ヨ鍙傛暟"
-// @Success 200 {object} contextx.Response{} "鎴愬姛"
-// @Router /v1/notice/task/start [post]
-func (slf *NoticeApi) TaskStart(c *gin.Context) {
- var params request.TaskInfo
- ctx, ok := contextx.NewContext(c, ¶ms)
- if !ok {
- return
- }
- safe.Go(func() {
- resp, err := service.ProcessModel{}.GetProcessModel(service.GetProcessModelParams{
- WorkOrder: params.WorkOrder,
- OrderId: params.OrderId,
- Product: params.Product,
- Procedure: params.Procedure,
- Device: params.Device,
- })
- if err != nil {
- logx.Errorf("TaskStart Notice GetProcessModel error: %v", err.Error())
- return
- }
- logx.Infof("TaskStart Notice GetProcessModel: %+v", resp)
- })
-
- ctx.Ok()
-}
diff --git a/api/v1/task.go b/api/v1/task.go
index 196ee69..cc746f2 100644
--- a/api/v1/task.go
+++ b/api/v1/task.go
@@ -1,47 +1,114 @@
package v1
import (
- "apsClient/model/request"
+ "apsClient/model"
_ "apsClient/model/response"
"apsClient/pkg/contextx"
+ "apsClient/pkg/convertx"
"apsClient/pkg/ecode"
+ "apsClient/pkg/logx"
"apsClient/service"
- "encoding/json"
"github.com/gin-gonic/gin"
)
type TaskApi struct{}
-// TaskList
-// @Tags Base
-// @Summary 浠诲姟寮�鍚�氱煡
+// TaskGet
+// @Tags Task
+// @Summary 鑾峰彇浠诲姟
// @Produce application/json
-// @Param object query request.TaskList true "鏌ヨ鍙傛暟"
-// @Success 200 {object} contextx.Response{data=[]model.ScheduleTask} "鎴愬姛"
-// @Router /v1/task/list [get]
-func (slf *TaskApi) TaskList(c *gin.Context) {
- var params request.TaskList
- ctx, ok := contextx.NewContext(c, ¶ms)
+// @Success 200 {object} contextx.Response{data=response.TaskData} "鎴愬姛"
+// @Router /v1/task/get [get]
+func (slf *TaskApi) TaskGet(c *gin.Context) {
+ ctx, ok := contextx.NewContext(c, nil)
if !ok {
return
}
- taskList, total, code := service.NewTaskService().GetTaskList(params.Page, params.PageSize)
+ taskData, code := service.NewTaskService().GetTask()
if code != ecode.OK {
ctx.Fail(code)
return
}
+ ctx.OkWithDetailed(taskData)
+}
- for _, task := range taskList {
- if task.Data != "" {
- err := json.Unmarshal([]byte(task.Data), &task.TaskInfo)
- if err != nil {
- ctx.Fail(ecode.UnknownErr)
- return
- }
- }
-
+// TaskStart
+// @Tags Base
+// @Summary 浠诲姟寮�濮�
+// @Produce application/json
+// @Param id path int true "宸ュ簭id"
+// @Success 200 {object} contextx.Response{service.GetProcessModel} "鎴愬姛"
+// @Router /v1/task/start/{id} [get]
+func (slf *TaskApi) TaskStart(c *gin.Context) {
+ ctx, ok := contextx.NewContext(c, nil)
+ if !ok {
+ return
+ }
+ idx := c.Param("id")
+ if idx == "" {
+ ctx.Fail(ecode.ParamsErr)
+ return
+ }
+ id := convertx.Atoi(idx)
+ procedure, code := service.NewTaskService().GetProcedureById(id)
+ if code != ecode.OK {
+ ctx.Fail(code)
+ return
+ }
+ order, err := service.NewTaskService().GetOrderByOrderId(procedure.OrderID)
+ if err != nil {
+ ctx.Fail(ecode.UnknownErr)
+ return
}
- ctx.ResultList(taskList, total)
+ params := service.GetProcessModelParams{
+ WorkOrder: "",
+ OrderId: procedure.OrderID,
+ Product: order.ProductName,
+ Procedure: procedure.ProceduresInfo.ProcedureName,
+ Device: procedure.ProceduresInfo.DeviceID,
+ }
+
+ resp, err := service.ProcessModel{}.GetProcessModel(params)
+
+ if err != nil {
+ logx.Errorf("TaskStart Notice GetProcessModel error: %v", err.Error())
+ ctx.Fail(ecode.UnknownErr)
+ return
+ }
+ logx.Infof("TaskStart Notice GetProcessModel: %+v", resp)
+ ctx.OkWithDetailed(resp)
+}
+
+// TaskFinish
+// @Tags Base
+// @Summary 浠诲姟缁撴潫
+// @Produce application/json
+// @Param id path int true "宸ュ簭id"
+// @Success 200 {object} contextx.Response{service.GetProcessModel} "鎴愬姛"
+// @Router /v1/task/finish/{id} [put]
+func (slf *TaskApi) TaskFinish(c *gin.Context) {
+ ctx, ok := contextx.NewContext(c, nil)
+ if !ok {
+ return
+ }
+ idx := c.Param("id")
+ if idx == "" {
+ ctx.Fail(ecode.ParamsErr)
+ return
+ }
+ id := convertx.Atoi(idx)
+ _, code := service.NewTaskService().GetProcedureById(id)
+ if code != ecode.OK {
+ ctx.Fail(code)
+ return
+ }
+ err := service.NewTaskService().UpdateProcedureStatus(id, model.ProcedureStatusFinished)
+ if err != nil {
+ logx.Errorf("UpdateProcedureStatus err: %v", err.Error())
+ ctx.Fail(ecode.UnknownErr)
+ return
+ }
+ ctx.Ok()
}
diff --git a/conf/apsClient.json b/conf/apsClient.json
index aaaf003..2ed7d69 100644
--- a/conf/apsClient.json
+++ b/conf/apsClient.json
@@ -7,7 +7,8 @@
"LimitCountIP": 15000,
"LimitTimeIP": 3600,
"RouterPrefix": "api",
- "SudoPassword": "basic2021"
+ "SudoPassword": "basic2021",
+ "deviceId": "MA-JWW-1"
},
"log": {
"path": "./logs/apsClient.log",
@@ -34,19 +35,6 @@
"port": 6379,
"password": "123456",
"db": 0
- },
- "captcha": {
- "keyLong": 6,
- "imgWidth": 240,
- "imgHeight": 80,
- "openCaptcha": 0,
- "openCaptchaTimeout": 3600
- },
- "jwt": {
- "SigningKey": "327a9457-899a-481e-8b30-58cc97e5b808",
- "ExpiresTime": "7d",
- "BufferTime": "1d",
- "Issuer": "qmPlus"
},
"etcd": {
"endpoints": [
diff --git a/conf/config.go b/conf/config.go
index 60569a2..5af1d43 100644
--- a/conf/config.go
+++ b/conf/config.go
@@ -24,21 +24,6 @@
)
type (
- Captcha struct {
- KeyLong int // 楠岃瘉鐮侀暱搴�
- ImgWidth int // 楠岃瘉鐮佸搴�
- ImgHeight int // 楠岃瘉鐮侀珮搴�
- OpenCaptcha int // 闃茬垎鐮撮獙璇佺爜寮�鍚鏁帮紝0浠h〃姣忔鐧诲綍閮介渶瑕侀獙璇佺爜锛屽叾浠栨暟瀛椾唬琛ㄩ敊璇瘑鐮佹鏁帮紝濡�3浠h〃閿欒涓夋鍚庡嚭鐜伴獙璇佺爜
- OpenCaptchaTimeOut int // 闃茬垎鐮撮獙璇佺爜瓒呮椂鏃堕棿锛屽崟浣嶏細s(绉�)
- }
-
- JWT struct {
- SigningKey string // jwt绛惧悕
- ExpiresTime string // 杩囨湡鏃堕棿
- BufferTime string // 缂撳啿鏃堕棿
- Issuer string // 绛惧彂鑰�
- }
-
System struct {
Env string // 鐜鍊� develop test public
Port int // 绔彛
@@ -49,6 +34,7 @@
LimitTimeIP int
RouterPrefix string // 璺敱鍓嶇紑
SudoPassword string // sudo瀵嗙爜
+ DeviceId string //璁惧id
}
Etcd struct {
@@ -102,12 +88,6 @@
// redis閰嶇疆
Redis redisx.Conf
-
- // 楠岃瘉鐮�
- Captcha Captcha
-
- // JWT閰嶇疆
- JWT JWT
// etcd閰嶇疆
Etcd Etcd
@@ -169,8 +149,6 @@
log.Printf(" System: %+v", Conf.System)
log.Printf(" Log: %+v", Conf.Log)
log.Printf(" Mysql: %+v", Conf.Mysql)
- log.Printf(" Captcha: %+v", Conf.Captcha)
- log.Printf(" JWT: %+v", Conf.JWT)
log.Printf(" etcd: %+v", Conf.Etcd)
log.Printf(" rancher: %+v", Conf.Rancher)
log.Printf(" k8s: %+v", Conf.K8s)
diff --git a/docs/docs.go b/docs/docs.go
index be67e6e..91eb01b 100644
--- a/docs/docs.go
+++ b/docs/docs.go
@@ -16,24 +16,22 @@
"host": "{{.Host}}",
"basePath": "{{.BasePath}}",
"paths": {
- "/v1/notice/task/start": {
- "post": {
+ "/v1/task/finish/{id}": {
+ "put": {
"produces": [
"application/json"
],
"tags": [
"Base"
],
- "summary": "浠诲姟寮�鍚�氱煡",
+ "summary": "浠诲姟缁撴潫",
"parameters": [
{
- "description": "鏌ヨ鍙傛暟",
- "name": "object",
- "in": "body",
- "required": true,
- "schema": {
- "$ref": "#/definitions/request.TaskInfo"
- }
+ "type": "integer",
+ "description": "宸ュ簭id",
+ "name": "id",
+ "in": "path",
+ "required": true
}
],
"responses": {
@@ -46,29 +44,15 @@
}
}
},
- "/v1/task/list": {
+ "/v1/task/get": {
"get": {
"produces": [
"application/json"
],
"tags": [
- "Base"
+ "Task"
],
- "summary": "浠诲姟寮�鍚�氱煡",
- "parameters": [
- {
- "type": "integer",
- "description": "椤电爜",
- "name": "page",
- "in": "query"
- },
- {
- "type": "integer",
- "description": "姣忛〉澶у皬",
- "name": "pageSize",
- "in": "query"
- }
- ],
+ "summary": "鑾峰彇浠诲姟",
"responses": {
"200": {
"description": "鎴愬姛",
@@ -81,14 +65,39 @@
"type": "object",
"properties": {
"data": {
- "type": "array",
- "items": {
- "$ref": "#/definitions/model.ScheduleTask"
- }
+ "$ref": "#/definitions/response.TaskData"
}
}
}
]
+ }
+ }
+ }
+ }
+ },
+ "/v1/task/start/{id}": {
+ "get": {
+ "produces": [
+ "application/json"
+ ],
+ "tags": [
+ "Base"
+ ],
+ "summary": "浠诲姟寮�濮�",
+ "parameters": [
+ {
+ "type": "integer",
+ "description": "宸ュ簭id",
+ "name": "id",
+ "in": "path",
+ "required": true
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "鎴愬姛",
+ "schema": {
+ "$ref": "#/definitions/contextx.Response"
}
}
}
@@ -108,33 +117,35 @@
}
}
},
- "model.ScheduleTask": {
+ "model.Order": {
"type": "object",
"properties": {
"amount": {
- "description": "Parameter string ` + "`" + `json:\"parameter\"` + "`" + ` //浜у搧鍚嶇О\nCustomer string ` + "`" + `json:\"customer\"` + "`" + `\nDeliverDate string ` + "`" + `json:\"deliverDate\"` + "`" + `\nOrderAttr string ` + "`" + `json:\"orderAttr\"` + "`" + `",
"type": "number"
},
- "data": {
- "description": "鎺掔▼浠诲姟json涓�",
+ "customer": {
+ "type": "string"
+ },
+ "deliverDate": {
"type": "string"
},
"endTime": {
"type": "integer"
},
- "id": {
- "type": "integer"
+ "orderAttr": {
+ "description": "璁㈠崟灞炴�ф嫾鎺ョ殑瀛楃涓诧紝鍗宠揣鐗╂弿杩�",
+ "type": "string"
},
"orderId": {
- "description": "璁㈠崟id",
+ "type": "string"
+ },
+ "parameter": {
"type": "string"
},
"productId": {
- "description": "璁㈠崟id",
"type": "string"
},
"productName": {
- "description": "浜у搧鍚嶇О",
"type": "string"
},
"startTime": {
@@ -145,28 +156,105 @@
}
}
},
- "request.TaskInfo": {
+ "model.Procedures": {
"type": "object",
"properties": {
- "device": {
- "description": "璁惧",
- "type": "string"
- },
- "orderId": {
- "description": "璁㈠崟鍙�",
- "type": "string"
- },
- "password": {
- "description": "浜у搧",
- "type": "string"
+ "id": {
+ "type": "integer"
},
"procedure": {
- "description": "宸ュ簭",
+ "description": "request.ProductProcedure 瀵硅薄",
+ "allOf": [
+ {
+ "$ref": "#/definitions/request.ProductProcedure"
+ }
+ ]
+ }
+ }
+ },
+ "request.ProcedureMaterial": {
+ "type": "object",
+ "properties": {
+ "amount": {
+ "type": "number"
+ },
+ "materialId": {
"type": "string"
},
- "workOrder": {
- "description": "宸ュ崟",
+ "materialName": {
"type": "string"
+ },
+ "unit": {
+ "type": "string"
+ }
+ }
+ },
+ "request.ProcedureWorker": {
+ "type": "object",
+ "properties": {
+ "phoneNum": {
+ "type": "string"
+ },
+ "workerId": {
+ "type": "string"
+ },
+ "workerName": {
+ "type": "string"
+ }
+ }
+ },
+ "request.ProductProcedure": {
+ "type": "object",
+ "properties": {
+ "deviceId": {
+ "type": "string"
+ },
+ "endTime": {
+ "type": "integer"
+ },
+ "inputMaterials": {
+ "description": "杈撳叆鐗╂枡鍒楄〃",
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/request.ProcedureMaterial"
+ }
+ },
+ "outputMaterials": {
+ "description": "杈撳嚭鐗╂枡鍒楄〃",
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/request.ProcedureMaterial"
+ }
+ },
+ "procedureId": {
+ "type": "string"
+ },
+ "procedureName": {
+ "type": "string"
+ },
+ "startTime": {
+ "type": "integer"
+ },
+ "workHours": {
+ "type": "number"
+ },
+ "workers": {
+ "description": "浜哄憳鍒楄〃",
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/request.ProcedureWorker"
+ }
+ }
+ }
+ },
+ "response.TaskData": {
+ "type": "object",
+ "properties": {
+ "order": {
+ "$ref": "#/definitions/model.Order"
+ },
+ "procedure": {
+ "$ref": "#/definitions/model.Procedures"
}
}
}
diff --git a/docs/swagger.json b/docs/swagger.json
index bba27ba..0fa3a0e 100644
--- a/docs/swagger.json
+++ b/docs/swagger.json
@@ -4,24 +4,22 @@
"contact": {}
},
"paths": {
- "/v1/notice/task/start": {
- "post": {
+ "/v1/task/finish/{id}": {
+ "put": {
"produces": [
"application/json"
],
"tags": [
"Base"
],
- "summary": "浠诲姟寮�鍚�氱煡",
+ "summary": "浠诲姟缁撴潫",
"parameters": [
{
- "description": "鏌ヨ鍙傛暟",
- "name": "object",
- "in": "body",
- "required": true,
- "schema": {
- "$ref": "#/definitions/request.TaskInfo"
- }
+ "type": "integer",
+ "description": "宸ュ簭id",
+ "name": "id",
+ "in": "path",
+ "required": true
}
],
"responses": {
@@ -34,29 +32,15 @@
}
}
},
- "/v1/task/list": {
+ "/v1/task/get": {
"get": {
"produces": [
"application/json"
],
"tags": [
- "Base"
+ "Task"
],
- "summary": "浠诲姟寮�鍚�氱煡",
- "parameters": [
- {
- "type": "integer",
- "description": "椤电爜",
- "name": "page",
- "in": "query"
- },
- {
- "type": "integer",
- "description": "姣忛〉澶у皬",
- "name": "pageSize",
- "in": "query"
- }
- ],
+ "summary": "鑾峰彇浠诲姟",
"responses": {
"200": {
"description": "鎴愬姛",
@@ -69,14 +53,39 @@
"type": "object",
"properties": {
"data": {
- "type": "array",
- "items": {
- "$ref": "#/definitions/model.ScheduleTask"
- }
+ "$ref": "#/definitions/response.TaskData"
}
}
}
]
+ }
+ }
+ }
+ }
+ },
+ "/v1/task/start/{id}": {
+ "get": {
+ "produces": [
+ "application/json"
+ ],
+ "tags": [
+ "Base"
+ ],
+ "summary": "浠诲姟寮�濮�",
+ "parameters": [
+ {
+ "type": "integer",
+ "description": "宸ュ簭id",
+ "name": "id",
+ "in": "path",
+ "required": true
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "鎴愬姛",
+ "schema": {
+ "$ref": "#/definitions/contextx.Response"
}
}
}
@@ -96,33 +105,35 @@
}
}
},
- "model.ScheduleTask": {
+ "model.Order": {
"type": "object",
"properties": {
"amount": {
- "description": "Parameter string `json:\"parameter\"` //浜у搧鍚嶇О\nCustomer string `json:\"customer\"`\nDeliverDate string `json:\"deliverDate\"`\nOrderAttr string `json:\"orderAttr\"`",
"type": "number"
},
- "data": {
- "description": "鎺掔▼浠诲姟json涓�",
+ "customer": {
+ "type": "string"
+ },
+ "deliverDate": {
"type": "string"
},
"endTime": {
"type": "integer"
},
- "id": {
- "type": "integer"
+ "orderAttr": {
+ "description": "璁㈠崟灞炴�ф嫾鎺ョ殑瀛楃涓诧紝鍗宠揣鐗╂弿杩�",
+ "type": "string"
},
"orderId": {
- "description": "璁㈠崟id",
+ "type": "string"
+ },
+ "parameter": {
"type": "string"
},
"productId": {
- "description": "璁㈠崟id",
"type": "string"
},
"productName": {
- "description": "浜у搧鍚嶇О",
"type": "string"
},
"startTime": {
@@ -133,28 +144,105 @@
}
}
},
- "request.TaskInfo": {
+ "model.Procedures": {
"type": "object",
"properties": {
- "device": {
- "description": "璁惧",
- "type": "string"
- },
- "orderId": {
- "description": "璁㈠崟鍙�",
- "type": "string"
- },
- "password": {
- "description": "浜у搧",
- "type": "string"
+ "id": {
+ "type": "integer"
},
"procedure": {
- "description": "宸ュ簭",
+ "description": "request.ProductProcedure 瀵硅薄",
+ "allOf": [
+ {
+ "$ref": "#/definitions/request.ProductProcedure"
+ }
+ ]
+ }
+ }
+ },
+ "request.ProcedureMaterial": {
+ "type": "object",
+ "properties": {
+ "amount": {
+ "type": "number"
+ },
+ "materialId": {
"type": "string"
},
- "workOrder": {
- "description": "宸ュ崟",
+ "materialName": {
"type": "string"
+ },
+ "unit": {
+ "type": "string"
+ }
+ }
+ },
+ "request.ProcedureWorker": {
+ "type": "object",
+ "properties": {
+ "phoneNum": {
+ "type": "string"
+ },
+ "workerId": {
+ "type": "string"
+ },
+ "workerName": {
+ "type": "string"
+ }
+ }
+ },
+ "request.ProductProcedure": {
+ "type": "object",
+ "properties": {
+ "deviceId": {
+ "type": "string"
+ },
+ "endTime": {
+ "type": "integer"
+ },
+ "inputMaterials": {
+ "description": "杈撳叆鐗╂枡鍒楄〃",
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/request.ProcedureMaterial"
+ }
+ },
+ "outputMaterials": {
+ "description": "杈撳嚭鐗╂枡鍒楄〃",
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/request.ProcedureMaterial"
+ }
+ },
+ "procedureId": {
+ "type": "string"
+ },
+ "procedureName": {
+ "type": "string"
+ },
+ "startTime": {
+ "type": "integer"
+ },
+ "workHours": {
+ "type": "number"
+ },
+ "workers": {
+ "description": "浜哄憳鍒楄〃",
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/request.ProcedureWorker"
+ }
+ }
+ }
+ },
+ "response.TaskData": {
+ "type": "object",
+ "properties": {
+ "order": {
+ "$ref": "#/definitions/model.Order"
+ },
+ "procedure": {
+ "$ref": "#/definitions/model.Procedures"
}
}
}
diff --git a/docs/swagger.yaml b/docs/swagger.yaml
index d7c6fa3..fa6eed7 100644
--- a/docs/swagger.yaml
+++ b/docs/swagger.yaml
@@ -7,66 +7,109 @@
msg:
type: string
type: object
- model.ScheduleTask:
+ model.Order:
properties:
amount:
- description: |-
- Parameter string `json:"parameter"` //浜у搧鍚嶇О
- Customer string `json:"customer"`
- DeliverDate string `json:"deliverDate"`
- OrderAttr string `json:"orderAttr"`
type: number
- data:
- description: 鎺掔▼浠诲姟json涓�
+ customer:
+ type: string
+ deliverDate:
type: string
endTime:
type: integer
- id:
- type: integer
+ orderAttr:
+ description: 璁㈠崟灞炴�ф嫾鎺ョ殑瀛楃涓诧紝鍗宠揣鐗╂弿杩�
+ type: string
orderId:
- description: 璁㈠崟id
+ type: string
+ parameter:
type: string
productId:
- description: 璁㈠崟id
type: string
productName:
- description: 浜у搧鍚嶇О
type: string
startTime:
type: integer
unit:
type: string
type: object
- request.TaskInfo:
+ model.Procedures:
properties:
- device:
- description: 璁惧
- type: string
- orderId:
- description: 璁㈠崟鍙�
- type: string
- password:
- description: 浜у搧
- type: string
+ id:
+ type: integer
procedure:
- description: 宸ュ簭
+ allOf:
+ - $ref: '#/definitions/request.ProductProcedure'
+ description: request.ProductProcedure 瀵硅薄
+ type: object
+ request.ProcedureMaterial:
+ properties:
+ amount:
+ type: number
+ materialId:
type: string
- workOrder:
- description: 宸ュ崟
+ materialName:
type: string
+ unit:
+ type: string
+ type: object
+ request.ProcedureWorker:
+ properties:
+ phoneNum:
+ type: string
+ workerId:
+ type: string
+ workerName:
+ type: string
+ type: object
+ request.ProductProcedure:
+ properties:
+ deviceId:
+ type: string
+ endTime:
+ type: integer
+ inputMaterials:
+ description: 杈撳叆鐗╂枡鍒楄〃
+ items:
+ $ref: '#/definitions/request.ProcedureMaterial'
+ type: array
+ outputMaterials:
+ description: 杈撳嚭鐗╂枡鍒楄〃
+ items:
+ $ref: '#/definitions/request.ProcedureMaterial'
+ type: array
+ procedureId:
+ type: string
+ procedureName:
+ type: string
+ startTime:
+ type: integer
+ workHours:
+ type: number
+ workers:
+ description: 浜哄憳鍒楄〃
+ items:
+ $ref: '#/definitions/request.ProcedureWorker'
+ type: array
+ type: object
+ response.TaskData:
+ properties:
+ order:
+ $ref: '#/definitions/model.Order'
+ procedure:
+ $ref: '#/definitions/model.Procedures'
type: object
info:
contact: {}
paths:
- /v1/notice/task/start:
- post:
+ /v1/task/finish/{id}:
+ put:
parameters:
- - description: 鏌ヨ鍙傛暟
- in: body
- name: object
+ - description: 宸ュ簭id
+ in: path
+ name: id
required: true
- schema:
- $ref: '#/definitions/request.TaskInfo'
+ type: integer
produces:
- application/json
responses:
@@ -74,20 +117,11 @@
description: 鎴愬姛
schema:
$ref: '#/definitions/contextx.Response'
- summary: 浠诲姟寮�鍚�氱煡
+ summary: 浠诲姟缁撴潫
tags:
- Base
- /v1/task/list:
+ /v1/task/get:
get:
- parameters:
- - description: 椤电爜
- in: query
- name: page
- type: integer
- - description: 姣忛〉澶у皬
- in: query
- name: pageSize
- type: integer
produces:
- application/json
responses:
@@ -98,11 +132,27 @@
- $ref: '#/definitions/contextx.Response'
- properties:
data:
- items:
- $ref: '#/definitions/model.ScheduleTask'
- type: array
+ $ref: '#/definitions/response.TaskData'
type: object
- summary: 浠诲姟寮�鍚�氱煡
+ summary: 鑾峰彇浠诲姟
+ tags:
+ - Task
+ /v1/task/start/{id}:
+ get:
+ parameters:
+ - description: 宸ュ簭id
+ in: path
+ name: id
+ required: true
+ type: integer
+ produces:
+ - application/json
+ responses:
+ "200":
+ description: 鎴愬姛
+ schema:
+ $ref: '#/definitions/contextx.Response'
+ summary: 浠诲姟寮�濮�
tags:
- Base
swagger: "2.0"
diff --git a/go.mod b/go.mod
index dd75050..4e81ef2 100644
--- a/go.mod
+++ b/go.mod
@@ -26,6 +26,7 @@
gorm.io/driver/mysql v1.5.0
gorm.io/gorm v1.25.3
moul.io/zapgorm2 v1.3.0
+ github.com/apache/plc4x/plc4go v0.0.0-20230714120555-05ec3da87ebe
)
require (
diff --git a/logs/apsClient.err.log b/logs/apsClient.err.log
index e636088..9f6ddbd 100644
--- a/logs/apsClient.err.log
+++ b/logs/apsClient.err.log
@@ -51,3 +51,14 @@
[2023-08-15 19:53:30] [error] [gorm.io/gorm/migrator.Migrator.AutoMigrate:113] failed to parse value model.ScheduleTask{Model:gorm.Model{ID:0x0, CreatedAt:time.Date(1, time.January, 1, 0, 0, 0, 0, time.UTC), UpdatedAt:time.Date(1, time.January, 1, 0, 0, 0, 0, time.UTC), DeletedAt:gorm.DeletedAt{Time:time.Date(1, time.January, 1, 0, 0, 0, 0, time.UTC), Valid:false}}, Id:0, OrderId:"", ProductId:"", ProductName:"", Amount:decimal.Decimal{value:(*big.Int)(nil), exp:0}, Unit:"", StartTime:0, EndTime:0, Data:"", TaskInfo:request.DeliverScheduleTask{Order:request.Order{OrderID:"", ProductID:"", ProductName:"", Parameter:"", Customer:"", DeliverDate:"", OrderAttr:"", Amount:decimal.Decimal{value:(*big.Int)(nil), exp:0}, Unit:"", StartTime:0, EndTime:0}, Procedures:[]*request.ProductProcedure(nil)}}, got error invalid field found for struct apsClient/model/request.DeliverScheduleTask's field Order: define a valid foreign key for relations or implement the Valuer/Scanner interface
[2023-08-15 19:53:30] [error] [gorm.io/gorm/migrator.Migrator.CreateTable:207] failed to parse value model.ScheduleTask{Model:gorm.Model{ID:0x0, CreatedAt:time.Date(1, time.January, 1, 0, 0, 0, 0, time.UTC), UpdatedAt:time.Date(1, time.January, 1, 0, 0, 0, 0, time.UTC), DeletedAt:gorm.DeletedAt{Time:time.Date(1, time.January, 1, 0, 0, 0, 0, time.UTC), Valid:false}}, Id:0, OrderId:"", ProductId:"", ProductName:"", Amount:decimal.Decimal{value:(*big.Int)(nil), exp:0}, Unit:"", StartTime:0, EndTime:0, Data:"", TaskInfo:request.DeliverScheduleTask{Order:request.Order{OrderID:"", ProductID:"", ProductName:"", Parameter:"", Customer:"", DeliverDate:"", OrderAttr:"", Amount:decimal.Decimal{value:(*big.Int)(nil), exp:0}, Unit:"", StartTime:0, EndTime:0}, Procedures:[]*request.ProductProcedure(nil)}}, got error invalid field found for struct apsClient/model/request.DeliverScheduleTask's field Order: define a valid foreign key for relations or implement the Valuer/Scanner interface
[2023-08-15 19:53:30] [error] [main.main:23] model Init err:invalid field found for struct apsClient/model/request.DeliverScheduleTask's field Order: define a valid foreign key for relations or implement the Valuer/Scanner interface
+[2023-08-16 13:37:32] [error] [apsClient/model.Init:10] failed to initialize database, got error Binary was compiled with 'CGO_ENABLED=0', go-sqlite3 requires cgo to work. This is a stub
+[2023-08-16 13:37:32] [error] [main.main:23] model Init err:Binary was compiled with 'CGO_ENABLED=0', go-sqlite3 requires cgo to work. This is a stub
+[2023-08-16 14:23:42] [error] [apsClient/model.Init:10] failed to initialize database, got error Binary was compiled with 'CGO_ENABLED=0', go-sqlite3 requires cgo to work. This is a stub
+[2023-08-16 14:23:42] [error] [main.main:23] model Init err:Binary was compiled with 'CGO_ENABLED=0', go-sqlite3 requires cgo to work. This is a stub
+[2023-08-16 19:47:30] [error] [apsClient/model.Init:10] failed to initialize database, got error Binary was compiled with 'CGO_ENABLED=0', go-sqlite3 requires cgo to work. This is a stub
+[2023-08-16 19:47:30] [error] [main.main:23] model Init err:Binary was compiled with 'CGO_ENABLED=0', go-sqlite3 requires cgo to work. This is a stub
+[2023-08-16 19:58:28] [error] [apsClient/model.Init:10] failed to initialize database, got error Binary was compiled with 'CGO_ENABLED=0', go-sqlite3 requires cgo to work. This is a stub
+[2023-08-16 19:58:28] [error] [main.main:23] model Init err:Binary was compiled with 'CGO_ENABLED=0', go-sqlite3 requires cgo to work. This is a stub
+[2023-08-17 17:01:05] [error] [apsClient/model.Init:10] failed to initialize database, got error Binary was compiled with 'CGO_ENABLED=0', go-sqlite3 requires cgo to work. This is a stub
+[2023-08-17 17:01:05] [error] [main.main:23] model Init err:Binary was compiled with 'CGO_ENABLED=0', go-sqlite3 requires cgo to work. This is a stub
+[2023-08-17 17:27:57] [error] [apsClient/model.(*OrderSearch).First:189] trace {"error": "record not found", "elapsed": 0, "rows": 0, "sql": "SELECT * FROM `Order` WHERE status = \"1\" AND start_time >= 1692264477 AND `Order`.`deleted_at` IS NULL ORDER BY created_at asc,`Order`.`id` LIMIT 1"}
diff --git a/logs/apsClient.info.log b/logs/apsClient.info.log
index d69ffb7..85d9e6a 100644
--- a/logs/apsClient.info.log
+++ b/logs/apsClient.info.log
@@ -188,3 +188,136 @@
[2023-08-15 19:54:52] [debug] [apsClient/model.(*ScheduleTaskSearch).Find:195] trace {"elapsed": 0.0010002, "rows": 1, "sql": "SELECT count(*) FROM `schedule_task` WHERE `schedule_task`.`deleted_at` IS NULL"}
[2023-08-15 19:54:52] [debug] [apsClient/model.(*ScheduleTaskSearch).Find:201] trace {"elapsed": 0.0009973, "rows": 4, "sql": "SELECT * FROM `schedule_task` WHERE `schedule_task`.`deleted_at` IS NULL LIMIT 20"}
[2023-08-15 19:55:57] [info] [main.shutdown:48] apsClient exited...
+[2023-08-15 19:56:02] [debug] [gorm.io/driver/sqlite.Migrator.HasTable.func1:33] trace {"elapsed": 0, "rows": -1, "sql": "SELECT count(*) FROM sqlite_master WHERE type='table' AND name=\"schedule_task\""}
+[2023-08-15 19:56:02] [debug] [gorm.io/gorm/migrator.Migrator.RunWithValue:71] trace {"elapsed": 0, "rows": 3, "sql": "SELECT sql FROM sqlite_master WHERE type IN (\"table\",\"index\") AND tbl_name = \"schedule_task\" AND sql IS NOT NULL order by type = \"table\" desc"}
+[2023-08-15 19:56:02] [debug] [gorm.io/driver/sqlite.Migrator.ColumnTypes.func1:119] trace {"elapsed": 0, "rows": -1, "sql": "SELECT * FROM `schedule_task` LIMIT 1"}
+[2023-08-15 19:56:02] [debug] [gorm.io/driver/sqlite.Migrator.HasIndex.func1:313] trace {"elapsed": 0, "rows": -1, "sql": "SELECT count(*) FROM sqlite_master WHERE type = \"index\" AND tbl_name = \"schedule_task\" AND name = \"idx_schedule_task_deleted_at\""}
+[2023-08-15 19:56:02] [info] [main.main:33] apsClient start serve...
+[2023-08-15 19:56:02] [info] [apsClient/nsq.Consume:17] Consume NewNsqConsumer topic:aps.wangpengfei.scheduleTask
+[2023-08-15 19:56:07] [info] [apsClient/pkg/contextx.NewContext.func1:44] 192.168.20.120 | GET /v1/task/list?page=1&pageSize=20 | uid: | &{PageInfo:{Page:1 PageSize:20}}
+[2023-08-15 19:56:07] [debug] [apsClient/model.(*ScheduleTaskSearch).Find:195] trace {"elapsed": 0, "rows": 1, "sql": "SELECT count(*) FROM `schedule_task` WHERE `schedule_task`.`deleted_at` IS NULL"}
+[2023-08-15 19:56:07] [debug] [apsClient/model.(*ScheduleTaskSearch).Find:201] trace {"elapsed": 0, "rows": 4, "sql": "SELECT * FROM `schedule_task` WHERE `schedule_task`.`deleted_at` IS NULL LIMIT 20"}
+[2023-08-16 13:37:29] [info] [main.shutdown:48] apsClient exited...
+[2023-08-16 14:24:28] [debug] [gorm.io/driver/sqlite.Migrator.HasTable.func1:33] trace {"elapsed": 0.0010137, "rows": -1, "sql": "SELECT count(*) FROM sqlite_master WHERE type='table' AND name=\"schedule_task\""}
+[2023-08-16 14:24:28] [debug] [gorm.io/gorm/migrator.Migrator.RunWithValue:71] trace {"elapsed": 0.0009919, "rows": 3, "sql": "SELECT sql FROM sqlite_master WHERE type IN (\"table\",\"index\") AND tbl_name = \"schedule_task\" AND sql IS NOT NULL order by type = \"table\" desc"}
+[2023-08-16 14:24:28] [debug] [gorm.io/driver/sqlite.Migrator.ColumnTypes.func1:119] trace {"elapsed": 0, "rows": -1, "sql": "SELECT * FROM `schedule_task` LIMIT 1"}
+[2023-08-16 14:24:28] [debug] [gorm.io/driver/sqlite.Migrator.HasIndex.func1:313] trace {"elapsed": 0, "rows": -1, "sql": "SELECT count(*) FROM sqlite_master WHERE type = \"index\" AND tbl_name = \"schedule_task\" AND name = \"idx_schedule_task_deleted_at\""}
+[2023-08-16 14:24:28] [info] [main.main:33] apsClient start serve...
+[2023-08-16 14:24:28] [info] [apsClient/nsq.Consume:17] Consume NewNsqConsumer topic:aps.wangpengfei.scheduleTask
+[2023-08-16 14:24:52] [info] [main.shutdown:48] apsClient exited...
+[2023-08-16 14:24:53] [debug] [gorm.io/driver/sqlite.Migrator.HasTable.func1:33] trace {"elapsed": 0, "rows": -1, "sql": "SELECT count(*) FROM sqlite_master WHERE type='table' AND name=\"schedule_task\""}
+[2023-08-16 14:24:53] [debug] [gorm.io/gorm/migrator.Migrator.RunWithValue:71] trace {"elapsed": 0, "rows": 3, "sql": "SELECT sql FROM sqlite_master WHERE type IN (\"table\",\"index\") AND tbl_name = \"schedule_task\" AND sql IS NOT NULL order by type = \"table\" desc"}
+[2023-08-16 14:24:53] [debug] [gorm.io/driver/sqlite.Migrator.ColumnTypes.func1:119] trace {"elapsed": 0, "rows": -1, "sql": "SELECT * FROM `schedule_task` LIMIT 1"}
+[2023-08-16 14:24:53] [debug] [gorm.io/driver/sqlite.Migrator.HasIndex.func1:313] trace {"elapsed": 0, "rows": -1, "sql": "SELECT count(*) FROM sqlite_master WHERE type = \"index\" AND tbl_name = \"schedule_task\" AND name = \"idx_schedule_task_deleted_at\""}
+[2023-08-16 14:24:53] [info] [main.main:33] apsClient start serve...
+[2023-08-16 14:24:53] [info] [apsClient/nsq.Consume:17] Consume NewNsqConsumer topic:aps.wangpengfei.scheduleTask
+[2023-08-16 14:25:21] [info] [main.shutdown:48] apsClient exited...
+[2023-08-16 14:25:26] [debug] [gorm.io/driver/sqlite.Migrator.HasTable.func1:33] trace {"elapsed": 0, "rows": -1, "sql": "SELECT count(*) FROM sqlite_master WHERE type='table' AND name=\"schedule_task\""}
+[2023-08-16 14:25:26] [debug] [gorm.io/gorm/migrator.Migrator.RunWithValue:71] trace {"elapsed": 0, "rows": 3, "sql": "SELECT sql FROM sqlite_master WHERE type IN (\"table\",\"index\") AND tbl_name = \"schedule_task\" AND sql IS NOT NULL order by type = \"table\" desc"}
+[2023-08-16 14:25:26] [debug] [gorm.io/driver/sqlite.Migrator.ColumnTypes.func1:119] trace {"elapsed": 0, "rows": -1, "sql": "SELECT * FROM `schedule_task` LIMIT 1"}
+[2023-08-16 14:25:26] [debug] [gorm.io/driver/sqlite.Migrator.HasIndex.func1:313] trace {"elapsed": 0, "rows": -1, "sql": "SELECT count(*) FROM sqlite_master WHERE type = \"index\" AND tbl_name = \"schedule_task\" AND name = \"idx_schedule_task_deleted_at\""}
+[2023-08-16 14:25:26] [info] [main.main:33] apsClient start serve...
+[2023-08-16 14:25:26] [info] [apsClient/nsq.Consume:17] Consume NewNsqConsumer topic:aps.wangpengfei.scheduleTask
+[2023-08-16 19:47:26] [info] [main.shutdown:48] apsClient exited...
+[2023-08-16 19:58:49] [debug] [gorm.io/driver/sqlite.Migrator.HasTable.func1:33] trace {"elapsed": 0, "rows": -1, "sql": "SELECT count(*) FROM sqlite_master WHERE type='table' AND name=\"schedule_task\""}
+[2023-08-16 19:58:49] [debug] [gorm.io/gorm/migrator.Migrator.RunWithValue:71] trace {"elapsed": 0.0010028, "rows": 3, "sql": "SELECT sql FROM sqlite_master WHERE type IN (\"table\",\"index\") AND tbl_name = \"schedule_task\" AND sql IS NOT NULL order by type = \"table\" desc"}
+[2023-08-16 19:58:49] [debug] [gorm.io/driver/sqlite.Migrator.ColumnTypes.func1:119] trace {"elapsed": 0, "rows": -1, "sql": "SELECT * FROM `schedule_task` LIMIT 1"}
+[2023-08-16 19:58:49] [debug] [gorm.io/driver/sqlite.Migrator.HasIndex.func1:313] trace {"elapsed": 0, "rows": -1, "sql": "SELECT count(*) FROM sqlite_master WHERE type = \"index\" AND tbl_name = \"schedule_task\" AND name = \"idx_schedule_task_deleted_at\""}
+[2023-08-16 19:58:49] [info] [main.main:33] apsClient start serve...
+[2023-08-16 19:58:49] [info] [apsClient/nsq.Consume:17] Consume NewNsqConsumer topic:aps.wangpengfei.scheduleTask
+[2023-08-17 17:00:28] [info] [main.shutdown:48] apsClient exited...
+[2023-08-17 17:01:32] [debug] [gorm.io/driver/sqlite.Migrator.HasTable.func1:33] trace {"elapsed": 0, "rows": -1, "sql": "SELECT count(*) FROM sqlite_master WHERE type='table' AND name=\"Order\""}
+[2023-08-17 17:01:32] [debug] [gorm.io/gorm/migrator.Migrator.CreateTable.func1:290] trace {"elapsed": 0.0070474, "rows": 0, "sql": "CREATE TABLE `Order` (`id` integer,`created_at` datetime,`updated_at` datetime,`deleted_at` datetime,`order_id` varchar(191) NOT NULL,`product_id` varchar(191),`product_name` varchar(191),`parameter` varchar(1024),`customer` varchar(191),`deliver_date` varchar(100),`order_attr` text,`amount` decimal(35,18),`unit` varchar(100),`start_time` integer,`end_time` integer,`status` integer,PRIMARY KEY (`id`))"}
+[2023-08-17 17:01:32] [debug] [gorm.io/driver/sqlite.Migrator.CreateIndex.func1:294] trace {"elapsed": 0.0040126, "rows": 0, "sql": "CREATE INDEX `idx_Order_order_id` ON `Order`(`order_id`)"}
+[2023-08-17 17:01:32] [debug] [gorm.io/driver/sqlite.Migrator.CreateIndex.func1:294] trace {"elapsed": 0.0050064, "rows": 0, "sql": "CREATE INDEX `idx_Order_deleted_at` ON `Order`(`deleted_at`)"}
+[2023-08-17 17:01:32] [debug] [gorm.io/driver/sqlite.Migrator.HasTable.func1:33] trace {"elapsed": 0, "rows": -1, "sql": "SELECT count(*) FROM sqlite_master WHERE type='table' AND name=\"procedures\""}
+[2023-08-17 17:01:32] [debug] [gorm.io/gorm/migrator.Migrator.RunWithValue:71] trace {"elapsed": 0, "rows": 2, "sql": "SELECT sql FROM sqlite_master WHERE type IN (\"table\",\"index\") AND tbl_name = \"procedures\" AND sql IS NOT NULL order by type = \"table\" desc"}
+[2023-08-17 17:01:32] [debug] [gorm.io/driver/sqlite.Migrator.ColumnTypes.func1:119] trace {"elapsed": 0, "rows": -1, "sql": "SELECT * FROM `procedures` LIMIT 1"}
+[2023-08-17 17:01:32] [debug] [gorm.io/gorm/migrator.Migrator.AddColumn.func1:363] trace {"elapsed": 0.0060192, "rows": 0, "sql": "ALTER TABLE `procedures` ADD `order_id` varchar(191) NOT NULL"}
+[2023-08-17 17:01:32] [debug] [gorm.io/gorm/migrator.Migrator.AddColumn.func1:363] trace {"elapsed": 0.0050113, "rows": 0, "sql": "ALTER TABLE `procedures` ADD `status` integer"}
+[2023-08-17 17:01:32] [debug] [gorm.io/gorm/migrator.Migrator.AddColumn.func1:363] trace {"elapsed": 0.004009, "rows": 0, "sql": "ALTER TABLE `procedures` ADD `procedure_data` text"}
+[2023-08-17 17:01:32] [debug] [gorm.io/driver/sqlite.Migrator.HasIndex.func1:313] trace {"elapsed": 0, "rows": -1, "sql": "SELECT count(*) FROM sqlite_master WHERE type = \"index\" AND tbl_name = \"procedures\" AND name = \"idx_procedures_deleted_at\""}
+[2023-08-17 17:01:32] [debug] [gorm.io/driver/sqlite.Migrator.HasIndex.func1:313] trace {"elapsed": 0, "rows": -1, "sql": "SELECT count(*) FROM sqlite_master WHERE type = \"index\" AND tbl_name = \"procedures\" AND name = \"idx_procedures_order_id\""}
+[2023-08-17 17:01:32] [debug] [gorm.io/driver/sqlite.Migrator.CreateIndex.func1:294] trace {"elapsed": 0.0050123, "rows": 0, "sql": "CREATE INDEX `idx_procedures_order_id` ON `procedures`(`order_id`)"}
+[2023-08-17 17:01:32] [info] [main.main:33] apsClient start serve...
+[2023-08-17 17:01:32] [info] [apsClient/nsq.Consume:17] Consume NewNsqConsumer topic:aps.wangpengfei.scheduleTask
+[2023-08-17 17:18:25] [info] [main.shutdown:48] apsClient exited...
+[2023-08-17 17:18:30] [debug] [gorm.io/driver/sqlite.Migrator.HasTable.func1:33] trace {"elapsed": 0, "rows": -1, "sql": "SELECT count(*) FROM sqlite_master WHERE type='table' AND name=\"Order\""}
+[2023-08-17 17:18:30] [debug] [gorm.io/gorm/migrator.Migrator.RunWithValue:71] trace {"elapsed": 0, "rows": 3, "sql": "SELECT sql FROM sqlite_master WHERE type IN (\"table\",\"index\") AND tbl_name = \"Order\" AND sql IS NOT NULL order by type = \"table\" desc"}
+[2023-08-17 17:18:30] [debug] [gorm.io/driver/sqlite.Migrator.ColumnTypes.func1:119] trace {"elapsed": 0, "rows": -1, "sql": "SELECT * FROM `Order` LIMIT 1"}
+[2023-08-17 17:18:30] [debug] [gorm.io/driver/sqlite.Migrator.HasIndex.func1:313] trace {"elapsed": 0, "rows": -1, "sql": "SELECT count(*) FROM sqlite_master WHERE type = \"index\" AND tbl_name = \"Order\" AND name = \"idx_Order_deleted_at\""}
+[2023-08-17 17:18:30] [debug] [gorm.io/driver/sqlite.Migrator.HasIndex.func1:313] trace {"elapsed": 0, "rows": -1, "sql": "SELECT count(*) FROM sqlite_master WHERE type = \"index\" AND tbl_name = \"Order\" AND name = \"idx_Order_order_id\""}
+[2023-08-17 17:18:30] [debug] [gorm.io/driver/sqlite.Migrator.HasTable.func1:33] trace {"elapsed": 0, "rows": -1, "sql": "SELECT count(*) FROM sqlite_master WHERE type='table' AND name=\"procedures\""}
+[2023-08-17 17:18:30] [debug] [gorm.io/gorm/migrator.Migrator.RunWithValue:71] trace {"elapsed": 0, "rows": 3, "sql": "SELECT sql FROM sqlite_master WHERE type IN (\"table\",\"index\") AND tbl_name = \"procedures\" AND sql IS NOT NULL order by type = \"table\" desc"}
+[2023-08-17 17:18:30] [debug] [gorm.io/driver/sqlite.Migrator.ColumnTypes.func1:119] trace {"elapsed": 0, "rows": -1, "sql": "SELECT * FROM `procedures` LIMIT 1"}
+[2023-08-17 17:18:30] [debug] [gorm.io/driver/sqlite.Migrator.HasIndex.func1:313] trace {"elapsed": 0, "rows": -1, "sql": "SELECT count(*) FROM sqlite_master WHERE type = \"index\" AND tbl_name = \"procedures\" AND name = \"idx_procedures_deleted_at\""}
+[2023-08-17 17:18:30] [debug] [gorm.io/driver/sqlite.Migrator.HasIndex.func1:313] trace {"elapsed": 0, "rows": -1, "sql": "SELECT count(*) FROM sqlite_master WHERE type = \"index\" AND tbl_name = \"procedures\" AND name = \"idx_procedures_order_id\""}
+[2023-08-17 17:18:30] [info] [main.main:33] apsClient start serve...
+[2023-08-17 17:18:30] [info] [apsClient/nsq.Consume:17] Consume NewNsqConsumer topic:aps.wangpengfei.scheduleTask
+[2023-08-17 17:23:05] [info] [main.shutdown:48] apsClient exited...
+[2023-08-17 17:23:10] [debug] [gorm.io/driver/sqlite.Migrator.HasTable.func1:33] trace {"elapsed": 0, "rows": -1, "sql": "SELECT count(*) FROM sqlite_master WHERE type='table' AND name=\"Order\""}
+[2023-08-17 17:23:10] [debug] [gorm.io/gorm/migrator.Migrator.RunWithValue:71] trace {"elapsed": 0, "rows": 3, "sql": "SELECT sql FROM sqlite_master WHERE type IN (\"table\",\"index\") AND tbl_name = \"Order\" AND sql IS NOT NULL order by type = \"table\" desc"}
+[2023-08-17 17:23:10] [debug] [gorm.io/driver/sqlite.Migrator.ColumnTypes.func1:119] trace {"elapsed": 0, "rows": -1, "sql": "SELECT * FROM `Order` LIMIT 1"}
+[2023-08-17 17:23:10] [debug] [gorm.io/driver/sqlite.Migrator.HasIndex.func1:313] trace {"elapsed": 0, "rows": -1, "sql": "SELECT count(*) FROM sqlite_master WHERE type = \"index\" AND tbl_name = \"Order\" AND name = \"idx_Order_deleted_at\""}
+[2023-08-17 17:23:10] [debug] [gorm.io/driver/sqlite.Migrator.HasIndex.func1:313] trace {"elapsed": 0, "rows": -1, "sql": "SELECT count(*) FROM sqlite_master WHERE type = \"index\" AND tbl_name = \"Order\" AND name = \"idx_Order_order_id\""}
+[2023-08-17 17:23:10] [debug] [gorm.io/driver/sqlite.Migrator.HasTable.func1:33] trace {"elapsed": 0, "rows": -1, "sql": "SELECT count(*) FROM sqlite_master WHERE type='table' AND name=\"procedures\""}
+[2023-08-17 17:23:10] [debug] [gorm.io/gorm/migrator.Migrator.RunWithValue:71] trace {"elapsed": 0.0009688, "rows": 3, "sql": "SELECT sql FROM sqlite_master WHERE type IN (\"table\",\"index\") AND tbl_name = \"procedures\" AND sql IS NOT NULL order by type = \"table\" desc"}
+[2023-08-17 17:23:10] [debug] [gorm.io/driver/sqlite.Migrator.ColumnTypes.func1:119] trace {"elapsed": 0, "rows": -1, "sql": "SELECT * FROM `procedures` LIMIT 1"}
+[2023-08-17 17:23:10] [debug] [gorm.io/driver/sqlite.Migrator.HasIndex.func1:313] trace {"elapsed": 0, "rows": -1, "sql": "SELECT count(*) FROM sqlite_master WHERE type = \"index\" AND tbl_name = \"procedures\" AND name = \"idx_procedures_deleted_at\""}
+[2023-08-17 17:23:10] [debug] [gorm.io/driver/sqlite.Migrator.HasIndex.func1:313] trace {"elapsed": 0, "rows": -1, "sql": "SELECT count(*) FROM sqlite_master WHERE type = \"index\" AND tbl_name = \"procedures\" AND name = \"idx_procedures_order_id\""}
+[2023-08-17 17:23:10] [info] [main.main:33] apsClient start serve...
+[2023-08-17 17:23:10] [info] [apsClient/nsq.Consume:17] Consume NewNsqConsumer topic:aps.wangpengfei.scheduleTask
+[2023-08-17 17:24:23] [info] [main.shutdown:48] apsClient exited...
+[2023-08-17 17:24:28] [debug] [gorm.io/driver/sqlite.Migrator.HasTable.func1:33] trace {"elapsed": 0, "rows": -1, "sql": "SELECT count(*) FROM sqlite_master WHERE type='table' AND name=\"Order\""}
+[2023-08-17 17:24:28] [debug] [gorm.io/gorm/migrator.Migrator.RunWithValue:71] trace {"elapsed": 0, "rows": 3, "sql": "SELECT sql FROM sqlite_master WHERE type IN (\"table\",\"index\") AND tbl_name = \"Order\" AND sql IS NOT NULL order by type = \"table\" desc"}
+[2023-08-17 17:24:28] [debug] [gorm.io/driver/sqlite.Migrator.ColumnTypes.func1:119] trace {"elapsed": 0, "rows": -1, "sql": "SELECT * FROM `Order` LIMIT 1"}
+[2023-08-17 17:24:28] [debug] [gorm.io/driver/sqlite.Migrator.HasIndex.func1:313] trace {"elapsed": 0, "rows": -1, "sql": "SELECT count(*) FROM sqlite_master WHERE type = \"index\" AND tbl_name = \"Order\" AND name = \"idx_Order_deleted_at\""}
+[2023-08-17 17:24:28] [debug] [gorm.io/driver/sqlite.Migrator.HasIndex.func1:313] trace {"elapsed": 0, "rows": -1, "sql": "SELECT count(*) FROM sqlite_master WHERE type = \"index\" AND tbl_name = \"Order\" AND name = \"idx_Order_order_id\""}
+[2023-08-17 17:24:28] [debug] [gorm.io/driver/sqlite.Migrator.HasTable.func1:33] trace {"elapsed": 0, "rows": -1, "sql": "SELECT count(*) FROM sqlite_master WHERE type='table' AND name=\"procedures\""}
+[2023-08-17 17:24:28] [debug] [gorm.io/gorm/migrator.Migrator.RunWithValue:71] trace {"elapsed": 0, "rows": 3, "sql": "SELECT sql FROM sqlite_master WHERE type IN (\"table\",\"index\") AND tbl_name = \"procedures\" AND sql IS NOT NULL order by type = \"table\" desc"}
+[2023-08-17 17:24:28] [debug] [gorm.io/driver/sqlite.Migrator.ColumnTypes.func1:119] trace {"elapsed": 0, "rows": -1, "sql": "SELECT * FROM `procedures` LIMIT 1"}
+[2023-08-17 17:24:28] [debug] [gorm.io/driver/sqlite.Migrator.HasIndex.func1:313] trace {"elapsed": 0, "rows": -1, "sql": "SELECT count(*) FROM sqlite_master WHERE type = \"index\" AND tbl_name = \"procedures\" AND name = \"idx_procedures_deleted_at\""}
+[2023-08-17 17:24:28] [debug] [gorm.io/driver/sqlite.Migrator.HasIndex.func1:313] trace {"elapsed": 0, "rows": -1, "sql": "SELECT count(*) FROM sqlite_master WHERE type = \"index\" AND tbl_name = \"procedures\" AND name = \"idx_procedures_order_id\""}
+[2023-08-17 17:24:28] [info] [main.main:33] apsClient start serve...
+[2023-08-17 17:24:28] [info] [apsClient/nsq.Consume:17] Consume NewNsqConsumer topic:aps.wangpengfei.scheduleTask
+[2023-08-17 17:25:44] [info] [main.shutdown:48] apsClient exited...
+[2023-08-17 17:25:51] [debug] [gorm.io/driver/sqlite.Migrator.HasTable.func1:33] trace {"elapsed": 0, "rows": -1, "sql": "SELECT count(*) FROM sqlite_master WHERE type='table' AND name=\"Order\""}
+[2023-08-17 17:25:51] [debug] [gorm.io/gorm/migrator.Migrator.RunWithValue:71] trace {"elapsed": 0, "rows": 3, "sql": "SELECT sql FROM sqlite_master WHERE type IN (\"table\",\"index\") AND tbl_name = \"Order\" AND sql IS NOT NULL order by type = \"table\" desc"}
+[2023-08-17 17:25:51] [debug] [gorm.io/driver/sqlite.Migrator.ColumnTypes.func1:119] trace {"elapsed": 0, "rows": -1, "sql": "SELECT * FROM `Order` LIMIT 1"}
+[2023-08-17 17:25:51] [debug] [gorm.io/driver/sqlite.Migrator.HasIndex.func1:313] trace {"elapsed": 0, "rows": -1, "sql": "SELECT count(*) FROM sqlite_master WHERE type = \"index\" AND tbl_name = \"Order\" AND name = \"idx_Order_deleted_at\""}
+[2023-08-17 17:25:51] [debug] [gorm.io/driver/sqlite.Migrator.HasIndex.func1:313] trace {"elapsed": 0, "rows": -1, "sql": "SELECT count(*) FROM sqlite_master WHERE type = \"index\" AND tbl_name = \"Order\" AND name = \"idx_Order_order_id\""}
+[2023-08-17 17:25:51] [debug] [gorm.io/driver/sqlite.Migrator.HasTable.func1:33] trace {"elapsed": 0, "rows": -1, "sql": "SELECT count(*) FROM sqlite_master WHERE type='table' AND name=\"procedures\""}
+[2023-08-17 17:25:51] [debug] [gorm.io/gorm/migrator.Migrator.RunWithValue:71] trace {"elapsed": 0, "rows": 3, "sql": "SELECT sql FROM sqlite_master WHERE type IN (\"table\",\"index\") AND tbl_name = \"procedures\" AND sql IS NOT NULL order by type = \"table\" desc"}
+[2023-08-17 17:25:51] [debug] [gorm.io/driver/sqlite.Migrator.ColumnTypes.func1:119] trace {"elapsed": 0, "rows": -1, "sql": "SELECT * FROM `procedures` LIMIT 1"}
+[2023-08-17 17:25:51] [debug] [gorm.io/driver/sqlite.Migrator.HasIndex.func1:313] trace {"elapsed": 0, "rows": -1, "sql": "SELECT count(*) FROM sqlite_master WHERE type = \"index\" AND tbl_name = \"procedures\" AND name = \"idx_procedures_deleted_at\""}
+[2023-08-17 17:25:51] [debug] [gorm.io/driver/sqlite.Migrator.HasIndex.func1:313] trace {"elapsed": 0, "rows": -1, "sql": "SELECT count(*) FROM sqlite_master WHERE type = \"index\" AND tbl_name = \"procedures\" AND name = \"idx_procedures_order_id\""}
+[2023-08-17 17:25:51] [info] [main.main:33] apsClient start serve...
+[2023-08-17 17:25:51] [info] [apsClient/nsq.Consume:17] Consume NewNsqConsumer topic:aps.wangpengfei.scheduleTask
+[2023-08-17 17:26:43] [info] [main.shutdown:48] apsClient exited...
+[2023-08-17 17:26:48] [debug] [gorm.io/driver/sqlite.Migrator.HasTable.func1:33] trace {"elapsed": 0, "rows": -1, "sql": "SELECT count(*) FROM sqlite_master WHERE type='table' AND name=\"Order\""}
+[2023-08-17 17:26:48] [debug] [gorm.io/gorm/migrator.Migrator.RunWithValue:71] trace {"elapsed": 0, "rows": 3, "sql": "SELECT sql FROM sqlite_master WHERE type IN (\"table\",\"index\") AND tbl_name = \"Order\" AND sql IS NOT NULL order by type = \"table\" desc"}
+[2023-08-17 17:26:48] [debug] [gorm.io/driver/sqlite.Migrator.ColumnTypes.func1:119] trace {"elapsed": 0, "rows": -1, "sql": "SELECT * FROM `Order` LIMIT 1"}
+[2023-08-17 17:26:48] [debug] [gorm.io/driver/sqlite.Migrator.HasIndex.func1:313] trace {"elapsed": 0, "rows": -1, "sql": "SELECT count(*) FROM sqlite_master WHERE type = \"index\" AND tbl_name = \"Order\" AND name = \"idx_Order_deleted_at\""}
+[2023-08-17 17:26:48] [debug] [gorm.io/driver/sqlite.Migrator.HasIndex.func1:313] trace {"elapsed": 0, "rows": -1, "sql": "SELECT count(*) FROM sqlite_master WHERE type = \"index\" AND tbl_name = \"Order\" AND name = \"idx_Order_order_id\""}
+[2023-08-17 17:26:48] [debug] [gorm.io/driver/sqlite.Migrator.HasTable.func1:33] trace {"elapsed": 0, "rows": -1, "sql": "SELECT count(*) FROM sqlite_master WHERE type='table' AND name=\"procedures\""}
+[2023-08-17 17:26:48] [debug] [gorm.io/gorm/migrator.Migrator.RunWithValue:71] trace {"elapsed": 0, "rows": 3, "sql": "SELECT sql FROM sqlite_master WHERE type IN (\"table\",\"index\") AND tbl_name = \"procedures\" AND sql IS NOT NULL order by type = \"table\" desc"}
+[2023-08-17 17:26:48] [debug] [gorm.io/driver/sqlite.Migrator.ColumnTypes.func1:119] trace {"elapsed": 0, "rows": -1, "sql": "SELECT * FROM `procedures` LIMIT 1"}
+[2023-08-17 17:26:48] [debug] [gorm.io/driver/sqlite.Migrator.HasIndex.func1:313] trace {"elapsed": 0, "rows": -1, "sql": "SELECT count(*) FROM sqlite_master WHERE type = \"index\" AND tbl_name = \"procedures\" AND name = \"idx_procedures_deleted_at\""}
+[2023-08-17 17:26:48] [debug] [gorm.io/driver/sqlite.Migrator.HasIndex.func1:313] trace {"elapsed": 0, "rows": -1, "sql": "SELECT count(*) FROM sqlite_master WHERE type = \"index\" AND tbl_name = \"procedures\" AND name = \"idx_procedures_order_id\""}
+[2023-08-17 17:26:48] [info] [main.main:33] apsClient start serve...
+[2023-08-17 17:26:48] [info] [apsClient/nsq.Consume:17] Consume NewNsqConsumer topic:aps.wangpengfei.scheduleTask
+[2023-08-17 17:27:40] [info] [main.shutdown:48] apsClient exited...
+[2023-08-17 17:27:45] [debug] [gorm.io/driver/sqlite.Migrator.HasTable.func1:33] trace {"elapsed": 0, "rows": -1, "sql": "SELECT count(*) FROM sqlite_master WHERE type='table' AND name=\"Order\""}
+[2023-08-17 17:27:45] [debug] [gorm.io/gorm/migrator.Migrator.RunWithValue:71] trace {"elapsed": 0, "rows": 3, "sql": "SELECT sql FROM sqlite_master WHERE type IN (\"table\",\"index\") AND tbl_name = \"Order\" AND sql IS NOT NULL order by type = \"table\" desc"}
+[2023-08-17 17:27:45] [debug] [gorm.io/driver/sqlite.Migrator.ColumnTypes.func1:119] trace {"elapsed": 0, "rows": -1, "sql": "SELECT * FROM `Order` LIMIT 1"}
+[2023-08-17 17:27:45] [debug] [gorm.io/driver/sqlite.Migrator.HasIndex.func1:313] trace {"elapsed": 0, "rows": -1, "sql": "SELECT count(*) FROM sqlite_master WHERE type = \"index\" AND tbl_name = \"Order\" AND name = \"idx_Order_deleted_at\""}
+[2023-08-17 17:27:45] [debug] [gorm.io/driver/sqlite.Migrator.HasIndex.func1:313] trace {"elapsed": 0, "rows": -1, "sql": "SELECT count(*) FROM sqlite_master WHERE type = \"index\" AND tbl_name = \"Order\" AND name = \"idx_Order_order_id\""}
+[2023-08-17 17:27:45] [debug] [gorm.io/driver/sqlite.Migrator.HasTable.func1:33] trace {"elapsed": 0, "rows": -1, "sql": "SELECT count(*) FROM sqlite_master WHERE type='table' AND name=\"procedures\""}
+[2023-08-17 17:27:45] [debug] [gorm.io/gorm/migrator.Migrator.RunWithValue:71] trace {"elapsed": 0, "rows": 3, "sql": "SELECT sql FROM sqlite_master WHERE type IN (\"table\",\"index\") AND tbl_name = \"procedures\" AND sql IS NOT NULL order by type = \"table\" desc"}
+[2023-08-17 17:27:45] [debug] [gorm.io/driver/sqlite.Migrator.ColumnTypes.func1:119] trace {"elapsed": 0, "rows": -1, "sql": "SELECT * FROM `procedures` LIMIT 1"}
+[2023-08-17 17:27:45] [debug] [gorm.io/driver/sqlite.Migrator.HasIndex.func1:313] trace {"elapsed": 0, "rows": -1, "sql": "SELECT count(*) FROM sqlite_master WHERE type = \"index\" AND tbl_name = \"procedures\" AND name = \"idx_procedures_deleted_at\""}
+[2023-08-17 17:27:45] [debug] [gorm.io/driver/sqlite.Migrator.HasIndex.func1:313] trace {"elapsed": 0, "rows": -1, "sql": "SELECT count(*) FROM sqlite_master WHERE type = \"index\" AND tbl_name = \"procedures\" AND name = \"idx_procedures_order_id\""}
+[2023-08-17 17:27:45] [info] [main.main:33] apsClient start serve...
+[2023-08-17 17:27:45] [info] [apsClient/nsq.Consume:17] Consume NewNsqConsumer topic:aps.wangpengfei.scheduleTask
+[2023-08-17 17:27:57] [info] [apsClient/pkg/contextx.NewContext.func1:44] 192.168.20.120 | GET /v1/task/get | uid: | <nil>
+[2023-08-17 17:28:54] [info] [main.shutdown:48] apsClient exited...
diff --git a/model/index.go b/model/index.go
index fb11459..21552fb 100644
--- a/model/index.go
+++ b/model/index.go
@@ -19,6 +19,6 @@
func RegisterTables() error {
db := sqlitex.GetDB()
- err := db.AutoMigrate(ScheduleTask{})
+ err := db.AutoMigrate(Order{}, Procedures{})
return err
}
diff --git a/model/materials.go b/model/materials.go
deleted file mode 100644
index 8fd66e5..0000000
--- a/model/materials.go
+++ /dev/null
@@ -1,221 +0,0 @@
-package model
-
-import (
- "apsClient/pkg/sqlitex"
- "fmt"
- "gorm.io/gorm"
-)
-
-type (
-
- //"materialId": "PS",
- //"materialName": "涓ョ墝PS",
- //"amount": "10",
- //"unit": "g/銕�"
-
- Materials struct {
- gorm.Model `json:"-"`
- Id int `json:"id"`
- MaterialId string `json:"materialId"`
- MaterialName string `json:"materialName"`
- Amount string `json:"amount"`
- Unit string `json:"unit"`
- }
-
- MaterialsSearch struct {
- Materials
- Order string
- PageNum int
- PageSize int
- Orm *gorm.DB
- }
-)
-
-func (slf *Materials) TableName() string {
- return "materials"
-}
-
-func NewMaterialsSearch(db *gorm.DB) *MaterialsSearch {
- if db == nil {
- db = sqlitex.GetDB()
- }
- return &MaterialsSearch{Orm: db}
-}
-
-func (slf *MaterialsSearch) SetOrm(tx *gorm.DB) *MaterialsSearch {
- slf.Orm = tx
- return slf
-}
-
-func (slf *MaterialsSearch) SetPage(page, size int) *MaterialsSearch {
- slf.PageNum, slf.PageSize = page, size
- return slf
-}
-
-func (slf *MaterialsSearch) SetOrder(order string) *MaterialsSearch {
- slf.Order = order
- return slf
-}
-
-func (slf *MaterialsSearch) build() *gorm.DB {
- var db = slf.Orm.Model(&Materials{})
-
- if slf.Order != "" {
- db = db.Order(slf.Order)
- }
-
- return db
-}
-
-// Create 鍗曟潯鎻掑叆
-func (slf *MaterialsSearch) Create(record *Materials) error {
- var db = slf.build()
-
- if err := db.Create(record).Error; err != nil {
- return fmt.Errorf("create err: %v, record: %+v", err, record)
- }
-
- return nil
-}
-
-// CreateBatch 鎵归噺鎻掑叆
-func (slf *MaterialsSearch) CreateBatch(records []*Materials) error {
- var db = slf.build()
-
- if err := db.Create(&records).Error; err != nil {
- return fmt.Errorf("create batch err: %v, records: %+v", err, records)
- }
-
- return nil
-}
-
-func (slf *MaterialsSearch) Save(record *Materials) error {
- var db = slf.build()
-
- if err := db.Save(record).Error; err != nil {
- return fmt.Errorf("save err: %v, record: %+v", err, record)
- }
-
- return nil
-}
-
-func (slf *MaterialsSearch) UpdateByMap(upMap map[string]interface{}) error {
- var (
- db = slf.build()
- )
-
- if err := db.Updates(upMap).Error; err != nil {
- return fmt.Errorf("update by map err: %v, upMap: %+v", err, upMap)
- }
-
- return nil
-}
-
-func (slf *MaterialsSearch) UpdateByQuery(query string, args []interface{}, upMap map[string]interface{}) error {
- var (
- db = slf.Orm.Table(slf.TableName()).Where(query, args...)
- )
-
- if err := db.Updates(upMap).Error; err != nil {
- return fmt.Errorf("update by query err: %v, query: %s, args: %+v, upMap: %+v", err, query, args, upMap)
- }
-
- return nil
-}
-
-func (slf *MaterialsSearch) Delete() error {
- var db = slf.build()
-
- if err := db.Unscoped().Delete(&Materials{}).Error; err != nil {
- return err
- }
-
- return nil
-}
-
-func (slf *MaterialsSearch) First() (*Materials, error) {
- var (
- record = new(Materials)
- db = slf.build()
- )
-
- if err := db.First(record).Error; err != nil {
- return record, err
- }
-
- return record, nil
-}
-
-func (slf *MaterialsSearch) Find() ([]*Materials, int64, error) {
- var (
- records = make([]*Materials, 0)
- total int64
- db = slf.build()
- )
-
- if err := db.Count(&total).Error; err != nil {
- return records, total, fmt.Errorf("find count err: %v", err)
- }
- if slf.PageNum*slf.PageSize > 0 {
- db = db.Offset((slf.PageNum - 1) * slf.PageSize).Limit(slf.PageSize)
- }
- if err := db.Find(&records).Error; err != nil {
- return records, total, fmt.Errorf("find records err: %v", err)
- }
-
- return records, total, nil
-}
-
-func (slf *MaterialsSearch) FindNotTotal() ([]*Materials, error) {
- var (
- records = make([]*Materials, 0)
- db = slf.build()
- )
-
- if slf.PageNum*slf.PageSize > 0 {
- db = db.Offset((slf.PageNum - 1) * slf.PageSize).Limit(slf.PageSize)
- }
- if err := db.Find(&records).Error; err != nil {
- return records, fmt.Errorf("find records err: %v", err)
- }
-
- return records, nil
-}
-
-// FindByQuery 鎸囧畾鏉′欢鏌ヨ.
-func (slf *MaterialsSearch) FindByQuery(query string, args []interface{}) ([]*Materials, int64, error) {
- var (
- records = make([]*Materials, 0)
- total int64
- db = slf.Orm.Table(slf.TableName()).Where(query, args...)
- )
-
- if err := db.Count(&total).Error; err != nil {
- return records, total, fmt.Errorf("find by query count err: %v", err)
- }
- if slf.PageNum*slf.PageSize > 0 {
- db = db.Offset((slf.PageNum - 1) * slf.PageSize).Limit(slf.PageSize)
- }
- if err := db.Find(&records).Error; err != nil {
- return records, total, fmt.Errorf("find by query records err: %v, query: %s, args: %+v", err, query, args)
- }
-
- return records, total, nil
-}
-
-// FindByQueryNotTotal 鎸囧畾鏉′欢鏌ヨ&涓嶆煡璇㈡�绘潯鏁�.
-func (slf *MaterialsSearch) FindByQueryNotTotal(query string, args []interface{}) ([]*Materials, error) {
- var (
- records = make([]*Materials, 0)
- db = slf.Orm.Table(slf.TableName()).Where(query, args...)
- )
-
- if slf.PageNum*slf.PageSize > 0 {
- db = db.Offset((slf.PageNum - 1) * slf.PageSize).Limit(slf.PageSize)
- }
- if err := db.Find(&records).Error; err != nil {
- return records, fmt.Errorf("find by query records err: %v, query: %s, args: %+v", err, query, args)
- }
-
- return records, nil
-}
diff --git a/model/order.go b/model/order.go
new file mode 100644
index 0000000..87e67c9
--- /dev/null
+++ b/model/order.go
@@ -0,0 +1,268 @@
+package model
+
+import (
+ "apsClient/pkg/sqlitex"
+ "fmt"
+ "github.com/shopspring/decimal"
+ "gorm.io/gorm"
+)
+
+type (
+ Order struct {
+ gorm.Model `json:"-"`
+ OrderID string `gorm:"index;type:varchar(191);not null;comment:璁㈠崟ID" json:"orderId"`
+ ProductID string `gorm:"type:varchar(191);comment:浜у搧ID" json:"productId"`
+ ProductName string `gorm:"type:varchar(191);comment:浜у搧鍚嶇О" json:"productName"`
+ Parameter string `gorm:"type:varchar(1024);comment:鍙傛暟闇�姹�" json:"parameter"`
+ Customer string `gorm:"type:varchar(191);comment:瀹㈡埛缂栫爜" json:"customer"`
+ DeliverDate string `gorm:"type:varchar(100);comment:浜よ揣鏃ユ湡" json:"deliverDate"`
+ OrderAttr string `json:"orderAttr"` // 璁㈠崟灞炴�ф嫾鎺ョ殑瀛楃涓诧紝鍗宠揣鐗╂弿杩�
+ Amount decimal.Decimal `gorm:"type:decimal(35,18);comment:鏁伴噺" json:"amount"`
+ Unit string `gorm:"type:varchar(100);comment:鍗曚綅" json:"unit"`
+ StartTime int64 `gorm:"comment:璁″垝寮�濮嬫椂闂�" json:"startTime"`
+ EndTime int64 `gorm:"comment:璁″垝缁撴潫鏃堕棿" json:"endTime"`
+ Status OrderStatus `json:"-"`
+ }
+
+ OrderSearch struct {
+ Order
+ OrderBy string
+ PageNum int
+ PageSize int
+ Orm *gorm.DB
+ Preload bool
+ StartTimeMin int64
+ }
+)
+
+type OrderStatus int
+
+const (
+ OrderStatusUnFinished OrderStatus = 1
+ OrderStatusFinished OrderStatus = 2
+)
+
+func (slf *Order) TableName() string {
+ return "Order"
+}
+
+func NewOrderSearch(db *gorm.DB) *OrderSearch {
+ if db == nil {
+ db = sqlitex.GetDB()
+ }
+ return &OrderSearch{Orm: db}
+}
+
+func (slf *OrderSearch) SetOrm(tx *gorm.DB) *OrderSearch {
+ slf.Orm = tx
+ return slf
+}
+
+func (slf *OrderSearch) SetPage(page, size int) *OrderSearch {
+ slf.PageNum, slf.PageSize = page, size
+ return slf
+}
+
+func (slf *OrderSearch) SetOrder(order string) *OrderSearch {
+ slf.OrderBy = order
+ return slf
+}
+
+func (slf *OrderSearch) SetStartTimeMin(ts int64) *OrderSearch {
+ slf.StartTimeMin = ts
+ return slf
+}
+
+func (slf *OrderSearch) SetStatus(status OrderStatus) *OrderSearch {
+ slf.Status = status
+ return slf
+}
+
+func (slf *OrderSearch) SetPreload(preload bool) *OrderSearch {
+ slf.Preload = preload
+ return slf
+}
+
+func (slf *OrderSearch) SetOrderId(orderId string) *OrderSearch {
+ slf.OrderID = orderId
+ return slf
+}
+
+func (slf *OrderSearch) build() *gorm.DB {
+ var db = slf.Orm.Model(&Order{})
+
+ if slf.OrderBy != "" {
+ db = db.Order(slf.OrderBy)
+ }
+
+ if slf.OrderID != "" {
+ db = db.Where("order_id = ?", slf.OrderID)
+ }
+
+ if slf.Status != 0 {
+ db = db.Where("status = ?", slf.Status)
+ }
+
+ if slf.StartTimeMin != 0 {
+ db = db.Where("start_time >= ?", slf.StartTimeMin)
+ }
+
+ if slf.Preload {
+ db = db.Preload("InputMaterials").Preload("OutputMaterials")
+ }
+
+ return db
+}
+
+// Create 鍗曟潯鎻掑叆
+func (slf *OrderSearch) Create(record *Order) error {
+ var db = slf.build()
+
+ if err := db.Create(record).Error; err != nil {
+ return fmt.Errorf("create err: %v, record: %+v", err, record)
+ }
+
+ return nil
+}
+
+// CreateBatch 鎵归噺鎻掑叆
+func (slf *OrderSearch) CreateBatch(records []*Order) error {
+ var db = slf.build()
+
+ if err := db.Create(&records).Error; err != nil {
+ return fmt.Errorf("create batch err: %v, records: %+v", err, records)
+ }
+
+ return nil
+}
+
+func (slf *OrderSearch) Save(record *Order) error {
+ var db = slf.build()
+
+ if err := db.Save(record).Error; err != nil {
+ return fmt.Errorf("save err: %v, record: %+v", err, record)
+ }
+
+ return nil
+}
+
+func (slf *OrderSearch) UpdateByMap(upMap map[string]interface{}) error {
+ var (
+ db = slf.build()
+ )
+
+ if err := db.Updates(upMap).Error; err != nil {
+ return fmt.Errorf("update by map err: %v, upMap: %+v", err, upMap)
+ }
+
+ return nil
+}
+
+func (slf *OrderSearch) UpdateByQuery(query string, args []interface{}, upMap map[string]interface{}) error {
+ var (
+ db = slf.Orm.Table(slf.TableName()).Where(query, args...)
+ )
+
+ if err := db.Updates(upMap).Error; err != nil {
+ return fmt.Errorf("update by query err: %v, query: %s, args: %+v, upMap: %+v", err, query, args, upMap)
+ }
+
+ return nil
+}
+
+func (slf *OrderSearch) Delete() error {
+ var db = slf.build()
+
+ if err := db.Unscoped().Delete(&Order{}).Error; err != nil {
+ return err
+ }
+
+ return nil
+}
+
+func (slf *OrderSearch) First() (*Order, error) {
+ var (
+ record = new(Order)
+ db = slf.build()
+ )
+
+ if err := db.First(record).Error; err != nil {
+ return record, err
+ }
+
+ return record, nil
+}
+
+func (slf *OrderSearch) Find() ([]*Order, int64, error) {
+ var (
+ records = make([]*Order, 0)
+ total int64
+ db = slf.build()
+ )
+
+ if err := db.Count(&total).Error; err != nil {
+ return records, total, fmt.Errorf("find count err: %v", err)
+ }
+ if slf.PageNum*slf.PageSize > 0 {
+ db = db.Offset((slf.PageNum - 1) * slf.PageSize).Limit(slf.PageSize)
+ }
+ if err := db.Find(&records).Error; err != nil {
+ return records, total, fmt.Errorf("find records err: %v", err)
+ }
+
+ return records, total, nil
+}
+
+func (slf *OrderSearch) FindNotTotal() ([]*Order, error) {
+ var (
+ records = make([]*Order, 0)
+ db = slf.build()
+ )
+
+ if slf.PageNum*slf.PageSize > 0 {
+ db = db.Offset((slf.PageNum - 1) * slf.PageSize).Limit(slf.PageSize)
+ }
+ if err := db.Find(&records).Error; err != nil {
+ return records, fmt.Errorf("find records err: %v", err)
+ }
+
+ return records, nil
+}
+
+// FindByQuery 鎸囧畾鏉′欢鏌ヨ.
+func (slf *OrderSearch) FindByQuery(query string, args []interface{}) ([]*Order, int64, error) {
+ var (
+ records = make([]*Order, 0)
+ total int64
+ db = slf.Orm.Table(slf.TableName()).Where(query, args...)
+ )
+
+ if err := db.Count(&total).Error; err != nil {
+ return records, total, fmt.Errorf("find by query count err: %v", err)
+ }
+ if slf.PageNum*slf.PageSize > 0 {
+ db = db.Offset((slf.PageNum - 1) * slf.PageSize).Limit(slf.PageSize)
+ }
+ if err := db.Find(&records).Error; err != nil {
+ return records, total, fmt.Errorf("find by query records err: %v, query: %s, args: %+v", err, query, args)
+ }
+
+ return records, total, nil
+}
+
+// FindByQueryNotTotal 鎸囧畾鏉′欢鏌ヨ&涓嶆煡璇㈡�绘潯鏁�.
+func (slf *OrderSearch) FindByQueryNotTotal(query string, args []interface{}) ([]*Order, error) {
+ var (
+ records = make([]*Order, 0)
+ db = slf.Orm.Table(slf.TableName()).Where(query, args...)
+ )
+
+ if slf.PageNum*slf.PageSize > 0 {
+ db = db.Offset((slf.PageNum - 1) * slf.PageSize).Limit(slf.PageSize)
+ }
+ if err := db.Find(&records).Error; err != nil {
+ return records, fmt.Errorf("find by query records err: %v, query: %s, args: %+v", err, query, args)
+ }
+
+ return records, nil
+}
diff --git a/model/procedures.go b/model/procedures.go
index 1dfc611..245f2e4 100644
--- a/model/procedures.go
+++ b/model/procedures.go
@@ -1,39 +1,53 @@
package model
import (
+ "apsClient/model/request"
+ "apsClient/pkg/logx"
"apsClient/pkg/sqlitex"
+ "encoding/json"
"fmt"
"gorm.io/gorm"
)
type (
Procedures struct {
- gorm.Model `json:"-"`
- Id int `json:"id"`
- ProcedureId string `json:"orderId"`
- ProcedureName string `json:"product"`
- DeviceId string `json:"deviceId"`
- StartTime string `json:"startTime"`
- EndTime string `json:"endTime"`
- WorkHours string `json:"workHours"`
- InputMaterialsId int `json:"-"`
- InputMaterials *Materials `json:"inputMaterials" gorm:"foreignKey:InputMaterialsId"`
- OutputMaterialsId int `json:"-"`
- OutputMaterials *Materials `json:"outputMaterials" gorm:"foreignKey:InputMaterialsId"`
+ gorm.Model `json:"-"`
+ ID int `gorm:"primarykey"`
+ OrderID string `gorm:"index;type:varchar(191);not null;comment:璁㈠崟ID" json:"-"`
+ Status ProcedureStatus `json:"-"`
+ ProcedureData string `json:"-"` //request.ProductProcedure json涓�
+ ProceduresInfo request.ProductProcedure `json:"procedure" gorm:"-"` //request.ProductProcedure 瀵硅薄
}
ProceduresSearch struct {
Procedures
- Order string
- PageNum int
- PageSize int
- Orm *gorm.DB
- Preload bool
+ Order string
+ PageNum int
+ PageSize int
+ Orm *gorm.DB
+ Preload bool
+ StartTimeMin int64
}
+)
+
+type ProcedureStatus int
+
+const (
+ ProcedureStatusUnFinished ProcedureStatus = 1
+ ProcedureStatusFinished ProcedureStatus = 2
)
func (slf *Procedures) TableName() string {
return "procedures"
+}
+func (slf *Procedures) AfterFind() {
+ var proceduresInfo request.ProductProcedure
+ err := json.Unmarshal([]byte(slf.ProcedureData), &proceduresInfo)
+ if err != nil {
+ logx.Errorf("AfterFind Unmarshal err: %v", err.Error())
+ return
+ }
+ slf.ProceduresInfo = proceduresInfo
}
func NewProceduresSearch(db *gorm.DB) *ProceduresSearch {
@@ -58,6 +72,25 @@
return slf
}
+func (slf *ProceduresSearch) SetOrderId(orderId string) *ProceduresSearch {
+ slf.OrderID = orderId
+ return slf
+}
+func (slf *ProceduresSearch) SetStartTimeMin(ts int64) *ProceduresSearch {
+ slf.StartTimeMin = ts
+ return slf
+}
+
+func (slf *ProceduresSearch) SetId(id int) *ProceduresSearch {
+ slf.ID = id
+ return slf
+}
+
+func (slf *ProceduresSearch) SetStatus(status ProcedureStatus) *ProceduresSearch {
+ slf.Status = status
+ return slf
+}
+
func (slf *ProceduresSearch) SetPreload(preload bool) *ProceduresSearch {
slf.Preload = preload
return slf
@@ -69,10 +102,23 @@
if slf.Order != "" {
db = db.Order(slf.Order)
}
+
+ if slf.OrderID != "" {
+ db = db.Where("order_id = ?", slf.OrderID)
+ }
+
if slf.Preload {
db = db.Preload("InputMaterials").Preload("OutputMaterials")
}
+ if slf.StartTimeMin != 0 {
+ db = db.Where("start_time >= ?", slf.StartTimeMin)
+ }
+
+ if slf.Status != 0 {
+ db = db.Where("status = ?", slf.Status)
+ }
+
return db
}
diff --git a/model/response/common.go b/model/response/common.go
index 7461096..05246bb 100644
--- a/model/response/common.go
+++ b/model/response/common.go
@@ -1,8 +1,17 @@
package response
+import (
+ "apsClient/model"
+)
+
type PageResult struct {
List interface{} `json:"list"`
Total int64 `json:"total"`
Page int `json:"page"`
PageSize int `json:"pageSize"`
}
+
+type TaskData struct {
+ Order *model.Order
+ Procedure *model.Procedures
+}
diff --git a/model/schedule_task.go b/model/schedule_task.go
deleted file mode 100644
index b8ab664..0000000
--- a/model/schedule_task.go
+++ /dev/null
@@ -1,260 +0,0 @@
-package model
-
-import (
- "apsClient/model/request"
- "apsClient/pkg/sqlitex"
- "fmt"
- "github.com/shopspring/decimal"
- "gorm.io/gorm"
-)
-
-//{
-//"orderId": "0100000",
-//"productId": "PE500A01D/F",
-//"productName": "鍓嶇汉姣涘竷",
-//"parameter": "",
-//"customer": "1200",
-//"deliverDate": "2023-08-16",
-//"orderAttr": "浜у搧绫诲埆:娑ょ憾",
-//"amount": "1200",
-//"unit": "",
-//"startTime": 1692328320,
-//"endTime": 1692946800
-//},
-
-type (
- ScheduleTask struct {
- gorm.Model `json:"-"`
- Id int `json:"id"`
- OrderId string `json:"orderId"` //璁㈠崟id
- ProductId string `json:"productId"` //璁㈠崟id
- ProductName string `json:"productName"` //浜у搧鍚嶇О
- //Parameter string `json:"parameter"` //浜у搧鍚嶇О
- //Customer string `json:"customer"`
- //DeliverDate string `json:"deliverDate"`
- //OrderAttr string `json:"orderAttr"`
- Amount decimal.Decimal `json:"amount"`
- Unit string `json:"unit"`
- StartTime int64 `json:"startTime"`
- EndTime int64 `json:"endTime"`
- Data string `json:"data"` //鎺掔▼浠诲姟json涓�
- TaskInfo request.DeliverScheduleTask `json:"taskInfo" gorm:"-"` //鎺掔▼浠诲姟json涓�
- //Procedures []*Procedures `json:"Procedures" gorm:"many2many:ScheduleTask_Procedures;"`
- }
-
- ScheduleTaskSearch struct {
- ScheduleTask
- Order string
- PageNum int
- PageSize int
- Orm *gorm.DB
- Preload bool
- }
-)
-
-func (slf *ScheduleTask) TableName() string {
- return "schedule_task"
-}
-
-func NewScheduleTaskSearch(db *gorm.DB) *ScheduleTaskSearch {
- if db == nil {
- db = sqlitex.GetDB()
- }
- return &ScheduleTaskSearch{Orm: db}
-}
-
-func (slf *ScheduleTaskSearch) SetOrm(tx *gorm.DB) *ScheduleTaskSearch {
- slf.Orm = tx
- return slf
-}
-
-func (slf *ScheduleTaskSearch) SetPage(page, size int) *ScheduleTaskSearch {
- slf.PageNum, slf.PageSize = page, size
- return slf
-}
-
-func (slf *ScheduleTaskSearch) SetOrder(order string) *ScheduleTaskSearch {
- slf.Order = order
- return slf
-}
-
-func (slf *ScheduleTaskSearch) SetPreload(preload bool) *ScheduleTaskSearch {
- slf.Preload = preload
- return slf
-}
-
-func (slf *ScheduleTaskSearch) SetEndTime(endTime int64) *ScheduleTaskSearch {
- slf.EndTime = endTime
- return slf
-}
-
-func (slf *ScheduleTaskSearch) build() *gorm.DB {
- var db = slf.Orm.Model(&ScheduleTask{})
-
- if slf.Order != "" {
- db = db.Order(slf.Order)
- }
-
- if slf.EndTime > 0 {
- db = db.Where("end_time < ?", slf.EndTime)
- }
-
- //if slf.Preload {
- // db = db.Preload("Procedures")
- //}
-
- return db
-}
-
-// Create 鍗曟潯鎻掑叆
-func (slf *ScheduleTaskSearch) Create(record *ScheduleTask) error {
- var db = slf.build()
-
- if err := db.Create(record).Error; err != nil {
- return fmt.Errorf("create err: %v, record: %+v", err, record)
- }
-
- return nil
-}
-
-// CreateBatch 鎵归噺鎻掑叆
-func (slf *ScheduleTaskSearch) CreateBatch(records []*ScheduleTask) error {
- var db = slf.build()
-
- if err := db.Create(&records).Error; err != nil {
- return fmt.Errorf("create batch err: %v, records: %+v", err, records)
- }
-
- return nil
-}
-
-func (slf *ScheduleTaskSearch) Save(record *ScheduleTask) error {
- var db = slf.build()
-
- if err := db.Save(record).Error; err != nil {
- return fmt.Errorf("save err: %v, record: %+v", err, record)
- }
-
- return nil
-}
-
-func (slf *ScheduleTaskSearch) UpdateByMap(upMap map[string]interface{}) error {
- var (
- db = slf.build()
- )
-
- if err := db.Updates(upMap).Error; err != nil {
- return fmt.Errorf("update by map err: %v, upMap: %+v", err, upMap)
- }
-
- return nil
-}
-
-func (slf *ScheduleTaskSearch) UpdateByQuery(query string, args []interface{}, upMap map[string]interface{}) error {
- var (
- db = slf.Orm.Table(slf.TableName()).Where(query, args...)
- )
-
- if err := db.Updates(upMap).Error; err != nil {
- return fmt.Errorf("update by query err: %v, query: %s, args: %+v, upMap: %+v", err, query, args, upMap)
- }
-
- return nil
-}
-
-func (slf *ScheduleTaskSearch) Delete() error {
- var db = slf.build()
-
- if err := db.Unscoped().Delete(&ScheduleTask{}).Error; err != nil {
- return err
- }
-
- return nil
-}
-
-func (slf *ScheduleTaskSearch) First() (*ScheduleTask, error) {
- var (
- record = new(ScheduleTask)
- db = slf.build()
- )
-
- if err := db.First(record).Error; err != nil {
- return record, err
- }
-
- return record, nil
-}
-
-func (slf *ScheduleTaskSearch) Find() ([]*ScheduleTask, int64, error) {
- var (
- records = make([]*ScheduleTask, 0)
- total int64
- db = slf.build()
- )
-
- if err := db.Count(&total).Error; err != nil {
- return records, total, fmt.Errorf("find count err: %v", err)
- }
- if slf.PageNum*slf.PageSize > 0 {
- db = db.Offset((slf.PageNum - 1) * slf.PageSize).Limit(slf.PageSize)
- }
- if err := db.Find(&records).Error; err != nil {
- return records, total, fmt.Errorf("find records err: %v", err)
- }
-
- return records, total, nil
-}
-
-func (slf *ScheduleTaskSearch) FindNotTotal() ([]*ScheduleTask, error) {
- var (
- records = make([]*ScheduleTask, 0)
- db = slf.build()
- )
-
- if slf.PageNum*slf.PageSize > 0 {
- db = db.Offset((slf.PageNum - 1) * slf.PageSize).Limit(slf.PageSize)
- }
- if err := db.Find(&records).Error; err != nil {
- return records, fmt.Errorf("find records err: %v", err)
- }
-
- return records, nil
-}
-
-// FindByQuery 鎸囧畾鏉′欢鏌ヨ.
-func (slf *ScheduleTaskSearch) FindByQuery(query string, args []interface{}) ([]*ScheduleTask, int64, error) {
- var (
- records = make([]*ScheduleTask, 0)
- total int64
- db = slf.Orm.Table(slf.TableName()).Where(query, args...)
- )
-
- if err := db.Count(&total).Error; err != nil {
- return records, total, fmt.Errorf("find by query count err: %v", err)
- }
- if slf.PageNum*slf.PageSize > 0 {
- db = db.Offset((slf.PageNum - 1) * slf.PageSize).Limit(slf.PageSize)
- }
- if err := db.Find(&records).Error; err != nil {
- return records, total, fmt.Errorf("find by query records err: %v, query: %s, args: %+v", err, query, args)
- }
-
- return records, total, nil
-}
-
-// FindByQueryNotTotal 鎸囧畾鏉′欢鏌ヨ&涓嶆煡璇㈡�绘潯鏁�.
-func (slf *ScheduleTaskSearch) FindByQueryNotTotal(query string, args []interface{}) ([]*ScheduleTask, error) {
- var (
- records = make([]*ScheduleTask, 0)
- db = slf.Orm.Table(slf.TableName()).Where(query, args...)
- )
-
- if slf.PageNum*slf.PageSize > 0 {
- db = db.Offset((slf.PageNum - 1) * slf.PageSize).Limit(slf.PageSize)
- }
- if err := db.Find(&records).Error; err != nil {
- return records, fmt.Errorf("find by query records err: %v, query: %s, args: %+v", err, query, args)
- }
-
- return records, nil
-}
diff --git a/nsq/msg_handler.go b/nsq/msg_handler.go
index 495b6ef..fef9a83 100644
--- a/nsq/msg_handler.go
+++ b/nsq/msg_handler.go
@@ -1,10 +1,13 @@
package nsq
import (
+ "apsClient/conf"
"apsClient/model"
"apsClient/pkg/logx"
+ "apsClient/pkg/structx"
"encoding/json"
"fmt"
+ "gorm.io/gorm"
)
type MsgHandler interface {
@@ -25,26 +28,38 @@
return err
}
for _, task := range tasks {
- taskRecord := model.ScheduleTask{
- Id: 0,
- OrderId: task.Order.OrderID,
- ProductId: task.Order.ProductID,
- ProductName: task.Order.ProductName,
- Amount: task.Order.Amount,
- Unit: task.Order.Unit,
- StartTime: task.Order.StartTime,
- EndTime: task.Order.EndTime,
- }
- jsonStr, err := json.Marshal(task)
- if err != nil {
- logx.Errorf("ScheduleTask HandleMessage Marshal err: %v, old: %#v", err.Error(), task)
- return err
- }
- taskRecord.Data = string(jsonStr)
- err = model.NewScheduleTaskSearch(nil).Create(&taskRecord)
- if err != nil {
- logx.Errorf("ScheduleTask HandleMessage Create taskRecord err: %v, record: %#v", err.Error(), taskRecord)
- return err
+ for _, procedure := range task.Procedures {
+ if procedure.DeviceID == conf.Conf.System.DeviceId { //鍙瓨鍌ㄦ湰璁惧鐨勫伐搴�
+ err = model.WithTransaction(func(db *gorm.DB) error {
+ _, err := model.NewOrderSearch(db).SetOrderId(task.Order.OrderID).First()
+ if err == gorm.ErrRecordNotFound {
+ var orderRecord model.Order
+ err = structx.AssignTo(task.Order, &orderRecord)
+ orderRecord.Status = model.OrderStatusUnFinished
+ if err != nil {
+ logx.Errorf(" structx.Assign task.Order to orderRecord err: %v", err.Error())
+ return err
+ }
+ if err = model.NewOrderSearch(db).Create(&orderRecord); err != nil {
+ return err
+ }
+ }
+ procedureRecord := model.Procedures{
+ OrderID: task.Order.OrderID,
+ Status: model.ProcedureStatusUnFinished,
+ }
+ procedureData, err := json.Marshal(procedure)
+ procedureRecord.ProcedureData = string(procedureData)
+ if err != nil {
+ logx.Errorf(" json.Marshal(procedure) err: %v", err.Error())
+ return err
+ }
+ return model.NewProceduresSearch(db).Create(&procedureRecord)
+ })
+ if err != nil {
+ logx.Errorf(" save procedure err: %v", err.Error())
+ }
+ }
}
}
return nil
diff --git a/pkg/plc/plc4x.go b/pkg/plc/plc4x.go
new file mode 100644
index 0000000..8afb487
--- /dev/null
+++ b/pkg/plc/plc4x.go
@@ -0,0 +1,127 @@
+package plc
+
+import (
+ "errors"
+ "fmt"
+ apiModel "github.com/apache/plc4x/plc4go/pkg/api/model"
+
+ plc4go "github.com/apache/plc4x/plc4go/pkg/api"
+ "github.com/apache/plc4x/plc4go/pkg/api/drivers"
+ "github.com/apache/plc4x/plc4go/pkg/api/transports"
+)
+
+func NewModbusConnection(ipAddr string) (plc4go.PlcConnection, error) {
+ // 鍒涘缓椹卞姩绠$悊鍣�
+ driverManager := plc4go.NewPlcDriverManager()
+
+ // 娉ㄥ唽TCP浼犺緭
+ transports.RegisterTcpTransport(driverManager)
+
+ // 娉ㄥ唽椹卞姩
+ //drivers.RegisterKnxDriver(driverManager)
+ drivers.RegisterModbusTcpDriver(driverManager)
+
+ // 閫氳繃TCP杩炴帴PLC璁惧
+ connectionString := fmt.Sprintf("modbus-tcp://%s", ipAddr)
+ connectionRequestChanel := driverManager.GetConnection(connectionString)
+
+ // 绛夊緟杩炴帴鍝嶅簲
+ connectionResult := <-connectionRequestChanel
+
+ // 鍒ゆ柇鏄惁杩炴帴鎴愬姛
+ if err := connectionResult.GetErr(); err != nil {
+ return nil, err
+ }
+
+ return connectionResult.GetConnection(), nil
+}
+func ReadHoldingRegisterSingle(connection plc4go.PlcConnection, address int) ([]byte, error) {
+ tagAddress := fmt.Sprintf("holding-register:%d:UINT", address)
+
+ // 璇绘ā寮�
+ readRequest, err := connection.ReadRequestBuilder().AddTagAddress("tag", tagAddress).Build()
+ if err != nil {
+ fmt.Printf("preparing read-request:%s\n", err.Error())
+ return nil, err
+ }
+
+ // 鎵ц
+ readResult := <-readRequest.Execute()
+ if err := readResult.GetErr(); err != nil {
+ fmt.Printf("execting read-request:%s\n", err.Error())
+ return nil, err
+ }
+
+ // 鍒ゆ柇鍝嶅簲鐮佹槸鍚︽纭�
+ if readResult.GetResponse().GetResponseCode("tag") != apiModel.PlcResponseCode_OK {
+ fmt.Printf("error an non-ok return code: %s", readResult.GetResponse().GetResponseCode("tag").GetName())
+ return nil, nil
+ }
+
+ value := readResult.GetResponse().GetValue("tag")
+
+ return value.GetRaw(), err
+
+}
+
+func ReadHoldingRegisterList(connection plc4go.PlcConnection, address, length int) ([]byte, error) {
+ tagAddress := fmt.Sprintf("holding-register:%d:UINT[%d]", address, length)
+
+ // 璇绘ā寮�
+ readRequest, err := connection.ReadRequestBuilder().AddTagAddress("tag", tagAddress).Build()
+ if err != nil {
+ fmt.Printf("preparing read-request:%s\n", err.Error())
+ return nil, err
+ }
+
+ // 鎵ц
+ readResult := <-readRequest.Execute()
+ if err := readResult.GetErr(); err != nil {
+ fmt.Printf("execting read-request:%s\n", err.Error())
+ return nil, err
+ }
+
+ // 鍒ゆ柇鍝嶅簲鐮佹槸鍚︽纭�
+ if readResult.GetResponse().GetResponseCode("tag") != apiModel.PlcResponseCode_OK {
+ fmt.Printf("error an non-ok return code: %s", readResult.GetResponse().GetResponseCode("tag").GetName())
+ return nil, errors.New("error code: " + readResult.GetResponse().GetResponseCode("tag").GetName())
+ }
+
+ value := readResult.GetResponse().GetValue("tag")
+
+ var result []byte
+
+ for _, val := range value.GetList() {
+ result = append(result, val.GetRaw()...)
+ }
+
+ return result, nil
+}
+
+func WriteHoldingRegister(connection plc4go.PlcConnection, address int, value any) (string, error) {
+ tagAddress := fmt.Sprintf("holding-register:%d:UINT", address)
+
+ // 鍐欐ā寮�
+ writeRequest, err := connection.WriteRequestBuilder().AddTagAddress("tag", tagAddress, value).Build()
+ if err != nil {
+ fmt.Printf("preparing read-request:%s\n", err.Error())
+ return "", err
+ }
+
+ // 鎵ц
+ writeResult := <-writeRequest.Execute()
+ if err := writeResult.GetErr(); err != nil {
+ fmt.Printf("execting read-request:%s\n", err.Error())
+ return "", err
+ }
+
+ // 鍒ゆ柇鍝嶅簲鐮佹槸鍚︽纭�
+ if writeResult.GetResponse().GetResponseCode("tag") != apiModel.PlcResponseCode_OK {
+ fmt.Printf("error an non-ok return code: %s", writeResult.GetResponse().GetResponseCode("tag").GetName())
+ return "", errors.New("error code: " + writeResult.GetResponse().GetResponseCode("tag").GetName())
+ }
+
+ result := writeResult.GetResponse().String()
+
+ return result, nil
+}
diff --git a/router/index.go b/router/index.go
index 3e5f9c7..462624d 100644
--- a/router/index.go
+++ b/router/index.go
@@ -32,17 +32,12 @@
v1Group := Router.Group("v1")
- // 鎺ユ敹閫氱煡
- noticeApi := new(v1.NoticeApi)
- noticeGroup := v1Group.Group("notice")
- {
- noticeGroup.POST("task/start", noticeApi.TaskStart) // 浠诲姟寮�鍚�氱煡
- }
-
taskApi := new(v1.TaskApi)
taskGroup := v1Group.Group("task")
{
- taskGroup.GET("list", taskApi.TaskList) // 浠诲姟寮�鍚�氱煡
+ taskGroup.GET("get", taskApi.TaskGet) // 鑾峰彇宸ュ簭
+ taskGroup.GET("start/:id", taskApi.TaskStart) // 寮�鍚伐搴忓苟鑾峰彇鍙傛暟
+ taskGroup.PUT("finish/:id", taskApi.TaskFinish) // 瀹屾垚宸ュ簭
}
return Router
diff --git a/service/task.go b/service/task.go
index bf65ebf..11b543b 100644
--- a/service/task.go
+++ b/service/task.go
@@ -2,7 +2,10 @@
import (
"apsClient/model"
+ "apsClient/model/response"
"apsClient/pkg/ecode"
+ "gorm.io/gorm"
+ "time"
)
type TaskService struct {
@@ -12,16 +15,62 @@
return &TaskService{}
}
-func (slf TaskService) GetTaskList(page, pageSize int) (taskList []*model.ScheduleTask, total int64, code int) {
- search := model.NewScheduleTaskSearch(nil)
- search.SetPage(page, pageSize).
- SetPreload(true)
- //SetEndTime(time.Now().Unix())
- var err error
- taskList, total, err = search.Find()
- if err != nil {
- return
+// GetTask 鑾峰彇浠诲姟锛屾湭瀹屾垚鐨勫紑濮嬫椂闂存渶鏃╃殑浠诲姟
+func (slf TaskService) GetTask() (taskData *response.TaskData, code int) {
+ nowTs := time.Now().Unix()
+ orderSearch := model.NewOrderSearch(nil)
+ orderSearch.SetOrder("created_at asc").
+ SetStartTimeMin(nowTs).
+ SetStatus(model.OrderStatusUnFinished)
+ var (
+ err error
+ order *model.Order
+ )
+ order, err = orderSearch.First() //鍏堝彇杩涜涓殑浠诲姟
+ if err == gorm.ErrRecordNotFound {
+ err = nil
+ return nil, ecode.OK
}
- return taskList, total, ecode.OK
+ if err != nil {
+ return nil, ecode.DBErr
+ }
+ procedure, err := model.NewProceduresSearch(nil).
+ SetOrderId(order.OrderID).
+ SetStartTimeMin(nowTs).
+ SetStatus(model.ProcedureStatusUnFinished).
+ First()
+ if err == gorm.ErrRecordNotFound { //璇ヨ鍗曟湰璁惧鍏ㄩ儴宸ュ簭瀹屾垚锛屾妸璁㈠崟缃负瀹屾垚鐘舵�侊紙鍙槸瀵规湰璁惧瀹屾垚锛�
+ err = nil
+ err = model.NewOrderSearch(nil).SetOrderId(order.OrderID).UpdateByMap(map[string]interface{}{
+ "status": model.OrderStatusFinished,
+ })
+ if err != nil {
+ return nil, ecode.DBErr
+ }
+ return slf.GetTask() //褰撳墠璁㈠崟宸插畬鍏紝缁х画鏌ヨ鏈畬鎴愯鍗�
+ }
+ if err != nil {
+ return nil, ecode.DBErr
+ }
+ taskData.Order = order
+ taskData.Procedure = procedure
+ return taskData, ecode.OK
+}
+func (slf TaskService) GetProcedureById(id int) (*model.Procedures, int) {
+ procedure, err := model.NewProceduresSearch(nil).SetId(id).First()
+ if err != nil {
+ return nil, ecode.DBErr
+ }
+ return procedure, ecode.OK
+}
+
+func (slf TaskService) UpdateProcedureStatus(id int, status model.ProcedureStatus) error {
+ return model.NewProceduresSearch(nil).SetId(id).UpdateByMap(map[string]interface{}{
+ "status": status,
+ })
+}
+
+func (slf TaskService) GetOrderByOrderId(orderId string) (order *model.Order, err error) {
+ return model.NewOrderSearch(nil).SetOrderId(orderId).First()
}
--
Gitblit v1.8.0