Parcourir la source

feat(quitapply): 实现离职申请表单应休未休年假计算功能

- 添加日志记录功能用于调试年假计算流程
- 集成考勤档案查询服务获取员工考勤信息
- 实现年假额度累加计算逻辑支持多条记录汇总
- 添加 BigDecimal 类型处理确保数值精度准确
- 优化异常情况处理当考勤档案为空时显示提示信息
jtd il y a 5 jours
Parent
commit
92ab24ebf3

+ 12 - 2
code/hr/nckd-jxccl-hr/src/main/java/nckd/jxccl/hr/htm/plugin/form/quitapply/QuitApplyFormPlugin.java

@@ -5,12 +5,15 @@ import kd.bos.dataentity.entity.DynamicObject;
 import kd.bos.dataentity.serialization.SerializationUtils;
 import kd.bos.entity.datamodel.events.PropertyChangedArgs;
 import kd.bos.form.plugin.AbstractFormPlugin;
+import kd.bos.logging.Log;
+import kd.bos.logging.LogFactory;
 import kd.bos.orm.query.QCP;
 import kd.bos.orm.query.QFilter;
 import kd.bos.servicehelper.QueryServiceHelper;
 import kd.hr.hbp.business.servicehelper.HRMServiceHelper;
 import nckd.jxccl.hr.htm.common.quitapply.QuitApplyConstant;
 
+import java.math.BigDecimal;
 import java.util.Collections;
 import java.util.Date;
 import java.util.HashMap;
@@ -24,6 +27,7 @@ import java.util.Map;
  * @date: 2025/11/18 22:53
  */
 public class QuitApplyFormPlugin extends AbstractFormPlugin {
+    private static final Log log = LogFactory.getLog(QuitApplyFormPlugin.class);
 
     /** 培养协议合同类型编码 */
     private static final String CONTRACTTYPE_NUMBER = "JT01";
@@ -78,9 +82,11 @@ public class QuitApplyFormPlugin extends AbstractFormPlugin {
      * @param contractEndDate 离职日期
      */
     private void setUnUsedAnnualLeave(Long employeeId, Date contractEndDate) {
+        log.info("设置应休未休剩余年假>>>nckd.jxccl.hr.htm.plugin.form.quitapply.QuitApplyFormPlugin.setUnUsedAnnualLeave");
         // 获取人员考勤档案
         //String attFileSerializedString = DispatchServiceHelper.invokeService("nckd.jxccl.wtc.wtp.servicehelper", QuitApplyConstant.WTP_APP, "IWTPCustomerService", "getAttFile", new Object[]{contractEndDate.toInstant().atZone(ZoneId.systemDefault()).toLocalDate(), employeeId});
         Object attFileObj = HRMServiceHelper.invokeBizService(QuitApplyConstant.WTC_CLOUD, QuitApplyConstant.WTBS_APP, "IAttFileQueryService", "attFileQuery", new Object[]{contractEndDate, employeeId});
+        log.info("设置应休未休剩余年假>>>attFileObj:::"+attFileObj);
         if (attFileObj == null) {
             getView().showTipNotification("未获取到应休未休剩余年假,请检查离职人员是否存在离职时间内有效的考勤档案");
             return;
@@ -89,9 +95,13 @@ public class QuitApplyFormPlugin extends AbstractFormPlugin {
 
         List<DynamicObject> quotaList = HRMServiceHelper.invokeBizService(QuitApplyConstant.WTC_CLOUD, QuitApplyConstant.WTP_APP, "IQTService", "queryQuota", new Object[]{attFile.get("boId"), Collections.singletonList(1666695290893207552L), 0, contractEndDate, contractEndDate});
         //List<DynamicObject> quotaList = DispatchServiceHelper.invokeService("nckd.jxccl.wtc.wtp.servicehelper", QuitApplyConstant.WTP_APP, "IWTPCustomerService", "queryQuota", new Object[]{attFile.get("boId"), Collections.singletonList(1666695290893207552L), 0, contractEndDate, contractEndDate});
+        log.info("设置应休未休剩余年假>>>quotaList.size:::"+(quotaList.isEmpty() ? 0 : quotaList.size()));
         if (quotaList != null && !quotaList.isEmpty()) {
-            DynamicObject quotaDy = quotaList.get(0);
-            getModel().setValue(QuitApplyConstant.NCKD_UNUSEDANNUALLEAVE_KEY, quotaDy.getBigDecimal(QuitApplyConstant.USABLEVALUE_KEY));
+            BigDecimal quota = BigDecimal.ZERO;
+            for (DynamicObject quotaDy : quotaList) {
+                quota = quota.add(quotaDy.getBigDecimal(QuitApplyConstant.USABLEVALUE_KEY) == null ? BigDecimal.ZERO : quotaDy.getBigDecimal(QuitApplyConstant.USABLEVALUE_KEY));
+            }
+            getModel().setValue(QuitApplyConstant.NCKD_UNUSEDANNUALLEAVE_KEY, quota);
         } else {
             getModel().setValue(QuitApplyConstant.NCKD_UNUSEDANNUALLEAVE_KEY, 0);
         }