Files
ArmedPolice/app/common/model/work_instance.go
2021-11-09 14:08:02 +08:00

117 lines
3.9 KiB
Go

package model
import (
"ArmedPolice/utils"
"strings"
)
// WorkInstance 工单数据模型
type WorkInstance struct {
Model
ModelTenant
OrderNo string `gorm:"column:order_no;type:varchar(30);default:null;comment:工单单号" json:"order_no"`
Kind WorkInstanceKind `gorm:"column:kind;type:tinyint(1);default:0;comment:工单类型" json:"kind"`
Title string `gorm:"column:title;type:varchar(30);default:null;comment:工单标题" json:"title"`
EquipmentID uint64 `gorm:"column:equipment_id;type:int(11);default:0;comment:装备ID" json:"equipment_id"`
PlateNumber string `gorm:"column:plate_number;type:varchar(10);default:null;comment:车牌号" json:"plate_number"`
Breakdown string `gorm:"column:breakdown;type:varchar(150);default:null;comment:故障" json:"breakdown"`
Priority WorkInstancePriority `gorm:"column:priority;type:tinyint(1);default:1;comment:工单优先级" json:"priority"`
Schedule uint64 `gorm:"column:schedule;type:int(11);default:1;comment:工单进度" json:"schedule"`
IsAssist WorkInstanceAssist `gorm:"column:is_assist;type:tinyint(1);default:0;comment:协助状态" json:"is_assist"` // 当前阶段协助状态,确认是否需要下一阶段协助
Status WorkInstanceStatus `gorm:"column:status;type:tinyint(1);default:0;comment:工单状态" json:"status"`
Remark string `gorm:"column:remark;type:varchar(255);default:null;comment:备注信息" json:"remark"`
Distribution string `gorm:"column:distribution;type:varchar(255);default:null;comment:配送信息" json:"-"`
ModelDeleted
ModelAt
}
// WorkInstanceDistribution 配送信息
type WorkInstanceDistribution struct {
Name string `json:"name"`
Mobile string `json:"mobile"`
Address string `json:"address"`
}
// WorkInstanceKind 工单类型
type WorkInstanceKind int
const (
// WorkInstanceKindForOutside 外修
WorkInstanceKindForOutside WorkInstanceKind = iota + 1
// WorkInstanceKindForWithin 内修
WorkInstanceKindForWithin
)
// WorkInstancePriority 工单优先级
type WorkInstancePriority int
const (
// WorkInstancePriorityForCommonly 一般
WorkInstancePriorityForCommonly WorkInstancePriority = iota + 1
// WorkInstancePriorityForUrgent 紧急
WorkInstancePriorityForUrgent
// WorkInstancePriorityForVeryUrgent 非常紧急
WorkInstancePriorityForVeryUrgent
)
// WorkInstanceStatus 工单状态
type WorkInstanceStatus int
const (
// WorkInstanceStatusForOngoing 进行中
WorkInstanceStatusForOngoing WorkInstanceStatus = iota
// WorkInstanceStatusForComplete 已完成
WorkInstanceStatusForComplete
)
// WorkInstanceAssist 协助状态
type WorkInstanceAssist int
const (
// WorkInstanceAssistForNot 否
WorkInstanceAssistForNot WorkInstanceAssist = iota
// WorkInstanceAssistForYes 是
WorkInstanceAssistForYes
)
func (m *WorkInstance) TableName() string {
return "work_instance"
}
// SetBreakdownAttribute 设置故障信息
func (m *WorkInstance) SetBreakdownAttribute(value []uint64) {
out := make([]string, 0)
for _, v := range value {
out = append(out, utils.UintToString(v))
}
m.Breakdown = strings.Join(out, ",")
}
// GetBreakdownAttribute 获取故障信息
func (m *WorkInstance) GetBreakdownAttribute() []uint64 {
value := strings.Split(m.Breakdown, ",")
out := make([]uint64, 0)
for _, v := range value {
out = append(out, utils.StringToUnit64(v))
}
return out
}
// SetDistributionAttribute 设置配送信息
func (m *WorkInstance) SetDistributionAttribute(value *WorkInstanceDistribution) {
m.Distribution = utils.AnyToJSON(value)
}
// GetDistributionAttribute 获取配送信息
func (m *WorkInstance) GetDistributionAttribute() *WorkInstanceDistribution {
out := new(WorkInstanceDistribution)
_ = utils.FromJSON(m.Distribution, out)
return out
}
func NewWorkInstance() *WorkInstance {
return &WorkInstance{}
}