From 66a85c70afb149986871febe17a4133b6995cd09 Mon Sep 17 00:00:00 2001
From: zhangqian <zhangqian@123.com>
Date: 星期四, 30 十一月 2023 19:58:02 +0800
Subject: [PATCH] dashboard接口和数据表
---
model/dashboard.go | 364 ++++++++++++++++++++
api/v1/dashboard.go | 24 +
service/dashboard.go | 14
router/index.go | 6
docs/swagger.yaml | 173 +++++++++
docs/docs.go | 249 +++++++++++++
docs/swagger.json | 249 +++++++++++++
7 files changed, 1,068 insertions(+), 11 deletions(-)
diff --git a/api/v1/dashboard.go b/api/v1/dashboard.go
new file mode 100644
index 0000000..581a4c7
--- /dev/null
+++ b/api/v1/dashboard.go
@@ -0,0 +1,24 @@
+package v1
+
+import (
+ "apsClient/pkg/contextx"
+ "apsClient/service"
+ "github.com/gin-gonic/gin"
+)
+
+type DashboardApi struct{}
+
+// Dashboard
+// @Tags 椹鹃┒鑸�
+// @Summary 椹鹃┒鑸�
+// @Produce application/json
+// @Success 200 {object} contextx.Response{data=model.Dashboard} "鎴愬姛"
+// @Router /v1/dashboard/dashboard [get]
+func (slf *DashboardApi) Dashboard(c *gin.Context) {
+ ctx, ok := contextx.NewContext(c, nil)
+ if !ok {
+ return
+ }
+ data := service.GetDashBoard()
+ ctx.OkWithDetailed(data)
+}
diff --git a/docs/docs.go b/docs/docs.go
index 935673b..6190c30 100644
--- a/docs/docs.go
+++ b/docs/docs.go
@@ -152,6 +152,37 @@
}
}
},
+ "/v1/dashboard/dashboard": {
+ "get": {
+ "produces": [
+ "application/json"
+ ],
+ "tags": [
+ "椹鹃┒鑸�"
+ ],
+ "summary": "椹鹃┒鑸�",
+ "responses": {
+ "200": {
+ "description": "鎴愬姛",
+ "schema": {
+ "allOf": [
+ {
+ "$ref": "#/definitions/contextx.Response"
+ },
+ {
+ "type": "object",
+ "properties": {
+ "data": {
+ "$ref": "#/definitions/model.Dashboard"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ }
+ },
"/v1/device/config": {
"post": {
"produces": [
@@ -1162,6 +1193,174 @@
}
}
},
+ "model.CommonStats": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "value": {
+ "type": "string"
+ }
+ }
+ },
+ "model.Dashboard": {
+ "type": "object",
+ "properties": {
+ "createdAt": {
+ "type": "string"
+ },
+ "delayWorkOrderAmount": {
+ "description": "寤舵湡浜や粯宸ュ崟鏁�",
+ "type": "integer"
+ },
+ "deletedAt": {
+ "type": "string"
+ },
+ "deviceLoad": {
+ "description": "璁惧璐熻嵎瀵规瘮鍒嗘瀽",
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/model.CommonStats"
+ }
+ },
+ "deviceLoadData": {
+ "description": "璁惧璐熻嵎瀵规瘮鍒嗘瀽",
+ "type": "string"
+ },
+ "deviceRunningAmount": {
+ "description": "寮�鏈哄彴鏁�",
+ "type": "integer"
+ },
+ "externalDeviceRunningAmount": {
+ "description": "澶栧姞宸ュ彴鏁�",
+ "type": "integer"
+ },
+ "id": {
+ "type": "integer"
+ },
+ "inMaintenanceDeviceAmount": {
+ "description": "缁翠慨涓澶囨暟",
+ "type": "integer"
+ },
+ "internalDeviceRunningAmount": {
+ "description": "鑷湁寮�鏈哄彴鏁�",
+ "type": "integer"
+ },
+ "materialMissWorkOrderAmount": {
+ "description": "鐗╂枡涓嶈冻宸ュ崟鏁�",
+ "type": "integer"
+ },
+ "materialRequirement": {
+ "description": "鐗╂枡闇�姹傜粺璁�",
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/model.CommonStats"
+ }
+ },
+ "materialRequirementData": {
+ "description": "鐗╂枡闇�姹傜粺璁�",
+ "type": "string"
+ },
+ "orderFinishRate": {
+ "description": "璁㈠崟瀹屾垚姣旂巼",
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/model.CommonStats"
+ }
+ },
+ "orderFinishRateData": {
+ "description": "璁㈠崟瀹屾垚姣旂巼",
+ "type": "string"
+ },
+ "outPlanProductionAmount": {
+ "description": "璁″垝澶栧姞宸ユ暟",
+ "type": "integer"
+ },
+ "personnelProductivity": {
+ "description": "浜哄憳鐢熶骇鏁堢巼",
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/model.CommonStats"
+ }
+ },
+ "personnelProductivityData": {
+ "description": "浜哄憳鐢熶骇鏁堢巼",
+ "type": "string"
+ },
+ "personnelSkillPercent": {
+ "description": "浜哄憳鎶�鑳藉崰姣�",
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/model.CommonStats"
+ }
+ },
+ "personnelSkillPercentData": {
+ "description": "浜哄憳鎶�鑳藉崰姣�",
+ "type": "string"
+ },
+ "planOrderFinishRate": {
+ "description": "璁″垝杈炬垚鐜�",
+ "type": "string"
+ },
+ "planProductionAmount": {
+ "description": "璁″垝鍔犲伐鏁�",
+ "type": "integer"
+ },
+ "realExternalProductionAmount": {
+ "description": "瀹為檯澶栧姞宸ユ暟",
+ "type": "integer"
+ },
+ "realProductionAmount": {
+ "description": "瀹為檯鐢熶骇鏁�",
+ "type": "integer"
+ },
+ "todayFinishAmount": {
+ "description": "杞﹂棿褰撴棩鍚堣鐢熶骇",
+ "type": "integer"
+ },
+ "todayQualifiedRate": {
+ "description": "杞﹂棿褰撴棩姝e搧鐜�",
+ "type": "string"
+ },
+ "totalDeviceAmount": {
+ "description": "鎬昏澶囨暟",
+ "type": "integer"
+ },
+ "updatedAt": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "workOrderAmount": {
+ "description": "鐢熶骇宸ュ崟鏁�",
+ "type": "integer"
+ },
+ "workOrderStats": {
+ "description": "宸ュ崟杩涘害缁熻",
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/model.WorkOrderStats"
+ }
+ },
+ "workOrderStatsData": {
+ "description": "宸ュ崟杩涘害缁熻",
+ "type": "string"
+ },
+ "workshopStats": {
+ "description": "杞﹂棿缁熻",
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/model.WorkshopStats"
+ }
+ },
+ "workshopStatsData": {
+ "description": "杞﹂棿缁熻",
+ "type": "string"
+ }
+ }
+ },
"model.DevicePlc": {
"type": "object",
"properties": {
@@ -1548,10 +1747,6 @@
"description": "鏉″舰鐮�",
"type": "string"
},
- "channel": {
- "description": "閫氶亾",
- "type": "integer"
- },
"createdAt": {
"type": "string"
},
@@ -1612,6 +1807,52 @@
}
}
},
+ "model.WorkOrderStats": {
+ "type": "object",
+ "properties": {
+ "delayDays": {
+ "description": "寤舵湡澶╂暟",
+ "type": "integer"
+ },
+ "number": {
+ "description": "缂栧彿",
+ "type": "string"
+ },
+ "percent": {
+ "description": "瀹屾垚杩涘害",
+ "type": "integer"
+ },
+ "planTime": {
+ "description": "璁″垝鏃堕棿",
+ "type": "string"
+ },
+ "product": {
+ "description": "浜у搧",
+ "type": "string"
+ },
+ "scale": {
+ "description": "瑙勬牸",
+ "type": "string"
+ }
+ }
+ },
+ "model.WorkshopStats": {
+ "type": "object",
+ "properties": {
+ "defective": {
+ "type": "integer"
+ },
+ "percent": {
+ "type": "integer"
+ },
+ "qualified": {
+ "type": "integer"
+ },
+ "total": {
+ "type": "integer"
+ }
+ }
+ },
"problem.CheckResult": {
"type": "object",
"properties": {
diff --git a/docs/swagger.json b/docs/swagger.json
index ec52546..8144264 100644
--- a/docs/swagger.json
+++ b/docs/swagger.json
@@ -140,6 +140,37 @@
}
}
},
+ "/v1/dashboard/dashboard": {
+ "get": {
+ "produces": [
+ "application/json"
+ ],
+ "tags": [
+ "椹鹃┒鑸�"
+ ],
+ "summary": "椹鹃┒鑸�",
+ "responses": {
+ "200": {
+ "description": "鎴愬姛",
+ "schema": {
+ "allOf": [
+ {
+ "$ref": "#/definitions/contextx.Response"
+ },
+ {
+ "type": "object",
+ "properties": {
+ "data": {
+ "$ref": "#/definitions/model.Dashboard"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ }
+ },
"/v1/device/config": {
"post": {
"produces": [
@@ -1150,6 +1181,174 @@
}
}
},
+ "model.CommonStats": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "value": {
+ "type": "string"
+ }
+ }
+ },
+ "model.Dashboard": {
+ "type": "object",
+ "properties": {
+ "createdAt": {
+ "type": "string"
+ },
+ "delayWorkOrderAmount": {
+ "description": "寤舵湡浜や粯宸ュ崟鏁�",
+ "type": "integer"
+ },
+ "deletedAt": {
+ "type": "string"
+ },
+ "deviceLoad": {
+ "description": "璁惧璐熻嵎瀵规瘮鍒嗘瀽",
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/model.CommonStats"
+ }
+ },
+ "deviceLoadData": {
+ "description": "璁惧璐熻嵎瀵规瘮鍒嗘瀽",
+ "type": "string"
+ },
+ "deviceRunningAmount": {
+ "description": "寮�鏈哄彴鏁�",
+ "type": "integer"
+ },
+ "externalDeviceRunningAmount": {
+ "description": "澶栧姞宸ュ彴鏁�",
+ "type": "integer"
+ },
+ "id": {
+ "type": "integer"
+ },
+ "inMaintenanceDeviceAmount": {
+ "description": "缁翠慨涓澶囨暟",
+ "type": "integer"
+ },
+ "internalDeviceRunningAmount": {
+ "description": "鑷湁寮�鏈哄彴鏁�",
+ "type": "integer"
+ },
+ "materialMissWorkOrderAmount": {
+ "description": "鐗╂枡涓嶈冻宸ュ崟鏁�",
+ "type": "integer"
+ },
+ "materialRequirement": {
+ "description": "鐗╂枡闇�姹傜粺璁�",
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/model.CommonStats"
+ }
+ },
+ "materialRequirementData": {
+ "description": "鐗╂枡闇�姹傜粺璁�",
+ "type": "string"
+ },
+ "orderFinishRate": {
+ "description": "璁㈠崟瀹屾垚姣旂巼",
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/model.CommonStats"
+ }
+ },
+ "orderFinishRateData": {
+ "description": "璁㈠崟瀹屾垚姣旂巼",
+ "type": "string"
+ },
+ "outPlanProductionAmount": {
+ "description": "璁″垝澶栧姞宸ユ暟",
+ "type": "integer"
+ },
+ "personnelProductivity": {
+ "description": "浜哄憳鐢熶骇鏁堢巼",
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/model.CommonStats"
+ }
+ },
+ "personnelProductivityData": {
+ "description": "浜哄憳鐢熶骇鏁堢巼",
+ "type": "string"
+ },
+ "personnelSkillPercent": {
+ "description": "浜哄憳鎶�鑳藉崰姣�",
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/model.CommonStats"
+ }
+ },
+ "personnelSkillPercentData": {
+ "description": "浜哄憳鎶�鑳藉崰姣�",
+ "type": "string"
+ },
+ "planOrderFinishRate": {
+ "description": "璁″垝杈炬垚鐜�",
+ "type": "string"
+ },
+ "planProductionAmount": {
+ "description": "璁″垝鍔犲伐鏁�",
+ "type": "integer"
+ },
+ "realExternalProductionAmount": {
+ "description": "瀹為檯澶栧姞宸ユ暟",
+ "type": "integer"
+ },
+ "realProductionAmount": {
+ "description": "瀹為檯鐢熶骇鏁�",
+ "type": "integer"
+ },
+ "todayFinishAmount": {
+ "description": "杞﹂棿褰撴棩鍚堣鐢熶骇",
+ "type": "integer"
+ },
+ "todayQualifiedRate": {
+ "description": "杞﹂棿褰撴棩姝e搧鐜�",
+ "type": "string"
+ },
+ "totalDeviceAmount": {
+ "description": "鎬昏澶囨暟",
+ "type": "integer"
+ },
+ "updatedAt": {
+ "type": "string"
+ },
+ "version": {
+ "type": "string"
+ },
+ "workOrderAmount": {
+ "description": "鐢熶骇宸ュ崟鏁�",
+ "type": "integer"
+ },
+ "workOrderStats": {
+ "description": "宸ュ崟杩涘害缁熻",
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/model.WorkOrderStats"
+ }
+ },
+ "workOrderStatsData": {
+ "description": "宸ュ崟杩涘害缁熻",
+ "type": "string"
+ },
+ "workshopStats": {
+ "description": "杞﹂棿缁熻",
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/model.WorkshopStats"
+ }
+ },
+ "workshopStatsData": {
+ "description": "杞﹂棿缁熻",
+ "type": "string"
+ }
+ }
+ },
"model.DevicePlc": {
"type": "object",
"properties": {
@@ -1536,10 +1735,6 @@
"description": "鏉″舰鐮�",
"type": "string"
},
- "channel": {
- "description": "閫氶亾",
- "type": "integer"
- },
"createdAt": {
"type": "string"
},
@@ -1600,6 +1795,52 @@
}
}
},
+ "model.WorkOrderStats": {
+ "type": "object",
+ "properties": {
+ "delayDays": {
+ "description": "寤舵湡澶╂暟",
+ "type": "integer"
+ },
+ "number": {
+ "description": "缂栧彿",
+ "type": "string"
+ },
+ "percent": {
+ "description": "瀹屾垚杩涘害",
+ "type": "integer"
+ },
+ "planTime": {
+ "description": "璁″垝鏃堕棿",
+ "type": "string"
+ },
+ "product": {
+ "description": "浜у搧",
+ "type": "string"
+ },
+ "scale": {
+ "description": "瑙勬牸",
+ "type": "string"
+ }
+ }
+ },
+ "model.WorkshopStats": {
+ "type": "object",
+ "properties": {
+ "defective": {
+ "type": "integer"
+ },
+ "percent": {
+ "type": "integer"
+ },
+ "qualified": {
+ "type": "integer"
+ },
+ "total": {
+ "type": "integer"
+ }
+ }
+ },
"problem.CheckResult": {
"type": "object",
"properties": {
diff --git a/docs/swagger.yaml b/docs/swagger.yaml
index f69843e..b96b9ed 100644
--- a/docs/swagger.yaml
+++ b/docs/swagger.yaml
@@ -192,6 +192,127 @@
total:
type: integer
type: object
+ model.CommonStats:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ type: object
+ model.Dashboard:
+ properties:
+ createdAt:
+ type: string
+ delayWorkOrderAmount:
+ description: 寤舵湡浜や粯宸ュ崟鏁�
+ type: integer
+ deletedAt:
+ type: string
+ deviceLoad:
+ description: 璁惧璐熻嵎瀵规瘮鍒嗘瀽
+ items:
+ $ref: '#/definitions/model.CommonStats'
+ type: array
+ deviceLoadData:
+ description: 璁惧璐熻嵎瀵规瘮鍒嗘瀽
+ type: string
+ deviceRunningAmount:
+ description: 寮�鏈哄彴鏁�
+ type: integer
+ externalDeviceRunningAmount:
+ description: 澶栧姞宸ュ彴鏁�
+ type: integer
+ id:
+ type: integer
+ inMaintenanceDeviceAmount:
+ description: 缁翠慨涓澶囨暟
+ type: integer
+ internalDeviceRunningAmount:
+ description: 鑷湁寮�鏈哄彴鏁�
+ type: integer
+ materialMissWorkOrderAmount:
+ description: 鐗╂枡涓嶈冻宸ュ崟鏁�
+ type: integer
+ materialRequirement:
+ description: 鐗╂枡闇�姹傜粺璁�
+ items:
+ $ref: '#/definitions/model.CommonStats'
+ type: array
+ materialRequirementData:
+ description: 鐗╂枡闇�姹傜粺璁�
+ type: string
+ orderFinishRate:
+ description: 璁㈠崟瀹屾垚姣旂巼
+ items:
+ $ref: '#/definitions/model.CommonStats'
+ type: array
+ orderFinishRateData:
+ description: 璁㈠崟瀹屾垚姣旂巼
+ type: string
+ outPlanProductionAmount:
+ description: 璁″垝澶栧姞宸ユ暟
+ type: integer
+ personnelProductivity:
+ description: 浜哄憳鐢熶骇鏁堢巼
+ items:
+ $ref: '#/definitions/model.CommonStats'
+ type: array
+ personnelProductivityData:
+ description: 浜哄憳鐢熶骇鏁堢巼
+ type: string
+ personnelSkillPercent:
+ description: 浜哄憳鎶�鑳藉崰姣�
+ items:
+ $ref: '#/definitions/model.CommonStats'
+ type: array
+ personnelSkillPercentData:
+ description: 浜哄憳鎶�鑳藉崰姣�
+ type: string
+ planOrderFinishRate:
+ description: 璁″垝杈炬垚鐜�
+ type: string
+ planProductionAmount:
+ description: 璁″垝鍔犲伐鏁�
+ type: integer
+ realExternalProductionAmount:
+ description: 瀹為檯澶栧姞宸ユ暟
+ type: integer
+ realProductionAmount:
+ description: 瀹為檯鐢熶骇鏁�
+ type: integer
+ todayFinishAmount:
+ description: 杞﹂棿褰撴棩鍚堣鐢熶骇
+ type: integer
+ todayQualifiedRate:
+ description: 杞﹂棿褰撴棩姝e搧鐜�
+ type: string
+ totalDeviceAmount:
+ description: 鎬昏澶囨暟
+ type: integer
+ updatedAt:
+ type: string
+ version:
+ type: string
+ workOrderAmount:
+ description: 鐢熶骇宸ュ崟鏁�
+ type: integer
+ workOrderStats:
+ description: 宸ュ崟杩涘害缁熻
+ items:
+ $ref: '#/definitions/model.WorkOrderStats'
+ type: array
+ workOrderStatsData:
+ description: 宸ュ崟杩涘害缁熻
+ type: string
+ workshopStats:
+ description: 杞﹂棿缁熻
+ items:
+ $ref: '#/definitions/model.WorkshopStats'
+ type: array
+ workshopStatsData:
+ description: 杞﹂棿缁熻
+ type: string
+ type: object
model.DevicePlc:
properties:
address:
@@ -454,9 +575,6 @@
barCode:
description: 鏉″舰鐮�
type: string
- channel:
- description: 閫氶亾
- type: integer
createdAt:
type: string
deletedAt:
@@ -497,6 +615,38 @@
type: string
workerTime:
description: 宸ユ椂锛屽崟浣嶇
+ type: integer
+ type: object
+ model.WorkOrderStats:
+ properties:
+ delayDays:
+ description: 寤舵湡澶╂暟
+ type: integer
+ number:
+ description: 缂栧彿
+ type: string
+ percent:
+ description: 瀹屾垚杩涘害
+ type: integer
+ planTime:
+ description: 璁″垝鏃堕棿
+ type: string
+ product:
+ description: 浜у搧
+ type: string
+ scale:
+ description: 瑙勬牸
+ type: string
+ type: object
+ model.WorkshopStats:
+ properties:
+ defective:
+ type: integer
+ percent:
+ type: integer
+ qualified:
+ type: integer
+ total:
type: integer
type: object
problem.CheckResult:
@@ -854,6 +1004,23 @@
summary: 鏇存柊plc閰嶇疆
tags:
- Config
+ /v1/dashboard/dashboard:
+ get:
+ produces:
+ - application/json
+ responses:
+ "200":
+ description: 鎴愬姛
+ schema:
+ allOf:
+ - $ref: '#/definitions/contextx.Response'
+ - properties:
+ data:
+ $ref: '#/definitions/model.Dashboard'
+ type: object
+ summary: 椹鹃┒鑸�
+ tags:
+ - 椹鹃┒鑸�
/v1/device/config:
post:
parameters:
diff --git a/model/dashboard.go b/model/dashboard.go
new file mode 100644
index 0000000..79a54cf
--- /dev/null
+++ b/model/dashboard.go
@@ -0,0 +1,364 @@
+package model
+
+import (
+ "apsClient/pkg/sqlitex"
+ "encoding/json"
+ "fmt"
+ "github.com/jinzhu/gorm"
+)
+
+type (
+ Dashboard struct {
+ gorm.Model
+ Version string
+ DeviceRunningAmount int //寮�鏈哄彴鏁�
+ totalProductionAmount int //鎬讳骇閲�
+ WorkOrderAmount int //鐢熶骇宸ュ崟鏁�
+ DelayWorkOrderAmount int //寤舵湡浜や粯宸ュ崟鏁�
+ MaterialMissWorkOrderAmount int //鐗╂枡涓嶈冻宸ュ崟鏁�
+ PlanOrderFinishRate string //璁″垝杈炬垚鐜�
+ TotalDeviceAmount int //鎬昏澶囨暟
+ InMaintenanceDeviceAmount int //缁翠慨涓澶囨暟
+ InternalDeviceRunningAmount int //鑷湁寮�鏈哄彴鏁�
+ ExternalDeviceRunningAmount int //澶栧姞宸ュ彴鏁�
+ OutPlanProductionAmount int //璁″垝澶栧姞宸ユ暟
+ PlanProductionAmount int //璁″垝鍔犲伐鏁�
+ RealExternalProductionAmount int //瀹為檯澶栧姞宸ユ暟
+ RealProductionAmount int //瀹為檯鐢熶骇鏁�
+
+ DeviceLoadData string //璁惧璐熻嵎瀵规瘮鍒嗘瀽
+ DeviceLoad []*CommonStats `gorm:"-"` //璁惧璐熻嵎瀵规瘮鍒嗘瀽
+ MaterialRequirementData string //鐗╂枡闇�姹傜粺璁�
+ MaterialRequirement []*CommonStats `gorm:"-"` //鐗╂枡闇�姹傜粺璁�
+ OrderFinishRateData string //璁㈠崟瀹屾垚姣旂巼
+ OrderFinishRate []*CommonStats `gorm:"-"` //璁㈠崟瀹屾垚姣旂巼
+ PersonnelProductivityData string //浜哄憳鐢熶骇鏁堢巼
+ PersonnelProductivity []*CommonStats `gorm:"-"` //浜哄憳鐢熶骇鏁堢巼
+ PersonnelSkillPercentData string //浜哄憳鎶�鑳藉崰姣�
+ PersonnelSkillPercent []*CommonStats `gorm:"-"` //浜哄憳鎶�鑳藉崰姣�
+
+ TodayFinishAmount int //杞﹂棿褰撴棩鍚堣鐢熶骇
+ TodayQualifiedRate string //杞﹂棿褰撴棩姝e搧鐜�
+ WorkshopStatsData string //杞﹂棿缁熻
+ WorkshopStats []*WorkshopStats `gorm:"-"` //杞﹂棿缁熻
+ WorkOrderStatsData string //宸ュ崟杩涘害缁熻
+ WorkOrderStats []*WorkOrderStats `gorm:"-"` //宸ュ崟杩涘害缁熻
+ }
+
+ CommonStats struct {
+ Name string
+ Value string
+ }
+
+ WorkshopStats struct {
+ Total int
+ Qualified int
+ Defective int
+ Percent int
+ }
+
+ WorkOrderStats struct {
+ Number string //缂栧彿
+ Product string //浜у搧
+ Scale string //瑙勬牸
+ PlanTime string //璁″垝鏃堕棿
+ Percent int //瀹屾垚杩涘害
+ procedureNum int //宸ュ簭鏁伴噺
+ DelayDays int //寤舵湡澶╂暟
+ }
+
+ DashboardSearch struct {
+ Dashboard
+ Order string
+ PageNum int
+ PageSize int
+ Orm *gorm.DB
+ }
+)
+
+const (
+ VersionV1 = "v1" //12鏈�9鍙峰ぎ瑙嗚闂増鏈�
+)
+
+func (slf *Dashboard) TableName() string {
+ return "dashboard"
+}
+
+func (slf *Dashboard) AfterFind(db *gorm.DB) error {
+ var deviceLoad []*CommonStats
+ var materialRequirement []*CommonStats
+ var orderFinishRate []*CommonStats
+ var personnelProductivity []*CommonStats
+ var personnelSkillPercent []*CommonStats
+ var workshopStats []*WorkshopStats
+ var workOrderStats []*WorkOrderStats
+ var err error
+ if slf.DeviceLoadData != "" {
+ if err = json.Unmarshal([]byte(slf.DeviceLoadData), &deviceLoad); err == nil {
+ slf.DeviceLoad = deviceLoad
+ }
+ }
+ if slf.MaterialRequirementData != "" {
+ if err = json.Unmarshal([]byte(slf.MaterialRequirementData), &materialRequirement); err == nil {
+ slf.MaterialRequirement = materialRequirement
+ }
+ }
+ if slf.OrderFinishRateData != "" {
+ if err = json.Unmarshal([]byte(slf.OrderFinishRateData), &orderFinishRate); err == nil {
+ slf.OrderFinishRate = orderFinishRate
+ }
+ }
+ if slf.PersonnelProductivityData != "" {
+ if err = json.Unmarshal([]byte(slf.PersonnelProductivityData), &personnelProductivity); err == nil {
+ slf.PersonnelProductivity = personnelProductivity
+ }
+ }
+ if slf.PersonnelSkillPercentData != "" {
+ if err = json.Unmarshal([]byte(slf.PersonnelSkillPercentData), &personnelSkillPercent); err == nil {
+ slf.PersonnelSkillPercent = personnelSkillPercent
+ }
+ }
+ if slf.WorkshopStatsData != "" {
+ if err = json.Unmarshal([]byte(slf.WorkshopStatsData), &workshopStats); err == nil {
+ slf.WorkshopStats = workshopStats
+ }
+ }
+ if slf.WorkOrderStatsData != "" {
+ if err = json.Unmarshal([]byte(slf.WorkOrderStatsData), &workOrderStats); err == nil {
+ slf.WorkOrderStats = workOrderStats
+ }
+ }
+ return nil
+}
+
+func NewDashboardSearch(db *gorm.DB) *DashboardSearch {
+ if db == nil {
+ db = sqlitex.GetDB()
+ }
+ return &DashboardSearch{Orm: db}
+}
+
+func (slf *DashboardSearch) SetOrm(tx *gorm.DB) *DashboardSearch {
+ slf.Orm = tx
+ return slf
+}
+
+func (slf *DashboardSearch) SetPage(page, size int) *DashboardSearch {
+ slf.PageNum, slf.PageSize = page, size
+ return slf
+}
+
+func (slf *DashboardSearch) SetOrder(order string) *DashboardSearch {
+ slf.Order = order
+ return slf
+}
+
+func (slf *DashboardSearch) SetId(id uint) *DashboardSearch {
+ slf.ID = id
+ return slf
+}
+
+func (slf *DashboardSearch) SetVersion(version string) *DashboardSearch {
+ slf.Version = version
+ return slf
+}
+
+func (slf *DashboardSearch) build() *gorm.DB {
+ var db = slf.Orm.Model(&Dashboard{})
+
+ if slf.Order != "" {
+ db = db.Order(slf.Order)
+ }
+
+ if slf.Version == "" {
+ slf.Version = VersionV1
+ }
+
+ db = db.Where("version = ?", VersionV1)
+
+ if slf.ID != 0 {
+ db = db.Where("id = ?", slf.ID)
+ }
+ return db
+}
+
+// Create 鍗曟潯鎻掑叆
+func (slf *DashboardSearch) Create(record *Dashboard) 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 *DashboardSearch) CreateBatch(records []*Dashboard) error {
+ var db = slf.build()
+ for _, record := range records {
+ if err := db.Create(record).Error; err != nil {
+ return fmt.Errorf("create batch err: %v, records: %+v", err, records)
+ }
+ }
+ return nil
+}
+
+func (slf *DashboardSearch) Upsert(record *Dashboard) error {
+ var db = slf.build()
+ old, err := slf.First()
+ if err != gorm.ErrRecordNotFound && old.ID != 0 {
+ record.ID = old.ID
+ err = db.Save(&record).Error
+ } else {
+ err = db.Create(&record).Error
+ }
+ if err != nil {
+ return fmt.Errorf("save err: %v, record: %+v", err, record)
+ }
+
+ return nil
+}
+
+func (slf *DashboardSearch) Updates(record *Dashboard) error {
+ var db = slf.build()
+
+ if err := db.Updates(record).Error; err != nil {
+ return fmt.Errorf("save err: %v, record: %+v", err, record)
+ }
+
+ return nil
+}
+
+func (slf *DashboardSearch) 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 *DashboardSearch) 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 *DashboardSearch) Delete() error {
+ var db = slf.build()
+
+ if err := db.Unscoped().Delete(&Dashboard{}).Error; err != nil {
+ return err
+ }
+
+ return nil
+}
+
+func (slf *DashboardSearch) First() (*Dashboard, error) {
+ var (
+ record = new(Dashboard)
+ db = slf.build()
+ )
+
+ if err := db.First(record).Error; err != nil {
+ return record, err
+ }
+
+ return record, nil
+}
+
+func (slf *DashboardSearch) Find() ([]*Dashboard, int64, error) {
+ var (
+ records = make([]*Dashboard, 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 *DashboardSearch) Count() (int64, error) {
+ var (
+ total int64
+ db = slf.build()
+ )
+ if err := db.Count(&total).Error; err != nil {
+ return total, fmt.Errorf("find count err: %v", err)
+ }
+ return total, nil
+}
+
+func (slf *DashboardSearch) FindNotTotal() ([]*Dashboard, error) {
+ var (
+ records = make([]*Dashboard, 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 *DashboardSearch) FindByQuery(query string, args []interface{}) ([]*Dashboard, int64, error) {
+ var (
+ records = make([]*Dashboard, 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 *DashboardSearch) FindByQueryNotTotal(query string, args []interface{}) ([]*Dashboard, error) {
+ var (
+ records = make([]*Dashboard, 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/router/index.go b/router/index.go
index 8375556..5139964 100644
--- a/router/index.go
+++ b/router/index.go
@@ -93,6 +93,12 @@
reportWorkGroup.GET("list", reportWorkApi.ReportList) // 鎶ュ伐鍒楄〃
}
+ dashboardApi := new(v1.DashboardApi)
+ dashboardGroup := v1Group.Group("dashboard")
+ {
+ dashboardGroup.POST("dashboard", dashboardApi.Dashboard) //椹鹃┒鑸�
+ }
+
//eventsApi := new(v1.EventsApi)
//eventsGroup := v1Group.Group("events")
//{
diff --git a/service/dashboard.go b/service/dashboard.go
new file mode 100644
index 0000000..4ce88e5
--- /dev/null
+++ b/service/dashboard.go
@@ -0,0 +1,14 @@
+package service
+
+import (
+ "apsClient/model"
+ "apsClient/pkg/logx"
+)
+
+func GetDashBoard() (data *model.Dashboard) {
+ data, err := model.NewDashboardSearch(nil).First()
+ if err != nil {
+ logx.Errorf("GetDashBoard failed:%v", err)
+ }
+ return data
+}
--
Gitblit v1.8.0