Explorar el Código

feat(hr): 添加政策公告功能实现

- 新增 AnnouncementsBasePlugin 插件类处理政策公告业务逻辑
- 实现 createNewData 方法自动填充员工所属公司信息
- 实现 beforeDoOperation 方法处理发布和撤回操作
- 在 FormConstant 中添加政策公告实体标识常量
- 更新 SWCHelper 查询字段以支持公司信息获取
turborao hace 4 días
padre
commit
65911700a6

+ 2 - 0
code/base/nckd-jxccl-base-common/src/main/java/nckd/jxccl/base/common/constant/FormConstant.java

@@ -119,6 +119,8 @@ public class FormConstant {
     public static final String HSBS_CALFREQUENCY = "hsbs_calfrequency";
     /** 考核结果实体标识 */
     public static final String NCKD_APPRAISALRESULT = "nckd_appraisalresult";
+    /** 政策公告实体标识 */
+    public static final String NCKD_ANNOUNCEMENTS = "nckd_announcements";
     /**
      * 定调薪类型 默认值  用于  定调薪清单处理
      * */

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

@@ -244,7 +244,7 @@ public class SWCHelper {
         QFilter filter = new QFilter("iscurrentdata", QCP.equals, "1"); // 启用
         filter.and(new QFilter("employee.id", QCP.in, employeeId));
 
-        String selectFields1 = "employee.id,adminorg.id,adminorg.belongcompany.id";
+        String selectFields1 = "employee.id,adminorg.id,adminorg.belongcompany.id,company.id";
         DynamicObject[] empposorgreDyns = BusinessDataServiceHelper.load("hrpi_empposorgrel", selectFields1, filter.toArray());
 
         return empposorgreDyns;

+ 68 - 0
code/hr/nckd-jxccl-hr/src/main/java/nckd/jxccl/hr/tsc/plugin/form/AnnouncementsBasePlugin.java

@@ -0,0 +1,68 @@
+package nckd.jxccl.hr.tsc.plugin.form;
+
+import kd.bos.dataentity.entity.DynamicObject;
+import kd.bos.entity.datamodel.events.BizDataEventArgs;
+import kd.bos.form.events.BeforeDoOperationEventArgs;
+import kd.bos.form.operate.FormOperate;
+import kd.bos.servicehelper.user.UserServiceHelper;
+import kd.hr.hbp.business.servicehelper.HRBaseServiceHelper;
+import kd.sdk.plugin.Plugin;
+import kd.hr.hbp.formplugin.web.template.HRBaseDataTplEdit;
+import nckd.jxccl.base.common.constant.FormConstant;
+import nckd.jxccl.base.swc.helper.SWCHelper;
+import java.util.List;
+
+/**
+ * 政策公告插件
+ * @author turborao
+ * 时间 2026/1/13 16:05
+ */
+public class AnnouncementsBasePlugin extends HRBaseDataTplEdit implements Plugin {
+
+    @Override
+    public void createNewData(BizDataEventArgs e) {
+        super.createNewData(e);
+
+        Long userId = UserServiceHelper.getCurrentUserId();
+
+        DynamicObject personUserDyn = SWCHelper.queryOne(FormConstant.HRPI_PERSONUSERREL, "employee.id","user",userId);
+
+        Long empId = 0L;
+        if(personUserDyn == null){
+            /**
+             * 没有员工信息时,返回常量,用于测试
+             */
+            //KEY_EMPID = 2313784485549715456L;
+            this.getView().showMessage("未找到员工!");
+            return;
+        }else {
+            empId = personUserDyn.getLong("employee.id");
+        }
+        List<Long> employeeIds = new java.util.ArrayList<>();
+        employeeIds.add(empId);
+        DynamicObject[] empDyns = SWCHelper.queryEmpPosOrgRelDyns(employeeIds);
+        if(empDyns != null && empDyns.length > 0){
+            Long companyId = empDyns[0].getLong("company.id");
+            this.getModel().setValue("nckd_hradminorg", companyId);
+        }
+
+    }
+
+    @Override
+    public void beforeDoOperation(BeforeDoOperationEventArgs args) {
+        FormOperate source = (FormOperate)args.getSource();
+        String formOp = source.getOperateKey();
+        DynamicObject data = this.getModel().getDataEntity();
+        HRBaseServiceHelper hrBaseServiceHelper = new HRBaseServiceHelper(FormConstant.NCKD_ANNOUNCEMENTS);
+        if ("publish".equals(formOp)) {
+            data.set("nckd_billstatus", "C");
+            data.set("nckd_publishdate", new java.util.Date());
+            data.set("nckd_publishuser", UserServiceHelper.getCurrentUserId());
+            Object billPk = hrBaseServiceHelper.saveOne(data);
+        }
+        if("withdraw".equals(formOp)){
+            data.set("nckd_billstatus", "A");
+            Object billPk = hrBaseServiceHelper.saveOne(data);
+        }
+    }
+}