package com.qcadoo.mes.materialFlowResources;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.qcadoo.mes.materialFlowResources.constants.DocumentFields;
import com.qcadoo.mes.materialFlowResources.constants.LocationFieldsMFR;
import com.qcadoo.mes.materialFlowResources.constants.MaterialFlowResourcesConstants;
import com.qcadoo.mes.materialFlowResources.constants.WarehouseAlgorithm;
import com.qcadoo.model.api.DataDefinitionService;
import com.qcadoo.model.api.Entity;
@Service
public class WarehouseMethodOfDisposalService {
@Autowired
private DataDefinitionService dataDefinitionService;
public String getSqlConditionForResourceLookup(final Long documentId) {
Entity document = dataDefinitionService
.get(MaterialFlowResourcesConstants.PLUGIN_IDENTIFIER, MaterialFlowResourcesConstants.MODEL_DOCUMENT)
.get(documentId);
String alg = document.getBelongsToField(DocumentFields.LOCATION_FROM).getStringField(LocationFieldsMFR.ALGORITHM);
WarehouseAlgorithm algorithm = WarehouseAlgorithm.parseString(alg);
switch (algorithm) {
case FEFO:
return " expirationdate = (select min(expirationdate) from materialflowresources_resource ";
case FIFO:
return " time = (select min(time) from materialflowresources_resource ";
case LEFO:
return " expirationdate = (select max(expirationdate) from materialflowresources_resource ";
case LIFO:
return " time = (select max(time) from materialflowresources_resource ";
}
return " expirationdate = (select min(expirationdate) from materialflowresources_resource ";
}
public String getSqlConditionForResource(final Long documentId) {
Entity document = dataDefinitionService
.get(MaterialFlowResourcesConstants.PLUGIN_IDENTIFIER, MaterialFlowResourcesConstants.MODEL_DOCUMENT)
.get(documentId);
String alg = document.getBelongsToField(DocumentFields.LOCATION_FROM).getStringField(LocationFieldsMFR.ALGORITHM);
WarehouseAlgorithm algorithm = WarehouseAlgorithm.parseString(alg);
switch (algorithm) {
case FEFO:
return " select min(expirationdate) from materialflowresources_resource ";
case FIFO:
return " select min(time) from materialflowresources_resource ";
case LEFO:
return " select max(expirationdate) from materialflowresources_resource ";
case LIFO:
return " select max(time) from materialflowresources_resource ";
}
return " select min(expirationdate) from materialflowresources_resource ";
}
public String getSqlOrderByForResource(final Long documentId) {
Entity document = dataDefinitionService
.get(MaterialFlowResourcesConstants.PLUGIN_IDENTIFIER, MaterialFlowResourcesConstants.MODEL_DOCUMENT)
.get(documentId);
String alg = document.getBelongsToField(DocumentFields.LOCATION_FROM).getStringField(LocationFieldsMFR.ALGORITHM);
WarehouseAlgorithm algorithm = WarehouseAlgorithm.parseString(alg);
switch (algorithm) {
case FEFO:
return " order by expirationdate asc ";
case FIFO:
return " order by time asc ";
case LEFO:
return " order by expirationdate desc ";
case LIFO:
return " order by time desc ";
}
return " order by expirationdate asc ";
}
}