提交 bbbb0a87 作者: guofeng

vbak数据问题修复

上级 03054b82
...@@ -233,11 +233,11 @@ under the License. ...@@ -233,11 +233,11 @@ under the License.
<!-- <version>2.2.4.RELEASE</version> --> <!-- <version>2.2.4.RELEASE</version> -->
<!-- </dependency> --> <!-- </dependency> -->
<dependency> <dependency>
<groupId>org.springframework.data</groupId> <groupId>org.springframework.data</groupId>
<artifactId>spring-data-redis</artifactId> <artifactId>spring-data-redis</artifactId>
<version>2.3.3.RELEASE</version> <version>2.3.3.RELEASE</version>
</dependency> </dependency>
<dependency> <dependency>
......
...@@ -3,6 +3,7 @@ package com.huazheng.project.greenplum.service.impl; ...@@ -3,6 +3,7 @@ package com.huazheng.project.greenplum.service.impl;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.concurrent.ExecutorService; import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors; import java.util.concurrent.Executors;
import java.util.concurrent.Future; import java.util.concurrent.Future;
...@@ -1717,6 +1718,15 @@ public class CheckUpdateServiceImpl { ...@@ -1717,6 +1718,15 @@ public class CheckUpdateServiceImpl {
} }
slist.forEach(source -> { // 遍历要检查的数据 slist.forEach(source -> { // 遍历要检查的数据
Map<String, Object> joinItem = sapMapper.selectVbak4Join(source);
if (joinItem != null) { // join的查询替代方式
Object object = joinItem.get("pernr");
if (object != null) {
source.setPernr(object.toString());
}
}
Vbak target = gpMapper.selectVbak(source); // 根据主键查询源库中的数据 Vbak target = gpMapper.selectVbak(source); // 根据主键查询源库中的数据
String operator = "none"; String operator = "none";
Long srowids = source.getRowids(); Long srowids = source.getRowids();
......
...@@ -5,6 +5,7 @@ import java.io.StringWriter; ...@@ -5,6 +5,7 @@ import java.io.StringWriter;
import java.util.Arrays; import java.util.Arrays;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.ClassPathResource;
...@@ -1120,6 +1121,13 @@ public class JobServiceImpl { ...@@ -1120,6 +1121,13 @@ public class JobServiceImpl {
List<Vbak> list = sapMapper.selectVbakNew(vbak); List<Vbak> list = sapMapper.selectVbakNew(vbak);
if (!list.isEmpty()) { if (!list.isEmpty()) {
list.forEach(item -> { list.forEach(item -> {
Map<String, Object> joinItem = sapMapper.selectVbak4Join(item);
if (joinItem != null) { // join的查询替代方式
Object object = joinItem.get("pernr");
if (object != null) {
item.setPernr(object.toString());
}
}
String erdat = item.getErdat(); String erdat = item.getErdat();
String erzet = item.getErzet(); String erzet = item.getErzet();
if ("00000000".equals(erdat)) { if ("00000000".equals(erdat)) {
......
package com.huazheng.project.hana.mapper; package com.huazheng.project.hana.mapper;
import java.util.List; import java.util.List;
import java.util.Map;
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;
...@@ -161,4 +162,8 @@ public interface SapMapper { ...@@ -161,4 +162,8 @@ public interface SapMapper {
public Mkpf selectMkpfById(Mkpf target); public Mkpf selectMkpfById(Mkpf target);
public Afru selectAfruById(Afru target); public Afru selectAfruById(Afru target);
public Aufm selectAufmById(Aufm target); public Aufm selectAufmById(Aufm target);
// vbak修改join连接后的子查询
public Map<String, Object> selectVbak4Join(Vbak target);
} }
select count(1) from sapabap1.kna1 where updat = '00000000' union all select count(1) from sapabap1.vbak where mandt = '800' and audat = '20201212';
select count(1) from sapabap1.kna1 where updat != '00000000' union all
select count(1) from sapabap1.kna1 where updat is null;
select audat, count(1) from sapabap1.vbak where audat >= '20201207' and audat <= '20201215' group by audat order by audat desc limit 100;
select "$rowid$" from sapabap1.vbak where mandt = '800' and vbeln = '0010078342';
select top 20 "$rowid$" as rowids, select top 20 "$rowid$" as rowids,
mandt, pwerk, aufnr, reason a.vbeln, a.mandt, a.vbtyp, a.audat, a.waerk, a.kalsm, a.ctlpc, a.kunnr, a.bukrs_vf, a.bstnk,
from sapabap1.Zpo_edit a.bname, a.telf1, a.netwr, a.vkbur, a.knumv, a.vkorg, a.vtweg, a.kkber, a.auart, a.aedat, b.pernr,
where "$rowid$" > '20593' and mandt = '800' a.erdat, a.erzet, a.spart
order by "$rowid$"; from ${hana_user}.vbak a
left join (
) b on a.vbeln = b.vbeln
where "$rowid$" &gt; #{rowids} and a.mandt = '800'
order by "$rowid$"
select count(1) from sapabap1.Zpo_edit where mandt = '800'; select q.vbeln,r.pernr from ${hana_user}.vbap q
select * from sapdev.vbap limit 10; left join (
select vbeln,posnr,pernr from ${hana_user}.vbpa where mandt = '800' and pernr != '00000000' group by vbeln,posnr,pernr
) r on q.vbeln = r.vbeln and q.posnr = r.posnr
where q.mandt = '800' and r.pernr is not null and a.vbeln = '111'
group by q.vbeln,r.pernr
\ No newline at end of file
CREATE USER 'roma'@'%' IDENTIFIED BY 'password';
CREATE USER 'roma'@'%' IDENTIFIED BY 'password';
GRANT SELECT, RELOAD, SHOW DATABASES, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'roma'@'%';
\ No newline at end of file
update vbap set hashresult = null; update vbap set hashresult = null;
...@@ -15,7 +15,14 @@ com.huazheng.project.greenplum.service.impl.GPServiceImpl.sinkSysSAPreturnNo(Sys ...@@ -15,7 +15,14 @@ com.huazheng.project.greenplum.service.impl.GPServiceImpl.sinkSysSAPreturnNo(Sys
发送端 发送端
"huazheng:SysSAPreturnNo:sendcount", "huazheng:SysSAPreturnNo:rowids", "huazheng:list:SysSAPreturnNo" watch -n 1 redis-cli -n 1 --raw mget "huazheng:SysSAPreturnNo:sendcount", "huazheng:SysSAPreturnNo:rowids", "huazheng:list:SysSAPreturnNo"
watch -n 1 redis-cli -n 1 --raw mget "huazheng:Vbak:sendcount", "huazheng:Vbak:rowids", "huazheng:Vbak:sendcount"
接收端 接收端
"huazheng:SysSAPreturnNo:sendcount", "", "huazheng:list:SysSAPreturnNo", "huazheng:SysSAPreturnNo:receivecount" "huazheng:SysSAPreturnNo:sendcount", "", "huazheng:list:SysSAPreturnNo", "huazheng:SysSAPreturnNo:receivecount"
redis-cli -n 1 --raw set "huazheng:Vbak:rowids" 107902
...@@ -275,17 +275,9 @@ ...@@ -275,17 +275,9 @@
<select id="selectVbakNew" parameterType="Vbak" resultType="Vbak"> <select id="selectVbakNew" parameterType="Vbak" resultType="Vbak">
select top 20 "$rowid$" as rowids, select top 20 "$rowid$" as rowids,
a.vbeln, a.mandt, a.vbtyp, a.audat, a.waerk, a.kalsm, a.ctlpc, a.kunnr, a.bukrs_vf, a.bstnk, a.vbeln, a.mandt, a.vbtyp, a.audat, a.waerk, a.kalsm, a.ctlpc, a.kunnr, a.bukrs_vf, a.bstnk,
a.bname, a.telf1, a.netwr, a.vkbur, a.knumv, a.vkorg, a.vtweg, a.kkber, a.auart, a.aedat, b.pernr, a.bname, a.telf1, a.netwr, a.vkbur, a.knumv, a.vkorg, a.vtweg, a.kkber, a.auart, a.aedat,
a.erdat, a.erzet, a.spart a.erdat, a.erzet, a.spart
from ${hana_user}.vbak a from ${hana_user}.vbak a
left join (
select q.vbeln,r.pernr from ${hana_user}.vbap q
left join (
select vbeln,posnr,pernr from ${hana_user}.vbpa where mandt = '800' and pernr != '00000000' group by vbeln,posnr,pernr
) r on q.vbeln = r.vbeln and q.posnr = r.posnr
where q.mandt = '800' and r.pernr is not null
group by q.vbeln,r.pernr
) b on a.vbeln = b.vbeln
where "$rowid$" &gt; #{rowids} and a.mandt = '800' where "$rowid$" &gt; #{rowids} and a.mandt = '800'
order by "$rowid$" order by "$rowid$"
</select> </select>
...@@ -379,17 +371,9 @@ ...@@ -379,17 +371,9 @@
<select id="selectVbakCheckByUpdate" parameterType="Vbak" resultType="Vbak"> <select id="selectVbakCheckByUpdate" parameterType="Vbak" resultType="Vbak">
select top 20 a."$rowid$" as rowids, select top 20 a."$rowid$" as rowids,
a.vbeln, a.mandt, a.vbtyp, a.audat, a.waerk, a.kalsm, a.ctlpc, a.kunnr, a.bukrs_vf, a.bstnk, a.vbeln, a.mandt, a.vbtyp, a.audat, a.waerk, a.kalsm, a.ctlpc, a.kunnr, a.bukrs_vf, a.bstnk,
a.bname, a.telf1, a.netwr, a.vkbur, a.knumv, a.vkorg, a.vtweg, a.kkber, a.auart, a.aedat, b.pernr, a.bname, a.telf1, a.netwr, a.vkbur, a.knumv, a.vkorg, a.vtweg, a.kkber, a.auart, a.aedat,
a.erdat, a.erzet, a.spart a.erdat, a.erzet, a.spart
from ${hana_user}.vbak a from ${hana_user}.vbak a
left join (
select q.vbeln,r.pernr from ${hana_user}.vbap q
left join (
select vbeln,posnr,pernr from ${hana_user}.vbpa where mandt = '800' and pernr != '00000000' group by vbeln,posnr,pernr
) r on q.vbeln = r.vbeln and q.posnr = r.posnr
where q.mandt = '800' and r.pernr is not null
group by q.vbeln,r.pernr
) b on a.vbeln = b.vbeln
where "$rowid$" &gt; #{rowids} and a.aedat != '00000000' and a.aedat = CURRENT_DATE and a.mandt = '800' where "$rowid$" &gt; #{rowids} and a.aedat != '00000000' and a.aedat = CURRENT_DATE and a.mandt = '800'
order by "$rowid$" order by "$rowid$"
</select> </select>
...@@ -798,4 +782,20 @@ ...@@ -798,4 +782,20 @@
where mblnr = #{mblnr} and mandt = #{mandt} and mjahr = #{mjahr} and zeile = #{zeile} where mblnr = #{mblnr} and mandt = #{mandt} and mjahr = #{mjahr} and zeile = #{zeile}
</select> </select>
<!-- vbak修改join连接后的子查询 -->
<select id="selectVbak4Join" parameterType="Vbak" resultType="map">
select top 1 q.vbeln,r.pernr from ${hana_user}.vbap q
left join (
select vbeln,posnr,pernr from ${hana_user}.vbpa where mandt = '800' and pernr != '00000000' group by vbeln,posnr,pernr
) r on q.vbeln = r.vbeln and q.posnr = r.posnr
where q.mandt = '800' and r.pernr is not null and q.vbeln = #{vbeln}
group by q.vbeln,r.pernr
</select>
</mapper> </mapper>
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论