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 8df70bf..f196b6d 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/controller/DataLinkUpController.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/controller/DataLinkUpController.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/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 86d3d18..6e0cf3a 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/DataSyncService.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/DataSyncService.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 8f2d392..e3c6ca1 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 fa2de38..37b7665 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 13c1131..e736c7f 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 8caaf45..6ba84fb 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/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 8b380ac..f6f725a 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 @@ -388,6 +388,7 @@ public class DataLinkUpController { LOGGER.info("汇总板块数据——采购的接口"); }else { LOGGER.error("{}当前表没有汇总表",ssyw); + return ro.err(ssyw+"当前表没有汇总表"); } LOGGER.info("即将同步的数据:{}",plate); @@ -437,7 +438,11 @@ public class DataLinkUpController { // 根据时间范围增加数据分页查询数据存储到BO_EU_BNBM_DATALINKUP_XS_XSL_HZ // 按时间范围分页迁移数据到汇总表 long summarizeStartTime = System.currentTimeMillis(); - dataSyncService.summarizeScopeData(targetTable, startDate, endDate, targetTimeField, hzb); +// if (tablename.equals("应收表")){ +// dataSyncService.summarizeScopeDataYs(targetTable, startDate, endDate, targetTimeField, hzb); +// }else { + dataSyncService.summarizeScopeData(targetTable, startDate, endDate, targetTimeField, hzb); +// } LOGGER.info("范围数据汇总完成,耗时:{}ms", System.currentTimeMillis() - summarizeStartTime); } LOGGER.info("【完成处理】配置项[{}],板块:{},总耗时:{}ms", 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 0711a6d..6d706d0 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 @@ -100,4 +100,13 @@ public interface DataSyncService { * @return 转换后的BO对象 */ BO convertFields(RowMap source, List mappings); + + /** + * 应收将范围内数据汇总 + * @param targetTable + * @param startDate + * @param endDate + * @param targetTimeField + */ + void summarizeScopeDataYs(String targetTable, Date startDated, Date endDated, String targetTimeField, String hzb); } \ No newline at end of file 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 2f424a4..5d54136 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 @@ -797,4 +797,9 @@ public class ProductionDataSyncServiceImpl implements DataSyncService { hzb, PAGE_SIZE, e.getMessage(), e); } } + + @Override + public 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/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 efb023a..d348738 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 @@ -169,29 +169,28 @@ public class PurchaseDataSummaryServiceImpl implements DataSummaryService { detailBO.set("WLMC", wlmc); // 物料名称 detailBO.set("GGXH", row.getString("GGXH")); // 规格型号 detailBO.set("GC", row.getString("SLGC")); // 收料工厂 - // 处理入库数量,防止空值 Double rksl = row.getDouble("RKSL"); detailBO.set("RKSL", rksl != null ? rksl : 0.0); // 入库数量 - detailBO.set("DW", row.getString("JLDW")); // 单位 - // 处理单价和金额,添加除零检查 - Double jshjhyf = row.getDouble("JSHJHYF"); - double rkdj = 0.0; - if (jshjhyf != null && jshjhyf != 0 && rksl != null && rksl != 0) { - rkdj = jshjhyf / rksl; - } - detailBO.set("RKDJ", rkdj); // 入库单价 - if ("泰山石膏".equals(bkgs)) { - Double dhje = row.getDouble("DHJE"); - detailBO.set("RKJE", dhje != null ? dhje : 0.0); // 入库金额 + Double dhje = row.getDouble("DHJE"); + double rkdj = 0.0; + if (dhje != null && dhje != 0 && rksl != null && rksl != 0) { + rkdj = dhje / rksl; + } + detailBO.set("RKDJ", rkdj); // 入库单价 + detailBO.set("RKJE", dhje != null ? dhje : 0.0); // 入库单价 } else { -// Double jshjhyf = row.getDouble("JSHJHYF"); + Double jshjhyf = row.getDouble("JSHJHYF"); + double rkdj = 0.0; + if (jshjhyf != null && jshjhyf != 0 && rksl != null && rksl != 0) { + rkdj = jshjhyf / rksl; + } + detailBO.set("RKDJ", rkdj); // 入库单价 detailBO.set("RKJE", jshjhyf != null ? jshjhyf : 0.0); // 入库金额 } - detailBO.set("GYS", row.getString("GYSNAME")); // 供应商 detailBO.set("DDBH", row.getString("CGDDH")); // 订单编号 detailBO.set("KCS", 0.00); // 库存数(默认为0,需后续计算) 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 0eedcf9..85b90b8 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 @@ -895,6 +895,17 @@ public class PurchaseDataSyncServiceImpl implements DataSyncService { && !allowedSuppliers.contains(bkgs)) { continue; } + if (bkgs.equals("北新嘉宝莉")){ + Double thsl = bo.get("THSL",Double.class); + double thsl2 = thsl!=null?thsl:0.0; + Double rkslDou = bo.get("RKSL", Double.class); + double rkslDou2 = rkslDou!=null?rkslDou:0.0; + if (rkslDou2==0.0){ + bo.set("RKSL",rkslDou2-thsl2); + }else { + bo.set("RKSL",rkslDou2-thsl2); + } + } } bos.add(bo); } @@ -912,4 +923,9 @@ public class PurchaseDataSyncServiceImpl implements DataSyncService { e.printStackTrace(); } } + + @Override + public 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/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 322a1ef..c3c23e0 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 @@ -868,4 +868,140 @@ public class SaleDataSyncServiceImpl implements DataSyncService { } } + /** + * 汇总各板块销售数据汇总 + * @param targetTable 落地表字段 + * @param startDated 开始时间 + * @param endDated 结束时间 + * @param targetTimeField 时间范围字段 + * @param hzb 汇总表 + */ + @Override + public void summarizeScopeDataYs(String targetTable, Date startDated, Date endDated, String targetTimeField, String hzb) { + int pageNo = 1; + boolean hasMore; + String pageSql = ""; + List pageData = null; + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + String startDate = ""; + String endDate = ""; + // 查询梦牌区域 + List mpqyList = SDK.getBOAPI().query("BO_EU_DATALINKUP_QYGSED").addQuery("BKGS = ", "梦牌").list(); + // 查询龙牌区域 + List lpqyList = SDK.getBOAPI().query("BO_EU_QYGX").list(); + try { + do { + // 构建查询每月最大日期的SQL + String maxDateSubQuery = "SELECT MAX(DATE(" + targetTimeField + ")) as max_date " + + "FROM " + targetTable + + " WHERE DATE_FORMAT(" + targetTimeField + ", '%Y-%m') = " + + "DATE_FORMAT(t." + targetTimeField + ", '%Y-%m')"; + if (startDated == null || endDated == null) { + pageSql = "SELECT t.* FROM " + targetTable + " t " + + "WHERE DATE(t." + targetTimeField + ") = (" + maxDateSubQuery + ") " + + "ORDER BY t.ID LIMIT " + PAGE_SIZE + " OFFSET " + (pageNo - 1) * PAGE_SIZE; + pageData = DBSql.getMaps(pageSql); + } else { + startDate = simpleDateFormat.format(startDated); + endDate = simpleDateFormat.format(endDated); + pageSql = "SELECT t.* FROM " + targetTable + " t " + + "WHERE t." + targetTimeField + " BETWEEN '" + startDate + "' AND '" + endDate + "' " + + "AND DATE(t." + targetTimeField + ") = (" + maxDateSubQuery + ") " + + "ORDER BY t.ID LIMIT " + PAGE_SIZE + " OFFSET " + (pageNo - 1) * PAGE_SIZE; + LOGGER.info("执行查询的sql:{}", pageSql); + pageData = DBSql.getMaps(pageSql); + } + + if (pageData.isEmpty()) break; + + List bos = new ArrayList<>(); + for (RowMap map : pageData) { + BO bo = new BO(); + if ("梦牌".equals(map.getString("BKGS")) && "梦牌新材料(平邑)有限公司".equals(map.getString("XSZZ"))){ + continue; + } + if ("北新防水".equals(map.getString("BKGS")) && "否".equals(map.getString("F_SFNBJY")) + && !map.getString("XSZZ").equals("北新防水工程(辽宁)有限公司") + && !map.getString("XSZZ").equals("北新防水工程(四川)有限公司")){ + continue; + } + // 复制所有字段(排除系统字段) + for (String key : map.keySet()) { + if (!key.equalsIgnoreCase("ID") && + !key.equalsIgnoreCase("ORGID") && + !key.equalsIgnoreCase("CREATEDATE") && + !key.equalsIgnoreCase("CREATEUSER") && + !key.equalsIgnoreCase("UPDATEDATE") && + !key.equalsIgnoreCase("UPDATEUSER") && + !key.equalsIgnoreCase("ISEND") && + !key.equalsIgnoreCase("BINDID")) { + if (StringUtils.isNotBlank(targetTimeField)) { + String targetTimeField1 = map.getString(targetTimeField); + Date parse = UtilDate.parse(targetTimeField1); + int year = UtilDate.getYear(parse); + String monthFormat = UtilDate.monthFormat(parse); + int day = UtilDate.getDay(parse); + bo.set("YEARMONTH", year + monthFormat); + bo.set("YEAR", year); + bo.set("MONTH", monthFormat); + bo.set("DAY", day); + } + bo.set(key, map.get(key)); + } + } + //销售汇总表修改区域公司 + if ("梦牌".equals(bo.getString("BKGS"))) { + String cs = StringUtils.isBlank(bo.getString("CS"))?"":bo.getString("CS"); + String sq = StringUtils.isBlank(bo.getString("SQ"))?"":bo.getString("SQ"); + boolean found = false; // 标记是否找到匹配 + for (BO bo1 : mpqyList) { + String ss = bo1.getString("SS"); + if (ss.contains(cs)) { + bo.set("QYGS", bo1.getString("QYGS")); + found = true; + break; // 找到后立即跳出循环 + } else if (ss.contains(sq)) { + bo.set("QYGS", bo1.getString("QYGS")); + found = true; + break; // 找到后立即跳出循环 + } + } + if (!found) { + bo.set("QYGS", "其他"); // 循环结束后仍未找到则设為"其他" + } + }else if ("龙牌".equals(bo.getString("BKGS"))){ + String xszz = StringUtils.isBlank(bo.getString("XSZZ"))?"":bo.getString("XSZZ"); + boolean found = false; // 标记是否找到匹配 + // 修改龙牌的区域公司 + for (BO bo1 : lpqyList) { + String swfb = bo1.getString("SWFB"); + String[] split = swfb.split(","); + String qygs = bo1.getString("QYGS"); + for (String s : split) { + if (xszz.equals(s)){ + bo.set("QYGS",qygs); + found = true; + } + } + } + if (!found) { + bo.set("QYGS", "其他"); // 循环结束后仍未找到则设為"其他" + } + } + bos.add(bo); + } + + SDK.getBOAPI().createDataBO(hzb, bos, UserContext.fromUID("admin")); + LOGGER.info("已迁移{}条数据到汇总表(页号: {},时间范围: {} - {})", + bos.size(), pageNo, startDate, endDate); + + hasMore = pageData.size() == PAGE_SIZE; + pageNo++; + } while (hasMore); + }catch (Exception e){ + LOGGER.error("汇总数据失败 [汇总表={}, 第几页={}]: {}", + hzb, PAGE_SIZE, e.getMessage(), e); + } + } + } \ No newline at end of file