Helius
2022-05-27 4351e71d782741143a98f86f6648acd16689165f
zq-erp/src/main/resources/mybatis/mapper/hive/AchieveNewDao.xml
@@ -1,6 +1,6 @@
<?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">
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
      "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.matrix.system.hive.dao.AchieveNewDao">
   <!-- 定义AchieveNew 的复杂关联map -->
@@ -52,6 +52,7 @@
      <result property="goodsName" column="goodsName" />
      <result property="cateName" column="cateName" />
      <result property="achieveRuleName" column="achieveRuleName" />
   </resultMap>
@@ -68,6 +69,7 @@
      e.name as pro_name,
      b.ZK_TOTAL as zk_total,
      a.his_consume,
      er.name as achieveRuleName,
      a.free_consume,
      f.su_name meiliao,
      g.su_name guwen,
@@ -88,6 +90,7 @@
      left join sys_vip_info c on a.vip_id=c.id
      left join sys_vip_level d on c.LEVEL_ID=d.id
      left join shopping_goods e on a.shopping_goods_id=e.id
      left join achieve_rule er on e.achieve_rule_id=er.id
      LEFT JOIN sys_users f on a.beault_id=f.su_id
      LEFT JOIN sys_users g on a.sale_id = g.su_id
      LEFT JOIN sys_shop_info h ON a.SHOP_ID = h.ID
@@ -95,10 +98,14 @@
      left join sys_proj_services l on a.service_order_id=l.id
      left join sys_order_item j on a.order_item_id=j.ID
      <where>
         and   a.company_id = #{record.companyId}
         <if test="record!=null">
            <if
               test="(record.shopId!=null and record.shopId!='') or  (record.shopId!='' and record.shopId==0)  ">
                  test="(record.shopId!=null and record.shopId!='') or  (record.shopId!='' and record.shopId==0)  ">
               and a.shop_id = #{record.shopId}
            </if>
            <if test="record.achieveRuleId != null  ">
               and e.achieve_rule_id = #{record.achieveRuleId}
            </if>
            <if test="record.year != null and record.year !='' ">
               and YEAR (a.datatime) = #{record.year}
@@ -118,9 +125,7 @@
            <if test="record.beaultId != null and record.beaultId !='' ">
               and   a.beault_id = #{record.beaultId}
            </if>
            <if test="record.companyId != null and record.companyId !='' ">
               and   a.company_id = #{record.companyId}
            </if>
            <if test="record.beaultId != null and record.beaultId !='' ">
               and   a.beault_id = #{record.beaultId}
            </if>
@@ -146,7 +151,7 @@
   </select>
   <select id="findDayFlowTotal"
      resultType="java.lang.Integer">
         resultType="java.lang.Integer">
      select count(*)
      from
      achieve_new a
@@ -160,9 +165,10 @@
      LEFT JOIN shopping_goods_category i ON e.cate_id = i.id
      left join sys_proj_services l on a.service_order_id=l.id
      <where>
         <if test="record!=null">
            <if
               test="(record.shopId!=null and record.shopId!='') or  (record.shopId!='' and record.shopId==0)  ">
                  test="(record.shopId!=null and record.shopId!='') or  (record.shopId!='' and record.shopId==0)  ">
               and a.shop_id = #{record.shopId}
            </if>
            <if test="record.year != null and record.year !='' ">
@@ -196,7 +202,41 @@
      </where>
   </select>
   <!--
     统计员工业绩
    select
            u.name,
            g.su_name guwen,
            cast(SUM(b.ZK_TOTAL) AS decimal(15,2)) as zk_total,
            cast(SUM(a.his_consume) AS decimal(15,2)),
            cast(SUM(a.free_consume) AS decimal(15,2)),
            cast(SUM(a.proj_percentage) AS decimal(15,2)),
            cast(SUM(a.number_of_people) AS decimal(15,2)),
            cast(SUM(a.proj_num) AS decimal(15,2)),
            cast(SUM(a.proj_time) AS decimal(15,2)),
            h.shop_short_name shop_name,
            a.order_type,
            a.achieveType
            from
            achieve_new a
            left join sys_order b on a.order_id=b.id
            left join sys_vip_info c on a.vip_id=c.id
            left join sys_vip_level d on c.LEVEL_ID=d.id
            left join shopping_goods e on a.shopping_goods_id=e.id
            LEFT JOIN sys_users f on a.beault_id=f.su_id
            LEFT JOIN sys_users g on a.sale_id = g.su_id
            LEFT JOIN sys_shop_info h ON a.SHOP_ID = h.ID
            LEFT JOIN shopping_goods_category i ON e.cate_id = i.id
            left join sys_proj_services l on a.service_order_id=l.id
            left join sys_order_item j on a.order_item_id=j.ID
            left join achieve_rule u on u.id=e.achieve_rule_id
     where h.shop_short_name='龙华店'
        GROUP BY g.su_name , a.order_type, h.id,a.achieveType
        ORDER BY g.su_name
    -->
   <select id="findSumDailyInfoNew" resultMap="AchieveNewMap">
@@ -227,9 +267,10 @@
      LEFT JOIN shopping_goods_category j ON i.parent_id = j.id
      left join sys_proj_services l on a.service_order_id=l.id
      <where>
         <if test="record!=null">
            <if
               test="(record.shopId!=null and record.shopId!='') or  (record.shopId!='' and record.shopId==0)  ">
                  test="(record.shopId!=null and record.shopId!='') or  (record.shopId!='' and record.shopId==0)  ">
               and a.shop_id = #{record.shopId}
            </if>
            <if test="record.year != null and record.year !='' ">
@@ -376,120 +417,120 @@
      <if test="record!=null">
         <if
            test="(record.id!=null and record.id!='') or  (record.id!='' and record.id==0)  ">
               test="(record.id!=null and record.id!='') or  (record.id!='' and record.id==0)  ">
            and id = #{record.id}
         </if>
         <if test="record.companyId != null and record.companyId !='' ">
            and company_id = #{record.companyId}
         </if>
         <if
            test="(record.saleId!=null and record.saleId!='') or  (record.saleId!='' and record.saleId==0)  ">
               test="(record.saleId!=null and record.saleId!='') or  (record.saleId!='' and record.saleId==0)  ">
            and sale_id = #{record.saleId}
         </if>
         <if
            test="(record.beaultId!=null and record.beaultId!='') or  (record.beaultId!='' and record.beaultId==0)  ">
               test="(record.beaultId!=null and record.beaultId!='') or  (record.beaultId!='' and record.beaultId==0)  ">
            and beault_id = #{record.beaultId}
         </if>
         <if
            test="(record.shopId!=null and record.shopId!='') or  (record.shopId!='' and record.shopId==0)  ">
               test="(record.shopId!=null and record.shopId!='') or  (record.shopId!='' and record.shopId==0)  ">
            and shop_id = #{record.shopId}
         </if>
         <if
            test="(record.datatime!=null and record.datatime!='') or  (record.datatime!='' and record.datatime==0)  ">
               test="(record.datatime!=null and record.datatime!='') or  (record.datatime!='' and record.datatime==0)  ">
            and datatime = #{record.datatime}
         </if>
         <if
            test="(record.orderId!=null and record.orderId!='') or  (record.orderId!='' and record.orderId==0)  ">
               test="(record.orderId!=null and record.orderId!='') or  (record.orderId!='' and record.orderId==0)  ">
            and order_id = #{record.orderId}
         </if>
         <if
            test="(record.orderItemId!=null and record.orderItemId!='') or  (record.orderItemId!='' and record.orderItemId==0)  ">
               test="(record.orderItemId!=null and record.orderItemId!='') or  (record.orderItemId!='' and record.orderItemId==0)  ">
            and order_item_id = #{record.orderItemId}
         </if>
         <if
            test="(record.shoppingGoodsId!=null and record.shoppingGoodsId!='') or  (record.shoppingGoodsId!='' and record.shoppingGoodsId==0)  ">
               test="(record.shoppingGoodsId!=null and record.shoppingGoodsId!='') or  (record.shoppingGoodsId!='' and record.shoppingGoodsId==0)  ">
            and shopping_goods_id = #{record.shoppingGoodsId}
         </if>
         <if
            test="(record.serviceOrderId!=null and record.serviceOrderId!='') or  (record.serviceOrderId!='' and record.serviceOrderId==0)  ">
               test="(record.serviceOrderId!=null and record.serviceOrderId!='') or  (record.serviceOrderId!='' and record.serviceOrderId==0)  ">
            and service_order_id = #{record.serviceOrderId}
         </if>
         <if
            test="(record.vipId!=null and record.vipId!='') or  (record.vipId!='' and record.vipId==0)  ">
               test="(record.vipId!=null and record.vipId!='') or  (record.vipId!='' and record.vipId==0)  ">
            and vip_id = #{record.vipId}
         </if>
         <if
            test="(record.freeConsume!=null and record.freeConsume!='') or  (record.freeConsume!='' and record.freeConsume==0)  ">
               test="(record.freeConsume!=null and record.freeConsume!='') or  (record.freeConsume!='' and record.freeConsume==0)  ">
            and free_consume = #{record.freeConsume}
         </if>
         <if
            test="(record.hisConsume!=null and record.hisConsume!='') or  (record.hisConsume!='' and record.hisConsume==0)  ">
               test="(record.hisConsume!=null and record.hisConsume!='') or  (record.hisConsume!='' and record.hisConsume==0)  ">
            and his_consume = #{record.hisConsume}
         </if>
         <if
            test="(record.goodsCash!=null and record.goodsCash!='') or  (record.goodsCash!='' and record.goodsCash==0)  ">
               test="(record.goodsCash!=null and record.goodsCash!='') or  (record.goodsCash!='' and record.goodsCash==0)  ">
            and goods_cash = #{record.goodsCash}
         </if>
         <if
            test="(record.projNum!=null and record.projNum!='') or  (record.projNum!='' and record.projNum==0)  ">
               test="(record.projNum!=null and record.projNum!='') or  (record.projNum!='' and record.projNum==0)  ">
            and proj_num = #{record.projNum}
         </if>
         <if
            test="(record.numberOfPeople!=null and record.numberOfPeople!='') or  (record.numberOfPeople!='' and record.numberOfPeople==0)  ">
               test="(record.numberOfPeople!=null and record.numberOfPeople!='') or  (record.numberOfPeople!='' and record.numberOfPeople==0)  ">
            and number_of_people = #{record.numberOfPeople}
         </if>
         <if
            test="(record.shopName!=null and record.shopName!='') or  (record.shopName!='' and record.shopName==0)  ">
               test="(record.shopName!=null and record.shopName!='') or  (record.shopName!='' and record.shopName==0)  ">
            and shop_name = #{record.shopName}
         </if>
         <if
            test="(record.projTime!=null and record.projTime!='') or  (record.projTime!='' and record.projTime==0)  ">
               test="(record.projTime!=null and record.projTime!='') or  (record.projTime!='' and record.projTime==0)  ">
            and proj_time = #{record.projTime}
         </if>
         <if
            test="(record.remark!=null and record.remark!='') or  (record.remark!='' and record.remark==0)  ">
               test="(record.remark!=null and record.remark!='') or  (record.remark!='' and record.remark==0)  ">
            and remark = #{record.remark}
         </if>
         <if
            test="(record.orderType!=null and record.orderType!='') or  (record.orderType!='' and record.orderType==0)  ">
               test="(record.orderType!=null and record.orderType!='') or  (record.orderType!='' and record.orderType==0)  ">
            and order_type = #{record.orderType}
         </if>
         <if
            test="(record.projPercentage!=null and record.projPercentage!='') or  (record.projPercentage!='' and record.projPercentage==0)  ">
               test="(record.projPercentage!=null and record.projPercentage!='') or  (record.projPercentage!='' and record.projPercentage==0)  ">
            and proj_percentage = #{record.projPercentage}
         </if>
         <if
            test="(record.t1!=null and record.t1!='') or  (record.t1!='' and record.t1==0)  ">
               test="(record.t1!=null and record.t1!='') or  (record.t1!='' and record.t1==0)  ">
            and t1 = #{record.t1}
         </if>
         <if
            test="(record.t2!=null and record.t2!='') or  (record.t2!='' and record.t2==0)  ">
               test="(record.t2!=null and record.t2!='') or  (record.t2!='' and record.t2==0)  ">
            and t2 = #{record.t2}
         </if>
         <if
            test="(record.achieveType!=null and record.achieveType!='') or  (record.achieveType!='' and record.achieveType==0)  ">
               test="(record.achieveType!=null and record.achieveType!='') or  (record.achieveType!='' and record.achieveType==0)  ">
            and achieveType = #{record.achieveType}
         </if>
         <if
            test="(record.t4!=null and record.t4!='') or  (record.t4!='' and record.t4==0)  ">
               test="(record.t4!=null and record.t4!='') or  (record.t4!='' and record.t4==0)  ">
            and t4 = #{record.t4}
         </if>
         <if
            test="(record.t5!=null and record.t5!='') or  (record.t5!='' and record.t5==0)  ">
               test="(record.t5!=null and record.t5!='') or  (record.t5!='' and record.t5==0)  ">
            and t5 = #{record.t5}
         </if>
         <if
            test="(record.t6!=null and record.t6!='') or  (record.t6!='' and record.t6==0)  ">
               test="(record.t6!=null and record.t6!='') or  (record.t6!='' and record.t6==0)  ">
            and t6 = #{record.t6}
         </if>
         <if
            test="(record.t8!=null and record.t8!='') or  (record.t8!='' and record.t8==0)  ">
               test="(record.t8!=null and record.t8!='') or  (record.t8!='' and record.t8==0)  ">
            and t8 = #{record.t8}
         </if>
         <if
            test="(record.t9!=null and record.t9!='') or  (record.t9!='' and record.t9==0)  ">
               test="(record.t9!=null and record.t9!='') or  (record.t9!='' and record.t9==0)  ">
            and t9 = #{record.t9}
         </if>
      </if>
@@ -498,7 +539,7 @@
   <!-- 插入方法 -->
   <insert id="insert" parameterType="com.matrix.system.hive.bean.AchieveNew"
      useGeneratedKeys="true" keyProperty="item.id">
         useGeneratedKeys="true" keyProperty="item.id">
      INSERT INTO achieve_new (
      <include refid="columns"></include>
      )
@@ -516,7 +557,7 @@
      )
      VALUES
      <foreach collection="list" item="item" index="index"
         separator=",">
             separator=",">
         (
         <include refid="propertys"></include>
         )
@@ -629,15 +670,15 @@
      UPDATE achieve_new set datatime = #{record.datatime}
      <where>
         <if
            test="(record.id!=null and record.id!='') or  (record.id!='' and record.id==0)  ">
               test="(record.id!=null and record.id!='') or  (record.id!='' and record.id==0)  ">
            and id = #{record.id}
         </if>
         <if
            test="(record.orderId!=null and record.orderId!='') or  (record.orderId!='' and record.orderId==0)  ">
               test="(record.orderId!=null and record.orderId!='') or  (record.orderId!='' and record.orderId==0)  ">
            and order_id = #{record.orderId}
         </if>
         <if
            test="(record.serviceOrderId!=null and record.serviceOrderId!='') or  (record.serviceOrderId!='' and record.serviceOrderId==0)  ">
               test="(record.serviceOrderId!=null and record.serviceOrderId!='') or  (record.serviceOrderId!='' and record.serviceOrderId==0)  ">
            and service_order_id = #{record.serviceOrderId}
         </if>
      </where>
@@ -675,7 +716,7 @@
            vip_id = #{record.vipId},
         </if>
         <if
            test="record.freeConsume != null and record.freeConsume != '' ">
               test="record.freeConsume != null and record.freeConsume != '' ">
            free_consume = #{record.freeConsume},
         </if>
         <if test="record.hisConsume != null ">
@@ -743,7 +784,7 @@
   <delete id="deleteByIds" parameterType="java.util.List">
      delete from achieve_new where id in
      <foreach collection="list" index="index" item="item" open="("
         separator="," close=")">
             separator="," close=")">
         #{item}
      </foreach>
   </delete>
@@ -789,7 +830,7 @@
   <!-- 查询总条数 -->
   <select id="selectTotalRecord"
      resultType="java.lang.Integer">
         resultType="java.lang.Integer">
      select count(*)
      from achieve_new
      where 1=1
@@ -826,48 +867,44 @@
   </select>
   <select id="selectVipConsumeStatisticsList" resultMap="AchieveNewMap">
   <select id="selectVipConsumeStatisticsList" resultType="java.util.HashMap">
      select
         a.VIP_NAME,
         a.PHONE t9,
         GROUP_CONCAT(DISTINCT e.su_name) meiliao,
         d.cnt arrive_cnt,
         sum(b.buyConsume) goods_cash,
         sum(b.freeConsume) free_consume,
         sum(b.hisConsume) his_consume
      a.VIP_NAME vipName,
      a.PHONE t9,
      b.su_name meiliao,
      (SELECT  sum(IFNULL(goods_cash,0)) from achieve_new where  pay_method='现金' and  VIP_ID=a.id
      <if test="record.beginTime != null"> and date_format(datatime, '%Y-%m-%d') >= date_format(#{record.beginTime}, '%Y-%m-%d') </if>
      <if test="record.endTime != null"> <![CDATA[ and date_format(datatime, '%Y-%m-%d') < date_format(#{record.endTime}, '%Y-%m-%d') ]]>    </if> )  as 'goodsCash'  ,
      (SELECT  sum(IFNULL(goods_cash,0)) from achieve_new where  pay_method='划扣' and  VIP_ID=a.id
      <if test="record.beginTime != null"> and date_format(datatime, '%Y-%m-%d') >= date_format(#{record.beginTime}, '%Y-%m-%d') </if>
      <if test="record.endTime != null"> <![CDATA[ and date_format(datatime, '%Y-%m-%d') < date_format(#{record.endTime}, '%Y-%m-%d') ]]>    </if>)  as 'cardCash'  ,
      (SELECT  sum(IFNULL(free_consume,0)) from achieve_new where   VIP_ID=a.id
      <if test="record.beginTime != null"> and date_format(datatime, '%Y-%m-%d') >= date_format(#{record.beginTime}, '%Y-%m-%d') </if>
      <if test="record.endTime != null"> <![CDATA[ and date_format(datatime, '%Y-%m-%d') < date_format(#{record.endTime}, '%Y-%m-%d') ]]>    </if>  )  as 'freeConsume'  ,
      (SELECT  sum(IFNULL(number_of_people,0)) from achieve_new where   VIP_ID=a.id
      <if test="record.beginTime != null"> and date_format(datatime, '%Y-%m-%d') >= date_format(#{record.beginTime}, '%Y-%m-%d') </if>
      <if test="record.endTime != null"> <![CDATA[ and date_format(datatime, '%Y-%m-%d') < date_format(#{record.endTime}, '%Y-%m-%d') ]]>    </if>  )  as 'arriveCnt'  ,
      (SELECT  sum(IFNULL(his_consume,0)) from achieve_new where   VIP_ID=a.id
      <if test="record.beginTime != null"> and date_format(datatime, '%Y-%m-%d') >= date_format(#{record.beginTime}, '%Y-%m-%d') </if>
      <if test="record.endTime != null"> <![CDATA[ and date_format(datatime, '%Y-%m-%d') < date_format(#{record.endTime}, '%Y-%m-%d') ]]>    </if> )  as 'hisConsume'
      from sys_vip_info a
      inner join (
         select vip_id,datatime, sum(a.free_consume) freeConsume, sum(a.his_consume) hisConsume, sum(IFNULL(goods_cash, 0) )) buyConsume from achieve_new a group by vip_id
      ) b on a.ID = b.vip_id
      inner join (
         select vip_id, count(1) cnt from (
                               select vip_id, date_format(datatime, '%Y-%m-%d')
                               from achieve_new
                               group by date_format(datatime, '%Y-%m-%d'), vip_id
                            ) c group by vip_id
         ) d on a.ID=d.vip_id
      left join sys_users b on a.BEATUY_ID=b.su_id
      inner join sys_shop_info c on c.id=a.SHOP_ID
      <where>
      left join sys_users e on find_in_set(e.su_id, a.BEATUY_ID)
      where 1=1
      <if test="record.vipName != null and record.vipName !=''">
         and (a.vip_name like CONCAT(CONCAT('%', #{record.vipName}), '%') or a.vip_no=#{record.vipName} or a.phone = #{record.vipName})
      </if>
      <if test="record.shopId != null">
         and a.shop_id=#{record.shopId}
      </if>
      <if test="record.beginTime != null">
         and date_format(b.datatime, '%Y-%m-%d') >= date_format(#{record.beginTime}, '%Y-%m-%d')
      </if>
      <if test="record.endTime!=null">
         and date_format(b.datatime, '%Y-%m-%d') >= date_format(#{record.endTime}, '%Y-%m-%d')
      </if>
      <if test="record.beaultId != null and record.beaultId!=''">
         and FIND_IN_SET(#{record.beaultId}, a.BEATUY_ID)
      </if>
      <if test='record.t1 == "on"'>
         and a.BEATUY_ID is not null
      </if>
      group by a.PHONE
         <if test="record.vipName != null and record.vipName !=''">
            and (a.vip_name like CONCAT(CONCAT('%', #{record.vipName}), '%') or a.vip_no=#{record.vipName} or a.phone = #{record.vipName})
         </if>
         <if test="record.shopId != null">
            and a.shop_id=#{record.shopId}
         </if>
         <if test="record.beaultId != null and record.beaultId!=''">
            and FIND_IN_SET(#{record.beaultId}, a.BEATUY_ID)
         </if>
         <if test='record.t1 == "on"'>
            and a.BEATUY_ID is not null
         </if>
      </where>
      <if test="pageVo !=null"><!-- 判断pageVo对象是否为空 -->
         <if test="pageVo.sort !=null  and pageVo.order !=null">
            order by
@@ -883,54 +920,38 @@
   <select id="selectVipConsumeStatisticsTotal" resultType="java.lang.Integer">
      select count(1)
      from sys_vip_info a
      inner join (
      select vip_id,datatime, sum(a.free_consume) freeConsume, sum(a.his_consume) hisConsume, sum(IFNULL(goods_cash, 0)  ) buyConsume from achieve_new a group by vip_id
      ) b on a.ID = b.vip_id
      inner join (
      select vip_id, count(1) cnt from (
      select vip_id, date_format(datatime, '%Y-%m-%d')
      from achieve_new
      group by date_format(datatime, '%Y-%m-%d'), vip_id
      ) c group by vip_id
      ) d on a.ID=d.vip_id
      left join sys_users b on a.BEATUY_ID=b.su_id
      inner join sys_shop_info c on c.id=a.SHOP_ID
      <where>
      left join sys_users e on find_in_set(e.su_id, a.BEATUY_ID)
      where 1=1
      <if test="record.vipName != null and record.vipName !=''">
         and (a.vip_name like CONCAT(CONCAT('%', #{record.vipName}), '%') or a.vip_no=#{record.vipName} or a.phone = #{record.vipName})
      </if>
      <if test="record.shopId != null">
         and a.shop_id=#{record.shopId}
      </if>
      <if test="record.beginTime != null">
         and date_format(b.datatime, '%Y-%m-%d') >= date_format(#{record.beginTime}, '%Y-%m-%d')
      </if>
      <if test="record.endTime!=null">
         and date_format(b.datatime, '%Y-%m-%d') >= date_format(#{record.endTime}, '%Y-%m-%d')
      </if>
      <if test="record.beaultId != null and record.beaultId!=''">
         and FIND_IN_SET(#{record.beaultId}, a.BEATUY_ID)
      </if>
      <if test='record.t1 == "on"'>
         and a.BEATUY_ID is not null
      </if>
         <if test="record.vipName != null and record.vipName !=''">
            and (a.vip_name like CONCAT(CONCAT('%', #{record.vipName}), '%') or a.vip_no=#{record.vipName} or a.phone = #{record.vipName})
         </if>
         <if test="record.shopId != null">
            and a.shop_id=#{record.shopId}
         </if>
         <if test="record.beaultId != null and record.beaultId!=''">
            and FIND_IN_SET(#{record.beaultId}, a.BEATUY_ID)
         </if>
         <if test='record.t1 == "on"'>
            and a.BEATUY_ID is not null
         </if>
      </where>
   </select>
   <select id="selectUserAchieveByTime" resultType="com.matrix.system.app.vo.UserAchieveVo">
      select
         sale_id id,
         (select ifnull(sum(case b.pay_method when '现金' then goods_cash else 0 end),0)
            from achieve_new a
            inner join sys_order_item b on a.order_item_id=b.ID
         where a.beault_id=#{userId}
         and (date_format(datatime, '%Y-%m-%d') >= date_format(#{startTime}, '%Y-%m-%d') and date_format(#{endTime}, '%Y-%m-%d') >= date_format(datatime, '%Y-%m-%d'))
         (select ifnull(sum(case pay_method when '现金' then goods_cash else 0 end),0)
          from achieve_new a
          where a.beault_id=#{userId}
            and (date_format(datatime, '%Y-%m-%d') >= date_format(#{startTime}, '%Y-%m-%d') and date_format(#{endTime}, '%Y-%m-%d') >= date_format(datatime, '%Y-%m-%d'))
         ) orderCash,
         (select ifnull(sum(case b.pay_method when '划扣' then goods_cash else 0 end),0)
            from achieve_new a
            inner join sys_order_item b on a.order_item_id=b.ID
         where  a.beault_id=#{userId}
         and (date_format(datatime, '%Y-%m-%d') >= date_format(#{startTime}, '%Y-%m-%d') and date_format(#{endTime}, '%Y-%m-%d') >= date_format(datatime, '%Y-%m-%d'))
         (select ifnull(sum(case pay_method when '划扣' then goods_cash else 0 end),0)
          from achieve_new a
          where  a.beault_id=#{userId}
            and (date_format(datatime, '%Y-%m-%d') >= date_format(#{startTime}, '%Y-%m-%d') and date_format(#{endTime}, '%Y-%m-%d') >= date_format(datatime, '%Y-%m-%d'))
         ) cash,
         sum(case order_type when '订单' then proj_percentage else 0 end) cardUse,
         sum(IFNULL(his_consume, 0)) hisConsume,
@@ -938,7 +959,7 @@
         sum(case order_type when '服务单' then proj_percentage else 0 end) projCommission
      from achieve_new a
      where a.beault_id=#{userId}
      and (date_format(datatime, '%Y-%m-%d') >= date_format(#{startTime}, '%Y-%m-%d') and date_format(#{endTime}, '%Y-%m-%d') >= date_format(datatime, '%Y-%m-%d'))
        and (date_format(datatime, '%Y-%m-%d') >= date_format(#{startTime}, '%Y-%m-%d') and date_format(#{endTime}, '%Y-%m-%d') >= date_format(datatime, '%Y-%m-%d'))
   </select>
   <select id="selectApiOrderItemAchieve" resultType="com.matrix.system.app.vo.OrderDetailAchieveItemVo">
@@ -946,15 +967,15 @@
         b.su_name name,
         IFNULL(a.goods_cash, 0) achieve
      from achieve_new a
      inner join sys_users b on (a.beault_id=b.su_id or a.sale_id = b.su_id)
             inner join sys_users b on (a.beault_id=b.su_id or a.sale_id = b.su_id)
      where a.order_item_id=#{itemId} and order_type = '订单'
   </select>
   <select id="selectShopConsumeAchieveRanking" resultType="com.matrix.system.app.vo.RankingVo">
      select
         b.shop_short_name name,
         b.SHOP_IMAG photo,
         sum(IFNULL(a.free_consume,0) + IFNULL(a.his_consume,0)) amount
      b.shop_short_name name,
      b.SHOP_IMAG photo,
      sum(IFNULL(a.free_consume,0) + IFNULL(a.his_consume,0)) amount
      from achieve_new a
      left join sys_shop_info b on a.shop_id=b.ID and b.shop_type!=1
      <where>
@@ -970,6 +991,9 @@
         <if test='record.t1 == "3" and record.datatime != null'>
            and date_format(datatime, '%Y') = date_format(#{record.datatime}, '%Y')
         </if>
         <if test='record.t1 == "4" and record.datatime != null'>
            and date_format(datatime, '%Y-%m-%d %u') = date_format(#{record.datatime}, '%Y-%m-%d %u')
         </if>
      </where>
      group by a.shop_id
      order by amount desc, a.shop_id
@@ -977,11 +1001,11 @@
   <select id="selectBeauticianConsumeAchieveRanking" resultType="com.matrix.system.app.vo.RankingVo">
      select
         b.su_name name,
         b.su_id id,
         b.SHOP_IMAG photo,
         sum(IFNULL(a.free_consume,0) + IFNULL(a.his_consume, 0) ) amount,
         c.shop_short_name shopName
      b.su_name name,
      b.su_id id,
      b.su_photo photo,
      sum(IFNULL(a.free_consume,0) + IFNULL(a.his_consume, 0) ) amount,
      c.shop_short_name shopName
      from achieve_new a
      inner join sys_users b on a.beault_id=b.su_id
      left join sys_shop_info c on a.shop_id=c.ID
@@ -1002,6 +1026,9 @@
         <if test='record.t1 == "3" and record.datatime != null'>
            and date_format(datatime, '%Y') = date_format(#{record.datatime}, '%Y')
         </if>
         <if test='record.t1 == "4" and record.datatime != null'>
            and date_format(datatime, '%Y-%m-%d %u') = date_format(#{record.datatime}, '%Y-%m-%d %u')
         </if>
      </where>
      group by a.beault_id
      order by amount desc
@@ -1013,11 +1040,11 @@
         b.code goodsNo,
         b.name goodsName,
         c.su_name meiliao,
         d.count*d.zk_price zk_total
         TRUNCATE(d.count*d.zk_price,2) zk_total
      from achieve_new a
      left join shopping_goods b on a.shopping_goods_id=b.id
      left join sys_users c on a.beault_id=c.su_id
      left join sys_order_item d on a.order_item_id=d.id
             left join shopping_goods b on a.shopping_goods_id=b.id
             left join sys_users c on a.beault_id=c.su_id
             left join sys_order_item d on a.order_item_id=d.id
      where a.order_id=#{orderId}
   </select>
@@ -1047,6 +1074,9 @@
         <if test='record.type == "3" and record.datatime != null'>
            and date_format(datatime, '%Y') = date_format(#{record.datatime}, '%Y')
         </if>
         <if test='record.t1 == "4" and record.datatime != null'>
            and date_format(datatime, '%Y-%m-%d %u') = date_format(#{record.datatime}, '%Y-%m-%d %u')
         </if>
      </where>
      group by b.su_id
      order by amount desc, b.su_id
@@ -1054,14 +1084,146 @@
   <select id="selectShopSaleAchieveRanking" resultType="com.matrix.system.app.vo.RankingVo">
      select
         b.shop_short_name name,
         b.SHOP_IMAG photo,
         sum(IFNULL(a.goods_cash,0)) amount
      b.shop_short_name name,
      b.SHOP_IMAG photo,
      sum(IFNULL(a.amount,0)) amount
      from sys_order_flow a
      inner join sys_order c on a.order_id=c.id and c.STATU != '已取消'
      inner join sys_shop_info b on a.shop_id=b.id and shop_type!=1
      <where>
         a.pay_method not in ('储值卡', '欠款')
         <if test="record.companyId != null">
            and a.company_id=#{record.companyId}
         </if>
         <if test='record.t1 == "1" and record.datatime != null'>
            and date_format(a.create_time, '%Y-%m-%d') = date_format(#{record.datatime}, '%Y-%m-%d')
         </if>
         <if test='record.t1 == "2" and record.datatime != null'>
            and date_format(a.create_time, '%Y-%m') = date_format(#{record.datatime}, '%Y-%m')
         </if>
         <if test='record.t1 == "3" and record.datatime != null'>
            and date_format(a.create_time, '%Y') = date_format(#{record.datatime}, '%Y')
         </if>
         <if test='record.t1 == "4" and record.datatime != null'>
            and date_format(a.create_time, '%Y-%m-%d %u') = date_format(#{record.datatime}, '%Y-%m-%d %u')
         </if>
      </where>
      group by a.shop_id
      order by amount desc, a.shop_id
   </select>
   <!-- 顾问当天下单列表 -->
   <select id="selectSaleManAchieveList" resultMap="AchieveNewMap">
      select * from achieve_new
      where sale_id=#{saleId} and vip_id=#{vipId} and sale_id=beault_id
        and date_format(datatime, '%Y-%m-%d') = date_format(#{date}, '%Y-%m-%d')
   </select>
   <select id="selectBeautyManAchieveList" resultMap="AchieveNewMap">
      select * from achieve_new
      where beault_id=#{beautyId} and vip_id=#{vipId}
        and date_format(datatime, '%Y-%m-%d') = date_format(#{date}, '%Y-%m-%d')
   </select>
   <select id="achieveNewStatistics" resultType="com.matrix.system.hive.vo.AchieveNewStatisticsVo">
      select
      u.name ruleName,
      f.su_name guwen,
      f.su_id gwid,
      g.su_name createBy,
      g.su_id createId,
      cast(SUM(b.ZK_TOTAL) AS decimal(15,2)) as zk_total,
      cast(SUM(a.his_consume) AS decimal(15,2)) his_consume,
      cast(SUM(a.free_consume) AS decimal(15,2)) free_consume,
      cast(SUM(a.proj_percentage) AS decimal(15,2)) proj_percentage,
      cast(SUM(a.number_of_people) AS decimal(15,2)) number_of_people,
      cast(SUM(a.proj_num) AS decimal(15,2)) proj_num,
      cast(SUM(case when a.pay_method = '划扣' then goods_cash end )AS decimal(15,2)) card_cash,
      cast(SUM(a.proj_time) AS decimal(15,2)) proj_time,
      cast(SUM(case when a.pay_method = '现金' then goods_cash end )AS decimal(15,2)) goods_cash,
      h.shop_short_name shop_name,
      a.order_type
      from
      achieve_new a
      left join sys_order b on a.order_id=b.id
      left join sys_vip_info c on a.vip_id=c.id
      left join sys_vip_level d on c.LEVEL_ID=d.id
      left join shopping_goods e on a.shopping_goods_id=e.id
      LEFT JOIN sys_users f on a.beault_id=f.su_id
      LEFT JOIN sys_users g on a.sale_id = g.su_id
      LEFT JOIN sys_shop_info h ON a.SHOP_ID = h.ID
      LEFT JOIN shopping_goods_category i ON e.cate_id = i.id
      left join sys_proj_services l on a.service_order_id=l.id
      left join sys_order_item j on a.order_item_id=j.ID
      left join achieve_rule u on u.id=e.achieve_rule_id
      <where>
         and a.company_id = #{record.companyId}
         <if test="record.shopId != null">
            and a.shop_id = #{record.shopId}
         </if>
         <if test="record.achieveRuleId != null">
            and u.id = #{record.achieveRuleId}
         </if>
         <if test="record.staffName != null and record.staffName!=''">
            <!-- 创建人和归属人都有业绩 -->
            and (f.su_name like concat('%',#{record.staffName},'%')  or g.su_name like concat('%',#{record.staffName},'%')  )
         </if>
         <if test="record.orderType != null and record.orderType != '' ">
            and a.order_type= #{record.orderType}
         </if>
         <if test="record.beginTime != null ">
            and a.datatime >= #{record.beginTime}
         </if>
         <if test="record.endTime != null   ">
            <![CDATA[and a.datatime <= #{record.endTime}]]>
         </if>
      </where>
      GROUP BY g.su_id , f.su_id, a.order_type, h.id,a.achieveType,u.name
      <if test="record.sort !=null and record.sort!=''"> order by ${record.sort} ${record.order}</if>
   </select>
   <update id="updateAchieveNumOfPeople">
      <foreach collection="list" item="item" index="index"
             separator=";">
         update achieve_new set number_of_people=#{num} where id=#{item.id}
      </foreach>
   </update>
   <update id="setPayMethod">
      update  achieve_new
      set pay_method=#{paymethod}
      where id in
      <foreach collection="list" index="index" item="item" open="("
             separator="," close=")">
         #{item}
      </foreach>
   </update>
   <select id="selectNumOfPeopleAchieveRanking" resultType="com.matrix.system.app.vo.RankingVo">
      select
      b.su_name name,
      b.su_id id,
      b.su_photo photo,
      sum(number_of_people) amount,
      c.shop_short_name shopName
      from achieve_new a
      left join sys_shop_info b on a.shop_id=b.ID and shop_type!=1
      inner join sys_users b on a.beault_id=b.su_id
      left join sys_shop_info c on a.shop_id=c.ID
      <where>
         <if test="record.companyId != null">
            and a.company_id=#{record.companyId}
         </if>
         <if test="record.shopId != null">
            and a.shop_id=#{record.shopId}
         </if>
         <if test='record.t1 == "1" and record.datatime != null'>
            and date_format(datatime, '%Y-%m-%d') = date_format(#{record.datatime}, '%Y-%m-%d')
@@ -1072,8 +1234,144 @@
         <if test='record.t1 == "3" and record.datatime != null'>
            and date_format(datatime, '%Y') = date_format(#{record.datatime}, '%Y')
         </if>
         <if test='record.t1 == "4" and record.datatime != null'>
            and date_format(datatime, '%Y-%m-%d %u') = date_format(#{record.datatime}, '%Y-%m-%d %u')
         </if>
      </where>
      group by a.shop_id
      order by amount desc, a.shop_id
      group by a.beault_id
      order by amount desc
   </select>
   <select id="selectDailyBeautyList" resultType="com.matrix.system.hive.vo.DailyBeautyListVo">
      select
         date_format(b.datatime, '%Y-%m-%d') datatime,
         a.su_id,
         a.su_name beautyName,
         c.id vipId,
         c.VIP_NAME,
         c.arrival_way,
         case when c.BEATUY_ID=a.su_id then 1 else 0 end isAppoint,
         (select count(distinct date_format(n.datatime, '%Y-%m-%d')) from achieve_new n
          where date_format(b.datatime, '%Y-%m') = date_format(n.datatime, '%Y-%m') and n.vip_id=c.ID
          group by date_format(n.datatime, '%Y-%m'))arriveCnt,
         (select count(1) from sys_order o where o.statu in ('欠款', '已付款') and o.VIP_ID=c.id)  orderCnt,
         (select group_concat(distinct q.pay_method) payMethod from sys_order p
            inner join sys_order_flow q on p.ID=q.ORDER_ID
            inner join achieve_new o on o.order_id=p.id
          where date_format(pay_time, '%Y-%m-%d') = date_format(b.datatime, '%Y-%m-%d') and o.beault_id=a.su_id and c.ID=q.vip_id and p.STATU in ('欠款', '已付款')
          group by p.VIP_ID) payMethods,
         (select sum(amount) from sys_order_flow x
             inner join achieve_new y on x.order_id=y.order_id
          where x.pay_method='团购' and date_format(x.create_time, '%Y-%m-%d') = date_format(b.datatime, '%Y-%m-%d')
            and y.beault_id=a.su_id and x.vip_id=c.id ) teamPay,
         (select sum(m.ZK_PRICE) from sys_order_item m
             inner join achieve_new n on n.ORDER_ID=m.order_id
          where date_format(m.create_time, '%Y-%m-%d') = date_format(b.datatime, '%Y-%m-%d')
            and m.type in ('套餐', '项目') and n.beault_id=a.su_id) tcAndProjCash,
         (select sum(m.ZK_PRICE) from sys_order_item m
             inner join achieve_new n on n.ORDER_ID=m.order_id
          where date_format(m.create_time, '%Y-%m-%d') = date_format(b.datatime, '%Y-%m-%d')
            and m.type in ('家居产品') and n.beault_id=a.su_id) productCash,
         (select sum(m.ZK_PRICE) from sys_order_item m
             inner join achieve_new n on n.ORDER_ID=m.order_id
          where date_format(m.create_time, '%Y-%m-%d') = date_format(b.datatime, '%Y-%m-%d')
            and m.type in ('充值卡') and n.beault_id=a.su_id) cardCash,
         (select sum(amount) from sys_order_flow x
             inner join achieve_new y on x.order_id=y.order_id
          where x.pay_method='储值卡' and date_format(x.create_time, '%Y-%m-%d') = date_format(b.datatime, '%Y-%m-%d')
            and y.beault_id=a.su_id and x.vip_id=c.id) cardPay,
         (select sum(amount) from sys_order_flow x
            inner join achieve_new y on x.order_id=y.order_id
          where x.pay_method not in ('储值卡','欠款') and date_format(x.create_time, '%Y-%m-%d') = date_format(b.datatime, '%Y-%m-%d')
            and y.beault_id=a.su_id and x.vip_id=c.id) cashPay,
         (select sum(e.goods_cash) from achieve_new e
            inner join shopping_goods f on e.shopping_goods_id=f.id and f.is_cooperate=1
          where e.order_type='订单' and date_format(e.datatime, '%Y-%m-%d') = date_format(b.datatime, '%Y-%m-%d')
            and e.beault_id=a.su_id and e.vip_id=c.id) cooperateProj,
         sum(proj_percentage) ticheng,
         sum(IFNULL(free_consume,0) + IFNULL(his_consume,0)) consume,
         (select count(1) from achieve_new z where z.beault_id=a.su_id and c.id=z.vip_id and z.order_type='服务单' group by z.beault_id,z.vip_id) projCnt
      from sys_users a
          left join achieve_new b on a.su_id=b.beault_id
          left join sys_vip_info c on b.vip_id=c.ID
      where 1=1
      <if test="record.companyId != null">
       and a.company_id=#{record.companyId}
      </if>
      <if test="record.shopId != null">
        and a.shop_id=#{record.shopId}
      </if>
      <if test="record.beginTime != null">
         and date_format(b.datatime, '%Y-%m-%d') > date_format(#{record.beginTime}, '%Y-%m-%d')
      </if>
      <if test="record.endTime != null">
         and date_format(#{record.endTime}, '%Y-%m-%d') > date_format(b.datatime, '%Y-%m-%d')
      </if>
      <if test="record.beaultId != null">
         and a.su_id=#{record.beaultId}
      </if>
      <if test="record.vipQueryKey != null and record.vipQueryKey != ''">
         and c.vip_name like concat('%', #{record.vipQueryKey}, '%')
      </if>
      <if test="record.beginTime == null and record.endTime == null">
         and date_format(b.datatime, '%Y-%m') = date_format(now(), '%Y-%m')
      </if>
      group by date_format(b.datatime, '%Y-%m-%d'), a.su_id, c.ID
      <if test="pageVo !=null"><!-- 判断pageVo对象是否为空 -->
         order by date_format(b.datatime, '%Y-%m-%d') desc, a.su_id
         <if test="pageVo.offset >=0  and pageVo.limit >0">
            limit
            #{pageVo.offset},#{pageVo.limit}
         </if>
      </if>
   </select>
   <select id="selectDailyBeautyListTotal" resultType="java.lang.Integer">
      select count(1) from (
          select
             date_format(b.datatime, '%Y-%m-%d') datatime,
             a.su_id,
             a.su_name,
             c.id vipId,
             c.VIP_NAME,
             c.arrival_way,
             sum(proj_percentage) ticheng,
             sum(IFNULL(free_consume,0) + IFNULL(his_consume,0)) consume
          from sys_users a
                 left join achieve_new b on a.su_id=b.beault_id
                 left join sys_vip_info c on b.vip_id=c.ID
         where 1=1
         <if test="record.companyId != null">
            and a.company_id=#{record.companyId}
         </if>
         <if test="record.shopId != null">
            and a.shop_id=#{record.shopId}
         </if>
         <if test="record.beginTime != null">
            and date_format(b.datatime, '%Y-%m-%d') > date_format(#{record.beginTime}, '%Y-%m-%d')
         </if>
         <if test="record.endTime != null">
            and date_format(#{record.endTime}, '%Y-%m-%d') > date_format(b.datatime, '%Y-%m-%d')
         </if>
         <if test="record.beaultId != null">
            and a.su_id=#{record.beaultId}
         </if>
         <if test="record.vipQueryKey != null and record.vipQueryKey != ''">
            and c.vip_name like concat('%', #{record.vipQueryKey}, '%')
         </if>
         <if test="record.beginTime == null and record.endTime == null">
            and date_format(b.datatime, '%Y-%m') = date_format(now(), '%Y-%m')
         </if>
          group by date_format(b.datatime, '%Y-%m-%d'), a.su_id, c.ID
      ) a
   </select>
   <select id="selectPlInfoByVipIdAndDate" resultType="java.lang.String">
      select group_concat(concat(name,'*', bb))
      from (select l.name name, 0+CAST(sum(n.amount) as char) bb from sys_out_store m
       inner join sys_out_store_item n on m.id=n.OUT_STORE_ID
       inner join shopping_goods l on n.SKU_ID=l.id
      where m.SERVICE_ID in (select distinct service_order_id from achieve_new where date_format(datatime, '%Y-%m-%d') = date_format(#{datatime}, '%Y-%m-%d') and vip_id=#{vipId})
      group by l.id) a
   </select>
</mapper>