package service
|
|
import (
|
"apsClient/conf"
|
"apsClient/constvar"
|
"apsClient/model"
|
"apsClient/model/request"
|
"apsClient/pkg/snowflake"
|
"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
|
}
|
|
if procedure.Status != model.ProcedureStatusProcessing {
|
return errors.New("当前工序未开始或已结束,不允许报工")
|
}
|
|
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("没有找到当前值班人员开始时间")
|
}
|
finishAmount := params.ReportAmount
|
lastReportWork, err := GetLastReportWork(params.ProcedureId)
|
if err == nil {
|
finishAmount = params.ReportAmount - lastReportWork.ReportAmount
|
startTs = lastReportWork.EndTime
|
}
|
|
record := &model.ReportWork{
|
ProceduresID: params.ProcedureId,
|
ProductProcedureID: procedure.ProductProcedureID,
|
WorkOrderID: procedure.WorkOrderID,
|
DeviceID: procedure.DeviceID,
|
DeviceName: procedure.ProceduresInfo.DeviceName,
|
ProcedureID: procedure.ProcedureID,
|
Channel: procedure.Channel,
|
StartTime: startTs,
|
EndTime: nowTs,
|
ReportAmount: params.ReportAmount,
|
FinishAmount: finishAmount,
|
WorkerID: params.WorkerID,
|
WorkerName: workerName,
|
WorkerTime: nowTs - startTs,
|
BarCode: snowflake.GenerateIdStr(),
|
}
|
|
err = model.NewReportWorkSearch(nil).Create(record)
|
if err != nil {
|
return err
|
}
|
PlcCacheSet(conf.Conf.CurrentDeviceID, procedure.Channel, constvar.PlcCacheKeyFinishNumber, params.ReportAmount)
|
return nil
|
}
|
|
// GetLastReportWork 获取最后一个报工
|
func GetLastReportWork(procedureId uint) (reportWork *model.ReportWork, err error) {
|
return model.NewReportWorkSearch(nil).SetProceduresId(procedureId).SetDeviceId(conf.Conf.CurrentDeviceID).SetOrder("id desc").First()
|
}
|