Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
smf-core
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit 467beb71
由
zshaohui
编写于
2024-08-02 20:40:31 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
料箱移转提交
1 个父辈
38026629
隐藏空白字符变更
内嵌
并排
正在显示
3 个修改的文件
包含
232 行增加
和
4 行删除
src/main/java/com/neotel/smfcore/custom/luxsan/factory_c/rawstor/controller/TicketController.java
src/main/java/com/neotel/smfcore/custom/luxsan/factory_c/wipstor/controller/AgvDeviceController.java
src/main/java/com/neotel/smfcore/custom/luxsan/factory_c/wipstor/controller/BoxTransferController.java
src/main/java/com/neotel/smfcore/custom/luxsan/factory_c/rawstor/controller/TicketController.java
查看文件 @
467beb7
...
...
@@ -90,7 +90,11 @@ public class TicketController {
@ApiOperation
(
"单据领料"
)
@RequestMapping
(
"/checkOut"
)
//@AnonymousAccess
public
synchronized
ResultBean
checkOut
(
String
ticket
)
{
public
synchronized
ResultBean
checkOut
(
String
ticket
,
Boolean
sorting
)
{
if
(
sorting
==
null
){
sorting
=
false
;
}
String
resultStr
=
liteOrderCache
.
hasExecutingOrder
();
if
(
StringUtils
.
isNotEmpty
(
resultStr
))
{
...
...
@@ -122,8 +126,6 @@ public class TicketController {
String
result
=
""
;
boolean
sorting
=
false
;
if
(
sorting
)
{
log
.
info
(
ticket
+
"是SortIng出库:"
+
sorting
);
result
=
liteOrderCache
.
ticketOutBySorting
(
ticket
);
...
...
src/main/java/com/neotel/smfcore/custom/luxsan/factory_c/wipstor/controller/AgvDeviceController.java
查看文件 @
467beb7
...
...
@@ -212,7 +212,7 @@ public class AgvDeviceController {
barcode
.
setUsedDate
(
new
Date
());
//仓位状态
barcode
.
setCheckOutDate
(
new
Date
(),
""
);
//
barcode.setPosName("");
barcode
.
setPosName
(
""
);
barcode
.
setOrderItemId
(
""
);
barcode
.
setOrderId
(
""
);
barcode
.
setLockName
(
""
);
...
...
src/main/java/com/neotel/smfcore/custom/luxsan/factory_c/wipstor/controller/BoxTransferController.java
0 → 100644
查看文件 @
467beb7
package
com
.
neotel
.
smfcore
.
custom
.
luxsan
.
factory_c
.
wipstor
.
controller
;
import
com.google.common.collect.Lists
;
import
com.neotel.smfcore.common.bean.ResultBean
;
import
com.neotel.smfcore.common.utils.ReelLockPosUtil
;
import
com.neotel.smfcore.common.utils.SecurityUtils
;
import
com.neotel.smfcore.common.utils.StringUtils
;
import
com.neotel.smfcore.core.barcode.service.manager.IBarcodeManager
;
import
com.neotel.smfcore.core.barcode.service.po.Barcode
;
import
com.neotel.smfcore.core.device.enums.OP
;
import
com.neotel.smfcore.core.device.enums.OP_STATUS
;
import
com.neotel.smfcore.core.device.util.DataCache
;
import
com.neotel.smfcore.core.storage.service.manager.IStoragePosManager
;
import
com.neotel.smfcore.core.storage.service.po.Storage
;
import
com.neotel.smfcore.core.storage.service.po.StoragePos
;
import
com.neotel.smfcore.core.system.service.manager.IDataLogManager
;
import
com.neotel.smfcore.core.system.service.po.DataLog
;
import
com.neotel.smfcore.core.system.util.TaskService
;
import
com.neotel.smfcore.custom.luxsan.api.LuxsanApi
;
import
com.neotel.smfcore.custom.luxsan.api.bean.request.PalletUpdateRequest
;
import
com.neotel.smfcore.custom.luxsan.api.bean.request.TicketPickPostData
;
import
com.neotel.smfcore.custom.luxsan.api.bean.request.TicketPickPostRequest
;
import
com.neotel.smfcore.custom.luxsan.factory_c.common.util.CommonUtil
;
import
com.neotel.smfcore.custom.luxsan.factory_c.rawstor.enums.LiteorderCheckType
;
import
com.neotel.smfcore.security.annotation.AnonymousAccess
;
import
io.swagger.annotations.ApiOperation
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
java.util.Arrays
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.Map
;
@Slf4j
@RestController
@RequestMapping
(
"/boxTrans"
)
public
class
BoxTransferController
{
@Autowired
private
IStoragePosManager
storagePosManager
;
@Autowired
private
TaskService
taskService
;
@Autowired
private
DataCache
dataCache
;
@Autowired
private
IBarcodeManager
barcodeManager
;
@Autowired
private
IDataLogManager
dataLogManager
;
@ApiOperation
(
"料箱从一个库位移到另外一个库位"
)
@RequestMapping
(
"/boxToOtherPos"
)
@AnonymousAccess
public
ResultBean
boxToOtherPos
(
String
boxStr
,
String
newPosNameStr
){
log
.
info
(
"料箱"
+
boxStr
+
"从一个库位移到另外一个库位:"
+
newPosNameStr
);
if
(
StringUtils
.
isEmpty
(
boxStr
)){
return
ResultBean
.
newErrorResult
(-
1
,
""
,
"料箱不能为空"
);
}
if
(
StringUtils
.
isEmpty
(
newPosNameStr
)){
return
ResultBean
.
newErrorResult
(-
1
,
""
,
"库位不能为空"
);
}
StoragePos
pos
=
storagePosManager
.
getByBarcode
(
boxStr
);
if
(
pos
==
null
){
return
ResultBean
.
newErrorResult
(-
1
,
""
,
boxStr
+
"不在库位中"
);
}
//判断新库位中是否有物料
StoragePos
newPos
=
storagePosManager
.
getByPosName
(
newPosNameStr
);
if
(
newPos
==
null
){
return
ResultBean
.
newErrorResult
(-
1
,
""
,
"库位中不存在:"
+
newPosNameStr
);
}
//判断库别是否相同
if
(
StringUtils
.
isEmpty
(
newPos
.
getWareHouseCode
())){
return
ResultBean
.
newErrorResult
(-
1
,
""
,
newPosNameStr
+
"没有设置库别"
);
}
if
(!
newPos
.
getWareHouseCode
().
equals
(
pos
.
getWareHouseCode
())){
return
ResultBean
.
newErrorResult
(-
1
,
""
,
newPosNameStr
+
"的库别:"
+
newPos
.
getWareHouseCode
()+
"与料箱所在的库位:"
+
pos
.
getPosName
()+
"的库别:"
+
pos
.
getWareHouseCode
()+
"不一致"
);
}
Barcode
barcode
=
pos
.
getBarcode
();
List
<
DataLog
>
allTasks
=
taskService
.
getAllTasks
();
for
(
DataLog
dataLog
:
allTasks
)
{
if
(
newPos
.
getPosName
().
equals
(
dataLog
.
getPosName
())){
return
ResultBean
.
newErrorResult
(-
1
,
""
,
newPosNameStr
+
"有正在执行的任务,请确认"
);
}
}
//判断当前料箱是否有任务
Storage
storage
=
dataCache
.
getStorageById
(
pos
.
getStorageId
());
DataLog
dataLog
=
new
DataLog
(
storage
,
barcode
,
pos
);
dataLog
.
setType
(
OP
.
CHECKOUT
);
dataLog
.
setCartonId
(
barcode
.
getPalletId
());
dataLog
.
setOperator
(
SecurityUtils
.
getLoginUsername
()+
"手动移库位"
);
dataLog
.
setLoc
(
newPosNameStr
);
dataLog
.
updateExtraDataMap
(
"targetPos"
,
newPosNameStr
);
taskService
.
addTaskToExecute
(
dataLog
);
return
ResultBean
.
newOkResult
(
""
);
}
@ApiOperation
(
"修改任务状态"
)
@RequestMapping
(
"/updateBoxTransStatus"
)
@AnonymousAccess
public
ResultBean
updateBoxTransStatus
(
@RequestBody
Map
<
String
,
String
>
paramMap
)
{
String
boxStr
=
paramMap
.
get
(
"boxStr"
);
String
statusStr
=
paramMap
.
get
(
"statusStr"
);
//String posName = paramMap.get("posName");
//1.判断任务是否存在
DataLog
task
=
null
;
List
<
DataLog
>
allTasks
=
taskService
.
getAllTasks
();
for
(
DataLog
dataLog
:
allTasks
)
{
if
(
dataLog
.
isCheckOutTask
()
&&
!
dataLog
.
isCancel
()
&&
!
dataLog
.
isFinished
())
{
if
(
boxStr
.
equals
(
dataLog
.
getBarcode
()))
{
task
=
dataLog
;
break
;
}
}
}
if
(
task
==
null
)
{
log
.
info
(
boxStr
+
"任务未找到,可能处理过,返回ok"
);
return
ResultBean
.
newOkResult
(
""
);
}
statusStr
=
statusStr
.
toUpperCase
();
log
.
info
(
"更新移库料箱:"
+
boxStr
+
",任务状态为:"
+
statusStr
);
//2.判断更新状态和当前状态任务是否相同
if
(
task
.
getStatus
().
equals
(
statusStr
))
{
return
ResultBean
.
newOkResult
(
""
);
}
if
(
OP_STATUS
.
EXECUTING
.
name
().
equals
(
statusStr
))
{
task
.
setStatus
(
statusStr
);
taskService
.
updateQueueTask
(
task
);
}
else
{
if
(!
task
.
isOutFromPos
())
{
boxOutPos
(
task
);
//WipBoxHandleUtil.outFromPos(task);
task
.
setOutFromPos
(
true
);
taskService
.
updateFinishedTask
(
task
);
}
if
(
OP_STATUS
.
FINISHED
.
name
().
equals
(
statusStr
))
{
String
targetPos
=
task
.
getExtraDataMap
(
"targetPos"
).
toString
();
StoragePos
pos
=
storagePosManager
.
getByPosName
(
targetPos
);
Storage
storage
=
dataCache
.
getStorageById
(
pos
.
getId
());
Barcode
barcode
=
barcodeManager
.
findByBarcode
(
task
.
getBarcode
());
DataLog
dataLog
=
new
DataLog
(
storage
,
barcode
,
pos
);
dataLog
.
setType
(
OP
.
PUT_IN
);
dataLog
.
setStatus
(
OP_STATUS
.
FINISHED
.
name
());
dataLog
.
setOperator
(
SecurityUtils
.
getLoginUsername
()+
"手动移库位"
);
dataLogManager
.
save
(
dataLog
);
boxInPos
(
dataLog
);
}
else
{
task
.
setStatus
(
statusStr
);
taskService
.
updateFinishedTask
(
task
);
}
}
return
ResultBean
.
newOkResult
(
""
);
}
private
void
boxInPos
(
DataLog
queueTask
){
Barcode
barcode
=
barcodeManager
.
findByBarcode
(
queueTask
.
getBarcode
());
//已完成,加入库存,并且从完成队列中清除
StoragePos
storagePos
=
storagePosManager
.
get
(
queueTask
.
getPosId
());
if
(
barcode
!=
null
)
{
barcode
.
setUsedCount
(
barcode
.
getUsedCount
()
+
1
);
barcode
.
setPutInTime
(
System
.
currentTimeMillis
(),
true
);
barcode
.
setInOpor
(
""
);
barcode
.
setCheckOutDate
(
null
,
""
);
barcode
.
setPosName
(
queueTask
.
getPosName
());
barcode
=
barcodeManager
.
save
(
barcode
);
}
storagePos
.
setBarcode
(
barcode
);
storagePos
.
setUsed
(
true
);
storagePos
.
setCanCheckOutTime
(
System
.
currentTimeMillis
());
storagePosManager
.
save
(
storagePos
);
queueTask
.
setStatus
(
OP_STATUS
.
FINISHED
.
name
());
}
private
void
boxOutPos
(
DataLog
queueTask
)
{
Barcode
barcode
=
barcodeManager
.
findByBarcode
(
queueTask
.
getBarcode
());
//已完成,从库存中清除,并且从完成队列中清除
StoragePos
storagePos
=
storagePosManager
.
get
(
queueTask
.
getPosId
());
if
(
barcode
!=
null
)
{
//二维码状态
barcode
.
setUsed
(
true
);
barcode
.
setUsedDate
(
new
Date
());
//仓位状态
barcode
.
setCheckOutDate
(
new
Date
(),
""
);
barcode
.
setPosName
(
""
);
barcode
.
setOrderItemId
(
""
);
barcode
.
setOrderId
(
""
);
barcode
.
setLockName
(
""
);
barcode
.
setLockId
(
""
);
barcodeManager
.
save
(
barcode
);
}
storagePos
.
setBarcode
(
null
);
storagePos
.
setUsed
(
false
);
storagePosManager
.
save
(
storagePos
);
}
}
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论