Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
smf-core
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit 146bc1dc
由
LN
编写于
2023-03-01 10:02:56 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
1053:1.除reel外,同时只能出两种料架的料。2.工单上传修改。bug修改
1 个父辈
c8c51f1f
显示空白字符变更
内嵌
并排
正在显示
6 个修改的文件
包含
84 行增加
和
48 行删除
src/main/java/com/neotel/smfcore/common/init/MainTimer.java
src/main/java/com/neotel/smfcore/core/device/bean/StatusBean.java
src/main/java/com/neotel/smfcore/core/device/handler/impl/RobotBoxHandler.java
src/main/java/com/neotel/smfcore/core/device/handler/impl/ThirdBoxHandler.java
src/main/java/com/neotel/smfcore/core/order/listener/DefaultOrderFileListener.java
src/main/java/com/neotel/smfcore/core/system/service/manager/impl/DataLogManagerImpl.java
src/main/java/com/neotel/smfcore/common/init/MainTimer.java
查看文件 @
146bc1d
...
...
@@ -46,7 +46,7 @@ public class MainTimer {
log
.
info
(
"开始加载未完成的任务..."
);
List
<
DataLog
>
unExecuteTasks
=
dataLogManager
.
findUnFinishedTasks
();
for
(
DataLog
unExecuteTask
:
unExecuteTasks
)
{
if
(
unExecuteTask
.
isExecuting
()
||
unExecuteTask
.
isWait
())
{
if
(
unExecuteTask
.
isExecuting
()
||
unExecuteTask
.
isWait
()
||
unExecuteTask
.
isOutBox
()||
unExecuteTask
.
isInLine
()||
unExecuteTask
.
isInRobot
()||
unExecuteTask
.
isBoxdoor
()
)
{
try
{
taskService
.
addTaskToExecute
(
unExecuteTask
);
}
catch
(
Exception
e
){
...
...
src/main/java/com/neotel/smfcore/core/device/bean/StatusBean.java
查看文件 @
146bc1d
...
...
@@ -274,6 +274,12 @@ public class StatusBean {
addPosInfo
(
barcode
,
posId
,
plateW
,
plateH
,
isSingleOut
,
0
);
}
/**
* 获取客户端发送上来的条码信息
*/
public
String
getBarcode
(){
return
data
.
get
(
"barcode"
);
}
/**
* 入库时添加仓位及料盘大小信息(posId库位编号,plateW:料盘宽度,plateH:料盘高度,singleOut:是否出库到料仓门口)
*/
public
void
addPosInfo
(
String
barcode
,
String
posId
,
int
plateW
,
int
plateH
,
boolean
isSingleOut
,
int
usedCount
){
...
...
src/main/java/com/neotel/smfcore/core/device/handler/impl/RobotBoxHandler.java
查看文件 @
146bc1d
...
...
@@ -97,6 +97,13 @@ public class RobotBoxHandler extends BaseDeviceHandler {
if
(
dataCache
.
getCache
(
Constants
.
CACHE_StopOut
))
{
return
statusBean
;
}
//如果当前有barcode,暂时不发出库任务
String
sBarcode
=
statusBean
.
getBarcode
();
if
(
ObjectUtil
.
isNotEmpty
(
sBarcode
))
{
return
statusBean
;
}
String
cid
=
statusBean
.
getCid
();
// 任务根据时间排序。查找当前正在出的工单和料架 (入库任务不计算)
List
<
DataLog
>
allTasks
=
taskService
.
getAllTasks
();
...
...
@@ -113,7 +120,10 @@ public class RobotBoxHandler extends BaseDeviceHandler {
continue
;
}
String
shelf
=
MicronDataCache
.
getShelfType
(
task
);
if
(!
shelfType
.
contains
(
shelf
)){
if
(
shelfType
.
equals
(
"S007"
)){
//reel料盘一直可以出库
}
else
if
(!
shelfType
.
contains
(
shelf
))
{
shelfType
.
add
(
shelf
);
}
if
(
ObjectUtil
.
isNotEmpty
(
task
.
getSourceId
())&&(!
sourceIds
.
contains
(
task
.
getSourceId
()))){
...
...
@@ -155,11 +165,12 @@ public class RobotBoxHandler extends BaseDeviceHandler {
}
//reel可以一直出,不需要判断
//如果料架>=2,当前任务的料架在已出料架中,可以直接出
//如果料架<2,且当前任务属于已出工单,可以直接出
//循环查找,当前任务不满足时查找下一个任务
String
shelf
=
MicronDataCache
.
getShelfType
(
queueTask
);
if
(
shelfType
.
size
()
<
2
||
shelfType
.
contains
(
shelf
))
{
if
(
shelfType
.
equals
(
"S007"
)||
shelfType
.
size
()
<
2
||
shelfType
.
contains
(
shelf
))
{
//料架正确,工单为空,返回
if
(
ObjectUtil
.
isEmpty
(
queueTask
.
getSourceId
()))
{
outTask
=
queueTask
;
...
...
src/main/java/com/neotel/smfcore/core/device/handler/impl/ThirdBoxHandler.java
查看文件 @
146bc1d
...
...
@@ -82,6 +82,12 @@ public class ThirdBoxHandler extends BaseDeviceHandler{
if
(
dataCache
.
getCache
(
Constants
.
CACHE_StopOut
))
{
return
statusBean
;
}
//如果当前有barcode,暂时不发出库任务
String
sBarcode
=
statusBean
.
getBarcode
();
if
(
ObjectUtil
.
isNotEmpty
(
sBarcode
))
{
return
statusBean
;
}
String
cid
=
statusBean
.
getCid
();
// 任务根据时间排序。查找当前正在出的工单和料架 (入库任务不计算)
List
<
DataLog
>
allTasks
=
taskService
.
getAllTasks
();
...
...
@@ -98,7 +104,10 @@ public class ThirdBoxHandler extends BaseDeviceHandler{
continue
;
}
String
shelf
=
MicronDataCache
.
getShelfType
(
task
);
if
(!
shelfType
.
contains
(
shelf
)){
if
(
shelfType
.
equals
(
"S007"
)){
//reel料盘一直可以出库
}
else
if
(!
shelfType
.
contains
(
shelf
)){
shelfType
.
add
(
shelf
);
}
if
(
ObjectUtil
.
isNotEmpty
(
task
.
getSourceId
())&&(!
sourceIds
.
contains
(
task
.
getSourceId
()))){
...
...
@@ -140,11 +149,12 @@ public class ThirdBoxHandler extends BaseDeviceHandler{
}
//如果料架>=2,当前任务的料架在已出料架中,可以直接出
//reel可以一直出,不需要判断
// 如果料架>=2,当前任务的料架在已出料架中,可以直接出
//如果料架<2,且当前任务属于已出工单,可以直接出
//循环查找,当前任务不满足时查找下一个任务
String
shelf
=
MicronDataCache
.
getShelfType
(
queueTask
);
if
(
shelfType
.
size
()
<
2
||
shelfType
.
contains
(
shelf
))
{
if
(
shelfType
.
equals
(
"S007"
)||
shelfType
.
size
()
<
2
||
shelfType
.
contains
(
shelf
))
{
//料架正确,工单为空,返回
if
(
ObjectUtil
.
isEmpty
(
queueTask
.
getSourceId
()))
{
outTask
=
queueTask
;
...
...
src/main/java/com/neotel/smfcore/core/order/listener/DefaultOrderFileListener.java
查看文件 @
146bc1d
...
...
@@ -214,54 +214,63 @@ public class DefaultOrderFileListener implements IOrderFileListener {
List
<
Map
<
Integer
,
String
>>
data
=
ExcelReader
.
noModelRead
(
fileURL
,
headRowNumber
);
if
(
data
!=
null
&&
data
.
size
()>=
2
){
if
(
data
!=
null
&&
data
.
size
()>=
2
)
{
Map
<
Integer
,
String
>
headerData
=
data
.
get
(
0
);
Map
<
String
,
Integer
>
headerMap
=
new
HashMap
<>();
Map
<
Integer
,
String
>
headerData
=
data
.
get
(
0
);
Map
<
String
,
Integer
>
headerMap
=
new
HashMap
<>();
for
(
Integer
key
:
headerData
.
keySet
())
{
if
(
ObjectUtil
.
isEmpty
(
key
))
{
if
(
ObjectUtil
.
isEmpty
(
key
))
{
continue
;
}
String
v
=
headerData
.
get
(
key
);
headerMap
.
put
(
v
,
key
);
String
v
=
headerData
.
get
(
key
);
headerMap
.
put
(
v
,
key
);
}
OrderSetting
orderSetting
=
dataCache
.
getOrderSetting
();
int
partNumberIndex
=
headerMap
.
getOrDefault
(
orderSetting
.
getPn
(),-
1
);
int
riIndex
=
headerMap
.
getOrDefault
(
orderSetting
.
getRi
(),-
1
);
if
(
partNumberIndex
==-
1
&&
riIndex
==-
1
){
if
(
headRowNumber
<=
1
){
log
.
error
(
"文件["
+
fileName
+
"],未找到列PN或RI,当前headRowNumber=["
+
headRowNumber
+
"],设置headRowNumber=3重新读取"
);
return
readExcelFile
(
fileName
,
fileURL
,
3
);
}
else
{
log
.
error
(
"文件["
+
fileName
+
"],未找到列PN或RI,当前headRowNumber=["
+
headRowNumber
+
"],读取文件失败,返回null"
);
int
partNumberIndex
=
headerMap
.
getOrDefault
(
orderSetting
.
getPn
(),
-
1
);
int
riIndex
=
headerMap
.
getOrDefault
(
orderSetting
.
getRi
(),
-
1
);
int
mpnIndex
=
headerMap
.
getOrDefault
(
orderSetting
.
getMpn
(),
-
1
);
if
(
partNumberIndex
==
-
1
&&
riIndex
==
-
1
&&
mpnIndex
==
-
1
)
{
if
(
headRowNumber
<=
1
)
{
log
.
error
(
"文件["
+
fileName
+
"],未找到列PN或RI或MPN,当前headRowNumber=["
+
headRowNumber
+
"],设置headRowNumber=3重新读取"
);
return
readExcelFile
(
fileName
,
fileURL
,
3
);
}
else
{
log
.
error
(
"文件["
+
fileName
+
"],未找到列PN或RI或MPN,当前headRowNumber=["
+
headRowNumber
+
"],读取文件失败,返回null"
);
return
null
;
}
}
int
qtyIndex
=
headerMap
.
getOrDefault
(
orderSetting
.
getQty
(),-
1
);
int
feederIndex
=
headerMap
.
getOrDefault
(
orderSetting
.
getFeeder
(),-
1
);
int
soIndex
=
headerMap
.
getOrDefault
(
orderSetting
.
getSo
(),-
1
);
int
numIndex
=
headerMap
.
getOrDefault
(
orderSetting
.
getNum
(),-
1
);
int
mpnIndex
=
headerMap
.
getOrDefault
(
orderSetting
.
getMpn
(),-
1
);
int
qtyIndex
=
headerMap
.
getOrDefault
(
orderSetting
.
getQty
(),
-
1
);
int
feederIndex
=
headerMap
.
getOrDefault
(
orderSetting
.
getFeeder
(),
-
1
);
int
soIndex
=
headerMap
.
getOrDefault
(
orderSetting
.
getSo
(),
-
1
);
int
numIndex
=
headerMap
.
getOrDefault
(
orderSetting
.
getNum
(),
-
1
);
for
(
int
i
=
1
;
i
<
data
.
size
();
i
++)
{
for
(
int
i
=
1
;
i
<
data
.
size
();
i
++)
{
Map
<
Integer
,
String
>
lineValues
=
data
.
get
(
i
);
String
partNumber
=
lineValues
.
get
(
partNumberIndex
);
String
ri
=
""
;
String
mpn
=
""
;
if
(
riIndex
!=-
1
)
{
ri
=
lineValues
.
get
(
riIndex
);
String
ri
=
""
;
String
mpn
=
""
;
if
(
riIndex
!=
-
1
)
{
ri
=
lineValues
.
get
(
riIndex
);
}
if
(
mpnIndex
!=-
1
)
{
mpn
=
lineValues
.
get
(
mpnIndex
);
if
(
mpnIndex
!=
-
1
)
{
mpn
=
lineValues
.
get
(
mpnIndex
);
}
if
(
partNumber
.
isEmpty
()&&
ri
.
isEmpty
()&&
mpn
.
isEmpty
())
{
if
(
partNumber
==
null
)
{
partNumber
=
""
;
}
if
(
ri
==
null
)
{
ri
=
""
;
}
if
(
mpn
==
null
)
{
mpn
=
""
;
}
if
(
ObjectUtil
.
isEmpty
(
partNumber
)
&&
ObjectUtil
.
isEmpty
(
ri
)
&&
ObjectUtil
.
isEmpty
(
mpn
))
{
log
.
warn
(
"行[partNumber="
+
partNumber
+
"]中PN和RI,MPN都 为空,此行忽略"
);
}
else
{
int
num
=
1
;
if
(
qtyIndex
!=
-
1
)
{
String
numStr
=
lineValues
.
get
(
qtyIndex
)
;
String
numStr
=
lineValues
.
get
(
qtyIndex
);
if
(
Strings
.
isNotBlank
(
numStr
))
{
try
{
num
=
Integer
.
valueOf
(
numStr
);
...
...
@@ -274,19 +283,19 @@ public class DefaultOrderFileListener implements IOrderFileListener {
if
(
feederIndex
!=
-
1
)
{
feeder
=
lineValues
.
get
(
feederIndex
);
}
String
so
=
fileName
;
String
so
=
fileName
;
if
(
soIndex
!=-
1
)
{
so
=
lineValues
.
get
(
soIndex
);
if
(
soIndex
!=
-
1
)
{
so
=
lineValues
.
get
(
soIndex
);
}
if
(!
ObjectUtil
.
isNotEmpty
(
so
))
{
so
=
fileName
;
if
(!
ObjectUtil
.
isNotEmpty
(
so
))
{
so
=
fileName
;
}
int
count
=
1
;
if
(
numIndex
!=
-
1
){
int
count
=
1
;
if
(
numIndex
!=
-
1
)
{
String
countStr
=
lineValues
.
get
(
numIndex
);
if
(
StringUtils
.
isNotBlank
(
countStr
)){
if
(
StringUtils
.
isNotBlank
(
countStr
))
{
try
{
count
=
Integer
.
valueOf
(
countStr
);
}
catch
(
Exception
e
)
{
...
...
@@ -297,7 +306,7 @@ public class DefaultOrderFileListener implements IOrderFileListener {
LiteOrderItem
item
=
new
LiteOrderItem
();
item
.
setPn
(
partNumber
);
item
.
setNeedReelCount
(
count
);
if
(
partNumber
.
isEmpty
())
{
if
(
partNumber
.
isEmpty
())
{
item
.
setNeedReelCount
(
1
);
}
item
.
setNeedNum
(
num
);
...
...
@@ -305,8 +314,8 @@ public class DefaultOrderFileListener implements IOrderFileListener {
item
.
setFeederInfo
(
feeder
);
item
.
setRi
(
ri
);
item
.
setMpn
(
mpn
);
if
(!
itemMap
.
containsKey
(
so
))
{
itemMap
.
put
(
so
,
new
ArrayList
<
LiteOrderItem
>());
if
(!
itemMap
.
containsKey
(
so
))
{
itemMap
.
put
(
so
,
new
ArrayList
<
LiteOrderItem
>());
}
itemMap
.
get
(
so
).
add
(
item
);
}
...
...
@@ -316,7 +325,7 @@ public class DefaultOrderFileListener implements IOrderFileListener {
return
itemMap
;
}
catch
(
Exception
ex
)
{
log
.
error
(
"解析上传的工单出错:"
+
ex
.
toString
());
log
.
error
(
"解析上传的工单出错:"
+
ex
.
getMessage
());
}
finally
{
}
...
...
src/main/java/com/neotel/smfcore/core/system/service/manager/impl/DataLogManagerImpl.java
查看文件 @
146bc1d
...
...
@@ -59,7 +59,7 @@ public class DataLogManagerImpl implements IDataLogManager {
@Override
public
List
<
DataLog
>
findUnFinishedTasks
(
)
{
Criteria
c
=
Criteria
.
where
(
"status"
).
nin
(
OP_STATUS
.
FINISHED
.
name
(),
OP_STATUS
.
CANCEL
.
name
());
//只查找近
12
个小时未完成的任务
//只查找近
48
个小时未完成的任务
Calendar
calendar
=
Calendar
.
getInstance
();
calendar
.
add
(
Calendar
.
HOUR_OF_DAY
,-
48
);
c
.
and
(
"updateDate"
).
gte
(
calendar
.
getTime
());
...
...
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论