Merge remote-tracking branch 'origin/dev' into dev

This commit is contained in:
sangelxiu1 2025-07-01 15:21:05 +08:00
commit d00a640aa9
17 changed files with 278 additions and 388 deletions

View File

@ -5,11 +5,7 @@ import com.hzs.common.core.domain.R;
import java.util.List;
/**
* @Description: 新零售会员dubbo服务
* @Author: jiang chao
* @Time: 2024/12/31 13:40
* @Classname: IMemberRetailApi
* @PackageName: com.hzs.retail.member
* 新零售会员dubbo服务
*/
public interface IMemberRetailApi {
@ -20,7 +16,6 @@ public interface IMemberRetailApi {
*/
R<?> checkRegion();
/**
* 取消收益区域
*

View File

@ -8,78 +8,51 @@ import java.util.Date;
import java.util.List;
/**
* <p>
* 新零售会员区域考核明细表 Mapper 接口
* </p>
*
* @author hzs
* @since 2025-01-13
*/
public interface CuRegionAssessDetailMapper extends BaseMapper<CuRegionAssessDetail> {
/*
* @description: 考核开始日期
* @author: sui q
* @date: 2025/1/13 17:13
* @param: null null
* 考核开始日期
**/
void deleteAssessRegionDetailByDate(@Param("assessStartDate") Date assessStartDate, @Param("assessPeriod") Integer assessPeriod);
/*
* @description: 删除重复的数据
* @author: sui q
* @date: 2025/1/15 16:11
* @param: null null
* 删除重复的数据
**/
void updateAssessRegionDetailByDate(@Param("assessStartDate") Date assessStartDate, @Param("assessEndDate") Date assessEndDate);
/**
* 批量生成考核明细seq
*
* @param rowNum
* @return
*/
List<Long> batchQueryCuRegionAssessDetailSeq(Integer rowNum);
/*
* @description: 批量插入区域考核数据
* @author: sui q
* @date: 2025/1/14 14:31
* @param: null null
* 批量插入区域考核数据
**/
void batchInsertCuRegionAssessDetail(@Param("cuRegionAssessDetailList") List<?> cuRegionAssessDetailList);
/*
* @description: 根据上月数据更新考核明细数据
* @author: sui q
* @date: 2025/1/14 16:44
* @param: null null
* 根据上月数据更新考核明细数据
**/
void mergeCuRegionAssessDetailTeamPv(@Param("rangeTableName") String rangeTableName, @Param("assessDate") Date assessDate);
/*
* @description: 根据上月数据更新考核明细数据
* @author: sui q
* @date: 2025/1/14 16:44
* @param: null null
* 根据上月数据更新考核明细数据
**/
void mergeCuRegionAssessDetailSmallAreaPv(@Param("rangeTableName") String rangeTableName, @Param("assessDate") Date assessDate);
/*
* @description: 初始化考核先置为考核失败
* @author: sui q
* @date: 2025/1/14 17:30
* @param: null null
* 初始化考核先置为考核失败
**/
void updateCuRegionAssessDetailInit(@Param("assessDate") Date assessDate);
/*
* @description: 根据月后业绩考核汇总满足30w小区10w
* @author: sui q
* @date: 2025/1/14 17:36
* @param: null null
* 根据月后业绩考核汇总满足30w小区10w
**/
void updateCuRegionAssessDetailByPv(@Param("assessDate") Date assessDate);
/*
* @description: 根据月后业绩考核汇总满足30w小区10w
* @author: sui q
* @date: 2025/1/14 17:36
* @param: null null
**/
void updateCuRegionAssessDetailByHand(@Param("assessDate") Date assessDate);
}

View File

@ -11,36 +11,22 @@ import java.util.Date;
import java.util.List;
/**
* <p>
* 新零售会员区域考核 Mapper 接口
* </p>
*
* @author hzs
* @since 2025-01-13
*/
public interface CuRegionAssessMapper extends BaseMapper<CuRegionAssess> {
/*
* @description: 查询考核结果
* @author: sui q
* @date: 2025/1/15 17:22
* @param: null null
* 查询考核结果
**/
List<CuRegionAssessExt> queryRegionAssessByCondition(@Param("regionAssessParam") CuRegionAssessParam regionAssessParam);
/*
* @description: 考核开始日期
* @author: sui q
* @date: 2025/1/13 17:13
* @param: null null
* 考核开始日期
**/
void deleteAssessRegionByDate(@Param("assessStartDate") Date assessStartDate, @Param("assessPeriod") Integer assessPeriod);
/*
* @description: 考核开始日期
* @author: sui q
* @date: 2025/1/13 17:13
* @param: null null
* 考核开始日期
**/
void updateAssessRegionByDate(@Param("assessStartDate") Date assessStartDate, @Param("assessEndDate") Date assessEndDate);
@ -48,49 +34,31 @@ public interface CuRegionAssessMapper extends BaseMapper<CuRegionAssess> {
* 批量获取cuMemberBonus主键
*
* @param rowNum 数量
* @return: List<Integer>
* @Author: sui q
* @Date: 2022/12/13 13:47
*/
List<Long> batchQueryCuRegionAssessSeq(Integer rowNum);
/*
* @description: 批量插入区域考核数据
* @author: sui q
* @date: 2025/1/14 14:31
* @param: null null
* 批量插入区域考核数据
**/
void batchInsertCuRegionAssess(@Param("cuRegionAssessList") List<?> cuRegionAssessList);
/*
* @description: 更新达标次数
* @author: sui q
* @date: 2025/1/15 10:44
* @param: null null
* 更新达标次数
**/
void mergeCuRegionAssess(@Param("assessDate") Date assessDate);
/*
* @description: 查询待考核的区域
* @author: sui q
* @date: 2025/1/13 17:31
* @param: null null
* 查询待考核的区域
**/
List<CuMemberRetailRegion> queryCuMemberRetailRegion(@Param("startDate") Date startDate, @Param("endDate") Date endDate);
/*
* @description: 查询到期日期是上个月的区域
* @author: sui q
* @date: 2025/2/25 15:45
* @param: null null
* 查询到期日期是上个月的区域
**/
List<CuMemberRetailRegion> queryDueCuMemberRetailRegion(@Param("startDate") Date startDate, @Param("endDate") Date endDate);
/*
* @description: 查询手动设置考核的近6个月考核记录
* @author: sui q
* @date: 2025/2/26 9:21
* @param: null null
* 查询手动设置考核的近6个月考核记录
**/
List<CuRegionAssessExt> queryRegionAssessByDate(@Param("memberRetailRegionList") List<CuMemberRetailRegion> memberRetailRegionList, @Param("startDate") Date startDate, @Param("endDate") Date endDate);
}

View File

@ -7,46 +7,29 @@ import java.util.Date;
import java.util.List;
/**
* <p>
* 新零售会员区域考核明细表 服务类
* </p>
*
* @author hzs
* @since 2025-01-13
*/
public interface ICuRegionAssessDetailService extends IService<CuRegionAssessDetail> {
/*
* @description: 考核开始日期
* @author: sui q
* @date: 2025/1/13 17:13
* @param: null null
* 考核开始日期
**/
void deleteAssessRegionDetailByDate(Date assessStartDate, Integer assessPeriod);
/*
* @description: 删除重复的数据
* @author: sui q
* @date: 2025/1/15 16:11
* @param: null null
* 删除重复的数据
**/
void updateAssessRegionDetailByDate(Date assessStartDate, Date assessEndDate);
List<Long> batchQueryCuRegionAssessDetailSeq(Integer rowNum);
/*
* @description: 批量插入区域考核数据
* @author: sui q
* @date: 2025/1/14 14:31
* @param: null null
* 批量插入区域考核数据
**/
void batchInsertCuRegionAssessDetail(List<?> cuRegionAssessDetailList);
/*
* @description: 根据上月数据考核区域
* @author: sui q
* @date: 2025/1/14 16:44
* @param: null null
* 根据上月数据考核区域
**/
void assessCuRegionAssessDetail(String rangeTableName, Date assessDate);
}

View File

@ -5,51 +5,34 @@ import com.hzs.bonus.detail.vo.CuRegionAssessVO;
import com.hzs.bonus.param.CuRegionAssessParam;
import com.hzs.common.domain.member.detail.CuRegionAssess;
import com.hzs.common.domain.member.detail.ext.CuRegionAssessExt;
import org.apache.ibatis.annotations.Param;
import java.util.Date;
import java.util.List;
/**
* <p>
* 新零售会员区域考核 服务类
* </p>
*
* @author hzs
* @since 2025-01-13
*/
public interface ICuRegionAssessService extends IService<CuRegionAssess> {
/*
* @description: 每月考核区域是否达标
* @author: sui q
* @date: 2025/1/13 16:46
* @param: null null
* 每月考核区域是否达标
**/
void assessRegionByEveryMonth(String settleDate, String rangeTableName);
/**
* @description: 定时处理会员收益区域处理前三天
* @author: zhang jing
* @date: 2025/3/7 10:08
* @param: [startDate]
* 定时处理会员收益区域处理前三天
*
* @return: void
**/
void validateHandAreaAssess(Date startDate,Date endDate);
void validateHandAreaAssess(Date startDate, Date endDate);
/*
* @description: 考核开始日期
* @author: sui q
* @date: 2025/1/13 17:13
* @param: null null
* 考核开始日期
**/
void deleteAssessRegionByDate(Date assessStartDate, Integer assessPeriod);
/*
* @description: 查询考核结果
* @author: sui q
* @date: 2025/1/15 17:22
* @param: null null
* 查询考核结果
**/
List<CuRegionAssessExt> queryRegionAssessByCondition(CuRegionAssessParam regionAssessParam);

View File

@ -10,12 +10,7 @@ import java.util.Date;
import java.util.List;
/**
* <p>
* 新零售会员区域考核明细表 服务实现类
* </p>
*
* @author hzs
* @since 2025-01-13
*/
@Service
public class CuRegionAssessDetailServiceImpl extends ServiceImpl<CuRegionAssessDetailMapper, CuRegionAssessDetail> implements ICuRegionAssessDetailService {
@ -50,8 +45,5 @@ public class CuRegionAssessDetailServiceImpl extends ServiceImpl<CuRegionAssessD
baseMapper.updateCuRegionAssessDetailInit(assessDate);
// 验证汇总业绩和小区业绩是否满足条件汇总业绩满足30000小区满足100000变更为考核通过
baseMapper.updateCuRegionAssessDetailByPv(assessDate);
// 手动开区域由免考修改为正常考核到期后验证近6个月的考核结果达标3次继续有奖衔否则没有
// baseMapper.updateCuRegionAssessDetailByHand(assessDate);
// 更新主表更新达标次数
}
}

View File

@ -1,9 +1,8 @@
package com.hzs.bonus.detail.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.hzs.bonus.achieve.service.ICuMemberSettlePeriodService;
import com.hzs.bonus.achieve.service.impl.CuMemberBonusSettle;
import com.hzs.bonus.detail.mapper.CuRegionAssessMapper;
import com.hzs.bonus.detail.service.ICuRegionAssessDetailService;
@ -12,14 +11,13 @@ import com.hzs.bonus.detail.vo.CuRegionAssessDetailVO;
import com.hzs.bonus.detail.vo.CuRegionAssessVO;
import com.hzs.bonus.param.CuRegionAssessParam;
import com.hzs.common.core.constant.MagicNumberConstants;
import com.hzs.common.core.constant.TableNameConstants;
import com.hzs.common.core.enums.EDataSource;
import com.hzs.common.core.utils.DateUtils;
import com.hzs.common.domain.member.detail.CuRegionAssess;
import com.hzs.common.domain.member.detail.CuRegionAssessDetail;
import com.hzs.common.domain.member.detail.ext.CuRegionAssessExt;
import com.hzs.common.domain.retail.member.CuMemberRetailRegion;
import com.hzs.retail.member.IMemberRetailApi;
import lombok.extern.slf4j.Slf4j;
import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -29,21 +27,17 @@ import java.time.temporal.ChronoUnit;
import java.util.*;
/**
* <p>
* 新零售会员区域考核 服务实现类
* </p>
*
* @author hzs
* @since 2025-01-13
*/
@Slf4j
@Service
public class CuRegionAssessServiceImpl extends ServiceImpl<CuRegionAssessMapper, CuRegionAssess> implements ICuRegionAssessService {
@DubboReference
private IMemberRetailApi memberRetailApi;
IMemberRetailApi iMemberRetailApi;
@Autowired
private ICuRegionAssessDetailService cuRegionAssessDetailService;
private ICuRegionAssessDetailService iCuRegionAssessDetailService;
@Autowired
private CuMemberBonusSettle cuMemberBonusSettle;
@ -54,14 +48,23 @@ public class CuRegionAssessServiceImpl extends ServiceImpl<CuRegionAssessMapper,
// 每月1号进行考核结算上月最后一期的时候进行区域达标考核
Date assDate = DateUtils.parseStringToDate(settleDate);
Date assessDate = DateUtils.afterDate(1, ChronoUnit.DAYS, assDate);
log.info("assDate : {}", DateUtils.parseDateTimeToStr(DateUtils.YYYY_MM_DD, assDate));
log.info("assessDate : {}", DateUtils.parseDateTimeToStr(DateUtils.YYYY_MM_DD, assessDate));
if (DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, assessDate).endsWith("01")) {
// 当月第一天
Date startDate = DateUtils.currentMonthFirstDate(assDate);
// 清空数据7天内重算查找结算开始日期相同的是第一次考核,清空明细表主表
// 清空数据之前有区域然后掉区域了新的月份又有了 update
cuRegionAssessDetailService.updateAssessRegionDetailByDate(startDate, assessDate);
log.info("startDate : {}", DateUtils.parseDateTimeToStr(DateUtils.YYYY_MM_DD, startDate));
// 清空 1 号到 今天 的考核数据
iCuRegionAssessDetailService.updateAssessRegionDetailByDate(startDate, assessDate);
baseMapper.updateAssessRegionByDate(startDate, assessDate);
deleteAssessRegionByDate(assessDate, 1);
// 生成6期待考核数据查询上月的区域第一次考核的时候明细生成6期
// 查询目前有效的区域配置
List<CuMemberRetailRegion> memberRetailRegionList = baseMapper.queryCuMemberRetailRegion(startDate, assessDate);
if (memberRetailRegionList.size() > 0) {
Map<Long, CuRegionAssess> regionAssessMap = new HashMap<>();
@ -92,18 +95,19 @@ public class CuRegionAssessServiceImpl extends ServiceImpl<CuRegionAssessMapper,
}
saveCuRegionAssess(regionAssessMap, regionAssessDetailList);
}
cuRegionAssessDetailService.assessCuRegionAssessDetail(rangeTableName, assessDate);
iCuRegionAssessDetailService.assessCuRegionAssessDetail(rangeTableName, assessDate);
baseMapper.mergeCuRegionAssess(assessDate);
// 取消区域列表
List<Long> cancelRegionList = new ArrayList<>();
// 开始考核 上月最后一天奖衔业绩同步到考核表中
// 查询主表考核结束日期=考核日期的这部分需要生成下6期,最后一期结算完验证是否达标达标后继续生成下一期不达标取消区域
// 查询考核结束日期次数不达标的区域进行区域取消处理
List<CuRegionAssess> cuRegionAssessList = queryCuRegionAssessByEndDate(assessDate);
List<Long> cancelRegionList = new ArrayList<>();
Map<Long, CuRegionAssess> regionAssessMap = new HashMap<>();
List<CuRegionAssessDetail> regionAssessDetailList = new ArrayList<>();
for (CuRegionAssess cuRegionAssess : cuRegionAssessList) {
// 手动开区域的不参与考核,只有会员端选区域的参与考核
if (cuRegionAssess.getReachNum() < 3 && cuRegionAssess.getSource() == 1) {
if (cuRegionAssess.getReachNum() < 3) {
cancelRegionList.add(cuRegionAssess.getPkRegion());
continue;
}
@ -136,16 +140,13 @@ public class CuRegionAssessServiceImpl extends ServiceImpl<CuRegionAssessMapper,
// 查询到期日期的区域验证近6个月的达标次数不达标取消
// validateHandAreaAssess(assessDate, startDate, cancelRegionList);
if (cancelRegionList.size() > 0) {
if (!memberRetailApi.cancelRegion(cancelRegionList).isSuccess()) {
if (!iMemberRetailApi.cancelRegion(cancelRegionList).isSuccess()) {
throw new RuntimeException("区域更新失败");
}
}
}
}
/**
* 定时处理会员收益区域处理前三天
**/
@Override
public void validateHandAreaAssess(Date startDate, Date endDate) {
List<Long> cancelRegionList = new ArrayList<>();
@ -169,7 +170,7 @@ public class CuRegionAssessServiceImpl extends ServiceImpl<CuRegionAssessMapper,
}
}
if (cancelRegionList.size() > 0) {
if (!memberRetailApi.cancelRegion(cancelRegionList).isSuccess()) {
if (!iMemberRetailApi.cancelRegion(cancelRegionList).isSuccess()) {
throw new RuntimeException("区域更新失败");
}
}
@ -193,21 +194,20 @@ public class CuRegionAssessServiceImpl extends ServiceImpl<CuRegionAssessMapper,
}
// 主表
List<List<?>> lists = cuMemberBonusSettle.handleCutList(cuRegionAssessList);
lists.forEach(list ->
baseMapper.batchInsertCuRegionAssess(list));
List<Long> idList = cuRegionAssessDetailService.batchQueryCuRegionAssessDetailSeq(regionAssessDetailList.size());
lists.forEach(list -> baseMapper.batchInsertCuRegionAssess(list));
List<Long> idList = iCuRegionAssessDetailService.batchQueryCuRegionAssessDetailSeq(regionAssessDetailList.size());
for (int j = 0; j < regionAssessDetailList.size(); j++) {
regionAssessDetailList.get(j).setPkId(idList.get(j));
}
// 明细表
List<List<?>> detailList = cuMemberBonusSettle.handleCutList(regionAssessDetailList);
detailList.forEach(detail ->
cuRegionAssessDetailService.batchInsertCuRegionAssessDetail(detail));
detailList.forEach(detail -> iCuRegionAssessDetailService.batchInsertCuRegionAssessDetail(detail));
}
List<CuRegionAssess> queryCuRegionAssessByEndDate(Date settleDate) {
QueryWrapper<CuRegionAssess> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("ASSESS_END_DATE", settleDate);
LambdaQueryWrapper<CuRegionAssess> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(CuRegionAssess::getAssessEndDate, settleDate);
return baseMapper.selectList(queryWrapper);
}
@ -215,7 +215,7 @@ public class CuRegionAssessServiceImpl extends ServiceImpl<CuRegionAssessMapper,
@Transactional(rollbackFor = Exception.class)
public void deleteAssessRegionByDate(Date assessStartDate, Integer assessPeriod) {
// 7天内重算
cuRegionAssessDetailService.deleteAssessRegionDetailByDate(assessStartDate, assessPeriod);
iCuRegionAssessDetailService.deleteAssessRegionDetailByDate(assessStartDate, assessPeriod);
baseMapper.deleteAssessRegionByDate(assessStartDate, assessPeriod);
}

View File

@ -4,101 +4,133 @@
<!-- 通用查询映射结果 -->
<resultMap id="CuRegionAssessDetail" type="com.hzs.common.domain.member.detail.CuRegionAssessDetail">
<id column="PK_ID" property="pkId" />
<result column="PK_MEMBER" property="pkMember" />
<result column="DEL_FLAG" property="delFlag" />
<result column="PK_COUNTRY" property="pkCountry" />
<result column="CREATION_TIME" property="creationTime" />
<result column="PK_CREATOR" property="pkCreator" />
<result column="MODIFIED_TIME" property="modifiedTime" />
<result column="PK_MODIFIED" property="pkModified" />
<result column="PK_REGION_ASSESS" property="pkRegionAssess" />
<result column="ASSESS_DATE" property="assessDate" />
<result column="PK_AWARDS" property="pkAwards" />
<result column="TEAM_MONTH_PV" property="teamMonthPv" />
<result column="SMALL_AREA_PV" property="smallAreaPv" />
<result column="ASSESS_STATUS" property="assessStatus" />
<id column="PK_ID" property="pkId"/>
<result column="PK_MEMBER" property="pkMember"/>
<result column="DEL_FLAG" property="delFlag"/>
<result column="PK_COUNTRY" property="pkCountry"/>
<result column="CREATION_TIME" property="creationTime"/>
<result column="PK_CREATOR" property="pkCreator"/>
<result column="MODIFIED_TIME" property="modifiedTime"/>
<result column="PK_MODIFIED" property="pkModified"/>
<result column="PK_REGION_ASSESS" property="pkRegionAssess"/>
<result column="ASSESS_DATE" property="assessDate"/>
<result column="PK_AWARDS" property="pkAwards"/>
<result column="TEAM_MONTH_PV" property="teamMonthPv"/>
<result column="SMALL_AREA_PV" property="smallAreaPv"/>
<result column="ASSESS_STATUS" property="assessStatus"/>
</resultMap>
<insert id="batchInsertCuRegionAssessDetail">
insert ALL
<foreach item="item" index="index" collection="cuRegionAssessDetailList" separator=" " >
into cu_region_assess_detail(pk_id,pk_member,pk_region_assess,assess_date,pk_creator,pk_country) values
(
#{item.pkId},#{item.pkMember},#{item.pkRegionAssess},#{item.assessDate},#{item.pkCreator},#{item.pkCountry}
)
<foreach item="item" index="index" collection="cuRegionAssessDetailList" separator=" ">
into cu_region_assess_detail (
pk_id, pk_member, pk_region_assess, assess_date,
pk_creator, pk_country)
values (
#{item.pkId}, #{item.pkMember}, #{item.pkRegionAssess}, #{item.assessDate},
#{item.pkCreator}, #{item.pkCountry})
</foreach>
SELECT 1 FROM dual
</insert>
<update id="mergeCuRegionAssessDetailTeamPv">
merge into cu_region_assess_detail a
using(
select cd.pk_id,cr.pk_member,cr.pk_awards,
(cr.month_consume_pv+cr.team_month_pv) team_month_pv from cu_region_assess_detail cd
inner join ${rangeTableName} cr
on cd.pk_member=cr.pk_member
where cd.del_flag=0 and cd.assess_date = #{assessDate, jdbcType=DATE}
using (
select cd.pk_id,
cr.pk_member,
cr.pk_awards,
(cr.month_consume_pv + cr.team_month_pv) team_month_pv
from cu_region_assess_detail cd
inner join ${rangeTableName} cr
on cd.pk_member = cr.pk_member
where cd.del_flag = 0
and cd.assess_date = #{assessDate, jdbcType=DATE}
) b
on(a.pk_id=b.pk_id)
on (a.pk_id = b.pk_id)
when matched then
update set a.pk_awards=b.pk_awards,a.team_month_pv=b.team_month_pv
WHERE a.pk_awards != b.pk_awards OR a.team_month_pv != b.team_month_pv
update set a.pk_awards = b.pk_awards, a.team_month_pv = b.team_month_pv
WHERE a.pk_awards != b.pk_awards
OR a.team_month_pv != b.team_month_pv
</update>
<update id="mergeCuRegionAssessDetailSmallAreaPv">
merge into cu_region_assess_detail a
using(
select pk_id,max(big_area_pv) big_area_pv from(
select cd.pk_id,b.* from cu_region_assess_detail cd
inner join(
select pk_parent pk_member,(month_consume_pv+team_month_pv) big_area_pv from ${rangeTableName}
union
select pk_member,month_consume_pv big_area_pv from ${rangeTableName}) b
on cd.pk_member=b.pk_member
where cd.del_flag=0 and cd.assess_date = #{assessDate, jdbcType=DATE}
)
using (
select pk_id, max(big_area_pv) big_area_pv
from (
select cd.pk_id, b.*
from cu_region_assess_detail cd
inner join (
select pk_parent pk_member, (month_consume_pv + team_month_pv) big_area_pv
from ${rangeTableName}
union
select pk_member, month_consume_pv big_area_pv
from ${rangeTableName}
) b
on cd.pk_member = b.pk_member
where cd.del_flag = 0
and cd.assess_date = #{assessDate, jdbcType=DATE}
)
group by pk_id
) b
on(a.pk_id=b.pk_id)
on (a.pk_id = b.pk_id)
when matched then
update set a.small_area_pv=a.team_month_pv-b.big_area_pv
update set a.small_area_pv = a.team_month_pv - b.big_area_pv
</update>
<update id="updateCuRegionAssessDetailInit">
update cu_region_assess_detail set assess_status=2 where del_flag=0 and assess_date=#{assessDate, jdbcType=DATE}
</update>
<update id="updateCuRegionAssessDetailByPv">
update cu_region_assess_detail set assess_status=0
where del_flag=0 and team_month_pv>=46875 and small_area_pv>=15625
update cu_region_assess_detail
set assess_status = 2
where del_flag = 0
and assess_date = #{assessDate, jdbcType=DATE}
</update>
<update id="updateCuRegionAssessDetailByHand">
update cu_region_assess_detail set assess_status=0
where del_flag=0 and assess_date = #{assessDate, jdbcType=DATE}
and pk_region_assess in(select pk_id from cu_region_assess where del_flag=0 and source=2)
<update id="updateCuRegionAssessDetailByPv">
update cu_region_assess_detail
set assess_status = 0
where del_flag = 0
and team_month_pv >= 300000
and small_area_pv >= 100000
and assess_date = #{assessDate, jdbcType=DATE}
</update>
<update id="updateAssessRegionDetailByDate">
update cu_region_assess_detail set del_flag=1,modified_time=sysdate where pk_region_assess in(
select ca.pk_id from cu_region_assess ca
inner join (
select pk_id from cu_member_retail_region
where effective=0 and del_flag=0
and nvl(modified_time,creation_time)>= #{assessStartDate,jdbcType=DATE}
and nvl(modified_time,creation_time) &lt; #{assessEndDate,jdbcType=DATE}
) b
on ca.pk_region =b.pk_id
where ca.del_flag=0 and ca.assess_start_date !=#{assessEndDate,jdbcType=DATE})
update cu_region_assess_detail
set del_flag = 1,
modified_time = sysdate
where pk_region_assess in (
select ca.pk_id
from cu_region_assess ca
inner join (
select pk_id
from cu_member_retail_region
where effective = 0
and del_flag = 0
and nvl(modified_time, creation_time) >= #{assessStartDate, jdbcType=DATE}
and nvl(modified_time, creation_time) &lt; #{assessEndDate, jdbcType=DATE}
) b
on ca.pk_region = b.pk_id
where ca.del_flag = 0
and ca.assess_start_date != #{assessEndDate,jdbcType=DATE})
</update>
<delete id="deleteAssessRegionDetailByDate">
delete from cu_region_assess_detail where del_flag=0 and
pk_region_assess in(
select pk_id from cu_region_assess where del_flag=0 and
assess_start_date=#{assessStartDate, jdbcType=DATE}
<choose>
<when test="assessPeriod == 1">and assess_period=#{assessPeriod}</when>
<otherwise>and assess_period >= #{assessPeriod}</otherwise>
</choose>
delete from cu_region_assess_detail
where del_flag = 0 and
pk_region_assess in (
select pk_id from cu_region_assess
where del_flag = 0
and assess_start_date = #{assessStartDate, jdbcType=DATE}
<choose>
<when test="assessPeriod == 1">and assess_period = #{assessPeriod}</when>
<otherwise>and assess_period >= #{assessPeriod}</otherwise>
</choose>
)
</delete>
<select id="batchQueryCuRegionAssessDetailSeq" resultType="java.lang.Long">
select cu_region_assess_detail_seq.nextval from dual connect by rownum &lt;= #{rowNum}
select cu_region_assess_detail_seq.nextval
from dual connect by rownum &lt;= #{rowNum}
</select>
</mapper>

View File

@ -4,96 +4,119 @@
<!-- 通用查询映射结果 -->
<resultMap id="CuRegionAssessExt" type="com.hzs.common.domain.member.detail.ext.CuRegionAssessExt">
<id column="PK_ID" property="pkId" />
<result column="DEL_FLAG" property="delFlag" />
<result column="PK_COUNTRY" property="pkCountry" />
<result column="CREATION_TIME" property="creationTime" />
<result column="PK_CREATOR" property="pkCreator" />
<result column="MODIFIED_TIME" property="modifiedTime" />
<result column="PK_MODIFIED" property="pkModified" />
<result column="PK_MEMBER" property="pkMember" />
<result column="PK_REGION" property="pkRegion" />
<result column="ASSESS_PERIOD" property="assessPeriod" />
<result column="ASSESS_START_DATE" property="assessStartDate" />
<result column="ASSESS_END_DATE" property="assessEndDate" />
<result column="REACH_NUM" property="reachNum" />
<result column="SOURCE" property="source" />
<result column="MEMBER_CODE" property="memberCode" />
<result column="MEMBER_NAME" property="memberName" />
<result column="PROVINCE_NAME" property="provinceName" />
<result column="CITY_NAME" property="cityName" />
<result column="COUNTY_NAME" property="countyName" />
<result column="ASSESS_ADDRESS" property="assessAddress" />
<id column="PK_ID" property="pkId"/>
<result column="DEL_FLAG" property="delFlag"/>
<result column="PK_COUNTRY" property="pkCountry"/>
<result column="CREATION_TIME" property="creationTime"/>
<result column="PK_CREATOR" property="pkCreator"/>
<result column="MODIFIED_TIME" property="modifiedTime"/>
<result column="PK_MODIFIED" property="pkModified"/>
<result column="PK_MEMBER" property="pkMember"/>
<result column="PK_REGION" property="pkRegion"/>
<result column="ASSESS_PERIOD" property="assessPeriod"/>
<result column="ASSESS_START_DATE" property="assessStartDate"/>
<result column="ASSESS_END_DATE" property="assessEndDate"/>
<result column="REACH_NUM" property="reachNum"/>
<result column="SOURCE" property="source"/>
<result column="MEMBER_CODE" property="memberCode"/>
<result column="MEMBER_NAME" property="memberName"/>
<result column="PROVINCE_NAME" property="provinceName"/>
<result column="CITY_NAME" property="cityName"/>
<result column="COUNTY_NAME" property="countyName"/>
<result column="ASSESS_ADDRESS" property="assessAddress"/>
<collection property="cuRegionAssessDetailList" ofType="com.hzs.common.domain.member.detail.CuRegionAssessDetail">
<result column="ASSESS_DATE" property="assessDate" />
<result column="PK_AWARDS" property="pkAwards" />
<result column="TEAM_MONTH_PV" property="teamMonthPv" />
<result column="SMALL_AREA_PV" property="smallAreaPv" />
<result column="ASSESS_STATUS" property="assessStatus" />
<result column="ASSESS_DATE" property="assessDate"/>
<result column="PK_AWARDS" property="pkAwards"/>
<result column="TEAM_MONTH_PV" property="teamMonthPv"/>
<result column="SMALL_AREA_PV" property="smallAreaPv"/>
<result column="ASSESS_STATUS" property="assessStatus"/>
</collection>
</resultMap>
<insert id="batchInsertCuRegionAssess">
insert ALL
<foreach item="item" index="index" collection="cuRegionAssessList" separator=" " >
into cu_region_assess(pk_id,pk_member,assess_period,pk_region,assess_start_date,assess_end_date,
source,pk_creator,pk_country) values
(
#{item.pkId},#{item.pkMember},#{item.assessPeriod},#{item.pkRegion},#{item.assessStartDate},#{item.assessEndDate},
#{item.source},#{item.pkCreator},#{item.pkCountry}
)
<foreach item="item" index="index" collection="cuRegionAssessList" separator=" ">
into cu_region_assess (
pk_id, pk_member, assess_period, pk_region,
assess_start_date, assess_end_date,
source, pk_creator, pk_country)
values (
#{item.pkId}, #{item.pkMember}, #{item.assessPeriod}, #{item.pkRegion},
#{item.assessStartDate}, #{item.assessEndDate},
#{item.source}, #{item.pkCreator}, #{item.pkCountry})
</foreach>
SELECT 1 FROM dual
</insert>
<update id="mergeCuRegionAssess">
merge into CU_REGION_ASSESS a
using(
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
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}
using (
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
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}
group by cd.pk_region_assess
) b
on (a.pk_id=b.pk_region_assess)
on (a.pk_id = b.pk_region_assess)
when matched then
update set a.REACH_NUM=b.REACH_NUM
update set a.REACH_NUM = b.REACH_NUM
</update>
<update id="updateAssessRegionByDate">
update cu_region_assess set del_flag=1,modified_time=sysdate where pk_id in(
select ca.pk_id from cu_region_assess ca
inner join (
select pk_id from cu_member_retail_region
where effective=0 and del_flag=0
and nvl(modified_time,creation_time)>= #{assessStartDate,jdbcType=DATE}
and nvl(modified_time,creation_time) &lt; #{assessEndDate,jdbcType=DATE}
) b
on ca.pk_region =b.pk_id
where ca.del_flag=0 and ca.assess_start_date !=#{assessEndDate,jdbcType=DATE})
update cu_region_assess
set del_flag = 1,
modified_time = sysdate
where pk_id in (
select ca.pk_id
from cu_region_assess ca
inner join (
select pk_id
from cu_member_retail_region
where effective = 0
and del_flag = 0
and nvl(modified_time, creation_time) >= #{assessStartDate,jdbcType=DATE}
and nvl(modified_time, creation_time) &lt; #{assessEndDate,jdbcType=DATE}
) b
on ca.pk_region = b.pk_id
where ca.del_flag = 0
and ca.assess_start_date !=#{assessEndDate,jdbcType=DATE})
</update>
<delete id="deleteAssessRegionByDate">
delete from cu_region_assess where del_flag=0 and
assess_start_date=#{assessStartDate, jdbcType=DATE}
assess_start_date=#{assessStartDate, jdbcType=DATE}
<choose>
<when test="assessPeriod == 1">and assess_period=#{assessPeriod}</when>
<otherwise>and assess_period >= #{assessPeriod}</otherwise>
</choose>
</delete>
<select id="queryCuMemberRetailRegion" resultType="com.hzs.common.domain.retail.member.CuMemberRetailRegion">
select * from cu_member_retail_region where effective=0 and del_flag=0
and nvl(modified_time,creation_time)>= #{startDate, jdbcType=DATE}
and nvl(modified_time,creation_time) &lt; #{endDate, jdbcType=DATE}
select *
from cu_member_retail_region
where effective = 0
and del_flag = 0
and nvl(modified_time, creation_time) >= #{startDate, jdbcType=DATE}
and nvl(modified_time, creation_time) &lt; #{endDate, jdbcType=DATE}
</select>
<select id="batchQueryCuRegionAssessSeq" resultType="java.lang.Long">
select cu_region_assess_seq.nextval from dual connect by rownum &lt;= #{rowNum}
select cu_region_assess_seq.nextval
from dual connect by rownum &lt;= #{rowNum}
</select>
<select id="queryRegionAssessByCondition" resultMap="CuRegionAssessExt">
select cm.member_code,cm.member_name,ca.reach_num,ca.assess_period,
ca.assess_start_date,ca.assess_end_date,ca.reach_num,
(province.name||city.name||county.name) assess_address,
cd.assess_date,cd.assess_status,cd.team_month_pv,cd.small_area_pv,
cd.assess_status /* province.name,city.name,county.name,*/
from cu_region_assess ca
ca.assess_start_date,ca.assess_end_date,ca.reach_num,
(province.name||city.name||county.name) assess_address,
cd.assess_date,cd.assess_status,cd.team_month_pv,cd.small_area_pv,
cd.assess_status /* province.name,city.name,county.name,*/
from cu_region_assess ca
inner join cu_region_assess_detail cd
on ca.pk_id=cd.pk_region_assess
inner join cu_member cm
@ -103,7 +126,7 @@
left join bd_area province on province.PK_ID=cr.province
left join bd_area city on city.PK_ID=cr.city
left join bd_area county on county.PK_ID=cr.county
where ca.del_flag=0 and cd.del_flag=0 and cm.del_flag=0 and cr.del_flag=0
where ca.del_flag=0 and cd.del_flag=0 and cm.del_flag=0 and cr.del_flag=0
<if test="regionAssessParam.assessDate != null">
and cd.assess_date &lt;= #{regionAssessParam.assessDate,jdbcType=DATE}
</if>
@ -121,22 +144,25 @@
</if>
</select>
<select id="queryDueCuMemberRetailRegion" resultType="com.hzs.common.domain.retail.member.CuMemberRetailRegion">
select * from cu_member_retail_region where effective=0 and del_flag=0
and effective_end_date>= #{startDate, jdbcType=DATE}
and effective_end_date &lt; #{endDate, jdbcType=DATE}
select *
from cu_member_retail_region
where effective = 0
and del_flag = 0
and effective_end_date >= #{startDate, jdbcType=DATE}
and effective_end_date &lt; #{endDate, jdbcType=DATE}
</select>
<select id="queryRegionAssessByDate"
resultType="com.hzs.common.domain.member.detail.ext.CuRegionAssessExt">
select cd.pk_member,count(cd.pk_id) pk_id from cu_region_assess ca
inner join cu_region_assess_detail cd
on ca.pk_id=cd.pk_region_assess
inner join cu_region_assess_detail cd
on ca.pk_id=cd.pk_region_assess
where ca.del_flag=0 and cd.del_flag=0
and cd.assess_date>=#{startDate, jdbcType=DATE} and cd.assess_date &lt;=#{endDate, jdbcType=DATE}
and assess_status=0 and ca.pk_member in
and cd.assess_date>=#{startDate, jdbcType=DATE} and cd.assess_date &lt;=#{endDate, jdbcType=DATE}
and assess_status=0 and ca.pk_member in
<foreach collection="memberRetailRegionList" item="item" open="(" close=")" separator=",">
#{item.pkMember}
</foreach>
group by cd.pk_member
group by cd.pk_member
</select>
</mapper>

View File

@ -10,11 +10,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import java.util.List;
/**
* @Description: 新零售会员dubbo服务
* @Author: jiang chao
* @Time: 2024/12/31 13:40
* @Classname: MemberRetailProvider
* @PackageName: com.hzs.retail.member.provider
* 新零售会员dubbo服务
*/
@Slf4j
@DubboService

View File

@ -260,22 +260,6 @@ public interface SaOrderItemsMapper extends BaseMapper<SaOrderItems> {
*/
List<OrderItemsParam> selectByWaresCodeList(@Param("orderCode") String orderCode);
/**
* 查询新零售购买指定商品数量
*
* @param pkMember 会员ID
* @param waresCodeList 商品编号列表
* @param payTime 支付时间可为null
* @param orderTypeList 订单类型列表
* @param systemType 系统类型可为null
* @return
*/
int getRetailWaresQuantity(@Param("pkMember") Long pkMember,
@Param("waresCodeList") List<String> waresCodeList,
@Param("payTime") Date payTime,
@Param("orderTypeList") List<Integer> orderTypeList,
@Param("systemType") Integer systemType);
/**
* 查询新零售购买指定商品数量
*

View File

@ -228,18 +228,6 @@ public interface ISaOrderItemsService extends IService<SaOrderItems> {
*/
List<OrderItemsParam> selectByWaresCodeList(String orderCode);
/**
* 查询新零售购买指定商品数量
*
* @param pkMember 会员ID
* @param waresCodeList 商品编号列表
* @param payTime 支付时间可为null
* @param orderTypeList 订单类型列表
* @param systemType 系统类型可为null
* @return
*/
int getRetailWaresQuantity(Long pkMember, List<String> waresCodeList, Date payTime, List<Integer> orderTypeList, Integer systemType);
/**
* 查询新零售购买指定商品数量
*

View File

@ -189,11 +189,6 @@ public class SaOrderItemsServiceImpl extends ServiceImpl<SaOrderItemsMapper, SaO
return baseMapper.selectByWaresCodeList(orderCode);
}
@Override
public int getRetailWaresQuantity(Long pkMember, List<String> waresCodeList, Date payTime, List<Integer> orderTypeList, Integer systemType) {
return baseMapper.getRetailWaresQuantity(pkMember, waresCodeList, payTime, orderTypeList, systemType);
}
@Override
public BigDecimal getRetailWaresQuantityNew(Long pkMember, List<String> waresCodeList, Date payTime, List<Integer> orderTypeList, Integer systemType) {
return baseMapper.getRetailWaresQuantityNew(pkMember, waresCodeList, payTime, orderTypeList, systemType);

View File

@ -1130,38 +1130,9 @@
and so.ORDER_CODE = #{orderCode}
</select>
<!-- 查询新零售购买指定商品数量 -->
<select id="getRetailWaresQuantity" resultType="int">
select nvl(sum(soi.wares_quantity), 0) wares_quantity
from sa_order so
left join sa_order_items soi
on soi.pk_order = so.pk_id
and soi.del_flag = 0
and soi.is_gift = 1
left join bd_wares bw
on bw.pk_id = soi.pk_wares
where so.del_flag = 0
and so.order_status = 1
and so.pk_member = #{pkMember}
<if test="systemType != null">
and so.system_type = #{systemType}
</if>
and so.order_type in
<foreach collection="orderTypeList" item="item" open="(" close=")" separator=",">
#{item}
</foreach>
and bw.wares_code in
<foreach collection="waresCodeList" item="items" open="(" close=")" separator=",">
#{items}
</foreach>
<if test="payTime != null">
and so.pay_time > #{payTime}
</if>
</select>
<!-- 查询新零售购买指定商品数量(新) -->
<select id="getRetailWaresQuantityNew" resultType="decimal">
select nvl(sum(soi.wares_quantity), 0) wares_quantity
select sum(nvl(soi.wares_quantity, 0) * bw.box_num) wares_quantity
from sa_order so
left join sa_order_items soi
on soi.pk_order = so.pk_id

View File

@ -2,7 +2,9 @@ package com.hzs.common.domain.member.detail;
import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableName;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableField;
import com.hzs.common.core.web.domain.BaseEntity;
@ -10,12 +12,7 @@ import lombok.*;
import lombok.experimental.Accessors;
/**
* <p>
* 新零售会员区域考核
* </p>
*
* @author hzs
* @since 2025-01-13
*/
@Data
@EqualsAndHashCode(callSuper = true)

View File

@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableName;
import java.math.BigDecimal;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableField;
import com.hzs.common.core.web.domain.BaseEntity;
@ -12,12 +13,7 @@ import lombok.*;
import lombok.experimental.Accessors;
/**
* <p>
* 新零售会员区域考核明细表
* </p>
*
* @author hzs
* @since 2025-01-13
*/
@Data
@EqualsAndHashCode(callSuper = true)
@ -56,7 +52,7 @@ public class CuRegionAssessDetail extends BaseEntity {
private Date assessDate;
/**
* 会员等级
* 会员奖衔
*/
@TableField("PK_AWARDS")
private Integer pkAwards;

View File

@ -4,19 +4,20 @@ import cn.hutool.http.HttpUtil;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.hzs.bonus.settle.IMemberSettleBonusApi;
import com.hzs.common.core.domain.R;
import com.hzs.common.core.utils.DateUtils;
import com.hzs.common.core.web.domain.AjaxResult;
import com.hzs.member.account.IMemberJobServiceApi;
import com.hzs.system.base.IAreaServiceApi;
import com.hzs.system.base.dto.AreaDTO;
import com.hzs.third.job.OrderJob;
import lombok.extern.slf4j.Slf4j;
import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.time.temporal.ChronoUnit;
import java.util.*;
/**
@ -32,6 +33,16 @@ public class JobTestController {
@DubboReference
IMemberJobServiceApi iMemberJobServiceApi;
@DubboReference
IMemberSettleBonusApi iMemberSettleBonusApi;
@GetMapping("/test-settle")
public AjaxResult testSettle() {
Date startDate = DateUtils.beforeDate(1, ChronoUnit.DAYS, DateUtils.currentDate());
iMemberSettleBonusApi.autoCalculateBonus(startDate);
return AjaxResult.success();
}
/**
* 测试行政区划更新