fix
zhangqian
2023-12-01 8324f872ef3a4d0c978a9b1d062800c6a1701c12
model/common/common.go
@@ -1,6 +1,9 @@
package common
import "github.com/shopspring/decimal"
import (
   "apsClient/constvar"
   "github.com/shopspring/decimal"
)
// 排程任务下发
type (
@@ -35,19 +38,21 @@
   }
   ProductProcedure struct {
      ProcedureID       string               `gorm:"uniqueIndex:idx_product_procedure;type:varchar(191);comment:工序ID" json:"procedureId"`
      ProcedureName     string               `gorm:"type:varchar(191);comment:工序名称,仅查询用" json:"procedureName"`
      NextProcedureID   string               `json:"nextProcedureId"`
      NextProcedureName string               `json:"nextProcedureName"`
      DeviceID          string               `gorm:"type:varchar(191);not null;comment:设备ID" json:"deviceId"`
      DeviceName        string               `json:"deviceName"`
      StartTime         int64                `gorm:"comment:计划开始时间" json:"startTime"`
      EndTime           int64                `gorm:"comment:计划结束时间" json:"endTime"`
      WorkHours         decimal.Decimal      `gorm:"type:decimal(35,18);comment:工时" json:"workHours"`
      InputMaterials    []*ProcedureMaterial `json:"inputMaterials"`    // 输入物料列表
      OutputMaterials   []*ProcedureMaterial `json:"outputMaterials"`   // 输出物料列表
      Workers           []*ProcedureWorker   `json:"workers"`           // 人员列表
      AllProcedureNames []string             `json:"allProcedureNames"` // 所属工单工序列表
      ProductProcedureID string               `gorm:"index;type:varchar(191);not null;comment:产品工序ID" json:"productProcedureID"`
      ProcedureID        string               `gorm:"uniqueIndex:idx_product_procedure;type:varchar(191);comment:工序ID" json:"procedureId"`
      ProcedureName      string               `gorm:"type:varchar(191);comment:工序名称,仅查询用" json:"procedureName"`
      NextProcedureID    string               `json:"nextProcedureId"`
      NextProcedureName  string               `json:"nextProcedureName"`
      DeviceID           string               `gorm:"type:varchar(191);not null;comment:设备ID" json:"deviceId"`
      DeviceName         string               `json:"deviceName"`
      StartTime          int64                `gorm:"comment:计划开始时间" json:"startTime"`
      EndTime            int64                `gorm:"comment:计划结束时间" json:"endTime"`
      WorkHours          decimal.Decimal      `gorm:"type:decimal(35,18);comment:工时" json:"workHours"`
      InputMaterials     []*ProcedureMaterial `json:"inputMaterials"`    // 输入物料列表
      OutputMaterials    []*ProcedureMaterial `json:"outputMaterials"`   // 输出物料列表
      Workers            []*ProcedureWorker   `json:"workers"`           // 人员列表
      AllProcedureNames  []string             `json:"allProcedureNames"` // 所属工单工序列表
      Channel            int32                `json:"channel"`           //通道序号
   }
   DeliverScheduleTask struct {
@@ -62,9 +67,35 @@
      DeviceId string
   }
   ResponsePlcAddress struct {
      KeyData     []byte
      AddressData []byte
      DeviceId    string
      KeyData        []byte
      AddressData    []byte
      DeviceId       string
      PlcAddressList []*PlcAddress //plc 完成量,总量, 读写地址
      PlcConfig      PlcConfig     //用网口还是端口以及网口ip port
   }
   PlcConfig struct {
      Brand      string             `gorm:"type:varchar(191)" json:"brand"`   //comment:PLC品牌
      Method     constvar.PlcMethod `gorm:"type:varchar(191)" json:"method"`  //comment:接口方式
      Address    string             `gorm:"type:varchar(191)" json:"address"` //plc ip地址, method = modbusTCP用
      Port       int                `gorm:"type:int(11)" json:"port"`         //plc 端口号,  method =  modbusTCP用
      BaudRate   int                `gorm:"type:int(11)"  json:"baudRate"`    //串口波特率, method = serial或modbusRTU 时用
      SerialName string             `gorm:"type:int(11)"  json:"serialName"`  //串口名称,method = serial或modbusRTU 时用
      DataBit    int                `gorm:"type:int(11)"  json:"dataBit"`     //数据位,method = modbusRTU 用
      StopBit    int                `gorm:"type:int(11)"  json:"stopBit"`     //停止位,method = modbusRTU 用
      Parity     constvar.Parity    `gorm:"type:int(11)"  json:"parity"`      //校验方式,method = modbusRTU 用
      IsOpen     bool               `gorm:"type:tinyint(1)" json:"isOpen"`
      Detail     string             `gorm:"type:varchar(2048)" json:"-"`
      Details    []*PlcAddress      `gorm:"-" json:"details"`
   }
   PlcAddress struct {
      DeviceID     string                       `json:"deviceID"`     // 设备id
      Channel      int                          `json:"channel"`      // 生产通道on,一个机器可能有多个机位,需要分别配置plc地址
      StartAddress int                          `json:"startAddress"` // 数据起始地址
      Length       int                          `json:"length"`       // 数据长度
      Type         string                       `json:"type"`         // 数据类型
      FieldName    constvar.PlcStartAddressType `json:"fieldName"`    // 对应系统字段,完成量或总量
   }
)
@@ -80,11 +111,8 @@
   }
   ResponseProcessParams struct {
      Number    string                 `json:"number"`    //工艺模型编号
      OrderId   string                 `json:"orderId"`   //订单id
      Product   string                 `json:"product"`   //产品名称
      Procedure string                 `json:"procedure"` //工序
      WorkOrder string                 `json:"workOrder"` //工单
      Device    string                 `json:"device"`    //设备
      Params    string                 `json:"params"`
      ParamsMap map[string]interface{} `json:"paramsMap"`
      DeviceId  string                 `json:"deviceId" gorm:"-"` //用于过滤获取nsq消息
@@ -93,9 +121,61 @@
// MsgTaskStatusUpdate 任务状态改变
type MsgTaskStatusUpdate struct {
   WorkOrderId  string `json:"workOrderId"` //工单编号
   ProcedureID  string `json:"procedureId"` // 工序
   DeviceId     string `json:"deviceId"`    //用于过滤获取nsq消息
   IsProcessing bool   //是否处理中
   IsFinish     bool   //是否完成
   WorkOrderId        string `json:"workOrderId"` //工单编号
   ProcedureID        string `json:"procedureId"` // 工序
   DeviceId           string `json:"deviceId"`    //用于过滤获取nsq消息
   IsProcessing       bool   //是否处理中
   IsFinish           bool   //是否完成
   FinishAmount       int    `json:"finishAmount"`       //isFinish = true时取工序最终加工数传上去
   ProductProcedureID string `json:"productProcedureID"` //产品工序id
   StartTs            int64  `json:"start_ts"`           //开始时间
   FinishTs           int64  `json:"finish_ts"`          //结束时间
}
// DeviceMsg 下发到终端的设备信息
type DeviceMsg struct {
   ID                  string                 `gorm:"comment:主键ID;primaryKey;type:varchar(191);" json:"id"`
   DeviceProcedureAttr []*DeviceProcedureAttr `json:"deviceProcedureAttr"` // 设备工序属性列表
   ExtChannelAmount    int                    `gorm:"type:tinyint;comment:额外的通道数量;default:0;" json:"extChannelAmount"`
   DeviceName          string                 `json:"deviceName"`
   DeviceMac           string                 `json:"deviceMac"`
   PlcAddressList      []*PlcAddress
   PlcConfig           *PlcConfig
}
type DeviceProcedureAttr struct {
   ProcedureID   string `gorm:"index;type:varchar(191);comment:工序ID" json:"procedureId"`
   ProcedureName string `gorm:"type:varchar(191);comment:工序名称" json:"procedureName"`
   DeviceID      string `gorm:"index;type:varchar(191);not null;comment:设备ID" json:"deviceId"`
}
type PullDataType string
const (
   PullDataTypeProcessModel           = "process_model"
   PullDataTypeDevice                 = "device"
   PullDataTypeProcessModelPlcAddress = "process_model_plc_address"
)
// MsgPullDataRequest 拉取云端数据
type MsgPullDataRequest struct {
   DataType PullDataType `json:"dataType"` //要拉取的数据类型
}
type MsgPullDataResponse struct {
   DataType PullDataType `json:"dataType"` //要拉取的数据类型
   Data     interface{}  //返回的数据
}
type RTUConfig struct {
   BaudRate   int             `json:"baudRate"`                     //串口波特率, method = serial时 用
   SerialName string          `json:"serialName"`                   //串口名称,method = serial时 用
   DataBit    int             `gorm:"type:int(11)"  json:"dataBit"` //数据位,method = modbusRTU 用
   StopBit    int             `gorm:"type:int(11)"  json:"stopBit"` //停止位,method = modbusRTU 用
   Parity     constvar.Parity `gorm:"type:int(11)"  json:"parity"`  //校验方式,method = modbusRTU 用
}
// MsgReportData 数据上报
type MsgReportData struct {
   ReportType constvar.ReportType `json:"reportType"` //上报类型
   Content    string              `json:"Content"`
}