ソースを参照

添加销售绩效计算逻辑

syh 5 年 前
コミット
aa36ee0dd9

+ 6 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/entity/SalePerformanceDetail.java

@@ -170,4 +170,10 @@ public class SalePerformanceDetail {
                 ", updateTime=" + updateTime +
                 '}';
     }
+
+
+    public SalePerformanceDetail() {
+        this.createTime = new Date();
+        this.updateTime = new Date();
+    }
 }

+ 1 - 1
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/IPerformanceAreaService.java

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

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

@@ -6,7 +6,7 @@ import org.jeecg.common.util.DateUtils;
 import org.jeecg.modules.ctop.entity.Advertiser;
 import org.jeecg.modules.ctop.entity.SalePerformanceDetail;
 import org.jeecg.modules.ctop.service.IAdvertiserService;
-import org.jeecg.modules.ctop.service.IPerformanceAreaService;
+import org.jeecg.modules.ctop.service.IPerformanceSaleService;
 import org.jeecg.modules.ctop.service.ISalePerformanceDetailService;
 import org.jeecg.modules.system.entity.SysUser;
 import org.jeecg.modules.system.entity.SysUserRole;
@@ -23,7 +23,7 @@ import java.util.Date;
 import java.util.List;
 
 @Service
-public class PerformanceAreaServiceImpl implements IPerformanceAreaService {
+public class PerformanceSaleServiceImpl implements IPerformanceSaleService {
 
     @Autowired
     private ISysUserService sysUserService;
@@ -33,14 +33,14 @@ public class PerformanceAreaServiceImpl implements IPerformanceAreaService {
     @Override
     public void loadSalsePerformance() {
         //1:获取销售列表
-        List<SysUser> sales = sysUserService.getUserListByRoleId("75ee837e6f3de29c0e3ed75d4629438e");
+        List<SysUser> sales = sysUserService.getUserListByRoleId(CtopAdConstant.SYSTEM_SALE_CODE);
         if (null != sales && sales.size() > 0) {
             sales.forEach(sale -> {
                 countPerformance(sale);
             });
         }
         //2:获取销售AM列表
-        List<SysUser> saleAms = sysUserService.getUserListByRoleId("f5a68aa2acf86e842100f0fa4b050d28");
+        List<SysUser> saleAms = sysUserService.getUserListByRoleId(CtopAdConstant.SYSTEM_SALE_AM_CODE);
         if (null != saleAms && saleAms.size() > 0) {
             saleAms.forEach(saleAm -> {
                 countPerformance(saleAm);
@@ -107,11 +107,6 @@ public class PerformanceAreaServiceImpl implements IPerformanceAreaService {
         }
     }
 
-    public static final BigDecimal BYTEDANCE_MEDIA_TASK_COST = new BigDecimal("200000000");
-    public static final BigDecimal KUAISHOU_MEDIA_TASK_COST = new BigDecimal("200000000");
-    public static final BigDecimal BYTEDANCE_PERSONAL_TASK_COST = new BigDecimal("2400000");
-    public static final BigDecimal KUAISHOU_PERSONAL_TASK_COST = new BigDecimal("2400000");
-
     private void saveSalePerformanceDetail(Advertiser advertiser, SysUser user, SysUserRole userRole, int year, int quarter, String startDate, String endDate, BigDecimal bytedanceFinishMediaTask, BigDecimal bytedanceFinishPersonnalTask, BigDecimal kuaishouFinishMediaTask, BigDecimal kuaishouFinishPersonnalTask, Integer brandNew) {
         SalePerformanceDetail detail = new SalePerformanceDetail();
         detail.setAdvertiserId(advertiser.getId());
@@ -123,30 +118,30 @@ public class PerformanceAreaServiceImpl implements IPerformanceAreaService {
         detail.setEndDate(endDate);
         detail.setExtensionSelf(advertiser.getAdvertiserType());
         detail.setBrandNew(brandNew);
-        if (user.getOrgCode().startsWith("A01A11A02")) {
+        if (user.getOrgCode().startsWith(CtopAdConstant.HB_BYTEDANCE_SALE_ORG_CODE)) {
             detail.setMediaType(CtopAdConstant.PLATFORM_TYPE_BYTEDANCE);
             BigDecimal totalCost = performanceService.getSalesSeasonTotalCostByParams(startDate, endDate, null, advertiser.getId(), CtopAdConstant.PLATFORM_TYPE_BYTEDANCE);
             if (null == totalCost) {
                 totalCost = BigDecimal.ZERO;
             }
             detail.setTotalCost(totalCost);
-            detail.setMediaTask(BYTEDANCE_MEDIA_TASK_COST);
+            detail.setMediaTask(CtopAdConstant.BYTEDANCE_MEDIA_TASK_COST);
             detail.setDoMediaTask(bytedanceFinishMediaTask);
-            detail.setPersonnalTask(BYTEDANCE_PERSONAL_TASK_COST);
+            detail.setPersonnalTask(CtopAdConstant.BYTEDANCE_PERSONAL_TASK_COST);
             detail.setDoPersonalTask(bytedanceFinishPersonnalTask);
             detail.setPercent(getPercentagePercent(detail));
             detail.setPercentage(detail.getTotalCost().multiply(detail.getPercent()).setScale(2, RoundingMode.HALF_UP));
             salePerformanceDetailService.save(detail);
-        } else if (user.getOrgCode().startsWith("A01A11A01")) {
+        } else if (user.getOrgCode().startsWith(CtopAdConstant.HB_KUAISHOU_SALE_ORG_CODE)) {
             detail.setMediaType(CtopAdConstant.PLATFORM_TYPE_KUAISHOU);
             BigDecimal totalCost = performanceService.getSalesSeasonTotalCostByParams(startDate, endDate, null, advertiser.getId(), CtopAdConstant.PLATFORM_TYPE_KUAISHOU);
             if (null == totalCost) {
                 totalCost = BigDecimal.ZERO;
             }
             detail.setTotalCost(totalCost);
-            detail.setMediaTask(KUAISHOU_MEDIA_TASK_COST);
+            detail.setMediaTask(CtopAdConstant.KUAISHOU_MEDIA_TASK_COST);
             detail.setDoMediaTask(kuaishouFinishMediaTask);
-            detail.setPersonnalTask(KUAISHOU_PERSONAL_TASK_COST);
+            detail.setPersonnalTask(CtopAdConstant.KUAISHOU_PERSONAL_TASK_COST);
             detail.setDoPersonalTask(kuaishouFinishPersonnalTask);
             //提成比例
             detail.setPercent(getPercentagePercent(detail));
@@ -157,11 +152,10 @@ public class PerformanceAreaServiceImpl implements IPerformanceAreaService {
         }
     }
 
-    //TODO 提成比例
     private BigDecimal getPercentagePercent(SalePerformanceDetail detail) {
         BigDecimal percent = detail.getDoMediaTask().divide(detail.getMediaTask()).multiply(new BigDecimal("100"));
         //AM非自拓客户
-        if (detail.getRoleId().equals("f5a68aa2acf86e842100f0fa4b050d28") && detail.getExtensionSelf() != 1) {
+        if (detail.getRoleId().equals(CtopAdConstant.SYSTEM_SALE_AM_CODE) && detail.getExtensionSelf() != 1) {
             return new BigDecimal("0.0005");
         }
         if (detail.getMediaType().equals(CtopAdConstant.PLATFORM_TYPE_BYTEDANCE)) {
@@ -197,7 +191,6 @@ public class PerformanceAreaServiceImpl implements IPerformanceAreaService {
             } else {
                 return new BigDecimal("0.001");
             }
-
         }
     }
 

+ 14 - 3
jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysUserController.java

@@ -137,12 +137,10 @@ public class SysUserController {
         return result;
     }
 
-
     @RequestMapping(value = "/getAllUserList", method = RequestMethod.GET)
     public Result<List<SysUserVo>> getAllList() {
         Result<List<SysUserVo>> result = new Result<>();
         try {
-
             List<SysUserVo> userList = sysUserService.getAllUser();
             result.setSuccess(true);
             result.setResult(userList);
@@ -150,9 +148,22 @@ public class SysUserController {
             e.printStackTrace();
             result.setSuccess(false);
             result.setMessage("请求失败");
-
         }
+        return result;
+    }
 
+    @RequestMapping(value = "/getAllSaleList", method = RequestMethod.GET)
+    public Result<List<SysUserVo>> getSaleList() {
+        Result<List<SysUserVo>> result = new Result<>();
+        try {
+            List<SysUserVo> userList = sysUserService.getAllSales();
+            result.setSuccess(true);
+            result.setResult(userList);
+        } catch (Exception e) {
+            e.printStackTrace();
+            result.setSuccess(false);
+            result.setMessage("请求失败");
+        }
         return result;
     }
 

+ 2 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysUserMapper.java

@@ -78,4 +78,6 @@ public interface SysUserMapper extends BaseMapper<SysUser> {
     List<SysUserVo> getAllUser();
 
     List<SysUserVo> getUserListByCompany(@Param("companyId") String companyId);
+
+    List<SysUserVo> getAllSale();
 }

+ 12 - 1
jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/SysUserMapper.xml

@@ -93,6 +93,17 @@ SELECT
     LEFT JOIN sys_user_role t3 on t1.user_id = t3.user_id
     WHERE t1.company_id = #{companyId}
     </select>
+    <select id="getAllSale" resultType="org.jeecg.modules.system.entity.SysUserVo">
+        SELECT
+            t1.id userId,
+            t1.username userName,
+            t1.realname realName,
+            t3.role_name as  roleName
+        FROM sys_user t1
+        LEFT JOIN sys_user_role t2 on t1.id = t2.user_id
+        left join sys_role t3 on t3.id = t2.role_id
+        where t3.role_name like '销售%';
+    </select>
 
 
-</mapper>
+</mapper>

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

@@ -131,4 +131,6 @@ public interface ISysUserService extends IService<SysUser> {
 	List<SysUserVo> getUserListByCompany(String companyId);
 
     List<SysUser> getUserListByRoleId(String roleId);
+
+    List<SysUserVo> getAllSales();
 }

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

@@ -283,5 +283,10 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
         return userPage.getRecords();
     }
 
+    @Override
+    public List<SysUserVo> getAllSales() {
+        return userMapper.getAllSale();
+    }
+
 
 }

+ 3 - 3
jeecg-boot-module-system/src/test/java/org/jeecg/SampleTest.java

@@ -15,7 +15,7 @@ import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import lombok.extern.slf4j.Slf4j;
-import org.jeecg.modules.ctop.service.IPerformanceAreaService;
+import org.jeecg.modules.ctop.service.IPerformanceSaleService;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -238,11 +238,11 @@ public class SampleTest {
 
     @Test
     public void testSalePerformance() {
-        performanceAreaService.loadSalsePerformance();
+        performanceSaleService.loadSalsePerformance();
     }
 
     @Autowired
-    private IPerformanceAreaService performanceAreaService;
+    private IPerformanceSaleService performanceSaleService;
 
 
     @Test

+ 27 - 0
module-common/src/main/java/cn/com/ctop/common/module/utils/CtopAdConstant.java

@@ -1,5 +1,7 @@
 package cn.com.ctop.common.module.utils;
 
+import java.math.BigDecimal;
+
 /**
  * 广告相关常量数据
  */
@@ -21,4 +23,29 @@ public class CtopAdConstant {
 
     public static final String KUAISHOU_LOAD_JOB_TYPE_HISTORY = "history";
     public static final String KUAISHOU_LOAD_JOB_TYPE_DAILY = "daily";
+
+    /**
+     * 销售角色Id
+     */
+    public static final String SYSTEM_SALE_CODE = "75ee837e6f3de29c0e3ed75d4629438e";
+
+    /**
+     * 销售AM角色Id
+     */
+    public static final String SYSTEM_SALE_AM_CODE = "f5a68aa2acf86e842100f0fa4b050d28";
+
+
+    public static final BigDecimal BYTEDANCE_MEDIA_TASK_COST = new BigDecimal("200000000");
+    public static final BigDecimal KUAISHOU_MEDIA_TASK_COST = new BigDecimal("200000000");
+    public static final BigDecimal BYTEDANCE_PERSONAL_TASK_COST = new BigDecimal("2400000");
+    public static final BigDecimal KUAISHOU_PERSONAL_TASK_COST = new BigDecimal("2400000");
+
+    /**
+     * 华北快手销售机构号
+     */
+    public static final String HB_KUAISHOU_SALE_ORG_CODE = "A01A11A01";
+    /**
+     * 华北头条销售机构号
+     */
+    public static final String HB_BYTEDANCE_SALE_ORG_CODE = "A01A11A02";
 }