소스 검색

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

zxa 3 년 전
부모
커밋
4c6963160d

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

@@ -30,7 +30,7 @@ public interface ManagerSaleValueMapper extends BaseMapper<ManagerSaleValue> {
 
     List<String> querySaleDirctorItsTeamMember(@Param("userId") String userId);
 
-    List<Long> getCompanyAccountIds(@Param("companyId") String companyId, @Param("mediaId") String mediaId);
+    List<Long> querySalesDirectorAccountIds(@Param("companyId") String companyId, @Param("mediaId") String mediaId, @Param("userIds") List<String> saleTeaMber);
 
     /**
      * -----------------------------------------------------
@@ -53,8 +53,6 @@ public interface ManagerSaleValueMapper extends BaseMapper<ManagerSaleValue> {
 
     Long getMonthly(@Param("userId") String userId, @Param("companyId") String companyId, @Param("mediaId") String mediaId);
 
-    List<Long> querySalesDirectorAccountIds(@Param("companyId") String companyId, @Param("mediaId") String mediaId, @Param("userIds") List<String> saleTeaMber);
-
     List<JSONObject> queryKsHourList(@Param("statDay") String statDay, @Param("accountIds") List<Long> accountIds);
 
     List<JSONObject> queryTtHourList(@Param("statDay") String statDay, @Param("accountIds") List<Long> accountIds);
@@ -69,12 +67,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> accountIds, @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> accountIds, @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> accountIds, @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> accountIds, @Param("startTime") String startTime, @Param("endTime") String endTime, @Param("days") Long days, @Param("hour") Integer hour );
 
 }

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

@@ -34,29 +34,32 @@
         where manage_id = #{userId}
     </select>
 
-    <select id="getCompanyAccountIds" resultType="Long">
-        SELECT account_id
-        FROM `jeecg-boot`.ctop_user_allocation
-        WHERE project_id in (
-        SELECT DISTINCT
-        t1.project_id
+    <select id="querySalesDirectorAccountIds" resultType="Long">
+        SELECT
+        account_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)
+        `jeecg-boot`.ctop_user_allocation
+        WHERE
+        project_id IN (
+        SELECT DISTINCT
+        id
+        FROM `jeecg-boot`.ctop_project
+        WHERE company_id = #{companyId}
+        AND ( media_id = 1 OR media_id = 3 )
+        AND sale_id IN
+        <if test="userIds !=null and userIds.size()>0">
+            AND t1.user_id IN
+            <foreach collection="userIds" item="id" separator=","
+                     open="(" close=")">
+                #{id}
+            </foreach>
         </if>
-        AND t1.project_name IS NOT NULL
-        AND t1.project_name != ''
-        ) and account_status = 0
-        GROUP BY account_id
+        )
+        AND company_id = #{companyId}
+        GROUP BY
+        account_id
     </select>
 
-
     <select id="queryKsTodayCharge" 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'
@@ -288,40 +291,6 @@
           AND company_id = #{companyId}
     </select>
 
-    <select id="querySalesDirectorAccountIds" 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
-        t1.account_status = 0
-        AND t2.company_id = #{companyId}
-        AND project_id IN (
-        SELECT DISTINCT
-        t1.project_id AS projectId
-        FROM
-        `jeecg-boot`.ctop_project_member t1
-        LEFT JOIN `jeecg-boot`.ctop_project t2 ON t1.project_id = t2.id
-        WHERE t1.project_name IS NOT NULL
-        AND t1.project_name != ''
-        <if test="userIds !=null and userIds.size()>0">
-            AND t1.user_id IN
-            <foreach collection="userIds" item="id" separator=","
-                     open="(" close=")">
-                #{id}
-            </foreach>
-        </if>
-        <if test='mediaId ==2'>
-            AND (t2.media_id = 2 or t2.media_id = 4)
-        </if>
-        <if test='mediaId ==1'>
-            AND (t2.media_id = 1 or t2.media_id = 3)
-        </if>
-        )
-        GROUP BY
-        t1.account_id
-    </select>
 
     <select id="querySalesDirectorProjectIds" resultType="Long">
         SELECT DISTINCT
@@ -463,9 +432,9 @@
         (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="projectIds !=null and projectIds.size()>0">
-            and t1.project_id in
-            <foreach collection="projectIds" item="id" separator=","
+        <if test="accountIds !=null and accountIds.size()>0">
+            and account_id IN
+            <foreach collection="accountIds" item="id" separator=","
                      open="(" close=")">
                 #{id}
             </foreach>
@@ -480,9 +449,9 @@
         (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="projectIds !=null and projectIds.size()>0">
-            and t1.project_id in
-            <foreach collection="projectIds" item="id" separator=","
+        <if test="accountIds !=null and accountIds.size()>0">
+            and account_id IN
+            <foreach collection="accountIds" item="id" separator=","
                      open="(" close=")">
                 #{id}
             </foreach>
@@ -495,7 +464,7 @@
         SELECT
         t1.project_id as 'projectId',
         t1.project_name as 'projectName',
-        ( SELECT realname FROM `jeecg-boot`.sys_user us WHERE us.id = t1.sale_id ) AS 'saleName',
+        t4.realname AS 'saleName',
         SUM( t1.charge ) AS 'charge',
         CONCAT( CAST( IFNULL( ROUND(( SUM( t1.charge ) - t3.charge ) / t3.charge * 100, 2 ), 0.00 ) AS CHAR ), '%' ) AS
         'chargeRoi',
@@ -511,9 +480,9 @@
         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="projectIds !=null and projectIds.size()>0">
-            and project_id in
-            <foreach collection="projectIds" item="id" separator=","
+        <if test="accountIds !=null and accountIds.size()>0">
+            and account_id IN
+            <foreach collection="accountIds" item="id" separator=","
                      open="(" close=")">
                 #{id}
             </foreach>
@@ -523,21 +492,21 @@
         LEFT JOIN (
         SELECT project_id, SUM( charge ) AS 'charge' FROM application.kuaishou_account_report_hourly_dw
         WHERE hour &lt;= #{hour}
-        <if test="projectIds !=null and projectIds.size()>0">
-            and project_id in
-            <foreach collection="projectIds" item="id" separator=","
+        <if test="accountIds !=null and accountIds.size()>0">
+            and 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' )
-        GROUP BY project_id ) t3 ON
-        t1.project_id = t3.project_id
+        GROUP BY project_id ) t3 ON t1.project_id = t3.project_id
+        left join(select id,realname from `jeecg-boot`.sys_user )t4 on t1.sale_id=t4.id
         WHERE hour &lt;= #{hour}
-        <if test="projectIds !=null and projectIds.size()>0">
-            and t1.project_id in
-            <foreach collection="projectIds" item="id" separator=","
+        <if test="accountIds !=null and accountIds.size()>0">
+            and t1.account_id IN
+            <foreach collection="accountIds" item="id" separator=","
                      open="(" close=")">
                 #{id}
             </foreach>
@@ -552,7 +521,7 @@
         SELECT
         t1.project_id as 'projectId',
         t1.project_name as 'projectName',
-        ( SELECT realname FROM `jeecg-boot`.sys_user us WHERE us.id = t1.sale_id ) AS 'saleName',
+        t4.realname AS 'saleName',
         SUM( t1.cost ) AS 'charge',
         CONCAT( CAST( IFNULL( ROUND(( SUM( t1.cost ) - t3.charge ) / t3.charge * 100, 2 ), 0 ) AS CHAR ), '%' ) AS
         'chargeRoi',
@@ -568,9 +537,9 @@
         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="projectIds !=null and projectIds.size()>0">
-            and project_id in
-            <foreach collection="projectIds" item="id" separator=","
+        <if test="accountIds !=null and accountIds.size()>0">
+            and account_id IN
+            <foreach collection="accountIds" item="id" separator=","
                      open="(" close=")">
                 #{id}
             </foreach>
@@ -581,21 +550,21 @@
         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="projectIds !=null and projectIds.size()>0">
-            and project_id in
-            <foreach collection="projectIds" item="id" separator=","
+        <if test="accountIds !=null and accountIds.size()>0">
+            and 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
+        GROUP BY project_id ) t3 ON t1.project_id = t3.project_id
+        left join(select id,realname from `jeecg-boot`.sys_user )t4 on t1.sale_id=t4.id
         WHERE t1.stat_datetime >= DATE_FORMAT(#{startTime}, '%Y%m%d' )
         AND t1.stat_datetime &lt;= DATE_FORMAT(#{endTime}, '%Y%m%d' )
-        <if test="projectIds !=null and projectIds.size()>0">
-            and t1.project_id in
-            <foreach collection="projectIds" item="id" separator=","
+        <if test="accountIds !=null and accountIds.size()>0">
+            and account_id IN
+            <foreach collection="accountIds" item="id" separator=","
                      open="(" close=")">
                 #{id}
             </foreach>

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

@@ -16,7 +16,6 @@ import org.springframework.stereotype.Service;
 import java.math.BigDecimal;
 import java.text.ParseException;
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.List;
 import java.util.Map;
 import java.util.UUID;
@@ -69,7 +68,7 @@ public class ManagerSaleValueServiceImpl extends ServiceImpl<ManagerSaleValueMap
             //丁兆明特殊处理
             if ("b161b7d9793942f980dbfe8c931cd1b0".equals(userId) || "228c45f913924639bf20c79ce5dadb16".equals(userId)) {
                 //账户集合
-                List<Long> accountIds = baseMapper.getCompanyAccountIds(companyId, mediaId);
+                List<Long> accountIds = baseMapper.querySalesDirectorAccountIds(companyId, mediaId, null);
                 if (Check.isNull(accountIds)) {
                     return Result.error("未查询到账户!");
                 }
@@ -80,9 +79,7 @@ public class ManagerSaleValueServiceImpl extends ServiceImpl<ManagerSaleValueMap
             }
             //查询销售总监及旗下的人员 集
             List<String> saleTeaMber = baseMapper.querySaleDirctorItsTeamMember(userId);
-            if (Check.isNull(saleTeaMber)) {
-                saleTeaMber = Arrays.asList(userId);
-            }
+            saleTeaMber.add(userId);
             //账户集合
             List<Long> accountIds = baseMapper.querySalesDirectorAccountIds(companyId, mediaId, saleTeaMber);
             if (Check.isNull(accountIds)) {
@@ -95,7 +92,7 @@ public class ManagerSaleValueServiceImpl extends ServiceImpl<ManagerSaleValueMap
             //分公司总经理
         } else if ("CompanyManager".equals(roleCode) || "admin".equals(roleCode)) {
             //账户集合
-            List<Long> accountIds = baseMapper.getCompanyAccountIds(companyId, mediaId);
+            List<Long> accountIds = baseMapper.querySalesDirectorAccountIds(companyId, mediaId, null);
             if (Check.isNull(accountIds)) {
                 return Result.error("未查询到账户!");
             }
@@ -188,7 +185,7 @@ public class ManagerSaleValueServiceImpl extends ServiceImpl<ManagerSaleValueMap
     public Result<Object> getHomeCharges(String userId, String mediaId, String companyId, String startTime, String endTime) throws ParseException {
         String roleCode = baseMapper.getRoleCodeByUserId(userId);
 
-        List<Long> compayAllAccountIds = baseMapper.getCompanyAccountIds(companyId, mediaId);
+        List<Long> compayAllAccountIds = baseMapper.querySalesDirectorAccountIds(companyId, mediaId, null);
         if (Check.isNull(compayAllAccountIds)) {
             return Result.error("未查询到账户!");
         }
@@ -207,9 +204,7 @@ public class ManagerSaleValueServiceImpl extends ServiceImpl<ManagerSaleValueMap
             }
             //查询销售总监及旗下的人员 集
             List<String> saleTeaMber = baseMapper.querySaleDirctorItsTeamMember(userId);
-            if (Check.isNull(saleTeaMber)) {
-                saleTeaMber = Arrays.asList(userId);
-            }
+            saleTeaMber.add(userId);
             //账户集合
             List<Long> accountIds = baseMapper.querySalesDirectorAccountIds(companyId, mediaId, saleTeaMber);
             if (Check.isNull(accountIds)) {
@@ -325,48 +320,49 @@ public class ManagerSaleValueServiceImpl extends ServiceImpl<ManagerSaleValueMap
         if ("saleDirector".equals(roleCode)) {
             //丁兆明特殊处理
             if ("b161b7d9793942f980dbfe8c931cd1b0".equals(userId) || "228c45f913924639bf20c79ce5dadb16".equals(userId)) {
-                List<Long> projectIds = baseMapper.querySalesDirectorProjectIds(companyId, mediaId, null);
-                if(Check.isNull(projectIds)){
-                    throw new Exception("未查询到项目!");
+                //账户集合
+                List<Long> accountIds = baseMapper.querySalesDirectorAccountIds(companyId, mediaId, null);
+                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);
                 }
             }
+
             //查询销售总监及旗下的人员 集
             List<String> saleTeaMber = baseMapper.querySaleDirctorItsTeamMember(userId);
-            if (Check.isNull(saleTeaMber)) {
-                saleTeaMber = Arrays.asList(userId);
-            }
+            saleTeaMber.add(userId);
             //账户集合
-            List<Long> projectIds = baseMapper.querySalesDirectorProjectIds(companyId, mediaId, saleTeaMber);
-            if (Check.isNull(projectIds)) {
-                throw new Exception("未查询到项目!");
+            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);
-            if(Check.isNull(projectIds)){
-                throw new Exception("未查询到项目!");
+            //账户集合
+            List<Long> accountIds = baseMapper.querySalesDirectorAccountIds(companyId, mediaId, null);
+            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 {
             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) {
@@ -377,16 +373,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;