package com.ese.transform;
import com.ese.model.StatusValue;
import com.ese.model.db.PalletModel;
import com.ese.model.view.PalletManagementView;
import com.ese.model.view.report.PalletListReport;
import com.ese.model.view.report.PalletManagemengModelReport;
import com.ese.model.view.report.PalletManagementViewReport;
import com.ese.utils.AttributeName;
import com.ese.utils.FacesUtil;
import com.ese.utils.Utils;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@Component
@Transactional
public class PalletManagementTransform extends Transform {
public List<PalletManagementView> tranformToViewList(List<PalletModel> palletModelList){
List<PalletManagementView> palletMeanegementViewList = new ArrayList<PalletManagementView>();
for (PalletModel model : palletModelList){
PalletManagementView palletMeanegementView = tranformToView(model);
palletMeanegementViewList.add(palletMeanegementView);
}
return palletMeanegementViewList;
}
private PalletManagementView tranformToView(PalletModel palletModel){
int staffModel = (int) FacesUtil.getSession(false).getAttribute(AttributeName.STAFF.getName());
PalletManagementView palletMeanegementView = new PalletManagementView();
palletMeanegementView.setId(palletModel.getId());
palletMeanegementView.setPalletBarcode(palletModel.getPalletBarcode());
palletMeanegementView.setWarehouseModel(palletModel.getMsWarehouseModel());
palletMeanegementView.setItemModel(palletModel.getMsItemModel());
palletMeanegementView.setLocationModel(palletModel.getMsLocationModel());
if(Utils.isNull(palletModel.getTagPrint())){
palletMeanegementView.setTagPrint(0);
} else {
palletMeanegementView.setTagPrint(palletModel.getTagPrint());
}
if(Utils.isNull(palletModel.getQty())){
palletMeanegementView.setQty(0);
} else {
palletMeanegementView.setQty(palletModel.getQty());
}
if(Utils.isNull(palletModel.getReservedQty())){
palletMeanegementView.setReservedQty(0);
} else {
palletMeanegementView.setReservedQty(palletModel.getReservedQty());
}
if(Utils.isNull(palletModel.getStatus())){
palletMeanegementView.setStatus(transformStatusToString(0));
} else {
palletMeanegementView.setStatus(transformStatusToString(palletModel.getStatus()));
}
if(Utils.isNull(palletModel.getCreateBy())){
palletMeanegementView.setCreateBy(staffModel);
} else {
palletMeanegementView.setCreateBy(palletModel.getCreateBy());
}
palletMeanegementView.setCreateDate(palletModel.getCreateDate());
if(Utils.isNull(palletModel.getUpdateBy())){
palletMeanegementView.setUpdateBy(staffModel);
} else {
palletMeanegementView.setUpdateBy(palletModel.getUpdateBy());
}
palletMeanegementView.setUpdateDate(palletModel.getUpdateDate());
if(Utils.isNull(palletModel.getIsValid())){
palletMeanegementView.setIsValid(0);
} else {
palletMeanegementView.setIsValid(palletModel.getIsValid());
}
if(Utils.isNull(palletModel.getVersion())){
palletMeanegementView.setVersion(0);
} else {
palletMeanegementView.setVersion(palletModel.getVersion());
}
if(Utils.isNull(palletModel.getCapacity())){
palletMeanegementView.setCapacity(BigDecimal.ZERO);
} else {
palletMeanegementView.setCapacity(palletModel.getCapacity());
}
palletMeanegementView.setConvetorLine(palletModel.getMsWorkingAreaModel());
palletMeanegementView.setShift(palletModel.getMsShiftModel());
palletMeanegementView.setIsCombine(palletModel.getIsCombine());
palletMeanegementView.setIsFoil(palletModel.getIsFoil());
palletMeanegementView.setSetToTransfer(palletModel.getSetToTransfer());
palletMeanegementView.setSeq(palletModel.getSeq());
palletMeanegementView.setSetToMovement(palletModel.getSetToMovement());
// if (Utils.isZero(palletModel.getIsCombine())){
// palletMeanegementView.setIsCombine("red");
// } else {
// palletMeanegementView.setIsCombine("green");
// }
palletMeanegementView.setSetToTransfer(palletModel.getSetToTransfer());
return palletMeanegementView;
}
public StatusValue transformStatusToString(int status){
StatusValue statusName = null;
switch (status){
case 0 : statusName = StatusValue.CANCEL;break;
case 1 : statusName = StatusValue.CREATE;break;
case 2 : statusName = StatusValue.COMPLETED;break;
case 3 : statusName = StatusValue.PRINTED;break;
case 4 : statusName = StatusValue.LOCATED;break;
case 5 : statusName = StatusValue.RESERVED;break;
case 6 : statusName = StatusValue.CLOSED;break;
}
return statusName;
}
public int transformStatusInt(StatusValue status){
log.debug("transformStatusInt : {}", status.getId());
return status.getId();
}
public PalletModel transformToMode(PalletManagementView palletManagementView, String redirect){
PalletModel palletModel = new PalletModel();
int staffModel = (int) FacesUtil.getSession(false).getAttribute(AttributeName.STAFF.getName());
palletModel.setId(palletManagementView.getId());
palletModel.setPalletBarcode(palletManagementView.getPalletBarcode());
palletModel.setMsWarehouseModel(palletManagementView.getWarehouseModel());
palletModel.setMsItemModel(palletManagementView.getItemModel());
palletModel.setMsLocationModel(palletManagementView.getLocationModel());
palletModel.setTagPrint(palletManagementView.getTagPrint() + 1);
palletModel.setQty(palletManagementView.getQty());
palletModel.setReservedQty(palletManagementView.getReservedQty());
if ("PrintTag".equalsIgnoreCase(redirect)){
if (transformStatusInt(palletManagementView.getStatus()) == 2){
palletModel.setStatus(transformStatusInt(palletManagementView.getStatus()) + 1);
} else {
palletModel.setStatus(transformStatusInt(palletManagementView.getStatus()));
}
} else if ("ClosePallet".equalsIgnoreCase(redirect)){
log.debug("redirect : {}", redirect);
palletModel.setStatus(6);
}
if ("unFoil".equals(redirect)){
}
palletModel.setCreateBy(palletManagementView.getCreateBy());
palletModel.setCreateDate(palletManagementView.getCreateDate());
palletModel.setUpdateBy(staffModel);
palletModel.setUpdateDate(new Date());
palletModel.setIsValid(palletManagementView.getIsValid());
palletModel.setVersion(palletManagementView.getVersion());
palletModel.setCapacity(palletManagementView.getCapacity());
palletModel.setMsWorkingAreaModel(palletManagementView.getConvetorLine());
palletModel.setMsShiftModel(palletManagementView.getShift());
palletModel.setIsCombine(palletManagementView.getIsCombine());
palletModel.setSetToTransfer(palletManagementView.getSetToTransfer());
palletModel.setSeq(palletManagementView.getSeq());
palletModel.setIsFoil(palletManagementView.getIsFoil());
palletModel.setSetToMovement(palletManagementView.getSetToMovement());
// if ("red".equalsIgnoreCase(palletManagementView.getIsCombine())){
// palletModel.setIsCombine(0);
// } else {
// palletModel.setIsCombine(1);
// }
palletModel.setSetToTransfer(palletManagementView.getSetToTransfer());
return palletModel;
}
public PalletModel transformToMode(PalletManagementView palletManagementView){
PalletModel palletModel = new PalletModel();
int staffModel = (int) FacesUtil.getSession(false).getAttribute(AttributeName.STAFF.getName());
palletModel.setId(palletManagementView.getId());
palletModel.setPalletBarcode(palletManagementView.getPalletBarcode());
palletModel.setMsWarehouseModel(palletManagementView.getWarehouseModel());
palletModel.setMsItemModel(palletManagementView.getItemModel());
palletModel.setMsLocationModel(palletManagementView.getLocationModel());
palletModel.setTagPrint(palletManagementView.getTagPrint());
palletModel.setQty(palletManagementView.getQty());
palletModel.setReservedQty(palletManagementView.getReservedQty());
palletModel.setStatus(transformStatusInt(palletManagementView.getStatus()));
palletModel.setCreateBy(palletManagementView.getCreateBy());
palletModel.setCreateDate(palletManagementView.getCreateDate());
palletModel.setUpdateBy(staffModel);
palletModel.setUpdateDate(new Date());
palletModel.setIsValid(palletManagementView.getIsValid());
palletModel.setVersion(palletManagementView.getVersion());
palletModel.setCapacity(palletManagementView.getCapacity());
palletModel.setMsWorkingAreaModel(palletManagementView.getConvetorLine());
palletModel.setMsShiftModel(palletManagementView.getShift());
palletModel.setIsCombine(palletManagementView.getIsCombine());
palletModel.setSetToTransfer(palletManagementView.getSetToTransfer());
palletModel.setSeq(palletManagementView.getSeq());
palletModel.setIsFoil(2);
return palletModel;
}
public List<PalletManagementViewReport> transformSQL(List<PalletManagemengModelReport> modelReportList){
log.debug("transformSQL().");
List<PalletManagementViewReport> reportViews = new ArrayList<PalletManagementViewReport>();
PalletListReport palletListReport = new PalletListReport();
String dSGThaiItemDescription = "";
String warehouseCode = "";
String palletBarcode = "";
String locationBarcode = "";
String createDate = "";
String grade = "";
String workingName = "";
String bathcgNo = "";
int countId = 0;
for (PalletManagemengModelReport model : modelReportList){
PalletManagementViewReport palletManagementViewReport = new PalletManagementViewReport();
List<PalletListReport> palletListReports = new ArrayList<PalletListReport>();
if (!dSGThaiItemDescription.equalsIgnoreCase(model.getDSGThaiItemDescription())){
palletManagementViewReport.setDSGThaiItemDescription(model.getDSGThaiItemDescription());
dSGThaiItemDescription = model.getDSGThaiItemDescription();
}
if (!warehouseCode.equalsIgnoreCase(model.getWarehouseCode())){
palletManagementViewReport.setWarehouseCode(model.getWarehouseCode());
warehouseCode = model.getWarehouseCode();
}
if (!palletBarcode.equalsIgnoreCase(model.getPalletBarcode())){
palletManagementViewReport.setPalletBarcode(model.getPalletBarcode());
palletBarcode = model.getPalletBarcode();
}
if (!locationBarcode.equalsIgnoreCase(model.getLocationBarcode())){
palletManagementViewReport.setLocationBarcode(model.getLocationBarcode());
locationBarcode = model.getLocationBarcode();
}
if (!createDate.equalsIgnoreCase(model.getCreateDate())){
palletManagementViewReport.setCreateDate(model.getCreateDate());
createDate = model.getCreateDate();
}
if (!grade.equalsIgnoreCase(model.getGrade())){
palletManagementViewReport.setGrade(model.getGrade());
grade = model.getGrade();
}
if (!workingName.equalsIgnoreCase(model.getWorkingName())){
palletManagementViewReport.setWorkingName(model.getWorkingName());
workingName = model.getWorkingName();
}
if (!bathcgNo.equalsIgnoreCase(model.getBathcgNo1()) && countId != model.getCountId1()){
palletListReport.setBathcgNo(model.getBathcgNo1());
palletListReport.setCountId(model.getCountId1());
palletListReports.add(palletListReport);
}
palletManagementViewReport.setPalletListReports(palletListReports);
reportViews.add(palletManagementViewReport);
}
return reportViews;
}
}