修复bug

This commit is contained in:
hero920103 committed 2026-10-19 17:34:11 +08:00
1 parent 1850ac640e
commit 892ba5886d
20 files changed
+1078 -178

No files matched your search

+37 -30
View File
@@ -669,41 +669,48 @@ func (c *AppOaController) oaDashboardReimburse(tid, uid uint64) map[string]inter
}
}
expenseTypes := []map[string]interface{}{}
paidIDList := make([]uint64, 0, len(paidIDs))
for id := range paidIDs {
paidIDList = append(paidIDList, id)
}
var items []models.BackendReimbursementItem
if _, err := models.Orm.QueryTable(new(models.BackendReimbursementItem)).
Filter("tid", tid).Filter("uid", uid).Filter("is_deleted", 0).
All(&items); err == nil {
typeAgg := map[string]*struct {
count int
amount float64
}{}
for i := range items {
if !paidIDs[items[i].ReimbursementID] {
continue
if len(paidIDList) > 0 {
// 按已打款主单 ID 查明细,不依赖明细行的 tid/uid(历史数据可能不一致)
if _, err := models.Orm.QueryTable(new(models.BackendReimbursementItem)).
Filter("reimbursement_id__in", paidIDList).Filter("is_deleted", 0).
All(&items); err == nil {
typeAgg := map[string]*struct {
count int
amount float64
}{}
for i := range items {
if !paidIDs[items[i].ReimbursementID] {
continue
}
name := strings.TrimSpace(items[i].ExpenseType)
if name == "" {
name = "未分类"
}
agg, ok := typeAgg[name]
if !ok {
agg = &struct {
count int
amount float64
}{}
typeAgg[name] = agg
}
agg.count++
agg.amount += items[i].Amount
}
name := strings.TrimSpace(items[i].ExpenseType)
if name == "" {
name = "未分类"
for name, agg := range typeAgg {
expenseTypes = append(expenseTypes, map[string]interface{}{
"name": name, "count": agg.count, "amount": agg.amount,
})
}
agg, ok := typeAgg[name]
if !ok {
agg = &struct {
count int
amount float64
}{}
typeAgg[name] = agg
}
agg.count++
agg.amount += items[i].Amount
}
for name, agg := range typeAgg {
expenseTypes = append(expenseTypes, map[string]interface{}{
"name": name, "count": agg.count, "amount": agg.amount,
sort.Slice(expenseTypes, func(i, j int) bool {
return expenseTypes[i]["amount"].(float64) > expenseTypes[j]["amount"].(float64)
})
}
sort.Slice(expenseTypes, func(i, j int) bool {
return expenseTypes[i]["amount"].(float64) > expenseTypes[j]["amount"].(float64)
})
}
return map[string]interface{}{