From 22021eef26f0cda6c09adbb17d41e69405d7a5cb Mon Sep 17 00:00:00 2001 From: llllon Date: Wed, 17 Sep 2025 10:46:06 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E5=A2=9E=E5=8A=A0=E5=90=8C=E6=AD=A5?= =?UTF-8?q?=E6=98=8E=E7=BB=86=E5=BA=94=E6=94=B6=E6=96=B9=E6=B3=95=202?= =?UTF-8?q?=E3=80=81=E4=B8=80=E4=BD=93=E5=8C=96=E6=97=A5=E5=9D=87=E4=BB=B7?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=E5=9F=8E=E5=B8=82=E7=AE=80=E7=A7=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/DataLinkUpController.class | Bin 20942 -> 21023 bytes .../datalinkup/service/DataSyncService.class | Bin 2005 -> 2041 bytes .../impl/PurchaseDataSyncServiceImpl.class | Bin 30647 -> 30840 bytes .../impl/SaleDataSummaryServiceImpl.class | Bin 42255 -> 42588 bytes .../impl/SaleDataSyncServiceImpl.class | Bin 31404 -> 34915 bytes .../compileJava/previous-compilation-data.bin | Bin 9396485 -> 9396485 bytes .../controller/DataLinkUpController.java | 9 +- .../datalinkup/service/DataSyncService.java | 16 +- .../impl/ProductionDataSyncServiceImpl.java | 5 + .../impl/PurchaseDataSyncServiceImpl.java | 6 + .../impl/SaleDataSummaryServiceImpl.java | 15 +- .../service/impl/SaleDataSyncServiceImpl.java | 225 ++++++++++++++++++ 12 files changed, 269 insertions(+), 7 deletions(-) diff --git a/com.awspaas.user.apps.bnbm.datalinkup/com.awspaas.user.apps.bnbm.datalinkup/build/classes/java/main/com/awspaas/user/apps/bnbm/datalinkup/controller/DataLinkUpController.class b/com.awspaas.user.apps.bnbm.datalinkup/com.awspaas.user.apps.bnbm.datalinkup/build/classes/java/main/com/awspaas/user/apps/bnbm/datalinkup/controller/DataLinkUpController.class index 8bb446c59413ed686451b1d392b5e8c32055edcb..0bd4279833fae52f6e99c0c653a75ed2a4d01a43 100644 GIT binary patch delta 6994 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 delta 6934 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 diff --git a/com.awspaas.user.apps.bnbm.datalinkup/com.awspaas.user.apps.bnbm.datalinkup/build/classes/java/main/com/awspaas/user/apps/bnbm/datalinkup/service/DataSyncService.class b/com.awspaas.user.apps.bnbm.datalinkup/com.awspaas.user.apps.bnbm.datalinkup/build/classes/java/main/com/awspaas/user/apps/bnbm/datalinkup/service/DataSyncService.class index 6e0cf3ab0a219d543956b77dd5ed4e5220ace740..b65f12c0f535ae111eb72d4877d92e0b40cc407c 100644 GIT binary patch delta 141 zcmcc0|C3+f)W2Q(7#JAL8C2LAl-L=RHwt`b77{EhO)aVn&Mz%WPIXBvNsJ8M%*tZR z%*Zp@ncX*3kb#kb6{v@aL5PKsL4-jR&KCpn#Tg_R7=W}SgA`m`8pxMnkcIQ*fP8t7 LI-rOG*d#>&15XnO delta 106 zcmey#f0bY0)W2Q(7#JAL8I;)>6xkV+HVS-a-Ym^x&CJL>Ih@_sRfK_&ffcBLi9wWw lkwJ_>oPhyIOE5^n#if9JX$BcMUlz!h1E~Xw$b)q%007(a3)%nx diff --git a/com.awspaas.user.apps.bnbm.datalinkup/com.awspaas.user.apps.bnbm.datalinkup/build/classes/java/main/com/awspaas/user/apps/bnbm/datalinkup/service/impl/PurchaseDataSyncServiceImpl.class b/com.awspaas.user.apps.bnbm.datalinkup/com.awspaas.user.apps.bnbm.datalinkup/build/classes/java/main/com/awspaas/user/apps/bnbm/datalinkup/service/impl/PurchaseDataSyncServiceImpl.class index 7fd2bb15151feb75ade11ca156ceb497f73184d6..089570197a945c61e34ecf3bde5be9b591f0e071 100644 GIT binary patch delta 2956 zcmY*bcX*V=6W*Qo%YBpY+l1so64DE4gc>1&Kw=Vuh*Sxv35Y~M1S3KS0YW*Hs1U@q zSU^-zVg(ToMGz}CtYEKzg2#*SOlL3+VLFp(DAO>PhI^t1r7(@Kej_~^MQ1UM_Nj)( zFpc#^Upm{RbF4gNKG$`kdpjA^+ouFa3OCXTzb*c@k}pS{cfh0tES{OW(P4l<9k>AA-WC0;V6Ceq#EW=@+J7nSNvX-PHd_(ENlVcm7vU z#83;Vv`@bGP*IkGkP$31}cM@jHct#{T#O0tb+R2fHhhdLqhijHB2Y7S)Tm*#Qk3fJd-n~`jh!x?bEVj&w{%a? z>&ksSF~xlaW#S?~Yw`MMCg|-4EX%H`NWs&zdu(aemFEa~da2sjhFT zudNAp=+sT37InHjrN|$rFkUWGI1dx_tdykC`Ei)oA%OZgidVP*lUz(zn1TykOjWoD z)1-)*Uf*2bb57H=hMvRgXDUp`#R?6$L}3Q%6fVU~DH8tUlQ(EaQ{#MvS=JO6F*VfB znA)?Zsd3s26SmRnV6CoMmvRpAO;DFs&z8Bsl?I=f8aDlC(tQ2$Vz zp}VHX%H_I$dbi9rtT63AxI-V@bc@2(XmPPp;Tl}4a2=X-YkGr!y}}L9N>0Tp{bzb+ z;*AP7;bw(fuv*EhY!lbuR^1~bndf7z!fm)+56>7oAcPf4E|slHE|+ZzcVL~udaRQo zYD`sCUA2+Js*N;Fzmsv7!UnXvxLe^K+^avyI6vV&t6He!K-|xG!0I>Zk(oW^CLPKg z+~YxPcJYwH7CfvF##V(#uvm)tLpMHjXyt>Zo-ZETadhXJ1&eGaSLmNIPx2pC*oMax zwqu7b$*M4NqHfA6K^x}jd$V%!ICkpSvIgJ@JgNQcbUcNp!^PR%WKx?njYCOUiNZ5j z%y`yjwo5nUq~SReyDcZvd7klt-k38^zNk5O0l#F6-Hn&^irhN9g0=ccZo$x3<0wH< z0Iw;$jtL5HV9$T1s%A=)!d_V>Mbe2XHnbkT?#hE3wj9~o-ap%x62d%%H}RIP?L4=~ z+Y0aCU4{4XzQPCiP~juHd<7p%L4yYy*kx|%6Qh&6u}>fGoaXOWI3QnF_!OV%yu7Z7 zpDTQUg9?Xm*bbL5AHjY-Ij?izOFM>N>6Lkt<=6UH-dgpI!UD82zLla}AIM15oAZ0g z@AQHEfyVKu&MJ7M@_YQCa10w2e#B1-KjRn1ueMjeF@Cr54=IulEx+f;`l}D!(SBs} zorl-7&Ysn9;+p=%#X7NYXqUf~Jcz#)j^iIC4`Zit1pbjCx^__I=;0$rj5&iHX@WVV zmlsx>%Uh!N6!rqJP^0J+-tIWciE;wEx@eK_Duq|Cdh>F;)-RZA@gUXgKQHd%gvL0v-x`F zE4LVcJk?;pJP-ogWQE}u{%e$#vdXNCo185NSi4~}4WkH~Wf&rCzHAXrge@>ED#DtK zH4tI*{?&iUvWV?qt$r>Y5O-k`X$u4=-7!+e?}bswg?eH Kj-VI8wEqFyWq|$w delta 2729 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%0AZ_2=?8 z=;=NAzWhL^K9V2H-`lA_%KbXkArHudTwBHItEsQa`kJP%!}N88zMibFQ}lJZzLx9j zTzx%TUu*PriM}q?*Jb+JV2!8NsPlFHNBa6>eZ5Ryuh7@4_4P)5y-8nh)7RVe^-g`g JTVEge{{Y)IND=@5 literal 42255 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 diff --git a/com.awspaas.user.apps.bnbm.datalinkup/com.awspaas.user.apps.bnbm.datalinkup/build/classes/java/main/com/awspaas/user/apps/bnbm/datalinkup/service/impl/SaleDataSyncServiceImpl.class b/com.awspaas.user.apps.bnbm.datalinkup/com.awspaas.user.apps.bnbm.datalinkup/build/classes/java/main/com/awspaas/user/apps/bnbm/datalinkup/service/impl/SaleDataSyncServiceImpl.class index af42ae59ba89954b913678da51ec7f9b914fd19e..a81ce0994254f0bf4c651310895df1e34639b996 100644 GIT binary patch delta 10062 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 IGqnAG0fsEO2><{9 delta 7368 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 C1wu3c delta 841 zcmZY6TWm`K9LMpTwKirrYV3-w+Z1Om9dnt^s=FyRtZQc!n{9QBw#=x@Y-sDOv}S3- z+eDTSSwh6ac@UK>nJf~`UR=T?5;3n5PZG@6t3G^^-`oHH|NVob&$U6^@{5szXKw-@D}E50U;C?ofX0p~YHhtFjelW@U?k5rbn$>Qg&C@{^R8IXzFuggQa2@D>d< zJqmxGYLy!Qd}-+L>otmABOnR?vKBK`y(al~C}E~D9!^%r!zp(^ChV>F9XAk01UFTkdEiIhUs01jvH$=8 diff --git a/com.awspaas.user.apps.bnbm.datalinkup/com.awspaas.user.apps.bnbm.datalinkup/src/main/java/com/awspaas/user/apps/bnbm/datalinkup/controller/DataLinkUpController.java b/com.awspaas.user.apps.bnbm.datalinkup/com.awspaas.user.apps.bnbm.datalinkup/src/main/java/com/awspaas/user/apps/bnbm/datalinkup/controller/DataLinkUpController.java index c17e818..98f9937 100644 --- a/com.awspaas.user.apps.bnbm.datalinkup/com.awspaas.user.apps.bnbm.datalinkup/src/main/java/com/awspaas/user/apps/bnbm/datalinkup/controller/DataLinkUpController.java +++ b/com.awspaas.user.apps.bnbm.datalinkup/com.awspaas.user.apps.bnbm.datalinkup/src/main/java/com/awspaas/user/apps/bnbm/datalinkup/controller/DataLinkUpController.java @@ -191,9 +191,14 @@ public class DataLinkUpController { // 按时间范围删除 syncService.deleteTargetData(targetTable, targetTimeField, startDate, endDate); } + if (tablename.equals("应收表")){ + syncService.querySourceDataYS(ccId, tableName, timeField, startDate, endDate, partitionField, + fieldMappings, targetTable, jezd); + }else { + syncService.querySourceData(ccId, tableName, timeField, startDate, endDate, partitionField, + fieldMappings, targetTable, jezd); + } - syncService.querySourceData(ccId, tableName, timeField, startDate, endDate, partitionField, - fieldMappings, targetTable, jezd); } LOGGER.info("开始使用DataSyncService处理数据同步 ({}条配置)", mainConfigs.size()); diff --git a/com.awspaas.user.apps.bnbm.datalinkup/com.awspaas.user.apps.bnbm.datalinkup/src/main/java/com/awspaas/user/apps/bnbm/datalinkup/service/DataSyncService.java b/com.awspaas.user.apps.bnbm.datalinkup/com.awspaas.user.apps.bnbm.datalinkup/src/main/java/com/awspaas/user/apps/bnbm/datalinkup/service/DataSyncService.java index 6d706d0..120a31f 100644 --- a/com.awspaas.user.apps.bnbm.datalinkup/com.awspaas.user.apps.bnbm.datalinkup/src/main/java/com/awspaas/user/apps/bnbm/datalinkup/service/DataSyncService.java +++ b/com.awspaas.user.apps.bnbm.datalinkup/com.awspaas.user.apps.bnbm.datalinkup/src/main/java/com/awspaas/user/apps/bnbm/datalinkup/service/DataSyncService.java @@ -69,6 +69,18 @@ public interface DataSyncService { * @throws RuntimeException 查询失败或参数无效时抛出 */ void querySourceData(String ccId, String tableName, String timeField, Date startDate, Date endDate, String partitionField, List fieldMappings, String targetTable,String jezd); + /** + * 跨库查询源表数据-应收 + * @param ccId 跨库连接ID + * @param tableName 源表名 + * @param timeField 源表时间字段名 + * @param startDate 开始时间 + * @param endDate 结束时间 + * @return 查询结果数据集 + * @throws RuntimeException 查询失败或参数无效时抛出 + */ + void querySourceDataYS(String ccId, String tableName, String timeField, Date startDate, Date endDate, String partitionField, List fieldMappings, String targetTable, String jezd); + /** * 各板块数据汇总 @@ -104,8 +116,8 @@ public interface DataSyncService { /** * 应收将范围内数据汇总 * @param targetTable - * @param startDate - * @param endDate + * @param startDated + * @param endDated * @param targetTimeField */ void summarizeScopeDataYs(String targetTable, Date startDated, Date endDated, String targetTimeField, String hzb); diff --git a/com.awspaas.user.apps.bnbm.datalinkup/com.awspaas.user.apps.bnbm.datalinkup/src/main/java/com/awspaas/user/apps/bnbm/datalinkup/service/impl/ProductionDataSyncServiceImpl.java b/com.awspaas.user.apps.bnbm.datalinkup/com.awspaas.user.apps.bnbm.datalinkup/src/main/java/com/awspaas/user/apps/bnbm/datalinkup/service/impl/ProductionDataSyncServiceImpl.java index 5d54136..9a267b3 100644 --- a/com.awspaas.user.apps.bnbm.datalinkup/com.awspaas.user.apps.bnbm.datalinkup/src/main/java/com/awspaas/user/apps/bnbm/datalinkup/service/impl/ProductionDataSyncServiceImpl.java +++ b/com.awspaas.user.apps.bnbm.datalinkup/com.awspaas.user.apps.bnbm.datalinkup/src/main/java/com/awspaas/user/apps/bnbm/datalinkup/service/impl/ProductionDataSyncServiceImpl.java @@ -802,4 +802,9 @@ public class ProductionDataSyncServiceImpl implements DataSyncService { public void summarizeScopeDataYs(String targetTable, Date startDated, Date endDated, String targetTimeField, String hzb) { } + + @Override + public void querySourceDataYS(String ccId, String tableName, String timeField, Date startDate, Date endDate, String partitionField, List fieldMappings, String targetTable, String jezd) { + + } } diff --git a/com.awspaas.user.apps.bnbm.datalinkup/com.awspaas.user.apps.bnbm.datalinkup/src/main/java/com/awspaas/user/apps/bnbm/datalinkup/service/impl/PurchaseDataSyncServiceImpl.java b/com.awspaas.user.apps.bnbm.datalinkup/com.awspaas.user.apps.bnbm.datalinkup/src/main/java/com/awspaas/user/apps/bnbm/datalinkup/service/impl/PurchaseDataSyncServiceImpl.java index dca3ea3..3936748 100644 --- a/com.awspaas.user.apps.bnbm.datalinkup/com.awspaas.user.apps.bnbm.datalinkup/src/main/java/com/awspaas/user/apps/bnbm/datalinkup/service/impl/PurchaseDataSyncServiceImpl.java +++ b/com.awspaas.user.apps.bnbm.datalinkup/com.awspaas.user.apps.bnbm.datalinkup/src/main/java/com/awspaas/user/apps/bnbm/datalinkup/service/impl/PurchaseDataSyncServiceImpl.java @@ -943,4 +943,10 @@ public class PurchaseDataSyncServiceImpl implements DataSyncService { public void summarizeScopeDataYs(String targetTable, Date startDated, Date endDated, String targetTimeField, String hzb) { } + + + @Override + public void querySourceDataYS(String ccId, String tableName, String timeField, Date startDate, Date endDate, String partitionField, List fieldMappings, String targetTable, String jezd) { + + } } diff --git a/com.awspaas.user.apps.bnbm.datalinkup/com.awspaas.user.apps.bnbm.datalinkup/src/main/java/com/awspaas/user/apps/bnbm/datalinkup/service/impl/SaleDataSummaryServiceImpl.java b/com.awspaas.user.apps.bnbm.datalinkup/com.awspaas.user.apps.bnbm.datalinkup/src/main/java/com/awspaas/user/apps/bnbm/datalinkup/service/impl/SaleDataSummaryServiceImpl.java index 53d3362..a6f99ff 100644 --- a/com.awspaas.user.apps.bnbm.datalinkup/com.awspaas.user.apps.bnbm.datalinkup/src/main/java/com/awspaas/user/apps/bnbm/datalinkup/service/impl/SaleDataSummaryServiceImpl.java +++ b/com.awspaas.user.apps.bnbm.datalinkup/com.awspaas.user.apps.bnbm.datalinkup/src/main/java/com/awspaas/user/apps/bnbm/datalinkup/service/impl/SaleDataSummaryServiceImpl.java @@ -82,7 +82,7 @@ public class SaleDataSummaryServiceImpl implements DataSummaryService { LOGGER.error("主配置中BKGS为空,无法进行汇总计算"); return; } - if (!"龙牌".equals(bkgs) || !"梦牌".equals(bkgs) || !"泰山石膏".equals(bkgs) || !"北新嘉宝莉".equals(bkgs) || !"北新涂料".equals(bkgs)){ + if ((!"龙牌,梦牌,泰山石膏,北新嘉宝莉,北新涂料".contains(bkgs))){ LOGGER.error("主配置中板块公司为:{},无需进行计算",bkgs); return; } @@ -257,6 +257,15 @@ public class SaleDataSummaryServiceImpl implements DataSummaryService { list.add(priceBO); } SDK.getBOAPI().createDataBO(UNIT_PRICE_DAILY_TABLE,list,UserContext.fromUID("admin")); + + //更新城市名称 + int update = DBSql.update("UPDATE" + + " BO_EU_DATALINKUP_FACT_UNIT_PRICE_DAILY a " + + " INNER JOIN " + + " BO_EU_YTH_CCJCWH b ON a.CITY = b.CS " + + " SET " + + " a.CITY_SHORT = b.CSJC"); + LOGGER.info("一体化产品单价日明细更新城市名称"); } } LOGGER.info("产品单价日明细数据保存成功"); @@ -450,10 +459,10 @@ public class SaleDataSummaryServiceImpl implements DataSummaryService { // 根据省份value值查询数据 String sfSql = sfMap.get(key); String sql = "SELECT BKGS,LB_1,LB_2 AS brand,CONCAT(YEAR, '-', LPAD(MONTH, 2, '0')) ASyear_month," + - " SUM(ZSSL) AS total_zssl, SUM(XSSL)/10000 AS total_xssl_10k, SUM(SSJERMB) AS total_ssjermb," + + " SUM(ZSSL) AS total_zssl, SUM(XSSL)/10000 AS total_xssl_10k, SUM(NMNY) AS total_ssjermb," + " (SUM(ZSSL)/(SUM(SUM(ZSSL)) OVER (PARTITION BY LB_1, YEAR(DZRQ), MONTH(DZRQ)))) *100 AS lb1_month_zssl_total," + " ((SUM(XSSL)/10000)/(SUM(SUM(XSSL)) OVER (PARTITION BY LB_1, YEAR(DZRQ), MONTH(DZRQ)) / 10000))*100 AS lb1_month_xssl_total_10k," + - " (SUM(SSJERMB)/(SUM(SUM(SSJERMB)) OVER (PARTITION BY LB_1, YEAR(DZRQ), MONTH(DZRQ))))*100 AS lb1_month_ssjermb_total" + + " (SUM(NMNY)/(SUM(SUM(NMNY)) OVER (PARTITION BY LB_1, YEAR(DZRQ), MONTH(DZRQ))))*100 AS lb1_month_ssjermb_total" + " FROM BO_EU_BNBM_DATALINKUP_XS_XSL_HZ " + " WHERE DZRQ>? AND BKGS = ? AND LB_1 IN('石膏板','轻钢龙骨','涂料') AND ("+sfSql+") " + " GROUP BY LB_2,year, month" + diff --git a/com.awspaas.user.apps.bnbm.datalinkup/com.awspaas.user.apps.bnbm.datalinkup/src/main/java/com/awspaas/user/apps/bnbm/datalinkup/service/impl/SaleDataSyncServiceImpl.java b/com.awspaas.user.apps.bnbm.datalinkup/com.awspaas.user.apps.bnbm.datalinkup/src/main/java/com/awspaas/user/apps/bnbm/datalinkup/service/impl/SaleDataSyncServiceImpl.java index d9c2142..0ad7a49 100644 --- a/com.awspaas.user.apps.bnbm.datalinkup/com.awspaas.user.apps.bnbm.datalinkup/src/main/java/com/awspaas/user/apps/bnbm/datalinkup/service/impl/SaleDataSyncServiceImpl.java +++ b/com.awspaas.user.apps.bnbm.datalinkup/com.awspaas.user.apps.bnbm.datalinkup/src/main/java/com/awspaas/user/apps/bnbm/datalinkup/service/impl/SaleDataSyncServiceImpl.java @@ -1054,4 +1054,229 @@ public class SaleDataSyncServiceImpl implements DataSyncService { } } + /** + * 跨库查询源表数据(增加每月最大日期查询功能) + * @param ccId 跨库连接ID + * @param tableName 源表名 + * @param timeField 源表时间字段名 + * @param startDated 开始时间 + * @param endDated 结束时间 + * @return 查询结果数据集 + * @throws RuntimeException 查询失败或参数无效时抛出 + */ + @Override + public void querySourceDataYS(String ccId, String tableName, String timeField, Date startDated, Date endDated, String partitionField, List fieldMappings, String targetTable, String jezd) { + int totalRows = 0; // 总查询行数 + int totalSuccess = 0; // 总成功插入行数 + int pageNo = 1; + boolean hasMore; + RDSAPI rdsapi = null; + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + SimpleDateFormat simpleDateFormat2 = new SimpleDateFormat("yyyy-MM-dd"); + try { + rdsapi = SDK.getCCAPI().getRDSAPI(ccId); + DBUtils.SUPPLY supply = rdsapi.getSupply(); + String DBname = supply.getName(); + LOGGER.info("数据库为:{}",DBname); + + // 计算时间范围并拆分为30天一组 + List timeRanges = splitTimeRange(startDated, endDated, 30); + LOGGER.info("时间范围拆分为 {} 个查询区间", timeRanges.size()); + String maxPartition = ""; + if (partitionField != null && !partitionField.isEmpty()) { + // 1. 查询最大分区值 + String maxPartitionSql = "SELECT MAX(" + partitionField + ") AS max_partition FROM " + tableName; + List maxPartitionResult = rdsapi.getMaps(maxPartitionSql); + + if (maxPartitionResult.isEmpty() || maxPartitionResult.get(0).get("max_partition") == null) { + LOGGER.warn("表[{}]没有找到分区字段[{}]的数据", tableName, partitionField); + return; + } + + maxPartition = maxPartitionResult.get(0).getString("max_partition"); + LOGGER.info("表[{}]的最大分区为: {}", tableName, maxPartition); + } + + for (int i = 0; i < timeRanges.size(); i++) { + Date[] range = timeRanges.get(i); + String startDate = simpleDateFormat2.format(range[0]); + String endDate = simpleDateFormat2.format(range[1]); + + LOGGER.info("正在处理第 {} 个时间区间: {} 至 {}", i + 1, startDate, endDate); + + // 构建基础查询条件 + StringBuilder conditionBuilder = new StringBuilder(); + StringBuilder orderByBuilder = new StringBuilder(); + List params = new ArrayList<>(); + + // 分区字段条件 + if (partitionField != null && !partitionField.isEmpty()) { + conditionBuilder.append(partitionField) + .append(" = '") + .append(maxPartition) + .append("'"); + } + + // 时间字段条件 + if (timeField != null && !timeField.isEmpty()) { + if (conditionBuilder.length() > 0) { + conditionBuilder.append(" AND "); + } + + if ("ORACLE".equalsIgnoreCase(DBname)) { + conditionBuilder.append("TO_DATE(") + .append(timeField) + .append(", '") + .append(ORACLE_DATE_FORMAT) + .append("') >= TO_DATE(?, '") + .append(ORACLE_DATE_FORMAT) + .append("') AND TO_DATE(") + .append(timeField) + .append(", '") + .append(ORACLE_DATE_FORMAT) + .append("') < TO_DATE(?, '") + .append(ORACLE_DATE_FORMAT) + .append("')"); + } else { + conditionBuilder.append(timeField).append(" >= ?") + .append(" AND ") + .append(timeField).append(" < ?"); + } + params.add(startDate); + params.add(endDate); + + // 排序条件 + orderByBuilder.append(" ORDER BY ").append(timeField); + if (jezd != null && !jezd.isEmpty()) { + orderByBuilder.append(", ").append(jezd); + } + orderByBuilder.append(" DESC"); + } else if (conditionBuilder.length() == 0) { + // 既没有分区字段也没有时间字段,查询全表 + LOGGER.warn("警告:未配置分区字段和时间字段,将查询全表数据!"); + conditionBuilder.append("1=1"); + } + + // 添加每月最大日期条件 + if (timeField != null && !timeField.isEmpty()) { + if (conditionBuilder.length() > 0) { + conditionBuilder.append(" AND "); + } + + // 根据不同数据库类型实现每月最大日期查询 + if ("ORACLE".equalsIgnoreCase(DBname)) { + conditionBuilder.append("TO_CHAR(").append(timeField).append(", 'YYYY-MM') = ") + .append("(SELECT TO_CHAR(MAX(").append(timeField).append("), 'YYYY-MM') FROM ") + .append(tableName).append(" WHERE ").append(conditionBuilder.toString()).append(")"); + } else if ("POSTGRESQL".equalsIgnoreCase(DBname) || "GAUSS".equalsIgnoreCase(DBname)) { + // 高斯和PG使用相同的语法 + conditionBuilder.append("TO_CHAR(").append(timeField).append(", 'YYYY-MM') = ") + .append("(SELECT TO_CHAR(MAX(").append(timeField).append("), 'YYYY-MM') FROM ") + .append(tableName).append(" WHERE ").append(conditionBuilder.toString()).append(")"); + } else if ("SQLSERVER".equalsIgnoreCase(DBname)) { + conditionBuilder.append("FORMAT(").append(timeField).append(", 'yyyy-MM') = ") + .append("(SELECT FORMAT(MAX(").append(timeField).append("), 'yyyy-MM') FROM ") + .append(tableName).append(" WHERE ").append(conditionBuilder.toString()).append(")"); + } else { + // 其他数据库使用通用方法 + conditionBuilder.append("DATE_FORMAT(").append(timeField).append(", '%Y-%m') = ") + .append("(SELECT DATE_FORMAT(MAX(").append(timeField).append("), '%Y-%m') FROM ") + .append(tableName).append(" WHERE ").append(conditionBuilder.toString()).append(")"); + } + } + + // 分页查询数据 + do { + String querySql; + if ("ORACLE".equalsIgnoreCase(DBname)) { + // 使用Oracle分页语法 (12c+) + querySql = "SELECT * FROM " + tableName + + " WHERE " + conditionBuilder.toString() + + orderByBuilder.toString(); + } else { + querySql = "SELECT * FROM " + tableName + + " WHERE " + conditionBuilder.toString() + + orderByBuilder.toString(); + } + + LOGGER.info("执行查询: {}", querySql); + + List pageData; + if (params.isEmpty()) { + pageData = rdsapi.getMaps(querySql); + } else { + pageData = rdsapi.getMaps(querySql, params.toArray()); + } + + if (pageData != null && !pageData.isEmpty()) { + // 直接处理当前页数据 + int successCount = this.processAndInsertData(pageData, fieldMappings, targetTable); + totalRows += pageData.size(); + totalSuccess += successCount; + hasMore = pageData.size() == PAGE_SIZE; + pageNo++; + } else { + hasMore = false; + } + } while (hasMore); + } + + //每月1号删除上月去年同期去除每月最后一天的数据,删除当月去年同期全量数据后新增当月去年同期全量数据, + // 每月1号执行的任务 + LocalDate now = LocalDate.now(); + int dayOfMonth = now.getDayOfMonth(); + +// if (dayOfMonth == 1) { + try { + LOGGER.info("开始执行每月1号的特殊数据处理任务"); + + // 计算时间范围 + LocalDate lastYearMonthDate = now.minusYears(1).minusMonths(1); + int lastYearMonthValue = lastYearMonthDate.getMonthValue(); + int lastyear = lastYearMonthDate.getYear(); + + // 1. 删除当月去年同期全量数据 + String deleteCurrentMonthLastYearSql = "DELETE FROM " + targetTable + + " WHERE YEAR = " + lastyear + + " AND MONTH = " + lastYearMonthValue; + int update = DBSql.update(deleteCurrentMonthLastYearSql); + LOGGER.info("已删除去年同期({}-{})的全量数据,删除了{}条数据", lastyear, lastYearMonthValue,update); + + // 2. 新增当月去年同期数据 + // 去年日期 + LocalDate minusYears = now.minusYears(1); + // 计算去年同期第一天(当月第一天) + LocalDate firstDayOfLastYearMonth = minusYears.withDayOfMonth(1); + // 计算去年下个月第一天 + LocalDate firstDayOfNextMonthLastYear = minusYears.plusMonths(1).withDayOfMonth(1); + // 格式化日期为字符串(根据数据库格式要求调整) + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + String lastYearFirstDayStr = firstDayOfLastYearMonth.format(formatter); + String lastYearNextMonthFirstDayStr = firstDayOfNextMonthLastYear.format(formatter); + //删除清空去年同期数据 + int update1 = DBSql.update("DELETE FROM " + targetTable + + " WHERE YEAR = " + firstDayOfLastYearMonth.getYear() + + " AND MONTH = " + firstDayOfLastYearMonth.getMonthValue()); + LOGGER.info("先清空{}去年同期数{}",lastYearFirstDayStr,update1); + + // 构建插入SQL(注意:需确保字段匹配且处理可能的主键冲突) + String insertCurrentMonthLastYearSql = "INSERT INTO " + targetTable + + " SELECT * FROM " + targetTable + + " WHERE " + timeField + " >= '" + lastYearFirstDayStr + + "' AND " + timeField + " < '" + lastYearNextMonthFirstDayStr + "'"; + // 执行插入操作 + rdsapi.update(insertCurrentMonthLastYearSql); + LOGGER.info("{}已新增当月去年同期数据",lastYearFirstDayStr); + + } catch (Exception e) { + LOGGER.error("每月1号任务执行失败: {}", e.getMessage(), e); + } +// } + + LOGGER.info("从表[{}]共查询到{}条数据,成功同步{}条数据", + tableName, totalRows, totalSuccess); + } catch (Exception e) { + throw new RuntimeException("查询源表[" + tableName + "]数据失败: " + e.getMessage(), e); + } + } } \ No newline at end of file