Răsfoiți Sursa

feat(hr): 优化岗位在岗人员信息统计逻辑

- 调整岗位在岗人员数量计算方式,确保数据准确性
- 增加岗位数及在岗人员信息的日志输出
- 修复岗位人员列表为空时的判断逻辑
- 重构岗位人员分组统计方法,提高代码可读性
- 完善岗位类型过滤条件,精确匹配主岗人员
- 优化查询结果处理流程,提升执行效率
Tyx 22 ore în urmă
părinte
comite
177f347122

+ 5 - 5
code/jyyy/nckd-jimin-jyyy-hr/src/main/java/nckd/jimin/jyyy/hr/hrmp/hbpm/opplugin/web/position/PositionDataProviderEx.java

@@ -39,17 +39,17 @@ public class PositionDataProviderEx extends ListDataProvider {
         if(staffResponse.isSuccess()) {
             staffMap = (Map) staffResponse.getData();
         }
-        if(map.isEmpty())
-            return rows;
+        log.info("岗位数:" + ids.size());
+        log.info("获取在岗人员信息成功:" + staffMap);
         for(DynamicObject position : rows) {
             int personCount = 0;
             int personCountPart = 0;
             int staffCount = 0;
             int lackCount = 0;
             Long positionId = position.getLong("id");
-            //在岗数:
-            List<DynamicObject> personList = map.get(positionId);
-            if(personList != null) {
+            if(map.keySet().contains(positionId)) {
+                List<DynamicObject> personList = map.get(positionId);
+                //在岗数:
                 //获取在岗数,排除兼职
                 List filterList = personList.stream().filter(dyx -> dyx.getString("postype.number").equals("1010_S")).collect(Collectors.toList());
                 personCount = filterList.size();

+ 2 - 2
code/jyyy/nckd-jimin-jyyy-hr/src/main/java/nckd/jimin/jyyy/hr/hrmp/hbpm/opplugin/web/position/PositionUtils.java

@@ -22,6 +22,7 @@ public class PositionUtils {
      * @return Map key = 岗位Id, value = 企业人Dyn
      */
     public static Map<Long, List<DynamicObject>> getAllUPersonOfPosition(String posType, List<Long> positionIds) {
+        Map<Long, List<DynamicObject>> map = new HashMap(16);
         Map<Long, DynamicObject> personMap = new HashMap(16);
         QFilter orgFilter = new QFilter("position.id", "in", positionIds);
         orgFilter.and(new QFilter("businessstatus", "=", "1"));
@@ -32,9 +33,8 @@ public class PositionUtils {
         DynamicObject[] dynamicObjects = depempServiceHelper.queryOriginalArray(selectFields
                 ,new QFilter[]{orgFilter, QFilterUtil.getCurrentQf(), QFilterUtil.getDataStatusFilter(), QFilterUtil.getInitStatusFinish()});
 
-
         List<DynamicObject> list = Arrays.stream(dynamicObjects).collect(Collectors.toList());
-        Map<Long, List<DynamicObject>> map = list.stream().collect(Collectors.groupingBy(dyx -> dyx.getLong("position.id")));
+        map = list.stream().collect(Collectors.groupingBy(dyx -> dyx.getLong("position.id")));
         return map;
     }