Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
smf-core
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit e8ed6c32
由
sunke
编写于
2022-11-17 20:05:34 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
增加料仓工单任务数量查询接口,用于设备放料串时不同工单放到不同料串上
刚入库物料出库时无法触发End状态修复 获取库存接口异常处理 天通908接口调试
1 个父辈
4a1baf9a
隐藏空白字符变更
内嵌
并排
正在显示
8 个修改的文件
包含
115 行增加
和
69 行删除
src/main/java/com/neotel/smfcore/core/device/handler/impl/BaseDeviceHandler.java
src/main/java/com/neotel/smfcore/core/device/handler/impl/SpBoxHandler.java
src/main/java/com/neotel/smfcore/core/device/rest/DeviceController.java
src/main/java/com/neotel/smfcore/core/order/service/po/LiteOrder.java
src/main/java/com/neotel/smfcore/core/storage/service/manager/impl/StoragePosManagerImpl.java
src/main/java/com/neotel/smfcore/core/system/util/TaskService.java
src/main/java/com/neotel/smfcore/custom/neotel/NeotelController.java
src/main/java/com/neotel/smfcore/custom/tiantong/TianTongController.java
src/main/java/com/neotel/smfcore/core/device/handler/impl/BaseDeviceHandler.java
查看文件 @
e8ed6c3
...
...
@@ -402,7 +402,7 @@ public class BaseDeviceHandler implements IDeviceHandler {
}
else
if
(
BOX_STATUS
.
OUT_FINISHED
==
status
)
{
//出仓完成
finishedOutPos
(
statusBean
.
getCid
(),
posName
,
executeTime
);
}
else
if
(
BOX_STATUS
.
OUT_END
==
status
)
{
//出库完成(放到仓门口
endTask
(
statusBean
.
getCid
(),
posName
);
end
Out
Task
(
statusBean
.
getCid
(),
posName
);
}
// else if (BOX_STATUS.REWARM_TAKING_END == status) {
// //回温取料完成, 将库位清空
...
...
@@ -497,7 +497,7 @@ public class BaseDeviceHandler implements IDeviceHandler {
}
log
.
info
(
task
.
getBarcode
()
+
"入仓位["
+
task
.
getPosName
()
+
"]完成,执行时间["
+
executeTime
+
"]秒"
);
ReelLockPosUtil
.
removeReelLockPosInfo
(
task
.
getBarcode
());
DataLog
cancelTask
=
taskService
.
findFinishedTask
(
cid
,
posName
);
DataLog
cancelTask
=
taskService
.
findFinished
PutIn
Task
(
cid
,
posName
);
if
(
cancelTask
!=
null
&&
cancelTask
.
isCancel
())
{
//将相同库位已经取消的任务从完成队列里删除
taskService
.
removeFinishedTask
(
cancelTask
);
...
...
@@ -506,7 +506,7 @@ public class BaseDeviceHandler implements IDeviceHandler {
updatePutInData
(
task
);
}
else
{
//从已完成列表中找,如果还找不到就忽略
task
=
taskService
.
findFinishedTask
(
cid
,
posName
);
task
=
taskService
.
findFinished
PutIn
Task
(
cid
,
posName
);
if
(
task
!=
null
&&
task
.
isPutInTask
())
{
if
(
task
.
isCancel
())
{
//被取消的任务,客户端发完成信号过来,修改取消状态为已完成
if
(
executeTime
>
0
){
...
...
@@ -527,8 +527,9 @@ public class BaseDeviceHandler implements IDeviceHandler {
finishedOutPos
(
cid
,
posName
,-
1
);
}
protected
void
endTask
(
String
cid
,
String
posName
){
DataLog
task
=
taskService
.
findFinishedTask
(
cid
,
posName
);
protected
void
endOutTask
(
String
cid
,
String
posName
){
log
.
info
(
cid
+
"将物料从库位["
+
posName
+
"]出库到门口/料串完成"
);
DataLog
task
=
taskService
.
findFinishedOutTask
(
cid
,
posName
);
if
(
task
!=
null
){
task
.
setStatus
(
OP_STATUS
.
END
.
name
());
taskService
.
updateFinishedTask
(
task
);
...
...
@@ -548,7 +549,7 @@ public class BaseDeviceHandler implements IDeviceHandler {
task
.
setExecuteTime
(
executeTime
);
}
log
.
info
(
task
.
getBarcode
()
+
"出仓位["
+
task
.
getPosName
()
+
"]完成,执行时间["
+
executeTime
+
"]秒"
);
DataLog
cancelTask
=
taskService
.
findFinishedTask
(
cid
,
posName
);
DataLog
cancelTask
=
taskService
.
findFinished
Out
Task
(
cid
,
posName
);
if
(
cancelTask
!=
null
&&
cancelTask
.
isCancel
())
{
//将相同库位已经取消的任务从完成队列里删除
taskService
.
removeFinishedTask
(
cancelTask
);
...
...
@@ -558,7 +559,7 @@ public class BaseDeviceHandler implements IDeviceHandler {
}
else
{
//log.error(operationKey + "触发仓位完成时,操作队列中不存在");
//从已完成列表中找,如果还找不到就忽略
task
=
taskService
.
findFinishedTask
(
cid
,
posName
);
task
=
taskService
.
findFinished
Out
Task
(
cid
,
posName
);
if
(
task
!=
null
&&
task
.
isCheckOutTask
())
{
if
(
task
.
isCancel
())
{
//被取消的任务,客户端发完成信号过来,修改取消状态为已完成
if
(
executeTime
>
0
)
{
...
...
@@ -844,9 +845,9 @@ public class BaseDeviceHandler implements IDeviceHandler {
if
(
dataLog
.
getStatus
().
equals
(
OP_STATUS
.
WAIT
))
{
if
((
ObjectUtil
.
isNotEmpty
(
item
.
getPn
())
&&
item
.
getPn
().
equals
(
dataLog
.
getPartNumber
()))
||
(
ObjectUtil
.
isNotEmpty
(
item
.
getRi
())
&&
item
.
getRi
().
equals
(
dataLog
.
getBarcode
()))
)
)
{
dataLog
.
setStatus
(
OP_STATUS
.
EXECUTING
.
name
());
}
taskService
.
updateQueueTask
(
dataLog
);
log
.
info
(
"ACCSHELF: sourceId="
+
sourceId
+
"的工单["
+
order
.
getOrderNo
()
+
"]开始执行任务:["
+
dataLog
.
getPosName
()
+
"]["
+
dataLog
.
getPartNumber
()
+
"]["
+
dataLog
.
getBarcode
()
+
"]"
);
...
...
src/main/java/com/neotel/smfcore/core/device/handler/impl/SpBoxHandler.java
查看文件 @
e8ed6c3
...
...
@@ -296,7 +296,7 @@ public class SpBoxHandler extends BaseDeviceHandler {
DataLog
takingTask
=
taskService
.
findExecutingTask
(
statusBean
.
getCid
(),
boxStatus
.
getPosId
());
if
(
takingTask
==
null
)
{
//从已完成列表中找,如果还找不到就忽略
takingTask
=
taskService
.
findFinishedTask
(
statusBean
.
getCid
(),
boxStatus
.
getPosId
());
takingTask
=
taskService
.
findFinished
Out
Task
(
statusBean
.
getCid
(),
boxStatus
.
getPosId
());
}
if
(
takingTask
!=
null
)
{
if
(
takingTask
.
isCancel
())
{
//被取消的任务,客户端发完成信号过来,修改取消状态为已完成
...
...
@@ -331,7 +331,7 @@ public class SpBoxHandler extends BaseDeviceHandler {
DataLog
puttingTask
=
taskService
.
findExecutingTask
(
statusBean
.
getCid
(),
boxStatus
.
getPosId
());
if
(
puttingTask
==
null
)
{
//从已完成列表中找,如果还找不到就忽略
puttingTask
=
taskService
.
findFinishedTask
(
statusBean
.
getCid
(),
boxStatus
.
getPosId
());
puttingTask
=
taskService
.
findFinished
Out
Task
(
statusBean
.
getCid
(),
boxStatus
.
getPosId
());
}
if
(
puttingTask
!=
null
)
{
if
(
puttingTask
.
isCancel
())
{
//被取消的任务,客户端发完成信号过来,修改取消状态为已完成
...
...
src/main/java/com/neotel/smfcore/core/device/rest/DeviceController.java
查看文件 @
e8ed6c3
...
...
@@ -502,4 +502,34 @@ public class DeviceController {
return
null
;
}
@ApiOperation
(
"客户端获取料仓是否还有未完成的工单出库任务"
)
@RequestMapping
(
value
=
"/service/store/outTaskCount"
)
@ResponseBody
@AnonymousAccess
public
Integer
outTaskCount
(
HttpServletRequest
request
)
{
String
cid
=
request
.
getParameter
(
"cid"
);
String
hSerial
=
request
.
getParameter
(
"hSerial"
);
int
outTaskCount
=
0
;
if
(!
Strings
.
isNullOrEmpty
(
cid
)){
Collection
<
DataLog
>
queueTasks
=
taskService
.
getQueueTasks
(
cid
);
if
(!
Strings
.
isNullOrEmpty
(
hSerial
)){
for
(
DataLog
queueTask
:
queueTasks
)
{
if
(
queueTask
.
isCheckOutTask
()){
if
(
queueTask
.
getSourceName
().
equals
(
hSerial
)){
//单号相同任务数量+1
outTaskCount
=
outTaskCount
+
1
;
}
}
}
}
else
{
for
(
DataLog
queueTask
:
queueTasks
)
{
if
(
queueTask
.
isCheckOutTask
())
{
outTaskCount
=
outTaskCount
+
1
;
}
}
}
}
return
outTaskCount
;
}
}
src/main/java/com/neotel/smfcore/core/order/service/po/LiteOrder.java
查看文件 @
e8ed6c3
...
...
@@ -139,12 +139,14 @@ public class LiteOrder extends BasePo implements Serializable {
* 任务料盘是否已出完
*/
public
boolean
isTaskFinished
(){
return
status
==
LITEORDER_STATUS
.
BOM_FINISHED
||
status
==
LITEORDER_STATUS
.
TAILS_FINISHED
||
status
==
LITEORDER_STATUS
.
ONE_FINISHED
;
return
status
==
LITEORDER_STATUS
.
BOM_FINISHED
||
status
==
LITEORDER_STATUS
.
TAILS_FINISHED
||
status
==
LITEORDER_STATUS
.
ONE_FINISHED
||
status
==
LITEORDER_STATUS
.
CLOSED
;
}
public
void
setTaskReelCount
(
int
taskReelCount
)
{
if
(
taskReelCount
<
0
)
taskReelCount
=
0
;
if
(
taskReelCount
<
0
)
{
taskReelCount
=
0
;
}
this
.
taskReelCount
=
taskReelCount
;
}
...
...
src/main/java/com/neotel/smfcore/core/storage/service/manager/impl/StoragePosManagerImpl.java
查看文件 @
e8ed6c3
...
...
@@ -585,7 +585,7 @@ public class StoragePosManagerImpl implements IStoragePosManager {
//构造查询条件
Query
query
=
new
Query
();
Criteria
criteria
=
Criteria
.
where
(
"barcode"
).
exists
(
true
);
if
(
storageIds
!=
null
&&
storageIds
.
isEmpty
()){
if
(
storageIds
!=
null
&&
!
storageIds
.
isEmpty
()){
criteria
.
and
(
"storageId"
).
in
(
storageIds
);
}
if
(
reelIds
!=
null
&&
!
reelIds
.
isEmpty
()){
...
...
src/main/java/com/neotel/smfcore/core/system/util/TaskService.java
查看文件 @
e8ed6c3
...
...
@@ -284,6 +284,12 @@ public class TaskService {
return
resultTasks
;
}
public
DataLog
findFinishedPutInTask
(
String
cid
,
String
posName
){
return
findFinishedTask
(
cid
,
posName
,
true
);
}
public
DataLog
findFinishedOutTask
(
String
cid
,
String
posName
){
return
findFinishedTask
(
cid
,
posName
,
false
);
}
/**
* 根据料仓编号和库位获取已完成/取消的任务
*
...
...
@@ -291,11 +297,19 @@ public class TaskService {
* @param posName
* @return
*/
p
ublic
DataLog
findFinishedTask
(
String
cid
,
String
posName
)
{
p
rivate
DataLog
findFinishedTask
(
String
cid
,
String
posName
,
boolean
putInTask
)
{
Collection
<
DataLog
>
areaFinishedTasks
=
getFinishedTasks
();
for
(
DataLog
task
:
areaFinishedTasks
)
{
if
(
task
.
getPosName
().
equals
(
posName
)
&&
task
.
getCid
().
equals
(
cid
))
{
return
task
;
if
(
putInTask
){
if
(
task
.
isPutInTask
()){
return
task
;
}
}
else
{
if
(
task
.
isCheckOutTask
()){
return
task
;
}
}
}
}
return
null
;
...
...
@@ -429,6 +443,7 @@ public class TaskService {
}
else
{
log
.
warn
(
"出库无料仓位"
+
storage
.
getName
()
+
"["
+
posName
+
"]"
);
}
statusBean
.
addData
(
"hSerial"
,
task
.
getSourceName
());
statusBean
.
addPosInfo
(
task
.
getBarcode
(),
posName
,
plateW
,
plateH
,
isSingleOut
);
log
.
info
(
"出库"
+
storage
.
getName
()
+
"["
+
posName
+
"]物料["
+
task
.
getBarcode
()
+
"]"
+
isSingleOut
+
"发送到客户端"
+
cid
);
}
...
...
src/main/java/com/neotel/smfcore/custom/neotel/NeotelController.java
查看文件 @
e8ed6c3
...
...
@@ -194,6 +194,9 @@ public class NeotelController {
List
<
Map
<
String
,
Object
>>
results
=
Lists
.
newArrayList
();
for
(
Storage
storage
:
storageList
)
{
StatusBean
statusBean
=
DevicesStatusUtil
.
getStatusBean
(
storage
.
getCid
());
if
(
statusBean
==
null
){
statusBean
=
new
StatusBean
();
}
Map
<
String
,
BoxStatusBean
>
boxStatusMap
=
statusBean
.
getBoxStatus
();
int
status
=
-
1
;
if
(
boxStatusMap
!=
null
)
{
...
...
src/main/java/com/neotel/smfcore/custom/tiantong/TianTongController.java
查看文件 @
e8ed6c3
...
...
@@ -44,9 +44,6 @@ public class TianTongController {
protected
LiteOrderCache
liteOrderCache
;
@Autowired
private
DataCache
dataCache
;
@Autowired
private
IStoragePosManager
storagePosManager
;
@Autowired
...
...
@@ -56,9 +53,9 @@ public class TianTongController {
@ApiOperation
(
"创建需求单"
)
@RequestMapping
(
"/outInfo"
)
@AnonymousAccess
public
ResultBean
outInfo
(
@RequestBody
List
<
Map
<
String
,
Object
>>
paramList
)
{
log
.
info
(
"{}收到数据为:{}"
,
"创建需求单outInfo"
,
JsonUtil
.
toJsonStr
(
param
List
));
if
(!
param
List
.
isEmpty
())
{
public
ResultBean
outInfo
(
@RequestBody
Map
<
String
,
Object
>
paramMap
)
{
log
.
info
(
"{}收到数据为:{}"
,
"创建需求单outInfo"
,
JsonUtil
.
toJsonStr
(
param
Map
));
if
(!
param
Map
.
isEmpty
())
{
/**
* {
* "TASK_ID":""
...
...
@@ -83,58 +80,56 @@ public class TianTongController {
* }
* }
*/
for
(
Map
<
String
,
Object
>
paramMap
:
paramList
)
{
if
(
paramMap
.
get
(
"TASK_ID"
)
==
null
)
{
return
ResultBean
.
newErrorResult
(
1
,
"smfcore.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"TASK_ID"
});
}
if
(
paramMap
.
get
(
"TASK_DT"
)
==
null
)
{
return
ResultBean
.
newErrorResult
(
1
,
"smfcore.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"TASK_DT"
});
}
String
orderNo
=
paramMap
.
get
(
"TASK_ID"
).
toString
();
//需求单号
LiteOrder
order
=
liteOrderManager
.
findByOrderNo
(
orderNo
);
if
(
order
!=
null
){
return
ResultBean
.
newErrorResult
(
101
,
"smfcore.liteOrder.exist"
,
"需求单{0}已存在"
,
new
String
[]{
orderNo
});
}
if
(
paramMap
.
get
(
"TASK_ID"
)
==
null
)
{
return
ResultBean
.
newErrorResult
(
1
,
"smfcore.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"TASK_ID"
});
}
if
(
paramMap
.
get
(
"TASK_DT"
)
==
null
)
{
return
ResultBean
.
newErrorResult
(
1
,
"smfcore.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"TASK_DT"
});
}
String
orderNo
=
paramMap
.
get
(
"TASK_ID"
).
toString
();
//需求单号
LiteOrder
order
=
liteOrderManager
.
findByOrderNo
(
orderNo
);
if
(
order
!=
null
){
return
ResultBean
.
newErrorResult
(
101
,
"smfcore.liteOrder.exist"
,
"需求单{0}已存在"
,
new
String
[]{
orderNo
});
}
boolean
execute
=
false
;
if
(
paramMap
.
get
(
"execute"
)
!=
null
)
{
execute
=
Boolean
.
valueOf
(
paramMap
.
get
(
"execute"
).
toString
());
}
boolean
execute
=
false
;
if
(
paramMap
.
get
(
"execute"
)
!=
null
)
{
execute
=
Boolean
.
valueOf
(
paramMap
.
get
(
"execute"
).
toString
());
}
String
source
=
paramMap
.
get
(
"TASK_TYPE"
)
==
null
?
""
:
paramMap
.
get
(
"TASK_TYPE"
).
toString
();
String
so
=
paramMap
.
get
(
"REF_TRX_CODE"
)
==
null
?
""
:
paramMap
.
get
(
"REF_TRX_CODE"
).
toString
();
//工单号
//需求单详情数据
List
<
LiteOrderItem
>
orderItemList
=
new
ArrayList
<>();
List
<
Map
>
outItemList
=
JsonUtil
.
toList
(
paramMap
.
get
(
"TASK_DT"
).
toString
(),
Map
.
class
);
if
(!
outItemList
.
isEmpty
())
{
for
(
Map
outItem
:
outItemList
)
{
LiteOrderItem
orderItem
=
new
LiteOrderItem
();
if
(
outItem
.
get
(
"RID"
)
!=
null
)
{
String
reelId
=
outItem
.
get
(
"RID"
).
toString
();
orderItem
.
setRi
(
reelId
);
//料盘唯一码
}
String
source
=
paramMap
.
get
(
"TASK_TYPE"
)
==
null
?
""
:
paramMap
.
get
(
"TASK_TYPE"
).
toString
();
String
so
=
paramMap
.
get
(
"REF_TRX_CODE"
)
==
null
?
""
:
paramMap
.
get
(
"REF_TRX_CODE"
).
toString
();
//工单号
//需求单详情数据
List
<
LiteOrderItem
>
orderItemList
=
new
ArrayList
<>();
List
<
Map
>
outItemList
=
JsonUtil
.
toList
(
paramMap
.
get
(
"TASK_DT"
).
toString
(),
Map
.
class
);
if
(!
outItemList
.
isEmpty
())
{
for
(
Map
outItem
:
outItemList
)
{
LiteOrderItem
orderItem
=
new
LiteOrderItem
();
if
(
outItem
.
get
(
"RID"
)
!=
null
)
{
String
reelId
=
outItem
.
get
(
"RID"
).
toString
();
orderItem
.
setRi
(
reelId
);
//料盘唯一码
}
if
(
outItem
.
get
(
"R_QTY"
)
!=
null
)
{
orderItem
.
setNeedNum
(
Integer
.
valueOf
(
outItem
.
get
(
"R_QTY"
).
toString
()));
}
orderItemList
.
add
(
orderItem
);
if
(
outItem
.
get
(
"R_QTY"
)
!=
null
)
{
orderItem
.
setNeedNum
(
Integer
.
valueOf
(
outItem
.
get
(
"R_QTY"
).
toString
()));
}
orderItemList
.
add
(
orderItem
);
}
boolean
singleOut
=
false
;
if
(
paramMap
.
get
(
"singleOut"
)
!=
null
)
{
singleOut
=
Boolean
.
valueOf
(
paramMap
.
get
(
"singleOut"
).
toString
());
}
//开始保存数据
LiteOrder
liteOrder
=
new
LiteOrder
();
liteOrder
.
setOrderNo
(
orderNo
);
liteOrder
.
setSource
(
source
);
liteOrder
.
setSo
(
so
);
liteOrder
.
setOrderItems
(
orderItemList
);
liteOrder
=
liteOrderManager
.
createWithItems
(
liteOrder
);
liteOrderCache
.
addOrderToMap
(
liteOrder
);
if
(
execute
){
liteOrderCache
.
checkOutLiteOrder
(
liteOrder
.
getOrderNo
(),
false
,
singleOut
);
}
}
boolean
singleOut
=
false
;
if
(
paramMap
.
get
(
"singleOut"
)
!=
null
)
{
singleOut
=
Boolean
.
valueOf
(
paramMap
.
get
(
"singleOut"
).
toString
());
}
//开始保存数据
LiteOrder
liteOrder
=
new
LiteOrder
(
);
liteOrder
.
setOrderNo
(
orderNo
);
liteOrder
.
setSource
(
source
);
liteOrder
.
setSo
(
so
);
liteOrder
.
setOrderItems
(
orderItemList
);
liteOrder
=
liteOrderManager
.
createWithItems
(
liteOrder
);
liteOrderCache
.
addOrderToMap
(
liteOrder
);
if
(
execute
){
liteOrderCache
.
checkOutLiteOrder
(
liteOrder
.
getOrderNo
(),
false
,
singleOut
);
}
return
ResultBean
.
newOkResult
(
""
);
}
...
...
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论