New file |
| | |
| | | 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) |
| | | } |
| | |
| | | } |
| | | } |
| | | }, |
| | | "/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": [ |
| | |
| | | } |
| | | } |
| | | }, |
| | | "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": "车间当日正品率", |
| | | "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": { |
| | |
| | | "description": "条形码", |
| | | "type": "string" |
| | | }, |
| | | "channel": { |
| | | "description": "通道", |
| | | "type": "integer" |
| | | }, |
| | | "createdAt": { |
| | | "type": "string" |
| | | }, |
| | |
| | | } |
| | | } |
| | | }, |
| | | "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": { |
| | |
| | | } |
| | | } |
| | | }, |
| | | "/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": [ |
| | |
| | | } |
| | | } |
| | | }, |
| | | "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": "车间当日正品率", |
| | | "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": { |
| | |
| | | "description": "条形码", |
| | | "type": "string" |
| | | }, |
| | | "channel": { |
| | | "description": "通道", |
| | | "type": "integer" |
| | | }, |
| | | "createdAt": { |
| | | "type": "string" |
| | | }, |
| | |
| | | } |
| | | } |
| | | }, |
| | | "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": { |
| | |
| | | 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: 车间当日正品率 |
| | | 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: |
| | |
| | | barCode: |
| | | description: 条形码 |
| | | type: string |
| | | channel: |
| | | description: 通道 |
| | | type: integer |
| | | createdAt: |
| | | type: string |
| | | deletedAt: |
| | |
| | | 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: |
| | |
| | | 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: |
New file |
| | |
| | | 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 //车间当日正品率 |
| | | 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 |
| | | } |
| | |
| | | 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") |
| | | //{ |
New file |
| | |
| | | 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 |
| | | } |