审查视图

pkg/pushdata/staff_assess.go 3.3 KB
1 2 3
package pushdata

import (
4
	"fmt"
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
	"time"
)

type StaffAssessItem struct {
	TargetUser        string `pg:"target_user"`         //评估的目标人员
	TargetUserAccount string `pg:"target_user_account"` //目标人员账号
	ItemCategory      string `pg:"item_category"`       //分类
	ItemName          string `pg:"item_name"`           //名称
	ItemValue         string `pg:"item_value"`          //评分填写的值
	ItemWeight        string `pg:"item_weight"`         //评分权重
	BeginDay          string `pg:"begin_day"`           //日期
	ProjectName       string `pg:"project_name"`        //项目名称
	ProjectId         string `pg:"project_id"`          //项目id
	CycleId           string `pg:"cycle_id"`            //周期id
	CycleName         string `pg:"cycle_name"`          //周期名称
}

func (t *StaffAssessItem) AppTableName() string {
23
	return "人员绩效评估"
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
}

func (t *StaffAssessItem) AppTableField() []FieldName {
	return []FieldName{
		{Name: "用户姓名"},
		{Name: "手机号"},
		{Name: "分类"},
		{Name: "名称"},
		{Name: "评分"},
		{Name: "权重"},
		{Name: "评估日期"},
		{Name: "项目ID"},
		{Name: "项目名称"},
		{Name: "周期ID"},
		{Name: "周期"},
	}
}

func (t *StaffAssessItem) MapData() (data map[string]string) {
	data = map[string]string{
		"用户姓名": t.TargetUser,
		"手机号":  t.TargetUserAccount,
		"分类":   t.ItemCategory,
		"名称":   t.ItemName,
		"评分":   t.ItemValue,
		"权重":   t.ItemWeight,
		"评估日期": t.BeginDay,
		"项目ID": t.ProjectId,
		"项目名称": t.ProjectName,
		"周期ID": t.CycleId,
tangxvhui authored
54
		"周期":   t.CycleName,
55 56 57 58
	}
	return
}
59
func (t *StaffAssessItem) DataForAppend(nowTime time.Time) (data ReqAppendData, err error) {
60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88
	sqlStr := `select 
	staff_assess.target_user ->>'account' as target_user_account,
	staff_assess.target_user ->>'userName' as target_user,
	to_char(staff_assess.begin_time at time zone 'PRC','YYYY-MM-DD') as begin_day, 
	staff_assess.evaluation_project_id as project_id,
	staff_assess.evaluation_project_name as project_name,
	staff_assess.cycle_id ,
	staff_assess.cycle_name ,
	staff_assess_content.category item_category ,
	staff_assess_content.value as item_value,
	staff_assess_content."name" as item_name,
	staff_assess_content.weight as item_weight
	from staff_assess  
	join staff_assess_content on staff_assess.id =staff_assess_content.staff_assess_id 
	where 1=1
	and staff_assess.end_time between to_timestamp(?)  and to_timestamp(?) `
	yesterday := nowTime.AddDate(0, 0, -1)
	y, m, d := yesterday.Local().Date()
	yesterdayZero := time.Date(y, m, d, 0, 0, 0, 0, time.Local)
	yesterdayEnd := time.Date(y, m, d, 23, 59, 59, 0, time.Local)
	db := getDB()
	dataList := []StaffAssessItem{}
	_, err = db.Query(&dataList, sqlStr, yesterdayZero.Unix(), yesterdayEnd.Unix())
	if len(dataList) == 0 {
		return
	}
	data = ReqAppendData{
		Name:   dataList[0].AppTableName(),
		Fields: dataList[0].AppTableField(),
89
		Data:   make([]map[string]string, 0, len(dataList)),
90 91 92 93 94 95
	}
	for i := range dataList {
		data.Data = append(data.Data, dataList[i].MapData())
	}
	return
}
96 97 98 99 100 101 102 103 104 105 106

func SendDataStaffAssess(nowTime time.Time) error {
	c := NewClient()
	entry := StaffAssessItem{}
	data, err := entry.DataForAppend(nowTime)
	if err != nil {
		return fmt.Errorf("获取每日评估的数据 %s", err)
	}
	err = c.AppendData(data)
	return err
}