Browse Source

销售盯盘V1-2功能版本更新

zhaoxian 2 years ago
parent
commit
b9b877d876

+ 8 - 6
jeecg-boot-material-view/src/main/java/org/jeecg/ctop/material/controller/ManagerSaleValueController.java

@@ -137,6 +137,7 @@ public class ManagerSaleValueController {
                 list.forEach(data -> {
                 list.forEach(data -> {
                     List<Object> temp = new ArrayList<>();
                     List<Object> temp = new ArrayList<>();
                     temp.add(data.getString("projectName"));
                     temp.add(data.getString("projectName"));
+                    temp.add(data.getString("operateName"));
                     temp.add(data.getString("saleName"));
                     temp.add(data.getString("saleName"));
                     temp.add(data.getString("charge"));
                     temp.add(data.getString("charge"));
                     temp.add(data.getString("chargeRoi"));
                     temp.add(data.getString("chargeRoi"));
@@ -146,12 +147,13 @@ public class ManagerSaleValueController {
                 });
                 });
             }
             }
             List<String> titles = new ArrayList<>();
             List<String> titles = new ArrayList<>();
-            titles.add(0, "项目名称");
-            titles.add(1, "销售");
-            titles.add(2, "消耗");
-            titles.add(3, "消耗环比");
-            titles.add(4, "现金消耗");
-            titles.add(5, "激励消耗");
+            titles.add(0, "项目");
+            titles.add(1, "运营负责人");
+            titles.add(2, "销售");
+            titles.add(3, "消耗(元)");
+            titles.add(4, "消耗环比");
+            titles.add(5, "现金消耗");
+            titles.add(6, "激励消耗");
 
 
             OutputStream os = response.getOutputStream();
             OutputStream os = response.getOutputStream();
             ExportExcelUtils eeu = new ExportExcelUtils();
             ExportExcelUtils eeu = new ExportExcelUtils();

+ 7 - 0
jeecg-boot-material-view/src/main/java/org/jeecg/ctop/material/mapper/ManagerSaleValueMapper.java

@@ -32,6 +32,8 @@ public interface ManagerSaleValueMapper extends BaseMapper<ManagerSaleValue> {
 
 
     List<Long> querySalesDirectorAccountIds(@Param("companyId") String companyId, @Param("mediaId") String mediaId, @Param("userIds") List<String> saleTeaMber, @Param("operateUser") String operateUser);
     List<Long> querySalesDirectorAccountIds(@Param("companyId") String companyId, @Param("mediaId") String mediaId, @Param("userIds") List<String> saleTeaMber, @Param("operateUser") String operateUser);
 
 
+    List<Long> querySalesDirectorAccountIds2(@Param("companyId") String companyId, @Param("mediaId") String mediaId, @Param("userIds") List<String> saleTeaMber);
+
     /**
     /**
      * -----------------------------------------------------
      * -----------------------------------------------------
      */
      */
@@ -40,6 +42,8 @@ public interface ManagerSaleValueMapper extends BaseMapper<ManagerSaleValue> {
 
 
     JSONObject queryTtTodayCharge2(@Param("statDay") String statDay, @Param("endTime") String endTime, @Param("hour") Integer hour, @Param("accountIds") List<Long> accountIds, @Param("companyId") String companyId, @Param("days") long days);
     JSONObject queryTtTodayCharge2(@Param("statDay") String statDay, @Param("endTime") String endTime, @Param("hour") Integer hour, @Param("accountIds") List<Long> accountIds, @Param("companyId") String companyId, @Param("days") long days);
 
 
+    JSONObject queryTtTodayCharge3(@Param("statDay") String statDay, @Param("endTime") String endTime, @Param("mediaId") String mediaId, @Param("hour") Integer hour, @Param("companyId") String companyId, @Param("days") long days);
+
     String queryTtManydaysTotalCharge(@Param("startDay") String startDay, @Param("endDay") String endDay, @Param("accountIds") List<Long> accountIds, @Param("companyId") String companyId);
     String queryTtManydaysTotalCharge(@Param("startDay") String startDay, @Param("endDay") String endDay, @Param("accountIds") List<Long> accountIds, @Param("companyId") String companyId);
 
 
     JSONObject queryTtRealCharged(@Param("lastMonthFirstday") String lastMonthFirstday, @Param("monthFirstday") String monthFirstday, @Param("statDay") String statDay, @Param("accountIds") List<Long> accountIds, @Param("companyId") String companyId);
     JSONObject queryTtRealCharged(@Param("lastMonthFirstday") String lastMonthFirstday, @Param("monthFirstday") String monthFirstday, @Param("statDay") String statDay, @Param("accountIds") List<Long> accountIds, @Param("companyId") String companyId);
@@ -49,6 +53,8 @@ public interface ManagerSaleValueMapper extends BaseMapper<ManagerSaleValue> {
 
 
     JSONObject queryKsTodayCharge2(@Param("statDay") String statDay, @Param("endTime") String endTime, @Param("hour") Integer hour, @Param("accountIds") List<Long> accountIds, @Param("companyId") String companyId, @Param("days") long days);
     JSONObject queryKsTodayCharge2(@Param("statDay") String statDay, @Param("endTime") String endTime, @Param("hour") Integer hour, @Param("accountIds") List<Long> accountIds, @Param("companyId") String companyId, @Param("days") long days);
 
 
+    JSONObject queryKsTodayCharge3(@Param("statDay") String statDay, @Param("endTime") String endTime, @Param("mediaId") String mediaId, @Param("hour") Integer hour, @Param("companyId") String companyId, @Param("days") long days);
+
     String queryKsManydaysTotalCharge(@Param("startDay") String startDay, @Param("endDay") String endDay, @Param("accountIds") List<Long> accountIds, @Param("companyId") String companyId);
     String queryKsManydaysTotalCharge(@Param("startDay") String startDay, @Param("endDay") String endDay, @Param("accountIds") List<Long> accountIds, @Param("companyId") String companyId);
 
 
     JSONObject queryKsRealCharged(@Param("lastMonthFirstday") String lastMonthFirstday, @Param("monthFirstday") String monthFirstday, @Param("statDay") String statDay, @Param("accountIds") List<Long> accountIds, @Param("companyId") String companyId);
     JSONObject queryKsRealCharged(@Param("lastMonthFirstday") String lastMonthFirstday, @Param("monthFirstday") String monthFirstday, @Param("statDay") String statDay, @Param("accountIds") List<Long> accountIds, @Param("companyId") String companyId);
@@ -79,4 +85,5 @@ public interface ManagerSaleValueMapper extends BaseMapper<ManagerSaleValue> {
 
 
     List<JSONObject> queryTtHourProjectTop(@Param("accountIds") List<Long> accountIds, @Param("startTime") String startTime, @Param("endTime") String endTime, @Param("days") Long days, @Param("hour") Integer hour, @Param("companyId") String companyId);
     List<JSONObject> queryTtHourProjectTop(@Param("accountIds") List<Long> accountIds, @Param("startTime") String startTime, @Param("endTime") String endTime, @Param("days") Long days, @Param("hour") Integer hour, @Param("companyId") String companyId);
 
 
+
 }
 }

+ 249 - 0
jeecg-boot-material-view/src/main/java/org/jeecg/ctop/material/mapper/xml/ManagerSaleValueMapper.xml

@@ -64,12 +64,66 @@
             select user_id
             select user_id
             from `application`.app_user_manage
             from `application`.app_user_manage
             where manage_id = #{operateUser}
             where manage_id = #{operateUser}
+            UNION ALL
+            SELECT #{operateUser}
             )
             )
         </if>
         </if>
         GROUP BY
         GROUP BY
         account_id
         account_id
     </select>
     </select>
 
 
+    <select id="querySalesDirectorAccountIds2" resultType="Long">
+        SELECT
+        account_id
+        FROM
+        `jeecg-boot`.ctop_user_allocation
+        WHERE
+        project_id IN (
+        SELECT DISTINCT
+        id
+        FROM `jeecg-boot`.ctop_project
+        WHERE company_id = #{companyId}
+        <if test='mediaId ==2'>
+            AND (media_id = 2 or media_id = 4)
+        </if>
+        <if test='mediaId ==1'>
+            AND (media_id = 1 or media_id = 3)
+        </if>
+        <if test="userIds !=null and userIds.size()>0">
+            AND sale_id IN
+            <foreach collection="userIds" item="id" separator=","
+                     open="(" close=")">
+                #{id}
+            </foreach>
+        </if>
+        )
+        AND user_id in (
+        select user_id
+        from `application`.app_user_manage
+        where manage_id IN ('461857c245f54ba5813bcb5900a23092','00d630a129e4487cba5427788a1f08ce')
+        UNION ALL
+        select '461857c245f54ba5813bcb5900a23092'
+        UNION ALL
+        select '00d630a129e4487cba5427788a1f08ce'
+        )
+        and user_id not in (select id
+        from `jeecg-boot`.sys_user
+        where sys_user.leader_id in
+        ('b602f82bd3c24aa38b0fc7f187d47633',
+        'd25c266dfab34277b9a44edacb2873b8','825c50296f794ca4b7757b4fae1c6b75','bedac9d87fc04470bb72bbbd82aaf1e0')
+        union all
+        select 'b602f82bd3c24aa38b0fc7f187d47633'
+        union all
+        select 'd25c266dfab34277b9a44edacb2873b8'
+        union all
+        select '825c50296f794ca4b7757b4fae1c6b75'
+        union all
+        select 'bedac9d87fc04470bb72bbbd82aaf1e0'
+        )
+        GROUP BY
+        account_id
+    </select>
+
     <select id="queryKsTodayCharge" resultType="com.alibaba.fastjson.JSONObject">
     <select id="queryKsTodayCharge" resultType="com.alibaba.fastjson.JSONObject">
         SELECT IFNULL(t.charge, 0.00) as 'totalCharge', CONCAT(
         SELECT IFNULL(t.charge, 0.00) as 'totalCharge', CONCAT(
         CAST(IFNULL(ROUND((t.charge - y.charge) / y.charge * 100, 2), 0) as CHAR), '%') as 'chargeRoi'
         CAST(IFNULL(ROUND((t.charge - y.charge) / y.charge * 100, 2), 0) as CHAR), '%') as 'chargeRoi'
@@ -153,6 +207,103 @@
         ) y on 1 = 1
         ) y on 1 = 1
     </select>
     </select>
 
 
+    <select id="queryKsTodayCharge3" resultType="com.alibaba.fastjson.JSONObject">
+        SELECT IFNULL(t.charge, 0.00) as 'totalCharge', CONCAT(
+        CAST(IFNULL(ROUND((t.charge - y.charge) / y.charge * 100, 2), 0) as CHAR), '%') as 'chargeRoi'
+        FROM (
+        SELECT sum(charge) as 'charge'
+        FROM application.kuaishou_account_report_hourly_dw
+        where account_id in (
+        SELECT
+        account_id
+        FROM
+        `jeecg-boot`.ctop_user_allocation
+        WHERE
+        project_id IN (
+        SELECT DISTINCT
+        id
+        FROM `jeecg-boot`.ctop_project
+        WHERE company_id = #{companyId}
+        <if test='mediaId ==2'>
+            AND (media_id = 2 or media_id = 4)
+        </if>
+        <if test='mediaId ==1'>
+            AND (media_id = 1 or media_id = 3)
+        </if>
+        )
+        AND user_id in (select id
+        from `jeecg-boot`.sys_user
+        where sys_user.leader_id in
+        ('b602f82bd3c24aa38b0fc7f187d47633',
+        'd25c266dfab34277b9a44edacb2873b8','825c50296f794ca4b7757b4fae1c6b75','bedac9d87fc04470bb72bbbd82aaf1e0')
+        union all
+        select 'b602f82bd3c24aa38b0fc7f187d47633'
+        union all
+        select 'd25c266dfab34277b9a44edacb2873b8'
+        union all
+        select '825c50296f794ca4b7757b4fae1c6b75'
+        union all
+        select 'bedac9d87fc04470bb72bbbd82aaf1e0'
+        )
+        GROUP BY
+        account_id
+        )
+        and company_id = #{companyId}
+        and stat_date >= DATE_FORMAT(#{statDay}, '%Y%m%d')
+        and stat_date &lt;= DATE_FORMAT(#{endTime}, '%Y%m%d')
+        <if test="hour !=null">
+            AND hour &lt;= #{hour}
+        </if>
+        ) t
+        LEFT JOIN
+        (
+        SELECT sum(charge) as 'charge'
+        FROM application.kuaishou_account_report_hourly_dw
+        where stat_date >= DATE_FORMAT(DATE_ADD(#{statDay},INTERVAL -#{days} day), '%Y%m%d')
+        AND stat_date &lt;= DATE_FORMAT(DATE_ADD(#{endTime},INTERVAL -#{days} day), '%Y%m%d')
+        and company_id = #{companyId}
+        AND account_id in(
+        SELECT
+        account_id
+        FROM
+        `jeecg-boot`.ctop_user_allocation
+        WHERE
+        project_id IN (
+        SELECT DISTINCT
+        id
+        FROM `jeecg-boot`.ctop_project
+        WHERE company_id = #{companyId}
+        <if test='mediaId ==2'>
+            AND (media_id = 2 or media_id = 4)
+        </if>
+        <if test='mediaId ==1'>
+            AND (media_id = 1 or media_id = 3)
+        </if>
+        )
+        AND user_id in (select id
+        from `jeecg-boot`.sys_user
+        where sys_user.leader_id in
+        ('b602f82bd3c24aa38b0fc7f187d47633',
+        'd25c266dfab34277b9a44edacb2873b8','825c50296f794ca4b7757b4fae1c6b75','bedac9d87fc04470bb72bbbd82aaf1e0')
+        union all
+        select 'b602f82bd3c24aa38b0fc7f187d47633'
+        union all
+        select 'd25c266dfab34277b9a44edacb2873b8'
+        union all
+        select '825c50296f794ca4b7757b4fae1c6b75'
+        union all
+        select 'bedac9d87fc04470bb72bbbd82aaf1e0'
+        )
+        GROUP BY
+        account_id
+        )
+
+        <if test="hour !=null">
+            AND hour &lt;= #{hour}
+        </if>
+        ) y on 1 = 1
+    </select>
+
     <select id="queryTtTodayCharge" resultType="com.alibaba.fastjson.JSONObject">
     <select id="queryTtTodayCharge" resultType="com.alibaba.fastjson.JSONObject">
         SELECT IFNULL(t.charge, 0.00) as 'totalCharge', CONCAT(
         SELECT IFNULL(t.charge, 0.00) as 'totalCharge', CONCAT(
         CAST(IFNULL(ROUND((t.charge - tt.charge) / tt.charge * 100, 2), 0) as CHAR), '%') as 'chargeRoi'
         CAST(IFNULL(ROUND((t.charge - tt.charge) / tt.charge * 100, 2), 0) as CHAR), '%') as 'chargeRoi'
@@ -231,6 +382,104 @@
         ) tt on 1 = 1
         ) tt on 1 = 1
     </select>
     </select>
 
 
+    <select id="queryTtTodayCharge3" resultType="com.alibaba.fastjson.JSONObject">
+        SELECT IFNULL(t.charge, 0.00) as 'totalCharge', CONCAT(
+        CAST(IFNULL(ROUND((t.charge - tt.charge) / tt.charge * 100, 2), 0) as CHAR), '%') as 'chargeRoi'
+        FROM (
+        SELECT sum(cost) as 'charge'
+        FROM application.bytedance_advertiser_report_hourly_dw
+        where stat_datetime >= DATE_FORMAT(#{statDay}, '%Y%m%d')
+        AND stat_datetime &lt;= DATE_FORMAT(#{endTime}, '%Y%m%d')
+        and company_id = #{companyId}
+        and account_id in
+        (
+        SELECT
+        account_id
+        FROM
+        `jeecg-boot`.ctop_user_allocation
+        WHERE
+        project_id IN (
+        SELECT DISTINCT
+        id
+        FROM `jeecg-boot`.ctop_project
+        WHERE company_id = #{companyId}
+        <if test='mediaId ==2'>
+            AND (media_id = 2 or media_id = 4)
+        </if>
+        <if test='mediaId ==1'>
+            AND (media_id = 1 or media_id = 3)
+        </if>
+        )
+        AND user_id in (select id
+        from `jeecg-boot`.sys_user
+        where sys_user.leader_id in
+        ('b602f82bd3c24aa38b0fc7f187d47633',
+        'd25c266dfab34277b9a44edacb2873b8','825c50296f794ca4b7757b4fae1c6b75','bedac9d87fc04470bb72bbbd82aaf1e0')
+        union all
+        select 'b602f82bd3c24aa38b0fc7f187d47633'
+        union all
+        select 'd25c266dfab34277b9a44edacb2873b8'
+        union all
+        select '825c50296f794ca4b7757b4fae1c6b75'
+        union all
+        select 'bedac9d87fc04470bb72bbbd82aaf1e0'
+        )
+        GROUP BY
+        account_id
+        )
+
+        <if test="hour !=null">
+            AND hour &lt;= #{hour}
+        </if>
+        ) t
+        LEFT JOIN
+        (
+        SELECT sum(cost) as 'charge'
+        FROM application.bytedance_advertiser_report_hourly_dw
+        WHERE stat_datetime >= DATE_FORMAT(DATE_ADD(#{statDay},INTERVAL -#{days} day), '%Y%m%d')
+        AND stat_datetime &lt;=DATE_FORMAT(DATE_ADD(#{endTime},INTERVAL -#{days} day), '%Y%m%d')
+        and account_id in
+        (
+        SELECT
+        account_id
+        FROM
+        `jeecg-boot`.ctop_user_allocation
+        WHERE
+        project_id IN (
+        SELECT DISTINCT
+        id
+        FROM `jeecg-boot`.ctop_project
+        WHERE company_id = #{companyId}
+        <if test='mediaId ==2'>
+            AND (media_id = 2 or media_id = 4)
+        </if>
+        <if test='mediaId ==1'>
+            AND (media_id = 1 or media_id = 3)
+        </if>
+        )
+        AND user_id in (select id
+        from `jeecg-boot`.sys_user
+        where sys_user.leader_id in
+        ('b602f82bd3c24aa38b0fc7f187d47633',
+        'd25c266dfab34277b9a44edacb2873b8','825c50296f794ca4b7757b4fae1c6b75','bedac9d87fc04470bb72bbbd82aaf1e0')
+        union all
+        select 'b602f82bd3c24aa38b0fc7f187d47633'
+        union all
+        select 'd25c266dfab34277b9a44edacb2873b8'
+        union all
+        select '825c50296f794ca4b7757b4fae1c6b75'
+        union all
+        select 'bedac9d87fc04470bb72bbbd82aaf1e0'
+        )
+        GROUP BY
+        account_id
+        )
+        <if test="hour !=null">
+            AND hour &lt;= #{hour}
+        </if>
+        ) tt on 1 = 1
+    </select>
+
     <select id="queryTtManydaysTotalCharge" resultType="String">
     <select id="queryTtManydaysTotalCharge" resultType="String">
         SELECT IFNULL(sum(cost), 0.00)
         SELECT IFNULL(sum(cost), 0.00)
         FROM application.bytedance_advertiser_report_hourly_dw
         FROM application.bytedance_advertiser_report_hourly_dw

+ 17 - 4
jeecg-boot-material-view/src/main/java/org/jeecg/ctop/material/service/impl/ManagerSaleValueServiceImpl.java

@@ -132,7 +132,9 @@ public class ManagerSaleValueServiceImpl extends ServiceImpl<ManagerSaleValueMap
         String lichaoId = "f6a6843879c949618e4a859140c8a127";
         String lichaoId = "f6a6843879c949618e4a859140c8a127";
         //运营二部:兰兰及其下级 兰兰id:461857c245f54ba5813bcb5900a23092
         //运营二部:兰兰及其下级 兰兰id:461857c245f54ba5813bcb5900a23092
         List<Long> twoAccountIds = null;
         List<Long> twoAccountIds = null;
-        String lanlanId = "461857c245f54ba5813bcb5900a23092";
+        List<String> userIds = new ArrayList<>();
+        userIds.add("461857c245f54ba5813bcb5900a23092");
+        userIds.add("00d630a129e4487cba5427788a1f08ce");
         //1 头条
         //1 头条
         if ("1".equals(mediaId)) {
         if ("1".equals(mediaId)) {
             //查询当日消耗 + 环比
             //查询当日消耗 + 环比
@@ -159,10 +161,14 @@ public class ManagerSaleValueServiceImpl extends ServiceImpl<ManagerSaleValueMap
                 result.put("oneChargeRoi", oneResult.getString("chargeRoi"));
                 result.put("oneChargeRoi", oneResult.getString("chargeRoi"));
 
 
                 //运营二部:兰兰及其下级 兰兰id:461857c245f54ba5813bcb5900a23092
                 //运营二部:兰兰及其下级 兰兰id:461857c245f54ba5813bcb5900a23092
-                twoAccountIds = baseMapper.querySalesDirectorAccountIds(companyId, mediaId, saleTeaMber, lanlanId);
+                twoAccountIds = baseMapper.querySalesDirectorAccountIds2(companyId, mediaId, saleTeaMber);
                 JSONObject twoResult = baseMapper.queryTtTodayCharge2(startTime, endTime, hour, twoAccountIds, companyId, days);
                 JSONObject twoResult = baseMapper.queryTtTodayCharge2(startTime, endTime, hour, twoAccountIds, companyId, days);
                 result.put("twoCharge", twoResult.getBigDecimal("totalCharge"));
                 result.put("twoCharge", twoResult.getBigDecimal("totalCharge"));
                 result.put("twoChargeRoi", twoResult.getString("chargeRoi"));
                 result.put("twoChargeRoi", twoResult.getString("chargeRoi"));
+
+                JSONObject twoResult2 = baseMapper.queryTtTodayCharge3(startTime, endTime, mediaId, hour, companyId, days);
+                result.put("twoCharge2", twoResult2.getBigDecimal("totalCharge"));
+                result.put("twoChargeRoi2", twoResult2.getString("chargeRoi"));
             }
             }
         } else if ("2".equals(mediaId)) {
         } else if ("2".equals(mediaId)) {
             result = baseMapper.queryKsTodayCharge(statDay, hour, accountIds, companyId);
             result = baseMapper.queryKsTodayCharge(statDay, hour, accountIds, companyId);
@@ -187,11 +193,18 @@ public class ManagerSaleValueServiceImpl extends ServiceImpl<ManagerSaleValueMap
                 result.put("oneCharge", oneResult.getBigDecimal("totalCharge"));
                 result.put("oneCharge", oneResult.getBigDecimal("totalCharge"));
                 result.put("oneChargeRoi", oneResult.getString("chargeRoi"));
                 result.put("oneChargeRoi", oneResult.getString("chargeRoi"));
 
 
-                //运营二部:兰兰及其下级 兰兰id:461857c245f54ba5813bcb5900a23092
-                twoAccountIds = baseMapper.querySalesDirectorAccountIds(companyId, mediaId, saleTeaMber, lanlanId);
+                //运营二部:兰兰及其下级 兰兰id:461857c245f54ba5813bcb5900a23092,00d630a129e4487cba5427788a1f08ce
+                //专查询 兰兰组 并去除 郭浩和王雪莹账户
+                twoAccountIds = baseMapper.querySalesDirectorAccountIds2(companyId, mediaId, saleTeaMber);
                 JSONObject twoResult = baseMapper.queryKsTodayCharge2(startTime, endTime, hour, twoAccountIds, companyId, days);
                 JSONObject twoResult = baseMapper.queryKsTodayCharge2(startTime, endTime, hour, twoAccountIds, companyId, days);
                 result.put("twoCharge", twoResult.getBigDecimal("totalCharge"));
                 result.put("twoCharge", twoResult.getBigDecimal("totalCharge"));
                 result.put("twoChargeRoi", twoResult.getString("chargeRoi"));
                 result.put("twoChargeRoi", twoResult.getString("chargeRoi"));
+
+                JSONObject twoResult2 = baseMapper.queryKsTodayCharge3(startTime, endTime, mediaId, hour, companyId, days);
+                result.put("twoCharge2", twoResult2.getBigDecimal("totalCharge"));
+                result.put("twoChargeRoi2", twoResult2.getString("chargeRoi"));
+
+
             }
             }
         }
         }
         result.put("weeklyGoalValue", baseMapper.getWeekly(userId, companyId, mediaId));
         result.put("weeklyGoalValue", baseMapper.getWeekly(userId, companyId, mediaId));