Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package org.jleaf.pos.services.data;
- import java.io.PrintWriter;
- import java.io.StringWriter;
- import java.util.List;
- import org.jleaf.erp.master.MasterConstants;
- import org.jleaf.pos.PosBoConstants;
- import org.jleaf.pos.PosBoExceptionConstants;
- import org.jleaf.pos.services.AbstractPosJleafService;
- import org.jleaf.baseservices.util.ServiceUtil;
- import org.jleaf.core.CoreException;
- import org.jleaf.core.Dto;
- import org.jleaf.core.GeneralConstants;
- import org.jleaf.core.annotation.Info;
- import org.jleaf.core.annotation.InfoIn;
- import org.jleaf.core.annotation.InfoOut;
- import org.jleaf.core.annotation.ServiceDoc;
- import org.jleaf.util.DateUtil;
- /**
- * Do process trx receive log
- *
- * @author WTC, Jun 2, 2013
- * @version 1.0.0
- */
- @ServiceDoc
- //@formatter:off
- @InfoIn(value = {
- @Info(name = "result.header.userLoginId", description = "user login id", type = Long.class),
- @Info(name = "result.header.roleLoginId", description = "role login id", type = Long.class),
- @Info(name = "result.header.tenantLoginId", description = "tenant login id", type = Long.class),
- @Info(name = "result.header.datetime", description = "datetime", type = String.class),
- @Info(name = "result.header.sessionId", description = "session id", type = String.class),
- @Info(name = "result.header.secureKey", description = "secure key", type = String.class),
- @Info(name = "result.header.taskName", description = "task name", type = String.class),
- @Info(name = "result.payload.tenantId", description = "tenant id", type = Long.class)
- })
- @InfoOut(value = { })
- //@formatter:on
- public class DoProcessTrxReceiveLogService extends AbstractPosJleafService {
- @Override
- public String getTaskName() {
- return "doProcessTrxReceiveLog";
- }
- @SuppressWarnings("unchecked")
- @Override
- public Dto process(Dto inputDto) throws Exception {
- // Declaring Variables
- Dto inputDtoForCheckSysConfigValue;
- Dto outputDtoForCheckSysConfigValue;
- Dto inputDtoForFindParameterByIndex = null;
- Dto outputDtoForFindParameterByIndex = null;
- Dto inputDtoForValDoProcessTrxReceiveLog = null;
- Dto inputDtoForFindLatestTrxRcvLogByFlgProcess = null;
- Dto outputDtoForFindLatestTrxRcvLogByFlgProcess = null;
- Dto inputDtoForGetTrxRcvDataLogListByTrxRcvLogId = null;
- Dto outputDtoForGetTrxRcvDataLogListByTrxRcvLogId = null;
- Dto inputDtoForProcessTrxDataLog = null;
- Dto inputDtoForEditTrxRcvDataLog = null;
- Dto inputDtoForEditTrxRcvLog = null;
- Dto inputDtoForEditLastDataOutlet = null;
- // Validating Input Variables
- ServiceUtil.valNullParams(inputDto, "result.header.userLoginId", "result.header.roleLoginId", "result.payload.tenantId");
- // Validate this outlet is activated
- inputDtoForCheckSysConfigValue = new Dto();
- inputDtoForCheckSysConfigValue.put("tenantId", Long.parseLong(inputDto.getString("result.header.tenantLoginId")));
- inputDtoForCheckSysConfigValue.put("parameterCode", PosBoConstants.PARAM_ACTIVE_DATE_TIME);
- inputDtoForCheckSysConfigValue.put("value", GeneralConstants.SPACE_VALUE);
- outputDtoForCheckSysConfigValue = getBusinessFunction("isMatchSystemConfigValueByParameterCode").execute(inputDtoForCheckSysConfigValue);
- if (outputDtoForCheckSysConfigValue.getBoolean("isTrue"))
- throw new CoreException(PosBoExceptionConstants.VAL_OUTLET_ACTIVE);
- // Preparing
- Long userLoginId = Long.valueOf(inputDto.getString("result.header.userLoginId"));
- Long roleLoginId = Long.valueOf(inputDto.getString("result.header.roleLoginId"));
- Long tenantId = Long.valueOf(inputDto.getString("result.payload.tenantId"));
- // Get parameter ouId from master parameter
- inputDtoForFindParameterByIndex = new Dto();
- inputDtoForFindParameterByIndex.put("tenantId", tenantId);
- inputDtoForFindParameterByIndex.put("parameterCode", PosBoConstants.PARAM_OU_ID);
- outputDtoForFindParameterByIndex = getBusinessFunction("findSystemConfigByParamCode").execute(
- inputDtoForFindParameterByIndex);
- Long ouId = Long.valueOf(outputDtoForFindParameterByIndex.getString("value"));
- // Check is user can do process receive log
- inputDtoForValDoProcessTrxReceiveLog = new Dto();
- inputDtoForValDoProcessTrxReceiveLog.put("tenantId", tenantId);
- inputDtoForValDoProcessTrxReceiveLog.put("ouId", ouId);
- getBusinessFunction("valDoProcessTrxReceiveLog").execute(inputDtoForValDoProcessTrxReceiveLog);
- // Find latest receive log that not be processed yet
- inputDtoForFindLatestTrxRcvLogByFlgProcess = new Dto();
- inputDtoForFindLatestTrxRcvLogByFlgProcess.put("tenantId", tenantId);
- inputDtoForFindLatestTrxRcvLogByFlgProcess.put("ouId", ouId);
- inputDtoForFindLatestTrxRcvLogByFlgProcess.put("flgProcess", GeneralConstants.NO);
- outputDtoForFindLatestTrxRcvLogByFlgProcess = getBusinessFunction("findLatestTrxRcvLogByFlgProcess").execute(
- inputDtoForFindLatestTrxRcvLogByFlgProcess);
- Long trxRcvLogId = outputDtoForFindLatestTrxRcvLogByFlgProcess.getLong("id");
- // Get Receive Data Log
- inputDtoForGetTrxRcvDataLogListByTrxRcvLogId = new Dto();
- inputDtoForGetTrxRcvDataLogListByTrxRcvLogId.put("trxRcvLogId", trxRcvLogId);
- outputDtoForGetTrxRcvDataLogListByTrxRcvLogId = getBusinessFunction("getTrxRcvDataLogListByTrxRcvLogId").execute(
- inputDtoForGetTrxRcvDataLogListByTrxRcvLogId);
- List<Dto> rcvDataLogList = outputDtoForGetTrxRcvDataLogListByTrxRcvLogId.getList("trxRcvDataLogList");
- boolean isContinue = true;
- Long lastTrxDataLogId = 0L;
- String nowDatetime;
- for (Dto rcvDataLogDto : rcvDataLogList) {
- String remark = GeneralConstants.EMPTY_VALUE;
- try {
- // Just do the process if there is no error on the process before
- if (isContinue) {
- lastTrxDataLogId = rcvDataLogDto.getLong("trxDataLogId");
- // Preparing log (dbVersion;typeData;modeLog;dataLog)
- String log = rcvDataLogDto.getString("dbVersion").concat(MasterConstants.LOG_DATA_SEPARATOR)
- .concat(rcvDataLogDto.getString("typeData")).concat(MasterConstants.LOG_DATA_SEPARATOR)
- .concat(rcvDataLogDto.getString("modeLog")).concat(MasterConstants.LOG_DATA_SEPARATOR)
- .concat(rcvDataLogDto.getString("dataLog"));
- // Processing detail data
- inputDtoForProcessTrxDataLog = new Dto();
- inputDtoForProcessTrxDataLog.put("log", log);
- inputDtoForProcessTrxDataLog.put("userLoginId", userLoginId);
- inputDtoForProcessTrxDataLog.put("datetime", inputDto.get("result.header.datetime"));
- getBusinessTransaction("processTrxDataLog").execute(inputDtoForProcessTrxDataLog);
- }
- } catch (Exception e) {
- e.printStackTrace();
- // Give the flag false when there is error
- isContinue = false;
- remark = getFullPrintStackTrace(e).substring(0, 1000);
- } finally {
- nowDatetime = DateUtil.dateTimeNow();
- // Edit flag in receive data log to Success
- inputDtoForEditTrxRcvDataLog = new Dto();
- inputDtoForEditTrxRcvDataLog.put("id", rcvDataLogDto.getLong("id"));
- inputDtoForEditTrxRcvDataLog.put("flgProcess", isContinue ? GeneralConstants.YES : GeneralConstants.FAIL);
- inputDtoForEditTrxRcvDataLog.put("processDatetime", nowDatetime);
- inputDtoForEditTrxRcvDataLog.put("processUserId", userLoginId);
- inputDtoForEditTrxRcvDataLog.put("remark", remark);
- inputDtoForEditTrxRcvDataLog.put("version", rcvDataLogDto.getLong("version"));
- inputDtoForEditTrxRcvDataLog.put("userLoginId", userLoginId);
- inputDtoForEditTrxRcvDataLog.put("roleLoginId", roleLoginId);
- inputDtoForEditTrxRcvDataLog.put("tenantLoginId", tenantId);
- inputDtoForEditTrxRcvDataLog.put("datetime", nowDatetime);
- getBusinessTransaction("editTrxRcvDataLog").execute(inputDtoForEditTrxRcvDataLog);
- if (!isContinue) {
- break;
- }
- }
- }
- nowDatetime = DateUtil.dateTimeNow();
- // Change Header Receive Log
- inputDtoForEditTrxRcvLog = new Dto();
- inputDtoForEditTrxRcvLog.put("id", trxRcvLogId);
- inputDtoForEditTrxRcvLog.put("flgProcess", isContinue ? GeneralConstants.YES : GeneralConstants.FAIL);
- inputDtoForEditTrxRcvLog.put("processDatetime", nowDatetime);
- inputDtoForEditTrxRcvLog.put("processUserId", userLoginId);
- inputDtoForEditTrxRcvLog.put("remark", isContinue ? GeneralConstants.EMPTY_VALUE : lastTrxDataLogId);
- inputDtoForEditTrxRcvLog.put("version", outputDtoForFindLatestTrxRcvLogByFlgProcess.getLong("version"));
- inputDtoForEditTrxRcvLog.put("userLoginId", userLoginId);
- inputDtoForEditTrxRcvLog.put("roleLoginId", roleLoginId);
- inputDtoForEditTrxRcvLog.put("tenantLoginId", tenantId);
- inputDtoForEditTrxRcvLog.put("datetime", nowDatetime);
- getBusinessTransaction("editTrxRcvLog").execute(inputDtoForEditTrxRcvLog);
- // Change Last Data log Id
- inputDtoForEditLastDataOutlet = new Dto();
- inputDtoForEditLastDataOutlet.put("ouId", ouId);
- inputDtoForEditLastDataOutlet.put("trxDataLogId", lastTrxDataLogId);
- inputDtoForEditLastDataOutlet.put("userLoginId", userLoginId);
- inputDtoForEditLastDataOutlet.put("roleLoginId", roleLoginId);
- inputDtoForEditLastDataOutlet.put("tenantLoginId", tenantId);
- inputDtoForEditLastDataOutlet.put("datetime", nowDatetime);
- getBusinessTransaction("editLastDataOutletOfTrx").execute(inputDtoForEditLastDataOutlet);
- return null;
- }
- /**
- * Get Full Stack Trace in String
- *
- * http://stackoverflow.com/questions/4812570/how-to-store-printstacktrace-into-a-string
- * @param ex
- * @return
- */
- private String getFullPrintStackTrace(Throwable ex) {
- StringWriter errors = new StringWriter();
- ex.printStackTrace(new PrintWriter(errors));
- return errors.toString();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement