From bd7d788769dfebb23f594aafc86089917e39e151 Mon Sep 17 00:00:00 2001 From: cabbage <281119120@qq.com> Date: Thu, 3 Jul 2025 17:41:53 +0800 Subject: [PATCH] =?UTF-8?q?##=20=E5=8C=BA=E5=9F=9F=E6=9C=88=E5=BA=A6?= =?UTF-8?q?=E8=80=83=E6=A0=B8=E6=95=B0=E6=8D=AE=E5=A4=84=E7=90=86=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/CuRegionAssessServiceImpl.java | 71 +++++++++++++------ .../bonus/detail/CuRegionAssessMapper.xml | 18 +++++ .../com/hzs/common/core/utils/DateUtils.java | 20 ++---- 3 files changed, 75 insertions(+), 34 deletions(-) diff --git a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/detail/service/impl/CuRegionAssessServiceImpl.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/detail/service/impl/CuRegionAssessServiceImpl.java index 3541c7a1..7addfb78 100644 --- a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/detail/service/impl/CuRegionAssessServiceImpl.java +++ b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/detail/service/impl/CuRegionAssessServiceImpl.java @@ -70,28 +70,59 @@ public class CuRegionAssessServiceImpl extends ServiceImpl regionAssessMap = new HashMap<>(); List regionAssessDetailList = new ArrayList<>(); for (CuMemberRetailRegion cuMemberRetailRegion : memberRetailRegionList) { - CuRegionAssess cuRegionAssess = CuRegionAssess.builder() - .pkMember(cuMemberRetailRegion.getPkMember()) - .pkRegion(cuMemberRetailRegion.getPkId()) - .assessPeriod(1) - .assessStartDate(assessDate) - .assessEndDate(DateUtils.currentMonthFirstDate(DateUtils.afterMonthDate(5, assessDate))) - .source(cuMemberRetailRegion.getSource()) - .build(); - cuRegionAssess.setPkCreator(MagicNumberConstants.PK_ADMIN); - cuRegionAssess.setPkCountry(cuMemberRetailRegion.getPkCountry()); - regionAssessMap.put(cuRegionAssess.getPkMember(), cuRegionAssess); - // 保存明细 - for (int i = 0; i < 6; i++) { - CuRegionAssessDetail cuRegionAssessDetail = CuRegionAssessDetail.builder() - .pkRegionAssess(cuRegionAssess.getPkMember()) - .assessDate(DateUtils.afterMonthDate(i, assessDate)) - .pkMember(cuRegionAssess.getPkMember()) + + if (null != cuMemberRetailRegion.getEffectiveEndDate()) { + // 设置过生效结束时间 + CuRegionAssess cuRegionAssess = CuRegionAssess.builder() + .pkMember(cuMemberRetailRegion.getPkMember()) + .pkRegion(cuMemberRetailRegion.getPkId()) + .assessPeriod(1) + .assessStartDate(assessDate) + // 考核结束期 + .assessEndDate(DateUtils.currentMonthFirstDate(DateUtils.afterMonthDate(1, cuMemberRetailRegion.getEffectiveEndDate()))) + .source(cuMemberRetailRegion.getSource()) .build(); - cuRegionAssessDetail.setPkCreator(MagicNumberConstants.PK_ADMIN); - cuRegionAssessDetail.setPkCountry(cuMemberRetailRegion.getPkCountry()); - regionAssessDetailList.add(cuRegionAssessDetail); + cuRegionAssess.setPkCreator(MagicNumberConstants.PK_ADMIN); + cuRegionAssess.setPkCountry(cuMemberRetailRegion.getPkCountry()); + regionAssessMap.put(cuRegionAssess.getPkMember(), cuRegionAssess); + while (assessDate.compareTo(cuRegionAssess.getAssessEndDate()) <= 0) { + CuRegionAssessDetail cuRegionAssessDetail = CuRegionAssessDetail.builder() + .pkRegionAssess(cuRegionAssess.getPkMember()) + .assessDate(assessDate) + .pkMember(cuRegionAssess.getPkMember()) + .build(); + cuRegionAssessDetail.setPkCreator(MagicNumberConstants.PK_ADMIN); + cuRegionAssessDetail.setPkCountry(cuMemberRetailRegion.getPkCountry()); + regionAssessDetailList.add(cuRegionAssessDetail); + + assessDate = DateUtils.afterMonthDate(1, assessDate); + } + } else { + CuRegionAssess cuRegionAssess = CuRegionAssess.builder() + .pkMember(cuMemberRetailRegion.getPkMember()) + .pkRegion(cuMemberRetailRegion.getPkId()) + .assessPeriod(1) + .assessStartDate(assessDate) + // 考核结束期 + .assessEndDate(DateUtils.currentMonthFirstDate(DateUtils.afterMonthDate(5, assessDate))) + .source(cuMemberRetailRegion.getSource()) + .build(); + cuRegionAssess.setPkCreator(MagicNumberConstants.PK_ADMIN); + cuRegionAssess.setPkCountry(cuMemberRetailRegion.getPkCountry()); + regionAssessMap.put(cuRegionAssess.getPkMember(), cuRegionAssess); + // 保存明细 + for (int i = 0; i < 6; i++) { + CuRegionAssessDetail cuRegionAssessDetail = CuRegionAssessDetail.builder() + .pkRegionAssess(cuRegionAssess.getPkMember()) + .assessDate(DateUtils.afterMonthDate(i, assessDate)) + .pkMember(cuRegionAssess.getPkMember()) + .build(); + cuRegionAssessDetail.setPkCreator(MagicNumberConstants.PK_ADMIN); + cuRegionAssessDetail.setPkCountry(cuMemberRetailRegion.getPkCountry()); + regionAssessDetailList.add(cuRegionAssessDetail); + } } + } saveCuRegionAssess(regionAssessMap, regionAssessDetailList); } diff --git a/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/detail/CuRegionAssessMapper.xml b/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/detail/CuRegionAssessMapper.xml index 60e3a2bb..94f79635 100644 --- a/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/detail/CuRegionAssessMapper.xml +++ b/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/detail/CuRegionAssessMapper.xml @@ -55,11 +55,29 @@ from cu_region_assess_detail cd inner join cu_region_assess ca on cd.pk_region_assess = ca.pk_id + inner join cu_member_retail_region cmrr + on cmrr.pk_id = ca.pk_region where cd.ASSESS_STATUS = 0 and cd.del_flag = 0 and ca.del_flag = 0 and ca.assess_start_date <= #{assessDate,jdbcType=DATE} and ca.assess_end_date >= #{assessDate,jdbcType=DATE} + and cmrr.del_flag = 0 + and cmrr.effective_end_date is null + group by cd.pk_region_assess + union + + select cd.pk_region_assess, sum(1) REACH_NUM + from cu_region_assess_detail cd + inner join cu_region_assess ca + on cd.pk_region_assess = ca.pk_id + inner join CU_MEMBER_RETAIL_REGION cmrr + on cmrr.pk_id = ca.pk_region + where cd.del_flag = 0 + and ca.del_flag = 0 + and cmrr.del_flag = 0 + and cmrr.effective_end_date is not null + and cd.assess_date > ADD_MONTHS(cmrr.effective_end_date, -6) group by cd.pk_region_assess ) b on (a.pk_id = b.pk_region_assess) diff --git a/bd-common/bd-common-core/src/main/java/com/hzs/common/core/utils/DateUtils.java b/bd-common/bd-common-core/src/main/java/com/hzs/common/core/utils/DateUtils.java index 09db41a3..ddae36e6 100644 --- a/bd-common/bd-common-core/src/main/java/com/hzs/common/core/utils/DateUtils.java +++ b/bd-common/bd-common-core/src/main/java/com/hzs/common/core/utils/DateUtils.java @@ -535,24 +535,16 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils { LocalDate today = getLocalDate(date); return ((Long) toLocalDate(date1).until(today, ChronoUnit.DAYS)).intValue(); } - /** - * 计算2个日期之间的天数 + * 获得2个日期总共差的天数 * - * @param date1 日期 - * @param date 日期2 + * @param date1 第一个日期 + * @param date 第二个日期 * @return Integer */ - public static Boolean betweenMonth(Date date1, Date... date) { - LocalDate localDate = LocalDate.now(); - if (date.length > 0) { - localDate = toLocalDate(date[0]); - } - LocalDate localDate1 = toLocalDate(date1); - if (localDate.getMonth() == localDate1.getMonth()) { - return Boolean.TRUE; - } - return Boolean.FALSE; + public static Integer betweenMonth(Date date1, Date... date) { + LocalDate today = getLocalDate(date); + return ((Long) toLocalDate(date1).until(today, ChronoUnit.MONTHS)).intValue(); } /**