package com.ese.service; import com.ese.model.dao.LocationDAO; import com.ese.model.dao.PalletDAO; import com.ese.model.dao.StockInOutDAO; import com.ese.model.dao.StockInOutLineDAO; import com.ese.model.db.MSLocationModel; import com.ese.model.db.PalletModel; import com.ese.model.db.StockInOutLineModel; import com.ese.model.view.LocationItemView; import com.ese.model.view.PalletTransferView; import com.ese.model.view.report.PalletManagemengModelReport; import com.ese.transform.PalletManagementTransform; import com.ese.utils.AttributeName; import com.ese.utils.FacesUtil; import com.ese.utils.Utils; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.util.Date; import java.util.HashMap; import java.util.List; @Component @Transactional public class ShowTransPalletService extends Service{ private static final long serialVersionUID = 4112578634029876540L; @Resource PalletDAO palletDAO; @Resource private PalletManagementTransform palletManagementTransform; @Resource private ReportService reportService; @Resource private LocationDAO locationDAO; @Resource private StockInOutDAO stockInOutDAO; @Resource private StockInOutLineDAO stockInOutLineDAO; @Value("#{config['report.printtag']}") private String pathPrintTagReport; @Value("#{config['report.printtagv2']}") private String pathPrintTagV2Report; @Value("#{config['report.subpallet']}") private String pathSubReport; public List<PalletTransferView> getPalletByStockID(int stockId){ return palletDAO.findByStockInOutId(stockId); } public void onPrintTag(int palletId){ String printTagReportName = Utils.genReportName("_PrintTag"); String partReport = ""; PalletModel palletModel = null; List<PalletManagemengModelReport> reportViews = null; HashMap map = new HashMap<String, Object>(); try { palletModel = palletDAO.findByID(palletId); if (!Utils.isNull(palletModel) &&Utils.isZero(palletModel.getIsCombine())){ reportViews = palletDAO.genSQLReportPallet(palletId); partReport = pathPrintTagReport; } else if (!Utils.isNull(palletModel) && !Utils.isZero(palletModel.getIsCombine())){ partReport = pathPrintTagV2Report; map.put("path", FacesUtil.getRealPath(pathSubReport)); map.put("MainPallet", palletDAO.findByIdToReport(palletModel.getId())); map.put("SubPallet", palletDAO.genSQLReportPalletV2(palletModel.getId())); } } catch (Exception e) { log.debug("Exception error onPrintTag : ", e); } try { reportService.exportPDF(partReport, map, printTagReportName, reportViews); } catch (Exception e) { log.debug("Exception Report : ", e); } } public void onUpdateByPrintTag(PalletTransferView palletManagementView, String redirect) { log.debug("onSaveByPrintTag()."); PalletModel palletModel = null; int staffModel = (int) FacesUtil.getSession(false).getAttribute(AttributeName.STAFF.getName()); try{ if (!Utils.isNull(palletManagementView)){ palletModel = palletDAO.findByID(palletManagementView.getId()); log.debug("Status : {}", palletModel.getStatus()); if (palletModel.getStatus() == 2){ palletModel.setStatus(palletModel.getStatus() + 1); } else { palletModel.setStatus(palletModel.getStatus()); } palletModel.setUpdateBy(staffModel); palletModel.setUpdateDate(new Date()); } palletDAO.update(palletModel); } catch (Exception e){ log.debug("Exception : {}", e); } } public List<PalletTransferView> search(String palletTag, String itemId, int locationId, int warehouseId){ return palletDAO.findBySearch(palletTag, itemId, locationId, warehouseId); } public void changeLocation(PalletTransferView palletManagementView, LocationItemView locationItemView, int stockInOutId){ log.debug("changeLocation()."); try { MSLocationModel model = locationDAO.findByID(locationItemView.getId());//toLocation PalletModel palletModel = palletDAO.findByID(palletManagementView.getId());//fromPallet palletDAO.updateNewPalletTransferByChangeLocation(palletModel.getId(), model.getId()); if (palletModel.getStatus() == 3){ //Print Tag palletDAO.updateLocationByStatusPrinted(palletModel.getMsLocationModel().getId()); } /*else { //Find Location palletDAO.updateLocationByStatusLocated(model.getId()); }*/ //บวกของใหม่ ลบของเก่า palletDAO.updateLocationByOld(model.getId()); // palletDAO.updateLocationByNew(palletModel.getMsLocationModel().getId()); saveOrUpdateStockInOutLine(palletModel, stockInOutId, model); } catch (Exception e) { log.debug("Exception : {}", e); } } private void saveOrUpdateStockInOutLine(PalletModel palletModel, int stockInOutId, MSLocationModel toLocationId){ //jowjo StockInOutLineModel stockInOutLineModel = null; stockInOutLineModel = stockInOutLineDAO.findByPalletIdAndStockInOutId(palletModel.getId(), stockInOutId); int staffModel = (int) FacesUtil.getSession(false).getAttribute(AttributeName.STAFF.getName()); try{ if (!Utils.isNull(stockInOutLineModel) && !Utils.isZero(stockInOutLineModel.getId())){ log.debug("Update Stock In Out Line"); stockInOutLineModel.setUpdateBy(staffModel); stockInOutLineModel.setUpdateDate(Utils.currentDate()); stockInOutLineModel.setMsItemModel(palletModel.getMsItemModel()); stockInOutLineModel.setPalletModel(palletModel); stockInOutLineModel.setMsLocationModel(toLocationId); stockInOutLineModel.setBarcode(palletModel.getPalletBarcode()); stockInOutLineModel.setPreviousLocationId(palletModel.getMsLocationModel().getId()); stockInOutLineDAO.update(stockInOutLineModel); } else { log.debug("Prsist Stock In Out Line"); stockInOutLineModel = new StockInOutLineModel(); stockInOutLineModel.setCreateBy(staffModel); stockInOutLineModel.setCreateDate(Utils.currentDate()); stockInOutLineModel.setUpdateBy(staffModel); stockInOutLineModel.setUpdateDate(Utils.currentDate()); stockInOutLineModel.setMsItemModel(palletModel.getMsItemModel()); stockInOutLineModel.setPalletModel(palletModel); stockInOutLineModel.setMsLocationModel(toLocationId); stockInOutLineModel.setBarcode(palletModel.getPalletBarcode()); stockInOutLineModel.setStockInOutModel(stockInOutDAO.findByID(stockInOutId)); stockInOutLineModel.setPreviousLocationId(palletModel.getMsLocationModel().getId()); stockInOutLineModel.setIsValid(1); stockInOutLineModel.setVersion(1); // stockInOutLineModel.setQty(0); stockInOutLineDAO.persist(stockInOutLineModel); } } catch (Exception e){ log.debug("Exception error saveOrUpdateStockInOutLine : ", e); } } }