Files
Feeding_control_system/busisness/models.py
2026-04-07 09:51:38 +08:00

361 lines
8.1 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

from dataclasses import dataclass
from typing import Optional, Dict, Any, List
@dataclass
class LoginRequest:
"""登录请求模型"""
Program: int
SC: str
loginName: str
password: str
@dataclass
class LoginResponse:
"""登录响应模型"""
Code: int
Message: Optional[str]
Data: Optional[Dict[str, Any]]
@property
def app_id(self) -> Optional[str]:
"""获取AppID"""
return self.Data.get('AppID') if self.Data else None
@property
def expire_time(self) -> Optional[str]:
"""获取过期时间"""
return self.Data.get('ExpireTime') if self.Data else None
@property
def sign_token(self) -> Optional[str]:
"""获取SignToken"""
return self.Data.get('SignToken') if self.Data else None
@property
def zr_jwt(self) -> Optional[str]:
"""获取ZrJwt"""
return self.Data.get('ZrJwt') if self.Data else None
@dataclass
class ArtifactInfo:
"""管片信息基础模型"""
#管片编号
ArtifactID: str = ""
#管片ID
ArtifactActionID: int = 0
#管片副标识1
ArtifactIDVice1: str = ""
#产品环号
ProduceRingNumber: int = 0
#模具编号
MouldCode: str = ""
#骨架ID
SkeletonID: str = ""
#环类型编码
RingTypeCode: str = ""
#尺寸规格
SizeSpecification: str = ""
#埋深
BuriedDepth: str = ""
#块号
BlockNumber: str = ""
#环号标记
HoleRingMarking: str = ""
#出管标记
GroutingPipeMarking: str = ""
#聚丙烯纤维标记
PolypropyleneFiberMarking: str = ""
# 浇筑方量
BetonVolume: float = 0.0
# 任务单号(混凝土)
BetonTaskID: str = ""
#接口中的字段
ProductionProcessCode: int = 0
@dataclass
class ArtifactInfoModel(ArtifactInfo):
"""管片表模型"""
# 继承基础模型的所有字段
ID: int = 0
#FK_PDID
FK_PDID: int = 0
#状态
Status: int = 1
#开始时间
BeginTime: str = ""
#结束时间
EndTime: str = ""
#生产中状态(1正常、2警告、3异常)
PStatus: int = 1
#数据来源(1 api 2离线RFID)
Source: int = 1
#FBetonVolume
FBetonVolume: float = 0.0
#OptTime
OptTime: str = ""
@dataclass
class ArtifactResponse:
"""管片信息响应模型"""
Code: int
Message: Optional[str]
Data: Optional[ArtifactInfo]
@classmethod
def from_dict(cls, data: Dict[str, Any]) -> 'ArtifactResponse':
"""
从字典创建响应对象
Args:
data: 响应数据字典
Returns:
ArtifactResponse: 响应对象
"""
response_data = data.get('Data')
artifact_info = None
if response_data:
artifact_info = ArtifactInfo(**response_data)
return cls(
Code=data.get('Code'),
Message=data.get('Message'),
Data=artifact_info
)
@dataclass
class TaskInfo:
"""任务单信息模型"""
#任务单ID
TaskID: str=""
#任务单状态
TaskStatus: int=0
#任务单状态文本
TaskStatusText: str=""
# #计划生产数量
# TaskCount: int=0
# #已生产数量
# AlreadyProduceCount: int=0
#生产进度
# Progress: str=""
#工程名称
ProjectName: str=""
#计划生产日期
# TaskPlanDateText: str=""
#强度等级
BetonGrade: str=""
#设计配合比编号
MixID: str=""
#生产配合比编号
ProduceMixID: str=""
# #计划方量
PlannedVolume: float=0.0
# #已供方量
# ProducedVolume: float=0.0
#出洞环标记
# HoleRingMarking: str=""
# #注浆管标记
# GroutingPipeMarking: str=""
# #聚丙烯纤维标记
# PolypropyleneFiberMarking: str=""
#生产日期
# TaskDateText: str=""
#盘数
# PlateCount: int=0
# #任务单下发状态
# SendStatus: int=0
# #任务单下发状态
# SendStatusText: str=""
# #配合比下发状态
# MixSendStatus: int=0
# #配合比下发状态
# MixSendStatusText: str=""
@dataclass
class TaskResponse:
"""任务单响应模型"""
Code: int
Message: Optional[str]
Data: Optional[TaskInfo]
@classmethod
def from_dict(cls, data: Dict[str, Any]) -> 'TaskResponse':
"""
从字典创建响应对象
Args:
data: 响应数据字典
Returns:
TaskResponse: 响应对象
"""
response_data = data.get('Data')
task_info = None
if response_data:
task_info = TaskInfo(**response_data)
return cls(
Code=data.get('Code'),
Message=data.get('Message'),
Data=task_info
)
@dataclass
class NotPourArtifactResponse:
"""未浇筑管片列表响应模型"""
Code: int
Message: Optional[str]
Data: Optional[List[ArtifactInfo]]
@classmethod
def from_dict(cls, data: Dict[str, Any]) -> 'NotPourArtifactResponse':
"""
从字典创建响应对象
Args:
data: 响应数据字典
Returns:
NotPourArtifactResponse: 响应对象
"""
response_data = data.get('Data')
artifacts = None
if response_data:
artifacts = [ArtifactInfo(**item) for item in response_data]
return cls(
Code=data.get('Code'),
Message=data.get('Message'),
Data=artifacts
)
@dataclass
class PDRecordModel:
# def __init__(self):
# pass
"""管片表模型"""
ID: int=0
#派单编号
ArtifactID: str=""
ArtifactActionID: int=0
#任务单号
TaskID: str=""
#工程名称
ProjectName: str=""
#生产配合比编号
ProduceMixID: str=""
#设计方量
BetonVolume: float=0.0
#计划派单方量
BetonVolume2: float=0.0
#修改后的方量
BetonVolumeUpd: float=0.0
#实际派单方量
FBetonVolume: float=0.0
#实际派单方量
PlannedVolume: float=0.0
#强度等级
BetonGrade: str=""
#模具编号
MouldCode: str=""
#骨架编号
SkeletonID: str=""
#环类型编码
RingTypeCode: str=""
#尺寸规格
SizeSpecification: str=""
#埋深
BuriedDepth: str=""
#块号
BlockNumber: str=""
# 派单模式(1自动派单 2手动派单0未知
Mode: int=0
# 派单状态1计划中2已下发0未知 3已超时 4未扫码))默认1
Status: int=1
#搅拌生产状态(搅拌生产状态(1未进行生产,2正在生产3生产完毕,4生产中断5已插入搅拌系统6已取消)
GStatus: int=0
#数据来源(1 api 2离线)
Source: int=1
#创建时间
CreateTime: str=""
#创建时间
EndTime: str=""
#派单时间(下发)
OptTime: str=""
#扫描时间
ScanTime: str=""
#ErpID
ErpID: str=""
@dataclass
class FreqRecordModel:
"""频率记录"""
ID: int=0
#模具编号
ArtifactID: str=""
#模具ID
ArtifactActionID: int=0
#模具编号
MouldCode: str=""
#骨架编号
Freq: float=0.0
#是否已同步 0否 1是
IsSync: int=0
#记录时间
OptTime: str=""
@dataclass
class LEDInfo:
"""LED信息模型"""
# 任务单号
TaskID: str
# 盘方量
PlateVolume: str
# 模具编号
MouldCode: str
# 生产投料时间
ProduceStartTime: str
# 管片编号
ArtifactID: str
# 环类型编码(无)
RingTypeCode: str
# 累计盘次
PlateIDSerial: str
# 检验结果
CheckResult: str
# 高斗称值(无)
UpperWeight:float
# 砼出料温度温度
Temper: str
# 车间温度
WorkshopTemperature: str
# 低桶称量值
LowBucketWeighingValue: str
# 振动频率
VibrationFrequency: str
# 总计量
TotMete: str
# 已浇筑方量
BetonVolumeAlready: str
# 水温
WaterTemperature: str
# 配方比例
FormulaProportion: str
# 白班拆模强度文本描述
DayStrengthValue: str
# 夜班拆模强度文本描述
NihtStrengthValue: str