reward_summary.go 2.6 KB
package domain

import (
	"time"
)

// RewardSummary 功过奖惩明细
type RewardSummary struct {
	Id                 int         `json:"id"`
	CompanyId          int         `json:"companyId"`
	OrgId              int         `json:"orgId"`
	RecordDate         time.Time   `json:"recordDate"`         //日期
	RecordDateStr      string      `json:"recordDateStr"`      //
	WorkStation        WorkStation `json:"workStation"`        //工作位置
	Worker             User        `json:"user"`               //员工
	UpToStandard       float64     `json:"upToStandard"`       //合格率
	UpToStandardResult float64     `json:"upToStandardResult"` //合格率 功过评定结果 `功` `过`  `不奖不惩`
	Yield              float64     `json:"yield"`              //产能
	YieldResult        float64     `json:"yieldResult"`        //产能 功过评定结果
	AccidentNum1       int         `json:"accidentNum1"`       //质量事故 次数
	AccidentAmount1    float64     `json:"accidentAmount1"`    //质量事故 损失金额
	AccidentResult1    string      `json:"accidentResult1"`    //质量事故 功过评定结果
	AccidentNum2       int         `json:"accidentNum2"`       //安全事故 次数
	AccidentAmount2    float64     `json:"accidentAmount2"`    //安全事故 损失金额
	AccidentResult2    string      `json:"accidentResult2"`    //安全事故 功过评定结果
	AccidentNum3       int         `json:"accidentNum3"`       //异物金属事故 次数
	AccidentResult3    string      `json:"accidentResult3"`    //异物金属事故 功过评定结果
	AccidentNum4       int         `json:"accidentNum4"`       //异物非金属事故 次数
	AccidentResult4    string      `json:"accidentResult4"`    //异物非金属事故 功过评定结果
	SummaryResult      float64     `json:"summaryResult"`      //奖惩金额计算结果(元)
	CreatedAt          time.Time   `json:"createdAt"`          //
	UpdatedAt          time.Time   `json:"UpdatedAt"`          //
}

type RewardSummaryRepository interface {
	Save(param *RewardSummary) (*RewardSummary, error)
	FindOne(queryOptions map[string]interface{}) (*RewardSummary, error)
	Find(queryOptions map[string]interface{}) (int64, []*RewardSummary, error)
}

// SummaryAccident 汇总事故数据
func (c *RewardSummary) SummaryAccident(trouble *ProductTrouble) {
	switch trouble.Types {
	case TroubleType1:
		c.AccidentNum2 = +1
		c.AccidentAmount2 = +trouble.AmountLoss
	case TroubleType2:
		c.AccidentNum1 = +1
		c.AccidentAmount1 = +trouble.AmountLoss
	case TroubleType3:
		c.AccidentNum3 = +1
	case TroubleType4:
		c.AccidentNum4 = +1
	}
}