Bläddra i källkod

feat(hr): 绩效排名管理表单增加排名过滤功能

- 在导入考核结果步骤中增加只显示参与排名人员的过滤逻辑
- 新增 applyRankingFilter 方法实现分录数据过滤
- 调整界面控件可见性控制逻辑
- 引入必要的过滤器相关类库
- 优化步骤切换时的数据展示逻辑
wyc 19 timmar sedan
förälder
incheckning
d858600ccb

+ 49 - 2
code/hr/nckd-jxccl-hr/src/main/java/nckd/jxccl/hr/psms/plugin/form/performance/PerfRankMgmtFormPlugin.java

@@ -16,12 +16,17 @@ import kd.bos.entity.datamodel.events.BeforeDeleteRowEventArgs;
 import kd.bos.entity.datamodel.events.BeforeImportEntryEventArgs;
 import kd.bos.entity.datamodel.events.ChangeData;
 import kd.bos.entity.datamodel.events.PropertyChangedArgs;
+import kd.bos.entity.filter.CompareTypeEnum;
+import kd.bos.entity.filter.FilterValue;
+import kd.bos.entity.filter.SimpleFilterRow;
+import kd.bos.entity.property.entryfilter.EntryQueryParam;
 import kd.bos.form.ConfirmCallBackListener;
 import kd.bos.form.ConfirmTypes;
 import kd.bos.form.IClientViewProxy;
 import kd.bos.form.MessageBoxOptions;
 import kd.bos.form.MessageBoxResult;
 import kd.bos.form.container.Wizard;
+import kd.bos.form.control.Control;
 import kd.bos.form.control.EntryGrid;
 import kd.bos.form.control.Steps;
 import kd.bos.form.control.events.StepEvent;
@@ -37,6 +42,7 @@ import kd.bos.orm.query.QCP;
 import kd.bos.orm.query.QFilter;
 import kd.bos.servicehelper.BusinessDataServiceHelper;
 import kd.bos.servicehelper.QueryServiceHelper;
+import kd.hdtc.hrcc.common.enums.FileImportSubTaskDealStatusEnum;
 import kd.hr.hbp.business.servicehelper.HRQueryEntityHelper;
 import nckd.jxccl.base.common.constant.FormConstant;
 import nckd.jxccl.base.common.constant.QueryConstant;
@@ -102,6 +108,9 @@ public class PerfRankMgmtFormPlugin extends AbstractFormPlugin implements Wizard
             setStepStatus(1,Steps.PROCESS);
 
             importResultStep();
+
+            //步骤为:导入考核结果时只显示参与排名的人员
+            applyRankingFilter(true);
         }
     }
 
@@ -477,7 +486,7 @@ public class PerfRankMgmtFormPlugin extends AbstractFormPlugin implements Wizard
 
     private void importResultStep() {
         this.getModel().setValue(PerfRankMgmtConstant.NCKD_STEP,1);
-        this.getView().setVisible(false, FormConstant.NUMBER_KEY, PerfRankMgmtConstant.NCKD_GETRANKLIST);
+        this.getView().setVisible(false, FormConstant.NUMBER_KEY, PerfRankMgmtConstant.NCKD_GETRANKLIST,"nckd_advconbaritemap2","nckd_advconbaritemap3");
         this.getView().setVisible(true, PerfRankMgmtConstant.NCKD_TOPRANKS, PerfRankMgmtConstant.NCKD_ALLOWANCERANKS, PerfRankMgmtConstant.NCKD_FAILS, PerfRankMgmtConstant.NCKD_BASICS, PerfRankMgmtConstant.NCKD_EXCELLENTS, "nckd_advconbaritemap6","nckd_advconbaritemap");
         DynamicObjectCollection entryEntity = this.getModel().getEntryEntity(PerfRankMgmtConstant.NCKD_PERFRANKMGMTENTRY);
         for (int i = 0; i < entryEntity.size(); i++) {
@@ -487,7 +496,7 @@ public class PerfRankMgmtFormPlugin extends AbstractFormPlugin implements Wizard
 
     private void generatePersonList() {
         this.getModel().setValue(PerfRankMgmtConstant.NCKD_STEP,0);
-        this.getView().setVisible(true, FormConstant.NUMBER_KEY, PerfRankMgmtConstant.NCKD_GETRANKLIST);
+        this.getView().setVisible(true, FormConstant.NUMBER_KEY, PerfRankMgmtConstant.NCKD_GETRANKLIST,"nckd_advconbaritemap2","nckd_advconbaritemap3");
         this.getView().setVisible(false, PerfRankMgmtConstant.NCKD_TOPRANKS, PerfRankMgmtConstant.NCKD_ALLOWANCERANKS, PerfRankMgmtConstant.NCKD_FAILS, PerfRankMgmtConstant.NCKD_BASICS, PerfRankMgmtConstant.NCKD_EXCELLENTS, "nckd_advconbaritemap6","nckd_advconbaritemap");
         DynamicObjectCollection entryEntity = this.getModel().getEntryEntity(PerfRankMgmtConstant.NCKD_PERFRANKMGMTENTRY);
         for (int i = 0; i < entryEntity.size(); i++) {
@@ -724,6 +733,10 @@ public class PerfRankMgmtFormPlugin extends AbstractFormPlugin implements Wizard
             generatePersonList();
             setStepStatus(0, Steps.PROCESS);
             this.getView().updateView(PerfRankMgmtConstant.NCKD_PERFRANKMGMTENTRY);
+
+            //步骤为:导入考核结果时只显示参与排名的人员
+            applyRankingFilter(false);
+
         }else{
             //校验有没有保存
             DynamicObject dataEntity = this.getModel().getDataEntity();
@@ -734,9 +747,43 @@ public class PerfRankMgmtFormPlugin extends AbstractFormPlugin implements Wizard
                 importResultStep();
                 setStepStatus(1, Steps.PROCESS);
                 this.getView().updateView(PerfRankMgmtConstant.NCKD_PERFRANKMGMTENTRY);
+
+                //步骤为:导入考核结果时只显示参与排名的人员
+                applyRankingFilter(true);
             }
         }
         this.getView().updateView(PerfRankMgmtConstant.NCKD_STEP);
 
     }
+
+    /**
+     * 应用排名过滤器
+     * @param onlyRankingParticipants 是否只显示参与排名的人员
+     */
+    private void applyRankingFilter(boolean onlyRankingParticipants) {
+        EntryGrid entryGrid = this.getView().getControl(PerfRankMgmtConstant.NCKD_PERFRANKMGMTENTRY);
+        List<SimpleFilterRow> filterRowList = new ArrayList<>(1);
+        List<FilterValue> value = new ArrayList<>();
+        
+        if (onlyRankingParticipants) {
+            // 只显示参与排名的人员 (nckd_isranking = 1)
+            FilterValue rankingValue = new FilterValue();
+            rankingValue.setValue("1");
+            value.add(rankingValue);
+        } else {
+            // 显示参与和不参与排名的人员 (nckd_isranking in (0,1))
+            FilterValue notRankingValue = new FilterValue();
+            notRankingValue.setValue("0");
+            value.add(notRankingValue);
+            
+            FilterValue rankingValue = new FilterValue();
+            rankingValue.setValue("1");
+            value.add(rankingValue);
+        }
+        
+        filterRowList.add(new SimpleFilterRow("(", CompareTypeEnum.IN.getId(), "nckd_isranking", ")", "", value));
+        //分录过滤
+        entryGrid.getGridDataByDefaultFilterRow(filterRowList);
+    }
+
 }