ENDRPrint_12CRelease/.svn/pristine/81/81299c3e87dc879d5abe0e6bf8742fc45a15951d.svn-base

485 lines
22 KiB
Plaintext
Raw Normal View History

2024-08-14 10:58:03 +07:00
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.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.TextContent;
import th.co.muangthai.endrprint.controller.service.ftp.FTPUtil;
import th.co.muangthai.endrprint.util.VSMUtil;
import javax.servlet.http.HttpServletRequest;
import java.io.*;
import java.io.File;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
* Service Controller For ENDR001Controller
*/
public class ENDR001Service extends AbstractMasterController {
private Logger log = Logger.getLogger(ENDR001Service.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<PrintingDataForm> 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<PrinterDataTxtForm> printerDataTxtFormList = new ArrayList<PrinterDataTxtForm>();
try {
EndrUserLoginBean loginForm = getUerLoginBean(request);
Date dateSave = new Date();
List<EndrTmpDataPrintBean> endrTmpDataPrintList = new ArrayList<EndrTmpDataPrintBean>();
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<PrinterDataTxtForm>();
printerDataTxtFormList = commonService.searchPrinterDataTxtFormPkg(processId, sType);
log.info("printerDataTxtFormList size --> " + printerDataTxtFormList.size());
if (VSMUtil.isNotEmptyLst(printerDataTxtFormList)) {
List<PrinterDataTxtForm> printerDataTxtFormListWrite = new ArrayList<PrinterDataTxtForm>();
List<PrinterDataTxtForm> printerDataTxtList = new ArrayList<PrinterDataTxtForm>();
PrinterDataTxtForm form = null;
for (int i = 0; i < printerDataTxtFormList.size(); i++) {
if (printerDataTxtFormList.size() == 1) {
printerDataTxtList = new ArrayList<PrinterDataTxtForm>();
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<PrinterDataTxtForm>();
for (int j = 0; j < printerDataTxtFormList.size(); j++) {
if (form.getDatJob().equals(printerDataTxtFormList.get(j).getDatJob())) {
PrinterDataTxtForm formSet = new PrinterDataTxtForm();
formSet = printerDataTxtFormList.get(j);
printerDataTxtList.add(formSet);
}
}
form.setPrinterDataTxtLst(printerDataTxtList);
printerDataTxtFormListWrite.add(form);
}
} else {
msgErrorForm.setErrorFlag(getBigDecimal("1"));
msgErrorForm.setErrorDesc("record is not team");
obj[0] = msgErrorForm;
//return obj;
}
} else {
form = new PrinterDataTxtForm();
form = printerDataTxtFormList.get(i);
//printerDataTxtList.add(form);
printerDataTxtList = new ArrayList<PrinterDataTxtForm>();
for (int j = 0; j < printerDataTxtFormList.size(); j++) {
if (form.getDatJob().equals(printerDataTxtFormList.get(j).getDatJob())) {
PrinterDataTxtForm formSet = new PrinterDataTxtForm();
formSet = printerDataTxtFormList.get(j);
printerDataTxtList.add(formSet);
}
}
form.setPrinterDataTxtLst(printerDataTxtList);
printerDataTxtFormListWrite.add(form);
}
}
}
if (printerDataTxtFormListWrite.size() > 0) {
List<PrinterDataTxtForm> lst = new ArrayList<PrinterDataTxtForm>();
for (PrinterDataTxtForm data : printerDataTxtFormListWrite) {
lst = new ArrayList<PrinterDataTxtForm>();
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<PrinterDataTxtForm> 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 < printerDataTxtFormList.size(); i++) {
PrinterDataTxtForm data = new PrinterDataTxtForm();
data = printerDataTxtFormList.get(i);
if (i == 0) {
if (VSMUtil.isNotEmpty(data.getDatPrinter()))
out.write(new String(data.getDatPrinter().getBytes(), "TIS-620"));
out.write("\r\n");
//out.newLine();
}
out.write(data.getDatData());
//out.newLine();
//out.write(VSMUtil.NEW_LINE);
out.write("\r\n");
}
}
//out.flush();
out.close();
log.info("write file to " + filePath + " successful ...");
} else {
msgErrorForm.setErrorFlag(getBigDecimal("1"));
msgErrorForm.setErrorDesc("FileName is null !!!");
log.info("write file to " + filePath + " fail ,Invalid FileName.");
}
} catch (Exception e) {
msgErrorForm.setErrorFlag(getBigDecimal("1"));
msgErrorForm.setErrorDesc(e.getMessage());
log.error(e.toString(), e);
}
obj[0] = msgErrorForm;
obj[1] = filePath;
obj[2] = dataSetting;
return obj;
}
/**
* Transfer/Upload .dat file to server by ftp process
*
* @param hostname - server ftp IP
* @param port - server ftp port
* @param username server ftp username login
* @param password server ftp password login
* @param localFileNames - path of source file
* @param remotePath - file name to transfer
* @param ftpDirectory - directory for destination
* @return Object[] results
*/
public Object[] ftpUploadFile(String hostname, int port, String username, String password, String localFileNames, String remotePath, String ftpDirectory) {
Object[] obj = new Object[1];
MsgErrorForm msgErrorForm = new MsgErrorForm();
msgErrorForm.setErrorFlag(getBigDecimal("0"));
msgErrorForm.setErrorDesc("Transfer file successful");
obj[0] = msgErrorForm;
try {
boolean a = ftpService.putFile(hostname, port, username, password, remotePath, localFileNames, ftpDirectory);
// boolean a = false;
if (a) {
msgErrorForm.setErrorFlag(getBigDecimal("0"));
msgErrorForm.setErrorDesc("Transfer file successful");
} else {
msgErrorForm.setErrorFlag(getBigDecimal("1"));
msgErrorForm.setErrorDesc("Transfer file fail");
}
} catch (Exception e) {
msgErrorForm.setErrorFlag(getBigDecimal("1"));
msgErrorForm.setErrorDesc(e.getMessage());
log.error(e.toString(), e);
}
obj[0] = msgErrorForm;
return obj;
}
/**
* Delete source file when transfer successful
*
* @param pathFile - path file for delete
* @return Object[] results
*/
public Object[] deleteTxtFile(String pathFile) {
Object[] obj = new Object[3];
MsgErrorForm msgErrorForm = new MsgErrorForm();
msgErrorForm.setErrorFlag(getBigDecimal("0"));
msgErrorForm.setErrorDesc("Delete successful");
obj[0] = msgErrorForm;
try {
String pathFileForDelete = pathFile.replace("//", "\\");
pathFileForDelete = pathFileForDelete.replace("/", "\\");
File f = null;
f = new File(pathFileForDelete);
log.info("Delete file " + f + " start...");
boolean success = f.delete();
if (success) {
msgErrorForm.setErrorFlag(getBigDecimal("0"));
msgErrorForm.setErrorDesc("Delete successful");
log.info("Delete file " + f + " successful...");
} else {
msgErrorForm.setErrorFlag(getBigDecimal("1"));
msgErrorForm.setErrorDesc("Delete fail");
log.info("Delete file " + f + " fail...");
}
} catch (Exception e) {
msgErrorForm.setErrorFlag(getBigDecimal("1"));
msgErrorForm.setErrorDesc(e.getMessage());
log.error(e.toString(), e);
}
obj[0] = msgErrorForm;
return obj;
}
/**
* 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[] rejectData(HttpServletRequest request, List<PrintingDataForm> 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<EndrTmpDataPrintBean> endrTmpDataPrintList = new ArrayList<EndrTmpDataPrintBean>();
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;
}
}