purchase.go 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. package service
  2. import (
  3. "context"
  4. modernPb "gitee.com/xuyiping_admin/go_proto/proto/go/backend/xdmy"
  5. "gitee.com/xuyiping_admin/pkg/xerr"
  6. "gorm.io/gorm"
  7. "kpt.xdmy/apiserver/model"
  8. "strconv"
  9. )
  10. // CreateSpecialtyPurchase 创建特殊申购信息
  11. func CreateSpecialtyPurchase(ctx context.Context, req *modernPb.SparePartsRequisitionsRequest) error {
  12. return s.d.DB.Transaction(func(tx *gorm.DB) error {
  13. newBigPartPurchase := model.NewBigPartPurchase(
  14. int64(req.PastureId), int64(req.DepartmentId), int64(req.EmployeId),
  15. int64(req.ProviderId), req.PurchaseType, req.OrderNumber, req.CreateTime,
  16. )
  17. if err := tx.Model(new(model.BigPartPurchase)).Create(newBigPartPurchase).Error; err != nil {
  18. return xerr.WithStack(err)
  19. }
  20. partPurchaseList := make([]*model.PartPurchase, 0)
  21. for _, v := range req.SpotList {
  22. amount, _ := strconv.Atoi(v.Amount)
  23. partPurchaseList = append(partPurchaseList, model.NewPartPurchase(
  24. newBigPartPurchase.Id, int64(req.PastureId), int64(v.PartId), int64(v.BrandId), int64(amount),
  25. v.PartCode, v.PartName, v.Specification, v.Unit, v.Purpose, v.Price, v.ContractId, float64(v.StorageAmount)))
  26. }
  27. if len(partPurchaseList) > 0 {
  28. if err := tx.Model(new(model.PartPurchase)).Create(partPurchaseList).Error; err != nil {
  29. return xerr.WithStack(err)
  30. }
  31. }
  32. return nil
  33. })
  34. }