
## 如何在s-HR系统报表中添加薪酬期间(yyyyMM)作为过滤条件
### 1.查看系统自带的年月是> 段落引用怎么设置的
根据对应的UIPK找到对应Handler里的method,定位到系统是如何定义枚举数据的。

> 通过定位跟踪发现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