Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
smf-core
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit f7ac70a5
由
zshaohui
编写于
2025-11-28 11:21:43 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
1.出库时,任务不存在的时候,清空库位,启用
2.工单出库,弹夹工单超过20分钟未完成,展示红色
1 个父辈
0d7168c6
隐藏空白字符变更
内嵌
并排
正在显示
8 个修改的文件
包含
80 行增加
和
13 行删除
src/main/java/com/neotel/smfcore/core/device/rest/DeviceController.java
src/main/java/com/neotel/smfcore/core/order/rest/OrderController.java
src/main/java/com/neotel/smfcore/core/order/rest/bean/dto/OrderDto.java
src/main/java/com/neotel/smfcore/core/storage/rest/StoragePosController.java
src/main/java/com/neotel/smfcore/core/system/rest/TaskController.java
src/main/java/com/neotel/smfcore/core/system/util/TaskService.java
src/main/java/com/neotel/smfcore/custom/advantech/AdvantechApi.java
src/main/java/com/neotel/smfcore/custom/lizhen/innerBox/rest/InnerBoxRestController.java
src/main/java/com/neotel/smfcore/core/device/rest/DeviceController.java
查看文件 @
f7ac70a
...
@@ -484,7 +484,7 @@ public class DeviceController {
...
@@ -484,7 +484,7 @@ public class DeviceController {
for
(
DataLog
task
:
tasks
)
{
for
(
DataLog
task
:
tasks
)
{
if
(
codeStr
.
contains
(
task
.
getBarcode
()))
{
if
(
codeStr
.
contains
(
task
.
getBarcode
()))
{
if
(
task
.
isPutInTask
())
{
if
(
task
.
isPutInTask
())
{
boolean
cancelResult
=
taskService
.
cancelTask
(
task
.
getId
());
boolean
cancelResult
=
taskService
.
cancelTask
(
task
.
getId
()
,
"客户端"
);
log
.
info
(
"客户端取消["
+
codeStr
+
"]的入库任务结果:"
+
cancelResult
);
log
.
info
(
"客户端取消["
+
codeStr
+
"]的入库任务结果:"
+
cancelResult
);
return
ResultBean
.
newOkResult
(
cancelResult
);
return
ResultBean
.
newOkResult
(
cancelResult
);
}
}
...
@@ -511,7 +511,7 @@ public class DeviceController {
...
@@ -511,7 +511,7 @@ public class DeviceController {
String
sourceId
=
task
.
getSourceId
();
String
sourceId
=
task
.
getSourceId
();
if
(
StringUtils
.
isNotEmpty
(
sourceId
)){
if
(
StringUtils
.
isNotEmpty
(
sourceId
)){
//未执行完成的,理论上不会从客户端取消
//未执行完成的,理论上不会从客户端取消
boolean
cancelResult
=
taskService
.
cancelTask
(
task
.
getId
());
boolean
cancelResult
=
taskService
.
cancelTask
(
task
.
getId
()
,
"客户端"
);
log
.
info
(
"客户端取消["
+
codeStr
+
"]的未执行完成的出库任务结果:"
+
cancelResult
);
log
.
info
(
"客户端取消["
+
codeStr
+
"]的未执行完成的出库任务结果:"
+
cancelResult
);
return
ResultBean
.
newOkResult
(
cancelResult
);
return
ResultBean
.
newOkResult
(
cancelResult
);
}
else
{
}
else
{
...
...
src/main/java/com/neotel/smfcore/core/order/rest/OrderController.java
查看文件 @
f7ac70a
...
@@ -313,6 +313,22 @@ public class OrderController {
...
@@ -313,6 +313,22 @@ public class OrderController {
String
s
=
DateUtil
.
convertToHMS
(
l
);
String
s
=
DateUtil
.
convertToHMS
(
l
);
orderDto
.
setTotalOutboundTime
(
s
);
orderDto
.
setTotalOutboundTime
(
s
);
}
}
//判断是否异常,展示红色
if
(
orderDto
.
isMaiZheng
())
{
if
(
endDate
!=
null
)
{
long
l
=
0
;
if
(
finishDate
==
null
)
{
l
=
System
.
currentTimeMillis
()
-
endDate
.
getTime
();
}
else
{
l
=
finishDate
.
getTime
()
-
endDate
.
getTime
();
}
if
(
l
>
1000
*
60
*
20
)
{
orderDto
.
setAbnormal
(
true
);
}
}
}
}
}
resultList
.
setContent
(
content
);
resultList
.
setContent
(
content
);
...
@@ -341,6 +357,21 @@ public class OrderController {
...
@@ -341,6 +357,21 @@ public class OrderController {
String
s
=
DateUtil
.
convertToHMS
(
l
);
String
s
=
DateUtil
.
convertToHMS
(
l
);
orderDto
.
setTotalOutboundTime
(
s
);
orderDto
.
setTotalOutboundTime
(
s
);
}
}
//判断是否异常,展示红色
if
(
orderDto
.
isMaiZheng
())
{
if
(
endDate
!=
null
)
{
long
l
=
0
;
if
(
finishDate
==
null
)
{
l
=
System
.
currentTimeMillis
()
-
endDate
.
getTime
();
}
else
{
l
=
finishDate
.
getTime
()
-
endDate
.
getTime
();
}
if
(
l
>
1000
*
60
*
20
)
{
orderDto
.
setAbnormal
(
true
);
}
}
}
}
}
resultList
.
setContent
(
content
);
resultList
.
setContent
(
content
);
...
...
src/main/java/com/neotel/smfcore/core/order/rest/bean/dto/OrderDto.java
查看文件 @
f7ac70a
...
@@ -119,4 +119,7 @@ public class OrderDto implements Serializable {
...
@@ -119,4 +119,7 @@ public class OrderDto implements Serializable {
@ApiModelProperty
(
"出库总用时"
)
@ApiModelProperty
(
"出库总用时"
)
private
String
totalOutboundTime
;
private
String
totalOutboundTime
;
@ApiModelProperty
(
"是否异常"
)
private
boolean
abnormal
=
false
;
}
}
src/main/java/com/neotel/smfcore/core/storage/rest/StoragePosController.java
查看文件 @
f7ac70a
...
@@ -424,8 +424,12 @@ public class StoragePosController {
...
@@ -424,8 +424,12 @@ public class StoragePosController {
log
.
info
(
SecurityUtils
.
getLoginUsername
()
+
"启用库位:"
+
posName
);
log
.
info
(
SecurityUtils
.
getLoginUsername
()
+
"启用库位:"
+
posName
);
storagePos
.
setEnabled
(
true
);
storagePos
.
setEnabled
(
true
);
storagePosManager
.
save
(
storagePos
);
storagePosManager
.
save
(
storagePos
);
Storage
storage
=
dataCache
.
getStorageById
(
storagePos
.
getStorageId
());
Storage
storage
=
dataCache
.
getStorageById
(
storagePos
.
getStorageId
());
dataCache
.
reloadStorage
(
storage
,
storage
.
getCid
());
dataCache
.
reloadStorage
(
storage
,
storage
.
getCid
());
//添加一条启用记录
DeviceMessageUtil
.
addEnabledPosMessage
(
storagePos
,
storage
.
getName
());
}
}
return
ResultBean
.
newOkResult
(
""
);
return
ResultBean
.
newOkResult
(
""
);
}
}
...
...
src/main/java/com/neotel/smfcore/core/system/rest/TaskController.java
查看文件 @
f7ac70a
...
@@ -230,7 +230,7 @@ public class TaskController {
...
@@ -230,7 +230,7 @@ public class TaskController {
if
(
task
.
isCancel
()||
task
.
isFinished
()||
task
.
isEnd
()){
if
(
task
.
isCancel
()||
task
.
isFinished
()||
task
.
isEnd
()){
throw
new
ValidateException
(
"smfcore.taskHasEnd"
,
"任务{0}已取消或已结束"
,
new
String
[]{
task
.
getPosName
()}
);
throw
new
ValidateException
(
"smfcore.taskHasEnd"
,
"任务{0}已取消或已结束"
,
new
String
[]{
task
.
getPosName
()}
);
}
}
taskService
.
cancelTask
(
taskId
);
taskService
.
cancelTask
(
taskId
,
"人工"
);
}
}
return
new
ResponseEntity
<>(
HttpStatus
.
OK
);
return
new
ResponseEntity
<>(
HttpStatus
.
OK
);
}
}
...
...
src/main/java/com/neotel/smfcore/core/system/util/TaskService.java
查看文件 @
f7ac70a
...
@@ -313,7 +313,7 @@ public class TaskService {
...
@@ -313,7 +313,7 @@ public class TaskService {
return
tasks
;
return
tasks
;
}
}
private
boolean
cancelTask
(
DataLog
task
)
{
private
boolean
cancelTask
(
DataLog
task
,
String
type
)
{
if
(
task
!=
null
)
{
if
(
task
!=
null
)
{
//同时进行库位屏蔽
//同时进行库位屏蔽
if
(
task
.
isExecuting
())
{
if
(
task
.
isExecuting
())
{
...
@@ -321,17 +321,17 @@ public class TaskService {
...
@@ -321,17 +321,17 @@ public class TaskService {
StoragePos
storagePos
=
storagePosManager
.
getByPosName
(
posName
);
StoragePos
storagePos
=
storagePosManager
.
getByPosName
(
posName
);
//如果是入库任务,直接屏蔽库位
//如果是入库任务,直接屏蔽库位
if
(
task
.
isPutInTask
())
{
if
(
task
.
isPutInTask
())
{
disablePos
(
task
.
getBarcode
(),
storagePos
);
disablePos
(
task
.
getBarcode
(),
storagePos
,
type
);
}
}
//如果是出库任务,判断当前任务的barcode和库位中的师傅一致
//如果是出库任务,判断当前任务的barcode和库位中的师傅一致
else
if
(
task
.
isCheckOutTask
())
{
else
if
(
task
.
isCheckOutTask
())
{
Barcode
barcode
=
storagePos
.
getBarcode
();
Barcode
barcode
=
storagePos
.
getBarcode
();
if
(
barcode
==
null
)
{
if
(
barcode
==
null
)
{
disablePos
(
task
.
getBarcode
(),
storagePos
);
disablePos
(
task
.
getBarcode
(),
storagePos
,
type
);
}
else
if
(
barcode
!=
null
&&
task
.
getBarcode
().
equals
(
barcode
.
getBarcode
()))
{
}
else
if
(
barcode
!=
null
&&
task
.
getBarcode
().
equals
(
barcode
.
getBarcode
()))
{
barcode
=
clearOut
(
barcode
);
barcode
=
clearOut
(
barcode
);
storagePos
.
setBarcode
(
barcode
);
storagePos
.
setBarcode
(
barcode
);
disablePos
(
task
.
getBarcode
(),
storagePos
);
disablePos
(
task
.
getBarcode
(),
storagePos
,
type
);
}
}
}
}
ReelLockPosUtil
.
removeReelLockPosInfo
(
task
.
getBarcode
());
ReelLockPosUtil
.
removeReelLockPosInfo
(
task
.
getBarcode
());
...
@@ -340,6 +340,7 @@ public class TaskService {
...
@@ -340,6 +340,7 @@ public class TaskService {
removeQueueTask
(
task
);
removeQueueTask
(
task
);
task
.
setStatus
(
OP_STATUS
.
CANCEL
.
name
());
task
.
setStatus
(
OP_STATUS
.
CANCEL
.
name
());
task
.
setUpdateDate
(
new
Date
());
task
.
setUpdateDate
(
new
Date
());
task
.
setOperator
(
SecurityUtils
.
getLoginUsername
()+
"-取消"
);
updateFinishedTask
(
task
);
updateFinishedTask
(
task
);
log
.
info
(
"任务["
+
task
.
getId
()
+
"] posName["
+
task
.
getPosName
()
+
"] Reel Id["
+
task
.
getBarcode
()
+
"]取消成功"
);
log
.
info
(
"任务["
+
task
.
getId
()
+
"] posName["
+
task
.
getPosName
()
+
"] Reel Id["
+
task
.
getBarcode
()
+
"]取消成功"
);
return
true
;
return
true
;
...
@@ -347,18 +348,18 @@ public class TaskService {
...
@@ -347,18 +348,18 @@ public class TaskService {
return
false
;
return
false
;
}
}
private
void
disablePos
(
String
barcode
,
StoragePos
storagePos
)
{
private
void
disablePos
(
String
barcode
,
StoragePos
storagePos
,
String
type
)
{
storagePos
.
setEnabled
(
false
);
storagePos
.
setEnabled
(
false
);
storagePos
.
setMsg
(
"任务取消,屏蔽库位"
);
storagePos
.
setMsg
(
type
+
"任务取消,屏蔽库位"
);
storagePosManager
.
save
(
storagePos
);
storagePosManager
.
save
(
storagePos
);
log
.
info
(
"任务取消,屏蔽库位:库位号["
+
storagePos
.
getId
()
+
"]["
+
storagePos
.
getPosName
()
+
"]barcode["
+
barcode
+
"]"
);
log
.
info
(
type
+
"任务取消,屏蔽库位:库位号["
+
storagePos
.
getId
()
+
"]["
+
storagePos
.
getPosName
()
+
"]barcode["
+
barcode
+
"]"
);
DeviceMessageUtil
.
addEnabledPosMessage
(
storagePos
,
SecurityUtils
.
getLoginUsername
());
DeviceMessageUtil
.
addEnabledPosMessage
(
storagePos
,
SecurityUtils
.
getLoginUsername
());
}
}
public
boolean
cancelTask
(
String
taskId
)
{
public
boolean
cancelTask
(
String
taskId
,
String
type
)
{
DataLog
task
=
dataLogDao
.
findOneById
(
taskId
);
DataLog
task
=
dataLogDao
.
findOneById
(
taskId
);
return
cancelTask
(
task
);
return
cancelTask
(
task
,
type
);
}
}
/**
/**
...
...
src/main/java/com/neotel/smfcore/custom/advantech/AdvantechApi.java
查看文件 @
f7ac70a
...
@@ -228,7 +228,7 @@ public class AdvantechApi extends BaseSmfApiListener {
...
@@ -228,7 +228,7 @@ public class AdvantechApi extends BaseSmfApiListener {
//如果返回失败,取消任务
//如果返回失败,取消任务
boolean
success
=
isOutTaskSuccess
(
result
,
task
.
getBarcode
());
boolean
success
=
isOutTaskSuccess
(
result
,
task
.
getBarcode
());
if
(!
success
)
{
if
(!
success
)
{
taskService
.
cancelTask
(
task
.
getId
());
taskService
.
cancelTask
(
task
.
getId
()
,
""
);
}
else
{
}
else
{
//如果返回成功,把singleOut改为true
//如果返回成功,把singleOut改为true
if
(
ObjectUtils
.
isNotEmpty
(
task
.
getSourceName
()))
{
if
(
ObjectUtils
.
isNotEmpty
(
task
.
getSourceName
()))
{
...
...
src/main/java/com/neotel/smfcore/custom/lizhen/innerBox/rest/InnerBoxRestController.java
查看文件 @
f7ac70a
...
@@ -14,6 +14,7 @@ import com.neotel.smfcore.core.barcode.utils.CodeResolve;
...
@@ -14,6 +14,7 @@ import com.neotel.smfcore.core.barcode.utils.CodeResolve;
import
com.neotel.smfcore.core.device.enums.OP
;
import
com.neotel.smfcore.core.device.enums.OP
;
import
com.neotel.smfcore.core.device.enums.OP_STATUS
;
import
com.neotel.smfcore.core.device.enums.OP_STATUS
;
import
com.neotel.smfcore.core.device.util.DataCache
;
import
com.neotel.smfcore.core.device.util.DataCache
;
import
com.neotel.smfcore.core.message.util.DeviceMessageUtil
;
import
com.neotel.smfcore.core.order.LiteOrderCache
;
import
com.neotel.smfcore.core.order.LiteOrderCache
;
import
com.neotel.smfcore.core.order.service.manager.ILiteOrderItemManager
;
import
com.neotel.smfcore.core.order.service.manager.ILiteOrderItemManager
;
import
com.neotel.smfcore.core.order.service.manager.ILiteOrderManager
;
import
com.neotel.smfcore.core.order.service.manager.ILiteOrderManager
;
...
@@ -122,6 +123,33 @@ public class InnerBoxRestController {
...
@@ -122,6 +123,33 @@ public class InnerBoxRestController {
}
}
}
}
}
}
//如果任务不存在,则把库位信息给清空,库位解除禁用
if
(
opTask
==
null
)
{
StoragePos
pos
=
storagePosManager
.
getByBarcode
(
barcode
.
getBarcode
());
if
(
pos
!=
null
)
{
barcode
=
pos
.
getBarcode
();
if
(!
pos
.
isEnabled
()){
pos
.
setEnabled
(
true
);
}
pos
.
setBarcode
(
null
);
pos
.
setUsed
(
false
);
storagePosManager
.
save
(
pos
);
barcode
.
setPosName
(
""
);
barcode
.
setUsed
(
true
);
barcode
.
setUsedDate
(
new
Date
());
barcode
.
setCheckOutDate
(
new
Date
(),
""
);
barcode
.
setPosName
(
""
);
barcodeManager
.
save
(
barcode
);
dataCache
.
updateInventory
(
pos
,
barcode
);
Storage
storage
=
dataCache
.
getStorageById
(
pos
.
getStorageId
());
dataCache
.
reloadStorage
(
storage
,
storage
.
getCid
());
//添加一条message
DeviceMessageUtil
.
addEnabledPosMessage
(
pos
,
"启用库位,清空库存"
);
}
}
if
(
opTask
==
null
)
{
if
(
opTask
==
null
)
{
return
ResultBean
.
newErrorResult
(
303
,
"smfcore.task.notExist"
,
"任务不存在"
);
return
ResultBean
.
newErrorResult
(
303
,
"smfcore.task.notExist"
,
"任务不存在"
);
}
}
...
...
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论