Преглед изворни кода

feat: 员工(销售)完播

xdd пре 2 недеља
родитељ
комит
2b6e7ed5cd
17 измењених фајлова са 205 додато и 36 уклоњено
  1. 1 2
      fs-admin/src/main/java/com/fs/course/controller/FsUserCoursePeriodController.java
  2. 20 4
      fs-admin/src/main/java/com/fs/stats/SalesWatchStatisController.java
  3. 3 0
      fs-service-system/src/main/java/com/fs/company/mapper/CompanyMapper.java
  4. 3 0
      fs-service-system/src/main/java/com/fs/company/service/ICompanyService.java
  5. 9 3
      fs-service-system/src/main/java/com/fs/company/service/impl/CompanyServiceImpl.java
  6. 27 0
      fs-service-system/src/main/java/com/fs/company/vo/CompanyDataVO.java
  7. 23 11
      fs-service-system/src/main/java/com/fs/qw/service/impl/AsyncSopTestService.java
  8. 1 0
      fs-service-system/src/main/java/com/fs/sop/mapper/QwSopMapper.java
  9. 2 0
      fs-service-system/src/main/java/com/fs/sop/mapper/SopUserLogsMapper.java
  10. 4 0
      fs-service-system/src/main/java/com/fs/sop/service/IQwSopService.java
  11. 1 0
      fs-service-system/src/main/java/com/fs/sop/service/impl/QwSopLogsServiceImpl.java
  12. 38 16
      fs-service-system/src/main/java/com/fs/sop/service/impl/QwSopServiceImpl.java
  13. 28 0
      fs-service-system/src/main/java/com/fs/sop/vo/QwSopTask.java
  14. 32 0
      fs-service-system/src/main/java/com/fs/sop/vo/QwSopTaskDetail.java
  15. 3 0
      fs-service-system/src/main/resources/mapper/company/CompanyMapper.xml
  16. 3 0
      fs-service-system/src/main/resources/mapper/sop/QwSopMapper.xml
  17. 7 0
      fs-service-system/src/main/resources/mapper/sop/SopUserLogsMapper.xml

+ 1 - 2
fs-admin/src/main/java/com/fs/course/controller/FsUserCoursePeriodController.java

@@ -94,8 +94,7 @@ public class FsUserCoursePeriodController extends BaseController {
      */
     @PreAuthorize("@ss.hasPermi('course:period:query')")
     @GetMapping(value = "/{periodId}")
-    public AjaxResult getInfo(@PathVariable("periodId") Long periodId)
-    {
+    public AjaxResult getInfo(@PathVariable("periodId") Long periodId) {
         return AjaxResult.success(fsUserCoursePeriodService.selectFsUserCoursePeriodById(periodId));
     }
 

+ 20 - 4
fs-admin/src/main/java/com/fs/stats/SalesWatchStatisController.java

@@ -2,6 +2,11 @@ package com.fs.stats;
 
 import com.fs.common.core.domain.R;
 import com.fs.common.core.page.TableDataInfo;
+import com.fs.company.mapper.CompanyMapper;
+import com.fs.company.service.ICompanyService;
+import com.fs.company.vo.CompanyDataVO;
+import com.fs.sop.service.IQwSopService;
+import com.fs.sop.vo.QwSopTask;
 import com.fs.statis.domain.FsStatisPeriodWatch;
 import com.fs.statis.domain.FsStatisSalerWatch;
 import com.fs.statis.dto.StatsWatchLogPageListDTO;
@@ -10,10 +15,7 @@ import com.fs.statis.service.FsStatisPeriodWatchService;
 import com.fs.statis.service.FsStatisSalerWatchService;
 import lombok.AllArgsConstructor;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
 
@@ -34,6 +36,9 @@ public class SalesWatchStatisController {
     @Autowired
     private FsStatisEveryDayWatchService fsStatisEveryDayWatchService;
 
+    @Autowired
+    private IQwSopService qwSopService;
+
     /**
      * 销售完播统计查询
      * @param param param
@@ -67,4 +72,15 @@ public class SalesWatchStatisController {
         return R.ok().put("data", list);
     }
 
+    /**
+     * 获取SOP任务数据
+     * @return
+     */
+    @GetMapping("/sopTaskData")
+    public R getSOPTaskData(){
+        List<QwSopTask> qwSopTaskList = qwSopService.getQwSopTaskList();
+
+        return R.ok().put("data",qwSopTaskList);
+    }
+
 }

+ 3 - 0
fs-service-system/src/main/java/com/fs/company/mapper/CompanyMapper.java

@@ -155,4 +155,7 @@ public interface CompanyMapper
      * @return list
      */
     List<OptionsVO> selectCompanyListByMap(@Param("params") Map<String, Object> params);
+
+    List<Company> selectCompanyAllList();
+
 }

+ 3 - 0
fs-service-system/src/main/java/com/fs/company/service/ICompanyService.java

@@ -4,6 +4,7 @@ import com.fs.common.core.domain.R;
 import com.fs.company.domain.Company;
 import com.fs.company.param.CompanyParam;
 import com.fs.company.vo.CompanyCrmVO;
+import com.fs.company.vo.CompanyDataVO;
 import com.fs.company.vo.CompanyNameVO;
 import com.fs.company.vo.CompanyVO;
 import com.fs.his.vo.OptionsVO;
@@ -114,4 +115,6 @@ public interface ICompanyService
      * @return list
      */
     List<OptionsVO> selectCompanyListByMap(Map<String, Object> params);
+
+
 }

+ 9 - 3
fs-service-system/src/main/java/com/fs/company/service/impl/CompanyServiceImpl.java

@@ -8,6 +8,7 @@ import com.fs.company.mapper.*;
 import com.fs.company.param.CompanyParam;
 import com.fs.company.service.ICompanyService;
 import com.fs.company.vo.CompanyCrmVO;
+import com.fs.company.vo.CompanyDataVO;
 import com.fs.company.vo.CompanyNameVO;
 import com.fs.company.vo.CompanyVO;
 import com.fs.course.mapper.FsCourseRedPacketLogMapper;
@@ -25,9 +26,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 /**
  * 企业Service业务层处理
@@ -63,6 +62,10 @@ public class CompanyServiceImpl implements ICompanyService
     @Autowired
     private FsCourseRedPacketLogMapper courseRedPacketLogMapper;
 
+    @Autowired
+    private CompanyDeptMapper companyDeptMapper;
+
+
     @Override
     public List<OptionsVO> selectAllCompanyList() {
         return companyMapper.selectAllCompanyList();
@@ -459,4 +462,7 @@ public class CompanyServiceImpl implements ICompanyService
     public List<OptionsVO> selectCompanyListByMap(Map<String, Object> params) {
         return companyMapper.selectCompanyListByMap(params);
     }
+
+
+
 }

+ 27 - 0
fs-service-system/src/main/java/com/fs/company/vo/CompanyDataVO.java

@@ -0,0 +1,27 @@
+package com.fs.company.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * 公司数据
+ */
+@Data
+public class CompanyDataVO implements Serializable {
+    /**
+     * 节点名称
+      */
+    private String name;
+    /**
+     * 父节点id
+     */
+    private Long parentId;
+
+    private Long Id;
+    /**
+     * 子节点
+     */
+    List<CompanyDataVO> childs;
+}

+ 23 - 11
fs-service-system/src/main/java/com/fs/qw/service/impl/AsyncSopTestService.java

@@ -27,6 +27,7 @@ import com.fs.wxUser.param.CompanyWxUserSopParam;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.rocketmq.spring.core.RocketMQTemplate;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
 
@@ -45,17 +46,28 @@ import java.util.stream.Collectors;
 public class AsyncSopTestService {
 
 
-    private final QwSopLogsMapper qwSopLogsMapper;
-    private final QwSopMapper qwSopMapper;
-    private final FsUserMapper fsUserMapper;
-    private final SopUserLogsInfoMapper sopUserLogsInfoMapper;
-    private final ISopUserLogsService sopUserLogsService;
-    private final QwExternalContactMapper qwExternalContactMapper;
-    private final QwSopTempMapper qwSopTempMapper;
-    private final RocketMQTemplate rocketMQTemplate;
-    private final SopUserLogsMapper sopUserLogsMapper;
-    private final FsCourseSopAppLinkMapper fsCourseSopAppLinkMapper;
-    private final uniPush2Service push2Service;
+    @Autowired
+    private QwSopLogsMapper qwSopLogsMapper;
+    @Autowired
+    private QwSopMapper qwSopMapper;
+    @Autowired
+    private FsUserMapper fsUserMapper;
+    @Autowired
+    private SopUserLogsInfoMapper sopUserLogsInfoMapper;
+    @Autowired
+    private ISopUserLogsService sopUserLogsService;
+    @Autowired
+    private QwExternalContactMapper qwExternalContactMapper;
+    @Autowired
+    private QwSopTempMapper qwSopTempMapper;
+    @Autowired
+    private RocketMQTemplate rocketMQTemplate;
+    @Autowired
+    private SopUserLogsMapper sopUserLogsMapper;
+    @Autowired
+    private FsCourseSopAppLinkMapper fsCourseSopAppLinkMapper;
+    @Autowired
+    private uniPush2Service push2Service;
 
     /**
      * 立即执行SOP任务

+ 1 - 0
fs-service-system/src/main/java/com/fs/sop/mapper/QwSopMapper.java

@@ -372,5 +372,6 @@ public interface QwSopMapper extends BaseMapper<QwSop> {
     List<QwSop> selectQwSopByIsRatingNotNull();
 
 
+    List<QwSop> selectQwSopAllList();
 
 }

+ 2 - 0
fs-service-system/src/main/java/com/fs/sop/mapper/SopUserLogsMapper.java

@@ -170,4 +170,6 @@ public interface SopUserLogsMapper {
     void batchInsertSopUserLogs(@Param("list") List<SopUserLogs> list);
     @DataSource(DataSourceType.SOP)
     List<SopUserLogs> selectSopUserLogByChatIds(@Param("ids") List<String> ids);
+
+    List<SopUserLogs> queryExecuteLogBySopId(@Param("sopId") String id);
 }

+ 4 - 0
fs-service-system/src/main/java/com/fs/sop/service/IQwSopService.java

@@ -5,6 +5,7 @@ import com.fs.qw.domain.QwSopUpdateStatus;
 import com.fs.sop.domain.QwSop;
 import com.fs.sop.params.QwSopAutoTime;
 import com.fs.sop.params.QwSopEditQwUserParam;
+import com.fs.sop.vo.QwSopTask;
 import com.fs.sop.vo.SopVoiceListVo;
 
 import java.io.IOException;
@@ -18,6 +19,8 @@ import java.util.List;
  */
 public interface IQwSopService
 {
+
+    List<QwSopTask> getQwSopTaskList();
     /**
      * 查询企微sop
      *
@@ -26,6 +29,7 @@ public interface IQwSopService
      */
     public QwSop selectQwSopById(String id);
 
+
     /**
      * 查询企微sop列表
      *

+ 1 - 0
fs-service-system/src/main/java/com/fs/sop/service/impl/QwSopLogsServiceImpl.java

@@ -88,6 +88,7 @@ public class QwSopLogsServiceImpl implements IQwSopLogsService
     @Autowired
     private SopUserLogsInfoMapper sopUserLogsInfoMapper;
 
+    @Lazy
     @Autowired
     private AsyncSopTestService asyncSopTestService;
 

+ 38 - 16
fs-service-system/src/main/java/com/fs/sop/service/impl/QwSopServiceImpl.java

@@ -5,6 +5,7 @@ import com.fs.common.annotation.DataSource;
 import com.fs.common.core.domain.R;
 import com.fs.common.enums.DataSourceType;
 import com.fs.common.exception.base.BaseException;
+import com.fs.common.utils.DateUtils;
 import com.fs.common.utils.PubFun;
 import com.fs.common.utils.StringUtils;
 import com.fs.company.mapper.CompanyUserMapper;
@@ -27,11 +28,14 @@ import com.fs.sop.domain.*;
 import com.fs.sop.mapper.*;
 import com.fs.sop.params.*;
 import com.fs.sop.service.*;
+import com.fs.sop.vo.QwSopTask;
+import com.fs.sop.vo.QwSopTaskDetail;
 import com.fs.sop.vo.SopVoiceListVo;
 import com.fs.sop.vo.VoiceVo;
 import com.fs.voice.utils.StringUtil;
 import com.fs.wxUser.mapper.CompanyWxUserMapper;
 import com.fs.wxUser.param.CompanyWxUserSopParam;
+import org.apache.commons.collections.ArrayStack;
 import org.apache.rocketmq.spring.core.RocketMQTemplate;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -73,31 +77,17 @@ public class QwSopServiceImpl implements IQwSopService
     @Autowired
     private SopUserLogsInfoMapper sopUserLogsInfoMapper;
 
-    @Autowired
-    private IFsCourseLinkService iFsCourseLinkService;
-
-    @Autowired
-    private FsCourseWatchLogMapper fsCourseWatchLogMapper;
-
-    @Autowired
-    private CompanyWxUserMapper companyWxUserMapper;
-
     @Autowired
     private SopUserLogsMapper sopUserLogsMapper;
 
-    @Autowired
-    private AsyncSopService asyncSopService;
     @Autowired
     private AsyncSopTestService asyncSopTestService;
     @Autowired
     private AsyncWxSopService asyncWxSopService;
     @Autowired
     private AsyncChatSopService asyncChatSopService;
-
-
     @Autowired
     private QwApiService qwApiService;
-
     @Autowired
     private ISopUserLogsService sopUserLogsService;
     @Autowired
@@ -108,14 +98,46 @@ public class QwSopServiceImpl implements IQwSopService
     private IQwSopTempDayService qwSopTempDayService;
     @Autowired
     private IQwSopTempRulesService qwSopTempRulesService;
-    @Autowired
-    private IQwSopTempContentService qwSopTempContentService;
 
     @Autowired
     private RocketMQTemplate rocketMQTemplate;
     @Autowired
     private QwSopTempMapper qwSopTempMapper;
 
+
+    @Override
+    public List<QwSopTask> getQwSopTaskList() {
+        List<QwSop> qwSopList = qwSopMapper.selectQwSopAllList();
+        List<QwSopTask> qwSopTaskList = new ArrayList<>();
+
+        for (QwSop qwSop : qwSopList) {
+            QwSopTask qwSopTask = new QwSopTask();
+            qwSopTask.setTaskId(qwSop.getId());
+            qwSopTask.setTaskName(qwSop.getName());
+
+            List<QwSopTaskDetail> listData = new ArrayList<>();
+            // 获取对应SOP任务执行记录
+            List<SopUserLogs> sopUserLogs = sopUserLogsMapper.queryExecuteLogBySopId(qwSop.getId());
+            for (SopUserLogs sopUserLog : sopUserLogs) {
+                QwSopTaskDetail qwSopTaskDetail = new QwSopTaskDetail();
+                qwSopTaskDetail.setTaskId(sopUserLog.getId());
+                qwSopTaskDetail.setQwUserId(sopUserLog.getQwUserId());
+                qwSopTaskDetail.setTaskExecDate(sopUserLog.getStartTime());
+
+                long daysDifferenceFromNow = DateUtils.getDaysDifferenceFromNow(DateUtils.dateTime("yyyy-MM-dd", sopUserLog.getStartTime()));
+
+                qwSopTaskDetail.setDays(daysDifferenceFromNow);
+
+                listData.add(qwSopTaskDetail);
+            }
+            qwSopTask.setTaskDetailList(listData);
+
+            qwSopTaskList.add(qwSopTask);
+        }
+
+        return qwSopTaskList;
+    }
+
     /**
      * 查询企微sop
      *

+ 28 - 0
fs-service-system/src/main/java/com/fs/sop/vo/QwSopTask.java

@@ -0,0 +1,28 @@
+package com.fs.sop.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * 企微sop任务
+ */
+@Data
+public class QwSopTask implements Serializable {
+
+    /**
+     * 任务id
+     */
+    private String taskId;
+
+    /**
+     * 任务名称
+     */
+    private String taskName;
+
+    /**
+     * 任务详情
+     */
+    private List<QwSopTaskDetail> taskDetailList;
+}

+ 32 - 0
fs-service-system/src/main/java/com/fs/sop/vo/QwSopTaskDetail.java

@@ -0,0 +1,32 @@
+package com.fs.sop.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 企微sop任务详情
+ */
+@Data
+public class QwSopTaskDetail implements Serializable {
+    /**
+     * 任务时间
+     */
+    private String taskId;
+    /**
+     * 企微员工账号
+     */
+    private String qwUserId;
+    /**
+     * 企微员工名称
+     */
+    private String qwUserName;
+    /**
+     * 任务执行时间
+     */
+    private String taskExecDate;
+    /**
+     * 天数
+     */
+    private Long days;
+}

+ 3 - 0
fs-service-system/src/main/resources/mapper/company/CompanyMapper.xml

@@ -62,6 +62,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             </if>
         </where>
     </select>
+    <select id="selectCompanyAllList" resultType="com.fs.company.domain.Company">
+        select company_id,company_name where is_del=0
+    </select>
 
     <insert id="insertCompany" parameterType="Company" useGeneratedKeys="true" keyProperty="companyId">
         insert into company

+ 3 - 0
fs-service-system/src/main/resources/mapper/sop/QwSopMapper.xml

@@ -414,6 +414,9 @@
             #{id}
         </foreach>
     </select>
+    <select id="selectQwSopAllList" resultType="com.fs.sop.domain.QwSop">
+        select id,name from qw_sop where type=2
+    </select>
     <update id="updateQwSop" parameterType="QwSop" useGeneratedKeys="false" keyProperty="id" >
         UPDATE  qw_sop
         <trim prefix="SET" suffixOverrides=",">

+ 7 - 0
fs-service-system/src/main/resources/mapper/sop/SopUserLogsMapper.xml

@@ -285,5 +285,12 @@
     <select id="selectSopUserLogByChatIds" resultType="com.fs.sop.domain.SopUserLogs">
         select * from sop_user_logs where chat_id in <foreach collection="ids" open="(" separator="," close=")" item="item">#{item}</foreach>
     </select>
+    <select id="queryExecuteLogBySopId" resultType="com.fs.sop.domain.SopUserLogs">
+        select *
+            from
+         sop_user_logs
+
+         where sop_id=#{sopId}
+    </select>
 
 </mapper>