Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
QisdaNew
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit 9e082650
由
sunke
编写于
2020-06-28 15:47:23 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
异常看板
包装料仓锁定时,如果架位不匹配只清理当前架位锁定信息
1 个父辈
2e89c33b
隐藏空白字符变更
内嵌
并排
正在显示
14 个修改的文件
包含
242 行增加
和
130 行删除
README.md
myproject/src/main/java/com/myproject/bean/qisda/ReelLockPosInfo.java
myproject/src/main/java/com/myproject/bean/update/DataLog.java
myproject/src/main/java/com/myproject/bean/utils/StatusBean.java
myproject/src/main/java/com/myproject/webapp/controller/qisda/QisdaController.java
myproject/src/main/java/com/myproject/webapp/controller/webService/QisdaApiController.java
myproject/src/main/java/com/myproject/webapp/controller/webService/QisdaCache.java
myproject/src/main/java/com/myproject/webapp/controller/webService/QisdaDeviceController.java
myproject/src/main/java/com/myproject/webapp/controller/webService/StatusController.java
myproject/src/main/java/com/myproject/webapp/controller/webService/StorageDataController.java
myproject/src/main/java/com/myproject/webapp/controller/webService/TaskService.java
myproject/src/main/webapp/WEB-INF/pages/storage/allBoxView.jsp
myproject/src/main/webapp/WEB-INF/pages/updateHistory.jsp
myproject/src/main/webapp/common/metroTopMenu.jsp
README.md
查看文件 @
9e08265
...
...
@@ -357,6 +357,22 @@ IP: 10.85.160.181
>> - code: 0为正常,其他为异常,
>> - msg:消息,
>> - data:
14.
异常看板
>地址:
>>/rest/api/qisda/device/updateDeviceAlarmMsg
>
>参数:
>>deviceAlarmList : 异常列表Json字符串 `[{"name":"移栽5", "msgKey":"line.move5.timeOut", "msgValue":"运动超时"},{"name":"移栽4", "msgKey":"line.move4.timeOut", "msgValue":"误差过大"}]`
>>>name : 异常位置名称
>>>msgKey : 异常信息唯一标识
>>>msgValue : 异常信息
>
> 返回:
>>` {"code":0,"msg":"ok","data":""}`
>>
>> - code: 0为正常,其他为异常,
>> - msg:消息,
>> - data:
myproject/src/main/java/com/myproject/bean/qisda/ReelLockPosInfo.java
查看文件 @
9e08265
...
...
@@ -82,4 +82,14 @@ public class ReelLockPosInfo {
public
void
setRfidLoc
(
String
rfidLoc
)
{
this
.
rfidLoc
=
rfidLoc
;
}
@Override
public
String
toString
()
{
return
"ReelLockPosInfo{"
+
"barcode='"
+
barcode
+
'\''
+
", lockPos='"
+
lockPos
+
'\''
+
", rfid='"
+
rfid
+
'\''
+
", rfidLoc='"
+
rfidLoc
+
'\''
+
'}'
;
}
}
myproject/src/main/java/com/myproject/bean/update/DataLog.java
查看文件 @
9e08265
...
...
@@ -592,6 +592,8 @@ public class DataLog extends BaseMongoBean /*implements Comparable<DataLog>*/ {
}
else
if
(
isCutReel
()){
//分盘料放在同一个料串或包装料架上,需求单号使用2
shelfMapKey
=
InquiryShelfBean
.
CUT_SHELF_MAP_KEY
;
}
else
if
(
isLessSendReel
()){
//shelfMapKey = "3";
}
return
shelfMapKey
;
}
...
...
@@ -616,4 +618,16 @@ public class DataLog extends BaseMongoBean /*implements Comparable<DataLog>*/ {
public
void
setOutOrder
(
int
outOrder
)
{
this
.
outOrder
=
outOrder
;
}
/**
* 非等待状态,超过10分钟未更新状态,等待状态,超过30分钟未更新过状态,认为超时
*/
public
boolean
isTimeout
(){
long
now
=
System
.
currentTimeMillis
();
long
timeoutTime
=
20
*
60
*
1000
;
if
(!
isWait
()){
timeoutTime
=
10
*
60
*
1000
;
}
return
now
-
getUpdateDate
().
getTime
()
>
timeoutTime
;
}
}
myproject/src/main/java/com/myproject/bean/utils/StatusBean.java
查看文件 @
9e08265
...
...
@@ -135,10 +135,10 @@ public class StatusBean {
}
/**
* 是否超时(
3
秒)
* 是否超时(
15
秒)
*/
public
boolean
timeOut
(){
return
System
.
currentTimeMillis
()
-
time
>
1
0
*
1000
;
return
System
.
currentTimeMillis
()
-
time
>
1
5
*
1000
;
}
/**
...
...
myproject/src/main/java/com/myproject/webapp/controller/qisda/QisdaController.java
查看文件 @
9e08265
...
...
@@ -75,6 +75,11 @@ public class QisdaController extends BaseController {
return
"qisda/dnIn"
;
}
@RequestMapping
(
"/qisda/alarmMsg"
)
public
String
alarmMsg
(
HttpServletRequest
request
){
return
"qisda/alarmMsg"
;
}
private
static
String
vimRfid
=
""
;
/**
...
...
myproject/src/main/java/com/myproject/webapp/controller/webService/QisdaApiController.java
查看文件 @
9e08265
...
...
@@ -310,6 +310,14 @@ public class QisdaApiController extends BaseController {
}
}
else
{
//不是指定料
if
(
outItem
.
isReelCutAction
()
||
outItem
.
isFirstReelAction
()
||
outItem
.
isTailAction
()){
//判断是否有重复,如果有重复,忽略
OutItem
oldItem
=
outItemDao
.
findItem
(
outItem
.
gethSerial
(),
outItem
.
getSlotlocation
());
if
(
oldItem
!=
null
){
log
.
error
(
"需求单["
+
outItem
.
gethSerial
()+
"]的站位["
+
outItem
.
getSlotlocation
()+
"]已存在,忽略"
);
continue
;
}
}
outItem
=
outItemDao
.
save
(
outItem
);
outInfo
.
updateItem
(
outItem
);
outInfoMap
.
put
(
hSerial
,
outInfo
);
...
...
myproject/src/main/java/com/myproject/webapp/controller/webService/QisdaCache.java
查看文件 @
9e08265
...
...
@@ -126,7 +126,7 @@ public class QisdaCache {
String
lockRfid
=
reelLockPosInfo
.
getRfid
();
String
lockRfidLoc
=
reelLockPosInfo
.
getRfidLoc
();
if
(
Strings
.
isNotBlank
(
lockRfid
)
&&
Strings
.
isNotBlank
(
lockRfidLoc
)){
if
(
rfid
.
equals
(
lockRfid
)
&&
rfidLoc
.
equals
(
r
fidLoc
)){
if
(
rfid
.
equals
(
lockRfid
)
&&
rfidLoc
.
equals
(
lockR
fidLoc
)){
return
reelLockPosInfo
;
}
}
...
...
myproject/src/main/java/com/myproject/webapp/controller/webService/QisdaDeviceController.java
查看文件 @
9e08265
...
...
@@ -4,16 +4,15 @@ import com.myproject.bean.CodeBean;
import
com.myproject.bean.qisda.*
;
import
com.myproject.bean.update.*
;
import
com.myproject.bean.update.qisda.OutInfo
;
import
com.myproject.bean.update.qisda.OutItem
;
import
com.myproject.bean.utils.BoxStatusBean
;
import
com.myproject.bean.utils.StatusBean
;
import
com.myproject.dao.mongo.IAlarmInfoDao
;
import
com.myproject.dao.mongo.IDataLogDao
;
import
com.myproject.dao.mongo.IStoragePosDao
;
import
com.myproject.dao.mongo.qisda.IOutInfoDao
;
import
com.myproject.dao.mongo.qisda.IOutItemDao
;
import
com.myproject.exception.ValidateException
;
import
com.myproject.manager.IBarcodeManager
;
import
com.myproject.manager.IComponentManager
;
import
com.myproject.manager.IStoragePosManager
;
import
com.myproject.util.JsonUtil
;
import
com.myproject.util.QisdaApi
;
import
com.myproject.util.StorageConstants
;
import
com.myproject.webapp.controller.qisda.StockCheckController
;
...
...
@@ -1108,6 +1107,66 @@ public class QisdaDeviceController extends BaseController {
return
ResultBean
.
newOkResult
(
""
);
}
private
Map
<
String
,
DeviceAlarmMsgBean
>
deviceAlarmMap
=
new
ConcurrentHashMap
<>();
@RequestMapping
(
value
=
"/updateDeviceAlarmMsg"
)
@ResponseBody
public
ResultBean
updateDeviceAlarmMsg
(
HttpServletRequest
request
){
String
alarmListStr
=
request
.
getParameter
(
"deviceAlarmList"
);
if
(
Strings
.
isNotBlank
(
alarmListStr
)){
List
<
DeviceAlarmMsgBean
>
alarmList
=
JsonUtil
.
toList
(
alarmListStr
,
DeviceAlarmMsgBean
.
class
);
for
(
DeviceAlarmMsgBean
deviceAlarmMsgBean
:
alarmList
)
{
String
msgKey
=
deviceAlarmMsgBean
.
getMsgKey
();
DeviceAlarmMsgBean
oldBean
=
deviceAlarmMap
.
get
(
msgKey
);
if
(
oldBean
!=
null
){
oldBean
.
updateMsg
(
deviceAlarmMsgBean
);
if
(
oldBean
.
getMsgValue
().
isEmpty
()){
deviceAlarmMap
.
remove
(
msgKey
);
continue
;
}
}
else
{
log
.
info
(
"收到新的设备报警信息:"
+
alarmListStr
);
deviceAlarmMsgBean
.
setStartTime
(
new
Date
());
oldBean
=
deviceAlarmMsgBean
;
}
deviceAlarmMap
.
put
(
msgKey
,
oldBean
);
}
}
return
ResultBean
.
newOkResult
(
""
);
}
@RequestMapping
(
value
=
"/deviceMsgList"
)
@ResponseBody
public
Collection
<
DeviceAlarmMsgBean
>
updateAlarmList
(
HttpServletRequest
request
){
List
<
DeviceAlarmMsgBean
>
alarmList
=
new
ArrayList
<>();
for
(
DeviceAlarmMsgBean
deviceAlarmMsgBean
:
deviceAlarmMap
.
values
())
{
if
(
deviceAlarmMsgBean
.
isTimeout
()){
deviceAlarmMap
.
remove
(
deviceAlarmMsgBean
);
}
else
{
alarmList
.
add
(
deviceAlarmMsgBean
);
}
}
for
(
Storage
storage
:
dataCache
.
getAllStorage
().
values
())
{
StatusBean
statusBean
=
taskService
.
getStatus
(
storage
.
getCid
());
Map
<
Integer
,
BoxStatusBean
>
boxStatusMap
=
statusBean
.
getBoxStatus
();
if
(
statusBean
.
getStatus
()
==
StorageConstants
.
STATUS
.
OFFLINE
){
String
msgKey
=
"box."
+
storage
.
getCid
()+
".offline"
;
DeviceAlarmMsgBean
alarmMsgBean
=
new
DeviceAlarmMsgBean
(
storage
.
getName
(),
msgKey
,
"设备离线"
);
alarmList
.
add
(
alarmMsgBean
);
}
if
(!
boxStatusMap
.
isEmpty
()){
BoxStatusBean
boxStatusBean
=
boxStatusMap
.
values
().
iterator
().
next
();
String
boxMsg
=
boxStatusBean
.
getMsg
();
if
(
Strings
.
isNotBlank
(
boxMsg
)){
String
msgKey
=
"box."
+
storage
.
getCid
();
DeviceAlarmMsgBean
alarmMsgBean
=
new
DeviceAlarmMsgBean
(
storage
.
getName
(),
msgKey
,
boxMsg
);
alarmList
.
add
(
alarmMsgBean
);
}
}
}
return
alarmList
;
}
}
myproject/src/main/java/com/myproject/webapp/controller/webService/StatusController.java
查看文件 @
9e08265
...
...
@@ -82,7 +82,7 @@ public class StatusController extends BaseController{
@RequestMapping
(
value
=
"/latestStatus"
)
@ResponseBody
public
List
<
Humiture
>
latestStatus
(
@RequestParam
String
cid
){
int
days
=
30
0
;
int
days
=
30
;
List
<
Humiture
>
result
=
humitureManager
.
latest
(
cid
,
days
);
return
result
;
}
...
...
myproject/src/main/java/com/myproject/webapp/controller/webService/StorageDataController.java
查看文件 @
9e08265
...
...
@@ -616,15 +616,16 @@ public class StorageDataController extends BaseController {
if
(
oldLockInfo
!=
null
){
if
(!
oldLockInfo
.
getBarcode
().
equals
(
barcode
.
getBarcode
())){
String
result
=
"-1"
;
okMsg
=
"["
+
rfid
+
"]["
+
barcode
.
getBarcode
()+
"]锁定库位["
+
pos
.
getPosName
()+
"],清理旧有锁定库位"
;
okMsg
=
rfid
+
"["
+
rfidLoc
+
"]["
+
barcode
.
getBarcode
()+
"]锁定库位["
+
pos
.
getPosName
()+
"],清理旧有锁定信息"
+
oldLockInfo
;
resultMap
.
put
(
"result"
,
result
);
resultMap
.
put
(
"msg"
,
okMsg
);
//已经锁定过库位,但不是同一个条码,需要把对应位置的锁定信息清理掉
List
<
ReelLockPosInfo
>
lockPosInfoList
=
QisdaCache
.
getShelfLockPosInfo
(
rfid
);
for
(
ReelLockPosInfo
reelLockPosInfo
:
lockPosInfoList
)
{
QisdaCache
.
removeReelLockPosInfo
(
reelLockPosInfo
.
getBarcode
());
log
.
info
(
"清理料架"
+
reelLockPosInfo
.
getRfid
()+
"["
+
reelLockPosInfo
.
getRfidLoc
()+
"]上物料["
+
reelLockPosInfo
.
getBarcode
()+
"]锁定的库位"
);
}
QisdaCache
.
removeReelLockPosInfo
(
barcode
.
getBarcode
());
// List<ReelLockPosInfo> lockPosInfoList = QisdaCache.getShelfLockPosInfo(rfid);
// for (ReelLockPosInfo reelLockPosInfo : lockPosInfoList) {
// QisdaCache.removeReelLockPosInfo(reelLockPosInfo.getBarcode());
// log.info("清理料架"+reelLockPosInfo.getRfid()+"["+reelLockPosInfo.getRfidLoc()+"]上物料["+reelLockPosInfo.getBarcode()+"]锁定的库位");
// }
}
}
...
...
myproject/src/main/java/com/myproject/webapp/controller/webService/TaskService.java
查看文件 @
9e08265
...
...
@@ -1496,8 +1496,8 @@ public class TaskService implements ITaskService {
}
DataLog
task
=
newTask
(
pos
);
//手动出库的当做是
紧急料,放到料串
上
task
.
setUrgentReel
(
tru
e
);
//手动出库的当做是
工单料,放到皮带线
上
task
.
setUrgentReel
(
fals
e
);
AppendInfo
appendInfo
=
task
.
getAppendInfo
();
appendInfo
.
setShelfType
(
StorageConstants
.
SHEFL_TYPE
.
B
);
...
...
myproject/src/main/webapp/WEB-INF/pages/storage/allBoxView.jsp
查看文件 @
9e08265
...
...
@@ -503,16 +503,19 @@
var position = 'bottom right';
var showClass = 'label-'+status;
if(!data[item].wait){
//非等待任务超过5分钟还未完成,变红
var updateDate = new Date(data[item].updateDate);
var now = new Date();
var minutes = (now.getTime() - updateDate.getTime())/(1000*60) ; //时间差的分钟数
if(minutes > 10){
//超过10分钟变红,放左边
//showClass="label-pause";
position = 'bottom left';
}
// if(!data[item].wait){
// //非等待任务超过5分钟还未完成,变红
// var updateDate = new Date(data[item].updateDate);
// var now = new Date();
// var minutes = (now.getTime() - updateDate.getTime())/(1000*60) ; //时间差的分钟数
// if(minutes > 10){
// //超过10分钟变红,放左边
// //showClass="label-pause";
// position = 'bottom left';
// }
// }
if(data[item].timeout){
position = 'bottom left';
}
options['position']= position;
...
...
myproject/src/main/webapp/WEB-INF/pages/updateHistory.jsp
查看文件 @
9e08265
...
...
@@ -12,194 +12,185 @@
<div class="row">
<div class="col-md-12">
<ul class="timeline">
<li class="timeline-purple">
<div class="timeline-time">
<span class="date">2020 </span>
<span class="time">06-28 </span>
</div>
<div class="timeline-icon">
<i class="fa fa-clock-o"></i>
</div>
<div class="timeline-body">
<h2>版本: V2020062809</h2>
<div class="timeline-content">
<ul>
<li>异常看板</li>
<li>分盘,首盘,补料需求单重复站位数据忽略</li>
</ul>
</div>
</div>
</li>
<li class="timeline-green">
<div class="timeline-time">
<span class="date">
2017 </span>
<span class="time">
05-27 </span>
<span class="date">2020</span>
<span class="time">06-23</span>
</div>
<div class="timeline-icon">
<i class="fa fa-clock-o"></i>
</div>
<div class="timeline-body">
<h2>版本: V2020062318</h2>
<div class="timeline-content">
<ul>
<li>二维码纸张大小系统设置</li>
<li>出库贵重物料(半自动仓中的物料和添加料件档案时勾选了贵重物料选项的料)时需输入授权码.用户是否有贵重物料出库权限需要在角色中配置,同一站位列表或批次只需输入一次授权</li>
<li>启动时加载最近12个小时未完成的任务</li>
<li>取消料架时,如果最后一个料架已无空位,查找上一个有空位的料架</li>
<li>发料任务结束时,保存上一个需求单使用的料架,用于判断是否是新的料架</li>
<li>包装仓AGV任务被取消时,导致锁定库位无法清理的问题</li>
<li>一个机器人工作时,无法放入大料架12或小料架70,71,72位置的问题</li>
<li>出库优先,入库查找没有出库任务的料仓,如果无空闲料仓,进行等待</li>
</ul>
</div>
</div>
</li>
<li class="timeline-blue">
<div class="timeline-time">
<span class="date">
2017 </span>
<span class="time">
05-11 </span>
<span class="date">2020 </span>
<span class="time">06-18 </span>
</div>
<div class="timeline-icon">
<i class="fa fa-clock-o"></i>
</div>
<div class="timeline-body">
<h2>版本: V2020061816</h2>
<div class="timeline-content">
<ul>
<li>报警信息记录统计</li>
<li>每日吞吐量统计图表</li>
<li>增加出库方式的系统设置:效率优先/先进先出/尾料优先</li>
<li>两个需求单连续出库时,上一个需求单的料架不放行的BUG</li>
<li>入库绑定时未保存Barcode导致分盘数量出错的问题</li>
<li>入库绑定时,超绑物料解绑后重新绑定到其他工单</li>
<li>启动时只加载最近5个小时未完成的任务</li>
</ul>
</div>
</div>
</li>
<li class="timeline-yellow
timeline-noline
">
<li class="timeline-yellow">
<div class="timeline-time">
<span class="date">
2017 </span>
<span class="time">
04-20 </span>
<span class="date">2020 </span>
<span class="time">04-20 </span>
</div>
<div class="timeline-icon">
<i class="fa fa-clock-o"></i>
</div>
<div class="timeline-body">
<h2>版本: V2020061614</h2>
<div class="timeline-content">
<ul>
<li>指定批次页面描述信息修改</li>
<li>扫码显示站位列表时添加线体信息</li>
<li>库存预警详情打印</li>
<li>自动生成条码信息及条码打印优化</li>
<li>云仓库监控页面扫码获取站位列表字体大小调整</li>
<li>盘点界面</li>
<li>获取工单绑定信息接口</li>
</ul>
</div>
</div>
</li>
<
%--<li class="timeline-green
">
<
li class="timeline-grey
">
<div class="timeline-time">
<span class="date">
4/13/13 </span>
<span class="time">
05:36 </span>
<span class="date">2020 </span>
<span class="time">06-11 </span>
</div>
<div class="timeline-icon">
<i class="fa fa-c
omments
"></i>
<i class="fa fa-c
lock-o
"></i>
</div>
<div class="timeline-body">
<h2>
New Project Launch
</h2>
<h2>
版本: V2020061109
</h2>
<div class="timeline-content">
<
img class="timeline-img pull-left" src="../../assets/admin/pages/media/blog/3.jpg" alt=""
>
Winter purslane courgette pumpkin quandong komatsuna fennel green bean cucumber watercress. Pea sprouts wattle seed rutabaga okra yarrow cress avocado grape radish bush tomato ricebean. Pea sprouts wattle seed rutabaga okra yarrow cress avocado grape radish bush tomato ricebean.
</div
>
<div class="timeline-footer"
>
<a href="#" class="nav-link"
>
Read more <i class="m-icon-swapright m-icon-white"></
i>
</
a
>
<
ul
>
<li>有执行中的任务时,不允许解绑</li>
<li>解除绑定时,绑定到新的需求单</li
>
<li>缺料补料时料架编号使用B</li
>
<li>入库验证失败时,清理锁定库位</li
>
<li>缺料重发时任务数量双倍的问题</l
i>
</
ul
>
</div>
</div>
</li>
<li class="timeline-purple">
<div class="timeline-time">
<span class="date">
4/15/13 </span>
<span class="time">
13:15 </span>
<span class="date">2020 </span>
<span class="time">05-28 </span>
</div>
<div class="timeline-icon">
<i class="fa fa-
music
"></i>
<i class="fa fa-
clock-o
"></i>
</div>
<div class="timeline-body">
<h2>
Promotion Day
</h2>
<h2>
版本: V2020052808
</h2>
<div class="timeline-content">
<div class="slimScrollDiv" style="position: relative; overflow: hidden; width: auto; height: 175px;"><div class="scroller" data-height="175px" data-always-visible="1" data-rail-visible1="1" data-initialized="1" style="overflow: hidden; width: auto; height: 175px;">
<p>
<img class="timeline-img pull-right" src="../../assets/admin/pages/media/blog/4.jpg" alt="">
Caulie dandelion maize lentil collard greens radish arugula sweet pepper water spinach kombu courgette lettuce. Celery coriander bitterleaf epazote radicchio shallot winter purslane collard greens spring onion squash lentil. Artichoke salad bamboo shoot black-eyed pea brussels sprout garlic kohlrabi. coriander bitterleaf epazote radicchio shallot winter purslane collard.
</p>
<p>
Coriander bitterleaf epazote radicchio shallot winter purslane collard. Caulie dandelion maize lentil collard greens radish arugula sweet pepper water spinach kombu courgette lettuce. Celery coriander bitterleaf epazote radicchio shallot winter purslane collard greens spring onion squash lentil. Artichoke salad bamboo shoot black-eyed pea brussels sprout garlic kohlrabi.
</p>
<p>
<img class="timeline-img pull-left" src="../../assets/admin/pages/media/blog/6.jpg" alt=""> Caulie dandelion maize lentil collard greens radish arugula sweet pepper water spinach kombu courgette lettuce. Celery coriander bitterleaf epazote radicchio shallot winter purslane collard greens spring onion squash lentil. Artichoke salad bamboo shoot black-eyed pea brussels sprout garlic kohlrabi radicchio shallot winter purslane collard greens spring onion squash lentil.
</p>
<p>
Coriander bitterleaf epazote radicchio shallot winter purslane collard. Caulie dandelion maize lentil collard greens radish arugula sweet pepper water spinach kombu courgette lettuce. Celery coriander bitterleaf epazote radicchio shallot winter purslane collard greens spring onion squash lentil. Artichoke salad bamboo shoot black-eyed pea brussels sprout garlic kohlrabi.
</p>
</div><div class="slimScrollBar" style="background: rgb(187, 187, 187); width: 7px; position: absolute; top: 0px; opacity: 0.4; display: block; border-radius: 7px; z-index: 99; right: 1px; height: 76.5625px;"></div><div class="slimScrollRail" style="width: 7px; height: 100%; position: absolute; top: 0px; display: none; border-radius: 7px; background: rgb(234, 234, 234); opacity: 0.2; z-index: 90; right: 1px;"></div></div>
</div>
<div class="timeline-footer">
<a href="#" class="btn blue">
Read more <i class="m-icon-swapright m-icon-white"></i>
</a>
<ul>
<li>补料出库时,按slot循环取数量最大的一盘</li>
<li>清理Qisda库存接口调用</li>
</ul>
</div>
</div>
</li>
<li class="timeline-red">
<div class="timeline-time">
<span class="date">
4/16/13 </span>
<span class="time">
21:30 </span>
<span class="date">2020 </span>
<span class="time">05-26 </span>
</div>
<div class="timeline-icon">
<i class="fa fa-
rss
"></i>
<i class="fa fa-
clock-o
"></i>
</div>
<div class="timeline-body">
<h2>
Daily Feeds
</h2>
<h2>
版本: V2020052610
</h2>
<div class="timeline-content">
<img class="timeline-img pull-left" src="../../assets/admin/pages/media/blog/5.jpg" alt="">
Parsley amaranth tigernut silver beet maize fennel spinach. Ricebean black-eyed pea maize scallion green bean spinach cabbage jicama bell pepper carrot onion corn plantain garbanzo. Sierra leone bologi komatsuna celery peanut swiss chard silver beet squash dandelion maize chicory burdock tatsoi dulse radish wakame beetroot.
</div>
<div class="timeline-footer">
<a href="#" class="btn green pull-right">
Read more <i class="m-icon-swapright m-icon-white"></i>
</a>
<ul>
<li>入库时锁定库位,不生成任务</li>
<li>提供包装料仓锁定库位查询接口</li>
</ul>
</div>
</div>
</li>
<li class="timeline-gre
y
">
<li class="timeline-gre
en
">
<div class="timeline-time">
<span class="date">
4/17/13 </span>
<span class="time">
12:11 </span>
<span class="date">2020 </span>
<span class="time">05-22 </span>
</div>
<div class="timeline-icon">
<i class="fa fa-
times
"></i>
<i class="fa fa-
clock-o
"></i>
</div>
<div class="timeline-body">
<h2>
Staff Meeting
</h2>
<h2>
版本: V2020052217
</h2>
<div class="timeline-content">
Caulie dandelion maize lentil collard greens radish arugula sweet pepper water spinach kombu courgette lettuce. Celery coriander bitterleaf epazote radicchio shallot winter purslane collard greens spring onion squash lentil. Artichoke salad bamboo shoot black-eyed pea brussels sprout garlic kohlrabi.
</div>
<div class="timeline-footer">
<a href="#" class="nav-link pull-right">
Read more <i class="m-icon-swapright m-icon-white"></i>
</a>
<ul>
<li>通知Qisda自动重发修正</li>
<li>真实绑定时无法找到预绑定料盘问题</li>
<li>解决补料需求单出库时,如果有首盘工单在缺料补发,会等到缺料补发出完时才会出库的问题</li>
<li>自动执行间隔2分钟</li>
<li>通知Qisda接口放入线程中执行</li>
<li>纯入库接口添加code参数</li>
<li>入库通知时使用initialAmount字段</li>
</ul>
</div>
</div>
</li>
<li class="timeline-blue timeline-noline">
<div class="timeline-time">
<span class="date">
4/18/13 </span>
<span class="time">
09:56 </span>
<span class="date">2020 </span>
<span class="time">05-19 </span>
</div>
<div class="timeline-icon">
<i class="fa fa-
bar-chart
-o"></i>
<i class="fa fa-
clock
-o"></i>
</div>
<div class="timeline-body">
<h2>
Demo Europe 2013
</h2>
<h2>
版本: V2020051909
</h2>
<div class="timeline-content">
<img class="timeline-img pull-left" src="../../assets/admin/pages/media/blog/2.jpg" alt="">
Parsnip lotus root celery yarrow seakale tomato collard greens tigernut epazote ricebean melon tomatillo soybean chicory broccoli beet greens peanut salad. Lotus root burdock bell pepper chickweed shallot groundnut pea sprouts welsh onion wattle seed pea salsify turnip scallion peanut arugula bamboo shoot onion swiss chard.
</div>
<div class="timeline-footer">
<a href="#" class="nav-link">
Read more <i class="m-icon-swapright m-icon-white"></i>
</a>
<ul>
<li>启动时只加载未被取消(隐藏)的任务,放上小车时,如果任务已被取消,直接NG</li>
<li>出库,入库,发料时如果通知Qisda失败,自动进行重发</li>
<li>修复分过盘的料入库时从紧急出料口出的问题</li>
</ul>
</div>
</div>
</li>
--%>
</li>
</ul>
</div>
</div>
myproject/src/main/webapp/common/metroTopMenu.jsp
查看文件 @
9e08265
...
...
@@ -30,6 +30,11 @@
<security:authorize ifAnyGranted="ROLE_MANAGE_DATALOG">
<ul class="hor-menu-qisda nav navbar-nav hide">
<li class="classic-menu-dropdown">
<a href="${ctx}/qisda/alarmMsg.html" name="qisda">
<fmt:message key="异常看板"/><span class="selected"></span>
</a>
</li>
<li class="classic-menu-dropdown">
<a href="${ctx}/qisda/dnInfoSearch.html" name="qisda">
<fmt:message key="DN单"/><span class="selected"></span>
</a>
...
...
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论