Bladeren bron

feat(business):优化社保补助待遇标准计算日志及职务级别注释

更新了 BaseMedicalAllowanceServiceImpl 中的日志输出内容,增加“社保补助待遇标准计算(补充医疗保险)”前缀,
以便更清晰地标识日志来源。同时合并了多行注释,使职务级别相关描述更加简洁明了。新增 CalResultCoverSalaryItemExtPlugin 扩展插件,用于在计算结果覆盖薪酬项目时排除非财务类薪酬项目,
支持根据用户角色和规则配置动态过滤数据项。
turborao 1 maand geleden
bovenliggende
commit
5369004923

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

@@ -174,7 +174,7 @@ public class BaseMedicalAllowanceServiceImpl implements BaseMedicalAllowanceServ
             String qualevelNum = row.getString("qualevelNum")  == null ? "" : row.getString("qualevelNum");
 
             if(!isAll) {
-                logger.info("员工编号:{},员工姓名:{},部门:{},岗位:{},职务级别:{},职称级别:{},职业资格等级:{},用工关系状态:{}",
+                logger.info("社保补助待遇标准计算(补充医疗保险) 员工编号:{}, 员工姓名:{}, 部门:{}, 岗位:{}, 职务级别:{}, 职称级别:{}, 职业资格等级:{}, 用工关系状态:{}",
                         personNum, personName, adminorgNum, positionName, posgradeNum, prolevelNum, qualevelNum, laborrelstatusNum);
             }
 
@@ -210,9 +210,7 @@ public class BaseMedicalAllowanceServiceImpl implements BaseMedicalAllowanceServ
                 money = 4800;
             }
             /**
-             * 职务级别为"中层正职
-             * 中层副职
-             * 中层副职(托管)"的正式员工 3600
+             * 职务级别为"中层正职、中层副职、中层副职(托管)"的正式员工 3600
              */
             else if (laborrelstatusNum.equals("1010_S")  &&  L3600.contains(posgradeNum) ) {
                 money = 3600;
@@ -230,10 +228,7 @@ public class BaseMedicalAllowanceServiceImpl implements BaseMedicalAllowanceServ
                 money = 2400;
             }
             /**
-             * 职务级别为"基层正职
-             * 基层正职(托管)
-             * 基层副职
-             * 基层副职(托管)"的正式员工 2400
+             * 职务级别为"基层正职、基层正职(托管)、基层副职、基层副职(托管)"的正式员工 2400
              */
             else if (laborrelstatusNum.equals("1010_S")  &&  L2400.contains(posgradeNum) ) {
                 money = 2400;
@@ -244,7 +239,6 @@ public class BaseMedicalAllowanceServiceImpl implements BaseMedicalAllowanceServ
             else if (laborrelstatusNum.equals("1010_S")  &&  positionName.contains("协理员") ) {
                 money = 2400;
             }
-
             /**
              * 职务级别为"其他"的正式员工 1800
              */

+ 64 - 0
code/swc/nckd-jxccl-swc/src/main/java/nckd/jxccl/swc/init/business/CalResultCoverSalaryItemExtPlugin.java

@@ -0,0 +1,64 @@
+package nckd.jxccl.swc.init.business;
+
+import kd.bos.context.RequestContext;
+import kd.bos.dataentity.entity.DynamicObject;
+import kd.bos.dataentity.entity.DynamicObjectCollection;
+import kd.bos.entity.param.CustomParam;
+import kd.bos.servicehelper.parameter.SystemParamServiceHelper;
+import kd.bos.servicehelper.permission.PermissionServiceHelper;
+import kd.sdk.swc.hsas.common.events.calperson.CalResultCoverSalaryItemEvent;
+import kd.sdk.swc.hsas.formplugin.extpoint.resultcover.ICalResultCoverSalaryItemExtPlugin;
+
+import kd.swc.hsas.business.calpayrolltask.CalPayrollTaskHelper;
+import kd.swc.hsbp.business.servicehelper.SWCDataServiceHelper;
+import kd.swc.hsbp.common.util.SWCListUtils;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+
+/**
+ * 描述: 计算结果覆盖薪酬项目扩展接口(排除非财务薪酬项目)
+ * @author turborao
+ * @date 2025/10/31 10:05
+ */
+public class CalResultCoverSalaryItemExtPlugin  implements ICalResultCoverSalaryItemExtPlugin {
+    @Override
+    public void fillExtSalaryItem(CalResultCoverSalaryItemEvent event) {
+        ArrayList excludeItemIdList = new ArrayList<Long>();
+        /**
+         * 获取当前用户
+         */
+        Long userId = RequestContext.getOrCreate().getCurrUserId();
+        /**
+         * 获取 公共自定义参数  WTC_CAL_ACCOUNT
+         */
+        CustomParam customParam = new CustomParam();
+        customParam.getSearchKeySet().add("WTC_CAL_ACCOUNT");
+        Map<String, String> cusTomMap = SystemParamServiceHelper.loadCustomParameterFromCache(customParam);
+        String wtc_cal_account  = cusTomMap.get("WTC_CAL_ACCOUNT");
+        /**
+         * 获取角色中的用户LIST
+         */
+        List<Long> userIdList = PermissionServiceHelper.getUsersByRoleNum(wtc_cal_account);
+
+        Long taskId = event.getCalTaskId();
+        DynamicObject task = CalPayrollTaskHelper.queryTaskInfoById(taskId);
+        DynamicObject calRuleHisObj = task.getDynamicObject("calrulev");
+        if (calRuleHisObj != null && calRuleHisObj.getLong("id") > 0L && userIdList.contains(userId)) {
+            SWCDataServiceHelper helper = new SWCDataServiceHelper("hsas_calrule");
+            DynamicObject calRulev = helper.queryOne(calRuleHisObj.getLong("id"));
+            if (calRulev != null && !SWCListUtils.isEmpty(calRulev.getDynamicObjectCollection("calruleitementry"))) {
+                DynamicObjectCollection calRuleItemEntry = calRulev.getDynamicObjectCollection("calruleitementry");
+                for (DynamicObject dataItem: calRuleItemEntry ) {
+                    boolean isAccount = dataItem.getBoolean("nckd_cbaccount");
+                    if (!isAccount) {
+                        excludeItemIdList.add(dataItem.getLong("salaryitem.id"));
+                    }
+                }
+                event.setExcludeItemIdList(excludeItemIdList);
+            }
+        }
+    }
+}