ShipmentSearch.java
package com.tradecloud.dto.shipment;
import com.tradecloud.domain.base.utils.DateRange;
import com.tradecloud.domain.base.utils.ObjectUtil;
import com.tradecloud.domain.dms.DocumentGroupState;
import com.tradecloud.domain.dms.DocumentType;
import com.tradecloud.domain.document.DocumentState;
import com.tradecloud.domain.dto.base.SearchBase;
import com.tradecloud.domain.event.ShipmentEventType;
import com.tradecloud.domain.model.organisationalunit.OrganisationalUnit;
import com.tradecloud.domain.model.shipment.RequiredType;
import com.tradecloud.domain.model.shipment.ShipmentState;
import com.tradecloud.domain.model.shipment.ShippingMode;
import com.tradecloud.domain.party.Employee;
import com.tradecloud.domain.party.ServiceProvider;
import com.tradecloud.domain.place.FinalDestination;
import com.tradecloud.domain.place.PlaceOfDischarge;
import com.tradecloud.domain.place.PlaceOfLoading;
import com.tradecloud.domain.sars.Status;
import com.tradecloud.domain.supplier.OrganisationalUnitSupplier;
import com.tradecloud.dto.api.order.DateCalculationType;
import lombok.Getter;
import lombok.Setter;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
import java.io.Serializable;
import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
@Getter
@Setter
@Component
@Scope("view")
public class ShipmentSearch extends SearchBase implements Serializable {
private static final long serialVersionUID = 1L;
private final DateRange signedOffDateRange = new DateRange();
private String number;
private String reference;
private String billOfLadingReference;
private String masterAirwayBillNumber;
private ShipmentState state;
private List<ShipmentState> applicableStates;
private ShipmentEventType event;
private ShippingMode mode;
protected ShippingMode multiModalShippingMode;
private Date warehouseDeliveryDateFrom;
private Date warehouseDeliveryDateTo;
private Date createdDateFrom;
private Date createdDateTo;
private Date billOfLadingDateFrom;
private Date masterBillOfLadingDateFrom;
private Date shipmentCreatedFrom;
private Date billOfLadingDateTo;
private Date estimateArrivalDateAtPODFrom;
private Date estimateArrivalDateAtPODTo;
private DateRange MasterAirwayBillIssueDate;
private String masterBillOfLadingReference;
private Employee Buyer;
private OrganisationalUnit organisationalUnit;
private String order;
private List<OrganisationalUnit> organisationalUnitList;
private RequiredType[] selectedRequiredTypes;
private OrganisationalUnit[] selectedOrganisationalUnits;
private DocumentState[] selectedCiStates;
private ShipmentState[] selectedStates;
private OrganisationalUnitSupplier supplier;
// Both 'vesselName' and 'voyageNumber' pertain to SeaShipment as the entity class in a Criteria search.
// See ShipmentRepositoryImpl search(ShipmentSearch search) method
private String vesselName;
private String voyageNumber;
// Both 'airlineName' and 'flightNumber' pertain to AirShipment as the entity class in a Criteria search.
// See ShipmentRepositoryImpl search(ShipmentSearch search) method
private String airlineName;
private String flightNumber;
private ServiceProvider freightForwarder;
private ServiceProvider clearingAgent;
private ServiceProvider carrier;
private FinalDestination containerFinalDestination;
private PlaceOfDischarge placeOfDischarge;
private PlaceOfLoading placeOfLoading;
private ServiceProvider shippingLine;
private String containerReference;
private DocumentGroupState documentGroupState;
private DateRange vesselBerthedDate = new DateRange();
private DateRange scheduledDepartureDate = new DateRange();
private DateRange actualDateOfDeparture = new DateRange();
private DateRange actualArrivalDateAtPOD = new DateRange();
private String itemReference;
private String itemDescription;
private String subShipmentReference;
private String houseWayBillNumber;
private DateRange houseWayBillDate;
private DateRange masterAirwayBillIssueDate;
private DateRange settlementDate;
private List<DocumentState> commercialInvoicingStates;
private List<DocumentState> serviceProviderInvoicingStates;
private Date signedOffDateFrom;
private Date signedOffDateTo;
private String SARSReferenceNumber;
private boolean canAffectCustomsDeclaration;
private boolean hasClearingInstructions;
private boolean hasCustomsDeclaration;
private boolean hasCommercialInvoices;
private TimeUnit timeUnit;
private DateCalculationType dateCalculationType;
private OrganisationalUnit[] organisationalUnits;
private ShippingMode shippingMode;
private Status[] selectedClearingStatus = new Status[]{};
private DocumentType documentType;
private DateRange grvDateRange = new DateRange();
private boolean noConsignmentLinked = false;
private String shippingReference;
private DateRange shippedOnBoardDate = new DateRange();
private boolean orderActualCostingReceipt;
public void setOrganisationalUnit2(OrganisationalUnit organisationalUnit) {
setOrganisationalUnit(organisationalUnit);
}
@Override
public String getTableName() {
return "shipment";
}
/**
* @return the freightForwarder
*/
public ServiceProvider getFreightForwarder() {
return freightForwarder;
}
/**
* @param freightForwarder the freightForwarder to set
*/
public void setFreightForwarder(ServiceProvider freightForwarder) {
this.freightForwarder = freightForwarder;
}
public ServiceProvider getShippingLine() {
return shippingLine;
}
public void setShippingLine(ServiceProvider shippingLine) {
this.shippingLine = shippingLine;
}
public PlaceOfLoading getPlaceOfLoading() {
return placeOfLoading;
}
public void setPlaceOfLoading(PlaceOfLoading placeOfLoading) {
this.placeOfLoading = placeOfLoading;
}
public String getContainerReference() {
return containerReference;
}
public void setContainerReference(String containerReference) {
this.containerReference = containerReference;
}
public DateRange getSignedOffDateRange() {
return signedOffDateRange;
}
public String getMasterBillOfLadingReference() {
return masterBillOfLadingReference;
}
public void setMasterBillOfLadingReference(String masterBillOfLadingReference) {
this.masterBillOfLadingReference = masterBillOfLadingReference;
}
public String getOrder() {
return order;
}
public void setOrder(String order) {
this.order = order;
}
public List<ShipmentState> getApplicableStates() {
return applicableStates;
}
public void setApplicableStates(List<ShipmentState> applicableStates) {
this.applicableStates = applicableStates;
}
public OrganisationalUnit getOrganisationalUnit() {
return organisationalUnit;
}
public void setOrganisationalUnit(OrganisationalUnit organisationalUnit) {
this.organisationalUnit = organisationalUnit;
}
public OrganisationalUnitSupplier getSupplier() {
return supplier;
}
public void setSupplier(OrganisationalUnitSupplier supplier) {
this.supplier = supplier;
}
public DocumentGroupState getDocumentGroupState() {
return documentGroupState;
}
public void setDocumentGroupState(DocumentGroupState documentGroupState) {
this.documentGroupState = documentGroupState;
}
public Date getBillOfLadingDateFrom() {
return billOfLadingDateFrom;
}
public void setBillOfLadingDateFrom(Date billOfLadingDateFrom) {
this.billOfLadingDateFrom = billOfLadingDateFrom;
}
public Date getMasterBillOfLadingDateFrom() {
return masterBillOfLadingDateFrom;
}
public void setMasterBillOfLadingDateFrom(Date masterBillOfLadingDateFrom) {
this.masterBillOfLadingDateFrom = masterBillOfLadingDateFrom;
}
public Date getShipmentCreatedFrom() {
return shipmentCreatedFrom;
}
public void setShipmentCreatedFrom(Date shipmentCreatedFrom) {
this.shipmentCreatedFrom = shipmentCreatedFrom;
}
public Date getBillOfLadingDateTo() {
return billOfLadingDateTo;
}
public void setBillOfLadingDateTo(Date billOfLadingDateTo) {
this.billOfLadingDateTo = billOfLadingDateTo;
}
public Date getEstimateArrivalDateAtPODFrom() {
return estimateArrivalDateAtPODFrom;
}
public void setEstimateArrivalDateAtPODFrom(Date estimateArrivalDateAtPODFrom) {
this.estimateArrivalDateAtPODFrom = estimateArrivalDateAtPODFrom;
}
public Date getEstimateArrivalDateAtPODTo() {
return estimateArrivalDateAtPODTo;
}
public void setEstimateArrivalDateAtPODTo(Date estimateArrivalDateAtPODTo) {
this.estimateArrivalDateAtPODTo = estimateArrivalDateAtPODTo;
}
public List<OrganisationalUnit> getOrganisationalUnitList() {
return organisationalUnitList;
}
public void setOrganisationalUnitList(List<OrganisationalUnit> organisationalUnitList) {
this.organisationalUnitList = organisationalUnitList;
}
public ServiceProvider getClearingAgent() {
return clearingAgent;
}
public void setClearingAgent(ServiceProvider clearingAgent) {
this.clearingAgent = clearingAgent;
}
public ServiceProvider getCarrier() {
return carrier;
}
public void setCarrier(ServiceProvider carrier) {
this.carrier = carrier;
}
public FinalDestination getContainerFinalDestination() {
return containerFinalDestination;
}
public void setContainerFinalDestination(FinalDestination containerFinalDestination) {
this.containerFinalDestination = containerFinalDestination;
}
public DateRange getVesselBerthedDate() {
return vesselBerthedDate;
}
public void setVesselBerthedDate(DateRange vesselBerthedDate) {
this.vesselBerthedDate = vesselBerthedDate;
}
public DateRange getScheduledDepartureDate() {
return scheduledDepartureDate;
}
public void setScheduledDepartureDate(DateRange scheduledDepartureDate) {
this.scheduledDepartureDate = scheduledDepartureDate;
}
public DateRange getActualDateOfDeparture() {
return actualDateOfDeparture;
}
public void setActualDateOfDeparture(DateRange actualDateOfDeparture) {
this.actualDateOfDeparture = actualDateOfDeparture;
}
public DateRange getActualArrivalDateAtPOD() {
return actualArrivalDateAtPOD;
}
public void setActualArrivalDateAtPOD(DateRange actualArrivalDateAtPOD) {
this.actualArrivalDateAtPOD = actualArrivalDateAtPOD;
}
public String getItemReference() {
return itemReference;
}
public void setItemReference(String itemReference) {
this.itemReference = itemReference;
}
public String getItemDescription() {
return itemDescription;
}
public void setItemDescription(String itemDescription) {
this.itemDescription = itemDescription;
}
public String getSubShipmentReference() {
return subShipmentReference;
}
public void setSubShipmentReference(String subShipmentReference) {
this.subShipmentReference = subShipmentReference;
}
public String getHouseWayBillNumber() {
return houseWayBillNumber;
}
public void setHouseWayBillNumber(String houseWayBillNumber) {
this.houseWayBillNumber = houseWayBillNumber;
}
public DateRange getHouseWayBillDate() {
return houseWayBillDate;
}
public void setHouseWayBillDate(DateRange houseWayBillDate) {
this.houseWayBillDate = houseWayBillDate;
}
public DateRange getMasterAirwayBillIssueDate() {
return MasterAirwayBillIssueDate;
}
public void setMasterAirwayBillIssueDate(DateRange masterAirwayBillIssueDate) {
this.MasterAirwayBillIssueDate = masterAirwayBillIssueDate;
}
public DateRange getSettlementDate() {
return settlementDate;
}
public void setSettlementDate(DateRange settlementDate) {
this.settlementDate = settlementDate;
}
@Override
public boolean noSelectedOrgUnit() {
return ObjectUtil.allNull(organisationalUnit, organisationalUnitList);
}
public List<DocumentState> getCommercialInvoicingStates() {
return commercialInvoicingStates;
}
public void setCommercialInvoicingStates(List<DocumentState> commercialInvoicingStates) {
this.commercialInvoicingStates = commercialInvoicingStates;
}
public List<DocumentState> getServiceProviderInvoicingStates() {
return serviceProviderInvoicingStates;
}
public void setServiceProviderInvoicingStates(List<DocumentState> serviceProviderInvoicingStates) {
this.serviceProviderInvoicingStates = serviceProviderInvoicingStates;
}
public Date getSignedOffDateFrom() {
return signedOffDateFrom;
}
public void setSignedOffDateFrom(Date signedOffDateFrom) {
this.signedOffDateFrom = signedOffDateFrom;
}
public Date getSignedOffDateTo() {
return signedOffDateTo;
}
public void setSignedOffDateTo(Date signedOffDateTo) {
this.signedOffDateTo = signedOffDateTo;
}
public String getSARSReferenceNumber() {
return SARSReferenceNumber;
}
public void setSARSReferenceNumber(String SARSReferenceNumber) {
this.SARSReferenceNumber = SARSReferenceNumber;
}
public boolean isCanAffectCustomsDeclaration() {
return canAffectCustomsDeclaration;
}
public void setCanAffectCustomsDeclaration(boolean canAffectCustomsDeclaration) {
this.canAffectCustomsDeclaration = canAffectCustomsDeclaration;
}
public TimeUnit getTimeUnit() {
return timeUnit;
}
public void setTimeUnit(TimeUnit timeUnit) {
this.timeUnit = timeUnit;
}
public DateCalculationType getDateCalculationType() {
return dateCalculationType;
}
public void setDateCalculationType(DateCalculationType dateCalculationType) {
this.dateCalculationType = dateCalculationType;
}
public OrganisationalUnit[] getOrganisationalUnits() {
return organisationalUnits;
}
public void setOrganisationalUnits(OrganisationalUnit[] organisationalUnits) {
this.organisationalUnits = organisationalUnits;
}
public ShippingMode getShippingMode() {
return shippingMode;
}
public void setShippingMode(ShippingMode shippingMode) {
this.shippingMode = shippingMode;
}
public ShipmentState[] getSelectedStates() {
return selectedStates;
}
public void setSelectedStates(ShipmentState[] selectedStates) {
this.selectedStates = selectedStates;
}
public boolean isHasClearingInstructions() {
return hasClearingInstructions;
}
public void setHasClearingInstructions(boolean hasClearingInstructions) {
this.hasClearingInstructions = hasClearingInstructions;
}
public boolean isHasCustomsDeclaration() {
return hasCustomsDeclaration;
}
public void setHasCustomsDeclaration(boolean hasCustomsDeclaration) {
this.hasCustomsDeclaration = hasCustomsDeclaration;
}
public boolean isHasCommercialInvoices() {
return hasCommercialInvoices;
}
public void setHasCommercialInvoices(boolean hasCommercialInvoices) {
this.hasCommercialInvoices = hasCommercialInvoices;
}
public Status[] getSelectedClearingStatus() {
return selectedClearingStatus;
}
public void setSelectedClearingStatus(Status[] selectedClearingStatus) {
this.selectedClearingStatus = selectedClearingStatus;
}
public RequiredType[] getSelectedRequiredTypes() {
return selectedRequiredTypes;
}
public void setSelectedRequiredTypes(RequiredType[] selectedRequiredTypes) {
this.selectedRequiredTypes = selectedRequiredTypes;
}
public OrganisationalUnit[] getSelectedOrganisationalUnits() {
return selectedOrganisationalUnits;
}
public void setSelectedOrganisationalUnits(OrganisationalUnit[] selectedOrganisationalUnits) {
this.selectedOrganisationalUnits = selectedOrganisationalUnits;
}
public DocumentState[] getSelectedCiStates() {
return selectedCiStates;
}
public void setSelectedCiStates(DocumentState[] selectedCiStates) {
this.selectedCiStates = selectedCiStates;
}
public DocumentType getDocumentType() {
return documentType;
}
public void setDocumentType(DocumentType documentType) {
this.documentType = documentType;
}
public DateRange getGrvDateRange() {
return grvDateRange;
}
public void setGrvDateRange(DateRange grvDateRange) {
this.grvDateRange = grvDateRange;
}
public boolean isNoConsignmentLinked() {
return noConsignmentLinked;
}
public void setNoConsignmentLinked(boolean noConsignmentLinked) {
this.noConsignmentLinked = noConsignmentLinked;
}
public String getShippingReference() {
return shippingReference;
}
public void setShippingReference(String shippingReference) {
this.shippingReference = shippingReference;
}
@Override
public Collection<OrganisationalUnit> getOrganisationalUnits2() {
return organisationalUnitList;
}
@Override
public void setOrganisationalUnits2(List<OrganisationalUnit> organisationalUnits) {
this.organisationalUnitList = organisationalUnits;
}
@Override
public String toString() {
StringJoiner sj = new StringJoiner(", ", "ShipmentSearch{", "}");
addIfNotNull(sj, "signedOffDateRange", signedOffDateRange);
addIfNotBlank(sj, "number", number);
addIfNotBlank(sj, "reference", reference);
addIfNotBlank(sj, "billOfLadingReference", billOfLadingReference);
addIfNotBlank(sj, "masterAirwayBillNumber", masterAirwayBillNumber);
addIfNotNull(sj, "state", state);
addIfNotNull(sj, "applicableStates", applicableStates);
addIfNotNull(sj, "event", event);
addIfNotNull(sj, "mode", mode);
addIfNotNull(sj, "multiModalShippingMode", multiModalShippingMode);
addIfNotNull(sj, "warehouseDeliveryDateFrom", warehouseDeliveryDateFrom);
addIfNotNull(sj, "warehouseDeliveryDateTo", warehouseDeliveryDateTo);
addIfNotNull(sj, "createdDateFrom", createdDateFrom);
addIfNotNull(sj, "createdDateTo", createdDateTo);
addIfNotNull(sj, "buyer", Buyer != null ? Buyer.getFullName() : null);
addIfNotNull(sj, "supplier", supplier != null ? supplier.getName() : null);
addIfNotNull(sj, "freightForwarder", freightForwarder != null ? freightForwarder.getName() : null);
addIfNotNull(sj, "carrier", carrier != null ? carrier.getName() : null);
addIfNotEmpty(sj, "selectedRequiredTypes", selectedRequiredTypes);
addIfNotEmpty(sj, "selectedCiStates", selectedCiStates);
addIfNotEmpty(sj, "selectedStates", selectedStates);
addIfNotNull(sj, "vesselName", vesselName);
addIfNotNull(sj, "voyageNumber", voyageNumber);
addIfNotNull(sj, "flightNumber", flightNumber);
addIfNotNull(sj, "documentGroupState", documentGroupState);
addIfNotNull(sj, "settlementDate", settlementDate);
addIfNotNull(sj, "canAffectCustomsDeclaration", canAffectCustomsDeclaration);
addIfNotNull(sj, "hasClearingInstructions", hasClearingInstructions);
addIfNotNull(sj, "hasCustomsDeclaration", hasCustomsDeclaration);
if (organisationalUnitList != null && !organisationalUnitList.isEmpty()) {
sj.add("organisationalUnitList=" +
organisationalUnitList.stream()
.map(OrganisationalUnit::getName)
.collect(Collectors.joining(" : ")));
}
if (organisationalUnits != null && organisationalUnits.length > 0) {
sj.add("organisationalUnits=" +
Arrays.stream(organisationalUnits)
.map(OrganisationalUnit::getName)
.collect(Collectors.joining(" : ")));
}
return sj.toString();
}
public boolean isOrderActualCostingReceipt() {
return orderActualCostingReceipt;
}
public void setOrderActualCostingReceipt(boolean orderActualCostingReceipt) {
this.orderActualCostingReceipt = orderActualCostingReceipt;
}
}