作者 yangfu

合约统计修改

... ... @@ -9,6 +9,7 @@ import (
"gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/infrastructure/pg/models"
"gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/infrastructure/pg/transform"
"gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/infrastructure/utils"
"gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/log"
"time"
)
... ... @@ -234,6 +235,61 @@ func (dao *CooperationContractDao) Find(queryOptions map[string]interface{}) (in
return int64(count), cooperationContracts, nil
}
func (dao *CooperationContractDao) FindOne(queryOptions map[string]interface{}) (*domain.CooperationContract, error) {
tx := dao.transactionContext.PgTx
cooperationContractModel := new(models.CooperationContract)
query := sqlbuilder.BuildQuery(tx.Model(cooperationContractModel), queryOptions)
query.SetWhereByQueryOption("cooperation_contract.cooperation_contract_id = ?", "cooperationContractId")
if cooperationContractNumber, ok := queryOptions["cooperationContractNumber"]; ok && cooperationContractNumber != "" {
query.Where("cooperation_contract.cooperation_contract_number = ?", cooperationContractNumber)
}
if companyId, ok := queryOptions["companyId"]; ok && companyId.(int64) != 0 {
query.Where("company->>'companyId' = '?'", companyId)
}
if orgId, ok := queryOptions["orgId"]; ok && orgId.(int64) != 0 {
query.Where("org->>'orgId' = '?'", orgId)
}
if err := query.First(); err != nil {
if err.Error() == "pg: no rows in result set" {
return nil, fmt.Errorf("共创合约不存在")
} else {
return nil, err
}
}
if cooperationContractModel.CooperationContractId == 0 {
return nil, nil
} else {
var cooperationModeModels []*models.CooperationMode
cooperationModeQuery := tx.Model(&cooperationModeModels)
if countMode, err := cooperationModeQuery.
Where("company->>'companyId' = '?'", cooperationContractModel.Company.CompanyId).
Where("org->>'orgId' = '?'", cooperationContractModel.Org.OrgId).
Where("cooperation_mode_number = ?", cooperationContractModel.CooperationModeNumber).
Limit(1).
SelectAndCount(); err != nil {
log.Logger.Error("合约关联的共创模式不存在", map[string]interface{}{
"cooperationContractModel": cooperationContractModel,
})
} else {
if countMode > 0 {
// 获取分红激励规则列表
var dividendsIncentivesRuleModels []*models.DividendsIncentivesRule
var moneyIncentivesRuleModels []*models.MoneyIncentivesRule
var cooperationContractUndertakerModels []*models.CooperationContractUndertaker
var cooperationContractRelevantModels []*models.CooperationContractRelevant
return transform.TransformToCooperationContractDomainModelFromPgModels(
cooperationContractModel,
cooperationModeModels[0],
dividendsIncentivesRuleModels,
moneyIncentivesRuleModels,
cooperationContractRelevantModels,
cooperationContractUndertakerModels)
}
}
return nil, fmt.Errorf("共创合约不存在")
}
}
func NewCooperationContractDao(transactionContext *pgTransaction.TransactionContext) (*CooperationContractDao, error) {
if transactionContext == nil {
return nil, fmt.Errorf("transactionContext参数不能为nil")
... ...
... ... @@ -257,8 +257,23 @@ type searchContractDividendsResult struct {
//
// queryOptions 查询参数
func (ptr *CooperationStatisticsService) GetContractDividends(queryOptions map[string]interface{}) (interface{}, error) {
var request = struct {
//企业
CompanyId int64 `json:"companyId" valid:"Required"`
//OrgId int64 `json:"orgId"`
//UserId int64 `json:"userId"`
//个人
//UserBaseId int64 `json:"userBaseId"`
//Offset int `json:"offset"`
//Limit int `json:"limit"`
ContractId int `json:"contractId" valid:"Required"`
}{}
if err := LoadQueryObject(queryOptions, &request); err != nil {
return nil, err
}
queryOptions = tool_funs.SimpleStructToMap(&request)
// 1.合约详情
contractRepository, _ := repository.NewCooperationContractRepository(ptr.transactionContext)
contractRepository, _ := dao.NewCooperationContractDao(ptr.transactionContext)
if _, ok := queryOptions["contractId"]; !ok {
return nil, fmt.Errorf("合约ID(contractId)不能为空")
}
... ... @@ -294,16 +309,17 @@ func (ptr *CooperationStatisticsService) GetContractDividends(queryOptions map[s
}
}
}
var mapOrderGoods = make(map[int64]*domain.OrderGood)
if len(orderGoodIds) > 0 {
orderGoodRepository, _ := repository.NewOrderGoodRepository(ptr.transactionContext)
_, orderGoods, err := orderGoodRepository.Find(map[string]interface{}{"orderGoodIds": orderGoodIds})
if err != nil {
return res, err
}
var mapOrderGoods = make(map[int64]*domain.OrderGood)
for i := range orderGoods {
mapOrderGoods[orderGoods[i].OrderGoodId] = orderGoods[i]
}
}
var dividends = make([]interface{}, 0)
for i := range creditAccounts {
... ...