Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
H
huazheng-project-flink
概览
概览
详情
活动
周期分析
版本库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
huazheng
huazheng-project-flink
Commits
ada585d5
提交
ada585d5
authored
11月 23, 2020
作者:
guofeng
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
ausp增量
上级
9b35de98
显示空白字符变更
内嵌
并排
正在显示
9 个修改的文件
包含
200 行增加
和
209 行删除
+200
-209
GPMapper.java
.../java/com/huazheng/project/greenplum/mapper/GPMapper.java
+13
-13
CheckDeleteServiceImpl.java
...roject/greenplum/service/impl/CheckDeleteServiceImpl.java
+31
-0
CheckUpdateServiceImpl.java
...roject/greenplum/service/impl/CheckUpdateServiceImpl.java
+90
-3
DeleteUpdateJobServiceImpl.java
...ct/greenplum/service/impl/DeleteUpdateJobServiceImpl.java
+1
-144
GPServiceImpl.java
...uazheng/project/greenplum/service/impl/GPServiceImpl.java
+0
-6
SapMapper.java
...main/java/com/huazheng/project/hana/mapper/SapMapper.java
+9
-8
GPMapper_greenplum.xml
src/main/resources/mapper/greenplum/GPMapper_greenplum.xml
+22
-22
SapMapper_hana.xml
src/main/resources/mapper/hana/SapMapper_hana.xml
+15
-12
spring-init.xml
src/main/resources/spring-init.xml
+19
-1
没有找到文件。
src/main/java/com/huazheng/project/greenplum/mapper/GPMapper.java
浏览文件 @
ada585d5
...
@@ -115,20 +115,20 @@ public interface GPMapper {
...
@@ -115,20 +115,20 @@ public interface GPMapper {
@Cacheable
(
key
=
"#root.method.name+':'+#p0.mandt+','+#p0.mblnr+','+#p0.mjahr+','+#p0.zeile"
,
unless
=
"#result == null"
)
@Cacheable
(
key
=
"#root.method.name+':'+#p0.mandt+','+#p0.mblnr+','+#p0.mjahr+','+#p0.zeile"
,
unless
=
"#result == null"
)
public
Mseg
selectMseg
(
Mseg
mseg
);
// 查询替代删除
public
Mseg
selectMseg
(
Mseg
mseg
);
// 查询替代删除
public
void
insertMseg
(
Mseg
element
);
public
void
insertMseg
(
Mseg
element
);
@CacheEvict
(
key
=
"'selectMseg'+':'+#p0.mandt+','+#p0.mblnr+','+#p0.mjahr+','+#p0.zeile"
)
//
@CacheEvict(key = "'selectMseg'+':'+#p0.mandt+','+#p0.mblnr+','+#p0.mjahr+','+#p0.zeile")
public
void
deleteMseg
(
Mseg
item
);
//
public void deleteMseg(Mseg item);
@CacheEvict
(
key
=
"'selectMseg'+':'+#p0.mandt+','+#p0.mblnr+','+#p0.mjahr+','+#p0.zeile"
)
//
@CacheEvict(key = "'selectMseg'+':'+#p0.mandt+','+#p0.mblnr+','+#p0.mjahr+','+#p0.zeile")
public
void
updateMseg
(
Mseg
element
);
//
public void updateMseg(Mseg element);
public
List
<
Mseg
>
selectMsegCheck
(
Mseg
build
);
//
public List<Mseg> selectMsegCheck(Mseg build);
@Cacheable
(
key
=
"#root.method.name+':'+#p0.mandt+','+#p0.mblnr+','+#p0.mjahr"
,
unless
=
"#result == null"
)
@Cacheable
(
key
=
"#root.method.name+':'+#p0.mandt+','+#p0.mblnr+','+#p0.mjahr"
,
unless
=
"#result == null"
)
public
Mkpf
selectMkpf
(
Mkpf
mkpf
);
// 查询替代删除
public
Mkpf
selectMkpf
(
Mkpf
mkpf
);
// 查询替代删除
public
void
insertMkpf
(
Mkpf
element
);
public
void
insertMkpf
(
Mkpf
element
);
@CacheEvict
(
key
=
"'selectMkpf'+':'+#p0.mandt+','+#p0.mblnr+','+#p0.mjahr"
)
//
@CacheEvict(key = "'selectMkpf'+':'+#p0.mandt+','+#p0.mblnr+','+#p0.mjahr")
public
void
deleteMkpf
(
Mkpf
item
);
//
public void deleteMkpf(Mkpf item);
@CacheEvict
(
key
=
"'selectMkpf'+':'+#p0.mandt+','+#p0.mblnr+','+#p0.mjahr"
)
//
@CacheEvict(key = "'selectMkpf'+':'+#p0.mandt+','+#p0.mblnr+','+#p0.mjahr")
public
void
updateMkpf
(
Mkpf
element
);
//
public void updateMkpf(Mkpf element);
public
List
<
Mkpf
>
selectMkpfCheck
(
Mkpf
build
);
//
public List<Mkpf> selectMkpfCheck(Mkpf build);
@Cacheable
(
key
=
"#root.method.name+':'+#p0.mandt+','+#p0.aufnr"
,
unless
=
"#result == null"
)
@Cacheable
(
key
=
"#root.method.name+':'+#p0.mandt+','+#p0.aufnr"
,
unless
=
"#result == null"
)
public
Aufk
selectAufk
(
Aufk
aufk
);
// 查询替代删除
public
Aufk
selectAufk
(
Aufk
aufk
);
// 查询替代删除
...
@@ -215,12 +215,12 @@ public interface GPMapper {
...
@@ -215,12 +215,12 @@ public interface GPMapper {
public
void
updateLikp
(
Likp
element
);
public
void
updateLikp
(
Likp
element
);
public
List
<
Likp
>
selectLikpCheck
(
Likp
build
);
public
List
<
Likp
>
selectLikpCheck
(
Likp
build
);
//
@Cacheable(key = "#root.method.name+':'+#p0.mandt+','+#p0.bukrs+','+#p0.belnr+','+#p0.gjahr", unless="#result == null")
@Cacheable
(
key
=
"#root.method.name+':'+#p0.mandt+','+#p0.bukrs+','+#p0.belnr+','+#p0.gjahr"
,
unless
=
"#result == null"
)
public
Bkpf
selectBkpf
(
Bkpf
bkpf
);
// 查询替代删除
public
Bkpf
selectBkpf
(
Bkpf
bkpf
);
// 查询替代删除
public
void
insertBkpf
(
Bkpf
element
);
public
void
insertBkpf
(
Bkpf
element
);
//
@CacheEvict(key = "'selectBkpf'+':'+#p0.mandt+','+#p0.bukrs+','+#p0.belnr+','+#p0.gjahr")
@CacheEvict
(
key
=
"'selectBkpf'+':'+#p0.mandt+','+#p0.bukrs+','+#p0.belnr+','+#p0.gjahr"
)
public
void
deleteBkpf
(
Bkpf
item
);
public
void
deleteBkpf
(
Bkpf
item
);
//
@CacheEvict(key = "'selectBkpf'+':'+#p0.mandt+','+#p0.bukrs+','+#p0.belnr+','+#p0.gjahr")
@CacheEvict
(
key
=
"'selectBkpf'+':'+#p0.mandt+','+#p0.bukrs+','+#p0.belnr+','+#p0.gjahr"
)
public
void
updateBkpf
(
Bkpf
element
);
public
void
updateBkpf
(
Bkpf
element
);
public
List
<
Bkpf
>
selectBkpfCheck
(
Bkpf
build
);
public
List
<
Bkpf
>
selectBkpfCheck
(
Bkpf
build
);
...
...
src/main/java/com/huazheng/project/greenplum/service/impl/CheckDeleteServiceImpl.java
浏览文件 @
ada585d5
...
@@ -17,6 +17,7 @@ import com.huazheng.project.hana.model.Bkpf;
...
@@ -17,6 +17,7 @@ import com.huazheng.project.hana.model.Bkpf;
import
com.huazheng.project.hana.model.Kna1
;
import
com.huazheng.project.hana.model.Kna1
;
import
com.huazheng.project.hana.model.Likp
;
import
com.huazheng.project.hana.model.Likp
;
import
com.huazheng.project.hana.model.Lips
;
import
com.huazheng.project.hana.model.Lips
;
import
com.huazheng.project.hana.model.Mara
;
import
com.huazheng.project.hana.model.Pa0002
;
import
com.huazheng.project.hana.model.Pa0002
;
import
com.huazheng.project.hana.model.Vbak
;
import
com.huazheng.project.hana.model.Vbak
;
import
com.huazheng.project.hana.model.Vbrk
;
import
com.huazheng.project.hana.model.Vbrk
;
...
@@ -394,5 +395,35 @@ public class CheckDeleteServiceImpl {
...
@@ -394,5 +395,35 @@ public class CheckDeleteServiceImpl {
redis1Template
.
opsForValue
().
set
(
"huazheng:checkDeleteError:Zsdfhzl:rowNum"
,
SomeUtils
.
getErrorInfoFromException
(
e
));
redis1Template
.
opsForValue
().
set
(
"huazheng:checkDeleteError:Zsdfhzl:rowNum"
,
SomeUtils
.
getErrorInfoFromException
(
e
));
}
}
}
}
public
void
selectMaraCheckByDelete
()
{
try
{
ValueOperations
<
String
,
String
>
opsForValue
=
redis1Template
.
opsForValue
();
opsForValue
.
setIfAbsent
(
"huazheng:checkDelete:Mara:rowNum"
,
"0"
);
String
rowNum
=
opsForValue
.
get
(
"huazheng:checkDelete:Mara:rowNum"
);
Mara
build
=
Mara
.
builder
().
rowNum
(
rowNum
).
build
();
List
<
Mara
>
list
=
gpMapper
.
selectMaraCheck
(
build
);
// 从数仓中查询一组数据
if
(
list
.
size
()
==
0
)
{
redis1Template
.
opsForValue
().
set
(
"huazheng:checkDelete:Mara:rowNum"
,
"0"
);
// 计数器复位
ThreadUtil
.
sleep
(
1000
);
// 没有数据了,休眠一下
}
list
.
forEach
(
target
->
{
// 遍历要检查的数据
Mara
source
=
sapMapper
.
selectMaraById
(
target
);
// 根据主键查询源库中的数据
String
operator
=
"none"
;
if
(
source
==
null
)
{
// 如果源库中没有数据
gpMapper
.
deleteMara
(
target
);
// 删除数仓中的数据
operator
=
"delete"
;
}
redis1Template
.
opsForValue
().
set
(
"huazheng:checkDelete:Mara:rowNum"
,
target
.
getRowNum
());
if
(!
operator
.
equals
(
"none"
))
{
log
.
info
(
String
.
format
(
"selectMaracheckDelete --> rowNum:%s, operator:%s"
,
target
.
getRowNum
(),
operator
));
}
});
}
catch
(
Exception
e
)
{
redis1Template
.
opsForValue
().
set
(
"huazheng:checkDeleteError:Mara:rowNum"
,
SomeUtils
.
getErrorInfoFromException
(
e
));
}
}
}
}
src/main/java/com/huazheng/project/greenplum/service/impl/CheckUpdateServiceImpl.java
浏览文件 @
ada585d5
...
@@ -14,10 +14,12 @@ import com.huazheng.project.hana.mapper.SapMapper;
...
@@ -14,10 +14,12 @@ import com.huazheng.project.hana.mapper.SapMapper;
import
com.huazheng.project.hana.model.Afko
;
import
com.huazheng.project.hana.model.Afko
;
import
com.huazheng.project.hana.model.Afpo
;
import
com.huazheng.project.hana.model.Afpo
;
import
com.huazheng.project.hana.model.Aufk
;
import
com.huazheng.project.hana.model.Aufk
;
import
com.huazheng.project.hana.model.Ausp
;
import
com.huazheng.project.hana.model.Bkpf
;
import
com.huazheng.project.hana.model.Bkpf
;
import
com.huazheng.project.hana.model.Kna1
;
import
com.huazheng.project.hana.model.Kna1
;
import
com.huazheng.project.hana.model.Likp
;
import
com.huazheng.project.hana.model.Likp
;
import
com.huazheng.project.hana.model.Lips
;
import
com.huazheng.project.hana.model.Lips
;
import
com.huazheng.project.hana.model.Mara
;
import
com.huazheng.project.hana.model.Pa0002
;
import
com.huazheng.project.hana.model.Pa0002
;
import
com.huazheng.project.hana.model.Vbak
;
import
com.huazheng.project.hana.model.Vbak
;
import
com.huazheng.project.hana.model.Vbrk
;
import
com.huazheng.project.hana.model.Vbrk
;
...
@@ -610,13 +612,13 @@ public class CheckUpdateServiceImpl {
...
@@ -610,13 +612,13 @@ public class CheckUpdateServiceImpl {
Long
rowids
=
Long
.
parseLong
(
opsForValue
.
get
(
"huazheng:checkUpdate:Zsdfhzl:rowids"
));
Long
rowids
=
Long
.
parseLong
(
opsForValue
.
get
(
"huazheng:checkUpdate:Zsdfhzl:rowids"
));
Zsdfhzl
build
=
Zsdfhzl
.
builder
().
rowids
(
rowids
).
build
();
Zsdfhzl
build
=
Zsdfhzl
.
builder
().
rowids
(
rowids
).
build
();
List
<
Zsdfhzl
>
list
=
sapMapper
.
selectZsdfhzlCheckByUpdate
(
build
);
// 从数仓中查询一组数据
List
<
Zsdfhzl
>
s
list
=
sapMapper
.
selectZsdfhzlCheckByUpdate
(
build
);
// 从数仓中查询一组数据
if
(
list
.
size
()
==
0
)
{
// rowid已完成,则转为由更新时间字段开始同步
if
(
s
list
.
size
()
==
0
)
{
// rowid已完成,则转为由更新时间字段开始同步
redis1Template
.
opsForValue
().
set
(
"huazheng:checkUpdate:Zsdfhzl:rowids"
,
"0"
);
// 计数器复位
redis1Template
.
opsForValue
().
set
(
"huazheng:checkUpdate:Zsdfhzl:rowids"
,
"0"
);
// 计数器复位
ThreadUtil
.
sleep
(
1000
);
// 没有数据了,休眠一下
ThreadUtil
.
sleep
(
1000
);
// 没有数据了,休眠一下
}
}
list
.
forEach
(
source
->
{
// 遍历要检查的数据
s
list
.
forEach
(
source
->
{
// 遍历要检查的数据
Zsdfhzl
target
=
gpMapper
.
selectZsdfhzl
(
source
);
// 根据主键查询源库中的数据
Zsdfhzl
target
=
gpMapper
.
selectZsdfhzl
(
source
);
// 根据主键查询源库中的数据
String
operator
=
"none"
;
String
operator
=
"none"
;
Long
srowids
=
source
.
getRowids
();
Long
srowids
=
source
.
getRowids
();
...
@@ -661,5 +663,90 @@ public class CheckUpdateServiceImpl {
...
@@ -661,5 +663,90 @@ public class CheckUpdateServiceImpl {
redis1Template
.
opsForValue
().
set
(
"huazheng:checkUpdateError:Zsdfhzl:rowids"
,
SomeUtils
.
getErrorInfoFromException
(
e
));
redis1Template
.
opsForValue
().
set
(
"huazheng:checkUpdateError:Zsdfhzl:rowids"
,
SomeUtils
.
getErrorInfoFromException
(
e
));
}
}
}
}
public
void
selectMaraCheckUpdate
()
{
try
{
ValueOperations
<
String
,
String
>
opsForValue
=
redis1Template
.
opsForValue
();
opsForValue
.
setIfAbsent
(
"huazheng:checkUpdate:Mara:rowids"
,
"0"
);
Long
rowids
=
Long
.
parseLong
(
opsForValue
.
get
(
"huazheng:checkUpdate:Mara:rowids"
));
Mara
build
=
Mara
.
builder
().
rowids
(
rowids
).
build
();
List
<
Mara
>
slist
=
sapMapper
.
selectMaraCheckByUpdate
(
build
);
// 从源库中按更新时间查询,只更新今天的数据
if
(
slist
.
size
()
==
0
)
{
redis1Template
.
opsForValue
().
set
(
"huazheng:checkUpdate:Mara:rowids"
,
"0"
);
// 计数器复位
ThreadUtil
.
sleep
(
1000
);
// 没有数据了,休眠一下
}
slist
.
forEach
(
source
->
{
// 遍历要检查的数据
Mara
target
=
gpMapper
.
selectMara
(
source
);
// 根据主键查询源库中的数据
String
operator
=
"none"
;
Long
srowids
=
source
.
getRowids
();
if
(
target
!=
null
)
{
source
.
setRowids
(
null
);
String
shash
=
SecureUtil
.
md5
(
JSONUtil
.
toJsonStr
(
source
));
// 源库中数据的hash结果
String
thash
=
target
.
getHashResult
();
// 数仓中数据的hash结果
if
(!
shash
.
equals
(
thash
))
{
// 如果hash结果不一致
source
.
setHashResult
(
shash
);
// ===============================
if
(
source
.
getErsda
()
!=
null
)
{
String
erdat2
=
new
StringBuffer
(
source
.
getErsda
()).
insert
(
4
,
"-"
).
insert
(
7
,
"-"
).
toString
();
Date
date
=
DateUtil
.
parse
(
erdat2
);
source
.
setErsda1
(
date
);
}
if
(
source
.
getLaeda
()
!=
null
)
{
String
erdat2
=
new
StringBuffer
(
source
.
getLaeda
()).
insert
(
4
,
"-"
).
insert
(
7
,
"-"
).
toString
();
Date
date
=
DateUtil
.
parse
(
erdat2
);
source
.
setLaeda1
(
date
);
}
// ===============================
while
(
true
)
{
try
{
gpMapper
.
updateMara
(
source
);
// 更新数据到数仓中
operator
=
"update"
;
break
;
}
catch
(
RuntimeException
e
)
{
log
.
error
(
e
.
getMessage
());
ThreadUtil
.
safeSleep
(
500
);
}
}
// 级联更新业务
List
<
Ausp
>
sAuspList
=
sapMapper
.
cascadeAuspByMara
(
source
);
// 级联查询源库afko表
for
(
Ausp
sAusp
:
sAuspList
)
{
Ausp
tAusp
=
gpMapper
.
selectAusp
(
sAusp
);
// 查询目标库中afko表
cascadeAuspCheckByUpdate
(
sAusp
,
tAusp
);
// 级联更新afko表
}
ThreadUtil
.
safeSleep
(
500
);
}
}
redis1Template
.
opsForValue
().
set
(
"huazheng:checkUpdate:Mara:rowids"
,
srowids
.
toString
());
if
(!
operator
.
equals
(
"none"
))
{
log
.
info
(
String
.
format
(
"selectMaracheckUpdate --> rowids:%s, operator:%s"
,
srowids
.
toString
(),
operator
));
}
});
}
catch
(
Exception
e
)
{
redis1Template
.
opsForValue
().
set
(
"huazheng:checkUpdateError:Mara:rowids"
,
SomeUtils
.
getErrorInfoFromException
(
e
));
}
}
// 所属selectMaraCheckUpdate的级联
private
void
cascadeAuspCheckByUpdate
(
Ausp
source
,
Ausp
target
)
{
if
(
target
!=
null
)
{
// 目标库有数据
String
shash
=
SecureUtil
.
md5
(
JSONUtil
.
toJsonStr
(
source
));
// 源库中数据的hash结果
String
thash
=
target
.
getHashResult
();
// 数仓中数据的hash结果
if
(!
shash
.
equals
(
thash
))
{
// 如果hash结果不一致
source
.
setHashResult
(
shash
);
// ===============================
// ===============================
while
(
true
)
{
try
{
gpMapper
.
updateAusp
(
source
);
// 更新数据到数仓中
break
;
}
catch
(
RuntimeException
e
)
{
log
.
error
(
e
.
getMessage
());
ThreadUtil
.
safeSleep
(
500
);
}
}
ThreadUtil
.
safeSleep
(
500
);
}
}
}
}
}
src/main/java/com/huazheng/project/greenplum/service/impl/DeleteUpdateJobServiceImpl.java
浏览文件 @
ada585d5
...
@@ -30,8 +30,6 @@ import com.huazheng.project.hana.model.Konv;
...
@@ -30,8 +30,6 @@ import com.huazheng.project.hana.model.Konv;
import
com.huazheng.project.hana.model.Likp
;
import
com.huazheng.project.hana.model.Likp
;
import
com.huazheng.project.hana.model.Makt
;
import
com.huazheng.project.hana.model.Makt
;
import
com.huazheng.project.hana.model.Mara
;
import
com.huazheng.project.hana.model.Mara
;
import
com.huazheng.project.hana.model.Mkpf
;
import
com.huazheng.project.hana.model.Mseg
;
import
com.huazheng.project.hana.model.Mska
;
import
com.huazheng.project.hana.model.Mska
;
import
com.huazheng.project.hana.model.S066
;
import
com.huazheng.project.hana.model.S066
;
import
com.huazheng.project.hana.model.S067
;
import
com.huazheng.project.hana.model.S067
;
...
@@ -921,7 +919,6 @@ public class DeleteUpdateJobServiceImpl {
...
@@ -921,7 +919,6 @@ public class DeleteUpdateJobServiceImpl {
selectKnkkCheck
();
// 19
selectKnkkCheck
();
// 19
selectKnvvCheck
();
// 20
selectKnvvCheck
();
// 20
selectMaktCheck
();
// 24
selectMaktCheck
();
// 24
selectMaraCheck
();
// 25
selectMskaCheck
();
// 26
selectMskaCheck
();
// 26
selectS066Check
();
// 28
selectS066Check
();
// 28
selectS067Check
();
// 29
selectS067Check
();
// 29
...
@@ -934,8 +931,6 @@ public class DeleteUpdateJobServiceImpl {
...
@@ -934,8 +931,6 @@ public class DeleteUpdateJobServiceImpl {
selectZmdpcCheck
();
// 38
selectZmdpcCheck
();
// 38
selectTvkbtCheck
();
//
selectTvkbtCheck
();
//
selectAfvcCheck
();
selectAfvcCheck
();
selectMkpfCheck
();
selectMsegCheck
();
selectTspatCheck
();
selectTspatCheck
();
selectZpoeditCheck
();
selectZpoeditCheck
();
selectAuspCheck
();
selectAuspCheck
();
...
@@ -1120,7 +1115,6 @@ public class DeleteUpdateJobServiceImpl {
...
@@ -1120,7 +1115,6 @@ public class DeleteUpdateJobServiceImpl {
}
}
}
}
private
void
selectKnvpCheck
()
{
private
void
selectKnvpCheck
()
{
try
{
try
{
ValueOperations
<
String
,
String
>
opsForValue
=
redis1Template
.
opsForValue
();
ValueOperations
<
String
,
String
>
opsForValue
=
redis1Template
.
opsForValue
();
...
@@ -1163,90 +1157,7 @@ public class DeleteUpdateJobServiceImpl {
...
@@ -1163,90 +1157,7 @@ public class DeleteUpdateJobServiceImpl {
redis1Template
.
opsForValue
().
set
(
"huazheng:checkError:Knvp:rowNum"
,
getErrorInfoFromException
(
e
));
redis1Template
.
opsForValue
().
set
(
"huazheng:checkError:Knvp:rowNum"
,
getErrorInfoFromException
(
e
));
}
}
}
}
private
void
selectMkpfCheck
()
{
try
{
ValueOperations
<
String
,
String
>
opsForValue
=
redis1Template
.
opsForValue
();
opsForValue
.
setIfAbsent
(
"huazheng:check:Mkpf:rowNum"
,
"0"
);
String
rowNum
=
opsForValue
.
get
(
"huazheng:check:Mkpf:rowNum"
);
Mkpf
build
=
Mkpf
.
builder
().
rowNum
(
rowNum
).
build
();
List
<
Mkpf
>
list
=
gpMapper
.
selectMkpfCheck
(
build
);
// 从数仓中查询一组数据
if
(
list
.
size
()
==
0
)
{
redis1Template
.
opsForValue
().
set
(
"huazheng:check:Mkpf:rowNum"
,
"0"
);
// 计数器复位
ThreadUtil
.
sleep
(
1000
);
// 没有数据了,休眠一下
}
list
.
forEach
(
target
->
{
// 遍历要检查的数据
Mkpf
source
=
sapMapper
.
selectMkpfById
(
target
);
// 根据主键查询源库中的数据
String
operator
=
"none"
;
if
(
source
==
null
)
{
// 如果源库中没有数据
gpMapper
.
deleteMkpf
(
target
);
// 删除数仓中的数据
operator
=
"delete"
;
}
else
{
// 源库中有数据
String
shash
=
SecureUtil
.
md5
(
JSONUtil
.
toJsonStr
(
source
));
// 源库中数据的hash结果
String
thash
=
target
.
getHashResult
();
// 数仓中数据的hash结果
if
(!
shash
.
equals
(
thash
))
{
// 如果hash结果不一致
source
.
setHashResult
(
shash
);
while
(
true
)
{
try
{
gpMapper
.
updateMkpf
(
source
);
// 更新数据到数仓中
break
;
}
catch
(
RuntimeException
e
)
{
log
.
error
(
e
.
getMessage
());
ThreadUtil
.
safeSleep
(
500
);
}
}
ThreadUtil
.
safeSleep
(
500
);
}
}
redis1Template
.
opsForValue
().
set
(
"huazheng:check:Mkpf:rowNum"
,
target
.
getRowNum
());
if
(!
operator
.
equals
(
"none"
))
{
log
.
info
(
String
.
format
(
"selectMkpfCheck --> rowNum:%s, operator:%s"
,
target
.
getRowNum
(),
operator
));
}
});
}
catch
(
Exception
e
)
{
redis1Template
.
opsForValue
().
set
(
"huazheng:checkError:Mkpf:rowNum"
,
getErrorInfoFromException
(
e
));
}
}
private
void
selectMsegCheck
()
{
try
{
ValueOperations
<
String
,
String
>
opsForValue
=
redis1Template
.
opsForValue
();
opsForValue
.
setIfAbsent
(
"huazheng:check:Mseg:rowNum"
,
"0"
);
String
rowNum
=
opsForValue
.
get
(
"huazheng:check:Mseg:rowNum"
);
Mseg
build
=
Mseg
.
builder
().
rowNum
(
rowNum
).
build
();
List
<
Mseg
>
list
=
gpMapper
.
selectMsegCheck
(
build
);
// 从数仓中查询一组数据
if
(
list
.
size
()
==
0
)
{
redis1Template
.
opsForValue
().
set
(
"huazheng:check:Mseg:rowNum"
,
"0"
);
// 计数器复位
ThreadUtil
.
sleep
(
1000
);
// 没有数据了,休眠一下
}
list
.
forEach
(
target
->
{
// 遍历要检查的数据
Mseg
source
=
sapMapper
.
selectMsegById
(
target
);
// 根据主键查询源库中的数据
String
operator
=
"none"
;
if
(
source
==
null
)
{
// 如果源库中没有数据
gpMapper
.
deleteMseg
(
target
);
// 删除数仓中的数据
operator
=
"delete"
;
}
else
{
// 源库中有数据
String
shash
=
SecureUtil
.
md5
(
JSONUtil
.
toJsonStr
(
source
));
// 源库中数据的hash结果
String
thash
=
target
.
getHashResult
();
// 数仓中数据的hash结果
if
(!
shash
.
equals
(
thash
))
{
// 如果hash结果不一致
source
.
setHashResult
(
shash
);
while
(
true
)
{
try
{
gpMapper
.
updateMseg
(
source
);
// 更新数据到数仓中
break
;
}
catch
(
RuntimeException
e
)
{
log
.
error
(
e
.
getMessage
());
ThreadUtil
.
safeSleep
(
500
);
}
}
ThreadUtil
.
safeSleep
(
500
);
}
}
redis1Template
.
opsForValue
().
set
(
"huazheng:check:Mseg:rowNum"
,
target
.
getRowNum
());
if
(!
operator
.
equals
(
"none"
))
{
log
.
info
(
String
.
format
(
"selectMsegCheck --> rowNum:%s, operator:%s"
,
target
.
getRowNum
(),
operator
));
}
});
}
catch
(
Exception
e
)
{
redis1Template
.
opsForValue
().
set
(
"huazheng:checkError:Mseg:rowNum"
,
getErrorInfoFromException
(
e
));
}
}
private
void
selectAuspCheck
()
{
private
void
selectAuspCheck
()
{
try
{
try
{
ValueOperations
<
String
,
String
>
opsForValue
=
redis1Template
.
opsForValue
();
ValueOperations
<
String
,
String
>
opsForValue
=
redis1Template
.
opsForValue
();
...
@@ -1474,60 +1385,6 @@ public class DeleteUpdateJobServiceImpl {
...
@@ -1474,60 +1385,6 @@ public class DeleteUpdateJobServiceImpl {
redis1Template
.
opsForValue
().
set
(
"huazheng:checkError:Makt:rowNum"
,
getErrorInfoFromException
(
e
));
redis1Template
.
opsForValue
().
set
(
"huazheng:checkError:Makt:rowNum"
,
getErrorInfoFromException
(
e
));
}
}
}
}
private
void
selectMaraCheck
()
{
try
{
ValueOperations
<
String
,
String
>
opsForValue
=
redis1Template
.
opsForValue
();
opsForValue
.
setIfAbsent
(
"huazheng:check:Mara:rowNum"
,
"0"
);
String
rowNum
=
opsForValue
.
get
(
"huazheng:check:Mara:rowNum"
);
Mara
build
=
Mara
.
builder
().
rowNum
(
rowNum
).
build
();
List
<
Mara
>
list
=
gpMapper
.
selectMaraCheck
(
build
);
// 从数仓中查询一组数据
if
(
list
.
size
()
==
0
)
{
redis1Template
.
opsForValue
().
set
(
"huazheng:check:Mara:rowNum"
,
"0"
);
// 计数器复位
ThreadUtil
.
sleep
(
1000
);
// 没有数据了,休眠一下
}
list
.
forEach
(
target
->
{
// 遍历要检查的数据
Mara
source
=
sapMapper
.
selectMaraById
(
target
);
// 根据主键查询源库中的数据
String
operator
=
"none"
;
if
(
source
==
null
)
{
// 如果源库中没有数据
gpMapper
.
deleteMara
(
target
);
// 删除数仓中的数据
operator
=
"delete"
;
}
else
{
// 源库中有数据
String
shash
=
SecureUtil
.
md5
(
JSONUtil
.
toJsonStr
(
source
));
// 源库中数据的hash结果
String
thash
=
target
.
getHashResult
();
// 数仓中数据的hash结果
if
(!
shash
.
equals
(
thash
))
{
// 如果hash结果不一致
source
.
setHashResult
(
shash
);
// ===============================
if
(
source
.
getErsda
()
!=
null
)
{
String
erdat2
=
new
StringBuffer
(
source
.
getErsda
()).
insert
(
4
,
"-"
).
insert
(
7
,
"-"
).
toString
();
Date
date
=
DateUtil
.
parse
(
erdat2
);
source
.
setErsda1
(
date
);
}
if
(
source
.
getLaeda
()
!=
null
)
{
String
erdat2
=
new
StringBuffer
(
source
.
getLaeda
()).
insert
(
4
,
"-"
).
insert
(
7
,
"-"
).
toString
();
Date
date
=
DateUtil
.
parse
(
erdat2
);
source
.
setLaeda1
(
date
);
}
// ===============================
while
(
true
)
{
try
{
gpMapper
.
updateMara
(
source
);
// 更新数据到数仓中
break
;
}
catch
(
RuntimeException
e
)
{
log
.
error
(
e
.
getMessage
());
ThreadUtil
.
safeSleep
(
500
);
}
}
ThreadUtil
.
safeSleep
(
500
);
}
}
redis1Template
.
opsForValue
().
set
(
"huazheng:check:Mara:rowNum"
,
target
.
getRowNum
());
if
(!
operator
.
equals
(
"none"
))
{
log
.
info
(
String
.
format
(
"selectMaraCheck --> rowNum:%s, operator:%s"
,
target
.
getRowNum
(),
operator
));
}
});
}
catch
(
Exception
e
)
{
redis1Template
.
opsForValue
().
set
(
"huazheng:checkError:Mara:rowNum"
,
getErrorInfoFromException
(
e
));
}
}
private
void
selectMskaCheck
()
{
private
void
selectMskaCheck
()
{
try
{
try
{
ValueOperations
<
String
,
String
>
opsForValue
=
redis1Template
.
opsForValue
();
ValueOperations
<
String
,
String
>
opsForValue
=
redis1Template
.
opsForValue
();
...
...
src/main/java/com/huazheng/project/greenplum/service/impl/GPServiceImpl.java
浏览文件 @
ada585d5
...
@@ -2171,12 +2171,6 @@ public class GPServiceImpl {
...
@@ -2171,12 +2171,6 @@ public class GPServiceImpl {
public
void
processBkpf
(
Bkpf
data
,
Collector
<
Bkpf
>
out
)
{
public
void
processBkpf
(
Bkpf
data
,
Collector
<
Bkpf
>
out
)
{
try
{
try
{
if
(
data
.
getMandt
().
equals
(
"800"
)
//
&&
data
.
getBukrs
().
equals
(
"1000"
)
//
&&
data
.
getBelnr
().
equals
(
"4900108167"
)
//
&&
data
.
getGjahr
().
equals
(
"2019"
))
{
System
.
out
.
println
();
}
Bkpf
exist
=
gpMapper
.
selectBkpf
(
data
);
Bkpf
exist
=
gpMapper
.
selectBkpf
(
data
);
if
(
exist
!=
null
)
{
if
(
exist
!=
null
)
{
data
.
setExist
(
true
);
// 已经在库
data
.
setExist
(
true
);
// 已经在库
...
...
src/main/java/com/huazheng/project/hana/mapper/SapMapper.java
浏览文件 @
ada585d5
...
@@ -88,6 +88,13 @@ public interface SapMapper {
...
@@ -88,6 +88,13 @@ public interface SapMapper {
// .........
// .........
public
List
<
Knkk
>
selectKnkkCheckByUpdate
(
Knkk
knkk
);
public
List
<
Knkk
>
selectKnkkCheckByUpdate
(
Knkk
knkk
);
public
List
<
Aufk
>
selectAufkCheckByUpdate
(
Aufk
aufk
);
public
Afko
cascadeAfkoByAufk
(
Aufk
aufk
);
public
Afpo
cascadeAfpoByAufk
(
Aufk
aufk
);
public
List
<
Bkpf
>
selectBkpfCheckByUpdate
(
Bkpf
bkpf
);
public
List
<
Kna1
>
selectKna1CheckUpdate
(
Kna1
kna1
);
public
List
<
Likp
>
selectLikpCheckByUpdate
(
Likp
likp
);
public
List
<
Likp
>
selectLikpCheckByUpdate
(
Likp
likp
);
public
List
<
Lips
>
selectLipsCheckByUpdate
(
Lips
lips
);
public
List
<
Lips
>
selectLipsCheckByUpdate
(
Lips
lips
);
public
List
<
Pa0002
>
selectPa0002CheckByUpdate
(
Pa0002
pa0002
);
public
List
<
Pa0002
>
selectPa0002CheckByUpdate
(
Pa0002
pa0002
);
...
@@ -95,12 +102,8 @@ public interface SapMapper {
...
@@ -95,12 +102,8 @@ public interface SapMapper {
public
List
<
Vbrk
>
selectVbrkCheckByUpdate
(
Vbrk
vbrk
);
public
List
<
Vbrk
>
selectVbrkCheckByUpdate
(
Vbrk
vbrk
);
public
List
<
Zsd06
>
selectZsd06CheckByUpdate
(
Zsd06
zsd06
);
public
List
<
Zsd06
>
selectZsd06CheckByUpdate
(
Zsd06
zsd06
);
public
List
<
Zsdfhzl
>
selectZsdfhzlCheckByUpdate
(
Zsdfhzl
zsdfhzl
);
public
List
<
Zsdfhzl
>
selectZsdfhzlCheckByUpdate
(
Zsdfhzl
zsdfhzl
);
public
List
<
Mara
>
selectMaraCheckByUpdate
(
Mara
mara
);
public
List
<
Aufk
>
selectAufkCheckByUpdate
(
Aufk
aufk
);
public
List
<
Ausp
>
cascadeAuspByMara
(
Mara
mara
);
public
Afko
cascadeAfkoByAufk
(
Aufk
aufk
);
public
Afpo
cascadeAfpoByAufk
(
Aufk
aufk
);
public
List
<
Bkpf
>
selectBkpfCheckByUpdate
(
Bkpf
bkpf
);
public
List
<
Kna1
>
selectKna1CheckUpdate
(
Kna1
kna1
);
// ......
// ......
public
Bkpf
selectBkpfById
(
Bkpf
target
);
public
Bkpf
selectBkpfById
(
Bkpf
target
);
...
@@ -108,8 +111,6 @@ public interface SapMapper {
...
@@ -108,8 +111,6 @@ public interface SapMapper {
public
Ausp
selectAuspById
(
Ausp
target
);
public
Ausp
selectAuspById
(
Ausp
target
);
public
Zpoedit
selectZpoeditById
(
Zpoedit
target
);
public
Zpoedit
selectZpoeditById
(
Zpoedit
target
);
public
Tspat
selectTspatById
(
Tspat
target
);
public
Tspat
selectTspatById
(
Tspat
target
);
public
Mseg
selectMsegById
(
Mseg
target
);
public
Mkpf
selectMkpfById
(
Mkpf
target
);
public
Afko
selectAfkoById
(
Afko
target
);
public
Afko
selectAfkoById
(
Afko
target
);
public
Afpo
selectAfpoById
(
Afpo
target
);
public
Afpo
selectAfpoById
(
Afpo
target
);
public
Afvc
selectAfvcById
(
Afvc
target
);
public
Afvc
selectAfvcById
(
Afvc
target
);
...
...
src/main/resources/mapper/greenplum/GPMapper_greenplum.xml
浏览文件 @
ada585d5
...
@@ -709,17 +709,17 @@
...
@@ -709,17 +709,17 @@
insert into Mseg (mandt, mblnr, mjahr, zeile, bwart, charg, menge, budat_mkpf, cputm_mkpf, aufnr, hashResult)
insert into Mseg (mandt, mblnr, mjahr, zeile, bwart, charg, menge, budat_mkpf, cputm_mkpf, aufnr, hashResult)
values(#{mandt},#{mblnr},#{mjahr},#{zeile},#{bwart},#{charg},#{menge},#{budat_mkpf},#{cputm_mkpf},#{aufnr},#{hashResult})
values(#{mandt},#{mblnr},#{mjahr},#{zeile},#{bwart},#{charg},#{menge},#{budat_mkpf},#{cputm_mkpf},#{aufnr},#{hashResult})
</insert>
</insert>
<delete
id=
"deleteMseg"
parameterType=
"com.huazheng.project.hana.model.Mseg"
>
<!-- <delete id="deleteMseg" parameterType="com.huazheng.project.hana.model.Mseg"> --
>
delete from Mseg where mandt = #{mandt} and mblnr = #{mblnr} and mjahr = #{mjahr} and zeile = #{zeile}
<!-- delete from Mseg where mandt = #{mandt} and mblnr = #{mblnr} and mjahr = #{mjahr} and zeile = #{zeile} -->
</delete
>
<!-- </delete> --
>
<update
id=
"updateMseg"
parameterType=
"com.huazheng.project.hana.model.Mseg"
>
<!-- <update id="updateMseg" parameterType="com.huazheng.project.hana.model.Mseg"> --
>
update Mseg set
<!-- update Mseg set -->
mandt = #{mandt}, mblnr = #{mblnr}, mjahr = #{mjahr}, zeile = #{zeile}, bwart = #{bwart}, charg = #{charg}, menge = #{menge}, budat_mkpf = #{budat_mkpf}, cputm_mkpf = #{cputm_mkpf}, aufnr = #{aufnr}, hashResult = #{hashResult}
<!-- mandt = #{mandt}, mblnr = #{mblnr}, mjahr = #{mjahr}, zeile = #{zeile}, bwart = #{bwart}, charg = #{charg}, menge = #{menge}, budat_mkpf = #{budat_mkpf}, cputm_mkpf = #{cputm_mkpf}, aufnr = #{aufnr}, hashResult = #{hashResult} -->
where mandt = #{mandt} and mblnr = #{mblnr} and mjahr = #{mjahr} and zeile = #{zeile}
<!-- where mandt = #{mandt} and mblnr = #{mblnr} and mjahr = #{mjahr} and zeile = #{zeile} -->
</update
>
<!-- </update> --
>
<select
id=
"selectMsegCheck"
parameterType=
"com.huazheng.project.hana.model.Mseg"
resultType=
"com.huazheng.project.hana.model.Mseg"
>
<!-- <select id="selectMsegCheck" parameterType="com.huazheng.project.hana.model.Mseg" resultType="com.huazheng.project.hana.model.Mseg"> --
>
select * from Mseg where rownum
>
#{rowNum} order by rownum limit 20
<!-- select * from Mseg where rownum > #{rowNum} order by rownum limit 20 -->
</select
>
<!-- </select> --
>
<select
id=
"selectMkpf"
parameterType=
"com.huazheng.project.hana.model.Mkpf"
resultType=
"com.huazheng.project.hana.model.Mkpf"
>
<select
id=
"selectMkpf"
parameterType=
"com.huazheng.project.hana.model.Mkpf"
resultType=
"com.huazheng.project.hana.model.Mkpf"
>
select * from Mkpf where mandt = #{mandt} and mblnr = #{mblnr} and mjahr = #{mjahr}
select * from Mkpf where mandt = #{mandt} and mblnr = #{mblnr} and mjahr = #{mjahr}
...
@@ -728,17 +728,17 @@
...
@@ -728,17 +728,17 @@
insert into Mkpf (mandt,mblnr,mjahr,bldat,cputm,hashResult)
insert into Mkpf (mandt,mblnr,mjahr,bldat,cputm,hashResult)
values(#{mandt},#{mblnr},#{mjahr},#{bldat},#{cputm},#{hashResult})
values(#{mandt},#{mblnr},#{mjahr},#{bldat},#{cputm},#{hashResult})
</insert>
</insert>
<delete
id=
"deleteMkpf"
parameterType=
"com.huazheng.project.hana.model.Mkpf"
>
<!-- <delete id="deleteMkpf" parameterType="com.huazheng.project.hana.model.Mkpf"> --
>
delete from Mkpf where mandt = #{mandt} and mblnr = #{mblnr} and mjahr = #{mjahr}
<!-- delete from Mkpf where mandt = #{mandt} and mblnr = #{mblnr} and mjahr = #{mjahr} -->
</delete
>
<!-- </delete> --
>
<update
id=
"updateMkpf"
parameterType=
"com.huazheng.project.hana.model.Mkpf"
>
<!-- <update id="updateMkpf" parameterType="com.huazheng.project.hana.model.Mkpf"> --
>
update Mkpf set
<!-- update Mkpf set -->
mandt = #{mandt}, mblnr = #{mblnr}, mjahr = #{mjahr}, bldat = #{bldat}, cputm = #{cputm}, hashResult = #{hashResult}
<!-- mandt = #{mandt}, mblnr = #{mblnr}, mjahr = #{mjahr}, bldat = #{bldat}, cputm = #{cputm}, hashResult = #{hashResult} -->
where mandt = #{mandt} and mblnr = #{mblnr} and mjahr = #{mjahr}
<!-- where mandt = #{mandt} and mblnr = #{mblnr} and mjahr = #{mjahr} -->
</update
>
<!-- </update> --
>
<select
id=
"selectMkpfCheck"
parameterType=
"com.huazheng.project.hana.model.Mkpf"
resultType=
"com.huazheng.project.hana.model.Mkpf"
>
<!-- <select id="selectMkpfCheck" parameterType="com.huazheng.project.hana.model.Mkpf" resultType="com.huazheng.project.hana.model.Mkpf"> --
>
select * from Mkpf where rownum
>
#{rowNum} order by rownum limit 20
<!-- select * from Mkpf where rownum > #{rowNum} order by rownum limit 20 -->
</select
>
<!-- </select> --
>
<select
id=
"selectKonv"
parameterType=
"com.huazheng.project.hana.model.Konv"
resultType=
"com.huazheng.project.hana.model.Konv"
>
<select
id=
"selectKonv"
parameterType=
"com.huazheng.project.hana.model.Konv"
resultType=
"com.huazheng.project.hana.model.Konv"
>
select * from Konv
select * from Konv
...
...
src/main/resources/mapper/hana/SapMapper_hana.xml
浏览文件 @
ada585d5
...
@@ -424,14 +424,27 @@
...
@@ -424,14 +424,27 @@
where "$rowid$"
>
#{rowids} and cha_datum != '00000000' and cha_datum = CURRENT_DATE ${hana_mandt}
where "$rowid$"
>
#{rowids} and cha_datum != '00000000' and cha_datum = CURRENT_DATE ${hana_mandt}
order by "$rowid$"
order by "$rowid$"
</select>
</select>
<select
id=
"selectZsdfhzlCheckByUpdate"
parameterType=
"
com.huazheng.project.hana.model.Zsdfhzl"
resultType=
"com.huazheng.project.hana.model.
Zsdfhzl"
>
<select
id=
"selectZsdfhzlCheckByUpdate"
parameterType=
"
Zsdfhzl"
resultType=
"
Zsdfhzl"
>
select top 20 "$rowid$" as rowids,
select top 20 "$rowid$" as rowids,
vbeln, posnr, mandt, vgbel, vgpos, uname, matnr, fmenge, cdate, ctime, fh_date, werks, cha_datum
vbeln, posnr, mandt, vgbel, vgpos, uname, matnr, fmenge, cdate, ctime, fh_date, werks, cha_datum
from ${hana_user}.zsd_fhzl
from ${hana_user}.zsd_fhzl
where "$rowid$"
>
#{rowids} and cha_datum != '00000000' and cha_datum = CURRENT_DATE ${hana_mandt}
where "$rowid$"
>
#{rowids} and cha_datum != '00000000' and cha_datum = CURRENT_DATE ${hana_mandt}
order by "$rowid$"
order by "$rowid$"
</select>
</select>
<select
id=
"selectMaraCheckByUpdate"
parameterType=
"Mara"
resultType=
"Mara"
>
select top 20 "$rowid$" as rowids,
matnr, mandt, ersda, ernam, laeda, aenam, vpsta, pstat, mtart, mbrsh, matkl,
bismt, meins, bstme, wrkst, brgew, ntgew, gewei, spart, kzkfg, extwg, cuobf
from ${hana_user}.Mara
where "$rowid$"
>
#{rowids} and laeda != '00000000' and laeda = CURRENT_DATE ${hana_mandt}
order by "$rowid$"
</select>
<select
id=
"cascadeAuspByMara"
parameterType=
"Mara"
resultType=
"Ausp"
>
select
mandt, objek, atinn, atzhl, mafid, klart, adzhl, atwrt
from ${hana_user}.Ausp
where objek = #{matnr} ${hana_mandt}
</select>
...
@@ -494,16 +507,6 @@
...
@@ -494,16 +507,6 @@
from ${hana_user}.Zpo_edit
from ${hana_user}.Zpo_edit
where mandt = #{mandt} and pwerk = #{pwerk} and aufnr = #{aufnr}
where mandt = #{mandt} and pwerk = #{pwerk} and aufnr = #{aufnr}
</select>
</select>
<select
id=
"selectMkpfById"
parameterType=
"Mkpf"
resultType=
"Mkpf"
>
select mandt, mblnr, mjahr, bldat, cputm
from ${hana_user}.Mkpf
where mandt = #{mandt} and mblnr = #{mblnr} and mjahr = #{mjahr}
</select>
<select
id=
"selectMsegById"
parameterType=
"Mseg"
resultType=
"Mseg"
>
select mandt, mblnr, mjahr, zeile, bwart, charg, menge, budat_mkpf, cputm_mkpf, aufnr
from ${hana_user}.Mseg
where mandt = #{mandt} and mblnr = #{mblnr} and mjahr = #{mjahr} and zeile = #{zeile}
</select>
<select
id=
"selectKonvById"
parameterType=
"Konv"
resultType=
"Konv"
>
<select
id=
"selectKonvById"
parameterType=
"Konv"
resultType=
"Konv"
>
select mandt,knumv,kposn,stunr,zaehk,kntyp,kbetr
select mandt,knumv,kposn,stunr,zaehk,kntyp,kbetr
from ${hana_user}.Konv
from ${hana_user}.Konv
...
...
src/main/resources/spring-init.xml
浏览文件 @
ada585d5
...
@@ -796,6 +796,16 @@
...
@@ -796,6 +796,16 @@
</property>
</property>
<property
name=
"cronExpression"
value=
"* * * * * ?"
/>
<property
name=
"cronExpression"
value=
"* * * * * ?"
/>
</bean>
</bean>
<bean
class=
"org.springframework.scheduling.quartz.CronTriggerFactoryBean"
>
<property
name=
"jobDetail"
>
<bean
parent=
"methodJobDetail"
>
<property
name=
"targetObject"
ref=
"checkUpdateServiceImpl"
/>
<property
name=
"targetMethod"
value=
"selectMaraCheckUpdate"
/>
</bean>
</property>
<property
name=
"cronExpression"
value=
"* * * * * ?"
/>
</bean>
<!-- 删除流程 -->
<!-- 删除流程 -->
<bean
class=
"org.springframework.scheduling.quartz.CronTriggerFactoryBean"
>
<bean
class=
"org.springframework.scheduling.quartz.CronTriggerFactoryBean"
>
...
@@ -906,7 +916,15 @@
...
@@ -906,7 +916,15 @@
</property>
</property>
<property
name=
"cronExpression"
value=
"* * * * * ?"
/>
<property
name=
"cronExpression"
value=
"* * * * * ?"
/>
</bean>
</bean>
<bean
class=
"org.springframework.scheduling.quartz.CronTriggerFactoryBean"
>
<property
name=
"jobDetail"
>
<bean
parent=
"methodJobDetail"
>
<property
name=
"targetObject"
ref=
"checkDeleteServiceImpl"
/>
<property
name=
"targetMethod"
value=
"selectMaraCheckByDelete"
/>
</bean>
</property>
<property
name=
"cronExpression"
value=
"* * * * * ?"
/>
</bean>
</list>
</list>
</constructor-arg>
</constructor-arg>
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论