From 490e2efb43be6c54d5e2a4c7f00658f0c635aae2 Mon Sep 17 00:00:00 2001 From: llllon Date: Mon, 27 Oct 2025 08:34:47 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E5=BA=94=E6=94=B6=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E5=88=86=E7=BB=84=E6=9F=A5=E8=AF=A2=202=E3=80=81=E9=98=B2?= =?UTF-8?q?=E6=B0=B4=E6=B6=82=E6=96=99=E8=AE=A1=E7=AE=97=203=E3=80=81?= =?UTF-8?q?=E8=BF=90=E8=90=A5=E7=AE=A1=E7=90=86=E9=83=A8=E5=9B=9E=E5=A1=AB?= =?UTF-8?q?=204=E3=80=819=E5=AE=AB=E6=A0=BC=E5=A2=9E=E5=8A=A0sql?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/SaleDataSyncServiceImpl.class | Bin 41794 -> 44127 bytes .../compileJava/previous-compilation-data.bin | Bin 9396367 -> 9396371 bytes .../bnbm/datalinkup/job/NineGridCountJob.java | 25 +++ .../WaterproofPaintAccountsReceivableJob.java | 51 +++-- .../bnbm/datalinkup/job/YyglbDbHtJob.java | 55 ++++-- .../impl/ProductionDataSyncServiceImpl.java | 6 +- .../service/impl/SaleDataSyncServiceImpl.java | 176 +++++++++++------- 7 files changed, 212 insertions(+), 101 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/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 656c031387594c2f369ef7193552fb04fe4eb075..05f4d524289c5e5bf13ae8c054f988215b24dd84 100644 GIT binary patch delta 16444 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 delta 14153 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 DJ3Jo> diff --git a/com.awspaas.user.apps.bnbm.datalinkup/com.awspaas.user.apps.bnbm.datalinkup/src/main/java/com/awspaas/user/apps/bnbm/datalinkup/job/NineGridCountJob.java b/com.awspaas.user.apps.bnbm.datalinkup/com.awspaas.user.apps.bnbm.datalinkup/src/main/java/com/awspaas/user/apps/bnbm/datalinkup/job/NineGridCountJob.java index f9f54cd..84eadbb 100644 --- a/com.awspaas.user.apps.bnbm.datalinkup/com.awspaas.user.apps.bnbm.datalinkup/src/main/java/com/awspaas/user/apps/bnbm/datalinkup/job/NineGridCountJob.java +++ b/com.awspaas.user.apps.bnbm.datalinkup/com.awspaas.user.apps.bnbm.datalinkup/src/main/java/com/awspaas/user/apps/bnbm/datalinkup/job/NineGridCountJob.java @@ -8,9 +8,13 @@ import com.actionsoft.bpms.util.DBSql; import com.actionsoft.sdk.local.SDK; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import java.math.BigDecimal; import java.time.LocalDate; import java.time.format.DateTimeFormatter; +import java.util.List; /** * @ClassName: NineGridCountJob @@ -19,6 +23,7 @@ import java.time.format.DateTimeFormatter; * @Blog: https:// */ public class NineGridCountJob implements IJob { + private static final Logger LOGGER = LoggerFactory.getLogger(NineGridCountJob.class); @Override public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException { LocalDate now = LocalDate.now(); @@ -26,6 +31,13 @@ public class NineGridCountJob implements IJob { String nowYearMonthStr = now.format(DateTimeFormatter.ofPattern("yyyy-MM")); LocalDate nowYearFirstDay = now.withDayOfYear(1); String nowYearFirstDayStr = nowYearFirstDay.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); + LOGGER.info("nowYearMonthStr:{},nowYearFirstDayStr:{}",nowYearMonthStr,nowYearFirstDayStr); + //先删除数据 + BO boEuOaNineGrid = SDK.getBOAPI().query("BO_EU_OA_NINE_GRID").addQuery("YEARMONTH =", nowYearMonthStr).detail(); + if (boEuOaNineGrid!=null){ + SDK.getBOAPI().removeByBindId("BO_EU_OA_NINE_GRID",boEuOaNineGrid.getBindId()); + } + BO bo = new BO(); bo.set("YEARMONTH",nowYearMonthStr); //查询销售数据 @@ -64,6 +76,7 @@ public class NineGridCountJob implements IJob { " (select SUM(`BUDGETTARGET`) AS BUDGETTARGET from BO_EU_ANNUAL_BUDGET WHERE YEAR = '" + year + "') mb on 1=1"); bo.set("ZB4",yswcl.getString("yewcl"));//预算完成率 String lastMonth = now.minusMonths(1).format(DateTimeFormatter.ofPattern("yyyy-MM")); + LOGGER.info("lastMonth:{}",lastMonth); RowMap cl = DBSql.getMap("SELECT YEARS_MONTH," + " MAX(CASE WHEN PRODEUCT = '石膏板' THEN YTD END) AS SGBYTD," + " MAX(CASE WHEN PRODEUCT = '轻钢龙骨' THEN YTD END) AS QGLGYTD" + @@ -76,6 +89,18 @@ public class NineGridCountJob implements IJob { bo.set("ZB8",map.getString("steel_keel_avg_price"));// 龙骨均价 bo.set("ZB9","");//总运费 + List maps = DBSql.getMaps("SELECT SUM(a.YSYE) AS total_YSYE, a.BKGS, b.max_rq " + + " FROM BO_EU_BNBM_DATALINKUP_XS_YSL a" + + " INNER JOIN (" + + " SELECT BKGS, MAX(RQ) as max_rq" + + " FROM BO_EU_BNBM_DATALINKUP_XS_YSL" + + " GROUP BY BKGS" + + " ) b ON a.BKGS = b.BKGS AND a.RQ = b.max_rq" + + " GROUP BY a.BKGS, b.max_rq"); + BigDecimal totalSum = maps.stream() + .map(o -> (BigDecimal) o.get("total_YSYE")) + .reduce(BigDecimal.ZERO, BigDecimal::add); + bo.set("ZB10",totalSum);//应收总额 //商旅总额 String querySql_SL ="SELECT SUM(PRICESERVICETOTALFEE) AS PRICESERVICETOTALFEE_SUM FROM BO_EU_TRAVELMODULE_XFMX WHERE TRAVELTIME>=CONCAT(YEAR (CURDATE()),'-01-01')"; diff --git a/com.awspaas.user.apps.bnbm.datalinkup/com.awspaas.user.apps.bnbm.datalinkup/src/main/java/com/awspaas/user/apps/bnbm/datalinkup/job/WaterproofPaintAccountsReceivableJob.java b/com.awspaas.user.apps.bnbm.datalinkup/com.awspaas.user.apps.bnbm.datalinkup/src/main/java/com/awspaas/user/apps/bnbm/datalinkup/job/WaterproofPaintAccountsReceivableJob.java index 3372fea..c10dc91 100644 --- a/com.awspaas.user.apps.bnbm.datalinkup/com.awspaas.user.apps.bnbm.datalinkup/src/main/java/com/awspaas/user/apps/bnbm/datalinkup/job/WaterproofPaintAccountsReceivableJob.java +++ b/com.awspaas.user.apps.bnbm.datalinkup/com.awspaas.user.apps.bnbm.datalinkup/src/main/java/com/awspaas/user/apps/bnbm/datalinkup/job/WaterproofPaintAccountsReceivableJob.java @@ -89,13 +89,23 @@ public class WaterproofPaintAccountsReceivableJob implements IJob { String bkgs = section.getBkgs(); String sql = "SELECT QYGS, FCUSTNAME, SQ AS FPROVINCE, CS AS FCITY, QY AS FDISTRICT, XSZZ " + " FROM " + section.getYsdTable() + " WHERE QYGS IS NOT NULL AND FCUSTNAME IS NOT NULL GROUP BY FCUSTNAME,XSZZ"; -// if (bkgs.equals("北新防水")){ -// sql += " AND XSZZ !='北新防水工程(辽宁)有限公司' " + -// "AND XSZZ != '北新防水工程(四川)有限公司' AND F_SFNBJY ='是'"; -// }else { -// sql += " AND F_SFNBJY ='是'"; -// } + if (bkgs.equals("北新防水")){ + sql += " AND XSZZ !='北新防水工程(辽宁)有限公司' " + + "AND XSZZ != '北新防水工程(四川)有限公司' AND F_SFNBJY ='否'"; + }else { + sql += " AND F_SFNBJY ='否'"; + } List customerMaps = DBSql.getMaps(sql); +// List customerMaps = new ArrayList<>(); +// HashMap hashMap = new HashMap<>(); +// hashMap.put("QYGS","北方区域公司"); +// hashMap.put("FCUSTNAME","大连红太阳防水保温工程有限公司"); +// hashMap.put("FPROVINCE","辽宁省"); +// hashMap.put("FCITY","大连市"); +// hashMap.put("FDISTRICT",""); +// hashMap.put("XSZZ","北新禹王防水科技集团有限公司"); +// RowMap map = new RowMap(hashMap); +// customerMaps.add(map); if (customerMaps == null || customerMaps.isEmpty()) { LOGGER.warn("{}板块未查询到销售组织和客户数据", sectionName); @@ -145,6 +155,7 @@ public class WaterproofPaintAccountsReceivableJob implements IJob { .map(row -> row.getString("FCUSTNAME")) .distinct() .collect(Collectors.toList()); +// LOGGER.info("saleOrgUnits:{},custNames:{}",Arrays.toString(saleOrgUnits.toArray()),Arrays.toString(custNames.toArray())); // 获取需要处理的所有月末日期 List monthEndDates = getMonthEndDates(startDate, endDate); @@ -231,7 +242,7 @@ public class WaterproofPaintAccountsReceivableJob implements IJob { */ private Map preloadAllData(Section section, List saleOrgUnits, List custNames, List monthEndDates) { - + LOGGER.info("预加载数据开始"); Map results = new HashMap<>(); try { @@ -292,17 +303,17 @@ public class WaterproofPaintAccountsReceivableJob implements IJob { // .append(" 23:59:59')"); // } - String bkgs = section.getBkgs(); + String sql = "SELECT XSZZ, FCUSTNAME, DATE_FORMAT(DZRQ, '%Y-%m-%d') as BILL_DATE, SUM(SSJERMB) as TOTAL " + - "FROM " + section.getYsdTable() + + " FROM " + section.getYsdTable() + " WHERE XSZZ IN (" + inSaleOrgs + ") " + " AND FCUSTNAME IN (" + inCustNames + ") " + " AND (" + dateCondition + ") "; - if (bkgs.equals("北新防水")){ + if (section.getBkgs().equals("北新防水")){ sql += " AND XSZZ !='北新防水工程(辽宁)有限公司' " + - "AND XSZZ != '北新防水工程(四川)有限公司' AND F_SFNBJY ='是'"; + " AND XSZZ != '北新防水工程(四川)有限公司' AND F_SFNBJY ='否'"; }else { - sql += " AND F_SFNBJY ='是'"; + sql += " AND F_SFNBJY ='否'"; } sql += " GROUP BY XSZZ, FCUSTNAME, DATE_FORMAT(DZRQ, '%Y-%m-%d')"; // LOGGER.info("应收单数据sql = " + sql); @@ -349,17 +360,16 @@ public class WaterproofPaintAccountsReceivableJob implements IJob { // .append(" 23:59:59')"); // } - String bkgs = section.getBkgs(); String sql = "SELECT FSALEORGUNIT, FCUSTNAME, DATE_FORMAT(FBILLDATE, '%Y-%m-%d') as BILL_DATE, SUM(FSALEAMOUNTRMB) as TOTAL " + "FROM " + section.getSkdTable() + " WHERE FSALEORGUNIT IN (" + inSaleOrgs + ") " + " AND FCUSTNAME IN (" + inCustNames + ") " + " AND (" + dateCondition + ") "; - if (bkgs.equals("北新防水")){ + if (section.getBkgs().equals("北新防水")){ sql += " AND FSALEORGUNIT !='北新防水工程(辽宁)有限公司' " + - "AND FSALEORGUNIT != '北新防水工程(四川)有限公司' AND F_SFNBJY ='是'"; + "AND FSALEORGUNIT != '北新防水工程(四川)有限公司' AND F_SFNBJY ='否'"; }else { - sql += " AND F_SFNBJY ='是'"; + sql += " AND F_SFNBJY ='否'"; } sql += " GROUP BY FSALEORGUNIT, FCUSTNAME, DATE_FORMAT(FBILLDATE, '%Y-%m-%d')"; @@ -407,17 +417,16 @@ public class WaterproofPaintAccountsReceivableJob implements IJob { // .append(" 23:59:59')"); // } - String bkgs = section.getBkgs(); String sql = "SELECT FSALEORGUNIT, FCUSTNAME, DATE_FORMAT(FBILLDATE, '%Y-%m-%d') as BILL_DATE, SUM(FSALEAMOUNTRMB) as TOTAL " + "FROM " + section.getSktkdTable() + " WHERE FSALEORGUNIT IN (" + inSaleOrgs + ") " + " AND FCUSTNAME IN (" + inCustNames + ") " + " AND (" + dateCondition + ") "; - if (bkgs.equals("北新防水")){ + if (section.getBkgs().equals("北新防水")){ sql += " AND FSALEORGUNIT !='北新防水工程(辽宁)有限公司' " + - "AND FSALEORGUNIT != '北新防水工程(四川)有限公司' AND F_SFNBJY ='是'"; + "AND FSALEORGUNIT != '北新防水工程(四川)有限公司' AND F_SFNBJY ='否'"; }else { - sql += " AND F_SFNBJY ='是'"; + sql += " AND F_SFNBJY ='否'"; } sql += " GROUP BY FSALEORGUNIT, FCUSTNAME, DATE_FORMAT(FBILLDATE, '%Y-%m-%d')"; @@ -490,6 +499,7 @@ public class WaterproofPaintAccountsReceivableJob implements IJob { for (LocalDate monthEndDate : monthEndDates) { String dateKey = monthEndDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); +// LOGGER.info("dateKey:{}",dateKey); String fullKeyPrefix = keyPrefix + dateKey; try { @@ -499,6 +509,7 @@ public class WaterproofPaintAccountsReceivableJob implements IJob { // 计算累计销售(本年年初到当前月末) LocalDate yearStart = monthEndDate.withDayOfYear(1); +// LOGGER.info("yearStart:{}",yearStart); BigDecimal ljxs = calculatePeriodBalance(ysData, null, null, saleOrgUnit, custName, yearStart, monthEndDate); // 计算累计还款(本年年初到当前月末) diff --git a/com.awspaas.user.apps.bnbm.datalinkup/com.awspaas.user.apps.bnbm.datalinkup/src/main/java/com/awspaas/user/apps/bnbm/datalinkup/job/YyglbDbHtJob.java b/com.awspaas.user.apps.bnbm.datalinkup/com.awspaas.user.apps.bnbm.datalinkup/src/main/java/com/awspaas/user/apps/bnbm/datalinkup/job/YyglbDbHtJob.java index 0d51eea..b14992d 100644 --- a/com.awspaas.user.apps.bnbm.datalinkup/com.awspaas.user.apps.bnbm.datalinkup/src/main/java/com/awspaas/user/apps/bnbm/datalinkup/job/YyglbDbHtJob.java +++ b/com.awspaas.user.apps.bnbm.datalinkup/com.awspaas.user.apps.bnbm.datalinkup/src/main/java/com/awspaas/user/apps/bnbm/datalinkup/job/YyglbDbHtJob.java @@ -28,10 +28,17 @@ import java.util.stream.Collectors; public class YyglbDbHtJob implements IJob { private static final Logger LOGGER = LoggerFactory.getLogger(YyglbDbHtJob.class); @Override - public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException { + public void execute(JobExecutionContext job) throws JobExecutionException { + String param = SDK.getJobAPI().getJobParameter(job); + int timeRange = StringUtils.isNotBlank(param) ? Integer.parseInt(param) : 0; + LocalDate now = LocalDate.now().minusMonths(1); int year = now.getYear(); int monthValue = now.getMonthValue(); + if (timeRange!=0){ + LOGGER.info("timeRange:{}",timeRange); + monthValue = timeRange; + } //分别遍历龙牌梦牌泰山 护面纸、石膏、煤的对标数量 //公式为:当月材料出库数量/当月石膏板折标产量 //龙牌取数为:生产出库用量 护面纸取全部、脱硫石膏取物料编码为101115110000130、煤为包含煤、生物质、天然气、蒸汽 @@ -48,6 +55,7 @@ public class YyglbDbHtJob implements IJob { }catch (Exception e){ LOGGER.error("删除运营_物料单耗出库表出错,删除范围为:{}-{}:e",year,monthValue,e.getLocalizedMessage()); } + try { for (String bkgs : bkgsArr) { List maps1 = DBSql.getMaps("SELECT FLZZ FROM BO_EU_BNBM_SCCK_HZ WHERE BKGS = '"+bkgs+"' " + @@ -62,12 +70,17 @@ public class YyglbDbHtJob implements IJob { " AND FLZZ = '"+map2.getString("FLZZ")+"'"; if (wlmckey.equals("石膏")){ sql+=" AND WLMC IN ('脱硫石膏','磷石膏','天然石膏')"; - }else { + } else if (wlmckey.equals("护面纸")) { + if (bkgs.equals("梦牌")) { + System.out.println("梦牌护面纸的判断"); + sql += " AND WLMC LIKE '%" + wlmckey + "%' AND WLMC NOT LIKE '%覆膜%'"; + }else { + sql+=" AND WLMC LIKE '%" + wlmckey + "%' "; + } + } else { sql+=" AND WLMC LIKE '%" + wlmckey + "%' "; } - if (bkgs.equals("泰山石膏")){ - sql+="AND SCBM NOT LIKE '%穿孔板%' AND SCBM NOT LIKE '%装饰板%'"; - } + LOGGER.info("查询执行的sql:"+sql); RowMap map = DBSql.getMap(sql); bo.set(wlmcValue,map.getString("SFSL")); if (StringUtils.isNotBlank(map2.getString("FLZZ"))){ @@ -84,13 +97,26 @@ public class YyglbDbHtJob implements IJob { bo.set("YF",monthValue); bo.set("BKGS",bkgs); bo.set("BK",bkgs.equals("泰山石膏")?"泰山":bkgs); - RowMap map1 = DBSql.getMap("SELECT SUM(ZBCL) AS zbcl FROM BO_EU_BNBM_SCRK_HZ " + + String sql = "SELECT SUM(ZBCL) AS zbcl,SUM(RKSL) AS rksl FROM BO_EU_BNBM_SCRK_HZ " + " WHERE BKGS = '" + bkgs + "' AND YEAR = '" + year + "' AND MONTH = '" + monthValue + "'" + - " AND WLMC LIKE '%石膏板%' AND KCZZ = '"+bo.getString("FLZZ")+"'"); + " AND KCZZ = '"+bo.getString("FLZZ")+"'"; + if (bkgs.equals("泰山石膏")){ + sql+=" AND WLMC LIKE '%石膏板%' AND SCBM NOT LIKE '%穿孔板%' AND SCBM NOT LIKE '%装饰板%'"; + }else if (bkgs.equals("龙牌")){ + sql+=" AND WLBM LIKE '3015%' AND WLFL != '装饰板'"; + } else if (bkgs.equals("梦牌")) { + sql+=" AND (WLBM LIKE '3015%' OR WLBM LIKE '103071%') AND WLBM NOT LIKE '3015A%'"; + } else { + sql+=" AND WLMC LIKE '%石膏板%'"; + } + LOGGER.info("查询产量和折标产量的sql:{}",sql); + RowMap map1 = DBSql.getMap(sql); if (map1!=null){ bo.set("SGBZBCL",map1.getString("zbcl")); + bo.set("SGBRKSL",map1.getString("rksl")); }else{ bo.set("SGBZBCL",0); + bo.set("SGBRKSL",0); } LOGGER.info("存储的值为:{}",bo.toJSONObject().toJSONString()); boList.add(bo); @@ -119,6 +145,7 @@ public class YyglbDbHtJob implements IJob { Double sg = 0.00; Double mei = 0.00; Double sgbzbcl = 0.00; + Double sgbrksl = 0.00; try { hmz = StringUtils.isNotBlank(bo.getString("HMZ")) ? Double.parseDouble(bo.getString("HMZ").trim()) : 0.00; @@ -147,6 +174,12 @@ public class YyglbDbHtJob implements IJob { LOGGER.warn("SGBZBCL格式错误,使用默认值0.00,原始值: {}", bo.getString("SGBZBCL")); sgbzbcl = 0.00; } + try { + sgbrksl = StringUtils.isNotBlank(bo.getString("SGBRKSL")) ? Double.parseDouble(bo.getString("SGBRKSL").trim()) : 0.00; + } catch (NumberFormatException e) { + LOGGER.warn("SGBRKSL格式错误,使用默认值0.00,原始值: {}", bo.getString("SGBRKSL")); + sgbrksl = 0.00; + } // 检查detail对象是否为空 if (detail == null) { @@ -162,15 +195,15 @@ public class YyglbDbHtJob implements IJob { LOGGER.warn("flzz或JC字段为空,使用空字符串"); } - LOGGER.info("nf:{};yf:{};bk:{};jc:{};hmz:{};sg:{};mei:{};sgbzbcl:{}", - nf, yf, bk, jcValue, hmz, sg, mei, sgbzbcl); + LOGGER.info("nf:{};yf:{};bk:{};jc:{};hmz:{};sg:{};mei:{};sgbzbcl:{},sgbrksl:{}", + nf, yf, bk, jcValue, hmz, sg, mei, sgbzbcl,sgbrksl); if (sgbzbcl != null && sgbzbcl != 0.00) { // 安全处理hmz if (hmz != null && hmz != 0.00) { - double result = (hmz*1000000) / sgbzbcl; + double result = (hmz*1000000) / sgbrksl; detail.set("HMZ", result); - LOGGER.debug("HMZ计算结果: {} / {} = {}", hmz, sgbzbcl, result); + LOGGER.debug("HMZ计算结果: {} / {} = {}", hmz, sgbrksl, result); } else { detail.set("HMZ", 0.00); } 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 cebbd3f..818b6f2 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 @@ -277,8 +277,8 @@ public class ProductionDataSyncServiceImpl implements DataSyncService { for (int i = 0; i < timeRanges.size(); i++) { Date[] range = timeRanges.get(i); - String startDate = simpleDateFormat2.format(range[0])+" 00:00:00"; - String endDate = simpleDateFormat2.format(range[1])+" 23:59:59"; + String startDate = simpleDateFormat2.format(range[0])+""; + String endDate = simpleDateFormat2.format(range[1])+""; LOGGER.info("正在处理第 {} 个时间区间: {} 至 {}", i + 1, startDate, endDate); if ("ORACLE".equalsIgnoreCase(DBname)) { @@ -432,7 +432,7 @@ public class ProductionDataSyncServiceImpl implements DataSyncService { String querySql = "SELECT * FROM " + tableName + " WHERE " + conditionBuilder.toString(); - LOGGER.debug("执行查询querySql: {}", querySql); + LOGGER.info("执行查询querySql: {}", querySql); List pageData; // 根据条件类型执行查询 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 260e66d..b226d42 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 @@ -3,7 +3,6 @@ package com.awspaas.user.apps.bnbm.datalinkup.service.impl; import com.actionsoft.bpms.bo.engine.BO; import com.actionsoft.bpms.commons.database.DBUtils; import com.actionsoft.bpms.commons.database.RowMap; -import com.actionsoft.bpms.commons.pagination.SQLPagination; import com.actionsoft.bpms.server.UserContext; import com.actionsoft.bpms.util.DBSql; import com.actionsoft.bpms.util.UtilDate; @@ -18,7 +17,6 @@ import org.slf4j.LoggerFactory; import java.math.BigDecimal; import java.math.RoundingMode; -import java.sql.*; import java.text.SimpleDateFormat; import java.time.LocalDate; import java.time.LocalDateTime; @@ -1250,10 +1248,18 @@ public class SaleDataSyncServiceImpl implements DataSyncService { @Override public void querySourceDataYS(String ccId, String tableName, String timeField, Date startDated, Date endDated, String partitionField, List fieldMappings, String targetTable, String jezd) { // LOGGER.info("ccId:{},tableName:{},timeField:{},startDated:{},endDated:{},partitionField:{},fieldMappings:{},targetTable:{},jezd:{}",ccId,tableName,timeField,startDated,endDated,partitionField,Arrays.asList(fieldMappings.toArray()),targetTable,jezd); + ArrayList bggsArr = new ArrayList<>(); + String bindid = fieldMappings.get(0).getString("BINDID"); + BO sjgtpz = SDK.getBOAPI().query("BO_EU_BNBM_DATALINKUP_SJGTPZ").detailByBindId(bindid); + String ssbk = sjgtpz.getString("SSBK"); + if (ssbk.equals("龙牌")){ + bggsArr.add("龙牌"); + bggsArr.add("梦牌"); + }else { + bggsArr.add(ssbk); + } int totalRows = 0; // 总查询行数 int totalSuccess = 0; // 总成功插入行数 - int pageNo = 1; - boolean hasMore; RDSAPI rdsapi = null; DBUtils.SUPPLY supply = null; SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); @@ -1328,71 +1334,101 @@ public class SaleDataSyncServiceImpl implements DataSyncService { } // 分页查询数据 - do { - String startDate = simpleDateFormat2.format(startDated); - String endDate = simpleDateFormat2.format(endDated); - // 修改后的querySourceDataYS方法中的SQL查询部分 - String querySql; - if ("ORACLE".equalsIgnoreCase(DBname)) { - querySql = "SELECT t1.* FROM " + tableName + " t1 " + - " JOIN (SELECT TRUNC(TO_DATE(" + timeField + ", 'YYYY-MM-DD'), 'MONTH') AS month_start, " + - " MAX(TO_DATE(" + timeField + ", 'YYYY-MM-DD')) AS max_date " + - " FROM " + tableName + " WHERE " + conditionBuilder.toString() + - " AND TO_DATE(" + timeField + ", 'YYYY-MM-DD') BETWEEN TO_DATE('" + startDate + "', 'YYYY-MM-DD') AND TO_DATE('" + endDate + "', 'YYYY-MM-DD') " + - " GROUP BY TRUNC(TO_DATE(" + timeField + ", 'YYYY-MM-DD'), 'MONTH')) t2 " + - " ON TO_DATE(t1." + timeField + ", 'YYYY-MM-DD') = t2.max_date " + - " WHERE " + conditionBuilder.toString() + - " AND TO_DATE(t1." + timeField + ", 'YYYY-MM-DD') BETWEEN TO_DATE('" + startDate + "', 'YYYY-MM-DD') AND TO_DATE('" + endDate + "', 'YYYY-MM-DD')"; - } else if ("POSTGRESQL".equalsIgnoreCase(DBname) || "GAUSS".equalsIgnoreCase(DBname)) { - querySql = "SELECT t1.* FROM " + tableName + " t1 " + - " JOIN (SELECT DATE_TRUNC('MONTH', " + timeField + "::DATE) AS month_start, " + - " MAX(" + timeField + "::DATE) AS max_date " + - " FROM " + tableName + " WHERE "+conditionBuilder.toString()+" AND "+timeField+"::DATE BETWEEN '"+startDate+"' AND '"+endDate+"' " + - " GROUP BY DATE_TRUNC('MONTH', " + timeField + "::DATE)) t2 " + - " ON t1." + timeField + "::DATE = t2.max_date " + - " WHERE " +conditionBuilder.toString()+ - " AND t1."+timeField+"::DATE BETWEEN '"+startDate+"' AND '"+endDate+"'"; - } else if ("SQLSERVER".equalsIgnoreCase(DBname)) { - querySql = "SELECT t1.* FROM " + tableName + " t1 " + - " JOIN (SELECT DATEADD(MONTH, DATEDIFF(MONTH, 0, CONVERT(DATE, " + timeField + ")), 0) AS month_start, " + - " MAX(CONVERT(DATE, " + timeField + ")) AS max_date " + - " FROM " + tableName + " WHERE " + conditionBuilder.toString() + - " AND CONVERT(DATE, " + timeField + ") BETWEEN CONVERT(DATE, '" + startDate + "') AND CONVERT(DATE, '" + endDate + "') " + - " GROUP BY DATEADD(MONTH, DATEDIFF(MONTH, 0, CONVERT(DATE, " + timeField + ")), 0)) t2 " + - " ON CONVERT(DATE, t1." + timeField + ") = t2.max_date " + - " WHERE " + conditionBuilder.toString() + - " AND CONVERT(DATE, t1." + timeField + ") BETWEEN CONVERT(DATE, '" + startDate + "') AND CONVERT(DATE, '" + endDate + "')"; - } else { - // 默认处理(如MySQL) - querySql = "SELECT t1.* FROM " + tableName + " t1 " + - " JOIN (SELECT DATE_FORMAT(STR_TO_DATE(" + timeField + ", '%Y-%m-%d'), '%Y-%m-01') AS month_start, " + - " MAX(STR_TO_DATE(" + timeField + ", '%Y-%m-%d')) AS max_date " + - " FROM " + tableName + " WHERE " + conditionBuilder.toString() + - " AND STR_TO_DATE(" + timeField + ", '%Y-%m-%d') BETWEEN STR_TO_DATE('" + startDate + "', '%Y-%m-%d') AND STR_TO_DATE('" + endDate + "', '%Y-%m-%d') " + - " GROUP BY DATE_FORMAT(STR_TO_DATE(" + timeField + ", '%Y-%m-%d'), '%Y-%m-01')) t2 " + - " ON STR_TO_DATE(t1." + timeField + ", '%Y-%m-%d') = t2.max_date " + - " WHERE " + conditionBuilder.toString() + - " AND STR_TO_DATE(t1." + timeField + ", '%Y-%m-%d') BETWEEN STR_TO_DATE('" + startDate + "', '%Y-%m-%d') AND STR_TO_DATE('" + endDate + "', '%Y-%m-%d')"; - } - LOGGER.info("执行查询: {}", querySql); + LOGGER.info("==================执行同步应收=============="); + Set bkgsSet = new HashSet<>(); + // 遍历bggsArr,为每个分组条件执行查询 + for (String bggs : bggsArr) { + LOGGER.info("正在处理板块公司: {}", bggs); + int groupTotalRows = 0; // 当前分组总查询行数 + int groupTotalSuccess = 0; // 当前分组总成功插入行数 + int pageNo = 1; + boolean hasMore; + do { + String startDate = simpleDateFormat2.format(startDated); + String endDate = simpleDateFormat2.format(endDated); + // 修改后的querySourceDataYS方法中的SQL查询部分 - List pageData; - if (params.isEmpty()) { - pageData = rdsapi.getMaps(querySql); - } else { - pageData = rdsapi.getMaps(querySql); - } + String querySql; + if ("ORACLE".equalsIgnoreCase(DBname)) { + querySql = "SELECT t1.* FROM " + tableName + " t1 " + + " JOIN (SELECT TRUNC(TO_DATE(" + timeField + ", 'YYYY-MM-DD'), 'MONTH') AS month_start, " + + " MAX(TO_DATE(" + timeField + ", 'YYYY-MM-DD')) AS max_date " + + " FROM " + tableName + " WHERE " + conditionBuilder.toString() + + " AND TO_DATE(" + timeField + ", 'YYYY-MM-DD') BETWEEN TO_DATE('" + startDate + "', 'YYYY-MM-DD') AND TO_DATE('" + endDate + "', 'YYYY-MM-DD') " + + " AND BKGS = '" + bggs + "' " + // 添加分组条件 + " GROUP BY TRUNC(TO_DATE(" + timeField + ", 'YYYY-MM-DD'), 'MONTH')) t2 " + + " ON TO_DATE(t1." + timeField + ", 'YYYY-MM-DD') = t2.max_date " + + " WHERE " + conditionBuilder.toString() + + " AND TO_DATE(t1." + timeField + ", 'YYYY-MM-DD') BETWEEN TO_DATE('" + startDate + "', 'YYYY-MM-DD') AND TO_DATE('" + endDate + "', 'YYYY-MM-DD')"; + } else if ("POSTGRESQL".equalsIgnoreCase(DBname) || "GAUSS".equalsIgnoreCase(DBname)) { + querySql = "SELECT t1.* FROM " + tableName + " t1 " + + " JOIN (SELECT DATE_TRUNC('MONTH', " + timeField + "::DATE) AS month_start, " + + " MAX(" + timeField + "::DATE) AS max_date " + + " FROM " + tableName + " WHERE " + conditionBuilder.toString() + " AND " + timeField + "::DATE BETWEEN '" + startDate + "' AND '" + endDate + "' " + + " AND BKGS = '" + bggs + "' " + // 添加分组条件 + " GROUP BY DATE_TRUNC('MONTH', " + timeField + "::DATE)) t2 " + + " ON t1." + timeField + "::DATE = t2.max_date " + + " WHERE " + conditionBuilder.toString() + + " AND t1." + timeField + "::DATE BETWEEN '" + startDate + "' AND '" + endDate + "'" + + " AND t1.BKGS = '" + bggs + "'"; // 添加分组条件; + } else if ("SQLSERVER".equalsIgnoreCase(DBname)) { + querySql = "SELECT t1.* FROM " + tableName + " t1 " + + " JOIN (SELECT DATEADD(MONTH, DATEDIFF(MONTH, 0, CONVERT(DATE, " + timeField + ")), 0) AS month_start, " + + " MAX(CONVERT(DATE, " + timeField + ")) AS max_date " + + " FROM " + tableName + " WHERE " + conditionBuilder.toString() + + " AND CONVERT(DATE, " + timeField + ") BETWEEN CONVERT(DATE, '" + startDate + "') AND CONVERT(DATE, '" + endDate + "') " + + " GROUP BY DATEADD(MONTH, DATEDIFF(MONTH, 0, CONVERT(DATE, " + timeField + ")), 0)) t2 " + + " ON CONVERT(DATE, t1." + timeField + ") = t2.max_date " + + " WHERE " + conditionBuilder.toString() + + " AND CONVERT(DATE, t1." + timeField + ") BETWEEN CONVERT(DATE, '" + startDate + "') AND CONVERT(DATE, '" + endDate + "')" + + " AND t1.BKGS = '" + bggs + "'"; + } else { + // 默认处理(如MySQL) + querySql = "SELECT t1.* FROM " + tableName + " t1 " + + " JOIN (SELECT DATE_FORMAT(STR_TO_DATE(" + timeField + ", '%Y-%m-%d'), '%Y-%m-01') AS month_start, " + + " MAX(STR_TO_DATE(" + timeField + ", '%Y-%m-%d')) AS max_date " + + " FROM " + tableName + " WHERE " + conditionBuilder.toString() + + " AND STR_TO_DATE(" + timeField + ", '%Y-%m-%d') BETWEEN STR_TO_DATE('" + startDate + "', '%Y-%m-%d') AND STR_TO_DATE('" + endDate + "', '%Y-%m-%d') " + + " AND BKGS = '" + bggs + "' " + // 添加分组条件 + " GROUP BY DATE_FORMAT(STR_TO_DATE(" + timeField + ", '%Y-%m-%d'), '%Y-%m-01')) t2 " + + " ON STR_TO_DATE(t1." + timeField + ", '%Y-%m-%d') = t2.max_date " + + " WHERE " + conditionBuilder.toString() + + " AND STR_TO_DATE(t1." + timeField + ", '%Y-%m-%d') BETWEEN STR_TO_DATE('" + startDate + "', '%Y-%m-%d') AND STR_TO_DATE('" + endDate + "', '%Y-%m-%d')" + + " AND t1.BKGS = '" + bggs + "'"; // 添加分组条件 + } + LOGGER.info("执行查询: {}", querySql); - 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); + List pageData; + if (params.isEmpty()) { + pageData = rdsapi.getMaps(querySql); + } else { + pageData = rdsapi.getMaps(querySql); + } + + if (pageData != null && !pageData.isEmpty()) { + int successCount = this.processAndInsertData(pageData, fieldMappings, targetTable); + groupTotalRows += pageData.size(); + groupTotalSuccess += successCount; + totalRows += pageData.size(); + totalSuccess += successCount; + hasMore = pageData.size() == PAGE_SIZE; + pageNo++; + Set bkgsSet2 = pageData.stream().map(o -> o.getString("BKGS")).collect(Collectors.toSet()); + if (bkgsSet2 != null) { + for (String s : bkgsSet2) { + bkgsSet.add(s); + } + } + } else { + hasMore = false; + } + } while (hasMore); + LOGGER.info("板块公司[{}]处理完成: 查询{}条数据,成功同步{}条数据", + bggs, groupTotalRows, groupTotalSuccess); + } + String bkgs = bkgsSet.stream().collect(Collectors.joining(", ")); + LOGGER.info("同步板块为:{};落地表为:{}", + bkgs,targetTable); // 每天执行的任务:删除去年同期上一天的数据,新增去年同期当天的数据 try { @@ -1417,6 +1453,12 @@ public class SaleDataSyncServiceImpl implements DataSyncService { int deletedCount = DBSql.update(deleteLastYearPreviousDaySql); LOGGER.info("已删除去年同期前一天({})的数据,删除了{}条数据", lastYearPreviousDayStr, deletedCount); + // 1. 删除去年同期当天的数据 + String deleteLastYearDaySql = "DELETE FROM " + targetTable + + " WHERE RQ = '" + lastYearSameDayStr + "'"; + int deletedCount2 = DBSql.update(deleteLastYearPreviousDaySql); + LOGGER.info("已删除去年同期当天({})的数据,删除了{}条数据", lastYearSameDayStr, deletedCount2); + // 2. 新增去年同期当天数据 // 构建查询去年同期当天数据的SQL String lastYearQuerySql;