包头相同的工种名称放在一起统计
This commit is contained in:
parent
cb775be2e8
commit
0fa8649d69
@ -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 = "查询项目下按照部门和班组统计")
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
@ -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<>();
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user