|  |  |  | 
|---|
|  |  |  | package com.ruoyi.shop.service.impl.task; | 
|---|
|  |  |  | import java.util.Date; | 
|---|
|  |  |  | import java.util.List; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | 
|---|
|  |  |  | 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.MgtShopTaskPageDto; | 
|---|
|  |  |  | 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.MgtShopTaskRecordPageVo; | 
|---|
|  |  |  | import com.ruoyi.shop.domain.dto.*; | 
|---|
|  |  |  | import com.ruoyi.shop.domain.pojo.task.*; | 
|---|
|  |  |  | import com.ruoyi.shop.domain.vo.StaffShopTaskPageVo; | 
|---|
|  |  |  | import com.ruoyi.shop.mapper.task.ShopTaskMapper; | 
|---|
|  |  |  | import com.ruoyi.shop.service.task.ShopTaskRecordService; | 
|---|
|  |  |  | import com.ruoyi.shop.service.task.ShopTaskService; | 
|---|
|  |  |  | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; | 
|---|
|  |  |  | import com.ruoyi.shop.service.task.TaskFileService; | 
|---|
|  |  |  | import com.ruoyi.system.api.domain.poji.sys.SysUser; | 
|---|
|  |  |  | import com.ruoyi.system.api.domain.vo.MgtBulletinBoardVo; | 
|---|
|  |  |  | import com.ruoyi.system.api.service.RemoteUserService; | 
|---|
|  |  |  | import org.springframework.stereotype.Service; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import javax.annotation.Resource; | 
|---|
|  |  |  | import java.util.Date; | 
|---|
|  |  |  | import java.util.List; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * <p> | 
|---|
|  |  |  | 
|---|
|  |  |  | @Resource | 
|---|
|  |  |  | private TaskFileService taskFileService; | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Resource | 
|---|
|  |  |  | private RemoteUserService remoteUserService; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 平台跟进商户 | 
|---|
|  |  |  | 
|---|
|  |  |  | 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.getDate()); | 
|---|
|  |  |  | shopTask.setTaskTitle(mgtFollowShopTaskDto.getNextTaskTitle()); | 
|---|
|  |  |  | shopTask.setTaskTitle(mgtFollowShopTaskDto.getTaskTitle()); | 
|---|
|  |  |  | shopTask.setEmergencyState(mgtFollowShopTaskDto.getEmergencyState()); | 
|---|
|  |  |  | shopTask.setCreateTime(DateUtils.getNowDate()); | 
|---|
|  |  |  | shopTask.setCreateTime(nowTime); | 
|---|
|  |  |  | shopTask.setTaskDate(nowTimeStr); | 
|---|
|  |  |  | shopTask.setTaskStatus(2); | 
|---|
|  |  |  | this.saveOrUpdate(shopTask); | 
|---|
|  |  |  | //创建任务记录 | 
|---|
|  |  |  | ShopTaskRecord shopTaskRecord = new ShopTaskRecord(); | 
|---|
|  |  |  | 
|---|
|  |  |  | shopTaskRecord.setTaskId(taskId); | 
|---|
|  |  |  | shopTaskRecord.setUserId(mgtFollowShopTaskDto.getUserId()); | 
|---|
|  |  |  | shopTaskRecord.setFollowType(2); | 
|---|
|  |  |  | shopTaskRecord.setCustomFollowType(mgtFollowShopTaskDto.getFollowType()); | 
|---|
|  |  |  | shopTaskRecord.setFollowContent(mgtFollowShopTaskDto.getFollowContent()); | 
|---|
|  |  |  | shopTaskRecord.setCreateTime(DateUtils.getNowDate()); | 
|---|
|  |  |  | shopTaskRecord.setCreateTime(nowTime); | 
|---|
|  |  |  | shopTaskRecordService.saveOrUpdate(shopTaskRecord); | 
|---|
|  |  |  | //创建任务文件 | 
|---|
|  |  |  | String picture = mgtFollowShopTaskDto.getPicture(); | 
|---|
|  |  |  | 
|---|
|  |  |  | shopNextTask.setTaskId(nextTaskId); | 
|---|
|  |  |  | shopNextTask.setDelFlag(0); | 
|---|
|  |  |  | shopNextTask.setShopId(mgtFollowShopTaskDto.getShopId()); | 
|---|
|  |  |  | shopNextTask.setFollowType(mgtFollowShopTaskDto.getFollowType()); | 
|---|
|  |  |  | shopNextTask.setNextFollowDate(mgtFollowShopTaskDto.getNextTaskDate()); | 
|---|
|  |  |  | shopNextTask.setTaskTitle(mgtFollowShopTaskDto.getNextTaskTitle()); | 
|---|
|  |  |  | shopNextTask.setEmergencyState(mgtFollowShopTaskDto.getEmergencyState()); | 
|---|
|  |  |  | shopNextTask.setCreateTime(DateUtils.getNowDate()); | 
|---|
|  |  |  | 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(){ | 
|---|
|  |  |  | 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()); | 
|---|
|  |  |  | 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; | 
|---|
|  |  |  | SysUser sysUser; | 
|---|
|  |  |  | for(StaffShopTaskPageVo staffShopTaskPageVo : shopTaskPageVoList){ | 
|---|
|  |  |  | //获取任务用户信息 | 
|---|
|  |  |  | userId = staffShopTaskPageVo.getUserId(); | 
|---|
|  |  |  | if(userId!=null){ | 
|---|
|  |  |  | sysUser = remoteUserService.getSysUser(userId).getData(); | 
|---|
|  |  |  | staffShopTaskPageVo.setUserName(sysUser.getNickName()); | 
|---|
|  |  |  | staffShopTaskPageVo.setUserPicture(sysUser.getAvatar()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 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); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 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.setCustomFollowType(staffFollowShopTaskDto.getCustomFollowType()); | 
|---|
|  |  |  | shopTaskRecord.setCreateTime(new Date()); | 
|---|
|  |  |  | // 保存或更新会员任务记录 | 
|---|
|  |  |  | shopTaskRecordService.saveOrUpdate(shopTaskRecord); | 
|---|
|  |  |  | // 获取图片、视频和音频 | 
|---|
|  |  |  | String picture = staffFollowShopTaskDto.getPicture(); | 
|---|
|  |  |  | String video = staffFollowShopTaskDto.getVideo(); | 
|---|
|  |  |  | String audio = staffFollowShopTaskDto.getAudio(); | 
|---|
|  |  |  | String[] strArr; | 
|---|
|  |  |  | TaskFile taskFile; | 
|---|
|  |  |  | // 判断图片是否为空,并处理 | 
|---|
|  |  |  | if (StringUtils.isNotBlank(picture)) { | 
|---|
|  |  |  | strArr = picture.split(","); | 
|---|
|  |  |  | for (String str : strArr) { | 
|---|
|  |  |  | taskFile = new TaskFile(); | 
|---|
|  |  |  | taskFile.setDelFlag(0); | 
|---|
|  |  |  | taskFile.setFollowId(shopTaskRecord.getId()); | 
|---|
|  |  |  | taskFile.setFollowFrom(4); | 
|---|
|  |  |  | taskFile.setFileUrl(str); | 
|---|
|  |  |  | taskFile.setFileType(1); | 
|---|
|  |  |  | taskFileService.saveOrUpdate(taskFile); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | // 判断视频是否为空,并处理 | 
|---|
|  |  |  | if (StringUtils.isNotBlank(video)) { | 
|---|
|  |  |  | strArr = video.split(","); | 
|---|
|  |  |  | for (String str : strArr) { | 
|---|
|  |  |  | taskFile = new TaskFile(); | 
|---|
|  |  |  | taskFile.setDelFlag(0); | 
|---|
|  |  |  | taskFile.setFollowId(shopTaskRecord.getId()); | 
|---|
|  |  |  | taskFile.setFollowFrom(4); | 
|---|
|  |  |  | taskFile.setFileUrl(str); | 
|---|
|  |  |  | taskFile.setFileType(2); | 
|---|
|  |  |  | taskFileService.saveOrUpdate(taskFile); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | // 判断音频是否为空,并处理 | 
|---|
|  |  |  | if (StringUtils.isNotBlank(audio)) { | 
|---|
|  |  |  | strArr = audio.split(","); | 
|---|
|  |  |  | for (String str : strArr) { | 
|---|
|  |  |  | taskFile = new TaskFile(); | 
|---|
|  |  |  | taskFile.setDelFlag(0); | 
|---|
|  |  |  | taskFile.setFollowId(shopTaskRecord.getId()); | 
|---|
|  |  |  | taskFile.setFollowFrom(4); | 
|---|
|  |  |  | taskFile.setFileUrl(str); | 
|---|
|  |  |  | taskFile.setFileType(3); | 
|---|
|  |  |  | taskFileService.saveOrUpdate(taskFile); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | // 判断下一个任务日期是否为空,并处理 | 
|---|
|  |  |  | 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.setFollowContent(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(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|