Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
smf-core
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit d4a64955
由
zshaohui
编写于
2024-07-26 11:37:13 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
1.手动出库调用wms接口
2.uid出库导出 增加隔口数量 3.缓存箱子问题
1 个父辈
1e2338bd
隐藏空白字符变更
内嵌
并排
正在显示
4 个修改的文件
包含
106 行增加
和
74 行删除
src/main/java/com/neotel/smfcore/core/storage/rest/StoragePosController.java
src/main/java/com/neotel/smfcore/custom/lizhen/agvBox/rest/OutLineController.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/rawstor/util/BinCacheUtil.java
src/main/java/com/neotel/smfcore/core/storage/rest/StoragePosController.java
查看文件 @
d4a6495
...
@@ -57,6 +57,7 @@ import java.io.IOException;
...
@@ -57,6 +57,7 @@ import java.io.IOException;
import
java.text.DateFormat
;
import
java.text.DateFormat
;
import
java.text.SimpleDateFormat
;
import
java.text.SimpleDateFormat
;
import
java.util.*
;
import
java.util.*
;
import
java.util.stream.Collectors
;
@Slf4j
@Slf4j
@RestController
@RestController
...
@@ -695,6 +696,7 @@ public class StoragePosController {
...
@@ -695,6 +696,7 @@ public class StoragePosController {
header
.
add
(
Arrays
.
asList
(
"料箱所属架位"
));
header
.
add
(
Arrays
.
asList
(
"料箱所属架位"
));
header
.
add
(
Arrays
.
asList
(
"料箱是否在库"
));
header
.
add
(
Arrays
.
asList
(
"料箱是否在库"
));
header
.
add
(
Arrays
.
asList
(
"是否禁用"
));
header
.
add
(
Arrays
.
asList
(
"是否禁用"
));
header
.
add
(
Arrays
.
asList
(
"剩余空隔口数量"
));
return
header
;
return
header
;
}
}
...
@@ -742,12 +744,26 @@ public class StoragePosController {
...
@@ -742,12 +744,26 @@ public class StoragePosController {
}
}
boxData
.
add
(
""
);
boxData
.
add
(
""
);
int
count
=
0
;
List
<
Barcode
>
subCodeList
=
barcode
.
getSubCodeList
();
if
(
subCodeList
==
null
||
subCodeList
.
isEmpty
()){
if
(
"C07"
.
equals
(
barcode
.
getPartNumber
())){
count
=
6
;
}
else
if
(
"C13"
.
equals
(
barcode
.
getPartNumber
())
||
"C15"
.
equals
(
barcode
.
getPartNumber
())){
count
=
3
;
}
}
else
{
Map
<
String
,
List
<
Barcode
>>
posNameMap
=
subCodeList
.
stream
().
collect
(
Collectors
.
groupingBy
(
Barcode:
:
getPosName
));
if
(
"C07"
.
equals
(
barcode
.
getPartNumber
())){
count
=
6
-
posNameMap
.
keySet
().
size
();
}
else
if
(
"C13"
.
equals
(
barcode
.
getPartNumber
())
||
"C15"
.
equals
(
barcode
.
getPartNumber
())){
count
=
3
-
posNameMap
.
keySet
().
size
();
}
}
boxData
.
add
(
count
+
""
);
dataList
.
add
(
boxData
);
dataList
.
add
(
boxData
);
//List<Barcode> subCodeList = barcode.getSubCodeList();
List
<
Barcode
>
subCodeList
=
barcode
.
getSubCodeList
();
if
(
subCodeList
!=
null
&&
!
subCodeList
.
isEmpty
()){
if
(
subCodeList
!=
null
&&
!
subCodeList
.
isEmpty
()){
for
(
Barcode
subCode
:
subCodeList
)
{
for
(
Barcode
subCode
:
subCodeList
)
{
List
<
Object
>
data
=
new
ArrayList
<>();
List
<
Object
>
data
=
new
ArrayList
<>();
...
@@ -789,7 +805,7 @@ public class StoragePosController {
...
@@ -789,7 +805,7 @@ public class StoragePosController {
}
else
{
}
else
{
data
.
add
(
""
);
data
.
add
(
""
);
}
}
data
.
add
(
""
);
dataList
.
add
(
data
);
dataList
.
add
(
data
);
}
}
}
}
...
...
src/main/java/com/neotel/smfcore/custom/lizhen/agvBox/rest/OutLineController.java
查看文件 @
d4a6495
...
@@ -554,6 +554,12 @@ public class OutLineController {
...
@@ -554,6 +554,12 @@ public class OutLineController {
LuxsanApi
.
pickingIssue
(
new
PickingIssueRequest
(
CommonUtil
.
plantCode
,
liteOrder
.
getOrderNo
(),
orderItem
.
getItemId
(),
barcode
.
getPartNumber
()
LuxsanApi
.
pickingIssue
(
new
PickingIssueRequest
(
CommonUtil
.
plantCode
,
liteOrder
.
getOrderNo
(),
orderItem
.
getItemId
(),
barcode
.
getPartNumber
()
,
barcode
.
getWarehouseCode
(),
orderItem
.
getBrand
(),
orderItem
.
getFace
(),
batchCode
,
Arrays
.
asList
(
barcode
.
getBarcode
())));
,
barcode
.
getWarehouseCode
(),
orderItem
.
getBrand
(),
orderItem
.
getFace
(),
batchCode
,
Arrays
.
asList
(
barcode
.
getBarcode
())));
}
}
}
else
{
//人工出库,
LuxsanApi
.
pickingIssue
(
new
PickingIssueRequest
(
CommonUtil
.
plantCode
,
"SMFW"
+
System
.
currentTimeMillis
(),
"0"
,
barcode
.
getPartNumber
()
,
barcode
.
getWarehouseCode
(),
""
,
""
,
""
,
Arrays
.
asList
(
barcode
.
getBarcode
())));
}
}
}
}
...
...
src/main/java/com/neotel/smfcore/custom/luxsan/factory_c/rawstor/controller/CDeviceController.java
查看文件 @
d4a6495
...
@@ -52,6 +52,7 @@ import org.springframework.web.bind.annotation.RequestParam;
...
@@ -52,6 +52,7 @@ import org.springframework.web.bind.annotation.RequestParam;
import
org.springframework.web.bind.annotation.RestController
;
import
org.springframework.web.bind.annotation.RestController
;
import
java.util.*
;
import
java.util.*
;
import
java.util.concurrent.atomic.AtomicBoolean
;
import
java.util.stream.Collectors
;
import
java.util.stream.Collectors
;
@Api
(
tags
=
"设备通信"
)
@Api
(
tags
=
"设备通信"
)
...
@@ -694,6 +695,8 @@ public class CDeviceController {
...
@@ -694,6 +695,8 @@ public class CDeviceController {
return
ResultBean
.
newErrorResult
(-
1
,
""
,
"未找到"
+
boxStr
+
"的入库库位"
);
return
ResultBean
.
newErrorResult
(-
1
,
""
,
"未找到"
+
boxStr
+
"的入库库位"
);
}
}
AtomicBoolean
isProcess
=
new
AtomicBoolean
(
false
);
@ApiOperation
(
"入料机构获取可用料格"
)
@ApiOperation
(
"入料机构获取可用料格"
)
@RequestMapping
(
"/validBin"
)
@RequestMapping
(
"/validBin"
)
@AnonymousAccess
@AnonymousAccess
...
@@ -703,88 +706,85 @@ public class CDeviceController {
...
@@ -703,88 +706,85 @@ public class CDeviceController {
String
source
=
paramMap
.
get
(
"source"
);
String
source
=
paramMap
.
get
(
"source"
);
String
needBinCodeStr
=
paramMap
.
get
(
"needBinCodeStr"
);
String
needBinCodeStr
=
paramMap
.
get
(
"needBinCodeStr"
);
boolean
ignoreWorkBox
=
false
;
if
(
isProcess
.
get
()){
//return ResultBean.newErrorResult(-1,"",stackerId+"上一次请求还在处理,等待处理完成后,再返回");
String
ignoreWorkStr
=
paramMap
.
get
(
"ignoreWorkBox"
);
if
(
StringUtils
.
isNotEmpty
(
ignoreWorkStr
)){
ignoreWorkBox
=
Boolean
.
valueOf
(
ignoreWorkStr
);
}
}
List
<
String
>
validBinList
=
new
ArrayList
<
String
>();
isProcess
.
set
(
true
);
log
.
info
(
"入料机构获取料串["
+
stackerId
+
"]的可用料格["
+
binListStr
+
"],入料机构为["
+
source
+
"],需要的料格信息为:"
+
needBinCodeStr
+
",是否忽略当前工作的料箱:"
+
ignoreWorkStr
);
if
(!
MaterialUtil
.
bindInfo
(
stackerId
))
{
return
ResultBean
.
newErrorResult
(-
1
,
"error.nobind"
,
"料串["
+
stackerId
+
"]未绑定任何信息"
);
}
String
partNumber
=
""
;
ValidBin
validBin
=
null
;
String
provider
=
""
;
try
{
String
dateStr
=
""
;
boolean
ignoreWorkBox
=
false
;
if
(
MaterialUtil
.
storTransfer
(
stackerId
))
{
StorTransfer
storTransfer
=
MaterialUtil
.
getStorTransferInfo
(
stackerId
);
partNumber
=
storTransfer
.
getMaterialStr
();
provider
=
storTransfer
.
getProvider
();
}
else
if
(
MaterialUtil
.
ticketTransfer
(
stackerId
)){
TicketTransfer
ticketTransfer
=
MaterialUtil
.
getTicketTransferInfo
(
stackerId
);
partNumber
=
ticketTransfer
.
getPn
();
provider
=
ticketTransfer
.
getProvider
();
}
else
if
(
MaterialUtil
.
ticketReturn
(
stackerId
)){
TicketReturn
ticketReturn
=
MaterialUtil
.
getTicketReturnInfo
(
stackerId
);
partNumber
=
ticketReturn
.
getPn
();
provider
=
ticketReturn
.
getProvider
();
}
else
if
(
MaterialUtil
.
bindGr
(
stackerId
)){
BindGrInfo
bindGrInfo
=
MaterialUtil
.
getBindGrInfo
(
stackerId
);
partNumber
=
bindGrInfo
.
getMaterialCode
();
provider
=
bindGrInfo
.
getBrand
();
dateStr
=
bindGrInfo
.
getGrDate
();
}
else
if
(
MaterialUtil
.
returnTower
(
stackerId
)){
ReturnTower
returnTower
=
MaterialUtil
.
getReturnTowerInfo
(
stackerId
);
partNumber
=
returnTower
.
getMaterialStr
();
provider
=
returnTower
.
getProvider
();
}
String
ignoreWorkStr
=
paramMap
.
get
(
"ignoreWorkBox"
);
if
(
StringUtils
.
isNotEmpty
(
ignoreWorkStr
)){
ignoreWorkBox
=
Boolean
.
valueOf
(
ignoreWorkStr
);
}
Barcode
stackerBarcode
=
new
Barcode
();
stackerBarcode
.
setBarcode
(
stackerId
);
stackerBarcode
.
setPartNumber
(
partNumber
);
stackerBarcode
.
setProvider
(
provider
);
//将GR日期设置为生产日期
if
(
StringUtils
.
isNotBlank
(
dateStr
))
{
List
<
String
>
validBinList
=
new
ArrayList
<
String
>();
Date
grDate
=
DateUtil
.
getNoTimeDate
(
dateStr
);
log
.
info
(
"入料机构获取料串["
+
stackerId
+
"]的可用料格["
+
binListStr
+
"],入料机构为["
+
source
+
"],需要的料格信息为:"
+
needBinCodeStr
+
",是否忽略当前工作的料箱:"
+
ignoreWorkStr
);
stackerBarcode
.
setProduceDate
(
grDate
);
}
if
(!
MaterialUtil
.
bindInfo
(
stackerId
))
{
String
warhouseCode
=
MaterialUtil
.
getWarhouseCode
(
stackerId
);
return
ResultBean
.
newErrorResult
(-
1
,
"error.nobind"
,
"料串["
+
stackerId
+
"]未绑定任何信息"
);
stackerBarcode
.
setWarehouseCode
(
warhouseCode
);
/*String[] binList = binListStr.split(",");
for (String binId : binList) {
String boxStr = BoxHandleUtil.getBoxStr(binId);
Barcode boxBarcode = codeResolve.resolveOneValideBarcode(boxStr);
//为料箱分配一个库位,直接放到库位中, 如果没有库位, 那么这个料箱不允许使用
StoragePos pos = BoxHandleUtil.locOnePos(boxBarcode);
if(pos != null){
String canPutIn = BinCacheUtil.canMaterialPutInBin(stackerBarcode,boxBarcode,binId);
if(canPutIn.isEmpty()){
validBinList.add(binId);
}else{
log.info(canPutIn);
}
}
}
}
Map<String,Object> dataMap = new HashMap<>();
String
partNumber
=
""
;
dataMap.put("validBinList",validBinList);*/
String
provider
=
""
;
String
dateStr
=
""
;
if
(
MaterialUtil
.
storTransfer
(
stackerId
))
{
StorTransfer
storTransfer
=
MaterialUtil
.
getStorTransferInfo
(
stackerId
);
partNumber
=
storTransfer
.
getMaterialStr
();
provider
=
storTransfer
.
getProvider
();
}
else
if
(
MaterialUtil
.
ticketTransfer
(
stackerId
)){
TicketTransfer
ticketTransfer
=
MaterialUtil
.
getTicketTransferInfo
(
stackerId
);
partNumber
=
ticketTransfer
.
getPn
();
provider
=
ticketTransfer
.
getProvider
();
}
else
if
(
MaterialUtil
.
ticketReturn
(
stackerId
)){
TicketReturn
ticketReturn
=
MaterialUtil
.
getTicketReturnInfo
(
stackerId
);
partNumber
=
ticketReturn
.
getPn
();
provider
=
ticketReturn
.
getProvider
();
}
else
if
(
MaterialUtil
.
bindGr
(
stackerId
)){
BindGrInfo
bindGrInfo
=
MaterialUtil
.
getBindGrInfo
(
stackerId
);
partNumber
=
bindGrInfo
.
getMaterialCode
();
provider
=
bindGrInfo
.
getBrand
();
dateStr
=
bindGrInfo
.
getGrDate
();
}
else
if
(
MaterialUtil
.
returnTower
(
stackerId
)){
ReturnTower
returnTower
=
MaterialUtil
.
getReturnTowerInfo
(
stackerId
);
partNumber
=
returnTower
.
getMaterialStr
();
provider
=
returnTower
.
getProvider
();
}
Barcode
stackerBarcode
=
new
Barcode
();
stackerBarcode
.
setBarcode
(
stackerId
);
stackerBarcode
.
setPartNumber
(
partNumber
);
stackerBarcode
.
setProvider
(
provider
);
//将GR日期设置为生产日期
if
(
StringUtils
.
isNotBlank
(
dateStr
))
{
Date
grDate
=
DateUtil
.
getNoTimeDate
(
dateStr
);
stackerBarcode
.
setProduceDate
(
grDate
);
}
String
warhouseCode
=
MaterialUtil
.
getWarhouseCode
(
stackerId
);
stackerBarcode
.
setWarehouseCode
(
warhouseCode
);
validBin
=
BinCacheUtil
.
validBin
(
stackerBarcode
,
source
,
binListStr
,
needBinCodeStr
,
ignoreWorkBox
);
if
(
validBin
==
null
){
isProcess
.
set
(
false
);
return
ResultBean
.
newErrorResult
(-
1
,
""
,
stackerId
+
"未找到可用料箱"
);
}
ValidBin
validBin
=
BinCacheUtil
.
validBin
(
stackerBarcode
,
source
,
binListStr
,
needBinCodeStr
,
ignoreWorkBox
);
callAgvTask
(
stackerId
,
stackerBarcode
);
if
(
validBin
==
null
){
}
catch
(
Exception
e
)
{
return
ResultBean
.
newErrorResult
(-
1
,
""
,
stackerId
+
"未找到可用料箱"
);
e
.
printStackTrace
();
isProcess
.
set
(
false
);
}
}
callAgvTask
(
stackerId
,
stackerBarcod
e
);
isProcess
.
set
(
fals
e
);
log
.
info
(
"入料机构获取可用料格:"
+
stackerId
+
"返回的数据为:"
+
JSON
.
toJSONString
(
validBin
));
log
.
info
(
"入料机构获取可用料格:"
+
stackerId
+
"返回的数据为:"
+
JSON
.
toJSONString
(
validBin
));
return
ResultBean
.
newOkResult
(
validBin
);
return
ResultBean
.
newOkResult
(
validBin
);
}
}
...
...
src/main/java/com/neotel/smfcore/custom/luxsan/factory_c/rawstor/util/BinCacheUtil.java
查看文件 @
d4a6495
...
@@ -53,6 +53,16 @@ public class BinCacheUtil {
...
@@ -53,6 +53,16 @@ public class BinCacheUtil {
//判断code是否相同
//判断code是否相同
String
code
=
cacheBinCodeMap
.
get
(
binCode
);
String
code
=
cacheBinCodeMap
.
get
(
binCode
);
if
(
StringUtils
.
isEmpty
(
code
)){
log
.
info
(
binCode
+
"未找到,重新调用接口,库别为:"
+
warehouseCode
);
Map
<
String
,
String
>
map
=
binCodeCacheMap
(
warehouseCode
);
cacheBinCodeMap
.
putAll
(
map
);
}
code
=
cacheBinCodeMap
.
get
(
binCode
);
if
(
StringUtils
.
isNotEmpty
(
code
))
{
if
(
StringUtils
.
isNotEmpty
(
code
))
{
if
(
code
.
equals
(
warehouseCode
))
{
if
(
code
.
equals
(
warehouseCode
))
{
//binCodeUpdateTime = System.currentTimeMillis();
//binCodeUpdateTime = System.currentTimeMillis();
...
...
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论