diff --git a/src/main/java/com/zhgd/xmgl/modules/worker/controller/WorkerInfoController.java b/src/main/java/com/zhgd/xmgl/modules/worker/controller/WorkerInfoController.java index 7d0795b95..6dc4cfaaf 100644 --- a/src/main/java/com/zhgd/xmgl/modules/worker/controller/WorkerInfoController.java +++ b/src/main/java/com/zhgd/xmgl/modules/worker/controller/WorkerInfoController.java @@ -8,11 +8,9 @@ import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.io.FileUtil; import cn.hutool.core.util.IdUtil; -import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.ZipUtil; import cn.hutool.extra.qrcode.QrCodeUtil; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.gexin.fastjson.TypeReference; import com.zhgd.annotation.OperLog; @@ -578,7 +576,7 @@ public class WorkerInfoController { }) @PostMapping("/selectWorkerTeamStatistics") public Result> selectWorkerTeamStatistics(@RequestBody Map map) { - return Result.success(workerInfoService.selectWorkerTeamStatistics(map)); + return Result.success(workerInfoService.selectWorkerTeamStatisticsGroupByName(map)); } @OperLog(operModul = "劳务管理", operType = "查询", operDesc = "查询项目下按照部门和班组统计") diff --git a/src/main/java/com/zhgd/xmgl/modules/worker/service/IWorkerInfoService.java b/src/main/java/com/zhgd/xmgl/modules/worker/service/IWorkerInfoService.java index e400bf03e..30b6339cf 100644 --- a/src/main/java/com/zhgd/xmgl/modules/worker/service/IWorkerInfoService.java +++ b/src/main/java/com/zhgd/xmgl/modules/worker/service/IWorkerInfoService.java @@ -593,4 +593,12 @@ public interface IWorkerInfoService extends IService { List> getPostWorkTypeList(Map map); void updateWorkerOrg(Map map); + + /** + * 相同的工种名称放在一起统计 + * + * @param map + * @return + */ + List selectWorkerTeamStatisticsGroupByName(Map map); } diff --git a/src/main/java/com/zhgd/xmgl/modules/worker/service/impl/WorkerInfoServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/worker/service/impl/WorkerInfoServiceImpl.java index 725457ca7..e93c68e20 100644 --- a/src/main/java/com/zhgd/xmgl/modules/worker/service/impl/WorkerInfoServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/worker/service/impl/WorkerInfoServiceImpl.java @@ -849,6 +849,92 @@ public class WorkerInfoServiceImpl extends ServiceImpl selectWorkerTeamStatisticsGroupByName(Map map) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.lambda().eq(TeamInfo::getProjectSn, MapUtils.getString(map, "projectSn")); + List list = teamInfoMapper.selectTeamInfoList(map); + List> tempList = new ArrayList<>(); + if (list != null && list.size() > 0) { + //查询各班组总人数 + List> toaltPerson = workerInfoMapper.selectWorkerTeamTotal(map); + Map personMap = getListToMap(toaltPerson, "teamId", "totalPerson"); + //查询各班组在场总人数 + List> presencePerson = workerInfoMapper.selectPresenceWorkerTeamTotal(map); + Map presenceMap = getListToMap(presencePerson, "teamId", "totalPerson"); + //查询各班组出勤人数 + List> attendancePerson = workerInfoMapper.selectAttendanceWorkerTeamTotal(map); + Map attendanceMap = getListToMap(attendancePerson, "teamId", "totalPerson"); + //汇总各班组的总人数、在场人数、出勤人数 + for (TeamInfo teamInfo : list) { + Map data = new HashMap<>(16); + data.put("teamId", teamInfo.getId()); + data.put("teamName", teamInfo.getTeamName()); + data.put("name", teamInfo.getTeamName()); + Long totalPerson = 0L; + //获取班组总人数 + /*if(toaltPerson!=null&&toaltPerson.size()>0){ + for (Map person:toaltPerson){ + if(MapUtils.getInteger(person,"teamId")!=null&&teamInfo.getId().intValue()==MapUtils.getInteger(person,"teamId")){ + totalPerson=MapUtils.getInteger(person,"totalPerson"); + break; + } + } + }*/ + if (personMap != null && personMap.size() > 0 && personMap.containsKey(teamInfo.getId())) { + totalPerson = personMap.get(teamInfo.getId()); + } + data.put("totalPerson", totalPerson); + Long presencePersonTotal = 0L; + //获取班组在场人数 + /*if(presencePerson!=null&&presencePerson.size()>0){ + for (Map person:presencePerson){ + if(MapUtils.getInteger(person,"teamId")!=null&&teamInfo.getId().intValue()==MapUtils.getInteger(person,"teamId")){ + presencePersonTotal=MapUtils.getInteger(person,"totalPerson"); + break; + } + } + }*/ + if (presenceMap != null && presenceMap.size() > 0 && presenceMap.containsKey(teamInfo.getId())) { + presencePersonTotal = presenceMap.get(teamInfo.getId()); + } + Long attendancePersonTotal = 0L; + //获取班组出勤人数 + /*if(attendancePerson!=null&&attendancePerson.size()>0){ + for (Map person:attendancePerson){ + if(MapUtils.getInteger(person,"teamId")!=null&&teamInfo.getId().intValue()==MapUtils.getInteger(person,"teamId")){ + attendancePersonTotal=MapUtils.getInteger(person,"totalPerson"); + break; + } + } + }*/ + if (attendanceMap != null && attendanceMap.size() > 0 && attendanceMap.containsKey(teamInfo.getId())) { + attendancePersonTotal = attendanceMap.get(teamInfo.getId()); + } + data.put("presencePersonTotal", presencePersonTotal); + data.put("attendancePersonTotal", attendancePersonTotal); + tempList.add(data); + } + } + List voList = tempList.stream().map(e -> BeanUtil.toBean(e, WorkerTeamDepartmentStatisticsVo.class)).collect(Collectors.toList()); + Map mergedMap = voList.stream() + .collect(Collectors.toMap( + WorkerTeamDepartmentStatisticsVo::getName, // Key Mapper: 使用 name 作为键 + teamData -> { + WorkerTeamDepartmentStatisticsVo vo = new WorkerTeamDepartmentStatisticsVo(); + BeanUtil.copyProperties(teamData, vo); + return vo; + }, + (existingTeamData, newTeamData) -> { // Merge Function: 合并具有相同 name 的 TeamData + existingTeamData.setAttendancePersonTotal(existingTeamData.getAttendancePersonTotal() + newTeamData.getAttendancePersonTotal()); + existingTeamData.setPresencePersonTotal(existingTeamData.getPresencePersonTotal() + newTeamData.getPresencePersonTotal()); + existingTeamData.setTotalPerson(existingTeamData.getTotalPerson() + newTeamData.getTotalPerson()); + return existingTeamData; + } + )); + return mergedMap.values().stream().collect(Collectors.toList()); + } + @Override public List selectWorkerTeamStatistics(Map map) { QueryWrapper queryWrapper = new QueryWrapper<>();