审查视图

pkg/infrastructure/dao/summary_evaluation_dao.go 4.6 KB
tangxvhui authored
1 2 3
package dao

import (
tangxvhui authored
4 5
	"time"
tangxvhui authored
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
	"github.com/go-pg/pg/v10"
	pgTransaction "github.com/linmadan/egglib-go/transaction/pg"
)

type SummaryEvaluationDao struct {
	transactionContext *pgTransaction.TransactionContext
}

func NewSummaryEvaluationDao(options map[string]interface{}) *SummaryEvaluationDao {
	var transactionContext *pgTransaction.TransactionContext
	if value, ok := options["transactionContext"]; ok {
		transactionContext = value.(*pgTransaction.TransactionContext)
	}
	return &SummaryEvaluationDao{
		transactionContext: transactionContext,
	}
}
tangxvhui authored
24
type ExecutorCycle struct {
tangxvhui authored
25 26 27
	CycleId   string    `pg:"cycle_id" `  //周期id
	CycleName string    `pg:"cycle_name"` //周期名称
	CreatedAt time.Time `pg:"created_at"`
tangxvhui authored
28 29
}
30 31 32
// GetExecutorCycleList 获取执行人拥有的周期列表
// executorId 执行人id
// offset,limit 分页
tangxvhui authored
33
func (d *SummaryEvaluationDao) GetExecutorCycleList(companyId int, executorId int, offset int, limit int, isHrbp bool) ([]ExecutorCycle, error) {
tangxvhui authored
34
	sqlStr := `select  
35 36 37 38
	distinct on(
		summary_evaluation.cycle_id ,
		summary_evaluation.cycle_name) 
	summary_evaluation.created_at ,
tangxvhui authored
39
	summary_evaluation.cycle_id ,
40 41
	summary_evaluation.cycle_name 
	from summary_evaluation 
42 43 44
	where summary_evaluation.company_id=? 
	and summary_evaluation.begin_time <=now() 
	and summary_evaluation.deleted_at isnull
45
	`
tangxvhui authored
46 47
	tx := d.transactionContext.PgTx
	condition := []interface{}{
tangxvhui authored
48
		companyId, executorId,
tangxvhui authored
49
	}
50
	if isHrbp {
tangxvhui authored
51 52 53
		sqlStr += ` and (summary_evaluation.executor ->>'userId'='?' or summary_evaluation."types"=4 ) `
	} else {
		sqlStr += ` and (summary_evaluation.executor ->>'userId'='?') `
54 55
	}
	condition = append(condition, offset, limit)
56 57

	sqlStr1 := `with t1 as ( ` + sqlStr + ` ) select * from  t1 order by t1.created_at desc  offset ? limit ? `
tangxvhui authored
58
	result := []ExecutorCycle{}
59
	_, err := tx.Query(&result, sqlStr1, condition...)
tangxvhui authored
60 61 62
	return result, err
}
63
// CountExecutorCycleList 统计执行人拥有的周期列表
tangxvhui authored
64
func (d *SummaryEvaluationDao) CountExecutorCycleList(companyId int, executorId int, isHrbp bool) (int, error) {
tangxvhui authored
65 66 67 68
	sqlStr := `select count(
		distinct summary_evaluation.cycle_id
	  ) as cnt
	from  summary_evaluation 
69
	where  summary_evaluation.company_id=? and summary_evaluation.deleted_at isnull `
tangxvhui authored
70 71 72

	tx := d.transactionContext.PgTx
	condition := []interface{}{
tangxvhui authored
73
		companyId, executorId,
tangxvhui authored
74
	}
tangxvhui authored
75 76 77 78
	if isHrbp {
		sqlStr += ` and (summary_evaluation.executor ->>'userId'='?' or summary_evaluation."types"=4 ) `
	} else {
		sqlStr += ` and (summary_evaluation.executor ->>'userId'='?') `
79 80 81 82 83 84
	}
	var cnt int
	_, err := tx.QueryOne(pg.Scan(&cnt), sqlStr, condition...)
	return cnt, err
}
tangxvhui authored
85 86 87 88 89 90
type TargetUserCycle struct {
	CycleId   string    `pg:"cycle_id" `  //周期id
	CycleName string    `pg:"cycle_name"` //周期名称
	BeginTime time.Time `pg:"begin_time"`
}
91 92 93
// GetExecutorCycleList 获取被评估目标人拥有的周期列表
// executorId 执行人id
// offset,limit 分页
tangxvhui authored
94
func (d *SummaryEvaluationDao) GetTargetUserCycleList(executorId int, offset int, limit int, evaluationType int) ([]TargetUserCycle, error) {
95 96 97
	sqlStr := `select  
	distinct 
	summary_evaluation.cycle_id ,
tangxvhui authored
98
	summary_evaluation.begin_time ,
99 100 101 102 103 104 105 106 107 108 109 110 111 112 113
	summary_evaluation.cycle_name 
	from summary_evaluation 
	where summary_evaluation.target_user ->>'userId'='?'
	`
	tx := d.transactionContext.PgTx
	condition := []interface{}{
		executorId,
	}

	if evaluationType > 0 {
		sqlStr += `	and summary_evaluation."types"=? `
		condition = append(condition, evaluationType)
	}

	condition = append(condition, offset, limit)
tangxvhui authored
114 115
	sqlStr += ` order by summary_evaluation.begin_time desc offset ? limit ? `
	result := []TargetUserCycle{}
116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135
	_, err := tx.Query(&result, sqlStr, condition...)
	return result, err
}

// CountExecutorCycleList 统计 被评估目标人拥有的周期列表
func (d *SummaryEvaluationDao) CountTargetUserCycleList(executorId int, evaluationType int) (int, error) {
	sqlStr := `select count(
		distinct summary_evaluation.cycle_id
	  ) as cnt
	from  summary_evaluation 
	where summary_evaluation.target_user ->>'userId'='?' `

	condition := []interface{}{
		executorId,
	}
	if evaluationType > 0 {
		sqlStr += `	and summary_evaluation."types"=? `
		condition = append(condition, evaluationType)
	}
	tx := d.transactionContext.PgTx
tangxvhui authored
136 137 138 139
	var cnt int
	_, err := tx.QueryOne(pg.Scan(&cnt), sqlStr, condition...)
	return cnt, err
}
tangxvhui authored
140 141 142 143 144 145 146 147 148 149 150

func (d *SummaryEvaluationDao) UpdateBeginTime(ids []int, beginTime time.Time) error {
	if len(ids) == 0 {
		return nil
	}
	sqlStr := `update summary_evaluation set begin_time =? 
	where  summary_evaluation.id in(?) `
	condition := []interface{}{
		beginTime, pg.In(ids),
	}
	tx := d.transactionContext.PgTx
tangxvhui authored
151
	_, err := tx.Exec(sqlStr, condition...)
tangxvhui authored
152 153
	return err
}