Merge branch 'dev-chenzhiying' into dev
正在显示
6 个修改的文件
包含
66 行增加
和
18 行删除
| @@ -16,9 +16,9 @@ type PayCreditAccountCommand struct { | @@ -16,9 +16,9 @@ type PayCreditAccountCommand struct { | ||
| 16 | // 账期结算实付金额 | 16 | // 账期结算实付金额 |
| 17 | ActuallyPaidAmount float64 `cname:"账期结算实付金额" json:"actuallyPaidAmount" valid:"Required"` | 17 | ActuallyPaidAmount float64 `cname:"账期结算实付金额" json:"actuallyPaidAmount" valid:"Required"` |
| 18 | // 备注 | 18 | // 备注 |
| 19 | - Remarks string `cname:"备注" json:"remarks" valid:"Required"` | 19 | + Remarks string `cname:"备注" json:"remarks"` |
| 20 | // 支付凭证附件 | 20 | // 支付凭证附件 |
| 21 | - PaymentDocumentAttachments []*domain.Attachment `cname:"支付凭证附件" json:"paymentDocumentAttachment" valid:"Required"` | 21 | + PaymentDocumentAttachments []*domain.Attachment `cname:"支付凭证附件" json:"paymentDocumentAttachment"` |
| 22 | // 公司ID,通过集成REST上下文获取 | 22 | // 公司ID,通过集成REST上下文获取 |
| 23 | CompanyId int64 `cname:"公司ID" json:"companyId" valid:"Required"` | 23 | CompanyId int64 `cname:"公司ID" json:"companyId" valid:"Required"` |
| 24 | // 组织机构ID | 24 | // 组织机构ID |
| @@ -609,6 +609,9 @@ func (dividendsEstimateService *DividendsEstimateService) ConfirmDividendsIncent | @@ -609,6 +609,9 @@ func (dividendsEstimateService *DividendsEstimateService) ConfirmDividendsIncent | ||
| 609 | }) | 609 | }) |
| 610 | } | 610 | } |
| 611 | 611 | ||
| 612 | + // 统计分红订单 | ||
| 613 | + var countDividendsOrders int32 | ||
| 614 | + | ||
| 612 | // 获取订单产品 | 615 | // 获取订单产品 |
| 613 | if _, orderGoods, err := orderGoodRepository.Find(map[string]interface{}{ | 616 | if _, orderGoods, err := orderGoodRepository.Find(map[string]interface{}{ |
| 614 | "orderGoodIds": orderGoodIds, | 617 | "orderGoodIds": orderGoodIds, |
| @@ -634,9 +637,15 @@ func (dividendsEstimateService *DividendsEstimateService) ConfirmDividendsIncent | @@ -634,9 +637,15 @@ func (dividendsEstimateService *DividendsEstimateService) ConfirmDividendsIncent | ||
| 634 | if dividendsEstimateDetails, err := confirmDividendsIncentivesEstimateService.Confirm(orderGoods); err != nil { | 637 | if dividendsEstimateDetails, err := confirmDividendsIncentivesEstimateService.Confirm(orderGoods); err != nil { |
| 635 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | 638 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) |
| 636 | } else { | 639 | } else { |
| 637 | - for _, dividendsEstimateDetail := range dividendsEstimateDetails { | 640 | + // 统计当前分红预算单数 |
| 641 | + count, err := dividendsEstimateDao.CountDividendsEstimate(map[string]interface{}{}) | ||
| 642 | + if err != nil { | ||
| 643 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
| 644 | + } | ||
| 645 | + | ||
| 646 | + for i, dividendsEstimateDetail := range dividendsEstimateDetails { | ||
| 638 | // 生成分红预算单号 | 647 | // 生成分红预算单号 |
| 639 | - dividendsEstimateOrderNumber, err := dividendsEstimateDao.GenerateDividendsEstimateNumber() | 648 | + dividendsEstimateOrderNumber, err := dividendsEstimateDetail.GenerateSpecificDividendsEstimateNumber(int64(count), int64(i)) |
| 640 | if err != nil { | 649 | if err != nil { |
| 641 | return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | 650 | return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) |
| 642 | } | 651 | } |
| @@ -718,25 +727,16 @@ func (dividendsEstimateService *DividendsEstimateService) ConfirmDividendsIncent | @@ -718,25 +727,16 @@ func (dividendsEstimateService *DividendsEstimateService) ConfirmDividendsIncent | ||
| 718 | "dividendsEstimates": dividendsEstimates, | 727 | "dividendsEstimates": dividendsEstimates, |
| 719 | }) | 728 | }) |
| 720 | 729 | ||
| 721 | - // 创建成功的分红预算单 | ||
| 722 | - var dividendsEstimatesSavedSuccessfully []*domain.DividendsEstimate | ||
| 723 | - // 创建失败的分红预算单 | ||
| 724 | - var dividendsEstimateSaveFailed []*domain.DividendsEstimate | ||
| 725 | - for _, dividendsEstimate := range dividendsEstimates { | ||
| 726 | - if dividendsEstimateSaved, err := dividendsEstimateRepository.Save(dividendsEstimate); err != nil { | ||
| 727 | - dividendsEstimateSaveFailed = append(dividendsEstimateSaveFailed, dividendsEstimate) | 730 | + if dividendsEstimatesSaved, err := dividendsEstimateRepository.SaveMany(dividendsEstimates); err != nil { |
| 728 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | 731 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) |
| 729 | - } else if dividendsEstimateSaved != nil { | ||
| 730 | - dividendsEstimatesSavedSuccessfully = append(dividendsEstimatesSavedSuccessfully, dividendsEstimate) | ||
| 731 | - } | ||
| 732 | - } | ||
| 733 | - | 732 | + } else { |
| 734 | if err := transactionContext.CommitTransaction(); err != nil { | 733 | if err := transactionContext.CommitTransaction(); err != nil { |
| 735 | return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | 734 | return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) |
| 736 | } | 735 | } |
| 737 | // TODO 分析成功和失败原因 | 736 | // TODO 分析成功和失败原因 |
| 738 | - | ||
| 739 | - return dividendsEstimatesSavedSuccessfully, nil | 737 | + successfullyCount := len(dividendsEstimatesSaved) |
| 738 | + return fmt.Sprintf("已完成%d单订单分红预算,生成%d单分红预算,%d订单分红预算失败,失败原因:%s", countDividendsOrders, successfullyCount, 0, ""), nil | ||
| 739 | + } | ||
| 740 | } | 740 | } |
| 741 | } | 741 | } |
| 742 | 742 |
| @@ -643,6 +643,9 @@ func (dividendsOrderService *DividendsOrderService) ImportDividendsOrder(importD | @@ -643,6 +643,9 @@ func (dividendsOrderService *DividendsOrderService) ImportDividendsOrder(importD | ||
| 643 | 643 | ||
| 644 | // 统计当前分红订单数 | 644 | // 统计当前分红订单数 |
| 645 | count, err := dividendsOrderDao.CountDividendsOrder(map[string]interface{}{}) | 645 | count, err := dividendsOrderDao.CountDividendsOrder(map[string]interface{}{}) |
| 646 | + if err != nil { | ||
| 647 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
| 648 | + } | ||
| 646 | 649 | ||
| 647 | // 批量创建分红订单 | 650 | // 批量创建分红订单 |
| 648 | for i, dividendsOrder := range createDividendsOrderCommands { | 651 | for i, dividendsOrder := range createDividendsOrderCommands { |
| 1 | package service | 1 | package service |
| 2 | 2 | ||
| 3 | import ( | 3 | import ( |
| 4 | + "fmt" | ||
| 4 | coreDomain "github.com/linmadan/egglib-go/core/domain" | 5 | coreDomain "github.com/linmadan/egglib-go/core/domain" |
| 5 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/domain" | 6 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/domain" |
| 7 | + "time" | ||
| 6 | ) | 8 | ) |
| 7 | 9 | ||
| 8 | type DividendsEstimateDetail struct { | 10 | type DividendsEstimateDetail struct { |
| @@ -12,6 +14,28 @@ type DividendsEstimateDetail struct { | @@ -12,6 +14,28 @@ type DividendsEstimateDetail struct { | ||
| 12 | DividendsAmount float64 `json:"dividendsAmount"` // 分红金额 | 14 | DividendsAmount float64 `json:"dividendsAmount"` // 分红金额 |
| 13 | } | 15 | } |
| 14 | 16 | ||
| 17 | +// GenerateSpecificDividendsEstimateNumber 批量生成自定义分红预算单号 | ||
| 18 | +func (DividendsEstimateDetail *DividendsEstimateDetail) GenerateSpecificDividendsEstimateNumber(count int64, index int64) (string, error) { | ||
| 19 | + currentTime := time.Now() | ||
| 20 | + if count+index < 1000 { | ||
| 21 | + countStr := fmt.Sprintf("%03d", count+index+1) | ||
| 22 | + timestamp := currentTime.Unix() | ||
| 23 | + timeNow := time.Unix(timestamp, 0) | ||
| 24 | + timeString := timeNow.Format("20060102") | ||
| 25 | + timeString = timeString[2:len(timeString)] | ||
| 26 | + dividendsEstimateNumber := "FH" + timeString + "#" + countStr | ||
| 27 | + return dividendsEstimateNumber, nil | ||
| 28 | + } else { | ||
| 29 | + countStr := fmt.Sprintf("%d", count+index+1) | ||
| 30 | + timestamp := currentTime.Unix() | ||
| 31 | + timeNow := time.Unix(timestamp, 0) | ||
| 32 | + timeString := timeNow.Format("20060102") | ||
| 33 | + timeString = timeString[2:len(timeString)] | ||
| 34 | + dividendsEstimateNumber := "FH" + timeString + "#" + countStr | ||
| 35 | + return dividendsEstimateNumber, nil | ||
| 36 | + } | ||
| 37 | +} | ||
| 38 | + | ||
| 15 | type ConfirmDividendsIncentivesEstimateService interface { | 39 | type ConfirmDividendsIncentivesEstimateService interface { |
| 16 | coreDomain.DomainEventPublisher | 40 | coreDomain.DomainEventPublisher |
| 17 | Confirm(orderGoods []*domain.OrderGood) ([]*DividendsEstimateDetail, error) | 41 | Confirm(orderGoods []*domain.OrderGood) ([]*DividendsEstimateDetail, error) |
| @@ -75,6 +75,18 @@ func (dao *DividendsEstimateDao) UserEstimated(queryOptions map[string]interface | @@ -75,6 +75,18 @@ func (dao *DividendsEstimateDao) UserEstimated(queryOptions map[string]interface | ||
| 75 | return ok, err | 75 | return ok, err |
| 76 | } | 76 | } |
| 77 | 77 | ||
| 78 | +// CountDividendsEstimate 统计当前分红预算单总数 | ||
| 79 | +func (dao *DividendsEstimateDao) CountDividendsEstimate(queryOptions map[string]interface{}) (int, error) { | ||
| 80 | + tx := dao.transactionContext.PgTx | ||
| 81 | + var dividendsEstimateModels []*models.DividendsEstimate | ||
| 82 | + query := tx.Model(÷ndsEstimateModels) | ||
| 83 | + if count, err := query.AllWithDeleted().SelectAndCount(); err != nil { | ||
| 84 | + return 0, err | ||
| 85 | + } else { | ||
| 86 | + return count, nil | ||
| 87 | + } | ||
| 88 | +} | ||
| 89 | + | ||
| 78 | func NewDividendsEstimateDao(transactionContext *pgTransaction.TransactionContext) (*DividendsEstimateDao, error) { | 90 | func NewDividendsEstimateDao(transactionContext *pgTransaction.TransactionContext) (*DividendsEstimateDao, error) { |
| 79 | if transactionContext == nil { | 91 | if transactionContext == nil { |
| 80 | return nil, fmt.Errorf("transactionContext参数不能为空") | 92 | return nil, fmt.Errorf("transactionContext参数不能为空") |
| @@ -164,7 +164,16 @@ func (repository *DividendsEstimateRepository) SaveMany(dividendsEstimates []*do | @@ -164,7 +164,16 @@ func (repository *DividendsEstimateRepository) SaveMany(dividendsEstimates []*do | ||
| 164 | tx := repository.transactionContext.PgTx | 164 | tx := repository.transactionContext.PgTx |
| 165 | var dividendsEstimateModels []*models.DividendsEstimate | 165 | var dividendsEstimateModels []*models.DividendsEstimate |
| 166 | for _, dividendsEstimate := range dividendsEstimates { | 166 | for _, dividendsEstimate := range dividendsEstimates { |
| 167 | + if dividendsEstimate.Identify() == nil { | ||
| 168 | + dividendsEstimateId, err := repository.nextIdentify() | ||
| 169 | + if err != nil { | ||
| 170 | + return nil, err | ||
| 171 | + } else { | ||
| 172 | + dividendsEstimate.DividendsEstimateId = dividendsEstimateId | ||
| 173 | + } | ||
| 174 | + } | ||
| 167 | dividendsEstimateModels = append(dividendsEstimateModels, &models.DividendsEstimate{ | 175 | dividendsEstimateModels = append(dividendsEstimateModels, &models.DividendsEstimate{ |
| 176 | + DividendsEstimateId: dividendsEstimate.DividendsEstimateId, | ||
| 168 | DividendsAccountStatus: dividendsEstimate.DividendsAccountStatus, | 177 | DividendsAccountStatus: dividendsEstimate.DividendsAccountStatus, |
| 169 | DividendsAmount: dividendsEstimate.DividendsAmount, | 178 | DividendsAmount: dividendsEstimate.DividendsAmount, |
| 170 | DividendsEstimateOrderNumber: dividendsEstimate.DividendsEstimateOrderNumber, | 179 | DividendsEstimateOrderNumber: dividendsEstimate.DividendsEstimateOrderNumber, |
-
请 注册 或 登录 后发表评论