## 区域月度考核数据处理;

This commit is contained in:
cabbage 2025-07-03 17:41:53 +08:00
parent 7a9e91e218
commit 75f4633805
3 changed files with 75 additions and 34 deletions

View File

@ -70,28 +70,59 @@ public class CuRegionAssessServiceImpl extends ServiceImpl<CuRegionAssessMapper,
Map<Long, CuRegionAssess> regionAssessMap = new HashMap<>(); Map<Long, CuRegionAssess> regionAssessMap = new HashMap<>();
List<CuRegionAssessDetail> regionAssessDetailList = new ArrayList<>(); List<CuRegionAssessDetail> regionAssessDetailList = new ArrayList<>();
for (CuMemberRetailRegion cuMemberRetailRegion : memberRetailRegionList) { for (CuMemberRetailRegion cuMemberRetailRegion : memberRetailRegionList) {
CuRegionAssess cuRegionAssess = CuRegionAssess.builder()
.pkMember(cuMemberRetailRegion.getPkMember()) if (null != cuMemberRetailRegion.getEffectiveEndDate()) {
.pkRegion(cuMemberRetailRegion.getPkId()) // 设置过生效结束时间
.assessPeriod(1) CuRegionAssess cuRegionAssess = CuRegionAssess.builder()
.assessStartDate(assessDate) .pkMember(cuMemberRetailRegion.getPkMember())
.assessEndDate(DateUtils.currentMonthFirstDate(DateUtils.afterMonthDate(5, assessDate))) .pkRegion(cuMemberRetailRegion.getPkId())
.source(cuMemberRetailRegion.getSource()) .assessPeriod(1)
.build(); .assessStartDate(assessDate)
cuRegionAssess.setPkCreator(MagicNumberConstants.PK_ADMIN); // 考核结束期
cuRegionAssess.setPkCountry(cuMemberRetailRegion.getPkCountry()); .assessEndDate(DateUtils.currentMonthFirstDate(DateUtils.afterMonthDate(1, cuMemberRetailRegion.getEffectiveEndDate())))
regionAssessMap.put(cuRegionAssess.getPkMember(), cuRegionAssess); .source(cuMemberRetailRegion.getSource())
// 保存明细
for (int i = 0; i < 6; i++) {
CuRegionAssessDetail cuRegionAssessDetail = CuRegionAssessDetail.builder()
.pkRegionAssess(cuRegionAssess.getPkMember())
.assessDate(DateUtils.afterMonthDate(i, assessDate))
.pkMember(cuRegionAssess.getPkMember())
.build(); .build();
cuRegionAssessDetail.setPkCreator(MagicNumberConstants.PK_ADMIN); cuRegionAssess.setPkCreator(MagicNumberConstants.PK_ADMIN);
cuRegionAssessDetail.setPkCountry(cuMemberRetailRegion.getPkCountry()); cuRegionAssess.setPkCountry(cuMemberRetailRegion.getPkCountry());
regionAssessDetailList.add(cuRegionAssessDetail); 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); saveCuRegionAssess(regionAssessMap, regionAssessDetailList);
} }

View File

@ -55,11 +55,29 @@
from cu_region_assess_detail cd from cu_region_assess_detail cd
inner join cu_region_assess ca inner join cu_region_assess ca
on cd.pk_region_assess = ca.pk_id 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 where cd.ASSESS_STATUS = 0
and cd.del_flag = 0 and cd.del_flag = 0
and ca.del_flag = 0 and ca.del_flag = 0
and ca.assess_start_date &lt;= #{assessDate,jdbcType=DATE} and ca.assess_start_date &lt;= #{assessDate,jdbcType=DATE}
and ca.assess_end_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
<!-- 手动开通的只查询手效期前6个月的数据 -->
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 group by cd.pk_region_assess
) b ) b
on (a.pk_id = b.pk_region_assess) on (a.pk_id = b.pk_region_assess)

View File

@ -535,24 +535,16 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils {
LocalDate today = getLocalDate(date); LocalDate today = getLocalDate(date);
return ((Long) toLocalDate(date1).until(today, ChronoUnit.DAYS)).intValue(); return ((Long) toLocalDate(date1).until(today, ChronoUnit.DAYS)).intValue();
} }
/** /**
* 计算2个日期之间的天数 * 获得2个日期总共差的天数
* *
* @param date1 日期 * @param date1 第一个日期
* @param date 日期2 * @param date 第二个日期
* @return Integer * @return Integer
*/ */
public static Boolean betweenMonth(Date date1, Date... date) { public static Integer betweenMonth(Date date1, Date... date) {
LocalDate localDate = LocalDate.now(); LocalDate today = getLocalDate(date);
if (date.length > 0) { return ((Long) toLocalDate(date1).until(today, ChronoUnit.MONTHS)).intValue();
localDate = toLocalDate(date[0]);
}
LocalDate localDate1 = toLocalDate(date1);
if (localDate.getMonth() == localDate1.getMonth()) {
return Boolean.TRUE;
}
return Boolean.FALSE;
} }
/** /**