413 lines
17 KiB
XML
413 lines
17 KiB
XML
|
|
<?xml version="1.0" encoding="UTF-8"?>
|
||
|
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||
|
|
<mapper namespace="com.hzs.bonus.detail.mapper.CuMemberAssessMapper">
|
||
|
|
|
||
|
|
<!-- 通用查询映射结果 -->
|
||
|
|
<resultMap id="CuMemberAssess" type="com.hzs.common.domain.member.ext.CuMemberAssessExt">
|
||
|
|
<id column="PK_ID" property="pkId" />
|
||
|
|
<result column="DEL_FLAG" property="delFlag" />
|
||
|
|
<result column="PK_CREATOR" property="pkCreator" />
|
||
|
|
<result column="CREATION_TIME" property="creationTime" />
|
||
|
|
<result column="PK_MODIFIED" property="pkModified" />
|
||
|
|
<result column="MODIFIED_TIME" property="modifiedTime" />
|
||
|
|
<result column="PK_COUNTRY" property="pkCountry" />
|
||
|
|
<result column="PK_MEMBER" property="pkMember" />
|
||
|
|
<result column="PERIOD" property="period" />
|
||
|
|
<result column="SETTLE_MONTH" property="settleMonth" />
|
||
|
|
<result column="ASSESS_TYPE" property="assessType" />
|
||
|
|
<result column="PK_ORIGINAL_AWARDS" property="pkOriginalAwards"/>
|
||
|
|
<result column="PK_AWARDS" property="pkAwards" />
|
||
|
|
<result column="ASSESS_TARGET" property="assessTarget" />
|
||
|
|
<result column="IS_EXAMINE" property="isExamine" />
|
||
|
|
<result column="ASSESS_STATUS" property="assessStatus" />
|
||
|
|
<result column="MONTH_BALANCE" property="monthBalance" />
|
||
|
|
<result column="MONTH_ADD" property="monthAdd" />
|
||
|
|
<result column="CUR_MONTH_ADD" property="curMonthAdd" />
|
||
|
|
<result column="MONTH_USED" property="monthUsed" />
|
||
|
|
<result column="MONTH_SURPLUS" property="monthSurplus" />
|
||
|
|
</resultMap>
|
||
|
|
|
||
|
|
<!-- 通用查询结果列 -->
|
||
|
|
<sql id="CuMemberAssessColumn">
|
||
|
|
pk_id NUMBER(20) primary key,
|
||
|
|
pk_member NUMBER(20) not null,
|
||
|
|
period NUMBER(6) not null,
|
||
|
|
settle_month VARCHAR2(12) not null,
|
||
|
|
assess_type NUMBER(2) not null,
|
||
|
|
pk_awards NUMBER(6) not null,
|
||
|
|
assess_target NUMBER(17,6) default 0 not null,
|
||
|
|
is_examine NUMBER(1) default 1 not null,
|
||
|
|
assess_status NUMBER(2) not null,
|
||
|
|
month_balance NUMBER(17,6) default 0 not null,
|
||
|
|
month_add NUMBER(17,6) default 0 not null,
|
||
|
|
cur_month_add number(17,6) default 0 not null,
|
||
|
|
month_used NUMBER(17,6) default 0 not null,
|
||
|
|
month_surplus NUMBER(17,6) default 0 not null,
|
||
|
|
del_flag NUMBER(1) default 0 not null,
|
||
|
|
pk_country NUMBER(4) not null,
|
||
|
|
pk_creator NUMBER(20) not null,
|
||
|
|
creation_time DATE default sysdate not null,
|
||
|
|
modified_time DATE,
|
||
|
|
pk_modified NUMBER(20)
|
||
|
|
</sql>
|
||
|
|
|
||
|
|
<insert id="insertRepCuMemberAssess">
|
||
|
|
merge into ${tableName} a
|
||
|
|
using(
|
||
|
|
select pk_member,#{period} period,#{month} settle_month,0 assess_type,pk_awards,nvl(b.purchase_check,0) ASSESS_TARGET,
|
||
|
|
1 IS_EXAMINE,2 assess_status,ct.pk_settle_country PK_COUNTRY,1 pk_creator
|
||
|
|
from ${sourceTableName} ct
|
||
|
|
left join bd_awards b
|
||
|
|
on ct.pk_awards=b.pk_id
|
||
|
|
where category=0
|
||
|
|
) b
|
||
|
|
on (a.pk_member=b.pk_member and a.period=b.period and a.assess_type=b.assess_type)
|
||
|
|
WHEN MATCHED THEN
|
||
|
|
update set a.SETTLE_MONTH=b.SETTLE_MONTH,a.PK_AWARDS=b.PK_AWARDS,a.ASSESS_TARGET=b.ASSESS_TARGET,
|
||
|
|
a.IS_EXAMINE=b.IS_EXAMINE,a.ASSESS_STATUS=b.ASSESS_STATUS
|
||
|
|
when not matched then
|
||
|
|
insert (PK_MEMBER,period,SETTLE_MONTH,ASSESS_TYPE,PK_AWARDS,ASSESS_TARGET,
|
||
|
|
IS_EXAMINE,ASSESS_STATUS,PK_COUNTRY,PK_CREATOR)
|
||
|
|
values(b.PK_MEMBER,b.period,b.SETTLE_MONTH,b.ASSESS_TYPE,b.PK_AWARDS,b.ASSESS_TARGET,
|
||
|
|
b.IS_EXAMINE,b.ASSESS_STATUS,b.PK_COUNTRY,b.PK_CREATOR)
|
||
|
|
|
||
|
|
</insert>
|
||
|
|
|
||
|
|
<insert id="insertRepCuMemberRangeAssess">
|
||
|
|
merge into ${tableName} a
|
||
|
|
using(
|
||
|
|
select pk_member,#{period} period,#{month} settle_month,0 assess_type,pk_range_awards pk_awards,nvl(b.purchase_check,0) ASSESS_TARGET,
|
||
|
|
1 IS_EXAMINE,2 assess_status,ct.pk_settle_country PK_COUNTRY,1 pk_creator
|
||
|
|
from ${sourceTableName} ct
|
||
|
|
left join bd_range_awards b
|
||
|
|
on ct.pk_range_awards=b.pk_id
|
||
|
|
where category=0
|
||
|
|
) b
|
||
|
|
on (a.pk_member=b.pk_member and a.period=b.period and a.assess_type=b.assess_type)
|
||
|
|
WHEN MATCHED THEN
|
||
|
|
update set a.SETTLE_MONTH=b.SETTLE_MONTH,a.PK_AWARDS=b.PK_AWARDS,a.ASSESS_TARGET=b.ASSESS_TARGET,
|
||
|
|
a.IS_EXAMINE=b.IS_EXAMINE,a.ASSESS_STATUS=b.ASSESS_STATUS
|
||
|
|
when not matched then
|
||
|
|
insert (PK_MEMBER,period,SETTLE_MONTH,ASSESS_TYPE,PK_AWARDS,ASSESS_TARGET,
|
||
|
|
IS_EXAMINE,ASSESS_STATUS,PK_COUNTRY,PK_CREATOR)
|
||
|
|
values(b.PK_MEMBER,b.period,b.SETTLE_MONTH,b.ASSESS_TYPE,b.PK_AWARDS,b.ASSESS_TARGET,
|
||
|
|
b.IS_EXAMINE,b.ASSESS_STATUS,b.PK_COUNTRY,b.PK_CREATOR)
|
||
|
|
</insert>
|
||
|
|
|
||
|
|
<update id="createCuMemberAssessTable">
|
||
|
|
create table ${tableName}
|
||
|
|
(
|
||
|
|
<include refid="CuMemberAssessColumn"></include>
|
||
|
|
)
|
||
|
|
</update>
|
||
|
|
|
||
|
|
<update id="createCuMemberTableUniqueIndex">
|
||
|
|
create unique index ${tableName}_PK_M on ${tableName}(PK_MEMBER,period, assess_type)
|
||
|
|
</update>
|
||
|
|
|
||
|
|
<update id="updateAssessPeriodBeginByBeforeMonth">
|
||
|
|
merge into ${tableName} a
|
||
|
|
using (select pk_member,assess_type,month_surplus from ${beforeTableName} cs
|
||
|
|
inner join cu_member cm
|
||
|
|
on cs.pk_member=cm.pk_id and cm.del_flag=0
|
||
|
|
where period = #{sourcePeriod} and assess_type = #{assessType} and cm.system_type=0) b
|
||
|
|
on (a.pk_member = b.pk_member and a.assess_type = b.assess_type)
|
||
|
|
when matched then
|
||
|
|
update set a.month_balance = b.month_surplus where a.del_flag= 0 and a.period= #{period}
|
||
|
|
</update>
|
||
|
|
<update id="updateAssessPeriodAddBySaOrder">
|
||
|
|
merge into ${tableName} a
|
||
|
|
using (select pk_member,#{period} period,#{assessType} assess_type,sum(order_achieve) order_achieve from(
|
||
|
|
select pk_member,(case when #{assessType} = 0 then order_achieve else order_ass_achieve end) order_achieve from sa_order
|
||
|
|
where del_flag = 0 and order_status = 1 and order_type in
|
||
|
|
<foreach collection="orderTypeList" item="item" open="(" close=")" separator=",">
|
||
|
|
#{item}
|
||
|
|
</foreach>
|
||
|
|
and pay_time >= #{startDate, jdbcType=DATE} and pay_time < #{endDate, jdbcType=DATE}
|
||
|
|
<!-- <if test="assessType == 0">
|
||
|
|
union all
|
||
|
|
select pk_member,order_achieve order_achieve from sa_t_order
|
||
|
|
where del_flag = 0 and order_status = 1 and order_type =21
|
||
|
|
and pay_time >= #{startDate, jdbcType=DATE} and pay_time < #{endDate, jdbcType=DATE}
|
||
|
|
</if>-->
|
||
|
|
)
|
||
|
|
group by pk_member
|
||
|
|
) b
|
||
|
|
on (a.pk_member = b.pk_member and a.period= b.period and a.assess_type= b.assess_type)
|
||
|
|
when matched then
|
||
|
|
update set a.MONTH_ADD=b.order_achieve
|
||
|
|
</update>
|
||
|
|
|
||
|
|
<update id="updateAssessPeriodExemptBalanceByUsed">
|
||
|
|
update ${tableName} set month_surplus = month_balance+month_add
|
||
|
|
where del_flag= 0 and period = #{period}
|
||
|
|
</update>
|
||
|
|
|
||
|
|
<update id="updateAssessPeriodCheckBalanceByUsed">
|
||
|
|
update ${tableName} set assess_status = 0, month_used = assess_target, month_surplus = month_balance+month_add-assess_target
|
||
|
|
where del_flag= 0 and assess_status=2 and period = #{period} and assess_target <= month_balance+month_add
|
||
|
|
</update>
|
||
|
|
|
||
|
|
<update id="updateAssessCuMemberToRepExempt">
|
||
|
|
merge into ${tableName} a
|
||
|
|
using (
|
||
|
|
select distinct pk_member,#{period} period,0 assess_type from(
|
||
|
|
select pk_id pk_member from cu_member where del_flag =0 and category =0
|
||
|
|
and pay_status = 1
|
||
|
|
and pay_time >= #{startDate, jdbcType=DATE} and pay_time < #{endDate, jdbcType=DATE}
|
||
|
|
union
|
||
|
|
select pk_member from cu_member_awards
|
||
|
|
where del_flag=0 and purchase_status= 0 and
|
||
|
|
period >= #{startPeriod} and period < #{endPeriod}
|
||
|
|
union
|
||
|
|
select pk_member from ${settleTableName} ct
|
||
|
|
inner join bd_awards ba
|
||
|
|
on ct.pk_awards = ba.pk_id
|
||
|
|
where ct.purchase_status=0 and ba.purchase_check >0)
|
||
|
|
) b
|
||
|
|
on (a.pk_member = b.pk_member and a.period=b.period and a.assess_type=b.assess_type)
|
||
|
|
when matched then
|
||
|
|
update set a.is_examine=0
|
||
|
|
</update>
|
||
|
|
|
||
|
|
<update id="updateCuMemberSettleToRepExempt">
|
||
|
|
merge into ${settleTableName} a
|
||
|
|
using ( select distinct pk_id pk_member from cu_member where del_flag =0 and category =0
|
||
|
|
and pay_status = 1
|
||
|
|
and pay_time >= #{startDate, jdbcType=DATE} and pay_time < #{endDate, jdbcType=DATE}
|
||
|
|
<!--union
|
||
|
|
select distinct pk_member from cu_member_awards
|
||
|
|
where del_flag=0 and purchase_status= 0 and
|
||
|
|
period >= #{startPeriod} and period < #{endPeriod}-->
|
||
|
|
) b
|
||
|
|
on (a.pk_member = b.pk_member)
|
||
|
|
when matched then
|
||
|
|
update set a.purchase_status=0
|
||
|
|
</update>
|
||
|
|
|
||
|
|
<delete id="deleteCuMemberAssessByPeriod">
|
||
|
|
delete from ${tableName} where period = #{period} and del_flag=0
|
||
|
|
</delete>
|
||
|
|
|
||
|
|
<select id="queryAssessPeriodByRevokeOrder" resultMap="CuMemberAssess">
|
||
|
|
select sa.pk_id,sa.pk_member,sa.assess_type,sa.assess_target,sa.is_examine,sa.assess_status,
|
||
|
|
sa.month_balance,sa.month_add,sa.month_used,sa.month_surplus,
|
||
|
|
st.pk_awards,sa.pk_awards pk_original_awards,sa.pk_country from ${tableName} sa
|
||
|
|
inner join ${settleTableName} st
|
||
|
|
on sa.pk_member=st.pk_member
|
||
|
|
where sa.del_flag= 0 and sa.is_examine = 0 and sa.period = #{period}
|
||
|
|
and sa.pk_member in
|
||
|
|
<foreach collection="saOrderList" item="item" open="(" close=")" separator=",">
|
||
|
|
#{item.pkMember}
|
||
|
|
</foreach>
|
||
|
|
</select>
|
||
|
|
|
||
|
|
<select id="queryCuMemberAssessByMember" resultMap="CuMemberAssess">
|
||
|
|
select pk_member, assess_status from ${tableName}
|
||
|
|
where period= #{period} and assess_type = #{assessType} and assess_status in (0, 1)
|
||
|
|
and pk_member in
|
||
|
|
<foreach collection="cuMemberSettleExtList" item="item" open="(" close=")" separator=",">
|
||
|
|
#{item.pkMember}
|
||
|
|
</foreach>
|
||
|
|
</select>
|
||
|
|
|
||
|
|
<select id="queryCuMemberShareAssess" resultType="com.hzs.common.domain.member.detail.CuMemberAssess">
|
||
|
|
select pk_member,PERIOD,PK_AWARDS,assess_status,pk_country from ${tableName} where period= #{period} and assess_type=1
|
||
|
|
and assess_status in(0,1) and pk_country=1
|
||
|
|
union
|
||
|
|
select ca.pk_member,ca.PERIOD,ca.PK_AWARDS,ca.assess_status,ca.pk_country from ${tableName} ca
|
||
|
|
inner join bd_awards ba
|
||
|
|
on ca.PK_AWARDS=ba.pk_id
|
||
|
|
where period= #{period} and assess_type=0 and assess_status in(0,1) and ca.pk_country >1 and ba.awards_value>0
|
||
|
|
</select>
|
||
|
|
|
||
|
|
|
||
|
|
<!-- 会员-考核明细列表-->
|
||
|
|
<select id="selectAssessList"
|
||
|
|
resultType="com.hzs.bonus.detail.vo.CuMemberAssessVO">
|
||
|
|
|
||
|
|
select * from (
|
||
|
|
SELECT
|
||
|
|
a.PK_ASSESS pkAssess,
|
||
|
|
a.PK_MEMBER pkMember,
|
||
|
|
a.TRADE_TIME tradeTime,
|
||
|
|
a.PK_ORDER pkOrder,
|
||
|
|
a.CHANGE_TYPE changeType,
|
||
|
|
a.TRADE_ACHIEVE tradeAchieve,
|
||
|
|
0 orderAssAchieve,
|
||
|
|
0 orderAchieve,
|
||
|
|
'' orderCode
|
||
|
|
FROM
|
||
|
|
CU_MEMBER_ASSESS_DETAIL a
|
||
|
|
LEFT JOIN ${tableName} b on b.PK_ID=a.PK_ASSESS
|
||
|
|
WHERE
|
||
|
|
a.DEL_FLAG = 0
|
||
|
|
<if test="pkMember != null ">
|
||
|
|
AND a.PK_MEMBER = #{pkMember}
|
||
|
|
</if>
|
||
|
|
<if test="pkCountry != null ">
|
||
|
|
AND a.PK_COUNTRY = #{pkCountry}
|
||
|
|
</if>
|
||
|
|
|
||
|
|
<if test="changeType != null ">
|
||
|
|
AND a.CHANGE_TYPE = #{changeType}
|
||
|
|
</if>
|
||
|
|
<if test="assessType != null ">
|
||
|
|
AND b.ASSESS_TYPE = #{assessType}
|
||
|
|
</if>
|
||
|
|
<if test="assessStatus != null ">
|
||
|
|
AND b.ASSESS_STATUS = #{assessStatus}
|
||
|
|
</if>
|
||
|
|
|
||
|
|
<if test="changeType ==null and assessStatus==null ">
|
||
|
|
UNION ALL
|
||
|
|
select
|
||
|
|
null pkAssess,
|
||
|
|
PK_MEMBER pkMember,
|
||
|
|
PAY_TIME tradeTime,
|
||
|
|
null pkOrder,
|
||
|
|
null changeType,
|
||
|
|
null tradeAchieve,
|
||
|
|
ORDER_ASS_ACHIEVE orderAssAchieve,
|
||
|
|
ORDER_ACHIEVE orderAchieve,
|
||
|
|
ORDER_CODE orderCode
|
||
|
|
from SA_ORDER
|
||
|
|
WHERE
|
||
|
|
DEL_FLAG = 0
|
||
|
|
<if test="pkMember != null ">
|
||
|
|
AND PK_MEMBER = #{pkMember}
|
||
|
|
</if>
|
||
|
|
<if test="orderTypeList != null ">
|
||
|
|
and ORDER_TYPE in
|
||
|
|
<foreach collection="orderTypeList" item="item" open="(" close=")" separator=",">
|
||
|
|
#{item}
|
||
|
|
</foreach>
|
||
|
|
</if>
|
||
|
|
<if test="assessType == 0 ">
|
||
|
|
AND order_achieve > 0
|
||
|
|
</if>
|
||
|
|
<if test="assessType == 1 ">
|
||
|
|
AND ORDER_ASS_ACHIEVE > 0
|
||
|
|
</if>
|
||
|
|
|
||
|
|
<if test="pkCountry != null ">
|
||
|
|
AND PK_COUNTRY = #{pkCountry}
|
||
|
|
</if>
|
||
|
|
|
||
|
|
<if test="startDate != null">
|
||
|
|
and PAY_TIME >= #{startDate, jdbcType=DATE}
|
||
|
|
</if>
|
||
|
|
<if test="endDate != null">
|
||
|
|
and PAY_TIME < #{endDate, jdbcType=DATE}
|
||
|
|
</if>
|
||
|
|
|
||
|
|
</if>
|
||
|
|
)
|
||
|
|
order by tradeTime desc
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
</select>
|
||
|
|
<!--查询会员月度考核-->
|
||
|
|
<select id="getMemberAssessMonthList"
|
||
|
|
resultType="com.hzs.bonus.detail.vo.CuMemberAssessVO">
|
||
|
|
SELECT
|
||
|
|
a.pk_id pkId,
|
||
|
|
a.SETTLE_MONTH settleMonth,
|
||
|
|
a.ASSESS_STATUS assessStatus,
|
||
|
|
a.MONTH_SURPLUS monthSurplus,
|
||
|
|
a.CREATION_TIME creationTime
|
||
|
|
FROM
|
||
|
|
${tableName} a
|
||
|
|
WHERE
|
||
|
|
a.DEL_FLAG = 0
|
||
|
|
<if test="period != null ">
|
||
|
|
AND a.period=#{period}
|
||
|
|
</if>
|
||
|
|
<if test="pkMember != null ">
|
||
|
|
AND a.PK_MEMBER = #{pkMember}
|
||
|
|
</if>
|
||
|
|
<if test="pkCountry != null ">
|
||
|
|
AND a.PK_COUNTRY = #{pkCountry}
|
||
|
|
</if>
|
||
|
|
<if test="assessType != null ">
|
||
|
|
AND a.ASSESS_TYPE = #{assessType}
|
||
|
|
</if>
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
</select>
|
||
|
|
<!--根据考核类型查询会员订单信息-->
|
||
|
|
<select id="getOrderByAssessList"
|
||
|
|
resultType="com.hzs.bonus.detail.vo.CuMemberAssessVO">
|
||
|
|
select PK_MEMBER pkMember,
|
||
|
|
PAY_TIME tradeTime,
|
||
|
|
ORDER_ASS_ACHIEVE orderAssAchieve,
|
||
|
|
ORDER_ACHIEVE orderAchieve,
|
||
|
|
ORDER_TYPE orderType,
|
||
|
|
ORDER_CODE orderCode
|
||
|
|
from SA_ORDER
|
||
|
|
WHERE
|
||
|
|
DEL_FLAG = 0
|
||
|
|
<if test="pkMember != null ">
|
||
|
|
AND PK_MEMBER = #{pkMember}
|
||
|
|
</if>
|
||
|
|
<if test="pkCountry != null ">
|
||
|
|
AND PK_COUNTRY = #{pkCountry}
|
||
|
|
</if>
|
||
|
|
<if test="orderType != null ">
|
||
|
|
AND ORDER_TYPE = #{orderType}
|
||
|
|
</if>
|
||
|
|
<if test="startDate != null">
|
||
|
|
and PAY_TIME >= #{startDate, jdbcType=DATE}
|
||
|
|
</if>
|
||
|
|
<if test="endDate != null">
|
||
|
|
and PAY_TIME < #{endDate, jdbcType=DATE}
|
||
|
|
</if>
|
||
|
|
order by PAY_TIME desc
|
||
|
|
</select>
|
||
|
|
|
||
|
|
|
||
|
|
<!--查询会员订单考核积分-->
|
||
|
|
<select id="getOrderAssessList" parameterType="com.hzs.bonus.detail.vo.CuMemberAssessVO"
|
||
|
|
resultType="com.hzs.bonus.detail.vo.CuMemberAssessVO">
|
||
|
|
SELECT
|
||
|
|
sum (ORDER_ASS_ACHIEVE) orderAssAchieve,
|
||
|
|
sum (ORDER_ACHIEVE) orderAchieve
|
||
|
|
FROM
|
||
|
|
SA_ORDER a
|
||
|
|
WHERE
|
||
|
|
a.DEL_FLAG = 0
|
||
|
|
<if test="orderTypeList != null ">
|
||
|
|
AND a.order_type in
|
||
|
|
<foreach collection="orderTypeList" item="item" open="(" close=")" separator=",">
|
||
|
|
#{item}
|
||
|
|
</foreach>
|
||
|
|
</if>
|
||
|
|
|
||
|
|
<if test="pkMember != null ">
|
||
|
|
AND a.PK_MEMBER = #{pkMember}
|
||
|
|
</if>
|
||
|
|
<if test="pkCountry != null ">
|
||
|
|
AND a.PK_COUNTRY = #{pkCountry}
|
||
|
|
</if>
|
||
|
|
<if test="startDate != null">
|
||
|
|
and a.PAY_TIME >= #{startDate, jdbcType=DATE}
|
||
|
|
</if>
|
||
|
|
<if test="endDate != null">
|
||
|
|
and a.PAY_TIME < #{endDate, jdbcType=DATE}
|
||
|
|
</if>
|
||
|
|
|
||
|
|
</select>
|
||
|
|
<select id="queryCuMemberAssTotal" resultType="com.hzs.common.domain.member.detail.CuMemberAssess">
|
||
|
|
select cm.pk_awards pkAwards,count(cm.pk_id) assessStatus from ${settleTable} cm
|
||
|
|
inner join bd_awards ba
|
||
|
|
on cm.pk_awards = ba.pk_id
|
||
|
|
where period= #{period} and cm.pk_country= #{pkCountry} and ASSESS_TYPE=1 and ASSESS_STATUS in(0,1)
|
||
|
|
and ba.awards_value >0
|
||
|
|
group by cm.pk_awards
|
||
|
|
order by pk_awards
|
||
|
|
</select>
|
||
|
|
|
||
|
|
</mapper>
|