From 4b7e7440d8ce2d9c4e37a730a9a8d467ea88ebc2 Mon Sep 17 00:00:00 2001 From: llllon Date: Thu, 4 Sep 2025 17:05:44 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E4=BF=AE=E6=94=B9=E6=97=B6=E9=97=B4?= =?UTF-8?q?=E8=8C=83=E5=9B=B4=E5=8F=96=E5=80=BC=202=E3=80=81=E7=89=A9?= =?UTF-8?q?=E6=96=99=E5=88=86=E7=B1=BB=E5=8C=85=E8=A3=85=E6=A1=B6=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/PurchaseDataSyncServiceImpl.class | Bin 28505 -> 28204 bytes .../impl/SaleDataSyncServiceImpl.class | Bin 24718 -> 24830 bytes .../compileJava/previous-compilation-data.bin | Bin 9392465 -> 9392465 bytes .../impl/ProductionDataSyncServiceImpl.java | 72 ++++++++--------- .../impl/PurchaseDataSyncServiceImpl.java | 74 +++++++++--------- .../service/impl/SaleDataSyncServiceImpl.java | 70 ++++++++--------- .../bnbm/datalinkup/util/PurchaseUtil.java | 9 +-- 7 files changed, 111 insertions(+), 114 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/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 6efdef64e152a154b244b5e701962c0be32448fd..f13ea2f0708ff7edaeb96424fd138bfe0313fe5c 100644 GIT binary patch delta 12180 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 Y^jzJ9ulXJJ`sJH``JrF#^UELp500|DR{#J2 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 3882eb818c4a9660dd15229fc4163f5ed3cc3c67..8edb2df80ad43fba967ef81bde93022ca3ebc565 100644 GIT binary patch delta 7464 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 delta 7215 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 OI3_UZ)_SG_C;kJmJ2X%L delta 712 zcmWl|OE8oH0KoCtT6tEVQmn1Dh_WgoL>_r;T0*SX_V#F_#3I6aw&i2dFq+BCP8VaE z91NHG>d?et4^He!W;9#lamqL_W2S@g_nY}S#(&5i9JUCK%`D9y*I)T-JBpv}D+ZU5 z(cj@8d#sZ)s_FS%=Ria8RB(NwE=ixPSNSRYg|G2r%4TQPe|exZH)c?7SZp%UCOdeD zhbgBEkI+@J$=ntzg=%y9=jCsjC7q*bdUY>hQ#2dh=uQuM(u+rVjK?X^nG$F z=S5!PWkxWPR~W@;US$kp8OLjkX9BM?kx5Ku3U4q~GO5$-6T;F|Sy1Zshs=N4K3{9W z?2f3lr!k!w)bb`Xd5bz`F`KuU!(8U^4)a++JquaHVwSL!2Hxd8-sb~8 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 = simpleDateFormat.format(range[0]); @@ -226,17 +242,6 @@ public class ProductionDataSyncServiceImpl implements DataSyncService { // 分区字段和时间字段组合查询条件 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; - } - - String maxPartition = maxPartitionResult.get(0).getString("max_partition"); - LOGGER.info("表[{}]的最大分区为: {}", tableName, maxPartition); // 添加分区条件 conditionBuilder.append(partitionField) @@ -330,17 +335,6 @@ public class ProductionDataSyncServiceImpl implements DataSyncService { StringBuilder conditionBuilder = new StringBuilder(); // 修改点:分区字段和时间字段组合查询条件 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; - } - - String maxPartition = maxPartitionResult.get(0).getString("max_partition"); - LOGGER.info("表[{}]的最大分区为: {}", tableName, maxPartition); // 添加分区条件 conditionBuilder.append(partitionField) @@ -461,7 +455,7 @@ public class ProductionDataSyncServiceImpl implements DataSyncService { } /** - * 将时间范围拆分为多个区间,并确保结束时间包含时间部分以覆盖完整日期 + * 将时间范围拆分为多个区间,确保区间连续且不重叠 * @param startDate 开始时间(yyyy-MM-dd格式,时间部分为00:00:00) * @param endDate 结束时间(yyyy-MM-dd格式,时间部分为00:00:00) * @param daysInterval 间隔天数 @@ -482,22 +476,19 @@ public class ProductionDataSyncServiceImpl implements DataSyncService { Date adjustedEndDate = endCal.getTime(); while (calendar.getTime().before(adjustedEndDate)) { + // 区间开始时间(当前日期的00:00:00) Date rangeStart = calendar.getTime(); - // 增加间隔天数 - calendar.add(Calendar.DAY_OF_MONTH, daysInterval); - Date potentialRangeEnd = calendar.getTime(); + // 增加间隔天数-1天,然后设置为23:59:59作为区间结束时间 + calendar.add(Calendar.DAY_OF_MONTH, daysInterval - 1); + calendar.set(Calendar.HOUR_OF_DAY, 23); + calendar.set(Calendar.MINUTE, 59); + calendar.set(Calendar.SECOND, 59); + calendar.set(Calendar.MILLISECOND, 999); - // 调整区间结束时间为当前日期的23:59:59 - Calendar rangeEndCal = Calendar.getInstance(); - rangeEndCal.setTime(potentialRangeEnd); - rangeEndCal.set(Calendar.HOUR_OF_DAY, 23); - rangeEndCal.set(Calendar.MINUTE, 59); - rangeEndCal.set(Calendar.SECOND, 59); - rangeEndCal.set(Calendar.MILLISECOND, 999); - Date rangeEnd = rangeEndCal.getTime(); + Date rangeEnd = calendar.getTime(); - // 如果调整后的区间结束时间超过最终结束时间,使用调整后的结束时间 + // 如果区间结束时间超过最终结束时间,使用最终结束时间 if (rangeEnd.after(adjustedEndDate)) { rangeEnd = adjustedEndDate; } @@ -505,7 +496,16 @@ public class ProductionDataSyncServiceImpl implements DataSyncService { ranges.add(new Date[]{rangeStart, rangeEnd}); // 准备下一个区间的开始时间:当前区间结束时间的下一天00:00:00 - calendar.add(Calendar.MILLISECOND, 1); + calendar.add(Calendar.MILLISECOND, 1); // 加1毫秒到下一天 + calendar.set(Calendar.HOUR_OF_DAY, 0); + calendar.set(Calendar.MINUTE, 0); + calendar.set(Calendar.SECOND, 0); + calendar.set(Calendar.MILLISECOND, 0); + + // 如果已经达到或超过结束时间,则退出循环 + if (calendar.getTime().after(adjustedEndDate)) { + break; + } } return ranges; } 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 9aacf52..c5477ca 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 @@ -243,6 +243,21 @@ public class PurchaseDataSyncServiceImpl implements DataSyncService { 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 = simpleDateFormat.format(range[0]); @@ -257,17 +272,6 @@ public class PurchaseDataSyncServiceImpl implements DataSyncService { // 分区字段和时间字段组合查询条件 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; - } - - String maxPartition = maxPartitionResult.get(0).getString("max_partition"); - LOGGER.info("表[{}]的最大分区为: {}", tableName, maxPartition); // 添加分区条件 conditionBuilder.append(partitionField) @@ -360,17 +364,6 @@ public class PurchaseDataSyncServiceImpl implements DataSyncService { StringBuilder conditionBuilder = new StringBuilder(); // 修改点:分区字段和时间字段组合查询条件 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; - } - - String maxPartition = maxPartitionResult.get(0).getString("max_partition"); - LOGGER.info("表[{}]的最大分区为: {}", tableName, maxPartition); // 添加分区条件 conditionBuilder.append(partitionField) @@ -444,7 +437,7 @@ public class PurchaseDataSyncServiceImpl implements DataSyncService { } /** - * 将时间范围拆分为多个区间,并确保结束时间包含时间部分以覆盖完整日期 + * 将时间范围拆分为多个区间,确保区间连续且不重叠 * @param startDate 开始时间(yyyy-MM-dd格式,时间部分为00:00:00) * @param endDate 结束时间(yyyy-MM-dd格式,时间部分为00:00:00) * @param daysInterval 间隔天数 @@ -465,22 +458,19 @@ public class PurchaseDataSyncServiceImpl implements DataSyncService { Date adjustedEndDate = endCal.getTime(); while (calendar.getTime().before(adjustedEndDate)) { + // 区间开始时间(当前日期的00:00:00) Date rangeStart = calendar.getTime(); - // 增加间隔天数 - calendar.add(Calendar.DAY_OF_MONTH, daysInterval); - Date potentialRangeEnd = calendar.getTime(); + // 增加间隔天数-1天,然后设置为23:59:59作为区间结束时间 + calendar.add(Calendar.DAY_OF_MONTH, daysInterval - 1); + calendar.set(Calendar.HOUR_OF_DAY, 23); + calendar.set(Calendar.MINUTE, 59); + calendar.set(Calendar.SECOND, 59); + calendar.set(Calendar.MILLISECOND, 999); - // 调整区间结束时间为当前日期的23:59:59 - Calendar rangeEndCal = Calendar.getInstance(); - rangeEndCal.setTime(potentialRangeEnd); - rangeEndCal.set(Calendar.HOUR_OF_DAY, 23); - rangeEndCal.set(Calendar.MINUTE, 59); - rangeEndCal.set(Calendar.SECOND, 59); - rangeEndCal.set(Calendar.MILLISECOND, 999); - Date rangeEnd = rangeEndCal.getTime(); + Date rangeEnd = calendar.getTime(); - // 如果调整后的区间结束时间超过最终结束时间,使用调整后的结束时间 + // 如果区间结束时间超过最终结束时间,使用最终结束时间 if (rangeEnd.after(adjustedEndDate)) { rangeEnd = adjustedEndDate; } @@ -488,7 +478,16 @@ public class PurchaseDataSyncServiceImpl implements DataSyncService { ranges.add(new Date[]{rangeStart, rangeEnd}); // 准备下一个区间的开始时间:当前区间结束时间的下一天00:00:00 - calendar.add(Calendar.MILLISECOND, 1); + calendar.add(Calendar.MILLISECOND, 1); // 加1毫秒到下一天 + calendar.set(Calendar.HOUR_OF_DAY, 0); + calendar.set(Calendar.MINUTE, 0); + calendar.set(Calendar.SECOND, 0); + calendar.set(Calendar.MILLISECOND, 0); + + // 如果已经达到或超过结束时间,则退出循环 + if (calendar.getTime().after(adjustedEndDate)) { + break; + } } return ranges; } @@ -820,7 +819,8 @@ public class PurchaseDataSyncServiceImpl implements DataSyncService { || StringUtils.isNotBlank(jldw) || StringUtils.isNotBlank(wlfl)) { try { - newWlmc = purchaseUtil.materialClassificationFiltering(bkgs, wlmc, wlbm, jldw, djhyf, wlfl); + newWlmc = purchaseUtil.materialClassificationFiltering(bkgs.trim(), + wlmc.trim(), wlbm.trim(), jldw.trim(), djhyf, wlfl.trim()); } catch (Exception e) { e.printStackTrace(); } 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 2a0f14c..f089e17 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 @@ -187,6 +187,20 @@ public class SaleDataSyncServiceImpl implements DataSyncService { // 计算时间范围并拆分为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); @@ -202,17 +216,6 @@ public class SaleDataSyncServiceImpl implements DataSyncService { // 分区字段和时间字段组合查询条件 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; - } - - String maxPartition = maxPartitionResult.get(0).getString("max_partition"); - LOGGER.info("表[{}]的最大分区为: {}", tableName, maxPartition); // 添加分区条件 conditionBuilder.append(partitionField) @@ -306,17 +309,6 @@ public class SaleDataSyncServiceImpl implements DataSyncService { StringBuilder conditionBuilder = new StringBuilder(); // 修改点:分区字段和时间字段组合查询条件 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; - } - - String maxPartition = maxPartitionResult.get(0).getString("max_partition"); - LOGGER.info("表[{}]的最大分区为: {}", tableName, maxPartition); // 添加分区条件 conditionBuilder.append(partitionField) @@ -443,7 +435,7 @@ public class SaleDataSyncServiceImpl implements DataSyncService { } /** - * 将时间范围拆分为多个区间,并确保结束时间包含时间部分以覆盖完整日期 + * 将时间范围拆分为多个区间,确保区间连续且不重叠 * @param startDate 开始时间(yyyy-MM-dd格式,时间部分为00:00:00) * @param endDate 结束时间(yyyy-MM-dd格式,时间部分为00:00:00) * @param daysInterval 间隔天数 @@ -464,22 +456,19 @@ public class SaleDataSyncServiceImpl implements DataSyncService { Date adjustedEndDate = endCal.getTime(); while (calendar.getTime().before(adjustedEndDate)) { + // 区间开始时间(当前日期的00:00:00) Date rangeStart = calendar.getTime(); - // 增加间隔天数 - calendar.add(Calendar.DAY_OF_MONTH, daysInterval); - Date potentialRangeEnd = calendar.getTime(); + // 增加间隔天数-1天,然后设置为23:59:59作为区间结束时间 + calendar.add(Calendar.DAY_OF_MONTH, daysInterval - 1); + calendar.set(Calendar.HOUR_OF_DAY, 23); + calendar.set(Calendar.MINUTE, 59); + calendar.set(Calendar.SECOND, 59); + calendar.set(Calendar.MILLISECOND, 999); - // 调整区间结束时间为当前日期的23:59:59 - Calendar rangeEndCal = Calendar.getInstance(); - rangeEndCal.setTime(potentialRangeEnd); - rangeEndCal.set(Calendar.HOUR_OF_DAY, 23); - rangeEndCal.set(Calendar.MINUTE, 59); - rangeEndCal.set(Calendar.SECOND, 59); - rangeEndCal.set(Calendar.MILLISECOND, 999); - Date rangeEnd = rangeEndCal.getTime(); + Date rangeEnd = calendar.getTime(); - // 如果调整后的区间结束时间超过最终结束时间,使用调整后的结束时间 + // 如果区间结束时间超过最终结束时间,使用最终结束时间 if (rangeEnd.after(adjustedEndDate)) { rangeEnd = adjustedEndDate; } @@ -487,7 +476,16 @@ public class SaleDataSyncServiceImpl implements DataSyncService { ranges.add(new Date[]{rangeStart, rangeEnd}); // 准备下一个区间的开始时间:当前区间结束时间的下一天00:00:00 - calendar.add(Calendar.MILLISECOND, 1); + calendar.add(Calendar.MILLISECOND, 1); // 加1毫秒到下一天 + calendar.set(Calendar.HOUR_OF_DAY, 0); + calendar.set(Calendar.MINUTE, 0); + calendar.set(Calendar.SECOND, 0); + calendar.set(Calendar.MILLISECOND, 0); + + // 如果已经达到或超过结束时间,则退出循环 + if (calendar.getTime().after(adjustedEndDate)) { + break; + } } return ranges; } diff --git a/com.awspaas.user.apps.bnbm.datalinkup/com.awspaas.user.apps.bnbm.datalinkup/src/main/java/com/awspaas/user/apps/bnbm/datalinkup/util/PurchaseUtil.java b/com.awspaas.user.apps.bnbm.datalinkup/com.awspaas.user.apps.bnbm.datalinkup/src/main/java/com/awspaas/user/apps/bnbm/datalinkup/util/PurchaseUtil.java index 08e6825..8e3e6b8 100644 --- a/com.awspaas.user.apps.bnbm.datalinkup/com.awspaas.user.apps.bnbm.datalinkup/src/main/java/com/awspaas/user/apps/bnbm/datalinkup/util/PurchaseUtil.java +++ b/com.awspaas.user.apps.bnbm.datalinkup/com.awspaas.user.apps.bnbm.datalinkup/src/main/java/com/awspaas/user/apps/bnbm/datalinkup/util/PurchaseUtil.java @@ -79,14 +79,13 @@ public class PurchaseUtil { newWlmc = "包装桶"; } else if ("北新防水".equals(bkgs) && wlmc.contains("桶") && jldw.contains("个")) { newWlmc = "包装桶"; - } else if ("北新嘉宝莉".equals(bkgs) && wlmc.contains("盖") && djhyf < 5.0) { + } else if ("北新嘉宝莉".equals(bkgs) && wlmc.contains("盖") && !wlmc.contains("桶") && !wlmc.contains("罐") && djhyf < 3.5) { newWlmc = "桶盖"; - } else if ("北新嘉宝莉".equals(bkgs) && wlmc.contains("桶身")) { + } else if ("北新嘉宝莉".equals(bkgs) && wlmc.contains("桶身") && jldw.equals("个")) { newWlmc = "包装桶"; - } else if ("北新嘉宝莉".equals(bkgs) && wlmc.contains("桶") && jldw.contains("个")) { + } else if ("北新嘉宝莉".equals(bkgs) && wlmc.contains("桶") && !wlmc.contains("桶身") && djhyf>3.5 && jldw.equals("个")) { newWlmc = "包装桶"; - } else if ("北新嘉宝莉".equals(bkgs) && wlmc.contains("罐") - && !wlmc.contains("箱") && wlfl.contains("包装物") && jldw.equals("个")) { + } else if ("北新嘉宝莉".equals(bkgs) && wlmc.contains("罐") && !wlmc.contains("箱") && jldw.equals("个")) { newWlmc = "包装桶"; } else { newWlmc = wlmc;