package com.ese.service; import com.ese.model.TableValue; import com.ese.model.dao.*; import com.ese.model.db.*; import com.ese.model.view.IncomingView; import com.ese.model.view.StockMovementInView; import com.ese.model.view.report.StockViewReport; 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.HashMap; import java.util.List; @Component @Transactional public class IncomingService extends Service { private static final long serialVersionUID = 4112578634029876045L; @Resource private StockInOutDAO stockInOutDAO; @Resource private StockInOutNoteDAO stockInOutNoteDAO; @Resource private InvOnHandDAO invOnHandDAO; @Resource private PalletDAO palletDAO; @Resource private StatusDAO statusDAO; @Resource private StockMovementInDAO stockMovementInDAO; @Resource private ReportService reportService; @Value("#{config['report.incoming']}") private String pathPrintIncoming; @Value("#{config['report.incoming.sub']}") private String pathPrintIncomingSub; public List<StockMovementInView> getStockMoveInByStockInOutId(int stockInoutId){ return stockMovementInDAO.findstockMovementOutByStockInOutId(stockInoutId); } public List<MSStockInOutNoteModel> getAllStockInOutNote(){ return stockInOutNoteDAO.getStockInOutNoteOrderByTypeI(); } public List<StockInOutModel> getOnLoad(){ return stockInOutDAO.findByDocNoINAndCurrentDate(); } public List<StockInOutModel> search(IncomingView incomingView){ return stockInOutDAO.findBySearchIN(incomingView); } public void save(IncomingView incomingView){ try { int staffModel = (int) FacesUtil.getSession(false).getAttribute(AttributeName.STAFF.getName()); StockInOutModel stockInOutModel = new StockInOutModel(); stockInOutModel.setDocNo(incomingView.getDocNo()); stockInOutModel.setDocDate(incomingView.getDocDate()); stockInOutModel.setMsStockInOutNoteModel(incomingView.getMsStockInOutNoteModel()); stockInOutModel.setRemark(incomingView.getRemark()); stockInOutModel.setUpdateDate(Utils.currentDate()); stockInOutModel.setUpdateBy(staffModel); stockInOutModel.setCreateDate(Utils.currentDate()); stockInOutModel.setCreateBy(staffModel); stockInOutModel.setIsValid(1); StatusModel statusModel = new StatusModel(); statusModel.setId(17); stockInOutModel.setStatus(statusModel); stockInOutDAO.persist(stockInOutModel); } catch (Exception e) { log.debug("Exception error during save ", e); } } public void edit(IncomingView incomingView){ try { int staffModel = (int) FacesUtil.getSession(false).getAttribute(AttributeName.STAFF.getName()); StockInOutModel stockInOutModel = stockInOutDAO.findByID(incomingView.getId()); stockInOutModel.setDocDate(incomingView.getDocDate()); stockInOutModel.setMsStockInOutNoteModel(incomingView.getMsStockInOutNoteModel()); stockInOutModel.setRemark(incomingView.getRemark()); stockInOutModel.setUpdateDate(Utils.currentDate()); stockInOutModel.setUpdateBy(staffModel); stockInOutDAO.update(stockInOutModel); } catch (Exception e) { log.debug("Exception error during edit ", e); } } public List<InvOnHandModel> findInvOnHand(String barcode){ List<InvOnHandModel> invOnHandModelList = Utils.getEmptyList(); try { log.debug("All {}", palletDAO.findAll().size()); log.debug("-------- {}", palletDAO.findAll().toString()); //pallet barcode PL or SN T // log.debug("findInvOnHand(barcode : {})", barcode); if (barcode.contains("PL")) { log.debug("PL"); List<PalletModel> palletModelList = palletDAO.findByLikePalletBarcode(barcode); log.debug("palletModelList Size: {}", palletModelList.size()); for (PalletModel model : palletModelList) { invOnHandModelList = invOnHandDAO.findByPalletId(model.getId()); } } else if (barcode.contains("T")) { log.debug("T"); invOnHandModelList = invOnHandDAO.findByLikeSnBarcode(barcode); } log.debug("invOnHandModelList.size().[{}}", invOnHandModelList.size()); // if ("PL".equalsIgnoreCase(barcode)) { // List<PalletModel> palletModelList = palletDAO.findByLikePalletBarcode(barcode); // for (PalletModel model : palletModelList) { // invOnHandModelList.addAll(invOnHandDAO.findByPalletId(model.getId())); // } // } // //SN T // if ("T".equalsIgnoreCase(barcode)) { // invOnHandDAO.findByLikeSnBarcode(barcode); // } // invOnHandModelList = invOnHandDAO.findAll(); } catch (Exception e) { log.debug("Exception during findInvOnHand ", e); } return invOnHandModelList; } public void printReport(int stockInoutId){ String reportName = Utils.genReportName("_Incoming"); List<StockViewReport> reportViews = stockInOutDAO.findReportByStickInoutId(stockInoutId); HashMap map = new HashMap(); try { map.put("path", FacesUtil.getRealPath(pathPrintIncomingSub)); map.put("subReport", stockMovementInDAO.findSubReportByStickInoutId(stockInoutId)); } catch (Exception e) { log.debug("Exception error onPrintTag : ", e); } try { reportService.exportPDF(pathPrintIncoming, map, reportName, reportViews); } catch (Exception e) { log.debug("Exception Report : ", e); } } public void delete(int stockMoveInId){ try { stockMovementInDAO.delete(stockMovementInDAO.findByID(stockMoveInId)); } catch (Exception e) { log.debug("Exception error e : ", e); } } public void save(String productSearch, List<InvOnHandModel> invOnHandModelList, int stockInoutId){ log.debug("save : productSearch ({}), invOnHandModelList size ({}), stockInoutId ({})", productSearch, invOnHandModelList.size(), stockInoutId); StockMovementInModel stockMovementInModel; int staffModel = (int) FacesUtil.getSession(false).getAttribute(AttributeName.STAFF.getName()); try{ for (InvOnHandModel invOnHandModel : invOnHandModelList){ stockMovementInModel = new StockMovementInModel(); if (productSearch.contains("PL")) { if (!Utils.isNull(invOnHandModel.getPalletModel()) && !Utils.isNull(invOnHandModel.getPalletModel().getPalletBarcode()) && !Utils.isEmpty(invOnHandModel.getPalletModel().getPalletBarcode())){ stockMovementInModel.setPalletBarcode(invOnHandModel.getPalletModel().getPalletBarcode()); } } stockMovementInModel.setSnBarcode(invOnHandModel.getSnBarcode()); stockMovementInModel.setStatus(1); stockMovementInModel.setStockInOutModel(stockInOutDAO.findByID(stockInoutId)); stockMovementInModel.setBatchNo(invOnHandModel.getBatchNo()); stockMovementInModel.setIsValid(0); stockMovementInModel.setCreateBy(staffModel); stockMovementInModel.setCreateDate(Utils.currentDate()); stockMovementInModel.setUpdateBy(staffModel); stockMovementInModel.setUpdateDate(Utils.currentDate()); stockMovementInDAO.persist(stockMovementInModel); } } catch (Exception e){ log.debug("Exception error save : ", e); } } public void post(IncomingView incomingView){ try { int staffModel = (int) FacesUtil.getSession(false).getAttribute(AttributeName.STAFF.getName()); StockInOutModel stockInOutModel = stockInOutDAO.findByID(incomingView.getId()); stockInOutModel.setDocDate(incomingView.getDocDate()); stockInOutModel.setMsStockInOutNoteModel(incomingView.getMsStockInOutNoteModel()); stockInOutModel.setRemark(incomingView.getRemark()); stockInOutModel.setStatus(statusDAO.findByTableIdAndStatus(TableValue.STOCK_IN_OUT.getId(), 4)); stockInOutModel.setUpdateDate(Utils.currentDate()); stockInOutModel.setUpdateBy(staffModel); stockInOutDAO.update(stockInOutModel); } catch (Exception e) { log.debug("Exception error during edit ", e); } } }