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 | 316 +++++++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 297 insertions(+), 19 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 f7eefd8..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,25 +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> @@ -41,6 +50,16 @@ @Resource private TaskFileService taskFileService; + @Resource + private RemoteUserService remoteUserService; + + @Resource + private RemoteConfigService remoteConfigService; + + @Autowired + private ShopService shopService; + + /** @@ -51,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(); @@ -68,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(); @@ -93,16 +114,18 @@ 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); } @@ -114,14 +137,269 @@ * @date 2023/6/18 17:08 */ @Override - public MgtBulletinBoardVo boardTaskTotal(){ + public MgtBulletinBoardVo boardTaskTotal(List<Long> userIds){ MgtBulletinBoardVo mgtBulletinBoardVo = new MgtBulletinBoardVo(); - LambdaQueryWrapper<ShopTask> queryWrapper = new LambdaQueryWrapper(); + 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