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

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<>();
List<CuRegionAssessDetail> 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);
}

View File

@ -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 &lt;= #{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
) b
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);
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();
}
/**