Selaa lähdekoodia

修改销售绩效逻辑

syh 5 vuotta sitten
vanhempi
commit
71c8e208f8
14 muutettua tiedostoa jossa 276 lisäystä ja 28 poistoa
  1. 18 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/PerformanceAreaController.java
  2. 3 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/IAdvertiserService.java
  3. 5 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/PerformanceAreaService.java
  4. 9 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/impl/AdvertiserServiceImpl.java
  5. 60 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/impl/PerformanceAreaServiceImpl.java
  6. 13 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/vo/OverdueInfoVO.java
  7. 40 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/vo/SalePerformanceVO.java
  8. 20 20
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysUserService.java
  9. 7 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java
  10. 9 5
      module-ctop/src/main/java/cn/com/ctop/manage/modules/edu/service/impl/EduLessonServiceImpl.java
  11. 9 0
      performance-appraisal/src/main/java/cn/com/ctop/performanceappraisal/mapper/PerformanceMapper.java
  12. 55 2
      performance-appraisal/src/main/java/cn/com/ctop/performanceappraisal/mapper/xml/PerformanceMapper.xml
  13. 8 0
      performance-appraisal/src/main/java/cn/com/ctop/performanceappraisal/service/IPerformanceService.java
  14. 20 1
      performance-appraisal/src/main/java/cn/com/ctop/performanceappraisal/service/impl/PerformanceServiceImpl.java

+ 18 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/PerformanceAreaController.java

@@ -0,0 +1,18 @@
+package org.jeecg.modules.ctop.controller;
+
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.HashMap;
+import java.util.Map;
+
+@RestController
+@RequestMapping("performance")
+public class PerformanceAreaController {
+    @GetMapping("sales")
+    public Map<String, Object> salesPerformace() {
+        Map<String, Object> result = new HashMap<>();
+        return result;
+    }
+}

+ 3 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/IAdvertiserService.java

@@ -3,6 +3,8 @@ package org.jeecg.modules.ctop.service;
 import org.jeecg.modules.ctop.entity.Advertiser;
 import com.baomidou.mybatisplus.extension.service.IService;
 
+import java.util.List;
+
 /**
  * @Description: 广告主信息表
  * @Author: jeecg-boot
@@ -11,4 +13,5 @@ import com.baomidou.mybatisplus.extension.service.IService;
  */
 public interface IAdvertiserService extends IService<Advertiser> {
 
+    List<Advertiser> getBySaleId(String saleId);
 }

+ 5 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/PerformanceAreaService.java

@@ -0,0 +1,5 @@
+package org.jeecg.modules.ctop.service;
+
+public interface PerformanceAreaService {
+    void loadSalsePerformance();
+}

+ 9 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/impl/AdvertiserServiceImpl.java

@@ -1,5 +1,6 @@
 package org.jeecg.modules.ctop.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import org.jeecg.modules.ctop.entity.Advertiser;
 import org.jeecg.modules.ctop.mapper.AdvertiserMapper;
 import org.jeecg.modules.ctop.service.IAdvertiserService;
@@ -7,6 +8,8 @@ import org.springframework.stereotype.Service;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 
+import java.util.List;
+
 /**
  * @Description: 广告主信息表
  * @Author: jeecg-boot
@@ -16,4 +19,10 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 @Service
 public class AdvertiserServiceImpl extends ServiceImpl<AdvertiserMapper, Advertiser> implements IAdvertiserService {
 
+    @Override
+    public List<Advertiser> getBySaleId(String saleId) {
+        QueryWrapper<Advertiser> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("sale_id", saleId);
+        return this.list(queryWrapper);
+    }
 }

+ 60 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/impl/PerformanceAreaServiceImpl.java

@@ -0,0 +1,60 @@
+package org.jeecg.modules.ctop.service.impl;
+
+import cn.com.ctop.performanceappraisal.service.IPerformanceService;
+import org.jeecg.common.util.DateUtils;
+import org.jeecg.modules.ctop.entity.Advertiser;
+import org.jeecg.modules.ctop.service.IAdvertiserService;
+import org.jeecg.modules.ctop.service.PerformanceAreaService;
+import org.jeecg.modules.system.entity.SysUser;
+import org.jeecg.modules.system.service.ISysUserService;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+
+public class PerformanceAreaServiceImpl implements PerformanceAreaService {
+
+    @Autowired
+    private ISysUserService sysUserService;
+    @Autowired
+    private IPerformanceService performanceService;
+
+    @Override
+    public void loadSalsePerformance() {
+        //1:获取销售列表
+        List<SysUser> sales = sysUserService.getUserListByRoleId("75ee837e6f3de29c0e3ed75d4629438e");
+        //2:获取销售AM列表
+        List<SysUser> saleAms = sysUserService.getUserListByRoleId("f5a68aa2acf86e842100f0fa4b050d28");
+    }
+
+    public void countPerformance(SysUser user) {
+        Date getDate = DateUtils.addDay(new Date(), -1);
+        String startDate = DateUtils.getQuarterStartDate(getDate);
+        String endDate = DateUtils.getQuarterEndDate(getDate);
+        //1:获取快手季度总消耗
+        BigDecimal kuaishouDoSeasonTask = performanceService.getKuaishouSeasonTotalCost(startDate, endDate);
+        //2:获取快手个人季度总消耗
+        BigDecimal kuaishouDoPersonnalTask = performanceService.getKuaishouSalesSeasonTotalCost(startDate, endDate, user.getId());
+        //1:获取头条季度总消耗
+        BigDecimal bytedanceDoSeasonTask = performanceService.getBytedanceSeasonTotalCost(startDate, endDate);
+        //2:获取头条个人季度总消耗
+        BigDecimal bytedanceDoPersonnalTask = performanceService.getBytedanceSalesSeasonTotalCost(startDate, endDate, user.getId());
+        //获取销售所属的广告主信息
+        List<Advertiser> advertiserList = advertiserService.getBySaleId(user.getId());
+
+        if (null != advertiserList && advertiserList.size() > 0) {
+            for (Advertiser advertiser : advertiserList) {
+                Date endODate = DateUtils.addDay(advertiser.getCreateTime(), 90);
+                if (1 == 1) {
+
+                } else {
+
+                }
+            }
+        }
+    }
+
+    @Autowired
+    private IAdvertiserService advertiserService;
+}

+ 13 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/vo/OverdueInfoVO.java

@@ -0,0 +1,13 @@
+package org.jeecg.modules.ctop.vo;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class OverdueInfoVO {
+    private String accountId;
+    private String accountName;
+    private BigDecimal overdue;
+    private Integer overdueDays;
+}

+ 40 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/vo/SalePerformanceVO.java

@@ -0,0 +1,40 @@
+package org.jeecg.modules.ctop.vo;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+@Data
+public class SalePerformanceVO {
+    //用户名称
+    private String userName;
+    //媒体类型
+    private String mediaType;
+    //销售类型
+    private String salseType;
+    //项目名称
+    private String projectName;
+    //日期区间
+    private String duringDate;
+    //总消耗
+    private BigDecimal totalCost;
+    //季度任务
+    private BigDecimal seasonTask;
+    //季度任务完成情况
+    private BigDecimal doSeasonTask;
+    //是否自拓客户
+    private Integer extensionSelf;
+    //是否新客
+    private Integer brandNew;
+    //个人任务
+    private BigDecimal personnalTask;
+    //个人任务完成情况
+    private BigDecimal doPersonalTask;
+    //提成比例
+    private BigDecimal percentagePercent;
+    //逾期信息数据
+    List<OverdueInfoVO> overdueInfoVOList;
+    //提成金额
+    private BigDecimal percentage;
+}

+ 20 - 20
jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysUserService.java

@@ -1,19 +1,17 @@
 package org.jeecg.modules.system.service;
 
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-
+import com.baomidou.mybatisplus.extension.service.IService;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.system.vo.SysUserCacheInfo;
 import org.jeecg.modules.system.entity.SysUser;
-
-import com.baomidou.mybatisplus.extension.service.IService;
 import org.jeecg.modules.system.entity.SysUserVo;
 
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
 /**
  * <p>
  * 用户表 服务类
@@ -23,18 +21,18 @@ import org.jeecg.modules.system.entity.SysUserVo;
  * @since 2018-12-20
  */
 public interface ISysUserService extends IService<SysUser> {
-	
+
 	public SysUser getUserByName(String username);
-	
+
 	/**
 	 * 添加用户和用户角色关系
 	 * @param user
 	 * @param roles
 	 */
 	public void addUserWithRole(SysUser user,String roles);
-	
-	
-	/**
+
+
+    /**
 	 * 修改用户和用户角色关系
 	 * @param user
 	 * @param roles
@@ -47,8 +45,8 @@ public interface ISysUserService extends IService<SysUser> {
 	 * @return
 	 */
 	public List<String> getRole(String username);
-	
-	/**
+
+    /**
 	  * 查询用户信息包括 部门信息
 	 * @param username
 	 * @return
@@ -84,15 +82,15 @@ public interface ISysUserService extends IService<SysUser> {
 	 * @return 权限集合
 	 */
 	Set<String> getUserPermissionsSet(String username);
-	
-	/**
+
+    /**
 	 * 根据用户名设置部门ID
 	 * @param username
 	 * @param orgCode
 	 */
 	void updateUserDepart(String username,String orgCode);
-	
-	/**
+
+    /**
 	 * 根据手机号获取用户名和密码
 	 */
 	public SysUser getUserByPhone(String phone);
@@ -117,8 +115,8 @@ public interface ISysUserService extends IService<SysUser> {
 	 * @param departs
 	 */
 	void editUserWithDepart(SysUser user, String departs);
-	
-	/**
+
+    /**
 	   * 校验用户是否有效
 	 * @param sysUser
 	 * @return
@@ -131,4 +129,6 @@ public interface ISysUserService extends IService<SysUser> {
 
 
 	List<SysUserVo> getUserListByCompany(String companyId);
+
+    List<SysUser> getUserListByRoleId(String roleId);
 }

+ 7 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java

@@ -275,5 +275,12 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
         return userMapper.getUserListByCompany(companyId);
     }
 
+    @Override
+    public List<SysUser> getUserListByRoleId(String roleId) {
+        QueryWrapper<SysUser> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("role_id", roleId);
+        return this.list(queryWrapper);
+    }
+
 
 }

+ 9 - 5
module-ctop/src/main/java/cn/com/ctop/manage/modules/edu/service/impl/EduLessonServiceImpl.java

@@ -6,16 +6,13 @@ import cn.com.ctop.manage.modules.edu.mapper.EduLessonMapper;
 import cn.com.ctop.manage.modules.edu.service.IEduLessonService;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.ObjectMapper;
-import me.chanjar.weixin.common.util.DataUtils;
 import org.jeecg.common.util.DateUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import org.springframework.util.unit.DataUnit;
-
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
@@ -31,12 +28,18 @@ import java.util.Map;
 public class EduLessonServiceImpl extends ServiceImpl<EduLessonMapper, EduLesson> implements IEduLessonService {
     @Autowired
     private EduLessonMapper eduLessonMapper;
+
+    @Override
     public List<String> getTitleList(String media){
         return eduLessonMapper.getTitleList(media);
     }
-    public List<String> getTopicList(String media,String title){
+
+    @Override
+    public List<String> getTopicList(String media, String title) {
         return eduLessonMapper.getTopicList(media,title);
     }
+
+    @Override
     public void getKuaishouEduLesson(String url){
         Map<String,String> headMap = new HashMap<>();
         JSONObject jsonObject = new JSONObject();
@@ -92,6 +95,7 @@ public class EduLessonServiceImpl extends ServiceImpl<EduLessonMapper, EduLesson
         }
     }
 
+    @Override
     public void getBytedanceEduLesson(String url){
 //        String url = "https://school.oceanengine.com/academy/v2/course/learning_path_json/1/";
         Map<String,String> headMap = new HashMap<>();

+ 9 - 0
performance-appraisal/src/main/java/cn/com/ctop/performanceappraisal/mapper/PerformanceMapper.java

@@ -5,6 +5,7 @@ import cn.com.ctop.performanceappraisal.vo.OptimizerCostDetailVO;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.apache.ibatis.annotations.Param;
 
+import java.math.BigDecimal;
 import java.util.List;
 
 /**
@@ -36,4 +37,12 @@ public interface PerformanceMapper extends BaseMapper<Performance> {
     OptimizerCostDetailVO getKuaishouOptimizerTotalCost(@Param(value = "startDate") String startDate, @Param(value = "endDate") String endDate, @Param(value = "year") String year, @Param(value = "quarter") String quarter);
 
     OptimizerCostDetailVO getBytedanceOptimizerTotalCost(@Param(value = "startDate") String startDate, @Param(value = "endDate") String endDate, @Param(value = "year") String year, @Param(value = "quarter") String quarter);
+
+    BigDecimal getBytedanceSeasonTotalCost(@Param(value = "startDate") String startDate, @Param(value = "endDate") String endDate);
+
+    BigDecimal getKuaishouSeasonTotalCost(@Param(value = "startDate") String startDate, @Param(value = "endDate") String endDate);
+
+    BigDecimal getKuaishouSalesSeasonTotalCost(@Param(value = "startDate") String startDate, @Param(value = "endDate") String endDate, @Param(value = "saleId") String saleId);
+
+    BigDecimal getBytedanceSalesSeasonTotalCost(@Param(value = "startDate") String startDate, @Param(value = "endDate") String endDate, @Param(value = "saleId") String saleId);
 }

+ 55 - 2
performance-appraisal/src/main/java/cn/com/ctop/performanceappraisal/mapper/xml/PerformanceMapper.xml

@@ -262,12 +262,33 @@
         WHERE
             userRole.role_id = '79fba4f45f1b8e284af9c68311c6c771'
         AND
-            dailyAccount.stat_date &gt;= #{startDate}
+            dailyAccount.stat_datetime &gt;= #{startDate}
         AND
-            dailyAccount.stat_date &lt; #{endDate}
+            dailyAccount.stat_datetime &lt; #{endDate}
         GROUP BY userRole.role_id
     </select>
 
+    <select id="getBytedanceSeasonTotalCost" resultType="java.math.BigDecimal">
+        SELECT
+            SUM(cost)
+        FROM
+            ctop_bytedance_report_advertiser_daily
+        WHERE
+            stat_date &gt;= #{startDate}
+        AND
+            stat_date &lt; #{endDate}
+    </select>
+    <select id="getKuaishouSeasonTotalCost" resultType="java.math.BigDecimal">
+        SELECT
+            SUM(charge)
+        FROM
+            ctop_kuaishou_report_daily_account
+        WHERE
+            stat_date &gt;= #{startDate}
+        AND
+            stat_date &lt; #{endDate}
+    </select>
+
     <select id="getKuaishouMemberPerformanceByOrgCode" resultMap="OptimizerTotalCostDetail">
         SELECT
             sysUser.id as userId,sysUser.realname as realName,SUM(charge) as totalCost,#{year} AS year,#{quarter} as quarter,2 as appType
@@ -309,4 +330,36 @@
         ORDER BY
             SUM(dailyAccount.cost) DESC
     </select>
+    <select id="getKuaishouSalesSeasonTotalCost" resultType="java.math.BigDecimal">
+        SELECT
+            SUM(charge)
+        FROM
+            ctop_kuaishou_report_daily_account daily
+        LEFT JOIN
+            ctop_user_allocation allocation ON daily.account_id = allocation.account_id
+        LEFT JOIN
+            ctop_advertiser advertiser ON advertiser.id = allocation.advertiser_id
+        WHERE
+            advertiser.sale_id = #{saleId}
+        AND
+            daily.stat_date &gt;= #{startDate}
+        AND
+            daily.stat_date &lt; #{endDate}
+    </select>
+    <select id="getBytedanceSalesSeasonTotalCost" resultType="java.math.BigDecimal">
+        SELECT
+            SUM(charge)
+        FROM
+            ctop_bytedance_report_advertiser_daily daily
+        LEFT JOIN
+            ctop_user_allocation allocation ON daily.advertiser_id = allocation.account_id
+        LEFT JOIN
+            ctop_advertiser advertiser ON advertiser.id = allocation.advertiser_id
+        WHERE
+            advertiser.sale_id = #{saleId}
+        AND
+            daily.stat_datetime &gt;= #{startDate}
+        AND
+            daily.stat_datetime &lt; #{endDate}
+    </select>
 </mapper>

+ 8 - 0
performance-appraisal/src/main/java/cn/com/ctop/performanceappraisal/service/IPerformanceService.java

@@ -6,6 +6,7 @@ import cn.com.ctop.performanceappraisal.vo.DesignerCostDetailVO;
 import cn.com.ctop.performanceappraisal.vo.OptimizerCostDetailVO;
 import com.baomidou.mybatisplus.extension.service.IService;
 
+import java.math.BigDecimal;
 import java.util.List;
 import java.util.Map;
 
@@ -35,4 +36,11 @@ public interface IPerformanceService extends IService<Performance> {
 
     Map<String, Object> getMemberPerformanceByUserId(OptimizerConfig config, OptimizerCostDetailVO totalCostVo);
 
+    BigDecimal getBytedanceSeasonTotalCost(String startDate, String endDate);
+
+    BigDecimal getKuaishouSeasonTotalCost(String startDate, String endDate);
+
+    BigDecimal getKuaishouSalesSeasonTotalCost(String startDate, String endDate, String id);
+
+    BigDecimal getBytedanceSalesSeasonTotalCost(String startDate, String endDate, String id);
 }

+ 20 - 1
performance-appraisal/src/main/java/cn/com/ctop/performanceappraisal/service/impl/PerformanceServiceImpl.java

@@ -21,7 +21,6 @@ import java.math.RoundingMode;
 import java.util.*;
 
 /**
- * 设计师季度绩效表
  *
  * @author jeecg-boot
  * @version V1.0
@@ -164,6 +163,26 @@ public class PerformanceServiceImpl extends ServiceImpl<PerformanceMapper, Perfo
         return result;
     }
 
+    @Override
+    public BigDecimal getBytedanceSeasonTotalCost(String startDate, String endDate) {
+        return performanceMapper.getBytedanceSeasonTotalCost(startDate, endDate);
+    }
+
+    @Override
+    public BigDecimal getKuaishouSeasonTotalCost(String startDate, String endDate) {
+        return performanceMapper.getKuaishouSeasonTotalCost(startDate, endDate);
+    }
+
+    @Override
+    public BigDecimal getKuaishouSalesSeasonTotalCost(String startDate, String endDate, String salesId) {
+        return performanceMapper.getKuaishouSalesSeasonTotalCost(startDate, endDate, salesId);
+    }
+
+    @Override
+    public BigDecimal getBytedanceSalesSeasonTotalCost(String startDate, String endDate, String salesId) {
+        return performanceMapper.getBytedanceSalesSeasonTotalCost(startDate, endDate, salesId);
+    }
+
     private BigDecimal getTotalRoyalty(OptimizerConfig config, OptimizerCostDetailVO vo, OptimizerCostDetailVO quarterCost) {
         BigDecimal royalty = BigDecimal.ZERO;
         //个人总消耗