s-HR报表中添加自定义过滤条件

栏目:s-hr cloud知识作者:金蝶来源:金蝶云社区发布:2024-09-17浏览:1

s-HR报表中添加自定义过滤条件

## 如何在s-HR系统报表中添加薪酬期间(yyyyMM)作为过滤条件 ### 1.查看系统自带的年月是> 段落引用怎么设置的 根据对应的UIPK找到对应Handler里的method,定位到系统是如何定义枚举数据的。 ![image202206161432029681.webp](/download/010053b9c9dda32a4b7b925d9159fcd27c6c.webp) > 通过定位跟踪发现CmpTBDynamicListHandler类中getPeriodMonthListAction中具体实现方式为CmpUtils类的getPeriodMonthList中 > 通过调试可以发现,只要构造一个json字符串类似于{data=[{alias=202204, value=202204}, {alias=202202, value=202202}, {alias=202203, value=202203}]}即可实现所需效果; ### 2.创建一个Hander封装所需要的数据包: ~~~java package com.kingdee.eas.customer.kd.cmp; import java.sql.SQLException; 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.springframework.ui.ModelMap; import com.kingdee.bos.BOSException; import com.kingdee.bos.Context; import com.kingdee.bos.bi.model.DB.DBUtil; import com.kingdee.eas.util.app.DbUtil; import com.kingdee.jdbc.rowset.IRowSet; import com.kingdee.shr.base.syssetting.context.SHRContext; import com.kingdee.shr.base.syssetting.exception.SHRWebException; import com.kingdee.shr.base.syssetting.web.handler.ListHandler; import com.kingdee.shr.base.syssetting.web.json.JSONUtils; import com.kingdee.shr.compensation.exception.ExceptionHandle; public class PeriodListHandler extends ListHandler { //获取当前薪酬核算表中所有的薪酬期间 public String getAllPeriodMonthListAction(HttpServletRequest request, HttpServletResponse response, ModelMap modelMap) throws SHRWebException { try { Map param = new HashMap(); param.put("data", getPeriodMonthListBySCal(0)); JSONUtils.writeJson(response, param); } catch (Exception e) { ExceptionHandle.handleException(e); } return null; } //获取系统薪酬核算表中所有已经存在的薪酬期间; public List<Map<String, Object>> getPeriodMonthListBySCal(int qty) throws SHRWebException{ List list = new ArrayList(); StringBuffer sql = new StringBuffer(); sql.append(" select case when FPERIODMONTH < 10 then FPERIODYEAR||'0'|| FPERIODMONTH else FPERIODYEAR || FPERIODMONTH end periodNum from ( \n ") .append(" select distinct FPERIODYEAR,FPERIODMONTH from T_HR_SCmpCalTable \n") .append(" ) a \n ") .append(" order by a.FPERIODYEAR,a.FPERIODMONTH \n") ; Context ctx = SHRContext.getInstance().getContext(); try { IRowSet rs = DbUtil.executeQuery(ctx, sql.toString()); int limitQty = 0; while(rs.next()){ Map map = new HashMap(); map.put("alias", rs.getString(("periodNum"))); map.put("value", rs.getString(("periodNum"))); list.add(map); limitQty++; if(qty > 0 && limitQty == qty ){ break; } } } catch (BOSException e) { e.printStackTrace(); throw new SHRWebException("sql异常!!"); } catch (SQLException e) { e.printStackTrace(); throw new SHRWebException("sql异常!!"); } return list; } } ~~~ ### 3. 将handler配置到列表视图 将创建的handler配置到系统不常用的list界面(也可以自己通过dep创建一个实体,配置列表界面都可以),例如将handler配置到com.kingdee.eas.basedata.org.app.CtrlUnit.list 这个界面。 ![image202206161617355571.webp](/download/010036c32dc7ade44c9085ed4d6d3983467b.webp) ### 4.设置报表参数中的自定义uipk 打开到报表设计-报表参数,由于系统报表只支持从信息集中选取参数类型,这里可以使用相同类型即可。例如我这里选的是人员基础信息里的性别。uipk=url:/dynamic.do?uipk=com.kingdee.eas.basedata.org.app.CtrlUnit.list&method=getAllPeriodMonthList ![image202206161621064631.webp](/download/0100665cc9ba3ad443b89718bf46f5ebfe3f.webp) ### 5.数据源映射参数 在数据源中,添加查询条件,映射关系。 ![image202206161622113181.webp](/download/0100a6e69ae3391b4eb886ffa3bf4fd2eedf.webp) ### 6.修改sql实现过滤 通过sql查询,可以发现系统是通过@XX来实现替换参数过滤的,因此我们可以在自己的sql中如法炮制。 ![image202206161623201921.webp](/download/010036f389db5bf542d5b434239fe5b4f141.webp) 而且可以使用SUBSTRING函数选取所属的年月,等等。 ~~~sql select fnumber ,FFSAL1200 from T_SAL_EmpDeduDetail where SUBSTRING(FYEARMONTH,0,4) = SUBSTRING(@person_gender,1,4) ~~~ ### 7.引用说明 附件为上方代码的开发包的压缩文件,解压后,可以将hr_period_bin.jar部署到\eas\server\lib\sp\addon\customer\lib下直接,配置list页面引用即可。 其中有两个方法可以使用method=get20PeriodMonthList为取近20个期间getAllPeriodMonthList为取所有期间。

hr_period_bin.rar

s-HR报表中添加自定义过滤条件

## 如何在s-HR系统报表中添加薪酬期间(yyyyMM)作为过滤条件### 1.查看系统自带的年月是> 段落引用怎么设置的根据对应的UIPK找到对应Ha...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息