Helius
2021-11-11 984b853936786569eb70a0028569a10de217952f
add daily-beauty-list
1 files added
6 files modified
228 ■■■■■ changed files
zq-erp/src/main/java/com/matrix/system/hive/dao/AchieveNewDao.java 4 ●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/hive/service/AchieveNewService.java 4 ●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/hive/service/imp/AchieveNewServiceImpl.java 11 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/hive/statistics/AchieveAction.java 15 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/hive/vo/DailyBeautyListVo.java 44 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/mybatis/mapper/hive/AchieveNewDao.xml 91 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/templates/views/admin/hive/statistics/daily-beauty-list.html 59 ●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/hive/dao/AchieveNewDao.java
@@ -10,6 +10,7 @@
import com.matrix.system.hive.bean.AchieveNew;
import com.matrix.system.hive.dto.AchieveNewStatisticsDto;
import com.matrix.system.hive.vo.AchieveNewStatisticsVo;
import com.matrix.system.hive.vo.DailyBeautyListVo;
import org.apache.ibatis.annotations.Param;
import java.util.ArrayList;
@@ -93,4 +94,7 @@
     void setPayMethod(@Param("paymethod") String paymethod, @Param("list")  ArrayList<Long> ids);
     List<RankingVo> selectNumOfPeopleAchieveRanking(@Param("record") AchieveNew achieveNew);
    List<DailyBeautyListVo> selectDailyBeautyList(@Param("record") AchieveNew achieveNew, @Param("pageVo") PaginationVO pageVo);
    int selectDailyBeautyListTotal(@Param("record") AchieveNew achieveNew);
}
zq-erp/src/main/java/com/matrix/system/hive/service/AchieveNewService.java
@@ -6,6 +6,7 @@
import com.matrix.system.hive.bean.SysOrder;
import com.matrix.system.hive.bean.SysProjServices;
import com.matrix.system.hive.plugin.util.BaseServices;
import com.matrix.system.hive.vo.DailyBeautyListVo;
import java.util.List;
import java.util.Map;
@@ -117,4 +118,7 @@
    public List<AchieveNew> findOrderItemAchieve(Long orderid);
    List<DailyBeautyListVo> findDailyBeautyList(AchieveNew achieveNew, PaginationVO pageVo);
    int findDailyBeautyListTotal(AchieveNew achieveNew);
}
zq-erp/src/main/java/com/matrix/system/hive/service/imp/AchieveNewServiceImpl.java
@@ -21,6 +21,7 @@
import com.matrix.system.hive.plugin.util.CollectionUtils;
import com.matrix.system.hive.service.AchieveNewService;
import com.matrix.system.hive.service.SysProjServicesService;
import com.matrix.system.hive.vo.DailyBeautyListVo;
import com.matrix.system.hiveErp.pojo.AchieveRuleItem;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
@@ -469,4 +470,14 @@
    public List<AchieveNew> findOrderItemAchieve(Long orderId) {
        return achieveNewDao.selectOrderItemAchieveByOrderId(orderId);
    }
    @Override
    public List<DailyBeautyListVo> findDailyBeautyList(AchieveNew achieveNew, PaginationVO pageVo) {
        return achieveNewDao.selectDailyBeautyList(achieveNew, pageVo);
    }
    @Override
    public int findDailyBeautyListTotal(AchieveNew achieveNew) {
        return achieveNewDao.selectDailyBeautyListTotal(achieveNew);
    }
}
zq-erp/src/main/java/com/matrix/system/hive/statistics/AchieveAction.java
@@ -272,5 +272,20 @@
        }
    }
    @RequestMapping(value = "/findDailyBeautyList")
    @ResponseBody
    public AjaxResult findDailyBeautyList(@RequestBody  AchieveNew achieveNew) {
        SysUsers sysUsers = (SysUsers) WebUtil.getSession().getAttribute(MatrixConstance.LOGIN_KEY);
        achieveNew.setCompanyId(sysUsers.getCompanyId());
        if (!DataAuthUtil.hasAllShopAuth()) {
            achieveNew.setShopId(sysUsers.getShopId());
        }
        PaginationVO pageVo = new PaginationVO();
        pageVo.setOffset(achieveNew.getOffset());
        pageVo.setLimit(achieveNew.getLimit());
        return AjaxResult.buildSuccessInstance(achieveNewService.findDailyBeautyList(achieveNew, pageVo), achieveNewService.findDailyBeautyListTotal(achieveNew));
    }
}
zq-erp/src/main/java/com/matrix/system/hive/vo/DailyBeautyListVo.java
New file
@@ -0,0 +1,44 @@
package com.matrix.system.hive.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
@Data
public class DailyBeautyListVo {
    @JsonFormat(pattern = "yyyy-MM-dd", timezone="GMT+8")
    private Date datatime;
    private String beautyName;
    private String vipName;
    private int isAppoint;
    private String arrivalWay;
    private int orderCnt;
    private int arriveCnt;
    private String payMethods;
    private BigDecimal teamPay;
    private BigDecimal tcAndProjCash;
    private BigDecimal productCash;
    private BigDecimal cardCash;
    private BigDecimal cardPay;
    private BigDecimal consume;
    private Integer projCnt;
    private BigDecimal ticheng;
}
zq-erp/src/main/resources/mybatis/mapper/hive/AchieveNewDao.xml
@@ -1239,4 +1239,95 @@
        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-%d'))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,
            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 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
             left join (
                    select x.vip_id, count(1) arriveCnt
                    from (
                             select vip_id, date_format(datatime, '%Y-%m-%d')
                             from achieve_new
                             where date_format(curdate(), '%Y-%m') = date_format(datatime, '%Y-%m')
                             group by date_format(datatime, '%Y-%m-%d'), vip_id
                         ) x group by x.vip_id
        ) d on c.id=d.vip_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>
        and date_format(b.datatime, '%Y-%m')=date_format(now(), '%Y-%m')
        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 a.company_id=#{record.companyId} and a.shop_id=#{record.shopId}
               and date_format(b.datatime, '%Y-%m')=date_format(now(), '%Y-%m')
             group by date_format(b.datatime, '%Y-%m-%d'), a.su_id, c.ID
        ) a
    </select>
</mapper>
zq-erp/src/main/resources/templates/views/admin/hive/statistics/daily-beauty-list.html
@@ -33,29 +33,39 @@
        <el-table :data="tableData" style="width: 100%">
            <el-table-column type="index" width="30" fixed="left"></el-table-column>
            <el-table-column prop="datatime" width="150" label="时间" fixed="left"></el-table-column>
            <el-table-column prop="orderType" label="美疗师" fixed="left"></el-table-column>
            <el-table-column prop="orderType" label="客户" fixed="left"></el-table-column>
            <el-table-column prop="orderType" label="是否指定客" width="100"></el-table-column>
            <el-table-column prop="beautyName" label="美疗师" fixed="left"></el-table-column>
            <el-table-column prop="vipName" label="客户" fixed="left"></el-table-column>
            <el-table-column prop="isAppoint" label="是否指定客" width="100">
                <template slot-scope="scope">
                    <span v-if="scope.row.isAppoint ==1 ">是</span>
                    <span v-else>否</span>
                </template>
            </el-table-column>
            <el-table-column label="客流">
                <el-table-column prop="orderType" label="是否会员"></el-table-column>
                <el-table-column prop="orderType" label="到店途径"></el-table-column>
                <el-table-column prop="orderType" label="当月到店次数" width="120"></el-table-column>
                <el-table-column prop="orderCnt" label="是否会员">
                    <template slot-scope="scope">
                        <span v-if="scope.row.orderCnt > 0">是</span>
                        <span v-else>否</span>
                    </template>
                </el-table-column>
                <el-table-column prop="arrivalWay" label="到店途径"></el-table-column>
                <el-table-column prop="arriveCnt" label="当月到店次数" width="120"></el-table-column>
            </el-table-column>
            <el-table-column label="实操业绩">
                <el-table-column prop="orderType" label="项目->消耗产品" width="130"></el-table-column>
                <el-table-column prop="orderType" label="消费类型"></el-table-column>
                <el-table-column prop="orderType" label="项目数量"></el-table-column>
                <el-table-column prop="orderType" label="手工费"></el-table-column>
                <el-table-column prop="orderType" label="耗卡"></el-table-column>
                <el-table-column prop="projCnt" label="项目数量"></el-table-column>
                <el-table-column prop="ticheng" label="手工费"></el-table-column>
                <el-table-column prop="consume" label="耗卡"></el-table-column>
            </el-table-column>
            <el-table-column label="现金业绩">
                <el-table-column prop="payMethods" label="消费类型"></el-table-column>
                <el-table-column prop="orderType" label="特色项目"></el-table-column>
                <el-table-column prop="orderType" label="团购销售"></el-table-column>
                <el-table-column prop="orderType" label="卡项销售"></el-table-column>
                <el-table-column prop="orderType" label="产品销售"></el-table-column>
                <el-table-column prop="orderType" label="会员充值"></el-table-column>
                <el-table-column prop="teamPay" label="团购销售"></el-table-column>
                <el-table-column prop="tcAndProjCash" label="卡项销售"></el-table-column>
                <el-table-column prop="productCash" label="产品销售"></el-table-column>
                <el-table-column prop="cardCash" label="会员充值"></el-table-column>
                <el-table-column prop="orderType" label="总业绩"></el-table-column>
                <el-table-column prop="orderType" label="划卡"></el-table-column>
                <el-table-column prop="cardPay" label="划卡"></el-table-column>
            </el-table-column>
        </el-table>
        <el-row style="margin-top: 10px;">
@@ -88,9 +98,26 @@
            }
        },
        created : function() {
            this.queryTableData();
        },
        methods : {
            queryTableData() {
                let _this = this;
                let params = {};
                let page = _this.page;
                params.limit = page.size;
                params.offset = (page.currentPage - 1) * page.size;
                AjaxProxy.requst({
                    app: _this,
                    data: params,
                    url: basePath + "/admin/achieve/findDailyBeautyList",
                    callback: function (loj) {
                        _this.tableData = loj.rows;
                        _this.page.total = loj.total;
                    }
                });
            },
            handleSizeChange(val) {
                this.page.size = val;
                this.queryTableData();