Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
smf-core
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit 77dd1c89
由
LN
编写于
2024-09-05 14:07:22 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
工单锁定的物料,工单关闭时清除锁定。
1 个父辈
cae53928
隐藏空白字符变更
内嵌
并排
正在显示
5 个修改的文件
包含
58 行增加
和
4 行删除
src/main/java/com/neotel/smfcore/core/barcode/service/po/Barcode.java
src/main/java/com/neotel/smfcore/core/order/LiteOrderCache.java
src/main/java/com/neotel/smfcore/core/storage/rest/LockMaterialController.java
src/main/java/com/neotel/smfcore/custom/micron1053/task/MicronDispatchController.java
src/main/java/com/neotel/smfcore/custom/micron1053/task/MicronPreTaskController.java
src/main/java/com/neotel/smfcore/core/barcode/service/po/Barcode.java
查看文件 @
77dd1c8
...
...
@@ -229,7 +229,7 @@ public class Barcode extends BasePo implements Serializable {
private
Date
produceDate
;
/**
* 锁定ID(目前只有指定批次会锁定)
* 锁定ID(目前只有指定批次会锁定)
Outside Shelf Dispatch 或 Controlled Dispatch工单会锁定
*/
private
String
lockId
;
...
...
src/main/java/com/neotel/smfcore/core/order/LiteOrderCache.java
查看文件 @
77dd1c8
...
...
@@ -9,6 +9,7 @@ import com.neotel.smfcore.common.utils.Constants;
import
com.neotel.smfcore.common.utils.SecurityUtils
;
import
com.neotel.smfcore.common.utils.StringUtils
;
import
com.neotel.smfcore.core.api.SmfApi
;
import
com.neotel.smfcore.core.barcode.service.manager.IBarcodeManager
;
import
com.neotel.smfcore.core.barcode.service.po.Barcode
;
import
com.neotel.smfcore.core.device.bean.StatusBean
;
import
com.neotel.smfcore.core.device.enums.OP
;
...
...
@@ -65,6 +66,10 @@ public class LiteOrderCache {
@Autowired
private
IStoragePosManager
storagePosManager
;
@Autowired
private
IBarcodeManager
barcodeManager
;
@Autowired
private
SmfApi
smfApi
;
...
...
@@ -240,8 +245,41 @@ public class LiteOrderCache {
liteOrder
.
setTaskFinishedTime
(
System
.
currentTimeMillis
());
smfApi
.
onOrderStatusChange
(
liteOrder
);
clearOrderLock
(
liteOrder
);
}
public
void
clearOrderLock
(
LiteOrder
order
)
{
try
{
if
(
order
==
null
||
(!
order
.
isClosed
()))
{
return
;
}
//清理已出库的物料
Query
query
=
new
Query
(
Criteria
.
where
(
"lockId"
).
is
(
order
.
getOrderNo
()));
List
<
Barcode
>
barcodes
=
barcodeManager
.
findByQuery
(
query
);
if
(
barcodes
.
size
()
>
0
)
{
for
(
Barcode
code
:
barcodes
)
{
code
.
setLockId
(
null
);
code
.
setLockName
(
null
);
code
=
barcodeManager
.
saveBarcode
(
code
);
StoragePos
pos
=
storagePosManager
.
getByBarcode
(
code
.
getBarcode
());
if
(
pos
==
null
)
{
log
.
info
(
"工单"
+
order
.
getOrderNo
()
+
"已关闭,解除物料锁定:"
+
code
.
getBarcode
());
}
else
{
pos
.
setBarcode
(
code
);
storagePosManager
.
save
(
pos
);
log
.
info
(
"工单"
+
order
.
getOrderNo
()
+
"已关闭,解除物料锁定:"
+
code
.
getBarcode
()
+
",所在库位:"
+
pos
.
getPosName
());
}
}
}
}
catch
(
Exception
exception
)
{
log
.
error
(
"工单"
+
order
.
getOrderNo
()
+
"关闭时,解除锁定物料出错:"
,
exception
);
}
}
public
LiteOrder
getLiteOrder
(
String
orderNo
)
{
LiteOrder
order
=
liteOrderMap
.
get
(
orderNo
);
if
(
order
==
null
)
{
...
...
@@ -395,6 +433,7 @@ public class LiteOrderCache {
log
.
info
(
" mode="
+
order
.
getMode
()
+
"的出库已结束,清空 key="
+
key
+
" 的cache"
);
dataCache
.
updateCache
(
key
,
""
);
}
clearOrderLock
(
order
);
}
}
}
else
{
...
...
@@ -710,6 +749,7 @@ public class LiteOrderCache {
liteOrder
.
setClosed
(
true
);
liteOrderManager
.
save
(
liteOrder
);
smfApi
.
onOrderStatusChange
(
liteOrder
);
clearOrderLock
(
liteOrder
);
return
"smfcore.order.close.success"
;
}
...
...
src/main/java/com/neotel/smfcore/core/storage/rest/LockMaterialController.java
查看文件 @
77dd1c8
...
...
@@ -4,6 +4,8 @@ import com.neotel.smfcore.common.bean.ResultBean;
import
com.neotel.smfcore.common.exception.ValidateException
;
import
com.neotel.smfcore.core.barcode.service.po.Barcode
;
import
com.neotel.smfcore.core.device.util.DataCache
;
import
com.neotel.smfcore.core.order.LiteOrderCache
;
import
com.neotel.smfcore.core.order.service.po.LiteOrder
;
import
com.neotel.smfcore.core.storage.rest.dto.CheckOutDto
;
import
com.neotel.smfcore.core.storage.service.manager.IStoragePosManager
;
import
com.neotel.smfcore.core.storage.service.po.Storage
;
...
...
@@ -31,6 +33,8 @@ public class LockMaterialController {
@Autowired
private
DataCache
dataCache
;
@Autowired
private
LiteOrderCache
liteOrderCache
;
@Autowired
private
final
IStoragePosManager
storagePosManager
;
@ApiOperation
(
value
=
"锁定物料:增加锁定"
)
@PutMapping
(
"/lock"
)
...
...
@@ -92,9 +96,16 @@ public class LockMaterialController {
log
.
info
(
"锁定物料:解除锁定时物料未锁定: 位置【"
+
pos
.
getPosName
()
+
"】条码【"
+
code
.
getBarcode
()+
"】"
);
continue
;
}
if
(!
code
.
getLockId
().
equals
(
lockId
)){
log
.
info
(
"锁定物料:解除锁定时物料被其他工单锁定: 位置【"
+
pos
.
getPosName
()
+
"】条码【"
+
code
.
getBarcode
()+
"】lockId=【"
+
code
.
getLockId
()+
"】"
);
continue
;
if
(!
code
.
getLockId
().
equals
(
lockId
))
{
//判断此工单是否关闭
LiteOrder
order
=
liteOrderCache
.
getLiteOrder
(
code
.
getLockId
());
if
(
order
==
null
||
order
.
isClosed
())
{
log
.
info
(
"锁定物料:解除锁定时物料被其他工单锁定: 位置【"
+
pos
.
getPosName
()
+
"】条码【"
+
code
.
getBarcode
()
+
"】lockId=【"
+
code
.
getLockId
()
+
"】,工单已结束,可解除锁定"
);
}
else
{
log
.
info
(
"锁定物料:解除锁定时物料被其他工单锁定: 位置【"
+
pos
.
getPosName
()
+
"】条码【"
+
code
.
getBarcode
()
+
"】lockId=【"
+
code
.
getLockId
()
+
"】,工单还未结束,暂不解除锁定"
);
continue
;
}
}
code
.
setLockId
(
null
);
code
.
setLockName
(
null
);
...
...
src/main/java/com/neotel/smfcore/custom/micron1053/task/MicronDispatchController.java
查看文件 @
77dd1c8
...
...
@@ -644,6 +644,7 @@ private IStoragePosManager storagePosManager;
log
.
info
(
"abort mode="
+
order
.
getMode
()
+
" 清空 key="
+
key
+
" 的cache"
);
dataCache
.
updateCache
(
key
,
""
);
}
liteOrderCache
.
clearOrderLock
(
order
);
}
@ApiOperation
(
"放弃出库"
)
...
...
src/main/java/com/neotel/smfcore/custom/micron1053/task/MicronPreTaskController.java
查看文件 @
77dd1c8
...
...
@@ -404,6 +404,8 @@ public class MicronPreTaskController {
String
key
=
Constants
.
CACHE_DISPATCH
+
order
.
getMode
();
log
.
info
(
" mode="
+
order
.
getMode
()+
"工单已关闭,清空 key="
+
key
+
" 的cache"
);
dataCache
.
updateCache
(
key
,
""
);
liteOrderCache
.
clearOrderLock
(
order
);
}
...
...
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论