| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144 |
- package com.jtzx.crm.module.sys.service;
- import cn.hutool.core.collection.CollUtil;
- import cn.hutool.core.date.DateField;
- import cn.hutool.core.date.DateTime;
- import cn.hutool.core.date.DateUtil;
- import cn.hutool.core.util.StrUtil;
- import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
- import com.google.common.collect.Lists;
- import com.jtzx.crm.module.sys.entity.SysCustomerFollowEntity;
- import com.jtzx.crm.module.sys.mapper.SysCustomerFollowMapper;
- import com.jtzx.crm.module.sys.model.request.AdminSysCustomerFollowOrderDTO;
- import com.jtzx.crm.module.sys.model.response.SysCustomerFollowOrderBO;
- import com.jtzx.crm.module.sys.model.response.SysCustomerFollowOrderDetailBO;
- import lombok.RequiredArgsConstructor;
- import lombok.extern.slf4j.Slf4j;
- import org.springframework.stereotype.Service;
- import java.time.LocalDateTime;
- import java.util.List;
- @RequiredArgsConstructor
- @Service
- @Slf4j
- public class SysCustomerDataFollowOrderService {
- private final SysCustomerFollowMapper sysCustomerFollowMapper;
- private final SysCustomerDataFollowService sysCustomerDataFollowService;
- /**
- * 预约登记列表数据查询
- *
- * @param dto
- * @return
- */
- public SysCustomerFollowOrderBO queryOrderFollowData(AdminSysCustomerFollowOrderDTO dto) {
- SysCustomerFollowOrderBO resultData = SysCustomerFollowOrderBO.builder().build();
- resultData.setStatus0Count(0);
- resultData.setStatus1Count(0);
- resultData.setStatus2Count(0);
- resultData.setTotalCount(0);
- resultData.setDateList(Lists.newArrayList());
- String dateStr = DateUtil.format(LocalDateTime.now(), "yyyy-MM-dd");
- if (StrUtil.isNotEmpty(dto.getDatetime())) {
- dateStr = dto.getDatetime().trim();
- }
- //当月开始时间
- DateTime startMonthDay = DateUtil.beginOfMonth(DateUtil.parse(dateStr));
- // //当月结束时间
- DateTime endMonthDay = DateUtil.endOfMonth(DateUtil.parse(dateStr));
- // 筛选条件数据
- resultData.setSelectData(sysCustomerDataFollowService.queryCustomerOrderSelectData(0, true,startMonthDay,endMonthDay));
- //如果是 yyyy-MM 格式,则需要重新设置为当月开始时间和结束时间
- DateTime startDateTime = DateUtil.beginOfDay(DateUtil.parseDate(dateStr));
- DateTime endDateTime = DateUtil.endOfDay(DateUtil.parseDate(dateStr));
- //如果是 yyyy-MM-dd 格式,则需要重新设置为当天开始时间和结束时间
- // if (dateStr.length() == 10) {
- // //当天开始时间
- // startDateTime = DateUtil.beginOfDay(DateUtil.parseDate(dateStr));
- // //当天结束时间
- // endDateTime = DateUtil.endOfDay(DateUtil.parseDate(dateStr));
- // }
- //数据列表
- resultData.setDataList(
- sysCustomerDataFollowService.queryCustomerFollowOrderData(DateUtil.toLocalDateTime(startDateTime),
- DateUtil.toLocalDateTime(endDateTime), dto.getUserId(), dto.getOrderStatus(),
- dto.getQueryStr(), 0));
- //查询数据
- List<SysCustomerFollowEntity> listData =
- sysCustomerFollowMapper.selectList(
- new LambdaQueryWrapper<>(SysCustomerFollowEntity.class)
- .select(
- SysCustomerFollowEntity::getId,
- SysCustomerFollowEntity::getOrderDatetime,
- SysCustomerFollowEntity::getOrderStatus,
- SysCustomerFollowEntity::getSuccessStatus,
- SysCustomerFollowEntity::getClaimDatetime
- )
- .ge(SysCustomerFollowEntity::getOrderDatetime, startMonthDay)
- .le(SysCustomerFollowEntity::getOrderDatetime, endMonthDay)
- .eq(SysCustomerFollowEntity::getFollowId,33) //只查询方案演示
- .eq(SysCustomerFollowEntity::getOrderType, 0)
- );
- if (CollUtil.isNotEmpty(listData)) {
- //月待开始时间
- resultData.setStatus0Count(
- listData.stream()
- .filter(x -> x.getOrderStatus() == 0)
- .toList().size());
- //月已结束时间
- resultData.setStatus1Count(
- listData.stream()
- .filter(x -> x.getOrderStatus() == 1)
- .toList().size());
- //月已取消时间
- resultData.setStatus2Count(
- listData.stream()
- .filter(x -> x.getOrderStatus() == 2)
- .toList().size());
- //总条数
- resultData.setTotalCount(listData.size());
- }
- //日期列表
- List<SysCustomerFollowOrderDetailBO> dateList = Lists.newArrayList();
- List<DateTime> dateTimes = DateUtil.rangeToList(startMonthDay, endMonthDay, DateField.DAY_OF_MONTH);
- dateTimes.forEach(e -> {
- SysCustomerFollowOrderDetailBO detailBO = SysCustomerFollowOrderDetailBO.builder()
- .day(DateUtil.format(e, "yyyy-MM-dd"))
- .status(0)
- .dayOfMonth(String.valueOf(DateUtil.dayOfMonth(e)))
- .build();
- if (CollUtil.isNotEmpty(listData)) {
- //当天开始时间
- DateTime startDateTime1 = DateUtil.beginOfDay(e);
- //当天结束时间
- DateTime endDateTime1 = DateUtil.endOfDay(e);
- int size =
- listData.stream()
- .filter(x -> !x.getOrderDatetime().isBefore(DateUtil.toLocalDateTime(startDateTime1))
- && !x.getOrderDatetime().isAfter(DateUtil.toLocalDateTime(endDateTime1)))
- .toList().size();
- if (size > 0) {
- detailBO.setStatus(1);
- }
- }
- dateList.add(detailBO);
- });
- resultData.setDateList(dateList);
- return resultData;
- }
- }
|