Commit 1f8b34a8 by 章春雨

Merge branch 'feat-1002334' into 'master'

1002334 时间管理的发送记录与完成情况功能

See merge request rays/pcloud-book!401
parents 6287c76d c79874b8
......@@ -19,4 +19,6 @@ public class ReplyMessageBaseDto implements Serializable {
private Integer startDay;
private String sendHour;
}
......@@ -34,4 +34,6 @@ public class ReplyMessageDto implements Serializable {
private String fileType;
private BigDecimal size;
private Integer taskItemId;
}
package com.pcloud.book.timecontrol.dto;
import com.pcloud.common.dto.BaseDto;
import lombok.Data;
@Data
public class SubscribeTaskUserDTO extends BaseDto {
/**
* 微信用户ID
*/
private String wxUserId;
/**
* 昵称
*/
private String nickName;
/**
* 头像
*/
private String headPic;
/**
* 性别
*/
private Integer sex;
private Integer taskItemCount;
/**
* 任务已完成次数
*/
private Integer completedCount;
/**
* 未完成次数
*/
private Integer noCompletedCount;
/**
* 订阅状态(0-取消订阅 1-订阅 2-完成)
*/
private Integer subscribeState;
}
package com.pcloud.book.timecontrol.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* @date: 2020年01月30日 15:20
* @Author: Zcy
* @Descprition
*/
@Data
public class TaskCompletedDto implements Serializable {
private Integer taskId;
private String taskName;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date createTime;
private Integer taskItemCount;
private Long depLabelId;
private Long purLabelId;
private Long proLabelId;
private String proLabelName;
private String depLabelName;
private String purLabelName;
private Integer subscribePersonCount;
}
package com.pcloud.book.timecontrol.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
/**
* @Description:TODO
* @Author:zcy
* @Date:2020-01-31
* @Version:1.0
*/
@Data
public class TaskItemSendDto implements Serializable {
private Integer id;
private Integer taskId;
private String taskName;
private Integer taskItemId;
private String robotWxId;
private String robotName;
private Integer startDay;
private Integer finishConfirm;
private String finishKeyWord;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date createTime;
private List<ReplyMessageDto> replyMessageList;
private Integer sendState;
private Integer sendPersonCount;
private Integer bookId;
private String bookName;
private String isbn;
private String serialNumber;
}
package com.pcloud.book.timecontrol.dto;
import lombok.Data;
import java.io.Serializable;
/**
* @date: 2020年02月01日 21:04
* @Author: lihao
* @Descprition
*/
@Data
public class TaskSendUserDto implements Serializable {
private Integer id;
private String robotWxId;
private Integer taskId;
private Integer taskItemId;
/**
* 微信用户ID
*/
private String wxUserId;
/**
* 昵称
*/
private String nickName;
/**
* 头像
*/
private String headPic;
/**
* 性别
*/
private Integer sex;
private Long depLabelId;
private Long purLabelId;
private Long proLabelId;
private String proLabelName;
private String depLabelName;
private String purLabelName;
private Integer hasCompleted;
private Integer sendState;
private String sendDay;
private String sendHour;
}
package com.pcloud.book.timecontrol.dto;
import lombok.Data;
import java.io.Serializable;
/**
* @date: 2020年01月30日 15:20
* @Author: Zcy
* @Descprition
*/
@Data
public class TodayTaskSendDto implements Serializable {
/**
* 今日消息已发条数
*/
private Integer todaySendCount;
/**
* 今日消息待发条数
*/
private Integer todayNotSendCount;
}
package com.pcloud.book.timecontrol.biz;
import com.pcloud.book.timecontrol.dto.*;
import com.pcloud.common.page.PageBeanNew;
import java.util.List;
/**
* @Description:TODO
* @Author:zcy
* @Date:2020-01-30
* @Version:1.0
*/
public interface TaskCompletedBiz {
PageBeanNew<TaskCompletedDto> listTaskCompleted4Pcloud(Integer currentPage, Integer numPerPage, String taskName, Integer proLabelId, Integer depLabelId, Integer purLabelId);
PageBeanNew<SubscribeTaskUserDTO> listTaskSubscribeUser4Pcloud(Integer currentPage, Integer numPerPage, String search, Integer taskId,Integer subscribeType);
PageBeanNew<TaskItemSendDto> listTaskItemSendRecord4Pcloud(Integer currentPage, Integer numPerPage, String startTime, String endTime, String robotWxId, String taskName, String sendContent, String search);
PageBeanNew<TaskSendUserDto> listTaskItemSendUser4Pcloud(Integer currentPage, Integer numPerPage, Integer taskItemId, String search, String robotWxId);
TodayTaskSendDto getTodayTaskSend();
List<String> getTaskSendDateList(String date);
}
......@@ -510,7 +510,7 @@ public class TaskBizImpl implements TaskBiz {
timeControlTaskSendMapper.updateSendState(taskSendId, TaskSendStateEnum.FINISH_SEND.getState(), 1);
//每次都要判断一下是否所有单项任务都完成。完成之后需要同步修改关注表里面完成状态
Integer noCompletedItem = timeControlTaskSendMapper.getNoCompletedItem(timeControlTaskSend.getTaskId());
Integer noCompletedItem = timeControlTaskSendMapper.getNoCompletedCount(timeControlTaskSend.getSubscribeId());
if(noCompletedItem==0){
taskSubscribeMapper.completedTaskById(timeControlTaskSend.getSubscribeId());
}
......
package com.pcloud.book.timecontrol.biz.impl;
import com.pcloud.book.consumer.wechatgroup.WechatGroupConsr;
import com.pcloud.book.timecontrol.biz.TaskBiz;
import com.pcloud.book.timecontrol.biz.TaskCompletedBiz;
import com.pcloud.book.timecontrol.biz.TaskSubscribeBiz;
import com.pcloud.book.timecontrol.dto.ReplyMessageDto;
import com.pcloud.book.timecontrol.dto.SubscribeTaskUserDTO;
import com.pcloud.book.timecontrol.dto.TaskCompletedDto;
import com.pcloud.book.timecontrol.dto.TaskItemSendDto;
import com.pcloud.book.timecontrol.dto.TaskSendUserDto;
import com.pcloud.book.timecontrol.dto.TodayTaskSendDto;
import com.pcloud.book.timecontrol.mapper.TimeControlReplyMessageMapper;
import com.pcloud.book.timecontrol.mapper.TimeControlTaskItemMapper;
import com.pcloud.book.timecontrol.mapper.TimeControlTaskMapper;
import com.pcloud.book.timecontrol.mapper.TimeControlTaskSendMapper;
import com.pcloud.book.timecontrol.mapper.TimeControlTaskSubscribeMapper;
import com.pcloud.common.page.PageBeanNew;
import com.pcloud.common.utils.ListUtils;
import com.pcloud.common.utils.string.StringUtil;
import com.pcloud.labelcenter.label.service.LabelService;
import com.pcloud.wechatgroup.group.dto.GroupUserDTO;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.MapUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* @date: 2020年01月30日 14:20
* @Author: Zcy
* @Descprition
*/
@Component("taskCompletedBiz")
@Slf4j
public class TaskCompletedBizImpl implements TaskCompletedBiz {
private final static Logger LOGGER = LoggerFactory.getLogger(TaskCompletedBizImpl.class);
@Autowired
private TimeControlTaskMapper taskMapper;
@Autowired
private TimeControlTaskItemMapper taskItemMapper;
@Autowired
private TimeControlReplyMessageMapper replyMessageMapper;
@Autowired
private TimeControlTaskSubscribeMapper taskSubscribeMapper;
@Autowired
private TimeControlTaskSendMapper timeControlTaskSendMapper;
@Autowired
private LabelService labelService;
@Autowired
private TaskSubscribeBiz taskSubscribeBiz;
@Autowired
private TaskBiz taskBiz;
@Autowired
private WechatGroupConsr wechatGroupConsr;
//@Autowired
//private PcloudKeywordService pcloudKeywordService;
@Override
public PageBeanNew<TaskCompletedDto> listTaskCompleted4Pcloud(Integer currentPage, Integer numPerPage, String taskName, Integer proLabelId, Integer depLabelId, Integer purLabelId) {
List<TaskCompletedDto> list = new ArrayList<>();
Integer count = taskMapper.getTaskCompletedCount(taskName, proLabelId, depLabelId, purLabelId);
if (count <= 0) {
return new PageBeanNew<>(currentPage, numPerPage, count, list);
}
list = taskMapper.listTaskCompleted4Pcloud(currentPage * numPerPage, numPerPage,taskName, proLabelId, depLabelId, purLabelId);
return new PageBeanNew<>(currentPage, numPerPage, count, list);
}
@Override
public PageBeanNew<SubscribeTaskUserDTO> listTaskSubscribeUser4Pcloud(Integer currentPage, Integer numPerPage, String search, Integer taskId,Integer subscribeType) {
List<SubscribeTaskUserDTO> list = new ArrayList<>();
List<String> wxIds=new ArrayList<>();
if(StringUtil.isNotBlank(search)){
wxIds=wechatGroupConsr.getByUserQuery(search);
}
Integer count = taskMapper.getSubscribeCount(search,taskId,subscribeType,wxIds);
if (count <= 0) {
return new PageBeanNew<>(currentPage, numPerPage, count, list);
}
//按照完成次数降序
list = taskMapper.listTaskSubscribeUser4Pcloud(currentPage * numPerPage, numPerPage,search,taskId,subscribeType,wxIds);
if(ListUtils.isEmpty(list)){
return new PageBeanNew<>(currentPage, numPerPage, count, list);
}
fillUserCompletedList(taskId, list);
return new PageBeanNew<>(currentPage, numPerPage, count, list);
}
private void fillUserCompletedList(Integer taskId, List<SubscribeTaskUserDTO> list) {
List<String> wxIdList = list.stream().map(a -> a.getWxUserId()).distinct().collect(Collectors.toList());
//未完成次数
List<SubscribeTaskUserDTO> taskUserSendList=timeControlTaskSendMapper.getTaskNoCompletedCount(wxIdList,taskId);
Map<String, Integer> noCompletedMap=new HashMap<>();
if(!ListUtils.isEmpty(taskUserSendList)){
noCompletedMap= taskUserSendList.stream().collect(Collectors.toMap(a -> a.getWxUserId(), a -> a.getNoCompletedCount(), (k1, k2) -> k2));
}
Map<String, GroupUserDTO> userDTOMap = wechatGroupConsr.mapWxUserInfoByWxIdList(wxIdList);
for (SubscribeTaskUserDTO subscribeTaskUserDTO : list) {
//填充未完成次数
if(MapUtils.isNotEmpty(noCompletedMap) && noCompletedMap.containsKey(subscribeTaskUserDTO.getWxUserId())){
Integer noCompletedCount = noCompletedMap.get(subscribeTaskUserDTO.getWxUserId());
subscribeTaskUserDTO.setNoCompletedCount(noCompletedCount);
}else{
subscribeTaskUserDTO.setNoCompletedCount(0);
}
//填充用户信息
if(MapUtils.isNotEmpty(userDTOMap) && userDTOMap.containsKey(subscribeTaskUserDTO.getWxUserId())){
GroupUserDTO groupUserDTO = userDTOMap.get(subscribeTaskUserDTO.getWxUserId());
if(null!=groupUserDTO){
subscribeTaskUserDTO.setNickName(groupUserDTO.getNickName());
subscribeTaskUserDTO.setHeadPic(groupUserDTO.getHeadPic());
subscribeTaskUserDTO.setSex(groupUserDTO.getSex());
}
}
}
}
@Override
public PageBeanNew<TaskItemSendDto> listTaskItemSendRecord4Pcloud(Integer currentPage, Integer numPerPage, String startTime, String endTime, String robotWxId, String taskName, String sendContent, String search) {
List<TaskItemSendDto> list = new ArrayList<>();
Integer count = timeControlTaskSendMapper.getTaskItemSendCount(startTime,endTime,robotWxId,taskName,sendContent);
if (count <= 0) {
return new PageBeanNew<>(currentPage, numPerPage, count, list);
}
list = timeControlTaskSendMapper.listTaskItemSendRecord4Pcloud(currentPage * numPerPage, numPerPage,startTime,endTime,robotWxId,taskName,sendContent);
log.info("发送记录查询条数="+list.size());
if(ListUtils.isEmpty(list)){
return new PageBeanNew<>(currentPage, numPerPage, count, list);
}
fillSendRecordList(list);
return new PageBeanNew<>(currentPage, numPerPage, count, list);
}
private void fillSendRecordList(List<TaskItemSendDto> list) {
//批量查询机器人信息
List<String> robotIdlist = list.stream().map(TaskItemSendDto::getRobotWxId).distinct().collect(Collectors.toList());
Map<String, GroupUserDTO> robotMap = wechatGroupConsr.mapRobotInfoByIdList(robotIdlist);
//批量查询发送内容
List<Integer> taskItemIdList = list.stream().map(TaskItemSendDto::getTaskItemId).distinct().collect(Collectors.toList());
List<ReplyMessageDto> replyMessageDtos = replyMessageMapper.list4TaskItemList(taskItemIdList, 0);
Map<Integer, List<ReplyMessageDto>> replyMap = new HashMap<>();
if (!ListUtils.isEmpty(replyMessageDtos)) {
replyMap = replyMessageDtos.stream().collect(Collectors.groupingBy(ReplyMessageDto::getTaskItemId));
}
for (TaskItemSendDto taskItemSendDto : list) {
if (MapUtils.isNotEmpty(robotMap) && robotMap.containsKey(taskItemSendDto.getRobotWxId())) {
GroupUserDTO groupUserDTO = robotMap.get(taskItemSendDto.getRobotWxId());
if (null != groupUserDTO) {
taskItemSendDto.setRobotName(groupUserDTO.getNickName());
}
}
if (MapUtils.isNotEmpty(replyMap) && replyMap.containsKey(taskItemSendDto.getTaskItemId())) {
List<ReplyMessageDto> replyMessageDtoList = replyMap.get(taskItemSendDto.getTaskItemId());
taskItemSendDto.setReplyMessageList(replyMessageDtoList);
}
}
}
@Override
public PageBeanNew<TaskSendUserDto> listTaskItemSendUser4Pcloud(Integer currentPage, Integer numPerPage, Integer taskItemId, String search, String robotWxId) {
List<TaskSendUserDto> list = new ArrayList<>();
List<String> wxIds = new ArrayList<>();
if (StringUtil.isNotBlank(search)) {
wxIds = wechatGroupConsr.getByUserQuery(search);
}
Integer count = timeControlTaskSendMapper.getTaskItemSendUserCount(wxIds, taskItemId, robotWxId);
if (count <= 0) {
return new PageBeanNew<>(currentPage, numPerPage, count, list);
}
list = timeControlTaskSendMapper.listTaskItemSendUser4Pcloud(currentPage * numPerPage, numPerPage, wxIds, taskItemId, robotWxId);
if (ListUtils.isEmpty(list)) {
return new PageBeanNew<>(currentPage, numPerPage, count, list);
}
List<String> wxIdList = list.stream().map(TaskSendUserDto::getWxUserId).collect(Collectors.toList());
Map<String, GroupUserDTO> userDTOMap = wechatGroupConsr.mapWxUserInfoByWxIdList(wxIdList);
list.forEach(item -> {
String wxUserId = item.getWxUserId();
if (userDTOMap != null && userDTOMap.get(wxUserId) != null) {
GroupUserDTO groupUserDTO = userDTOMap.get(wxUserId);
item.setNickName(groupUserDTO.getNickName());
item.setHeadPic(groupUserDTO.getHeadPic());
item.setSex(groupUserDTO.getSex());
}
});
return new PageBeanNew<>(currentPage, numPerPage, count, list);
}
@Override
public TodayTaskSendDto getTodayTaskSend() {
TodayTaskSendDto todayTaskSendDto=new TodayTaskSendDto();
Integer todayTaskSendCount = timeControlTaskSendMapper.todayTaskSendCount();
Integer todayTaskNotSendCount = timeControlTaskSendMapper.todayTaskNotSendCount();
todayTaskSendDto.setTodaySendCount(todayTaskSendCount);
todayTaskSendDto.setTodayNotSendCount(todayTaskNotSendCount);
return todayTaskSendDto;
}
@Override
public List<String> getTaskSendDateList(String date) {
List<String> taskSendDateList = timeControlTaskSendMapper.getTaskSendDateList(date);
return taskSendDateList;
}
}
......@@ -153,6 +153,7 @@ public class TaskSubscribeBizImpl implements TaskSubscribeBiz {
taskSend.setSendState(TaskSendStateEnum.WAIT_SEND.state);
taskSend.setTaskItemId(item.getId());
taskSend.setSendDay(DateUtils.getShortDateStr(DateUtils.addDay(new Date(), item.getStartDay())));
taskSend.setSendHour(item.getSendHour());
taskSendList.add(taskSend);
}
LOGGER.info("111");
......@@ -427,7 +428,7 @@ public class TaskSubscribeBizImpl implements TaskSubscribeBiz {
//每次都要判断一下是否所有单项任务都完成。完成之后需要同步修改关注表里面完成状态
if(count==taskSendList.size()) {
Integer noCompletedItem = timeControlTaskSendMapper.getNoCompletedItem(timeControlTaskSend.getTaskId());
Integer noCompletedItem = timeControlTaskSendMapper.getNoCompletedCount(timeControlTaskSend.getSubscribeId());
if (noCompletedItem == 0) {
taskSubscribeMapper.completedTaskById(timeControlTaskSend.getSubscribeId());
}
......
package com.pcloud.book.timecontrol.entity;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.util.Date;
public class TimeControlTaskItem {
......@@ -13,6 +15,7 @@ public class TimeControlTaskItem {
private String finishKeyWord;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date createTime;
private Date updateTime;
......
......@@ -32,4 +32,6 @@ public class TimeControlTaskSend implements Serializable {
private Integer sendState;
private Integer completeState;
private String sendHour;
}
package com.pcloud.book.timecontrol.facade.impl;
import com.pcloud.book.timecontrol.biz.TaskBiz;
import com.pcloud.book.timecontrol.biz.TaskCompletedBiz;
import com.pcloud.book.timecontrol.biz.TaskSubscribeBiz;
import com.pcloud.book.timecontrol.dto.*;
import com.pcloud.common.dto.ResponseDto;
import com.pcloud.common.page.PageBeanNew;
import com.pcloud.common.permission.PermissionException;
import com.pcloud.common.utils.SessionUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* @date: 2020年02月07日 12:52
* @Author: zy
* @Descprition
*/
@Api(value = "时间管理完成情况")
@RequestMapping(value = "/statis")
@RestController("statisFacade")
public class TimeControlStatisFacadeImpl {
@Autowired
private TaskBiz taskBiz;
@Autowired
private TaskSubscribeBiz taskSubscribeBiz;
@Autowired
private TaskCompletedBiz taskCompletedBiz;
@GetMapping("listTaskCompleted4Pcloud")
@ApiOperation(value = "平台端查询任务完成情况列表", httpMethod = "GET")
ResponseDto<PageBeanNew<TaskCompletedDto>> listTaskCompleted4Pcloud(@RequestHeader("token") String token,
@RequestParam Integer currentPage,
@RequestParam Integer numPerPage,
@RequestParam(value = "search", required = false) String search,
@RequestParam(value = "taskName", required = false) String taskName,
@RequestParam(value = "proLabelId", required = false) Integer proLabelId,
@RequestParam(value = "depLabelId", required = false) Integer depLabelId,
@RequestParam(value = "purLabelId", required = false) Integer purLabelId) throws PermissionException {
SessionUtil.getToken4Redis(token);
PageBeanNew<TaskCompletedDto> pageResult = taskCompletedBiz.listTaskCompleted4Pcloud(currentPage, numPerPage, taskName,proLabelId,depLabelId,purLabelId);
return new ResponseDto<>(pageResult);
}
@GetMapping("listTaskSubscribeUser4Pcloud")
@ApiOperation(value = "平台端查询任务参与用户列表", httpMethod = "GET")
ResponseDto<PageBeanNew<SubscribeTaskUserDTO>> listTaskSubscribeUser4Pcloud(@RequestHeader("token") String token,
@RequestParam Integer currentPage,
@RequestParam Integer numPerPage,
@RequestParam(value = "taskId") Integer taskId,
@RequestParam(value = "search", required = false) String search,
@RequestParam(value = "subscribeType", required = false) Integer subscribeType) throws PermissionException {
SessionUtil.getToken4Redis(token);
PageBeanNew<SubscribeTaskUserDTO> pageResult = taskCompletedBiz.listTaskSubscribeUser4Pcloud(currentPage, numPerPage, search,taskId,subscribeType);
return new ResponseDto<>(pageResult);
}
@GetMapping("getTodayTaskSend")
@ApiOperation(value = "获取今日消息发送信息", httpMethod = "GET")
ResponseDto<TodayTaskSendDto> getTodayTaskSend(@RequestHeader("token") String token) throws PermissionException {
SessionUtil.getToken4Redis(token);
TodayTaskSendDto todayTaskSendDto=taskCompletedBiz.getTodayTaskSend();
return new ResponseDto<>(todayTaskSendDto);
}
@GetMapping("getTaskSendDateList")
@ApiOperation(value = "获取有发送任务的日期集合", httpMethod = "GET")
ResponseDto<List<String>> getTaskSendDateList(@RequestHeader("token") String token,
@RequestParam(value = "date") String date) throws PermissionException {
SessionUtil.getToken4Redis(token);
List<String> taskSendDateList=taskCompletedBiz.getTaskSendDateList(date);
return new ResponseDto<>(taskSendDateList);
}
@GetMapping("listTaskItemSendRecord4Pcloud")
@ApiOperation(value = "平台端查询任务发送记录列表", httpMethod = "GET")
ResponseDto<PageBeanNew<TaskItemSendDto>> listTaskItemSendRecord4Pcloud(@RequestHeader("token") String token,
@RequestParam Integer currentPage,
@RequestParam Integer numPerPage,
@RequestParam(value = "startTime", required = false) String startTime,
@RequestParam(value = "endTime", required = false) String endTime,
@RequestParam(value = "robotWxId", required = false) String robotWxId,
@RequestParam(value = "taskName", required = false) String taskName,
@RequestParam(value = "sendContent", required = false) String sendContent,
@RequestParam(value = "search", required = false) String search) throws PermissionException {
SessionUtil.getToken4Redis(token);
PageBeanNew<TaskItemSendDto> pageResult = taskCompletedBiz.listTaskItemSendRecord4Pcloud(currentPage, numPerPage, startTime, endTime,robotWxId,taskName,sendContent,search);
return new ResponseDto<>(pageResult);
}
@GetMapping("listTaskItemSendUser4Pcloud")
@ApiOperation(value = "平台端查询任务发送读者详情列表", httpMethod = "GET")
ResponseDto<PageBeanNew<TaskSendUserDto>> listTaskItemSendUser4Pcloud(@RequestHeader("token") String token,
@RequestParam Integer currentPage,
@RequestParam Integer numPerPage,
@RequestParam(value = "taskItemId") Integer taskItemId,
@RequestParam(value = "search", required = false) String search, @RequestParam String robotWxId) throws PermissionException {
SessionUtil.getToken4Redis(token);
PageBeanNew<TaskSendUserDto> pageResult = taskCompletedBiz.listTaskItemSendUser4Pcloud(currentPage, numPerPage,taskItemId,search, robotWxId);
return new ResponseDto<>(pageResult);
}
}
\ No newline at end of file
......@@ -2,6 +2,7 @@ package com.pcloud.book.timecontrol.mapper;
import com.pcloud.book.timecontrol.entity.TimeControlReplyMessage;
import com.pcloud.book.timecontrol.dto.ReplyMessageDto;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Component;
......@@ -28,4 +29,6 @@ public interface TimeControlReplyMessageMapper {
List<TimeControlReplyMessage> list4TaskItem(@Param("taskItemId") Integer taskItemId, @Param("replyType") Integer replyType);
List<TimeControlReplyMessage> getByTaskItemId(Integer taskItemId);
List<ReplyMessageDto> list4TaskItemList(@Param("taskItemIds") List<Integer> taskItemIds, @Param("replyType") Integer replyType);
}
\ No newline at end of file
......@@ -22,4 +22,6 @@ public interface TimeControlTaskItemMapper {
void updateTtaskItem(TimeControlTaskItem timeControlTaskItem);
List<ReplyMessageBaseDto> listTaskItemDay(Integer taskId);
List<TimeControlTaskItem> getByItemIdList(@Param("taskItemIds") List<Integer> taskItemIds);
}
\ No newline at end of file
package com.pcloud.book.timecontrol.mapper;
import com.pcloud.book.timecontrol.entity.TimeControlTask;
import com.pcloud.book.timecontrol.vo.KeyWordTaskVO;
import com.pcloud.book.timecontrol.dto.BookTaskBindingDto;
import com.pcloud.book.timecontrol.dto.SubscribeTaskUserDTO;
import com.pcloud.book.timecontrol.dto.TaskCompletedDto;
import com.pcloud.book.timecontrol.dto.TaskDto;
import com.pcloud.book.timecontrol.entity.TimeControlTask;
import com.pcloud.book.timecontrol.vo.KeyWordTaskVO;
import org.apache.ibatis.annotations.MapKey;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Component;
......@@ -52,4 +54,13 @@ public interface TimeControlTaskMapper {
TaskDto getTaskByIdAndWxUserId(@Param("relSkillId")Integer relSkillId, @Param("wxUserId")String wxUserId);
Integer getSubscribeState(@Param("relSkillId")Integer relSkillId, @Param("wxUserId")String wxUserId);
Integer getTaskCompletedCount(@Param("taskName") String taskName,@Param("proLabelId") Integer proLabelId, @Param("depLabelId") Integer depLabelId, @Param("purLabelId") Integer purLabelId);
List<TaskCompletedDto> listTaskCompleted4Pcloud(@Param("pageNum") Integer pageNum, @Param("numPerPage") Integer numPerPage, @Param("taskName") String taskName, @Param("proLabelId") Integer proLabelId, @Param("depLabelId") Integer depLabelId, @Param("purLabelId") Integer purLabelId);
Integer getSubscribeCount(@Param("search") String search,@Param("taskId") Integer taskId,@Param("subscribeType") Integer subscribeType,@Param("wxIds") List<String> wxIds);
List<SubscribeTaskUserDTO> listTaskSubscribeUser4Pcloud(@Param("pageNum") Integer pageNum, @Param("numPerPage") Integer numPerPage, @Param("search") String search, @Param("taskId") Integer taskId,@Param("subscribeType") Integer subscribeType,@Param("wxIds") List<String> wxIds);
}
\ No newline at end of file
package com.pcloud.book.timecontrol.mapper;
import com.pcloud.book.timecontrol.entity.TimeControlTaskSend;
import com.pcloud.book.timecontrol.dto.SubscribeTaskUserDTO;
import com.pcloud.book.timecontrol.dto.TaskItemSendDto;
import com.pcloud.book.timecontrol.dto.TaskSendDto;
import com.pcloud.book.timecontrol.dto.TaskSendUserDto;
import com.pcloud.book.timecontrol.entity.TimeControlTaskSend;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Component;
......@@ -40,4 +43,22 @@ public interface TimeControlTaskSendMapper {
TimeControlTaskSend getById(Integer taskSendId);
Integer getNoCompletedItem(Integer taskId);
Integer todayTaskSendCount();
Integer todayTaskNotSendCount();
List<String> getTaskSendDateList(@Param("date") String date);
Integer getTaskItemSendCount(@Param("startTime") String startTime,@Param("endTime") String endTime,@Param("robotWxId") String robotWxId,@Param("taskName") String taskName,@Param("sendContent") String sendContent);
List<TaskItemSendDto> listTaskItemSendRecord4Pcloud(@Param("pageNum") Integer pageNum, @Param("numPerPage") Integer numPerPage, @Param("startTime") String startTime, @Param("endTime") String endTime, @Param("robotWxId") String robotWxId, @Param("taskName") String taskName, @Param("sendContent") String sendContent);
Integer getTaskItemSendUserCount(@Param("wxIds") List<String> wxIds,@Param("taskItemId") Integer taskItemId, @Param("robotWxId") String robotWxId);
List<TaskSendUserDto> listTaskItemSendUser4Pcloud(@Param("pageNum") Integer pageNum, @Param("numPerPage") Integer numPerPage,@Param("wxIds") List<String> wxIds, @Param("taskItemId") Integer taskItemId, @Param("robotWxId") String robotWxId);
List<SubscribeTaskUserDTO> getTaskNoCompletedCount(@Param("wxIds") List<String> wxIds, @Param("taskId") Integer taskId);
Integer getNoCompletedCount(@Param("subscribeId") Integer subscribeId);
}
......@@ -31,5 +31,4 @@ public interface TimeControlTaskSubscribeMapper {
void completedTaskById(Integer subscribeId);
}
......@@ -24,7 +24,7 @@
<update id="update" parameterType="com.pcloud.book.pcloudkeyword.entity.PcloudRobotClassify">
update pcloud_robot set
classify_name = #{classifyName}
classify_name = #{classifyName},
is_delete = #{isDelete}
where id=#{id}
</update>
......
......@@ -76,4 +76,25 @@
where task_item_id = #{taskItemId,jdbcType=INTEGER}
</select>
<select id="list4TaskItemList" resultType="com.pcloud.book.timecontrol.dto.ReplyMessageDto">
select
task_item_id taskItemId,
app_id appId,
product_id productId,
img_url imgUrl,
file_name fileName,
file_url fileUrl,
text text,
link_url linkUrl,
message_type messageType, file_type fileType, size
from time_control_reply_message
where reply_type = #{replyType}
<if test="taskItemIds !=null and taskItemIds.size()>0">
AND task_item_id IN
<foreach collection="taskItemIds" open="(" close=")" separator="," item="item">
#{item}
</foreach>
</if>
</select>
</mapper>
\ No newline at end of file
......@@ -57,7 +57,7 @@
</select>
<select id="listTaskItemDay" resultType="com.pcloud.book.timecontrol.dto.ReplyMessageBaseDto">
select id, task_id taskId, start_day startDay
select id, task_id taskId, start_day startDay, send_hour sendHour
from time_control_task_item where task_id = #{taskId}
order by startDay asc, send_hour asc
</select>
......@@ -67,4 +67,14 @@
where id = #{id,jdbcType=INTEGER}
</delete>
<select id="getByItemIdList" resultMap="BaseResultMap">
select
<include refid="Base_Column_List" />
from time_control_task_item
where id IN
<foreach collection="taskItemIds" open="(" close=")" separator="," item="item">
#{item}
</foreach>
</select>
</mapper>
\ No newline at end of file
......@@ -233,4 +233,106 @@
now(), now(), #{proLabelId}, #{depLabelId}, #{purLabelId}, #{successSubscribeWord}, #{successUnSubscribeWord})
</insert>
<select id="getTaskCompletedCount" resultType="java.lang.Integer">
SELECT ifnull(COUNT(1),0)
FROM time_control_task a
where 1=1
<if test="taskName != null">
and a.task_name like concat('%', #{taskName}, '%')
</if>
<if test="proLabelId != null">
AND a.pro_label_id = #{proLabelId}
</if>
<if test="depLabelId != null">
AND a.dep_label_id = #{depLabelId}
</if>
<if test="purLabelId != null">
AND a.pur_label_id = #{purLabelId}
</if>
</select>
<select id="listTaskCompleted4Pcloud" resultType="com.pcloud.book.timecontrol.dto.TaskCompletedDto">
SELECT
a.task_id taskId,
a.task_name taskName,
COUNT(distinct c.id) taskItemCount,
COUNT(DISTINCT d.wx_user_id) subscribePersonCount
FROM time_control_task a
LEFT JOIN time_control_task_item c ON a.task_id = c.task_id
LEFT JOIN time_control_task_subscribe d on a.task_id=d.task_id
WHERE 1=1
<if test="taskName != null">
and a.task_name like concat('%', #{taskName}, '%')
</if>
<if test="proLabelId != null">
AND a.pro_label_id = #{proLabelId}
</if>
<if test="depLabelId != null">
AND a.dep_label_id = #{depLabelId}
</if>
<if test="purLabelId != null">
AND a.pur_label_id = #{purLabelId}
</if>
GROUP BY
a.task_id
<if test="pageNum != null">
limit #{pageNum}, #{numPerPage}
</if>
</select>
<select id="getSubscribeCount" resultType="java.lang.Integer">
SELECT ifnull(COUNT(1),0)
FROM time_control_task_subscribe a
where 1=1
<if test="wxIds != null and wxIds.size()>0">
and a.wx_user_id IN
<foreach collection="wxIds" open="(" close=")" separator="," item="item">
#{item}
</foreach>
</if>
<if test="subscribeType !=null">
and a.state=#{subscribeType}
</if>
and a.task_id=#{taskId}
</select>
<select id="listTaskSubscribeUser4Pcloud" resultType="com.pcloud.book.timecontrol.dto.SubscribeTaskUserDTO">
select t1.wxUserId wxUserId,
t1.subscribeState subscribeState,
ifnull(t2.completedCount,0) completedCount from
(select
wx_user_id wxUserId,
state subscribeState
FROM time_control_task_subscribe a
where 1=1
<if test="wxIds != null and wxIds.size()>0">
and a.wx_user_id IN
<foreach collection="wxIds" open="(" close=")" separator="," item="item">
#{item}
</foreach>
</if>
<if test="subscribeType !=null">
and a.state=#{subscribeType}
</if>
and a.task_id=#{taskId}
)t1
left join
(
select wx_user_id wxId,count(1) completedCount
from time_control_task_send a where
1=1
<if test="wxIds != null and wxIds.size()>0">
and a.wx_user_id IN
<foreach collection="wxIds" open="(" close=")" separator="," item="item">
#{item}
</foreach>
</if>
and a.task_id=#{taskId} and complete_state=1
GROUP BY wxId
)t2 on t1.wxUserId=t2.wxId
ORDER BY completedCount desc,wxUserId asc
<if test="pageNum != null">
limit #{pageNum}, #{numPerPage}
</if>
</select>
</mapper>
\ No newline at end of file
......@@ -19,13 +19,13 @@
<insert id="batchInsert" parameterType="com.pcloud.book.timecontrol.entity.TimeControlTaskSend" useGeneratedKeys="true" keyProperty="id">
insert into time_control_task_send
(wx_user_id, book_id, task_id, task_item_id, subscribe_id, send_day, send_state, create_time)
(wx_user_id, book_id, task_id, task_item_id, subscribe_id, send_day, send_state, create_time, send_hour)
values
<foreach collection="list" item="item" index="index" separator=",">
(
#{item.wxUserId,jdbcType=VARCHAR}, #{item.bookId,jdbcType=INTEGER}, #{item.taskId,jdbcType=INTEGER},
#{item.taskItemId,jdbcType=INTEGER}, #{item.subscribeId,jdbcType=INTEGER}, #{item.sendDay,jdbcType=VARCHAR},
#{item.sendState,jdbcType=INTEGER}, NOW()
#{item.sendState,jdbcType=INTEGER}, NOW(), #{item.sendHour}
)
</foreach>
</insert>
......@@ -39,9 +39,8 @@
a.task_item_id taskItemId
from time_control_task_send a
left join time_control_task_subscribe b on a.subscribe_id = b.id
LEFT JOIN time_control_task_item c on a.task_item_id=c.id
where a.send_state = 0
and CONCAT_WS(" ",a.send_day,SUBSTRING_INDEX(c.send_hour,":",1)) = DATE_FORMAT(NOW(), '%Y-%m-%d %H');
and CONCAT_WS(" ",a.send_day,SUBSTRING_INDEX(a.send_hour,":",1)) = DATE_FORMAT(NOW(), '%Y-%m-%d %H');
</select>
......@@ -91,4 +90,143 @@
WHERE task_id =#{taskId}
and complete_state !=1 AND send_state !=2
</select>
<select id="todayTaskSendCount" resultType="java.lang.Integer">
SELECT ifnull(COUNT(1),0) FROM time_control_task_send WHERE send_state = 1
AND send_day =DATE_FORMAT(NOW(), '%Y-%m-%d')
</select>
<select id="todayTaskNotSendCount" resultType="java.lang.Integer">
SELECT ifnull(COUNT(1),0) FROM time_control_task_send WHERE send_state = 0
AND send_day =DATE_FORMAT(NOW(), '%Y-%m-%d')
</select>
<select id="getTaskSendDateList" resultType="java.lang.String">
SELECT DISTINCT send_day from time_control_task_send where SUBSTRING_INDEX(send_day,"-",2)=#{date}
ORDER BY send_day
</select>
<select id="getTaskItemSendCount" resultType="java.lang.Integer">
select count(1) from (
select c.robot_wx_id
from
time_control_task_send a LEFT JOIN
time_control_task b on a.task_id=b.task_id
LEFT JOIN time_control_task_subscribe c on a.subscribe_id=c.id
LEFT JOIN time_control_reply_message d on a.task_item_id=d.task_item_id
where 1=1
<if test="startTime !=null">
and a.send_day <![CDATA[ >= ]]> STR_TO_DATE(#{startTime},'%Y-%m-%d')
</if>
<if test="endTime !=null">
and a.send_day <![CDATA[ <= ]]> STR_TO_DATE(#{endTime},'%Y-%m-%d')
</if>
<if test="robotWxId !=null">
and c.robot_wx_id=#{robotWxId}
</if>
<if test="taskName !=null">
and b.task_name like concat('%', #{taskName}, '%')
</if>
<if test="sendContent !=null">
and d.text like concat('%', #{sendContent}, '%')
</if>
group by
a.task_item_id,c.robot_wx_id
)s
</select>
<select id="listTaskItemSendRecord4Pcloud" resultType="com.pcloud.book.timecontrol.dto.TaskItemSendDto">
select
a.task_id taskId,
b.task_name taskName,
a.task_item_id taskItemId,
c.robot_wx_id robotWxId,
ifnull(count(DISTINCT a.wx_user_id),0) sendPersonCount,
e.create_time createTime
from
time_control_task_send a LEFT JOIN
time_control_task b on a.task_id=b.task_id
LEFT JOIN time_control_task_subscribe c on a.subscribe_id=c.id
LEFT JOIN time_control_reply_message d on a.task_item_id=d.task_item_id
LEFT JOIN time_control_task_item e on a.task_item_id = e.id
where 1=1
<if test="startTime !=null">
and a.send_day <![CDATA[ >= ]]> STR_TO_DATE(#{startTime},'%Y-%m-%d')
</if>
<if test="endTime !=null">
and a.send_day <![CDATA[ <= ]]> STR_TO_DATE(#{endTime},'%Y-%m-%d')
</if>
<if test="robotWxId !=null">
and c.robot_wx_id=#{robotWxId}
</if>
<if test="taskName !=null">
and b.task_name like concat('%', #{taskName}, '%')
</if>
<if test="sendContent !=null">
and d.text like concat('%', #{sendContent}, '%')
</if>
GROUP BY
a.task_item_id,c.robot_wx_id
<if test="pageNum != null">
limit #{pageNum}, #{numPerPage}
</if>
</select>
<select id="getTaskItemSendUserCount" resultType="java.lang.Integer">
SELECT ifnull(COUNT(DISTINCT a.wx_user_id),0) FROM time_control_task_send a
LEFT JOIN time_control_task_subscribe b ON a.subscribe_id = b.id
where 1=1
<if test="wxIds != null and wxIds.size()>0">
and a.wx_user_id IN
<foreach collection="wxIds" open="(" close=")" separator="," item="item">
#{item}
</foreach>
</if>
and a.task_item_id=#{taskItemId} AND b.robot_Wx_id = #{robotWxId}
</select>
<select id="listTaskItemSendUser4Pcloud" resultType="com.pcloud.book.timecontrol.dto.TaskSendUserDto">
SELECT
a.task_id taskId,
a.task_item_id taskItemId,
a.wx_user_id wxUserId,
a.send_state sendState, a.send_day sendDay, a.send_hour sendHour
FROM time_control_task_send a
LEFT JOIN time_control_task_subscribe b on a.subscribe_id = b.id
where 1=1
<if test="wxIds != null and wxIds.size()>0">
and a.wx_user_id IN
<foreach collection="wxIds" open="(" close=")" separator="," item="item">
#{item}
</foreach>
</if>
and a.task_item_id=#{taskItemId} AND b.robot_wx_id = #{robotWxId}
<if test="pageNum != null">
limit #{pageNum}, #{numPerPage}
</if>
</select>
<select id="getTaskNoCompletedCount" resultType="com.pcloud.book.timecontrol.dto.SubscribeTaskUserDTO">
select
wx_user_id wxUserId,
ifnull(count(1),0) noCompletedCount
from time_control_task_send
where task_id=#{taskId}
and complete_state=0
and send_state !=2
<if test="wxIds !=null and wxIds.size()>0">
and wx_user_id IN
<foreach collection="wxIds" open="(" close=")" separator="," item="item">
#{item}
</foreach>
</if>
group by wx_user_id
</select>
<select id="getNoCompletedCount" resultType="java.lang.Integer">
select ifnull(count(1),0)
from time_control_task_send
WHERE subscribe_id =#{subscribeId}
and complete_state !=1 AND send_state !=2
</select>
</mapper>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment