Commit 41a2860a sunke

报警页面播放声音

任务队列页面执行队列只显示当前执行的任务
1 个父辈 2821bcf3
...@@ -451,3 +451,38 @@ ...@@ -451,3 +451,38 @@
>> - qty: 数量 >> - qty: 数量
>> - w: 料盘直径(未配置尺寸信息时使用传入尺寸,否则使用配置尺寸) >> - w: 料盘直径(未配置尺寸信息时使用传入尺寸,否则使用配置尺寸)
>> - h: 厚度(未配置尺寸信息时使用传入尺寸,否则使用配置尺寸) >> - h: 厚度(未配置尺寸信息时使用传入尺寸,否则使用配置尺寸)
## dataLog表字段含义
{ "_id" : "1000114", "_class" : "com.myproject.bean.update.DataLog", "singleOut" : false, "stopSendToQisda" : false, "storageName" : "line-ac-11", "cid" : "line-ac-11", "storageId" : "12", "posId" : "33342", "posName" : "4D1116CC0016", "barcode" : "R507682020080462257", "w" : 7, "h" : 8, "cutReel" : false, "urgentReel" : false, "lessSendReel" : false, "packageReel" : false, "appendInfo" : { "outItemId" : "513024", "dnNo" : "", "facility" : "ST", "company" : "BACHS", "action" : "补料", "hSerial" : "46228", "so" : "2527563", "soseq" : "21157830", "refno" : "F001_2527563N_1", "preBindSlot" : "71", "bindSlot" : "71", "slotStr" : "9-23", "slotIndex" : 71, "rfidIndex" : 4, "rfid" : "D89", "rfidLoc" : 28, "cisIn" : false, "shelfType" : "D" }, "partNumber" : "7H.10621.511", "num" : 2000, "type" : 2, "status" : "FINISHED", "locInfo" : "2", "sourceName" : "46228_2527563_71", "subSourceInfo" : "D", "outOrder" : 277, "createDate" : { "$date" : 1601174705738 }, "updateDate" : { "$date" : 1601175846540 } }
id: 任务ID
>> - createDate: 任务创建时间(毫秒)
>> - updateDate: 任务更新时间(毫秒)
>> - updateDateStr: 任务更新时间(字符串)
>> - storageName: 料仓/料架名称
>> - cid: 料仓或料架编号
>> - storageId: 料仓/料架ID
>> - posId: 库位ID
>> - posName: 库位名称
>> - posStr: 料仓名称+库位名称
>> - barcode: 物料条码
>> - partNumber: 物料编号
>> - num: 物料数量
>> - type: 任务类型 1=入库 2=出库
>> - status: 任务状态: 无状态=NONE,等待=WAIT,正在执行=EXECUTING,已暂停=PAUSE,已完成=FINISHED,已取消=CANCEL,已结束=END
>> - sourceId: 来源(工单)ID
>> - sourceName: 来源(工单)名称,入库时为groupName
>> - subSourceId: 站位/工单条目Id
>> - subSourceInfo: 站位/工单条目名称
>> - operator: 操作人
>> - lightColor: 任务颜色(亮灯的颜色),用于区分不同工单
>> - memo: 备注信息
...@@ -18,6 +18,7 @@ import org.apache.logging.log4j.util.Strings; ...@@ -18,6 +18,7 @@ import org.apache.logging.log4j.util.Strings;
import java.io.*; import java.io.*;
import java.net.URL; import java.net.URL;
import java.net.URLConnection; import java.net.URLConnection;
import java.net.URLEncoder;
import java.util.*; import java.util.*;
import java.util.Map.Entry; import java.util.Map.Entry;
...@@ -94,6 +95,7 @@ public class HttpHelper { ...@@ -94,6 +95,7 @@ public class HttpHelper {
value = valueObj.toString(); value = valueObj.toString();
} }
} }
value = URLEncoder.encode(value,"UTF-8");
param += key + "=" + value + "&"; param += key + "=" + value + "&";
} }
param = param.substring(0, param.length() - 1); param = param.substring(0, param.length() - 1);
......
...@@ -106,6 +106,7 @@ public class StoragePosUpdateController extends BaseUpdateController { ...@@ -106,6 +106,7 @@ public class StoragePosUpdateController extends BaseUpdateController {
} }
pos.setEnabled(enabled); pos.setEnabled(enabled);
try { try {
log.info("改变库位["+pos.getPosName()+"]启用状态为:" + enabled);
storagePosManager.save(pos); storagePosManager.save(pos);
Storage storage = dataCache.getStorageById(pos.getStorageId()); Storage storage = dataCache.getStorageById(pos.getStorageId());
dataCache.reloadStorage(storage); dataCache.reloadStorage(storage);
......
...@@ -405,13 +405,13 @@ public class QisdaCache { ...@@ -405,13 +405,13 @@ public class QisdaCache {
for (QisdaApiRequest apiRequest : failedList) { for (QisdaApiRequest apiRequest : failedList) {
//log.info("重发通知指令[" + apiRequest.getMapKey() + "]到Qisda"); //log.info("重发通知指令[" + apiRequest.getMapKey() + "]到Qisda");
String result = HttpHelper.postParam(apiRequest.getUrl(),apiRequest.getParamMap()); String result = HttpHelper.postParam(apiRequest.getUrl(),apiRequest.getParamMap());
//log.info("重发通知指令[" + apiRequest.getMapKey() + "]到Qisda返回:" + result); log.info("重发通知指令[" + apiRequest.getMapKey() + "]"+apiRequest.getParamMap()+"到Qisda返回:" + result);
String resultStr = XmlUtil.getNodeBody("string", result); String resultStr = XmlUtil.getNodeBody("string", result);
if(resultStr.startsWith("-1") || resultStr.startsWith("0")){ if(resultStr.startsWith("-1") || resultStr.startsWith("0")){
//log.info(apiRequest.getMapKey() + "Qisda接口调用失败,需要进行重发"); //log.info(apiRequest.getMapKey() + "Qisda接口调用失败,需要进行重发");
//return;
}else{ }else{
QisdaCache.removeFailedRequest(apiRequest); QisdaCache.removeFailedRequest(apiRequest);
return;
} }
} }
} }
......
...@@ -58,6 +58,12 @@ ...@@ -58,6 +58,12 @@
<%--<!-- END CHART PORTLET-->--%> <%--<!-- END CHART PORTLET-->--%>
<%--</div>--%> <%--</div>--%>
<%--<div class="row">--%>
<%--<div class="col-md-12 col-sm-12">--%>
<%--<input type="checkbox" id="check1" onclick="check()" class="right" >开启报警声音--%>
<%--</div>--%>
<%--</div>--%>
<!--AGV--> <!--AGV-->
<div class="col-md-4 col-sm-4"> <div class="col-md-4 col-sm-4">
<div class="portlet light bordered"> <div class="portlet light bordered">
...@@ -193,6 +199,7 @@ ...@@ -193,6 +199,7 @@
var msgMap = {}; var msgMap = {};
$.get('${ctx}/rest/api/qisda/device/deviceMsgList', function (list) { $.get('${ctx}/rest/api/qisda/device/deviceMsgList', function (list) {
var playSound = false;
for(var i in list){ for(var i in list){
var msgBean = list[i]; var msgBean = list[i];
var msgKey = msgBean.msgKey; var msgKey = msgBean.msgKey;
...@@ -201,6 +208,9 @@ ...@@ -201,6 +208,9 @@
alarmClass = ""; alarmClass = "";
} }
var documentId = msgKey.split(".")[0]; var documentId = msgKey.split(".")[0];
if(documentId == 'box' || documentId == 'line'){
playSound = true;
}
var msgItem = "<li>" + var msgItem = "<li>" +
"<span class='task-title-sp '>["+msgBean.name+"]</span>" + "<span class='task-title-sp '>["+msgBean.name+"]</span>" +
"<span class='label label-sm "+alarmClass+"'>" + "<span class='label label-sm "+alarmClass+"'>" +
...@@ -227,9 +237,37 @@ ...@@ -227,9 +237,37 @@
}); });
playOrStopSound(playSound);
}); });
} }
var audio="";
var audioContent=false;
var playFlag = 1;
function playOrStopSound (playSound) {
if(!audioContent){
audio=document.createElement("audio");
var source = document.createElement("source");
source.src="${ctx}/scripts/sound/6531.mp3";
audio.loop = "loop";
audio.appendChild(source);
audio.style.visibility="hidden";
audioContent = true;
}
if(playSound){
if(playFlag ==1){
audio.play();// 这个就是播放
}
playFlag++;
}else{
audio.pause();// 这个就是暂停
playFlag = 1;
}
}
function updateTasks(){ function updateTasks(){
//任务列表 //任务列表
$.post("${ctx}/service/store/tasks", {}, function (data) { $.post("${ctx}/service/store/tasks", {}, function (data) {
......
...@@ -27,12 +27,40 @@ ...@@ -27,12 +27,40 @@
margin-bottom: 10px; margin-bottom: 10px;
} }
.grey-salsa.btn:hover, .grey-salsa.btn:focus, .grey-salsa.btn:active, .grey-salsa.btn.active {
color: #fafcfb;
background-color: #94a0b2;
}
</style> </style>
<link href="${ctx}/scripts/lobibox/css/lobibox.min.css?id=2" rel="stylesheet" type="text/css"/> <link href="${ctx}/scripts/lobibox/css/lobibox.min.css?id=2" rel="stylesheet" type="text/css"/>
<div class="row"> <div class="row">
<div class="col-md-12">
<div class="portlet box light">
<div class="portlet-title tabbable-line">
<div class="caption">
<div>
<span id="currentOp"> </span>
<%--当前料架:<span id="vmiRFID"></span>--%>
</div>
</div>
<ul class="nav nav-tabs">
<li class="active btn btn-circle btn-transparent grey-salsa">
<a href="#portlet_tab_1" data-toggle="tab" id="dnTab">优先和等待队列</a>
</li>
<li class="btn btn-circle btn-transparent grey-salsa">
<a href="#portlet_tab_2" data-toggle="tab" id="facilityTab">未完成队列</a>
</li>
</ul>
</div>
<div class="portlet-body">
<div class="tab-content">
<div class="tab-pane active" id="portlet_tab_1">
<div class="row">
<div class="portlet box green"> <div class="portlet box green">
<div class="portlet-title"> <div class="portlet-title">
<div class="caption"> <div class="caption">
...@@ -56,10 +84,8 @@ ...@@ -56,10 +84,8 @@
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<div class="row">
<div class="row">
<div class="portlet box blue"> <div class="portlet box blue">
<div class="portlet-title"> <div class="portlet-title">
<div class="caption"> <div class="caption">
...@@ -83,9 +109,9 @@ ...@@ -83,9 +109,9 @@
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<div class="row"> <div class="row">
<div class="portlet box yellow"> <div class="portlet box yellow">
<div class="portlet-title"> <div class="portlet-title">
<div class="caption"> <div class="caption">
...@@ -109,9 +135,50 @@ ...@@ -109,9 +135,50 @@
</div> </div>
</div> </div>
</div> </div>
</div>
</div>
<div class="tab-pane" id="portlet_tab_2">
<div class="row">
<div class="portlet box green">
<div class="portlet-title">
<div class="caption">
<i class="fa fa-gift"></i>未完成队列
</div>
<div class="tools">
</div>
</div>
<div class="portlet-body">
<div class="panel-group accordion" id="unfinished">
<div class="panel panel-success">
<div class="panel-heading">
<h4 class="panel-title">
<a class="accordion-toggle" data-toggle="collapse" data-parent="#executing" href="#executingOrder">
<i class="icon-cursor-move"></i>
[首盘] 需求单: 40 工单: 879235 备料单: F001_879235N_1 <span class="right">建议时间: 2019-11-18 08:59</span>
</a>
</h4>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div> </div>
<c:set var="scripts" scope="request"> <c:set var="scripts" scope="request">
<script src="${ctx}/scripts/Sortable.min.js"></script> <script src="${ctx}/scripts/Sortable.min.js"></script>
<script type="text/javascript"> <script type="text/javascript">
...@@ -171,15 +238,21 @@ ...@@ -171,15 +238,21 @@
var executingHtml = ''; var executingHtml = '';
var priorityHtml = ''; var priorityHtml = '';
var waitHtml = ''; var waitHtml = '';
var unfinishedHtml = '';
for(var i in data){ for(var i in data){
var outInfo = data[i]; var outInfo = data[i];
var infoHtml = getOutInfoHtml(outInfo); var infoHtml = getOutInfoHtml(outInfo);
if(outInfo.executing || outInfo.sendLess || outInfo.firstExecuteTime > 0){ if(outInfo.executing || outInfo.sendLess || outInfo.firstExecuteTime > 0){
if(!outInfo.taskEnd && (outInfo.firstReelAction || outInfo.tailAction)){
executingHtml = executingHtml + infoHtml; executingHtml = executingHtml + infoHtml;
}else{
unfinishedHtml = unfinishedHtml + infoHtml;
}
}else if(outInfo.priority){ }else if(outInfo.priority){
if(outInfo.reelCutAction){ if(outInfo.reelCutAction){
executingHtml = executingHtml + infoHtml; unfinishedHtml = unfinishedHtml + infoHtml;
}else{ }else{
if(priorityHtml == ""){ if(priorityHtml == ""){
priorityHtml = priorityHtml + infoHtml; priorityHtml = priorityHtml + infoHtml;
...@@ -194,6 +267,7 @@ ...@@ -194,6 +267,7 @@
$("#executing").html(executingHtml); $("#executing").html(executingHtml);
$("#priority").html(priorityHtml); $("#priority").html(priorityHtml);
$("#wait").html(waitHtml); $("#wait").html(waitHtml);
$("#unfinished").html(unfinishedHtml);
$(".panel-default").mouseover(function(){ $(".panel-default").mouseover(function(){
......
...@@ -12,6 +12,42 @@ ...@@ -12,6 +12,42 @@
<div class="row"> <div class="row">
<div class="col-md-12"> <div class="col-md-12">
<ul class="timeline"> <ul class="timeline">
<li class="timeline-yellow">
<div class="timeline-time">
<span class="date">2021 </span>
<span class="time">06-02 </span>
</div>
<div class="timeline-icon">
<i class="fa fa-clock-o"></i>
</div>
<div class="timeline-body">
<h2>版本: V2021060217</h2>
<div class="timeline-content">
<ul>
<li>报警页面播放声音</li>
<li>任务队列页面执行队列只显示当前执行的任务</li>
</ul>
</div>
</div>
</li>
<li class="timeline-grey">
<div class="timeline-time">
<span class="date">2021</span>
<span class="time">06-01</span>
</div>
<div class="timeline-icon">
<i class="fa fa-clock-o"></i>
</div>
<div class="timeline-body">
<h2>版本: V2021060120</h2>
<div class="timeline-content">
<ul>
<li>任务重发记录异常日志(可能会导致日志过大,风险已告知佳世达)</li>
</ul>
</div>
</div>
</li>
<li class="timeline-purple"> <li class="timeline-purple">
<div class="timeline-time"> <div class="timeline-time">
<span class="date">2021</span> <span class="date">2021</span>
......
...@@ -239,7 +239,7 @@ ...@@ -239,7 +239,7 @@
<div class="page-footer-inner"> <div class="page-footer-inner">
2016&copy; <a href="${ctx}/updateHistory.html">SMD BOX</a> 2016&copy; <a href="${ctx}/updateHistory.html">SMD BOX</a>
</div> </div>
<span class="right" style="color: #a3a3a3;">Version: 2021.05.11</span> <span class="right" style="color: #a3a3a3;">Version: 2021.06.02</span>
<div class="scroll-to-top"> <div class="scroll-to-top">
<i class="icon-arrow-up"></i> <i class="icon-arrow-up"></i>
</div> </div>
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!