TbBParkIncomeDaySmapper.xml 11.6 KB
<?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.zteits.order.mapper.smapper.TbBParkIncomeDaySmapper">
  <resultMap id="BaseResultMap" type="com.zteits.order.domain.TbBParkIncomeDay">
    <id column="id" jdbcType="BIGINT" property="id" />
    <result column="park_id" jdbcType="VARCHAR" property="parkId" />
    <result column="park_name" jdbcType="VARCHAR" property="parkName" />
    <result column="report_date" jdbcType="TIMESTAMP" property="reportDate" />
    <result column="order_total_fee" jdbcType="DECIMAL" property="orderTotalFee" />
    <result column="order_payed_fee" jdbcType="DECIMAL" property="orderPayedFee" />
    <result column="ali_payed_fee" jdbcType="DECIMAL" property="aliPayedFee" />
    <result column="weixin_payed_fee" jdbcType="DECIMAL" property="weixinPayedFee" />
    <result column="cash_payed_fee" jdbcType="DECIMAL" property="cashPayedFee" />
    <result column="balance_payed_fee" jdbcType="DECIMAL" property="balancePayedFee" />
    <result column="discount_fee" jdbcType="DECIMAL" property="discountFee" />
    <result column="escape_fee" jdbcType="DECIMAL" property="escapeFee" />
    <result column="free_count" jdbcType="INTEGER" property="freeCount" />
    <result column="escape_count" jdbcType="INTEGER" property="escapeCount" />
    <result column="create_empid" jdbcType="VARCHAR" property="createEmpid" />
    <result column="create_date" jdbcType="TIMESTAMP" property="createDate" />
    <result column="modfiy_empid" jdbcType="VARCHAR" property="modfiyEmpid" />
    <result column="modfiy_date" jdbcType="TIMESTAMP" property="modfiyDate" />
    <result column="data_state" jdbcType="INTEGER" property="dataState" />
  </resultMap>
  <sql id="Base_Column_List">
    id, park_id, park_name, report_date, order_total_fee, order_payed_fee, ali_payed_fee, 
    weixin_payed_fee, cash_payed_fee, balance_payed_fee, discount_fee, escape_fee, free_count, 
    escape_count, create_empid, create_date, modfiy_empid, modfiy_date, data_state
  </sql>
   
  <!-- 批量查询停车场收入数据 -->
  <insert id="batchInsertIncomeDay" >
    <selectKey keyProperty="id" order="AFTER" resultType="java.lang.Long">
      SELECT LAST_INSERT_ID()
    </selectKey>
    insert into tb_b_park_income_day ( park_id, 
      park_name, report_date, order_total_fee, 
      order_payed_fee, ali_payed_fee, weixin_payed_fee, 
      cash_payed_fee, balance_payed_fee, discount_fee, 
      escape_fee, free_count, escape_count, 
      create_empid, create_date, modfiy_empid, 
      modfiy_date,data_state)
    values 
     <foreach collection="list" item="income" separator=",">
    ( #{income.parkId,jdbcType=VARCHAR}, 
      #{income.parkName,jdbcType=VARCHAR}, #{income.reportDate,jdbcType=TIMESTAMP}, #{income.orderTotalFee,jdbcType=DECIMAL}, 
      #{income.orderPayedFee,jdbcType=DECIMAL}, #{income.aliPayedFee,jdbcType=DECIMAL}, #{income.weixinPayedFee,jdbcType=DECIMAL}, 
      #{income.cashPayedFee,jdbcType=DECIMAL}, #{income.balancePayedFee,jdbcType=DECIMAL}, #{income.discountFee,jdbcType=DECIMAL}, 
      #{income.escapeFee,jdbcType=DECIMAL}, #{income.freeCount,jdbcType=INTEGER}, #{income.escapeCount,jdbcType=INTEGER}, 
      #{income.createEmpid,jdbcType=VARCHAR}, #{income.createDate,jdbcType=TIMESTAMP}, #{income.modfiyEmpid,jdbcType=VARCHAR}, 
      #{income.modfiyDate,jdbcType=TIMESTAMP}, #{income.dataState,jdbcType=INTEGER})
      </foreach>
  </insert>
  
    
  <!--收益报表 收入表格-->
    <select id="queryParkIncomeDayForList" parameterType="com.zteits.clouds.api.dto.clouds.param.CustIncomeParkPayQueryRequset" resultType="com.zteits.order.domain.TbBParkIncomeDay">
            select          
                a.pl_no as parkId,
                a.pl_name as parkName,
                cc.pay_finish_time as reportDate,
                sum(case when a.park_order_type in(100,300,400,500) and a.order_state not in(52) then 
                      1
                    ELSE 
                      0
                 end) as freeCount,
                sum(case when a.park_order_type in(100,300,400,500) and a.order_state not in(52) then 
                      1
                    ELSE 
                      0
                 end) as freeCount,
                (sum(a.order_total_fee) + IFNULL(sum(case when a.order_state=52 THEN
                    a.arrearage_fee
                 end),0) )as orderTotalFee,
                sum(cc.order_payed_fee) as orderPayedFee,
                sum(cc.aliPayedFee) as aliPayedFee,
                sum(cc.weixinPayedFee) as weixinPayedFee,
                sum(cc.cashPayedFee) as cashPayedFee,
                sum(cc.balancePayedFee) as balancePayedFee,
                sum(cc.discountFee) as discountFee,
                IFNULL(sum(case when a.order_state=52 THEN
                    a.arrearage_fee
                 end),0) as escapeFee,
               sum(case when a.order_state=52 THEN
                    1
                   else
                     0
                 end) as escapeCount,
                '1'  as dataState,
                now() as createDate
            from order_park a ,(
            select 
               b.rlt_order_id,
               DATE_FORMAT(b.pay_finish_time,'%Y-%m-%d') as pay_finish_time,
              sum(b.order_act_fee) AS order_act_fee,
              sum(CASE WHEN b.pay_type = 6 THEN
                  b.order_act_fee
                  else 0
                 END) AS cashPayedFee,
              sum(CASE WHEN b.pay_type = 1 THEN
                  b.order_act_fee
                  else 0
                END)AS aliPayedFee,
              sum(CASE WHEN b.pay_type IN (2, 4) THEN
                  b.order_act_fee
                 else 0
                END) AS weixinPayedFee,
               sum(CASE WHEN b.pay_type IN (5) THEN
                  b.order_act_fee
                 else 0
                END) AS balancePayedFee,
                sum(ifnull(b.order_dicount_fee,0)) as discountFee,
                sum(ifnull(b.order_total_fee,0)) as order_total_fee,
                sum(ifnull(b.order_act_fee,0)) as order_payed_fee
            FROM
              pay_order b
            WHERE b.data_state=1
            AND b.pay_order_state = 40 /**-10:失败(作废,20:待支付,30:支付中,40:已支付,60:退款中,70:退款成功*/
            and b.pay_type in(1,2,4,5,6) /**支付方式 1:支付宝 2:微信 4:微信公众号,5:个人账户支付 6:现金*/
            and b.order_big_type=100  /**关联的订单大类型:100:停车订单 200:充值订单 300:会员卡订单*/
            <![CDATA[AND b.pay_finish_time >= #{beginTime}]]>
            <![CDATA[AND b.pay_finish_time <= #{endTime}]]>
            GROUP BY b.rlt_order_id, DATE_FORMAT(b.pay_finish_time,'%Y-%m-%d')) cc 
            where  cc.rlt_order_id=a.order_id
            AND  a.data_state=1
            group by cc.pay_finish_time,
                a.pl_no,
                a.pl_name 
    </select>
    <!-- 删除 -->
    <delete id="deleteIncomeDayByDate" >
       delete from tb_b_park_income_day
       where  1=1
         <![CDATA[ and DATE_FORMAT(report_date,'%Y-%m-%d')>= #{beginTime}]]>
          <![CDATA[and DATE_FORMAT(report_date,'%Y-%m-%d')<= #{endTime}]]>
    </delete>
    
    <!--云平台-停车收入按天统计 -->
    <select id="queryCustIncomeForParkPayByDay"
            parameterType="com.zteits.clouds.api.dto.clouds.param.CustIncomeParkPayQueryRequset"
            resultType="com.zteits.order.domain.sdo.CustIncomeForParkPayDO">
        select date(a.report_date) as queryDate,
            sum(a.ali_payed_fee ) as zfbPay,
            sum(a.weixin_payed_fee) as wxPay,
            sum(a.balance_payed_fee) as zhPay,
            sum(a.cash_payed_fee ) as xjPay,
            sum(a.order_payed_fee) as totalPay
            from tb_b_park_income_day a
            where a.data_state=1
        <if test="beginTime != null ">
            <![CDATA[ and a.report_date >= #{beginTime}  ]]>
        </if>
        <if test="endTime != null ">
            <![CDATA[ and a.report_date <= #{endTime}  ]]>
        </if>
        and a.park_id in
        <foreach collection="parkIdList" open="(" close=")" item="parkId" separator=",">
            #{parkId}
        </foreach>
        GROUP BY date(a.report_date)
    </select>

    <!--云平台-停车收入按月统计 -->
    <select id="queryCustIncomeForParkPayByMonth"
            parameterType="com.zteits.clouds.api.dto.clouds.param.CustIncomeParkPayQueryRequset"
            resultType="com.zteits.order.domain.sdo.CustIncomeForParkPayDO">
        select DATE_FORMAT(a.report_date,'%Y-%m') as queryDate,
        sum(a.ali_payed_fee ) as zfbPay,
        sum(a.weixin_payed_fee) as wxPay,
        sum(a.balance_payed_fee) as zhPay,
        sum(a.cash_payed_fee ) as xjPay,
        sum(a.order_payed_fee) as totalPay
        from tb_b_park_income_day a
        where a.data_state=1
        <if test="beginTime != null ">
            <![CDATA[ and a.report_date >= #{beginTime}  ]]>
        </if>
        <if test="endTime != null ">
            <![CDATA[ and a.report_date <= #{endTime}  ]]>
        </if>
        and a.park_id in
        <foreach collection="parkIdList" open="(" close=")" item="parkId" separator=",">
            #{parkId}
        </foreach>
        GROUP BY DATE_FORMAT(a.report_date,'%Y-%m')
    </select>

    <!--收益报表 收入表格(日)分页-->
    <select id="queryParkIncomeDetailforDay"
            parameterType="com.zteits.clouds.api.dto.clouds.param.CustIncomeParkPayQueryRequset"
            resultType="com.zteits.order.domain.sdo.ParkIncomeDetailforDO">
        SELECT
        DATE_FORMAT(report_date,'%Y-%m-%d') reportDate,
        a.park_id parkId,
        a.park_name parkName,
        a.free_count freeCount,
        a.order_total_fee orderTotalFee,
        a.order_payed_fee orderPayedFee,
        a.ali_payed_fee aliPayedFee,
        a.weixin_payed_fee weixinPayedFee,
        a.cash_payed_fee cashPayedFee,
        a.balance_payed_fee balancePayedFee,
        a.discount_fee discountFee,
        a.escape_count escapeCount
        FROM
        tb_b_park_income_day a
        where a.data_state =1
        <![CDATA[AND a.report_date >= #{beginTime}]]>
        <![CDATA[AND a.report_date <= #{endTime}]]>
        AND a.park_id IN
        <foreach collection="parkIdList" item="plNo" open="(" close=")" separator=",">
            #{plNo}
        </foreach>
        order by DATE_FORMAT(report_date,'%Y-%m-%d') desc ,a.park_id
    </select>

    <!--收益报表 收入表格(月)分页-->
    <select id="queryParkIncomeDetailforMonth"
            parameterType="com.zteits.clouds.api.dto.clouds.param.CustIncomeParkPayQueryRequset"
            resultType="com.zteits.order.domain.sdo.ParkIncomeDetailforDO">
        SELECT
        DATE_FORMAT(a.report_date,'%Y-%m') as reportDate,
        a.park_id parkId,
        a.park_name parkName,
        sum(a.free_count) freeCount,
        sum(a.order_total_fee) orderTotalFee,
        sum(a.order_payed_fee) orderPayedFee,
        sum(a.ali_payed_fee) aliPayedFee,
        sum(a.weixin_payed_fee) weixinPayedFee,
        sum(a.cash_payed_fee) cashPayedFee,
        sum(a.balance_payed_fee) balancePayedFee,
        sum(a.discount_fee)discountFee,
        sum(a.escape_count) escapeCount
        FROM tb_b_park_income_day a
        where a.data_state =1
        <![CDATA[AND a.report_date >= #{beginTime}]]>
        <![CDATA[AND a.report_date <= #{endTime}]]>
        AND a.park_id IN
        <foreach collection="parkIdList" item="plNo" open="(" close=")" separator=",">
            #{plNo}
        </foreach>

        group by DATE_FORMAT(a.report_date,'%Y-%m') ,
        a.park_id ,
        a.park_name
        order by DATE_FORMAT(a.report_date,'%Y-%m') desc ,a.park_id
    </select>
  
</mapper>