Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
smf-core
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit 42d2a1ab
由
zshaohui
编写于
2023-10-17 09:35:54 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
1.系统配置每次缺料预警生成多少工单
2.缺料预警校验是否生成,代码优化
1 个父辈
b557a600
隐藏空白字符变更
内嵌
并排
正在显示
6 个修改的文件
包含
64 行增加
和
50 行删除
src/main/java/com/neotel/smfcore/common/utils/Constants.java
src/main/java/com/neotel/smfcore/core/system/rest/SettingsController.java
src/main/java/com/neotel/smfcore/core/system/rest/bean/dto/SysSettingsDto.java
src/main/java/com/neotel/smfcore/core/system/util/TaskService.java
src/main/java/com/neotel/smfcore/custom/lizhen/innerBox/util/PreWarningItemCache.java
src/main/resources/config/application.yml
src/main/java/com/neotel/smfcore/common/utils/Constants.java
查看文件 @
42d2a1a
...
...
@@ -170,4 +170,9 @@ public class Constants {
* 楼层
*/
public
static
final
String
CACHE_floor
=
"floor"
;
/**
* 工单生成个数
*/
public
static
final
String
CACHE_preGenerateTask_Times
=
"preGenerateTask_times"
;
}
src/main/java/com/neotel/smfcore/core/system/rest/SettingsController.java
查看文件 @
42d2a1a
...
...
@@ -75,6 +75,7 @@ public class SettingsController {
Integer
preGenerateTask
=
dataCache
.
getCache
(
Constants
.
CACHE_preGenerateTask
);
String
permissionPassword
=
dataCache
.
getCache
(
Constants
.
CACHE_permissionPassword
);
String
floor
=
dataCache
.
getCache
(
Constants
.
CACHE_floor
);
Integer
preGenerateTaskTimes
=
dataCache
.
getCache
(
Constants
.
CACHE_preGenerateTask_Times
);
SysSettingsDto
dto
=
new
SysSettingsDto
();
dto
.
setStartJob
(
startJob
);
dto
.
setStopOut
(
stopOut
);
...
...
@@ -82,6 +83,7 @@ public class SettingsController {
dto
.
setPreGenerateTask
(
preGenerateTask
);
dto
.
setPermissionPassword
(
permissionPassword
);
dto
.
setFloor
(
floor
);
dto
.
setPreGenerateTaskTimes
(
preGenerateTaskTimes
);
return
dto
;
}
...
...
@@ -95,11 +97,13 @@ public class SettingsController {
dataCache
.
updateCache
(
Constants
.
CACHE_preGenerateTask
,
sysSettingsDto
.
getPreGenerateTask
());
dataCache
.
updateCache
(
Constants
.
CACHE_permissionPassword
,
sysSettingsDto
.
getPermissionPassword
());
dataCache
.
updateCache
(
Constants
.
CACHE_floor
,
sysSettingsDto
.
getFloor
());
dataCache
.
updateCache
(
Constants
.
CACHE_preGenerateTask_Times
,
sysSettingsDto
.
getPreGenerateTaskTimes
());
log
.
info
(
"更改系统设置:stopout="
+
sysSettingsDto
.
isStopOut
()
+
",stopjob="
+
sysSettingsDto
.
isStartJob
()
+
",backUpMonth="
+
sysSettingsDto
.
getBackUpMonth
()
+
",preGenerateTask="
+
sysSettingsDto
.
getPreGenerateTask
()
+
",permissionPassword="
+
sysSettingsDto
.
getPermissionPassword
()
+
",floor="
+
sysSettingsDto
.
getFloor
()
+
",preGenerateTaskTimes="
+
sysSettingsDto
.
getPreGenerateTaskTimes
()
);
return
ResultBean
.
newOkResult
(
"保存成功"
);
}
...
...
src/main/java/com/neotel/smfcore/core/system/rest/bean/dto/SysSettingsDto.java
查看文件 @
42d2a1a
...
...
@@ -22,6 +22,9 @@ public class SysSettingsDto implements Serializable {
@ApiModelProperty
(
"缺料预警生成工单时间"
)
private
Integer
preGenerateTask
=
0
;
@ApiModelProperty
(
"缺料预警工单生成个数"
)
private
Integer
preGenerateTaskTimes
=
0
;
@ApiModelProperty
(
"权限密码"
)
private
String
permissionPassword
=
""
;
...
...
src/main/java/com/neotel/smfcore/core/system/util/TaskService.java
查看文件 @
42d2a1a
...
...
@@ -318,8 +318,8 @@ public class TaskService {
updateFinishedTask
(
task
);
log
.
info
(
"任务["
+
task
.
getId
()
+
"] posName["
+
task
.
getPosName
()
+
"] Reel Id["
+
task
.
getBarcode
()
+
"]取消成功"
);
//同时进行库位屏蔽
if
(
/*task.isPutInTask() &&*/
!
task
.
isFinished
())
{
//同时进行库位屏蔽
(不需要)
/* if (*//*task.isPutInTask() &&*//*
!task.isFinished()) {
String posName = task.getPosName();
if (StringUtils.isNotBlank(posName)) {
StoragePos pos = storagePosManager.getByPosName(posName);
...
...
@@ -346,7 +346,7 @@ public class TaskService {
}
//解除绑定
ReelLockPosUtil.removeReelLockPosInfo(task.getBarcode());
}
}
*/
return
true
;
}
return
false
;
...
...
src/main/java/com/neotel/smfcore/custom/lizhen/innerBox/util/PreWarningItemCache.java
查看文件 @
42d2a1a
...
...
@@ -65,9 +65,6 @@ public class PreWarningItemCache {
boolean
hasIdleBox
=
true
;
if
(
hasIdleBox
)
{
//最早的一条预警时间
List
<
PreWarningItem
>
lineItems
=
new
ArrayList
<>();
String
firstItemLine
=
""
;
//每次最多出多少盘
//int maxReelCount = 30;
//如果取不到,从数据库中取
...
...
@@ -77,34 +74,40 @@ public class PreWarningItemCache {
if
(
queueItemList
==
null
||
queueItemList
.
isEmpty
())
{
return
;
}
for
(
PreWarningItem
preWarningItem
:
queueItemList
)
{
String
itemLine
=
preWarningItem
.
getLine
();
if
(
Strings
.
isNotBlank
(
itemLine
))
{
if
(
firstItemLine
.
isEmpty
())
{
firstItemLine
=
itemLine
;
//System.out.println(System.currentTimeMillis());
//System.out.println(preWarningItem.getReceiveDate().getTime());
if
(
System
.
currentTimeMillis
()
-
preWarningItem
.
getReceiveDate
().
getTime
()
<
1
*
60
*
1000
)
{
//不到1分钟,暂不执行
return
;
Integer
preGenerateTaskTimes
=
dataCache
.
getCache
(
Constants
.
CACHE_preGenerateTask_Times
);
if
(
preGenerateTaskTimes
==
null
||
preGenerateTaskTimes
==
0
)
{
preGenerateTaskTimes
=
2
;
}
for
(
int
time
=
0
;
time
<
preGenerateTaskTimes
;
time
++)
{
//最早的一条预警时间
List
<
PreWarningItem
>
lineItems
=
new
ArrayList
<>();
String
firstItemLine
=
""
;
for
(
PreWarningItem
preWarningItem
:
queueItemList
)
{
String
itemLine
=
preWarningItem
.
getLine
();
if
(
Strings
.
isNotBlank
(
itemLine
))
{
if
(
firstItemLine
.
isEmpty
())
{
firstItemLine
=
itemLine
;
if
(
System
.
currentTimeMillis
()
-
preWarningItem
.
getReceiveDate
().
getTime
()
<
1
*
60
*
1000
)
{
return
;
}
}
//同一个线别的生成一个工单
if
(
itemLine
.
equals
(
firstItemLine
))
{
lineItems
.
add
(
preWarningItem
);
}
}
//同一个线别的生成一个工单
if
(
itemLine
.
equals
(
firstItemLine
))
{
lineItems
.
add
(
preWarningItem
);
}
/*if (lineItems.size() >= maxReelCount) {
break;
}*/
}
}
if
(!
lineItems
.
isEmpty
())
{
createAndExecuteLiteOrder
(
lineItems
,
priority
);
if
(!
lineItems
.
isEmpty
())
{
createAndExecuteLiteOrder
(
lineItems
,
priority
);
}
}
}
}
/**
* 根据预警信息挑选物料, 生成工单任务并执行
*
...
...
@@ -165,32 +168,31 @@ public class PreWarningItemCache {
preWarningItemManager
.
delete
(
item
);
}
}
else
{
//判断是否已经生成
List
<
PreWarningItem
>
newItems
=
new
ArrayList
<>();
newItems
.
addAll
(
items
);
for
(
int
i
=
0
;
i
<
items
.
size
();
i
++)
{
PreWarningItem
preWarningItem
=
items
.
get
(
i
);
if
(
queueItemList
!=
null
&&
!
queueItemList
.
isEmpty
())
{
for
(
PreWarningItem
item
:
queueItemList
)
{
if
(
preWarningItem
.
getItemId
().
equals
(
item
.
getItemId
()))
{
newItems
=
newItems
.
stream
().
filter
(
t
->
!
t
.
getItemId
().
equals
(
item
.
getItemId
())).
collect
(
Collectors
.
toList
());
//log.info("Mes缺料预警重复物料:" + item.getItemId() + "PN为:" + item.getPartnumber());
break
;
}
}
}
List
<
PreWarningItem
>
newItems
=
new
ArrayList
<>(
items
);
// 从newItems中移除已经在queueItemList中存在的items
if
(
queueItemList
!=
null
&&
!
queueItemList
.
isEmpty
())
{
newItems
.
removeIf
(
item
->
queueItemList
.
stream
().
anyMatch
(
i
->
i
.
getItemId
().
equals
(
item
.
getItemId
())));
}
//判断工单是否已经出过
for
(
int
i
=
0
;
i
<
items
.
size
();
i
++)
{
PreWarningItem
item
=
items
.
get
(
i
);
Query
q
=
new
Query
();
Criteria
c
=
Criteria
.
where
(
"pn"
).
is
(
item
.
getPartnumber
()).
and
(
"warningItemId"
).
is
(
item
.
getItemId
());
List
<
LiteOrderItem
>
orderItems
=
liteOrderItemManager
.
findByQuery
(
q
.
addCriteria
(
c
));
if
(
orderItems
!=
null
&&
!
orderItems
.
isEmpty
())
{
newItems
=
newItems
.
stream
().
filter
(
t
->
!
t
.
getItemId
().
equals
(
item
.
getItemId
())).
collect
(
Collectors
.
toList
());
//log.info("Mes缺料预警已经生成工单:" + item.getItemId() + "PN为:" + item.getPartnumber());
// 从newItems中移除数据库中已经存在相应工单的items
if
(!
newItems
.
isEmpty
())
{
List
<
String
>
itemIds
=
newItems
.
stream
().
map
(
PreWarningItem:
:
getItemId
).
collect
(
Collectors
.
toList
());
List
<
String
>
partNumbers
=
newItems
.
stream
().
map
(
PreWarningItem:
:
getPartnumber
).
collect
(
Collectors
.
toList
());
Criteria
c
=
new
Criteria
();
c
.
and
(
"pn"
).
in
(
partNumbers
);
c
.
and
(
"warningItemId"
).
in
(
itemIds
);
LiteOrderItem
orderItem
=
liteOrderItemManager
.
findOne
(
new
Query
().
addCriteria
(
c
));
if
(
orderItem
!=
null
){
String
warningItemId
=
orderItem
.
getWarningItemId
();
newItems
=
newItems
.
stream
()
.
filter
(
item
->
!
item
.
getItemId
().
equals
(
warningItemId
))
.
collect
(
Collectors
.
toList
());
}
}
if
(
queueItemList
==
null
||
queueItemList
.
isEmpty
())
{
queueItemList
=
newItems
;
}
else
{
...
...
src/main/resources/config/application.yml
查看文件 @
42d2a1a
...
...
@@ -61,7 +61,7 @@ forward:
#手动出库料箱
manualcheckout
:
export
:
MU
3
_1
export
:
MU
4
_1
...
...
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论