Browse Source

盯盘运营经理

yangzian 3 years ago
parent
commit
82a94656d2

+ 5 - 4
jeecg-boot-material-view/src/main/java/org/jeecg/ctop/material/controller/KuaiShouMaterialStareController.java

@@ -513,27 +513,28 @@ public class KuaiShouMaterialStareController {
     @GetMapping("/getOperationGroupData")
     public Result<JSONObject> getOperationGroupData(
                                                             @RequestParam(name="userId") String userId,
+                                                            @RequestParam(name="mediaType") String mediaType,
                                                             @RequestParam(name="startTime") String startTime,
                                                               @RequestParam(name="endTime") String endTime,
                                                               @RequestParam(name="pageNum",defaultValue = "1") Integer pageNum,
                                                               @RequestParam(name="pageSize",defaultValue = "5") Integer pageSize) {
 
-        return materialStareService.getOperationGroupData(userId,startTime,endTime, pageNum, pageSize);
+        return materialStareService.getOperationGroupData(userId,mediaType,startTime,endTime, pageNum, pageSize);
     }
 
 
 
 
     /**
-     * 运营组列表数据-导出-master
+     * 运营组列表数据-导出
      * @return
      */
     @GetMapping("/exportOperationGroupData")
-    public Result exportOperationGroupData(@RequestParam(name="userId") String userId,
+    public Result exportOperationGroupData(@RequestParam(name="userId") String userId,@RequestParam(name="mediaType") String mediaType,
                                            @RequestParam(name="startTime") String startTime,
                                                               @RequestParam(name="endTime") String endTime,HttpServletResponse response) {
 
-        return materialStareService.exportOperationGroupData(userId,startTime,endTime,response);
+        return materialStareService.exportOperationGroupData(userId,mediaType,startTime,endTime,response);
     }
 
 

+ 7 - 6
jeecg-boot-material-view/src/main/java/org/jeecg/ctop/material/mapper/xml/MaterialStareMapper.xml

@@ -165,7 +165,7 @@
 
         SELECT
         SUM( t.cost ) AS totalCost,
-        ( SELECT realname FROM `jeecg-boot`.sys_user u WHERE u.id = user_id ) AS userName
+        ( SELECT realname FROM `jeecg-boot`.sys_user u WHERE u.id = t.user_id ) AS userName
         FROM
         application.bytedance_advertiser_report_daily_dw t
         WHERE
@@ -326,7 +326,7 @@
         SELECT abi.account_id ,
         IFNULL(SUM(abi.new_effect_num),0) as newEffectNum,
         IFNULL(SUM(abi.new_campaign_num),0) as newCampaignNum,
-        IFNULL((SUM(abi.new_ad_num) - SUM(abi.trust_campaign_num)),0) as newUnitNum,
+        IFNULL((SUM(abi.new_ad_num) - SUM(abi.trust_campaign_num)),0) as trustUnitNum,
         IFNULL(SUM( abi.new_video_num ),0) AS newVideoNum,
         IFNULL(SUM( abi.new_hot_num ),0) AS newHotNum,
         IFNULL(SUM( abi.trust_campaign_num ),0) AS newUnitNum
@@ -576,12 +576,13 @@
     <select id="getBytedanceOperateProjectInfo" resultType="org.jeecg.ctop.material.entity.vo.KuaiShouOperateProjectVo">
         SELECT
         COUNT( DISTINCT d.account_id ) AS accountNum,
+        COUNT( DISTINCT d.user_id ) AS userNum,
         d.project_id AS projectId,
         d.project_name AS projectName,
         SUM( d.cost ) AS totalCost,
-        ( SELECT realname FROM `jeecg-boot`.sys_user u WHERE u.id = user_id ) AS userName
+        ( SELECT realname FROM `jeecg-boot`.sys_user u WHERE u.id = d.user_id ) AS userName
         FROM
-        application.bytedance_advertiser_report_daily_dw d
+        application.bytedance_advertiser_report_hourly_dw d
         LEFT JOIN `jeecg-boot`.ctop_user_allocation u on d.account_id = u.account_id
         WHERE
         d.cost > 0
@@ -1325,7 +1326,7 @@
         SELECT DISTINCT
         d.user_id
         FROM
-        application.bytedance_advertiser_report_daily_dw d
+        application.bytedance_advertiser_report_hourly_dw d
         WHERE
          d.cost > 0
         <if test="companyId != null and companyId != '' ">
@@ -1372,7 +1373,7 @@
         SELECT
         COUNT(DISTINCT d.project_id) as projectNum
         FROM
-        application.bytedance_advertiser_report_daily_dw d
+        application.bytedance_advertiser_report_hourly_dw d
         WHERE
          d.cost > 0
         <if test="startDate != null and startDate != '' ">

+ 2 - 2
jeecg-boot-material-view/src/main/java/org/jeecg/ctop/material/service/MaterialStareService.java

@@ -55,7 +55,7 @@ public interface MaterialStareService {
     List<JSONObject> getProjectByUserIdAndMediaIdsSubordinate(Set<String> userIds, List<Integer> mediaIds);
     Map<Long, List<JSONObject>> getAccountListByProjectListSubordinate(Set<String> userIds,List<JSONObject> projectList);
 
-    Result getOperationGroupData(String userId,String startTime, String endTime, Integer pageNum, Integer pageSize);
-    Result exportOperationGroupData(String userId,String startTime, String endTime,HttpServletResponse response);
+    Result getOperationGroupData(String userId,String mediaType,String startTime, String endTime, Integer pageNum, Integer pageSize);
+    Result exportOperationGroupData(String userId,String mediaType,String startTime, String endTime,HttpServletResponse response);
 
 }

+ 34 - 25
jeecg-boot-material-view/src/main/java/org/jeecg/ctop/material/service/impl/MaterialStareServiceImpl.java

@@ -280,14 +280,15 @@ public class MaterialStareServiceImpl implements MaterialStareService {
                 JSONObject totalCost = materialStareMapper.getBytedanceTotalCostDaily(Long.valueOf(DateUtils.getDateInteger(startTime)),
                         Long.valueOf(DateUtils.getDateInteger(endTime)),
                         operatorUserIds);
-                resultMap.put("sectionCost",totalCost.getDoubleValue("totalCost"));
+                Double tCost = Check.isNull(totalCost.getDoubleValue("totalCost")) ? 0.0 : totalCost.getDoubleValue("totalCost");
+                resultMap.put("sectionCost",tCost);
                 // 人均账户数量 = 时间段内 账户总数量 / 人数
                 Double userAverageAccount = Double.valueOf(totalCost.getString("accountNum")) / operatorUserIds.size();
                 // 人均消耗 = 时间段内 总消耗 / 人数
-                Double userAveragecost = Double.valueOf(totalCost.getString("totalCost")) / operatorUserIds.size();
+                Double userAveragecost = tCost / operatorUserIds.size();
                 DecimalFormat df = new DecimalFormat("#.000");
                 resultMap.put("userAverageAccount",new Double(Math.ceil(userAverageAccount)).intValue());
-                resultMap.put("userAveragecost",df.format(userAveragecost));
+                resultMap.put("userAveragecost",userAveragecost == 0.0 ? 0 : df.format(userAveragecost));
                 resultMap.put("projectNum",projectNum);
             }
 
@@ -1260,12 +1261,10 @@ public class MaterialStareServiceImpl implements MaterialStareService {
      * @time: 2022/8/31 15:16
      */
     @Override
-    public Result getOperationGroupData(String userId,String startTime,String endTime,Integer pageNum,Integer pageSize) {
+    public Result getOperationGroupData(String userId,String mediaType,String startTime,String endTime,Integer pageNum,Integer pageSize) {
         DecimalFormat decimalFormat = new DecimalFormat("0.00%");
         try {
 
-            log.info("开始------------------{}",DateUtils.getDate("yyyy-MM-dd HH:mm:ss"));
-
             long nowDate = Long.valueOf(DateUtils.getDateInteger(DateUtils.getDate("yyyy-MM-dd")));
 
             long startDate = Long.valueOf(DateUtils.getDateInteger(startTime));
@@ -1279,9 +1278,14 @@ public class MaterialStareServiceImpl implements MaterialStareService {
             //查询用户角色
             String roleCode = materialStareMapper.getRoleCodeByUserId(userId);
 
-
-            //所有运营经理
-            List<KuaiShouOperateGroupVo> allOperationManagerList = materialStareMapper.getOperationManagerUser("kuaishouOperationManager");
+            //所有运营经理 1-头条 2-快手
+            String roleCodeName = "";
+            if (mediaType.equals("1")){
+                roleCodeName = "touTiaoOperationManager";
+            }else {
+                roleCodeName = "kuaishouOperationManager";
+            }
+            List<KuaiShouOperateGroupVo> allOperationManagerList = materialStareMapper.getOperationManagerUser(roleCodeName);
             List<String> allManagerList = allOperationManagerList.stream().map(KuaiShouOperateGroupVo:: getUserId).collect(Collectors.toList());
 
             List<KuaiShouOperateGroupVo> operationManagerList = new ArrayList<>();
@@ -1303,10 +1307,9 @@ public class MaterialStareServiceImpl implements MaterialStareService {
             }else {
                 Result.successMsg("运营组列表数据查询成功。",null);
             }
-            log.info("获取人员------------------{}",DateUtils.getDate("yyyy-MM-dd HH:mm:ss"));
-            operationManagerList = ListPageUtil.page(operationManagerList, pageSize, pageNum);
 
-            for (KuaiShouOperateGroupVo groupVo : operationManagerList) {
+           List<KuaiShouOperateGroupVo> operationList = ListPageUtil.page(operationManagerList, pageSize, pageNum);
+            for (KuaiShouOperateGroupVo groupVo : operationList) {
                 //下级员工
                 Set<String> operatorUserIds = getAffiliateId(groupVo.getUserId());
                 //有消耗的账户
@@ -1363,7 +1366,6 @@ public class MaterialStareServiceImpl implements MaterialStareService {
                 //花费环比
                 groupVo.setYearOnYearCost(yearOnYear);
 
-
                 //当天
                 int newUnitNumNow = 0;
                 if (startDate == nowDate || entDate == nowDate){
@@ -1377,16 +1379,12 @@ public class MaterialStareServiceImpl implements MaterialStareService {
                 //基建数量
                 groupVo.setUnitNum(Check.isNull(newEffect) ? 0 : newEffect.getInteger("newUnitNum")+newUnitNumNow);//组
             }
-            log.info("结束------------------{}",DateUtils.getDate("yyyy-MM-dd HH:mm:ss"));
-
-            PageInfo<KuaiShouOperateGroupVo> pageInfo = new PageInfo<>(operationManagerList);
+            PageInfo<KuaiShouOperateGroupVo> pageInfo = new PageInfo<>(operationList);
             pageInfo.setTotal(operationManagerList.size());
             pageInfo.setPageSize(pageSize);
             pageInfo.setPageNum(pageNum);
             pageInfo.setIsLastPage(false);
             pageInfo.setHasNextPage(true);
-            log.info("返回------------------{}",DateUtils.getDate("yyyy-MM-dd HH:mm:ss"));
-
             return Result.successMsg("运营组列表数据查询成功。",pageInfo);
         }catch (Exception e){
             e.printStackTrace();
@@ -1395,7 +1393,7 @@ public class MaterialStareServiceImpl implements MaterialStareService {
     }
 
 
-    public Result exportOperationGroupData(String userId,String startTime,String endTime, HttpServletResponse response) {
+    public Result exportOperationGroupData(String userId,String mediaType,String startTime,String endTime, HttpServletResponse response) {
         DecimalFormat decimalFormat = new DecimalFormat("0.00%");
         try {
             long nowDate = Long.valueOf(DateUtils.getDateInteger(DateUtils.getDate("yyyy-MM-dd")));
@@ -1410,8 +1408,14 @@ public class MaterialStareServiceImpl implements MaterialStareService {
             //查询用户角色
             String roleCode = materialStareMapper.getRoleCodeByUserId(userId);
 
-            //所有运营经理
-            List<KuaiShouOperateGroupVo> allOperationManagerList = materialStareMapper.getOperationManagerUser("kuaishouOperationManager");
+            //所有运营经理 1-头条 2-快手
+            String roleCodeName = "";
+            if (mediaType.equals("1")){
+                roleCodeName = "touTiaoOperationManager";
+            }else {
+                roleCodeName = "kuaishouOperationManager";
+            }
+            List<KuaiShouOperateGroupVo> allOperationManagerList = materialStareMapper.getOperationManagerUser(roleCodeName);
             List<String> allManagerList = allOperationManagerList.stream().map(KuaiShouOperateGroupVo:: getUserId).collect(Collectors.toList());
 
             List<KuaiShouOperateGroupVo> operationManagerList = new ArrayList<>();
@@ -1435,7 +1439,6 @@ public class MaterialStareServiceImpl implements MaterialStareService {
             }
 
             for (KuaiShouOperateGroupVo groupVo : operationManagerList) {
-
                 //下级员工
                 Set<String> operatorUserIds = getAffiliateId(groupVo.getUserId());
                 //有消耗的账户
@@ -1447,26 +1450,31 @@ public class MaterialStareServiceImpl implements MaterialStareService {
 
                 //运营数量
                 int operationNum = Check.isNull(operatorUserIds) ? 0 : operatorUserIds.size();
-
                 groupVo.setOperationNum(operationNum);
+
                 //查询账户数据
                 List<KuaiShouOperateVo> listOperate= new ArrayList<>();
+
                 if (daysBetween <= 1){
                     //时报
                     listOperate= materialStareMapper.getKuaiShouOperateInfoHourly(startDate,entDate,operatorUserIds);
                 }else {
+
                     listOperate = materialStareMapper.getKuaiShouOperateInfo(startDate,entDate,operatorUserIds);
                 }
+
                 //总花费
                 Double totalCost = Check.isNull(listOperate) ? 0 : listOperate.stream().mapToDouble(KuaiShouOperateVo::getTotalCost).sum();
                 groupVo.setTotalCost(new BigDecimal(totalCost).setScale(3,BigDecimal.ROUND_HALF_UP).doubleValue());
+
                 //日均消耗 总花费/天数
                 Double aveDay = daysBetween == 0 ? 0 : totalCost/daysBetween;
                 groupVo.setAverageDayCost(new BigDecimal(aveDay).setScale(3,BigDecimal.ROUND_HALF_UP).doubleValue());
                 //人均消耗
                 Double avePeople = totalCost/operationNum;
-                groupVo.setAveragePeopleCost(avePeople);
-                  //项目数量
+                groupVo.setAveragePeopleCost(new BigDecimal(avePeople).setScale(3,BigDecimal.ROUND_HALF_UP).doubleValue());
+
+                //项目数量
                 Double projectNum = Check.isNull(listOperate) ? 0 : listOperate.stream().mapToDouble(KuaiShouOperateVo::getProjectNum).sum();
                 groupVo.setProjectNum(projectNum.longValue());
                 //账户数量
@@ -1485,6 +1493,7 @@ public class MaterialStareServiceImpl implements MaterialStareService {
                 }
                 //花费环比
                 groupVo.setYearOnYearCost(yearOnYear);
+
                 //当天
                 int newUnitNumNow = 0;
                 if (startDate == nowDate || entDate == nowDate){