From 65ca63cc3d36f23d285a7d944fcc0d6bac92430d Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期一, 18 三月 2024 14:41:42 +0800
Subject: [PATCH] 合并代码

---
 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/task/ShopTaskServiceImpl.java |  331 ++++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 314 insertions(+), 17 deletions(-)

diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/task/ShopTaskServiceImpl.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/task/ShopTaskServiceImpl.java
index 3bf2a48..f0a5645 100644
--- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/task/ShopTaskServiceImpl.java
+++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/task/ShopTaskServiceImpl.java
@@ -1,23 +1,34 @@
 package com.ruoyi.shop.service.impl.task;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ruoyi.common.core.utils.DateUtils;
 import com.ruoyi.common.core.utils.StringUtils;
 import com.ruoyi.common.core.utils.uuid.IdUtils;
-import com.ruoyi.shop.domain.dto.MgtFollowShopTaskDto;
+import com.ruoyi.shop.domain.dto.*;
 import com.ruoyi.shop.domain.pojo.task.ShopTask;
 import com.ruoyi.shop.domain.pojo.task.ShopTaskRecord;
 import com.ruoyi.shop.domain.pojo.task.TaskFile;
+import com.ruoyi.shop.domain.vo.StaffShopTaskPageVo;
 import com.ruoyi.shop.mapper.task.ShopTaskMapper;
+import com.ruoyi.shop.service.shop.ShopService;
 import com.ruoyi.shop.service.task.ShopTaskRecordService;
 import com.ruoyi.shop.service.task.ShopTaskService;
 import com.ruoyi.shop.service.task.TaskFileService;
+import com.ruoyi.system.api.domain.poji.shop.Shop;
+import com.ruoyi.system.api.domain.poji.sys.SysStaff;
+import com.ruoyi.system.api.domain.vo.MgtBulletinBoardVo;
+import com.ruoyi.system.api.service.RemoteConfigService;
+import com.ruoyi.system.api.service.RemoteUserService;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
-import java.text.ParseException;
-import java.time.LocalDate;
-import java.util.Date;
+import java.util.*;
+import java.util.function.Function;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -39,6 +50,16 @@
     @Resource
     private TaskFileService taskFileService;
 
+    @Resource
+    private RemoteUserService remoteUserService;
+
+    @Resource
+    private RemoteConfigService remoteConfigService;
+
+    @Autowired
+    private ShopService shopService;
+
+
 
 
     /**
@@ -49,16 +70,17 @@
     public void followShopTask(MgtFollowShopTaskDto mgtFollowShopTaskDto){
         //创建本次任务
         ShopTask shopTask = new ShopTask();
+        Date nowTime = new Date();
+        String nowTimeStr = DateUtils.getDate();
         String taskId = IdUtils.simpleUUID();
         shopTask.setTaskId(taskId);
         shopTask.setDelFlag(0);
         shopTask.setShopId(mgtFollowShopTaskDto.getShopId());
-        shopTask.setFollowType(mgtFollowShopTaskDto.getFollowType());
-        shopTask.setNextFollowDate(DateUtils.toDate(LocalDate.now()));
-        shopTask.setTaskTitle(mgtFollowShopTaskDto.getNextTaskTitle());
+        shopTask.setTaskTitle(mgtFollowShopTaskDto.getTaskTitle());
         shopTask.setEmergencyState(mgtFollowShopTaskDto.getEmergencyState());
-        shopTask.setCreateTime(new Date());
-        shopTask.setTaskDate(DateUtils.toDate(LocalDate.now()));
+        shopTask.setCreateTime(nowTime);
+        shopTask.setTaskDate(nowTimeStr);
+        shopTask.setTaskStatus(2);
         this.saveOrUpdate(shopTask);
         //创建任务记录
         ShopTaskRecord shopTaskRecord = new ShopTaskRecord();
@@ -66,8 +88,9 @@
         shopTaskRecord.setTaskId(taskId);
         shopTaskRecord.setUserId(mgtFollowShopTaskDto.getUserId());
         shopTaskRecord.setFollowType(2);
+        shopTaskRecord.setCustomeFollowType(mgtFollowShopTaskDto.getFollowType());
         shopTaskRecord.setFollowContent(mgtFollowShopTaskDto.getFollowContent());
-        shopTaskRecord.setCreateTime(new Date());
+        shopTaskRecord.setCreateTime(nowTime);
         shopTaskRecordService.saveOrUpdate(shopTaskRecord);
         //创建任务文件
         String picture = mgtFollowShopTaskDto.getPicture();
@@ -91,18 +114,292 @@
         shopNextTask.setTaskId(nextTaskId);
         shopNextTask.setDelFlag(0);
         shopNextTask.setShopId(mgtFollowShopTaskDto.getShopId());
-        shopNextTask.setFollowType(mgtFollowShopTaskDto.getFollowType());
         shopNextTask.setTaskTitle(mgtFollowShopTaskDto.getNextTaskTitle());
         shopNextTask.setEmergencyState(mgtFollowShopTaskDto.getEmergencyState());
-        shopNextTask.setCreateTime(new Date());
-        try {
-            shopNextTask.setNextFollowDate(DateUtils.parseDate(mgtFollowShopTaskDto.getNextTaskDate(),"yyyy-MM-dd"));
-            shopNextTask.setTaskDate(DateUtils.parseDate(mgtFollowShopTaskDto.getNextTaskDate(),"yyyy-MM-dd"));
-        } catch (ParseException e) {
-            throw new RuntimeException(e);
+        shopNextTask.setCreateTime(nowTime);
+        int i = mgtFollowShopTaskDto.getNextTaskDate().compareTo(nowTimeStr);
+        if(i>0){
+            shopNextTask.setTaskStatus(0);
+        }else if(i==0){
+            shopNextTask.setTaskStatus(1);
+        }else{
+            shopNextTask.setTaskStatus(3);
         }
+        shopNextTask.setTaskDate(mgtFollowShopTaskDto.getNextTaskDate());
         this.saveOrUpdate(shopNextTask);
     }
 
+    /**
+     * @description boardTaskTotal
+     * @param
+     * @return MgtBulletinBoardVo
+     * @author jqs34
+     * @date 2023/6/18 17:08
+     */
+    @Override
+    public MgtBulletinBoardVo boardTaskTotal(List<Long> userIds){
+        MgtBulletinBoardVo mgtBulletinBoardVo = new MgtBulletinBoardVo();
+        LambdaQueryWrapper<ShopTask> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(ShopTask::getDelFlag,0);
+        queryWrapper.eq(ShopTask::getTaskStatus,1);
+        queryWrapper.eq(ShopTask::getTaskDate,DateUtils.getDate());
+        if(null != userIds && userIds.size() > 0){
+            List<Shop> list = shopService.list(new QueryWrapper<Shop>().eq("del_flag", 0)
+                    .in("belong_user_id", userIds));
+            List<Long> collect = list.stream().map(Shop::getShopId).collect(Collectors.toList());
+            queryWrapper.in(ShopTask::getShopId, collect);
+        }
+        Integer followShopToday = this.count(queryWrapper);
+        mgtBulletinBoardVo.setFollowShopToday(followShopToday);
+        return mgtBulletinBoardVo;
+    }
 
+    /**
+     * @description  员工端获取进行中商户任务数
+     * @author  jqs
+     * @param shopIds
+     * @return  Integer
+     */
+    @Override
+    public Integer getShopIngTotal(List<Long> shopIds){
+        return shopTaskMapper.getShopIngTotal(shopIds);
+    }
+
+    /**
+     * @description  分页获取员工跟进任务
+     * @author  jqs
+     * @date    2023/7/15 15:09
+     * @param page
+     * @param staffShopTaskPageDto
+     * @return  List<StaffShopTaskPageVo>
+     */
+    @Override
+    public List<StaffShopTaskPageVo> pageStaffShopTask(Page page, StaffShopTaskPageDto staffShopTaskPageDto){
+        List<StaffShopTaskPageVo> shopTaskPageVoList = shopTaskMapper.pageStaffShopTask(page, staffShopTaskPageDto);
+        if(shopTaskPageVoList!=null&&shopTaskPageVoList.size()>0){
+            Long userId;
+            SysStaff sysStaff;
+            HashSet<Long> userIdSet = new HashSet<>();
+            HashSet<Long> createUserIdSet = new HashSet<>();
+            for(StaffShopTaskPageVo staffShopTaskPageVo : shopTaskPageVoList){
+                userIdSet.add(staffShopTaskPageVo.getUserId());
+                if(null != staffShopTaskPageVo.getCreateUserId()){
+                    createUserIdSet.add(staffShopTaskPageVo.getCreateUserId());
+                }
+            }
+            List<Long> useIdList = new ArrayList<>(userIdSet);
+            List<Long> createUserIdList = new ArrayList<>(createUserIdSet);
+            List<SysStaff> sysStaffList = remoteConfigService.listSysStaffByIds(useIdList).getData();
+            Map<Long,SysStaff> sysStaffMap = sysStaffList.stream()
+                    .collect(Collectors.toMap(SysStaff::getUserId, Function.identity()));
+    
+            createUserIdList.add(-1L);
+            List<SysStaff> sysStaffList1 = remoteConfigService.listSysStaffByIds(createUserIdList).getData();
+            Map<Long,SysStaff> sysStaffMap1 = sysStaffList1.stream()
+                    .collect(Collectors.toMap(SysStaff::getUserId, Function.identity()));
+            for(StaffShopTaskPageVo staffShopTaskPageVo : shopTaskPageVoList){
+                //获取任务用户信息
+                userId = staffShopTaskPageVo.getUserId();
+                if(userId!=null){
+                    sysStaff = sysStaffMap.get(userId);
+                    if(null != sysStaff){
+                        staffShopTaskPageVo.setUserName(sysStaff.getStaffName());
+                        staffShopTaskPageVo.setUserPicture(sysStaff.getStaffAvatar());
+                        staffShopTaskPageVo.setUserPosition(sysStaff.getStaffPost());
+                    }
+                }else{
+                    if(null != staffShopTaskPageVo.getCreateUserId()){
+                        sysStaff = sysStaffMap1.get(staffShopTaskPageVo.getCreateUserId());
+                        staffShopTaskPageVo.setUserName(sysStaff.getStaffName());
+                        staffShopTaskPageVo.setUserPicture(sysStaff.getStaffAvatar());
+                        staffShopTaskPageVo.setUserPosition(sysStaff.getStaffPost());
+                    }
+                }
+            }
+        }
+        return shopTaskPageVoList;
+    }
+
+    /**
+     * @description  员工端新增任务
+     * @author  jqs
+     * @date    2023/7/15 19:06
+     * @param staffAddTaskDto
+     * @return  void
+     */
+    @Override
+    public void staffAddTask(StaffAddTaskDto staffAddTaskDto){
+        ShopTask shopTask = new ShopTask();
+        String nowTimeStr = DateUtils.getDate();
+        String taskId = IdUtils.simpleUUID();
+        shopTask.setTaskId(taskId);
+        shopTask.setDelFlag(0);
+        shopTask.setShopId(staffAddTaskDto.getShopId());
+        shopTask.setTaskTitle(staffAddTaskDto.getTaskTitle());
+        shopTask.setEmergencyState(staffAddTaskDto.getEmergencyState());
+        shopTask.setCreateTime(new Date());
+        shopTask.setTaskDate(staffAddTaskDto.getTaskDate());
+        //任务状态
+        int i = staffAddTaskDto.getTaskDate().compareTo(nowTimeStr);
+        if(i>0){
+            shopTask.setTaskStatus(0);
+        }else if(i==0){
+            shopTask.setTaskStatus(1);
+        }else{
+            shopTask.setTaskStatus(3);
+        }
+        shopTask.setCreateUserId(staffAddTaskDto.getUserId());
+        this.saveOrUpdate(shopTask);
+    }
+
+    /**
+     * @description 员工商户任务跟进
+     * @param staffFollowShopTaskDto
+     * @return void
+     * @author jqs34
+     * @date 2023/7/16 11:56
+     */
+    @Override
+    public void staffFollowShopTask(StaffFollowShopTaskDto staffFollowShopTaskDto){
+        // 创建会员任务记录对象
+        ShopTaskRecord shopTaskRecord;
+        // 获取旧的会员任务
+        ShopTask oldShopTask = this.getById(staffFollowShopTaskDto.getTaskId());
+        oldShopTask.setTaskStatus(2);
+        this.saveOrUpdate(oldShopTask);
+        // 判断跟进类型
+        if (staffFollowShopTaskDto.getFollowType() == 1) {
+            // 获取跟进电话列表
+            List<MerFollowPhoneDto> followPhone = staffFollowShopTaskDto.getFollowPhone();
+            // 判断跟进电话列表是否为空
+            if (followPhone != null && !followPhone.isEmpty()) {
+                // 遍历跟进电话列表
+                for (MerFollowPhoneDto followPhoneDto : followPhone) {
+                    // 创建新的会员任务记录
+                    shopTaskRecord = new ShopTaskRecord();
+                    shopTaskRecord.setTaskId(staffFollowShopTaskDto.getTaskId());
+                    shopTaskRecord.setDelFlag(0);
+                    shopTaskRecord.setUserId(staffFollowShopTaskDto.getUserId());
+                    shopTaskRecord.setFollowType(staffFollowShopTaskDto.getFollowType());
+                    shopTaskRecord.setCallPhone(staffFollowShopTaskDto.getCallPhone());
+                    shopTaskRecord.setFollowContent(followPhoneDto.getFollowContent());
+                    shopTaskRecord.setCallTime(followPhoneDto.getCallTime());
+                    shopTaskRecord.setCreateTime(new Date());
+                    // 保存或更新会员任务记录
+                    shopTaskRecordService.saveOrUpdate(shopTaskRecord);
+                }
+            }
+        } else {
+            // 创建新的会员任务记录
+            shopTaskRecord = new ShopTaskRecord();
+            shopTaskRecord.setTaskId(staffFollowShopTaskDto.getTaskId());
+            shopTaskRecord.setDelFlag(0);
+            shopTaskRecord.setUserId(staffFollowShopTaskDto.getUserId());
+            shopTaskRecord.setFollowType(staffFollowShopTaskDto.getFollowType());
+            shopTaskRecord.setFollowContent(staffFollowShopTaskDto.getFollowContent());
+            shopTaskRecord.setCustomeFollowType(staffFollowShopTaskDto.getCustomeFollowType());
+            shopTaskRecord.setCreateTime(new Date());
+            // 保存或更新会员任务记录
+            shopTaskRecordService.saveOrUpdate(shopTaskRecord);
+            // 获取图片、视频和音频
+            List<FileDto> picture = staffFollowShopTaskDto.getPicture();
+            List<FileDto> video = staffFollowShopTaskDto.getVideo();
+            List<FileDto> audio = staffFollowShopTaskDto.getAudio();
+            TaskFile taskFile;
+            List<TaskFile> taskFileList = new ArrayList<>();
+            // 判断图片是否为空,并处理
+            if (picture!=null&&!picture.isEmpty()) {
+                for (FileDto fileDto : picture) {
+                    taskFile = new TaskFile();
+                    taskFile.setDelFlag(0);
+                    taskFile.setFollowId(shopTaskRecord.getId());
+                    taskFile.setFollowFrom(4);
+                    taskFile.setFileName(fileDto.getFileName());
+                    taskFile.setFileUrl(fileDto.getFileUrl());
+                    taskFile.setFileType(1);
+                    taskFileList.add(taskFile);
+                }
+            }
+            // 判断视频是否为空,并处理
+            if (video!=null&&!video.isEmpty()) {
+                for (FileDto fileDto : video) {
+                    taskFile = new TaskFile();
+                    taskFile.setDelFlag(0);
+                    taskFile.setFollowId(shopTaskRecord.getId());
+                    taskFile.setFollowFrom(4);
+                    taskFile.setFileName(fileDto.getFileName());
+                    taskFile.setFileUrl(fileDto.getFileUrl());
+                    taskFile.setFileType(2);
+                    taskFileList.add(taskFile);
+                }
+            }
+            // 判断音频是否为空,并处理
+            if (audio!=null&&!audio.isEmpty()) {
+                for (FileDto fileDto : audio) {
+                    taskFile = new TaskFile();
+                    taskFile.setDelFlag(0);
+                    taskFile.setFollowId(shopTaskRecord.getId());
+                    taskFile.setFollowFrom(4);
+                    taskFile.setFileName(fileDto.getFileName());
+                    taskFile.setFileUrl(fileDto.getFileUrl());
+                    taskFile.setFileType(3);
+                    taskFileList.add(taskFile);
+                }
+            }
+            if(taskFileList!=null&&!taskFileList.isEmpty()){
+                taskFileService.saveBatch(taskFileList);
+            }
+        }
+        // 判断下一个任务日期是否为空,并处理
+        if (StringUtils.isNotBlank(staffFollowShopTaskDto.getNextTaskDate())) {
+            ShopTask shopTask = new ShopTask();
+            String taskId = IdUtils.simpleUUID();
+            shopTask.setTaskId(taskId);
+            shopTask.setDelFlag(0);
+            shopTask.setShopId(oldShopTask.getShopId());
+            shopTask.setTaskDate(staffFollowShopTaskDto.getNextTaskDate());
+            shopTask.setTaskTitle(staffFollowShopTaskDto.getNextTaskContent());
+            String nowTimeStr = DateUtils.getDate();
+            int i = staffFollowShopTaskDto.getNextTaskDate().compareTo(nowTimeStr);
+            if(i>0){
+                shopTask.setTaskStatus(0);
+            }else if(i==0){
+                shopTask.setTaskStatus(1);
+            }else{
+                shopTask.setTaskStatus(3);
+            }
+            shopTask.setEmergencyState(staffFollowShopTaskDto.getEmergencyState());
+            shopTask.setCreateTime(new Date());
+            this.saveOrUpdate(shopTask);
+        }
+    }
+
+    /**
+     * @description  检查任务时间状态
+     * @author  jqs
+     * @date    2023/7/19 18:01
+     * @param
+     * @return  void
+     */
+    @Override
+    public void checkTaskDateStatus(){
+        //平台-商户任务状态
+        shopTaskMapper.checkShopTaskStatus();
+        //商户-代理商任务状态
+        shopTaskMapper.checkAgencyTaskStatus();
+        //商户-会员任务状态
+        shopTaskMapper.checkMemberTaskStatus();
+    }
+
+    /**
+     * @description  获取商户最近任务
+     * @author  jqs
+     * @date    2023/8/22 17:27
+     * @param shopId
+     * @return  ShopTask
+     */
+    @Override
+    public ShopTask getLastTask(Long shopId){
+        return shopTaskMapper.getLastTask(shopId);
+    }
 }

--
Gitblit v1.7.1