zhangqian
2023-11-30 66a85c70afb149986871febe17a4133b6995cd09
dashboard接口和数据表
3个文件已添加
4个文件已修改
1079 ■■■■■ 已修改文件
api/v1/dashboard.go 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
docs/docs.go 249 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
docs/swagger.json 249 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
docs/swagger.yaml 173 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
model/dashboard.go 364 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
router/index.go 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service/dashboard.go 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
api/v1/dashboard.go
New file
@@ -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)
}
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": "车间当日正品率",
                    "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": {
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": "车间当日正品率",
                    "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": {
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: 车间当日正品率
        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:
model/dashboard.go
New file
@@ -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            //车间当日正品率
        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
}
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")
    //{
service/dashboard.go
New file
@@ -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
}