Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
smf-core
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit c47f914b
由
张少辉
编写于
2025-12-22 11:14:18 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
1.回库缓存问题提交
1 个父辈
e980910b
隐藏空白字符变更
内嵌
并排
正在显示
4 个修改的文件
包含
73 行增加
和
59 行删除
src/main/java/com/neotel/smfcore/core/device/handler/impl/BaseDeviceHandler.java
src/main/java/com/neotel/smfcore/core/order/LiteOrderCache.java
src/main/java/com/neotel/smfcore/core/system/service/po/DataLog.java
src/main/java/com/neotel/smfcore/custom/Jkem21481/manager/impl/ReturnStorageManagerImpl.java
src/main/java/com/neotel/smfcore/core/device/handler/impl/BaseDeviceHandler.java
查看文件 @
c47f914
...
@@ -748,7 +748,10 @@ public class BaseDeviceHandler implements IDeviceHandler {
...
@@ -748,7 +748,10 @@ public class BaseDeviceHandler implements IDeviceHandler {
barcode
.
setInOpor
(
task
.
getOperator
());
barcode
.
setInOpor
(
task
.
getOperator
());
barcode
.
setCheckOutDate
(
null
,
""
);
barcode
.
setCheckOutDate
(
null
,
""
);
barcode
.
setPosName
(
task
.
getPosName
());
barcode
.
setPosName
(
task
.
getPosName
());
barcode
.
setNeedReturnStorage
(
true
);
if
(!
barcode
.
isNeedReturnStorage
()){
task
.
setNeedReturnStorage
(
false
);
barcode
.
setNeedReturnStorage
(
true
);
}
if
(
barcode
.
isSolder
())
{
if
(
barcode
.
isSolder
())
{
if
(
storagePos
.
isWarmPos
())
{
if
(
storagePos
.
isWarmPos
())
{
//回温仓位
//回温仓位
...
...
src/main/java/com/neotel/smfcore/core/order/LiteOrderCache.java
查看文件 @
c47f914
...
@@ -271,40 +271,50 @@ public class LiteOrderCache {
...
@@ -271,40 +271,50 @@ public class LiteOrderCache {
return
order
;
return
order
;
}
}
private
Map
<
String
,
String
>
cacheOrderMap
=
new
ConcurrentHashMap
<>();
/**
/**
* 更新工单状态信息
* 更新工单状态信息
*/
*/
private
synchronized
void
finishedOrderTask
(
DataLog
task
)
throws
ValidateException
{
private
void
finishedOrderTask
(
DataLog
task
)
throws
ValidateException
{
if
(
OP
.
CHECKOUT
==
task
.
getType
())
{
if
(
OP
.
CHECKOUT
==
task
.
getType
())
{
//更新工单状态
//更新工单状态
String
orderNo
=
task
.
getSourceName
();
String
orderNo
=
task
.
getSourceName
();
if
(!
Strings
.
isNullOrEmpty
(
orderNo
))
{
if
(!
Strings
.
isNullOrEmpty
(
orderNo
))
{
LiteOrder
order
=
getLiteOrder
(
orderNo
);
if
(
order
!=
null
)
{
String
lockObj
=
cacheOrderMap
.
get
(
orderNo
);
//任务是取消的,需要将总待出库数量-1
if
(
StringUtils
.
isEmpty
(
lockObj
))
{
if
(
task
.
isCancel
())
{
lockObj
=
orderNo
;
order
.
setTaskReelCount
(
order
.
getTaskReelCount
()
-
1
);
cacheOrderMap
.
put
(
orderNo
,
lockObj
);
order
.
setTotalTaskReelCount
(
order
.
getTotalTaskReelCount
()
-
1
);
}
log
.
info
(
"工单["
+
orderNo
+
"]的任务"
+
task
.
getPartNumber
()
+
"["
+
task
.
getBarcode
()
+
"]已取消,任务数-1="
+
order
.
getFinishedReelCount
()
+
"/"
+
order
.
getTaskReelCount
());
synchronized
(
cacheOrderMap
.
get
(
orderNo
))
{
//checkoutAgain(task,order);
LiteOrder
order
=
getLiteOrder
(
orderNo
);
}
else
if
(
task
.
isFinished
()
||
task
.
isEnd
())
{
if
(
order
!=
null
)
{
order
.
setFinishedReelCount
(
order
.
getFinishedReelCount
()
+
1
);
//任务是取消的,需要将总待出库数量-1
order
.
setTotalFinishedReelCount
(
order
.
getTotalFinishedReelCount
()
+
1
);
if
(
task
.
isCancel
())
{
String
orderItemId
=
task
.
getSubSourceId
();
order
.
setTaskReelCount
(
order
.
getTaskReelCount
()
-
1
);
List
<
LiteOrderItem
>
items
=
new
ArrayList
<>();
order
.
setTotalTaskReelCount
(
order
.
getTotalTaskReelCount
()
-
1
);
for
(
LiteOrderItem
liteOrderItem
:
order
.
getOrderItems
())
{
log
.
info
(
"工单["
+
orderNo
+
"]的任务"
+
task
.
getPartNumber
()
+
"["
+
task
.
getBarcode
()
+
"]已取消,任务数-1="
+
order
.
getFinishedReelCount
()
+
"/"
+
order
.
getTaskReelCount
());
if
(
liteOrderItem
.
getId
().
equals
(
orderItemId
))
{
log
.
info
(
"工单["
+
orderNo
+
"]的任务"
+
task
.
getPartNumber
()
+
"["
+
task
.
getBarcode
()
+
"]出库完成,已完成数量+1="
+
order
.
getFinishedReelCount
()
+
"/"
+
order
.
getTaskReelCount
());
//checkoutAgain(task,order);
//更新对应条目的已出库数量和出库盘数
}
else
if
(
task
.
isFinished
()
||
task
.
isEnd
())
{
liteOrderItem
.
setOutNum
(
liteOrderItem
.
getOutNum
()
+
task
.
getNum
());
order
.
setFinishedReelCount
(
order
.
getFinishedReelCount
()
+
1
);
liteOrderItem
.
setOutReelCount
(
liteOrderItem
.
getOutReelCount
()
+
1
);
order
.
setTotalFinishedReelCount
(
order
.
getTotalFinishedReelCount
()
+
1
);
liteOrderItem
.
setTotalOutNum
(
liteOrderItem
.
getTotalOutNum
()
+
task
.
getNum
());
String
orderItemId
=
task
.
getSubSourceId
();
liteOrderItem
.
setTotalOutReelCount
(
liteOrderItem
.
getTotalOutReelCount
()
+
1
);
List
<
LiteOrderItem
>
items
=
new
ArrayList
<>();
liteOrderItem
.
setBarcodeStr
(
task
.
getBarcode
(),
task
.
getNum
());
for
(
LiteOrderItem
liteOrderItem
:
order
.
getOrderItems
())
{
liteOrderItem
.
setOutBarcodeList
(
task
.
getBarcode
(),
task
.
getPartNumber
(),
task
.
getExport
());
if
(
liteOrderItem
.
getId
().
equals
(
orderItemId
))
{
liteOrderItem
=
liteOrderItemManager
.
save
(
liteOrderItem
);
log
.
info
(
"工单["
+
orderNo
+
"]的任务"
+
task
.
getPartNumber
()
+
"["
+
task
.
getBarcode
()
+
"]出库完成,已完成数量+1="
+
order
.
getFinishedReelCount
()
+
"/"
+
order
.
getTaskReelCount
());
//更新对应条目的已出库数量和出库盘数
liteOrderItem
.
setOutNum
(
liteOrderItem
.
getOutNum
()
+
task
.
getNum
());
liteOrderItem
.
setOutReelCount
(
liteOrderItem
.
getOutReelCount
()
+
1
);
liteOrderItem
.
setTotalOutNum
(
liteOrderItem
.
getTotalOutNum
()
+
task
.
getNum
());
liteOrderItem
.
setTotalOutReelCount
(
liteOrderItem
.
getTotalOutReelCount
()
+
1
);
liteOrderItem
.
setBarcodeStr
(
task
.
getBarcode
(),
task
.
getNum
());
liteOrderItem
.
setOutBarcodeList
(
task
.
getBarcode
(),
task
.
getPartNumber
(),
task
.
getExport
());
liteOrderItem
=
liteOrderItemManager
.
save
(
liteOrderItem
);
// Barcode barcode = barcodeManager.findByBarcode(task.getBarcode());
// Barcode barcode = barcodeManager.findByBarcode(task.getBarcode());
// if (barcode != null) {
// if (barcode != null) {
// Float totalNeedNum = liteOrderItem.getNeedNum() * order.getOrderTimes();
// Float totalNeedNum = liteOrderItem.getNeedNum() * order.getOrderTimes();
...
@@ -320,43 +330,44 @@ public class LiteOrderCache {
...
@@ -320,43 +330,44 @@ public class LiteOrderCache {
// e.printStackTrace();
// e.printStackTrace();
// }
// }
// }
// }
}
items
.
add
(
liteOrderItem
);
}
order
.
setOrderItems
(
items
);
if
(!
order
.
isClosed
())
{
//工单未关闭的话,检查状态,全部都出完进行关闭
boolean
closed
=
true
;
for
(
LiteOrderItem
liteOrderItem
:
order
.
getOrderItems
())
{
if
(!
liteOrderItem
.
isOutFinished
())
{
closed
=
false
;
break
;
}
}
if
(
closed
)
{
items
.
add
(
liteOrderItem
);
if
(
StringUtils
.
isBlank
(
liteOrderItem
.
getRi
())
&&
(
StringUtils
.
isNotBlank
(
liteOrderItem
.
getPn
())
||
StringUtils
.
isNotBlank
(
liteOrderItem
.
getMpn
())))
{
}
if
(!
liteOrderItem
.
isOutReelFinished
())
{
order
.
setOrderItems
(
items
);
closed
=
false
;
if
(!
order
.
isClosed
())
{
break
;
//工单未关闭的话,检查状态,全部都出完进行关闭
boolean
closed
=
true
;
for
(
LiteOrderItem
liteOrderItem
:
order
.
getOrderItems
())
{
if
(!
liteOrderItem
.
isOutFinished
())
{
closed
=
false
;
break
;
}
if
(
closed
)
{
if
(
StringUtils
.
isBlank
(
liteOrderItem
.
getRi
())
&&
(
StringUtils
.
isNotBlank
(
liteOrderItem
.
getPn
())
||
StringUtils
.
isNotBlank
(
liteOrderItem
.
getMpn
())))
{
if
(!
liteOrderItem
.
isOutReelFinished
())
{
closed
=
false
;
break
;
}
}
}
}
}
}
}
if
(
closed
)
{
order
.
setClosed
(
closed
);
}
}
}
if
(
closed
)
{
}
else
{
order
.
setClosed
(
closed
);
log
.
error
(
"工单["
+
orderNo
+
"]的任务["
+
task
.
getBarcode
()
+
"]完成时,状态为:"
+
task
.
getStatus
());
}
}
}
}
else
{
log
.
error
(
"工单["
+
orderNo
+
"]的任务["
+
task
.
getBarcode
()
+
"]完成时,状态为:"
+
task
.
getStatus
());
}
if
(
order
.
getTaskReelCount
()
>
0
&&
order
.
getFinishedReelCount
()
>=
order
.
getTaskReelCount
())
{
if
(
order
.
getTaskReelCount
()
>
0
&&
order
.
getFinishedReelCount
()
>=
order
.
getTaskReelCount
())
{
log
.
info
(
"工单["
+
orderNo
+
"]的出库任务已完成,共出库:"
+
order
.
getFinishedReelCount
()
+
" 盘"
);
log
.
info
(
"工单["
+
orderNo
+
"]的出库任务已完成,共出库:"
+
order
.
getFinishedReelCount
()
+
" 盘"
);
finishedOrderTasks
(
order
);
finishedOrderTasks
(
order
);
}
liteOrderManager
.
save
(
order
);
liteOrderMap
.
put
(
orderNo
,
order
);
}
else
{
log
.
error
(
"完成任务时,未找到工单["
+
orderNo
+
"]信息"
);
}
}
liteOrderManager
.
save
(
order
);
liteOrderMap
.
put
(
orderNo
,
order
);
}
else
{
log
.
error
(
"完成任务时,未找到工单["
+
orderNo
+
"]信息"
);
}
}
}
}
}
}
...
...
src/main/java/com/neotel/smfcore/core/system/service/po/DataLog.java
查看文件 @
c47f914
...
@@ -268,6 +268,8 @@ public class DataLog extends BasePo implements Serializable ,Comparable<DataLog>
...
@@ -268,6 +268,8 @@ public class DataLog extends BasePo implements Serializable ,Comparable<DataLog>
private
String
remark
=
""
;
private
String
remark
=
""
;
private
boolean
needReturnStorage
=
true
;
public
String
getBarcode
()
{
public
String
getBarcode
()
{
if
(
barcode
==
null
){
if
(
barcode
==
null
){
return
""
;
return
""
;
...
...
src/main/java/com/neotel/smfcore/custom/Jkem21481/manager/impl/ReturnStorageManagerImpl.java
查看文件 @
c47f914
...
@@ -89,10 +89,8 @@ public class ReturnStorageManagerImpl implements IReturnStorageManager {
...
@@ -89,10 +89,8 @@ public class ReturnStorageManagerImpl implements IReturnStorageManager {
if
(
dataLog
!=
null
)
{
if
(
dataLog
!=
null
)
{
log
.
info
(
dataLog
.
getBarcode
()
+
"找到上一个任务,对应的工单号为:"
+
dataLog
.
getStorageName
()
+
"任务状态为:"
+
dataLog
.
getStatus
()
+
",上次出库的任务数量为:"
+
dataLog
.
getNum
());
log
.
info
(
dataLog
.
getBarcode
()
+
"找到上一个任务,对应的工单号为:"
+
dataLog
.
getStorageName
()
+
"任务状态为:"
+
dataLog
.
getStatus
()
+
",上次出库的任务数量为:"
+
dataLog
.
getNum
());
//判断是否需要回库
//判断是否需要回库
Barcode
barcode
=
barcodeManager
.
findByBarcode
(
dataLog
.
getBarcode
());
if
(
dataLog
.
isCheckOutTask
()
&&
dataLog
.
isFinished
())
{
if
(
dataLog
.
isCheckOutTask
()
&&
dataLog
.
isFinished
())
{
if
(
barcode
.
isNeedReturnStorage
())
{
if
(
dataLog
.
isNeedReturnStorage
())
{
//判断两次的partNumber是否相同,如果不同,则跳过
//判断两次的partNumber是否相同,如果不同,则跳过
if
(
task
.
getPartNumber
().
equals
(
dataLog
.
getPartNumber
()))
{
if
(
task
.
getPartNumber
().
equals
(
dataLog
.
getPartNumber
()))
{
String
sourceId
=
dataLog
.
getSourceId
();
String
sourceId
=
dataLog
.
getSourceId
();
...
...
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论