xdd пре 1 недеља
родитељ
комит
fcd1da8e92

+ 8 - 0
fs-service-system/src/main/java/com/fs/statis/domain/FsStatisSalerWatch.java

@@ -25,11 +25,19 @@ public class FsStatisSalerWatch {
      * 部门
      */
     private Long deptId;
+    /**
+     * 部门名称
+     */
+    private String deptName;
 
     /**
      * 销售id
      */
     private Long companyUserId;
+    /**
+     * 销售名称
+     */
+    private String companyUserName;
 
     /**
      * 训练营人数

+ 8 - 0
fs-service-system/src/main/java/com/fs/statis/mapper/FsStatisPeriodWatchMapper.java

@@ -1,5 +1,6 @@
 package com.fs.statis.mapper;
 
+import com.fs.sop.domain.SopUserLogs;
 import com.fs.statis.domain.FsStatisPeriodWatch;
 import com.fs.statis.dto.StatsWatchLogPageListDTO;
 import org.apache.ibatis.annotations.Insert;
@@ -9,6 +10,7 @@ import org.apache.ibatis.annotations.Select;
 import org.apache.ibatis.annotations.Update;
 import org.apache.ibatis.annotations.Delete;
 
+import java.time.LocalDate;
 import java.util.List;
 
 /**
@@ -96,4 +98,10 @@ public interface FsStatisPeriodWatchMapper {
     List<FsStatisPeriodWatch> selectAll();
 
     List<FsStatisPeriodWatch> queryList(StatsWatchLogPageListDTO param);
+
+    /**
+     * 获取每个sop任务对应的营期记录
+     * @return
+     */
+    List<String> selectRecords(@Param("previousDay") LocalDate previousDay);
 }

+ 2 - 0
fs-service-system/src/main/java/com/fs/statis/service/FsStatisPeriodWatchService.java

@@ -53,4 +53,6 @@ public interface FsStatisPeriodWatchService {
 
     List<FsStatisPeriodWatch> queryList(StatsWatchLogPageListDTO param);
 
+    void writeData();
+
 }

+ 20 - 0
fs-service-system/src/main/java/com/fs/statis/service/impl/FsStatisPeriodWatchServiceImpl.java

@@ -1,6 +1,9 @@
 package com.fs.statis.service.impl; // 假设Service实现类放在此包下
 
+import com.fs.company.domain.CompanyUser;
+import com.fs.sop.domain.SopUserLogs;
 import com.fs.statis.domain.FsStatisPeriodWatch;
+import com.fs.statis.domain.FsStatisSalerWatch;
 import com.fs.statis.dto.StatsWatchLogPageListDTO;
 import com.fs.statis.mapper.FsStatisPeriodWatchMapper;
 import com.fs.statis.service.FsStatisPeriodWatchService;
@@ -8,6 +11,8 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.time.LocalDate;
+import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
 
@@ -79,4 +84,19 @@ public class FsStatisPeriodWatchServiceImpl implements FsStatisPeriodWatchServic
     public List<FsStatisPeriodWatch> queryList(StatsWatchLogPageListDTO param) {
         return fsStatisPeriodWatchMapper.queryList(param);
     }
+
+    @Override
+    public void writeData() {
+        LocalDate previousDay = LocalDate.now().minusDays(1);
+
+        // 获取每个sop任务对应的营期记录(执行记录) 当天的记录
+        List<String> list = fsStatisPeriodWatchMapper.selectRecords(previousDay);
+        for (String id : list) {
+            // 根据sop营期id 获取当前任务的企微id列表
+
+            // 转换企微id列表为对应的销售
+
+        }
+
+    }
 }

+ 34 - 4
fs-service-system/src/main/java/com/fs/statis/service/impl/FsStatisSalerWatchServiceImpl.java

@@ -1,6 +1,11 @@
 package com.fs.statis.service.impl;
 
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.fs.common.utils.StringUtils;
+import com.fs.company.cache.ICompanyUserCacheService;
+import com.fs.company.domain.CompanyDept;
 import com.fs.company.domain.CompanyUser;
+import com.fs.company.mapper.CompanyDeptMapper;
 import com.fs.company.mapper.CompanyUserMapper;
 import com.fs.course.domain.FsUserCoursePeriod;
 import com.fs.course.mapper.FsUserCoursePeriodMapper;
@@ -44,9 +49,13 @@ public class FsStatisSalerWatchServiceImpl implements FsStatisSalerWatchService
 
     private final SopUserLogsMapper sopUserLogsMapper;
 
+    private final CompanyDeptMapper companyDeptMapper;
+
+    private final ICompanyUserCacheService companyUserCacheService;
+
 
     @Autowired
-    public FsStatisSalerWatchServiceImpl(FsStatisSalerWatchMapper fsStatisSalerWatchMapper, CompanyUserMapper companyUserMapper, QwUserMapper qwUserMapper, QwSopLogsMapper qwSopLogsMapper, FsUserCoursePeriodMapper fsUserCoursePeriodMapper, QwSopMapper qwSopMapper, SopUserLogsMapper sopUserLogsMapper) {
+    public FsStatisSalerWatchServiceImpl(FsStatisSalerWatchMapper fsStatisSalerWatchMapper, CompanyUserMapper companyUserMapper, QwUserMapper qwUserMapper, QwSopLogsMapper qwSopLogsMapper, FsUserCoursePeriodMapper fsUserCoursePeriodMapper, QwSopMapper qwSopMapper, SopUserLogsMapper sopUserLogsMapper, CompanyDeptMapper companyDeptMapper, ICompanyUserCacheService companyUserCacheService) {
         this.fsStatisSalerWatchMapper = fsStatisSalerWatchMapper;
         this.companyUserMapper = companyUserMapper;
         this.qwUserMapper = qwUserMapper;
@@ -54,6 +63,8 @@ public class FsStatisSalerWatchServiceImpl implements FsStatisSalerWatchService
         this.fsUserCoursePeriodMapper = fsUserCoursePeriodMapper;
         this.qwSopMapper = qwSopMapper;
         this.sopUserLogsMapper = sopUserLogsMapper;
+        this.companyDeptMapper = companyDeptMapper;
+        this.companyUserCacheService = companyUserCacheService;
     }
 
     /**
@@ -117,7 +128,22 @@ public class FsStatisSalerWatchServiceImpl implements FsStatisSalerWatchService
 
     @Override
     public List<FsStatisSalerWatch> queryList(StatsWatchLogPageListDTO param) {
-        return fsStatisSalerWatchMapper.queryList(param);
+        List<FsStatisSalerWatch> fsStatisSalerWatches = fsStatisSalerWatchMapper.queryList(param);
+        for (FsStatisSalerWatch item : fsStatisSalerWatches) {
+            if(item.getDeptId() != null) {
+                CompanyDept companyDept = companyDeptMapper.selectCompanyDeptById(item.getDeptId());
+                if(ObjectUtils.isNotNull(companyDept)) {
+                    item.setDeptName(companyDept.getDeptName());
+                }
+            }
+            if(item.getCompanyUserId() != null) {
+                String companyUserName = companyUserCacheService.selectCompanyUserNameUserById(item.getCompanyUserId());
+                if(StringUtils.isNotEmpty(companyUserName)){
+                    item.setCompanyUserName(companyUserName);
+                }
+            }
+        }
+        return fsStatisSalerWatches;
     }
 
     @Override
@@ -135,10 +161,14 @@ public class FsStatisSalerWatchServiceImpl implements FsStatisSalerWatchService
                 log.info("销售{} 对应公司id {} 为空!",companyUser.getUserId(),companyUser.getCompanyId());
                 continue;
             }
-            // 找到销售关联的企微账号
+            // 找到销售关联的 企微账号
             List<String> qwUserIdList = qwUserMapper.findQwUserIdListByCompanyUserId(companyUser.getUserId());
+            if(CollectionUtils.isEmpty(qwUserIdList)){
+                log.info("当前销售 {} 没有关联企微账号!",companyUser.getUserId());
+                continue;
+            }
 
-            // 确定当前销售对应的sop执行记录
+            // 确定当前销售对应的sop任务的执行记录
             List<String> periodList = sopUserLogsMapper.selectSopUserLogsByQwUserIds(qwUserIdList);
 
             for (String periodId : periodList) {

+ 11 - 0
fs-service-system/src/main/resources/mapper/statis/FsStatisPeriodWatchMapper.xml

@@ -56,5 +56,16 @@
             </if>
         </where>
     </select>
+    <select id="selectRecords" resultType="java.lang.String">
+        select id from sop_user_logs
+        <where>
+            <if test="status != null">
+               AND status = 0
+            </if>
+            <if test="previousDay != null">
+                AND start_time = #{previousDay}
+            </if>
+        </where>
+    </select>
 
 </mapper>

+ 19 - 2
fs-service-system/src/main/resources/mapper/statis/FsStatisSalerWatchMapper.xml

@@ -31,7 +31,23 @@
     </sql>
 
     <select id="queryList" resultType="com.fs.statis.domain.FsStatisSalerWatch">
-        select * from fs_statis_saler_watch
+        select
+                company_user_id,
+                ANY_VALUE(dept_id) as dept_id,
+               sum(train_camp_num) as train_camp_num,
+               sum(not_registered_num) as not_registered_num,
+               sum(registered_num) as registered_num,
+               sum(reg_rate) as reg_rate,
+               sum(finished_rate) as finished_rate,
+               sum(offline_total) as offline_total,
+               sum(offline_not_part) as offline_not_part,
+               sum(offline_not_watched) as offline_not_watched,
+               sum(online_total) as online_total,
+               sum(online_online_rate) as online_online_rate,
+               sum(online_playback_comple_rate) as online_playback_comple_rate,
+               sum(online_incomplete_playback) as online_incomplete_playback,
+               sum(online_complete_playback) as online_complete_playback
+               from fs_statis_saler_watch
         <where>
             <if test="userIds != null and userIds.size() > 0">
                 AND company_user_id IN
@@ -49,6 +65,7 @@
                 AND data_date BETWEEN #{startDate} AND #{endDate}
             </if>
         </where>
+        group by company_user_id,data_date
     </select>
 
     <insert id="batchSave">
@@ -77,7 +94,7 @@
                 #{item.onlinePlaybackCompleRate,jdbcType=FLOAT},
                 #{item.onlineIncompletePlayback,jdbcType=INTEGER},
                 #{item.onlineCompletePlayback,jdbcType=INTEGER},
-                #{item.periodId,jdbcType=INTEGER},
+                #{item.periodId,jdbcType=VARCHAR},
                 #{item.dataDate,jdbcType=VARCHAR}
             )
         </foreach>