Files
HRMS/hrmsEjb/wenrgise/workflow/utility/RouteHandler.java
2025-07-28 13:56:49 +05:30

285 lines
12 KiB
Java

package wenrgise.workflow.utility;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.logging.Logger;
import wenrgise.common.exception.EnrgiseApplicationException;
import wenrgise.common.exception.EnrgiseSystemException;
import wenrgise.common.utility.UserInfo;
import wenrgise.common.vo.BaseHeaderVO;
import wenrgise.ejb.common.helper.DBObject;
import wenrgise.ejb.common.helper.QueryRow;
import wenrgise.ejb.common.utility.DBUtilitiesBean;
import wenrgise.workflow.bean.WflDocMstAttrDtlBean;
import wenrgise.workflow.core.WflDepartment;
import wenrgise.workflow.core.WflDocumentInfo;
import wenrgise.workflow.core.impl.WflDepartmentImpl;
import wenrgise.workflow.core.impl.WflResourceImpl;
import wenrgise.workflow.ejb.business.WflDocMstBO;
public class RouteHandler {
public static final Logger log = Logger.getLogger("wenrgise.workflow.utility.RouteHandler");
private Node nodeInfo;
private String routeDtlId;
private String activityId;
private String dtlDocId;
private String notifFlag;
public Node getNodeInfo() {
return this.nodeInfo;
}
public void setNodeInfo(Node newNodeInfo) {
this.nodeInfo = newNodeInfo;
}
public String getRouteDtlId() {
return this.routeDtlId;
}
public void setRouteDtlId(String newRouteDtlId) {
this.routeDtlId = newRouteDtlId;
}
public String getActivityId() {
return this.activityId;
}
public void setActivityId(String newActivityId) {
this.activityId = newActivityId;
}
public String getDtlDocId() {
return this.dtlDocId;
}
public void setDtlDocId(String newDtlDocId) {
this.dtlDocId = newDtlDocId;
}
public String getNotifFlag() {
return this.notifFlag;
}
public void setNotifFlag(String newNotifFlag) {
this.notifFlag = newNotifFlag;
}
public ArrayList findNextApprover(WflDocumentInfo wflDocInfo) throws EnrgiseSystemException, EnrgiseApplicationException {
ArrayList oParameters = new ArrayList();
DBUtilitiesBean oBean = new DBUtilitiesBean();
Timestamp oWhenPicked = null;
int count = 0;
BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO();
oParameters = new ArrayList();
log.severe(String.valueOf("Route Id ").concat(String.valueOf(getRouteDtlId())));
oParameters.add(new DBObject(1, 1, 12, getRouteDtlId()));
oParameters.add(new DBObject(2, 2, -10));
oParameters.add(new DBObject(3, 2, 12));
oParameters.add(new DBObject(4, 2, 12));
oParameters.add(new DBObject(5, 2, 4));
ArrayList oOutArray = oBean.callProc(oParameters, "WFLWORKLIST.proc_GetNextLevelConditions(?,?,?,?,?)");
DBObject oOutObject = oOutArray.get(0);
ArrayList oList = (ArrayList)oOutObject.getObject();
String condtitionExpr = null;
String conditionValue = null;
String condtitionId = null;
QueryRow oRow = null;
Iterator oIt = oList.iterator();
if (oIt.hasNext()) {
WflDocMstBO oWflDocMstBO = new WflDocMstBO();
UserInfo oUserInfo = new UserInfo();
oUserInfo.setUserId(wflDocInfo.getRequester().getUserId());
oUserInfo.setSiteId(wflDocInfo.getRequester().getLoginSite().getSiteId());
oUserInfo.setUserSystemId(wflDocInfo.getRequester().getEmployeeId());
oUserInfo.setSiteName(wflDocInfo.getRequester().getLoginSite().getSiteName());
oWflDocMstBO.setOUserInfo(oUserInfo);
long oDocAttrCount = oWflDocMstBO.getWflDocTypeAttrDtlMetaInfo(wflDocInfo.getDocumentId()).getRecordCount();
ArrayList arylstDocType = oWflDocMstBO.getWflDocTypeAttrDtlInfo(wflDocInfo.getDocumentId(), 1L, oDocAttrCount);
Iterator oIt1 = arylstDocType.iterator();
HashMap oDocAttrTypeMap = new HashMap();
while (oIt1.hasNext()) {
WflDocMstAttrDtlBean oWflDocMstAttrDtlBean = oIt1.next();
oDocAttrTypeMap.put(oWflDocMstAttrDtlBean.getTxtAttrName(), oWflDocMstAttrDtlBean.getTxtType());
}
oRow = oIt.next();
condtitionId = oRow.get("conditionId").getString();
condtitionExpr = oRow.get("conditionExpr").getString();
ConditionChecker cc = new ConditionChecker();
conditionValue = String.valueOf(cc.checkCondition(condtitionExpr, wflDocInfo.getDocumentAttributes(), oDocAttrTypeMap));
}
ArrayList oResourceList = new ArrayList();
String activityCode = WorkFlowUtil.getActivityCode(wflDocInfo.getRequesterAction());
if (!activityCode.equalsIgnoreCase("Reject")) {
log.severe(String.valueOf("Approve ").concat(String.valueOf(getRouteDtlId())));
log.severe(String.valueOf("Approve Cond ").concat(String.valueOf(condtitionId)));
log.severe(String.valueOf("Approve Cond value ").concat(String.valueOf(conditionValue)));
oOutArray = new ArrayList();
oParameters = new ArrayList();
oParameters.add(new DBObject(1, 1, 12, getRouteDtlId()));
oParameters.add(new DBObject(2, 1, 12, condtitionId));
oParameters.add(new DBObject(3, 1, 12, conditionValue));
oParameters.add(new DBObject(4, 2, -10));
oParameters.add(new DBObject(5, 2, 12));
oParameters.add(new DBObject(6, 2, 12));
oParameters.add(new DBObject(7, 2, 4));
oOutArray = oBean.callProc(oParameters, "WFLWORKLIST.proc_GetNextLevelRouteDtls(?,?,?,?,?,?,?)");
oList = new ArrayList();
oOutObject = new DBObject();
oOutObject = oOutArray.get(0);
oList = (ArrayList)oOutObject.getObject();
oRow = null;
Iterator oIt1 = oList.iterator();
while (oIt1.hasNext()) {
oRow = oIt1.next();
String sToRouteDtlId = oRow.get("routeDtlId").getString();
String splitJoinFlag = oRow.get("splitJoinFlag").getString();
getNextLevelApprovers(wflDocInfo, splitJoinFlag, sToRouteDtlId, oResourceList);
}
} else {
oOutArray = new ArrayList();
oParameters = new ArrayList();
log.severe(String.valueOf("Reject ").concat(String.valueOf(getRouteDtlId())));
log.severe(String.valueOf("Reject Cond ").concat(String.valueOf(condtitionId)));
log.severe(String.valueOf("Reject Cond value ").concat(String.valueOf(conditionValue)));
oParameters.add(new DBObject(1, 1, 12, getRouteDtlId()));
oParameters.add(new DBObject(2, 1, 12, condtitionId));
oParameters.add(new DBObject(3, 1, 12, conditionValue));
oParameters.add(new DBObject(4, 2, -10));
oParameters.add(new DBObject(5, 2, 12));
oParameters.add(new DBObject(6, 2, 12));
oParameters.add(new DBObject(7, 2, 4));
oOutArray = oBean.callProc(oParameters, "WFLWORKLIST.proc_NextLevelRouteDtlsReject(?,?,?,?,?,?,?)");
oList = new ArrayList();
oOutObject = new DBObject();
oOutObject = oOutArray.get(0);
oList = (ArrayList)oOutObject.getObject();
oRow = null;
Iterator oIt1 = oList.iterator();
while (oIt1.hasNext()) {
oRow = oIt1.next();
String sToRouteDtlId = oRow.get("routeDtlId").getString();
String splitJoinFlag = oRow.get("splitJoinFlag").getString();
getNextLevelApproversForReject(wflDocInfo, splitJoinFlag, sToRouteDtlId, oResourceList);
}
}
return oResourceList;
}
public ArrayList getNextLevelApproversForReject(WflDocumentInfo wflDocInfo, String splitJoinFlag, String sToRouteDtlId, ArrayList oResourceList) throws EnrgiseSystemException, EnrgiseApplicationException {
ArrayList oOutArray = new ArrayList();
ArrayList oParameters = new ArrayList();
DBUtilitiesBean oBean = new DBUtilitiesBean();
oParameters.add(new DBObject(1, 1, 12, sToRouteDtlId));
oParameters.add(new DBObject(2, 1, 12, splitJoinFlag));
oParameters.add(new DBObject(3, 1, 12, wflDocInfo.getWorkListId()));
oParameters.add(new DBObject(4, 2, -10));
oParameters.add(new DBObject(5, 2, 12));
oParameters.add(new DBObject(6, 2, 12));
oParameters.add(new DBObject(7, 2, 4));
oOutArray = oBean.callProc(oParameters, "WFLWORKLIST.proc_NextLevelApproversReject(?,?,?,?,?,?,?)");
DBObject oOutObject = oOutArray.get(0);
ArrayList oList = (ArrayList)oOutObject.getObject();
if (oList != null) {
QueryRow oRow = null;
Iterator oIt = oList.iterator();
while (oIt.hasNext()) {
oRow = oIt.next();
WflResourceImpl wflResourceImpl = new WflResourceImpl();
WflDepartmentImpl wflDepartmentImpl = new WflDepartmentImpl();
wflDepartmentImpl.setDepartmentId(oRow.get("departmentId").getString());
wflDepartmentImpl.setDepartmentName(oRow.get("departmentName").getString());
wflResourceImpl.setDepartment((WflDepartment)wflDepartmentImpl);
wflResourceImpl.setEmployeeId(oRow.get("empId").getString());
wflResourceImpl.setEmpNo(oRow.get("empNo").getString());
wflResourceImpl.setRouteDtlId(sToRouteDtlId);
oResourceList.add(wflResourceImpl);
}
}
return oResourceList;
}
public ArrayList getNextLevelApprovers(WflDocumentInfo wflDocInfo, String splitJoinFlag, String sToRouteDtlId, ArrayList oResourceList) throws EnrgiseSystemException, EnrgiseApplicationException {
ArrayList oOutArray = new ArrayList();
ArrayList oParameters = new ArrayList();
DBUtilitiesBean oBean = new DBUtilitiesBean();
log.severe(String.valueOf("Route Id ").concat(String.valueOf(sToRouteDtlId)));
log.severe(String.valueOf("Split Join Flag ").concat(String.valueOf(splitJoinFlag)));
log.severe(String.valueOf("Requester Emp Id ").concat(String.valueOf(wflDocInfo.getRequester().getEmployeeId())));
oParameters.add(new DBObject(1, 1, 12, sToRouteDtlId));
oParameters.add(new DBObject(2, 1, 12, splitJoinFlag));
oParameters.add(new DBObject(3, 1, 12, wflDocInfo.getRequester().getEmployeeId()));
oParameters.add(new DBObject(4, 2, -10));
oParameters.add(new DBObject(5, 2, 12));
oParameters.add(new DBObject(6, 2, 12));
oParameters.add(new DBObject(7, 2, 4));
oOutArray = oBean.callProc(oParameters, "WFLWORKLIST.proc_GetNextLevelApprovers(?,?,?,?,?,?,?)");
DBObject oOutObject = oOutArray.get(0);
ArrayList oList = (ArrayList)oOutObject.getObject();
if (oList != null) {
QueryRow oRow = null;
Iterator oIt = oList.iterator();
while (oIt.hasNext()) {
oRow = oIt.next();
WflResourceImpl wflResourceImpl = new WflResourceImpl();
WflDepartmentImpl wflDepartmentImpl = new WflDepartmentImpl();
wflDepartmentImpl.setDepartmentId(oRow.get("departmentId").getString());
wflDepartmentImpl.setDepartmentName(oRow.get("departmentName").getString());
wflResourceImpl.setDepartment((WflDepartment)wflDepartmentImpl);
wflResourceImpl.setEmployeeId(oRow.get("empId").getString());
wflResourceImpl.setEmpNo(oRow.get("empNo").getString());
wflResourceImpl.setDelegatedBy(oRow.get("delegatedBy").getString());
wflResourceImpl.setRouteDtlId(sToRouteDtlId);
oResourceList.add(wflResourceImpl);
}
}
return oResourceList;
}
public void populateData() throws EnrgiseSystemException, EnrgiseApplicationException {
ArrayList oParameters = new ArrayList();
DBUtilitiesBean oBean = new DBUtilitiesBean();
Timestamp oWhenPicked = null;
int count = 0;
BaseHeaderVO oBaseHeaderVO = new BaseHeaderVO();
oParameters = new ArrayList();
oParameters.add(new DBObject(1, 1, 12, getRouteDtlId()));
oParameters.add(new DBObject(2, 1, 12, getDtlDocId()));
oParameters.add(new DBObject(3, 1, 12, getActivityId()));
Node nodeInfo = getNodeInfo();
if (nodeInfo != null) {
oParameters.add(new DBObject(4, 1, 12, nodeInfo.getLane()));
oParameters.add(new DBObject(5, 1, 12, nodeInfo.getLevel()));
} else {
oParameters.add(new DBObject(4, 1, 12, null));
oParameters.add(new DBObject(5, 1, 12, null));
}
oParameters.add(new DBObject(6, 2, -10));
oParameters.add(new DBObject(7, 2, 12));
oParameters.add(new DBObject(8, 2, 12));
oParameters.add(new DBObject(9, 2, 4));
ArrayList oOutArray = oBean.callProc(oParameters, "WFLWORKLIST.proc_GetRouteDtlInfo(?,?,?,?,?,?,?,?,?)");
DBObject oOutObject = oOutArray.get(0);
ArrayList oList = (ArrayList)oOutObject.getObject();
if (oList.size() <= 0)
throw new EnrgiseApplicationException("wenrgise.workflow.norecordfound", "M");
QueryRow oRow = null;
Iterator oIt = oList.iterator();
if (oIt.hasNext()) {
oRow = oIt.next();
setRouteDtlId(oRow.get("routeDtlId").getString());
setDtlDocId(oRow.get("dtlDocId").getString());
setActivityId(oRow.get("activityId").getString());
setNodeInfo(new Node(oRow.get("lane").getString(), oRow.get("level_number").getString()));
setNotifFlag(oRow.get("notification_flag").getString());
}
}
}