package th.co.muangthai.endrprint.controller.service; import org.apache.log4j.Logger; import org.springframework.beans.BeanUtils; import th.co.muangthai.endrprint.controller.AbstractMasterController; import th.co.muangthai.endrprint.controller.service.ftp.FTPUtil; import th.co.muangthai.endrprint.model.bean.form.MsgErrorForm; import th.co.muangthai.endrprint.model.bean.form.data.PrinterDataTxtForm; import th.co.muangthai.endrprint.model.bean.form.data.PrintingDataForm; import th.co.muangthai.endrprint.model.bean.master.EndrUserLoginBean; import th.co.muangthai.endrprint.model.bean.tmp.EndrTmpDataPrintBean; import th.co.muangthai.endrprint.util.DateUtil; import th.co.muangthai.endrprint.util.SessionUtil; import th.co.muangthai.endrprint.util.VSMUtil; import javax.servlet.http.HttpServletRequest; import java.io.BufferedWriter; import java.io.File; import java.io.FileOutputStream; import java.io.OutputStreamWriter; import java.math.BigDecimal; import java.util.ArrayList; import java.util.Date; import java.util.List; /** * Created by Yuttakarn on 19/7/2560. */ public class ENDR200Service extends AbstractMasterController { private Logger log = Logger.getLogger(ENDR200Service.class); FTPUtil ftpService = new FTPUtil(); /** * Insert ENDR data to temp and update data * Save ENDR data to .dat file and transfer text file to server by ftp process * Delete text file when transfer text file is complete * @param request * @param lstPrintingData - list of ENDR Print data * @param serverId - Id of printer * @return Object[] results */ public Object[] insertOrUpdateData(HttpServletRequest request ,List lstPrintingData ,BigDecimal serverId ,BigDecimal sType){ Object[] obj = new Object[1]; MsgErrorForm msgErrorForm = new MsgErrorForm(); msgErrorForm.setErrorFlag(getBigDecimal("0")); msgErrorForm.setErrorDesc("Save successful"); obj[0] = msgErrorForm; List printerDataTxtFormList = new ArrayList(); try { EndrUserLoginBean loginForm = getUerLoginBean(request); Date dateSave = new Date(); List endrTmpDataPrintList = new ArrayList(); EndrTmpDataPrintBean endrTmpDataPrintForm = new EndrTmpDataPrintBean(); String processId = DateUtil.toFormatString(new Date(), "ddMMyyyyHHmmss"); if (VSMUtil.isNotEmptyLst(lstPrintingData) && lstPrintingData.size()>0){ for (int i = 0 ; i< lstPrintingData.size() ; i++){ PrintingDataForm printingDataFormSet = new PrintingDataForm(); BeanUtils.copyProperties(lstPrintingData.get(i), printingDataFormSet); endrTmpDataPrintForm = new EndrTmpDataPrintBean(); endrTmpDataPrintForm.setProcessId(processId); endrTmpDataPrintForm.setTaskId(printingDataFormSet.getTaskId()); endrTmpDataPrintForm.setUserId(loginForm.getUserId()); endrTmpDataPrintForm.setServerId(serverId); endrTmpDataPrintForm.setCreateBy(loginForm.getUserId()); endrTmpDataPrintForm.setCreateDate(dateSave); endrTmpDataPrintForm.setUpdateBy(loginForm.getUserId()); endrTmpDataPrintForm.setUpdateDate(dateSave); endrTmpDataPrintList.add(endrTmpDataPrintForm); } } log.info("endrTmpDataPrintList size --> "+endrTmpDataPrintList.size()); log.info("processId --> "+processId); boolean f = commonService.insertEndrTmpDataPrint(endrTmpDataPrintList); if(!f){ msgErrorForm.setErrorFlag(getBigDecimal("1")); msgErrorForm.setErrorDesc("Save error!!!"); }else{ ////////////////////////////////////////////////// // search data printerDataTxtFormList = new ArrayList(); printerDataTxtFormList = commonService.searchPrinterDataTxtFormPkg(processId ,sType); log.info("printerDataTxtFormList size --> "+printerDataTxtFormList.size()); if (VSMUtil.isNotEmptyLst(printerDataTxtFormList)){ List printerDataTxtFormListWrite = new ArrayList(); List printerDataTxtList = new ArrayList(); PrinterDataTxtForm form = null; for (int i=0; i(); form = new PrinterDataTxtForm(); form = printerDataTxtFormList.get(i); printerDataTxtList.add(form); form.setPrinterDataTxtLst(printerDataTxtList); printerDataTxtFormListWrite.add(form); }else { if (printerDataTxtFormList.size() > i+1){ if (VSMUtil.isNotEmpty(printerDataTxtFormList.get(i).getDatJob())){ if (printerDataTxtFormList.get(i).getDatJob().equals(printerDataTxtFormList.get(i+1).getDatJob())){ }else { form = new PrinterDataTxtForm(); form = printerDataTxtFormList.get(i); //printerDataTxtList.add(form); printerDataTxtList = new ArrayList(); for (int j=0; j(); for (int j=0; j0){ List lst = new ArrayList(); for (PrinterDataTxtForm data : printerDataTxtFormListWrite){ lst = new ArrayList(); lst = data.getPrinterDataTxtLst(); ////////////////////////////////////////////////// // write text file //Object[] objWriteTxt = writeTxtFile(printerDataTxtFormList ,request); Object[] objWriteTxt = writeTxtFile(lst ,request); msgErrorForm = (MsgErrorForm)objWriteTxt[0]; String filePath = (String)objWriteTxt[1]; PrinterDataTxtForm dataSetting = (PrinterDataTxtForm)objWriteTxt[2]; if (getBigDecimal("0").equals(msgErrorForm.getErrorFlag())){ String hostname = ""; // ip address if (VSMUtil.IP_ADDR_PRINTER_PRO){ // ipAddrProduction hostname = dataSetting.getIpAddrProd(); }else { // ipAddrUAT hostname = dataSetting.getIpAddrUat(); //"10.22.145.154"; } int port = 21; //port String username = dataSetting.getFtpUsername(); // "Thawarom-BSD"; String password = dataSetting.getFtpPassword(); // "kireida"; String fileName = dataSetting.getDatJob()+".dat"; //fileName.dat String ftpDirectory = dataSetting.getFtpDirectory(); // directoryName ////////////////////////////////////////////////// // ftp file upload Object[] objFtpUpload = ftpUploadFile(hostname ,port ,username ,password ,filePath ,fileName ,ftpDirectory); msgErrorForm = (MsgErrorForm)objFtpUpload[0]; if (getBigDecimal("0").equals(msgErrorForm.getErrorFlag())){ msgErrorForm.setErrorDesc("Process successful"); } String ftpDirectoryTmp = SessionUtil.getPathFile("100001"); if (VSMUtil.isNotEmpty(ftpDirectoryTmp)){ Object[] objFtpUploadTmp = ftpUploadFile(hostname ,port ,username ,password ,filePath ,fileName ,ftpDirectory+ftpDirectoryTmp); //msgErrorForm = (MsgErrorForm)objFtpUploadTmp[0]; //if (getBigDecimal("0").equals(msgErrorForm.getErrorFlag())){ // msgErrorForm.setErrorDesc("Process successful"); //} } //if (getBigDecimal("0").equals(msgErrorForm.getErrorFlag())){ // // ////////////////////////////////////////////////// // // delete source file when upload file is successful // Object[] objDeleteFile = deleteTxtFile(filePath); // msgErrorForm = (MsgErrorForm)objDeleteFile[0]; // if (getBigDecimal("0").equals(msgErrorForm.getErrorFlag())){ // msgErrorForm.setErrorDesc("Process successful"); // } //} } } } boolean s = commonService.updateFinishFtp(processId ,sType); //if (!s){ //} }else{ msgErrorForm.setErrorFlag(getBigDecimal("1")); msgErrorForm.setErrorDesc("No data found"); } } }catch (Exception e){ msgErrorForm.setErrorFlag(getBigDecimal("1")); msgErrorForm.setErrorDesc("Data not found ,Invalid team"); log.error(e.toString(), e); } obj[0] = msgErrorForm; return obj; } /** * Write/Save .dat file * @param printerDataTxtFormList - list of ENDR Print data * @return Object[] results */ public Object[] writeTxtFile(List printerDataTxtFormList ,HttpServletRequest request){ Object[] obj = new Object[3]; MsgErrorForm msgErrorForm = new MsgErrorForm(); msgErrorForm.setErrorFlag(getBigDecimal("0")); msgErrorForm.setErrorDesc("Save successful"); obj[0] = msgErrorForm; String filePath = ""; //String filePathTest = SessionUtil.getPathFile("100000"); PrinterDataTxtForm dataSetting = new PrinterDataTxtForm(); try { EndrUserLoginBean loginForm = getUerLoginBean(request); if (printerDataTxtFormList.size()>0){ for (PrinterDataTxtForm dataSet : printerDataTxtFormList){ dataSetting = new PrinterDataTxtForm(); dataSetting = dataSet; //String a = SessionUtil.getPathFile("100000").substring(SessionUtil.getPathFile("100000").length()-1,SessionUtil.getPathFile("100000").length()); //String b = (dataSetting.getDatJob()+".dat").substring(0,1); filePath = SessionUtil.getPathFile("100000")+dataSetting.getDatJob()+".dat"; //"D://txt/"+dataSet.getDatJob()+".dat"; //filePath = dataSet.getDatJob(); break; } } log.info("writing file to "+filePath+" start ..."); log.info("writing file by "+loginForm.getUserId()); if (VSMUtil.isNotEmpty(dataSetting.getDatJob())){ File createPath = new File(SessionUtil.getPathFile("100000")); if (!createPath.exists()){ createPath.mkdir(); } // BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(filePath) ,"UTF-8")); BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(filePath),"TIS-620")); // // BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(filePath) ,"MS-874")); if (printerDataTxtFormList.size()>0){ for (int i=0; i lstPrintingData ,BigDecimal serverId ,BigDecimal sType){ Object[] obj = new Object[1]; MsgErrorForm msgErrorForm = new MsgErrorForm(); msgErrorForm.setErrorFlag(getBigDecimal("0")); msgErrorForm.setErrorDesc("Save successful"); obj[0] = msgErrorForm; try { EndrUserLoginBean loginForm = getUerLoginBean(request); Date dateSave = new Date(); List endrTmpDataPrintList = new ArrayList(); EndrTmpDataPrintBean endrTmpDataPrintForm = new EndrTmpDataPrintBean(); //String processId = DateUtil.toFormatString(new Date(), "ddMMyyyyHHmmss"); String processId = new Date().getTime()+""; if (VSMUtil.isNotEmptyLst(lstPrintingData) && lstPrintingData.size()>0){ for (int i = 0 ; i< lstPrintingData.size() ; i++){ PrintingDataForm printingDataFormSet = new PrintingDataForm(); BeanUtils.copyProperties(lstPrintingData.get(i), printingDataFormSet); endrTmpDataPrintForm = new EndrTmpDataPrintBean(); endrTmpDataPrintForm.setProcessId(processId); endrTmpDataPrintForm.setTaskId(printingDataFormSet.getTaskId()); endrTmpDataPrintForm.setUserId(loginForm.getUserId()); endrTmpDataPrintForm.setServerId(serverId); endrTmpDataPrintForm.setCreateBy(loginForm.getUserId()); endrTmpDataPrintForm.setCreateDate(dateSave); endrTmpDataPrintForm.setUpdateBy(loginForm.getUserId()); endrTmpDataPrintForm.setUpdateDate(dateSave); endrTmpDataPrintList.add(endrTmpDataPrintForm); } } boolean f = commonService.insertEndrTmpDataPrint(endrTmpDataPrintList); if(!f){ msgErrorForm.setErrorFlag(getBigDecimal("1")); msgErrorForm.setErrorDesc("Save error!!!"); }else{ boolean s = commonService.updateReject(processId ,sType); //if (!s){ //} } }catch (Exception e){ msgErrorForm.setErrorFlag(getBigDecimal("1")); msgErrorForm.setErrorDesc("Data not found"); log.error(e.toString(), e); } obj[0] = msgErrorForm; return obj; } }