reward_summary_dao.go 5.2 KB
package dao

import (
	"fmt"

	pgTransaction "github.com/linmadan/egglib-go/transaction/pg"
)

type RewardSumaryDao struct {
	transactionContext *pgTransaction.TransactionContext
}

func NewRewardSumaryDao(transactionContext *pgTransaction.TransactionContext) (*RewardSumaryDao, error) {
	if transactionContext == nil {
		return nil, fmt.Errorf("transactionContext参数不能为nil")
	} else {
		return &RewardSumaryDao{
			transactionContext: transactionContext,
		}, nil
	}
}

// 功过看板-日榜
type RewardSummaryDay struct {
	Id                 int    `json:"id"` //id
	RecordDateStr      string `json:"record_date_str"`
	SectionName        string `json:"sectionName"`        //工段名称
	WorkerName         string `json:"workerName"`         //员工名称
	SummaryResult      string `json:"summaryResult"`      //奖惩结果
	YieldResult        string `json:"yieldResult"`        //产效功过结果
	UpToStandardResult string `json:"upToStandardResult"` //合格率功过结果
	AccidentResult1    string `json:"accidentResult1"`    //质量事故功过结果
	AccidentResul2     string `json:"accidentResul2"`     //安全事故功过结果
	AccidentResul3     string `json:"accidentResul3"`     //异物 功过结果
}

// 功过看板-日榜
func (d *RewardSumaryDao) SeachRewardSummaryDay(companyId int, orgId int, recordDate string) ([]RewardSummaryDay, error) {
	sqlStr := `SELECT 
	"id",record_date_str, 
	work_station->>'sectionName',
	worker->>'userName' as worker_name,
	summary_result,
	yield_result,
	up_to_standard_result,
	accident_result1,
	accident_result2,
	accident_result3
	FROM "reward_summary"
	WHERE company_id=?
	and org_id=?
	and record_date_str=?`
	tx := d.transactionContext.PgTx
	var result []RewardSummaryDay
	_, err := tx.Query(&result, sqlStr, companyId, orgId, recordDate)
	return result, err
}

// 功过看板-产效
type RewardSummaryYield struct {
	RecordDateStr string `json:"record_date_str"`
	SectionName   string `json:"sectionName"` //工段名称
	WorkerName    string `json:"workerName"`  //员工名称
	Yield         string `json:"yield"`       //产效
	YieldResult   string `json:"yieldResult"` //产效功过结果
	YieldMax      string `json:"yildMax"`     //产效历史最佳
}

// 功过看板-产效
func (d *RewardSumaryDao) SeachRewardSummaryYield(companyId int, orgId int, recordDate string) ([]RewardSummaryYield, error) {
	sqlStr := `SELECT 
	record_date_str, 
	work_station->>'sectionName',
	worker->>'userName' as worker_name,
	yield_result,
	yield,
	"24" as yield_max
	FROM "reward_summary"
	WHERE company_id=?
	and org_id=?
	and record_date_str=?`
	tx := d.transactionContext.PgTx
	var result []RewardSummaryYield
	_, err := tx.Query(&result, sqlStr, companyId, orgId, recordDate)
	return result, err

}

// 功过看板-合格率
type RewardSummaryUpToStandard struct {
	RecordDateStr      string `json:"record_date_str"`
	SectionName        string `json:"sectionName"`        //工段名称
	WorkerName         string `json:"workerName"`         //员工名称
	UpToStandard       string `json:"upToStandard"`       //合格率
	UpToStandardResult string `json:"upToStandardResult"` //合格率功过结果
	UpToStandardMax    string `json:"upToStandardMax"`    //合格率历史最佳
}

// 功过看板-合格率
func (d *RewardSumaryDao) SeachRewardUpToStandard(companyId int, orgId int, recordDate string) ([]RewardSummaryUpToStandard, error) {
	sqlStr := `SELECT 
	"id",record_date_str, 
	work_station->>'sectionName',
	worker->>'userName' as worker_name,
	up_to_standard_result,
	up_to_standard,
	'90' as up_to_standard_max
	FROM "reward_summary"
	WHERE company_id=23
	and org_id=487
	and record_date_str='2022-10-29'`
	tx := d.transactionContext.PgTx
	var result []RewardSummaryUpToStandard
	_, err := tx.Query(&result, sqlStr, companyId, orgId, recordDate)
	return result, err
}

// 功过看板-异常
type RewardAccident struct {
	RecordDateStr      string `json:"record_date_str"`
	SectionName        string `json:"sectionName"`        //工段名称
	WorkerName         string `json:"workerName"`         //员工名称
	SummaryResult      string `json:"summaryResult"`      //奖惩结果
	YieldResult        string `json:"yieldResult"`        //产效功过结果
	UpToStandardResult string `json:"upToStandardResult"` //合格率功过结果
	AccidentResult1    string `json:"accidentResult1"`    //质量事故功过结果
	AccidentResul2     string `json:"accidentResul2"`     //安全事故功过结果
	AccidentResul3     string `json:"accidentResul3"`     //异物 功过结果
}

// 功过看板-异常
func (d *RewardSumaryDao) SeachRewardAccident(companyId int, orgId int, recordDate string) ([]RewardAccident, error) {
	sqlStr := `SELECT 
	"id",record_date_str, 
	work_station->>'sectionName',
	worker->>'userName' as worker_name,
	up_to_standard_result,
	up_to_standard,
	'90' as up_to_standard_max
	FROM "reward_summary"
	WHERE company_id=?
	and org_id=?
	and record_date_str=?`
	tx := d.transactionContext.PgTx
	var result []RewardAccident
	_, err := tx.Query(&result, sqlStr, companyId, orgId, recordDate)
	return result, err
}