zss
2024-05-31 cf4f8c022412536ee272024d132a3c2a9b9f210b
performance-server/src/main/java/com/yuanchu/mom/service/impl/AuxiliaryOriginalHoursServiceImpl.java
@@ -10,6 +10,7 @@
import com.yuanchu.mom.dto.AuxiliaryOriginalHoursDto;
import com.yuanchu.mom.dto.AuxiliaryOriginalHoursLookDto;
import com.yuanchu.mom.mapper.*;
import com.yuanchu.mom.pojo.AuxiliaryCorrectionHours;
import com.yuanchu.mom.pojo.Power;
import com.yuanchu.mom.pojo.User;
import com.yuanchu.mom.service.AuxiliaryOriginalHoursService;
@@ -17,6 +18,7 @@
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -43,10 +45,13 @@
    @Resource
    AuxiliaryWorkingHoursDayMapper auxiliaryWorkingHoursDayMapper;
    @Resource
    AuxiliaryCorrectionHoursMapper auxiliaryCorrectionHoursMapper;
    @Override
    public Map<String, Object> selectAuxiliaryOriginalHours(Page page, AuxiliaryOriginalHoursLookDto auxiliaryOriginalHoursLookDto) {
        Map<String, Object> map = new HashMap<>();
        List<Integer> ids = null;
        List<Integer> ids = new ArrayList<>();
        map.put("head", PrintChina.printChina(AuxiliaryCorrectionHoursDto.class));
        //判断组长,组员,管理员权限
        Map<String, Integer> map1 = getLook.selectPowerByMethodAndUserId("selectAuxiliaryOriginalHours");
@@ -66,26 +71,333 @@
            //查询组长下的组员
            List<User> users = userMapper.selectList(Wrappers.<User>lambdaQuery().like(User::getDepartLimsId, user.getDepartLimsId()));
            if (ObjectUtils.isNotEmpty(users)) {
                ids = users.stream().map(User::getId).distinct().collect(Collectors.toList());
                ids.addAll(users.stream().map(User::getId).distinct().collect(Collectors.toList()));
            }
        }
        String departLims = auxiliaryOriginalHoursLookDto.getDepartLims();
        auxiliaryOriginalHoursLookDto.setDepartLims(null);
        String name = auxiliaryOriginalHoursLookDto.getName();
        auxiliaryOriginalHoursLookDto.setName(null);
        if (ObjectUtils.isNotEmpty(departLims)) {
            //先模糊查询出来id
            List<Integer> ides = auxiliaryCorrectionHoursMapper.selDepartLimsByName(departLims);
            for (Integer ide : ides) {
                List<User> users = userMapper.selectList(Wrappers.<User>lambdaQuery()
                        .like(User::getDepartLimsId, ide)
                        .eq(User::getState, 1));
                if (ObjectUtils.isNotEmpty(users)) {
                    ides.clear();
                    ids.addAll(users.stream().map(User::getId).distinct().collect(Collectors.toList()));
                }
            }
        }
        if (ObjectUtils.isNotEmpty(name)) {
            ids.clear();
            ids.add(userMapper.selectOne(Wrappers.<User>lambdaQuery().like(User::getName, name)).getId());
        }
        IPage<AuxiliaryOriginalHoursDto> originalHoursDtoIPage = new Page<>();
        originalHoursDtoIPage.setSize(page.getSize());
        originalHoursDtoIPage.setCurrent(page.getCurrent());
        List<AuxiliaryOriginalHoursDto> auxiliaryOriginalHoursDtos = null;
        List<AuxiliaryOriginalHoursDto> auxiliaryOriginalHoursDtos = new ArrayList<>();
        //产量工时
        List<Map<String, Object>> maps = auxiliaryOutputWorkingHoursMapper.totalHours(auxiliaryOriginalHoursLookDto.getStartTime(), auxiliaryOriginalHoursLookDto.getEndTime(), auxiliaryOriginalHoursLookDto.getUserId(), auxiliaryOriginalHoursLookDto.getDepartId(), ids);
        Map<Object, Map<Object, Double>> collect = maps.stream().collect(
                Collectors.groupingBy(objmap -> objmap.get("name"),
                        Collectors.groupingBy(objmap -> objmap.get("month"),
                                Collectors.summingDouble(objmap -> Double.parseDouble(objmap.get("output_work_time").toString())))));
        List<Map<String, Object>> maps = auxiliaryOutputWorkingHoursMapper.totalHours(auxiliaryOriginalHoursLookDto.getMonth(), ids);
        if (ObjectUtils.isNotEmpty(maps)) {
            for (Map<String, Object> objectMap : maps) {
                auxiliaryOriginalHoursDtos.add(getData(objectMap, "产量工时"));
            }
        }
        //辅助工时
        //辅助工时
        List<Map<String, Object>> maps1 = auxiliaryWorkingHoursDayMapper.totalHours(auxiliaryOriginalHoursLookDto.getMonth(), ids);
        if (ObjectUtils.isNotEmpty(maps1)) {
            for (Map<String, Object> objectMap : maps1) {
                auxiliaryOriginalHoursDtos.add(getData(objectMap, "辅助工时"));
            }
        }
        //加班工时
        //总工时
        List<Map<String, Object>> maps2 = auxiliaryOriginalHoursMapper.totalHours(auxiliaryOriginalHoursLookDto.getMonth(), ids);
        if (ObjectUtils.isNotEmpty(maps2)) {
            //产量工时+辅助工时都不为空
            for (Map<String, Object> objectMap : maps2) {
                auxiliaryOriginalHoursDtos.add(getData(objectMap, "总工时"));
            }
        }
        //如果产量工时为空
        else if (ObjectUtils.isEmpty(maps)) {
            for (Map<String, Object> objectMap : maps1) {
                auxiliaryOriginalHoursDtos.add(getData(objectMap, "总工时"));
            }
        } else if (ObjectUtils.isEmpty(maps1)) {
            for (Map<String, Object> objectMap : maps) {
                auxiliaryOriginalHoursDtos.add(getData(objectMap, "总工时"));
            }
        }
        originalHoursDtoIPage.setRecords(auxiliaryOriginalHoursDtos);
        map.put("body", originalHoursDtoIPage);
        return map;
    }
    private AuxiliaryOriginalHoursDto getData(Map<String, Object> objectMap, String type) {
        AuxiliaryOriginalHoursDto auxiliaryOriginalHoursDto = new AuxiliaryOriginalHoursDto();
        auxiliaryOriginalHoursDto.setName(objectMap.get("name").toString());//姓名
        auxiliaryOriginalHoursDto.setType(type);
        auxiliaryOriginalHoursDto.setMonth(objectMap.get("month").toString().substring(0, 7));//月份
        //查询这个人这个月是否有修正的产量工时
        AuxiliaryCorrectionHours auxiliaryCorrectionHours = auxiliaryCorrectionHoursMapper.selectOne(Wrappers.<AuxiliaryCorrectionHours>lambdaQuery()
                .eq(AuxiliaryCorrectionHours::getNameUser, userMapper.selectOne(Wrappers.<User>lambdaQuery().eq(User::getName, auxiliaryOriginalHoursDto.getName())).getId())
                .eq(AuxiliaryCorrectionHours::getType, auxiliaryOriginalHoursDto.getType())
                .eq(AuxiliaryCorrectionHours::getMonth, auxiliaryOriginalHoursDto.getMonth()));
        switch (objectMap.get("month").toString().substring(8, 10)) {
            case "01":
                auxiliaryOriginalHoursDto.setOneHours(Double.parseDouble(objectMap.get("manHours").toString()));
                if (ObjectUtils.isNotEmpty(auxiliaryCorrectionHours)) {
                    if (auxiliaryCorrectionHours.getOneHours().compareTo(auxiliaryOriginalHoursDto.getOneHours()) != 0) {
                        auxiliaryOriginalHoursDto.setOne(1);
                    }
                }
                break;
            case "02":
                auxiliaryOriginalHoursDto.setTwoHours(Double.parseDouble(objectMap.get("manHours").toString()));
                if (ObjectUtils.isNotEmpty(auxiliaryCorrectionHours)) {
                    if (auxiliaryCorrectionHours.getTwoHours().compareTo(auxiliaryOriginalHoursDto.getTwoHours()) != 0) {
                        auxiliaryOriginalHoursDto.setTwo(1);
                    }
                }
                break;
            case "03":
                auxiliaryOriginalHoursDto.setThreeHours(Double.parseDouble(objectMap.get("manHours").toString()));
                if (ObjectUtils.isNotEmpty(auxiliaryCorrectionHours)) {
                    if (auxiliaryCorrectionHours.getThreeHours().compareTo(auxiliaryOriginalHoursDto.getThreeHours()) != 0) {
                        auxiliaryOriginalHoursDto.setThree(1);
                    }
                }
                break;
            case "04":
                auxiliaryOriginalHoursDto.setFourHours(Double.parseDouble(objectMap.get("manHours").toString()));
                if (ObjectUtils.isNotEmpty(auxiliaryCorrectionHours)) {
                    if (auxiliaryCorrectionHours.getFourHours().compareTo(auxiliaryOriginalHoursDto.getFourHours()) != 0) {
                        auxiliaryOriginalHoursDto.setFour(1);
                    }
                }
                break;
            case "05":
                auxiliaryOriginalHoursDto.setFiveHours(Double.parseDouble(objectMap.get("manHours").toString()));
                if (ObjectUtils.isNotEmpty(auxiliaryCorrectionHours)) {
                    if (auxiliaryCorrectionHours.getFiveHours().compareTo(auxiliaryOriginalHoursDto.getFiveHours()) != 0) {
                        auxiliaryOriginalHoursDto.setFive(1);
                    }
                }
                break;
            case "06":
                auxiliaryOriginalHoursDto.setSixHours(Double.parseDouble(objectMap.get("manHours").toString()));
                if (ObjectUtils.isNotEmpty(auxiliaryCorrectionHours)) {
                    if (auxiliaryCorrectionHours.getSixHours().compareTo(auxiliaryOriginalHoursDto.getSixHours()) != 0) {
                        auxiliaryOriginalHoursDto.setSix(1);
                    }
                }
                break;
            case "07":
                auxiliaryOriginalHoursDto.setSevenHours(Double.parseDouble(objectMap.get("manHours").toString()));
                if (ObjectUtils.isNotEmpty(auxiliaryCorrectionHours)) {
                    if (auxiliaryCorrectionHours.getSevenHours().compareTo(auxiliaryOriginalHoursDto.getSevenHours()) != 0) {
                        auxiliaryOriginalHoursDto.setSeven(1);
                    }
                }
                break;
            case "08":
                auxiliaryOriginalHoursDto.setEightHours(Double.parseDouble(objectMap.get("manHours").toString()));
                if (ObjectUtils.isNotEmpty(auxiliaryCorrectionHours)) {
                    if (auxiliaryCorrectionHours.getEightHours().compareTo(auxiliaryOriginalHoursDto.getEightHours()) != 0) {
                        auxiliaryOriginalHoursDto.setEight(1);
                    }
                }
                break;
            case "09":
                auxiliaryOriginalHoursDto.setNineHours(Double.parseDouble(objectMap.get("manHours").toString()));
                if (ObjectUtils.isNotEmpty(auxiliaryCorrectionHours)) {
                    if (auxiliaryCorrectionHours.getNineHours().compareTo(auxiliaryOriginalHoursDto.getNineHours()) != 0) {
                        auxiliaryOriginalHoursDto.setNine(1);
                    }
                }
                break;
            case "10":
                auxiliaryOriginalHoursDto.setTenHours(Double.parseDouble(objectMap.get("manHours").toString()));
                if (ObjectUtils.isNotEmpty(auxiliaryCorrectionHours)) {
                    if (auxiliaryCorrectionHours.getTenHours().compareTo(auxiliaryOriginalHoursDto.getTenHours()) != 0) {
                        auxiliaryOriginalHoursDto.setTen(1);
                    }
                }
                break;
            case "11":
                auxiliaryOriginalHoursDto.setElevenHours(Double.parseDouble(objectMap.get("manHours").toString()));
                if (ObjectUtils.isNotEmpty(auxiliaryCorrectionHours)) {
                    if (auxiliaryCorrectionHours.getElevenHours().compareTo(auxiliaryOriginalHoursDto.getElevenHours()) != 0) {
                        auxiliaryOriginalHoursDto.setEleven(1);
                    }
                }
                break;
            case "12":
                auxiliaryOriginalHoursDto.setTwelveHours(Double.parseDouble(objectMap.get("manHours").toString()));
                if (ObjectUtils.isNotEmpty(auxiliaryCorrectionHours)) {
                    if (auxiliaryCorrectionHours.getTwelveHours().compareTo(auxiliaryOriginalHoursDto.getTwelveHours()) != 0) {
                        auxiliaryOriginalHoursDto.setTwelve(1);
                    }
                }
                break;
            case "13":
                auxiliaryOriginalHoursDto.setThirteenHours(Double.parseDouble(objectMap.get("manHours").toString()));
                if (ObjectUtils.isNotEmpty(auxiliaryCorrectionHours)) {
                    if (auxiliaryCorrectionHours.getThirteenHours().compareTo(auxiliaryOriginalHoursDto.getThirteenHours()) != 0) {
                        auxiliaryOriginalHoursDto.setThirteen(1);
                    }
                }
                break;
            case "14":
                auxiliaryOriginalHoursDto.setFourteenHours(Double.parseDouble(objectMap.get("manHours").toString()));
                if (ObjectUtils.isNotEmpty(auxiliaryCorrectionHours)) {
                    if (auxiliaryCorrectionHours.getFourteenHours().compareTo(auxiliaryOriginalHoursDto.getFourteenHours()) != 0) {
                        auxiliaryOriginalHoursDto.setFourteen(1);
                    }
                }
                break;
            case "15":
                auxiliaryOriginalHoursDto.setFifteenHours(Double.parseDouble(objectMap.get("manHours").toString()));
                if (ObjectUtils.isNotEmpty(auxiliaryCorrectionHours)) {
                    if (auxiliaryCorrectionHours.getFifteenHours().compareTo(auxiliaryOriginalHoursDto.getFifteenHours()) != 0) {
                        auxiliaryOriginalHoursDto.setFifteen(1);
                    }
                }
                break;
            case "16":
                auxiliaryOriginalHoursDto.setSixteenHours(Double.parseDouble(objectMap.get("manHours").toString()));
                if (ObjectUtils.isNotEmpty(auxiliaryCorrectionHours)) {
                    if (auxiliaryCorrectionHours.getSixteenHours().compareTo(auxiliaryOriginalHoursDto.getSixteenHours()) != 0) {
                        auxiliaryOriginalHoursDto.setSixteen(1);
                    }
                }
                break;
            case "17":
                auxiliaryOriginalHoursDto.setSeventeenHours(Double.parseDouble(objectMap.get("manHours").toString()));
                if (ObjectUtils.isNotEmpty(auxiliaryCorrectionHours)) {
                    if (auxiliaryCorrectionHours.getSeventeenHours().compareTo(auxiliaryOriginalHoursDto.getSeventeenHours()) != 0) {
                        auxiliaryOriginalHoursDto.setSeventeen(1);
                    }
                }
                break;
            case "18":
                auxiliaryOriginalHoursDto.setEighteenHours(Double.parseDouble(objectMap.get("manHours").toString()));
                if (ObjectUtils.isNotEmpty(auxiliaryCorrectionHours)) {
                    if (auxiliaryCorrectionHours.getEighteenHours().compareTo(auxiliaryOriginalHoursDto.getEighteenHours()) != 0) {
                        auxiliaryOriginalHoursDto.setEighteen(1);
                    }
                }
                break;
            case "19":
                auxiliaryOriginalHoursDto.setNineteenHours(Double.parseDouble(objectMap.get("manHours").toString()));
                if (ObjectUtils.isNotEmpty(auxiliaryCorrectionHours)) {
                    if (auxiliaryCorrectionHours.getNineteenHours().compareTo(auxiliaryOriginalHoursDto.getNineteenHours()) != 0) {
                        auxiliaryOriginalHoursDto.setNineteen(1);
                    }
                }
                break;
            case "20":
                auxiliaryOriginalHoursDto.setTwentyHours(Double.parseDouble(objectMap.get("manHours").toString()));
                if (ObjectUtils.isNotEmpty(auxiliaryCorrectionHours)) {
                    if (auxiliaryCorrectionHours.getTwentyHours().compareTo(auxiliaryOriginalHoursDto.getTwentyHours()) != 0) {
                        auxiliaryOriginalHoursDto.setTwenty(1);
                    }
                }
                break;
            case "21":
                auxiliaryOriginalHoursDto.setTwentyOneHours(Double.parseDouble(objectMap.get("manHours").toString()));
                if (ObjectUtils.isNotEmpty(auxiliaryCorrectionHours)) {
                    if (auxiliaryCorrectionHours.getTwentyOneHours().compareTo(auxiliaryOriginalHoursDto.getTwentyOneHours()) != 0) {
                        auxiliaryOriginalHoursDto.setTwentyOne(1);
                    }
                }
                break;
            case "22":
                auxiliaryOriginalHoursDto.setTwentyTwoHours(Double.parseDouble(objectMap.get("manHours").toString()));
                if (ObjectUtils.isNotEmpty(auxiliaryCorrectionHours)) {
                    if (auxiliaryCorrectionHours.getTwentyTwoHours().compareTo(auxiliaryOriginalHoursDto.getTwentyTwoHours()) != 0) {
                        auxiliaryOriginalHoursDto.setTwentyTwo(1);
                    }
                }
                break;
            case "23":
                auxiliaryOriginalHoursDto.setTwentyThreeHours(Double.parseDouble(objectMap.get("manHours").toString()));
                if (ObjectUtils.isNotEmpty(auxiliaryCorrectionHours)) {
                    if (auxiliaryCorrectionHours.getTwentyThreeHours().compareTo(auxiliaryOriginalHoursDto.getTwentyThreeHours()) != 0) {
                        auxiliaryOriginalHoursDto.setTwentyThree(1);
                    }
                }
                break;
            case "24":
                auxiliaryOriginalHoursDto.setTwentyFourHours(Double.parseDouble(objectMap.get("manHours").toString()));
                if (ObjectUtils.isNotEmpty(auxiliaryCorrectionHours)) {
                    if (auxiliaryCorrectionHours.getTwentyFourHours().compareTo(auxiliaryOriginalHoursDto.getTwentyFourHours()) != 0) {
                        auxiliaryOriginalHoursDto.setTwentyFour(1);
                    }
                }
                break;
            case "25":
                auxiliaryOriginalHoursDto.setTwentyFiveHours(Double.parseDouble(objectMap.get("manHours").toString()));
                if (ObjectUtils.isNotEmpty(auxiliaryCorrectionHours)) {
                    if (auxiliaryCorrectionHours.getTwentyFiveHours().compareTo(auxiliaryOriginalHoursDto.getTwentyFiveHours()) != 0) {
                        auxiliaryOriginalHoursDto.setTwentyFive(1);
                    }
                }
                break;
            case "26":
                auxiliaryOriginalHoursDto.setTwentySixHours(Double.parseDouble(objectMap.get("manHours").toString()));
                if (ObjectUtils.isNotEmpty(auxiliaryCorrectionHours)) {
                    if (auxiliaryCorrectionHours.getTwentySixHours().compareTo(auxiliaryOriginalHoursDto.getTwentySixHours()) != 0) {
                        auxiliaryOriginalHoursDto.setTwentySix(1);
                    }
                }
                break;
            case "27":
                auxiliaryOriginalHoursDto.setTwentySevenHours(Double.parseDouble(objectMap.get("manHours").toString()));
                if (ObjectUtils.isNotEmpty(auxiliaryCorrectionHours)) {
                    if (auxiliaryCorrectionHours.getTwentySevenHours().compareTo(auxiliaryOriginalHoursDto.getTwentySevenHours()) != 0) {
                        auxiliaryOriginalHoursDto.setTwentySeven(1);
                    }
                }
                break;
            case "28":
                auxiliaryOriginalHoursDto.setTwentyEightHours(Double.parseDouble(objectMap.get("manHours").toString()));
                if (ObjectUtils.isNotEmpty(auxiliaryCorrectionHours)) {
                    if (auxiliaryCorrectionHours.getTwentyEightHours().compareTo(auxiliaryOriginalHoursDto.getTwentyEightHours()) != 0) {
                        auxiliaryOriginalHoursDto.setTwentyEight(1);
                    }
                }
                break;
            case "29":
                auxiliaryOriginalHoursDto.setTwentyNineHours(Double.parseDouble(objectMap.get("manHours").toString()));
                if (ObjectUtils.isNotEmpty(auxiliaryCorrectionHours)) {
                    if (auxiliaryCorrectionHours.getTwentyNineHours().compareTo(auxiliaryOriginalHoursDto.getTwentyNineHours()) != 0) {
                        auxiliaryOriginalHoursDto.setTwentyNine(1);
                    }
                }
                break;
            case "30":
                auxiliaryOriginalHoursDto.setThirtyHours(Double.parseDouble(objectMap.get("manHours").toString()));
                if (ObjectUtils.isNotEmpty(auxiliaryCorrectionHours)) {
                    if (auxiliaryCorrectionHours.getThirtyHours().compareTo(auxiliaryOriginalHoursDto.getThirtyHours()) != 0) {
                        auxiliaryOriginalHoursDto.setThirty(1);
                    }
                }
                break;
            case "31":
                auxiliaryOriginalHoursDto.setThirtyOneHours(Double.parseDouble(objectMap.get("manHours").toString()));
                if (ObjectUtils.isNotEmpty(auxiliaryCorrectionHours)) {
                    if (auxiliaryCorrectionHours.getThirtyOneHours().compareTo(auxiliaryOriginalHoursDto.getThirtyOneHours()) != 0) {
                        auxiliaryOriginalHoursDto.setThirtyOne(1);
                    }
                }
                break;
        }
        return auxiliaryOriginalHoursDto;
    }
}