Selaa lähdekoodia

feat(plugin): 新增员工薪资查询移动端与Web端动态表单插件

- 新增EmpSalaryQueryMobDataHandler类处理移动表格数据
- 新增EmpSalaryQueryWebFormPlugin类实现Web端动态表单功能
- 实现数据网格列动态创建与数据绑定逻辑
- 添加表单控件属性变更监听机制
- 支持薪资数据的动态展示与交互处理
turborao 5 päivää sitten
vanhempi
säilyke
8183a818a4

+ 2 - 2
code/swc/nckd-jxccl-swc/src/main/java/nckd/jxccl/swc/init/business/BaseMedicalAllowanceServiceImpl.java

@@ -28,8 +28,8 @@ import java.util.stream.Collectors;
  * 1800--->3600
  * 1200--->2400
  * 840--->1800
- * author: turborao
- * date: 2025/10/27 13:05
+ * @author: turborao
+ * @date: 2025/10/27 13:05
  */
 public class BaseMedicalAllowanceServiceImpl implements BaseMedicalAllowanceService{
 

+ 6 - 0
code/swc/nckd-jxccl-swc/src/main/java/nckd/jxccl/swc/init/business/SynPendingSalaryAdjDataServiceImpl.java

@@ -22,6 +22,12 @@ import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
 
+/**
+ * 员工待定调薪清单
+ * 同步入职与调动单数据
+ * @author turborao
+ * @date 2025/11/28
+ */
 public class SynPendingSalaryAdjDataServiceImpl implements SynPendingSalaryAdjDataService {
 
     private static final Log logger = LogFactory.getLog(SynPendingSalaryAdjDataServiceImpl.class);

+ 6 - 0
code/swc/nckd-jxccl-swc/src/main/java/nckd/jxccl/swc/init/plugin/form/EmpSalaryQueryMobDataHandler.java

@@ -9,6 +9,12 @@ import kd.bos.form.mcontrol.mobtable.tablecolumn.MobTableColumn;
 import java.math.BigDecimal;
 import java.util.*;
 
+/**
+ * 移动表格数据处理
+ * @Description:
+ * @Author: turborao
+ * @Date: 2025/11/26
+ */
 public class EmpSalaryQueryMobDataHandler extends MobTablePackageDataHandler {
     @Override
     public MobTableHandleResult handleData(MobTablePackageDataHandlerArgs args) {

+ 125 - 0
code/swc/nckd-jxccl-swc/src/main/java/nckd/jxccl/swc/init/plugin/form/EmpSalaryQueryWebFormPlugin.java

@@ -0,0 +1,125 @@
+package nckd.jxccl.swc.init.plugin.form;
+
+import kd.bos.dataentity.entity.LocaleString;
+import kd.bos.entity.datamodel.events.PropertyChangedArgs;
+import kd.bos.form.control.grid.DataGrid;
+import kd.bos.form.control.grid.DataGridRow;
+import kd.bos.form.control.grid.DataGridRowBuilder;
+import kd.bos.form.control.grid.column.AmountDataGridColumn;
+import kd.bos.form.control.grid.column.DataGridColumn;
+import kd.bos.form.control.grid.column.TextDataGridColumn;
+import kd.bos.form.control.grid.events.BeforeCreateDataGridColumnsEvent;
+import kd.bos.form.control.grid.events.BeforeCreateDataGridColumnsListener;
+import kd.bos.form.control.grid.events.DataGridBindDataEvent;
+import kd.bos.form.control.grid.events.DataGridBindDataListener;
+import kd.bos.form.plugin.AbstractFormPlugin;
+import kd.sdk.plugin.Plugin;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.EventObject;
+import java.util.List;
+
+/**
+ * 动态表单插件
+ * @author turborao
+ * @date 2025/11/28 16:01
+ */
+public class EmpSalaryQueryWebFormPlugin extends AbstractFormPlugin implements Plugin, DataGridBindDataListener, BeforeCreateDataGridColumnsListener {
+
+
+    private static final String KEY_LAB_EMP_NAME = "nckd_employee";
+    private static final String KEY_LAB_EMP_DESCRIPTION = "nckd_desc";
+    private static final String KEY_LAB_REALAMT = "nckd_realamt";
+    private static final String KEY_LAB_GROSSAMT = "nckd_grossamt";
+    private static final String KEY_LAB_SUBAMT = "nckd_subamt";
+    private static String KEY_CTL_STARTDATE = "startmonth";
+    private static String KEY_CTL_ENDDATE = "endmonth";
+    private static String KEY_META_PERUSER = "hrpi_personuserrel";
+    private static Long KEY_EMPID = 0L;
+    private static Date KEY_STARTDATE = new Date();
+    private static Date KEY_ENDDATE = new Date();
+    private static String KEY_TYPE = "10";
+
+
+    /**
+     * 初始化为控件增加监听事件
+     */
+    @Override
+    public void initialize() {
+        DataGrid dataGrid = this.getControl("nckd_datagridap");
+        // 注册创建列监听事件
+        dataGrid.addBeforeCreateDataGridColumnsListener(this);
+        // 注册绑定数据监听事件
+        dataGrid.addBindDataListener(this);
+    }
+
+    @Override
+    public void afterCreateNewData(EventObject e) {
+        super.afterCreateNewData(e);
+        DataGrid dataGrid = this.getControl("nckd_datagridap");
+        dataGrid.addBindDataListener(this);
+    }
+
+    @Override
+    public void propertyChanged(PropertyChangedArgs e) {
+        super.propertyChanged(e);
+        String fieldKey = e.getProperty().getName();
+        if (fieldKey.equals(KEY_CTL_STARTDATE) || fieldKey.equals(KEY_CTL_ENDDATE)){
+
+            KEY_STARTDATE = (Date)this.getModel().getValue(KEY_CTL_STARTDATE);
+            KEY_ENDDATE = (Date)this.getModel().getValue(KEY_CTL_ENDDATE);
+            this.getView().updateView();
+        }
+        if (fieldKey.equals("nckd_type")){
+
+            KEY_TYPE = (String)this.getModel().getValue("nckd_type");
+            this.getView().updateView();
+
+        }
+    }
+
+    /**
+     * 监听创建列事件
+     * @param event
+     */
+    @Override
+    public void beforeCreateDataGridColumns(BeforeCreateDataGridColumnsEvent event) {
+        // 所有列集合
+        List<DataGridColumn> dataGridColumns = event.getDataGridColumns();
+        // 动态创建文本列
+        TextDataGridColumn column = new TextDataGridColumn();
+        AmountDataGridColumn amountColumn = new AmountDataGridColumn();
+        amountColumn.setKey("colKey");
+        amountColumn.setCaption(new LocaleString("测试列"));
+
+        column.setKey("colKey");
+        column.setCaption(new LocaleString("测试列"));
+        // 加入列集合
+        dataGridColumns.add(column);
+    }
+
+    /**
+     * 数据绑定
+     */
+    @Override
+    public void dataGridBindData(DataGridBindDataEvent e) {
+        List<Object> list = new ArrayList<>();
+        int index = 0;
+        // 从参数获取rowBuilder来辅助构造行数据
+        DataGridRowBuilder builder = e.getDataGridRowBuilder();
+        for (int i = 0; i < 10; i++) {
+            DataGridRow row = builder.buildRow();
+            // rk和seq为系统保留字段(主键和序列号),支持自定义传值
+            row.setValue("rk", index);  // rk必须存在且唯一不能重复
+            row.setValue("seq", index + 1);
+            row.setValue("textfield", "文本列数据");
+            row.setValue("colKey", "动态列数据");
+            list.add(row.get());
+            index++;
+        }
+        // 重要: 传递列表数据
+        e.setData(list);
+    }
+
+}

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

@@ -11,6 +11,11 @@ import kd.bos.util.StringUtils;
 
 import java.util.ArrayList;
 
+/**
+ * 定调薪档案操作数据校验
+ * @author: turborao
+ * @date: 2025/11/27 10:09
+ */
 public class SalaryAdjDelivaryDateValidator extends AbstractValidator {
 
     /**

+ 2 - 2
code/swc/nckd-jxccl-swc/src/main/java/nckd/jxccl/swc/init/plugin/other/BaseMedicalAllowanceTask.java

@@ -15,8 +15,8 @@ import java.util.Map;
  * 后台提供定时任务(每年12月31日24点执行一次),当年度待遇根据上年度12月31日的人员状态和记录计算补助待遇,
  * 按照年度生成多行记录,记录历史。当专员手动执行前端更新按钮时(需选中人员),
  * 系统需根据手动的当前时间获取人员状态和记录计算补助待遇,包括对当前记录进行更新,
- * author: turborao
- * date: 2025/10/27 13:05
+ * @author: turborao
+ * @date: 2025/10/27 13:05
  */
 public class BaseMedicalAllowanceTask extends AbstractTask implements Plugin {
 

+ 2 - 2
code/swc/nckd-jxccl-swc/src/main/java/nckd/jxccl/swc/init/plugin/other/DelayedRetirementDateCalcTask.java

@@ -28,8 +28,8 @@ import java.util.stream.Collectors;
 
 /**
  * 后台任务插件
- * author: turborao
- * date: 2025/10/20
+ * @author: turborao
+ * @date: 2025/10/20
  * note: 延迟退休业务:对即将退休的人员,发出预警消息(预警信息要在原法定退休日期前3个月发给HR,
  * 并且在员工最终确认生效的退休日期提前3个月再次预警)(HR),
  * 业务人员收到消息,发送业务通知,告诉员工,原法定退休日期、新法定退休日期、

+ 2 - 2
code/swc/nckd-jxccl-swc/src/main/java/nckd/jxccl/swc/init/plugin/other/PendingSalaryAdjTask.java

@@ -13,8 +13,8 @@ import java.util.Map;
 /**
  * 人事那边做完调动后,判断调动后岗位的【薪酬标准方案】为“江铜集团岗位绩效工资制”的,更新定调薪人员名单列表
  * 单据包含入职单,调动单,自动更新员工待定调薪清单
- * author: turborao
- * date: 2025/11/20 16:05
+ * @author: turborao
+ * @date: 2025/11/20 16:05
  */
 public class PendingSalaryAdjTask extends AbstractTask implements Plugin {
     private static final Log logger = LogFactory.getLog(PendingSalaryAdjTask.class);