package com.ese.service; import com.ese.model.dao.BarcodeRegisterDAO; import com.ese.model.dao.ItemDAO; import com.ese.model.db.BarcodeRegisterModel; import com.ese.model.db.MSItemModel; import com.ese.model.view.BarcodeRegisterView; import com.ese.model.view.report.BarcodeRegisterModelReport; import com.ese.transform.BarcodeRegisterTransform; 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 BarcodeRegisterService extends Service{ private static final long serialVersionUID = 4112577774029874840L; @Resource private ItemDAO itemDAO; @Resource private BarcodeRegisterDAO barcodeRegisterDAO; @Resource private BarcodeRegisterTransform barcodeRegisterTransform; @Resource private ReportService reportService; @Value("#{config['report.barcode']}")private String pathBarcodeReport; public List<BarcodeRegisterModel> findBarcodeByCondition(final String type, final String text){ log.debug("-- findBarcodeByCondition({}, {})", type, text); List<BarcodeRegisterModel> barcodeRegisterModelList = Utils.getEmptyList(); try { if("2".equalsIgnoreCase(type)){ barcodeRegisterModelList = barcodeRegisterDAO.findByLike("batchNo", text); } else if("3".equalsIgnoreCase(type)){ barcodeRegisterModelList = barcodeRegisterDAO.findByLike(text); } else { barcodeRegisterModelList = barcodeRegisterDAO.findByBetween(getOnlyDigit(text)); } } catch (Exception e) { log.error("{}",e); } return barcodeRegisterModelList; } public List<MSItemModel> findByCondition(final String type, final String text){ log.debug("-- findByCondition({}, {})", type, text); List<MSItemModel> msItemModelList = Utils.getEmptyList(); try { if("3".equalsIgnoreCase(type)){ msItemModelList = itemDAO.findByLike("dSGThaiItemDescription", text); } else if("2".equalsIgnoreCase(type)){ msItemModelList = itemDAO.findByLike("itemId", text); } else { msItemModelList = itemDAO.findByLike("itemName", text); } } catch (Exception e) { log.error("{}",e); } return msItemModelList; } public List<BarcodeRegisterModel> getByIsValid(){ log.debug("-- getByIsValid()"); List<BarcodeRegisterModel> barcodeRegisterModelList = Utils.getEmptyList(); try { barcodeRegisterModelList = barcodeRegisterDAO.findByIsValid(); } catch (Exception e) { log.error("{}",e); } return barcodeRegisterModelList; } public List<BarcodeRegisterModel> getByStockInOut(String stockInout){ log.debug("-- getByIsValid()"); List<BarcodeRegisterModel> barcodeRegisterModelList = Utils.getEmptyList(); try { barcodeRegisterModelList = barcodeRegisterDAO.findByStockInOut(stockInout); } catch (Exception e) { log.error("{}",e); } return barcodeRegisterModelList; } public void delete(BarcodeRegisterModel model){ log.debug("-- delete(id : {})", model.getId()); try { barcodeRegisterDAO.deleteByUpdate(model); } catch (Exception e) { log.error("{}",e); } } public void deleteFormSetValid(BarcodeRegisterModel model){ log.debug("-- delete(id : {})", model.getId()); try { model.setIsValid(0); barcodeRegisterDAO.update(model); } catch (Exception e) { log.error("{}",e); } } public BarcodeRegisterView convertToView(BarcodeRegisterModel model){ log.debug("-- convertToView(BarcodeRegisterModel.id[{}])", model.getId()); BarcodeRegisterView barcodeRegisterView = new BarcodeRegisterView(); try { barcodeRegisterView = barcodeRegisterTransform.transformToView(model); } catch (Exception e) { log.error("{}",e); } return barcodeRegisterView; } public void saveOrUpdate(BarcodeRegisterView view){ log.debug("-- save(BarcodeRegisterView.id[{}])", view.getId()); BarcodeRegisterModel model; try { view.setCost(barcodeRegisterDAO.getPrice(view.getMsItemModel().getItemId())); model = barcodeRegisterTransform.transformToModel(view); barcodeRegisterDAO.saveOrUpdate(model); /*if (Utils.isZero(view.getId())){ barcodeRegisterDAO.persist(barcodeRegisterTransform.transformToModel(view)); } else { BarcodeRegisterModel model = barcodeRegisterTransform.transformToModel(view); barcodeRegisterDAO.update(model); }*/ } catch (Exception e) { log.error("{}",e); } } public void edit(BarcodeRegisterView view){ log.debug("-- edit(BarcodeRegisterView.id[{}])", view.getId()); try { view.setCost(barcodeRegisterDAO.getPrice(view.getMsItemModel().getItemId())); BarcodeRegisterModel model = barcodeRegisterTransform.transformToModel(view); barcodeRegisterDAO.update(model); } catch (Exception e) { log.error("{}",e); } } public void onPrintBarcode(int barcodeId){ String printBarcodeName = Utils.genReportName("_BarcodeRegister"); List<BarcodeRegisterModelReport> reports = barcodeRegisterDAO.genSQLReportBarcode(barcodeId); log.debug("reportViews {}", reports.size()); HashMap map = new HashMap<String, Object>(); try { reportService.exportPDF(pathBarcodeReport, map, printBarcodeName, reports); } catch (Exception e) { log.debug("Exception Report : ", e); } } public boolean isDuplicate(String startBarcode, String finishBarcode, int id){ try { boolean result = false; List<BarcodeRegisterModel> barcodeRegisterModelList = getByIsValid(); System.out.println(barcodeRegisterModelList.size()); int start = Utils.parseInt(startBarcode, 0); int finish = Utils.parseInt(finishBarcode, 0); for (BarcodeRegisterModel model : barcodeRegisterModelList){ if(model.getId() != id){ int startM = Utils.parseInt(model.getStartBarcode(), 0); int finishM = Utils.parseInt(model.getFinishBarcode(), 0); while (start<=finish){ while (startM<=finishM){ if(start == startM){ return true; } startM++; } startM = Utils.parseInt(model.getStartBarcode(), 0); start++; } start = Utils.parseInt(startBarcode, 0); } } return result; } catch (Exception e) { log.error("{}", e); return true; } } private String getOnlyDigit(String s) { StringBuilder result = new StringBuilder(""); for(int i = 0; i < s.length(); i++) { try { result.append(Integer.parseInt(String.valueOf(s.charAt(i)))); } catch (Exception e) { } } return result.toString(); } }