Explorar o código

feat(business):优化基础医疗津贴计算逻辑并增强日志记录新增日志记录功能,用于输出员工岗位相关信息。
在计算基础医疗津贴时增加 isAll 参数,以区分是否全量计算。查询员工组织关系时添加岗位类型过滤条件,确保数据准确性。
调整代码结构,提升可读性和维护性。

turborao hai 1 mes
pai
achega
e137c5cd1c

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

@@ -4,15 +4,14 @@ import kd.bos.algo.DataSet;
 import kd.bos.algo.Row;
 import kd.bos.dataentity.entity.DynamicObject;
 import kd.bos.dataentity.entity.DynamicObjectCollection;
-import kd.bos.dataentity.metadata.dynamicobject.DynamicObjectType;
 import kd.bos.db.DB;
+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.BusinessDataServiceHelper;
 import kd.bos.servicehelper.QueryServiceHelper;
 import kd.bos.servicehelper.operation.SaveServiceHelper;
-
-
 import java.time.LocalDate;
 import java.util.*;
 import java.util.stream.Collectors;
@@ -33,6 +32,8 @@ import java.util.stream.Collectors;
  * date: 2025/10/27 13:05
  */
 public class BaseMedicalAllowanceServiceImpl implements BaseMedicalAllowanceService{
+
+    private static final Log logger = LogFactory.getLog(BaseMedicalAllowanceServiceImpl.class);
     public Map<String, String> calcBaseMedicalAllowanceForAll() {
 
         //取员工档案
@@ -43,7 +44,7 @@ public class BaseMedicalAllowanceServiceImpl implements BaseMedicalAllowanceServ
         String selectFields="id,employee.id,employee.number,nckd_benefitentry.nckd_effeyear,nckd_benefitentry.nckd_suppbenefit";
         DynamicObject[] datas = BusinessDataServiceHelper.load(billKey, selectFields, new QFilter[]{filter1.and(filter2)});
 
-        Map<String, String> result = calcBaseMedicalAllowance(datas);
+        Map<String, String> result = calcBaseMedicalAllowance(datas, true);
 
         return result;
     }
@@ -59,14 +60,14 @@ public class BaseMedicalAllowanceServiceImpl implements BaseMedicalAllowanceServ
         String selectFields="id,employee.id,employee.number,nckd_benefitentry.nckd_effeyear,nckd_benefitentry.nckd_suppbenefit";
         DynamicObject[] datas = BusinessDataServiceHelper.load(billKey, selectFields, new QFilter[]{filter1.and(filter2).and(filter3)});
 
-        Map<String, String> result = calcBaseMedicalAllowance(datas);
+        Map<String, String> result = calcBaseMedicalAllowance(datas,false);
 
         return result;
 
     }
 
 
-    public Map<String, String> calcBaseMedicalAllowance(DynamicObject[] datas) {
+    public Map<String, String> calcBaseMedicalAllowance(DynamicObject[] datas, boolean isAll) {
 
         // 获取当前日期
         LocalDate currentDate = LocalDate.now();
@@ -99,7 +100,8 @@ public class BaseMedicalAllowanceServiceImpl implements BaseMedicalAllowanceServ
         QFilter qFilter2 = new QFilter("employee.id",QCP.in, employeeIDs);
         QFilter qFilter21 = new QFilter("iscurrentdata", QCP.equals, true); // 启用
         QFilter qFilter22 = new QFilter("isprimary", QCP.equals, "1");  //主任职
-        DataSet empOrgRelDS = QueryServiceHelper.queryDataSet(this.getClass().getName(),"hrpi_empposorgrel", "id,employee.id,company.id,company.name,position.id,position.number,position.name,adminorg.number", new QFilter[]{qFilter2,qFilter21,qFilter22},null);
+        QFilter qFilter23 = new QFilter("postype.id", QCP.equals, 1010L); //主任职
+        DataSet empOrgRelDS = QueryServiceHelper.queryDataSet(this.getClass().getName(),"hrpi_empposorgrel", "id,employee.id,company.id,company.name,position.id,position.number,position.name,adminorg.number", new QFilter[]{qFilter2,qFilter21,qFilter22,qFilter23},null);
         empOrgRelDS.print(true);
         /***
          * 获取员工档案 雇佣信息  用工关系状态
@@ -161,6 +163,8 @@ public class BaseMedicalAllowanceServiceImpl implements BaseMedicalAllowanceServ
         while (iterator.hasNext()) {
             Row row = iterator.next();
             DynamicObject employeeFile = employeeFileMaps.get(row.getLong("id"));
+            String personNum = row.getString("number") == null ? "" : row.getString("number");
+            String personName = row.getString("name") == null ? "" : row.getString("name");
             String adminorgNum = row.getString("adminorgNum") == null ? "" : row.getString("adminorgNum");
             String positionNum = row.getString("positionNum") == null ? "" : row.getString("positionNum");
             String positionName = row.getString("positionName") == null ? "" : row.getString("positionName");
@@ -169,6 +173,11 @@ public class BaseMedicalAllowanceServiceImpl implements BaseMedicalAllowanceServ
             String prolevelNum = row.getString("prolevelNum") == null ? "" : row.getString("prolevelNum");
             String qualevelNum = row.getString("qualevelNum")  == null ? "" : row.getString("qualevelNum");
 
+            if(!isAll) {
+                logger.info("员工编号:{},员工姓名:{},部门:{},岗位:{},职务级别:{},职称级别:{},职业资格等级:{},用工关系状态:{}",
+                        personNum, personName, adminorgNum, positionName, posgradeNum, prolevelNum, qualevelNum, laborrelstatusNum);
+            }
+
             int money = 0;
             List<String> L4800 = Arrays.asList("1", "2");
             List<String> L3600 = Arrays.asList("3", "4", "5");

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

@@ -98,9 +98,10 @@ public class DelayedRetirementDateCalcTask  extends AbstractTask implements Plug
         QFilter filter7 = new QFilter("iscurrentdata", QCP.equals, true); // 启用
         QFilter filter8 = new QFilter("isprimary", QCP.equals, "1");  //主任职
         QFilter filter9 = new QFilter("employee.id", QCP.in, employeeIDs);
+        QFilter filter10 = new QFilter("postype.id", QCP.equals, 1010L); //主任职
 
         String selectFields1 = "id,employee.id,company.id";
-        DynamicObjectCollection empposorgreDyns = QueryServiceHelper.query("hrpi_empposorgrel", selectFields1, new QFilter[]{filter7 ,filter8,filter9});
+        DynamicObjectCollection empposorgreDyns = QueryServiceHelper.query("hrpi_empposorgrel", selectFields1, new QFilter[]{filter7 ,filter8,filter9,filter10});
 
         Map<Long, DynamicObject> empposorgreMap = (Map)empposorgreDyns.stream().collect(Collectors.toMap((obj) -> {
             return obj.getLong("employee.id");