Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
smf-core
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit 14e1195f
由
hc
编写于
2024-07-23 09:13:30 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
fix:备品仓单据获取和入库出库接口完善
1 个父辈
4088f2f3
隐藏空白字符变更
内嵌
并排
正在显示
7 个修改的文件
包含
119 行增加
和
57 行删除
src/main/java/com/neotel/smfcore/core/order/LiteOrderCache.java
src/main/java/com/neotel/smfcore/core/storage/service/manager/impl/StoragePosManagerImpl.java
src/main/java/com/neotel/smfcore/custom/luxsan_sp/controller/SpBoxCheckOutController.java
src/main/java/com/neotel/smfcore/custom/luxsan_sp/controller/SpBoxPutInController.java
src/main/java/com/neotel/smfcore/custom/luxsan_sp/controller/SpUnclaimedController.java
src/main/java/com/neotel/smfcore/custom/luxsan_sp/util/SpBoxUtil.java
src/main/java/com/neotel/smfcore/custom/luxsan_sp/util/bean/BoxTaskDetail.java
src/main/java/com/neotel/smfcore/core/order/LiteOrderCache.java
查看文件 @
14e1195
...
@@ -554,7 +554,7 @@ public class LiteOrderCache {
...
@@ -554,7 +554,7 @@ public class LiteOrderCache {
break
;
break
;
}
}
try
{
try
{
smfApi
.
canPutInAfterResolve
(
pos
.
getBarcode
());
//
smfApi.canPutInAfterResolve(pos.getBarcode());
}
catch
(
ValidateException
e
)
{
}
catch
(
ValidateException
e
)
{
e
.
printStackTrace
();
e
.
printStackTrace
();
log
.
error
(
"工单号:"
+
orderNo
+
"唯一码:"
+
pos
.
getBarcode
().
getBarcode
()
+
":"
+
e
.
getMessage
());
log
.
error
(
"工单号:"
+
orderNo
+
"唯一码:"
+
pos
.
getBarcode
().
getBarcode
()
+
":"
+
e
.
getMessage
());
...
@@ -858,6 +858,18 @@ public class LiteOrderCache {
...
@@ -858,6 +858,18 @@ public class LiteOrderCache {
return
""
;
return
""
;
}
}
public
LiteOrder
getExecutingOrder
()
{
Collection
<
LiteOrder
>
liteOrders
=
getAllLiteOrder
();
if
(
liteOrders
!=
null
&&
!
liteOrders
.
isEmpty
())
{
for
(
LiteOrder
liteOrder
:
liteOrders
)
{
if
(!
liteOrder
.
isTaskFinished
()
&&
!
liteOrder
.
isNew
()
&&
!
liteOrder
.
isClosed
())
{
return
liteOrder
;
}
}
}
return
null
;
}
/**
/**
* 获取所有liteOrder
* 获取所有liteOrder
...
...
src/main/java/com/neotel/smfcore/core/storage/service/manager/impl/StoragePosManagerImpl.java
查看文件 @
14e1195
...
@@ -374,7 +374,7 @@ public class StoragePosManagerImpl implements IStoragePosManager {
...
@@ -374,7 +374,7 @@ public class StoragePosManagerImpl implements IStoragePosManager {
@Override
@Override
public
StoragePos
findPartNumberInStorages
(
List
<
String
>
storageIdList
,
String
pn
,
Collection
<
String
>
excludePosIds
,
CHECKOUT_TYPE
checkOutType
,
String
brand
)
{
public
StoragePos
findPartNumberInStorages
(
List
<
String
>
storageIdList
,
String
pn
,
Collection
<
String
>
excludePosIds
,
CHECKOUT_TYPE
checkOutType
,
String
brand
)
{
Criteria
c
=
Criteria
.
where
(
"barcode.partNumber"
).
is
(
pn
)
Criteria
c
=
Criteria
.
where
(
"barcode.
subCodeList.
partNumber"
).
is
(
pn
)
.
and
(
"id"
).
nin
(
excludePosIds
)
.
and
(
"id"
).
nin
(
excludePosIds
)
.
and
(
"enabled"
).
is
(
true
)
//可用
.
and
(
"enabled"
).
is
(
true
)
//可用
.
and
(
"barcode.lockId"
).
is
(
null
);
//没有被锁定的仓位;
.
and
(
"barcode.lockId"
).
is
(
null
);
//没有被锁定的仓位;
...
...
src/main/java/com/neotel/smfcore/custom/luxsan_sp/controller/SpBoxCheckOutController.java
查看文件 @
14e1195
...
@@ -152,9 +152,6 @@ public class SpBoxCheckOutController {
...
@@ -152,9 +152,6 @@ public class SpBoxCheckOutController {
barcodeManager
.
save
(
boxBarcode
);
barcodeManager
.
save
(
boxBarcode
);
if
(!
finish
)
{
return
ResultBean
.
newOkResult
(
""
);
}
//5.寻找空库位
//5.寻找空库位
StoragePos
pos
=
SpBoxUtil
.
locOnePos
(
boxBarcode
);
StoragePos
pos
=
SpBoxUtil
.
locOnePos
(
boxBarcode
);
if
(
pos
==
null
){
if
(
pos
==
null
){
...
...
src/main/java/com/neotel/smfcore/custom/luxsan_sp/controller/SpBoxPutInController.java
查看文件 @
14e1195
...
@@ -9,8 +9,10 @@ import com.neotel.smfcore.core.barcode.service.po.Barcode;
...
@@ -9,8 +9,10 @@ import com.neotel.smfcore.core.barcode.service.po.Barcode;
import
com.neotel.smfcore.core.barcode.utils.CodeResolve
;
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.storage.service.manager.IStoragePosManager
;
import
com.neotel.smfcore.core.storage.service.manager.IStoragePosManager
;
import
com.neotel.smfcore.core.storage.service.po.StoragePos
;
import
com.neotel.smfcore.core.storage.service.po.StoragePos
;
import
com.neotel.smfcore.core.system.service.dao.impl.DataLogDaoImpl
;
import
com.neotel.smfcore.core.system.service.po.DataLog
;
import
com.neotel.smfcore.core.system.service.po.DataLog
;
import
com.neotel.smfcore.core.system.util.TaskService
;
import
com.neotel.smfcore.core.system.util.TaskService
;
import
com.neotel.smfcore.custom.lizhen.agvBox.bean.Station
;
import
com.neotel.smfcore.custom.lizhen.agvBox.bean.Station
;
...
@@ -65,6 +67,10 @@ public class SpBoxPutInController {
...
@@ -65,6 +67,10 @@ public class SpBoxPutInController {
@Autowired
@Autowired
private
TaskService
taskService
;
private
TaskService
taskService
;
@Autowired
private
DataCache
dataCache
;
@Autowired
private
DataLogDaoImpl
dataLogDaoImpl
;
@ApiOperation
(
"获取当前工位的料箱信息"
)
@ApiOperation
(
"获取当前工位的料箱信息"
)
@RequestMapping
(
"/getStationInfo"
)
@RequestMapping
(
"/getStationInfo"
)
...
...
src/main/java/com/neotel/smfcore/custom/luxsan_sp/controller/SpUnclaimedController.java
查看文件 @
14e1195
package
com
.
neotel
.
smfcore
.
custom
.
luxsan_sp
.
controller
;
package
com
.
neotel
.
smfcore
.
custom
.
luxsan_sp
.
controller
;
import
cn.hutool.core.util.ObjectUtil
;
import
com.neotel.smfcore.common.bean.ResultBean
;
import
com.neotel.smfcore.common.bean.ResultBean
;
import
com.neotel.smfcore.common.utils.StringUtils
;
import
com.neotel.smfcore.common.utils.StringUtils
;
import
com.neotel.smfcore.core.barcode.service.manager.IBarcodeManager
;
import
com.neotel.smfcore.core.barcode.service.manager.IBarcodeManager
;
import
com.neotel.smfcore.core.barcode.utils.CodeResolve
;
import
com.neotel.smfcore.core.barcode.utils.CodeResolve
;
import
com.neotel.smfcore.core.inList.service.manager.IInListManager
;
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.service.manager.IStoragePosManager
;
import
com.neotel.smfcore.core.storage.service.manager.IStoragePosManager
;
import
com.neotel.smfcore.core.system.util.TaskService
;
import
com.neotel.smfcore.core.system.util.TaskService
;
import
com.neotel.smfcore.custom.luxsan_sp.api.LuxsanSpApi
;
import
com.neotel.smfcore.custom.luxsan_sp.api.LuxsanSpApi
;
import
com.neotel.smfcore.custom.luxsan_sp.api.bean.request.GetUnclaimedRequest
;
import
com.neotel.smfcore.custom.luxsan_sp.api.bean.request.GetUnclaimedRequest
;
import
com.neotel.smfcore.custom.luxsan_sp.api.bean.result.GetUnclaimedResult
;
import
com.neotel.smfcore.custom.luxsan_sp.api.bean.result.GetUnclaimedResult
;
import
com.neotel.smfcore.custom.luxsan_sp.bean.SpareNo
;
import
com.neotel.smfcore.custom.luxsan_sp.bean.Unclaimed
;
import
com.neotel.smfcore.custom.luxsan_sp.bean.Unclaimed
;
import
com.neotel.smfcore.custom.luxsan_sp.bean.UnclaimedDetail
;
import
com.neotel.smfcore.custom.luxsan_sp.enums.SpareNostatus
;
import
com.neotel.smfcore.custom.luxsan_sp.enums.SpareNostatus
;
import
com.neotel.smfcore.custom.luxsan_sp.service.manager.IUnclaimedManager
;
import
com.neotel.smfcore.custom.luxsan_sp.service.manager.IUnclaimedManager
;
import
com.neotel.smfcore.custom.luxsan_sp.util.OrderNoCache
;
import
com.neotel.smfcore.custom.luxsan_sp.util.OrderNoCache
;
...
@@ -20,7 +25,9 @@ import lombok.extern.slf4j.Slf4j;
...
@@ -20,7 +25,9 @@ import lombok.extern.slf4j.Slf4j;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
org.springframework.web.bind.annotation.RestController
;
import
sun.util.calendar.BaseCalendar
;
import
java.time.LocalDateTime
;
import
java.util.ArrayList
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.List
;
...
@@ -44,6 +51,9 @@ public class SpUnclaimedController {
...
@@ -44,6 +51,9 @@ public class SpUnclaimedController {
private
IUnclaimedManager
unclaimedManager
;
private
IUnclaimedManager
unclaimedManager
;
@Autowired
@Autowired
private
ILiteOrderManager
liteOrderManager
;
@Autowired
private
TaskService
taskService
;
private
TaskService
taskService
;
@ApiOperation
(
"获取正在执行出库单"
)
@ApiOperation
(
"获取正在执行出库单"
)
...
@@ -69,6 +79,24 @@ public class SpUnclaimedController {
...
@@ -69,6 +79,24 @@ public class SpUnclaimedController {
unclaimedManager
.
save
(
unclaimed
);
unclaimedManager
.
save
(
unclaimed
);
}
}
unclaimedList
.
add
(
unclaimed
);
unclaimedList
.
add
(
unclaimed
);
String
orderNo
=
unclaimed
.
getOrderNo
();
// if (ObjectUtil.isNotNull(liteOrderManager.findByOrderNo(orderNo))) {
// continue;
// }
List
<
LiteOrderItem
>
liteOrderItems
=
new
ArrayList
<>();
for
(
UnclaimedDetail
unclaimedDetail
:
unclaimed
.
getDetailList
())
{
LiteOrderItem
liteOrderItem
=
new
LiteOrderItem
();
liteOrderItem
.
setPn
(
unclaimedDetail
.
getPartno
());
// 需求数量
liteOrderItem
.
setNeedReelCount
(
unclaimedDetail
.
getApplyQty
());
liteOrderItem
.
setNeedNum
(
unclaimedDetail
.
getApplyQty
());
liteOrderItem
.
setLine
(
"s1"
);
liteOrderItems
.
add
(
liteOrderItem
);
}
LiteOrder
liteOrder
=
new
LiteOrder
(
orderNo
,
liteOrderItems
);
liteOrder
.
setLine
(
"s1"
);
liteOrderManager
.
createWithItems
(
liteOrder
);
}
}
return
ResultBean
.
newOkResult
(
unclaimedList
);
return
ResultBean
.
newOkResult
(
unclaimedList
);
}
}
...
...
src/main/java/com/neotel/smfcore/custom/luxsan_sp/util/SpBoxUtil.java
查看文件 @
14e1195
...
@@ -4,11 +4,14 @@ import com.neotel.smfcore.common.bean.ReelLockPosInfo;
...
@@ -4,11 +4,14 @@ import com.neotel.smfcore.common.bean.ReelLockPosInfo;
import
com.neotel.smfcore.common.utils.ReelLockPosUtil
;
import
com.neotel.smfcore.common.utils.ReelLockPosUtil
;
import
com.neotel.smfcore.core.barcode.service.po.Barcode
;
import
com.neotel.smfcore.core.barcode.service.po.Barcode
;
import
com.neotel.smfcore.core.device.util.DataCache
;
import
com.neotel.smfcore.core.device.util.DataCache
;
import
com.neotel.smfcore.core.order.LiteOrderCache
;
import
com.neotel.smfcore.core.order.service.po.LiteOrder
;
import
com.neotel.smfcore.core.order.service.po.LiteOrderItem
;
import
com.neotel.smfcore.core.storage.service.manager.IStoragePosManager
;
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.Storage
;
import
com.neotel.smfcore.core.storage.service.po.StoragePos
;
import
com.neotel.smfcore.core.storage.service.po.StoragePos
;
import
com.neotel.smfcore.core.system.util.TaskService
;
import
com.neotel.smfcore.core.system.util.TaskService
;
import
com.neotel.smfcore.custom.luxsan_sp.
util.bean.BoxTaskDetail
;
import
com.neotel.smfcore.custom.luxsan_sp.
bean.*
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
...
@@ -16,18 +19,28 @@ import org.springframework.stereotype.Service;
...
@@ -16,18 +19,28 @@ import org.springframework.stereotype.Service;
import
java.util.ArrayList
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.List
;
import
java.util.function.Function
;
import
java.util.function.Function
;
import
java.util.stream.Collectors
;
@Slf4j
@Slf4j
@Service
@Service
public
class
SpBoxUtil
{
public
class
SpBoxUtil
{
private
static
BoxTaskDetail
boxTaskDetail
;
public
void
setBoxTaskDetail
(
BoxTaskDetail
boxTaskDetail
)
{
this
.
boxTaskDetail
=
boxTaskDetail
;
private
static
IStoragePosManager
storagePosManager
;
private
static
SpareNoCache
spareNoCache
;
@Autowired
public
void
setSpareNoCache
(
SpareNoCache
spareNoCache
){
SpBoxUtil
.
spareNoCache
=
spareNoCache
;
}
}
private
static
ReturnNoCache
returnNoCache
;
@Autowired
public
void
setReturnNoCache
(
ReturnNoCache
returnNoCache
){
SpBoxUtil
.
returnNoCache
=
returnNoCache
;
}
private
static
IStoragePosManager
storagePosManager
;
@Autowired
@Autowired
public
void
setStoragePosManager
(
IStoragePosManager
manager
){
public
void
setStoragePosManager
(
IStoragePosManager
manager
){
...
@@ -48,6 +61,42 @@ public class SpBoxUtil {
...
@@ -48,6 +61,42 @@ public class SpBoxUtil {
SpBoxUtil
.
dataCache
=
cache
;
SpBoxUtil
.
dataCache
=
cache
;
}
}
private
static
LiteOrderCache
liteOrderCache
;
@Autowired
public
void
setLiteOrderCache
(
LiteOrderCache
liteOrderCache
){
SpBoxUtil
.
liteOrderCache
=
liteOrderCache
;
}
private
static
OrderNoCache
orderNoCache
;
@Autowired
public
void
setOrderNoCache
(
OrderNoCache
orderNoCache
)
{
SpBoxUtil
.
orderNoCache
=
orderNoCache
;}
/**
* 获取当前正在执行的工单的详情信息
* @return
*/
public
static
List
<
SpareNoDetail
>
getActiveDetails
()
{
List
<
SpareNoDetail
>
spareNoDetails
=
null
;
// 获取正在执行入库的工单
BaseNo
no
=
spareNoCache
.
getExecutIngSpareNo
();
spareNoDetails
=
no
.
getDetailList
();
if
(
spareNoDetails
==
null
)
{
no
=
returnNoCache
.
getExecutingOrderNo
();
spareNoDetails
=
no
.
getDetailList
();
}
// 获取正在执行出库的工单
if
(
spareNoDetails
==
null
)
{
Unclaimed
orderNo
=
orderNoCache
.
getExecutingOrderNo
();
spareNoDetails
=
orderNo
.
getDetailList
().
stream
().
map
((
Function
<
UnclaimedDetail
,
SpareNoDetail
>)
unclaimedDetail
->
{
SpareNoDetail
detail
=
new
SpareNoDetail
();
detail
.
setAlrInQty
(
unclaimedDetail
.
getAlrInQty
());
detail
.
setInQty
(
unclaimedDetail
.
getApplyQty
());
detail
.
setPartno
(
unclaimedDetail
.
getPartno
());
detail
.
setPartname
(
unclaimedDetail
.
getPartname
());
return
null
;
}).
collect
(
Collectors
.
toList
());
}
return
spareNoDetails
;
}
public
static
List
<
List
<
Object
>>
getBoxInfo
(
Barcode
barcode
,
String
suffix
)
{
public
static
List
<
List
<
Object
>>
getBoxInfo
(
Barcode
barcode
,
String
suffix
)
{
...
@@ -55,15 +104,26 @@ public class SpBoxUtil {
...
@@ -55,15 +104,26 @@ public class SpBoxUtil {
List
<
Barcode
>
subCodeList
=
barcode
.
getSubCodeList
();
List
<
Barcode
>
subCodeList
=
barcode
.
getSubCodeList
();
String
boxStr
=
barcode
.
getBarcode
();
String
boxStr
=
barcode
.
getBarcode
();
if
(!
boxTaskDetail
.
getBoxBarcode
().
equals
(
boxStr
))
{
return
null
;
}
List
<
List
<
Object
>>
pars
=
new
ArrayList
<>();
List
<
List
<
Object
>>
pars
=
new
ArrayList
<>();
// 正在执行的任务的details
List
<
SpareNoDetail
>
activeDetails
=
getActiveDetails
();
for
(
int
i
=
1
;
i
<=
6
;
i
++)
{
for
(
int
i
=
1
;
i
<=
6
;
i
++)
{
List
<
Object
>
par
=
new
ArrayList
<>();
List
<
Object
>
par
=
new
ArrayList
<>();
String
materialBarcode
=
boxStr
+
"-0"
+
i
;
String
partNumber
=
getPartNumber
(
subCodeList
,
materialBarcode
);
for
(
SpareNoDetail
activeDetail
:
activeDetails
)
{
if
(
activeDetail
.
getPartno
().
equals
(
partNumber
))
{
par
.
add
(
activeDetail
.
getInQty
());
// 该pn总共需要的数量
}
}
par
.
add
(
getAmount
(
subCodeList
,
materialBarcode
));
//数量
par
.
add
(
i
);
//隔口号
par
.
add
(
i
);
//隔口号
par
.
add
(
getAmount
(
subCodeList
,
boxStr
+
"-0"
+
i
));
//数量
par
.
add
(
partNumber
);
//料号
par
.
add
(
getPartNumber
(
subCodeList
,
boxStr
+
"-0"
+
i
));
//料号
for
(
SpareNoDetail
activeDetail
:
activeDetails
)
{
if
(
activeDetail
.
getPartno
().
equals
(
partNumber
))
{
par
.
add
(
activeDetail
.
getAlrInQty
());
// 该pn已完成数量
}
}
pars
.
add
(
par
);
pars
.
add
(
par
);
}
}
...
...
src/main/java/com/neotel/smfcore/custom/luxsan_sp/util/bean/BoxTaskDetail.java
deleted
100644 → 0
查看文件 @
4088f2f
package
com
.
neotel
.
smfcore
.
custom
.
luxsan_sp
.
util
.
bean
;
import
com.neotel.smfcore.core.barcode.service.po.Barcode
;
import
com.neotel.smfcore.custom.luxsan_sp.bean.SpareNo
;
import
com.neotel.smfcore.custom.luxsan_sp.bean.SpareNoDetail
;
import
com.neotel.smfcore.custom.luxsan_sp.enums.SpareNostatus
;
import
com.neotel.smfcore.custom.luxsan_sp.service.manager.ISpareNoManager
;
import
com.neotel.smfcore.custom.luxsan_sp.util.OrderNoCache
;
import
com.neotel.smfcore.custom.luxsan_sp.util.ReturnNoCache
;
import
com.neotel.smfcore.custom.luxsan_sp.util.SpareNoCache
;
import
lombok.*
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
java.util.List
;
@Data
@AllArgsConstructor
@NoArgsConstructor
public
class
BoxTaskDetail
{
// 类型
private
Integer
type
;
// 单号
private
String
orderNo
;
// 箱号
private
String
boxBarcode
;
// 具体到格口的任务内容
private
List
<
BinDetail
>
binDetails
;
@Data
public
static
class
BinDetail
{
private
Integer
binNum
;
private
String
partNumber
;
private
Integer
qty
;
private
Integer
arlQty
;
}
}
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论