package com.kingdee.shr.perfweb.utils; import com.google.gson.Gson; import com.kingdee.bos.BOSException; import com.kingdee.bos.Context; import com.kingdee.bos.workflow.exception.biz.WfBizException; import com.kingdee.eas.common.EASBizException; import com.kingdee.eas.framework.bireport.bimanager.ws.paramCtx.util.Strings; import java.util.Iterator; import com.kingdee.shr.perfweb.app.resource.SHRPerfWebResource; import com.kingdee.shr.perfweb.base.bean.JqGridBean; import com.kingdee.shr.perfweb.util.SHRPerfWebResourceUtil; import java.sql.SQLException; import java.util.HashMap; import java.util.Map; import java.util.Set; import javax.servlet.http.HttpServletRequest; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * 二开拓展,根据名称过滤指标 * @author coyle * 202501 */ public class IndicatorUtilsEx extends IndicatorUtils { private static Logger logger = LoggerFactory.getLogger(IndicatorUtilsEx.class); public static Map getIndicatorList(Context ctx, HttpServletRequest request) throws EASBizException, WfBizException { Map resultMap = new HashMap<>(); Gson gson = new Gson(); try { String mlFlag = SHRPerfWebResourceUtil.getMlFlag(ctx); StringBuffer getListSQLBuffer = new StringBuffer(); getListSQLBuffer.append("SELECT baseInfo.FID, baseInfo.FNumber, baseInfo.FName" + mlFlag + " AS FName,baseInfo.FIndecatorDesc" + mlFlag + " AS FIndecatorDesc, baseInfo.FEvalStandard" + mlFlag + " AS FEvalStandard,"); for (String field : multiTBFields4Indicator) getListSQLBuffer.append("baseInfo." + field + " AS " + field + ","); getListSQLBuffer.append("baseInfo.FUseStates, baseInfo.FRefStates,"); getListSQLBuffer.append("baseInfo.FIndecatorTypeID, baseInfo.FEFFDT, "); getListSQLBuffer.append("baseInfo.FQualiOrRation,baseInfo.FUnit,baseInfo.FScoringFormulaID,baseInfo.FRejection "); getListSQLBuffer.append(" FROM T_PEF_PerfIndecator baseInfo"); getListSQLBuffer.append(" LEFT JOIN T_PEF_PerfIndecatorRelation indecatorRelation"); getListSQLBuffer.append(" ON baseInfo.FID = indecatorRelation.FBaseInfoId"); getListSQLBuffer.append(" WHERE 1=1 "); getListSQLBuffer.append(" AND baseInfo.FState=1 "); getListSQLBuffer.append(" AND indecatorRelation.FState=100 "); //二开拓展 if (null != request.getParameter("areaNameStr") && !"".equals(request.getParameter("areaNameStr"))) { String areaNameStr = request.getParameter("areaNameStr").toString(); //第二部分:如何达成-Business leadership(至少选择一项)----只显示引用指标 if(areaNameStr.contains("Business leadership")) { getListSQLBuffer.append(" AND baseInfo.fnumber in ('JXZB0001','JXZB0002','JXZB0003','JXZB0004') "); }else if(areaNameStr.contains("People leadership")) { getListSQLBuffer.append(" AND baseInfo.fnumber in ('JXZB0005','JXZB0006','JXZB0007' ) "); }else if(areaNameStr.contains("Self leadership")) { getListSQLBuffer.append(" AND baseInfo.fnumber in ('JXZB0008' ) "); } getListSQLBuffer.append(" AND indecatorRelation.FState=100 "); } if (request.getAttribute("userAdminSQL") != null && !"".equals(request.getAttribute("userAdminSQL"))) { Set userAdminSet = AdminRangeUtils.getRangeSet(ctx, request.getAttribute("userAdminSQL").toString()); if (userAdminSet.size() > 0) { StringBuilder sbIdBuilder = new StringBuilder("(''"); Iterator iterator = userAdminSet.iterator(); while (iterator.hasNext()) sbIdBuilder.append(",'").append(iterator.next().toString()).append("'"); sbIdBuilder.append(")"); getListSQLBuffer.append(" AND baseInfo.FID in" + sbIdBuilder.toString()); } } if (request.getAttribute("hrOrgUnit") != null && !"".equals(request.getAttribute("hrOrgUnit"))) getListSQLBuffer.append(" AND indecatorRelation.fhrOrgUseId in ('" + request.getAttribute("hrOrgUnit") + "')"); String type = request.getParameter("type"); if (StringUtils.isEmpty(type) && !StringUtils.isEmpty(RequestUtils.getAttribute(request, "type"))) type = RequestUtils.getAttribute(request, "type"); if (!StringUtils.isEmpty(type) && type.equals("002")) { String selectedIds = request.getParameter("selectedIds"); if (StringUtils.isEmpty(selectedIds) && !StringUtils.isEmpty(RequestUtils.getAttribute(request, "selectedIds"))) selectedIds = RequestUtils.getAttribute(request, "selectedIds"); StringBuffer idBuffer = new StringBuffer("(''"); if (!StringUtils.isEmpty(selectedIds)) { String[] selectIdsArr = selectedIds.split(","); for (int i = 0; i < selectIdsArr.length; i++) idBuffer.append(",'").append(selectIdsArr[i]).append("'"); } idBuffer.append(")"); getListSQLBuffer.append(" and baseInfo.FID in ").append(idBuffer); if (!StringUtils.isEmpty(request.getParameter("recordLen"))) { int i = Integer.parseInt(request.getParameter("recordLen")); request.setAttribute("rows", Integer.valueOf(i)); } } String filterItems = request.getParameter("filterItems"); if (StringUtils.isEmpty(filterItems) && !StringUtils.isEmpty(RequestUtils.getAttribute(request, "filterItems"))) filterItems = RequestUtils.getAttribute(request, "filterItems"); JqGridBean jqGridBean = null; if (!StringUtils.isEmpty(filterItems)) { jqGridBean = (JqGridBean)gson.fromJson(filterItems, JqGridBean.class); if (!StringUtils.isEmpty(jqGridBean.getCustomeFilterItems())) { String customerFiterItems = jqGridBean.getCustomeFilterItems(); Map customerFilterItemsBean = (Map)gson.fromJson(customerFiterItems, (new HashMap<>()).getClass()); if (!StringUtils.isEmpty(customerFilterItemsBean.get("rows"))) { request.setAttribute("rows", customerFilterItemsBean.get("rows")); } else { request.setAttribute("rows", jqGridBean.getRows()); } if (!StringUtils.isEmpty(customerFilterItemsBean.get("page"))) { request.setAttribute("page", customerFilterItemsBean.get("page")); } else { request.setAttribute("page", jqGridBean.getPage()); } String indecatorType = customerFilterItemsBean.get("indecatorType"); if (!StringUtils.isEmpty(indecatorType)) getListSQLBuffer.append(" and baseInfo.FIndecatorTypeID='").append(indecatorType).append("'"); } else { if (!StringUtils.isEmpty(jqGridBean.getRows())) request.setAttribute("rows", jqGridBean.getRows()); if (!StringUtils.isEmpty(jqGridBean.getPage())) request.setAttribute("page", jqGridBean.getPage()); } if (!StringUtils.isEmpty(jqGridBean.getIndecatorType()) && !jqGridBean.getIndecatorType().equals("null")) getListSQLBuffer.append(" and baseInfo.FIndecatorTypeID='").append(jqGridBean.getIndecatorType()).append("'"); } String rows = request.getParameter("rowsNum"); if (!Strings.isEmpty(rows)) request.setAttribute("rows", rows); String page = request.getParameter("pageNum"); if (!Strings.isEmpty(page)) request.setAttribute("page", page); String fastFilterItems = request.getParameter("fastFilterItems"); if (!StringUtils.isEmpty(fastFilterItems)) getListSQLBuffer.append(" AND ") .append(fastFilterItems.replace("name", "FName" + mlFlag).replace("number", "FNumber")); resultMap = CustomPageHelper.getPageCallbackData(ctx, request, getListSQLBuffer.toString(), "baseInfo.FNumber asc", new IndicatorUtils(), "001"); } catch (BOSException e) { logger.error("BOSException", (Throwable)e); throw new WfBizException(SHRPerfWebResourceUtil.getRes(SHRPerfWebResource.GETLISTDATAERR, ctx)); } catch (SQLException e) { logger.error("SQLException", e); throw new WfBizException(SHRPerfWebResourceUtil.getRes(SHRPerfWebResource.EXECUTESQLERR, ctx)); } return resultMap; } }