Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
smf-core
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit d035a6f3
由
LN
编写于
2023-05-30 13:26:26 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
新呆滞物料功能
1 个父辈
7bc06f7e
显示空白字符变更
内嵌
并排
正在显示
15 个修改的文件
包含
201 行增加
和
22 行删除
src/main/java/com/neotel/smfcore/core/barcode/rest/ComponentController.java
src/main/java/com/neotel/smfcore/core/barcode/rest/bean/dto/BarcodeDto.java
src/main/java/com/neotel/smfcore/core/barcode/rest/bean/dto/ComponentDto.java
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/device/handler/impl/NLPShelfHandler.java
src/main/java/com/neotel/smfcore/core/device/util/DataCache.java
src/main/java/com/neotel/smfcore/core/hik/rest/SingleInController.java
src/main/java/com/neotel/smfcore/core/storage/rest/MaterialBoxController.java
src/main/java/com/neotel/smfcore/core/storage/rest/MaterialStockController.java
src/main/java/com/neotel/smfcore/core/storage/service/manager/impl/StoragePosManagerImpl.java
src/main/java/com/neotel/smfcore/core/system/util/TaskService.java
修改记录.txt
src/main/java/com/neotel/smfcore/core/barcode/rest/ComponentController.java
查看文件 @
d035a6f
...
@@ -78,6 +78,7 @@ public class ComponentController {
...
@@ -78,6 +78,7 @@ public class ComponentController {
headerList
.
add
(
Lists
.
newArrayList
(
"截料设置盘数"
));
headerList
.
add
(
Lists
.
newArrayList
(
"截料设置盘数"
));
headerList
.
add
(
Lists
.
newArrayList
(
"安全库存盘数"
));
headerList
.
add
(
Lists
.
newArrayList
(
"安全库存盘数"
));
headerList
.
add
(
Lists
.
newArrayList
(
"呆滞天数"
));
headerList
.
add
(
Lists
.
newArrayList
(
"呆滞天数"
));
headerList
.
add
(
Lists
.
newArrayList
(
"最大存储天数"
));
headerList
.
add
(
Lists
.
newArrayList
(
"物料间距"
));
headerList
.
add
(
Lists
.
newArrayList
(
"物料间距"
));
headerList
.
add
(
Lists
.
newArrayList
(
"尺寸是否已确认"
));
headerList
.
add
(
Lists
.
newArrayList
(
"尺寸是否已确认"
));
headerList
.
add
(
Lists
.
newArrayList
(
"描述"
));
headerList
.
add
(
Lists
.
newArrayList
(
"描述"
));
...
@@ -100,6 +101,7 @@ public class ComponentController {
...
@@ -100,6 +101,7 @@ public class ComponentController {
data
.
add
(
component
.
getMinStoreNum
());
data
.
add
(
component
.
getMinStoreNum
());
data
.
add
(
component
.
getSafetyStoreNum
());
data
.
add
(
component
.
getSafetyStoreNum
());
data
.
add
(
component
.
getSluggishDay
());
data
.
add
(
component
.
getSluggishDay
());
data
.
add
(
component
.
getMaxSluggishDay
());
data
.
add
(
component
.
getDistance
());
data
.
add
(
component
.
getDistance
());
String
confirmed
=
"否"
;
String
confirmed
=
"否"
;
if
(
component
.
isSizeConfirmed
()){
if
(
component
.
isSizeConfirmed
()){
...
@@ -143,6 +145,9 @@ public class ComponentController {
...
@@ -143,6 +145,9 @@ public class ComponentController {
if
(
component
.
getId
()
==
null
)
{
if
(
component
.
getId
()
==
null
)
{
throw
new
ValidateException
(
"smfcore.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"ID"
}
);
throw
new
ValidateException
(
"smfcore.valueCanotNull"
,
"{0}不能为空"
,
new
String
[]{
"ID"
}
);
}
}
if
(
component
.
getSluggishDay
()>
0
&&
component
.
getSluggishDay
()>
component
.
getMaxSluggishDay
()){
throw
new
ValidateException
(
"smfcore.sluggishDay.error"
,
"最大呆滞天数必须大于呆滞天数"
);
}
componentManager
.
saveComponent
(
component
);
componentManager
.
saveComponent
(
component
);
// //修改元器件时更新storagePos中的数据
// //修改元器件时更新storagePos中的数据
// if(!ObjectUtil.isEmpty(component.getPartNumber()))
// if(!ObjectUtil.isEmpty(component.getPartNumber()))
...
@@ -262,7 +267,7 @@ public class ComponentController {
...
@@ -262,7 +267,7 @@ public class ComponentController {
// String[] titleArray = new String[]{"料件编号" , "数量", "尺寸", "高度", "物料间距", "截料设置盘数", "安全库存盘数","补充盘数上限"
// String[] titleArray = new String[]{"料件编号" , "数量", "尺寸", "高度", "物料间距", "截料设置盘数", "安全库存盘数","补充盘数上限"
// , "呆滞天数", "整盘比", "散盘比", "描述"};
// , "呆滞天数", "整盘比", "散盘比", "描述"};
String
[]
titleArray
=
new
String
[]{
"materialNo"
,
"amount"
,
"plateSize"
,
"height"
,
"distance"
,
"minStoreNum"
,
"safetyStoreNum"
,
"maxStoreNum"
String
[]
titleArray
=
new
String
[]{
"materialNo"
,
"amount"
,
"plateSize"
,
"height"
,
"distance"
,
"minStoreNum"
,
"safetyStoreNum"
,
"maxStoreNum"
,
"sluggishDay"
,
"wholeReel"
,
"halfReel"
,
"description"
};
,
"sluggishDay"
,
"maxSluggishDay"
,
"wholeReel"
,
"halfReel"
,
"description"
};
for
(
String
title
:
for
(
String
title
:
titleArray
)
{
titleArray
)
{
...
@@ -282,6 +287,7 @@ public class ComponentController {
...
@@ -282,6 +287,7 @@ public class ComponentController {
map
.
put
(
"safetyStoreNum"
,
""
);
map
.
put
(
"safetyStoreNum"
,
""
);
map
.
put
(
"maxStoreNum"
,
""
);
map
.
put
(
"maxStoreNum"
,
""
);
map
.
put
(
"sluggishDay"
,
""
);
map
.
put
(
"sluggishDay"
,
""
);
map
.
put
(
"maxSluggishDay"
,
""
);
map
.
put
(
"wholeReel"
,
""
);
map
.
put
(
"wholeReel"
,
""
);
map
.
put
(
"halfReel"
,
""
);
map
.
put
(
"halfReel"
,
""
);
map
.
put
(
"description"
,
""
);
map
.
put
(
"description"
,
""
);
...
@@ -321,6 +327,7 @@ public class ComponentController {
...
@@ -321,6 +327,7 @@ public class ComponentController {
int
safetyStoreNumIndex
=
csvRead
.
getIndex
(
"安全库存盘数"
,
"safetyStoreNum"
);
int
safetyStoreNumIndex
=
csvRead
.
getIndex
(
"安全库存盘数"
,
"safetyStoreNum"
);
int
maxStoreNumIndex
=
csvRead
.
getIndex
(
"补充最大盘数"
,
"maxStoreNum"
);
int
maxStoreNumIndex
=
csvRead
.
getIndex
(
"补充最大盘数"
,
"maxStoreNum"
);
int
sluggishDayIndex
=
csvRead
.
getIndex
(
"呆滞天数"
,
"sluggishDay"
);
int
sluggishDayIndex
=
csvRead
.
getIndex
(
"呆滞天数"
,
"sluggishDay"
);
int
maxSluggishDayIndex
=
csvRead
.
getIndex
(
"最大存储天数"
,
"maxSluggishDay"
);
int
wholeReelIndex
=
csvRead
.
getIndex
(
"整盘"
,
"wholeReel"
);
int
wholeReelIndex
=
csvRead
.
getIndex
(
"整盘"
,
"wholeReel"
);
int
halfReelIndex
=
csvRead
.
getIndex
(
"散盘"
,
"halfReel"
);
int
halfReelIndex
=
csvRead
.
getIndex
(
"散盘"
,
"halfReel"
);
int
descriptionIndex
=
csvRead
.
getIndex
(
"描述"
,
"description"
);
int
descriptionIndex
=
csvRead
.
getIndex
(
"描述"
,
"description"
);
...
@@ -354,6 +361,7 @@ public class ComponentController {
...
@@ -354,6 +361,7 @@ public class ComponentController {
item
.
setSafetyStoreNum
(
getIntValue
(
lineValues
,
safetyStoreNumIndex
,
item
.
getSafetyStoreNum
()));
item
.
setSafetyStoreNum
(
getIntValue
(
lineValues
,
safetyStoreNumIndex
,
item
.
getSafetyStoreNum
()));
item
.
setMaxStoreNum
(
getIntValue
(
lineValues
,
maxStoreNumIndex
,
item
.
getMaxStoreNum
()));
item
.
setMaxStoreNum
(
getIntValue
(
lineValues
,
maxStoreNumIndex
,
item
.
getMaxStoreNum
()));
item
.
setSluggishDay
(
getIntValue
(
lineValues
,
sluggishDayIndex
,
item
.
getSluggishDay
()));
item
.
setSluggishDay
(
getIntValue
(
lineValues
,
sluggishDayIndex
,
item
.
getSluggishDay
()));
item
.
setMaxSluggishDay
(
getIntValue
(
lineValues
,
maxSluggishDayIndex
,
item
.
getMaxSluggishDay
()));
item
.
setWholeReel
(
getIntValue
(
lineValues
,
wholeReelIndex
,
item
.
getWholeReel
()));
item
.
setWholeReel
(
getIntValue
(
lineValues
,
wholeReelIndex
,
item
.
getWholeReel
()));
item
.
setHalfReel
(
getIntValue
(
lineValues
,
halfReelIndex
,
item
.
getHalfReel
()));
item
.
setHalfReel
(
getIntValue
(
lineValues
,
halfReelIndex
,
item
.
getHalfReel
()));
item
.
setDescription
(
lineValues
[
descriptionIndex
].
trim
());
item
.
setDescription
(
lineValues
[
descriptionIndex
].
trim
());
...
...
src/main/java/com/neotel/smfcore/core/barcode/rest/bean/dto/BarcodeDto.java
查看文件 @
d035a6f
...
@@ -247,5 +247,11 @@ public class BarcodeDto implements Serializable {
...
@@ -247,5 +247,11 @@ public class BarcodeDto implements Serializable {
@ApiModelProperty
(
"物料间距"
)
@ApiModelProperty
(
"物料间距"
)
private
int
distance
=
0
;
private
int
distance
=
0
;
@ApiModelProperty
(
"呆滞到期时间(生成日期+呆滞日期)"
)
private
Date
sluggishDate
;
@ApiModelProperty
(
"最大存储期(生成日期+最大呆滞日期)"
)
private
Date
maxSluggishDate
;
}
}
src/main/java/com/neotel/smfcore/core/barcode/rest/bean/dto/ComponentDto.java
查看文件 @
d035a6f
...
@@ -162,6 +162,8 @@ public class ComponentDto implements Serializable {
...
@@ -162,6 +162,8 @@ public class ComponentDto implements Serializable {
@ApiModelProperty
(
"呆滞天数,默认0无需处理"
)
@ApiModelProperty
(
"呆滞天数,默认0无需处理"
)
private
int
sluggishDay
=
0
;
private
int
sluggishDay
=
0
;
@ApiModelProperty
(
"最大呆滞天数,默认0无需处理"
)
private
int
maxSluggishDay
=
0
;
@ApiModelProperty
(
"整盘比"
)
@ApiModelProperty
(
"整盘比"
)
private
int
wholeReel
=
0
;
private
int
wholeReel
=
0
;
...
...
src/main/java/com/neotel/smfcore/core/barcode/service/po/Barcode.java
查看文件 @
d035a6f
...
@@ -240,9 +240,21 @@ public class Barcode extends BasePo implements Serializable {
...
@@ -240,9 +240,21 @@ public class Barcode extends BasePo implements Serializable {
*/
*/
private
String
thickness
=
""
;
private
String
thickness
=
""
;
/**
/**
* 呆滞到期时间(入库时间+呆滞日期)
* 呆滞到期时间(入库时间+呆滞日期)
旧数据,暂不使用
*/
*/
private
Date
sluggishTime
;
private
Date
sluggishTime
;
/**
* 呆滞到期时间(生成日期+呆滞日期)
*/
private
Date
sluggishDate
;
/**
* 最大存储期(生成日期+最大呆滞日期)
*/
private
Date
maxSluggishDate
;
/**
/**
* 是否是冻结的湿敏物料
* 是否是冻结的湿敏物料
...
@@ -314,13 +326,42 @@ public class Barcode extends BasePo implements Serializable {
...
@@ -314,13 +326,42 @@ public class Barcode extends BasePo implements Serializable {
}
}
}
}
}
}
private
void
updateSluggishTime
(
int
sluggishDay
)
{
public
void
updateSluggishTime
(
int
sluggishDay
){
if
(
sluggishDay
>
0
)
{
if
(
sluggishDay
>
0
){
long
maxTime
=
sluggishDay
*
60
*
60
*
1000
;
long
maxTime
=
sluggishDay
*
60
*
60
*
1000
;
setSluggishTime
(
new
Date
(
putInTime
+
maxTime
));
setSluggishTime
(
new
Date
(
putInTime
+
maxTime
));
}
else
{
}
else
{
setSluggishTime
(
null
);
}
}
public
void
updateSluggishDate
(
List
<
Integer
>
params
)
{
if
(
produceDate
==
null
)
{
return
;
}
if
(
params
.
size
()
==
2
)
{
int
sluggishDay
=
params
.
get
(
0
);
int
maxsluggishDay
=
params
.
get
(
1
);
if
(
sluggishDay
>
0
)
{
Date
nTime
=
DateUtil
.
addDays
(
produceDate
,
sluggishDay
);
if
(
getSluggishDate
()
==
null
||
getSluggishDate
().
before
(
nTime
))
{
setSluggishDate
(
nTime
);
setMaxSluggishDate
(
nTime
);
}
if
(
maxsluggishDay
>
0
)
{
Date
newMaxTime
=
DateUtil
.
addDays
(
produceDate
,
maxsluggishDay
);
if
(
getMaxSluggishDate
()
==
null
||
getMaxSluggishDate
().
before
(
newMaxTime
))
{
setMaxSluggishDate
(
newMaxTime
);
}
}
}
else
{
setSluggishTime
(
null
);
setMaxSluggishDate
(
null
);
}
updateSluggishTime
(
sluggishDay
);
}
else
{
setSluggishTime
(
null
);
setSluggishTime
(
null
);
setMaxSluggishDate
(
null
);
}
}
}
}
...
...
src/main/java/com/neotel/smfcore/core/barcode/service/po/Component.java
查看文件 @
d035a6f
...
@@ -139,6 +139,10 @@ public class Component extends BasePo implements Serializable {
...
@@ -139,6 +139,10 @@ public class Component extends BasePo implements Serializable {
*/
*/
private
int
sluggishDay
=
0
;
private
int
sluggishDay
=
0
;
/**
* 最大呆滞天数,默认0无需处理
*/
private
int
maxSluggishDay
=
0
;
/**
/**
* 出库时是否需要授权
* 出库时是否需要授权
...
...
src/main/java/com/neotel/smfcore/core/barcode/utils/CodeResolve.java
查看文件 @
d035a6f
...
@@ -136,7 +136,12 @@ public class CodeResolve {
...
@@ -136,7 +136,12 @@ public class CodeResolve {
Date
produceDate
=
barcodeFromRule
.
getProduceDate
();
Date
produceDate
=
barcodeFromRule
.
getProduceDate
();
if
(
produceDate
!=
null
){
if
(
produceDate
!=
null
){
//抓取到了生产日期,未抓取到过期日期,重新设置过期日期
//抓取到了生产日期,未抓取到过期日期,重新设置过期日期
if
(
barcode
.
getExpireDate
()
==
null
){
if
(
barcode
.
getProduceDate
()==
null
){
log
.
info
(
"重新设置"
+
codeBeanFromRule
.
getCodeStr
()+
"生产日期 "
);
barcode
.
setProduceDate
(
produceDate
);
needUpdate
=
true
;
}
if
(
barcode
.
getExpireDate
()
==
null
){
if
(
validDay
>
0
){
if
(
validDay
>
0
){
log
.
info
(
"重新设置"
+
codeBeanFromRule
.
getCodeStr
()+
"生产日期和过期日期"
);
log
.
info
(
"重新设置"
+
codeBeanFromRule
.
getCodeStr
()+
"生产日期和过期日期"
);
Date
expireDate
=
DateUtil
.
addDays
(
produceDate
,
validDay
);
Date
expireDate
=
DateUtil
.
addDays
(
produceDate
,
validDay
);
...
...
src/main/java/com/neotel/smfcore/core/device/handler/impl/BaseDeviceHandler.java
查看文件 @
d035a6f
...
@@ -628,7 +628,7 @@ public class BaseDeviceHandler implements IDeviceHandler {
...
@@ -628,7 +628,7 @@ public class BaseDeviceHandler implements IDeviceHandler {
barcode
.
setUsedCount
(
barcode
.
getUsedCount
()
+
1
);
barcode
.
setUsedCount
(
barcode
.
getUsedCount
()
+
1
);
barcode
.
setPutInTime
(
System
.
currentTimeMillis
());
barcode
.
setPutInTime
(
System
.
currentTimeMillis
());
barcode
.
setPutInType
(
task
.
getInType
());
barcode
.
setPutInType
(
task
.
getInType
());
barcode
.
updateSluggish
Tim
e
(
dataCache
.
getPNsluggishDay
(
barcode
.
getPartNumber
()));
barcode
.
updateSluggish
Dat
e
(
dataCache
.
getPNsluggishDay
(
barcode
.
getPartNumber
()));
barcode
.
setInOpor
(
task
.
getOperator
());
barcode
.
setInOpor
(
task
.
getOperator
());
barcode
.
setCheckOutDate
(
null
,
""
);
barcode
.
setCheckOutDate
(
null
,
""
);
barcode
.
setPosName
(
task
.
getPosName
());
barcode
.
setPosName
(
task
.
getPosName
());
...
...
src/main/java/com/neotel/smfcore/core/device/handler/impl/NLPShelfHandler.java
查看文件 @
d035a6f
...
@@ -114,10 +114,17 @@ public class NLPShelfHandler extends BaseDeviceHandler{
...
@@ -114,10 +114,17 @@ public class NLPShelfHandler extends BaseDeviceHandler{
color
=
ORDER_COLOR
.
fromRgb
(
rgb
);
color
=
ORDER_COLOR
.
fromRgb
(
rgb
);
}
}
}
else
{
}
else
{
if
(
ObjectUtil
.
isNotEmpty
(
queueTask
.
getLightColor
())){
String
rgb
=
queueTask
.
getLightColor
();
color
=
ORDER_COLOR
.
fromRgb
(
rgb
);
}
else
{
//普通出库蓝色 DARKGREEN
//普通出库蓝色 DARKGREEN
color
=
ORDER_COLOR
.
DARKGREEN
;
color
=
ORDER_COLOR
.
DARKGREEN
;
}
}
}
}
}
if
(
color
!=
null
)
{
if
(
color
!=
null
)
{
queueTask
.
setStatus
(
OP_STATUS
.
EXECUTING
.
name
());
queueTask
.
setStatus
(
OP_STATUS
.
EXECUTING
.
name
());
taskService
.
updateQueueTask
(
queueTask
);
taskService
.
updateQueueTask
(
queueTask
);
...
...
src/main/java/com/neotel/smfcore/core/device/util/DataCache.java
查看文件 @
d035a6f
...
@@ -726,11 +726,17 @@ public class DataCache {
...
@@ -726,11 +726,17 @@ public class DataCache {
return
storage
;
return
storage
;
}
}
public
int
getPNsluggishDay
(
String
pn
)
{
public
List
<
Integer
>
getPNsluggishDay
(
String
pn
)
{
List
<
Integer
>
result
=
new
ArrayList
<>();
Component
component
=
componentManager
.
findOneByPN
(
pn
);
Component
component
=
componentManager
.
findOneByPN
(
pn
);
if
(
component
!=
null
)
{
if
(
component
!=
null
)
{
return
component
.
getSluggishDay
();
result
.
add
(
component
.
getSluggishDay
())
;
result
.
add
(
component
.
getMaxSluggishDay
());
}
else
{
result
.
add
(
0
);
result
.
add
(
0
);
}
}
return
0
;
return
result
;
}
}
}
}
src/main/java/com/neotel/smfcore/core/hik/rest/SingleInController.java
查看文件 @
d035a6f
...
@@ -303,7 +303,7 @@ public class SingleInController {
...
@@ -303,7 +303,7 @@ public class SingleInController {
barcode
.
setPutInType
(
inType
);
barcode
.
setPutInType
(
inType
);
barcode
.
setPutInTime
(
System
.
currentTimeMillis
());
barcode
.
setPutInTime
(
System
.
currentTimeMillis
());
barcode
.
updateSluggish
Tim
e
(
dataCache
.
getPNsluggishDay
(
barcode
.
getPartNumber
()));
barcode
.
updateSluggish
Dat
e
(
dataCache
.
getPNsluggishDay
(
barcode
.
getPartNumber
()));
barcodeManager
.
saveBarcode
(
barcode
);
barcodeManager
.
saveBarcode
(
barcode
);
dataLog
.
setNum
(
barcode
.
getAmount
());
dataLog
.
setNum
(
barcode
.
getAmount
());
...
...
src/main/java/com/neotel/smfcore/core/storage/rest/MaterialBoxController.java
查看文件 @
d035a6f
...
@@ -530,7 +530,7 @@ public class MaterialBoxController {
...
@@ -530,7 +530,7 @@ public class MaterialBoxController {
subBarcode
.
setAmount
(
opQty
);
subBarcode
.
setAmount
(
opQty
);
subBarcode
.
setUsedDate
(
new
Date
());
subBarcode
.
setUsedDate
(
new
Date
());
subBarcode
.
setPutInTime
(
System
.
currentTimeMillis
());
subBarcode
.
setPutInTime
(
System
.
currentTimeMillis
());
subBarcode
.
updateSluggish
Tim
e
(
dataCache
.
getPNsluggishDay
(
barcode
.
getPartNumber
()));
subBarcode
.
updateSluggish
Dat
e
(
dataCache
.
getPNsluggishDay
(
barcode
.
getPartNumber
()));
subBarcode
.
setCheckOutDate
(
null
,
""
);
subBarcode
.
setCheckOutDate
(
null
,
""
);
subBarcode
.
setHostBarcodeId
(
barcode
.
getId
());
subBarcode
.
setHostBarcodeId
(
barcode
.
getId
());
subBarcode
=
barcodeManager
.
save
(
subBarcode
);
subBarcode
=
barcodeManager
.
save
(
subBarcode
);
...
...
src/main/java/com/neotel/smfcore/core/storage/rest/MaterialStockController.java
查看文件 @
d035a6f
package
com
.
neotel
.
smfcore
.
core
.
storage
.
rest
;
package
com
.
neotel
.
smfcore
.
core
.
storage
.
rest
;
import
com.neotel.smfcore.common.bean.PageData
;
import
com.neotel.smfcore.common.bean.PageData
;
import
com.neotel.smfcore.common.bean.ResultBean
;
import
com.neotel.smfcore.common.utils.DateUtil
;
import
com.neotel.smfcore.common.utils.FileUtil
;
import
com.neotel.smfcore.common.utils.FileUtil
;
import
com.neotel.smfcore.common.utils.QueryHelp
;
import
com.neotel.smfcore.common.utils.QueryHelp
;
import
com.neotel.smfcore.common.utils.SecurityUtils
;
import
com.neotel.smfcore.core.barcode.service.manager.IBarcodeManager
;
import
com.neotel.smfcore.core.barcode.service.manager.IComponentManager
;
import
com.neotel.smfcore.core.barcode.service.manager.IComponentManager
;
import
com.neotel.smfcore.core.barcode.service.po.Barcode
;
import
com.neotel.smfcore.core.barcode.service.po.Component
;
import
com.neotel.smfcore.core.barcode.service.po.Component
;
import
com.neotel.smfcore.core.device.util.DataCache
;
import
com.neotel.smfcore.core.device.util.DataCache
;
import
com.neotel.smfcore.core.hik.enums.IN_OUT_TYPE
;
import
com.neotel.smfcore.core.language.util.MessageUtils
;
import
com.neotel.smfcore.core.language.util.MessageUtils
;
import
com.neotel.smfcore.core.order.enums.ORDER_COLOR
;
import
com.neotel.smfcore.core.storage.bean.InventoryItem
;
import
com.neotel.smfcore.core.storage.bean.InventoryItem
;
import
com.neotel.smfcore.core.storage.rest.dto.SafetyInventoryDto
;
import
com.neotel.smfcore.core.storage.rest.dto.SafetyInventoryDto
;
import
com.neotel.smfcore.core.storage.rest.dto.StoragePosDto
;
import
com.neotel.smfcore.core.storage.rest.dto.StoragePosDto
;
...
@@ -15,7 +22,9 @@ import com.neotel.smfcore.core.storage.rest.mapstruct.StoragePosMapper;
...
@@ -15,7 +22,9 @@ import com.neotel.smfcore.core.storage.rest.mapstruct.StoragePosMapper;
import
com.neotel.smfcore.core.storage.rest.query.SafetyInventoryQueryCriteria
;
import
com.neotel.smfcore.core.storage.rest.query.SafetyInventoryQueryCriteria
;
import
com.neotel.smfcore.core.storage.rest.query.StoragePosFindCriteria
;
import
com.neotel.smfcore.core.storage.rest.query.StoragePosFindCriteria
;
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.StoragePos
;
import
com.neotel.smfcore.core.storage.service.po.StoragePos
;
import
com.neotel.smfcore.core.system.util.TaskService
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
io.swagger.annotations.ApiOperation
;
import
lombok.RequiredArgsConstructor
;
import
lombok.RequiredArgsConstructor
;
...
@@ -27,9 +36,7 @@ import org.springframework.data.mongodb.core.query.Query;
...
@@ -27,9 +36,7 @@ import org.springframework.data.mongodb.core.query.Query;
import
org.springframework.http.HttpStatus
;
import
org.springframework.http.HttpStatus
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.security.access.prepost.PreAuthorize
;
import
org.springframework.security.access.prepost.PreAuthorize
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.*
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
import
javax.servlet.http.HttpServletResponse
;
...
@@ -56,6 +63,10 @@ public class MaterialStockController {
...
@@ -56,6 +63,10 @@ public class MaterialStockController {
@Autowired
@Autowired
private
final
SafetyInventoryMapper
safetyInventoryMapper
;
private
final
SafetyInventoryMapper
safetyInventoryMapper
;
@Autowired
private
TaskService
taskService
;
@Autowired
private
IBarcodeManager
barcodeManager
;
// @ApiOperation("导出呆滞物料")
// @ApiOperation("导出呆滞物料")
// @GetMapping(value = "/sluggishMaterials/download")
// @GetMapping(value = "/sluggishMaterials/download")
...
@@ -97,7 +108,7 @@ public class MaterialStockController {
...
@@ -97,7 +108,7 @@ public class MaterialStockController {
Criteria
baseCriteria
=
Criteria
.
where
(
"used"
).
is
(
true
);
Criteria
baseCriteria
=
Criteria
.
where
(
"used"
).
is
(
true
);
//需要查询已经过呆滞日期的物料
//需要查询已经过呆滞日期的物料
baseCriteria
.
and
(
"barcode.sluggish
Time"
).
exists
(
true
).
g
te
(
new
Date
());
baseCriteria
.
and
(
"barcode.sluggish
Date"
).
exists
(
true
).
l
te
(
new
Date
());
// baseCriteria.and("barcode.sluggishTime").gte(new Date());
// baseCriteria.and("barcode.sluggishTime").gte(new Date());
query
.
addCriteria
(
baseCriteria
);
query
.
addCriteria
(
baseCriteria
);
...
@@ -105,8 +116,73 @@ public class MaterialStockController {
...
@@ -105,8 +116,73 @@ public class MaterialStockController {
List
<
StoragePosDto
>
StoragePosDtos
=
storagePosMapper
.
toDto
(
pages
.
getContent
());
List
<
StoragePosDto
>
StoragePosDtos
=
storagePosMapper
.
toDto
(
pages
.
getContent
());
return
new
PageData
(
StoragePosDtos
,
pages
.
getTotalElements
());
return
new
PageData
(
StoragePosDtos
,
pages
.
getTotalElements
());
}
}
@ApiOperation
(
"延期呆滞物料"
)
@PutMapping
(
value
=
"/delayMaterials"
)
public
ResultBean
delayMaterials
(
@RequestBody
Map
<
String
,
Object
>
params
)
{
List
<
String
>
pids
=
(
List
<
String
>)
params
.
get
(
"pids"
);
int
okCount
=
0
;
for
(
String
pid
:
pids
)
{
StoragePos
pos
=
storagePosManager
.
get
(
pid
);
Barcode
barcode
=
pos
.
getBarcode
();
if
(
barcode
==
null
)
{
continue
;
}
int
delayDay
=
90
;
//物料存储期自动延长为min(原呆滞存储期+90天,最大呆滞存储期
Date
slTime
=
DateUtil
.
addDays
(
barcode
.
getSluggishDate
(),
delayDay
);
//最大呆滞时间
if
(
barcode
.
getMaxSluggishDate
()
!=
null
&&
barcode
.
getMaxSluggishDate
().
before
(
slTime
))
{
slTime
=
barcode
.
getMaxSluggishDate
();
}
//判断是否是同一天,同一天不需要重置
String
pStr
=
DateUtil
.
toDateString
(
barcode
.
getSluggishDate
(),
"yyyy-MM-dd"
);
String
currStr
=
DateUtil
.
toDateString
(
slTime
,
"yyyy-MM-dd"
);
if
(!
pStr
.
equals
(
currStr
))
{
barcode
.
setSluggishDate
(
slTime
);
barcodeManager
.
saveBarcode
(
barcode
);
pos
.
setBarcode
(
barcode
);
storagePosManager
.
save
(
pos
);
okCount
++;
log
.
info
(
"库位【"
+
pos
.
getPosName
()
+
"】条码【"
+
barcode
.
getBarcode
()
+
"】呆滞物料延期成功:从【"
+
pStr
+
"】到【"
+
currStr
+
"】,okCout="
+
okCount
);
}
}
return
ResultBean
.
newOkResult
(
okCount
);
}
@ApiOperation
(
"下架呆滞物料"
)
@PutMapping
(
value
=
"/checkOutMaterials"
)
public
ResultBean
checkOutMaterials
(
@RequestBody
Map
<
String
,
Object
>
params
)
{
List
<
String
>
pids
=
(
List
<
String
>)
params
.
get
(
"pids"
);
int
okCount
=
0
;
for
(
String
pid
:
pids
)
{
StoragePos
pos
=
storagePosManager
.
get
(
pid
);
if
(
pos
==
null
)
{
log
.
info
(
"下架呆滞物料时,库位号["
+
pid
+
"]不存在,忽略"
);
continue
;
}
Storage
storage
=
dataCache
.
getStorageById
(
pos
.
getStorageId
());
if
(
storage
==
null
)
{
log
.
info
(
"下架呆滞物料时,设备["
+
pos
.
getStorageId
()+
"]不存在,忽略"
);
continue
;
}
try
{
log
.
info
(
"下架呆滞物料时【"
+
storage
.
getName
()
+
"_"
+
storage
.
getCid
()
+
"】位置仓位【"
+
pos
.
getPosName
()
+
"】"
);
taskService
.
checkout
(
storage
,
pos
,
false
,
SecurityUtils
.
getCurrentUsername
(),
ORDER_COLOR
.
LIGHTBLUE
.
name
());
okCount
++;
}
catch
(
Exception
ex
){
log
.
info
(
"下架呆滞物料时【"
+
storage
.
getName
()
+
"】位置仓位【"
+
pos
.
getPosName
()
+
"】失败:"
+
ex
.
getMessage
());
}
}
return
ResultBean
.
newOkResult
(
okCount
);
}
@ApiOperation
(
"导出安全库存列表"
)
@ApiOperation
(
"导出安全库存列表"
)
@GetMapping
(
value
=
"/safetyInventory/download"
)
@GetMapping
(
value
=
"/safetyInventory/download"
)
...
...
src/main/java/com/neotel/smfcore/core/storage/service/manager/impl/StoragePosManagerImpl.java
查看文件 @
d035a6f
...
@@ -634,6 +634,11 @@ public class StoragePosManagerImpl implements IStoragePosManager {
...
@@ -634,6 +634,11 @@ public class StoragePosManagerImpl implements IStoragePosManager {
if
(
storageIdList
!=
null
)
{
if
(
storageIdList
!=
null
)
{
c
=
c
.
and
(
"storageId"
).
in
(
storageIdList
);
c
=
c
.
and
(
"storageId"
).
in
(
storageIdList
);
}
}
//未到呆滞期
c
.
orOperator
(
Criteria
.
where
(
"barcode.sluggishDate"
).
exists
(
false
),
Criteria
.
where
(
"barcode.sluggishDate"
).
gt
(
new
Date
()));
Query
q
=
new
Query
(
c
);
Query
q
=
new
Query
(
c
);
//数量从大到小,出库先进先出
//数量从大到小,出库先进先出
Sort
amountSort
=
Sort
.
by
(
Sort
.
Direction
.
DESC
,
"barcode.amount"
);
Sort
amountSort
=
Sort
.
by
(
Sort
.
Direction
.
DESC
,
"barcode.amount"
);
...
...
src/main/java/com/neotel/smfcore/core/system/util/TaskService.java
查看文件 @
d035a6f
...
@@ -38,6 +38,7 @@ import org.springframework.beans.factory.annotation.Autowired;
...
@@ -38,6 +38,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
java.util.*
;
import
java.util.*
;
import
java.util.List
;
/**
/**
* Created by sunke on 2021/7/13.
* Created by sunke on 2021/7/13.
...
@@ -86,7 +87,7 @@ public class TaskService {
...
@@ -86,7 +87,7 @@ public class TaskService {
if
(
barcode
!=
null
){
if
(
barcode
!=
null
){
barcode
.
setPutInTime
(
System
.
currentTimeMillis
());
barcode
.
setPutInTime
(
System
.
currentTimeMillis
());
barcode
.
updateSluggish
Tim
e
(
dataCache
.
getPNsluggishDay
(
barcode
.
getPartNumber
()));
barcode
.
updateSluggish
Dat
e
(
dataCache
.
getPNsluggishDay
(
barcode
.
getPartNumber
()));
barcodeManager
.
saveBarcode
(
barcode
);
barcodeManager
.
saveBarcode
(
barcode
);
}
}
String
loginUser
=
SecurityUtils
.
getLoginUsername
();
String
loginUser
=
SecurityUtils
.
getLoginUsername
();
...
@@ -106,6 +107,9 @@ public class TaskService {
...
@@ -106,6 +107,9 @@ public class TaskService {
* @throws ValidateException
* @throws ValidateException
*/
*/
public
synchronized
String
checkout
(
Storage
storage
,
StoragePos
pos
,
boolean
isSingleOut
,
String
opUserName
)
throws
ValidateException
{
public
synchronized
String
checkout
(
Storage
storage
,
StoragePos
pos
,
boolean
isSingleOut
,
String
opUserName
)
throws
ValidateException
{
return
checkout
(
storage
,
pos
,
isSingleOut
,
opUserName
,
""
);
}
public
synchronized
String
checkout
(
Storage
storage
,
StoragePos
pos
,
boolean
isSingleOut
,
String
opUserName
,
String
color
)
throws
ValidateException
{
if
(
pos
.
getBarcode
()
==
null
)
{
if
(
pos
.
getBarcode
()
==
null
)
{
String
msg
=
"库位["
+
pos
.
getPosName
()
+
"]中已无物料,忽略"
;
String
msg
=
"库位["
+
pos
.
getPosName
()
+
"]中已无物料,忽略"
;
log
.
info
(
msg
);
log
.
info
(
msg
);
...
@@ -114,9 +118,16 @@ public class TaskService {
...
@@ -114,9 +118,16 @@ public class TaskService {
DataLog
task
=
new
DataLog
(
storage
,
pos
.
getBarcode
(),
pos
);
DataLog
task
=
new
DataLog
(
storage
,
pos
.
getBarcode
(),
pos
);
task
.
setType
(
OP
.
CHECKOUT
);
task
.
setType
(
OP
.
CHECKOUT
);
if
(
pos
.
getBarcode
().
isLockMsl
()){
task
.
setOutType
(
IN_OUT_TYPE
.
OUT_NORMAL
);
if
(
ObjectUtil
.
isEmpty
(
color
))
{
if
(
pos
.
getBarcode
().
isLockMsl
())
{
task
.
setOutType
(
IN_OUT_TYPE
.
OUT_MSL
);
//湿敏物料出库
task
.
setOutType
(
IN_OUT_TYPE
.
OUT_MSL
);
//湿敏物料出库
}
}
}
else
{
// task.setOutType(outType);
//类型设置为普通出库,颜色设置为指定颜色
task
.
setLightColor
(
color
);
}
task
.
setPutInDate
(
pos
.
getBarcode
().
getPutInDate
());
task
.
setPutInDate
(
pos
.
getBarcode
().
getPutInDate
());
task
.
setStatus
(
OP_STATUS
.
WAIT
.
name
());
task
.
setStatus
(
OP_STATUS
.
WAIT
.
name
());
task
.
setSingleOut
(
isSingleOut
);
task
.
setSingleOut
(
isSingleOut
);
...
@@ -124,7 +135,6 @@ public class TaskService {
...
@@ -124,7 +135,6 @@ public class TaskService {
addTaskToExecute
(
task
);
addTaskToExecute
(
task
);
return
""
;
return
""
;
}
}
/**
/**
* 并盘出库方法,需提前验证是否可出库
* 并盘出库方法,需提前验证是否可出库
* @param storage
* @param storage
...
@@ -806,7 +816,7 @@ public class TaskService {
...
@@ -806,7 +816,7 @@ public class TaskService {
barcode
.
setUsedCount
(
barcode
.
getUsedCount
()
+
1
);
barcode
.
setUsedCount
(
barcode
.
getUsedCount
()
+
1
);
barcode
.
setUsedDate
(
new
Date
());
barcode
.
setUsedDate
(
new
Date
());
barcode
.
setPutInTime
(
System
.
currentTimeMillis
());
barcode
.
setPutInTime
(
System
.
currentTimeMillis
());
barcode
.
updateSluggish
Tim
e
(
dataCache
.
getPNsluggishDay
(
barcode
.
getPartNumber
()));
barcode
.
updateSluggish
Dat
e
(
dataCache
.
getPNsluggishDay
(
barcode
.
getPartNumber
()));
barcode
.
setInOpor
(
opUser
);
barcode
.
setInOpor
(
opUser
);
barcode
.
setCheckOutDate
(
null
,
""
);
barcode
.
setCheckOutDate
(
null
,
""
);
barcode
.
setPosName
(
task
.
getPosName
());
barcode
.
setPosName
(
task
.
getPosName
());
...
...
修改记录.txt
查看文件 @
d035a6f
...
@@ -69,3 +69,12 @@ hik:
...
@@ -69,3 +69,12 @@ hik:
2.入库单增加凭证号,物料日志页面分来源一,来源二。
2.入库单增加凭证号,物料日志页面分来源一,来源二。
3.UID出库,增加物料编号,批次,供应商 查询。
3.UID出库,增加物料编号,批次,供应商 查询。
4.齐套缺料改为:分开计算每个工单缺少多少盘, 然后最后把总盘数加起来
4.齐套缺料改为:分开计算每个工单缺少多少盘, 然后最后把总盘数加起来
20230217
增加普通入库,退料入库,截料入库 菜单。
20230530
新呆滞物料功能:barcode 增加 sluggishDate,maxSluggishDate
\ No newline at end of file
\ No newline at end of file
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论