Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
QisdaNew
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit 9e082650
由
sunke
编写于
2020-06-28 15:47:23 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
异常看板
包装料仓锁定时,如果架位不匹配只清理当前架位锁定信息
1 个父辈
2e89c33b
全部展开
隐藏空白字符变更
内嵌
并排
正在显示
14 个修改的文件
包含
148 行增加
和
27 行删除
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
...
@@ -357,6 +357,22 @@ IP: 10.85.160.181
>> - code: 0为正常,其他为异常,
>> - code: 0为正常,其他为异常,
>> - msg:消息,
>> - msg:消息,
>> - data:
>> - 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 {
...
@@ -82,4 +82,14 @@ public class ReelLockPosInfo {
public
void
setRfidLoc
(
String
rfidLoc
)
{
public
void
setRfidLoc
(
String
rfidLoc
)
{
this
.
rfidLoc
=
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>*/ {
...
@@ -592,6 +592,8 @@ public class DataLog extends BaseMongoBean /*implements Comparable<DataLog>*/ {
}
else
if
(
isCutReel
()){
}
else
if
(
isCutReel
()){
//分盘料放在同一个料串或包装料架上,需求单号使用2
//分盘料放在同一个料串或包装料架上,需求单号使用2
shelfMapKey
=
InquiryShelfBean
.
CUT_SHELF_MAP_KEY
;
shelfMapKey
=
InquiryShelfBean
.
CUT_SHELF_MAP_KEY
;
}
else
if
(
isLessSendReel
()){
//shelfMapKey = "3";
}
}
return
shelfMapKey
;
return
shelfMapKey
;
}
}
...
@@ -616,4 +618,16 @@ public class DataLog extends BaseMongoBean /*implements Comparable<DataLog>*/ {
...
@@ -616,4 +618,16 @@ public class DataLog extends BaseMongoBean /*implements Comparable<DataLog>*/ {
public
void
setOutOrder
(
int
outOrder
)
{
public
void
setOutOrder
(
int
outOrder
)
{
this
.
outOrder
=
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 {
...
@@ -135,10 +135,10 @@ public class StatusBean {
}
}
/**
/**
* 是否超时(
3
秒)
* 是否超时(
15
秒)
*/
*/
public
boolean
timeOut
(){
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 {
...
@@ -75,6 +75,11 @@ public class QisdaController extends BaseController {
return
"qisda/dnIn"
;
return
"qisda/dnIn"
;
}
}
@RequestMapping
(
"/qisda/alarmMsg"
)
public
String
alarmMsg
(
HttpServletRequest
request
){
return
"qisda/alarmMsg"
;
}
private
static
String
vimRfid
=
""
;
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 {
...
@@ -310,6 +310,14 @@ public class QisdaApiController extends BaseController {
}
}
}
else
{
}
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
);
outItem
=
outItemDao
.
save
(
outItem
);
outInfo
.
updateItem
(
outItem
);
outInfo
.
updateItem
(
outItem
);
outInfoMap
.
put
(
hSerial
,
outInfo
);
outInfoMap
.
put
(
hSerial
,
outInfo
);
...
...
myproject/src/main/java/com/myproject/webapp/controller/webService/QisdaCache.java
查看文件 @
9e08265
...
@@ -126,7 +126,7 @@ public class QisdaCache {
...
@@ -126,7 +126,7 @@ public class QisdaCache {
String
lockRfid
=
reelLockPosInfo
.
getRfid
();
String
lockRfid
=
reelLockPosInfo
.
getRfid
();
String
lockRfidLoc
=
reelLockPosInfo
.
getRfidLoc
();
String
lockRfidLoc
=
reelLockPosInfo
.
getRfidLoc
();
if
(
Strings
.
isNotBlank
(
lockRfid
)
&&
Strings
.
isNotBlank
(
lockRfidLoc
)){
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
;
return
reelLockPosInfo
;
}
}
}
}
...
...
myproject/src/main/java/com/myproject/webapp/controller/webService/QisdaDeviceController.java
查看文件 @
9e08265
...
@@ -4,16 +4,15 @@ import com.myproject.bean.CodeBean;
...
@@ -4,16 +4,15 @@ import com.myproject.bean.CodeBean;
import
com.myproject.bean.qisda.*
;
import
com.myproject.bean.qisda.*
;
import
com.myproject.bean.update.*
;
import
com.myproject.bean.update.*
;
import
com.myproject.bean.update.qisda.OutInfo
;
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.IAlarmInfoDao
;
import
com.myproject.dao.mongo.IDataLogDao
;
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.exception.ValidateException
;
import
com.myproject.manager.IBarcodeManager
;
import
com.myproject.manager.IBarcodeManager
;
import
com.myproject.manager.IComponentManager
;
import
com.myproject.manager.IComponentManager
;
import
com.myproject.manager.IStoragePosManager
;
import
com.myproject.manager.IStoragePosManager
;
import
com.myproject.util.JsonUtil
;
import
com.myproject.util.QisdaApi
;
import
com.myproject.util.QisdaApi
;
import
com.myproject.util.StorageConstants
;
import
com.myproject.util.StorageConstants
;
import
com.myproject.webapp.controller.qisda.StockCheckController
;
import
com.myproject.webapp.controller.qisda.StockCheckController
;
...
@@ -1108,6 +1107,66 @@ public class QisdaDeviceController extends BaseController {
...
@@ -1108,6 +1107,66 @@ public class QisdaDeviceController extends BaseController {
return
ResultBean
.
newOkResult
(
""
);
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{
...
@@ -82,7 +82,7 @@ public class StatusController extends BaseController{
@RequestMapping
(
value
=
"/latestStatus"
)
@RequestMapping
(
value
=
"/latestStatus"
)
@ResponseBody
@ResponseBody
public
List
<
Humiture
>
latestStatus
(
@RequestParam
String
cid
){
public
List
<
Humiture
>
latestStatus
(
@RequestParam
String
cid
){
int
days
=
30
0
;
int
days
=
30
;
List
<
Humiture
>
result
=
humitureManager
.
latest
(
cid
,
days
);
List
<
Humiture
>
result
=
humitureManager
.
latest
(
cid
,
days
);
return
result
;
return
result
;
}
}
...
...
myproject/src/main/java/com/myproject/webapp/controller/webService/StorageDataController.java
查看文件 @
9e08265
...
@@ -616,15 +616,16 @@ public class StorageDataController extends BaseController {
...
@@ -616,15 +616,16 @@ public class StorageDataController extends BaseController {
if
(
oldLockInfo
!=
null
){
if
(
oldLockInfo
!=
null
){
if
(!
oldLockInfo
.
getBarcode
().
equals
(
barcode
.
getBarcode
())){
if
(!
oldLockInfo
.
getBarcode
().
equals
(
barcode
.
getBarcode
())){
String
result
=
"-1"
;
String
result
=
"-1"
;
okMsg
=
"["
+
rfid
+
"]["
+
barcode
.
getBarcode
()+
"]锁定库位["
+
pos
.
getPosName
()+
"],清理旧有锁定库位"
;
okMsg
=
rfid
+
"["
+
rfidLoc
+
"]["
+
barcode
.
getBarcode
()+
"]锁定库位["
+
pos
.
getPosName
()+
"],清理旧有锁定信息"
+
oldLockInfo
;
resultMap
.
put
(
"result"
,
result
);
resultMap
.
put
(
"result"
,
result
);
resultMap
.
put
(
"msg"
,
okMsg
);
resultMap
.
put
(
"msg"
,
okMsg
);
//已经锁定过库位,但不是同一个条码,需要把对应位置的锁定信息清理掉
//已经锁定过库位,但不是同一个条码,需要把对应位置的锁定信息清理掉
List
<
ReelLockPosInfo
>
lockPosInfoList
=
QisdaCache
.
getShelfLockPosInfo
(
rfid
);
QisdaCache
.
removeReelLockPosInfo
(
barcode
.
getBarcode
());
for
(
ReelLockPosInfo
reelLockPosInfo
:
lockPosInfoList
)
{
// List<ReelLockPosInfo> lockPosInfoList = QisdaCache.getShelfLockPosInfo(rfid);
QisdaCache
.
removeReelLockPosInfo
(
reelLockPosInfo
.
getBarcode
());
// for (ReelLockPosInfo reelLockPosInfo : lockPosInfoList) {
log
.
info
(
"清理料架"
+
reelLockPosInfo
.
getRfid
()+
"["
+
reelLockPosInfo
.
getRfidLoc
()+
"]上物料["
+
reelLockPosInfo
.
getBarcode
()+
"]锁定的库位"
);
// 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 {
...
@@ -1496,8 +1496,8 @@ public class TaskService implements ITaskService {
}
}
DataLog
task
=
newTask
(
pos
);
DataLog
task
=
newTask
(
pos
);
//手动出库的当做是
紧急料,放到料串
上
//手动出库的当做是
工单料,放到皮带线
上
task
.
setUrgentReel
(
tru
e
);
task
.
setUrgentReel
(
fals
e
);
AppendInfo
appendInfo
=
task
.
getAppendInfo
();
AppendInfo
appendInfo
=
task
.
getAppendInfo
();
appendInfo
.
setShelfType
(
StorageConstants
.
SHEFL_TYPE
.
B
);
appendInfo
.
setShelfType
(
StorageConstants
.
SHEFL_TYPE
.
B
);
...
...
myproject/src/main/webapp/WEB-INF/pages/storage/allBoxView.jsp
查看文件 @
9e08265
...
@@ -503,16 +503,19 @@
...
@@ -503,16 +503,19 @@
var position = 'bottom right';
var position = 'bottom right';
var showClass = 'label-'+status;
var showClass = 'label-'+status;
if(!data[item].wait){
// if(!data[item].wait){
//非等待任务超过5分钟还未完成,变红
// //非等待任务超过5分钟还未完成,变红
var updateDate = new Date(data[item].updateDate);
// var updateDate = new Date(data[item].updateDate);
var now = new Date();
// var now = new Date();
var minutes = (now.getTime() - updateDate.getTime())/(1000*60) ; //时间差的分钟数
// var minutes = (now.getTime() - updateDate.getTime())/(1000*60) ; //时间差的分钟数
if(minutes > 10){
// if(minutes > 10){
//超过10分钟变红,放左边
// //超过10分钟变红,放左边
//showClass="label-pause";
// //showClass="label-pause";
position = 'bottom left';
// position = 'bottom left';
}
// }
// }
if(data[item].timeout){
position = 'bottom left';
}
}
options['position']= position;
options['position']= position;
...
...
myproject/src/main/webapp/WEB-INF/pages/updateHistory.jsp
查看文件 @
9e08265
此文件的差异被折叠,
点击展开。
myproject/src/main/webapp/common/metroTopMenu.jsp
查看文件 @
9e08265
...
@@ -30,6 +30,11 @@
...
@@ -30,6 +30,11 @@
<security:authorize ifAnyGranted="ROLE_MANAGE_DATALOG">
<security:authorize ifAnyGranted="ROLE_MANAGE_DATALOG">
<ul class="hor-menu-qisda nav navbar-nav hide">
<ul class="hor-menu-qisda nav navbar-nav hide">
<li class="classic-menu-dropdown">
<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">
<a href="${ctx}/qisda/dnInfoSearch.html" name="qisda">
<fmt:message key="DN单"/><span class="selected"></span>
<fmt:message key="DN单"/><span class="selected"></span>
</a>
</a>
...
...
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论