Commit bd57cde4 董杰

佳仕达三楼看板最近修改内容

1 个父辈 c2e944ca
......@@ -9,13 +9,139 @@
@time: 2020/9/17 13:45
@desc:
'''
from flask import jsonify,render_template
from flask import jsonify,render_template,request,send_from_directory
from app.api import bp
from config import Config
from pyecharts.charts import Bar,Line
from pyecharts.charts import Bar,Line,Grid, Liquid,Pie
from pyecharts.options.global_options import ThemeType
from pyecharts.faker import Faker
import pyecharts.options as opts
from pyecharts.commons.utils import JsCode
import urllib,json,operator,re
import os
import pymongo
import pandas as pd
import time
def open_url(url):
resp = urllib.request.urlopen(url)
ele_json = json.loads(resp.read())
return ele_json
def format_data():
url = Config.BOX_RATIO_URL
ele_json = open_url(url)
ratio_list = []
for info in ele_json:
current_type_list = []
if info['type'] != 'PACKAGE':
usecount = 0
totalcount = 0
for nummap in info['usageMap'].values():
use_list = []
# if int(nummap['usedCount'])
use_list.append(nummap['sizeStr'])
use_list.append(int(nummap['usedCount']))
usecount += int(nummap['usedCount'])
totalcount += int(nummap['totalCount'])
current_type_list.append(use_list)
current_ratio = usecount / totalcount
current_ratio = round(float(current_ratio),4)
# print (current_ratio)
# current_ratio = float(('%.2f' % current_ratio))
number = int(re.findall(r"\d+", info['cid'])[0])
# name = info['cid']
ratio_dict = {
'name':info['name'],
'type_map':current_type_list,
'ratio': current_ratio,
'box_num':totalcount,
'number': number
}
ratio_list.append(ratio_dict)
ratio_list = sorted(ratio_list, key=operator.itemgetter('number'))[0:20]
print (ratio_list)
return ratio_list
@bp.route('/boxstate')
def boxstate():
return render_template("boxstate.html")
\ No newline at end of file
data = format_data()
# print (type(data[0]['ratio']))
# print (data[0]['ratio'])
grid_list = []
for current in data:
# print (current['ratio'])
l = (
Liquid()
.add("lq", [current['ratio']], center=["75%", "50%"],is_outline_show=False,label_opts=opts.LabelOpts(formatter=JsCode(
"""function (param) {
return (Math.floor(param.value * 10000) / 100) + '%';
}"""
),position="inside",font_size=50))
.set_global_opts(title_opts=opts.TitleOpts(title='总容量' + str(current['box_num']),title_textstyle_opts=opts.TextStyleOpts(color="yellow"),))
.set_series_opts(type='liquidFill',radius='80%'))
c = (
Pie()
.add("", current['type_map'],center=["30%", "50%"])
# .set_colors(["blue", "green", "yellow", "red", "pink", "orange", "purple"])
.set_global_opts(legend_opts=opts.LegendOpts(is_show=False))
.set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}",color="rgba(255, 255, 255, 1)"))
)
grid = Grid().add(l, grid_opts=opts.GridOpts()).add(c, grid_opts=opts.GridOpts())
grid_list.append(grid.dump_options())
return render_template("boxstate.html",grid=grid_list)
# 连接数据库
def conn_mongo(table,path):
mongo_client = pymongo.MongoClient(host='localhost', port=27017)
db = mongo_client['qisda']
db.authenticate("admin", "123")
if table == 'alarmagv':
cach = db.alarmagv
elif table == 'ng':
cach = db.collectNg
else:
cach = db.stockqty
data=cach.find()
mongo_client.close()
df = pd.DataFrame(data)
df = df.drop('_id', 1)
if table == 'stock':
cols = list(df)
# move the column to head of list using index, pop and insert
cols.insert(1, cols.pop(cols.index('qty_out')))
# use ix to reorder
df = df.loc[:, cols]
df.to_csv(path,encoding="utf_8_sig")
# 下载agv错误信息
@bp.route('/downloadagv/', methods=['GET'], strict_slashes=False)
def downloadagv():
# basepath = os.path.dirname(__file__)
c_path = "D:/qisda_charts/app/static/data/"
file_path = os.path.join(c_path, 'agverror.csv')
table = 'alarmagv'
conn_mongo(table,file_path)
if request.method == "GET":
if os.path.isfile(os.path.join(c_path, 'agverror.csv')):
return send_from_directory(c_path, 'agverror.csv', as_attachment=True)
@bp.route('/downloadstock/', methods=['GET'], strict_slashes=False)
def downloadstock():
c_path = "D:/qisda_charts/app/static/data/"
file_path = os.path.join(c_path, 'stock.csv')
table = 'stock'
conn_mongo(table, file_path)
if request.method == "GET":
if os.path.isfile(os.path.join(c_path, 'stock.csv')):
return send_from_directory(c_path, 'stock.csv', as_attachment=True)
@bp.route('/downloadng/', methods=['GET'], strict_slashes=False)
def downloadng():
c_path = "D:/qisda_charts/app/static/data/"
file_path = os.path.join(c_path, 'collectNg.csv')
table = 'ng'
conn_mongo(table, file_path)
if request.method == "GET":
if os.path.isfile(os.path.join(c_path, 'collectNg.csv')):
return send_from_directory(c_path, 'collectNg.csv', as_attachment=True)
\ No newline at end of file
from datetime import datetime,timedelta
hour_now = datetime.now()
if hour_now.hour >= 8:
b_start = hour_now-timedelta(days=1)
b_start = datetime(b_start.year, b_start.month, b_start.day, 8, 0, 0)
print (b_start)
b_end = datetime(hour_now.year, hour_now.month, hour_now.day, 7, 59, 59)
print (b_end)
c_start = datetime(hour_now.year, hour_now.month, hour_now.day, 8, 0, 0)
c_end = hour_now+timedelta(days=1)
c_end = datetime(c_end.year, c_end.month, c_end.day, 7, 59, 59)
print (c_start,c_end)
else:
b_start = hour_now-timedelta(days=2)
b_start_before = hour_now-timedelta(days=1)
b_start = datetime(b_start.year, b_start.month, b_start.day, 8, 0, 0)
b_end = datetime(b_start_before.year, b_start_before.month, b_start_before.day, 7, 59, 59)
c_start = datetime(b_start_before.year, b_start_before.month, b_start_before.day, 8, 0, 0)
c_end = datetime(hour_now.year, hour_now.month, hour_now.day, 7, 59, 59)
print (b_start,b_end,c_start,c_end)
\ No newline at end of file
......@@ -474,7 +474,7 @@ a:hover{
}
.table_p table tbody{
color: #ffffff;
font-size: 15px;
font-size: 16px;
}
.table_p table tbody tr:nth-child(2n+1){
background-color: #072951;
......
此文件的差异太大,无法显示。
此文件的差异太大,无法显示。
,Date,codetype,operation,api,DN,stock,createDate,updateDate
0,2020-12-22,0,0,0,0,0,2020-12-22 06:56:29.824,2020-12-22 07:37:10.060
,Date,qty_in,qty_out,qty_need
0,2020-12-16,3557,4643,3277
1,2020-12-17,4623,3923,2893
2,2020-12-18,354,427,172
3,2020-12-19,0,0,0
4,2020-12-20,0,0,0
5,2020-12-21,0,0,0
6,2020-12-22,0,0,0
此文件的差异太大,无法显示。
<!DOCTYPE html>
<html lang="zh-cn">
<head>
{# <meta charset="UTF-8">#}
{% if 0 == stop %}
<meta charset="UTF-8" http-equiv="refresh" content="1200;url={{ url_for('api.index') }}">
{% endif %}
<title>Neotel Datashow</title>
<link href="/static/css/common.css?v=3" rel="stylesheet">
<script src="/static/jquery-3.3.1.min.js"></script>
<script src="/static/common.js"></script>
</head>
<body>
<!--顶部-->
<header class="header left">
<div class="left nav">
<ul>
<li><i class="nav_1"></i><a href="{{ url_for('api.index') }}">数据概况</a> </li>
<li><i class="nav_2"></i><a href="{{ url_for('api.state') }}">设备状态信息</a> </li>
<li><i class="nav_3"></i><a href="{{ url_for('api.boxstate') }}">料仓库存信息</a></li>
<li><i class="nav_3"></i><a href="http://10.85.199.3/dashboards/7034c5af-28bb-11ea-873a-94c691a7387d" target="_blank">AGV</a></li>
</ul>
</div>
<div class="header_center left" style="position:relative">
<h2><strong>大数据展示</strong></h2>
</div>
<div class="right nav text_right">
<ul>
<li class="nav_active"><i class="nav_3"></i><a href="{{ url_for('api.dataload') }}">数据下载</a></li>
</ul>
</div>
</header>
<div class="con left">
<!--数据总概-->
<div class="con_div">
<div class="con_div_text left">
<div class="con_div_text01 left">
<div class="left text01_div">
<p></p>
<p class="sky">AGV错误信息</p>
</div>
</div>
<div class="con_div_text01 right">
<div class="left text01_div">
<p></p>
<a type="button" style="font-size: x-large;color: coral;" href="{{ url_for('api.downloadagv',id=1) }}">下载</a>
</div>
</div>
</div>
<div class="con_div_text left">
<div class="con_div_text01 left">
<div class="left text01_div">
<!-- <p class="sky">AGV错误信息数据</p>
<a type="button" class="btn btn-info" href="{{ url_for('api.dataload') }}">下载日志</a> -->
<p></p>
<p class="sky">出入库数据</p>
</div>
</div>
<div class="con_div_text01 right">
<div class="left text01_div">
<p></p>
<a type="button" style="font-size: x-large;color: coral;" href="{{ url_for('api.downloadstock',id=1) }}">下载</a>
</div>
</div>
</div>
<div class="con_div_text left">
<div class="con_div_text01 left">
<div class="left text01_div">
<!-- <p class="sky">AGV错误信息数据</p>
<a type="button" class="btn btn-info" href="{{ url_for('api.dataload') }}">下载日志</a> -->
<p></p>
<p class="sky">NG信息</p>
</div>
</div>
<div class="con_div_text01 right">
<div class="left text01_div">
<p></p>
<a type="button" style="font-size: x-large;color: coral;" href="{{ url_for('api.downloadng',id=1) }}">下载</a>
</div>
</div>
</div>
</div>
</div>
</body>
</html>
\ No newline at end of file
......@@ -9,9 +9,6 @@
<link href="/static/css/common.css?v=3" rel="stylesheet">
<script src="/static/jquery-3.3.1.min.js"></script>
<script src="/static/echarts.min.js"></script>
<script src="/static/common.js"></script>
<script src="/static/index.js"></script>
<script src="/static/laydate.js"></script>
</head>
<body>
<!--顶部-->
......@@ -20,7 +17,8 @@
<ul>
<li class="nav_active"><i class="nav_1"></i><a href="{{ url_for('api.index') }}">数据概况</a> </li>
<li><i class="nav_2"></i><a href="{{ url_for('api.state') }}">设备状态信息</a> </li>
<li><i class="nav_3"></i><a href="{{ url_for('api.boxstate') }}">料仓库存信息</a> </li>
<li><i class="nav_3"></i><a href="{{ url_for('api.boxstate') }}">料仓库存信息</a></li>
<li><i class="nav_3"></i><a href="http://10.85.199.3/dashboards/7034c5af-28bb-11ea-873a-94c691a7387d" target="_blank">AGV</a></li>
</ul>
</div>
<div class="header_center left" style="position:relative">
......@@ -30,7 +28,7 @@
</div>
<div class="right nav text_right">
<ul>
<li><i class="nav_3"></i><a href="{{ url_for('api.dataload') }}">数据下载</a></li>
</ul>
</div>
......@@ -40,30 +38,89 @@
<div class="div_any">
<div class="div_any02">
<div class="div_any_child div_height">
<div class="div_any_title any_title_width">24小时出入库</div>
<div id="main" style="width:98%;height:93%;display: inline-block;padding-left: 1.25%;padding-right: 1.25%;padding-top:1.25%"></div>
<script type="text/javascript">
// 基于准备好的dom,初始化echarts实例
var myChart = echarts.init(document.getElementById('main'));
// 使用刚指定的配置项和数据显示图表。
myChart.setOption({{ bar_data | safe }});
</script>
<div class="div_any_title any_title_width">48小时出入库</div>
<div id="hour" style="width:98%;height:46%;display: inline-block;padding-left: 1.25%;padding-right: 1.25%;padding-top:1.25%"></div>
<div id="hour1" style="width:98%;height:46%;display: inline-block;padding-left: 1.25%;padding-right: 1.25%;padding-top:1.25%"></div>
</div>
</div>
<div class="div_any02">
<div class="div_any_child div_height">
<div class="div_any_title any_title_width">7天出入库</div>
<div id="main2" style="width:98%;height:93%;display: inline-block;padding-left: 1.25%;padding-right: 1.25%;padding-top:1.25%"></div>
<div id="day" style="width:98%;height:93%;display: inline-block;padding-left: 1.25%;padding-right: 1.25%;padding-top:1.25%"></div>
<!-- <p id="main2" class="p_chart"></p> -->
<script type="text/javascript">
<!-- <script type="text/javascript">
// 基于准备好的dom,初始化echarts实例
var myChart2 = echarts.init(document.getElementById('main2'));
// 使用刚指定的配置项和数据显示图表。
myChart2.setOption({{ bar_data1 | safe }});
</script>
</script> -->
</div>
</div>
</div>
</div>
<script>
var app = {
};
// 发送ajax请求,从后台获取json数据
$(document).ready(function () {
drawchartday();
drawcharthour();
drawcharthourc();
console.log('success');
});
function drawchartday() {
$.ajax({
url: '/drawchartday',
type: "GET",
dataType: "json",
success: function(result) {
//$('#agv tr:gt(0)').remove();//删除之前的数据
var dayChart = echarts.init(document.getElementById('day'));
dayChart.clear();
dayChart.setOption(result);
},
error: function(e) {
}
})
}
function drawcharthour() {
$.ajax({
url: '/drawcharthour',
type: "GET",
dataType: "json",
success: function(result) {
//$('#agv tr:gt(0)').remove();//删除之前的数据
var hourChart = echarts.init(document.getElementById('hour'));
hourChart.clear();
hourChart.setOption(result);
},
error: function(e) {
}
})
}
function drawcharthourc() {
$.ajax({
url: '/drawcharthourc',
type: "GET",
dataType: "json",
success: function(result) {
//$('#agv tr:gt(0)').remove();//删除之前的数据
var hourChart1 = echarts.init(document.getElementById('hour1'));
hourChart1.clear();
hourChart1.setOption(result);
},
error: function(e) {
}
})
}
setInterval(function(){
drawchartday();
drawcharthour();
drawcharthourc();
}, 50000);
</script>
</body>
</html>
\ No newline at end of file
......@@ -3,12 +3,9 @@
<head>
<meta charset="UTF-8">
<title>Neotel Datashow</title>
<link href="/static/css/common.css" rel="stylesheet">
<link href="/static/css/common.css?id=1" rel="stylesheet">
<script src="/static/jquery-3.3.1.min.js"></script>
<script src="/static/echarts.min.js"></script>
<script src="/static/common.js"></script>
<script src="/static/index.js"></script>
<script src="/static/laydate.js"></script>
</head>
<body>
<!--顶部-->
......@@ -18,6 +15,7 @@
<li><i class="nav_1"></i><a href="{{ url_for('api.index') }}">数据概况</a> </li>
<li class="nav_active"><i class="nav_2"></i><a href="{{ url_for('api.state') }}">设备状态信息</a> </li>
<li><i class="nav_3"></i><a href="{{ url_for('api.boxstate') }}">料仓库存信息</a> </li>
<li><i class="nav_3"></i><a href="http://10.85.36.58/dashboards/7034c5af-28bb-11ea-873a-94c691a7387d" target="_blank">AGV</a></li>
</ul>
</div>
<div class="header_center left" style="position:relative">
......@@ -27,7 +25,7 @@
</div>
<div class="right nav text_right">
<ul>
<li><i class="nav_3"></i><a href="{{ url_for('api.dataload') }}">数据下载</a></li>
</ul>
</div>
......@@ -47,19 +45,6 @@
</tr>
</thead>
<tbody id="agv">
<!-- <tr><td>1号车</td><td>演示数据</td><td>正常</td></tr>
<tr><td>2号车</td><td>演示数据</td><td>正常</td></tr>
<tr><td>3号车</td><td>演示数据</td><td>异常</td></tr>
<tr><td>4号车</td><td>演示数据</td><td>异常</td></tr>
<tr><td>5号车</td><td>演示数据</td><td>异常</td></tr>
<tr><td>6号车</td><td>演示数据</td><td>异常</td></tr>
<tr><td>7号车</td><td>演示数据</td><td>正常</td></tr>
<tr><td>8号车</td><td>演示数据</td><td>正常</td></tr>
<tr><td>9号车</td><td>演示数据</td><td>异常</td></tr>
<tr><td>10号车</td><td>演示数据</td><td>正常</td></tr>
<tr><td>11号车</td><td>演示数据</td><td>充电</td></tr>
<tr><td>12号车</td><td>演示数据</td><td>正常</td></tr>
<tr><td>13号车</td><td>演示数据</td><td>正常</td></tr> -->
</tbody>
</table>
</div>
......
......@@ -9,7 +9,8 @@ class Config(object):
CONFIG_4C = ['4C-1线', '4C-2线', '4C-3线', '4C-4线', '4C-5线', '4C-6线', '4C-7线', '4C-8线', '4C-9线', '4C-10线', '4C-14线', '4C-15线']
CONFIG_AGV = ['1号车','2号车','3号车','4号车','5号车','6号车','7号车','8号车','9号车','10号车','11号车','12号车','13号车']
CONFIG_4D = ['4D-1线','4D-2线','4D-3线','4D-4线','4D-5线','4D-6线','4D-7线','4D-8线','4D-9线','4D-10线','4D-11线','4D-12线','4D-13线','4D-14线','4D-15线','4D-16线']
CONFIG_BOX = ['line-ac-01','line-ac-02','line-ac-03','line-ac-04','line-ac-05','line-ac-06','line-ac-07','line-ac-08','line-ac-09','line-ac-10','line-ac-11','line-ac-12','line-ac-13','line-ac-14','line-ac-15','line-ac-16','line-ac-17','line-ac-18']
CONFIG_BOX = ['line-ac-01','line-ac-02','line-ac-03','line-ac-04','line-ac-05','line-ac-06','line-ac-07','line-ac-08','line-ac-09','line-ac-10','line-ac-11','line-ac-12','line-ac-13','line-ac-14','line-ac-15','line-ac-16','line-ac-17','line-ac-18','line-ac-25','line-ac-26']
CONFIG_BOX_TRANS = {'line-ac-01':'云料仓1-1','line-ac-02':'云料仓1-2','line-ac-03':'云料仓2-1','line-ac-04':'云料仓2-2','line-ac-05':'云料仓3-1','line-ac-06':'云料仓3-2','line-ac-07':'云料仓4-1','line-ac-08':'云料仓4-2','line-ac-09':'云料仓5-1','line-ac-10':'云料仓5-2','line-ac-11':'云料仓6-1','line-ac-12':'云料仓6-2','line-ac-13':'云料仓7-1','line-ac-14':'云料仓7-2','line-ac-15':'云料仓8-1','line-ac-16':'云料仓8-2','line-ac-17':'云料仓9-1','line-ac-18':'云料仓9-2','line-ac-25':'云料仓10-1','line-ac-26':'云料仓10-2'}
# CONFIG_BOX = ['云料仓1', '云料仓1', '云料仓1', '云料仓4', '云料仓5', '云料仓6', '云料仓7', '云料仓8', '云料仓9', '云料仓10', '云料仓11', '云料仓12']
CONFIG_BOX_STATUS = {1:'准备就绪',2:'急停',3:'故障',4:'警告',5:'调试中',6:'入库执行中',7:'入仓位完成',8:'入库失败',9:'出库执行中',10:'出仓位完成',11:'出库失败',12:'出库移载中',13:'远点返回中'}
DB_NAME = 'qisada2'
......
[
{
"type": 1,
"name": "6号车",
"msgKey": "lineAgv.6号车.Place",
"msgValue": "Standby",
"startTime": 1600405799121,
"updateTime": 1600411128021,
"infoMsg": true,
"timeout": false
},
{
"type": 0,
"name": "4C-14线",
"msgKey": "lineAgv.C14.OffLine",
"msgValue": "离线",
"startTime": 1600405799121,
"updateTime": 1600411128021,
"infoMsg": false,
"timeout": false
},
{
"type": 0,
"name": "4D-10线",
"msgKey": "lineAgv.D10.OffLine",
"msgValue": "离线",
"startTime": 1600408331109,
"updateTime": 1600411128021,
"infoMsg": false,
"timeout": false
},
{
"type": 0,
"name": "4D-15线",
"msgKey": "lineAgv.D15.OffLine",
"msgValue": "离线",
"startTime": 1600405799115,
"updateTime": 1600411128021,
"infoMsg": false,
"timeout": false
},
{
"type": 0,
"name": " _入料_1 ",
"msgKey": "line. _入料_1 _IoSingleTimeOut",
"msgValue": "[_入料_1-Move][InStore][FI_18_WaitNoLocationCheck]等待 [X123-SL1伺服定位料盘检测-SL_AxisLocationCheck=LOW]超时[247.3]秒",
"startTime": 1600410895963,
"updateTime": 1600411127350,
"infoMsg": false,
"timeout": false
},
{
"type": 0,
"name": "4C-10线",
"msgKey": "lineAgv.C10.OffLine",
"msgValue": "离线",
"startTime": 1600405799121,
"updateTime": 1600411128021,
"infoMsg": false,
"timeout": false
},
{
"type": 0,
"name": "双层线任务",
"msgKey": "doubleLine.AllTaskInfo",
"msgValue": " 剩余任务: 小料=0,大料=0,包装料=0 ",
"startTime": 1600405804587,
"updateTime": 1600411124811,
"infoMsg": false,
"timeout": false
},
{
"type": 0,
"name": "4C-15线",
"msgKey": "lineAgv.C15.OffLine",
"msgValue": "离线",
"startTime": 1600405799121,
"updateTime": 1600411128021,
"infoMsg": false,
"timeout": false
},
{
"type": 1,
"name": "5号车",
"msgKey": "lineAgv.5号车.Place",
"msgValue": "Standby",
"startTime": 1600405799121,
"updateTime": 1600411128021,
"infoMsg": true,
"timeout": false
},
{
"type": 0,
"name": "4D-11线",
"msgKey": "lineAgv.D11.OffLine",
"msgValue": "离线",
"startTime": 1600409966855,
"updateTime": 1600411128021,
"infoMsg": false,
"timeout": false
},
{
"type": 1,
"name": "7号车",
"msgKey": "lineAgv.7号车.Place",
"msgValue": "AutoCharge",
"startTime": 1600405799122,
"updateTime": 1600411128021,
"infoMsg": true,
"timeout": false
},
{
"type": 0,
"name": "4D-14线",
"msgKey": "lineAgv.D14.OffLine",
"msgValue": "离线",
"startTime": 1600405799115,
"updateTime": 1600411128021,
"infoMsg": false,
"timeout": false
},
{
"type": 0,
"name": "4D-12线",
"msgKey": "lineAgv.D12.OffLine",
"msgValue": "离线",
"startTime": 1600405799115,
"updateTime": 1600411128021,
"infoMsg": false,
"timeout": false
},
{
"type": 0,
"name": " _入料_2 ",
"msgKey": "line. _入料_2 _IoSingleTimeOut",
"msgValue": "[_入料_2-Move][InStore][FI_18_WaitNoLocationCheck] 等待 [X163-SL2伺服定位料盘检测-SL_AxisLocationCheck=LOW] 超时 55.7秒",
"startTime": 1600410670377,
"updateTime": 1600411127350,
"infoMsg": false,
"timeout": false
},
{
"type": 0,
"name": "A5入口状态",
"msgKey": "doubleLine.packageLine.benQInStepLeft.Msg",
"msgValue": "[topFull=False bottomFull=True] A5_None ",
"startTime": 1600405799068,
"updateTime": 1600411128811,
"infoMsg": false,
"timeout": false
},
{
"type": 0,
"name": "9号车",
"msgKey": "lineAgv.9号车.StandTimeOut",
"msgValue": "在Standby停留超时38.94分钟",
"startTime": 1600407982002,
"updateTime": 1600411128021,
"infoMsg": false,
"timeout": false
},
{
"type": 1,
"name": "8号车",
"msgKey": "lineAgv.8号车.Msg",
"msgValue": "双层线暂不需要空料架,从产线[D1]到待机位",
"startTime": 1600405799122,
"updateTime": 1600411128021,
"infoMsg": true,
"timeout": false
},
{
"type": 0,
"name": "line-ac-08",
"msgKey": "box.line-ac-08",
"msgValue": "料仓BOX_8 入库 等待料仓门口检测到料盘 [R035042020060512250] [4D0814DD0010] 超时 [83]秒 ",
"startTime": null,
"updateTime": 1600411129057,
"infoMsg": false,
"timeout": false
}
]
\ No newline at end of file
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!