Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
smf-core
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit d3a2e4cb
由
zshaohui
编写于
2024-06-25 17:23:42 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
优化提交
1 个父辈
51dcbdc6
隐藏空白字符变更
内嵌
并排
正在显示
12 个修改的文件
包含
173 行增加
和
30 行删除
src/main/java/com/neotel/smfcore/core/order/LiteOrderCache.java
src/main/java/com/neotel/smfcore/core/storage/rest/dto/StoragePosDto.java
src/main/java/com/neotel/smfcore/custom/lizhen/agvBox/rest/OutLineController.java
src/main/java/com/neotel/smfcore/custom/luxsan/api/LuxsanApi.java
src/main/java/com/neotel/smfcore/custom/luxsan/api/bean/request/FetchHoldInfoRequest.java
src/main/java/com/neotel/smfcore/custom/luxsan/api/bean/request/TicketPostRequest.java
src/main/java/com/neotel/smfcore/custom/luxsan/factory_c/rawstor/controller/CDeviceController.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/LineController.java
src/main/java/com/neotel/smfcore/custom/luxsan/factory_c/wipstor/controller/TakeOutController.java
src/main/java/com/neotel/smfcore/custom/luxsan/factory_c/wipstor/controller/WipStorCheckOutController.java
src/main/java/com/neotel/smfcore/custom/luxsan/factory_c/wipstor/util/TaskLocUtil.java
src/main/java/com/neotel/smfcore/core/order/LiteOrderCache.java
查看文件 @
d3a2e4c
...
...
@@ -35,9 +35,14 @@ import com.neotel.smfcore.custom.lizhen.innerBox.bean.StorageExport;
import
com.neotel.smfcore.custom.lizhen.innerBox.enums.ExtendType
;
import
com.neotel.smfcore.custom.lizhen.innerBox.util.StorageExportUtil
;
import
com.neotel.smfcore.custom.lizhen.third.maicheng.api.MaiZhengApi
;
import
com.neotel.smfcore.custom.luxsan.api.LuxsanApi
;
import
com.neotel.smfcore.custom.luxsan.api.bean.request.FetchHoldInfoRequest
;
import
com.neotel.smfcore.custom.luxsan.api.bean.result.FetchHoldInfoResult
;
import
com.neotel.smfcore.custom.luxsan.factory_c.common.util.CommonUtil
;
import
com.neotel.smfcore.custom.luxsan.factory_c.common.util.DisableBarcodeUtil
;
import
com.neotel.smfcore.custom.luxsan.factory_c.rawstor.enums.LiteorderCheckType
;
import
com.neotel.smfcore.custom.luxsan.factory_c.rawstor.enums.TaskCurrentLoc
;
import
com.neotel.smfcore.custom.luxsan.factory_c.wipstor.util.TaskLocUtil
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.data.mongodb.core.query.Criteria
;
...
...
@@ -1208,7 +1213,7 @@ public class LiteOrderCache {
}
public
synchronized
void
wipTicketOut
(
String
orderNo
)
{
public
synchronized
void
wipTicketOut
(
String
orderNo
,
boolean
isHold
)
{
LiteOrder
cacheOrder
=
liteOrderMap
.
get
(
orderNo
);
if
(
cacheOrder
==
null
)
{
cacheOrder
=
liteOrderManager
.
findByOrderNo
(
orderNo
);
...
...
@@ -1228,6 +1233,7 @@ public class LiteOrderCache {
throw
new
ValidateException
(
"smfcore.order.out.executing"
,
"工单正在执行"
);
}
log
.
info
(
"开始执行工单:"
+
orderNo
);
cacheOrder
.
setTaskReelCount
(
0
);
cacheOrder
.
setFinishedReelCount
(
0
);
...
...
@@ -1241,6 +1247,29 @@ public class LiteOrderCache {
int
taskReelCount
=
0
;
//如果是hold的,判断有没有符合的条件
List
<
StoragePos
>
storagePosList
=
new
ArrayList
<>();
if
(
isHold
)
{
for
(
LiteOrderItem
orderItem
:
cacheOrder
.
getOrderItems
())
{
List
<
FetchHoldInfoResult
>
resultList
=
LuxsanApi
.
fetchHoldInfo
(
new
FetchHoldInfoRequest
(
CommonUtil
.
plantCode
,
orderItem
.
getSrcWarehouse
(),
orderItem
.
getPn
()));
if
(
resultList
!=
null
&&
!
resultList
.
isEmpty
())
{
List
<
String
>
palletIdList
=
resultList
.
stream
().
map
(
FetchHoldInfoResult:
:
getPALLET_ID
).
collect
(
Collectors
.
toList
());
List
<
Criteria
>
orCriterialList
=
Lists
.
newArrayList
();
orCriterialList
.
add
(
Criteria
.
where
(
"barcode.barcode"
).
in
(
palletIdList
));
orCriterialList
.
add
(
Criteria
.
where
(
"barcode.palletId"
).
is
(
palletIdList
));
Criteria
c
=
new
Criteria
().
orOperator
(
orCriterialList
);
List
<
StoragePos
>
posList
=
storagePosManager
.
findByQuery
(
new
Query
(
c
));
if
(
posList
!=
null
&&
!
posList
.
isEmpty
()){
for
(
StoragePos
pos
:
posList
)
{
storagePosList
.
add
(
pos
);
}
}
}
}
}
for
(
LiteOrderItem
orderItem
:
cacheOrder
.
getOrderItems
())
{
String
partNumber
=
orderItem
.
getPn
();
...
...
@@ -1252,7 +1281,27 @@ public class LiteOrderCache {
while
(
taskNum
<
remainNum
)
{
log
.
info
(
"当前分配的数量为:"
+
taskNum
+
",剩余数量为:"
+
remainNum
);
Collection
<
String
>
excludePosIds
=
excludeOutPosIds
();
StoragePos
pos
=
storagePosManager
.
findPartNumberInStorages
(
storageIdList
,
partNumber
,
excludePosIds
,
checkoutType
,
orderItem
.
getBrand
());
//1.先从执行的料箱中出库
StoragePos
pos
=
null
;
String
loc
=
TaskLocUtil
.
MW
;
if
(
isHold
)
{
if
(
storagePosList
!=
null
&&
!
storagePosList
.
isEmpty
())
{
for
(
StoragePos
storagePos
:
storagePosList
)
{
if
(
excludePosIds
.
contains
(
storagePos
.
getId
()))
{
continue
;
}
if
(
partNumber
.
equals
(
storagePos
.
getBarcode
().
getPartNumber
()))
{
if
(
orderItem
.
getSrcWarehouse
().
equals
(
storagePos
.
getBarcode
().
getWarehouseCode
()))
{
pos
=
storagePos
;
break
;
}
}
}
}
}
else
{
pos
=
storagePosManager
.
findPartNumberInStorages
(
storageIdList
,
partNumber
,
excludePosIds
,
checkoutType
,
orderItem
.
getBrand
(),
orderItem
.
getSrcWarehouse
());
}
if
(
pos
==
null
)
{
break
;
}
else
{
...
...
@@ -1267,6 +1316,7 @@ public class LiteOrderCache {
task
.
setSubSourceInfo
(
orderItem
.
getFeederInfo
());
task
.
setType
(
OP
.
CHECKOUT
);
task
.
setStatus
(
OP_STATUS
.
WAIT
.
name
());
task
.
setLoc
(
loc
);
taskService
.
addTaskToExecute
(
task
);
}
}
...
...
src/main/java/com/neotel/smfcore/core/storage/rest/dto/StoragePosDto.java
查看文件 @
d3a2e4c
...
...
@@ -90,4 +90,7 @@ public class StoragePosDto implements Serializable {
@ApiModelProperty
(
"禁用信息"
)
private
String
msg
;
@ApiModelProperty
(
"库别"
)
private
String
wareHouseCode
;
}
src/main/java/com/neotel/smfcore/custom/lizhen/agvBox/rest/OutLineController.java
查看文件 @
d3a2e4c
...
...
@@ -17,6 +17,8 @@ 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.order.service.manager.ILiteOrderItemManager
;
import
com.neotel.smfcore.core.order.service.manager.ILiteOrderManager
;
import
com.neotel.smfcore.core.order.service.po.LiteOrder
;
import
com.neotel.smfcore.core.order.service.po.LiteOrderItem
;
import
com.neotel.smfcore.core.storage.enums.DeviceType
;
import
com.neotel.smfcore.core.storage.service.manager.IStoragePosManager
;
...
...
@@ -28,6 +30,13 @@ import com.neotel.smfcore.custom.lizhen.LizhenApi;
import
com.neotel.smfcore.custom.lizhen.agvBox.enums.INOUT_TYPE
;
import
com.neotel.smfcore.custom.lizhen.agvBox.util.BoxUtil
;
import
com.neotel.smfcore.custom.lizhen.innerBox.enums.ExtendType
;
import
com.neotel.smfcore.custom.luxsan.api.LuxsanApi
;
import
com.neotel.smfcore.custom.luxsan.api.bean.request.PickingIssueRequest
;
import
com.neotel.smfcore.custom.luxsan.api.bean.request.TicketPickLabelList
;
import
com.neotel.smfcore.custom.luxsan.api.bean.request.TicketPickRequest
;
import
com.neotel.smfcore.custom.luxsan.api.bean.request.TicketPostRequest
;
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.custom.luxsan.factory_c.rawstor.enums.TaskCurrentLoc
;
import
com.neotel.smfcore.custom.luxsan.factory_c.rawstor.util.BoxHandleUtil
;
import
com.neotel.smfcore.security.annotation.AnonymousAccess
;
...
...
@@ -73,6 +82,9 @@ public class OutLineController {
@Autowired
private
LizhenApi
lizhenApi
;
@Autowired
private
ILiteOrderManager
liteOrderManager
;
/*
* key为工位信息,value为上一个隔口信息
...
...
@@ -382,6 +394,9 @@ public class OutLineController {
for
(
int
index
=
0
;
index
<
subCodes
.
size
();
)
{
Barcode
subCode
=
subCodes
.
get
(
index
);
//manualCheckOut(subCode);
//生成任务
String
orderItemId
=
subCode
.
getOrderItemId
();
int
amount
=
subCode
.
getAmount
();
...
...
@@ -441,6 +456,9 @@ public class OutLineController {
for
(
int
index
=
0
;
index
<
needOutBarcodes
.
size
();
index
++)
{
Barcode
subCode
=
needOutBarcodes
.
get
(
index
);
//manualCheckOut(subCode);
String
orderItemId
=
subCode
.
getOrderItemId
();
int
amount
=
subCode
.
getAmount
();
subCode
.
setAmount
(
0
);
...
...
@@ -509,6 +527,9 @@ public class OutLineController {
//判断当前隔口是否有要出的任务
boolean
isOut
=
false
;
if
(
barcode
.
isOut
())
{
//manualCheckOut(barcode);
isOut
=
true
;
String
orderItemId
=
barcode
.
getOrderItemId
();
int
amount
=
barcode
.
getAmount
();
...
...
@@ -547,11 +568,11 @@ public class OutLineController {
}
}
if
(
barcodeByOut
!=
null
)
{
String
orderItemId
=
barcodeByOut
.
getOrderItemId
();
barcodeByOut
.
setOut
(
false
);
barcodeByOut
.
setOrderItemId
(
null
);
barcodeByOut
.
setSelectMsg
(
null
);
barcodeByOut
=
barcodeManager
.
save
(
barcodeByOut
);
pidBarcode
.
UpdateSubCode
(
barcodeByOut
);
//互换,要出的和隔口中的数据
...
...
@@ -562,6 +583,12 @@ public class OutLineController {
pidBarcode
.
setAmount
(
pidBarcode
.
getAmount
()
-
amount
);
pidBarcode
.
UpdateSubCode
(
barcode
);
//manualCheckOut(barcode);
barcodeByOut
=
barcodeManager
.
save
(
barcodeByOut
);
int
extendType
=
StringUtils
.
isNotBlank
(
barcode
.
getOrderItemId
())
?
ExtendType
.
VIRTUAL_PICKING_DETAIL
:
ExtendType
.
VIRTUAL_CHECKOUT
;
generateTask
(
barcode
,
opStatus
,
amount
,
opType
,
orderItemId
,
extendType
,
false
);
log
.
info
(
barcode
.
getBarcode
()
+
"不是出库任务,"
+
barcodeByOut
.
getBarcode
()
+
"需更改out为false"
);
...
...
@@ -625,6 +652,46 @@ public class OutLineController {
}
public
void
manualCheckOut
(
Barcode
barcode
){
String
itemId
=
barcode
.
getOrderItemId
();
if
(
StringUtils
.
isNotEmpty
(
itemId
)){
LiteOrderItem
orderItem
=
liteOrderItemManager
.
get
(
itemId
);
LiteOrder
liteOrder
=
liteOrderManager
.
get
(
orderItem
.
getOrderId
());
if
(
liteOrder
==
null
){
throw
new
ValidateException
(
""
,
barcode
.
getBarcode
()+
"未找到对应的工单出库信息"
);
}
if
(
liteOrder
.
getCheckType
()
==
LiteorderCheckType
.
TICKET_CHECKOUT
){
TicketPickRequest
request
=
new
TicketPickRequest
();
request
.
setPLANT_CODE
(
CommonUtil
.
plantCode
);
request
.
setTICKET_CODE
(
orderItem
.
getTicketCode
());
request
.
setTICKET_ITEM
(
orderItem
.
getTicketItem
());
request
.
setQTY
(
barcode
.
getAmount
());
request
.
setBIN_CODE
(
""
);
List
<
TicketPickLabelList
>
labelList
=
new
ArrayList
<>();
TicketPickLabelList
tickPick
=
new
TicketPickLabelList
();
tickPick
.
setREEL_LIST
(
Arrays
.
asList
(
barcode
.
getBarcode
()));
tickPick
.
setLABEL_ID
(
barcode
.
getLabelId
());
labelList
.
add
(
tickPick
);
request
.
setLABEL_LIST
(
labelList
);
LuxsanApi
.
ticketPick
(
request
);
LuxsanApi
.
ticketPost
(
new
TicketPostRequest
(
CommonUtil
.
plantCode
,
orderItem
.
getTicketCode
()));
}
else
if
(
liteOrder
.
getCheckType
()
==
LiteorderCheckType
.
PICKING_CHECKOUT
){
String
batchCode
=
""
;
if
(!
"N/A"
.
equals
(
orderItem
.
getBatchCode
())){
batchCode
=
orderItem
.
getBatchCode
();
}
LuxsanApi
.
pickingIssue
(
new
PickingIssueRequest
(
CommonUtil
.
plantCode
,
liteOrder
.
getOrderNo
(),
orderItem
.
getItemId
(),
barcode
.
getPartNumber
()
,
barcode
.
getWarehouseCode
(),
orderItem
.
getBrand
(),
orderItem
.
getFace
(),
batchCode
,
Arrays
.
asList
(
barcode
.
getBarcode
())));
}
}
}
private
DataLog
generateTask
(
Barcode
barcode
,
String
opStatus
,
int
opQty
,
int
opType
,
String
orderItemId
,
int
extendType
,
boolean
isBoxOut
)
{
//生成任务
DataLog
task
=
new
DataLog
();
...
...
src/main/java/com/neotel/smfcore/custom/luxsan/api/LuxsanApi.java
查看文件 @
d3a2e4c
...
...
@@ -302,14 +302,14 @@ public class LuxsanApi extends DefaultSmfApiListener {
}
/**
*
单据挑料
*
原料单据过账
*
* @param request
* @return
*/
public
static
List
<
TicketPostResult
>
ticketPost
(
TicketPostRequest
request
)
{
public
static
void
ticketPost
(
TicketPostRequest
request
)
{
try
{
log
.
info
(
"ticketPost接口请求参数为:"
+
JSONObject
.
toJSONString
(
request
));
log
.
info
(
"ticketPost接口请求参数为:"
+
JSONObject
.
toJSONString
(
request
)
+
",地址为:"
+
ticketPostUrl
);
String
resultStr
=
HttpHelper
.
postJson
(
ticketPostUrl
,
request
);
log
.
info
(
"ticketPost接口返回结果为:"
+
resultStr
);
...
...
@@ -318,11 +318,6 @@ public class LuxsanApi extends DefaultSmfApiListener {
throw
new
ValidateException
(
"smfcore.api.error"
,
"接口请求失败[{0}]"
,
new
String
[]{
apiResult
.
getMSGTX
()});
}
List
<
TicketPostResult
>
resultList
=
JSONObject
.
parseArray
(
apiResult
.
getDATA
(),
TicketPostResult
.
class
);
if
(
resultList
!=
null
&&
!
resultList
.
isEmpty
())
{
return
resultList
;
}
}
catch
(
ApiException
e
)
{
log
.
error
(
"ticketPost请求失败:"
+
e
.
getMessage
());
throw
new
ValidateException
(
"smfcore.api.error"
,
"接口请求失败[{0}]"
,
new
String
[]{
e
.
getMessage
()});
...
...
src/main/java/com/neotel/smfcore/custom/luxsan/api/bean/request/FetchHoldInfoRequest.java
查看文件 @
d3a2e4c
package
com
.
neotel
.
smfcore
.
custom
.
luxsan
.
api
.
bean
.
request
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
/**
* 获取不可用(HOLD)库存信息
*/
@Data
@AllArgsConstructor
public
class
FetchHoldInfoRequest
{
//工厂代码
...
...
src/main/java/com/neotel/smfcore/custom/luxsan/api/bean/request/TicketPostRequest.java
查看文件 @
d3a2e4c
package
com
.
neotel
.
smfcore
.
custom
.
luxsan
.
api
.
bean
.
request
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
java.util.List
;
@Data
@AllArgsConstructor
public
class
TicketPostRequest
{
// 厂区
...
...
@@ -12,16 +14,4 @@ public class TicketPostRequest {
// 单据号
private
String
TICKET_CODE
;
// 单据行
private
String
TICKET_ITEM
;
// 料卷清单
private
List
<
String
>
REEL_LIST
;
// 数量
private
int
QTY
;
// 储位号
private
String
BIN_CODE
;
}
src/main/java/com/neotel/smfcore/custom/luxsan/factory_c/rawstor/controller/CDeviceController.java
查看文件 @
d3a2e4c
...
...
@@ -231,7 +231,6 @@ public class CDeviceController {
//311单据转库
else
if
(
MaterialUtil
.
ticketTransfer
(
materialStr
))
{
TicketTransfer
transfer
=
MaterialUtil
.
getTicketTransferInfo
(
materialStr
);
TicketPickRequest
request
=
new
TicketPickRequest
();
request
.
setPLANT_CODE
(
CommonUtil
.
plantCode
);
...
...
@@ -247,6 +246,7 @@ public class CDeviceController {
labelList
.
add
(
tickPick
);
request
.
setLABEL_LIST
(
labelList
);
LuxsanApi
.
ticketPick
(
request
);
LuxsanApi
.
ticketPost
(
new
TicketPostRequest
(
CommonUtil
.
plantCode
,
transfer
.
getTicket
()));
}
//单据退库上架
...
...
@@ -313,6 +313,21 @@ public class CDeviceController {
Map
<
String
,
BindGrInfo
>
cacheMap
=
dataCache
.
getCache
(
CacheNameUtil
.
CACHE_BIND_GR
);
cacheMap
.
remove
(
materialStr
);
dataCache
.
updateCache
(
CacheNameUtil
.
CACHE_BIND_GR
,
cacheMap
);
}
else
if
(
MaterialUtil
.
storTransfer
(
materialStr
)){
log
.
info
(
materialStr
+
"绑定储位移转信息,需要清空"
);
Map
<
String
,
StorTransfer
>
cacheMap
=
dataCache
.
getCache
(
CacheNameUtil
.
CHCHE_STOR_TRANSFER
);
cacheMap
.
remove
(
materialStr
);
dataCache
.
updateCache
(
CacheNameUtil
.
CHCHE_STOR_TRANSFER
,
cacheMap
);
}
else
if
(
MaterialUtil
.
ticketReturn
(
materialStr
)){
log
.
info
(
materialStr
+
"单据退料,需要清空"
);
Map
<
String
,
TicketReturn
>
cacheMap
=
dataCache
.
getCache
(
CacheNameUtil
.
CHCHE_TICKET_RETURN
);
cacheMap
.
remove
(
materialStr
);
dataCache
.
updateCache
(
CacheNameUtil
.
CHCHE_TICKET_RETURN
,
cacheMap
);
}
else
if
(
MaterialUtil
.
ticketTransfer
(
materialStr
)){
log
.
info
(
materialStr
+
"单据转库,需要清空"
);
Map
<
String
,
TicketTransfer
>
cacheMap
=
dataCache
.
getCache
(
CacheNameUtil
.
CHCHE_TICKET_TRANSFER
);
cacheMap
.
remove
(
materialStr
);
dataCache
.
updateCache
(
CacheNameUtil
.
CHCHE_TICKET_TRANSFER
,
cacheMap
);
}
return
ResultBean
.
newOkResult
(
""
);
}
...
...
src/main/java/com/neotel/smfcore/custom/luxsan/factory_c/wipstor/controller/AgvDeviceController.java
查看文件 @
d3a2e4c
...
...
@@ -66,9 +66,11 @@ public class AgvDeviceController {
if
(
dataLogList
!=
null
&&
dataLogList
.
size
()
>
6
){
break
;
}
if
(
dataLog
.
isCheckOutTask
()
&&
dataLog
.
isWait
())
{
if
(
StringUtils
.
isEmpty
(
dataLog
.
getLoc
())){
dataLog
.
setLoc
(
TaskLocUtil
.
OUT
);
if
(
dataLog
.
isCheckOutTask
())
{
if
(
dataLog
.
isWait
()
||
dataLog
.
isExecuting
())
{
if
(
StringUtils
.
isEmpty
(
dataLog
.
getLoc
()))
{
dataLog
.
setLoc
(
TaskLocUtil
.
OUT
);
}
}
dataLogList
.
add
(
dataLog
);
}
...
...
@@ -141,6 +143,14 @@ public class AgvDeviceController {
task
.
setStatus
(
statusStr
);
taskService
.
updateFinishedTask
(
task
);
}
if
(
OP_STATUS
.
FINISHED
.
name
().
equals
(
statusStr
)){
if
(
TaskLocUtil
.
MW
.
equals
(
task
.
getLoc
())){
task
.
setStatus
(
statusStr
);
taskService
.
updateFinishedTask
(
task
);
}
}
}
}
return
ResultBean
.
newOkResult
(
""
);
...
...
src/main/java/com/neotel/smfcore/custom/luxsan/factory_c/wipstor/controller/LineController.java
查看文件 @
d3a2e4c
...
...
@@ -263,7 +263,7 @@ public class LineController {
List
<
DataLog
>
dataLogList
=
taskService
.
getAllTasks
();
for
(
DataLog
task
:
dataLogList
)
{
if
(
task
.
isCheckOutTask
()
&&
!
task
.
isFinished
()
&&
!
task
.
isCancel
()){
if
(
task
.
isCheckOutTask
()
&&
!
task
.
isFinished
()
&&
!
task
.
isCancel
()
&&
!
task
.
isPause
()
){
if
(
StringUtils
.
isEmpty
(
soureId
)){
if
(
StringUtils
.
isEmpty
(
task
.
getSourceId
())){
num
=
num
+
1
;
...
...
src/main/java/com/neotel/smfcore/custom/luxsan/factory_c/wipstor/controller/TakeOutController.java
查看文件 @
d3a2e4c
...
...
@@ -50,7 +50,7 @@ public class TakeOutController {
@ApiOperation
(
"单据出库"
)
@RequestMapping
(
"/ticketOut"
)
@AnonymousAccess
public
ResultBean
ticketOut
(
String
ticket
)
{
public
ResultBean
ticketOut
(
String
ticket
,
boolean
isHold
)
{
log
.
info
(
"半成品仓单据出库:"
+
ticket
);
if
(
StringUtils
.
isEmpty
(
ticket
))
{
throw
new
ValidateException
(
"smfcore.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"单据号"
});
...
...
@@ -61,7 +61,7 @@ public class TakeOutController {
List
<
FetchMoveTicketResult
>
ticketList
=
LuxsanApi
.
fetchMoveTicket
(
new
FetchMoveTicketRequest
(
CommonUtil
.
plantCode
,
ticket
));
ticketToLiteOrder
(
ticket
,
ticketList
);
}
liteOrderCache
.
wipTicketOut
(
ticket
);
liteOrderCache
.
wipTicketOut
(
ticket
,
isHold
);
return
ResultBean
.
newOkResult
(
""
);
}
...
...
src/main/java/com/neotel/smfcore/custom/luxsan/factory_c/wipstor/controller/WipStorCheckOutController.java
查看文件 @
d3a2e4c
...
...
@@ -22,6 +22,7 @@ import com.neotel.smfcore.custom.luxsan.api.bean.result.FetchShipmentInfoResult;
import
com.neotel.smfcore.custom.luxsan.factory_c.common.util.CommonUtil
;
import
com.neotel.smfcore.custom.luxsan.factory_c.wipstor.bean.OdnOut
;
import
com.neotel.smfcore.custom.luxsan.factory_c.wipstor.bean.dto.FetchShipmentInfoDto
;
import
com.neotel.smfcore.security.annotation.AnonymousAccess
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
lombok.extern.slf4j.Slf4j
;
...
...
@@ -218,6 +219,15 @@ public class WipStorCheckOutController {
return
ResultBean
.
newOkResult
(
""
);
}
@ApiOperation
(
"odn暂停"
)
@RequestMapping
(
"/pauseOdn"
)
@AnonymousAccess
public
ResultBean
pauseOdn
(
String
odn
){
return
ResultBean
.
newOkResult
(
""
);
}
@ApiOperation
(
"人员调用wms手动解绑"
)
@RequestMapping
(
"/unBindPallet"
)
//@AnonymousAccess
...
...
src/main/java/com/neotel/smfcore/custom/luxsan/factory_c/wipstor/util/TaskLocUtil.java
查看文件 @
d3a2e4c
...
...
@@ -5,5 +5,6 @@ public class TaskLocUtil {
public
static
final
String
IN
=
"semiFinished_In"
;
public
static
final
String
OUT
=
"semiFinished_Out"
;
public
static
final
String
NG
=
"semiFinished_ng"
;
public
static
final
String
MW
=
"semiFinished_mw"
;
//人工工位
public
static
final
String
RR
=
"semiFinished_rr"
;
//还原补箱 restoreReplace
}
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论