From 404c2fea96204bc0fc4a6845cb13d1992d728aa4 Mon Sep 17 00:00:00 2001 From: Helius <wangdoubleone@gmail.com> Date: Thu, 11 Nov 2021 14:53:24 +0800 Subject: [PATCH] Merge branch 'ty_fix' into alpha --- zq-erp/src/main/java/com/matrix/system/hive/statistics/AchieveAction.java | 15 ++ zq-erp/src/main/resources/templates/views/admin/hive/statistics/daily-beauty-list.html | 125 ++++++++++++++++++-- zq-erp/src/main/resources/mybatis/mapper/hive/AchieveNewDao.xml | 125 ++++++++++++++++++++ zq-erp/src/main/java/com/matrix/system/hive/dao/AchieveNewDao.java | 4 zq-erp/src/main/java/com/matrix/system/hive/service/imp/AchieveNewServiceImpl.java | 11 + zq-erp/src/main/java/com/matrix/system/hive/vo/DailyBeautyListVo.java | 44 +++++++ zq-erp/src/main/java/com/matrix/system/hive/service/AchieveNewService.java | 4 7 files changed, 312 insertions(+), 16 deletions(-) diff --git a/zq-erp/src/main/java/com/matrix/system/hive/dao/AchieveNewDao.java b/zq-erp/src/main/java/com/matrix/system/hive/dao/AchieveNewDao.java index e0bcaa2..a1e0e1b 100644 --- a/zq-erp/src/main/java/com/matrix/system/hive/dao/AchieveNewDao.java +++ b/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); } \ No newline at end of file diff --git a/zq-erp/src/main/java/com/matrix/system/hive/service/AchieveNewService.java b/zq-erp/src/main/java/com/matrix/system/hive/service/AchieveNewService.java index bdf9228..0698dac 100644 --- a/zq-erp/src/main/java/com/matrix/system/hive/service/AchieveNewService.java +++ b/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); + } \ No newline at end of file diff --git a/zq-erp/src/main/java/com/matrix/system/hive/service/imp/AchieveNewServiceImpl.java b/zq-erp/src/main/java/com/matrix/system/hive/service/imp/AchieveNewServiceImpl.java index ff89cae..f7232e0 100644 --- a/zq-erp/src/main/java/com/matrix/system/hive/service/imp/AchieveNewServiceImpl.java +++ b/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); + } } \ No newline at end of file diff --git a/zq-erp/src/main/java/com/matrix/system/hive/statistics/AchieveAction.java b/zq-erp/src/main/java/com/matrix/system/hive/statistics/AchieveAction.java index 354a30d..9901970 100644 --- a/zq-erp/src/main/java/com/matrix/system/hive/statistics/AchieveAction.java +++ b/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)); + } + } diff --git a/zq-erp/src/main/java/com/matrix/system/hive/vo/DailyBeautyListVo.java b/zq-erp/src/main/java/com/matrix/system/hive/vo/DailyBeautyListVo.java new file mode 100644 index 0000000..f74f5bc --- /dev/null +++ b/zq-erp/src/main/java/com/matrix/system/hive/vo/DailyBeautyListVo.java @@ -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; +} diff --git a/zq-erp/src/main/resources/mybatis/mapper/hive/AchieveNewDao.xml b/zq-erp/src/main/resources/mybatis/mapper/hive/AchieveNewDao.xml index ac64cfa..091ac7f 100644 --- a/zq-erp/src/main/resources/mybatis/mapper/hive/AchieveNewDao.xml +++ b/zq-erp/src/main/resources/mybatis/mapper/hive/AchieveNewDao.xml @@ -1239,4 +1239,129 @@ 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> + <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> </mapper> \ No newline at end of file diff --git a/zq-erp/src/main/resources/templates/views/admin/hive/statistics/daily-beauty-list.html b/zq-erp/src/main/resources/templates/views/admin/hive/statistics/daily-beauty-list.html index 9e73633..b2e5261 100644 --- a/zq-erp/src/main/resources/templates/views/admin/hive/statistics/daily-beauty-list.html +++ b/zq-erp/src/main/resources/templates/views/admin/hive/statistics/daily-beauty-list.html @@ -26,36 +26,78 @@ border: 1px solid #DCDFE6; background-color: white; } + .search-form { + background-color: white; + padding-top: 10px; + padding-left: 20px; + padding-bottom: 10px; + } </style> <body> <div id="app" style=""> + <el-row class="search-form"> + <el-form ref="form" :model="form" inline> + <el-form-item label="日期范围"> + <el-date-picker v-model="form.timeRange" + type="datetimerange" + range-separator="至" + start-placeholder="开始日期" + end-placeholder="结束日期"> + </el-date-picker> + </el-form-item> + <el-form-item label="业绩归属人"> + <el-select v-model="form.beaultId" placeholder="请选择"> + <el-option v-for="item in achieveUsers" + :key="item.suId" + :label="item.suName" + :value="item.suId"></el-option> + </el-select> + </el-form-item> + <el-form-item label="会员"> + <el-input v-model="form.vipQueryKey"></el-input> + </el-form-item> + <el-button type="primary" @click="search" >搜索</el-button> + <el-button @click="resetForm('form')">重置</el-button> +<!-- <el-button type="warning" @click="exportExcel">导出</el-button>--> + </el-form> + </el-row> <el-row class="table-style"> <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;"> @@ -81,6 +123,11 @@ el : "#app", data : { tableData : [], + form : { + timeRange : '', + vipQueryKey : '', + beaultId : '' + }, page : { currentPage : 1, size : 10, @@ -88,9 +135,55 @@ } }, created : function() { - + this.queryTableData(); + this.queryAchieveUsers(); }, methods : { + queryTableData() { + let _this = this; + let params = {}; + let page = _this.page; + let form = _this.form; + + if (form.timeRange) { + params.beginTime = form.timeRange?moment(form.timeRange[0]).format("YYYY-MM-DD HH:mm"):''; + params.endTime = form.timeRange?moment(form.timeRange[1]).format("YYYY-MM-DD HH:mm"):''; + } + params.vipQueryKey=form.vipQueryKey; + params.beaultId=form.beaultId; + 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; + } + }); + }, + queryAchieveUsers() { + let _this = this; + AjaxProxy.requst({ + app: _this, + url: basePath + '/admin/getShopStaffByRoleName', + callback: function (data) { + _this.achieveUsers = data.rows; + } + }); + }, + resetForm(formName) { + // this.$refs[formName].resetFields(); + this.form = { + timeRange : '', + vipQueryKey : '', + beaultId : '' + } + }, + search() { + this.queryTableData(); + }, handleSizeChange(val) { this.page.size = val; this.queryTableData(); -- Gitblit v1.9.1