From ec87cf1ee2b9382bf9d089711f0ff82ae8e7077c Mon Sep 17 00:00:00 2001
From: jyy <jyy>
Date: Wed, 09 Jun 2021 20:44:16 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/api_score_meger' into api_score_meger
---
zq-erp/pom.xml | 2
zq-erp/src/main/java/com/matrix/system/hive/statistics/AchieveAction.java | 80 ++
zq-erp/src/main/java/com/matrix/system/hive/dto/AchieveNewStatisticsDto.java | 41 +
zq-erp/src/main/java/com/matrix/config/MvcCoreConfig.java | 14
zq-erp/src/main/java/com/matrix/system/hive/service/imp/AchieveNewServiceImpl.java | 49 +
zq-erp/src/main/resources/config/application.properties | 4
zq-erp/src/main/resources/mybatis/mapper/hive/AchieveRuleDao.xml | 7
zq-erp/src/main/java/com/matrix/system/hive/bean/AchieveRule.java | 33 +
zq-erp/src/main/resources/templates/views/admin/hive/products/shoppinggoods-zb-list.html | 11
zq-erp/src/main/resources/templates/views/admin/hive/products/goods-form.html | 34 +
zq-erp/src/main/java/com/matrix/system/hiveErp/pojo/AchieveRuleItem.java | 56 +
zq-erp/src/main/java/com/matrix/system/hive/dao/AchieveRuleDao.java | 11
zq-erp/src/main/resources/templates/views/admin/hive-erp/statistics/achieveNewStatiostics.html | 366 ++++++++++++
zq-erp/src/main/java/com/matrix/system/hive/bean/ShoppingGoods.java | 26
zq-erp/src/main/resources/mybatis/mapper/hive/AchieveNewDao.xml | 101 +++
zq-erp/src/main/java/com/matrix/system/hive/dao/AchieveNewDao.java | 8
zq-erp/src/main/java/com/matrix/system/hive/service/AchieveRuleService.java | 33 +
zq-erp/src/main/java/com/matrix/system/hive/bean/AchieveNew.java | 6
zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceImpl.java | 45 +
zq-erp/src/main/resources/templates/views/admin/hive/products/shoppinggoods-md-list.html | 11
zq-erp/src/main/java/filecopy.java | 80 ++
zq-erp/src/main/resources/templates/views/admin/hive-erp/products/achieverule-list.html | 402 +++++++++++++
zq-erp/src/main/resources/templates/views/admin/hive-erp/statistics/daily-list-new.html | 21
zq-erp/src/main/java/com/matrix/system/hive/bean/SysOrder.java | 2
zq-erp/src/main/resources/templates/views/admin/hive/statistics/daily-list-new.html | 21
zq-erp/src/main/java/com/matrix/system/hiveErp/action/AchieveRuleAction.java | 129 ++++
zq-erp/src/main/resources/mybatis/mapper/hive/ShoppingGoodsDao.xml | 38 +
zq-erp/src/main/resources/mybatis/mapper/hive/OnlinebookingDao.xml | 24
zq-erp/src/main/java/com/matrix/system/hive/vo/AchieveNewStatisticsVo.java | 42 +
zq-erp/src/main/java/com/matrix/system/hive/bean/MoneyCardUse.java | 5
30 files changed, 1,636 insertions(+), 66 deletions(-)
diff --git a/zq-erp/pom.xml b/zq-erp/pom.xml
index 3bdc5c1..ed1dc1f 100644
--- a/zq-erp/pom.xml
+++ b/zq-erp/pom.xml
@@ -401,7 +401,7 @@
<exclude>config/xcx/*</exclude>
<exclude>config/xcshop/*</exclude>
- <!-- -->
+ <!---->
<exclude>config/config.json</exclude>
<exclude>config/application.properties</exclude>
<exclude>config/system.properties</exclude>
diff --git a/zq-erp/src/main/java/com/matrix/config/MvcCoreConfig.java b/zq-erp/src/main/java/com/matrix/config/MvcCoreConfig.java
index c61852d..03cb319 100644
--- a/zq-erp/src/main/java/com/matrix/config/MvcCoreConfig.java
+++ b/zq-erp/src/main/java/com/matrix/config/MvcCoreConfig.java
@@ -66,13 +66,13 @@
.excludePathPatterns("/webjars/**");
// 用户认证拦截
- registry.addInterceptor(userLoginInterceptor)
- .addPathPatterns("/**")
- .excludePathPatterns("/common/**")
- .excludePathPatterns("/resource/**")
- .excludePathPatterns("/swagger**/**")
- .excludePathPatterns("/webjars/**")
- .excludePathPatterns("/api/**");
+// registry.addInterceptor(userLoginInterceptor)
+// .addPathPatterns("/**")
+// .excludePathPatterns("/common/**")
+// .excludePathPatterns("/resource/**")
+// .excludePathPatterns("/swagger**/**")
+// .excludePathPatterns("/webjars/**")
+// .excludePathPatterns("/api/**");
// url权限拦截
registry.addInterceptor(suAuthorityInterceptor).addPathPatterns("/**/su/**");
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/bean/AchieveNew.java b/zq-erp/src/main/java/com/matrix/system/hive/bean/AchieveNew.java
index 2c08183..fe414cc 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/bean/AchieveNew.java
+++ b/zq-erp/src/main/java/com/matrix/system/hive/bean/AchieveNew.java
@@ -3,6 +3,8 @@
import com.fasterxml.jackson.annotation.JsonFormat;
import com.matrix.core.anotations.Extend;
import com.matrix.core.tools.DateUtil;
+import com.matrix.system.app.dto.BasePageDto;
+import com.matrix.system.common.bean.EntityDTOExt;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
@@ -11,7 +13,7 @@
*
* @date 2019-03-24 23:55
*/
-public class AchieveNew implements Serializable{
+public class AchieveNew extends EntityDTOExt {
@Extend
private static final long serialVersionUID = 1L;
@@ -26,7 +28,7 @@
/**
- * 美疗师id
+ * 美疗师id 把这个字段视为正式的业绩归属人
*/
private Long beaultId;
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/bean/AchieveRule.java b/zq-erp/src/main/java/com/matrix/system/hive/bean/AchieveRule.java
new file mode 100644
index 0000000..07e7594
--- /dev/null
+++ b/zq-erp/src/main/java/com/matrix/system/hive/bean/AchieveRule.java
@@ -0,0 +1,33 @@
+package com.matrix.system.hive.bean;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.matrix.system.hiveErp.pojo.AchieveRuleItem;
+import com.matrix.system.score.entity.BaseEntity;
+import lombok.Data;
+
+import javax.validation.constraints.NotEmpty;
+import java.util.List;
+
+/**
+ * 业绩规则
+ * @author JIANGYOUYAO
+ * @date 2021/6/3 0003
+ */
+@Data
+@TableName("achieve_rule")
+public class AchieveRule extends BaseEntity {
+
+ @NotEmpty(message = "规则名称不能为空")
+ private String name;
+
+
+ private String rules;
+
+ private Long companyId;
+
+ @TableField(exist=false)
+ @NotEmpty(message = "规则不能为空")
+ private List<AchieveRuleItem> ruleItemList;
+
+}
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/bean/MoneyCardUse.java b/zq-erp/src/main/java/com/matrix/system/hive/bean/MoneyCardUse.java
index d0a63cb..0787c91 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/bean/MoneyCardUse.java
+++ b/zq-erp/src/main/java/com/matrix/system/hive/bean/MoneyCardUse.java
@@ -1,6 +1,8 @@
package com.matrix.system.hive.bean;
+import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.matrix.core.anotations.Extend;
import com.matrix.core.tools.DateUtil;
@@ -14,9 +16,10 @@
*
* @date 2016-09-17 10:17
*/
+
public class MoneyCardUse {
-
+ @TableId(value = "id",type = IdType.AUTO)
private Long id;
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/bean/ShoppingGoods.java b/zq-erp/src/main/java/com/matrix/system/hive/bean/ShoppingGoods.java
index 7dfeeff..9824694 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/bean/ShoppingGoods.java
+++ b/zq-erp/src/main/java/com/matrix/system/hive/bean/ShoppingGoods.java
@@ -433,12 +433,38 @@
* 任选套餐是否无限次 N-否 Y-是
*/
private String isInfinite;
+ /**
+ *业绩规则id
+ */
+ private Long achieveRuleId;
+
+ /**
+ *业绩规则名称
+ */
+ @Extend
+ private String achieveRuleName;
/**
* 支付方式 1-充值本金 2-赠送金额 3-积分
*/
private String payMethods;
+ public String getAchieveRuleName() {
+ return achieveRuleName;
+ }
+
+ public void setAchieveRuleName(String achieveRuleName) {
+ this.achieveRuleName = achieveRuleName;
+ }
+
+ public Long getAchieveRuleId() {
+ return achieveRuleId;
+ }
+
+ public void setAchieveRuleId(Long achieveRuleId) {
+ this.achieveRuleId = achieveRuleId;
+ }
+
public String getPayMethods() {
return payMethods;
}
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/bean/SysOrder.java b/zq-erp/src/main/java/com/matrix/system/hive/bean/SysOrder.java
index 835d02c..f160d12 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/bean/SysOrder.java
+++ b/zq-erp/src/main/java/com/matrix/system/hive/bean/SysOrder.java
@@ -42,7 +42,7 @@
private Date orderTime;
/**
- * 收款
+ * calculationType: 1,
*/
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
private Date payTime;
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 d8421e3..bcde36d 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
@@ -1,10 +1,15 @@
package com.matrix.system.hive.dao;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.matrix.core.pojo.PaginationVO;
import com.matrix.system.app.vo.OrderDetailAchieveItemVo;
import com.matrix.system.app.vo.RankingVo;
import com.matrix.system.app.vo.UserAchieveVo;
import com.matrix.system.hive.bean.AchieveNew;
+import com.matrix.system.hive.dto.AchieveNewStatisticsDto;
+import com.matrix.system.hive.vo.AchieveNewStatisticsVo;
import org.apache.ibatis.annotations.Param;
import java.util.Date;
@@ -18,7 +23,7 @@
*/
-public interface AchieveNewDao{
+public interface AchieveNewDao extends BaseMapper<AchieveNew> {
public int insert(@Param("item") AchieveNew achieveNew);
@@ -82,4 +87,5 @@
int updateAchieveNumOfPeople(@Param("list") List<AchieveNew> list, @Param("num") Double num);
+ IPage<AchieveNewStatisticsVo> achieveNewStatistics(Page<AchieveNewStatisticsVo> page, @Param("record")AchieveNewStatisticsDto queryDto);
}
\ No newline at end of file
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/dao/AchieveRuleDao.java b/zq-erp/src/main/java/com/matrix/system/hive/dao/AchieveRuleDao.java
new file mode 100644
index 0000000..08034c3
--- /dev/null
+++ b/zq-erp/src/main/java/com/matrix/system/hive/dao/AchieveRuleDao.java
@@ -0,0 +1,11 @@
+package com.matrix.system.hive.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.matrix.system.hive.bean.AchieveRule;
+
+/**
+ * 业绩规则dao
+ */
+public interface AchieveRuleDao extends BaseMapper<AchieveRule> {
+
+}
\ No newline at end of file
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/dto/AchieveNewStatisticsDto.java b/zq-erp/src/main/java/com/matrix/system/hive/dto/AchieveNewStatisticsDto.java
new file mode 100644
index 0000000..f4b4816
--- /dev/null
+++ b/zq-erp/src/main/java/com/matrix/system/hive/dto/AchieveNewStatisticsDto.java
@@ -0,0 +1,41 @@
+package com.matrix.system.hive.dto;
+
+import com.google.common.base.CaseFormat;
+import com.matrix.core.pojo.BasePageQueryDto;
+import com.matrix.core.tools.StringUtils;
+import lombok.Data;
+
+@Data
+public class AchieveNewStatisticsDto extends BasePageQueryDto {
+
+ //规则名称
+ String achieveRuleId;
+
+
+ //业绩归属人id
+ String staffName;
+
+
+ //门店名称
+ Long shopId;
+
+ //公司id
+ Long companyId;
+
+ //订单类型
+ String orderType;
+
+ @Override
+ public void setSort(String sort) {
+ if(StringUtils.isNotBlank(sort)){
+ if ("ruleName".equals(sort)) {
+ super.setSort("u.name");
+ } else {
+ super.setSort(CaseFormat.LOWER_CAMEL.to
+ (CaseFormat.LOWER_UNDERSCORE, sort));
+ }
+ }else{
+ super.setSort(sort);
+ }
+ }
+}
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/service/AchieveRuleService.java b/zq-erp/src/main/java/com/matrix/system/hive/service/AchieveRuleService.java
new file mode 100644
index 0000000..601c8fe
--- /dev/null
+++ b/zq-erp/src/main/java/com/matrix/system/hive/service/AchieveRuleService.java
@@ -0,0 +1,33 @@
+package com.matrix.system.hive.service;
+
+import cn.hutool.json.JSONUtil;
+import com.matrix.system.hive.bean.AchieveRule;
+import com.matrix.system.hive.dao.AchieveRuleDao;
+import com.matrix.system.hiveErp.pojo.AchieveRuleItem;
+import lombok.AllArgsConstructor;
+import org.springframework.stereotype.Service;
+
+/**
+ * 业绩规则服务
+ * @author JIANGYOUYAO
+ * @date 2021/6/3 0003
+ */
+@Service
+@AllArgsConstructor
+public class AchieveRuleService {
+
+ AchieveRuleDao achieveRuleDao;
+
+
+ /**
+ * 根据id查询 AchieveRule
+ * @param id
+ * @return
+ */
+ public AchieveRule selectById(Long id){
+ AchieveRule achieveRule = achieveRuleDao.selectById(id);
+ achieveRule.setRuleItemList(JSONUtil.toList(JSONUtil.parseArray(achieveRule.getRules()), AchieveRuleItem.class));
+ return achieveRule;
+ }
+
+}
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 f0c6d88..201047f 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
@@ -1,6 +1,7 @@
package com.matrix.system.hive.service.imp;
import cn.hutool.core.collection.CollUtil;
+import cn.hutool.json.JSONUtil;
import com.matrix.core.constance.MatrixConstance;
import com.matrix.core.exception.GlobleException;
import com.matrix.core.pojo.PaginationVO;
@@ -16,13 +17,11 @@
import com.matrix.system.common.dao.SysUsersDao;
import com.matrix.system.constance.Dictionary;
import com.matrix.system.hive.bean.*;
-import com.matrix.system.hive.dao.AchieveNewDao;
-import com.matrix.system.hive.dao.ShoppingGoodsDao;
-import com.matrix.system.hive.dao.SysBeauticianStateDao;
-import com.matrix.system.hive.dao.SysProjUseDao;
+import com.matrix.system.hive.dao.*;
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.hiveErp.pojo.AchieveRuleItem;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -185,8 +184,14 @@
// 是否为赠送业绩
if (Dictionary.TAOCAN_SOURCE_ZS.equals(projUse.getSource())) {
achieveNew.setFreeConsume(projUse.getPrice()*beauticianState.getCount());
+ //计算提成
+ achieveNew.setProjPercentage(
+ calculationProjPercentage(AchieveRuleItem.ACHIEVE_TYPE_ZS,achieveNew.getFreeConsume(),beauticianState.getProjId()));
} else {
achieveNew.setHisConsume(projUse.getPrice()*beauticianState.getCount());
+ //计算提成
+ achieveNew.setProjPercentage(
+ calculationProjPercentage(AchieveRuleItem.ACHIEVE_TYPE_BJ,achieveNew.getHisConsume(),beauticianState.getProjId()));
}
achieveNew.setT2(projUse.getSource());
achieveNew.setDatatime(new Date());
@@ -239,6 +244,36 @@
}
+ @Autowired
+ AchieveRuleDao achieveRuleDao;
+
+ private Double calculationProjPercentage(int type, Double consume, Long goodsId) {
+ ShoppingGoods shoppingGoods = shoppingGoodsDao.selectById(goodsId);
+ if(shoppingGoods.getAchieveRuleId()!=null){
+
+ AchieveRule achieveRule = achieveRuleDao.selectById(shoppingGoods.getAchieveRuleId());
+ if(achieveRule!=null){
+ List<AchieveRuleItem> achieveRuleItems = JSONUtil.toList(JSONUtil.parseArray(achieveRule.getRules()), AchieveRuleItem.class);
+ double percentage=0D;
+ for(AchieveRuleItem item:achieveRuleItems){
+ if(item.getAchieveType()==type
+ && (item.getLower() == consume
+ || (item.getLower()< consume && consume < item.getUpper() ))){
+
+ if(AchieveRuleItem.ACHIEVE_TYPE_FIXED==item.getCalculationType()){
+ percentage=item.getAchieve();
+ }else{
+ percentage= consume * (item.getAchieve()/100);
+ }
+ break;
+ }
+ }
+ return percentage;
+ }
+ }
+ return 0D;
+ }
+
/**
* 顾问人头业绩
* @param achieveNew
@@ -264,7 +299,6 @@
for (AchieveNew achieveNew : orderItem.getAchieveList()) {
if (achieveNew !=null && achieveNew.getGoodsCash()!=null) {
buildAchieve(pageOrder, orderItem, achieveNew);
- // 新增美疗师业绩
achieveNewList.add(achieveNew);
}
}
@@ -290,7 +324,10 @@
}
achieveNew.setVipId(pageOrder.getVipId());
- achieveNew.setSaleId(pageOrder.getStaffId());
+ if(achieveNew.getSaleId()==null){
+ achieveNew.setSaleId(pageOrder.getStaffId());
+ }
+
if (pageOrder.getPayTime() != null) {
achieveNew.setDatatime(pageOrder.getPayTime());
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceImpl.java b/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceImpl.java
index 3d19de0..0384cfd 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceImpl.java
+++ b/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceImpl.java
@@ -497,6 +497,12 @@
if (!Dictionary.ORDER_STATU_DFK.equals(pageOrder.getStatu())) {
throw new GlobleException("该订单已经收过款,请刷新页面再试!");
}
+
+ //交易业绩设置是否合理
+
+ checkAchieveIsOk(pageOrder);
+
+
// 更新收款时间
pageOrder.setPayTime(new Date());
pageOrder.setStatu(Dictionary.ORDER_STATU_YFK);
@@ -530,6 +536,28 @@
//设置会员积分
addVipScore(pageOrder);
+ }
+
+ /**
+ * 交易业绩设置是否合理
+ * @param pageOrder
+ */
+ private void checkAchieveIsOk(SysOrder pageOrder) {
+ double huakouSum = pageOrder.getItems().stream()
+ .mapToDouble(
+ item ->
+ item.getAchieveList().stream()
+ .filter(achieveNew -> "划扣".equals(achieveNew.getPayMethod()))
+ .mapToDouble(achieve -> achieve.getGoodsCash()).sum()
+ ).sum();
+
+ double czkPay= pageOrder.getFlows().stream()
+ .filter(sysOrderFlow -> "储值卡".equals(sysOrderFlow.getPayMethod()))
+ .mapToDouble(sysOrderFlow ->sysOrderFlow.getAmount().doubleValue()).sum();
+
+ if(czkPay!=huakouSum){
+ throw new GlobleException("划扣业绩不等于储值卡扣款金额,请修改业绩设置!");
+ }
}
/**
@@ -1205,13 +1233,20 @@
} else {
puse.setPrice(goodsAssemble.getPrice() * zk);
}
- puse.setBalance(MoneyUtil.mul(puse.getPrice(), Double.valueOf(puse.getSurplusCount())));
+
// 赠送和打折后金额为0的都视为赠送项目
if (sysOrderItem.getIsFree().equals(Dictionary.FLAG_NO) && sysOrderItem.getZkPrice() > 0) {
puse.setSource(Dictionary.TAOCAN_SOURCE_GM);
} else {
+ //赠送产品按原价计算消耗
puse.setSource(Dictionary.TAOCAN_SOURCE_ZS);
+ if (taocanId == null) {
+ puse.setPrice(goodsAssemble.getShoppingGoods().getPrice() );
+ } else {
+ puse.setPrice(goodsAssemble.getPrice());
+ }
}
+ puse.setBalance(MoneyUtil.mul(puse.getPrice(), Double.valueOf(puse.getSurplusCount())));
puse.setFailTime(failTime);
sysProjUseDao.insert(puse);
return puse;
@@ -1291,18 +1326,22 @@
puse.setVipId(order.getVipId());
puse.setStatus(Dictionary.TAOCAN_STATUS_YX);
puse.setType(Dictionary.SHOPPING_GOODS_TYPE_XM);
- puse.setBalance(sysOrderItem.getZkPrice());
- puse.setPrice(sysOrderItem.getZkPrice());
+
+
puse.setProjName(sysOrderItem.getShoppingGoods().getName());
// 赠送和打折后金额为0的都视为赠送项目
if (sysOrderItem.getIsFree().equals(Dictionary.FLAG_NO) && sysOrderItem.getZkPrice() > 0) {
puse.setSource(Dictionary.TAOCAN_SOURCE_GM);
+ puse.setPrice(sysOrderItem.getZkPrice());
} else {
puse.setSource(Dictionary.TAOCAN_SOURCE_ZS);
+ //赠送产品按原价计算消耗
+ puse.setPrice(sysOrderItem.getShoppingGoods().getSealPice());
}
// 设置失效时间
Date invalidTime = shoppingGoodsService.calInvalidTime(sysOrderItem.getShoppingGoods(), 1, null);
puse.setFailTime(invalidTime);
+ puse.setBalance(sysOrderItem.getShoppingGoods().getSealPice()*puse.getSurplusCount());
sysProjUseDao.insert(puse);
}
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 95ac4ed..ba436dc 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
@@ -1,5 +1,7 @@
package com.matrix.system.hive.statistics;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.matrix.core.constance.MatrixConstance;
import com.matrix.core.pojo.AjaxResult;
import com.matrix.core.pojo.PaginationVO;
@@ -13,14 +15,17 @@
import com.matrix.system.hive.action.util.QueryUtil;
import com.matrix.system.hive.bean.AchieveNew;
import com.matrix.system.hive.dao.AchieveNewDao;
+import com.matrix.system.hive.dto.AchieveNewStatisticsDto;
import com.matrix.system.hive.plugin.util.CollectionUtils;
import com.matrix.system.hive.service.AchieveNewService;
import com.matrix.system.hive.service.SysOrderItemService;
import com.matrix.system.hive.service.SysOrderService;
+import com.matrix.system.hive.vo.AchieveNewStatisticsVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.ui.ModelMap;
+import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@@ -53,6 +58,25 @@
@Autowired
private AchieveNewDao achieveNewDao;
+
+
+ /**
+ * 员工业绩统计
+ */
+ @PostMapping(value = "/achieveNewStatistics")
+ public @ResponseBody
+ AjaxResult achieveNewStatistics(@RequestBody AchieveNewStatisticsDto queryDto){
+ SysUsers sysUsers = (SysUsers) WebUtil.getSession().getAttribute(MatrixConstance.LOGIN_KEY);
+
+ queryDto.setCompanyId(sysUsers.getCompanyId());
+
+ Page<AchieveNewStatisticsVo> page = new Page(queryDto.getPageNum(), queryDto.getPageSize());
+ IPage<AchieveNewStatisticsVo> rows = achieveNewDao.achieveNewStatistics(page,queryDto);
+ AjaxResult result = AjaxResult.buildSuccessInstance(rows.getRecords(),rows.getTotal());
+ return result;
+ }
+
+
/**
* 门店每日单据明细表
*/
@@ -74,11 +98,16 @@
*/
@RequestMapping(value = "/findDailyInfoNew")
public @ResponseBody
- AjaxResult findDailyInfoNew(AchieveNew achieveNew, PaginationVO pageVo) {
+ AjaxResult findDailyInfoNew(@RequestBody AchieveNew achieveNew) {
SysUsers sysUsers = (SysUsers) WebUtil.getSession().getAttribute(MatrixConstance.LOGIN_KEY);
+ achieveNew.setCompanyId(sysUsers.getCompanyId());
if(!AppConstance.ZONGDIAN.equals(sysUsers.getShopName())){
achieveNew.setShopId(sysUsers.getShopId());
}
+ PaginationVO pageVo = new PaginationVO();
+
+ pageVo.setOffset(achieveNew.getOffset());
+ pageVo.setLimit(achieveNew.getLimit());
pageVo.setSort("datatime");
pageVo.setOrder("desc");
AjaxResult result = new AjaxResult(AjaxResult.STATUS_SUCCESS, achieveNewService.findDayFlow(achieveNew, pageVo),
@@ -86,6 +115,55 @@
return result;
}
+ @RequestMapping(value = "/exportAchieveNewStatisticsExcel")
+ public void exportAchieveNewStatisticsExcel(ModelMap model, HttpServletRequest request, HttpServletResponse response, AchieveNewStatisticsDto queryDto) throws IOException {
+ //这里是从数据库里查数据并组装成我们想要的数据结构的过程
+ List<ExcelSheetPO> res = new ArrayList<>();
+ ExcelSheetPO orderSheet = new ExcelSheetPO();
+ String title = "员工业绩统计";
+ orderSheet.setSheetName(title);
+ orderSheet.setTitle(title);
+ String[] header = {"规则名称", "门店名称", "业绩归属人", "业绩创建人", "订单金额", "现金", "划扣", "本金消耗", "赠送消耗"
+ , "服务提成", "人头", "项目个数", "服务时间", "订单类型"};
+ orderSheet.setHeaders(header);
+ SysUsers sysUsers = (SysUsers) WebUtil.getSession().getAttribute(MatrixConstance.LOGIN_KEY);
+ if(!AppConstance.ZONGDIAN.equals(sysUsers.getShopName())){
+ queryDto.setShopId(sysUsers.getShopId());
+ }
+ queryDto.setCompanyId(sysUsers.getCompanyId());
+ Page<AchieveNewStatisticsVo> page = new Page(1, Long.MAX_VALUE);
+ IPage<AchieveNewStatisticsVo> rows = achieveNewDao.achieveNewStatistics(page,queryDto);
+ List<AchieveNewStatisticsVo> dataList = rows.getRecords();
+ List<List<Object>> list = new ArrayList<>();
+ if (dataList.size() > 0) {
+ for (AchieveNewStatisticsVo item : dataList) {
+ List<Object> temp = new ArrayList<>();
+ temp.add(item.getRuleName());
+ temp.add(item.getShopName());
+ temp.add(item.getGuwen());
+ temp.add(item.getCreateBy());
+ temp.add(item.getZkTotal());
+ temp.add(item.getGoodsCash());
+ temp.add(item.getCardCash());
+ temp.add(item.getHisConsume());
+ temp.add(item.getFreeConsume());
+ temp.add(item.getProjPercentage());
+ temp.add(item.getNumberOfPeople());
+ temp.add(item.getProjNum());
+ temp.add(item.getProjTime());
+ temp.add(item.getOrderType());
+ list.add(temp);
+ }
+ }
+ orderSheet.setDataList(list);
+ res.add(orderSheet);
+ response = ResponseHeadUtil.setExcelHead(response);
+ response.setHeader("Content-Disposition",
+ "attachment;filename=" + java.net.URLEncoder.encode(title + DateUtil.getTimeMark() + ".xlsx".trim(), "UTF-8"));
+ OutputStream os = response.getOutputStream();
+ com.matrix.core.tools.excl.ExcelUtil.createWorkbookAtOutStream(ExcelVersion.V2007, res, os, true);
+ }
+
@RequestMapping(value = "/exportDailyInfoNew")
public void exportDailyInfoNew(ModelMap model, HttpServletRequest request, HttpServletResponse response, AchieveNew achieveNew) throws IOException {
//这里是从数据库里查数据并组装成我们想要的数据结构的过程
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/vo/AchieveNewStatisticsVo.java b/zq-erp/src/main/java/com/matrix/system/hive/vo/AchieveNewStatisticsVo.java
new file mode 100644
index 0000000..b48a597
--- /dev/null
+++ b/zq-erp/src/main/java/com/matrix/system/hive/vo/AchieveNewStatisticsVo.java
@@ -0,0 +1,42 @@
+package com.matrix.system.hive.vo;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class AchieveNewStatisticsVo {
+ //规则名称
+ String ruleName;
+ //业绩归属人
+ String guwen;
+ //业绩归属人id
+ Long gwid;
+ //订单创建人
+ String createBy;
+ //创建人id
+ Long createId;
+ //订单金额
+ BigDecimal zkTotal;
+ //消耗金额
+ BigDecimal hisConsume;
+ //赠送消耗
+ BigDecimal freeConsume;
+ //项目提成
+ BigDecimal projPercentage;
+ // 人头数
+ Double numberOfPeople;
+ //项目数
+ Double projNum;
+ //项目时长
+ Integer projTime;
+ //现金支付
+ BigDecimal goodsCash;
+ //卡项支付
+ BigDecimal cardCash;
+ //门店名称
+ String shopName;
+ //订单类型
+ String orderType;
+
+}
diff --git a/zq-erp/src/main/java/com/matrix/system/hiveErp/action/AchieveRuleAction.java b/zq-erp/src/main/java/com/matrix/system/hiveErp/action/AchieveRuleAction.java
new file mode 100644
index 0000000..ee9deaf
--- /dev/null
+++ b/zq-erp/src/main/java/com/matrix/system/hiveErp/action/AchieveRuleAction.java
@@ -0,0 +1,129 @@
+package com.matrix.system.hiveErp.action;
+
+import cn.hutool.core.date.DateTime;
+import cn.hutool.json.JSONUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.matrix.core.constance.MatrixConstance;
+import com.matrix.core.pojo.AjaxResult;
+import com.matrix.core.pojo.BasePageQueryDto;
+import com.matrix.core.tools.StringUtils;
+import com.matrix.core.tools.WebUtil;
+import com.matrix.system.common.bean.SysUsers;
+import com.matrix.system.common.dao.SysUsersDao;
+import com.matrix.system.hive.action.util.QueryUtil;
+import com.matrix.system.hive.bean.AchieveRule;
+import com.matrix.system.hive.dao.AchieveRuleDao;
+import com.matrix.system.hiveErp.pojo.AchieveRuleItem;
+import lombok.AllArgsConstructor;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * 业绩规则Api
+ *
+ * @author jiangyouyao
+ * @date 2021-06-03
+ **/
+@RestController
+@AllArgsConstructor
+@RequestMapping(value = "/admin/achieveRule")
+public class AchieveRuleAction {
+
+ private AchieveRuleDao achieveRuleDao;
+
+
+ private SysUsersDao sysUsersDao;
+
+
+ /**
+ * 新增业绩规则
+ * @param achieveRule
+ * @return
+ */
+ @PostMapping("/add")
+ public AjaxResult add(@RequestBody @Validated AchieveRule achieveRule) {
+
+
+
+ String rules = JSONUtil.toJsonStr(achieveRule.getRuleItemList());
+ achieveRule.setRules(rules);
+
+ QueryUtil.setQueryLimitCom(achieveRule);
+ SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
+ achieveRule.setCreateTime(DateTime.now());
+ achieveRule.setUpdateTime(DateTime.now());
+ achieveRule.setCreateBy(user.getSuName());
+ achieveRule.setUpdateBy(user.getSuName());
+ achieveRuleDao.insert(achieveRule);
+ return AjaxResult.buildSuccessInstance("新增成功");
+ }
+
+ /**
+ * 修改业绩规则
+ *
+ * @param achieveRule
+ * @return
+ */
+ @PostMapping("/update")
+ public AjaxResult update(@RequestBody @Validated AchieveRule achieveRule) {
+
+ if (achieveRule.getId() == null) {
+ return AjaxResult.buildFailInstance("id不能为空");
+ }
+
+ String rules = JSONUtil.toJsonStr(achieveRule.getRuleItemList());
+ achieveRule.setRules(rules);
+
+ SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
+ achieveRule.setUpdateBy(user.getSuName());
+ achieveRule.setUpdateTime(DateTime.now());
+ achieveRuleDao.updateById(achieveRule);
+ return AjaxResult.buildSuccessInstance("修改成功");
+ }
+
+ /**
+ * 删除id
+ *
+ * @param id
+ * @return
+ */
+ @GetMapping("/removeById/{id}")
+ public AjaxResult removeById(@PathVariable Long id) {
+ achieveRuleDao.deleteById(id);
+ return AjaxResult.buildSuccessInstance("删除成功");
+ }
+
+
+ /**
+ * 分页查询规则
+ *
+ * @param pageDto
+ * @return
+ */
+ @PostMapping("/selectList")
+ public AjaxResult selectList(@RequestBody BasePageQueryDto pageDto) {
+
+ SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
+ Page<AchieveRule> page = new Page<>(pageDto.getPageNum(), pageDto.getPageSize());
+ LambdaQueryWrapper<AchieveRule> lambdaQueryWrapper = new LambdaQueryWrapper<AchieveRule>()
+ .eq(AchieveRule::getCompanyId, user.getCompanyId());
+ if (StringUtils.isNotBlank(pageDto.getKeywords())) {
+ lambdaQueryWrapper.like(AchieveRule::getName, pageDto.getKeywords());
+ }
+ IPage<AchieveRule> achieveRuleIPage = achieveRuleDao.selectPage(page, lambdaQueryWrapper);
+ achieveRuleIPage.getRecords().stream().forEach(item->{
+ item.setRuleItemList(JSONUtil.toList(JSONUtil.parseArray(item.getRules()), AchieveRuleItem.class));
+ item.setRules(null);
+ });
+
+ AjaxResult result = AjaxResult.buildSuccessInstance(achieveRuleIPage.getRecords(), achieveRuleIPage.getTotal());
+ return result;
+ }
+
+ @PostMapping("/selectListForm")
+ public AjaxResult selectListForm(BasePageQueryDto pageDto) {
+ return selectList(pageDto);
+ }
+}
diff --git a/zq-erp/src/main/java/com/matrix/system/hiveErp/pojo/AchieveRuleItem.java b/zq-erp/src/main/java/com/matrix/system/hiveErp/pojo/AchieveRuleItem.java
new file mode 100644
index 0000000..8eec4db
--- /dev/null
+++ b/zq-erp/src/main/java/com/matrix/system/hiveErp/pojo/AchieveRuleItem.java
@@ -0,0 +1,56 @@
+package com.matrix.system.hiveErp.pojo;
+
+import lombok.Data;
+
+/**
+ * 绩效规则明细
+ * @author JIANGYOUYAO
+ * @date 2021/6/3 0003
+ */
+@Data
+public class AchieveRuleItem {
+ /**
+ * 类型,1本金消耗
+ */
+ public static final int ACHIEVE_TYPE_BJ=1;
+ /**
+ * 类型,2赠送消耗
+ */
+ public static final int ACHIEVE_TYPE_ZS =2;
+ /**
+ * 计算类型 1 固定值
+ */
+ public static final int ACHIEVE_TYPE_FIXED=1;
+ /**
+ * 计算类型 2百分比
+ */
+ public static final int ACHIEVE_TYPE_PERCENTAGE=2;
+
+
+ /**
+ * 类型,1本金消耗,2赠送消耗
+ */
+ private Integer achieveType;
+
+ /**
+ * 计算类型 1 固定值,2百分比
+ */
+ private Integer calculationType;
+
+ /**
+ * 区间-低
+ */
+ private Double Lower ;
+
+ /**
+ * 区间-高
+ */
+ private Double upper ;
+
+ /**
+ * 业绩值
+ */
+ private Double achieve;
+
+
+}
diff --git a/zq-erp/src/main/java/filecopy.java b/zq-erp/src/main/java/filecopy.java
new file mode 100644
index 0000000..544d6cb
--- /dev/null
+++ b/zq-erp/src/main/java/filecopy.java
@@ -0,0 +1,80 @@
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+
+/**
+ * 文件对比复制
+ * @author JIANGYOUYAO
+ * @date 2021/6/7 0007
+ */
+public class filecopy {
+
+
+ static String targetFilePath="/mnt/sdc/webresource";
+
+ static String sourceFilePaht="/mnt/sdc/webresourceback";
+
+ public static void main(String[] args) throws IOException {
+
+
+ File sourceFile=new File(sourceFilePaht);
+ traverseFolder(sourceFile);
+
+
+ }
+
+
+ public static void traverseFolder(File file) throws IOException {
+
+ if (file.exists()) {
+ File[] files = file.listFiles();
+ if (null == files || files.length == 0) {
+ System.out.println("文件夹是空的!");
+ return;
+ } else {
+ for (File file2 : files) {
+ if (file2.isDirectory()) {
+ //对比target是否存在
+ final String s = file2.getCanonicalPath().replaceAll("webresourceback", "webresource");
+ File f=new File(s);
+ if(!f.exists()){
+ System.out.println("复制文件:" + file2.getAbsolutePath());
+ f.mkdir();
+ }else{
+ System.out.println("文件:" + file2.getAbsolutePath()+"存在");
+ }
+ traverseFolder(file2);
+ } else {
+
+ //对比target是否存在,不存在则copy
+ final String s = file2.getCanonicalPath().replaceAll("webresourceback", "webresource");
+ File f=new File(s);
+ if(!f.exists()){
+ System.out.println("复制文件:" + file2.getAbsolutePath());
+ FileInputStream in=new FileInputStream(file2);
+ FileOutputStream out=new FileOutputStream(f);
+ byte[] buff=new byte[1024];
+ int length=in.read(buff);
+ while (length>0){
+ out.write(buff,0,length);
+ length=in.read(buff);
+ }
+ out.close();
+ in.close();
+
+ }else{
+ System.out.println("文件:" + file2.getAbsolutePath()+"存在");
+ }
+
+ }
+ }
+ }
+ } else {
+ System.out.println("文件不存在!");
+ }
+ }
+
+
+
+}
diff --git a/zq-erp/src/main/resources/config/application.properties b/zq-erp/src/main/resources/config/application.properties
index fa1e322..7589d03 100644
--- a/zq-erp/src/main/resources/config/application.properties
+++ b/zq-erp/src/main/resources/config/application.properties
@@ -4,10 +4,6 @@
#线上测试环境
#
-#spring.datasource.username=ct_test
-#spring.datasource.password=123456
-#spring.datasource.url=jdbc:mysql://120.27.238.55:3306/hive_test?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&allowMultiQueries=true&transformedBitIsBoolean=true&serverTimezone=GMT%2B8
-
spring.datasource.username=ct_test
spring.datasource.password=123456
spring.datasource.url=jdbc:mysql://120.27.238.55:3306/hive_test?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&allowMultiQueries=true&transformedBitIsBoolean=true&serverTimezone=GMT%2B8
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 fb605a0..651ca07 100644
--- a/zq-erp/src/main/resources/mybatis/mapper/hive/AchieveNewDao.xml
+++ b/zq-erp/src/main/resources/mybatis/mapper/hive/AchieveNewDao.xml
@@ -95,6 +95,7 @@
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) ">
@@ -118,9 +119,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>
@@ -196,7 +195,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">
@@ -1090,6 +1123,68 @@
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"
diff --git a/zq-erp/src/main/resources/mybatis/mapper/hive/AchieveRuleDao.xml b/zq-erp/src/main/resources/mybatis/mapper/hive/AchieveRuleDao.xml
new file mode 100644
index 0000000..a6c3707
--- /dev/null
+++ b/zq-erp/src/main/resources/mybatis/mapper/hive/AchieveRuleDao.xml
@@ -0,0 +1,7 @@
+<?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.matrix.system.hive.dao.AchieveRuleDao">
+
+</mapper>
\ No newline at end of file
diff --git a/zq-erp/src/main/resources/mybatis/mapper/hive/OnlinebookingDao.xml b/zq-erp/src/main/resources/mybatis/mapper/hive/OnlinebookingDao.xml
index a60b9d8..4bb2b75 100644
--- a/zq-erp/src/main/resources/mybatis/mapper/hive/OnlinebookingDao.xml
+++ b/zq-erp/src/main/resources/mybatis/mapper/hive/OnlinebookingDao.xml
@@ -17,7 +17,7 @@
<result property="staffId" column="staff_id" />
<result property="vipName" column="vip_name" />
<result property="tel" column="tel" />
- <result property="bizUserId" column="sys_vip_info_id" />
+ <result property="bizUserId" column="biz_user_id" />
<result property="formId" column="form_id" />
<result property="productId" column="product_id" />
@@ -42,7 +42,7 @@
<result property="staffId" column="staff_id" />
<result property="vipName" column="vip_name" />
<result property="tel" column="tel" />
- <result property="bizUserId" column="sys_vip_info_id" />
+ <result property="bizUserId" column="biz_user_id" />
<result property="productId" column="product_id" />
<result property="orderNo" column="order_no" />
<result property="formId" column="form_id" />
@@ -66,7 +66,7 @@
staff_id,
vip_name,
tel,
- sys_vip_info_id,
+ biz_user_id,
product_id,
order_no,
form_id
@@ -129,7 +129,7 @@
tel = #{tel},
</if>
<if test="(bizUserId!=null and bizUserId!='') or (bizUserId!='' and bizUserId==0)">
- sys_vip_info_id = #{bizUserId},
+ biz_user_id = #{bizUserId},
</if>
<if test="(productId!=null and productId!='') or (productId!='' and productId==0)">
product_id = #{productId},
@@ -199,7 +199,7 @@
staff_id,
vip_name,
tel,
- sys_vip_info_id,
+ biz_user_id,
product_id,
order_no,
form_id,
@@ -303,7 +303,7 @@
staff_id,
vip_name,
tel,
- sys_vip_info_id,
+ biz_user_id,
product_id
from onlinebooking
where 1=1
@@ -417,7 +417,7 @@
staff_id,
vip_name,
tel,
- sys_vip_info_id,
+ biz_user_id,
product_id,
order_no
from onlinebooking
@@ -442,7 +442,7 @@
staff_id,
vip_name,
tel,
- sys_vip_info_id,
+ biz_user_id,
product_id
from onlinebooking
where 1=1
@@ -495,7 +495,7 @@
staff_id,
vip_name,
tel,
- sys_vip_info_id,
+ biz_user_id,
product_id,
order_no
from onlinebooking
@@ -547,7 +547,7 @@
staff_id,
vip_name,
tel,
- sys_vip_info_id,
+ biz_user_id,
product_id,
order_no,
form_id,
@@ -565,7 +565,7 @@
and vip_Id = #{record.vipId}
</if>
<if test="(record.bizUserId!=null and record.bizUserId!='') or (record.bizUserId!='' and record.bizUserId==0)">
- and sys_vip_info_id = #{record.bizUserId}
+ and biz_user_id = #{record.bizUserId}
</if>
<if test="(record.time!=null and record.time!='') or (record.time!='' and record.time==0)">
and time = #{record.time}
@@ -611,7 +611,7 @@
and vip_Id = #{record.vipId}
</if>
<if test="(record.bizUserId!=null and record.bizUserId!='') or (record.bizUserId!='' and record.bizUserId==0)">
- and sys_vip_info_id = #{record.bizUserId}
+ and biz_user_id = #{record.bizUserId}
</if>
<if test="(record.time!=null and record.time!='') or (record.time!='' and record.time==0)">
and time = #{record.time}
diff --git a/zq-erp/src/main/resources/mybatis/mapper/hive/ShoppingGoodsDao.xml b/zq-erp/src/main/resources/mybatis/mapper/hive/ShoppingGoodsDao.xml
index 0c6cb3c..d0ff42f 100644
--- a/zq-erp/src/main/resources/mybatis/mapper/hive/ShoppingGoodsDao.xml
+++ b/zq-erp/src/main/resources/mybatis/mapper/hive/ShoppingGoodsDao.xml
@@ -85,12 +85,15 @@
<result property="goodsSortName" column="goodsSortName" />
+ <result property="achieveRuleName" column="achieveRuleName" />
+
<result property="payMethods" column="pay_methods" />
<result property="invalidTime" column="invalid_time" />
<result property="useValid" column="use_valid" />
<result property="buyValid" column="buy_valid" />
<result property="isInfinite" column="is_infinite" />
+ <result property="achieveRuleId" column="achieve_rule_id" />
@@ -160,11 +163,14 @@
<!-- 服务项目信息 -->
<result property="proReward" column="proReward" />
<result property="timeLength" column="TIME_LENGTH" />
+ <result property="achieveRuleId" column="achieve_rule_id" />
<!-- 扩展属性 -->
<result property="cateName" column="cate_name" />
<result property="goodsSortName" column="goodsSortName" />
+ <result property="achieveRuleName" column="achieveRuleName" />
+
</resultMap>
@@ -301,7 +307,9 @@
use_valid,
invalid_time,
pay_methods,
- is_infinite
+ is_infinite,
+ achieve_rule_id
+
)
VALUES (
#{id},
@@ -362,7 +370,9 @@
#{useValid},
#{invalidTime},
#{payMethods},
- #{isInfinite}
+ #{isInfinite},
+ #{achieveRuleId}
+
)
</insert>
@@ -538,6 +548,10 @@
<if test="isInfinite != null and isInfinite !='' ">
is_infinite = #{isInfinite},
</if>
+
+ <if test="achieveRuleId != null and achieveRuleId !='' ">
+ achieve_rule_id = #{achieveRuleId},
+ </if>
invalid_time = #{invalidTime},
buy_valid = #{buyValid},
use_valid = #{useValid},
@@ -576,8 +590,9 @@
<select id="selectInPage" resultMap="ShoppingGoodsMap">
select
a.*,
- (select TYPE_NAME from sys_goods_type b where b.id=a.goods_sort_id) goodsSortName,
- (select NAME from shopping_goods_category t where t.id=a.cate_id) cate_name,
+ (select name from achieve_rule f where f.id=a.achieve_rule_id) as achieveRuleName,
+ (select TYPE_NAME from sys_goods_type b where b.id=a.goods_sort_id) as goodsSortName,
+ (select NAME from shopping_goods_category t where t.id=a.cate_id) as cate_name,
(select shop_name from sys_shop_info h where a.SHOP_ID=h.ID ) as shop_name
from shopping_goods a
where 1=1
@@ -652,6 +667,11 @@
</if>
+ <if test="record.achieveRuleId != null and record.achieveRuleId !='' ">
+ and achieve_rule_id = #{record.achieveRuleId}
+ </if>
+
+
<if test="record.headquarters != null and record.headquarters !='' ">
and headquarters = #{record.headquarters}
@@ -718,7 +738,9 @@
<if test="record.isVipCar != null and record.isVipCar !='' ">
and is_vip_car = #{record.isVipCar}
</if>
-
+ <if test="record.achieveRuleId != null and record.achieveRuleId !='' ">
+ and achieve_rule_id = #{record.achieveRuleId}
+ </if>
<if test="record.isCourse != null and record.isCourse !=''">
and is_course = #{record.isCourse}
@@ -763,6 +785,7 @@
<select id="selectAll" resultMap="ShoppingGoodsSimpleMap">
select
*,
+ (select name from achieve_rule f where f.id=a.achieve_rule_id) as achieveRuleName,
(select TYPE_NAME from sys_goods_type b where b.id=a.goods_sort_id) goodsSortName,
(select NAME from
shopping_goods_category t where t.id=cate_id)
@@ -868,6 +891,7 @@
<select id="findByCode" resultMap="ShoppingGoodsMap">
select
*,
+ (select name from achieve_rule f where f.id=a.achieve_rule_id) as achieveRuleName,
(select TYPE_NAME from sys_goods_type b where b.id=a.goods_sort_id) goodsSortName,
(select NAME from shopping_goods_category t where
t.id=cate_id)
@@ -880,6 +904,7 @@
<select id="selectSimpleMapById" resultMap="ShoppingGoodsSimpleMap">
select
*,
+ (select name from achieve_rule f where f.id=a.achieve_rule_id) as achieveRuleName,
(select TYPE_NAME from sys_goods_type b where b.id=a.goods_sort_id) goodsSortName,
(select NAME from
shopping_goods_category t where t.id=cate_id)
@@ -899,6 +924,7 @@
<select id="selectByModel" resultMap="ShoppingGoodsMap">
select
*,
+ (select name from achieve_rule f where f.id=a.achieve_rule_id) as achieveRuleName,
(select TYPE_NAME from sys_goods_type b where b.id=a.goods_sort_id) goodsSortName,
(select NAME from
shopping_goods_category t where t.id=cate_id)
@@ -978,6 +1004,7 @@
<select id="selectByModel1" resultMap="ShoppingGoodsMap">
select
*,
+ (select name from achieve_rule f where f.id=a.achieve_rule_id) as achieveRuleName,
(select TYPE_NAME from sys_goods_type b where b.id=a.goods_sort_id) goodsSortName,
(select NAME from
shopping_goods_category t where t.id=cate_id)
@@ -1056,6 +1083,7 @@
<select id="selectInPageNoTaocan" resultMap="ShoppingGoodsMap">
select
*,
+ (select name from achieve_rule f where f.id=a.achieve_rule_id) as achieveRuleName,
(select TYPE_NAME from sys_goods_type b where b.id=a.goods_sort_id) goodsSortName,
(select NAME from
shopping_goods_category t where t.id=cate_id)
diff --git a/zq-erp/src/main/resources/templates/views/admin/hive-erp/products/achieverule-list.html b/zq-erp/src/main/resources/templates/views/admin/hive-erp/products/achieverule-list.html
new file mode 100644
index 0000000..c82e927
--- /dev/null
+++ b/zq-erp/src/main/resources/templates/views/admin/hive-erp/products/achieverule-list.html
@@ -0,0 +1,402 @@
+<!DOCTYPE HTML>
+<html xmlns:th="http://www.thymeleaf.org" xmlns:matrix="http://www.w3.org/1999/xhtml">
+<head>
+ <meta charset="utf-8">
+ <META HTTP-EQUIV="Pragma" CONTENT="no-cache">
+ <meta name="renderer" content="webkit|ie-comp|ie-stand">
+ <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+ <meta name="viewport"
+ content="width=device-width,initial-scale=1,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no"/>
+ <meta http-equiv="Cache-Control" content="no-siteapp"/>
+ <LINK rel="Bookmark" href="../images/favicon.ico">
+ <!-- 本框架基本脚本和样式 -->
+ <script type="text/javascript" th:src="@{/js/systools/MBaseVue.js}"></script>
+ <link rel="stylesheet" th:href="@{/plugin/element-ui/index.css}">
+ <link th:href="@{/css/styleOne/style.min.css}" rel="stylesheet" type="text/css"/>
+ <title></title>
+ <style>
+ .panel-body {
+ overflow: hidden;
+ }
+
+ .buttonPanel {
+ background: #ffffff;
+ padding: 10px 10px;
+ margin: 0px 0px 10px 0px;
+ }
+
+ .rowPanel {
+ background: #ffffff;
+ padding: 0px 10px;
+ padding-top: 10px;
+ margin: 0px 0px 10px 0px;
+ }
+
+ .paginationStyle {
+ background: #ffffff;
+ padding: 10px 10px;
+ margin: 0px 0px 10px 0px;
+ text-align: right;
+ }
+ </style>
+</head>
+<body>
+<div class="panel-body" id="app">
+
+ <el-row class="buttonPanel">
+ <el-button @click="openForm('add')" type="primary">新增</el-button>
+ </el-row>
+
+ <el-row class="rowPanel">
+ <el-form ref="form" :model="form" inline>
+ <el-form-item label="规则名称" prop="queryKey">
+ <el-input v-model="form.keyword" placeholder="请输入规则名称"></el-input>
+ </el-form-item>
+ <el-button type="primary" @click="search">搜索</el-button>
+ <el-button @click="resetForm('form')">重置</el-button>
+ </el-form>
+ </el-row>
+
+ <el-row class="table-style">
+
+ <el-table id="proj" :data="table.rows" :height="height" stripe @sort-change="sortChange">
+ <el-table-column
+ prop="name"
+ label="规则名称">
+ </el-table-column>
+ <el-table-column
+ prop="updateTime"
+ sortable="custom"
+ label="修改时间"
+ show-overflow-tooltip
+ width="180">
+ </el-table-column>
+ <el-table-column
+ prop="updateBy"
+ label="修改人">
+ </el-table-column>
+
+ <el-table-column
+ prop="createTime"
+ sortable="custom"
+ label="创建时间"
+ show-overflow-tooltip
+ width="180">
+ </el-table-column>
+ <el-table-column
+ prop="createBy"
+ label="创建人"
+ width="180">
+ </el-table-column>
+
+ <el-table-column label="操作">
+ <template slot-scope="scope">
+ <el-button type="text" @click="openForm('modify', scope.row)" size="small">修改</el-button>
+ <el-button type="text" @click="remove(scope.$index, scope.row)" size="small">删除</el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+ </el-row>
+ <el-row class="paginationStyle">
+ <el-pagination background
+ @size-change="changePageSize"
+ @current-change="changeCurrentPage"
+ :current-page="table.currentPage"
+ :page-sizes="[10, 20, 30, 50]"
+ :page-size="table.pageSize"
+ layout="total, sizes, prev, pager, next, jumper"
+ :total="table.total">
+ </el-pagination>
+ </el-row>
+
+ <el-dialog
+ :title="title"
+ :visible.sync="dialogVisible"
+ width="60%"
+ :before-close="handleClose">
+
+ <el-form :model="formData" ref="ruleForm" label-width="100px" class="demo-ruleForm">
+
+ <el-form-item label="规则名称" >
+ <el-input style="width: 200px" v-model="formData.name"></el-input>
+ <el-button type="primary" @click="addRuleItem()" size="small">添加规则</el-button>
+ </el-form-item>
+
+ <el-form-item label="绩效方案" >
+ <el-table
+ :data="formData.ruleItemList"
+ style="width: 100%">
+ <el-table-column
+ label="业绩类型"
+ >
+ <template slot-scope="scope">
+ <el-select v-model="scope.row.achieveType" placeholder="请选择业绩类型">
+ <el-option label="本金消耗" :value="1"></el-option>
+ <el-option label="赠送消耗" :value="2"></el-option>
+ </el-select>
+ </template>
+ </el-table-column>
+ <el-table-column
+ label="计算方式"
+ >
+ <template slot-scope="scope">
+ <el-select v-model="scope.row.calculationType" placeholder="请选择计算方式">
+ <el-option label="固定金额" :value="1"></el-option>
+ <el-option label="百分比(%)" :value="2"></el-option>
+ </el-select>
+ </template>
+ </el-table-column>
+ <el-table-column
+ label="区间"
+ width="240">
+ <template slot-scope="scope">
+ <el-input style="width: 100px" v-model="scope.row.lower"></el-input>
+ -
+ <el-input style="width: 100px" v-model="scope.row.upper"></el-input>
+ </template>
+ </el-table-column>
+ <el-table-column
+ label="业绩">
+ <template slot-scope="scope">
+ <el-input v-model="scope.row.achieve"></el-input>
+ </template>
+ </el-table-column>
+ <el-table-column label="操作">
+ <template slot-scope="scope">
+ <el-button type="text" @click="removeRuleItem(scope.$index, scope.row)" size="small">删除</el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+ </el-form-item>
+
+
+
+ </el-form>
+ <span slot="footer" class="dialog-footer">
+ <el-button @click="dialogVisible = false">取 消</el-button>
+ <el-button type="primary" @click="submitForm">确 定</el-button>
+ </span>
+</el-dialog>
+
+
+</div>
+</body>
+<script type="text/javascript" th:src="@{/js/plugin/jquery-2.1.4.min.js}"></script>
+<script type="text/javascript" th:src="@{/js/plugin/jquery.query.js}"></script>
+<script type="text/javascript" th:src="@{/plugin/layer/layer.js}"></script>
+<script type="text/javascript" th:src="@{/js/systools/AjaxProxyVue.js}"></script>
+<script type="text/javascript" th:src="@{/js/plugin/vue.js}"></script>
+<script type="text/javascript" th:src="@{/plugin/element-ui/index.js}"></script>
+<script type="text/javascript" th:src="@{/plugin/moment.min.js}"></script>
+<script type="text/javascript" th:inline="javascript">
+
+ var vue = new Vue({
+ el: '#app',
+ data: {
+ table: {
+ rows: [],
+ total: 0,
+ pageSize: 10,
+ currentPage: 1,
+ },
+ form: {
+ queryKey: null,
+ },
+
+ height: 'calc(100vh - 240px)',
+ dialogVisible: false,
+ title: '',
+ formData: {
+ name: '',
+ ruleItemList: [
+ {
+ achieveType: 1,
+ calculationType: 1,
+ lower: '',
+ upper: '',
+ achieve: '',
+ }
+ ]
+ },
+
+ type: '',
+
+ },
+ created: function () {
+ this.loadData();
+ window.addEventListener("keydown", this.keydown);
+ },
+ methods: {
+ changePageSize(val) {
+ this.table.pageSize = val;
+ this.loadData();
+ },
+ changeCurrentPage(val) {
+ this.table.currentPage = val;
+ this.loadData();
+ },
+ resetForm(formName) {
+ this.$refs[formName].resetFields();
+ },
+ sortChange: function (column) {
+ if (column.order) {
+ if (column.order.indexOf("desc")) {
+ this.form.order = "desc";
+ } else {
+ this.form.order = "asc";
+ }
+ this.form.sort = column.prop;
+ this.loadData();
+ }
+ },
+ loadData: function () {
+ let _this = this;
+ let data = _this.getRequestParam();
+ data.pageSize = _this.table.pageSize;
+ data.pageNum = _this.table.currentPage;
+ AjaxProxy.requst({
+ app: _this,
+ data: data,
+ url: basePath + '/admin/achieveRule/selectList',
+ callback: function (data) {
+ _this.table.rows = data.rows;
+ _this.table.total = data.total;
+ }
+ });
+ },
+ getRequestParam() {
+ let _this = this;
+ return {
+ queryKey: _this.form.queryKey,
+ }
+ },
+ search: function () {
+ this.table.currentPage = 1;
+ this.loadData();
+ },
+ keydown(evt) {
+ if (evt.keyCode == 13) {
+ this.search();
+ }
+ },
+
+ remove(index, row) {
+ let _this = this;
+ this.$confirm('确认删除该规则吗?', '提示', {
+ confirmButtonText: '确定',
+ cancelButtonText: '取消',
+ type: 'warning'
+ }).then(() => {
+ AjaxProxy.requst({
+ app: _this,
+ type: 'GET',
+ url: basePath + "/admin/achieveRule/removeById/" + row.id,
+ callback: function (data) {
+ _this.loadData();
+ _this.$message({
+ type: 'success',
+ message: data.info,
+ });
+ }
+ });
+ }).catch(() => {
+ this.$message({
+ type: 'info',
+ message: '已取消删除'
+ });
+ });
+ },
+ //开启表单弹窗
+ openForm(type, data) {
+
+ if (type == 'add') {
+ this.title = '新增规则';
+ //this.$refs['formName'].resetFields();
+
+ } else {
+ this.title = '修改规则';
+ this.formData = data;
+ }
+ this.type = type;
+ this.dialogVisible = true;
+ },
+ //提交表单
+ submitForm() {
+ let url = basePath + "/admin/achieveRule/add";
+ if (this.type == 'modify') {
+ url = basePath + "/admin/achieveRule/update";
+ }
+ let data=this.formData;
+
+ if(MTools.isBlank(data.name)){this.$message.error("请输入规则名称");return;}
+
+ if(data.ruleItemList.length<1){
+ this.$message.error("最少需要一个计算规则");;return;}
+ let flag=true;
+ data.ruleItemList.forEach(item=>{
+ if(MTools.isBlank(item.lower)){
+ this.$message.error("请输入业绩下限");flag=false;}
+ else if(MTools.isBlank(item.upper)){
+ this.$message.error("请输入业绩上限");flag=false;}
+ else if(MTools.isBlank(item.achieve)){
+ this.$message.error("请输入业绩金额或者比例");flag=false;}
+ })
+ if(flag){
+ var _this=this;
+ AjaxProxy.requst({
+ app: _this,
+ data:data,
+ url:url,
+ callback: function (data) {
+ _this.$message.success(data.info);
+ _this.loadData();
+ _this.dialogVisible = false;
+ _this.formData={
+ name: '',
+ ruleItemList: [
+ {
+ achieveType: 1,
+ calculationType: 1,
+ lower: '',
+ upper: '',
+ achieve: '',
+ }
+ ]
+ };
+ }
+ });
+
+ }
+ },
+ handleClose(done) {
+ this.$confirm('确认关闭?')
+ .then(_ => {
+ done();
+ })
+ .catch(_ => {
+ });
+ },
+ addRuleItem(){
+ this.formData.ruleItemList.push(
+ {
+ achieveType: 1,
+ calculationType: 1,
+ lower: '',
+ upper: '',
+ achieve: '',
+ }
+ );
+ },
+ removeRuleItem(index,row){
+ this.formData.ruleItemList.splice(index, 1);
+ },
+
+
+ }
+
+ });
+
+
+</script>
+</body>
+</html>
\ No newline at end of file
diff --git a/zq-erp/src/main/resources/templates/views/admin/hive-erp/statistics/achieveNewStatiostics.html b/zq-erp/src/main/resources/templates/views/admin/hive-erp/statistics/achieveNewStatiostics.html
new file mode 100644
index 0000000..34ecd48
--- /dev/null
+++ b/zq-erp/src/main/resources/templates/views/admin/hive-erp/statistics/achieveNewStatiostics.html
@@ -0,0 +1,366 @@
+<!DOCTYPE HTML>
+<html xmlns:th="http://www.thymeleaf.org" xmlns:matrix="http://www.w3.org/1999/xhtml">
+<head>
+ <meta charset="utf-8">
+ <META HTTP-EQUIV="Pragma" CONTENT="no-cache">
+ <meta name="renderer" content="webkit|ie-comp|ie-stand">
+ <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+ <meta name="viewport"
+ content="width=device-width,initial-scale=1,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no"/>
+ <meta http-equiv="Cache-Control" content="no-siteapp"/>
+ <LINK rel="Bookmark" href="../images/favicon.ico">
+ <!-- 本框架基本脚本和样式 -->
+ <script type="text/javascript" th:src="@{/js/systools/MBaseVue.js}"></script>
+ <link rel="stylesheet" th:href="@{/plugin/element-ui/index.css}">
+ <link th:href="@{/css/styleOne/style.min.css}" rel="stylesheet" type="text/css"/>
+ <title></title>
+ <style>
+ .panel-body{
+ overflow: hidden;
+ }
+ .buttonPanel{
+ background: #ffffff;
+ padding: 10px 10px ;
+ margin: 0px 0px 10px 0px;
+ }
+ .rowPanel{
+ background: #ffffff;
+ padding: 0px 10px ;
+ padding-top: 10px;
+ margin: 0px 0px 10px 0px;
+ }
+ .paginationStyle{
+ background: #ffffff;
+ padding: 10px 10px;
+ margin: 0px 0px 10px 0px;
+ text-align: right;
+ }
+ </style>
+</head>
+<body>
+<div class="panel-body" id="app">
+
+ <el-row class="buttonPanel">
+ <el-button @click="exportExcel" type="primary" >导出</el-button>
+ </el-row>
+
+ <el-row class="rowPanel" >
+ <el-form ref="form" :model="form" inline >
+
+ <el-form-item label="业绩规则" >
+ <el-select v-model="form.achieveRuleId" filterable placeholder="请选择业绩规则">
+ <el-option
+ v-for="item in achieveRulsList"
+ :key="item.id"
+ :label="item.name"
+ :value="item.id">
+ </el-option>
+ </el-select>
+ </el-form-item>
+
+ <el-form-item label="员工姓名" >
+ <el-input v-model="form.staffName"></el-input>
+ </el-form-item>
+
+
+ <el-form-item label="统计门店" >
+ <el-select v-model="form.shopId" placeholder="请选择">
+ <el-option
+ v-for="item in shopList"
+ :key="item.shopShortName"
+ :label="item.shopShortName"
+ :value="item.id">
+ </el-option>
+ </el-select>
+ </el-form-item>
+
+
+ <el-form-item label="订单类型" >
+ <el-select v-model="form.orderType" placeholder="请选择">
+ <el-option
+ v-for="item in orderTypeList"
+ :key="item.value"
+ :label="item.label"
+ :value="item.value">
+ </el-option>
+ </el-select>
+ </el-form-item>
+
+ <el-form-item label="统计时间" prop="datetimeArr">
+ <el-date-picker
+ v-model="form.datetimeArr"
+ type="daterange"
+ range-separator="至" format="yyyy-MM-dd HH:mm"
+ start-placeholder="开始日期"
+ end-placeholder="结束日期">
+ </el-date-picker>
+ </el-form-item>
+
+ <el-button type="primary" @click="search" >搜索</el-button>
+ <el-button @click="resetForm('form')">重置</el-button>
+ </el-form>
+ </el-row>
+
+ <el-row class="table-style" >
+
+ <el-table id="proj" :data="table.rows" :height="height" stripe @sort-change="sortChange">
+ <el-table-column
+ sortable="custom"
+ prop="ruleName"
+ label="规则名称"
+ width="180">
+ </el-table-column>
+ <el-table-column
+ prop="shopName"
+ label="门店名称"
+ show-overflow-tooltip
+ width="240">
+ </el-table-column>
+ <el-table-column
+ prop="guwen"
+ label="业绩归属人"
+ show-overflow-tooltip
+ width="180">
+ </el-table-column>
+ <el-table-column
+ prop="createBy"
+ label="业绩创建人"
+ show-overflow-tooltip
+ width="180">
+ </el-table-column>
+ <el-table-column
+ sortable="custom"
+ prop="zkTotal"
+ label="订单金额">
+ </el-table-column>
+ <el-table-column
+ sortable="custom"
+ prop="goodsCash"
+ label="现金">
+ </el-table-column>
+ <el-table-column
+ sortable="custom"
+ prop="cardCash"
+ label="划扣">
+ </el-table-column>
+ <el-table-column
+ sortable="custom"
+ prop="hisConsume"
+ label="本金消耗">
+ </el-table-column>
+ <el-table-column
+ sortable="custom"
+ prop="freeConsume"
+ label="赠送消耗">
+ </el-table-column>
+ <el-table-column
+ sortable="custom"
+ prop="projPercentage"
+ label="服务提成">
+ </el-table-column>
+ <el-table-column
+ sortable="custom"
+ prop="numberOfPeople"
+ label="人头">
+ </el-table-column>
+
+ <el-table-column
+ sortable="custom"
+ prop="projNum"
+ label="项目个数">
+ </el-table-column>
+
+ <el-table-column
+ sortable="custom"
+ prop="projTime"
+ label="服务时间">
+ </el-table-column>
+
+ <el-table-column
+ sortable="custom"
+ prop="orderType"
+ label="订单类型">
+ </el-table-column>
+
+ </el-table>
+ </el-row>
+ <el-row class="paginationStyle" >
+ <el-pagination background
+ @size-change="changePageSize"
+ @current-change="changeCurrentPage"
+ :current-page="table.currentPage"
+ :page-sizes="[10, 20, 30, 50]"
+ :page-size="table.pageSize"
+ layout="total, sizes, prev, pager, next, jumper"
+ :total="table.total">
+ </el-pagination>
+ </el-row>
+
+</div>
+</body>
+<script type="text/javascript" th:src="@{/js/plugin/jquery-2.1.4.min.js}"></script>
+<script type="text/javascript" th:src="@{/js/plugin/jquery.query.js}"></script>
+<script type="text/javascript" th:src="@{/plugin/layer/layer.js}"></script>
+<script type="text/javascript" th:src="@{/js/systools/AjaxProxyVue.js}"></script>
+<script type="text/javascript" th:src="@{/js/plugin/vue.js}"></script>
+<script type="text/javascript" th:src="@{/plugin/element-ui/index.js}"></script>
+<script type="text/javascript" th:src="@{/plugin/moment.min.js}"></script>
+<script type="text/javascript" th:inline="javascript">
+
+ var vue = new Vue({
+ el: '#app',
+ data: {
+ table:{
+ rows:[],
+ total:0,
+ pageSize:10,
+ currentPage:1,
+ },
+ form:{
+ achieveRuleId:null,
+ staffName:null,
+ shopId:null,
+ orderType:'',
+ order:'',
+ sort:'',
+ beginTime:'',
+ endTime:'',
+ },
+ height:'calc(100vh - 240px)',
+
+ //提成规则
+ achieveRulsList:[],
+ //业绩用户列表
+ userList: [],
+ shopList:[{id:0,shopShortName:'全部'}],
+
+ orderTypeList:[
+ {value:'',label:'全部'},
+ {value:'订单',label:'订单'},
+ {value:'服务单',label:'服务单'},
+
+ ],
+ },
+ created: function () {
+ let _this=this;
+ //获取业绩用户列表
+ AjaxProxy.requst({
+ app: _this,
+ url: basePath + '/admin/shopAll',
+ callback: function (data) {
+ _this.userList = data.rows;
+ }
+ });
+ AjaxProxy.requst({
+ app:_this,
+ url:basePath+"/admin/shopInfo/findAll",
+ callback:function (data) {
+ data.rows.forEach(shop=>{
+ _this.shopList.push(shop);
+ });
+ }
+
+ })
+ this.getAchieveRule();
+ this.loadData();
+ window.addEventListener("keydown", this.keydown);
+ },
+ methods: {
+ changePageSize(val) {
+ this.table.pageSize = val;
+ this.loadData();
+ },
+ changeCurrentPage(val) {
+ this.table.currentPage = val;
+ this.loadData();
+ },
+ resetForm(formName) {
+ this.$refs[formName].resetFields();
+ this.form={
+ achieveRuleId:null,
+ staffName:null,
+ shopId:null,
+ orderType:'',
+ order:'',
+ sort:'',
+ beginTime:'',
+ endTime:'',
+ };
+ },
+ sortChange:function (column){
+ if(column.order){
+ if(column.order.indexOf("desc")){
+ this.form.order="desc";
+ }else{
+ this.form.order="asc";
+ }
+ this.form.sort=column.prop;
+ this.loadData();
+ }
+ },
+ loadData:function(){
+ let _this = this;
+ let data=_this.getRequestParam();
+ data.pageSize=_this.table.pageSize;
+ data.pageNum=_this.table.currentPage;
+ AjaxProxy.requst({
+ app: _this,
+ data:data,
+ url: basePath + '/admin/achieve/achieveNewStatistics',
+ callback: function (data) {
+ _this.table.rows = data.rows;
+ _this.table.total=data.total;
+ }
+ });
+ },
+
+ /**
+ * 获取规则
+ */
+ getAchieveRule(){
+ let _this = this;
+ AjaxProxy.requst({
+ app: _this,
+ data: {pageNum:1,pageSize:1000},
+ url: basePath + "/admin/achieveRule/selectList",
+ callback: function (data) {
+ _this.achieveRulsList=data.rows;
+ }
+ });
+ },
+
+ getRequestParam(){
+ let _this = this;
+ return {
+ achieveRuleId:_this.form.achieveRuleId,
+ staffName:_this.form.staffName,
+ shopId:_this.form.shopId,
+ orderType:_this.form.orderType,
+ beginTime:_this.form.datetimeArr?moment(_this.form.datetimeArr[0]).format("YYYY-MM-DD HH:mm"):'',
+ endTime:_this.form.datetimeArr?moment(_this.form.datetimeArr[1]).format("YYYY-MM-DD HH:mm"):'',
+ order:_this.form.order,
+ sort:_this.form.sort,
+ }
+ },
+ search:function(){
+ this.table.currentPage=1;
+ this.loadData();
+ },
+ keydown(evt){
+ if(evt.keyCode==13) {
+ this.search();
+ }
+ },
+
+ //导出
+ exportExcel(){
+ window.location.href=basePath+"/admin/achieve/exportAchieveNewStatisticsExcel?"+MTools.jsonToUrlParam(this.getRequestParam());
+ }
+
+ }
+ });
+
+
+</script>
+</body>
+</html>
\ No newline at end of file
diff --git a/zq-erp/src/main/resources/templates/views/admin/hive-erp/statistics/daily-list-new.html b/zq-erp/src/main/resources/templates/views/admin/hive-erp/statistics/daily-list-new.html
index f19c967..2243f43 100644
--- a/zq-erp/src/main/resources/templates/views/admin/hive-erp/statistics/daily-list-new.html
+++ b/zq-erp/src/main/resources/templates/views/admin/hive-erp/statistics/daily-list-new.html
@@ -149,7 +149,6 @@
<script type="text/javascript" th:src="@{/js/plugin/vue.js}"></script>
<script type="text/javascript" th:src="@{/plugin/element-ui/index.js}"></script>
<script type="text/javascript" th:src="@{/plugin/moment.min.js}"></script>
-<script type="text/javascript" th:src="@{/js/systools/MJsBase.js}"></script>
<script type="text/javascript" th:inline="javascript">
var vue = new Vue({
el : "#app",
@@ -184,10 +183,11 @@
},
methods : {
queryTableData () {
+
let _this = this;
- var form = _this.form;
- var page = _this.page;
- var params = _this.form;
+ let form = _this.form;
+ let page = _this.page;
+ let params = _this.form;
params.limit = page.size;
params.offset = (page.currentPage - 1) * page.size;
@@ -195,11 +195,14 @@
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"):'';
}
- $.AjaxProxy({
- p:params
- }).invoke(basePath + "/admin/achieve/findDailyInfoNew", function (loj) {
- _this.tableData = loj.getValue("rows");
- _this.page.total = loj.getResult().total;
+ AjaxProxy.requst({
+ app: _this,
+ data: params,
+ url: basePath + "/admin/achieve/findDailyInfoNew",
+ callback: function (loj) {
+ _this.tableData = loj.rows;
+ _this.page.total = loj.total;
+ }
});
},
queryCustomColumns() {
diff --git a/zq-erp/src/main/resources/templates/views/admin/hive/products/goods-form.html b/zq-erp/src/main/resources/templates/views/admin/hive/products/goods-form.html
index 225ed3c..212a682 100644
--- a/zq-erp/src/main/resources/templates/views/admin/hive/products/goods-form.html
+++ b/zq-erp/src/main/resources/templates/views/admin/hive/products/goods-form.html
@@ -83,6 +83,19 @@
</el-form-item>
</el-col>
+ <el-col :offset="2" :span="10" v-if="form.goodType!='家居产品'">
+ <el-form-item label="业绩规则" prop="achieveRuleId">
+ <el-select v-model="form.achieveRuleId" filterable placeholder="请选择业绩规则">
+ <el-option
+ v-for="item in achieveRulsList"
+ :key="item.id"
+ :label="item.name"
+ :value="item.id">
+ </el-option>
+ </el-select>
+ </el-form-item>
+ </el-col>
+
</el-row>
<el-row>
@@ -1097,7 +1110,8 @@
loading_zhk: false,
/******综合卡表格数据END********/
-
+ //提成规则
+ achieveRulsList:[],
//默认充值卡选中项
defaultCates: [],
@@ -1145,6 +1159,8 @@
useDateNum : '',
buyDateNum : '',
payMethods : '',
+ achieveRuleId:'',
+
},
submitUrl: '/admin/shoppinggoods/addShoppingGoods',
modifySubmitUrl: '/admin/shoppinggoods/modifyShoppingGoods',
@@ -1174,6 +1190,7 @@
this.getGoodstype();
this.getDictionary();
this.getShopInfo();
+ this.getAchieveRule();
if(goodType=='家居产品'){
this.getSupplierList();
}
@@ -1194,6 +1211,21 @@
methods: {
/**
+ * 获取规则
+ */
+ getAchieveRule(){
+ let _this = this;
+ AjaxProxy.requst({
+ app: _this,
+ data: {pageNum:1,pageSize:1000},
+ url: basePath + "/admin/achieveRule/selectList",
+ callback: function (data) {
+ _this.achieveRulsList=data.rows;
+ }
+ });
+ },
+
+ /**
* 商品分类树形组件格式化
*/
normalizer(node) {
diff --git a/zq-erp/src/main/resources/templates/views/admin/hive/products/shoppinggoods-md-list.html b/zq-erp/src/main/resources/templates/views/admin/hive/products/shoppinggoods-md-list.html
index 8608af7..77b6bba 100644
--- a/zq-erp/src/main/resources/templates/views/admin/hive/products/shoppinggoods-md-list.html
+++ b/zq-erp/src/main/resources/templates/views/admin/hive/products/shoppinggoods-md-list.html
@@ -62,6 +62,16 @@
<option value=''>请选择项目状态</option>
</select>
</div>
+ <div class="form-group mr-20">
+ <label for="staus">业绩规则</label>
+ <select class="form-control autoFull" name="achieveRuleId"
+ data-filed="name"
+ data-value="id"
+ th:data-url="@{/admin/achieveRule/selectListForm}"
+ data-param="{pageNum:1,pageSize:1000}">
+ <option value=''>请选择业绩规则</option>
+ </select>
+ </div>
<div class="form-group mr-20">
<label for="isPresent">是否赠送</label>
@@ -114,6 +124,7 @@
<th data-field="isPresent">是否赠送</th>
<th data-field="goodType" data-sortable="true">类型</th>
<th data-field="cateName">分类</th>
+ <th data-field="achieveRuleName" >业绩规则</th>
<th data-field="createTime" data-sortable="true" data-formatter="MGrid.getTime">创建时间</th>
</tr>
</thead>
diff --git a/zq-erp/src/main/resources/templates/views/admin/hive/products/shoppinggoods-zb-list.html b/zq-erp/src/main/resources/templates/views/admin/hive/products/shoppinggoods-zb-list.html
index b2d8c30..a9e5af4 100644
--- a/zq-erp/src/main/resources/templates/views/admin/hive/products/shoppinggoods-zb-list.html
+++ b/zq-erp/src/main/resources/templates/views/admin/hive/products/shoppinggoods-zb-list.html
@@ -63,6 +63,16 @@
<option value=''>请选择项目状态</option>
</select>
</div>
+ <div class="form-group mr-20">
+ <label for="staus">业绩规则</label>
+ <select class="form-control autoFull" name="achieveRuleId"
+ data-filed="name"
+ data-value="id"
+ th:data-url="@{/admin/achieveRule/selectListForm}"
+ data-param="{pageNum:1,pageSize:1000}">
+ <option value=''>请选择业绩规则</option>
+ </select>
+ </div>
<div class="form-group mr-20">
<label for="isPresent">是否赠送</label>
@@ -110,6 +120,7 @@
<th data-field="isPresent">是否赠送</th>
<th data-field="goodType" data-sortable="true">类型</th>
<th data-field="cateName" >分类</th>
+ <th data-field="achieveRuleName" >业绩规则</th>
<th data-field="createTime" data-sortable="true" data-formatter="MGrid.getTime">创建时间</th>
</tr>
</thead>
diff --git a/zq-erp/src/main/resources/templates/views/admin/hive/statistics/daily-list-new.html b/zq-erp/src/main/resources/templates/views/admin/hive/statistics/daily-list-new.html
index 611e200..8da1de1 100644
--- a/zq-erp/src/main/resources/templates/views/admin/hive/statistics/daily-list-new.html
+++ b/zq-erp/src/main/resources/templates/views/admin/hive/statistics/daily-list-new.html
@@ -151,7 +151,6 @@
<script type="text/javascript" th:src="@{/js/plugin/vue.js}"></script>
<script type="text/javascript" th:src="@{/plugin/element-ui/index.js}"></script>
<script type="text/javascript" th:src="@{/plugin/moment.min.js}"></script>
-<script type="text/javascript" th:src="@{/js/systools/MJsBase.js}"></script>
<script type="text/javascript" th:inline="javascript">
var vue = new Vue({
el : "#app",
@@ -187,10 +186,11 @@
},
methods : {
queryTableData () {
+
let _this = this;
- var form = _this.form;
- var page = _this.page;
- var params = _this.form;
+ let form = _this.form;
+ let page = _this.page;
+ let params = _this.form;
params.limit = page.size;
params.offset = (page.currentPage - 1) * page.size;
@@ -198,11 +198,14 @@
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"):'';
}
- $.AjaxProxy({
- p:params
- }).invoke(basePath + "/admin/achieve/findDailyInfoNew", function (loj) {
- _this.tableData = loj.getValue("rows");
- _this.page.total = loj.getResult().total;
+ AjaxProxy.requst({
+ app: _this,
+ data: params,
+ url: basePath + "/admin/achieve/findDailyInfoNew",
+ callback: function (loj) {
+ _this.tableData = loj.rows;
+ _this.page.total = loj.total;
+ }
});
},
queryCustomColumns() {
--
Gitblit v1.9.1