diff --git a/services/om/implments/SerialOrder.service.impl.go b/services/om/implments/SerialOrder.service.impl.go index d3a2af4..0260d3c 100644 --- a/services/om/implments/SerialOrder.service.impl.go +++ b/services/om/implments/SerialOrder.service.impl.go @@ -3,6 +3,7 @@ package implments import ( + baseDal "LAPP_GAAS_GFrame_BACKEND/dao/base" dal "LAPP_GAAS_GFrame_BACKEND/dao/om" "LAPP_GAAS_GFrame_BACKEND/db" "LAPP_GAAS_GFrame_BACKEND/grmi" @@ -350,7 +351,7 @@ func (impl *SerialOrderServiceImplement) InsertFromWorkOrder(user *models.Userta workOrderStatusDao := dal.NewWorkOrderStatusDAO(session, user.Pid, user.Userid) workOrderStatusRecDao := dal.NewWorkOrderStatusRecLstDAO(session, user.Pid, user.Userid) serialOrderStatusDao := dal.NewSerialOrderStatusDAO(session, user.Pid, user.Userid) - + articleDao := baseDal.NewArticleDAO(session, user.Pid, user.Userid) for _, workOrderId := range workOrderIds { workOrder, err := workOrderDao.SelectOne(workOrderId) if err != nil { @@ -389,6 +390,7 @@ func (impl *SerialOrderServiceImplement) InsertFromWorkOrder(user *models.Userta } else { perDuration = endTime.Sub(now).Seconds() / workOrder.PlanQty } + artMap := make(map[string]*baseModel.Article) for i := 0; i < int(workOrder.PlanQty); i++ { log.Debug("InsertFromWorkOrder for work order planQty") snr := new(models.Snrtab) @@ -400,7 +402,21 @@ func (impl *SerialOrderServiceImplement) InsertFromWorkOrder(user *models.Userta return nil, err } planStartDate := workOrder.PlanStartDate.Restore().Format("20060102") - prefix := workOrder.ArtId + baseModel.PlantName + planStartDate + article, exist := artMap[workOrder.ArtId] + if !exist { + article, err = articleDao.SelectOne(workOrder.ArtId) + if err != nil { + _ = session.Rollback() + log.Error("InsertFromWorkOrder 获取物料数据失败, error: " + err.Error()) + return nil, err + } + if article == nil { + _ = session.Rollback() + log.Error("InsertFromWorkOrder , 工单物料不存在, 物料ID:"+ workOrder.ArtId) + return nil, err + } + } + prefix := article.PartId + baseModel.PlantName + planStartDate serialOrderId := strings.Replace(serialNum, "SO-", prefix, 1) var planEndTime time.Time if perDuration != 0 {