Skip to content

Commit

Permalink
ProductsToPickView: order by locator (as it was) but also have it as …
Browse files Browse the repository at this point in the history
…a order by clause

in that way we will get an ordering indicator near the view column

metasfresh/metasfresh#4967
  • Loading branch information
teosarca committed Feb 21, 2019
1 parent 16402da commit 3540678
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import java.math.BigDecimal;
import java.util.Collection;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.Set;
Expand All @@ -24,10 +25,14 @@
import de.metas.ui.web.window.datatypes.DocumentId;
import de.metas.ui.web.window.datatypes.DocumentIdsSelection;
import de.metas.ui.web.window.datatypes.json.JSONDocumentChangedEvent;
import de.metas.ui.web.window.model.DocumentQueryOrderBy;
import de.metas.ui.web.window.model.DocumentQueryOrderBys;
import de.metas.util.Check;
import de.metas.util.GuavaCollectors;
import lombok.Builder;
import lombok.Getter;
import lombok.NonNull;
import lombok.Singular;

/*
* #%L
Expand Down Expand Up @@ -55,18 +60,23 @@ class ProductsToPickRowsData implements IEditableRowsData<ProductsToPickRow>
{
private final PickingCandidateService pickingCandidateService;

@Getter
private final ImmutableList<DocumentQueryOrderBy> orderBys;
private final ImmutableList<DocumentId> rowIdsOrdered;
private final ConcurrentHashMap<DocumentId, ProductsToPickRow> _rowsById;
private volatile boolean rowIdsInvalid;

@Builder
private ProductsToPickRowsData(
@NonNull final PickingCandidateService pickingCandidateService,
@NonNull final List<ProductsToPickRow> rows)
@NonNull final List<ProductsToPickRow> rows,
@NonNull @Singular final ImmutableList<DocumentQueryOrderBy> orderBys)
{
this.pickingCandidateService = pickingCandidateService;

this.orderBys = orderBys;
rowIdsOrdered = rows.stream()
.sorted(createComparator(orderBys))
.map(ProductsToPickRow::getId)
.distinct()
.collect(ImmutableList.toImmutableList());
Expand All @@ -77,6 +87,12 @@ private ProductsToPickRowsData(
rowIdsInvalid = false;
}

private static Comparator<ProductsToPickRow> createComparator(final List<DocumentQueryOrderBy> orderBys)
{
return DocumentQueryOrderBys.<ProductsToPickRow> asComparator(orderBys)
.thenComparing(ProductsToPickRow::getShipmentScheduleId);
}

private synchronized Map<DocumentId, ProductsToPickRow> getRowsById()
{
if (rowIdsInvalid)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
Expand Down Expand Up @@ -52,6 +51,7 @@
import de.metas.ui.web.order.sales.hu.reservation.HUReservationDocumentFilterService;
import de.metas.ui.web.pickingV2.packageable.PackageableRow;
import de.metas.ui.web.window.datatypes.LookupValue;
import de.metas.ui.web.window.model.DocumentQueryOrderBy;
import de.metas.ui.web.window.model.lookup.LookupDataSource;
import de.metas.ui.web.window.model.lookup.LookupDataSourceFactory;
import de.metas.util.Services;
Expand Down Expand Up @@ -130,13 +130,13 @@ public ProductsToPickRowsData create(final PackageableRow packageableRow)
{
final ImmutableList<ProductsToPickRow> rows = packageableRow.getPackageables()
.stream()
.sorted(Comparator.comparing(Packageable::getShipmentScheduleId))
.flatMap(this::createRowsAndStream)
.collect(ImmutableList.toImmutableList());

return ProductsToPickRowsData.builder()
.pickingCandidateService(pickingCandidateService)
.rows(rows)
.orderBy(DocumentQueryOrderBy.byFieldName(ProductsToPickRow.FIELD_Locator))
.build();
}

Expand All @@ -148,8 +148,6 @@ private Stream<ProductsToPickRow> createRowsAndStream(final Packageable packagea
rows.addAll(createRowsFromExistingPickingCandidates(allocablePackageable));
rows.addAll(createRowsFromHUs(allocablePackageable));

Collections.sort(rows, Comparator.comparing(ProductsToPickRow::getLocatorName));

if (!allocablePackageable.isAllocated())
{
rows.add(createQtyNotAvailableRow(allocablePackageable));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
import de.metas.ui.web.window.datatypes.DocumentId;
import de.metas.ui.web.window.datatypes.DocumentIdsSelection;
import de.metas.ui.web.window.datatypes.LookupValuesList;
import de.metas.ui.web.window.model.DocumentQueryOrderBy;
import lombok.Builder;
import lombok.NonNull;
import lombok.Singular;
Expand Down Expand Up @@ -64,6 +65,12 @@ private ProductsToPickView(
this.relatedProcessDescriptors = relatedProcessDescriptors;
}

@Override
public List<DocumentQueryOrderBy> getDefaultOrderBys()
{
return rowsData.getOrderBys();
}

@Override
public boolean isAllowClosingPerUserRequest()
{
Expand Down

0 comments on commit 3540678

Please sign in to comment.