| Line 396... |
Line 396... |
| 396 |
leads = leadRepository.selectAllByColorStatusAndUpdatedTimestampAndAuthIds(leadStatus, authUserIds, color, LocalDateTime.now().minusMonths(1));
|
396 |
leads = leadRepository.selectAllByColorStatusAndUpdatedTimestampAndAuthIds(leadStatus, authUserIds, color, LocalDateTime.now().minusMonths(1));
|
| 397 |
}
|
397 |
}
|
| 398 |
|
398 |
|
| 399 |
if (leadStatus.contains(LeadStatus.followUp) || leadStatus.contains(LeadStatus.All)) {
|
399 |
if (leadStatus.contains(LeadStatus.followUp) || leadStatus.contains(LeadStatus.All)) {
|
| 400 |
leadFollowUp = leadRepository.selectByAssignAuthIdsAndStatus(authUserIds, LeadStatus.followUp);
|
400 |
leadFollowUp = leadRepository.selectByAssignAuthIdsAndStatus(authUserIds, LeadStatus.followUp);
|
| 401 |
leads.addAll(leadFollowUp);
|
401 |
leads.addAll(withinCreatedRange(leadFollowUp, startDateTime, endDateTime));
|
| 402 |
}
|
402 |
}
|
| 403 |
|
403 |
|
| 404 |
} else {
|
404 |
} else {
|
| 405 |
|
405 |
|
| 406 |
if (!leadStatus.contains(LeadStatus.followUp)) {
|
406 |
if (!leadStatus.contains(LeadStatus.followUp)) {
|
| Line 409... |
Line 409... |
| 409 |
|
409 |
|
| 410 |
if (leadStatus.contains(LeadStatus.followUp) || leadStatus.contains(LeadStatus.All)) {
|
410 |
if (leadStatus.contains(LeadStatus.followUp) || leadStatus.contains(LeadStatus.All)) {
|
| 411 |
|
411 |
|
| 412 |
leadFollowUp = leadRepository.selectByAssignAuthIdsAndStatus(authUserIds, LeadStatus.followUp);
|
412 |
leadFollowUp = leadRepository.selectByAssignAuthIdsAndStatus(authUserIds, LeadStatus.followUp);
|
| 413 |
|
413 |
|
| 414 |
leads.addAll(leadFollowUp);
|
414 |
leads.addAll(withinCreatedRange(leadFollowUp, startDateTime, endDateTime));
|
| 415 |
|
415 |
|
| 416 |
}
|
416 |
}
|
| 417 |
|
417 |
|
| 418 |
}
|
418 |
}
|
| 419 |
|
419 |
|
| Line 426... |
Line 426... |
| 426 |
}
|
426 |
}
|
| 427 |
if (leadStatus.contains(LeadStatus.followUp) || leadStatus.contains(LeadStatus.All)) {
|
427 |
if (leadStatus.contains(LeadStatus.followUp) || leadStatus.contains(LeadStatus.All)) {
|
| 428 |
|
428 |
|
| 429 |
leadFollowUp = leadRepository.selectAllByStatus(LeadStatus.followUp);
|
429 |
leadFollowUp = leadRepository.selectAllByStatus(LeadStatus.followUp);
|
| 430 |
|
430 |
|
| 431 |
leads.addAll(leadFollowUp);
|
431 |
leads.addAll(withinCreatedRange(leadFollowUp, startDateTime, endDateTime));
|
| 432 |
}
|
432 |
}
|
| 433 |
LOGGER.info("leadlocalDateTime1" + leads);
|
433 |
LOGGER.info("leadlocalDateTime1" + leads);
|
| 434 |
|
434 |
|
| 435 |
} else {
|
435 |
} else {
|
| 436 |
if (!leadStatus.contains(LeadStatus.followUp)) {
|
436 |
if (!leadStatus.contains(LeadStatus.followUp)) {
|
| 437 |
leads = leadRepository.selectAllByColorStatusAndBetweenCreatedDate(leadStatus, color, startDateTime, endDateTime);
|
437 |
leads = leadRepository.selectAllByColorStatusAndBetweenCreatedDate(leadStatus, color, startDateTime, endDateTime);
|
| 438 |
}
|
438 |
}
|
| 439 |
|
439 |
|
| 440 |
if (leadStatus.contains(LeadStatus.followUp)) {
|
440 |
if (leadStatus.contains(LeadStatus.followUp) || leadStatus.contains(LeadStatus.All)) {
|
| 441 |
|
441 |
|
| 442 |
leadFollowUp = leadRepository.selectAllByStatus(LeadStatus.followUp);
|
442 |
leadFollowUp = leadRepository.selectAllByStatus(LeadStatus.followUp);
|
| 443 |
|
443 |
|
| 444 |
leads.addAll(leadFollowUp);
|
444 |
leads.addAll(withinCreatedRange(leadFollowUp, startDateTime, endDateTime));
|
| 445 |
}
|
445 |
}
|
| 446 |
LOGGER.info("leadlocalDateTime2" + leads);
|
446 |
LOGGER.info("leadlocalDateTime2" + leads);
|
| 447 |
|
447 |
|
| 448 |
}
|
448 |
}
|
| 449 |
|
449 |
|
| Line 685... |
Line 685... |
| 685 |
cm.setOptions(om);
|
685 |
cm.setOptions(om);
|
| 686 |
|
686 |
|
| 687 |
return cm;
|
687 |
return cm;
|
| 688 |
}
|
688 |
}
|
| 689 |
|
689 |
|
| - |
|
690 |
|
| - |
|
691 |
/**
|
| - |
|
692 |
* When the user has picked a date range, follow-up leads must respect it too; otherwise (no range)
|
| - |
|
693 |
* follow-ups stay undated, as before. Used by both the lead list and the CSV download so they agree.
|
| - |
|
694 |
*/
|
| - |
|
695 |
private static List<Lead> withinCreatedRange(List<Lead> leads, LocalDateTime start, LocalDateTime end) {
|
| - |
|
696 |
if (start == null) {
|
| - |
|
697 |
return leads;
|
| - |
|
698 |
}
|
| - |
|
699 |
return leads.stream()
|
| - |
|
700 |
.filter(l -> l.getCreatedTimestamp() != null
|
| - |
|
701 |
&& !l.getCreatedTimestamp().isBefore(start)
|
| - |
|
702 |
&& (end == null || !l.getCreatedTimestamp().isAfter(end)))
|
| - |
|
703 |
.collect(Collectors.toList());
|
| - |
|
704 |
}
|
| - |
|
705 |
|
| 690 |
@RequestMapping(value = "/downloadDateWiseLead", method = RequestMethod.GET)
|
706 |
@RequestMapping(value = "/downloadDateWiseLead", method = RequestMethod.GET)
|
| 691 |
public ResponseEntity<?> getdownloadLeadDataByDate(HttpServletRequest request,
|
707 |
public ResponseEntity<?> getdownloadLeadDataByDate(HttpServletRequest request,
|
| 692 |
@RequestParam(name = "leadStatus", required = false, defaultValue = "All") List<LeadStatus> leadStatus,
|
708 |
@RequestParam(name = "leadStatus", required = false, defaultValue = "All") List<LeadStatus> leadStatus,
|
| 693 |
@RequestParam(name = "color", required = false, defaultValue = "All") List<String> color,
|
709 |
@RequestParam(name = "color", required = false, defaultValue = "All") List<String> color,
|
| 694 |
@RequestParam(name = "startDate", required = false) LocalDate startDate,
|
710 |
@RequestParam(name = "startDate", required = false) LocalDate startDate,
|
| Line 727... |
Line 743... |
| 727 |
if (!leadStatus.contains(LeadStatus.followUp)) {
|
743 |
if (!leadStatus.contains(LeadStatus.followUp)) {
|
| 728 |
leads = leadRepository.selectAllByColorStatusAndUpdatedTimestampAndAuthIds(leadStatus, authUserIds, color, LocalDateTime.now().minusMonths(1));
|
744 |
leads = leadRepository.selectAllByColorStatusAndUpdatedTimestampAndAuthIds(leadStatus, authUserIds, color, LocalDateTime.now().minusMonths(1));
|
| 729 |
}
|
745 |
}
|
| 730 |
if (leadStatus.contains(LeadStatus.followUp) || leadStatus.contains(LeadStatus.All)) {
|
746 |
if (leadStatus.contains(LeadStatus.followUp) || leadStatus.contains(LeadStatus.All)) {
|
| 731 |
leadFollowUp = leadRepository.selectByAssignAuthIdsAndStatus(authUserIds, LeadStatus.followUp);
|
747 |
leadFollowUp = leadRepository.selectByAssignAuthIdsAndStatus(authUserIds, LeadStatus.followUp);
|
| 732 |
leads.addAll(leadFollowUp);
|
748 |
leads.addAll(withinCreatedRange(leadFollowUp, startDateTime, endDateTime));
|
| 733 |
}
|
749 |
}
|
| 734 |
} else {
|
750 |
} else {
|
| 735 |
// Date range: non-follow-up statuses created within [start, end], PLUS all follow-ups
|
751 |
// Date range: non-follow-up statuses created within [start, end], PLUS all follow-ups
|
| 736 |
// (undated) — mirrors the on-screen view so the CSV matches what the user sees.
|
752 |
// (undated) — mirrors the on-screen view so the CSV matches what the user sees.
|
| 737 |
if (!leadStatus.contains(LeadStatus.followUp)) {
|
753 |
if (!leadStatus.contains(LeadStatus.followUp)) {
|
| 738 |
leads = leadRepository.selectAllByColorStatusAndBetweenCreatedDateAndAuthIds(leadStatus, authUserIds, color, startDateTime, endDateTime);
|
754 |
leads = leadRepository.selectAllByColorStatusAndBetweenCreatedDateAndAuthIds(leadStatus, authUserIds, color, startDateTime, endDateTime);
|
| 739 |
}
|
755 |
}
|
| 740 |
if (leadStatus.contains(LeadStatus.followUp) || leadStatus.contains(LeadStatus.All)) {
|
756 |
if (leadStatus.contains(LeadStatus.followUp) || leadStatus.contains(LeadStatus.All)) {
|
| 741 |
leadFollowUp = leadRepository.selectByAssignAuthIdsAndStatus(authUserIds, LeadStatus.followUp);
|
757 |
leadFollowUp = leadRepository.selectByAssignAuthIdsAndStatus(authUserIds, LeadStatus.followUp);
|
| 742 |
leads.addAll(leadFollowUp);
|
758 |
leads.addAll(withinCreatedRange(leadFollowUp, startDateTime, endDateTime));
|
| 743 |
}
|
759 |
}
|
| 744 |
}
|
760 |
}
|
| 745 |
} else {
|
761 |
} else {
|
| 746 |
if (startDateTime == null) {
|
762 |
if (startDateTime == null) {
|
| 747 |
if (!leadStatus.contains(LeadStatus.followUp)) {
|
763 |
if (!leadStatus.contains(LeadStatus.followUp)) {
|
| 748 |
leads = leadRepository.selectAllByColorStatusAndUpdatedTimestamp(leadStatus, color, LocalDateTime.now().minusMonths(1));
|
764 |
leads = leadRepository.selectAllByColorStatusAndUpdatedTimestamp(leadStatus, color, LocalDateTime.now().minusMonths(1));
|
| 749 |
}
|
765 |
}
|
| 750 |
if (leadStatus.contains(LeadStatus.followUp) || leadStatus.contains(LeadStatus.All)) {
|
766 |
if (leadStatus.contains(LeadStatus.followUp) || leadStatus.contains(LeadStatus.All)) {
|
| 751 |
leadFollowUp = leadRepository.selectAllByStatus(LeadStatus.followUp);
|
767 |
leadFollowUp = leadRepository.selectAllByStatus(LeadStatus.followUp);
|
| 752 |
leads.addAll(leadFollowUp);
|
768 |
leads.addAll(withinCreatedRange(leadFollowUp, startDateTime, endDateTime));
|
| 753 |
}
|
769 |
}
|
| 754 |
} else {
|
770 |
} else {
|
| 755 |
// Date range: non-follow-up statuses created within [start, end], PLUS all follow-ups
|
771 |
// Date range: non-follow-up statuses created within [start, end], PLUS all follow-ups
|
| 756 |
// (undated) — mirrors the on-screen view.
|
772 |
// (undated) — mirrors the on-screen view.
|
| 757 |
if (!leadStatus.contains(LeadStatus.followUp)) {
|
773 |
if (!leadStatus.contains(LeadStatus.followUp)) {
|
| 758 |
leads = leadRepository.selectAllByColorStatusAndBetweenCreatedDate(leadStatus, color, startDateTime, endDateTime);
|
774 |
leads = leadRepository.selectAllByColorStatusAndBetweenCreatedDate(leadStatus, color, startDateTime, endDateTime);
|
| 759 |
}
|
775 |
}
|
| 760 |
if (leadStatus.contains(LeadStatus.followUp) || leadStatus.contains(LeadStatus.All)) {
|
776 |
if (leadStatus.contains(LeadStatus.followUp) || leadStatus.contains(LeadStatus.All)) {
|
| 761 |
leadFollowUp = leadRepository.selectAllByStatus(LeadStatus.followUp);
|
777 |
leadFollowUp = leadRepository.selectAllByStatus(LeadStatus.followUp);
|
| 762 |
leads.addAll(leadFollowUp);
|
778 |
leads.addAll(withinCreatedRange(leadFollowUp, startDateTime, endDateTime));
|
| 763 |
}
|
779 |
}
|
| 764 |
}
|
780 |
}
|
| 765 |
}
|
781 |
}
|
| 766 |
|
782 |
|
| 767 |
// Build activity map and auth map (SAME AS VIEW ENDPOINT)
|
783 |
// Build activity map and auth map (SAME AS VIEW ENDPOINT)
|