Files
Feeding_control_system/busisness/blls.py
2025-11-21 14:55:52 +08:00

126 lines
4.7 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.

# import os
# import sys
# # 添加项目根目录到Python路径
# sys.path.insert(0, os.path.join(os.path.dirname(__file__), ".."))
from dataclasses import fields
from typing import List, Optional, Dict, Any
from datetime import datetime
from .models import ArtifactInfoModel, PDRecordModel
from .dals import ArtifactDal, PDRecordDal
class ArtifactBll:
def __init__(self):
"""初始化数据访问层,创建数据库连接"""
# 假设数据库文件在db目录下
self.dal = ArtifactDal()
pass
def get_artifact_task(self) -> List[ArtifactInfoModel]:
"""获取官片任务数据"""
return self.dal.get_top_artifact(5, "ID desc")
def update_artifact_task(self, artifact_id: str, status: int) -> bool:
"""更新管片任务状态"""
return self.dal.update_artifact(artifact_id, {"Status": status})
def finish_artifact_task(self, artifact_id: str,beton_volume) -> bool:
"""完成管片任务"""
return self.dal.update_artifact(artifact_id, {"Status": 3,"BetonVolume":beton_volume,"EndTime":datetime.now()})
def insert_artifact_task(self,model:ArtifactInfoModel) -> bool:
"""插入管片任务"""
if self.dal.exists_by_id(model.ArtifactID):
return False
return self.dal.insert_artifact({
"ArtifactID": model.ArtifactID,
"ArtifactActionID": model.ArtifactActionID,
"ArtifactIDVice1": model.ArtifactIDVice1,
"ProduceRingNumber": model.ProduceRingNumber,
"MouldCode": model.MouldCode,
"SkeletonID": model.SkeletonID,
"RingTypeCode": model.RingTypeCode,
"SizeSpecification": model.SizeSpecification,
"BuriedDepth": model.BuriedDepth,
"BlockNumber": model.BlockNumber,
"BetonVolume": model.BetonVolume,
"BetonTaskID": model.BetonTaskID,
"HoleRingMarking": model.HoleRingMarking,
"GroutingPipeMarking": model.GroutingPipeMarking,
"PolypropyleneFiberMarking": model.PolypropyleneFiberMarking,
"PStatus":1,
"Status": 2,
"Source": model.Source,
"BeginTime": model.BeginTime,
"OptTime": datetime.now(),
})
def get_artifacting_task(self) -> ArtifactInfoModel:
"""获取正在进行的管片任务数据"""
loc_item= self.dal.get_top_artifact(1,"ID desc","Status=2")
if loc_item:
return loc_item[0]
else:
return None
class PDRecordBll:
def __init__(self):
"""初始化数据访问层,创建数据库连接"""
# 假设数据库文件在db目录下
self.dal = PDRecordDal()
pass
def get_PD_record(self) -> List[PDRecordModel]:
"""获取PD官片任务数据"""
return self.dal.get_top_pd(5, "ID desc")
if __name__ == "__main__":
artifact_dal = ArtifactBll()
artifacts = artifact_dal.get_artifact_task()
print("\n打印artifacts数据:")
for i, artifact in enumerate(artifacts):
artifact_id = artifact.ArtifactID
# 如果是数据类对象,转换为字典输出
print(artifact.MouldCode)
if hasattr(artifact, "__dataclass_fields__"):
print(f"{i+1}条: {artifact.__dict__}")
else:
print(f"{i+1}条: {artifact}")
pdrecord_dal = PDRecordBll()
pdrecords = pdrecord_dal.get_PD_record()
# print(pdrecords[0].MouldCode)
print("\n打印pdrecords数据:")
for i, record in enumerate(pdrecords):
# 如果是数据类对象,转换为字典输出
# print(record.__dict__["MouldCode"])
if hasattr(record, "__dataclass_fields__"):
print(f"{i+1}条: {record.__dict__}")
else:
print(f"{i+1}条: {record}")
print("\ntest success")
# # 1. 提取 artifacts 中第1-3条的 MouldCode 和对应的 BetonVolume
# print("=== artifacts 提取结果 ===")
# artifact_extracts = []
# for i, artifact in enumerate(artifacts[:3], 1): # 取前3条正好3条
# mould_code = artifact['MouldCode']
# beton_volume = artifact['BetonVolume']
# artifact_extracts.append({'序号': i, 'MouldCode': mould_code, 'BetonVolume': beton_volume})
# print(f"第{i}条: MouldCode={mould_code}, BetonVolume={beton_volume}")
# # 2. 提取 pdrecords 中的所有 BetonVolume
# print("\n=== pdrecords 提取结果 ===")
# pd_beton_volumes = []
# for i, record in enumerate(pdrecords, 1):
# beton_volume = record['BetonVolume']
# pd_beton_volumes.append({'序号': i, 'BetonVolume': beton_volume})
# print(f"第{i}条: BetonVolume={beton_volume}")