package com.dian.todolist.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.dian.todolist.common.constant.CronJobConstant;
import com.dian.todolist.common.constant.ItemConstant;
import com.dian.todolist.common.po.BoardPO;
import com.dian.todolist.common.po.CronJobPO;
import com.dian.todolist.common.po.ItemPO;
import com.dian.todolist.mapper.ItemMapper;
import com.dian.todolist.service.BoardService;
import com.dian.todolist.service.CronJobService;
import com.dian.todolist.service.ItemService;
import com.github.yulichang.base.MPJBaseServiceImpl;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import com.google.common.collect.Lists;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.time.LocalDate;
import java.time.temporal.ChronoUnit;
import java.util.*;
import java.util.stream.Collectors;
/**
* <p>
* 服务实现类
* </p>
*
* @author dian
* @since 2022-01-19
*/
@Service
public class ItemServiceImpl extends MPJBaseServiceImpl<ItemMapper, ItemPO> implements ItemService {
@Resource
private ItemMapper itemMapper;
@Resource
private CronJobService cronJobService;
@Resource
private BoardService boardService;
@Override
public Map<String, List<List<String>>> listItemCountByDate(Long userId) {
//获得事项数量
List<Map<String, String>> itemCountList = itemMapper.listItemCountByDate(userId);
//获得已完成事项数量
List<Map<String, String>> itemFinishCountList = itemMapper.listItemFinishByDate(userId);
List<String> count = new ArrayList<>();
List<String> date = new ArrayList<>();
List<String> countFinish = new ArrayList<>();
List<String> dateFinish = new ArrayList<>();
itemCountList.forEach(e -> {
count.add(e.get("date"));
date.add(e.get("count"));
});
itemFinishCountList.forEach(e -> {
countFinish.add(e.get("date"));
dateFinish.add(e.get("count"));
});
List<List<String>> result = Lists.newArrayList(date, count);
List<List<String>> resultFinish = Lists.newArrayList(dateFinish, countFinish);
Map<String, List<List<String>>> map = new HashMap<>();
map.put("item", result);
map.put("itemFinish", resultFinish);
return map;
}
@Override
public List<ItemPO> list1(ItemPO vo) {
ItemPO po = new ItemPO();
BeanUtils.copyProperties(vo, po);
QueryWrapper<ItemPO> itemPOQueryWrapper = new QueryWrapper<>();
itemPOQueryWrapper.setEntity(po);
itemPOQueryWrapper.orderByDesc("create_time");
/*
* 1.不传递status和传递status不等于3的 增加查询条件stauts!=3已删除
* 2.如果传递status=3,则需要查询status=3的
* 先判断是否为null,为null的话执行执行语句块,不需要再判断第二个,防止了空指针
* */
itemPOQueryWrapper.ne(null == vo.getStatus() || ItemConstant.ITEM_STATUS_DELETED != vo.getStatus(), "status", ItemConstant.ITEM_STATUS_DELETED);
itemPOQueryWrapper.between(vo.getBeginDate() != null, "start_date", vo.getBeginDate(), vo.getEndDate());
List<ItemPO> items = super.list(itemPOQueryWrapper);
List<ItemPO> items1 = super.selectJoinList(ItemPO.class,
new MPJLambdaWrapper<ItemPO>()
.selectAll(ItemPO.class)
.selectAs(BoardPO::getName, ItemPO::getBoardName)
.selectAs(BoardPO::getIcon, ItemPO::getBoardIcon)
.selectAs(CronJobPO::getCronStatus, ItemPO::getReminder)
.leftJoin(BoardPO.class, on -> on.eq(BoardPO::getId, ItemPO::getBoardId))
.leftJoin(CronJobPO.class, on -> on
.eq(CronJobPO::getItemId, ItemPO::getId)
.eq(CronJobPO::getCronStatus, CronJobConstant.CRON_STATUS_NORMAL)
.eq(CronJobPO::getIsDeleted, 0))
//这玩意不管用
.setEntity(po)
//默认查询状态不等于3的(已删除)
.ne(null == vo.getStatus() || ItemConstant.ITEM_STATUS_DELETED != vo.getStatus(), ItemPO::getStatus, ItemConstant.ITEM_STATUS_DELETED)
//状态
.eq(null != vo.getStatus(), ItemPO::getStatus, vo.getStatus())
//日期范围
.between(vo.getBeginDate() != null, ItemPO::getStartDate, vo.getBeginDate(), vo.getEndDate())
//所属清单
.eq(null != vo.getBoardId(), ItemPO::getBoardId, vo.getBoardId())
//用户id
.eq(null != vo.getUserId(), ItemPO::getUserId, vo.getUserId())
//从新到旧排序
.orderByDesc(ItemPO::getCreateTime)
);
// //根据boardId统计事项数量
// Map<Long, Long> collect1 = items.stream().collect(Collectors.groupingBy(ItemPO::getBoardId, Collectors.counting()));
// //获得id
// Set<Long> id = collect1.keySet();
// System.out.println("boardid:"+JSONObject.toJSONString(id));
// Iterator iterator = id.iterator();
// Long i = 0L;
// while (iterator.hasNext()) {
// Long j = (Long) iterator.next();
// BoardPO boardPO = boardService.getById(j);
// for (; i < collect1.get(j); i++) {
// items.get(i.intValue()).setBoardName(boardPO.getName());
// items.get(i.intValue()).setBoardIcon(boardPO.getIcon());
//
// }
// }
return items1;
}
@Override
public List<Map<String, Object>> listItemCount(Long userId) {
//根据清单分组查询事项count
QueryWrapper<ItemPO> itemPOQueryWrapper = new QueryWrapper<>();
itemPOQueryWrapper.select("board_id as board", "count(*) as count");
itemPOQueryWrapper.eq("user_id", userId);
itemPOQueryWrapper.ne("status", ItemConstant.ITEM_STATUS_DELETED);
itemPOQueryWrapper.in("status", ItemConstant.ITEM_STATUS_TOP, ItemConstant.ITEM_STATUS_DOING);
itemPOQueryWrapper.groupBy("board_id");
List<Map<String, Object>> maps = super.listMaps(itemPOQueryWrapper);
//状态过滤器
itemPOQueryWrapper.clear();
itemPOQueryWrapper.select("IF( STATUS = 2, '已完成', IF ( status = 3, '垃圾箱', '' ) ) AS board", "count(*) as count");
itemPOQueryWrapper.eq("user_id", userId);
itemPOQueryWrapper.in("status", ItemConstant.ITEM_STATUS_DONE, ItemConstant.ITEM_STATUS_DELETED);
itemPOQueryWrapper.groupBy("status");
List<Map<String, Object>> mapsStatus = super.listMaps(itemPOQueryWrapper);
//日期过滤器
itemPOQueryWrapper.clear();
LocalDate today = LocalDate.now();
LocalDate nextWeek = today.plus(7, ChronoUnit.DAYS);
itemPOQueryWrapper.select("count(*) as count");
itemPOQueryWrapper.eq("user_id", userId);
itemPOQueryWrapper.ne("status", ItemConstant.ITEM_STATUS_DELETED);
itemPOQueryWrapper.in("status", ItemConstant.ITEM_STATUS_TOP, ItemConstant.ITEM_STATUS_DOING);
QueryWrapper<ItemPO> itemPOQueryWrapper2 = itemPOQueryWrapper.clone();
itemPOQueryWrapper.between("start_date", today, today);
itemPOQueryWrapper2.between("start_date", today, nextWeek);
Map<String, Object> dateToday = super.getMap(itemPOQueryWrapper);
Map<String, Objec
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
软件工程毕业设计—基于java+vue的todolist待办事项关联系统前端+后端源码.已获高分通过项目。 软件工程毕业设计—基于java+vue的todolist待办事项关联系统前端+后端源码.已获高分通过项目。软件工程毕业设计—基于java+vue的todolist待办事项关联系统前端+后端源码.已获高分通过项目。软件工程毕业设计—基于java+vue的todolist待办事项关联系统前端+后端源码.已获高分通过项目。软件工程毕业设计—基于java+vue的todolist待办事项关联系统前端+后端源码.已获高分通过项目。软件工程毕业设计—基于java+vue的todolist待办事项关联系统前端+后端源码.已获高分通过项目。软件工程毕业设计—基于java+vue的todolist待办事项关联系统前端+后端源码.已获高分通过项目。软件工程毕业设计—基于java+vue的todolist待办事项关联系统前端+后端源码.已获高分通过项目。
资源推荐
资源详情
资源评论


















收起资源包目录





































































































共 223 条
- 1
- 2
- 3

程序员张小妍
- 粉丝: 2w+
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 物流管理系统的数据库设计和数据库操作(1).docx
- 电子CAD教学(1).pptx
- 电气自动化专业实习报告(1)(1).docx
- 基于ssh的电信数据采集与整合正文(1).doc
- 关于会计信息化对企业财务管理的影响分析及应对措施探讨(1).docx
- 齿轮油泵设计-cadcam应用技术ⅰ大作业大学论文(1).doc
- 计算机软件工程的维护方法分析(1).docx
- 金碟财务软件教程--销售管理(2)(1).doc
- 晨飞CEO刘晓飞教育培训机构如何用互联网思维做好营销推广(1).doc
- 互联网+教育时代高校网络文化育人效果提升路径研究(1).docx
- 论档案信息化实践与档案工作创新(1).docx
- 互联网背景下信阳市医养结合养老模式发展现状与对策(1).docx
- 信息化发展视角下现代教育技术对我国教育的推动-1(1).docx
- 图书管理系统界面设计模板(1).doc
- 网站项目需求说明书.docx
- ORACLEEBSERP财务操作和培训手册(1).docx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制

- 1
- 2
前往页