From 8b88bcc370b0b2e22fbbf872c2c460fe2a208181 Mon Sep 17 00:00:00 2001
From: zhangqian <zhangqian@123.com>
Date: 星期六, 25 十一月 2023 16:44:23 +0800
Subject: [PATCH] 报工添加和列表查询接口
---
model/report_work.go | 330 ++++++++++++++++++++
service/report_work.go | 51 +++
model/request/common.go | 11
model/index.go | 1
router/index.go | 7
main.go | 1
api/v1/report_work.go | 56 +++
docs/swagger.yaml | 120 +++++++
docs/docs.go | 183 +++++++++++
docs/swagger.json | 183 +++++++++++
10 files changed, 943 insertions(+), 0 deletions(-)
diff --git a/api/v1/report_work.go b/api/v1/report_work.go
new file mode 100644
index 0000000..499423e
--- /dev/null
+++ b/api/v1/report_work.go
@@ -0,0 +1,56 @@
+package v1
+
+import (
+ "apsClient/model/request"
+ _ "apsClient/model/response"
+ "apsClient/pkg/contextx"
+ "apsClient/pkg/ecode"
+ "apsClient/pkg/logx"
+ "apsClient/service"
+ "github.com/gin-gonic/gin"
+)
+
+type ReportWorkApi struct{}
+
+// Report
+// @Tags 鎶ュ伐
+// @Summary 涓婃姤
+// @Produce application/json
+// @Param object body request.ReportWork true "鏌ヨ鍙傛暟"
+// @Success 200 {object} contextx.Response{} "鎴愬姛"
+// @Router /v1/reportWork/report [post]
+func (slf *ReportWorkApi) Report(c *gin.Context) {
+ var params request.ReportWork
+ ctx, ok := contextx.NewContext(c, ¶ms)
+ if !ok {
+ return
+ }
+ err := service.AddReportWork(params)
+ if err != nil {
+ logx.Errorf("ReportWork err:%v", err)
+ ctx.Fail(ecode.DBErr)
+ return
+ }
+ ctx.Ok()
+}
+
+// ReportList
+// @Tags 鎶ュ伐
+// @Summary 鎶ュ伐鍒楄〃
+// @Produce application/json
+// @Param object body request.ReportWorkList true "鏌ヨ鍙傛暟"
+// @Success 200 {object} contextx.ResponseList{data=[]model.ReportWork} "鎴愬姛"
+// @Router /v1/reportWork/list [get]
+func (slf *ReportWorkApi) ReportList(c *gin.Context) {
+ var params request.ReportWorkList
+ ctx, ok := contextx.NewContext(c, ¶ms)
+ if !ok {
+ return
+ }
+ list, total, err := service.ReportWorkList(params.ProcedureId, params.Page, params.PageSize)
+ if err != nil {
+ ctx.Fail(ecode.DBErr)
+ return
+ }
+ ctx.ResultList(list, total)
+}
diff --git a/docs/docs.go b/docs/docs.go
index 35c052f..f04605d 100644
--- a/docs/docs.go
+++ b/docs/docs.go
@@ -481,6 +481,81 @@
}
}
},
+ "/v1/reportWork/list": {
+ "get": {
+ "produces": [
+ "application/json"
+ ],
+ "tags": [
+ "鎶ュ伐"
+ ],
+ "summary": "鎶ュ伐鍒楄〃",
+ "parameters": [
+ {
+ "description": "鏌ヨ鍙傛暟",
+ "name": "object",
+ "in": "body",
+ "required": true,
+ "schema": {
+ "$ref": "#/definitions/request.ReportWorkList"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "鎴愬姛",
+ "schema": {
+ "allOf": [
+ {
+ "$ref": "#/definitions/contextx.ResponseList"
+ },
+ {
+ "type": "object",
+ "properties": {
+ "data": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/model.ReportWork"
+ }
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ }
+ },
+ "/v1/reportWork/report": {
+ "post": {
+ "produces": [
+ "application/json"
+ ],
+ "tags": [
+ "鎶ュ伐"
+ ],
+ "summary": "涓婃姤",
+ "parameters": [
+ {
+ "description": "鏌ヨ鍙傛暟",
+ "name": "object",
+ "in": "body",
+ "required": true,
+ "schema": {
+ "$ref": "#/definitions/request.ReportWork"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "鎴愬姛",
+ "schema": {
+ "$ref": "#/definitions/contextx.Response"
+ }
+ }
+ }
+ }
+ },
"/v1/system/problemList": {
"get": {
"produces": [
@@ -1059,6 +1134,21 @@
}
}
},
+ "contextx.ResponseList": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "integer"
+ },
+ "data": {},
+ "msg": {
+ "type": "string"
+ },
+ "total": {
+ "type": "integer"
+ }
+ }
+ },
"model.DevicePlc": {
"type": "object",
"properties": {
@@ -1434,6 +1524,57 @@
}
}
},
+ "model.ReportWork": {
+ "type": "object",
+ "properties": {
+ "channel": {
+ "description": "閫氶亾",
+ "type": "integer"
+ },
+ "createdAt": {
+ "type": "string"
+ },
+ "deletedAt": {
+ "type": "string"
+ },
+ "deviceId": {
+ "type": "string"
+ },
+ "deviceName": {
+ "type": "string"
+ },
+ "endTime": {
+ "type": "integer"
+ },
+ "id": {
+ "type": "integer"
+ },
+ "procedureId": {
+ "type": "string"
+ },
+ "proceduresId": {
+ "description": "procedures琛ㄧ殑id",
+ "type": "integer"
+ },
+ "startTime": {
+ "type": "integer"
+ },
+ "updatedAt": {
+ "type": "string"
+ },
+ "workOrderId": {
+ "type": "string"
+ },
+ "workerID": {
+ "description": "鎶ュ伐浜篿d",
+ "type": "string"
+ },
+ "workerName": {
+ "description": "鎶ュ伐浜哄鍚�",
+ "type": "string"
+ }
+ }
+ },
"problem.CheckResult": {
"type": "object",
"properties": {
@@ -1498,6 +1639,48 @@
"QueryTypeFinished"
]
},
+ "request.ReportWork": {
+ "type": "object",
+ "required": [
+ "procedureId",
+ "reportAmount",
+ "workerID"
+ ],
+ "properties": {
+ "procedureId": {
+ "description": "宸ュ簭id",
+ "type": "integer"
+ },
+ "reportAmount": {
+ "description": "鎶ュ伐鏁伴噺",
+ "type": "integer"
+ },
+ "workerID": {
+ "description": "鎶ュ憡鑰卛d",
+ "type": "string"
+ }
+ }
+ },
+ "request.ReportWorkList": {
+ "type": "object",
+ "required": [
+ "procedureId"
+ ],
+ "properties": {
+ "page": {
+ "description": "椤电爜",
+ "type": "integer"
+ },
+ "pageSize": {
+ "description": "姣忛〉澶у皬",
+ "type": "integer"
+ },
+ "procedureId": {
+ "description": "宸ュ簭id",
+ "type": "integer"
+ }
+ }
+ },
"request.SendProcessParams": {
"type": "object",
"required": [
diff --git a/docs/swagger.json b/docs/swagger.json
index 5d88d7d..dbe1f85 100644
--- a/docs/swagger.json
+++ b/docs/swagger.json
@@ -469,6 +469,81 @@
}
}
},
+ "/v1/reportWork/list": {
+ "get": {
+ "produces": [
+ "application/json"
+ ],
+ "tags": [
+ "鎶ュ伐"
+ ],
+ "summary": "鎶ュ伐鍒楄〃",
+ "parameters": [
+ {
+ "description": "鏌ヨ鍙傛暟",
+ "name": "object",
+ "in": "body",
+ "required": true,
+ "schema": {
+ "$ref": "#/definitions/request.ReportWorkList"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "鎴愬姛",
+ "schema": {
+ "allOf": [
+ {
+ "$ref": "#/definitions/contextx.ResponseList"
+ },
+ {
+ "type": "object",
+ "properties": {
+ "data": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/model.ReportWork"
+ }
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ }
+ },
+ "/v1/reportWork/report": {
+ "post": {
+ "produces": [
+ "application/json"
+ ],
+ "tags": [
+ "鎶ュ伐"
+ ],
+ "summary": "涓婃姤",
+ "parameters": [
+ {
+ "description": "鏌ヨ鍙傛暟",
+ "name": "object",
+ "in": "body",
+ "required": true,
+ "schema": {
+ "$ref": "#/definitions/request.ReportWork"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "鎴愬姛",
+ "schema": {
+ "$ref": "#/definitions/contextx.Response"
+ }
+ }
+ }
+ }
+ },
"/v1/system/problemList": {
"get": {
"produces": [
@@ -1047,6 +1122,21 @@
}
}
},
+ "contextx.ResponseList": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "integer"
+ },
+ "data": {},
+ "msg": {
+ "type": "string"
+ },
+ "total": {
+ "type": "integer"
+ }
+ }
+ },
"model.DevicePlc": {
"type": "object",
"properties": {
@@ -1422,6 +1512,57 @@
}
}
},
+ "model.ReportWork": {
+ "type": "object",
+ "properties": {
+ "channel": {
+ "description": "閫氶亾",
+ "type": "integer"
+ },
+ "createdAt": {
+ "type": "string"
+ },
+ "deletedAt": {
+ "type": "string"
+ },
+ "deviceId": {
+ "type": "string"
+ },
+ "deviceName": {
+ "type": "string"
+ },
+ "endTime": {
+ "type": "integer"
+ },
+ "id": {
+ "type": "integer"
+ },
+ "procedureId": {
+ "type": "string"
+ },
+ "proceduresId": {
+ "description": "procedures琛ㄧ殑id",
+ "type": "integer"
+ },
+ "startTime": {
+ "type": "integer"
+ },
+ "updatedAt": {
+ "type": "string"
+ },
+ "workOrderId": {
+ "type": "string"
+ },
+ "workerID": {
+ "description": "鎶ュ伐浜篿d",
+ "type": "string"
+ },
+ "workerName": {
+ "description": "鎶ュ伐浜哄鍚�",
+ "type": "string"
+ }
+ }
+ },
"problem.CheckResult": {
"type": "object",
"properties": {
@@ -1486,6 +1627,48 @@
"QueryTypeFinished"
]
},
+ "request.ReportWork": {
+ "type": "object",
+ "required": [
+ "procedureId",
+ "reportAmount",
+ "workerID"
+ ],
+ "properties": {
+ "procedureId": {
+ "description": "宸ュ簭id",
+ "type": "integer"
+ },
+ "reportAmount": {
+ "description": "鎶ュ伐鏁伴噺",
+ "type": "integer"
+ },
+ "workerID": {
+ "description": "鎶ュ憡鑰卛d",
+ "type": "string"
+ }
+ }
+ },
+ "request.ReportWorkList": {
+ "type": "object",
+ "required": [
+ "procedureId"
+ ],
+ "properties": {
+ "page": {
+ "description": "椤电爜",
+ "type": "integer"
+ },
+ "pageSize": {
+ "description": "姣忛〉澶у皬",
+ "type": "integer"
+ },
+ "procedureId": {
+ "description": "宸ュ簭id",
+ "type": "integer"
+ }
+ }
+ },
"request.SendProcessParams": {
"type": "object",
"required": [
diff --git a/docs/swagger.yaml b/docs/swagger.yaml
index 4f8b695..68b35f7 100644
--- a/docs/swagger.yaml
+++ b/docs/swagger.yaml
@@ -180,6 +180,16 @@
msg:
type: string
type: object
+ contextx.ResponseList:
+ properties:
+ code:
+ type: integer
+ data: {}
+ msg:
+ type: string
+ total:
+ type: integer
+ type: object
model.DevicePlc:
properties:
address:
@@ -434,6 +444,41 @@
updatedAt:
type: string
type: object
+ model.ReportWork:
+ properties:
+ channel:
+ description: 閫氶亾
+ type: integer
+ createdAt:
+ type: string
+ deletedAt:
+ type: string
+ deviceId:
+ type: string
+ deviceName:
+ type: string
+ endTime:
+ type: integer
+ id:
+ type: integer
+ procedureId:
+ type: string
+ proceduresId:
+ description: procedures琛ㄧ殑id
+ type: integer
+ startTime:
+ type: integer
+ updatedAt:
+ type: string
+ workOrderId:
+ type: string
+ workerID:
+ description: 鎶ュ伐浜篿d
+ type: string
+ workerName:
+ description: 鎶ュ伐浜哄鍚�
+ type: string
+ type: object
problem.CheckResult:
properties:
checkResult:
@@ -477,6 +522,36 @@
- QueryTypeUnFinish
- QueryTypeToday
- QueryTypeFinished
+ request.ReportWork:
+ properties:
+ procedureId:
+ description: 宸ュ簭id
+ type: integer
+ reportAmount:
+ description: 鎶ュ伐鏁伴噺
+ type: integer
+ workerID:
+ description: 鎶ュ憡鑰卛d
+ type: string
+ required:
+ - procedureId
+ - reportAmount
+ - workerID
+ type: object
+ request.ReportWorkList:
+ properties:
+ page:
+ description: 椤电爜
+ type: integer
+ pageSize:
+ description: 姣忛〉澶у皬
+ type: integer
+ procedureId:
+ description: 宸ュ簭id
+ type: integer
+ required:
+ - procedureId
+ type: object
request.SendProcessParams:
properties:
procedureId:
@@ -970,6 +1045,51 @@
summary: 鑾峰彇宸ヨ壓妯″瀷鍒楄〃
tags:
- 宸ヨ壓妯″瀷
+ /v1/reportWork/list:
+ get:
+ parameters:
+ - description: 鏌ヨ鍙傛暟
+ in: body
+ name: object
+ required: true
+ schema:
+ $ref: '#/definitions/request.ReportWorkList'
+ produces:
+ - application/json
+ responses:
+ "200":
+ description: 鎴愬姛
+ schema:
+ allOf:
+ - $ref: '#/definitions/contextx.ResponseList'
+ - properties:
+ data:
+ items:
+ $ref: '#/definitions/model.ReportWork'
+ type: array
+ type: object
+ summary: 鎶ュ伐鍒楄〃
+ tags:
+ - 鎶ュ伐
+ /v1/reportWork/report:
+ post:
+ parameters:
+ - description: 鏌ヨ鍙傛暟
+ in: body
+ name: object
+ required: true
+ schema:
+ $ref: '#/definitions/request.ReportWork'
+ produces:
+ - application/json
+ responses:
+ "200":
+ description: 鎴愬姛
+ schema:
+ $ref: '#/definitions/contextx.Response'
+ summary: 涓婃姤
+ tags:
+ - 鎶ュ伐
/v1/system/problemList:
get:
produces:
diff --git a/main.go b/main.go
index 2803974..39420ab 100644
--- a/main.go
+++ b/main.go
@@ -46,6 +46,7 @@
"system_status",
"process_model_plc_address",
"reports_to_cloud",
+ "report_work",
}
agent := serf.InitAgent("apsClient", syncTables, sqlitex.GetDB())
diff --git a/model/index.go b/model/index.go
index e372ba6..a5f8022 100644
--- a/model/index.go
+++ b/model/index.go
@@ -32,6 +32,7 @@
SystemStatus{},
ProcessModelPlcAddress{},
ReportsToCloud{},
+ ReportWork{},
)
}
diff --git a/model/report_work.go b/model/report_work.go
new file mode 100644
index 0000000..4e6a70b
--- /dev/null
+++ b/model/report_work.go
@@ -0,0 +1,330 @@
+package model
+
+import (
+ "apsClient/pkg/sqlitex"
+ "fmt"
+ "github.com/jinzhu/gorm"
+)
+
+type (
+ ReportWork struct {
+ gorm.Model
+ ProceduresID uint `gorm:"index;type:varchar(191)" json:"proceduresId"` //procedures琛ㄧ殑id
+ WorkOrderID string `gorm:"index;type:varchar(191);not null" json:"workOrderId"`
+ DeviceID string `gorm:"index;type:varchar(191)" json:"deviceId"`
+ DeviceName string `gorm:"index;type:varchar(191)" json:"deviceName"`
+ ProcedureID string `gorm:"index;type:varchar(191)" json:"procedureId"`
+ Channel int32 `gorm:"index;" json:"channel"` //閫氶亾
+ StartTime int64 `json:"startTime"`
+ EndTime int64 `json:"endTime"`
+ WorkerID string `json:"workerID"` //鎶ュ伐浜篿d
+ WorkerName string `json:"workerName"` //鎶ュ伐浜哄鍚�
+ }
+
+ ReportWorkSearch struct {
+ ReportWork
+ Order string
+ PageNum int
+ PageSize int
+ Orm *gorm.DB
+ Preload bool
+ ProcedureIds []string
+ Channels []int32
+ Offset int
+ Limit int
+ }
+)
+
+func (slf *ReportWork) TableName() string {
+ return "report_work"
+}
+
+func NewReportWorkSearch(db *gorm.DB) *ReportWorkSearch {
+ if db == nil {
+ db = sqlitex.GetDB()
+ }
+ return &ReportWorkSearch{Orm: db}
+}
+
+func (slf *ReportWorkSearch) SetOrm(tx *gorm.DB) *ReportWorkSearch {
+ slf.Orm = tx
+ return slf
+}
+
+func (slf *ReportWorkSearch) SetPage(page, size int) *ReportWorkSearch {
+ slf.PageNum, slf.PageSize = page, size
+ return slf
+}
+
+func (slf *ReportWorkSearch) SetOffset(offset, limit int) *ReportWorkSearch {
+ slf.Offset, slf.Limit = offset, limit
+ return slf
+}
+
+func (slf *ReportWorkSearch) SetOrder(order string) *ReportWorkSearch {
+ slf.Order = order
+ return slf
+}
+
+func (slf *ReportWorkSearch) SetWorkOrderId(orderId string) *ReportWorkSearch {
+ slf.WorkOrderID = orderId
+ return slf
+}
+
+func (slf *ReportWorkSearch) SetProceduresId(id uint) *ReportWorkSearch {
+ slf.ProceduresID = id
+ return slf
+}
+
+func (slf *ReportWorkSearch) SetId(id uint) *ReportWorkSearch {
+ slf.ID = id
+ return slf
+}
+
+func (slf *ReportWorkSearch) SetProcedureIds(procedureIds []string) *ReportWorkSearch {
+ slf.ProcedureIds = procedureIds
+ return slf
+}
+
+func (slf *ReportWorkSearch) SetDeviceId(id string) *ReportWorkSearch {
+ slf.DeviceID = id
+ return slf
+}
+
+func (slf *ReportWorkSearch) SetPreload(preload bool) *ReportWorkSearch {
+ slf.Preload = preload
+ return slf
+}
+
+func (slf *ReportWorkSearch) SetChannels(channels []int32) *ReportWorkSearch {
+ slf.Channels = channels
+ return slf
+}
+
+func (slf *ReportWorkSearch) SetChannel(channel int32) *ReportWorkSearch {
+ slf.Channel = channel
+ return slf
+}
+
+func (slf *ReportWorkSearch) build() *gorm.DB {
+ var db = slf.Orm.Model(&ReportWork{})
+
+ if slf.Order != "" {
+ db = db.Order(slf.Order)
+ }
+
+ if slf.ID != 0 {
+ db = db.Where("id = ?", slf.ID)
+ }
+
+ if slf.WorkOrderID != "" {
+ db = db.Where("work_order_id = ?", slf.WorkOrderID)
+ }
+
+ if slf.DeviceID != "" {
+ db = db.Where("device_id = ?", slf.DeviceID)
+ }
+
+ if slf.Preload {
+ db = db.Preload("InputMaterials").Preload("OutputMaterials")
+ }
+
+ if len(slf.ProcedureIds) > 0 {
+ db = db.Where("procedure_id IN (?)", slf.ProcedureIds)
+ }
+
+ if slf.ProcedureID != "" {
+ db = db.Where("procedure_id = ?", slf.ProcedureID)
+ }
+
+ if len(slf.Channels) > 0 {
+ db = db.Where("channel IN (?)", slf.Channels)
+ }
+
+ return db
+}
+
+// Create 鍗曟潯鎻掑叆
+func (slf *ReportWorkSearch) Create(record *ReportWork) 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 *ReportWorkSearch) CreateBatch(records []*ReportWork) 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 *ReportWorkSearch) Upsert(record *ReportWork) 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 *ReportWorkSearch) Updates(record *ReportWork) 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 *ReportWorkSearch) 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 *ReportWorkSearch) 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 *ReportWorkSearch) Delete() error {
+ var db = slf.build()
+
+ if err := db.Unscoped().Delete(&ReportWork{}).Error; err != nil {
+ return err
+ }
+
+ return nil
+}
+
+func (slf *ReportWorkSearch) First() (*ReportWork, error) {
+ var (
+ record = new(ReportWork)
+ db = slf.build()
+ )
+
+ if err := db.First(record).Error; err != nil {
+ return record, err
+ }
+
+ return record, nil
+}
+
+func (slf *ReportWorkSearch) Find() ([]*ReportWork, int64, error) {
+ var (
+ records = make([]*ReportWork, 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 slf.Limit > 0 {
+ db = db.Offset(slf.Offset).Limit(slf.Limit)
+ }
+
+ if err := db.Find(&records).Error; err != nil {
+ return records, total, fmt.Errorf("find records err: %v", err)
+ }
+
+ return records, total, nil
+}
+
+func (slf *ReportWorkSearch) 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 *ReportWorkSearch) FindNotTotal() ([]*ReportWork, error) {
+ var (
+ records = make([]*ReportWork, 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 *ReportWorkSearch) FindByQuery(query string, args []interface{}) ([]*ReportWork, int64, error) {
+ var (
+ records = make([]*ReportWork, 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 *ReportWorkSearch) FindByQueryNotTotal(query string, args []interface{}) ([]*ReportWork, error) {
+ var (
+ records = make([]*ReportWork, 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/request/common.go b/model/request/common.go
index 7059381..2076da7 100644
--- a/model/request/common.go
+++ b/model/request/common.go
@@ -16,3 +16,14 @@
type DeviceConfig struct {
NeedSetProcessParams bool `json:"needSetProcessParams,omitempty"` //鏄惁闇�瑕佽缃伐鑹哄弬鏁�
}
+
+type ReportWork struct {
+ ProcedureId uint `json:"procedureId" binding:"required"` //宸ュ簭id
+ ReportAmount int `json:"reportAmount" binding:"required"` //鎶ュ伐鏁伴噺
+ WorkerID string `json:"workerID" binding:"required"` //鎶ュ憡鑰卛d
+}
+
+type ReportWorkList struct {
+ PageInfo
+ ProcedureId uint `json:"procedureId" binding:"required"` //宸ュ簭id
+}
diff --git a/router/index.go b/router/index.go
index 2009cc6..a04943b 100644
--- a/router/index.go
+++ b/router/index.go
@@ -86,6 +86,13 @@
systemGroup.GET("problemList", systemApi.ProblemList) // 闂璇婃柇鍒楄〃
}
+ reportWorkApi := new(v1.ReportWorkApi)
+ reportWorkGroup := v1Group.Group("reportWork")
+ {
+ reportWorkGroup.GET("report", reportWorkApi.Report) // 鎶ュ伐
+ reportWorkGroup.GET("list", reportWorkApi.ReportList) // 鎶ュ伐鍒楄〃
+ }
+
//eventsApi := new(v1.EventsApi)
//eventsGroup := v1Group.Group("events")
//{
diff --git a/service/report_work.go b/service/report_work.go
new file mode 100644
index 0000000..38693d8
--- /dev/null
+++ b/service/report_work.go
@@ -0,0 +1,51 @@
+package service
+
+import (
+ "apsClient/conf"
+ "apsClient/model"
+ "apsClient/model/request"
+ "errors"
+ "time"
+)
+
+func ReportWorkList(procedureId uint, page, pageSize int) (list []*model.ReportWork, total int64, err error) {
+ return model.NewReportWorkSearch(nil).SetProceduresId(procedureId).SetPage(page, pageSize).SetDeviceId(conf.Conf.CurrentDeviceID).SetOrder("id desc").Find()
+}
+
+func AddReportWork(params request.ReportWork) (err error) {
+ procedure, err := model.NewProceduresSearch(nil).SetId(params.ProcedureId).First()
+ if err != nil {
+ return err
+ }
+ nowTs := time.Now().Unix()
+ var startTs int64
+ var workerName string
+ for _, worker := range procedure.ProceduresInfo.Workers {
+ if params.WorkerID == worker.WorkerID {
+ workerName = worker.WorkerName
+ if worker.StartTime < nowTs {
+ startTs = worker.StartTime
+ }
+ }
+ }
+ if workerName == "" {
+ return errors.New("娌℃湁鎵惧埌褰撳墠鍊肩彮浜哄憳")
+ }
+ if startTs == 0 {
+ return errors.New("娌℃湁鎵惧埌褰撳墠鍊肩彮浜哄憳寮�濮嬫椂闂�")
+ }
+
+ record := &model.ReportWork{
+ ProceduresID: params.ProcedureId,
+ WorkOrderID: procedure.WorkOrderID,
+ DeviceID: procedure.DeviceID,
+ DeviceName: procedure.ProceduresInfo.DeviceName,
+ ProcedureID: procedure.ProcedureID,
+ Channel: procedure.Channel,
+ StartTime: startTs,
+ EndTime: nowTs,
+ WorkerID: params.WorkerID,
+ WorkerName: workerName,
+ }
+ return model.NewReportWorkSearch(nil).Create(record)
+}
--
Gitblit v1.8.0