正在显示
10 个修改的文件
包含
128 行增加
和
16 行删除
| @@ -61,13 +61,16 @@ sum(settlement_amount) total, | @@ -61,13 +61,16 @@ sum(settlement_amount) total, | ||
| 61 | sum((case when payment_status = 1 then actually_paid_amount else 0 end)) paid, | 61 | sum((case when payment_status = 1 then actually_paid_amount else 0 end)) paid, |
| 62 | sum((case when settlement_time is not null then settlement_amount else 0 end)) accounted | 62 | sum((case when settlement_time is not null then settlement_amount else 0 end)) accounted |
| 63 | from credit_accounts | 63 | from credit_accounts |
| 64 | -where created_at>? and created_at<? | 64 | +where |
| 65 | ` | 65 | ` |
| 66 | - if v, ok := queryOptions["userBaseId"]; ok { | ||
| 67 | - sql += fmt.Sprintf(`and participator->>'userBaseId'='%v'`, v) | 66 | + if _, ok := queryOptions["beginTime"]; ok { |
| 67 | + sql += `created_at>? and created_at<? and ` | ||
| 68 | } | 68 | } |
| 69 | - if v, ok := queryOptions["orgId"]; ok { | ||
| 70 | - sql += fmt.Sprintf(`and org->>'orgId'= '%v'`, v) | 69 | + if v, ok := queryOptions["userBaseId"]; ok && v.(int64) > 0 { |
| 70 | + sql += fmt.Sprintf(`participator->>'userBaseId'='%v'`, v) | ||
| 71 | + } | ||
| 72 | + if v, ok := queryOptions["orgId"]; ok && v.(int64) > 0 { | ||
| 73 | + sql += fmt.Sprintf(`org->>'orgId'= '%v'`, v) | ||
| 71 | } | 74 | } |
| 72 | _, err := dao.transactionContext.PgDd.Query(v, sql, queryOptions["beginTime"], queryOptions["endTime"]) | 75 | _, err := dao.transactionContext.PgDd.Query(v, sql, queryOptions["beginTime"], queryOptions["endTime"]) |
| 73 | return err | 76 | return err |
| @@ -55,7 +55,27 @@ func (dao *DividendsOrderDao) CheckDividendsOrderNumberAvailable(queryOptions ma | @@ -55,7 +55,27 @@ func (dao *DividendsOrderDao) CheckDividendsOrderNumberAvailable(queryOptions ma | ||
| 55 | 55 | ||
| 56 | // CalculateDividendsOrderAmount 计算分红订单金额 | 56 | // CalculateDividendsOrderAmount 计算分红订单金额 |
| 57 | func (dao *DividendsOrderDao) CalculateDividendsOrderAmount(queryOptions map[string]interface{}) (float64, error) { | 57 | func (dao *DividendsOrderDao) CalculateDividendsOrderAmount(queryOptions map[string]interface{}) (float64, error) { |
| 58 | - return 0, nil | 58 | + tx := dao.transactionContext.PgTx |
| 59 | + var dividendsOrderModel = new(models.DividendsOrder) | ||
| 60 | + query := tx.Model(dividendsOrderModel) | ||
| 61 | + query.ColumnExpr("sum(dividends_order_amount) dividends_order_amount") | ||
| 62 | + if companyId, ok := queryOptions["companyId"]; ok && companyId.(int64) != 0 { | ||
| 63 | + query.Where("company->>'companyId' = '?'", companyId) | ||
| 64 | + } | ||
| 65 | + if orgId, ok := queryOptions["orgId"]; ok && orgId.(int64) != 0 { | ||
| 66 | + query.Where("org->>'orgId' = '?'", orgId) | ||
| 67 | + } | ||
| 68 | + if beginTime, ok := queryOptions["beginTime"]; ok { | ||
| 69 | + query.Where("order_time>= ?", beginTime) | ||
| 70 | + } | ||
| 71 | + if endTime, ok := queryOptions["endTime"]; ok { | ||
| 72 | + query.Where("order_time< ?", endTime) | ||
| 73 | + } | ||
| 74 | + err := query.Select() | ||
| 75 | + if err != nil { | ||
| 76 | + return 0, err | ||
| 77 | + } | ||
| 78 | + return dividendsOrderModel.DividendsOrderAmount, nil | ||
| 59 | } | 79 | } |
| 60 | 80 | ||
| 61 | func NewDividendsOrderDao(transactionContext *pgTransaction.TransactionContext) (*DividendsOrderDao, error) { | 81 | func NewDividendsOrderDao(transactionContext *pgTransaction.TransactionContext) (*DividendsOrderDao, error) { |
| @@ -35,6 +35,31 @@ func (dao *DividendsReturnedOrderDao) GenerateDividendsReturnedOrderNumber() (st | @@ -35,6 +35,31 @@ func (dao *DividendsReturnedOrderDao) GenerateDividendsReturnedOrderNumber() (st | ||
| 35 | } | 35 | } |
| 36 | } | 36 | } |
| 37 | 37 | ||
| 38 | +// CalculateDividendsOrderAmount 计算分红订单金额 | ||
| 39 | +func (dao *DividendsReturnedOrderDao) CalculateDividendsReturnedOrderAmount(queryOptions map[string]interface{}) (float64, error) { | ||
| 40 | + tx := dao.transactionContext.PgTx | ||
| 41 | + var dividendsOrderModel = new(models.DividendsReturnedOrder) | ||
| 42 | + query := tx.Model(dividendsOrderModel) | ||
| 43 | + query.ColumnExpr("sum(dividends_returned_order_refund) dividends_returned_order_refund") | ||
| 44 | + if companyId, ok := queryOptions["companyId"]; ok && companyId.(int64) != 0 { | ||
| 45 | + query.Where("company->>'companyId' = '?'", companyId) | ||
| 46 | + } | ||
| 47 | + if orgId, ok := queryOptions["orgId"]; ok && orgId.(int64) != 0 { | ||
| 48 | + query.Where("org->>'orgId' = '?'", orgId) | ||
| 49 | + } | ||
| 50 | + if beginTime, ok := queryOptions["beginTime"]; ok { | ||
| 51 | + query.Where("order_time>= ?", beginTime) | ||
| 52 | + } | ||
| 53 | + if endTime, ok := queryOptions["endTime"]; ok { | ||
| 54 | + query.Where("order_time< ?", endTime) | ||
| 55 | + } | ||
| 56 | + err := query.Select() | ||
| 57 | + if err != nil { | ||
| 58 | + return 0, err | ||
| 59 | + } | ||
| 60 | + return dividendsOrderModel.DividendsReturnedOrderRefund, nil | ||
| 61 | +} | ||
| 62 | + | ||
| 38 | func NewDividendsReturnedOrderDao(transactionContext *pgTransaction.TransactionContext) (*DividendsReturnedOrderDao, error) { | 63 | func NewDividendsReturnedOrderDao(transactionContext *pgTransaction.TransactionContext) (*DividendsReturnedOrderDao, error) { |
| 39 | if transactionContext == nil { | 64 | if transactionContext == nil { |
| 40 | return nil, fmt.Errorf("transactionContext参数不能未") | 65 | return nil, fmt.Errorf("transactionContext参数不能未") |
| @@ -74,7 +74,7 @@ func (dao *OrderGoodDao) CompanyDividendsStatistics(queryOptions map[string]inte | @@ -74,7 +74,7 @@ func (dao *OrderGoodDao) CompanyDividendsStatistics(queryOptions map[string]inte | ||
| 74 | } | 74 | } |
| 75 | sql := fmt.Sprintf(`select sum(actually_paid_amount) dividends_estimate,0 order_amount | 75 | sql := fmt.Sprintf(`select sum(actually_paid_amount) dividends_estimate,0 order_amount |
| 76 | from credit_accounts | 76 | from credit_accounts |
| 77 | -where company->>'companyId' = '?' and org->>'orgId' = '?' %v %v | 77 | +where company->>'companyId' = '?' and org->>'orgId' = '?' and deleted_at is null %v %v |
| 78 | `, queryTime, queryPaymentStatus) | 78 | `, queryTime, queryPaymentStatus) |
| 79 | var s = &domain.DividendStatisticsDto{} | 79 | var s = &domain.DividendStatisticsDto{} |
| 80 | _, err := tx.Query(s, sql, queryOptions["companyId"], queryOptions["orgId"]) | 80 | _, err := tx.Query(s, sql, queryOptions["companyId"], queryOptions["orgId"]) |
| @@ -8,6 +8,8 @@ import ( | @@ -8,6 +8,8 @@ import ( | ||
| 8 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/domain" | 8 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/domain" |
| 9 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/infrastructure/dao" | 9 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/infrastructure/dao" |
| 10 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/infrastructure/utils" | 10 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/infrastructure/utils" |
| 11 | + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/log" | ||
| 12 | + "math" | ||
| 11 | "time" | 13 | "time" |
| 12 | ) | 14 | ) |
| 13 | 15 | ||
| @@ -23,6 +25,7 @@ func (ptr *CooperationStatisticsService) CooperationGoodsStatistics(queryOptions | @@ -23,6 +25,7 @@ func (ptr *CooperationStatisticsService) CooperationGoodsStatistics(queryOptions | ||
| 23 | OrgId int64 `json:"orgId" valid:"Required"` | 25 | OrgId int64 `json:"orgId" valid:"Required"` |
| 24 | RankType int `json:"rankType" valid:"Required"` | 26 | RankType int `json:"rankType" valid:"Required"` |
| 25 | Top int `json:"top" valid:"Required"` | 27 | Top int `json:"top" valid:"Required"` |
| 28 | + Offset int `json:"offset"` | ||
| 26 | }{} | 29 | }{} |
| 27 | if err := LoadQueryObject(queryOptions, &request); err != nil { | 30 | if err := LoadQueryObject(queryOptions, &request); err != nil { |
| 28 | return nil, err | 31 | return nil, err |
| @@ -46,6 +49,9 @@ func (ptr *CooperationStatisticsService) CooperationGoodsStatistics(queryOptions | @@ -46,6 +49,9 @@ func (ptr *CooperationStatisticsService) CooperationGoodsStatistics(queryOptions | ||
| 46 | if request.Top > 0 { | 49 | if request.Top > 0 { |
| 47 | queryOptions["limit"] = request.Top | 50 | queryOptions["limit"] = request.Top |
| 48 | } | 51 | } |
| 52 | + if request.Offset > 0 { | ||
| 53 | + queryOptions["offset"] = request.Offset | ||
| 54 | + } | ||
| 49 | goods, err := orderGoodDao.CooperationGoodsStatistics(queryOptions) | 55 | goods, err := orderGoodDao.CooperationGoodsStatistics(queryOptions) |
| 50 | if err != nil { | 56 | if err != nil { |
| 51 | return nil, err | 57 | return nil, err |
| @@ -131,13 +137,31 @@ func (ptr *CooperationStatisticsService) CompanyDividendsStatistics(queryOptions | @@ -131,13 +137,31 @@ func (ptr *CooperationStatisticsService) CompanyDividendsStatistics(queryOptions | ||
| 131 | if err != nil { | 137 | if err != nil { |
| 132 | return nil, err | 138 | return nil, err |
| 133 | } | 139 | } |
| 140 | + orderAmount := ptr.CalculateOrderAmount(queryOptions) | ||
| 134 | 141 | ||
| 135 | - res["creditAccount"] = totalDividends.DividendsEstimate | ||
| 136 | - res["orderAmount"] = totalDividends.OrderAmount | ||
| 137 | - res["dividendsEstimate"] = dividendsEstimate.DividendsEstimate | 142 | + res["creditAccount"] = dividendsEstimate.DividendsEstimate // 本月账期结算统计 |
| 143 | + res["orderAmount"] = orderAmount // 订单金额统计 | ||
| 144 | + res["dividendsEstimate"] = totalDividends.DividendsEstimate // 分红预算统计 | ||
| 138 | return res, nil | 145 | return res, nil |
| 139 | } | 146 | } |
| 140 | 147 | ||
| 148 | +func (ptr *CooperationStatisticsService) CalculateOrderAmount(queryOption map[string]interface{}) float64 { | ||
| 149 | + orderDao, err := dao.NewDividendsOrderDao(ptr.transactionContext) | ||
| 150 | + if err != nil { | ||
| 151 | + log.Logger.Error(err.Error()) | ||
| 152 | + } | ||
| 153 | + amount, err := orderDao.CalculateDividendsOrderAmount(queryOption) | ||
| 154 | + if err != nil { | ||
| 155 | + log.Logger.Error(err.Error()) | ||
| 156 | + } | ||
| 157 | + returnedOrderDao, _ := dao.NewDividendsReturnedOrderDao(ptr.transactionContext) | ||
| 158 | + returnedAmount, _ := returnedOrderDao.CalculateDividendsReturnedOrderAmount(queryOption) | ||
| 159 | + if math.Abs(returnedAmount) > math.Abs(amount) { | ||
| 160 | + return 0 | ||
| 161 | + } | ||
| 162 | + return utils.Round(math.Abs(amount)-math.Abs(returnedAmount), 1) | ||
| 163 | +} | ||
| 164 | + | ||
| 141 | func LoadQueryOptions(queryOption map[string]interface{}, keys ...string) (map[string]interface{}, error) { | 165 | func LoadQueryOptions(queryOption map[string]interface{}, keys ...string) (map[string]interface{}, error) { |
| 142 | var res = make(map[string]interface{}) | 166 | var res = make(map[string]interface{}) |
| 143 | for i := 0; i < len(keys); i++ { | 167 | for i := 0; i < len(keys); i++ { |
| @@ -92,6 +92,10 @@ func (ptr *CooperationStatisticsService) SearchContractDividends(queryOptions ma | @@ -92,6 +92,10 @@ func (ptr *CooperationStatisticsService) SearchContractDividends(queryOptions ma | ||
| 92 | } | 92 | } |
| 93 | 93 | ||
| 94 | // TODO: 3.根据合约查询订单金额 | 94 | // TODO: 3.根据合约查询订单金额 |
| 95 | + //for i:=range results{ | ||
| 96 | + // queryOptions["cooperationContractNumber"] =results[i].CooperationContractNumber | ||
| 97 | + // results[i].DividendsOrderAmount = ptr.CalculateOrderAmount(queryOptions) | ||
| 98 | + //} | ||
| 95 | return results, nil | 99 | return results, nil |
| 96 | } | 100 | } |
| 97 | 101 | ||
| @@ -189,12 +193,32 @@ func (ptr *CooperationStatisticsService) GetContractDividends(queryOptions map[s | @@ -189,12 +193,32 @@ func (ptr *CooperationStatisticsService) GetContractDividends(queryOptions map[s | ||
| 189 | } | 193 | } |
| 190 | 194 | ||
| 191 | // 2.合约分红列表 | 195 | // 2.合约分红列表 |
| 192 | - if _, ok := queryOptions["userBaseId"]; ok { | ||
| 193 | - | ||
| 194 | - } else if _, ok := queryOptions["orgId"]; ok { | ||
| 195 | - | ||
| 196 | - } | ||
| 197 | - res["dividends"] = []struct{}{} | 196 | + creditAccountRepository, _ := repository.NewCreditAccountRepository(ptr.transactionContext) |
| 197 | + queryOptions["cooperationContractNumber"] = contract.CooperationContractNumber | ||
| 198 | + _, creditAccounts, err := creditAccountRepository.Find(queryOptions) | ||
| 199 | + if err != nil { | ||
| 200 | + return res, err | ||
| 201 | + } | ||
| 202 | + var dividends = make([]interface{}, 0) | ||
| 203 | + for i := range creditAccounts { | ||
| 204 | + a := creditAccounts[i] | ||
| 205 | + dividends = append(dividends, map[string]interface{}{ | ||
| 206 | + "creditAccountId": a.CreditAccountId, | ||
| 207 | + "goodName": "", | ||
| 208 | + "dividendsType": a.AccountDetail.DividendsType, | ||
| 209 | + "dividendsRatio": 0, | ||
| 210 | + "dividendsAmount": a.AccountDetail.DividendsAmount, | ||
| 211 | + "dividendsUser": map[string]interface{}{ | ||
| 212 | + "userInfo": a.Participator.UserInfo, | ||
| 213 | + "userId": a.Participator.UserId, | ||
| 214 | + }, | ||
| 215 | + "dividendsParticipateType": a.ParticipateType, | ||
| 216 | + "paymentStatus": a.PaymentStatus, | ||
| 217 | + "dividendsEstimateTime": a.CreatedAt.Unix() * 1000, | ||
| 218 | + "orderOrReturnedOrderNum": a.CreditAccountOrderNum, | ||
| 219 | + }) | ||
| 220 | + } | ||
| 221 | + res["dividends"] = dividends | ||
| 198 | return res, nil | 222 | return res, nil |
| 199 | } | 223 | } |
| 200 | 224 |
| @@ -12,6 +12,7 @@ func TransformToContractUndertakerFeedbackDomainModelFromPgModels( | @@ -12,6 +12,7 @@ func TransformToContractUndertakerFeedbackDomainModelFromPgModels( | ||
| 12 | FeedbackAttachment: contractUndertakerFeedbackModel.FeedbackAttachment, | 12 | FeedbackAttachment: contractUndertakerFeedbackModel.FeedbackAttachment, |
| 13 | FeedbackContent: contractUndertakerFeedbackModel.FeedbackContent, | 13 | FeedbackContent: contractUndertakerFeedbackModel.FeedbackContent, |
| 14 | CooperationContractNumber: contractUndertakerFeedbackModel.CooperationContractNumber, | 14 | CooperationContractNumber: contractUndertakerFeedbackModel.CooperationContractNumber, |
| 15 | + CooperationContractName: contractUndertakerFeedbackModel.CooperationContractName, | ||
| 15 | ContractUndertaker: contractUndertakerFeedbackModel.ContractUndertaker, | 16 | ContractUndertaker: contractUndertakerFeedbackModel.ContractUndertaker, |
| 16 | Org: contractUndertakerFeedbackModel.Org, | 17 | Org: contractUndertakerFeedbackModel.Org, |
| 17 | Company: contractUndertakerFeedbackModel.Company, | 18 | Company: contractUndertakerFeedbackModel.Company, |
| @@ -156,6 +156,15 @@ func (repository *ContractUndertakerFeedbackRepository) Find(queryOptions map[st | @@ -156,6 +156,15 @@ func (repository *ContractUndertakerFeedbackRepository) Find(queryOptions map[st | ||
| 156 | if undertakerName, ok := queryOptions["undertakerName"]; ok && undertakerName != "" { | 156 | if undertakerName, ok := queryOptions["undertakerName"]; ok && undertakerName != "" { |
| 157 | query.Where("contract_undertaker->>'userName' like ?", fmt.Sprintf("%%%s%%", undertakerName)) | 157 | query.Where("contract_undertaker->>'userName' like ?", fmt.Sprintf("%%%s%%", undertakerName)) |
| 158 | } | 158 | } |
| 159 | + if companyId, ok := queryOptions["companyId"]; ok && companyId.(int64) != 0 { | ||
| 160 | + query.Where("company->>'companyId' = '?'", companyId) | ||
| 161 | + } | ||
| 162 | + if orgId, ok := queryOptions["orgId"]; ok && orgId.(int64) != 0 { | ||
| 163 | + query.Where("org->>'orgId' = '?'", orgId) | ||
| 164 | + } | ||
| 165 | + if orgIds, ok := queryOptions["orgIds"]; ok && len(orgIds.([]int64)) > 0 { | ||
| 166 | + query.Where("org->>'orgId' in (?)", pg.In(orgIds)) | ||
| 167 | + } | ||
| 159 | // 搜索内容包括项目合约名称、承接人姓名、承接内容关键字 | 168 | // 搜索内容包括项目合约名称、承接人姓名、承接内容关键字 |
| 160 | if matchWord, ok := queryOptions["matchWord"]; ok && matchWord != "" { | 169 | if matchWord, ok := queryOptions["matchWord"]; ok && matchWord != "" { |
| 161 | query.WhereGroup(func(q *orm.Query) (*orm.Query, error) { | 170 | query.WhereGroup(func(q *orm.Query) (*orm.Query, error) { |
| @@ -201,6 +201,9 @@ func (repository *CreditAccountRepository) Find(queryOptions map[string]interfac | @@ -201,6 +201,9 @@ func (repository *CreditAccountRepository) Find(queryOptions map[string]interfac | ||
| 201 | if participatorName, ok := queryOptions["participatorName"]; ok && participatorName != "" { | 201 | if participatorName, ok := queryOptions["participatorName"]; ok && participatorName != "" { |
| 202 | query.Where(`(credit_account.participator->>'userName')::text LIKE ?`, fmt.Sprintf("%%%s%%", participatorName)) | 202 | query.Where(`(credit_account.participator->>'userName')::text LIKE ?`, fmt.Sprintf("%%%s%%", participatorName)) |
| 203 | } | 203 | } |
| 204 | + if cooperationContractNumber, ok := queryOptions["cooperation_contract_number"]; ok && cooperationContractNumber != "" { | ||
| 205 | + query.Where(`cooperation_contract_number = ?`, fmt.Sprintf("%%%s%%", cooperationContractNumber)) | ||
| 206 | + } | ||
| 204 | if paymentStatus, ok := queryOptions["paymentStatus"]; ok && paymentStatus.(int32) != 0 { | 207 | if paymentStatus, ok := queryOptions["paymentStatus"]; ok && paymentStatus.(int32) != 0 { |
| 205 | query.Where("payment_status = ?", paymentStatus) | 208 | query.Where("payment_status = ?", paymentStatus) |
| 206 | } | 209 | } |
| @@ -292,6 +292,9 @@ func (repository *DividendsEstimateRepository) Find(queryOptions map[string]inte | @@ -292,6 +292,9 @@ func (repository *DividendsEstimateRepository) Find(queryOptions map[string]inte | ||
| 292 | if orderOrReturnedOrderNum, ok := queryOptions["orderOrReturnedOrderNum"]; ok && orderOrReturnedOrderNum != "" { | 292 | if orderOrReturnedOrderNum, ok := queryOptions["orderOrReturnedOrderNum"]; ok && orderOrReturnedOrderNum != "" { |
| 293 | query.Where("order_or_returned_order_num = ?", orderOrReturnedOrderNum) | 293 | query.Where("order_or_returned_order_num = ?", orderOrReturnedOrderNum) |
| 294 | } | 294 | } |
| 295 | + if dividendsAccountStatus, ok := queryOptions["dividendsAccountStatus"]; ok && (dividendsAccountStatus.(int32)) > 0 { | ||
| 296 | + query.Where("dividends_account_status = ?", dividendsAccountStatus) | ||
| 297 | + } | ||
| 295 | if companyId, ok := queryOptions["companyId"]; ok && companyId.(int64) != 0 { | 298 | if companyId, ok := queryOptions["companyId"]; ok && companyId.(int64) != 0 { |
| 296 | query.Where("company->>'companyId' = '?'", companyId) | 299 | query.Where("company->>'companyId' = '?'", companyId) |
| 297 | } | 300 | } |
-
请 注册 或 登录 后发表评论