Commit bd57cde4 董杰

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

1 个父辈 c2e944ca
...@@ -9,13 +9,139 @@ ...@@ -9,13 +9,139 @@
@time: 2020/9/17 13:45 @time: 2020/9/17 13:45
@desc: @desc:
''' '''
from flask import jsonify,render_template from flask import jsonify,render_template,request,send_from_directory
from app.api import bp from app.api import bp
from config import Config 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.options.global_options import ThemeType
from pyecharts.faker import Faker
import pyecharts.options as opts 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') @bp.route('/boxstate')
def boxstate(): def boxstate():
return render_template("boxstate.html")
\ No newline at end of file \ 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 \ 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 \ No newline at end of file
...@@ -474,7 +474,7 @@ a:hover{ ...@@ -474,7 +474,7 @@ a:hover{
} }
.table_p table tbody{ .table_p table tbody{
color: #ffffff; color: #ffffff;
font-size: 15px; font-size: 16px;
} }
.table_p table tbody tr:nth-child(2n+1){ .table_p table tbody tr:nth-child(2n+1){
background-color: #072951; 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 \ No newline at end of file
...@@ -9,9 +9,6 @@ ...@@ -9,9 +9,6 @@
<link href="/static/css/common.css?v=3" rel="stylesheet"> <link href="/static/css/common.css?v=3" rel="stylesheet">
<script src="/static/jquery-3.3.1.min.js"></script> <script src="/static/jquery-3.3.1.min.js"></script>
<script src="/static/echarts.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> </head>
<body> <body>
<!--顶部--> <!--顶部-->
...@@ -20,7 +17,8 @@ ...@@ -20,7 +17,8 @@
<ul> <ul>
<li class="nav_active"><i class="nav_1"></i><a href="{{ url_for('api.index') }}">数据概况</a> </li> <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_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> </ul>
</div> </div>
<div class="header_center left" style="position:relative"> <div class="header_center left" style="position:relative">
...@@ -30,7 +28,7 @@ ...@@ -30,7 +28,7 @@
</div> </div>
<div class="right nav text_right"> <div class="right nav text_right">
<ul> <ul>
<li><i class="nav_3"></i><a href="{{ url_for('api.dataload') }}">数据下载</a></li>
</ul> </ul>
</div> </div>
...@@ -40,30 +38,89 @@ ...@@ -40,30 +38,89 @@
<div class="div_any"> <div class="div_any">
<div class="div_any02"> <div class="div_any02">
<div class="div_any_child div_height"> <div class="div_any_child div_height">
<div class="div_any_title any_title_width">24小时出入库</div> <div class="div_any_title any_title_width">48小时出入库</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> <div id="hour" style="width:98%;height:46%;display: inline-block;padding-left: 1.25%;padding-right: 1.25%;padding-top:1.25%"></div>
<script type="text/javascript"> <div id="hour1" style="width:98%;height:46%;display: inline-block;padding-left: 1.25%;padding-right: 1.25%;padding-top:1.25%"></div>
// 基于准备好的dom,初始化echarts实例
var myChart = echarts.init(document.getElementById('main'));
// 使用刚指定的配置项和数据显示图表。
myChart.setOption({{ bar_data | safe }});
</script>
</div> </div>
</div> </div>
<div class="div_any02"> <div class="div_any02">
<div class="div_any_child div_height"> <div class="div_any_child div_height">
<div class="div_any_title any_title_width">7天出入库</div> <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> --> <!-- <p id="main2" class="p_chart"></p> -->
<script type="text/javascript"> <!-- <script type="text/javascript">
// 基于准备好的dom,初始化echarts实例 // 基于准备好的dom,初始化echarts实例
var myChart2 = echarts.init(document.getElementById('main2')); var myChart2 = echarts.init(document.getElementById('main2'));
// 使用刚指定的配置项和数据显示图表。 // 使用刚指定的配置项和数据显示图表。
myChart2.setOption({{ bar_data1 | safe }}); myChart2.setOption({{ bar_data1 | safe }});
</script> </script> -->
</div> </div>
</div> </div>
</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> </body>
</html> </html>
\ No newline at end of file \ No newline at end of file
...@@ -3,12 +3,9 @@ ...@@ -3,12 +3,9 @@
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<title>Neotel Datashow</title> <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/jquery-3.3.1.min.js"></script>
<script src="/static/echarts.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> </head>
<body> <body>
<!--顶部--> <!--顶部-->
...@@ -18,6 +15,7 @@ ...@@ -18,6 +15,7 @@
<li><i class="nav_1"></i><a href="{{ url_for('api.index') }}">数据概况</a> </li> <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 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="{{ 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> </ul>
</div> </div>
<div class="header_center left" style="position:relative"> <div class="header_center left" style="position:relative">
...@@ -27,7 +25,7 @@ ...@@ -27,7 +25,7 @@
</div> </div>
<div class="right nav text_right"> <div class="right nav text_right">
<ul> <ul>
<li><i class="nav_3"></i><a href="{{ url_for('api.dataload') }}">数据下载</a></li>
</ul> </ul>
</div> </div>
...@@ -47,19 +45,6 @@ ...@@ -47,19 +45,6 @@
</tr> </tr>
</thead> </thead>
<tbody id="agv"> <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> </tbody>
</table> </table>
</div> </div>
......
...@@ -9,7 +9,8 @@ class Config(object): ...@@ -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_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_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_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 = ['云料仓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:'远点返回中'} CONFIG_BOX_STATUS = {1:'准备就绪',2:'急停',3:'故障',4:'警告',5:'调试中',6:'入库执行中',7:'入仓位完成',8:'入库失败',9:'出库执行中',10:'出仓位完成',11:'出库失败',12:'出库移载中',13:'远点返回中'}
DB_NAME = 'qisada2' 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 \ No newline at end of file
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!