New file |
| | |
| | | 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) |
| | | } |
| | |
| | | } |
| | | } |
| | | }, |
| | | "/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": [ |
| | |
| | | } |
| | | } |
| | | }, |
| | | "contextx.ResponseList": { |
| | | "type": "object", |
| | | "properties": { |
| | | "code": { |
| | | "type": "integer" |
| | | }, |
| | | "data": {}, |
| | | "msg": { |
| | | "type": "string" |
| | | }, |
| | | "total": { |
| | | "type": "integer" |
| | | } |
| | | } |
| | | }, |
| | | "model.DevicePlc": { |
| | | "type": "object", |
| | | "properties": { |
| | |
| | | } |
| | | } |
| | | }, |
| | | "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": "报工人id", |
| | | "type": "string" |
| | | }, |
| | | "workerName": { |
| | | "description": "报工人姓名", |
| | | "type": "string" |
| | | } |
| | | } |
| | | }, |
| | | "problem.CheckResult": { |
| | | "type": "object", |
| | | "properties": { |
| | |
| | | "QueryTypeFinished" |
| | | ] |
| | | }, |
| | | "request.ReportWork": { |
| | | "type": "object", |
| | | "required": [ |
| | | "procedureId", |
| | | "reportAmount", |
| | | "workerID" |
| | | ], |
| | | "properties": { |
| | | "procedureId": { |
| | | "description": "工序id", |
| | | "type": "integer" |
| | | }, |
| | | "reportAmount": { |
| | | "description": "报工数量", |
| | | "type": "integer" |
| | | }, |
| | | "workerID": { |
| | | "description": "报告者id", |
| | | "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": [ |
| | |
| | | } |
| | | } |
| | | }, |
| | | "/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": [ |
| | |
| | | } |
| | | } |
| | | }, |
| | | "contextx.ResponseList": { |
| | | "type": "object", |
| | | "properties": { |
| | | "code": { |
| | | "type": "integer" |
| | | }, |
| | | "data": {}, |
| | | "msg": { |
| | | "type": "string" |
| | | }, |
| | | "total": { |
| | | "type": "integer" |
| | | } |
| | | } |
| | | }, |
| | | "model.DevicePlc": { |
| | | "type": "object", |
| | | "properties": { |
| | |
| | | } |
| | | } |
| | | }, |
| | | "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": "报工人id", |
| | | "type": "string" |
| | | }, |
| | | "workerName": { |
| | | "description": "报工人姓名", |
| | | "type": "string" |
| | | } |
| | | } |
| | | }, |
| | | "problem.CheckResult": { |
| | | "type": "object", |
| | | "properties": { |
| | |
| | | "QueryTypeFinished" |
| | | ] |
| | | }, |
| | | "request.ReportWork": { |
| | | "type": "object", |
| | | "required": [ |
| | | "procedureId", |
| | | "reportAmount", |
| | | "workerID" |
| | | ], |
| | | "properties": { |
| | | "procedureId": { |
| | | "description": "工序id", |
| | | "type": "integer" |
| | | }, |
| | | "reportAmount": { |
| | | "description": "报工数量", |
| | | "type": "integer" |
| | | }, |
| | | "workerID": { |
| | | "description": "报告者id", |
| | | "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": [ |
| | |
| | | msg: |
| | | type: string |
| | | type: object |
| | | contextx.ResponseList: |
| | | properties: |
| | | code: |
| | | type: integer |
| | | data: {} |
| | | msg: |
| | | type: string |
| | | total: |
| | | type: integer |
| | | type: object |
| | | model.DevicePlc: |
| | | properties: |
| | | address: |
| | |
| | | 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: 报工人id |
| | | type: string |
| | | workerName: |
| | | description: 报工人姓名 |
| | | type: string |
| | | type: object |
| | | problem.CheckResult: |
| | | properties: |
| | | checkResult: |
| | |
| | | - QueryTypeUnFinish |
| | | - QueryTypeToday |
| | | - QueryTypeFinished |
| | | request.ReportWork: |
| | | properties: |
| | | procedureId: |
| | | description: 工序id |
| | | type: integer |
| | | reportAmount: |
| | | description: 报工数量 |
| | | type: integer |
| | | workerID: |
| | | description: 报告者id |
| | | 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: |
| | |
| | | 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: |
| | |
| | | "system_status", |
| | | "process_model_plc_address", |
| | | "reports_to_cloud", |
| | | "report_work", |
| | | } |
| | | |
| | | agent := serf.InitAgent("apsClient", syncTables, sqlitex.GetDB()) |
| | |
| | | SystemStatus{}, |
| | | ProcessModelPlcAddress{}, |
| | | ReportsToCloud{}, |
| | | ReportWork{}, |
| | | ) |
| | | } |
| | | |
New file |
| | |
| | | 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"` //报工人id |
| | | 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 |
| | | } |
| | |
| | | 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"` //报告者id |
| | | } |
| | | |
| | | type ReportWorkList struct { |
| | | PageInfo |
| | | ProcedureId uint `json:"procedureId" binding:"required"` //工序id |
| | | } |
| | |
| | | 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") |
| | | //{ |
New file |
| | |
| | | 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) |
| | | } |