package service import ( "context" modernPb "gitee.com/xuyiping_admin/go_proto/proto/go/backend/xdmy" "gitee.com/xuyiping_admin/pkg/xerr" "gorm.io/gorm" "kpt.xdmy/apiserver/model" "strconv" ) // CreateSpecialtyPurchase 创建特殊申购信息 func CreateSpecialtyPurchase(ctx context.Context, req *modernPb.SparePartsRequisitionsRequest) error { return s.d.DB.Transaction(func(tx *gorm.DB) error { newBigPartPurchase := model.NewBigPartPurchase( int64(req.PastureId), int64(req.DepartmentId), int64(req.EmployeId), int64(req.ProviderId), req.PurchaseType, req.OrderNumber, req.CreateTime, ) if err := tx.Model(new(model.BigPartPurchase)).Create(newBigPartPurchase).Error; err != nil { return xerr.WithStack(err) } partPurchaseList := make([]*model.PartPurchase, 0) for _, v := range req.SpotList { amount, _ := strconv.Atoi(v.Amount) partPurchaseList = append(partPurchaseList, model.NewPartPurchase( newBigPartPurchase.Id, int64(req.PastureId), int64(v.PartId), int64(v.BrandId), int64(amount), int64(v.ContractId), v.PartCode, v.PartName, v.Specification, v.Unit, v.Purpose, v.Price, float64(v.StorageAmount))) } if len(partPurchaseList) > 0 { if err := tx.Model(new(model.PartPurchase)).Create(partPurchaseList).Error; err != nil { return xerr.WithStack(err) } } return nil }) }