版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/cainiaobulan/article/details/85301195
<!-- 宴会明细 -->
<select id="getDetailList" resultType="java.util.Map" parameterType="java.lang.Long" >
with returncode as (
SELECT br.banquet_id, sum(br.success_count) as return_codes
from yjn_banquet_return br
WHERE 1 = 1
and br.status = '1'
<if test="id!=null">
and br.banquet_id = #{id}
</if>
GROUP BY br.banquet_id ),secondstep as
(
SELECT
yba. ID,
banquet_id,
audit_status,
audit_id,
audit_time,
se. NAME AS audit_name
FROM
yjn_banquet_audit yba
LEFT JOIN sys_employee AS se ON yba.audit_id = se. ID
WHERE yba.status = '1'
AND yba.audit_step = '2'
),firststep as(
SELECT
yba.ID,
banquet_id,
audit_status,
audit_id,
audit_time,
se. NAME AS audit_name
FROM
yjn_banquet_audit yba
LEFT JOIN sys_employee AS se ON yba.audit_id = se. ID
WHERE yba.status = '1'
AND yba.audit_step = '1'
),scannum as (
SELECT yjn_scan_bottles.banquet_id,
SUM (yjn_scan_bottles.num) AS num
FROM
yjn_scan_bottles
WHERE 1 = 1
<if test="id!=null">
and yjn_scan_bottles.banquet_id = #{id}
</if>
GROUP BY
yjn_scan_bottles.banquet_id
)
SELECT
yb.ID::varchar as id,
yb.code,
yb.name,
yb.banquet_type,
coalesce(pd.name,'') as wine_name,
yb.table_number,
coalesce(yb.wine_number,'0') AS wine_number,
coalesce(returncode.return_codes,'0') AS return_codes,
coalesce(yb.wine_number,'0') - coalesce(returncode.return_codes,'0') as actual_num,
coalesce(cm.name,'') as store_name,
coalesce(cu.name,'') as dealer_name,
to_char(yb.banquet_date, 'yyyy-MM-dd') as banquet_date,
to_char(yb.end_date, 'yyyy-MM-dd') as end_date,
yb.banquet_time,
yb.mss_province,
yb.mss_city,
yb.mss_area,
yb.address,
yb.creator_id,
sey.name as creator_name,
sd.name as depe_name,
to_char(yb.create_time, 'yyyy-MM-dd HH24:MI') as create_time,
yb.approval_status,
yb.wine_code,
pd.id as product_id,
pd.code as product_code,
coalesce(cm.code, '') as store_code,
coalesce(cu.code,'') as dealer_code,
yb.consumer,
yb.consumer_phone,
yb.documentary_mode,
yb.merchandiser,
coalesce(syee.name, '') as merchandiser_name,
yb.approver,
coalesce(ey.name, '') as approve_name,
coalesce(to_char(yb.approval_time,'yyyy-MM-dd HH24:MI'),'') AS approve_time,
coalesce(ass.code, '') as exe_id,
ybe.status as exe_status,
coalesce(yba.code, '') as appeal_code,
yba.approve_status as approve_status,
yb.approval_remark,
yb.code,
yb.pic_path,
yb.remarks,
ass.assign_status,
ybe.exe_time,
yba.appeal_status as appeal_audit_status,
firststep.audit_status as first_audit_status,
secondstep.audit_status as second_audit_status,
coalesce(scannum.num,'0') as scan_num
FROM yjn_banquet yb
<if test="sqlFilter != null and sqlFilter != ''" >
${sqlFilter}
</if>
left JOIN scannum on yb.id = scannum.banquet_id
LEFT JOIN returncode on returncode.banquet_id = yb.id
LEFT JOIN yjn_banquet_appeal yba on yb.id = yba.banquet_id and yba.appeal_status != '0'
LEFT JOIN yjn_banquet_assign ass on yb.id = ass.banquet_id
LEFT JOIN yjn_banquet_exe ybe on yb.id = ybe.banquet_id
LEFT JOIN sys_employee ey on yb.approver = ey."id" AND ey.status = '1'
LEFT JOIN sys_employee sey on yb.creator_id = sey."id" AND sey.status = '1'
left join sys_department sd on sey.dept_id = sd.id and sd.status = '1'
LEFT JOIN sys_employee syee on yb.merchandiser = syee."id" AND syee.status = '1'
LEFT JOIN bas_pd_product pd on yb.product_id = pd.id
LEFT JOIN bas_cm_customer cu on yb.dealer_id = cu.id AND cu.status = '1'
LEFT JOIN bas_cm_customer cm on yb.store_id = cm.id AND cm.status = '1'
LEFT JOIN secondstep on yb.id = secondstep.banquet_id
LEFT JOIN firststep on yb.id = firststep.banquet_id
WHERE 1=1
and yb.status = '1'
<if test="id!=null">
and yb.ID = #{id}
</if>
<if test="codeOrName !=null and codeOrName !=''">
and (yb.name like '%${codeOrName}%' OR yb.code like '%${codeOrName}%')
</if>
<if test="storeId!=null">
and cm.ID in
<foreach collection="storeId" open="(" separator="," close=")" item="index">
#{index}::int8
</foreach>
</if>
<if test="delearId !=null">
and cu.ID in
<foreach collection="delearId" open="(" separator="," close=")" item="index">
#{index}::int8
</foreach>
</if>
<if test="approvalArea!=null and approvalArea!=''">
and (coalesce(yb.mss_province,-1) in (${approvalArea}) and coalesce(yb.mss_city,-1) in (${approvalArea}) and coalesce(yb.mss_area,-1) in (${approvalArea}) )
</if>
<if test="banquetWine!=null">
and pd.id in
<foreach collection="banquetWine" open="(" separator="," close=")" item="index">
#{index}::int8
</foreach>
</if>
<if test="approval_status!=null and approval_status!=''">
and yb.approval_status in
<foreach collection="approval_status" open="(" separator="," close=")" item="index">
#{index}
</foreach>
</if>
<if test="banquetType!=null">
and yb.banquet_type in
<foreach collection="banquetType" open="(" separator="," close=")" item="index">
#{index}::INT8
</foreach>
</if>
<if test="start_date != null and start_date != ''">
and to_char(yb.create_time,'yyyy-MM-dd') >= #{start_date,jdbcType=TIMESTAMP}
</if>
<if test="end_date != null and end_date != ''">
and to_char(yb.create_time,'yyyy-MM-dd') <= #{end_date,jdbcType=TIMESTAMP}
</if>
<if test="beginTime !=null and beginTime!='' and endTime != null and endTime != ''">
<![CDATA[
and (
( to_char(yb.banquet_date,'yyyy-MM-dd') <=#{beginTime} and to_char(yb.end_date,'yyyy-MM-dd') >=#{beginTime})
or ( to_char(yb.banquet_date,'yyyy-MM-dd') <= #{endTime} and to_char(yb.end_date,'yyyy-MM-dd') >= #{endTime})
or ( to_char(yb.banquet_date,'yyyy-MM-dd') <= #{endTime} and to_char(yb.end_date,'yyyy-MM-dd') >= #{beginTime} )
)
]]>
</if>
ORDER BY yb.create_time DESC
</select>