Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
smf-core
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit b1868acc
由
zshaohui
编写于
2023-08-02 14:22:42 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
1.呼叫空箱bug修改
2.工单出库bug修改 3.入库时增加重量字段
1 个父辈
5444868a
隐藏空白字符变更
内嵌
并排
正在显示
9 个修改的文件
包含
129 行增加
和
44 行删除
src/main/java/com/neotel/smfcore/core/barcode/service/po/Barcode.java
src/main/java/com/neotel/smfcore/core/barcode/service/po/Component.java
src/main/java/com/neotel/smfcore/core/barcode/utils/CodeResolve.java
src/main/java/com/neotel/smfcore/core/device/handler/impl/BaseDeviceHandler.java
src/main/java/com/neotel/smfcore/core/order/LiteOrderCache.java
src/main/java/com/neotel/smfcore/core/storage/bean/PosUseItem.java
src/main/java/com/neotel/smfcore/core/storage/rest/MaterialBoxController.java
src/main/java/com/neotel/smfcore/core/storage/rest/StoragePosController.java
src/main/java/com/neotel/smfcore/core/system/service/manager/impl/HumitureManagerImpl.java
src/main/java/com/neotel/smfcore/core/barcode/service/po/Barcode.java
查看文件 @
b1868ac
...
...
@@ -169,6 +169,12 @@ public class Barcode extends BasePo implements Serializable {
* 是否要出库,true是出库
*/
private
boolean
isOut
=
false
;
/**
* 重量
*/
private
String
weight
;
/**
* 是否是锡膏
*/
...
...
@@ -476,7 +482,7 @@ public class Barcode extends BasePo implements Serializable {
return
null
;
}
public
void
UpdateSubCode
(
Barcode
barcode
)
{
public
synchronized
void
UpdateSubCode
(
Barcode
barcode
)
{
if
(
subCodeList
==
null
)
{
subCodeList
=
Lists
.
newArrayList
();
...
...
src/main/java/com/neotel/smfcore/core/barcode/service/po/Component.java
查看文件 @
b1868ac
...
...
@@ -88,7 +88,7 @@ public class Component extends BasePo implements Serializable {
* 供应商PN,用于扫码贴标机转换PN
*/
// private String supplierPn;
//
uid
//
private
String
uid
;
//物料描述
...
...
src/main/java/com/neotel/smfcore/core/barcode/utils/CodeResolve.java
查看文件 @
b1868ac
...
...
@@ -4,6 +4,7 @@ import com.google.common.base.Strings;
import
com.google.common.collect.Lists
;
import
com.neotel.smfcore.common.exception.ValidateException
;
import
com.neotel.smfcore.common.utils.DateUtil
;
import
com.neotel.smfcore.common.utils.StringUtils
;
import
com.neotel.smfcore.core.barcode.bean.BarcodeRule
;
import
com.neotel.smfcore.core.barcode.bean.CodeBean
;
import
com.neotel.smfcore.core.barcode.enums.COMPONENT_TYPE
;
...
...
@@ -51,6 +52,15 @@ public class CodeResolve {
* 解析条码为单个 Barcode,自动保存到数据库
*/
public
CodeBean
resolveSingleCode
(
String
barcodeItemStr
,
int
type
){
log
.
info
(
"解析条码传值为:"
+
barcodeItemStr
);
//判断是否包含 || ,如果包含就把第二个设置成重量
String
weight
=
""
;
if
(
barcodeItemStr
.
contains
(
"//"
))
{
weight
=
barcodeItemStr
.
split
(
"//"
)[
1
];
if
(!
barcodeItemStr
.
contains
(
"http"
))
{
barcodeItemStr
=
barcodeItemStr
.
split
(
"//"
)[
0
];
}
}
if
(
barcodeRuleList
==
null
||
barcodeRuleList
.
isEmpty
()){
CodeBean
codeBean
=
new
CodeBean
();
...
...
@@ -129,7 +139,7 @@ public class CodeResolve {
Barcode
barcodeFromRule
=
codeBeanFromRule
.
getBarcode
();
if
(
barcodeFromRule
!=
null
){
boolean
needUpdate
=
false
;
int
lastLabelAmount
=
barcode
.
getLabelAmount
();
/*
int lastLabelAmount = barcode.getLabelAmount();
int currentLabelAmount = barcodeFromRule.getAmount();
if(currentLabelAmount != lastLabelAmount){
//本次解析出来的数量与上次条码解析出来的数量不一样,重新设置数量
...
...
@@ -137,7 +147,7 @@ public class CodeResolve {
barcode.setAmount(currentLabelAmount);
barcode.setLabelAmount(currentLabelAmount);
needUpdate = true;
}
}
*/
Date
produceDate
=
barcodeFromRule
.
getProduceDate
();
if
(
produceDate
!=
null
){
//抓取到了生产日期,未抓取到过期日期,重新设置过期日期
...
...
@@ -151,7 +161,6 @@ public class CodeResolve {
}
}
}
if
(
needUpdate
){
try
{
barcodeManager
.
save
(
barcode
);
...
...
@@ -160,7 +169,11 @@ public class CodeResolve {
}
}
}
//判断重量是否为空
if
(
StringUtils
.
isNotBlank
(
weight
)){
barcode
.
setWeight
(
weight
);
barcodeManager
.
save
(
barcode
);
}
codeBeanFromRule
.
setError
(
null
,
null
);
codeBeanFromRule
.
setCodeStr
(
barcode
.
getBarcode
());
codeBeanFromRule
.
setBarcode
(
barcode
);
...
...
@@ -245,8 +258,10 @@ public class CodeResolve {
barcodeManager
.
save
(
barcodeFromRule
);
}
}
//设置重量
if
(
StringUtils
.
isNotBlank
(
weight
)){
barcodeFromRule
.
setWeight
(
weight
);
}
barcode
=
barcodeManager
.
save
(
barcodeFromRule
);
codeBeanFromRule
.
setCodeStr
(
barcode
.
getBarcode
());
...
...
src/main/java/com/neotel/smfcore/core/device/handler/impl/BaseDeviceHandler.java
查看文件 @
b1868ac
...
...
@@ -713,6 +713,7 @@ public class BaseDeviceHandler implements IDeviceHandler {
barcode
.
setCheckOutDate
(
new
Date
(),
task
.
getOperator
());
barcode
.
setPosName
(
""
);
barcode
.
setOut
(
false
);
barcode
.
setOrderItemId
(
""
);
barcodeManager
.
save
(
barcode
);
task
.
setBatchInfo
(
barcode
.
getBatch
());
...
...
src/main/java/com/neotel/smfcore/core/order/LiteOrderCache.java
查看文件 @
b1868ac
...
...
@@ -239,7 +239,10 @@ public class LiteOrderCache {
*/
private
synchronized
void
finishedOrderTask
(
DataLog
task
)
throws
ValidateException
{
if
(
OP
.
CHECKOUT
==
task
.
getType
())
{
//2位的partNumber是料箱,跳过
if
(
task
.
getPartNumber
().
length
()
==
2
)
{
return
;
}
//更新工单状态
String
orderNo
=
task
.
getSourceName
();
if
(!
Strings
.
isNullOrEmpty
(
orderNo
))
{
...
...
src/main/java/com/neotel/smfcore/core/storage/bean/PosUseItem.java
0 → 100644
查看文件 @
b1868ac
package
com
.
neotel
.
smfcore
.
core
.
storage
.
bean
;
import
lombok.Data
;
@Data
public
class
PosUseItem
{
private
int
size
;
private
long
weight
;
private
String
posName
;
}
src/main/java/com/neotel/smfcore/core/storage/rest/MaterialBoxController.java
查看文件 @
b1868ac
package
com
.
neotel
.
smfcore
.
core
.
storage
.
rest
;
import
cn.hutool.core.convert.Convert
;
import
com.google.common.collect.Maps
;
import
com.neotel.smfcore.common.bean.ResultBean
;
import
com.neotel.smfcore.common.exception.ValidateException
;
...
...
@@ -23,6 +24,7 @@ import com.neotel.smfcore.core.order.LiteOrderCache;
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.bean.PosUseItem
;
import
com.neotel.smfcore.core.storage.enums.DeviceType
;
import
com.neotel.smfcore.core.storage.service.manager.IStoragePosManager
;
import
com.neotel.smfcore.core.storage.service.po.Storage
;
...
...
@@ -172,6 +174,7 @@ public class MaterialBoxController {
int
newAmount
=
oldAmount
-
opQty
;
subBarcode
.
setAmount
(
newAmount
);
subBarcode
.
setOut
(
false
);
subBarcode
.
setOrderItemId
(
null
);
subBarcode
=
barcodeManager
.
save
(
subBarcode
);
finishTask
(
barcode
,
OP
.
CHECKOUT
,
null
,
subBarcode
,
opQty
);
...
...
@@ -477,10 +480,33 @@ public class MaterialBoxController {
if
(
StringUtils
.
isNotBlank
(
storageId
))
{
c
.
and
(
"storageId"
).
is
(
storageId
);
}
Query
query
=
new
Query
(
c
).
with
(
Sort
.
by
(
Sort
.
Direction
.
ASC
,
"barcode.amount"
)).
limit
(
1
);
List
<
StoragePos
>
storagePoss
=
storagePosManager
.
findByQuery
(
query
);
if
(
storagePoss
!=
null
&&
!
storagePoss
.
isEmpty
())
{
return
storagePoss
.
get
(
0
);
//判断有没有空料箱
if
(
StringUtils
.
isBlank
(
partNumber
))
{
Query
query
=
new
Query
(
c
).
addCriteria
(
Criteria
.
where
(
"barcode.subCodeList"
).
exists
(
false
));
StoragePos
pos
=
storagePosManager
.
findByQueryOne
(
query
);
if
(
pos
!=
null
)
{
return
pos
;
}
}
Query
query
=
new
Query
(
c
);
List
<
StoragePos
>
storagePosList
=
storagePosManager
.
findByQuery
(
query
);
if
(
storagePosList
!=
null
&&
!
storagePosList
.
isEmpty
())
{
List
<
PosUseItem
>
posUseItemList
=
storagePosList
.
stream
().
map
(
item
->
{
PosUseItem
posUseItem
=
new
PosUseItem
();
int
size
=
item
.
getBarcode
().
getSubCodeList
()
==
null
?
0
:
item
.
getBarcode
().
getSubCodeList
().
size
();
String
weight
=
item
.
getBarcode
().
getWeight
();
String
posName
=
item
.
getPosName
();
posUseItem
.
setSize
(
size
);
posUseItem
.
setPosName
(
posName
);
posUseItem
.
setWeight
(
StringUtils
.
isBlank
(
weight
)
?
999
:
Double
.
valueOf
(
weight
).
intValue
());
return
posUseItem
;
}).
collect
(
Collectors
.
toList
());
posUseItemList
=
posUseItemList
.
stream
().
sorted
(
Comparator
.
comparing
(
PosUseItem:
:
getWeight
).
thenComparing
(
PosUseItem:
:
getSize
)).
collect
(
Collectors
.
toList
());
PosUseItem
posUseItem
=
posUseItemList
.
get
(
0
);
List
<
StoragePos
>
newPosNameList
=
storagePosList
.
stream
().
filter
(
item
->
{
return
item
.
getPosName
().
equals
(
posUseItem
.
getPosName
());
}).
collect
(
Collectors
.
toList
());
return
newPosNameList
.
get
(
0
);
}
return
null
;
}
...
...
src/main/java/com/neotel/smfcore/core/storage/rest/StoragePosController.java
查看文件 @
b1868ac
...
...
@@ -331,22 +331,22 @@ public class StoragePosController {
@GetMapping
(
value
=
"/find/download"
)
@PreAuthorize
(
"@el.check('checkOut')"
)
public
void
download
(
HttpServletResponse
response
,
StoragePosFindCriteria
criteria
,
Pageable
pageable
,
HttpServletRequest
request
)
throws
IOException
{
Query
query
=
getPosFindCriteria
(
criteria
);
Query
query
=
getPosFindCriteria
(
criteria
);
FileUtil
.
downloadExcel
(
query
,
pageable
,
response
,
new
IExcelDownLoad
()
{
@Override
public
List
<
List
<
String
>>
getHeader
()
{
List
<
List
<
String
>>
header
=
new
ArrayList
<>();
Locale
locale
=
request
.
getLocale
();
header
.
add
(
Lists
.
newArrayList
(
MessageUtils
.
getText
(
"smfcore.storagePos.barcode"
,
locale
,
"条码编号"
)));
header
.
add
(
Lists
.
newArrayList
(
MessageUtils
.
getText
(
"smfcore.storagePos.partNumber"
,
locale
,
"物料编号"
)));
header
.
add
(
Lists
.
newArrayList
(
MessageUtils
.
getText
(
"smfcore.storagePos.proDate"
,
locale
,
"生产日期"
)));
header
.
add
(
Lists
.
newArrayList
(
MessageUtils
.
getText
(
"smfcore.storagePos.expireDate"
,
locale
,
"过期时间"
)));
header
.
add
(
Lists
.
newArrayList
(
MessageUtils
.
getText
(
"smfcore.storagePos.posName"
,
locale
,
"库位号"
)));
header
.
add
(
Lists
.
newArrayList
(
MessageUtils
.
getText
(
"smfcore.storagePos.lockName"
,
locale
,
"工单号"
)));
header
.
add
(
Lists
.
newArrayList
(
MessageUtils
.
getText
(
"smfcore.storagePos.amount"
,
locale
,
"数量"
)));
header
.
add
(
Lists
.
newArrayList
(
MessageUtils
.
getText
(
"smfcore.storagePos.putInTime"
,
locale
,
"首次入库时间"
)));
header
.
add
(
Lists
.
newArrayList
(
MessageUtils
.
getText
(
"smfcore.storagePos.putInDate"
,
locale
,
"入库时间"
)));
header
.
add
(
Lists
.
newArrayList
(
MessageUtils
.
getText
(
"smfcore.storagePos.barcode"
,
locale
,
"条码编号"
)));
header
.
add
(
Lists
.
newArrayList
(
MessageUtils
.
getText
(
"smfcore.storagePos.partNumber"
,
locale
,
"物料编号"
)));
header
.
add
(
Lists
.
newArrayList
(
MessageUtils
.
getText
(
"smfcore.storagePos.proDate"
,
locale
,
"生产日期"
)));
header
.
add
(
Lists
.
newArrayList
(
MessageUtils
.
getText
(
"smfcore.storagePos.expireDate"
,
locale
,
"过期时间"
)));
header
.
add
(
Lists
.
newArrayList
(
MessageUtils
.
getText
(
"smfcore.storagePos.posName"
,
locale
,
"库位号"
)));
header
.
add
(
Lists
.
newArrayList
(
MessageUtils
.
getText
(
"smfcore.storagePos.lockName"
,
locale
,
"工单号"
)));
header
.
add
(
Lists
.
newArrayList
(
MessageUtils
.
getText
(
"smfcore.storagePos.amount"
,
locale
,
"数量"
)));
header
.
add
(
Lists
.
newArrayList
(
MessageUtils
.
getText
(
"smfcore.storagePos.putInTime"
,
locale
,
"首次入库时间"
)));
header
.
add
(
Lists
.
newArrayList
(
MessageUtils
.
getText
(
"smfcore.storagePos.putInDate"
,
locale
,
"入库时间"
)));
header
.
add
(
Lists
.
newArrayList
(
"箱号"
));
return
header
;
}
...
...
@@ -355,28 +355,52 @@ public class StoragePosController {
List
<
List
<
Object
>>
dataList
=
new
ArrayList
<>();
DateFormat
dateFormat
=
new
SimpleDateFormat
(
"yyyy-MM-dd HH:mm:ss"
);
List
<
Map
<
String
,
Object
>>
list
=
new
ArrayList
<>();
List
<
StoragePos
>
storagePos
=
storagePosManager
.
findByQuery
(
query
,
pageable
);
List
<
StoragePos
>
storagePos
=
storagePosManager
.
findByQuery
(
query
,
pageable
);
for
(
StoragePos
pos
:
storagePos
)
{
String
proDate
=
pos
.
getBarcode
().
getProduceDate
()
==
null
?
""
:
dateFormat
.
format
(
pos
.
getBarcode
().
getProduceDate
());
String
expireDate
=
pos
.
getBarcode
().
getExpireDate
()
==
null
?
""
:
dateFormat
.
format
(
pos
.
getBarcode
().
getExpireDate
());
String
putInTime
=
(
pos
.
getBarcode
().
getPutInTime
()
==
-
1
)
?
""
:
dateFormat
.
format
(
new
Date
(
pos
.
getBarcode
().
getPutInTime
()));
if
(
ObjectUtil
.
isNotEmpty
(
putInTime
)){
putInTime
=
dateFormat
.
format
(
pos
.
getBarcode
().
getPutInDate
());
Barcode
barcode
=
pos
.
getBarcode
();
List
<
Barcode
>
subCodeList
=
barcode
.
getSubCodeList
();
if
(
subCodeList
!=
null
&&
!
subCodeList
.
isEmpty
())
{
for
(
Barcode
subCode
:
subCodeList
)
{
List
<
Object
>
data
=
new
ArrayList
<>();
data
.
add
(
subCode
.
getBarcode
());
data
.
add
(
subCode
.
getPartNumber
());
String
proDate
=
subCode
.
getProduceDate
()
==
null
?
""
:
dateFormat
.
format
(
subCode
.
getProduceDate
());
data
.
add
(
proDate
);
String
expireDate
=
subCode
.
getExpireDate
()
==
null
?
""
:
dateFormat
.
format
(
subCode
.
getExpireDate
());
data
.
add
(
expireDate
);
data
.
add
(
pos
.
getPosName
());
data
.
add
(
subCode
.
getLockName
());
data
.
add
(
subCode
.
getAmount
());
String
putInTime
=
(
barcode
.
getPutInTime
()
==
-
1
)
?
""
:
dateFormat
.
format
(
new
Date
(
barcode
.
getPutInTime
()));
if
(
ObjectUtil
.
isNotEmpty
(
putInTime
))
{
putInTime
=
dateFormat
.
format
(
barcode
.
getPutInDate
());
}
data
.
add
(
putInTime
);
data
.
add
(
dateFormat
.
format
(
barcode
.
getPutInDate
()));
data
.
add
(
barcode
.
getBarcode
());
dataList
.
add
(
data
);
}
}
else
{
String
proDate
=
pos
.
getBarcode
().
getProduceDate
()
==
null
?
""
:
dateFormat
.
format
(
pos
.
getBarcode
().
getProduceDate
());
String
expireDate
=
pos
.
getBarcode
().
getExpireDate
()
==
null
?
""
:
dateFormat
.
format
(
pos
.
getBarcode
().
getExpireDate
());
String
putInTime
=
(
pos
.
getBarcode
().
getPutInTime
()
==
-
1
)
?
""
:
dateFormat
.
format
(
new
Date
(
pos
.
getBarcode
().
getPutInTime
()));
if
(
ObjectUtil
.
isNotEmpty
(
putInTime
))
{
putInTime
=
dateFormat
.
format
(
pos
.
getBarcode
().
getPutInDate
());
}
List
<
Object
>
data
=
new
ArrayList
<>();
data
.
add
(
pos
.
getBarcode
().
getBarcode
());
data
.
add
(
pos
.
getBarcode
().
getPartNumber
());
data
.
add
(
proDate
);
data
.
add
(
expireDate
);
data
.
add
(
pos
.
getPosName
());
data
.
add
(
pos
.
getBarcode
().
getLockName
());
data
.
add
(
pos
.
getBarcode
().
getAmount
());
data
.
add
(
putInTime
);
data
.
add
(
dateFormat
.
format
(
pos
.
getBarcode
().
getPutInDate
()));
data
.
add
(
""
);
dataList
.
add
(
data
);
}
List
<
Object
>
data
=
new
ArrayList
<>();
data
.
add
(
pos
.
getBarcode
().
getBarcode
());
data
.
add
(
pos
.
getBarcode
().
getPartNumber
());
data
.
add
(
proDate
);
data
.
add
(
expireDate
);
data
.
add
(
pos
.
getPosName
());
data
.
add
(
pos
.
getBarcode
().
getLockName
());
data
.
add
(
pos
.
getBarcode
().
getAmount
());
data
.
add
(
putInTime
);
data
.
add
(
dateFormat
.
format
(
pos
.
getBarcode
().
getPutInDate
()));
dataList
.
add
(
data
);
}
return
dataList
;
}
...
...
src/main/java/com/neotel/smfcore/core/system/service/manager/impl/HumitureManagerImpl.java
查看文件 @
b1868ac
...
...
@@ -41,6 +41,6 @@ public class HumitureManagerImpl implements IHumitureManager {
@Override
public
List
<
Humiture
>
findByQuery
(
Query
query
)
{
return
null
;
return
humitureDao
.
findByQuery
(
query
)
;
}
}
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论