feat: 完善小组绩效与有效端统计并修复审查问题

This commit is contained in:
Yvan
2026-11-05 01:10:03 +08:00
parent ca9ce99b66
commit dc97690eb1
75 changed files with 5033 additions and 296 deletions
@@ -0,0 +1,32 @@
package business
import (
"context"
"time"
"gorm.io/gorm/clause"
"kra/internal/biz/business"
)
type goalRepo struct{ data Provider }
func NewGoalRepo(data Provider) business.GoalRepo { return &goalRepo{data: data} }
func (r *goalRepo) List(ctx context.Context, begin, end string) ([]*business.PerformanceGoal, error) {
var rows []performanceGoalPO
if err := r.data.DB().WithContext(ctx).Where("month BETWEEN ? AND ?", begin, end).Order("month DESC,kind,target_id").Find(&rows).Error; err != nil {
return nil, business.ErrStorage
}
out := make([]*business.PerformanceGoal, 0, len(rows))
for _, r := range rows {
out = append(out, &business.PerformanceGoal{Kind: r.Kind, TargetID: r.TargetID, Month: r.Month, Open: r.Open, Effective: r.Effective, Amount: r.Amount, UpdatedBy: r.UpdatedBy, UpdatedAt: r.UpdatedAt})
}
return out, nil
}
func (r *goalRepo) Save(ctx context.Context, g *business.PerformanceGoal) error {
db := r.data.DB().WithContext(ctx)
if g.Open == nil && g.Effective == nil && g.Amount == nil {
return storageError(db.Where("kind=? AND target_id=? AND month=?", g.Kind, g.TargetID, g.Month).Delete(&performanceGoalPO{}).Error)
}
po := performanceGoalPO{Kind: g.Kind, TargetID: g.TargetID, Month: g.Month, Open: g.Open, Effective: g.Effective, Amount: g.Amount, UpdatedBy: g.UpdatedBy, UpdatedAt: time.Now()}
return storageError(db.Clauses(clause.OnConflict{Columns: []clause.Column{{Name: "kind"}, {Name: "target_id"}, {Name: "month"}}, DoUpdates: clause.AssignmentColumns([]string{"open", "effective", "amount", "updated_by", "updated_at"})}).Create(&po).Error)
}