| Line 504... |
Line 504... |
| 504 |
// was a visit-request action (create / reject / reassign / cancel)
|
504 |
// was a visit-request action (create / reject / reassign / cancel)
|
| 505 |
// that doesn't set schedule_timestamp. Result: most assigned leads
|
505 |
// that doesn't set schedule_timestamp. Result: most assigned leads
|
| 506 |
// disappeared from the mobile "All Leads → Follow Up" tab.
|
506 |
// disappeared from the mobile "All Leads → Follow Up" tab.
|
| 507 |
leads = leadRepository.selectByAssignAuthIdsAndStatus(visibleAuthIds, LeadStatus.followUp);
|
507 |
leads = leadRepository.selectByAssignAuthIdsAndStatus(visibleAuthIds, LeadStatus.followUp);
|
| 508 |
|
508 |
|
| - |
|
509 |
// Hydrate Lead.scheduledTimestamp for the card date + sort order.
|
| - |
|
510 |
// One batched lookup: lead_id → latest non-null schedule_timestamp.
|
| - |
|
511 |
// Leads with no scheduled activity get null (still shown, just no date).
|
| - |
|
512 |
if (leads != null && !leads.isEmpty()) {
|
| - |
|
513 |
List<Integer> leadIds = leads.stream().map(Lead::getId).collect(Collectors.toList());
|
| - |
|
514 |
Map<Integer, LocalDateTime> scheduleByLead =
|
| - |
|
515 |
leadActivityRepository.latestScheduleTimestampByLeadIds(leadIds);
|
| - |
|
516 |
leads.forEach(l -> l.setScheduledTimestamp(scheduleByLead.get(l.getId())));
|
| - |
|
517 |
}
|
| - |
|
518 |
|
| 509 |
if (visitRequestMap != null) {
|
519 |
if (visitRequestMap != null) {
|
| 510 |
for (Lead lead : leads) {
|
520 |
for (Lead lead : leads) {
|
| 511 |
List<VisitRequest> visitRequest = visitRequestMap.get(lead.getId());
|
521 |
List<VisitRequest> visitRequest = visitRequestMap.get(lead.getId());
|
| 512 |
|
522 |
|
| 513 |
if (visitRequest != null) {
|
523 |
if (visitRequest != null) {
|