SysCustomerDataFollowOrderService.java 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. package com.jtzx.crm.module.sys.service;
  2. import cn.hutool.core.collection.CollUtil;
  3. import cn.hutool.core.date.DateField;
  4. import cn.hutool.core.date.DateTime;
  5. import cn.hutool.core.date.DateUtil;
  6. import cn.hutool.core.util.StrUtil;
  7. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  8. import com.google.common.collect.Lists;
  9. import com.jtzx.crm.module.sys.entity.SysCustomerFollowEntity;
  10. import com.jtzx.crm.module.sys.mapper.SysCustomerFollowMapper;
  11. import com.jtzx.crm.module.sys.model.request.AdminSysCustomerFollowOrderDTO;
  12. import com.jtzx.crm.module.sys.model.response.SysCustomerFollowOrderBO;
  13. import com.jtzx.crm.module.sys.model.response.SysCustomerFollowOrderDetailBO;
  14. import lombok.RequiredArgsConstructor;
  15. import lombok.extern.slf4j.Slf4j;
  16. import org.springframework.stereotype.Service;
  17. import java.time.LocalDateTime;
  18. import java.util.List;
  19. @RequiredArgsConstructor
  20. @Service
  21. @Slf4j
  22. public class SysCustomerDataFollowOrderService {
  23. private final SysCustomerFollowMapper sysCustomerFollowMapper;
  24. private final SysCustomerDataFollowService sysCustomerDataFollowService;
  25. /**
  26. * 预约登记列表数据查询
  27. *
  28. * @param dto
  29. * @return
  30. */
  31. public SysCustomerFollowOrderBO queryOrderFollowData(AdminSysCustomerFollowOrderDTO dto) {
  32. SysCustomerFollowOrderBO resultData = SysCustomerFollowOrderBO.builder().build();
  33. resultData.setStatus0Count(0);
  34. resultData.setStatus1Count(0);
  35. resultData.setStatus2Count(0);
  36. resultData.setTotalCount(0);
  37. resultData.setDateList(Lists.newArrayList());
  38. String dateStr = DateUtil.format(LocalDateTime.now(), "yyyy-MM-dd");
  39. if (StrUtil.isNotEmpty(dto.getDatetime())) {
  40. dateStr = dto.getDatetime().trim();
  41. }
  42. //当月开始时间
  43. DateTime startMonthDay = DateUtil.beginOfMonth(DateUtil.parse(dateStr));
  44. // //当月结束时间
  45. DateTime endMonthDay = DateUtil.endOfMonth(DateUtil.parse(dateStr));
  46. // 筛选条件数据
  47. resultData.setSelectData(sysCustomerDataFollowService.queryCustomerOrderSelectData(0, true,startMonthDay,endMonthDay));
  48. //如果是 yyyy-MM 格式,则需要重新设置为当月开始时间和结束时间
  49. DateTime startDateTime = DateUtil.beginOfDay(DateUtil.parseDate(dateStr));
  50. DateTime endDateTime = DateUtil.endOfDay(DateUtil.parseDate(dateStr));
  51. //如果是 yyyy-MM-dd 格式,则需要重新设置为当天开始时间和结束时间
  52. // if (dateStr.length() == 10) {
  53. // //当天开始时间
  54. // startDateTime = DateUtil.beginOfDay(DateUtil.parseDate(dateStr));
  55. // //当天结束时间
  56. // endDateTime = DateUtil.endOfDay(DateUtil.parseDate(dateStr));
  57. // }
  58. //数据列表
  59. resultData.setDataList(
  60. sysCustomerDataFollowService.queryCustomerFollowOrderData(DateUtil.toLocalDateTime(startDateTime),
  61. DateUtil.toLocalDateTime(endDateTime), dto.getUserId(), dto.getOrderStatus(),
  62. dto.getQueryStr(), 0));
  63. //查询数据
  64. List<SysCustomerFollowEntity> listData =
  65. sysCustomerFollowMapper.selectList(
  66. new LambdaQueryWrapper<>(SysCustomerFollowEntity.class)
  67. .select(
  68. SysCustomerFollowEntity::getId,
  69. SysCustomerFollowEntity::getOrderDatetime,
  70. SysCustomerFollowEntity::getOrderStatus,
  71. SysCustomerFollowEntity::getSuccessStatus,
  72. SysCustomerFollowEntity::getClaimDatetime
  73. )
  74. .ge(SysCustomerFollowEntity::getOrderDatetime, startMonthDay)
  75. .le(SysCustomerFollowEntity::getOrderDatetime, endMonthDay)
  76. .eq(SysCustomerFollowEntity::getFollowId,33) //只查询方案演示
  77. .eq(SysCustomerFollowEntity::getOrderType, 0)
  78. );
  79. if (CollUtil.isNotEmpty(listData)) {
  80. //月待开始时间
  81. resultData.setStatus0Count(
  82. listData.stream()
  83. .filter(x -> x.getOrderStatus() == 0)
  84. .toList().size());
  85. //月已结束时间
  86. resultData.setStatus1Count(
  87. listData.stream()
  88. .filter(x -> x.getOrderStatus() == 1)
  89. .toList().size());
  90. //月已取消时间
  91. resultData.setStatus2Count(
  92. listData.stream()
  93. .filter(x -> x.getOrderStatus() == 2)
  94. .toList().size());
  95. //总条数
  96. resultData.setTotalCount(listData.size());
  97. }
  98. //日期列表
  99. List<SysCustomerFollowOrderDetailBO> dateList = Lists.newArrayList();
  100. List<DateTime> dateTimes = DateUtil.rangeToList(startMonthDay, endMonthDay, DateField.DAY_OF_MONTH);
  101. dateTimes.forEach(e -> {
  102. SysCustomerFollowOrderDetailBO detailBO = SysCustomerFollowOrderDetailBO.builder()
  103. .day(DateUtil.format(e, "yyyy-MM-dd"))
  104. .status(0)
  105. .dayOfMonth(String.valueOf(DateUtil.dayOfMonth(e)))
  106. .build();
  107. if (CollUtil.isNotEmpty(listData)) {
  108. //当天开始时间
  109. DateTime startDateTime1 = DateUtil.beginOfDay(e);
  110. //当天结束时间
  111. DateTime endDateTime1 = DateUtil.endOfDay(e);
  112. int size =
  113. listData.stream()
  114. .filter(x -> !x.getOrderDatetime().isBefore(DateUtil.toLocalDateTime(startDateTime1))
  115. && !x.getOrderDatetime().isAfter(DateUtil.toLocalDateTime(endDateTime1)))
  116. .toList().size();
  117. if (size > 0) {
  118. detailBO.setStatus(1);
  119. }
  120. }
  121. dateList.add(detailBO);
  122. });
  123. resultData.setDateList(dateList);
  124. return resultData;
  125. }
  126. }