Pārlūkot izejas kodu

销售钉盘—— 列表查询bug修改

zxa 3 gadi atpakaļ
vecāks
revīzija
f7cbfa3801

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

@@ -69,12 +69,12 @@ public interface ManagerSaleValueMapper extends BaseMapper<ManagerSaleValue> {
 
     List<Long> querySalesDirectorProjectIds(@Param("companyId") String companyId, @Param("mediaId") String mediaId, @Param("userIds") List<String> saleTeaMber);
 
-    Long queryKsHourProjectTopTotal(@Param("projectIds") List<Long> projectIds, @Param("startTime") String startTime, @Param("endTime") String endTime);
+    Long queryKsHourProjectTopTotal(@Param("accountIds") List<Long> projectIds, @Param("startTime") String startTime, @Param("endTime") String endTime);
 
-    List<JSONObject> queryKsHourProjectTop(@Param("projectIds") List<Long> projectIds, @Param("startTime") String startTime, @Param("endTime") String endTime, @Param("days") Long days, @Param("hour") Integer hour );
+    List<JSONObject> queryKsHourProjectTop(@Param("accountIds") List<Long> projectIds, @Param("startTime") String startTime, @Param("endTime") String endTime, @Param("days") Long days, @Param("hour") Integer hour );
 
-    Long queryTtHourProjectTopTotal(@Param("projectIds") List<Long> projectIds, @Param("startTime") String startTime, @Param("endTime") String endTime);
+    Long queryTtHourProjectTopTotal(@Param("accountIds") List<Long> projectIds, @Param("startTime") String startTime, @Param("endTime") String endTime);
 
-    List<JSONObject> queryTtHourProjectTop(@Param("projectIds") List<Long> projectIds, @Param("startTime") String startTime, @Param("endTime") String endTime, @Param("days") Long days, @Param("hour") Integer hour );
+    List<JSONObject> queryTtHourProjectTop(@Param("accountIds") List<Long> projectIds, @Param("startTime") String startTime, @Param("endTime") String endTime, @Param("days") Long days, @Param("hour") Integer hour );
 
 }

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

@@ -454,13 +454,18 @@
         SELECT count(1)
         FROM
         (select 1 from application.kuaishou_account_report_hourly_dw t1
-        where t1.project_id in
-        <foreach collection="projectIds" item="id" separator=","
-                 open="(" close=")">
-            #{id}
-        </foreach>
-        and t1.stat_date >= DATE_FORMAT(#{startTime}, '%Y%m%d')
+        where t1.stat_date >= DATE_FORMAT(#{startTime}, '%Y%m%d')
         and t1.stat_date &lt;= DATE_FORMAT(#{endTime}, '%Y%m%d')
+        <if test="accountIds !=null and accountIds.size()>0">
+            and t1.project_id in
+            (
+            SELECT project_id FROM `jeecg-boot`.ctop_user_allocation WHERE account_id in
+            <foreach collection="accountIds" item="id" separator=","
+                     open="(" close=")">
+                #{id}
+            </foreach>
+            )
+        </if>
         GROUP BY project_id
         ) t
     </select>
@@ -469,13 +474,18 @@
         SELECT count(1)
         FROM
         (select 1 from application.bytedance_advertiser_report_hourly_dw t1
-        where t1.project_id in
-        <foreach collection="projectIds" item="id" separator=","
-                 open="(" close=")">
-            #{id}
-        </foreach>
-        and t1.stat_datetime >= DATE_FORMAT(#{startTime}, '%Y%m%d')
+        where t1.stat_datetime >= DATE_FORMAT(#{startTime}, '%Y%m%d')
         and t1.stat_datetime &lt;= DATE_FORMAT(#{endTime}, '%Y%m%d')
+        <if test="accountIds !=null and accountIds.size()>0">
+            and t1.project_id in
+            (
+            SELECT project_id FROM `jeecg-boot`.ctop_user_allocation WHERE account_id in
+            <foreach collection="accountIds" item="id" separator=","
+                     open="(" close=")">
+                #{id}
+            </foreach>
+            )
+        </if>
         GROUP BY project_id
         ) t
     </select>
@@ -498,37 +508,50 @@
         SUM(real_charged_in_yuan) as 'realCharge',
         SUM(direct_rebate_real_charged_in_yuan) as 'jlCharge'
         FROM application.app_kuaishou_agent_report_d
-        WHERE
-        project_id IN
-        <foreach collection="projectIds" item="id" separator=","
-                 open="(" close=")">
-            #{id}
-        </foreach>
-        AND stat_date >= DATE_FORMAT(#{startTime}, '%Y%m%d' )
+        WHERE stat_date >= DATE_FORMAT(#{startTime}, '%Y%m%d' )
         AND stat_date &lt;= DATE_FORMAT(#{endTime}, '%Y%m%d' )
+        <if test="accountIds !=null and accountIds.size()>0">
+            and t1.project_id in
+            (
+            SELECT project_id FROM `jeecg-boot`.ctop_user_allocation WHERE account_id in
+            <foreach collection="accountIds" item="id" separator=","
+                     open="(" close=")">
+                #{id}
+            </foreach>
+            )
+        </if>
         GROUP BY project_id
         )t2 ON t1.project_id = t2.project_id
         LEFT JOIN (
-        SELECT project_id, SUM( charge ) AS 'charge' FROM application.kuaishou_account_report_hourly_dw WHERE project_id
-        IN
-        <foreach collection="projectIds" item="id" separator=","
-                 open="(" close=")">
-            #{id}
-        </foreach>
+        SELECT project_id, SUM( charge ) AS 'charge' FROM application.kuaishou_account_report_hourly_dw
+        WHERE hour &lt;= #{hour}
+        <if test="accountIds !=null and accountIds.size()>0">
+            and project_id in
+            (
+            SELECT project_id FROM `jeecg-boot`.ctop_user_allocation WHERE account_id in
+            <foreach collection="accountIds" item="id" separator=","
+                     open="(" close=")">
+                #{id}
+            </foreach>
+            )
+        </if>
         AND stat_date >= DATE_FORMAT(DATE_ADD(#{startTime}, INTERVAL - ${days} DAY ), '%Y%m%d' )
         AND stat_date &lt;= DATE_FORMAT(DATE_ADD(#{endTime}, INTERVAL - ${days} DAY ), '%Y%m%d' )
-        AND hour &lt;= #{hour}
         GROUP BY project_id ) t3 ON
         t1.project_id = t3.project_id
-        WHERE
-        t1.project_id IN
-        <foreach collection="projectIds" item="id" separator=","
-                 open="(" close=")">
-            #{id}
-        </foreach>
+        WHERE  hour &lt;= #{hour}
+        <if test="accountIds !=null and accountIds.size()>0">
+            and t1.project_id in
+            (
+            SELECT project_id FROM `jeecg-boot`.ctop_user_allocation WHERE account_id in
+            <foreach collection="accountIds" item="id" separator=","
+                     open="(" close=")">
+                #{id}
+            </foreach>
+            )
+        </if>
         AND stat_date >= DATE_FORMAT(#{startTime}, '%Y%m%d' )
         AND stat_date &lt;= DATE_FORMAT(#{endTime}, '%Y%m%d' )
-        AND hour &lt;= #{hour}
         GROUP BY t1.project_id
     </select>
 
@@ -551,40 +574,51 @@
         SUM(cash_cost) as 'realCharge',
         SUM(grants_cost) AS 'jlCharge'
         FROM application.app_bytedance_agent_report_d
-        WHERE
-        project_id IN
-        <foreach collection="projectIds" item="id" separator=","
-                 open="(" close=")">
-            #{id}
-        </foreach>
-        AND stat_datetime >= DATE_FORMAT(#{startTime}, '%Y%m%d' )
+        WHERE stat_datetime >= DATE_FORMAT(#{startTime}, '%Y%m%d' )
         AND stat_datetime &lt;= DATE_FORMAT(#{endTime}, '%Y%m%d' )
+        <if test="accountIds !=null and accountIds.size()>0">
+            and project_id in
+            (
+            SELECT project_id FROM `jeecg-boot`.ctop_user_allocation WHERE account_id in
+            <foreach collection="accountIds" item="id" separator=","
+                     open="(" close=")">
+                #{id}
+            </foreach>
+            )
+        </if>
         GROUP BY project_id
         )t2 ON t1.project_id = t2.project_id
         LEFT JOIN (
-        SELECT project_id, SUM( cost ) AS 'charge' FROM application.bytedance_advertiser_report_hourly_dw WHERE
-        project_id
-        IN
-        <foreach collection="projectIds" item="id" separator=","
-                 open="(" close=")">
-            #{id}
-        </foreach>
-        AND stat_datetime >= DATE_FORMAT(DATE_ADD(#{startTime}, INTERVAL - ${days} DAY ), '%Y%m%d' )
+        SELECT project_id, SUM( cost ) AS 'charge' FROM application.bytedance_advertiser_report_hourly_dw
+        WHERE stat_datetime >= DATE_FORMAT(DATE_ADD(#{startTime}, INTERVAL - ${days} DAY ), '%Y%m%d' )
         AND stat_datetime &lt;= DATE_FORMAT(DATE_ADD(#{endTime}, INTERVAL - ${days} DAY ), '%Y%m%d' )
+        <if test="accountIds !=null and accountIds.size()>0">
+            and project_id in
+            (
+            SELECT project_id FROM `jeecg-boot`.ctop_user_allocation WHERE account_id in
+            <foreach collection="accountIds" item="id" separator=","
+                     open="(" close=")">
+                #{id}
+            </foreach>
+            )
+        </if>
         AND hour &lt;= #{hour}
         GROUP BY project_id ) t3 ON
         t1.project_id = t3.project_id
-        WHERE
-        t1.project_id IN
-        <foreach collection="projectIds" item="id" separator=","
-                 open="(" close=")">
-            #{id}
-        </foreach>
-        AND t1.stat_datetime >= DATE_FORMAT(#{startTime}, '%Y%m%d' )
+        WHERE t1.stat_datetime >= DATE_FORMAT(#{startTime}, '%Y%m%d' )
         AND t1.stat_datetime &lt;= DATE_FORMAT(#{endTime}, '%Y%m%d' )
+        <if test="accountIds !=null and accountIds.size()>0">
+            and t1.project_id in
+            (
+            SELECT project_id FROM `jeecg-boot`.ctop_user_allocation WHERE account_id in
+            <foreach collection="accountIds" item="id" separator=","
+                     open="(" close=")">
+                #{id}
+            </foreach>
+            )
+        </if>
         AND hour &lt;= #{hour}
         GROUP BY t1.project_id
     </select>
 
-
 </mapper>

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

@@ -310,17 +310,16 @@ public class ManagerSaleValueServiceImpl extends ServiceImpl<ManagerSaleValueMap
     @Override
     public PageInfo getProjectChargeTop(String userId, String mediaId, String companyId, String startTime, String endTime, Integer pageNo, Integer pageSize) throws Exception {
         String roleCode = baseMapper.getRoleCodeByUserId(userId);
-        List<Long> compayAllAccountIds = baseMapper.getCompanyAccountIds(companyId, mediaId);
         JSONObject data = null;
         //销售总监
         if ("saleDirector".equals(roleCode)) {
             //丁兆明特殊处理
             if ("b161b7d9793942f980dbfe8c931cd1b0".equals(userId) || "228c45f913924639bf20c79ce5dadb16".equals(userId)) {
-                List<Long> projectIds = baseMapper.querySalesDirectorProjectIds(companyId, mediaId, null);
+                List<Long> accountIds = baseMapper.getCompanyAccountIds(companyId, mediaId);
                 if (startTime.equals(endTime)) {
-                    return getProjectDailyCharges(projectIds, mediaId, startTime, null, pageNo, pageSize);
+                    return getProjectDailyCharges(accountIds, mediaId, startTime, null, pageNo, pageSize);
                 } else {
-                    return getProjectDailyCharges(projectIds, mediaId, startTime, endTime, pageNo, pageSize);
+                    return getProjectDailyCharges(accountIds, mediaId, startTime, endTime, pageNo, pageSize);
                 }
             }
             //查询销售总监及旗下的人员 集
@@ -329,29 +328,29 @@ public class ManagerSaleValueServiceImpl extends ServiceImpl<ManagerSaleValueMap
                 saleTeaMber = Arrays.asList(userId);
             }
             //账户集合
-            List<Long> projectIds = baseMapper.querySalesDirectorProjectIds(companyId, mediaId, saleTeaMber);
-            if (Check.isNull(projectIds)) {
+            List<Long> accountIds = baseMapper.querySalesDirectorAccountIds(companyId, mediaId, saleTeaMber);
+            if (Check.isNull(accountIds)) {
                 throw new Exception("未查询到账户!");
             }
             if (startTime.equals(endTime)) {
-                return getProjectDailyCharges(projectIds, mediaId, startTime, null, pageNo, pageSize);
+                return getProjectDailyCharges(accountIds, mediaId, startTime, null, pageNo, pageSize);
             } else {
-                return getProjectDailyCharges(projectIds, mediaId, startTime, endTime, pageNo, pageSize);
+                return getProjectDailyCharges(accountIds, mediaId, startTime, endTime, pageNo, pageSize);
             }
             //分公司总经理
         } else if ("CompanyManager".equals(roleCode) || "admin".equals(roleCode)) {
-            List<Long> projectIds = baseMapper.querySalesDirectorProjectIds(companyId, mediaId, null);
+            List<Long> accountIds = baseMapper.getCompanyAccountIds(companyId, mediaId);
             if (startTime.equals(endTime)) {
-                return getProjectDailyCharges(projectIds, mediaId, startTime, null, pageNo, pageSize);
+                return getProjectDailyCharges(accountIds, mediaId, startTime, null, pageNo, pageSize);
             } else {
-                return getProjectDailyCharges(projectIds, mediaId, startTime, endTime, pageNo, pageSize);
+                return getProjectDailyCharges(accountIds, mediaId, startTime, endTime, pageNo, pageSize);
             }
         } else {
             throw new Exception("该用户角色权限不足!");
         }
     }
 
-    private PageInfo getProjectDailyCharges(List<Long> projectIds, String mediaId, String startTime, String endTime, Integer pageNo, Integer pageSize) throws ParseException {
+    private PageInfo getProjectDailyCharges(List<Long> accountIds, String mediaId, String startTime, String endTime, Integer pageNo, Integer pageSize) throws ParseException {
         Long days = 1L;
         Integer hour = DateUtils.getHour(DateUtils.formatDateTime());
         if (endTime == null) {
@@ -363,16 +362,16 @@ public class ManagerSaleValueServiceImpl extends ServiceImpl<ManagerSaleValueMap
 
         //1 头条
         if ("1".equals(mediaId)) {
-            Long total = baseMapper.queryTtHourProjectTopTotal(projectIds, startTime, endTime);
+            Long total = baseMapper.queryTtHourProjectTopTotal(accountIds, startTime, endTime);
             PageHelper.startPage(pageNo, pageSize, false);
-            List<JSONObject> list = baseMapper.queryTtHourProjectTop(projectIds, startTime, endTime, days, hour);
+            List<JSONObject> list = baseMapper.queryTtHourProjectTop(accountIds, startTime, endTime, days, hour);
             PageInfo pageInfo = new PageInfo(list);
             pageInfo.setTotal(total);
             return pageInfo;
         } else if ("2".equals(mediaId)) {
-            Long total = baseMapper.queryKsHourProjectTopTotal(projectIds, startTime, endTime);
+            Long total = baseMapper.queryKsHourProjectTopTotal(accountIds, startTime, endTime);
             PageHelper.startPage(pageNo, pageSize, false);
-            List<JSONObject> list = baseMapper.queryKsHourProjectTop(projectIds, startTime, endTime, days, hour);
+            List<JSONObject> list = baseMapper.queryKsHourProjectTop(accountIds, startTime, endTime, days, hour);
             PageInfo pageInfo = new PageInfo(list);
             pageInfo.setTotal(total);
             return pageInfo;