Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
X
xzxt-control
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
常超
xzxt-control
Commits
e462c136
Commit
e462c136
authored
Mar 21, 2019
by
caojingji
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
20190321---wangling---整库比对方式改为定时多线程比对
parent
b02bd2ca
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
125 additions
and
78 deletions
+125
-78
src/main/java/com/cc/controller/BssjbdController.java
+2
-4
src/main/java/com/cc/service/SjjhService.java
+1
-1
src/main/java/com/cc/service/serviceimpl/SjjhServiceImpl.java
+110
-64
src/main/resources/resources/sjsblog/css/cover.css
+5
-2
src/main/resources/resources/sjsblog/css/jquery.alert.css
+5
-5
src/main/resources/resources/sjsblog/img/bg.png
+0
-0
src/main/webapp/WEB-INF/view/sjsblog/bssjbd.jsp
+2
-2
No files found.
src/main/java/com/cc/controller/BssjbdController.java
View file @
e462c136
...
...
@@ -134,10 +134,8 @@ public class BssjbdController {
//md5比对(整库)
@RequestMapping
(
"/toBssjbdzk"
)
@ResponseBody
public
String
toBssjbdzk
(
@RequestParam
(
"xxzjbhs"
)
String
fmqString
)
{
String
updateflag
=
""
;
updateflag
=
sjjhService
.
getFmqBssjbd
();
return
updateflag
;
public
void
toBssjbdzk
(
@RequestParam
(
"xxzjbhs"
)
String
fmqString
)
{
sjjhService
.
getFmqBssjbd
();
}
public
ArrayList
QueryByStr
(
String
sqlString
){
...
...
src/main/java/com/cc/service/SjjhService.java
View file @
e462c136
...
...
@@ -37,5 +37,5 @@ public interface SjjhService {
void
insertSjsblog
(
Sjsblog
sjsblog
);
String
getFmqBssjbd
();
void
getFmqBssjbd
();
}
src/main/java/com/cc/service/serviceimpl/SjjhServiceImpl.java
View file @
e462c136
...
...
@@ -8,6 +8,7 @@ import com.cc.mapper.xzxt.SjjhyzDao;
import
com.cc.service.SjjhService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.scheduling.annotation.Async
;
import
org.springframework.scheduling.annotation.Scheduled
;
import
org.springframework.stereotype.Component
;
import
org.springframework.stereotype.Service
;
...
...
@@ -134,15 +135,33 @@ public class SjjhServiceImpl implements SjjhService {
//心跳机制,每天晚上10点触发
@Override
@Scheduled
(
cron
=
"0 0 22 * * ?"
)
public
String
getFmqBssjbd
()
{
@Async
(
"taskExecutor"
)
public
void
getFmqBssjbd
()
{
System
.
out
.
print
(
"心跳开始------------------------------------"
);
//tblmap<表名,<主键值,md5值>>
Map
<
String
,
Map
<
String
,
String
>>
tblmap
=
new
HashMap
<
String
,
Map
<
String
,
String
>>();
Map
<
String
,
String
>
md5map
=
new
HashMap
<
String
,
String
>();
String
updateflag
=
""
;
//整库比对,获取fmq表中的所有数据,存在tblmap中
String
fmqsqlStr
=
"SELECT * FROM FMQ"
;
List
fmqList
=
QueryByStr
(
fmqsqlStr
);
int
num
=
0
;
Map
<
String
,
Map
<
String
,
String
>>
tblmap
=
getTblmap
(
fmqList
);
//String updateflag = "fail";
for
(
String
tblname
:
tblmap
.
keySet
())
{
Map
<
String
,
String
>
md5map
=
tblmap
.
get
(
tblname
);
num
+=
md5map
.
size
();
}
List
objects
=
null
;
if
(
num
==
fmqList
.
size
()){
objects
=
getVwList
(
tblmap
);
if
(
objects
.
get
(
0
)
==
objects
.
get
(
1
)){
System
.
out
.
print
(
"比对完成!------------------------------------"
);
}
else
{
System
.
out
.
print
(
"比对失败!------------------------------------"
);
}
}
}
public
Map
<
String
,
Map
<
String
,
String
>>
getTblmap
(
List
fmqList
){
//tblmap<表名,<主键值,md5值>>
Map
<
String
,
Map
<
String
,
String
>>
tblmap
=
new
HashMap
<
String
,
Map
<
String
,
String
>>();
Map
<
String
,
String
>
md5map
=
new
HashMap
<
String
,
String
>();
String
bjtablename
=
""
;
String
bjxxzjbh
=
""
;
String
bjmd5
=
""
;
...
...
@@ -158,15 +177,19 @@ public class SjjhServiceImpl implements SjjhService {
tblmap
.
put
(
bjtablename
,
md5map
);
}
}
String
bdzt
=
""
;
Boolean
bool
=
false
;
int
succNum
=
0
;
List
<
Sjsblog
>
sjsbs
=
new
ArrayList
<
Sjsblog
>();
return
tblmap
;
}
public
List
getVwList
(
Map
<
String
,
Map
<
String
,
String
>>
tblmap
){
List
objects
=
new
ArrayList
();
List
objects2
=
new
ArrayList
();
Fmq
fmq
=
null
;
List
vwList
=
null
;
int
succNum
=
0
;
int
sjsbss
=
0
;
//遍历map中的键
for
(
String
tblname
:
tblmap
.
keySet
())
{
String
vwsqlStr
=
""
;
List
vwList
=
new
ArrayList
();
vwList
=
new
ArrayList
();
//根据表名获取视图名
fmq
=
new
Fmq
();
String
stname
=
"VW_"
+
tblname
;
...
...
@@ -175,65 +198,88 @@ public class SjjhServiceImpl implements SjjhService {
vwsqlStr
=
"SELECT * FROM "
+
fmq
.
getRn
()
+
" WHERE TABLE_NAME = '"
+
fmq
.
getTableName
()
+
"'"
;
//整库比对
vwList
=
QueryByStr
(
vwsqlStr
);
String
sjtablename
=
""
;
String
sjxxzjbh
=
""
;
String
sjmd5
=
""
;
Sjsblog
sjsblog
=
null
;
for
(
int
j
=
0
;
j
<
vwList
.
size
();
j
++)
{
sjtablename
=
((
Map
<
String
,
String
>)
vwList
.
get
(
j
)).
get
(
"table_name"
);
sjxxzjbh
=
((
Map
<
String
,
String
>)
vwList
.
get
(
j
)).
get
(
"xxzjbh"
);
sjmd5
=
((
Map
<
String
,
String
>)
vwList
.
get
(
j
)).
get
(
"md5"
);
//根据表名和主键值获取对应的部级的md5值
String
FMQsqlStr
=
"SELECT * FROM FMQ WHERE TABLE_NAME = '"
+
sjtablename
+
"' AND XXZJBH = '"
+
sjxxzjbh
+
"'"
;
List
FMQList
=
QueryByStr
(
FMQsqlStr
);
sjsblog
=
new
Sjsblog
();
if
(
FMQList
!=
null
&&
FMQList
.
size
()
>
0
)
{
for
(
int
m
=
0
;
m
<
FMQList
.
size
();
m
++)
{
String
fmqmd5
=
((
Map
<
String
,
String
>)
FMQList
.
get
(
m
)).
get
(
"md5"
);
if
(!
""
.
equals
(
fmqmd5
))
{
//已经上报过
if
(
sjmd5
.
equals
(
fmqmd5
))
{
bdzt
=
"0"
;
//相同
}
else
{
bdzt
=
"1"
;
//不相同
}
//更新本条数据的bdzt和bdsj
sjsblog
=
new
Sjsblog
();
sjsblog
.
setTblname
(
sjtablename
);
sjsblog
.
setKeyvalue
(
sjxxzjbh
);
sjsblog
.
setBdzt
(
bdzt
);
sjsbs
.
add
(
sjsblog
);
//在sys_log_sjsb表中更新数据的比对时间和比对状态
bool
=
sjjhtjDao
.
updateSjsblog
(
sjsblog
);
if
(
bool
)
succNum
++;
}
}
objects
=
getFMQList
(
vwList
);
succNum
+=
Integer
.
parseInt
(
objects
.
get
(
0
).
toString
());
sjsbss
+=
Integer
.
parseInt
(
objects
.
get
(
1
).
toString
());
}
objects2
.
add
(
succNum
);
objects2
.
add
(
sjsbss
);
return
objects2
;
}
public
List
<
Integer
>
getFMQList
(
List
vwList
){
String
sjtablename
=
""
;
String
sjxxzjbh
=
""
;
String
sjmd5
=
""
;
Sjsblog
sjsblog
=
null
;
List
objs
=
new
ArrayList
();
int
succnum
=
0
;
int
sjsbnum
=
0
;
for
(
int
j
=
0
;
j
<
vwList
.
size
();
j
++)
{
List
objects
=
new
ArrayList
();
sjtablename
=
((
Map
<
String
,
String
>)
vwList
.
get
(
j
)).
get
(
"table_name"
);
sjxxzjbh
=
((
Map
<
String
,
String
>)
vwList
.
get
(
j
)).
get
(
"xxzjbh"
);
sjmd5
=
((
Map
<
String
,
String
>)
vwList
.
get
(
j
)).
get
(
"md5"
);
//根据表名和主键值获取对应的部级的md5值
String
FMQsqlStr
=
"SELECT * FROM FMQ WHERE TABLE_NAME = '"
+
sjtablename
+
"' AND XXZJBH = '"
+
sjxxzjbh
+
"'"
;
List
FMQList
=
QueryByStr
(
FMQsqlStr
);
sjsblog
=
new
Sjsblog
();
if
(
FMQList
!=
null
&&
FMQList
.
size
()
>
0
)
{
objects
=
getObjects
(
FMQList
,
sjtablename
,
sjxxzjbh
,
sjmd5
);
succnum
+=
Integer
.
parseInt
(
objects
.
get
(
0
).
toString
());
sjsbnum
+=
Integer
.
parseInt
(
objects
.
get
(
1
).
toString
());
}
else
{
//未上报过(将没有的数据插入到sys_log_sjsb表中,fwzt=2(未上报),bdzt=1)
//插入之前先查询sys_log_sjsb表中是否存在这条数据
sjsblog
.
setTblname
(
sjtablename
);
sjsblog
.
setKeyvalue
(
sjxxzjbh
);
Sjsblog
sjsbxxlog
=
sjjhtjDao
.
querySjsbxq
(
sjsblog
);
sjsblog
.
setYwxxdm
(
sjtablename
.
substring
(
3
,
sjtablename
.
length
()));
sjsblog
.
setFwzt
(
"2"
);
sjsblog
.
setBdzt
(
"1"
);
sjsblog
.
setScbz
(
"0"
);
if
(
sjsbxxlog
!=
null
)
{
//存在,更新
sjjhtjDao
.
updateSjsblog
(
sjsblog
);
}
else
{
//未上报过(将没有的数据插入到sys_log_sjsb表中,fwzt=2(未上报),bdzt=1)
//插入之前先查询sys_log_sjsb表中是否存在这条数据
sjsblog
.
setTblname
(
sjtablename
);
sjsblog
.
setKeyvalue
(
sjxxzjbh
);
Sjsblog
sjsbxxlog
=
sjjhtjDao
.
querySjsbxq
(
sjsblog
);
sjsblog
.
setYwxxdm
(
sjtablename
.
substring
(
3
,
sjtablename
.
length
()));
sjsblog
.
setFwzt
(
"2"
);
sjsblog
.
setBdzt
(
"1"
);
sjsblog
.
setScbz
(
"0"
);
if
(
sjsbxxlog
!=
null
)
{
//存在,更新
bool
=
sjjhtjDao
.
updateSjsblog
(
sjsblog
);
}
else
{
//不存在,插入
sjjhtjDao
.
insertSjsblog
(
sjsblog
);
}
//不存在,插入
sjjhtjDao
.
insertSjsblog
(
sjsblog
);
}
}
}
if
(
succNum
==
sjsbs
.
size
()){
updateflag
=
"success"
;
}
else
{
updateflag
=
"fail"
;
objs
.
add
(
succnum
);
objs
.
add
(
sjsbnum
);
return
objs
;
}
public
List
getObjects
(
List
FMQList
,
String
sjtablename
,
String
sjxxzjbh
,
String
sjmd5
){
String
bdzt
=
""
;
Sjsblog
sjsblog
=
null
;
List
Objects
=
new
ArrayList
();
Boolean
bool
=
false
;
int
succNum
=
0
;
List
<
Sjsblog
>
sjsbs
=
new
ArrayList
<
Sjsblog
>();
for
(
int
m
=
0
;
m
<
FMQList
.
size
();
m
++)
{
String
fmqmd5
=
((
Map
<
String
,
String
>)
FMQList
.
get
(
m
)).
get
(
"md5"
);
if
(!
""
.
equals
(
fmqmd5
))
{
//已经上报过
if
(
sjmd5
.
equals
(
fmqmd5
))
{
bdzt
=
"0"
;
//相同
}
else
{
bdzt
=
"1"
;
//不相同
}
//更新本条数据的bdzt和bdsj
sjsblog
=
new
Sjsblog
();
sjsblog
.
setTblname
(
sjtablename
);
sjsblog
.
setKeyvalue
(
sjxxzjbh
);
sjsblog
.
setBdzt
(
bdzt
);
sjsbs
.
add
(
sjsblog
);
//在sys_log_sjsb表中更新数据的比对时间和比对状态
bool
=
sjjhtjDao
.
updateSjsblog
(
sjsblog
);
if
(
bool
)
succNum
++;
}
}
return
updateflag
;
Objects
.
add
(
succNum
);
Objects
.
add
(
sjsbs
.
size
());
return
Objects
;
}
public
ArrayList
QueryByStr
(
String
sqlString
){
ArrayList
list
=
new
ArrayList
();
...
...
src/main/resources/resources/sjsblog/css/cover.css
View file @
e462c136
...
...
@@ -139,4 +139,7 @@ body .gSys_msg_box .ptitle h4 {
height
:
27px
;
line-height
:
27px
;
}
.pmsg
.ct
{
text-align
:
left
;}
\ No newline at end of file
.pmsg
.ct
{
text-align
:
left
;}
.gSys_msg_box
.pbox
.pmsg
.ct
{
color
:
#666
;
}
\ No newline at end of file
src/main/resources/resources/sjsblog/css/jquery.alert.css
View file @
e462c136
...
...
@@ -92,7 +92,7 @@
}
.gSys_msg_box
.ptitle
.fn-bg
{
background-image
:
url("
images/b
g/bg.png")
;
background-image
:
url("
../im
g/bg.png")
;
background-repeat
:
no-repeat
;
}
...
...
@@ -116,7 +116,7 @@
overflow
:
hidden
;
display
:
inline-block
;
vertical-align
:
middle
;
background-image
:
url("
images/b
g/bg.png")
;
background-image
:
url("
../im
g/bg.png")
;
background-repeat
:
no-repeat
;
left
:
25px
;
position
:
absolute
;
...
...
@@ -149,7 +149,7 @@
}
.gSys_msg_box
.pbox
.pmsg
.pinput
{
background
:
url("
images/b
g/bg.png")
no-repeat
scroll
0
-180px
transparent
;
background
:
url("
../im
g/bg.png")
no-repeat
scroll
0
-180px
transparent
;
border-color
:
#9A9A9A
#CDCDCD
#CDCDCD
#9A9A9A
;
border-style
:
solid
;
border-width
:
1px
;
...
...
@@ -206,7 +206,7 @@
.gSys_msg_box
.popt
.opt
.pbtn
,
.gSys_msg_box
.popt
.opt
.pbtn
span
{
background-image
:
url("
images/b
g/bg.png")
;
background-image
:
url("
../im
g/bg.png")
;
background-repeat
:
no-repeat
;
}
...
...
@@ -218,7 +218,7 @@
.gSys_msg_box
.popt
.opt
.pbtn
span
{
margin-right
:
3px
;
padding
:
4px
9px
5px
12px
;
font-family
:
""
;
font-family
:
"
����
"
;
}
.gSys_msg_box
.popt
.opt
.pbtn
{
...
...
src/main/resources/resources/sjsblog/img/bg.png
0 → 100644
View file @
e462c136
4.06 KB
src/main/webapp/WEB-INF/view/sjsblog/bssjbd.jsp
View file @
e462c136
...
...
@@ -69,7 +69,7 @@
</td>
<td
colspan=
"2"
>
<a
class=
'btn_a btn_search'
onclick=
'toSjbd()'
>
比对
</a>
<
a
class=
'btn_a btn_add'
onclick=
'toZkSjbd()'
>
整库比对
</a
>
<
%
--
<
a
class=
'btn_a btn_add'
onclick=
'toZkSjbd()'
>
整库比对
</a>
--%
>
</td>
</tr>
</tbody>
...
...
@@ -96,7 +96,7 @@
</div>
</div>
<script
type=
"text/javascript"
src=
"sjsblog/js/jquery.min.js"
></script>
<script
type=
"text/javascript"
src=
"sjsblog/j
s/j
query.dataTables.min.js"
></script>
<script
type=
"text/javascript"
src=
"sjsblog/jquery.dataTables.min.js"
></script>
<script
type=
"text/javascript"
src=
"sjsblog/css/layer/layer.js"
></script>
<script
type=
"text/javascript"
src=
"sjsblog/datepicker/WdatePicker.js"
></script>
<script
type=
"text/javascript"
src=
"sjsblog/datepicker/calendar.js"
></script>
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment