|
@@ -2,17 +2,21 @@ package nckd.jxccl.opmc.pm.plugin.form.result;
|
|
|
|
|
|
|
|
import kd.bos.algo.DataSet;
|
|
import kd.bos.algo.DataSet;
|
|
|
import kd.bos.algo.GroupbyDataSet;
|
|
import kd.bos.algo.GroupbyDataSet;
|
|
|
|
|
+import kd.bos.algo.Row;
|
|
|
import kd.bos.context.RequestContext;
|
|
import kd.bos.context.RequestContext;
|
|
|
|
|
+import kd.bos.dataentity.entity.DynamicObjectCollection;
|
|
|
import kd.bos.dataentity.entity.LocaleString;
|
|
import kd.bos.dataentity.entity.LocaleString;
|
|
|
import kd.bos.entity.EntityMetadataCache;
|
|
import kd.bos.entity.EntityMetadataCache;
|
|
|
import kd.bos.entity.QueryEntityType;
|
|
import kd.bos.entity.QueryEntityType;
|
|
|
import kd.bos.entity.report.AbstractReportColumn;
|
|
import kd.bos.entity.report.AbstractReportColumn;
|
|
|
import kd.bos.entity.report.AbstractReportListDataPlugin;
|
|
import kd.bos.entity.report.AbstractReportListDataPlugin;
|
|
|
import kd.bos.entity.report.FastFilter;
|
|
import kd.bos.entity.report.FastFilter;
|
|
|
|
|
+import kd.bos.entity.report.IReportBatchQueryInfo;
|
|
|
import kd.bos.entity.report.ReportColumn;
|
|
import kd.bos.entity.report.ReportColumn;
|
|
|
import kd.bos.entity.report.ReportQueryParam;
|
|
import kd.bos.entity.report.ReportQueryParam;
|
|
|
import kd.bos.orm.query.QCP;
|
|
import kd.bos.orm.query.QCP;
|
|
|
import kd.bos.orm.query.QFilter;
|
|
import kd.bos.orm.query.QFilter;
|
|
|
|
|
+import kd.bos.servicehelper.QueryServiceHelper;
|
|
|
import kd.bos.servicehelper.model.PermissionStatus;
|
|
import kd.bos.servicehelper.model.PermissionStatus;
|
|
|
import kd.hr.hbp.business.servicehelper.HRQueryEntityHelper;
|
|
import kd.hr.hbp.business.servicehelper.HRQueryEntityHelper;
|
|
|
import kd.sdk.hr.hbp.business.helper.permission.HRPermissionServiceHelper;
|
|
import kd.sdk.hr.hbp.business.helper.permission.HRPermissionServiceHelper;
|
|
@@ -26,8 +30,10 @@ import nckd.jxccl.opmc.pm.common.PerfManagerFormConstant;
|
|
|
import java.time.LocalDate;
|
|
import java.time.LocalDate;
|
|
|
import java.util.Date;
|
|
import java.util.Date;
|
|
|
import java.util.HashMap;
|
|
import java.util.HashMap;
|
|
|
|
|
+import java.util.HashSet;
|
|
|
import java.util.List;
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
import java.util.Map;
|
|
|
|
|
+import java.util.Set;
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* 年度绩效结果明细-报表取数插件
|
|
* 年度绩效结果明细-报表取数插件
|
|
@@ -38,6 +44,23 @@ import java.util.Map;
|
|
|
*/
|
|
*/
|
|
|
public class AnnualPerfDetailReportListDataPlugin extends AbstractReportListDataPlugin implements Plugin {
|
|
public class AnnualPerfDetailReportListDataPlugin extends AbstractReportListDataPlugin implements Plugin {
|
|
|
|
|
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public DataSet queryBatchBy(ReportQueryParam queryParam){
|
|
|
|
|
+ QueryFieldBuilder queryFieldBuilder = QueryFieldBuilder.create()
|
|
|
|
|
+ .add(FormConstant.ID_KEY)
|
|
|
|
|
+ .orderDesc(FormConstant.NCKD_PERSON,PerfManagerFormConstant.NCKD_BEGINYEAR);
|
|
|
|
|
+ QFilter qFilter = QFilter.of("1=1");
|
|
|
|
|
+ //权限过滤
|
|
|
|
|
+ QFilter dataRule = HRPermissionServiceHelper.getDataRule(
|
|
|
|
|
+ RequestContext.get().getCurrUserId(), "nckd_pm", PerfManagerFormConstant.PERFMANAGER_ENTITYID,
|
|
|
|
|
+ PermissionStatus.View, new HashMap<>());
|
|
|
|
|
+ if(dataRule != null){
|
|
|
|
|
+ qFilter.and(dataRule);
|
|
|
|
|
+ }
|
|
|
|
|
+ IReportBatchQueryInfo byBatchInfo = queryParam.byBatchInfo();
|
|
|
|
|
+ byBatchInfo.setCountPerBatch(3000);
|
|
|
|
|
+ return QueryServiceHelper.queryDataSet(this.getClass().getName(),PerfManagerFormConstant.PERFMANAGER_ENTITYID, queryFieldBuilder.buildSelect(), new QFilter[]{qFilter}, queryFieldBuilder.buildOrder(),1000000);
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
public DataSet query(ReportQueryParam reportQueryParam, Object o) throws Throwable {
|
|
public DataSet query(ReportQueryParam reportQueryParam, Object o) throws Throwable {
|
|
@@ -52,10 +75,25 @@ public class AnnualPerfDetailReportListDataPlugin extends AbstractReportListData
|
|
|
|
|
|
|
|
int currentYear = LocalDate.now().getYear(); // 不包含今年
|
|
int currentYear = LocalDate.now().getYear(); // 不包含今年
|
|
|
Date endDate = DateUtil.toDate(LocalDate.of(currentYear, 1, 1));
|
|
Date endDate = DateUtil.toDate(LocalDate.of(currentYear, 1, 1));
|
|
|
|
|
+
|
|
|
|
|
+ // 分批加载过滤
|
|
|
|
|
+ IReportBatchQueryInfo byBatchInfo = reportQueryParam.byBatchInfo();
|
|
|
|
|
+ // 获取当前批次的分批依据行
|
|
|
|
|
+ List<Row> currentBatchRows = byBatchInfo.getCurrentBatchRows();
|
|
|
|
|
+ Set<Long> idsOfCurrentBatch = new HashSet<>(3000);
|
|
|
|
|
+ for (Row currentBatchRow : currentBatchRows) {
|
|
|
|
|
+ Long matId = currentBatchRow.getLong(0);
|
|
|
|
|
+ idsOfCurrentBatch.add(matId);
|
|
|
|
|
+ }
|
|
|
//查询最近5年的数据
|
|
//查询最近5年的数据
|
|
|
/*QFilter qFilter = new QFilter(PerfManagerFormConstant.NCKD_BEGINYEAR, QCP.less_equals, endDate)
|
|
/*QFilter qFilter = new QFilter(PerfManagerFormConstant.NCKD_BEGINYEAR, QCP.less_equals, endDate)
|
|
|
.and(new QFilter(PerfManagerFormConstant.NCKD_ENDYEAR, QCP.large_equals, beginDate));*/
|
|
.and(new QFilter(PerfManagerFormConstant.NCKD_ENDYEAR, QCP.large_equals, beginDate));*/
|
|
|
QFilter qFilter = QFilter.of("1=1");
|
|
QFilter qFilter = QFilter.of("1=1");
|
|
|
|
|
+ if(!idsOfCurrentBatch.isEmpty()){
|
|
|
|
|
+ qFilter.and(new QFilter(FormConstant.ID_KEY, QCP.in, idsOfCurrentBatch));
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
qFilter.and(String.join(".", FormConstant.HRPI_EMPPOSORGREL, FormConstant.POS_STATUS,FormConstant.POST_STATE_CLS, FormConstant.NUMBER_KEY),QCP.equals,"1010_S");
|
|
qFilter.and(String.join(".", FormConstant.HRPI_EMPPOSORGREL, FormConstant.POS_STATUS,FormConstant.POST_STATE_CLS, FormConstant.NUMBER_KEY),QCP.equals,"1010_S");
|
|
|
|
|
|
|
|
// 处理快速过滤条件
|
|
// 处理快速过滤条件
|
|
@@ -76,12 +114,10 @@ public class AnnualPerfDetailReportListDataPlugin extends AbstractReportListData
|
|
|
QueryEntityType queryEntityType = (QueryEntityType) EntityMetadataCache.getDataEntityType("annualperfdetailquery");
|
|
QueryEntityType queryEntityType = (QueryEntityType) EntityMetadataCache.getDataEntityType("annualperfdetailquery");
|
|
|
DataSet dataSet = HRQueryEntityHelper.getInstance().getQueryDataSet(queryEntityType,queryFieldBuilder.buildSelect(), new QFilter[]{qFilter}, null);
|
|
DataSet dataSet = HRQueryEntityHelper.getInstance().getQueryDataSet(queryEntityType,queryFieldBuilder.buildSelect(), new QFilter[]{qFilter}, null);
|
|
|
|
|
|
|
|
- dataSet.print( true);
|
|
|
|
|
|
|
|
|
|
//过滤调实际结束实际之外的年份分录
|
|
//过滤调实际结束实际之外的年份分录
|
|
|
DataSet withYearFields = dataSet.filter("year("+String.join(".", PerfManagerFormConstant.PERFMANAGERENTRY, PerfManagerFormConstant.NCKD_APPRAISALYEAR) +") " +
|
|
DataSet withYearFields = dataSet.filter("year("+String.join(".", PerfManagerFormConstant.PERFMANAGERENTRY, PerfManagerFormConstant.NCKD_APPRAISALYEAR) +") " +
|
|
|
"<= year(CASE WHEN nckd_actendyear is not null THEN nckd_actendyear ELSE "+PerfManagerFormConstant.NCKD_ENDYEAR+" end)");
|
|
"<= year(CASE WHEN nckd_actendyear is not null THEN nckd_actendyear ELSE "+PerfManagerFormConstant.NCKD_ENDYEAR+" end)");
|
|
|
- withYearFields.print(true);
|
|
|
|
|
|
|
|
|
|
// 动态添加年份字段;行转列
|
|
// 动态添加年份字段;行转列
|
|
|
int tempIndex = 1;
|
|
int tempIndex = 1;
|