From 085e4b6b0a97c9a20a5b92a6d6f5756ba98144f3 Mon Sep 17 00:00:00 2001 From: zss <zss@example.com> Date: 星期五, 19 七月 2024 17:41:39 +0800 Subject: [PATCH] 费用统计导出+工时展示 --- performance-server/src/main/java/com/yuanchu/mom/service/impl/AuxiliaryOriginalHoursServiceImpl.java | 534 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 516 insertions(+), 18 deletions(-) diff --git a/performance-server/src/main/java/com/yuanchu/mom/service/impl/AuxiliaryOriginalHoursServiceImpl.java b/performance-server/src/main/java/com/yuanchu/mom/service/impl/AuxiliaryOriginalHoursServiceImpl.java index d1b5aa5..51ec8c7 100644 --- a/performance-server/src/main/java/com/yuanchu/mom/service/impl/AuxiliaryOriginalHoursServiceImpl.java +++ b/performance-server/src/main/java/com/yuanchu/mom/service/impl/AuxiliaryOriginalHoursServiceImpl.java @@ -1,25 +1,33 @@ package com.yuanchu.mom.service.impl; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.ExcelWriter; +import com.alibaba.excel.write.metadata.WriteSheet; +import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.yuanchu.mom.common.GetLook; import com.yuanchu.mom.common.PrintChina; -import com.yuanchu.mom.dto.AuxiliaryCorrectionHoursDto; -import com.yuanchu.mom.dto.AuxiliaryOriginalHoursDto; -import com.yuanchu.mom.dto.AuxiliaryOriginalHoursLookDto; +import com.yuanchu.mom.dto.*; import com.yuanchu.mom.mapper.*; +import com.yuanchu.mom.pojo.AuxiliaryCorrectionHours; +import com.yuanchu.mom.pojo.AuxiliaryOutputWorkingHours; import com.yuanchu.mom.pojo.Power; import com.yuanchu.mom.pojo.User; import com.yuanchu.mom.service.AuxiliaryOriginalHoursService; import com.yuanchu.mom.utils.QueryWrappers; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.net.URLEncoder; +import java.text.DecimalFormat; +import java.util.*; import java.util.stream.Collectors; @Service @@ -43,10 +51,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 +77,513 @@ //鏌ヨ缁勯暱涓嬬殑缁勫憳 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)) { + //鍏堟ā绯婃煡璇㈠嚭鏉d + 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()); + } + if (ids.size() == 0) { + ids = null; } IPage<AuxiliaryOriginalHoursDto> originalHoursDtoIPage = new Page<>(); originalHoursDtoIPage.setSize(page.getSize()); originalHoursDtoIPage.setCurrent(page.getCurrent()); - List<AuxiliaryOriginalHoursDto> auxiliaryOriginalHoursDtos = null; + List<AuxiliaryOriginalHoursDto> auxiliaryOriginalHoursDtos = new ArrayList<>(); + Map<String, AuxiliaryOriginalHoursDto> data1 = new HashMap<>(); + Map<String, AuxiliaryOriginalHoursDto> data2 = new HashMap<>(); //浜ч噺宸ユ椂 - 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)) { + data1 = getData(maps, "浜ч噺宸ユ椂"); + auxiliaryOriginalHoursDtos.addAll(data1.values()); + } //杈呭姪宸ユ椂 - //杈呭姪宸ユ椂 + List<Map<String, Object>> maps1 = auxiliaryWorkingHoursDayMapper.totalHours(auxiliaryOriginalHoursLookDto.getMonth(), ids); + if (ObjectUtils.isNotEmpty(maps1)) { + data2 = getData(maps1, "杈呭姪宸ユ椂"); + auxiliaryOriginalHoursDtos.addAll(data2.values()); + } //鍔犵彮宸ユ椂 - //鎬诲伐鏃� - originalHoursDtoIPage.setRecords(auxiliaryOriginalHoursDtos); + //鎬诲伐鏃�=浜ч噺宸ユ椂+杈呭姪宸ユ椂+鍔犵彮宸ユ椂 + Map<String, AuxiliaryOriginalHoursDto> data4 = new HashMap<String, AuxiliaryOriginalHoursDto>(); + Map<String, AuxiliaryOriginalHoursDto> data3 = data1; + if (data1.size()>0) { + if (data2.size() > 0) { + for (Map.Entry<String, AuxiliaryOriginalHoursDto> entry : data2.entrySet()) { + String key = entry.getKey(); + AuxiliaryOriginalHoursDto value = entry.getValue(); + if (data3.containsKey(key)) { + for (Map.Entry<String, AuxiliaryOriginalHoursDto> dtoEntry : data3.entrySet()) { + if (dtoEntry.getKey().equals(key)) { + AuxiliaryOriginalHoursDto auxiliaryOriginalHoursDto = new AuxiliaryOriginalHoursDto(); + AuxiliaryOriginalHoursDto hoursDto = data3.get(key); + BeanUtils.copyProperties(hoursDto, auxiliaryOriginalHoursDto); + auxiliaryOriginalHoursDto.setType("鎬诲伐鏃�"); + auxiliaryOriginalHoursDto.setOneHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getOneHours()) ? auxiliaryOriginalHoursDto.getOneHours() : 0) + (ObjectUtils.isNotEmpty(value.getOneHours()) ? value.getOneHours() : 0)); + auxiliaryOriginalHoursDto.setTwoHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getTwoHours()) ? auxiliaryOriginalHoursDto.getTwoHours() : 0) + (ObjectUtils.isNotEmpty(value.getTwoHours()) ? value.getTwoHours() : 0)); + auxiliaryOriginalHoursDto.setThreeHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getThreeHours()) ? auxiliaryOriginalHoursDto.getThreeHours() : 0) + (ObjectUtils.isNotEmpty(value.getThreeHours()) ? value.getThreeHours() : 0)); + auxiliaryOriginalHoursDto.setFourHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getFourHours()) ? auxiliaryOriginalHoursDto.getFourHours() : 0) + (ObjectUtils.isNotEmpty(value.getFourHours()) ? value.getFourHours() : 0)); + auxiliaryOriginalHoursDto.setFiveHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getFiveHours()) ? auxiliaryOriginalHoursDto.getFiveHours() : 0) + (ObjectUtils.isNotEmpty(value.getFiveHours()) ? value.getFiveHours() : 0)); + auxiliaryOriginalHoursDto.setSixHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getSixHours()) ? auxiliaryOriginalHoursDto.getSixHours() : 0) + (ObjectUtils.isNotEmpty(value.getSixHours()) ? value.getSixHours() : 0)); + auxiliaryOriginalHoursDto.setSevenHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getSevenHours()) ? auxiliaryOriginalHoursDto.getSevenHours() : 0) + (ObjectUtils.isNotEmpty(value.getSevenHours()) ? value.getSevenHours() : 0)); + auxiliaryOriginalHoursDto.setEightHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getEightHours()) ? auxiliaryOriginalHoursDto.getEightHours() : 0) + (ObjectUtils.isNotEmpty(value.getEightHours()) ? value.getEightHours() : 0)); + auxiliaryOriginalHoursDto.setNineHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getNineHours()) ? auxiliaryOriginalHoursDto.getNineHours() : 0) + (ObjectUtils.isNotEmpty(value.getNineHours()) ? value.getNineHours() : 0)); + auxiliaryOriginalHoursDto.setTenHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getTenHours()) ? auxiliaryOriginalHoursDto.getTenHours() : 0) + (ObjectUtils.isNotEmpty(value.getTenHours()) ? value.getTenHours() : 0)); + auxiliaryOriginalHoursDto.setElevenHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getElevenHours()) ? auxiliaryOriginalHoursDto.getElevenHours() : 0) + (ObjectUtils.isNotEmpty(value.getElevenHours()) ? value.getElevenHours() : 0)); + auxiliaryOriginalHoursDto.setTwelveHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getTwelveHours()) ? auxiliaryOriginalHoursDto.getTwelveHours() : 0) + (ObjectUtils.isNotEmpty(value.getTwelveHours()) ? value.getTwelveHours() : 0)); + auxiliaryOriginalHoursDto.setThirteenHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getThirteenHours()) ? auxiliaryOriginalHoursDto.getThirteenHours() : 0) + (ObjectUtils.isNotEmpty(value.getThirteenHours()) ? value.getThirteenHours() : 0)); + auxiliaryOriginalHoursDto.setFourteenHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getFourteenHours()) ? auxiliaryOriginalHoursDto.getFourteenHours() : 0) + (ObjectUtils.isNotEmpty(value.getFourteenHours()) ? value.getFourteenHours() : 0)); + auxiliaryOriginalHoursDto.setFifteenHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getFifteenHours()) ? auxiliaryOriginalHoursDto.getFifteenHours() : 0) + (ObjectUtils.isNotEmpty(value.getFifteenHours()) ? value.getFifteenHours() : 0)); + auxiliaryOriginalHoursDto.setSixteenHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getSixteenHours()) ? auxiliaryOriginalHoursDto.getSixteenHours() : 0) + (ObjectUtils.isNotEmpty(value.getSixteenHours()) ? value.getSixteenHours() : 0)); + auxiliaryOriginalHoursDto.setSeventeenHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getSeventeenHours()) ? auxiliaryOriginalHoursDto.getSeventeenHours() : 0) + (ObjectUtils.isNotEmpty(value.getSeventeenHours()) ? value.getSeventeenHours() : 0)); + auxiliaryOriginalHoursDto.setEighteenHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getEighteenHours()) ? auxiliaryOriginalHoursDto.getEighteenHours() : 0) + (ObjectUtils.isNotEmpty(value.getEighteenHours()) ? value.getEighteenHours() : 0)); + auxiliaryOriginalHoursDto.setNineteenHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getNineteenHours()) ? auxiliaryOriginalHoursDto.getNineteenHours() : 0) + (ObjectUtils.isNotEmpty(value.getNineteenHours()) ? value.getNineteenHours() : 0)); + auxiliaryOriginalHoursDto.setTwelveHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getTwelveHours()) ? auxiliaryOriginalHoursDto.getTwelveHours() : 0) + (ObjectUtils.isNotEmpty(value.getTwelveHours()) ? value.getTwelveHours() : 0)); + auxiliaryOriginalHoursDto.setTwentyOneHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getTwentyOneHours()) ? auxiliaryOriginalHoursDto.getTwentyOneHours() : 0) + (ObjectUtils.isNotEmpty(value.getTwentyOneHours()) ? value.getTwentyOneHours() : 0)); + auxiliaryOriginalHoursDto.setTwentyTwoHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getTwentyTwoHours()) ? auxiliaryOriginalHoursDto.getTwentyTwoHours() : 0) + (ObjectUtils.isNotEmpty(value.getTwentyTwoHours()) ? value.getTwentyTwoHours() : 0)); + auxiliaryOriginalHoursDto.setTwentyThreeHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getTwentyThreeHours()) ? auxiliaryOriginalHoursDto.getTwentyThreeHours() : 0) + (ObjectUtils.isNotEmpty(value.getTwentyThreeHours()) ? value.getTwentyThreeHours() : 0)); + auxiliaryOriginalHoursDto.setTwentyFourHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getTwentyFourHours()) ? auxiliaryOriginalHoursDto.getTwentyFourHours() : 0) + (ObjectUtils.isNotEmpty(value.getTwentyFourHours()) ? value.getTwentyFourHours() : 0)); + auxiliaryOriginalHoursDto.setTwentyFiveHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getTwentyFiveHours()) ? auxiliaryOriginalHoursDto.getTwentyFiveHours() : 0) + (ObjectUtils.isNotEmpty(value.getTwentyFiveHours()) ? value.getTwentyFiveHours() : 0)); + auxiliaryOriginalHoursDto.setTwentySixHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getTwentySixHours()) ? auxiliaryOriginalHoursDto.getTwentySixHours() : 0) + (ObjectUtils.isNotEmpty(value.getTwentySixHours()) ? value.getTwentySixHours() : 0)); + auxiliaryOriginalHoursDto.setTwentySevenHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getTwentySevenHours()) ? auxiliaryOriginalHoursDto.getTwentySevenHours() : 0) + (ObjectUtils.isNotEmpty(value.getTwentySevenHours()) ? value.getTwentySevenHours() : 0)); + auxiliaryOriginalHoursDto.setTwentyEightHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getTwentyEightHours()) ? auxiliaryOriginalHoursDto.getTwentyEightHours() : 0) + (ObjectUtils.isNotEmpty(value.getTwentyEightHours()) ? value.getTwentyEightHours() : 0)); + auxiliaryOriginalHoursDto.setTwentyNineHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getTwentyNineHours()) ? auxiliaryOriginalHoursDto.getTwentyNineHours() : 0) + (ObjectUtils.isNotEmpty(value.getTwentyNineHours()) ? value.getTwentyNineHours() : 0)); + auxiliaryOriginalHoursDto.setThirtyHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getThirtyHours()) ? auxiliaryOriginalHoursDto.getThirtyHours() : 0) + (ObjectUtils.isNotEmpty(value.getThirtyHours()) ? value.getThirtyHours() : 0)); + auxiliaryOriginalHoursDto.setThirtyOneHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getThirtyOneHours()) ? auxiliaryOriginalHoursDto.getThirtyOneHours() : 0) + (ObjectUtils.isNotEmpty(value.getThirtyOneHours()) ? value.getThirtyOneHours() : 0)); + auxiliaryOriginalHoursDto.setTotal((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getTotal()) ? auxiliaryOriginalHoursDto.getTotal() : 0) + (ObjectUtils.isNotEmpty(value.getTotal()) ? value.getTotal() : 0)); + data4.put(key, auxiliaryOriginalHoursDto); + } else { + AuxiliaryOriginalHoursDto hoursDto = data3.get(dtoEntry.getKey()); + AuxiliaryOriginalHoursDto dto = new AuxiliaryOriginalHoursDto(); + BeanUtils.copyProperties(hoursDto, dto); + dto.setType("鎬诲伐鏃�"); + data4.put(dtoEntry.getKey(), dto); + } + } + } else { + value.setType("鎬诲伐鏃�"); + data4.put(key, value); + } + } + } + else { + for (Map.Entry<String, AuxiliaryOriginalHoursDto> entry : data3.entrySet()) { + AuxiliaryOriginalHoursDto dto = entry.getValue(); + AuxiliaryOriginalHoursDto originalHoursDto = new AuxiliaryOriginalHoursDto(); + BeanUtils.copyProperties(dto, originalHoursDto); + originalHoursDto.setType("鎬诲伐鏃�"); + data4.put(entry.getKey(), originalHoursDto); + } + } + auxiliaryOriginalHoursDtos.addAll(data4.values()); + } + /*List<Map<String, Object>> maps2 = auxiliaryOriginalHoursMapper.totalHours(auxiliaryOriginalHoursLookDto.getMonth(), ids); + if (ObjectUtils.isNotEmpty(maps2)) { + //浜ч噺宸ユ椂+杈呭姪宸ユ椂閮戒笉涓虹┖ + auxiliaryOriginalHoursDtos.addAll(getData(maps2, "鎬诲伐鏃�").values()); + } + //濡傛灉杈呭姪宸ユ椂涓嶄负绌� + else if (ObjectUtils.isNotEmpty(maps1)) { + auxiliaryOriginalHoursDtos.addAll(getData(maps1, "鎬诲伐鏃�").values()); + } else if (ObjectUtils.isNotEmpty(maps)) { + auxiliaryOriginalHoursDtos.addAll(getData(maps, "鎬诲伐鏃�").values()); + }*/ + + auxiliaryOriginalHoursDtos = auxiliaryOriginalHoursDtos.stream().sorted(Comparator.comparing(AuxiliaryOriginalHoursDto::getName)).collect(Collectors.toList()); + // 妫�鏌ユ瘡涓汉鐨勫伐鏃剁被鍨嬶紝琛ュ叏缂哄皯鐨勫伐鏃� + Map<String, Set<String>> workHoursMap = new HashMap<>(); + String[] requiredHours = {"浜ч噺宸ユ椂", "杈呭姪宸ユ椂", "鍔犵彮宸ユ椂", "鎬诲伐鏃�"}; + for (AuxiliaryOriginalHoursDto dto : auxiliaryOriginalHoursDtos) { + workHoursMap.computeIfAbsent(dto.getName(), k -> new HashSet<>()).add(dto.getType()); + } + List<AuxiliaryOriginalHoursDto> result = auxiliaryOriginalHoursDtos; + for (String name1 : workHoursMap.keySet()) { + Set<String> workTypes = workHoursMap.get(name1); + for (String requiredHour : requiredHours) { + if (!workTypes.contains(requiredHour)) { + AuxiliaryOriginalHoursDto auxiliaryOriginalHoursDto = new AuxiliaryOriginalHoursDto(); + auxiliaryOriginalHoursDto.setName(name1); + auxiliaryOriginalHoursDto.setAuxiliaryCorrectionHours(null); + auxiliaryOriginalHoursDto.setType(requiredHour); + auxiliaryOriginalHoursDto.setMonth(auxiliaryOriginalHoursLookDto.getMonth()); + result.add(auxiliaryOriginalHoursDto); + } + } + } + List<String> order = Arrays.asList("浜ч噺宸ユ椂", "杈呭姪宸ユ椂", "鍔犵彮宸ユ椂", "鎬诲伐鏃�"); + Comparator<AuxiliaryOriginalHoursDto> comparator = Comparator.comparingInt(dto -> { + String type = dto.getType(); + return order.indexOf(type) == -1 ? order.size() : order.indexOf(type); + }); + result = result.stream().sorted(Comparator.comparing(AuxiliaryOriginalHoursDto::getName).thenComparing(comparator)).collect(Collectors.toList()); + originalHoursDtoIPage.setRecords(result); + originalHoursDtoIPage.setTotal(result.size()); map.put("body", originalHoursDtoIPage); return map; } + + + //瀵煎嚭鍘熷宸ユ椂 + @Override + public void exportWorkingHours(String month, String name, String departLims, HttpServletResponse response) throws IOException { + List<AuxiliaryOriginalHoursDto> auxiliaryOriginalHoursDtos = new ArrayList<AuxiliaryOriginalHoursDto>(); + + //鏌ヨ鍘熷宸ユ椂(浣跨敤鍒嗛〉鏌ヨ) + AuxiliaryOriginalHoursLookDto auxiliaryOriginalHoursLookDto = new AuxiliaryOriginalHoursLookDto(); + if (ObjectUtils.isNotEmpty(month)) { + auxiliaryOriginalHoursLookDto.setMonth(month); + } + if (ObjectUtils.isNotEmpty(name)) { + auxiliaryOriginalHoursLookDto.setName(name); + } + if (ObjectUtils.isNotEmpty(departLims)) { + auxiliaryOriginalHoursLookDto.setDepartLims(departLims); + } + IPage<AuxiliaryOriginalHoursDto> body = (IPage<AuxiliaryOriginalHoursDto>) selectAuxiliaryOriginalHours(new Page(-1, -1), auxiliaryOriginalHoursLookDto).get("body"); + auxiliaryOriginalHoursDtos = body.getRecords(); + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("UTF-8"); + // 杩欓噷URLEncoder.encode鍙互闃叉涓枃涔辩爜 褰撶劧鍜宔asyexcel娌℃湁鍏崇郴 + String fileName = URLEncoder.encode("宸ユ椂缁熻瀵煎嚭", "UTF-8"); + response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx"); + try { + // 鏂板缓ExcelWriter + ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()).build(); + WriteSheet mainSheet = EasyExcel.writerSheet(0, "鍘熷宸ユ椂瀵煎嚭").head(AuxiliaryOriginalHoursDto.class).build(); + excelWriter.write(auxiliaryOriginalHoursDtos, mainSheet); + // 鍏抽棴娴� + excelWriter.finish(); + } catch (IOException e) { + throw new RuntimeException("瀵煎嚭澶辫触"); + } + + } + + private Map<String, AuxiliaryOriginalHoursDto> getData(List<Map<String, Object>> objectMaps, String type) { + Map<String, AuxiliaryOriginalHoursDto> dtoMap = new HashMap<>(); + for (Map<String, Object> objectMap : objectMaps) { + String name = objectMap.get("name").toString(); + String month = objectMap.get("month").toString().substring(0, 7); + AuxiliaryOriginalHoursDto auxiliaryOriginalHoursDto = dtoMap.get(name); + if (auxiliaryOriginalHoursDto == null) { + auxiliaryOriginalHoursDto = new AuxiliaryOriginalHoursDto(); + auxiliaryOriginalHoursDto.setName(name); + auxiliaryOriginalHoursDto.setType(type); + auxiliaryOriginalHoursDto.setMonth(month); + // 鏌ヨ杩欎釜浜鸿繖涓湀鏄惁鏈変慨姝g殑浜ч噺宸ユ椂 + 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())); + auxiliaryOriginalHoursDto.setAuxiliaryCorrectionHours(auxiliaryCorrectionHours); + } + AuxiliaryCorrectionHours auxiliaryCorrectionHours = auxiliaryOriginalHoursDto.getAuxiliaryCorrectionHours(); + 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; + } + auxiliaryOriginalHoursDto.setTotal((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getOneHours()) ? auxiliaryOriginalHoursDto.getOneHours() : 0) + + (ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getTwoHours()) ? auxiliaryOriginalHoursDto.getTwoHours() : 0) + + (ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getThreeHours()) ? auxiliaryOriginalHoursDto.getThreeHours() : 0) + + (ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getFourHours()) ? auxiliaryOriginalHoursDto.getFourHours() : 0) + + (ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getFiveHours()) ? auxiliaryOriginalHoursDto.getFiveHours() : 0) + + (ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getSixHours()) ? auxiliaryOriginalHoursDto.getSixHours() : 0) + + (ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getSevenHours()) ? auxiliaryOriginalHoursDto.getSevenHours() : 0) + + (ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getEightHours()) ? auxiliaryOriginalHoursDto.getEightHours() : 0) + + (ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getNineHours()) ? auxiliaryOriginalHoursDto.getNineHours() : 0) + + (ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getTenHours()) ? auxiliaryOriginalHoursDto.getTenHours() : 0) + + (ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getElevenHours()) ? auxiliaryOriginalHoursDto.getElevenHours() : 0) + + (ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getTwelveHours()) ? auxiliaryOriginalHoursDto.getTwelveHours() : 0) + + (ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getThirteenHours()) ? auxiliaryOriginalHoursDto.getThirteenHours() : 0) + + (ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getFourteenHours()) ? auxiliaryOriginalHoursDto.getFourteenHours() : 0) + + (ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getFifteenHours()) ? auxiliaryOriginalHoursDto.getFifteenHours() : 0) + + (ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getSixteenHours()) ? auxiliaryOriginalHoursDto.getSixteenHours() : 0) + + (ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getSeventeenHours()) ? auxiliaryOriginalHoursDto.getSeventeenHours() : 0) + + (ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getEighteenHours()) ? auxiliaryOriginalHoursDto.getEighteenHours() : 0) + + (ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getNineteenHours()) ? auxiliaryOriginalHoursDto.getNineteenHours() : 0) + + (ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getTwentyHours()) ? auxiliaryOriginalHoursDto.getTwentyHours() : 0) + + (ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getTwentyOneHours()) ? auxiliaryOriginalHoursDto.getTwentyOneHours() : 0) + + (ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getTwentyTwoHours()) ? auxiliaryOriginalHoursDto.getTwentyTwoHours() : 0) + + (ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getTwentyThreeHours()) ? auxiliaryOriginalHoursDto.getTwentyThreeHours() : 0) + + (ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getTwentyFourHours()) ? auxiliaryOriginalHoursDto.getTwentyFourHours() : 0) + + (ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getTwentyFiveHours()) ? auxiliaryOriginalHoursDto.getTwentyFiveHours() : 0) + + (ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getTwentySixHours()) ? auxiliaryOriginalHoursDto.getTwentySixHours() : 0) + + (ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getTwentySevenHours()) ? auxiliaryOriginalHoursDto.getTwentySevenHours() : 0) + + (ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getTwentyEightHours()) ? auxiliaryOriginalHoursDto.getTwentyEightHours() : 0) + + (ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getTwentyNineHours()) ? auxiliaryOriginalHoursDto.getTwentyNineHours() : 0) + + (ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getThirtyHours()) ? auxiliaryOriginalHoursDto.getThirtyHours() : 0) + + (ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getThirtyOneHours()) ? auxiliaryOriginalHoursDto.getThirtyOneHours() : 0) + ); + DecimalFormat df = new DecimalFormat("#.####"); // 璁惧畾鍥涗綅灏忔暟 + auxiliaryOriginalHoursDto.setTotal(Double.parseDouble(df.format(auxiliaryOriginalHoursDto.getTotal()))); + + dtoMap.put(name, auxiliaryOriginalHoursDto); + } + return dtoMap; + } } -- Gitblit v1.9.3