<?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.dy.pipIrrGlobal.daoSe.SeGeneralMapper"> 
 | 
  <resultMap id="BaseResultMap" type="com.dy.pipIrrGlobal.pojoSe.SeGeneral"> 
 | 
    <!--@mbg.generated--> 
 | 
    <!--@Table se_general--> 
 | 
    <id column="id" jdbcType="BIGINT" property="id" /> 
 | 
    <result column="cashier_id" jdbcType="BIGINT" property="cashierId" /> 
 | 
    <result column="cashier_name" jdbcType="VARCHAR" property="cashierName" /> 
 | 
    <result column="trade_amount" jdbcType="FLOAT" property="tradeAmount" /> 
 | 
    <result column="gift" jdbcType="FLOAT" property="gift" /> 
 | 
    <result column="refund_amount" jdbcType="FLOAT" property="refundAmount" /> 
 | 
    <result column="operate_date" jdbcType="TIMESTAMP" property="operateDate" /> 
 | 
    <result column="audit_status" jdbcType="TINYINT" property="auditStatus" /> 
 | 
  </resultMap> 
 | 
  <sql id="Base_Column_List"> 
 | 
    <!--@mbg.generated--> 
 | 
    id, cashier_id, cashier_name, trade_amount, gift, refund_amount, operate_date, audit_status 
 | 
  </sql> 
 | 
  <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap"> 
 | 
    <!--@mbg.generated--> 
 | 
    select  
 | 
    <include refid="Base_Column_List" /> 
 | 
    from se_general 
 | 
    where id = #{id,jdbcType=BIGINT} 
 | 
  </select> 
 | 
  <delete id="deleteByPrimaryKey" parameterType="java.lang.Long"> 
 | 
    <!--@mbg.generated--> 
 | 
    delete from se_general 
 | 
    where id = #{id,jdbcType=BIGINT} 
 | 
  </delete> 
 | 
  <insert id="insert" parameterType="com.dy.pipIrrGlobal.pojoSe.SeGeneral"> 
 | 
    <!--@mbg.generated--> 
 | 
    insert into se_general (id, cashier_id, cashier_name,  
 | 
      trade_amount, gift, refund_amount, 
 | 
      operate_date, audit_status) 
 | 
    values (#{id,jdbcType=BIGINT}, #{cashierId,jdbcType=BIGINT}, #{cashierName,jdbcType=VARCHAR},  
 | 
      #{tradeAmount,jdbcType=FLOAT}, #{gift,jdbcType=FLOAT}, #{refundAmount,jdbcType=FLOAT}, 
 | 
      #{operateDate,jdbcType=TIMESTAMP}, #{auditStatus,jdbcType=TINYINT}) 
 | 
  </insert> 
 | 
  <insert id="insertSelective" parameterType="com.dy.pipIrrGlobal.pojoSe.SeGeneral"> 
 | 
    <!--@mbg.generated--> 
 | 
    insert into se_general 
 | 
    <trim prefix="(" suffix=")" suffixOverrides=","> 
 | 
      <if test="id != null"> 
 | 
        id, 
 | 
      </if> 
 | 
      <if test="cashierId != null"> 
 | 
        cashier_id, 
 | 
      </if> 
 | 
      <if test="cashierName != null"> 
 | 
        cashier_name, 
 | 
      </if> 
 | 
      <if test="tradeAmount != null"> 
 | 
        trade_amount, 
 | 
      </if> 
 | 
      <if test="gift != null"> 
 | 
        gift, 
 | 
      </if> 
 | 
      <if test="refundAmount != null"> 
 | 
        refund_amount, 
 | 
      </if> 
 | 
      <if test="operateDate != null"> 
 | 
        operate_date, 
 | 
      </if> 
 | 
      <if test="auditStatus != null"> 
 | 
        audit_status, 
 | 
      </if> 
 | 
    </trim> 
 | 
    <trim prefix="values (" suffix=")" suffixOverrides=","> 
 | 
      <if test="id != null"> 
 | 
        #{id,jdbcType=BIGINT}, 
 | 
      </if> 
 | 
      <if test="cashierId != null"> 
 | 
        #{cashierId,jdbcType=BIGINT}, 
 | 
      </if> 
 | 
      <if test="cashierName != null"> 
 | 
        #{cashierName,jdbcType=VARCHAR}, 
 | 
      </if> 
 | 
      <if test="tradeAmount != null"> 
 | 
        #{tradeAmount,jdbcType=FLOAT}, 
 | 
      </if> 
 | 
      <if test="gift != null"> 
 | 
        #{gift,jdbcType=FLOAT}, 
 | 
      </if> 
 | 
      <if test="refundAmount != null"> 
 | 
        #{refundAmount,jdbcType=FLOAT}, 
 | 
      </if> 
 | 
      <if test="operateDate != null"> 
 | 
        #{operateDate,jdbcType=TIMESTAMP}, 
 | 
      </if> 
 | 
      <if test="auditStatus != null"> 
 | 
        #{auditStatus,jdbcType=TINYINT}, 
 | 
      </if> 
 | 
    </trim> 
 | 
  </insert> 
 | 
  <update id="updateByPrimaryKeySelective" parameterType="com.dy.pipIrrGlobal.pojoSe.SeGeneral"> 
 | 
    <!--@mbg.generated--> 
 | 
    update se_general 
 | 
    <set> 
 | 
      <if test="cashierId != null"> 
 | 
        cashier_id = #{cashierId,jdbcType=BIGINT}, 
 | 
      </if> 
 | 
      <if test="cashierName != null"> 
 | 
        cashier_name = #{cashierName,jdbcType=VARCHAR}, 
 | 
      </if> 
 | 
      <if test="tradeAmount != null"> 
 | 
        trade_amount = #{tradeAmount,jdbcType=FLOAT}, 
 | 
      </if> 
 | 
      <if test="gift != null"> 
 | 
        gift = #{gift,jdbcType=FLOAT}, 
 | 
      </if> 
 | 
      <if test="refundAmount != null"> 
 | 
        refund_amount = #{refundAmount,jdbcType=FLOAT}, 
 | 
      </if> 
 | 
      <if test="operateDate != null"> 
 | 
        operate_date = #{operateDate,jdbcType=TIMESTAMP}, 
 | 
      </if> 
 | 
      <if test="auditStatus != null"> 
 | 
        audit_status = #{auditStatus,jdbcType=TINYINT}, 
 | 
      </if> 
 | 
    </set> 
 | 
    where id = #{id,jdbcType=BIGINT} 
 | 
  </update> 
 | 
  <update id="updateByPrimaryKey" parameterType="com.dy.pipIrrGlobal.pojoSe.SeGeneral"> 
 | 
    <!--@mbg.generated--> 
 | 
    update se_general 
 | 
    set cashier_id = #{cashierId,jdbcType=BIGINT}, 
 | 
      cashier_name = #{cashierName,jdbcType=VARCHAR}, 
 | 
      trade_amount = #{tradeAmount,jdbcType=FLOAT}, 
 | 
      gift = #{gift,jdbcType=FLOAT}, 
 | 
      refund_amount = #{refundAmount,jdbcType=FLOAT}, 
 | 
      operate_date = #{operateDate,jdbcType=TIMESTAMP}, 
 | 
      audit_status = #{auditStatus,jdbcType=TINYINT} 
 | 
    where id = #{id,jdbcType=BIGINT} 
 | 
  </update> 
 | 
  
 | 
  <!--获取未生成总账的交易日期列表(当天的交易记录不生成总账)--> 
 | 
  <select id="getDatesOfNotInGenerals" resultType="java.util.HashMap"> 
 | 
    SELECT 
 | 
      DISTINCT Date(ope.operate_dt) AS operateDate 
 | 
    FROM se_card_operate ope 
 | 
    WHERE Date(ope.operate_dt) NOT IN(SELECT operate_date FROM se_general) AND Date(ope.operate_dt) != CURDATE() 
 | 
  </select> 
 | 
  
 | 
  <!--根据交易日期获取总账记录列表(待生成的)  --> 
 | 
  <select id="getGeneralByOperateDate" resultType="com.dy.pipIrrGlobal.pojoSe.SeGeneral"> 
 | 
    SELECT 
 | 
        us.id AS cashierId, 
 | 
        us.`name` AS cashierName, 
 | 
        (IFNULL(SUM(ope.trade_amount),0) + IFNULL(SUM(ope.card_cost),0)) AS tradeAmount, 
 | 
        IFNULL(SUM(ope.gift),0) AS gift, 
 | 
        IFNULL(SUM(ope.refund_amount),0) AS refundAmount, 
 | 
        Date(ope.operate_dt) AS operateDate, 
 | 
        1 AS auditStatus 
 | 
    FROM se_card_operate ope 
 | 
        INNER JOIN ba_user us ON ope.operator = us.id 
 | 
    WHERE Date(ope.operate_dt) = #{operateDate} 
 | 
    GROUP BY ope.operator, Date(ope.operate_dt) 
 | 
  
 | 
    UNION ALL 
 | 
  
 | 
    SELECT 
 | 
        1000000 AS cashierId, 
 | 
        '微信' AS cashierName, 
 | 
        IFNULL(SUM(amount), 0) AS tradeAmount, 
 | 
        0 AS gift, 
 | 
        0 AS refundAmount, 
 | 
        Date(recharge_time) AS operateDate, 
 | 
        1 AS auditStatus 
 | 
    FROM se_wallet_recharge 
 | 
    WHERE Date(recharge_time) = #{operateDate} 
 | 
    GROUP BY Date(recharge_time) 
 | 
  
 | 
    UNION ALL 
 | 
  
 | 
    SELECT 
 | 
        1000000 AS cashierId, 
 | 
        '微信' AS cashierName, 
 | 
        IFNULL(-SUM(refund_amount), 0) AS tradeAmount, 
 | 
        0 AS gift, 
 | 
        0 AS refundAmount, 
 | 
        Date(audit_time) AS operateDate, 
 | 
        1 AS auditStatus 
 | 
    FROM se_refund 
 | 
    WHERE Date(audit_time) = #{operateDate} 
 | 
    GROUP BY Date(audit_time) 
 | 
  </select> 
 | 
  
 | 
  <!--根据指定条件获取总账记录数--> 
 | 
  <select id="getRecordCount" parameterType="java.util.Map" resultType="java.lang.Long"> 
 | 
    SELECT 
 | 
    COUNT(*) AS recordCount 
 | 
    FROM se_general 
 | 
    <where> 
 | 
      <if test = "cashierName != null and cashierName !=''"> 
 | 
        AND cashier_name like CONCAT('%',#{cashierName},'%') 
 | 
      </if> 
 | 
  
 | 
      <if test = "auditStatus != null and auditStatus > 0"> 
 | 
        AND audit_status = ${auditStatus} 
 | 
      </if> 
 | 
  
 | 
      <if test = "operateDateStart != null and operateDateStop != null"> 
 | 
        AND Date(operate_date) BETWEEN #{operateDateStart} AND #{operateDateStop} 
 | 
      </if> 
 | 
    </where> 
 | 
  </select> 
 | 
  
 | 
  <!--根据指定条件获取总账记录--> 
 | 
  <select id="getGenerals" resultType="com.dy.pipIrrGlobal.voSe.VoGeneral"> 
 | 
    SELECT 
 | 
        CAST(id AS  char) AS generalId, 
 | 
        CAST(cashier_id AS char) AS cashierId, 
 | 
        cashier_name AS cashierName, 
 | 
        trade_amount AS tradeAmount, 
 | 
        gift, 
 | 
        refund_amount AS refundAmount, 
 | 
        Date(operate_date) AS operateDate, 
 | 
        (CASE 
 | 
          WHEN audit_status = 1 THEN "未审核" 
 | 
          WHEN audit_status = 2 THEN "同意" 
 | 
          WHEN audit_status = 3 THEN "驳回" 
 | 
        END) AS auditStatus 
 | 
    FROM se_general 
 | 
    <where> 
 | 
      <if test = "cashierName != null and cashierName !=''"> 
 | 
        AND cashier_name like CONCAT('%',#{cashierName},'%') 
 | 
      </if> 
 | 
  
 | 
      <if test = "auditStatus != null and auditStatus > 0"> 
 | 
        AND audit_status = ${auditStatus} 
 | 
      </if> 
 | 
  
 | 
      <if test = "operateDateStart != null and operateDateStop != null"> 
 | 
        AND Date(operate_date) BETWEEN #{operateDateStart} AND #{operateDateStop} 
 | 
      </if> 
 | 
    </where> 
 | 
    ORDER BY Date(operate_date) DESC 
 | 
    <trim prefix="limit " > 
 | 
      <if test="start != null and count != null"> 
 | 
        #{start,javaType=Integer,jdbcType=INTEGER}, #{count,javaType=Integer,jdbcType=INTEGER} 
 | 
      </if> 
 | 
    </trim> 
 | 
  </select> 
 | 
  
 | 
  <!--获取指定日期、指定收银员、指定支付方式实收金额合计--> 
 | 
  <select id="getPaymentSums" resultType="java.lang.Float"> 
 | 
    SELECT 
 | 
    SUM(ope.trade_amount) AS tradeAmount 
 | 
    FROM se_card_operate ope 
 | 
    <where> 
 | 
      <if test = "tradeDate != null and tradeDate !=''"> 
 | 
        AND Date(ope.operate_dt) = #{tradeDate} 
 | 
      </if> 
 | 
  
 | 
      <if test = "paymentId != null and paymentId >0"> 
 | 
        AND ope.payment_id = ${paymentId} 
 | 
      </if> 
 | 
  
 | 
      <if test = "cashierId != null and cashierId >0"> 
 | 
        AND ope.operator = ${cashierId} 
 | 
      </if> 
 | 
    </where> 
 | 
    GROUP BY ope.payment_id,  Date(ope.operate_dt) 
 | 
  </select> 
 | 
  
 | 
  <!--  财务对账审核页,收银员+日期分组,排除交易类型分组,记录数--> 
 | 
<!--  <select id="getToAuditRecordCount" parameterType="java.util.Map" resultType="java.lang.Long">--> 
 | 
<!--    SELECT--> 
 | 
<!--    COUNT(*) AS recordCount--> 
 | 
<!--    FROM v_trade_summary--> 
 | 
<!--    <where>--> 
 | 
<!--      <if test = "cashierId != null and cashierId > 0">--> 
 | 
<!--        AND cashierId = ${cashierId}--> 
 | 
<!--      </if>--> 
 | 
  
 | 
<!--      <if test = "tradeDate != null">--> 
 | 
<!--        AND tradeDate = #{tradeDate}--> 
 | 
<!--      </if>--> 
 | 
<!--    </where>--> 
 | 
<!--  </select>--> 
 | 
  
 | 
  <!--开卡系统交易统计,收银员+日期+类型分组--> 
 | 
  <select id="getSummaries" resultType="com.dy.pipIrrGlobal.voSe.VoTransactionStatistics"> 
 | 
    SELECT * FROM v_trade_summary 
 | 
    <where> 
 | 
      <if test = "cashierId != null and cashierId > 0"> 
 | 
        AND cashierId = ${cashierId} 
 | 
      </if> 
 | 
  
 | 
      <if test = "timeStart != null and timeStop != null"> 
 | 
        AND Date(tradeDate) BETWEEN #{timeStart} AND #{timeStop} 
 | 
      </if> 
 | 
    </where> 
 | 
    ORDER BY tradeDate 
 | 
  </select> 
 | 
  
 | 
  <!--  根据收银员ID及日期获取财务对账_交易明细记录数--> 
 | 
  <select id="getTradeDetailsRecordCount" parameterType="java.util.Map" resultType="java.lang.Long"> 
 | 
    SELECT 
 | 
        COUNT(*) AS recordCount 
 | 
    FROM v_trade_details 
 | 
    <where> 
 | 
      <if test = "cashierId != null and cashierId > 0"> 
 | 
        AND cashierId = ${cashierId} 
 | 
      </if> 
 | 
  
 | 
      <if test = "tradeDate != null"> 
 | 
        AND Date(tradeTime) = #{tradeDate} 
 | 
      </if> 
 | 
    </where> 
 | 
  </select> 
 | 
  
 | 
  <!--根据收银员ID及日期获取财务对账_交易明细记录--> 
 | 
  <select id="getTradeDetails" resultType="com.dy.pipIrrGlobal.voSe.VoTradeDetails"> 
 | 
    SELECT * FROM v_trade_details 
 | 
    <where> 
 | 
      <if test = "cashierId != null and cashierId > 0"> 
 | 
        AND cashierId = ${cashierId} 
 | 
      </if> 
 | 
  
 | 
      <if test = "tradeDate != null"> 
 | 
        AND Date(tradeTime) = #{tradeDate} 
 | 
      </if> 
 | 
    </where> 
 | 
    ORDER BY tradeTime 
 | 
    <trim prefix="limit " > 
 | 
      <if test="start != null and count != null"> 
 | 
        #{start,javaType=Integer,jdbcType=INTEGER}, #{count,javaType=Integer,jdbcType=INTEGER} 
 | 
      </if> 
 | 
    </trim> 
 | 
  </select> 
 | 
</mapper> 
 |