| | |
| | | if !ok { |
| | | return |
| | | } |
| | | |
| | | procedure, code := service.NewTaskService().GetProcedureById(params.ProcedureId) |
| | | if code != ecode.OK { |
| | | ctx.Fail(code) |
| | | return |
| | | } |
| | | var oldProcessModel *model.ProcessModel |
| | | if procedure.ProcessModelNumber != "" { |
| | | oldProcessModel, _ = service.GetProcessModelByNumber(procedure.ProcessModelNumber) |
| | | } |
| | | |
| | | offset, limit, unShift := GetOffsetAndLimit(oldProcessModel, params.Page, params.PageSize) |
| | | list, total, err := service.GetProcessModelList(offset, limit, procedure.ProcessModelNumber) |
| | | order, err := service.NewTaskService().GetOrderByWorkOrderId(procedure.WorkOrderID) |
| | | if err != nil { |
| | | ctx.Fail(ecode.DBErr) |
| | | return |
| | | } |
| | | |
| | | if unShift && oldProcessModel != nil { //粘在前面 |
| | | list = append([]*model.ProcessModel{oldProcessModel}, list...) |
| | | var oldProcessModel, newProcessModel, headProcessModel *model.ProcessModel |
| | | if procedure.ProcessModelNumber != "" { |
| | | oldProcessModel, _ = service.GetProcessModelByNumber(procedure.ProcessModelNumber) //获取旧的工艺参数 |
| | | newProcessModel, _ = service.NewTaskService().GetProcessParams(procedure, order) //获取新的工艺参数 |
| | | if newProcessModel != nil && (oldProcessModel == nil || newProcessModel.Number != oldProcessModel.Number) { //旧的没有或者编号不同,更新 |
| | | newProcessModel.NewNumber, newProcessModel.NewParamsMap = newProcessModel.Number, newProcessModel.ParamsMap |
| | | if oldProcessModel != nil { |
| | | newProcessModel.Number, newProcessModel.ParamsMap = oldProcessModel.Number, oldProcessModel.ParamsMap |
| | | } else { //旧的没有,也可以"更新"(补充) |
| | | newProcessModel.Number, newProcessModel.ParamsMap = "", nil |
| | | } |
| | | headProcessModel = newProcessModel |
| | | } else if oldProcessModel != nil { |
| | | headProcessModel = oldProcessModel |
| | | } |
| | | } |
| | | for _, processModel := range list { |
| | | if oldProcessModel != nil && processModel.Procedure == oldProcessModel.Procedure && processModel.Product == oldProcessModel.Product { |
| | | processModel.IsUpdate = processModel.Number != procedure.ProcessModelNumber |
| | | } |
| | | if processModel.IsUpdate { |
| | | processModel.NewNumber, processModel.NewParamsMap = processModel.Number, processModel.ParamsMap |
| | | processModel.Number, processModel.ParamsMap = oldProcessModel.Number, oldProcessModel.ParamsMap |
| | | } |
| | | |
| | | offset, limit, unShift := GetOffsetAndLimit(headProcessModel, params.Page, params.PageSize) |
| | | list, total, err := service.GetOtherProcessModelList(offset, limit, order.ProductName, procedure.ProceduresInfo.ProcedureName) //获取其他工艺参数 |
| | | if err != nil { |
| | | ctx.Fail(ecode.DBErr) |
| | | return |
| | | } |
| | | if unShift && headProcessModel != nil { //粘在前面 |
| | | list = append([]*model.ProcessModel{headProcessModel}, list...) |
| | | } |
| | | ctx.ResultList(list, total) |
| | | } |
| | | |
| | | func GetOffsetAndLimit(current *model.ProcessModel, page, pageSize int) (offset, limit int, unShift bool) { |
| | | func GetOffsetAndLimit(head *model.ProcessModel, page, pageSize int) (offset, limit int, unShift bool) { |
| | | //isNew是要更新的 |
| | | unShift = current != nil && page == 1 |
| | | unShift = head != nil && page == 1 |
| | | limit = pageSize |
| | | if unShift { |
| | | limit-- //如果是新的,第一页少查一个 |
| | | } |
| | | offset = (page - 1) * pageSize |
| | | if current != nil && offset > 0 { //如果是新的,第二页开始偏移量左移一个 |
| | | if head != nil && offset > 0 { //如果是新的,第二页开始偏移量左移一个 |
| | | offset-- |
| | | } |
| | | |
| | |
| | | Procedures []string |
| | | CurrentNumber string |
| | | Numbers []string |
| | | ProductNot string |
| | | ProcedureNot string |
| | | } |
| | | ) |
| | | |
| | |
| | | return slf |
| | | } |
| | | |
| | | func (slf *ProcessModelSearch) SetProductNot(product string) *ProcessModelSearch { |
| | | slf.ProductNot = product |
| | | return slf |
| | | } |
| | | |
| | | func (slf *ProcessModelSearch) SetProcedureNot(procedure string) *ProcessModelSearch { |
| | | slf.ProcedureNot = procedure |
| | | return slf |
| | | } |
| | | |
| | | func (slf *ProcessModelSearch) SetProcedures(procedures []string) *ProcessModelSearch { |
| | | slf.Procedures = procedures |
| | | return slf |
| | |
| | | db = db.Where("`procedure` = ?", slf.Procedure) |
| | | } |
| | | |
| | | if len(slf.ProductNot) != 0 { |
| | | db = db.Where("product <> ?", slf.ProductNot) |
| | | } |
| | | |
| | | if len(slf.ProcedureNot) != 0 { |
| | | db = db.Where("`procedure` <> ?", slf.ProcedureNot) |
| | | } |
| | | |
| | | if len(slf.Procedures) != 0 { |
| | | db = db.Where("`procedure` IN (?)", slf.Procedures) |
| | | } |
| | |
| | | "errors" |
| | | ) |
| | | |
| | | func GetProcessModelList(offset, limit int, currentNumber string) (list []*model.ProcessModel, total int64, err error) { |
| | | func GetProcessModelList(offset, limit int, product, procedure string) (list []*model.ProcessModel, total int64, err error) { |
| | | device, err := model.NewDeviceSearch().SetDeviceId(conf.Conf.CurrentDeviceID).First() |
| | | if err != nil { |
| | | return |
| | | } |
| | | list, total, err = model.NewProcessModelSearch(). |
| | | SetIsNew(true).SetOrder("id desc").SetCurrentNumber(currentNumber). |
| | | SetIsNew(true).SetOrder("id desc"). |
| | | SetProduct(product).SetProcedure(procedure). |
| | | SetPage(offset, limit).SetProcedures(device.ProceduresArr).Find() |
| | | return |
| | | } |
| | | |
| | | func GetOtherProcessModelList(offset, limit int, product, procedure string) (list []*model.ProcessModel, total int64, err error) { |
| | | device, err := model.NewDeviceSearch().SetDeviceId(conf.Conf.CurrentDeviceID).First() |
| | | if err != nil { |
| | | return |
| | | } |
| | | list, total, err = model.NewProcessModelSearch(). |
| | | SetIsNew(true).SetOrder("id desc"). |
| | | SetProductNot(product).SetProcedureNot(procedure). |
| | | SetPage(offset, limit).SetProcedures(device.ProceduresArr).Find() |
| | | return |
| | | } |
| | |
| | | logx.Errorf("TaskStart GetProcessModel err:%v", err) |
| | | return nil, err |
| | | } |
| | | if err == gorm.ErrRecordNotFound { |
| | | return nil, err |
| | | } |
| | | if err == nil { |
| | | return data, nil |
| | | } |