| /******************************************************************************* |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| *******************************************************************************/ |
| package org.apache.ofbiz.humanres; |
| |
| import java.util.ArrayList; |
| import java.util.HashMap; |
| import java.util.List; |
| import java.util.Map; |
| import javax.servlet.http.HttpServletRequest; |
| import javax.servlet.http.HttpServletResponse; |
| import org.apache.ofbiz.base.util.Debug; |
| import org.apache.ofbiz.base.util.UtilValidate; |
| import org.apache.ofbiz.entity.Delegator; |
| import org.apache.ofbiz.entity.GenericEntityException; |
| import org.apache.ofbiz.entity.GenericValue; |
| import org.apache.ofbiz.entity.condition.EntityCondition; |
| import org.apache.ofbiz.entity.condition.EntityOperator; |
| import org.apache.ofbiz.entity.util.EntityQuery; |
| |
| public class HumanResEvents { |
| public static final String module = HumanResEvents.class.getName(); |
| public static final String resourceError = "HumanResErrorUiLabels"; |
| |
| // Please note : the structure of map in this function is according to the JSON data map of the jsTree |
| public static String getChildHRCategoryTree(HttpServletRequest request, HttpServletResponse response){ |
| Delegator delegator = (Delegator) request.getAttribute("delegator"); |
| String partyId = request.getParameter("partyId"); |
| String onclickFunction = request.getParameter("onclickFunction"); |
| String additionParam = request.getParameter("additionParam"); |
| String hrefString = request.getParameter("hrefString"); |
| String hrefString2 = request.getParameter("hrefString2"); |
| |
| Map<String, Object> paramMap = new HashMap<String, Object>(); |
| paramMap.put("delegator", delegator); |
| paramMap.put("partyId", partyId); |
| paramMap.put("onclickFunction", onclickFunction); |
| paramMap.put("additionParam", additionParam); |
| paramMap.put("hrefString", hrefString); |
| paramMap.put("hrefString2", hrefString2); |
| |
| List<Map<String,Object>> categoryList = new ArrayList<Map<String,Object>>(); |
| |
| //check employee position |
| try { |
| categoryList.addAll(getCurrentEmployeeDetails(paramMap)); |
| } catch (GenericEntityException e) { |
| e.printStackTrace(); |
| return "error"; |
| } |
| |
| try { |
| GenericValue partyGroup = EntityQuery.use(delegator).from("PartyGroup").where("partyId", partyId).queryOne(); |
| if (partyGroup != null) { |
| paramMap.put("partyGroup", partyGroup); |
| /* get the child departments of company or party */ |
| categoryList.addAll(getChildComps(paramMap)); |
| |
| /* get employee which are working in company or party */ |
| categoryList.addAll(getEmployeeInComp(paramMap)); |
| } |
| } catch (GenericEntityException e) { |
| e.printStackTrace(); |
| return "error"; |
| } |
| request.setAttribute("hrTree", categoryList); |
| return "success"; |
| } |
| |
| private static List<Map<String, Object>> getCurrentEmployeeDetails(Map<String, Object> params) throws GenericEntityException{ |
| |
| Delegator delegator = (Delegator) params.get("delegator"); |
| String partyId = (String) params.get("partyId"); |
| String onclickFunction = (String) params.get("onclickFunction"); |
| String additionParam = (String) params.get("additionParam"); |
| String hrefString = (String) params.get("hrefString"); |
| String hrefString2 = (String) params.get("hrefString2"); |
| |
| List<Map<String, Object>> responseList = new ArrayList<>(); |
| |
| long emplPosCount; |
| try { |
| emplPosCount = EntityQuery.use(delegator).from("EmplPosition") |
| .where("emplPositionId", partyId).queryCount(); |
| if (emplPosCount > 0) { |
| String emplId = partyId; |
| List<GenericValue> emlpfillCtxs = EntityQuery.use(delegator).from("EmplPositionFulfillment") |
| .where("emplPositionId", emplId) |
| .filterByDate().queryList(); |
| if (UtilValidate.isNotEmpty(emlpfillCtxs)) { |
| for (GenericValue emlpfillCtx : emlpfillCtxs ) { |
| String memberId = emlpfillCtx.getString("partyId"); |
| GenericValue memCtx = EntityQuery.use(delegator).from("Person").where("partyId", partyId).queryOne(); |
| String title = null; |
| if (UtilValidate.isNotEmpty(memCtx)) { |
| String firstname = memCtx.getString("firstName"); |
| String lastname = memCtx.getString("lastName"); |
| if (UtilValidate.isEmpty(lastname)) { |
| lastname = ""; |
| } |
| if (UtilValidate.isEmpty(firstname)) { |
| firstname = ""; |
| } |
| title = firstname +" "+ lastname; |
| } |
| GenericValue memGroupCtx = EntityQuery.use(delegator).from("PartyGroup").where("partyId", partyId).queryOne(); |
| if (UtilValidate.isNotEmpty(memGroupCtx)) { |
| title = memGroupCtx.getString("groupName"); |
| } |
| |
| Map<String,Object> josonMap = new HashMap<String, Object>(); |
| Map<String,Object> dataMap = new HashMap<String, Object>(); |
| Map<String,Object> dataAttrMap = new HashMap<String, Object>(); |
| Map<String,Object> attrMap = new HashMap<String, Object>(); |
| |
| dataAttrMap.put("onClick", onclickFunction + "('" + memberId + additionParam + "')"); |
| |
| String hrefStr = hrefString + memberId; |
| if (UtilValidate.isNotEmpty(hrefString2)) { |
| hrefStr = hrefStr + hrefString2; |
| } |
| dataAttrMap.put("href", hrefStr); |
| |
| attrMap.put("rel", "P"); |
| attrMap.put("id", memberId); |
| |
| dataMap.put("title", title); |
| dataMap.put("attr", dataAttrMap); |
| |
| josonMap.put("attr",attrMap); |
| josonMap.put("data", dataMap); |
| |
| responseList.add(josonMap) ; |
| } |
| } |
| } |
| } catch (GenericEntityException e) { |
| e.printStackTrace(); |
| throw new GenericEntityException(e); |
| } |
| |
| return responseList; |
| } |
| |
| private static List<Map<String, Object>> getChildComps(Map<String, Object> params) throws GenericEntityException{ |
| |
| Delegator delegator = (Delegator) params.get("delegator"); |
| String onclickFunction = (String) params.get("onclickFunction"); |
| String additionParam = (String) params.get("additionParam"); |
| String hrefString = (String) params.get("hrefString"); |
| String hrefString2 = (String) params.get("hrefString2"); |
| |
| Map<String , Object> partyGroup = (Map<String, Object>) params.get("partyGroup"); |
| List<Map<String, Object>> resultList = new ArrayList<Map<String,Object>>(); |
| List<GenericValue> childOfComs = null; |
| |
| try { |
| childOfComs = EntityQuery.use(delegator).from("PartyRelationship") |
| .where("partyIdFrom", partyGroup.get("partyId"), |
| "partyRelationshipTypeId", "GROUP_ROLLUP") |
| .filterByDate().queryList(); |
| if (UtilValidate.isNotEmpty(childOfComs)) { |
| |
| for (GenericValue childOfCom : childOfComs ) { |
| Object catId = null; |
| String catNameField = null; |
| String title = null; |
| |
| Map<String, Object> josonMap = new HashMap<String, Object>(); |
| Map<String, Object> dataMap = new HashMap<String, Object>(); |
| Map<String, Object> dataAttrMap = new HashMap<String, Object>(); |
| Map<String, Object> attrMap = new HashMap<String, Object>(); |
| |
| catId = childOfCom.get("partyIdTo"); |
| |
| //Department or Sub department |
| GenericValue childContext = EntityQuery.use(delegator).from("PartyGroup").where("partyId", catId).queryOne(); |
| if (UtilValidate.isNotEmpty(childContext)) { |
| catNameField = (String) childContext.get("groupName"); |
| title = catNameField; |
| josonMap.put("title",title); |
| |
| } |
| //Check child existing |
| List<GenericValue> childOfSubComs = EntityQuery.use(delegator).from("PartyRelationship") |
| .where("partyIdFrom", catId, |
| "partyRelationshipTypeId", "GROUP_ROLLUP") |
| .filterByDate().queryList(); |
| //check employee position |
| List<GenericValue> isPosition = EntityQuery.use(delegator).from("EmplPosition").where("partyId", catId).queryList(); |
| if (UtilValidate.isNotEmpty(childOfSubComs) || UtilValidate.isNotEmpty(isPosition)) { |
| josonMap.put("state", "closed"); |
| } |
| |
| //Employee |
| GenericValue emContext = EntityQuery.use(delegator).from("Person").where("partyId", catId).queryOne(); |
| if (UtilValidate.isNotEmpty(emContext)) { |
| String firstname = (String) emContext.get("firstName"); |
| String lastname = (String) emContext.get("lastName"); |
| if (UtilValidate.isEmpty(lastname)) { |
| lastname = ""; |
| } |
| if (UtilValidate.isEmpty(firstname)) { |
| firstname = ""; |
| } |
| title = firstname +" "+ lastname; |
| } |
| |
| dataAttrMap.put("onClick", onclickFunction + "('" + catId + additionParam + "')"); |
| |
| String hrefStr = hrefString + catId; |
| if (UtilValidate.isNotEmpty(hrefString2)) { |
| hrefStr = hrefStr + hrefString2; |
| } |
| dataAttrMap.put("href", hrefStr); |
| |
| dataMap.put("attr", dataAttrMap); |
| dataMap.put("title", title); |
| |
| attrMap.put("rel", "Y"); |
| attrMap.put("id", catId); |
| |
| |
| josonMap.put("attr",attrMap); |
| josonMap.put("data", dataMap); |
| |
| resultList.add(josonMap); |
| } |
| } |
| } catch (GenericEntityException e) { |
| e.printStackTrace(); |
| throw new GenericEntityException(e); |
| } |
| |
| return resultList; |
| |
| } |
| |
| private static List<Map<String, Object>> getEmployeeInComp(Map<String, Object> params) throws GenericEntityException{ |
| List<GenericValue> isEmpls = null; |
| Delegator delegator = (Delegator) params.get("delegator"); |
| String partyId = (String) params.get("partyId"); |
| |
| List<Map<String, Object>> resultList = new ArrayList<Map<String,Object>>(); |
| |
| try { |
| isEmpls = EntityQuery.use(delegator).from("EmplPosition") |
| .where(EntityCondition.makeCondition("partyId", EntityOperator.EQUALS, partyId), |
| EntityCondition.makeCondition("statusId", EntityOperator.NOT_EQUAL, "EMPL_POS_INACTIVE")) |
| .filterByDate("actualFromDate", "actualThruDate") |
| .queryList(); |
| |
| if (UtilValidate.isNotEmpty(isEmpls)) { |
| for (GenericValue childOfEmpl : isEmpls ) { |
| Map<String, Object> emplMap = new HashMap<String, Object>(); |
| Map<String, Object> emplAttrMap = new HashMap<String, Object>(); |
| Map<String, Object> empldataMap = new HashMap<String, Object>(); |
| Map<String, Object> emplDataAttrMap = new HashMap<String, Object>(); |
| |
| String emplId = (String) childOfEmpl.get("emplPositionId"); |
| String typeId = (String) childOfEmpl.get("emplPositionTypeId"); |
| |
| //check child |
| List<GenericValue> emlpfCtxs = EntityQuery.use(delegator).from("EmplPositionFulfillment") |
| .where("emplPositionId", emplId) |
| .filterByDate().queryList(); |
| if (UtilValidate.isNotEmpty(emlpfCtxs)) { |
| emplMap.put("state", "closed"); |
| } |
| |
| GenericValue emplContext = EntityQuery.use(delegator).from("EmplPositionType").where("emplPositionTypeId", typeId).queryOne(); |
| String title = null; |
| if (UtilValidate.isNotEmpty(emplContext)) { |
| title = (String) emplContext.get("description") + " " +"["+ emplId +"]"; |
| } |
| |
| String hrefStr = "emplPositionView?emplPositionId=" + emplId; |
| emplAttrMap.put("href", hrefStr); |
| emplAttrMap.put("onClick", "callEmplDocument" + "('" + emplId + "')"); |
| |
| empldataMap.put("title", title); |
| empldataMap.put("attr", emplAttrMap); |
| |
| emplDataAttrMap.put("id", emplId); |
| emplDataAttrMap.put("rel", "N"); |
| |
| emplMap.put("data", empldataMap); |
| emplMap.put("attr",emplDataAttrMap); |
| emplMap.put("title",title); |
| |
| resultList.add(emplMap); |
| } |
| } |
| } catch (GenericEntityException e) { |
| Debug.logError(e, module); |
| throw new GenericEntityException(e); |
| } |
| |
| return resultList; |
| } |
| } |