/* * eGov suite of products aim to improve the internal efficiency,transparency, * accountability and the service delivery of the government organizations. * * Copyright (C) <2015> eGovernments Foundation * * The updated version of eGov suite of products as by eGovernments Foundation * is available at http://www.egovernments.org * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see http://www.gnu.org/licenses/ or * http://www.gnu.org/licenses/gpl.html . * * In addition to the terms of the GPL license to be adhered to in using this * program, the following additional terms are to be complied with: * * 1) All versions of this program, verbatim or modified must carry this * Legal Notice. * * 2) Any misrepresentation of the origin of the material is prohibited. It * is required that all modified versions of this material be marked in * reasonable ways as different from the original version. * * 3) This license does not grant any rights to any user of the program * with regards to rights under trademark law for use of the trade names * or trademarks of eGovernments Foundation. * * In case of any queries, you can reach eGovernments Foundation at contact@egovernments.org. */ package org.egov.works.web.actions.measurementbook; import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; import org.egov.eis.entity.Assignment; import org.egov.eis.service.AssignmentService; import org.egov.infra.admin.master.entity.Department; import org.egov.infra.exception.ApplicationRuntimeException; import org.egov.commons.exception.NoSuchObjectException; import org.egov.infra.script.service.ScriptService; import org.egov.infra.web.struts.actions.BaseFormAction; import org.egov.pims.commons.Designation; import org.egov.pims.commons.dao.DesignationMasterDAO; import org.egov.pims.service.EisUtilService; import org.egov.pims.service.PersonalInformationService; import org.egov.works.abstractestimate.entity.AbstractEstimate; import org.egov.works.models.measurementbook.MBHeader; import org.egov.works.models.workorder.WorkOrder; import org.egov.works.models.workorder.WorkOrderActivity; import org.egov.works.services.MeasurementBookService; import org.egov.works.services.WorksService; import org.springframework.beans.factory.annotation.Autowired; import javax.script.ScriptContext; import java.util.ArrayList; import java.util.Collections; import java.util.Date; import java.util.HashMap; import java.util.LinkedList; import java.util.List; public class AjaxMeasurementBookAction extends BaseFormAction { private static final long serialVersionUID = 3154955519825652739L; private static final Logger logger = Logger.getLogger(AjaxMeasurementBookAction.class); private static final String USERS_IN_DEPT = "usersInDept"; private static final String DESIGN_FOR_EMP = "designForEmp"; private static final String WORK_ORDER_DETAILS = "workOrderDetails"; private static final String ACTIVITY_DETAILS = "activityDetails"; private static final String WORKFLOW_USER_LIST = "workflowUsers"; private static final String WORKFLOW_DESIG_LIST = "workflowDesignations"; private static final String CHANGE_QUANTITY = "CHANGE_QUANTITY"; private MeasurementBookService measurementBookService; @Autowired private AssignmentService assignmentService; private Assignment assignment; private Long empID; private Long executingDepartment; private List usersInExecutingDepartment; private WorkOrder workOrder; private String workOrderNumber; private Long woActivityId; private Long mbHeaderId; private WorkOrderActivity workOrderActivity; private Double prevCulmEntry; private Double totalEstQuantity; // -----------------------Manual Workflow ---------------------------- private EisUtilService eisService; private Integer departmentId; private Integer designationId; private String scriptName; private String stateName; private Long modelId; private String modelType; private Integer wardId; private List workflowKDesigList; private List workflowUsers; private PersonalInformationService personalInformationService; private WorksService worksService; private String activityRemarks; // ------------------------------------------------------------------- private String query = ""; private List<AbstractEstimate> estimateList = new LinkedList<AbstractEstimate>(); private List<WorkOrder> workOrderList = new LinkedList<WorkOrder>(); private List<MBHeader> mbHeaderList = new LinkedList<MBHeader>(); private Long estId; private Date latestMBDate; private Long woId; @Autowired private ScriptService scriptService; @Override public Object getModel() { return null; } public String designationForUser() { try { assignment = assignmentService.getPrimaryAssignmentForEmployee(empID); } catch (final Exception e) { throw new ApplicationRuntimeException("user.find.error", e); } return DESIGN_FOR_EMP; } public String usersInExecutingDepartment() { try { final HashMap<String, Object> criteriaParams = new HashMap<String, Object>(); criteriaParams.put("departmentId", executingDepartment); if (executingDepartment == null || executingDepartment == -1) usersInExecutingDepartment = Collections.EMPTY_LIST; else usersInExecutingDepartment = personalInformationService.getListOfEmployeeViewBasedOnCriteria( criteriaParams, -1, -1); } catch (final Exception e) { throw new ApplicationRuntimeException("user.find.error", e); } logger.info( "Success ajax call to 'usersInExecutingDepartment' ----------------------------------------------------------"); return USERS_IN_DEPT; } public String workOrderDetails() { try { workOrder = (WorkOrder) persistenceService.find("from WorkOrder where workOrderNumber=?", workOrderNumber); if (workOrder != null) { final HashMap<String, Object> criteriaParams = new HashMap<String, Object>(); criteriaParams.put("departmentId", executingDepartment); criteriaParams.put("isPrimary", "Y"); if (executingDepartment == null || executingDepartment == -1) usersInExecutingDepartment = Collections.EMPTY_LIST; else usersInExecutingDepartment = personalInformationService.getListOfEmployeeViewBasedOnCriteria( criteriaParams, -1, -1); } } catch (final Exception e) { throw new ApplicationRuntimeException("workorder.find.error", e); } logger.info("Success ajax call to 'workOrderDetails' ----------------------------------------------------------"); return WORK_ORDER_DETAILS; } public String activityDetails() { prevCulmEntry = null; activityRemarks = ""; try { workOrderActivity = (WorkOrderActivity) persistenceService.find("from WorkOrderActivity where id=?", woActivityId); prevCulmEntry = measurementBookService.prevCumulativeQuantityIncludingCQ(woActivityId, mbHeaderId, workOrderActivity.getActivity().getId(), workOrderActivity.getWorkOrderEstimate().getWorkOrder()); if (modelType != null && modelType.equalsIgnoreCase("MB")) totalEstQuantity = measurementBookService.totalEstimatedQuantity(woActivityId, null, workOrderActivity .getActivity().getId(), workOrderActivity.getWorkOrderEstimate().getWorkOrder()); // This // considers // work // order // activities // where // the // associated // Est/REs // are // approved else totalEstQuantity = measurementBookService.totalEstimatedQuantityForRE(woActivityId, null, workOrderActivity.getActivity().getId(), workOrderActivity.getWorkOrderEstimate() .getWorkOrder()); // This considers work order // activities where the // associated Est/REs are not // cancelled final WorkOrderActivity revWorkOrderActivity = (WorkOrderActivity) persistenceService .find("from WorkOrderActivity where activity.parent.id=? and workOrderEstimate.estimate.egwStatus.code !='CANCELLED' ", workOrderActivity.getActivity().getId()); if (revWorkOrderActivity != null) activityRemarks = CHANGE_QUANTITY; } catch (final Exception e) { throw new ApplicationRuntimeException("activity.find.error", e); } return ACTIVITY_DETAILS; } public String getWorkFlowUsers() { if (designationId != -1) { final HashMap<String, Object> paramMap = new HashMap<String, Object>(); if (departmentId != null && departmentId != -1) paramMap.put("departmentId", departmentId.toString()); if (wardId != null && wardId != -1) paramMap.put("boundaryId", wardId.toString()); paramMap.put("designationId", designationId.toString()); final List roleList = worksService.getWorksRoles(); if (roleList != null) paramMap.put("roleList", roleList); workflowUsers = eisService.getEmployeeInfoList(paramMap); } return WORKFLOW_USER_LIST; } public String getDesgByDeptAndType() { workflowKDesigList = new ArrayList<Designation>(); String departmentName = ""; Department department = null; if (departmentId != -1) { department = (Department) getPersistenceService().find("from Department where id=?", departmentId); departmentName = department.getName(); } Designation designation = null; MBHeader mbHeader = null; if (modelId != null) mbHeader = (MBHeader) getPersistenceService().find("from MBHeader where id=?", modelId); final ScriptContext scriptContext = ScriptService.createContext("state", stateName, "department", departmentName, "wfItem", mbHeader); final List<String> list = (List<String>) scriptService.executeScript(scriptName, scriptContext); // Script validScript = (Script) // persistenceService.findAllByNamedQuery(Script.BY_NAME,scriptName).get(0); // List<String> list = (List<String>) // validScript.eval(Script.createContext("state",stateName,"department",departmentName,"wfItem",mbHeader)); for (final String desgName : list) if (desgName.trim().length() != 0) try { designation = new DesignationMasterDAO().getDesignationByDesignationName(desgName); workflowKDesigList.add(designation); } catch (final NoSuchObjectException e) { logger.error(e); } return WORKFLOW_DESIG_LIST; } public String searchEstimateNumber() { String strquery = ""; final ArrayList<Object> params = new ArrayList<Object>(); if (!StringUtils.isEmpty(query)) { strquery = "select woe.estimate from WorkOrderEstimate woe where woe.workOrder.parent is null and woe.estimate.estimateNumber like '%'||?||'%' " + " and woe.id in (select distinct mbh.workOrderEstimate.id from MBHeader mbh where mbh.egwStatus.code <> ? )"; params.add(query.toUpperCase()); params.add("NEW"); estimateList = getPersistenceService().findAllBy(strquery, params.toArray()); } return "estimateNoSearchResults"; } public String searchWorkOrderNumber() { String strquery = ""; final ArrayList<Object> params = new ArrayList<Object>(); if (!StringUtils.isEmpty(query)) { strquery = "select distinct mbh.workOrder from MBHeader mbh where mbh.workOrder.parent is null and mbh.workOrder.workOrderNumber like '%'||?||'%' " + "and mbh.egwStatus.code <> ? "; params.add(query.toUpperCase()); params.add("NEW"); workOrderList = getPersistenceService().findAllBy(strquery, params.toArray()); } return "workOrderNoSearchResults"; } public String searchMbRefNo() { String strquery = ""; final ArrayList<Object> params = new ArrayList<Object>(); if (!StringUtils.isEmpty(query)) { strquery = " from MBHeader mbh where mbh.mbRefNo like '%'||?||'%' and mbh.egwStatus.code <> ? "; params.add(query.toUpperCase()); params.add("NEW"); mbHeaderList = getPersistenceService().findAllBy(strquery, params.toArray()); } return "mbRefNoSearchResults"; } public String getLatestMBDateforSelectedEstimate() { latestMBDate = measurementBookService.getLastMBCreatedDate(woId, estId); return "mblatestDateResult"; } public void setAssignmentService(final AssignmentService assignmentService) { this.assignmentService = assignmentService; } public void setEmpID(final Long empID) { this.empID = empID; } public List getUsersInExecutingDepartment() { return usersInExecutingDepartment; } public void setExecutingDepartment(final Long executingDepartment) { this.executingDepartment = executingDepartment; } public Assignment getAssignment() { return assignment; } public WorkOrder getWorkOrder() { return workOrder; } public void setWorkOrderNumber(final String workOrderNumber) { this.workOrderNumber = workOrderNumber; } public void setWoActivityId(final Long woActivityId) { this.woActivityId = woActivityId; } public WorkOrderActivity getWorkOrderActivity() { return workOrderActivity; } public Double getPrevCulmEntry() { return prevCulmEntry; } public void setMbHeaderId(final Long mbHeaderId) { this.mbHeaderId = mbHeaderId; } public void setMeasurementBookService(final MeasurementBookService measurementBookService) { this.measurementBookService = measurementBookService; } public Integer getDepartmentId() { return departmentId; } public void setDepartmentId(final Integer departmentId) { this.departmentId = departmentId; } public Integer getDesignationId() { return designationId; } public void setDesignationId(final Integer designationId) { this.designationId = designationId; } public String getScriptName() { return scriptName; } public void setScriptName(final String scriptName) { this.scriptName = scriptName; } public String getStateName() { return stateName; } public void setStateName(final String stateName) { this.stateName = stateName; } public Long getModelId() { return modelId; } public void setModelId(final Long modelId) { this.modelId = modelId; } public String getModelType() { return modelType; } public void setModelType(final String modelType) { this.modelType = modelType; } public Integer getWardId() { return wardId; } public void setWardId(final Integer wardId) { this.wardId = wardId; } public void setEisService(final EisUtilService eisService) { this.eisService = eisService; } public List getWorkflowKDesigList() { return workflowKDesigList; } public List getWorkflowUsers() { return workflowUsers; } public void setPersonalInformationService(final PersonalInformationService personalInformationService) { this.personalInformationService = personalInformationService; } public void setWorksService(final WorksService worksService) { this.worksService = worksService; } public String getQuery() { return query; } public void setQuery(final String query) { this.query = query; } public List<AbstractEstimate> getEstimateList() { return estimateList; } public void setEstimateList(final List<AbstractEstimate> estimateList) { this.estimateList = estimateList; } public List<WorkOrder> getWorkOrderList() { return workOrderList; } public void setWorkOrderList(final List<WorkOrder> workOrderList) { this.workOrderList = workOrderList; } public List<MBHeader> getMbHeaderList() { return mbHeaderList; } public void setMbHeaderList(final List<MBHeader> mbHeaderList) { this.mbHeaderList = mbHeaderList; } public Double getTotalEstQuantity() { return totalEstQuantity; } public String getActivityRemarks() { return activityRemarks; } public Long getEstId() { return estId; } public void setEstId(final Long estId) { this.estId = estId; } public Date getLatestMBDate() { return latestMBDate; } public void setLatestMBDate(final Date latestMBDate) { this.latestMBDate = latestMBDate; } public Long getWoId() { return woId; } public void setWoId(final Long woId) { this.woId = woId; } }