device_running_data.go 1.9 KB
package domain

import (
	"fmt"
	"time"
)

const DeviceMaxSingleProductCount = 10000

// 设备运行数据
type DeviceRunningData struct {
	// 数据采集ID
	DeviceCollectionId int64 `json:"deviceCollectionId,string"`
	// 车间名
	WorkShopName string `json:"workShopName"`
	// 采集时间
	CollectionTime time.Time `json:"collectionTime"`
	// 设备名
	//DeviceSn string `json:"deviceSn"`
	// 设备编号
	DeviceCode string `json:"deviceCode"`
	// 设备类型
	DeviceType string `json:"deviceType"`
	// 启动状态:1:启动,0:停止
	StartupStatus int `json:"startupStatus"`
	// 通讯状态:1:通讯正常,0:设备未上电或与采集端通讯故障
	ComStatus int `json:"comStatus"`
	// 报警状态:1:故障,0:正常
	Alarm int `json:"alarm"`

	// 附加数据
	// 匹配数目
	Count int `json:"count"`
	// 当天数量
	TodayTotal int `json:"today_total"`
	// 合计数目
	Total int `json:"total"`
	// 炸机前段温度:炸机前段当前温度 YZJ1 油炸机
	//FrontTemp float64 `json:"frontTemp"`
	// 炸机前段温度:炸机前段当前温度 YZJ2 油炸机
	Temp1 float64 `json:"temp1"`
	// 炸机前段温度:炸机前段当前温度 YZJ2 油炸机
	Temp2 float64 `json:"temp2"`
	// 当前产品种类(产品编号)
	ProductType string `json:"productType"`
	// 日期
	Date string `json:"date"`

	// 额外数据
	// 单位数据 比如:1串/0.1kg   weight = count * unitQuantity
	UnitQuantity float64 `json:"unitQuantity"`
}

func (data *DeviceRunningData) Valid() (bool, error) {
	var (
		result = false
	)
	if data.Count > DeviceMaxSingleProductCount {
		data.Count = 0
		return result, fmt.Errorf("设备数据异常: 生产数量超过:%v", DeviceMaxSingleProductCount)
	}
	if data.StartupStatus == 0 {
		return result, fmt.Errorf("设备数据异常: 启动0")
	}
	if data.ComStatus == 0 {
		return result, fmt.Errorf("设备数据异常: 通讯0")
	}
	return true, nil
}