包头相同的工种名称放在一起统计

This commit is contained in:
guoshengxiong 2025-06-20 18:43:27 +08:00
parent cb775be2e8
commit 0fa8649d69
3 changed files with 95 additions and 3 deletions

View File

@ -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<List<WorkerTeamDepartmentStatisticsVo>> selectWorkerTeamStatistics(@RequestBody Map<String, Object> map) {
return Result.success(workerInfoService.selectWorkerTeamStatistics(map));
return Result.success(workerInfoService.selectWorkerTeamStatisticsGroupByName(map));
}
@OperLog(operModul = "劳务管理", operType = "查询", operDesc = "查询项目下按照部门和班组统计")

View File

@ -593,4 +593,12 @@ public interface IWorkerInfoService extends IService<WorkerInfo> {
List<HashMap<String, Object>> getPostWorkTypeList(Map<String, Object> map);
void updateWorkerOrg(Map<String, Object> map);
/**
* 相同的工种名称放在一起统计
*
* @param map
* @return
*/
List<WorkerTeamDepartmentStatisticsVo> selectWorkerTeamStatisticsGroupByName(Map<String, Object> map);
}

View File

@ -849,6 +849,92 @@ public class WorkerInfoServiceImpl extends ServiceImpl<WorkerInfoMapper, WorkerI
return data;
}
@Override
public List<WorkerTeamDepartmentStatisticsVo> selectWorkerTeamStatisticsGroupByName(Map<String, Object> map) {
QueryWrapper<TeamInfo> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda().eq(TeamInfo::getProjectSn, MapUtils.getString(map, "projectSn"));
List<TeamInfo> list = teamInfoMapper.selectTeamInfoList(map);
List<Map<String, Object>> tempList = new ArrayList<>();
if (list != null && list.size() > 0) {
//查询各班组总人数
List<Map<String, Object>> toaltPerson = workerInfoMapper.selectWorkerTeamTotal(map);
Map<Long, Long> personMap = getListToMap(toaltPerson, "teamId", "totalPerson");
//查询各班组在场总人数
List<Map<String, Object>> presencePerson = workerInfoMapper.selectPresenceWorkerTeamTotal(map);
Map<Long, Long> presenceMap = getListToMap(presencePerson, "teamId", "totalPerson");
//查询各班组出勤人数
List<Map<String, Object>> attendancePerson = workerInfoMapper.selectAttendanceWorkerTeamTotal(map);
Map<Long, Long> attendanceMap = getListToMap(attendancePerson, "teamId", "totalPerson");
//汇总各班组的总人数在场人数出勤人数
for (TeamInfo teamInfo : list) {
Map<String, Object> 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<String,Object> 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<String,Object> 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<String,Object> 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<WorkerTeamDepartmentStatisticsVo> voList = tempList.stream().map(e -> BeanUtil.toBean(e, WorkerTeamDepartmentStatisticsVo.class)).collect(Collectors.toList());
Map<String, WorkerTeamDepartmentStatisticsVo> 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<WorkerTeamDepartmentStatisticsVo> selectWorkerTeamStatistics(Map<String, Object> map) {
QueryWrapper<TeamInfo> queryWrapper = new QueryWrapper<>();