Переглянути джерело

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

zxa 3 роки тому
батько
коміт
0a8bae8b97

+ 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("accountIds") List<Long> projectIds, @Param("startTime") String startTime, @Param("endTime") String endTime);
+    Long queryKsHourProjectTopTotal(@Param("projectIds") List<Long> projectIds, @Param("startTime") String startTime, @Param("endTime") String endTime);
 
-    List<JSONObject> queryKsHourProjectTop(@Param("accountIds") List<Long> projectIds, @Param("startTime") String startTime, @Param("endTime") String endTime, @Param("days") Long days, @Param("hour") Integer hour );
+    List<JSONObject> queryKsHourProjectTop(@Param("projectIds") List<Long> projectIds, @Param("startTime") String startTime, @Param("endTime") String endTime, @Param("days") Long days, @Param("hour") Integer hour );
 
-    Long queryTtHourProjectTopTotal(@Param("accountIds") List<Long> projectIds, @Param("startTime") String startTime, @Param("endTime") String endTime);
+    Long queryTtHourProjectTopTotal(@Param("projectIds") List<Long> projectIds, @Param("startTime") String startTime, @Param("endTime") String endTime);
 
-    List<JSONObject> queryTtHourProjectTop(@Param("accountIds") List<Long> projectIds, @Param("startTime") String startTime, @Param("endTime") String endTime, @Param("days") Long days, @Param("hour") Integer hour );
+    List<JSONObject> queryTtHourProjectTop(@Param("projectIds") List<Long> projectIds, @Param("startTime") String startTime, @Param("endTime") String endTime, @Param("days") Long days, @Param("hour") Integer hour );
 
 }

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

@@ -35,18 +35,25 @@
     </select>
 
     <select id="getCompanyAccountIds" resultType="Long">
-        SELECT t1.account_id
-        FROM `jeecg-boot`.ctop_user_allocation t1
-        LEFT JOIN `jeecg-boot`.user_company t2 ON t1.user_id = t2.user_id
-        WHERE t2.company_id = #{companyId}
+        SELECT account_id
+        FROM `jeecg-boot`.ctop_user_allocation
+        WHERE project_id in (
+        SELECT DISTINCT
+        t1.project_id
+        FROM
+        `jeecg-boot`.ctop_project_member t1
+        LEFT JOIN `jeecg-boot`.ctop_project t2 ON t1.project_id = t2.id
+        WHERE t2.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 t1.account_status = 0
-        GROUP BY t1.account_id
+        AND t1.project_name IS NOT NULL
+        AND t1.project_name != ''
+        ) and account_status = 0
+        GROUP BY account_id
     </select>
 
 
@@ -456,15 +463,12 @@
         (select 1 from application.kuaishou_account_report_hourly_dw t1
         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">
+        <if test="projectIds !=null and projectIds.size()>0">
             and t1.project_id in
-            (
-            SELECT distinct project_id FROM `jeecg-boot`.ctop_user_allocation WHERE account_id in
-            <foreach collection="accountIds" item="id" separator=","
+            <foreach collection="projectIds" item="id" separator=","
                      open="(" close=")">
                 #{id}
             </foreach>
-            )
         </if>
         GROUP BY project_id
         ) t
@@ -476,15 +480,12 @@
         (select 1 from application.bytedance_advertiser_report_hourly_dw t1
         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">
+        <if test="projectIds !=null and projectIds.size()>0">
             and t1.project_id in
-            (
-            SELECT distinct project_id FROM `jeecg-boot`.ctop_user_allocation WHERE account_id in
-            <foreach collection="accountIds" item="id" separator=","
+            <foreach collection="projectIds" item="id" separator=","
                      open="(" close=")">
                 #{id}
             </foreach>
-            )
         </if>
         GROUP BY project_id
         ) t
@@ -510,45 +511,36 @@
         FROM application.app_kuaishou_agent_report_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">
+        <if test="projectIds !=null and projectIds.size()>0">
             and project_id in
-            (
-            SELECT distinct project_id FROM `jeecg-boot`.ctop_user_allocation WHERE account_id in
-            <foreach collection="accountIds" item="id" separator=","
+            <foreach collection="projectIds" 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 hour &lt;= #{hour}
-        <if test="accountIds !=null and accountIds.size()>0">
+        <if test="projectIds !=null and projectIds.size()>0">
             and project_id in
-            (
-            SELECT distinct project_id FROM `jeecg-boot`.ctop_user_allocation WHERE account_id in
-            <foreach collection="accountIds" item="id" separator=","
+            <foreach collection="projectIds" 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' )
         GROUP BY project_id ) t3 ON
         t1.project_id = t3.project_id
         WHERE hour &lt;= #{hour}
-        <if test="accountIds !=null and accountIds.size()>0">
+        <if test="projectIds !=null and projectIds.size()>0">
             and t1.project_id in
-            (
-            SELECT distinct project_id FROM `jeecg-boot`.ctop_user_allocation WHERE account_id in
-            <foreach collection="accountIds" item="id" separator=","
+            <foreach collection="projectIds" 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' )
@@ -576,15 +568,12 @@
         FROM application.app_bytedance_agent_report_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">
+        <if test="projectIds !=null and projectIds.size()>0">
             and project_id in
-            (
-            SELECT distinct project_id FROM `jeecg-boot`.ctop_user_allocation WHERE account_id in
-            <foreach collection="accountIds" item="id" separator=","
+            <foreach collection="projectIds" item="id" separator=","
                      open="(" close=")">
                 #{id}
             </foreach>
-            )
         </if>
         GROUP BY project_id
         )t2 ON t1.project_id = t2.project_id
@@ -592,30 +581,24 @@
         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">
+        <if test="projectIds !=null and projectIds.size()>0">
             and project_id in
-            (
-            SELECT distinct project_id FROM `jeecg-boot`.ctop_user_allocation WHERE account_id in
-            <foreach collection="accountIds" item="id" separator=","
+            <foreach collection="projectIds" 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.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">
+        <if test="projectIds !=null and projectIds.size()>0">
             and t1.project_id in
-            (
-            SELECT distinct project_id FROM `jeecg-boot`.ctop_user_allocation WHERE account_id in
-            <foreach collection="accountIds" item="id" separator=","
+            <foreach collection="projectIds" item="id" separator=","
                      open="(" close=")">
                 #{id}
             </foreach>
-            )
         </if>
         AND hour &lt;= #{hour}
         GROUP BY t1.project_id

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

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