包头相同的工种名称放在一起统计
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.date.DateUtil;
|
||||||
import cn.hutool.core.io.FileUtil;
|
import cn.hutool.core.io.FileUtil;
|
||||||
import cn.hutool.core.util.IdUtil;
|
import cn.hutool.core.util.IdUtil;
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import cn.hutool.core.util.ZipUtil;
|
import cn.hutool.core.util.ZipUtil;
|
||||||
import cn.hutool.extra.qrcode.QrCodeUtil;
|
import cn.hutool.extra.qrcode.QrCodeUtil;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
||||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
import com.gexin.fastjson.TypeReference;
|
import com.gexin.fastjson.TypeReference;
|
||||||
import com.zhgd.annotation.OperLog;
|
import com.zhgd.annotation.OperLog;
|
||||||
@ -578,7 +576,7 @@ public class WorkerInfoController {
|
|||||||
})
|
})
|
||||||
@PostMapping("/selectWorkerTeamStatistics")
|
@PostMapping("/selectWorkerTeamStatistics")
|
||||||
public Result<List<WorkerTeamDepartmentStatisticsVo>> selectWorkerTeamStatistics(@RequestBody Map<String, Object> map) {
|
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 = "查询项目下按照部门和班组统计")
|
@OperLog(operModul = "劳务管理", operType = "查询", operDesc = "查询项目下按照部门和班组统计")
|
||||||
|
|||||||
@ -593,4 +593,12 @@ public interface IWorkerInfoService extends IService<WorkerInfo> {
|
|||||||
List<HashMap<String, Object>> getPostWorkTypeList(Map<String, Object> map);
|
List<HashMap<String, Object>> getPostWorkTypeList(Map<String, Object> map);
|
||||||
|
|
||||||
void updateWorkerOrg(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;
|
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
|
@Override
|
||||||
public List<WorkerTeamDepartmentStatisticsVo> selectWorkerTeamStatistics(Map<String, Object> map) {
|
public List<WorkerTeamDepartmentStatisticsVo> selectWorkerTeamStatistics(Map<String, Object> map) {
|
||||||
QueryWrapper<TeamInfo> queryWrapper = new QueryWrapper<>();
|
QueryWrapper<TeamInfo> queryWrapper = new QueryWrapper<>();
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user