作者 陈志颖

feat:增加业绩分红预算信息查询功能

@@ -26,6 +26,8 @@ type SearchMoneyIncentivesEstimateQuery struct { @@ -26,6 +26,8 @@ type SearchMoneyIncentivesEstimateQuery struct {
26 PageNumber int64 `cname:"页码" json:"pageNumber,omitempty"` 26 PageNumber int64 `cname:"页码" json:"pageNumber,omitempty"`
27 // 页面大小 27 // 页面大小
28 PageSize int64 `cname:"页面大小" json:"pageSize,omitempty"` 28 PageSize int64 `cname:"页面大小" json:"pageSize,omitempty"`
  29 + // 激励方式
  30 + IncentivesType int32 `cname:"激励方式" json:"incentivesType,omitempty"`
29 } 31 }
30 32
31 func (searchMoneyIncentivesEstimateQuery *SearchMoneyIncentivesEstimateQuery) Valid(validation *validation.Validation) { 33 func (searchMoneyIncentivesEstimateQuery *SearchMoneyIncentivesEstimateQuery) Valid(validation *validation.Validation) {
@@ -491,10 +491,76 @@ func (dividendsEstimateService *DividendsEstimateService) SearchDividendsIncenti @@ -491,10 +491,76 @@ func (dividendsEstimateService *DividendsEstimateService) SearchDividendsIncenti
491 defer func() { 491 defer func() {
492 _ = transactionContext.RollbackTransaction() 492 _ = transactionContext.RollbackTransaction()
493 }() 493 }()
494 - if err := transactionContext.CommitTransaction(); err != nil {  
495 - return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) 494 + // 分红订单仓储初始化
  495 + var dividendsOrderRepository domain.DividendsOrderRepository
  496 + if value, err := factory.CreateDividendsOrderRepository(map[string]interface{}{
  497 + "transactionContext": transactionContext,
  498 + }); err != nil {
  499 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  500 + } else {
  501 + dividendsOrderRepository = value
  502 + }
  503 + // 分红退货单仓储初始化
  504 + var dividendsReturnedOrderRepository domain.DividendsReturnedOrderRepository
  505 + if value, err := factory.CreateDividendsReturnedOrderRepository(map[string]interface{}{
  506 + "transactionContext": transactionContext,
  507 + }); err != nil {
  508 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  509 + } else {
  510 + dividendsReturnedOrderRepository = value
  511 + }
  512 +
  513 + // 订单产品仓储初始化
  514 + var orderGoodRepository domain.OrderGoodRepository
  515 + if value, err := factory.CreateOrderGoodRepository(map[string]interface{}{
  516 + "transactionContext": transactionContext,
  517 + }); err != nil {
  518 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  519 + } else {
  520 + orderGoodRepository = value
  521 + }
  522 +
  523 + // 获取订单产品
  524 + if count, orderGoods, err := orderGoodRepository.Find(tool_funs.SimpleStructToMap(searchDividendsIncentivesEstimateQuery)); err != nil {
  525 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  526 + } else {
  527 + var dividendsIncentivesEstimateDtos []*dto.DividendsIncentivesEstimateDto
  528 + for _, orderGood := range orderGoods {
  529 + dividendsIncentivesEstimateDto := &dto.DividendsIncentivesEstimateDto{}
  530 + if orderGood.DividendsOrderNumber != "" { // 查询分红订单
  531 + dividendsOrder, err := dividendsOrderRepository.FindOne(map[string]interface{}{"dividendsOrderNumber": orderGood.DividendsOrderNumber})
  532 + if err != nil {
  533 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  534 + }
  535 + if dividendsOrder == nil {
  536 + return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("%s", orderGood.DividendsOrderNumber))
  537 + }
  538 + if err := dividendsIncentivesEstimateDto.LoadDto(orderGood, dividendsOrder.DividendsOrderNumber, dividendsOrder.DividendsOriginalOrderNum, dividendsOrder.CustomerName, dividendsOrder.Region.RegionName, dividendsOrder.OrderTime); err != nil {
  539 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  540 + }
  541 + dividendsIncentivesEstimateDtos = append(dividendsIncentivesEstimateDtos, dividendsIncentivesEstimateDto)
  542 + } else if orderGood.DividendsReturnedOrderNumber != "" { // 查询分红退货单
  543 + dividendsReturnedOrder, err := dividendsReturnedOrderRepository.FindOne(map[string]interface{}{"dividendsReturnedOrderNumber": orderGood.DividendsReturnedOrderNumber})
  544 + if err != nil {
  545 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  546 + }
  547 + if dividendsReturnedOrder == nil {
  548 + return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("%s", orderGood.DividendsReturnedOrderNumber))
  549 + }
  550 + if err := dividendsIncentivesEstimateDto.LoadDto(orderGood, dividendsReturnedOrder.DividendsReturnedOrderNumber, dividendsReturnedOrder.OriginalOrderNum, dividendsReturnedOrder.DividendsReturnedCustomerName, dividendsReturnedOrder.Region.RegionName, dividendsReturnedOrder.OrderTime); err != nil {
  551 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  552 + }
  553 + dividendsIncentivesEstimateDtos = append(dividendsIncentivesEstimateDtos, dividendsIncentivesEstimateDto)
  554 + }
  555 + }
  556 + if err := transactionContext.CommitTransaction(); err != nil {
  557 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  558 + }
  559 + return map[string]interface{}{
  560 + "total": count,
  561 + "list": dividendsIncentivesEstimateDtos,
  562 + }, nil
496 } 563 }
497 - return nil, nil  
498 } 564 }
499 565
500 // SearchMoneyIncentivesEstimate 查询金额激励分红预算 566 // SearchMoneyIncentivesEstimate 查询金额激励分红预算
@@ -512,10 +578,38 @@ func (dividendsEstimateService *DividendsEstimateService) SearchMoneyIncentivesE @@ -512,10 +578,38 @@ func (dividendsEstimateService *DividendsEstimateService) SearchMoneyIncentivesE
512 defer func() { 578 defer func() {
513 _ = transactionContext.RollbackTransaction() 579 _ = transactionContext.RollbackTransaction()
514 }() 580 }()
515 - if err := transactionContext.CommitTransaction(); err != nil {  
516 - return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) 581 + // 共创合约仓储初始化
  582 + var cooperationContractRepository domain.CooperationContractRepository
  583 + if value, err := factory.CreateCooperationContractRepository(map[string]interface{}{
  584 + "transactionContext": transactionContext,
  585 + }); err != nil {
  586 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  587 + } else {
  588 + cooperationContractRepository = value
  589 + }
  590 + // 查找共创合约
  591 + searchMoneyIncentivesEstimateQuery.IncentivesType = 2
  592 + if count, cooperationContracts, err := cooperationContractRepository.Find(tool_funs.SimpleStructToMap(searchMoneyIncentivesEstimateQuery)); err != nil {
  593 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  594 + } else {
  595 + var moneyIncentivesEstimateDtos []*dto.MoneyIncentivesEstimateDto
  596 + for _, cooperationContract := range cooperationContracts {
  597 + moneyIncentivesEstimateDto := &dto.MoneyIncentivesEstimateDto{}
  598 + if err := moneyIncentivesEstimateDto.LoadDto(cooperationContract); err != nil {
  599 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  600 + }
  601 + moneyIncentivesEstimateDtos = append(moneyIncentivesEstimateDtos, moneyIncentivesEstimateDto)
  602 + }
  603 + if err := transactionContext.CommitTransaction(); err != nil {
  604 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  605 + }
  606 + return map[string]interface{}{
  607 + "grid": map[string]interface{}{
  608 + "total": count,
  609 + "list": moneyIncentivesEstimateDtos,
  610 + },
  611 + }, nil
517 } 612 }
518 - return nil, nil  
519 } 613 }
520 614
521 // UpdateDividendsEstimate 更新分红预算单(预留) 615 // UpdateDividendsEstimate 更新分红预算单(预留)
@@ -194,7 +194,7 @@ func (repository *CooperationApplicationRepository) Find(queryOptions map[string @@ -194,7 +194,7 @@ func (repository *CooperationApplicationRepository) Find(queryOptions map[string
194 query.Where(`(cooperation_application.cooperation_application_applicant->>'userName')::text LIKE ?`, fmt.Sprintf("%%%s%%", applicantName)) 194 query.Where(`(cooperation_application.cooperation_application_applicant->>'userName')::text LIKE ?`, fmt.Sprintf("%%%s%%", applicantName))
195 } 195 }
196 if cooperationApplicationStatus, ok := queryOptions["cooperationApplicationStatus"]; ok && cooperationApplicationStatus.(int32) != 0 { 196 if cooperationApplicationStatus, ok := queryOptions["cooperationApplicationStatus"]; ok && cooperationApplicationStatus.(int32) != 0 {
197 - 197 + query.Where("cooperation_application_status = ?", cooperationApplicationStatus)
198 } 198 }
199 offsetLimitFlag := true 199 offsetLimitFlag := true
200 if offsetLimit, ok := queryOptions["offsetLimit"]; ok { 200 if offsetLimit, ok := queryOptions["offsetLimit"]; ok {
@@ -833,6 +833,12 @@ func (repository *CooperationContractRepository) Find(queryOptions map[string]in @@ -833,6 +833,12 @@ func (repository *CooperationContractRepository) Find(queryOptions map[string]in
833 if cooperationContractNumber, ok := queryOptions["cooperationContractNumber"]; ok && cooperationContractNumber != "" { 833 if cooperationContractNumber, ok := queryOptions["cooperationContractNumber"]; ok && cooperationContractNumber != "" {
834 query.Where("cooperation_contract_number like ?", fmt.Sprintf("%%%s%%", cooperationContractNumber)) 834 query.Where("cooperation_contract_number like ?", fmt.Sprintf("%%%s%%", cooperationContractNumber))
835 } 835 }
  836 + if cooperationContractName, ok := queryOptions["cooperationContactName"]; ok && cooperationContractName != "" {
  837 + query.Where("cooperation_contract_name like ?", fmt.Sprintf("%%%s%%", cooperationContractName))
  838 + }
  839 + if departmentName, ok := queryOptions["departmentName"]; ok && departmentName != "" {
  840 + query.Where(`(cooperation_contract.department->>'departmentName')::test LIKE ?`, fmt.Sprintf("%%%s%%", departmentName))
  841 + }
836 if sponsorName, ok := queryOptions["sponsorName"]; ok && sponsorName != "" { 842 if sponsorName, ok := queryOptions["sponsorName"]; ok && sponsorName != "" {
837 query.Where(`(cooperation_contract.cooperation_contract_sponsor->>'userName')::text LIKE ?`, fmt.Sprintf("%%%s%%", sponsorName)) 843 query.Where(`(cooperation_contract.cooperation_contract_sponsor->>'userName')::text LIKE ?`, fmt.Sprintf("%%%s%%", sponsorName))
838 } 844 }
@@ -3,6 +3,7 @@ package repository @@ -3,6 +3,7 @@ package repository
3 import ( 3 import (
4 "fmt" 4 "fmt"
5 "github.com/go-pg/pg/v10" 5 "github.com/go-pg/pg/v10"
  6 + "github.com/go-pg/pg/v10/orm"
6 7
7 "github.com/linmadan/egglib-go/persistent/pg/sqlbuilder" 8 "github.com/linmadan/egglib-go/persistent/pg/sqlbuilder"
8 pgTransaction "github.com/linmadan/egglib-go/transaction/pg" 9 pgTransaction "github.com/linmadan/egglib-go/transaction/pg"
@@ -164,6 +165,16 @@ func (repository *OrderGoodRepository) Find(queryOptions map[string]interface{}) @@ -164,6 +165,16 @@ func (repository *OrderGoodRepository) Find(queryOptions map[string]interface{})
164 var orderGoodModels []*models.OrderGood 165 var orderGoodModels []*models.OrderGood
165 orderGoods := make([]*domain.OrderGood, 0) 166 orderGoods := make([]*domain.OrderGood, 0)
166 query := sqlbuilder.BuildQuery(tx.Model(&orderGoodModels), queryOptions) 167 query := sqlbuilder.BuildQuery(tx.Model(&orderGoodModels), queryOptions)
  168 + if cooperationContractNumber, ok := queryOptions["cooperationContractNumber"]; ok && cooperationContractNumber != "" {
  169 + query.Where("cooperation_contract_number ilike ?", fmt.Sprintf("%%%s%%", cooperationContractNumber))
  170 + }
  171 + if orderOrReturnedOrderNum, ok := queryOptions["orderOrReturnedOrderNum"]; ok && orderOrReturnedOrderNum != "" {
  172 + query.WhereGroup(func(q *orm.Query) (*orm.Query, error) {
  173 + q.WhereOr("dividends_order_number like ?", fmt.Sprintf("%%%s%%", orderOrReturnedOrderNum))
  174 + q.WhereOr("dividends_returned_order_number like ?", fmt.Sprintf("%%%s%%", orderOrReturnedOrderNum))
  175 + return q, nil
  176 + })
  177 + }
167 offsetLimitFlag := true 178 offsetLimitFlag := true
168 if offsetLimit, ok := queryOptions["offsetLimit"]; ok { 179 if offsetLimit, ok := queryOptions["offsetLimit"]; ok {
169 offsetLimitFlag = offsetLimit.(bool) 180 offsetLimitFlag = offsetLimit.(bool)