Browse Source

refactor(income-proof): 优化收入证明单插件代码结构

- 移除未使用的导入包包括 OperateOption、QCP、QFilter 等
- 将 BigDecimal 四舍五入方式改为 RoundingMode.HALF_UP
- 优化 SQL 查询构建逻辑,使用链式调用提升代码可读性
- 添加薪资数据查询日志便于问题排查
- 清理注释格式并规范文档描述
- 移除多余空行和无用代码提升代码整洁度
turborao 3 ngày trước cách đây
mục cha
commit
3f3ef779f3

+ 11 - 21
code/swc/nckd-jxccl-swc/src/main/java/nckd/jxccl/swc/hcss/formplugin/IncomeProofBillExPlugin.java

@@ -1,7 +1,6 @@
 package nckd.jxccl.swc.hcss.formplugin;
 
 import kd.bos.algo.DataSet;
-import kd.bos.dataentity.OperateOption;
 import kd.bos.dataentity.entity.DynamicObject;
 import kd.bos.dataentity.entity.DynamicObjectCollection;
 import kd.bos.db.DB;
@@ -13,26 +12,23 @@ import kd.bos.form.operate.FormOperate;
 import kd.bos.logging.Log;
 import kd.bos.logging.LogFactory;
 import kd.bos.orm.ORM;
-import kd.bos.orm.query.QCP;
-import kd.bos.orm.query.QFilter;
 import kd.bos.servicehelper.parameter.SystemParamServiceHelper;
-import kd.sdk.swc.hsas.business.internal.spi.CalResultQueryService;
 import kd.swc.hcss.formplugin.web.AbstractHcssBaseFormPlugin;
-import nckd.jxccl.swc.constants.SwcConstant;
 import nckd.jxccl.swc.utils.SwcUtils;
-
 import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.util.*;
-import java.util.stream.Collectors;
+
 
 /**
  * 自定义收入证明项目列表
  * 系统服务云-公共设置-系统参数-自定义参数
  * 参数名称为 INCOMEPROOFBILL_CUSTOMITEMS 收入证明办理单,自定义收入证明项目编码 参数值为  000001,000002
  * 参数名称为 INCOMEPROOFBILL_SALARYITEMS 收入证明办理单,自定义收入证明获取员工薪酬金额的薪酬项目编码 参数值为  JT_283,JT_477  示例
+ *
  * @author turborao
- * @date 2026-01-07
- * @desc
+ * 创建时间 2026-01-07
+ * 描述 自定义收入证明项目获取计算
  */
 public class IncomeProofBillExPlugin extends AbstractHcssBaseFormPlugin {
 
@@ -56,9 +52,7 @@ public class IncomeProofBillExPlugin extends AbstractHcssBaseFormPlugin {
     public void beforeDoOperation(BeforeDoOperationEventArgs args) {
 
         FormOperate source = (FormOperate)args.getSource();
-        OperateOption option = source.getOption();
         String formOp = source.getOperateKey();
-        Long id = this.getModel().getDataEntity().getLong("id");
         DynamicObject data = this.getModel().getDataEntity();
         Long empId = data.getLong("employee.id");
         Date startDate = data.getDate("nckd_startdate");
@@ -71,10 +65,7 @@ public class IncomeProofBillExPlugin extends AbstractHcssBaseFormPlugin {
 
         super.beforeDoOperation(args);
 
-        /**
-         * 以上需要保留标准产品计算逻辑,
-         * 有自定义收入证明项目时才取数
-         */
+        /// 以上需要保留标准产品计算逻辑,有自定义收入证明项目时才取数
         if(isExistCustomItems){
             String salaryitem = getSalaryItemsForSql();
             DynamicObjectCollection salaryDetail = querySalaryDetailByEmp(empId, salaryitem, startDate, endDate);
@@ -82,25 +73,24 @@ public class IncomeProofBillExPlugin extends AbstractHcssBaseFormPlugin {
                 DynamicObject salaryDetailObj = salaryDetail.get(0);
                 BigDecimal amount = salaryDetailObj.getBigDecimal("amount");
                 BigDecimal monthCount = salaryDetailObj.getBigDecimal("monthCount");
-                BigDecimal monthlyAmount = amount.divide(monthCount, 2, BigDecimal.ROUND_HALF_UP);
+                BigDecimal monthlyAmount = amount.divide(monthCount, 2, RoundingMode.HALF_UP);
                 //赋值
                 if(amount.compareTo(BigDecimal.ZERO) > 0 && monthCount.compareTo(BigDecimal.ZERO) > 0) {
-                    dealIncomeInfo(amount.setScale(2), monthlyAmount);
+                    dealIncomeInfo(amount.setScale(2, RoundingMode.HALF_UP), monthlyAmount);
                 }
             }
         }
     }
 
-
     /**
      * 根据薪员工 +日期范围获取薪资明细
-     * @return
+     * @return  DynamicObjectCollection
      */
     public DynamicObjectCollection querySalaryDetailByEmp(Long empId,String salaryitem, Date startDate, Date endDate) {
         StringBuilder sb = SwcUtils.getSalaryDetailSqlByEmp(empId, salaryitem,startDate, endDate);
         DataSet dataSet = DB.queryDataSet(this.getClass().getName(), DBRoute.of("swc"), sb.toString());
-        DynamicObjectCollection cols = ORM.create().toPlainDynamicObjectCollection(dataSet);
-        return cols;
+        logger.info("IncomeProofBillExPlugin 开始查询薪资数据,参数:{},{},{},{}", empId, salaryitem,startDate,endDate);
+        return ORM.create().toPlainDynamicObjectCollection(dataSet);
 
     }
 

+ 21 - 26
code/swc/nckd-jxccl-swc/src/main/java/nckd/jxccl/swc/utils/SwcUtils.java

@@ -1,15 +1,11 @@
 package nckd.jxccl.swc.utils;
 
-import com.grapecity.documents.excel.H;
+
 import kd.bos.dataentity.entity.DynamicObject;
 import kd.bos.dataentity.entity.DynamicObjectCollection;
-import kd.bos.dataentity.utils.StringUtils;
 import kd.bos.orm.query.QCP;
 import kd.bos.orm.query.QFilter;
-import kd.hr.hbp.business.servicehelper.HRBaseServiceHelper;
 import nckd.jxccl.swc.constants.SwcConstant;
-
-import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.time.LocalDate;
 import java.time.ZoneId;
@@ -115,27 +111,26 @@ public class SwcUtils {
         String endDateStr = dateToStr(endDate, 2);
 
         StringBuilder sb = new StringBuilder();
-        sb.append("/*dialect*/ SELECT  c.femployeeid,d.fname empName,\n" +
-                //"       h.fnumber itemName,\n" +
-                "       d.fempnumber empNumber,\n" +
-                "       count(distinct to_char(b1.fpaydate,'yyyy-MM')) monthCount,\n" +
-                "       sum(g.fcalamountvalue) amount\n" +
-                "from t_hsas_calpayrolltask b \n" +
-                "left join t_hsas_calpayrolltask_a b1 on b1.fid = b.fid \n" +
-                "left join t_hsas_calperson c on c.fcaltaskid = b.fid \n" +
-                "left join t_hrpi_employee d on d.fid = c.femployeeid \n" +
-                "left join t_hrpi_percre e on e.femployeeid = d.fid and e.fcredentialstypeid = '1010'\n" +
-                "left join t_hsas_caltable f on f.fcaltaskid = b.fid and f.fcalpersonid = c.fid \n" +
-                "left join t_hsas_caltableentry g on g.fid = f.fid \n" +
-                "left join t_hsbs_salaryitem h on h.fid = g.fsalaryitemid \n" +
-                "where 1 = 1 and b1.ftaskstatus in ('4','7','8','9')  ---计算完成 9--已审核 7--审批处理中 8--审批通过 4 \n" +
-                "  and h.fnumber in ("+salaryitem+") \n");
-        sb.append("and b1.fpaydate >= '"+startDateStr+"' \n");
-        //sb.append("and b1.fpaydate >= '2025-01-01 00:00:00' \n");
-        sb.append("and b1.fpaydate <= '"+endDateStr+"' \n");
-        sb.append("and c.femployeeid in ("+empId+") \n");
-        //sb.append("and c.femployeeid in (2311775636290546688) \n");
-        sb.append("group by c.femployeeid,d.fname, d.fempnumber");
+        sb.append("/*dialect*/ SELECT  c.femployeeid,d.fname empName, \n")
+                .append("   d.fempnumber empNumber, \n")
+                .append("   count(distinct to_char(b1.fpaydate,'yyyy-MM')) monthCount, \n")
+                .append("   sum(g.fcalamountvalue) amount \n")
+                .append("from t_hsas_calpayrolltask b \n")
+                .append("left join t_hsas_calpayrolltask_a b1 on b1.fid = b.fid \n")
+                .append("left join t_hsas_calperson c on c.fcaltaskid = b.fid \n")
+                .append("left join t_hrpi_employee d on d.fid = c.femployeeid \n")
+                .append("left join t_hrpi_percre e on e.femployeeid = d.fid and e.fcredentialstypeid = '1010'\n")
+                .append("left join t_hsas_caltable f on f.fcaltaskid = b.fid and f.fcalpersonid = c.fid \n")
+                .append("left join t_hsas_caltableentry g on g.fid = f.fid \n")
+                .append("left join t_hsbs_salaryitem h on h.fid = g.fsalaryitemid \n")
+                .append("where 1 = 1 and b1.ftaskstatus in ('4','7','8','9')  ---计算完成 9--已审核 7--审批处理中 8--审批通过 4 \n")
+                .append("and h.fnumber in (").append(salaryitem).append(") \n")
+                .append("and b1.fpaydate >= '").append(startDateStr).append("' \n")
+                //.append("and b1.fpaydate >= '2025-01-01 00:00:00' \n")
+                .append("and b1.fpaydate <= '").append(endDateStr).append("' \n")
+                .append("and c.femployeeid in (").append(empId).append(") \n")
+                //.append("and c.femployeeid in (2311775636290546688) \n")
+                .append("group by c.femployeeid,d.fname, d.fempnumber");
 
         return sb;
     }