소스 검색

refactor(salary): 重构定调薪档案查询逻辑

- 将 getSalaryFileInfo 方法移至 SWCHelper 工具类统一管理
- 更新 BuildApplyBillOpPlugin 中的调用方式
- 在 SalaryAdjDelivaryDateValidator 中增加空值判断
- 引入 EmptyUtil 工具类优化判空逻辑
- 修正 PendingSalaryAdjListPlugin 中的查询逻辑和提示信息
- 删除原 BuildApplyBillOpPlugin 中冗余的 getSalaryFileInfo 方法实现
turborao 1 주 전
부모
커밋
d93ea4794c

+ 19 - 0
code/base/nckd-jxccl-base-helper/src/main/java/nckd/jxccl/base/swc/helper/SWCHelper.java

@@ -175,6 +175,25 @@ public class SWCHelper {
         return salaryPersonPropertDyn;
     }
 
+    /**
+     * 获取员工定调薪档案  hcdm_adjfileinfo
+     * 员工定调薪档案 会有多条,需要按岗位获取
+     * stdscm.entryentity.salarystandard.id  标准表 ID
+     * @param employeeID  员工ID
+     * @param positionID  岗位ID
+     */
+    public static DynamicObject getSalaryFileInfo(Long employeeID, Long positionID){
+
+        QFilter qFilter = new QFilter("employee.id", QCP.equals, employeeID);
+        QFilter qFilter1 = new QFilter("iscurrentversion", QCP.equals, "1"); // 启用
+        QFilter qFilter2 = new QFilter("datastatus", QCP.equals, "1"); // 启用
+        QFilter qFilter3 = new QFilter("position.id", QCP.equals, positionID);
+        String selectField = "id,boid,number,employee.id,org.id,country.id,salarystructure.id,stdscm.id,empgroup.id,position.nckd_postgrade.id";
+        DynamicObject employeesFiles = QueryServiceHelper.queryOne(FormConstant.HCDM_ADJFILEINFO, selectField, new QFilter[]{qFilter,qFilter1,qFilter2,qFilter3});
+
+        return employeesFiles;
+    }
+
     /**
      * 判断集合是否为空
      * @param list

+ 22 - 4
code/swc/nckd-jxccl-swc/src/main/java/nckd/jxccl/swc/init/plugin/form/PendingSalaryAdjListPlugin.java

@@ -16,6 +16,7 @@ import kd.bos.form.events.*;
 import kd.bos.form.operate.FormOperate;
 import kd.bos.list.BillList;
 import kd.bos.list.plugin.AbstractListPlugin;
+import kd.bos.orm.query.QCP;
 import kd.bos.orm.query.QFilter;
 import kd.bos.servicehelper.BusinessDataServiceHelper;
 import kd.bos.servicehelper.QueryServiceHelper;
@@ -108,11 +109,28 @@ public class PendingSalaryAdjListPlugin extends AbstractListPlugin implements Pl
                     }
                     this.getView().invokeOperation("refresh");
                 }
-                //else{
-                //    this.getView().showTipNotification(ore.getMessage());
-                //}
                 break;
-            case "flag_adj":
+            case "queryapplybill":
+                ListSelectedRowCollection selectedRows = formOperate.getListSelectedData();
+                Object[] pks = selectedRows.getPrimaryKeyValues();
+                List<Object> pkList = Arrays.asList(pks);
+                // 查询数据
+                QFilter idQFilter = new QFilter("id", QCP.in, pkList);
+                DynamicObject[] billDyns = BusinessDataServiceHelper.load(FormConstant.NCKD_PENDINGSALARYADJ, "nckd_applybillid", new QFilter[] { idQFilter });
+                for(DynamicObject billDyn : billDyns){
+                    Long billid = billDyn.getLong("nckd_applybillid");
+                    if (billid > 0) {
+                        BillShowParameter billShowParameter = new BillShowParameter();
+                        billShowParameter.setFormId("hcdm_applybill");
+                        billShowParameter.setPkId(billid);//单据内码
+                        billShowParameter.getOpenStyle().setShowType(ShowType.MainNewTabPage);
+                        billShowParameter.setStatus(OperationStatus.EDIT);
+                        this.getView().showForm(billShowParameter);
+                    }else{
+                        this.getView().showTipNotification("没有定调薪申请单");
+                    }
+                    break;
+                }
                 break;
             case "flag_ignore":
                 setBillStatus("F",key);

+ 4 - 23
code/swc/nckd-jxccl-swc/src/main/java/nckd/jxccl/swc/init/plugin/operate/BuildApplyBillOpPlugin.java

@@ -6,6 +6,7 @@ import kd.bos.entity.plugin.AbstractOperationServicePlugIn;
 import kd.bos.entity.plugin.AddValidatorsEventArgs;
 import kd.bos.entity.plugin.PreparePropertysEventArgs;
 import kd.bos.entity.plugin.args.BeginOperationTransactionArgs;
+import kd.bos.ext.fi.bei.util.EmptyUtil;
 import kd.bos.logging.Log;
 import kd.bos.logging.LogFactory;
 import kd.bos.orm.query.QCP;
@@ -159,8 +160,10 @@ public class BuildApplyBillOpPlugin extends AbstractOperationServicePlugIn imple
                 applyBill.put("billtype", setSalaryBillEntryTypeId);
                 applyBill.put("salaryadjrsn", salaryTypeDyns.get(0).getLong("id"));
             }
+
             Long positionId = data.getLong("nckd_newposition.id");
-            DynamicObject salaryfile  = getSalaryFileInfo(employeeId,positionId);
+            DynamicObject salaryfile  = SWCHelper.getSalaryFileInfo(employeeId,positionId);
+
             applyBillEntry.put("adjfile", salaryfile.getLong("id"));
             applyBillEntry.put("employee", employeeId);
             applyBillEntry.put("standarditem", salaryStdItemId);    //定调薪项目   岗位工资标准
@@ -288,28 +291,6 @@ public class BuildApplyBillOpPlugin extends AbstractOperationServicePlugIn imple
         return 0L;
     }
 
-
-
-    /**
-     * 获取员工定调薪档案  hcdm_adjfileinfo
-     * 员工定调薪档案 会有多条,需要按岗位获取
-     * stdscm.entryentity.salarystandard.id  标准表 ID
-     * @param employeeID  员工ID
-     * @param positionID  岗位ID
-     */
-    public DynamicObject getSalaryFileInfo(Long employeeID, Long positionID){
-
-        QFilter qFilter = new QFilter("employee.id", QCP.equals, employeeID);
-        QFilter qFilter1 = new QFilter("iscurrentversion", QCP.equals, "1"); // 启用
-        QFilter qFilter2 = new QFilter("datastatus", QCP.equals, "1"); // 启用
-        QFilter qFilter3 = new QFilter("position.id", QCP.equals, positionID);
-        String selectField = "id,boid,number,employee.id,org.id,country.id,salarystructure.id,stdscm.id,empgroup.id,position.nckd_postgrade.id";
-        DynamicObject employeesFiles = QueryServiceHelper.queryOne(FormConstant.HCDM_ADJFILEINFO, selectField, new QFilter[]{qFilter,qFilter1,qFilter2,qFilter3});
-
-        return employeesFiles;
-    }
-
-
     /**
      * 获取员工最新的定调薪记录,如果没有,为了拿到标准表数据
      * @param adjFileId

+ 7 - 0
code/swc/nckd-jxccl-swc/src/main/java/nckd/jxccl/swc/init/plugin/operate/SalaryAdjDelivaryDateValidator.java

@@ -9,6 +9,7 @@ import kd.bos.orm.query.QFilter;
 import kd.bos.servicehelper.QueryServiceHelper;
 import kd.bos.util.StringUtils;
 import nckd.jxccl.base.common.constant.FormConstant;
+import nckd.jxccl.base.swc.helper.SWCHelper;
 
 import java.util.ArrayList;
 
@@ -53,6 +54,7 @@ public class SalaryAdjDelivaryDateValidator extends AbstractValidator {
             billType = bill.getString("nckd_billtype");
             hrorgid = bill.getString("nckd_hrorg.id");
 
+            Long positionId = bill.getLong("nckd_newposition.id");
             Long employeeId = bill.getLong("nckd_employeefield.id");
             QFilter qFilter = new QFilter("employeev.boid", QCP.equals, employeeId);
             QFilter qFilter1 = new QFilter("coordruleparam.chgevent_z.id", QCP.in, chgeventList); // 启用
@@ -62,6 +64,11 @@ public class SalaryAdjDelivaryDateValidator extends AbstractValidator {
             DynamicObject employeesFiles = QueryServiceHelper.queryOne(FormConstant.HPDI_EMPCOORDVERIFBILL2, selectField, new QFilter[]{qFilter,qFilter1,qFilter2,qFilter3});
             if(EmptyUtil.isEmpty(employeesFiles) ){
                 this.addErrorMessage(obj,"员工:" + employeeName + ",定调薪档案不存在,请先完成员工变动及处理!");
+            }else{
+                DynamicObject salaryfile  = SWCHelper.getSalaryFileInfo(employeeId,positionId);
+                if(EmptyUtil.isEmpty(salaryfile)){
+                    this.addErrorMessage(obj,"员工:" + employeeName + ",定调薪档案不存在,请先完成员工档案!");
+                }
             }
         }
     }