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/PurchaseDataSummaryServiceImpl.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/PurchaseDataSummaryServiceImpl.class index 292c28e..535ba6e 100644 Binary files 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/PurchaseDataSummaryServiceImpl.class and 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/PurchaseDataSummaryServiceImpl.class differ 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 e9387ea..3c97fef 100644 Binary files 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 and 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 differ 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/SaleCountDimensionImpl.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/SaleCountDimensionImpl.class index ff2a032..63714cf 100644 Binary files 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/SaleCountDimensionImpl.class and 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/SaleCountDimensionImpl.class differ 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 4a9d8dc..63e7774 100644 Binary files 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 and 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 differ diff --git a/com.awspaas.user.apps.bnbm.datalinkup/com.awspaas.user.apps.bnbm.datalinkup/build/tmp/compileJava/previous-compilation-data.bin b/com.awspaas.user.apps.bnbm.datalinkup/com.awspaas.user.apps.bnbm.datalinkup/build/tmp/compileJava/previous-compilation-data.bin index 6739ffe..0b48f09 100644 Binary files a/com.awspaas.user.apps.bnbm.datalinkup/com.awspaas.user.apps.bnbm.datalinkup/build/tmp/compileJava/previous-compilation-data.bin and b/com.awspaas.user.apps.bnbm.datalinkup/com.awspaas.user.apps.bnbm.datalinkup/build/tmp/compileJava/previous-compilation-data.bin differ 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 ec03504..2f424a4 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 @@ -252,13 +252,17 @@ public class ProductionDataSyncServiceImpl implements DataSyncService { // 如果时间字段存在,添加时间范围条件 if (timeField != null && !timeField.isEmpty()) { - conditionBuilder.append(" AND TO_DATE(") + conditionBuilder.append("TO_DATE(") .append(timeField) .append(", '") .append(ORACLE_DATE_FORMAT) - .append("') BETWEEN TO_DATE(?, '") + .append("') >= TO_DATE(?, '") .append(ORACLE_DATE_FORMAT) - .append("') AND TO_DATE(?, '") + .append("') AND TO_DATE(") + .append(timeField) + .append(", '") + .append(ORACLE_DATE_FORMAT) + .append("') < TO_DATE(?, '") .append(ORACLE_DATE_FORMAT) .append("')"); @@ -278,9 +282,13 @@ public class ProductionDataSyncServiceImpl implements DataSyncService { .append(timeField) .append(", '") .append(ORACLE_DATE_FORMAT) - .append("') BETWEEN TO_DATE(?, '") + .append("') >= TO_DATE(?, '") .append(ORACLE_DATE_FORMAT) - .append("') AND TO_DATE(?, '") + .append("') AND TO_DATE(") + .append(timeField) + .append(", '") + .append(ORACLE_DATE_FORMAT) + .append("') < TO_DATE(?, '") .append(ORACLE_DATE_FORMAT) .append("')"); // 构建排序子句 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/PurchaseDataSummaryServiceImpl.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/PurchaseDataSummaryServiceImpl.java index 78249bb..232e3e3 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/PurchaseDataSummaryServiceImpl.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/PurchaseDataSummaryServiceImpl.java @@ -13,6 +13,9 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.math.BigDecimal; +import java.text.SimpleDateFormat; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; import java.util.*; import java.util.stream.Collectors; @@ -50,6 +53,10 @@ public class PurchaseDataSummaryServiceImpl implements DataSummaryService { */ private static final String BO_EU_DWD_ORDER_RKD_HZ = "BO_EU_DWD_ORDER_RKD_HZ"; + // 日期格式化 + private static final SimpleDateFormat YEAR_MONTH_FORMAT = new SimpleDateFormat("yyyy-MM"); + private static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd"); + // 缓存物料分类列表 private List distinctMaterialList = null; @@ -71,11 +78,27 @@ public class PurchaseDataSummaryServiceImpl implements DataSummaryService { if (dateRange == null || dateRange.getStartDate() == null || dateRange.getEndDate() == null) { LOGGER.info("未提供有效时间范围,按当前日期计算"); + String startDate = LocalDate.now().minusDays(1).format(DateTimeFormatter.ofPattern("yyyy-mm-dd")); + // 1. 计算并保存各板块物料采购总额、总量、单价(按月存储) +// monthlyMaterialSummaryBySegment(year, month, yearMonth, yearLastMonth, lastYearMonth, bkgs, distinctList); + newmonthlyMaterialSummaryBySegment(startDate, bkgs, distinctList); + + // 2. 根据年月汇总板块、基地、年月、当期、上期、同期数据 +// monthlyBaseSummaryBySegment(year, month, yearMonth, yearLastMonth, lastYearMonth, bkgs, distinctList); + + // 3. 计算并保存各板块物料采购总额、总量、单价(按日存储) +// dailyMaterialSummaryBySegment(year, month, day, currentDate, bkgs, distinctList); + + // 4. 根据日期、入库单号、物料名称分页查询 日期、入库单号、物料编码、物料名称、规格型号、 + // (汇总)入库数量、单位、入库单价、(汇总)入库金额、供应商、订单编号、库存数 +// dailyWarehousingSummary(year, month, day, currentDate, bkgs, distinctList); calculateForCurrentDate(bkgs, distinctList); } else { LOGGER.info("开始执行采购数据多维度汇总计算(时间范围: {} 至 {})", dateRange.getStartDate(), dateRange.getEndDate()); - + String startDate = DATE_FORMAT.format(dateRange.getStartDate()); + //计算并保存各板块物料采购总额、总量、单价(按月存储) + newmonthlyMaterialSummaryBySegment(startDate, bkgs, distinctList); // 计算月度维度数据(按月遍历) calculateMonthlyData(dateRange, bkgs, distinctList); @@ -91,6 +114,117 @@ public class PurchaseDataSummaryServiceImpl implements DataSummaryService { } } + /** + * 计算并保存各板块物料采购总额、总量、单价(按月存储) + * 逻辑:按物料名称(WLMC)分组,计算月度采购总额(SUM(JSHJ))、采购总量(SUM(YSSL))和平均单价(采购总额/采购总量) + * @param startDate + * @param bkgs + * @param distinctList + */ + private void newmonthlyMaterialSummaryBySegment(String startDate, String bkgs, List distinctList) { + try { + LOGGER.info("开始计算{}物料采购月度汇总数据,板块公司:{}", startDate, bkgs); + + // 1. 删除该月份已存在的汇总数据(避免重复) + String deleteSql = "DELETE FROM " + PROCUREMENT_DETAILS_YEAR_MONTH + + " WHERE BKGS = ? AND YEARMONTH >= ?"; + int update = DBSql.update(deleteSql, new Object[]{bkgs, startDate}); + LOGGER.info("采购_年月采购明细:{}物料采购月度汇总数据,板块公司:{},删除了{}条数据",startDate, bkgs, update); + + String currentMonthSql = "SELECT CONCAT(YEAR(DJRQ), '-', LPAD(MONTH(DJRQ), 2, '0')) ASyear_month,c.Year AS year,c.Month AS month,c.WLMC AS WLMC," + + " c.tstotalAmount AS tstotalAmount,c.lptotalAmount AS lptotalAmount,c.totalQuantity AS totalQuantity," + + " ly.tstotalAmount AS LY_tstotalAmount,ly.lptotalAmount AS LY_lptotalAmount,ly.totalQuantity AS LY_totalQuantity," + + " lm.tstotalAmount AS LM_tstotalAmount,lm.lptotalAmount AS LM_lptotalAmount,lm.totalQuantity AS LM_totalQuantity" + + " FROM (" + + " SELECT WLMC,SUM(DHJE) AS tstotalAmount,SUM(JSHJHYF) AS lptotalAmount,SUM(RKSL) AS totalQuantity,YEAR(DJRQ) AS Year,MONTH(DJRQ) AS Month" + + " FROM BO_EU_DWD_ORDER_RKD_HZ" + + " WHERE BKGS = ? AND DJRQ >= DATE_FORMAT(DATE_SUB(?, INTERVAL 1 YEAR), '%Y-%m-%d')" + + " GROUP BY WLMC, YEAR(DJRQ), MONTH(DJRQ)" + + " ) c" + + " LEFT JOIN (" + + " SELECT WLMC,SUM(DHJE) AS tstotalAmount,SUM(JSHJHYF) AS lptotalAmount,SUM(RKSL) AS totalQuantity," + + " YEAR(DJRQ) AS Year,MONTH(DJRQ) AS Month" + + " FROM BO_EU_DWD_ORDER_RKD_HZ" + + " WHERE BKGS = ? AND DJRQ >= DATE_FORMAT(DATE_SUB(?, INTERVAL 1 YEAR), '%Y-%m-%d')" + + " GROUP BY WLMC, YEAR(DJRQ), MONTH(DJRQ)" + + ") ly ON c.WLMC = ly.WLMC AND c.Month = ly.Month AND ly.Year = c.Year - 1" + + " LEFT JOIN (" + + " SELECT WLMC,SUM(DHJE) AS tstotalAmount,SUM(JSHJHYF) AS lptotalAmount,SUM(RKSL) AS totalQuantity," + + " YEAR(DJRQ) AS Year,MONTH(DJRQ) AS Month" + + " FROM BO_EU_DWD_ORDER_RKD_HZ" + + " WHERE BKGS = ? AND DJRQ >= DATE_FORMAT(DATE_SUB(?, INTERVAL 1 YEAR), '%Y-%m-%d')" + + " GROUP BY WLMC, YEAR(DJRQ), MONTH(DJRQ)" + + ") lm ON c.WLMC = lm.WLMC" + + " AND ( (c.Month > 1 AND c.Year = lm.Year AND c.Month = lm.Month + 1) OR(c.Month = 1 AND c.Year = lm.Year + 1 AND lm.Month = 12))" + + "WHERE c.Year = YEAR(?)" + + "ORDER BY c.Year, c.Month"; + List currentMonthData = DBSql.getMaps(currentMonthSql, bkgs, startDate,bkgs,startDate,bkgs,startDate,startDate); + + if (currentMonthData==null){ + return; + } + + // 4. 批量插入 + List bos = new ArrayList<>(); + for (RowMap currentMonthRow : currentMonthData) { + String wlmc = currentMonthRow.getString("WLMC"); + BO bo = new BO(); + bo.set("BKGS",bkgs);//板块 + bo.set("WLMC",wlmc);//物料名称 + bo.set("YEARMONTH",currentMonthRow.getString("ASyear_month"));//年月(YYYYMM) + if (bkgs.equals("泰山石膏")) { + Double tstotalAmount = currentMonthRow.getDouble("tstotalAmount"); + double tstotalAmount1 = tstotalAmount==null?0.0: tstotalAmount; + Double totalQuantity = currentMonthRow.getDouble("totalQuantity"); + double totalQuantity1 = totalQuantity==null?0.0: totalQuantity; + bo.set("CGZE", tstotalAmount1);//采购总额 + bo.set("CGZL",totalQuantity1);//采购总量 + if (tstotalAmount1!=0 && totalQuantity1!=0) { + bo.set("PJDJ", tstotalAmount1/totalQuantity1);//平均单价 + }else { + bo.set("PJDJ", 0);//平均单价 + } + bo.set("TQCGZE",currentMonthRow.getString("LY_tstotalAmount"));//同期采购总额 + bo.set("SQCGZE",currentMonthRow.getString("LM_tstotalAmount"));//上期采购总额 + }else { + Double tstotalAmount = currentMonthRow.getDouble("lptotalAmount"); + double tstotalAmount1 = tstotalAmount==null?0.0: tstotalAmount; + Double totalQuantity = currentMonthRow.getDouble("totalQuantity"); + double totalQuantity1 = totalQuantity==null?0.0: totalQuantity; + bo.set("CGZE", tstotalAmount1);//采购总额 + bo.set("CGZL",totalQuantity1);//采购总量 + if (tstotalAmount1!=0 && totalQuantity1!=0) { + bo.set("PJDJ", tstotalAmount1/totalQuantity1);//平均单价 + }else { + bo.set("PJDJ", 0);//平均单价 + } + bo.set("TQCGZE",currentMonthRow.getString("LY_lptotalAmount"));//同期采购总额 + bo.set("SQCGZE",currentMonthRow.getString("LM_lptotalAmount"));//上期采购总额 + } + bo.set("TQCGZL",currentMonthRow.getString("LY_totalQuantity"));//同期采购总量 + bo.set("SQCGZL",currentMonthRow.getString("LM_totalQuantity"));//上期采购总量 + bos.add(bo); + } + + if (!bos.isEmpty()) { + // 批量插入数据 + int batchSize = 1000; + for (int i = 0; i < bos.size(); i += batchSize) { + int end = Math.min(i + batchSize, bos.size()); + List batch = bos.subList(i, end); + SDK.getBOAPI().createDataBO(PROCUREMENT_DETAILS_YEAR_MONTH, batch, UserContext.fromUID("admin")); + } + } + + LOGGER.info("成功保存{}条月度汇总数据,板块:{}", bos.size(), bkgs); + + } catch (Exception e) { + String errorMsg = String.format("月度汇总计算失败(开始时间=%s,板块=%s): %s", startDate, bkgs, e.getMessage()); + LOGGER.error(errorMsg, e); + throw new RuntimeException(errorMsg, e); + } + } + /** * 获取物料分类列表(带缓存) */ @@ -153,7 +287,7 @@ public class PurchaseDataSummaryServiceImpl implements DataSummaryService { Date currentDate = new Date(System.currentTimeMillis()); // 1. 计算并保存各板块物料采购总额、总量、单价(按月存储) - monthlyMaterialSummaryBySegment(year, month, yearMonth, yearLastMonth, lastYearMonth, bkgs, distinctList); +// monthlyMaterialSummaryBySegment(year, month, yearMonth, yearLastMonth, lastYearMonth, bkgs, distinctList); // 2. 根据年月汇总板块、基地、年月、当期、上期、同期数据 monthlyBaseSummaryBySegment(year, month, yearMonth, yearLastMonth, lastYearMonth, bkgs, distinctList); @@ -201,7 +335,7 @@ public class PurchaseDataSummaryServiceImpl implements DataSummaryService { LOGGER.info("计算月度汇总数据: {}-{};上月:{};上年同期:{}", year, month, yearLastMonth, lastYearMonth); // 1. 计算并保存各板块物料采购总额、总量、单价(按月存储) - monthlyMaterialSummaryBySegment(year, month, yearMonth, yearLastMonth, lastYearMonth, bkgs, distinctList); +// monthlyMaterialSummaryBySegment(year, month, yearMonth, yearLastMonth, lastYearMonth, bkgs, distinctList); // 2. 根据年月汇总板块、基地、年月、当期、上期、同期数据 monthlyBaseSummaryBySegment(year, month, yearMonth, yearLastMonth, lastYearMonth, bkgs, distinctList); 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 d847e5d..7838fa1 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 @@ -282,13 +282,17 @@ public class PurchaseDataSyncServiceImpl implements DataSyncService { // 如果时间字段存在,添加时间范围条件 if (timeField != null && !timeField.isEmpty()) { - conditionBuilder.append(" AND TO_DATE(") + conditionBuilder.append("TO_DATE(") .append(timeField) .append(", '") .append(ORACLE_DATE_FORMAT) - .append("') BETWEEN TO_DATE(?, '") + .append("') >= TO_DATE(?, '") .append(ORACLE_DATE_FORMAT) - .append("') AND TO_DATE(?, '") + .append("') AND TO_DATE(") + .append(timeField) + .append(", '") + .append(ORACLE_DATE_FORMAT) + .append("') < TO_DATE(?, '") .append(ORACLE_DATE_FORMAT) .append("')"); @@ -308,9 +312,13 @@ public class PurchaseDataSyncServiceImpl implements DataSyncService { .append(timeField) .append(", '") .append(ORACLE_DATE_FORMAT) - .append("') BETWEEN TO_DATE(?, '") + .append("') >= TO_DATE(?, '") .append(ORACLE_DATE_FORMAT) - .append("') AND TO_DATE(?, '") + .append("') AND TO_DATE(") + .append(timeField) + .append(", '") + .append(ORACLE_DATE_FORMAT) + .append("') < TO_DATE(?, '") .append(ORACLE_DATE_FORMAT) .append("')"); // 构建排序子句 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/SaleCountDimensionImpl.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/SaleCountDimensionImpl.java index f5fab24..ec0ca73 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/SaleCountDimensionImpl.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/SaleCountDimensionImpl.java @@ -86,7 +86,7 @@ public class SaleCountDimensionImpl implements DataSummaryService { cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH)); dateRange.setEndDate(cal.getTime()); // calculateForCurrentDate(bkgs); - calculateMonthlyData(dateRange, bkgs); +// calculateMonthlyData(dateRange, bkgs); // 处理营业收入数据 newProcessRevenueData(dateRange,bkgs); // 处理销量销额数据(分页查询) @@ -138,7 +138,13 @@ public class SaleCountDimensionImpl implements DataSummaryService { try { // 第一个SQL:查询应收账款数据 - String receivableSql = "SELECT t1.QYGS AS QYGS, t1.BKGS AS BKGS, DATE_FORMAT( t1.RQ, '%Y-%m' ) ASyear_month, t1.RQ AS max_rq, SUM( t1.YSYE ) AS YSZK" + + String receivableSql = "SELECT t1.XSZZ AS XSZZ, t1.QYGS AS QYGS, t1.BKGS AS BKGS," + + " DATE_FORMAT( t1.RQ, '%Y-%m' ) ASyear_month, t1.RQ AS max_rq, SUM( t1.YSYE ) AS YSZK," + + " SUM(t1.LJHK) AS LJHK,SUM(t1.LJXS) AS LJXS," + + " CASE " + + " WHEN SUM(t1.LJXS) != 0 THEN SUM(t1.LJHK) / SUM(t1.LJXS)" + + " ELSE NULL " + + " END AS hkl" + " FROM BO_EU_BNBM_DATALINKUP_XS_YSL t1" + " INNER JOIN (" + " SELECT QYGS, BKGS, DATE_FORMAT( RQ, '%Y-%m' ) ASyear_month, MAX( RQ ) AS max_rq" + @@ -149,11 +155,12 @@ public class SaleCountDimensionImpl implements DataSummaryService { " WHERE t1.RQ >= ? AND t1.RQ < ? AND t1.BKGS = ?" + " GROUP BY t1.QYGS,t1.BKGS,DATE_FORMAT ( t1.RQ, '%Y-%m' ),t1.RQ"; + String startDate = DATE_FORMAT.format(dateRange.getStartDate()); String endDate = DATE_FORMAT.format(dateRange.getEndDate()); LOGGER.info("应收账款数据查SQL: {}", receivableSql); - List receivableMaps = DBSql.getMaps(receivableSql, startDate, endDate, bkgs, startDate, endDate, bkgs); + List receivableMaps = DBSql.getMaps(receivableSql, startDate, endDate, bkgs,startDate, endDate, bkgs); if (receivableMaps.isEmpty()) { LOGGER.info("{}应收账款数据无数据,停止分页查询", bkgs); @@ -212,7 +219,10 @@ public class SaleCountDimensionImpl implements DataSummaryService { bo.set("BKGS", bkgs); bo.set("QYGS", receivable.getString("QYGS")); bo.set("YSZK", yszk); - bo.set("KCJE", kcje); + bo.set("CCJE", kcje); + bo.set("LJHK", receivable.getString("LJHK")); + bo.set("LJXS", receivable.getString("LJXS")); + bo.set("HKL", receivable.getString("HKL")); bos.add(bo); } @@ -265,7 +275,7 @@ public class SaleCountDimensionImpl implements DataSummaryService { )); String querySql = "SELECT QYGS, KCZZ, LB_1, LB_2, LB_3, SQ, CS, QY, SUM(ZSSL) AS XL," + - " SUM(SSJERMB) AS XE, SUM(XSSL) AS TSXL, YEARMONTH" + + " SUM(SSJERMB) AS XE, SUM(XSSL) AS TSXL, NMNY ,YEARMONTH" + " FROM " + SALES_DETAIL_TABLE + " WHERE DZRQ >= ? AND DZRQ < ? AND BKGS = ?" + " GROUP BY QYGS, KCZZ, LB_1, LB_2, LB_3, SQ, CS, QY, YEARMONTH"; @@ -302,7 +312,9 @@ public class SaleCountDimensionImpl implements DataSummaryService { }else { bo.set("XL", map.getDouble("XL")); } - bo.set("XE", map.getDouble("XE")); + Double ssjermb = map.getDouble("SSJERMB"); + Double xe = map.getDouble("XE"); + bo.set("XE", ssjermb!=null?ssjermb:xe!=null?(xe*0.13):0.00); bo.set("MC_JC", Math.random()%2==0?"面材":"基材"); bo.set("JZ_GZ", Math.random()%2==0?"家装":"工装"); bos.add(bo); @@ -354,7 +366,7 @@ public class SaleCountDimensionImpl implements DataSummaryService { (existing, replacement) -> existing )); - String querySql = "SELECT QYGS, KCZZ, LB_1, LB_2, LB_3, SQ, CS, QY, SUM(SSJERMB) as YYSR, YEARMONTH" + + String querySql = "SELECT QYGS, KCZZ, LB_1, LB_2, LB_3, SQ, CS, QY, SUM(NMNY) as YYSR, YEARMONTH" + " FROM " + SALES_DETAIL_TABLE + " WHERE DZRQ >= ? AND DZRQ < ? AND BKGS = ?" + " GROUP BY QYGS, KCZZ, LB_1, LB_2, LB_3, SQ, CS, QY, YEARMONTH"; @@ -682,8 +694,8 @@ public class SaleCountDimensionImpl implements DataSummaryService { String querySql = "SELECT QYGS, XSZZ, SHENGQU, SHIQU, QX, QCYE, LJXS, LJHK, YSYE, " + "ZLFX0_60, ZLFX60_1, ZLFX1_2, ZLFX2_3, ZLFX3_4, ZLFX4_5, ZLFX5 " + "FROM " + RECEIVABLE_DETAIL_TABLE + " " + - "WHERE DATE(RQ) = ? AND BKGS = ? "; -// +"LIMIT " + PAGE_SIZE + " OFFSET " + offset; + "WHERE DATE(RQ) = ? AND BKGS = ? " + + "LIMIT " + PAGE_SIZE + " OFFSET " + offset; LOGGER.info("应收账款数据查询第{}页,SQL: {}", page + 1, querySql); List maps = DBSql.getMaps(conn, querySql, lastDayOfMonth, bkgs); @@ -724,7 +736,11 @@ public class SaleCountDimensionImpl implements DataSummaryService { // 批量新增BO if (!bos.isEmpty()) { - SDK.getBOAPI().createDataBO(BO_EU_XS_YSZK, bos, UserContext.fromUID("admin")); + for (int i = 0; i < bos.size(); i += BATCH_SIZE) { + int end = Math.min(bos.size(), i + BATCH_SIZE); + List batchList = bos.subList(i, end); + SDK.getBOAPI().createDataBO(BO_EU_XS_YSZK, batchList, UserContext.fromUID("admin")); + } totalCount += bos.size(); LOGGER.info("应收账款数据第{}页处理完成,本页{}条记录,累计{}条", page + 1, bos.size(), totalCount); } 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 c2b8779..ba1238e 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 @@ -218,13 +218,17 @@ public class SaleDataSyncServiceImpl implements DataSyncService { // 如果时间字段存在,添加时间范围条件 if (timeField != null && !timeField.isEmpty()) { - conditionBuilder.append(" AND TO_DATE(") + conditionBuilder.append("TO_DATE(") .append(timeField) .append(", '") .append(ORACLE_DATE_FORMAT) - .append("') BETWEEN TO_DATE(?, '") + .append("') >= TO_DATE(?, '") .append(ORACLE_DATE_FORMAT) - .append("') AND TO_DATE(?, '") + .append("') AND TO_DATE(") + .append(timeField) + .append(", '") + .append(ORACLE_DATE_FORMAT) + .append("') < TO_DATE(?, '") .append(ORACLE_DATE_FORMAT) .append("')"); @@ -244,9 +248,13 @@ public class SaleDataSyncServiceImpl implements DataSyncService { .append(timeField) .append(", '") .append(ORACLE_DATE_FORMAT) - .append("') BETWEEN TO_DATE(?, '") + .append("') >= TO_DATE(?, '") .append(ORACLE_DATE_FORMAT) - .append("') AND TO_DATE(?, '") + .append("') AND TO_DATE(") + .append(timeField) + .append(", '") + .append(ORACLE_DATE_FORMAT) + .append("') < TO_DATE(?, '") .append(ORACLE_DATE_FORMAT) .append("')"); // 构建排序子句 @@ -801,6 +809,13 @@ public class SaleDataSyncServiceImpl implements DataSyncService { bo.set(key, map.get(key)); } } + //修改产量类型1 + if ("龙牌".equals(map.getString("BKGS")) + && ("装饰石膏板".equals(map.getString("LB_1")) || "鲁班装饰万能板".equals(map.getString("LB_1")))){ + bo.set("LB_1","石膏板"); + } else if ("泰山石膏".equals(map.getString("BKGS")) && ("装饰板".equals(map.getString("LB_1")))) { + bo.set("LB_1","石膏板"); + } bos.add(bo); }