VMiddleware/service/DetectService.py

683 lines
32 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 time
from service.interfaceToWeb import interfaceToWeb
from service.TagsList import TagsList, plc_info
from utils.Tool import logger, config, PLC_Tool
plcInfo = plc_info()
# 定量仓 实时状态 0-等待卸料、1-卸料、2-给料、3-等待操作台启动、4-读取重量、5-停止装载、6-已完成
houseStatus: int = -1
def writePLC(ip: str, slot: int = 0, tags=None):
if tags is None:
return False, "参数tags未写入需要修改的标签点位"
if not isinstance(tags, list):
return False, "参数tags应该是一个[{key:value},{key2:value2}]的格式"
if len(tags) < 1:
return False, "参数tags未写入需要修改的标签点位"
plc = PLC_Tool(ip, slot)
plc.batch_write_tag(tags)
return True
def read_loading_tags(tagsList, plc):
"""
读取【所有股道】PLC装车实时点位
:param tagsList: 点位列表
:param plc: PLC读取对象
:return: 错误信息
"""
if len(tagsList.getLoading_Tags()) < config.track_num:
logger.error("股道数量与PLC点位套数不一致")
return False
for track in range(config.track_num):
logger.debug("")
logger.debug("------ 股道%d ------", track + 1)
loadingTagsNamelist = [loading_Tag_list[0] for loading_Tag_list in tagsList.getLoading_Tags()[track]]
loadingTagslist = [loading_Tag_list[1] for loading_Tag_list in tagsList.getLoading_Tags()[track]]
success, msg, tags_value = plc.get_tags(loadingTagslist)
if success:
index: int = 0
tag_dict = {}
for tag in tags_value:
# if loadingTagsNamelist[index] == "pre_reading_gross" \
# and len(plcInfo.loadingDict_List) > track:
# print("---", loadingTagsNamelist[index], plcInfo.loadingDict_List[track][loadingTagsNamelist[index]] != tag["value"], (tag["value"] == 1))
# 完成配煤时,记录标志,准备读取毛重(读取两次,一次是配煤完成;一次是配煤完成后开始放料)
if loadingTagsNamelist[index] == "pre_reading_gross" \
and len(plcInfo.loadingDict_List) > track \
and loadingTagsNamelist[index] in plcInfo.loadingDict_List[track].keys() \
and plcInfo.loadingDict_List[track][loadingTagsNamelist[index]] != tag["value"] \
and tag["value"] == 1:
tag_dict["read_gross_weight_%d_type_1" % (track + 1)] = True
if loadingTagsNamelist[index] == "gate_open_type" \
and len(plcInfo.loadingDict_List) > track \
and loadingTagsNamelist[index] in plcInfo.loadingDict_List[track].keys() \
and plcInfo.loadingDict_List[track][loadingTagsNamelist[index]] != tag["value"] \
and tag["value"] == 1:
tag_dict["read_gross_weight_%d_type_2" % (track + 1)] = True
# 开始配煤时,记录标志,准备读取掐煤量
# 注意:此处之前用 completion_coal_blending_type 从true变为false判断该读掐煤量后发现PLC在点击“配煤重读”时此值不准确跳动
# 故 改为 start_coal_blending_type 从false变为true时读取效果会比前者稍慢
if loadingTagsNamelist[index] == "start_coal_blending_type" \
and len(plcInfo.loadingDict_List) > track \
and loadingTagsNamelist[index] in plcInfo.loadingDict_List[track].keys() \
and plcInfo.loadingDict_List[track][loadingTagsNamelist[index]] != tag["value"] \
and tag["value"] == 0:
tag_dict["read_pinch_coal_quantity_%d_type" % (track + 1)] = True
tag_dict[loadingTagsNamelist[index]] = tag["value"]
logger.debug("股道%d- %s : %s", (track + 1), loadingTagsNamelist[index], tag["value"])
index += 1
if len(plcInfo.loadingDict_List) > track:
plcInfo.loadingDict_List[track] = tag_dict
else:
plcInfo.loadingDict_List.append(tag_dict)
else:
logger.error(msg)
return False
pinch_coal_tag = tagsList.getPinchCoalQuantity_Tag()[track]
if len(pinch_coal_tag) == 0:
logger.error("股道%d- 掐煤标签读取失败!请检查配置文件!", track + 1)
return False
success, msg, tags_value = plc.get_array(pinch_coal_tag[1], int(pinch_coal_tag[3]))
if success:
if len(plcInfo.pinchCoalQuantityList_List) > track:
plcInfo.pinchCoalQuantityList_List[track] = tags_value["value"][int(pinch_coal_tag[2]):]
else:
plcInfo.pinchCoalQuantityList_List.append(tags_value["value"][int(pinch_coal_tag[2]):])
logger.debug("股道%d- %s : %s", (track + 1), pinch_coal_tag[1], tags_value["value"][int(pinch_coal_tag[2]):])
else:
logger.error(msg)
return False
gross_weight_tag = tagsList.getGrossWeight_Tags()[track]
if len(gross_weight_tag) == 0:
logger.error("股道%d- 毛重标签读取失败!请检查配置文件!", track + 1)
return False
success, msg, tags_value = plc.get_array(gross_weight_tag[1], int(gross_weight_tag[3]))
if success:
if len(plcInfo.grossWeightList_List) > track:
plcInfo.grossWeightList_List[track] = tags_value["value"][int(gross_weight_tag[2]):]
else:
plcInfo.grossWeightList_List.append(tags_value["value"][int(gross_weight_tag[2]):])
logger.debug("股道%d- %s : %s", (track + 1), pinch_coal_tag[1], tags_value["value"][int(gross_weight_tag[2]):])
else:
logger.error(msg)
return False
return True
def read_preload_tags(tagsList, plc):
"""
读取PLC预装量参数
:param tagsList: 点位列表
:param plc: PLC读取对象
:return: 错误信息
"""
pre_load_weight_Tags = tagsList.getPreLoadWeight_Tags()
for track in range(len(pre_load_weight_Tags)):
if len(pre_load_weight_Tags[track]) == 0:
logger.error("股道%d- 预装量标签读取失败!请检查配置文件!", track + 1)
return False
success, msg, tags_value = plc.get_array(pre_load_weight_Tags[track][1], pre_load_weight_Tags[track][3])
if success:
plcInfo.preLoadWeightList_List.append(tags_value["value"][pre_load_weight_Tags[track][2]:])
else:
logger.error(msg)
return msg
def read_belt_tags(tagsList, plc):
"""
读取PLC 皮带启动状态点位
:param tagsList: 点位列表
:param plc: PLC读取对象
:return: 错误信息
"""
tags_list_name = [tag_list[0] for tag_list in tagsList.getBeltStartTags()]
tags_list = [tag_list[1] for tag_list in tagsList.getBeltStartTags()]
# logger.warn(list(tags_dict.keys()))
success, msg, tags_value = plc.get_tags(tags_list)
if success:
type_change = []
index: int = 0
for tag in tags_value:
if plcInfo.belt_start_dict.get(tags_list_name[index], None) != tag["value"]:
type_change.append({"deviceType": 1,
"deviceCode": tags_list_name[index],
"actionType": int(tag["value"]),
"actionTime": time.strftime('%Y-%m-%d %H:%M:%S')})
plcInfo.belt_start_dict[tags_list_name[index]] = tag["value"]
# logger.debug("%s : %s", tags_list_name[index], tag["value"])
index += 1
else:
logger.error(msg)
return ""
return type_change
def read_feeder_tags(tagsList, plc):
"""
读取PLC 给煤机启动状态点位
:param tagsList: 点位列表
:param plc: PLC读取对象
:return: 错误信息
"""
tags_list_name = [tag_list[0] for tag_list in tagsList.getFeederStartTags()]
tags_list = [tag_list[1] for tag_list in tagsList.getFeederStartTags()]
# logger.warn(list(tags_dict.keys()))
success, msg, tags_value = plc.get_tags(tags_list)
if success:
type_change = []
index: int = 0
for tag in tags_value:
if plcInfo.feeder_start_dict.get(tags_list_name[index], None) != tag["value"]:
type_change.append({"deviceType": 2,
"deviceCode": tags_list_name[index],
"actionType": int(tag["value"]),
"actionTime": time.strftime('%Y-%m-%d %H:%M:%S')})
plcInfo.feeder_start_dict[tags_list_name[index]] = tag["value"]
# logger.debug("%s : %s", tags_list_name[index], tag["value"])
index += 1
else:
logger.error(msg)
return ""
return type_change
def readPLC(plc):
"""
读取PLC的点位
:param plc: 连接的PLC对象
:return:
"""
tagsList = TagsList()
read_result = read_loading_tags(tagsList, plc)
if not read_result:
return False, []
belt_change_type = read_belt_tags(tagsList, plc)
feeder_change_type = read_feeder_tags(tagsList, plc)
return True, [*belt_change_type, *feeder_change_type]
def upload_load_type(loadingDict: dict):
statusList = [
"配煤完成,等待卸料",
"卸料",
"给料",
"等待操作台启动",
"读取重量",
"停止装载",
"已完成"
]
if loadingDict.get("completion_coal_blending_type", False) is True \
and loadingDict.get("gate_open_type", False) is False:
# 配煤完成 并且 闸板未打开 此为 等待卸料
return 0, statusList[0]
elif loadingDict.get("completion_coal_blending_type", False) is True \
and loadingDict.get("gate_open_type", False) is True:
return 1, statusList[1]
elif loadingDict.get("start_coal_blending_type", False) is True:
return 2, statusList[2]
elif loadingDict.get("load_system_open", False) is False \
and loadingDict.get("report_open_type", False) is True:
return 5, statusList[5]
elif loadingDict.get("report_open_type", False) is False:
return 6, statusList[6]
else:
return -1, ""
def interval_read_PLC_up_web():
"""
循环读取PLC数据 根据条件上传至WEB
:return:
"""
plc = PLC_Tool(config.ip_address, config.slot)
interface = interfaceToWeb()
login_result, token_type, access_token = interface.loginWeb(config.login_web_url, config.username,
config.password, config.authorization)
while True:
up_result = ""
start_time = time.time()
load_result, flag_changeds = readPLC(plc)
end_time = time.time()
# print(end_time, "运行时长:%3.f \n" % (end_time - start_time))
if not load_result:
time.sleep(30)
continue
if login_result is not "":
logger.warn(login_result)
return
for track in range(config.track_num):
loadingDict = plcInfo.loadingDict_List[track]
grossWeightList = plcInfo.grossWeightList_List[track]
pinchCoalQuantityList = plcInfo.pinchCoalQuantityList_List[track]
if loadingDict.get("report_open_type", False) is True:
logger.debug("股道%d- 判定上传掐煤-> %s", track+1,
(loadingDict.get("read_pinch_coal_quantity_%d_type" % (track+1), False) is True))
logger.debug("股道%d- 判定第1次上传毛重-> %s", track+1,
(loadingDict.get("read_gross_weight_%d_type_1" % (track + 1), False) is True))
logger.debug("股道%d- 判定第2次上传毛重-> %s", track+1,
(loadingDict.get("read_gross_weight_%d_type_2" % (track + 1), False) is True))
if loadingDict.get("read_pinch_coal_quantity_%d_type" % (track+1), False) is True \
or (
loadingDict.get("loading_carriage_order", -1) == loadingDict.get("total_number_carriage", -2)
and loadingDict.get("load_system_open", True) is False
and loadingDict.get("completion_coal_blending_type", True) is False):
loadingDict["read_pinch_coal_quantity_%d_type" % (track+1)] = False
if loadingDict["loading_carriage_order"] == 0:
logger.warn("获取到掐煤量但是车节号为0取消上传")
continue
if config.upload_type == 1:
up_result = interface.upload_pinch_coal(config.upload_pinch_coal_url,
time.strftime('%Y-%m-%d %H:%M:%S'),
loadingDict["loading_carriage_order"],
pinchCoalQuantityList[
loadingDict["loading_carriage_order"]-1],
str(track+1))
logger.info(
"股道%d- 获取到第%d节车厢的掐煤数:%2.f 千克" % (
(track+1), loadingDict["loading_carriage_order"],
pinchCoalQuantityList[loadingDict["loading_carriage_order"]-1]))
if loadingDict.get("read_gross_weight_%d_type_1" % (track + 1), False) is True:
loadingDict["read_gross_weight_%d_type_1" % (track + 1)] = False
if loadingDict["loading_carriage_order"] == 0:
logger.warn("获取到装车毛重但是车节号为0取消上传")
continue
if config.upload_type == 1:
up_result = interface.upload_gross_weight(config.upload_gross_weight_url,
time.strftime('%Y-%m-%d %H:%M:%S'),
loadingDict["loading_carriage_order"],
float(loadingDict.get("real_weight",
0)) * 1000.0,
str(track+1))
logger.info(
"股道%d- 获取到第%d节车厢的预计毛重值:%2.f 千克" % (
(track+1), loadingDict["loading_carriage_order"],
float(loadingDict.get("real_weight", 0)) * 1000.0))
if loadingDict.get("read_gross_weight_%d_type_2" % (track + 1), False) is True \
and loadingDict.get("completion_coal_blending_type", False) is True:
loadingDict["read_gross_weight_%d_type_2" % (track + 1)] = False
if loadingDict["loading_carriage_order"] == 0:
logger.warn("获取到装车毛重但是车节号为0取消上传")
continue
if config.upload_type == 1:
up_result = interface.upload_gross_weight(config.upload_gross_weight_url,
time.strftime('%Y-%m-%d %H:%M:%S'),
loadingDict["loading_carriage_order"],
grossWeightList[
loadingDict["loading_carriage_order"]-1],
str(track+1))
logger.info(
"股道%d- 获取到第%d节车厢的实际毛重值:%2.f 千克" % (
(track+1), loadingDict["loading_carriage_order"],
grossWeightList[loadingDict["loading_carriage_order"]-1]))
if loadingDict.get("gross_weight_refresh", 0) > 0:
if loadingDict["loading_carriage_order"] == 0:
logger.warn("获取到配煤重读毛重但是车节号为0取消上传")
continue
if config.upload_type == 1:
up_result = interface.upload_gross_weight(config.upload_gross_weight_url,
time.strftime('%Y-%m-%d %H:%M:%S'),
loadingDict["loading_carriage_order"],
loadingDict.get("gross_weight_refresh", 0),
str(track+1))
logger.info(
"股道%d- 获取到第%d节车厢的配煤重读毛重值:%2.f 千克" % (
(track+1), loadingDict["loading_carriage_order"],
loadingDict.get("gross_weight_refresh", 0)))
plc = PLC_Tool(config.ip_address, config.slot)
grossrefresh_Tag = ""
for grossrefresh_l in TagsList().getLoading_Tags()[track]:
if grossrefresh_l[0] == "gross_weight_refresh" and len(grossrefresh_l) > 1:
grossrefresh_Tag = grossrefresh_l[1]
if grossrefresh_Tag == "":
logger.error("股道%d- 配煤重读点位读取失败 ", (track + 1))
success, msg = plc.write_tag(grossrefresh_Tag, 0)
if not success:
logger.error("股道%d- 配煤重读归零失败 ", (track+1))
if up_result != "":
logger.warn(up_result)
status, status_str = upload_load_type(loadingDict)
if status != -1 and "loading_carriage_order" in loadingDict.keys():
global houseStatus
if houseStatus != status:
houseStatus = status
if config.upload_type == 1:
up_result = interface.update_load_type(config.upload_gross_weight_url,
time.strftime('%Y-%m-%d %H:%M:%S'),
loadingDict["loading_carriage_order"],
houseStatus,
str(track+1))
logger.info(
"股道%d- 装车状态变化:%d-%s" % ((track+1), houseStatus, status_str))
if up_result != "":
logger.warn(up_result)
if len(flag_changeds) > 0:
if config.upload_type == 1:
up_result = interface.upload_device_type(config.upload_device_type_url,
flag_changeds)
logger.info(
"股道%d- 皮带给煤机状态变化:%s" % ((track+1), str(flag_changeds)))
if up_result != "":
logger.warn(up_result)
logger.debug("")
time.sleep(config.interval_plc / 1000)
def report_open(pound_no: str, total_number_carriage: int, pre_load: list):
"""
启动PLC报表
:param pound_no: 股道名
:param total_number_carriage: 总车节数
:param pre_load: 预装量
:return: [响应码:int, 提示信息:str, 结构数据:obj]
"""
over_write = False
old_total_number_carriage = 0
old_pre_load = [0] * config.carriage_num_max
if pound_no is None:
return 412, 'no pound_no', {}
if isinstance(pound_no, str) and not pound_no.isdigit():
return 412, "pound_no should be a int and 0 <= track < 2", {}
if not (0 < int(pound_no) <= 2):
return 412, "pound_no should be a int and 0 < track <= 2", {}
if total_number_carriage == 0:
return 412, 'no total_number_carriage', {}
if isinstance(total_number_carriage, str) and not total_number_carriage.isdigit():
return 412, "total_number_carriage should be a int and > 0", {}
if not pre_load:
return 412, 'no pre_load', {}
if not isinstance(pre_load, list):
return 412, '\"pre_load\" It should be of list type', {}
if not all(isinstance(item, int) and item >= 0 for item in pre_load):
return 412, '\"pre_load\" It should be of list[int,int,...] type and every pre_load >= 0', {}
if int(total_number_carriage) != len(pre_load):
return 412, '\'total_number_carriage\' should be the same length as the list \'pre_load\'', {}
pound_no = int(pound_no)
if pound_no > config.track_num:
return 412, '开启报表的股道号超过当前设置的股道数量,请检查配置', {}
total_number_carriage = int(total_number_carriage)
tagsList = TagsList()
loadingTagsList = tagsList.getLoading_Tags()[pound_no-1]
report_open_type_tag = 0
total_number_carriage_tag = 0
for tag_list in loadingTagsList:
if tag_list[0] == "report_open_type":
report_open_type_tag = tag_list[1]
elif tag_list[0] == "total_number_carriage":
total_number_carriage_tag = tag_list[1]
plc = PLC_Tool(config.ip_address, config.slot)
if "report_open_type" in plcInfo.loadingDict_List[pound_no-1].keys() and plcInfo.loadingDict_List[pound_no-1]["report_open_type"] == 1:
over_write = True
old_total_number_carriage = plcInfo.loadingDict_List[pound_no-1]["total_number_carriage"]
success, msg, tags_value = plc.get_array(tagsList.getPreLoadWeight_Tags()[pound_no-1][1], tagsList.getPreLoadWeight_Tags()[pound_no-1][3])
if success:
old_pre_load = tags_value["value"]
success, msg, results = \
plc.batch_write_tag([(report_open_type_tag, 1),
(total_number_carriage_tag, total_number_carriage)])
if not success:
return 412, msg, {}
else:
if success > 1:
return 417, msg, results
# else:
# return responseMsg(200, msg, results)
# 数字下标0 都不用(同毛重、掐煤量)
pre_load.insert(0, 0.0)
logger.info("股道%d- 总车节数:%d 上传预装量:%s", pound_no, total_number_carriage, str(pre_load))
success, msg = plc.write_array("AI.load", pre_load)
if not success:
return 412, msg, {}
if over_write:
if old_total_number_carriage != total_number_carriage and old_total_number_carriage != 0:
logger.warn(
"股道%d- 【开启PLC报表】疑似更新装车总节数! 输入的车厢总数为%d而原PLC中的车厢总数为%d节;当前在装车厢为第%d",
pound_no,
total_number_carriage, old_total_number_carriage,
plcInfo.loadingDict_List[pound_no-1]["loading_carriage_order"])
if old_pre_load != pre_load and old_pre_load != [0] * config.carriage_num_max:
logger.warn(
"【开启PLC报表】疑似更新装车预装量! 输入的车厢总数为%d" % total_number_carriage)
if plcInfo.loadingDict_List[pound_no-1]["loading_carriage_order"] == plcInfo.loadingDict_List[pound_no-1]["total_number_carriage"]:
logger.warn(
"股道%d- 【开启PLC报表】疑似装最后一节时更新装车数据! 输入的车厢总数为%d而原PLC中的车厢总数为%d节;当前在装车厢为第%d",
pound_no,
total_number_carriage, plcInfo.loadingDict_List[pound_no-1]["total_number_carriage"],
plcInfo.loadingDict_List[pound_no-1]["loading_carriage_order"])
else:
logger.info("【开启PLC报表】")
return 200, msg, results
def report_close(pound_no: str, total_number_carriage: int):
"""
关闭PLC报表
:param pound_no: 股道名
:param total_number_carriage: 总车节数
:return: [响应码:int, 提示信息:str, 结构数据:obj]
"""
if pound_no is None:
return 412, 'no pound_no', {}
if isinstance(pound_no, str) and not pound_no.isdigit():
return 412, "pound_no should be a int and 0 < track <= 2", {}
if not (0 < int(pound_no) <= 2):
return 412, "pound_no should be a int and 0 < track <= 2", {}
if total_number_carriage == 0:
return 412, 'no total_number_carriage', {}
if (isinstance(total_number_carriage, str) and not total_number_carriage.isdigit()) \
or int(total_number_carriage) <= 0:
return 412, "total_number_carriage should be a int and > 0", {}
pound_no = int(pound_no)
if pound_no > config.track_num:
return 412, '开启报表的股道号超过当前设置的股道数量,请检查配置', {}
total_number_carriage = int(total_number_carriage)
tagsList = TagsList()
open_report_tags_list = tagsList.getOpenReportTags()
total_number_carriage_tags_list = tagsList.getTotalNumberCarriageTags()
if len(open_report_tags_list) <= (pound_no - 1):
return 412, "股道“开启报表”的点位配置未读到,请检查配置文件", {}
if len(total_number_carriage_tags_list) <= (pound_no - 1):
return 412, "股道“总车节数”的点位配置未读到,请检查配置文件", {}
pre_load_tags_list = tagsList.getPreLoadWeightTags()
if len(pre_load_tags_list) < (pound_no - 1):
return 412, "股道“预装量”的点位配置未读到,请检查配置文件", {}
plc = PLC_Tool(config.ip_address, config.slot)
success, msg, results = plc.batch_write_tag([(open_report_tags_list[pound_no - 1], 0),
(total_number_carriage_tags_list[pound_no - 1], 0)])
if not success:
return 412, msg, {}
else:
if success > 1:
return 417, msg, results
# else:
# return responseMsg(200, msg, results)
pre_load = [0] * config.carriage_num_max
success, msg = plc.write_array(pre_load_tags_list[pound_no - 1], pre_load)
if not success:
return 412, msg, {}
if len(plcInfo.loadingDict_List) < 1:
return 412, "PLC连接失败数据异常", {}
if total_number_carriage != plcInfo.loadingDict_List[pound_no-1]["total_number_carriage"]:
logger.warn(
"【关闭PLC报表】疑似关闭的非同一列车! 输入的车厢总数为%d而实际PLC中的车厢总数为%d节;当前在装车厢为第%d" % (
total_number_carriage, plcInfo.loadingDict_List[pound_no-1]["total_number_carriage"],
plcInfo.loadingDict_List[pound_no-1]["loading_carriage_order"]))
elif plcInfo.loadingDict_List[pound_no-1]["loading_carriage_order"] != plcInfo.loadingDict_List[pound_no-1]["total_number_carriage"]:
logger.warn(
"【关闭PLC报表】疑似提前误关报表! 输入的车厢总数为%d而实际PLC中的车厢总数为%d节;当前在装车厢为第%d" % (
total_number_carriage, plcInfo.loadingDict_List[pound_no-1]["total_number_carriage"],
plcInfo.loadingDict_List[pound_no-1]["loading_carriage_order"]))
else:
logger.info("【关闭PLC报表】")
return 200, msg, {"carriageWeightHouse": plcInfo.pinchCoalQuantityList_List[pound_no-1],
"grossWeightHouse": plcInfo.grossWeightList_List[pound_no-1]}
def get_web_token():
"""
请求获取web token
:return:
"""
login_result, token_type, access_token = interfaceToWeb().loginWeb(config.login_web_url, config.username,
config.password, config.authorization)
if login_result is not "":
logger.warn(login_result)
return 412, "请求登录web失败,原因:%s" % login_result, {}
return 200, "", {"token_type": token_type, "access_token": access_token, "token": (token_type + " " + access_token)}
def upload_pinch_coal(carriage_order: int, pinch_coal: float, pound_no: str):
"""
上传掐煤量
:param carriage_order: 车厢序号
:param pinch_coal: 掐煤量
:param pound_no: 股道名
:return: [响应码:int, 提示信息:str, 结构数据:obj]
"""
if carriage_order == 0:
return 412, "no carriage_order", {}
if isinstance(carriage_order, str) and not carriage_order.isdigit() or int(carriage_order) <= 0:
return 412, "\"carriage_order\" It should be of INT type and greater than 0.", {}
if pinch_coal == -1:
return 412, "no pinch_coal", {}
if isinstance(pinch_coal, str) and not pinch_coal.isdigit() or float(pinch_coal) < 0:
return 412, "\"pinch_coal\" It should be of float type and greater than 0.", {}
if pound_no == "":
return 412, "no pound_no", {}
if isinstance(pound_no, str) and not pound_no.isdigit():
return 412, "pound_no should be a int, and 0 < pound_no <= 2 ", {}
if not 0 < int(pound_no) <= config.track_num:
return 412, "pound_no should be a int, and 0 < pound_no <= 2 ", {}
interface = interfaceToWeb()
login_result, token_type, access_token = interface.loginWeb(config.login_web_url, config.username,
config.password, config.authorization)
if login_result is not "":
logger.warn(login_result)
return 412, "请求登录web失败", {}
up_result = interface.upload_pinch_coal(config.upload_pinch_coal_url,
time.strftime('%Y-%m-%d %H:%M:%S'),
int(carriage_order),
float(pinch_coal),
pound_no)
if up_result != "":
return 417, up_result, {}
else:
return 200, "上传成功", {}
def upload_gross_weight(carriage_order: int, gross_weight: float, pound_no: str):
"""
上传毛重
:param carriage_order: 车厢序号
:param gross_weight: 毛重
:param pound_no: 股道名
:return: [响应码:int, 提示信息:str, 结构数据:obj]
"""
if carriage_order == 0:
return 412, "no carriage_order", {}
if isinstance(carriage_order, str) and not carriage_order.isdigit() or int(carriage_order) <= 0:
return 412, "\"carriage_order\" It should be of INT type and greater than 0.", {}
if gross_weight == -1:
return 412, "no pinch_coal", {}
if isinstance(gross_weight, str) and not gross_weight.isdigit() or float(gross_weight) <= 0:
return 412, "\"gross_weight\" It should be of float type and greater than 0.", {}
if pound_no == "":
return 412, "no pound_no", {}
if isinstance(pound_no, str) and not pound_no.isdigit():
return 412, "pound_no should be a int, and 0 < pound_no <= 2 ", {}
if not 0 < int(pound_no) <= config.track_num:
return 412, "pound_no should be a int, and 0 < pound_no <= 2 ", {}
interface = interfaceToWeb()
login_result, token_type, access_token = interface.loginWeb(config.login_web_url, config.username,
config.password, config.authorization)
if login_result is not "":
logger.warn(login_result)
return 412, "请求登录web失败", {}
up_result = interface.upload_gross_weight(config.upload_pinch_coal_url,
time.strftime('%Y-%m-%d %H:%M:%S'),
int(carriage_order),
float(gross_weight),
pound_no)
if up_result != "":
return 417, up_result, {}
else:
return 200, "上传成功", {}