Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
Gree
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit 57191c57
由
sunke
编写于
2020-03-08 17:45:01 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
包装料出库锁定架位,双层线获取位置时增加realRfid
1 个父辈
a7812229
隐藏空白字符变更
内嵌
并排
正在显示
2 个修改的文件
包含
186 行增加
和
0 行删除
myproject/src/main/java/com/myproject/webapp/controller/qisda/util/OutInfoCache.java
myproject/src/main/java/com/myproject/webapp/controller/webService/MainTimer.java
myproject/src/main/java/com/myproject/webapp/controller/qisda/util/OutInfoCache.java
0 → 100644
查看文件 @
57191c5
package
com
.
myproject
.
webapp
.
controller
.
qisda
.
util
;
import
com.myproject.bean.update.qisda.OutInfo
;
import
com.myproject.bean.update.qisda.OutItem
;
import
com.myproject.dao.mongo.qisda.IOutInfoDao
;
import
com.myproject.dao.mongo.qisda.IOutItemDao
;
import
org.apache.logging.log4j.LogManager
;
import
org.apache.logging.log4j.Logger
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.util.Collection
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.concurrent.ConcurrentHashMap
;
/**
* Created by sunke on 2020/3/5.
*/
@Service
public
class
OutInfoCache
{
protected
final
Logger
log
=
LogManager
.
getLogger
(
getClass
());
//定时查询未完成的需求单
private
static
Map
<
String
,
OutInfo
>
outInfoMap
=
new
ConcurrentHashMap
<>();
@Autowired
private
IOutInfoDao
outInfoDao
;
@Autowired
private
IOutItemDao
outItemDao
;
/**
* 更新需求项
*/
public
void
updateOutItem
(
String
outItemId
){
OutItem
outItem
=
outItemDao
.
findOneById
(
outItemId
);
if
(
outItem
!=
null
){
String
hSerial
=
outItem
.
gethSerial
();
OutInfo
outInfo
=
outInfoMap
.
get
(
hSerial
);
if
(
outInfo
!=
null
){
log
.
info
(
"更新需求项"
+
outItem
);
outInfo
.
updateItem
(
outItem
);
outInfoMap
.
put
(
hSerial
,
outInfo
);
updateStatus
(
outInfo
.
gethSerial
());
}
}
}
public
void
addOutInfo
(
OutInfo
outInfo
){
//先把缓存清理掉,从数据库中查询
String
hserial
=
outInfo
.
gethSerial
();
if
(!
hserial
.
isEmpty
()){
log
.
info
(
"将需求单"
+
outInfo
+
"加入到缓存"
);
outInfo
.
setOutItemMap
(
new
HashMap
<
String
,
OutItem
>());
List
<
OutItem
>
outItemList
=
outItemDao
.
findByHSerial
(
hserial
);
for
(
OutItem
outItem
:
outItemList
)
{
outInfo
.
updateItem
(
outItem
);;
}
outInfoMap
.
put
(
hserial
,
outInfo
);
}
}
/**
* 加载所有未完成的需求单
*/
public
void
loadUnEndOutInfos
(){
log
.
info
(
"开始加载未完成的需求单"
);
List
<
OutInfo
>
unEndOutInfoList
=
outInfoDao
.
findUnEndOutInfos
();
for
(
OutInfo
outInfo
:
unEndOutInfoList
)
{
addOutInfo
(
outInfo
);
updateStatus
(
outInfo
.
gethSerial
());
}
}
/**
* 获取缓存的需求单信息
*/
public
Collection
<
OutInfo
>
getCachedOutInfos
(){
return
outInfoMap
.
values
();
}
/**
* 更新需求单的发料状态
*/
private
void
updateStatus
(
String
hSerial
){
log
.
info
(
"更新需求单["
+
hSerial
+
"]的发料状态"
);
OutInfo
outInfo
=
outInfoMap
.
get
(
hSerial
);
if
(
outInfo
!=
null
){
boolean
sendEnd
=
true
;
boolean
hasOut
=
false
;
//默认为绑定OK,
int
bindStatus
=
2
;
for
(
OutItem
outItem
:
outInfo
.
getOutItemMap
().
values
())
{
if
(
outItem
.
isUrgentAction
()){
//紧急料,设置发料数量与出库数量一致
outItem
.
setSendQty
(
outItem
.
getOutQty
());
}
if
(!
outItem
.
isItemEnd
()){
sendEnd
=
false
;
}
if
(
outItem
.
getOutQty
()
>
0
){
hasOut
=
true
;
}
if
(!
outItem
.
isBindOk
()){
//有绑定缺料的情况,即认为是绑定缺料
bindStatus
=
1
;
}
}
if
(
sendEnd
){
outInfo
.
setSendStatus
(
2
);
}
else
{
if
(
hasOut
){
//有出库的,状态为发料缺料
outInfo
.
setSendStatus
(
1
);
}
else
{
//无出过库的,状态为未发料
outInfo
.
setSendStatus
(
0
);
}
}
outInfo
.
setBindStatus
(
bindStatus
);
log
.
info
(
"需求单状态更新:"
+
outInfo
+
" "
);
outInfoMap
.
put
(
outInfo
.
gethSerial
(),
outInfo
);
OutInfo
dbOutInfo
=
outInfoDao
.
findOneById
(
outInfo
.
getId
());
if
(
dbOutInfo
!=
null
){
if
(
dbOutInfo
.
getSendStatus
()
!=
outInfo
.
getSendStatus
()
||
dbOutInfo
.
getBindStatus
()
!=
outInfo
.
getBindStatus
()){
outInfoDao
.
save
(
dbOutInfo
);
log
.
info
(
"需求单["
+
hSerial
+
"]状态与数据库不一致,更新到数据库"
);
}
}
}
}
}
myproject/src/main/java/com/myproject/webapp/controller/webService/MainTimer.java
0 → 100644
查看文件 @
57191c5
package
com
.
myproject
.
webapp
.
controller
.
webService
;
import
com.myproject.webapp.controller.qisda.util.OutInfoCache
;
import
org.apache.logging.log4j.LogManager
;
import
org.apache.logging.log4j.Logger
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
javax.annotation.PostConstruct
;
import
java.util.concurrent.Executors
;
import
java.util.concurrent.ScheduledExecutorService
;
import
java.util.concurrent.TimeUnit
;
/**
* Created by sunke on 2020/3/5.
* 主定时器
*/
@Service
public
class
MainTimer
{
protected
final
transient
Logger
log
=
LogManager
.
getLogger
(
getClass
());
ScheduledExecutorService
scheduledThreadPool
=
Executors
.
newScheduledThreadPool
(
1
);
@Autowired
private
OutInfoCache
outInfoCache
;
@PostConstruct
public
void
init
(){
outInfoCache
.
loadUnEndOutInfos
();
// log.info("主定时器开启,每1s执行一次");
// //1 分钟之后执行,每秒钟执行一次
// scheduledThreadPool.scheduleAtFixedRate(new Runnable() {
// @Override
// public void run() {
// timerTask();
// }
// }, 20, 1, TimeUnit.SECONDS);
}
private
void
timerTask
(){
}
}
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论