ENDRPrint/.svn/pristine/04/04dd26fc5bcc0b877dd56c5f7d77ab073d11cf93.svn-base
2024-08-14 10:33:27 +07:00

480 lines
22 KiB
Plaintext

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;
}
}