lxp
2025-03-14 4b5c6891b92a186685b713627fe6701074b67435
工时管理1.0
已修改27个文件
1605 ■■■■ 文件已修改
cnas-require/src/main/java/com/ruoyi/requier/service/impl/PkMasterServiceImpl.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderServiceImpl.java 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsProductServiceImpl.java 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsReportServiceImpl.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
performance-server/src/main/java/com/ruoyi/performance/controller/AuxiliaryCorrectionHoursController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
performance-server/src/main/java/com/ruoyi/performance/controller/AuxiliaryOriginalHoursController.java 21 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
performance-server/src/main/java/com/ruoyi/performance/controller/AuxiliaryOutputWorkingHoursController.java 21 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
performance-server/src/main/java/com/ruoyi/performance/controller/AuxiliaryWorkingHoursController.java 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
performance-server/src/main/java/com/ruoyi/performance/controller/AuxiliaryWorkingHoursDayController.java 38 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
performance-server/src/main/java/com/ruoyi/performance/controller/PerformanceShiftController.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
performance-server/src/main/java/com/ruoyi/performance/dto/AuxiliaryOriginalHoursDto.java 108 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
performance-server/src/main/java/com/ruoyi/performance/dto/AuxiliaryOutputWorkingHoursDto.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
performance-server/src/main/java/com/ruoyi/performance/mapper/AuxiliaryOutputWorkingHoursMapper.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
performance-server/src/main/java/com/ruoyi/performance/pojo/AuxiliaryCorrectionHours.java 75 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
performance-server/src/main/java/com/ruoyi/performance/pojo/AuxiliaryOutputWorkingHours.java 68 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
performance-server/src/main/java/com/ruoyi/performance/service/AuxiliaryOriginalHoursService.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
performance-server/src/main/java/com/ruoyi/performance/service/AuxiliaryOutputWorkingHoursService.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
performance-server/src/main/java/com/ruoyi/performance/service/AuxiliaryWorkingHoursDayService.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
performance-server/src/main/java/com/ruoyi/performance/service/AuxiliaryWorkingHoursService.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
performance-server/src/main/java/com/ruoyi/performance/service/impl/AuxiliaryOriginalHoursServiceImpl.java 440 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
performance-server/src/main/java/com/ruoyi/performance/service/impl/AuxiliaryOutputWorkingHoursServiceImpl.java 286 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
performance-server/src/main/java/com/ruoyi/performance/service/impl/AuxiliaryWorkingHoursDayServiceImpl.java 243 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
performance-server/src/main/java/com/ruoyi/performance/service/impl/AuxiliaryWorkingHoursServiceImpl.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
performance-server/src/main/resources/mapper/AuxiliaryOutputWorkingHoursMapper.xml 121 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
performance-server/src/main/resources/mapper/PerformanceShiftMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserRoleMapper.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/resources/mapper/system/SysUserRoleMapper.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/requier/service/impl/PkMasterServiceImpl.java
@@ -3,13 +3,17 @@
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.basic.vo.StandardProductVO;
import com.ruoyi.common.core.domain.entity.User;
@@ -30,6 +34,7 @@
import com.ruoyi.requier.pojo.PkSlave;
import com.ruoyi.requier.service.InsOrderPlanService;
import com.ruoyi.requier.service.PkMasterService;
import com.ruoyi.requier.service.impl.InsOrderPlanServiceImpl;
import com.ruoyi.system.mapper.UserMapper;
import lombok.extern.slf4j.Slf4j;
import org.apache.logging.log4j.util.Strings;
@@ -96,11 +101,12 @@
    @Resource
    private AuxiliaryOutputWorkingHoursMapper auxiliaryOutputWorkingHoursMapper;
    //温度循环数采
    @Override
    @Transactional(rollbackFor = Exception.class)
    public int temDataAcquisition(PkMaster pkMaster) {
        Integer userId = SecurityUtils.getUserId().intValue();
        Integer userId = Integer.parseInt(SecurityUtils.getUserId().toString());
        //查询数采关联的子表信息
        PkMaster master = new PkMaster();
        List<PkMaster> pkMasters = pkMasterMapper.selectList(Wrappers.<PkMaster>lambdaQuery()
@@ -532,12 +538,12 @@
        if(isWithinRange) {
            // 正常上班
            auxiliaryOutputWorkingHours.setOrderNo(insOrder.getEntrustCode()); // 非加班委托单号
            auxiliaryOutputWorkingHours.setWorkTime(new BigDecimal(accuracy(manHour,count))); // 工时
            auxiliaryOutputWorkingHours.setWorkTime(accuracy(manHour,count)); // 工时
            auxiliaryOutputWorkingHours.setAmount(count); // 非加班数量
        }else{
            // 加班
            auxiliaryOutputWorkingHours.setOvertimeOrderNo(insOrder.getEntrustCode()); // 非加班委托单号
            auxiliaryOutputWorkingHours.setOvertimeWorkTime(new BigDecimal(accuracy(manHour,count))); // 工时
            auxiliaryOutputWorkingHours.setOvertimeWorkTime(accuracy(manHour,count)); // 工时
            auxiliaryOutputWorkingHours.setOvertimeAmount(count); // 非加班数量
        }
        if(isCross) {
@@ -547,15 +553,15 @@
            String date = LocalDateTime.now().toLocalDate().atStartOfDay().format(formatters);// 当天
            auxiliaryOutputWorkingHours.setDateTime(date); // 日期
        }
        auxiliaryOutputWorkingHours.setOutputWorkTime(new BigDecimal(accuracy(manHour,count))); // 产出工时
        auxiliaryOutputWorkingHours.setOutputWorkTime(accuracy(manHour,count)); // 产出工时
        auxiliaryOutputWorkingHours.setWeekDay(insOrderPlanServiceImpl.getWeek(LocalDateTime.now().format(formatters)));//星期
        auxiliaryOutputWorkingHours.setWeek(String.valueOf(DateUtil.weekOfYear(DateUtil.offsetDay(parse, 1))));//周次
        auxiliaryOutputWorkingHours.setCheck(userId);//检测人
        auxiliaryOutputWorkingHours.setCheckId(userId);//检测人
        auxiliaryOutputWorkingHours.setSample(insSample.getSampleCode());//样品编号
        auxiliaryOutputWorkingHours.setManHourGroup(workHourMap.getManHourGroup());//工时分组
        // 查询需要操作的日期是否有记录
        List<AuxiliaryOutputWorkingHours> oldRecords = auxiliaryOutputWorkingHoursMapper.selectList(Wrappers.<AuxiliaryOutputWorkingHours>lambdaQuery()
                .eq(AuxiliaryOutputWorkingHours::getCheck,userId)
                .eq(AuxiliaryOutputWorkingHours::getCheckId,userId)
                .eq(AuxiliaryOutputWorkingHours::getInspectionItem, "温度循环")
                .eq(AuxiliaryOutputWorkingHours::getInspectionItemSubclass, "")
                .eq(AuxiliaryOutputWorkingHours::getSample, insSample.getSampleCode())
@@ -566,7 +572,7 @@
        );
        // 所有的记录(其他天 + 当前天)
        List<AuxiliaryOutputWorkingHours> addOldRecords = auxiliaryOutputWorkingHoursMapper.selectList(Wrappers.<AuxiliaryOutputWorkingHours>lambdaQuery()
                .eq(AuxiliaryOutputWorkingHours::getCheck,userId)
                .eq(AuxiliaryOutputWorkingHours::getCheckId,userId)
                .eq(AuxiliaryOutputWorkingHours::getInspectionItem, "温度循环")
                .eq(AuxiliaryOutputWorkingHours::getInspectionItemSubclass, "")
                .eq(AuxiliaryOutputWorkingHours::getSample, insSample.getSampleCode())
@@ -588,14 +594,14 @@
                if(isWithinRange) {
                    // 正常上班
                    auxiliaryOutputWorkingHours.setWorkTime(new BigDecimal(accuracy(manHour,(count - otherDayAmount + allValue)))); // 工时
                    auxiliaryOutputWorkingHours.setWorkTime(accuracy(manHour,(count - otherDayAmount + allValue))); // 工时
                    auxiliaryOutputWorkingHours.setAmount((count - otherDayAmount + allValue)); // 非加班数量
                }else {
                    // 加班
                    auxiliaryOutputWorkingHours.setOvertimeWorkTime(new BigDecimal(accuracy(manHour,(count - otherDayAmount + allValue)))); // 工时
                    auxiliaryOutputWorkingHours.setOvertimeWorkTime(accuracy(manHour,(count - otherDayAmount + allValue))); // 工时
                    auxiliaryOutputWorkingHours.setOvertimeAmount((count - otherDayAmount + allValue)); // 非加班数量
                }
                auxiliaryOutputWorkingHours.setOutputWorkTime(new BigDecimal(accuracy(manHour,(count - otherDayAmount + allValue)))); // 产出工时
                auxiliaryOutputWorkingHours.setOutputWorkTime(accuracy(manHour,(count - otherDayAmount + allValue))); // 产出工时
                auxiliaryOutputWorkingHoursMapper.insert(auxiliaryOutputWorkingHours);
            }
        }else {
@@ -616,19 +622,18 @@
                        int num =  Objects.isNull(auxiliaryOutputWorkingHours1.getAmount()) ? 0 :auxiliaryOutputWorkingHours1.getAmount(); // 原本的数量
                        auxiliaryOutputWorkingHours1.setAmount(count - oldAmount + num + allValue); // 非加班数量
                        auxiliaryOutputWorkingHours1.setOrderNo(insOrder.getEntrustCode()); // 非加班委托单号
                        auxiliaryOutputWorkingHours1.setWorkTime(new BigDecimal(accuracy(manHour,(count - oldAmount + num + allValue)))); // 工时
                        BigDecimal outputWorkTime = new BigDecimal(accuracy(manHour, auxiliaryOutputWorkingHours1.getAmount())).add((Objects.isNull(auxiliaryOutputWorkingHours1.getOvertimeWorkTime()) ? new BigDecimal(0) : auxiliaryOutputWorkingHours1.getOvertimeWorkTime()));
                        auxiliaryOutputWorkingHours1.setOutputWorkTime(outputWorkTime);// 产出工时 采集肯定是会采集完
                        auxiliaryOutputWorkingHours1.setWorkTime(accuracy(manHour,(count - oldAmount + num + allValue))); // 工时
                        auxiliaryOutputWorkingHours1.setOutputWorkTime(accuracy(manHour,auxiliaryOutputWorkingHours1.getAmount()) +
                                (Objects.isNull(auxiliaryOutputWorkingHours1.getOvertimeWorkTime()) ? 0 : auxiliaryOutputWorkingHours1.getOvertimeWorkTime())); // 产出工时 采集肯定是会采集完
                    }else{
                        // 加班
                        // 拿到原本的数量 与 新的数量相加
                        int num =  Objects.isNull(auxiliaryOutputWorkingHours1.getOvertimeAmount()) ? 0 :auxiliaryOutputWorkingHours1.getOvertimeAmount(); // 原本的数量
                        auxiliaryOutputWorkingHours1.setOvertimeAmount(count - oldAmount + num + allValue);// 加班数量
                        auxiliaryOutputWorkingHours1.setOvertimeOrderNo(insOrder.getEntrustCode()); // 加班委托单号
                        auxiliaryOutputWorkingHours1.setOvertimeWorkTime(new BigDecimal(accuracy(manHour,(count - oldAmount + num + allValue)))); // 工时
                        BigDecimal outputWorkTime = new BigDecimal(accuracy(manHour, auxiliaryOutputWorkingHours1.getOvertimeAmount())).add(
                                (Objects.isNull(auxiliaryOutputWorkingHours1.getWorkTime()) ? new BigDecimal(0) : auxiliaryOutputWorkingHours1.getWorkTime()));
                        auxiliaryOutputWorkingHours1.setOutputWorkTime(outputWorkTime); // 产出工时 采集肯定是会采集完
                        auxiliaryOutputWorkingHours1.setOvertimeWorkTime(accuracy(manHour,(count - oldAmount + num + allValue))); // 工时
                        auxiliaryOutputWorkingHours1.setOutputWorkTime(accuracy(manHour,auxiliaryOutputWorkingHours1.getOvertimeAmount()) +
                                (Objects.isNull(auxiliaryOutputWorkingHours1.getWorkTime()) ? 0 : auxiliaryOutputWorkingHours1.getWorkTime())); // 产出工时 采集肯定是会采集完
                    }
                    auxiliaryOutputWorkingHoursMapper.updateById(auxiliaryOutputWorkingHours1);
                }
inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderServiceImpl.java
@@ -1029,6 +1029,7 @@
    public List<Map<String, Object>> viewDetails(Map<String, Object> map) {
        List<Map<String, Object>> list = new ArrayList<>();
        String inspectionItem = map.get("inspectionItem").toString(); // 检验项
        String inspectionItemSubclass = map.get("inspectionItemSubclass").toString(); // 检验子项
        if (inspectionItem.equals("单根垂直燃烧")) {
            ArrayList<Integer> numbers = new ArrayList<>();
            InsProduct insProduct = insProductMapper.selectById(Integer.parseInt(map.get("insProductId").toString()));
@@ -1144,10 +1145,9 @@
        } else {
            // 松套管 过滤出检验项名称一致的数据
            List<InsProduct> productList = insProductMapper.selectList(new LambdaQueryWrapper<InsProduct>()
                            .eq(InsProduct::getInsSampleId, Integer.parseInt(map.get("insSampleId").toString())))
                    .stream()
                    .filter(item -> item.getInspectionItem().equals(inspectionItem))
                    .collect(Collectors.toList());
                    .eq(InsProduct::getInspectionItem, inspectionItem)
                    .eq(StringUtils.isNotEmpty(inspectionItemSubclass),InsProduct::getInspectionItemSubclass, inspectionItemSubclass)
                    .eq(InsProduct::getInsSampleId, Integer.parseInt(map.get("insSampleId").toString())));
            for (InsProduct product : productList) {
                HashMap<String, Object> map2 = new HashMap<>();
                map2.put("entrustCode", map.get("entrustCode")); // 委托编号
@@ -1160,12 +1160,6 @@
                    color = insBushingMapper.selectById(product.getInsBushId()).getColor(); // 套管
                }
                map2.put("color", color); // 套管颜色
//                InsProductResult result = insProductResultMapper.selectOne(new LambdaQueryWrapper<InsProductResult>()
//                        .eq(InsProductResult::getInsProductId, product.getId()));
//                if(!Objects.isNull(result)) {
//                    List<Map> maps = JSONArray.parseArray(result.getInsValue(), Map.class);
//                    map2.put("insValue",maps.get(0).get("v").toString()); // 检验结果
//                }
                list.add(map2);
            }
        }
inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsProductServiceImpl.java
@@ -432,11 +432,13 @@
        if(sampleIds.contains(insSample.getId())) {
            list = selectTemperatureByProductId(productId);
        }else {
            // 将温度循环id过滤
            productIds = productIds.stream().filter(item -> !item.equals(productId)).collect(Collectors.toList());
            // 撤销的是检验项
            List<InsProduct> productList = insProductMapper.selectList(new LambdaQueryWrapper<InsProduct>()
                    .eq(InsProduct::getState, 1)
                    .eq(InsProduct::getSpecialItemParentId,productId)
                    .in(InsProduct::getId, productIds));
                    .in(CollectionUtils.isNotEmpty(productIds),InsProduct::getId, productIds));
            Map<String, List<InsProduct>> collect = productList.stream().collect(Collectors.groupingBy(InsProduct::getInspectionItem));
            // 拿到循环次数
            Iterator<Map.Entry<String, List<InsProduct>>> iterator = collect.entrySet().iterator();
@@ -475,12 +477,14 @@
        if(sampleIds.contains(insSample.getId())) {
             list = selectTemperatureNumberByProductId(parentId, inspectionItem);
        }else {
            // 过滤出温度循环的id
            productIds = productIds.stream().filter(item -> !item.equals(parentId)).collect(Collectors.toList());
            // 查询撤销的温度点
            List<InsProduct> productList = insProductMapper.selectList(new LambdaQueryWrapper<InsProduct>()
                    .eq(InsProduct::getState, 1)
                    .eq(InsProduct::getSpecialItemParentId, parentId)
                    .eq(InsProduct::getInspectionItem, inspectionItem)
                    .in(InsProduct::getId, productIds));
                    .in(CollectionUtils.isNotEmpty(productIds),InsProduct::getId, productIds));
            // 根据检验子项得到温度点
            Map<String, List<InsProduct>> collect = productList.stream().collect(Collectors.groupingBy(InsProduct::getInspectionItemSubclass));
            Iterator<Map.Entry<String, List<InsProduct>>> iterator = collect.entrySet().iterator();
@@ -525,7 +529,16 @@
            List<InsProduct> productList = insProductMapper.selectList(new LambdaQueryWrapper<InsProduct>()
                    .in(InsProduct::getId, productIds));
            if(CollectionUtils.isNotEmpty(productList)) {
                // 得判断一下 是否含有温度循环项目
                // 如果撤销的项目是温度循环  那么相应的子项需要全部撤销
                List<InsProduct> collect3 = productList.stream().filter(item -> item.getInspectionItem().equals("温度循环")).collect(Collectors.toList());
                if(CollectionUtils.isNotEmpty(collect3)) {
                    for (InsProduct a : collect3) {
                        insProductMapper.update(null,new LambdaUpdateWrapper<InsProduct>()
                                .set(InsProduct::getState,0)
                                .eq(InsProduct::getSpecialItemParentId,a.getId()));
                    }
                }
                // 如果是某一个温度 是否含有温度循环子项
                List<InsProduct> collect2 = productList.stream().filter(item -> Objects.nonNull(item.getSpecialItemParentId())
                        && NumberUtil.isInteger(item.getInspectionItem())).collect(Collectors.toList());
                if(CollectionUtils.isNotEmpty(collect2)) {
inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsReportServiceImpl.java
@@ -211,11 +211,12 @@
        insReport.setId(id);
        insReport.setState(1);
        insReport.setWriteTime(LocalDateTime.now());//提交时间
        insReport.setWriteUserId(Integer.getInteger(SecurityUtils.getUserId().toString()));//提交人
        insReport.setWriteUserId(Integer.parseInt(SecurityUtils.getUserId().toString()));//提交人
        //获取提交人的签名地址
        String signatureUrl;
        try {
            signatureUrl = userMapper.selectById(Integer.getInteger(SecurityUtils.getUserId().toString())).getSignatureUrl();
            Integer i = Integer.parseInt(SecurityUtils.getUserId().toString());
            signatureUrl = userMapper.selectById(i).getSignatureUrl();
        } catch (Exception e) {
            throw new ErrorException("找不到编制人的签名");
        }
@@ -240,7 +241,7 @@
        if (ObjectUtils.isNotEmpty(examineTell)) {
            insReport.setExamineTell(examineTell);
        }
        insReport.setExamineUserId(Integer.getInteger(SecurityUtils.getUserId().toString()));//审核人
        insReport.setExamineUserId(Integer.parseInt(SecurityUtils.getUserId().toString()));//审核人
        insReport.setExamineTime(LocalDateTime.now());//审核时间
        if (isExamine == 0) {
            //如果审核不通过
@@ -276,7 +277,7 @@
        if (ObjectUtils.isNotEmpty(ratifyTell)) {
            insReport.setRatifyTell(ratifyTell);
        }
        insReport.setRatifyUserId(Integer.getInteger(SecurityUtils.getUserId().toString()));//批准人
        insReport.setRatifyUserId(Integer.parseInt(SecurityUtils.getUserId().toString()));//批准人
        insReport.setRatifyTime(LocalDateTime.now());//批准时间
        if (isRatify == 0) {
            //如果批准不通过
performance-server/src/main/java/com/ruoyi/performance/controller/AuxiliaryCorrectionHoursController.java
@@ -35,7 +35,7 @@
    AuxiliaryCorrectionHoursService auxiliaryCorrectionHoursService;
    @ApiOperation(value = "查询修正工时")
    @PostMapping("/selectAuxiliaryCorrectionHours")
    @GetMapping("/selectAuxiliaryCorrectionHours")
    public Result selectAuxiliaryCorrectionHours(Page page,AuxiliaryCorrectionHoursDto entity) throws Exception {
        return Result.success(auxiliaryCorrectionHoursService.selectAuxiliaryCorrectionHours(page, entity));
    }
performance-server/src/main/java/com/ruoyi/performance/controller/AuxiliaryOriginalHoursController.java
@@ -24,21 +24,20 @@
    @Resource
    AuxiliaryOriginalHoursService auxiliaryOriginalHoursService;
    @ApiOperation(value = "查询原始工时")
    @PostMapping("/selectAuxiliaryOriginalHours")
    @ApiOperation(value = "工时统计-查看原始工时列表")
    @GetMapping("/selectAuxiliaryOriginalHours")
    public Result selectAuxiliaryOriginalHours(Page page, AuxiliaryOriginalHoursLookDto entity) throws Exception {
        return Result.success(auxiliaryOriginalHoursService.selectAuxiliaryOriginalHours(page, entity));
    }
    @ApiOperation(value = "导出原始工时")
    @ApiOperation(value = "工时统计-导出原始工时")
    @PostMapping("/exportOriginalHours")
    public void exportOriginalHours(@RequestParam("month") String month,  @RequestParam("name") String name,  @RequestParam("departLims") String departLims,HttpServletResponse response) throws IOException {
        auxiliaryOriginalHoursService.exportWorkingHours(month,name,departLims,response);
    }
    @ApiOperation(value = "查询月份全部工时")
    @PostMapping("/selectAuxiliaryAllByMonth")
    public Result selectAuxiliaryAllByMonth(@RequestBody AuxiliaryOriginalHoursLookDto dto){
        return Result.success(auxiliaryOriginalHoursService.selectAuxiliaryAllByMonth(dto));
    public void exportOriginalHours(
            Page page,
            @RequestParam("month") String month,
            @RequestParam(value = "name",required = false) String name,
            @RequestParam(value = "departLims",required = false) String departLims,
            HttpServletResponse response) throws IOException {
        auxiliaryOriginalHoursService.exportWorkingHours(page,month,name,departLims,response);
    }
}
performance-server/src/main/java/com/ruoyi/performance/controller/AuxiliaryOutputWorkingHoursController.java
@@ -1,5 +1,4 @@
package com.ruoyi.performance.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.core.domain.Result;
import com.ruoyi.common.utils.JackSonUtil;
@@ -32,8 +31,8 @@
    @Resource
    private AuxiliaryOutputWorkingHoursService auxiliaryOutputWorkingHoursService;
    @ApiOperation(value = "查询产量工时")
    @PostMapping("/selectAuxiliaryOutputWorkingHours")
    @ApiOperation(value = "日工时管理-查看产量工时列表")
    @GetMapping("/selectAuxiliaryOutputWorkingHours")
    public Result selectAuxiliaryOutputWorkingHours(Page page,AuxiliaryOutputWorkingHoursDto entity) throws Exception {
        return Result.success(auxiliaryOutputWorkingHoursService.selectAuxiliaryOutputWorkingHours(page, entity));
    }
@@ -45,8 +44,7 @@
        return Result.success(auxiliaryOutputWorkingHoursService.collectWorkingHours(entity));
    }
    @ApiOperation(value = "导出产量工时+辅助工时")
    @ApiOperation(value = "日工时管理-导出")
    @GetMapping("/exportWorkingHours")
    public void exportWorkingHours(HttpServletResponse response) throws IOException {
        auxiliaryOutputWorkingHoursService.exportWorkingHours(response);
@@ -56,19 +54,6 @@
    @PostMapping("/leader")
    public Result leader() {
        return Result.success();
    }
    /**
     * 导出产量工时
     * @param response
     * @throws IOException
     */
    @ApiOperation(value = "导出产量工时")
    @PostMapping("/exportOutputHours")
    public void exportOutputHours(@RequestBody Map<String, Object> data, HttpServletResponse response) throws Exception {
        AuxiliaryOutputWorkingHoursDto entity = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("entity")), AuxiliaryOutputWorkingHoursDto.class);
        auxiliaryOutputWorkingHoursService.exportOutputHours(entity, response);
    }
}
performance-server/src/main/java/com/ruoyi/performance/controller/AuxiliaryWorkingHoursController.java
@@ -2,16 +2,14 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.core.domain.Result;
import com.ruoyi.common.core.dto.UserPageDto;
import com.ruoyi.common.utils.JackSonUtil;
import com.ruoyi.performance.pojo.AuxiliaryWorkingHours;
import com.ruoyi.performance.service.AuxiliaryWorkingHoursService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.Map;
@@ -33,27 +31,28 @@
    private AuxiliaryWorkingHoursService auxiliaryWorkingHoursService;
    @ApiOperation(value="查询辅助工时")
    @PostMapping("/selectAuxiliaryWorkingHours")
    @GetMapping("/selectAuxiliaryWorkingHours")
    public Result selectAuxiliaryWorkingHours(Page page,AuxiliaryWorkingHours entity) throws Exception {
        return Result.success(auxiliaryWorkingHoursService.selectAuxiliaryWorkingHours(page,entity));
    }
    @ApiOperation(value="删除辅助工时")
    @ApiOperation(value="辅助工时配置-删除")
    @PostMapping("/deleteAuxiliaryWorkingHours")
    public Result deleteAuxiliaryWorkingHours(Integer id){
        return Result.success(auxiliaryWorkingHoursService.deleteAuxiliaryWorkingHours(id));
    }
    @ApiOperation(value="修改辅助工时")
    @ApiOperation(value="辅助工时配置-编辑")
    @PostMapping("/upAuxiliaryWorkingHours")
    public Result upAuxiliaryWorkingHours(@RequestBody AuxiliaryWorkingHours auxiliaryWorkingHours){
        return Result.success(auxiliaryWorkingHoursService.upAuxiliaryWorkingHours(auxiliaryWorkingHours));
    }
    @ApiOperation(value="新增辅助工时")
    @ApiOperation(value="辅助工时配置-新增")
    @PostMapping("/insertAuxiliaryWorkingHours")
    public  Result insertAuxiliaryWorkingHours(@RequestBody AuxiliaryWorkingHours auxiliaryWorkingHours){
        return Result.success(auxiliaryWorkingHoursService.insertAuxiliaryWorkingHours(auxiliaryWorkingHours));
    }
}
performance-server/src/main/java/com/ruoyi/performance/controller/AuxiliaryWorkingHoursDayController.java
@@ -10,15 +10,11 @@
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.time.LocalDateTime;
import java.util.Map;
/**
@@ -38,64 +34,52 @@
    @Resource
    private AuxiliaryWorkingHoursDayService auxiliaryWorkingHoursDayService;
    @ApiOperation(value = "查询工时统计的辅助工时")
    @PostMapping("/selectAuxiliaryWorkingHoursDay")
    @ApiOperation(value = "日工时管理-查看辅助工时列表")
    @GetMapping("/selectAuxiliaryWorkingHoursDay")
    public Result selectAuxiliaryWorkingHoursDay(Page page,AuxiliaryWorkingHoursDayDto entity) throws Exception {
        return Result.success(auxiliaryWorkingHoursDayService.selectAuxiliaryWorkingHoursDay(page, entity));
    }
    @ApiOperation(value = "根据编号查询辅助工时配置信息")
    @PostMapping("/selectAuxiliaryWorkingHoursByNumber")
    @GetMapping("/selectAuxiliaryWorkingHoursByNumber")
    public Result selectAuxiliaryWorkingHoursByNumber(String number) {
        return Result.success(auxiliaryWorkingHoursDayService.selectAuxiliaryWorkingHoursByNumber(number));
    }
    @ApiOperation(value = "根据编号当前用户信息查询所在班次")
    @PostMapping("/selectshiftByUser")
    @GetMapping("/selectshiftByUser")
    public Result selectshiftByUser(LocalDateTime dateTime) {
        return Result.success(auxiliaryWorkingHoursDayService.selectshiftByUser(dateTime));
    }
    @ApiOperation(value = "录入数据(工时统计的辅助工时)")
    @ApiOperation(value = "日工时管理-录入辅助工时")
    @PostMapping("/insertAuxiliaryWorkingHoursDay")
    public Result insertAuxiliaryWorkingHoursDay(@RequestBody AuxiliaryWorkingHoursDay auxiliaryWorkingHoursDay) {
        return Result.success(auxiliaryWorkingHoursDayService.insertAuxiliaryWorkingHoursDay(auxiliaryWorkingHoursDay));
    }
    @ApiOperation(value = "批准工时统计的辅助工时")
    @ApiOperation(value = "日工时管理-批准辅助工时")
    @PostMapping("/approve")
    public Result approve(@RequestBody HoursDay hoursDay ) {
        return Result.success(auxiliaryWorkingHoursDayService.checkOrApprove(hoursDay));
    }
    @ApiOperation(value = "审核工时统计的辅助工时")
    @ApiOperation(value = "日工时管理-审核辅助工时")
    @PostMapping("/check")
    public Result check(@RequestBody HoursDay hoursDay ) {
        return Result.success(auxiliaryWorkingHoursDayService.checkOrApprove(hoursDay));
    }
    @ApiOperation(value = "编辑工时统计的辅助工时")
    @ApiOperation(value = "日工时管理-编辑辅助工时")
    @PostMapping("/updateAuxiliaryWorkingHoursDay")
    public Result updateAuxiliaryWorkingHoursDay(@RequestBody AuxiliaryWorkingHoursDay auxiliaryWorkingHoursDay) {
        return Result.success(auxiliaryWorkingHoursDayService.updateAuxiliaryWorkingHoursDay(auxiliaryWorkingHoursDay));
    }
    @ApiOperation(value = "删除工时统计的辅助工时")
    @ApiOperation(value = "日工时管理-删除辅助工时")
    @PostMapping("/deleteAuxiliaryWorkingHoursDay")
    public Result deleteAuxiliaryWorkingHoursDay(Integer id) {
        return Result.success(auxiliaryWorkingHoursDayService.deleteAuxiliaryWorkingHoursDay(id));
    }
    /**
     * 导出辅助工时
     * @param response
     * @throws IOException
     */
    @ApiOperation(value = "导出辅助工时")
    @PostMapping("/exportAssistantHours")
    public void exportAssistantHours(@RequestBody Map<String, Object> data, HttpServletResponse response) throws Exception {
        AuxiliaryWorkingHoursDayDto entity = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("entity")), AuxiliaryWorkingHoursDayDto.class);
        auxiliaryWorkingHoursDayService.exportWorkingHours(entity, response);
    }
}
performance-server/src/main/java/com/ruoyi/performance/controller/PerformanceShiftController.java
@@ -115,7 +115,8 @@
    @ApiOperation("班次:查询人员列表")
    @GetMapping("/getUserList")
    public Result<?> getUserList(){
        return Result.success(performanceShiftService.getUserList());
        Map<String, List<Map<String, Object>>> userList = performanceShiftService.getUserList();
        return Result.success(userList);
    }
performance-server/src/main/java/com/ruoyi/performance/dto/AuxiliaryOriginalHoursDto.java
@@ -2,13 +2,20 @@
import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.ruoyi.performance.pojo.AuxiliaryCorrectionHours;
import com.ruoyi.performance.utils.CustomerDoubleSerialize;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import java.math.BigDecimal;
import lombok.NoArgsConstructor;
import lombok.ToString;
@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
//原始工时
public class AuxiliaryOriginalHoursDto {
@@ -17,6 +24,7 @@
    private String name;
    //修正工时
    @ExcelIgnore
    private AuxiliaryCorrectionHours auxiliaryCorrectionHours;
    @ApiModelProperty("类型")
@@ -25,224 +33,256 @@
    @ApiModelProperty("1日工时")
    @ExcelProperty(value = "1日")
    private BigDecimal oneHours;
    @JsonSerialize(using = CustomerDoubleSerialize.class)
    private Double oneHours;
    @ExcelIgnore
    private Integer one;
    @ApiModelProperty("2日工时")
    @ExcelProperty(value = "2日")
    private BigDecimal twoHours;
    @JsonSerialize(using = CustomerDoubleSerialize.class)
    private Double twoHours;
    @ExcelIgnore
    private Integer  two;
    @ApiModelProperty("3日工时")
    @ExcelProperty(value = "3日")
    private BigDecimal threeHours;
    @JsonSerialize(using = CustomerDoubleSerialize.class)
    private Double threeHours;
    @ExcelIgnore
    private Integer three;
    @ApiModelProperty("4日工时")
    @ExcelProperty(value = "4日")
    private BigDecimal fourHours;
    @JsonSerialize(using = CustomerDoubleSerialize.class)
    private Double fourHours;
    @ExcelIgnore
    private Integer four;
    @ApiModelProperty("5日工时")
    @ExcelProperty(value = "5日")
    private BigDecimal fiveHours;
    @JsonSerialize(using = CustomerDoubleSerialize.class)
    private Double fiveHours;
    @ExcelIgnore
    private Integer  five;
    @ApiModelProperty("6日工时")
    @ExcelProperty(value = "6日")
    private BigDecimal sixHours;
    @JsonSerialize(using = CustomerDoubleSerialize.class)
    private Double sixHours;
    @ExcelIgnore
    private Integer six;
    @ApiModelProperty("7日工时")
    @ExcelProperty(value = "7日")
    private BigDecimal sevenHours;
    @JsonSerialize(using = CustomerDoubleSerialize.class)
    private Double sevenHours;
    @ExcelIgnore
    private Integer seven;
    @ApiModelProperty("8日工时")
    @ExcelProperty(value = "8日")
    private BigDecimal eightHours;
    @JsonSerialize(using = CustomerDoubleSerialize.class)
    private Double eightHours;
    @ExcelIgnore
    private Integer eight;
    @ApiModelProperty("9日工时")
    @ExcelProperty(value = "9日")
    private BigDecimal nineHours;
    @JsonSerialize(using = CustomerDoubleSerialize.class)
    private Double nineHours;
    @ExcelIgnore
    private Integer nine;
    @ApiModelProperty("10日工时")
    @ExcelProperty(value = "10日")
    private BigDecimal tenHours;
    @JsonSerialize(using = CustomerDoubleSerialize.class)
    private Double tenHours;
    @ExcelIgnore
    private Integer ten;
    @ApiModelProperty("11日工时")
    @ExcelProperty(value = "11日")
    private BigDecimal elevenHours;
    @JsonSerialize(using = CustomerDoubleSerialize.class)
    private Double elevenHours;
    @ExcelIgnore
    private Integer eleven;
    @ApiModelProperty("12日工时")
    @ExcelProperty(value = "12日")
    private BigDecimal twelveHours;
    @JsonSerialize(using = CustomerDoubleSerialize.class)
    private Double twelveHours;
    @ExcelIgnore
    private Integer twelve;
    @ApiModelProperty("13日工时")
    @ExcelProperty(value = "13日")
    private BigDecimal thirteenHours;
    @JsonSerialize(using = CustomerDoubleSerialize.class)
    private Double thirteenHours;
    @ExcelIgnore
    private Integer thirteen;
    @ApiModelProperty("14日工时")
    @ExcelProperty(value = "14日")
    private BigDecimal fourteenHours;
    @JsonSerialize(using = CustomerDoubleSerialize.class)
    private Double fourteenHours;
    @ExcelIgnore
    private Integer fourteen;
    @ApiModelProperty("15日工时")
    @ExcelProperty(value = "15日")
    private BigDecimal fifteenHours;
    @JsonSerialize(using = CustomerDoubleSerialize.class)
    private Double fifteenHours;
    @ExcelIgnore
    private Integer fifteen;
    @ApiModelProperty("16日工时")
    @ExcelProperty(value = "16日")
    private BigDecimal sixteenHours;
    @JsonSerialize(using = CustomerDoubleSerialize.class)
    private Double sixteenHours;
    @ExcelIgnore
    private Integer sixteen;
    @ApiModelProperty("17日工时")
    @ExcelProperty(value = "17日")
    private BigDecimal seventeenHours;
    @JsonSerialize(using = CustomerDoubleSerialize.class)
    private Double seventeenHours;
    @ExcelIgnore
    private Integer seventeen;
    @ApiModelProperty("18日工时")
    @ExcelProperty(value = "18日")
    private BigDecimal eighteenHours;
    @JsonSerialize(using = CustomerDoubleSerialize.class)
    private Double eighteenHours;
    @ExcelIgnore
    private Integer eighteen;
    @ApiModelProperty("19日工时")
    @ExcelProperty(value = "19日")
    private BigDecimal nineteenHours;
    @JsonSerialize(using = CustomerDoubleSerialize.class)
    private Double nineteenHours;
    @ExcelIgnore
    private Integer nineteen;
    @ApiModelProperty("20日工时")
    @ExcelProperty(value = "20日")
    private BigDecimal twentyHours;
    @JsonSerialize(using = CustomerDoubleSerialize.class)
    private Double twentyHours;
    @ExcelIgnore
    private Integer twenty;
    @ApiModelProperty("21日工时")
    @ExcelProperty(value = "21日")
    private BigDecimal twentyOneHours;
    @JsonSerialize(using = CustomerDoubleSerialize.class)
    private Double twentyOneHours;
    @ExcelIgnore
    private Integer twentyOne;
    @ApiModelProperty("22日工时")
    @ExcelProperty(value = "22日")
    private BigDecimal twentyTwoHours;
    @JsonSerialize(using = CustomerDoubleSerialize.class)
    private Double twentyTwoHours;
    @ExcelIgnore
    private Integer twentyTwo;
    @ApiModelProperty("23日工时")
    @ExcelProperty(value = "23日")
    private BigDecimal twentyThreeHours;
    @JsonSerialize(using = CustomerDoubleSerialize.class)
    private Double twentyThreeHours;
    @ExcelIgnore
    private Integer twentyThree;
    @ApiModelProperty("24日工时")
    @ExcelProperty(value = "24日")
    private BigDecimal twentyFourHours;
    @JsonSerialize(using = CustomerDoubleSerialize.class)
    private Double twentyFourHours;
    @ExcelIgnore
    private Integer twentyFour;
    @ApiModelProperty("25日工时")
    @ExcelProperty(value = "25日")
    private BigDecimal twentyFiveHours;
    @JsonSerialize(using = CustomerDoubleSerialize.class)
    private Double twentyFiveHours;
    @ExcelIgnore
    private Integer twentyFive;
    @ApiModelProperty("26日工时")
    @ExcelProperty(value = "26日")
    private BigDecimal twentySixHours;
    @JsonSerialize(using = CustomerDoubleSerialize.class)
    private Double twentySixHours;
    @ExcelIgnore
    private Integer twentySix;
    @ApiModelProperty("27日工时")
    @ExcelProperty(value = "27日")
    private BigDecimal twentySevenHours;
    @JsonSerialize(using = CustomerDoubleSerialize.class)
    private Double twentySevenHours;
    @ExcelIgnore
    private Integer twentySeven;
    @ApiModelProperty("28日工时")
    @ExcelProperty(value = "28日")
    private BigDecimal twentyEightHours;
    @JsonSerialize(using = CustomerDoubleSerialize.class)
    private Double twentyEightHours;
    @ExcelIgnore
    private Integer  twentyEight;
    @ApiModelProperty("29日工时")
    @ExcelProperty(value = "29日")
    private BigDecimal twentyNineHours;
    @JsonSerialize(using = CustomerDoubleSerialize.class)
    private Double twentyNineHours;
    @ExcelIgnore
    private Integer  twentyNine;
    @ApiModelProperty("30日工时")
    @ExcelProperty(value = "30日")
    private BigDecimal thirtyHours;
    @JsonSerialize(using = CustomerDoubleSerialize.class)
    private Double thirtyHours;
    @ExcelIgnore
    private Integer thirty;
    @ApiModelProperty("31日工时")
    @ExcelProperty(value = "31日")
    private BigDecimal thirtyOneHours;
    @JsonSerialize(using = CustomerDoubleSerialize.class)
    private Double thirtyOneHours;
    @ExcelIgnore
    private Integer thirtyOne;
    @ApiModelProperty("总工时")
    @ExcelProperty(value = "总工时")
    private BigDecimal total;
    @JsonSerialize(using = CustomerDoubleSerialize.class)
    private Double total;
    @ApiModelProperty("月份")
    @ExcelProperty(value = "月份")
performance-server/src/main/java/com/ruoyi/performance/dto/AuxiliaryOutputWorkingHoursDto.java
@@ -11,9 +11,10 @@
public class AuxiliaryOutputWorkingHoursDto extends AuxiliaryOutputWorkingHours {
    @ApiModelProperty("检测人")
    @ExcelProperty(index = 1, value = "检测人")
    @ExcelProperty(value = "检测人")
    private String name;
    @ApiModelProperty("电缆标识")
    private String cableTag;
    // 状态 已提交 已审核 已批准
    private String state;
}
performance-server/src/main/java/com/ruoyi/performance/mapper/AuxiliaryOutputWorkingHoursMapper.java
@@ -4,11 +4,11 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.performance.dto.AuxiliaryAllDto;
import com.ruoyi.performance.dto.AuxiliaryOriginalHoursLookDto;
import com.ruoyi.performance.dto.AuxiliaryOutputWorkingHoursDto;
import com.ruoyi.performance.pojo.AuxiliaryOutputWorkingHours;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
@@ -35,21 +35,4 @@
    List<AuxiliaryOutputWorkingHours> selectListByIds(@Param("ids") List<Integer> ids);
    List<AuxiliaryOutputWorkingHours> selectLists(@Param("ew") QueryWrapper<AuxiliaryOutputWorkingHours> ew, @Param("ids") List<Integer> ids);
    /**
     * 查询
     * @param dto
     * @return
     */
    List<AuxiliaryAllDto> selectAuxiliaryAllByMonth(@Param("dto") AuxiliaryOriginalHoursLookDto dto, @Param("userIds") List<Integer> userIds);
    /**
     * 查询辅助工时
     * @param dto
     * @param userIds
     * @return
     */
    List<AuxiliaryAllDto> selectSubsidiaryAllByMonth(@Param("dto") AuxiliaryOriginalHoursLookDto dto, @Param("userIds") List<Integer> userIds);
    List<AuxiliaryOutputWorkingHoursDto> selectAuxiliaryOutputWorkingHoursList(@Param("ew") QueryWrapper<AuxiliaryOutputWorkingHoursDto> ew, @Param("ids") List<Integer> ids);
}
performance-server/src/main/java/com/ruoyi/performance/pojo/AuxiliaryCorrectionHours.java
@@ -1,15 +1,18 @@
package com.ruoyi.performance.pojo;
import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDateTime;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
 * <p>
@@ -37,127 +40,127 @@
    @ApiModelProperty("1")
    @ExcelProperty(value = "1日")
    private BigDecimal oneHours;
    private Double oneHours;
    @ApiModelProperty("2")
    @ExcelProperty(value = "2日")
    private BigDecimal twoHours;
    private Double twoHours;
    @ApiModelProperty("3")
    @ExcelProperty(value = "3日")
    private BigDecimal threeHours;
    private Double threeHours;
    @ApiModelProperty("4")
    @ExcelProperty(value = "4日")
    private BigDecimal fourHours;
    private Double fourHours;
    @ApiModelProperty("5")
    @ExcelProperty(value = "5日")
    private BigDecimal fiveHours;
    private Double fiveHours;
    @ApiModelProperty("6")
    @ExcelProperty(value = "6日")
    private BigDecimal sixHours;
    private Double sixHours;
    @ApiModelProperty("7")
    @ExcelProperty(value = "7日")
    private BigDecimal sevenHours;
    private Double sevenHours;
    @ApiModelProperty("8")
    @ExcelProperty(value = "8日")
    private BigDecimal eightHours;
    private Double eightHours;
    @ApiModelProperty("9")
    @ExcelProperty(value = "9日")
    private BigDecimal nineHours;
    private Double nineHours;
    @ApiModelProperty("10")
    @ExcelProperty(value = "10日")
    private BigDecimal tenHours;
    private Double tenHours;
    @ApiModelProperty("11")
    @ExcelProperty(value = "11日")
    private BigDecimal elevenHours;
    private Double elevenHours;
    @ApiModelProperty("12")
    @ExcelProperty(value = "12日")
    private BigDecimal twelveHours;
    private Double twelveHours;
    @ApiModelProperty("13")
    @ExcelProperty(value = "13日")
    private BigDecimal thirteenHours;
    private Double thirteenHours;
    @ApiModelProperty("14")
    @ExcelProperty(value = "14日")
    private BigDecimal fourteenHours;
    private Double fourteenHours;
    @ApiModelProperty("15")
    @ExcelProperty(value = "15日")
    private BigDecimal fifteenHours;
    private Double fifteenHours;
    @ApiModelProperty("16")
    @ExcelProperty(value = "16日")
    private BigDecimal sixteenHours;
    private Double sixteenHours;
    @ApiModelProperty("17")
    @ExcelProperty(value = "17日")
    private BigDecimal seventeenHours;
    private Double seventeenHours;
    @ApiModelProperty("18")
    @ExcelProperty(value = "18日")
    private BigDecimal eighteenHours;
    private Double eighteenHours;
    @ApiModelProperty("19")
    @ExcelProperty(value = "19日")
    private BigDecimal nineteenHours;
    private Double nineteenHours;
    @ApiModelProperty("20")
    @ExcelProperty(value = "20日")
    private BigDecimal twentyHours;
    private Double twentyHours;
    @ApiModelProperty("21")
    @ExcelProperty(value = "21日")
    private BigDecimal twentyOneHours;
    private Double twentyOneHours;
    @ApiModelProperty("22")
    @ExcelProperty(value = "22日")
    private BigDecimal twentyTwoHours;
    private Double twentyTwoHours;
    @ApiModelProperty("23")
    @ExcelProperty(value = "23日")
    private BigDecimal twentyThreeHours;
    private Double twentyThreeHours;
    @ApiModelProperty("24")
    @ExcelProperty(value = "24日")
    private BigDecimal twentyFourHours;
    private Double twentyFourHours;
    @ApiModelProperty("25")
    @ExcelProperty(value = "25日")
    private BigDecimal twentyFiveHours;
    private Double twentyFiveHours;
    @ApiModelProperty("26")
    @ExcelProperty(value = "26日")
    private BigDecimal twentySixHours;
    private Double twentySixHours;
    @ApiModelProperty("27")
    @ExcelProperty(value = "27日")
    private BigDecimal twentySevenHours;
    private Double twentySevenHours;
    @ApiModelProperty("28")
    @ExcelProperty(value = "28日")
    private BigDecimal twentyEightHours;
    private Double twentyEightHours;
    @ApiModelProperty("29")
    @ExcelProperty(value = "29日")
    private BigDecimal twentyNineHours;
    private Double twentyNineHours;
    @ApiModelProperty("30")
    @ExcelProperty(value = "30日")
    private BigDecimal thirtyHours;
    private Double thirtyHours;
    @ApiModelProperty("31")
    @ExcelProperty(value = "31日")
    private BigDecimal thirtyOneHours;
    private Double thirtyOneHours;
    @ApiModelProperty("月份")
    @ExcelProperty(value = "月份")
performance-server/src/main/java/com/ruoyi/performance/pojo/AuxiliaryOutputWorkingHours.java
@@ -1,16 +1,17 @@
package com.ruoyi.performance.pojo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
@@ -25,99 +26,92 @@
@Setter
@TableName("auxiliary_output_working_hours")
@ApiModel(value = "AuxiliaryOutputWorkingHours对象", description = "日工时管理的产量工时")
@ExcelIgnoreUnannotated
@ToString
public class AuxiliaryOutputWorkingHours  implements Serializable {
    @TableId(value = "id", type = IdType.AUTO)
    @ExcelIgnore
    private Integer id;
    @ApiModelProperty("检测项分类")
    @ExcelProperty(index = 2, value = "检测项分类")
    private String inspectionItemClass;
    @ApiModelProperty("检测项")
    @ExcelProperty(index = 3, value = "检测项")
    @ApiModelProperty("检测父项")
    @ExcelProperty(value = "检测父项")
    private String inspectionItem;
    @ApiModelProperty("检测子项")
    @ExcelProperty(index = 4, value = "检测子项")
    @ExcelProperty(value = "检测子项")
    private String inspectionItemSubclass;
    @ApiModelProperty("样品id")
    private Integer sampleId;
    @ApiModelProperty("样品编号")
    @ExcelProperty(index = 6, value = "样品编号")
    @ExcelProperty(value = "样品编号")
    private String sample;
    @ApiModelProperty("加班委托单号")
    @ExcelProperty(value = "加班委托单号")
    private String overtimeOrderNo;
    @ApiModelProperty("加班工时")
    private BigDecimal overtimeWorkTime;
    @ExcelProperty(value = "加班工时")
    private Double overtimeWorkTime;
    @ApiModelProperty("加班数量")
    @ExcelProperty(value = "加班数量")
    private Integer overtimeAmount;
    @ApiModelProperty("非加班委托单号")
    private Integer orderId;
    @ApiModelProperty("委托单号")
    @ExcelProperty(index = 5, value = "委托单号")
    @ExcelProperty(value = "非加班委托单号")
    private String orderNo;
    @ApiModelProperty("工时")
    private BigDecimal workTime;
    @ApiModelProperty("非加班工时")
    @ExcelProperty(value = "非加班工时")
    private Double workTime;
    @ApiModelProperty("数量")
    @ApiModelProperty("非加班数量")
    @ExcelProperty(value = "非加班数量")
    private Integer amount;
    @ApiModelProperty("产量工时")
    @ExcelProperty(index = 7, value = "产量工时")
    private BigDecimal outputWorkTime;
    @ExcelProperty(value = "产量工时")
    private Double outputWorkTime;
    @ApiModelProperty("日期")
    @ExcelProperty(index = 10, value = "日期")
    @ExcelProperty(value = "日期")
    private String dateTime;
    @ApiModelProperty("周次")
    @ExcelProperty(index = 11, value = "周次")
    @ExcelProperty(value = "周次")
    private String week;
    @ApiModelProperty("星期")
    @ExcelProperty(index = 12, value = "星期")
    @ExcelProperty(value = "星期")
    private String weekDay;
    @ApiModelProperty("检测人id")
    @TableField("`check`")
    private Integer check;
    @ExcelIgnore
    private Integer checkId;
    @ApiModelProperty("创建时间")
    @TableField(fill = FieldFill.INSERT)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ExcelIgnore
    private LocalDateTime createTime;
    @ApiModelProperty("修改时间")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ExcelIgnore
    private LocalDateTime updateTime;
    @ApiModelProperty("创建人id")
    @TableField(fill = FieldFill.INSERT)
    @ExcelIgnore
    private Integer createUser;
    @ApiModelProperty("修改人id")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    @ExcelIgnore
    private Integer updateUser;
    @ApiModelProperty("工时分组")
    @ExcelProperty(index = 8, value = "工时分组")
    @ExcelIgnore
    private String manHourGroup;
    @ApiModelProperty("单价")
    @ExcelProperty(index = 9, value = "单价")
    private BigDecimal price;
    @ApiModelProperty("检验项id")
    private Integer insProductId;
}
performance-server/src/main/java/com/ruoyi/performance/service/AuxiliaryOriginalHoursService.java
@@ -2,13 +2,10 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.performance.dto.AuxiliaryAllDto;
import com.ruoyi.performance.dto.AuxiliaryOriginalHoursDto;
import com.ruoyi.performance.dto.AuxiliaryOriginalHoursLookDto;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
import java.util.Map;
public interface AuxiliaryOriginalHoursService {
@@ -20,11 +17,5 @@
     *
     * @param response
     */
    void exportWorkingHours(String month, String name, String departLims,HttpServletResponse response) throws IOException;
    /**
     * 查询月份全部工时
     * @return
     */
    List<AuxiliaryAllDto> selectAuxiliaryAllByMonth(AuxiliaryOriginalHoursLookDto dto);
    void exportWorkingHours(Page page,String month, String name, String departLims,HttpServletResponse response) throws IOException;
}
performance-server/src/main/java/com/ruoyi/performance/service/AuxiliaryOutputWorkingHoursService.java
@@ -1,10 +1,12 @@
package com.ruoyi.performance.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.performance.dto.AuxiliaryOutputWorkingHoursDto;
import com.ruoyi.performance.pojo.AuxiliaryOutputWorkingHours;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@@ -34,11 +36,4 @@
     * @throws IOException
     */
    void exportWorkingHours(HttpServletResponse response)throws IOException;
    /**
     * 导出产量工时
     * @param entity
     * @param response
     */
    void exportOutputHours(AuxiliaryOutputWorkingHoursDto entity, HttpServletResponse response);
}
performance-server/src/main/java/com/ruoyi/performance/service/AuxiliaryWorkingHoursDayService.java
@@ -7,7 +7,7 @@
import com.ruoyi.performance.dto.HoursDay;
import com.ruoyi.performance.pojo.AuxiliaryWorkingHoursDay;
import javax.servlet.http.HttpServletResponse;
import java.time.LocalDateTime;
import java.util.Map;
@@ -34,11 +34,4 @@
    int deleteAuxiliaryWorkingHoursDay(Integer id);
    String selectshiftByUser(LocalDateTime dateTime);
    /**
     * 导出辅助工时
     * @param entity
     * @param response
     */
    void exportWorkingHours(AuxiliaryWorkingHoursDayDto entity, HttpServletResponse response);
}
performance-server/src/main/java/com/ruoyi/performance/service/AuxiliaryWorkingHoursService.java
@@ -3,6 +3,8 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.common.core.domain.entity.User;
import com.ruoyi.common.core.dto.UserPageDto;
import com.ruoyi.performance.pojo.AuxiliaryWorkingHours;
import java.util.Map;
@@ -23,4 +25,5 @@
    int upAuxiliaryWorkingHours(AuxiliaryWorkingHours auxiliaryWorkingHours);
    int insertAuxiliaryWorkingHours(AuxiliaryWorkingHours auxiliaryWorkingHours);
}
performance-server/src/main/java/com/ruoyi/performance/service/impl/AuxiliaryOriginalHoursServiceImpl.java
@@ -4,15 +4,15 @@
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet;
import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.core.domain.entity.User;
import com.ruoyi.common.exception.base.BaseException;
import com.ruoyi.performance.dto.AuxiliaryAllDto;
import com.ruoyi.common.utils.EasyExcelUtils;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.performance.dto.AuxiliaryCorrectionHoursDto;
import com.ruoyi.performance.dto.AuxiliaryOriginalHoursDto;
import com.ruoyi.performance.dto.AuxiliaryOriginalHoursLookDto;
@@ -22,6 +22,9 @@
import com.ruoyi.performance.mapper.AuxiliaryWorkingHoursDayMapper;
import com.ruoyi.performance.pojo.AuxiliaryCorrectionHours;
import com.ruoyi.performance.service.AuxiliaryOriginalHoursService;
import com.ruoyi.system.domain.SysUserRole;
import com.ruoyi.system.mapper.SysRoleMapper;
import com.ruoyi.system.mapper.SysUserRoleMapper;
import com.ruoyi.system.mapper.UserMapper;
import org.apache.commons.math3.analysis.function.Power;
import org.springframework.beans.BeanUtils;
@@ -30,19 +33,26 @@
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.net.URLEncoder;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.text.DecimalFormat;
import java.util.*;
import java.util.stream.Collectors;
@Service
public class AuxiliaryOriginalHoursServiceImpl implements AuxiliaryOriginalHoursService {
    @Resource
    UserMapper userMapper;
    @Resource
    SysUserRoleMapper userRoleMapper;
    @Resource
    SysRoleMapper roleMapper;
    @Resource
    AuxiliaryOriginalHoursMapper auxiliaryOriginalHoursMapper;
@@ -68,18 +78,32 @@
            List<Integer> ides = auxiliaryCorrectionHoursMapper.selDepartLimsByName(departLims);
            for (Integer ide : ides) {
                List<User> users = userMapper.selectList(Wrappers.<User>lambdaQuery()
                        .like(User::getDepartLimsId, ide));
                        .like(User::getDepartLimsId, ide)
                        .eq(User::getStatus, 0));
                if (ObjectUtils.isNotEmpty(users)) {
                    ides.clear();
                    ids.addAll(users.stream().map(User::getId).distinct().collect(Collectors.toList()));
                    break;
                }
            }
        }
        if (ObjectUtils.isNotEmpty(name)) {
            ids.clear();
            ids.add(userMapper.selectOne(Wrappers.<User>lambdaQuery().like(User::getName, name)).getId());
            List<User> users = userMapper.selectList(new LambdaQueryWrapper<User>().like(User::getName, name));
            if(!users.isEmpty()) {
                // 不为空 进行过滤
                if(CollectionUtils.isNotEmpty(ids)) {
                    List<Integer> collect = users.stream().map(User::getId).distinct().collect(Collectors.toList());
                    ids = ids.stream().filter(item -> collect.contains(item)).collect(Collectors.toList());
                    // ids 为空就赋值 -1
                    if(CollectionUtils.isEmpty(ids)) {
                        ids.add(-1);
        }
        if (ids.size() == 0) {
                }else {
                    // 为空 进行新增
                    ids.addAll(users.stream().map(User::getId).distinct().collect(Collectors.toList()));
                }
            }
        }
        if (ids.isEmpty()) {
            ids = null;
        }
        IPage<AuxiliaryOriginalHoursDto> originalHoursDtoIPage = new Page<>();
@@ -109,23 +133,9 @@
        }
        //总工时=产量工时+辅助工时+加班工时
        Map<String, AuxiliaryOriginalHoursDto> data4 = new HashMap<String, AuxiliaryOriginalHoursDto>();
        if (data1.size() > 0) {
        if (!data1.isEmpty()) {
            Map<String, AuxiliaryOriginalHoursDto> data5 = data1;
            if (data2.size() > 0) {
                merge(data5, data4, data2);
            }
            if (data3.size() > 0) {
//                merge(data5,data4,data3);
            }
            if (data2.size() == 0 && data3.size() == 0) {
                for (Map.Entry<String, AuxiliaryOriginalHoursDto> entry : data5.entrySet()) {
                    AuxiliaryOriginalHoursDto dto = entry.getValue();
                    AuxiliaryOriginalHoursDto originalHoursDto = new AuxiliaryOriginalHoursDto();
                    BeanUtils.copyProperties(dto, originalHoursDto);
                    originalHoursDto.setType("总工时");
                    data4.put(entry.getKey(), originalHoursDto);
                }
            }
            data4 = mergeTotal(data5,data2,data3);
            auxiliaryOriginalHoursDtos.addAll(data4.values());
        }
@@ -156,16 +166,25 @@
            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());
        if(page.getSize()>0){
            int i = (int) page.getSize() * ((int) page.getCurrent() - 1);
            if(result.size() - i < page.getSize()) {
                result = result.subList(i, result.size());
            } else {
                result = result.subList(i, (int) page.getSize() + i);
            }
        }
        originalHoursDtoIPage.setRecords(result);
        return originalHoursDtoIPage;
    }
    //导出原始工时
    @Override
    public void exportWorkingHours(String month, String name, String departLims, HttpServletResponse response) throws IOException {
    public void exportWorkingHours(Page page,String month, String name, String departLims, HttpServletResponse response) throws IOException {
        List<AuxiliaryOriginalHoursDto> auxiliaryOriginalHoursDtos = new ArrayList<AuxiliaryOriginalHoursDto>();
        //查询原始工时(使用分页查询)
        AuxiliaryOriginalHoursLookDto auxiliaryOriginalHoursLookDto = new AuxiliaryOriginalHoursLookDto();
        if (ObjectUtils.isNotEmpty(month)) {
@@ -177,7 +196,7 @@
        if (ObjectUtils.isNotEmpty(departLims)) {
            auxiliaryOriginalHoursLookDto.setDepartLims(departLims);
        }
        IPage<AuxiliaryOriginalHoursDto> body = selectAuxiliaryOriginalHours(new Page(-1, -1), auxiliaryOriginalHoursLookDto);
        IPage<AuxiliaryOriginalHoursDto> body = (IPage<AuxiliaryOriginalHoursDto>) selectAuxiliaryOriginalHours(new Page(-1, -1), auxiliaryOriginalHoursLookDto);
        auxiliaryOriginalHoursDtos = body.getRecords();
        response.setContentType("application/vnd.ms-excel");
        response.setCharacterEncoding("UTF-8");
@@ -186,7 +205,9 @@
        response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
        try {
            // 新建ExcelWriter
            ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()).build();
            ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream())
                    .registerWriteHandler(EasyExcelUtils.getStyleStrategy())
                    .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()).build();
            WriteSheet mainSheet = EasyExcel.writerSheet(0, "原始工时导出").head(AuxiliaryOriginalHoursDto.class).build();
            excelWriter.write(auxiliaryOriginalHoursDtos, mainSheet);
            // 关闭流
@@ -195,71 +216,6 @@
            throw new RuntimeException("导出失败");
        }
    }
    /**
     * 查询月份全部工时
     *
     * @return
     */
    @Override
    public List<AuxiliaryAllDto> selectAuxiliaryAllByMonth(AuxiliaryOriginalHoursLookDto dto) {
        if (StringUtils.isBlank(dto.getMonth())) {
            throw new BaseException("缺少月份");
        }
        List<Integer> userIds = new ArrayList<>();
        String name = dto.getName();
        if (ObjectUtils.isNotEmpty(name)) {
            userIds.addAll(userMapper.selectList(Wrappers.<User>lambdaQuery().like(User::getName, name)).stream().map(User::getId).collect(Collectors.toList()));
        }
        // 解析输入的时间字符串
        LocalDate date = LocalDate.parse(dto.getMonth() + "-01", DateTimeFormatter.ofPattern("yyyy-MM-dd"));
        // 获取前一个月的26号
        LocalDate previousMonth26th = date.minusMonths(1).withDayOfMonth(26);
        // 获取当前月的25号
        LocalDate currentMonth25th = date.withDayOfMonth(25);
        // 格式化日期为 yyyy-MM-dd HH:mm:ss
        DateTimeFormatter outputFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
        String beginDate = previousMonth26th.atStartOfDay().format(outputFormatter);
        String endDate = currentMonth25th.atStartOfDay().format(outputFormatter);
//        dto.setBeginDate(beginDate + " 00:00:00");
//        dto.setEndDate(endDate + " 23:59:59");
        dto.setBeginDate(beginDate);
        dto.setEndDate(endDate);
        // 查询产量工时
        List<AuxiliaryAllDto> auxiliaryAllDtos = auxiliaryOutputWorkingHoursMapper.selectAuxiliaryAllByMonth(dto, userIds);
        // 查询辅助工时
        List<AuxiliaryAllDto> auxiliarySubsidiary = auxiliaryOutputWorkingHoursMapper.selectSubsidiaryAllByMonth(dto, userIds);
        //产量工时进行人员分组, 把辅助工时添加
        Map<Integer, List<AuxiliaryAllDto>> groupIds = auxiliaryAllDtos.stream().collect(Collectors.groupingBy(AuxiliaryAllDto::getUserId));
        for (AuxiliaryAllDto auxiliaryAllDto : auxiliarySubsidiary) {
            List<AuxiliaryAllDto> allDtos = groupIds.get(auxiliaryAllDto.getUserId());
            // 判断是否为空
            if (CollectionUtils.isNotEmpty(allDtos)) {
                // 添加辅助工时
                allDtos.get(0).setSubsidiaryHour(auxiliaryAllDto.getSubsidiaryHour());
            } else {
                // 没有改人员添加一行
                auxiliaryAllDtos.add(auxiliaryAllDto);
            }
        }
        for (AuxiliaryAllDto auxiliaryAllDto : auxiliaryAllDtos) {
            BigDecimal total = (auxiliaryAllDto.getYieldHour() != null ? auxiliaryAllDto.getYieldHour() : BigDecimal.ZERO)
                    .add(auxiliaryAllDto.getSubsidiaryHour() != null ? auxiliaryAllDto.getSubsidiaryHour() : BigDecimal.ZERO);
            auxiliaryAllDto.setTotalHour(total);
        }
        return auxiliaryAllDtos;
    }
    private Map<String, AuxiliaryOriginalHoursDto> getData(List<Map<String, Object>> objectMaps, String type) {
@@ -283,7 +239,7 @@
            AuxiliaryCorrectionHours auxiliaryCorrectionHours = auxiliaryOriginalHoursDto.getAuxiliaryCorrectionHours();
            switch (objectMap.get("month").toString().substring(8, 10)) {
                case "01":
                    auxiliaryOriginalHoursDto.setOneHours(new BigDecimal(objectMap.get("manHours").toString()));
                    auxiliaryOriginalHoursDto.setOneHours(Double.parseDouble(objectMap.get("manHours").toString()));
                    if (ObjectUtils.isNotEmpty(auxiliaryCorrectionHours)) {
                        if (auxiliaryCorrectionHours.getOneHours().compareTo(auxiliaryOriginalHoursDto.getOneHours()) != 0) {
                            auxiliaryOriginalHoursDto.setOne(1);
@@ -291,7 +247,7 @@
                    }
                    break;
                case "02":
                    auxiliaryOriginalHoursDto.setTwoHours(new BigDecimal(objectMap.get("manHours").toString()));
                    auxiliaryOriginalHoursDto.setTwoHours(Double.parseDouble(objectMap.get("manHours").toString()));
                    if (ObjectUtils.isNotEmpty(auxiliaryCorrectionHours)) {
                        if (auxiliaryCorrectionHours.getTwoHours().compareTo(auxiliaryOriginalHoursDto.getTwoHours()) != 0) {
                            auxiliaryOriginalHoursDto.setTwo(1);
@@ -299,7 +255,7 @@
                    }
                    break;
                case "03":
                    auxiliaryOriginalHoursDto.setThreeHours(new BigDecimal(objectMap.get("manHours").toString()));
                    auxiliaryOriginalHoursDto.setThreeHours(Double.parseDouble(objectMap.get("manHours").toString()));
                    if (ObjectUtils.isNotEmpty(auxiliaryCorrectionHours)) {
                        if (auxiliaryCorrectionHours.getThreeHours().compareTo(auxiliaryOriginalHoursDto.getThreeHours()) != 0) {
                            auxiliaryOriginalHoursDto.setThree(1);
@@ -307,7 +263,7 @@
                    }
                    break;
                case "04":
                    auxiliaryOriginalHoursDto.setFourHours(new BigDecimal(objectMap.get("manHours").toString()));
                    auxiliaryOriginalHoursDto.setFourHours(Double.parseDouble(objectMap.get("manHours").toString()));
                    if (ObjectUtils.isNotEmpty(auxiliaryCorrectionHours)) {
                        if (auxiliaryCorrectionHours.getFourHours().compareTo(auxiliaryOriginalHoursDto.getFourHours()) != 0) {
                            auxiliaryOriginalHoursDto.setFour(1);
@@ -315,7 +271,7 @@
                    }
                    break;
                case "05":
                    auxiliaryOriginalHoursDto.setFiveHours(new BigDecimal(objectMap.get("manHours").toString()));
                    auxiliaryOriginalHoursDto.setFiveHours(Double.parseDouble(objectMap.get("manHours").toString()));
                    if (ObjectUtils.isNotEmpty(auxiliaryCorrectionHours)) {
                        if (auxiliaryCorrectionHours.getFiveHours().compareTo(auxiliaryOriginalHoursDto.getFiveHours()) != 0) {
                            auxiliaryOriginalHoursDto.setFive(1);
@@ -323,7 +279,7 @@
                    }
                    break;
                case "06":
                    auxiliaryOriginalHoursDto.setSixHours(new BigDecimal(objectMap.get("manHours").toString()));
                    auxiliaryOriginalHoursDto.setSixHours(Double.parseDouble(objectMap.get("manHours").toString()));
                    if (ObjectUtils.isNotEmpty(auxiliaryCorrectionHours)) {
                        if (auxiliaryCorrectionHours.getSixHours().compareTo(auxiliaryOriginalHoursDto.getSixHours()) != 0) {
                            auxiliaryOriginalHoursDto.setSix(1);
@@ -331,7 +287,7 @@
                    }
                    break;
                case "07":
                    auxiliaryOriginalHoursDto.setSevenHours(new BigDecimal(objectMap.get("manHours").toString()));
                    auxiliaryOriginalHoursDto.setSevenHours(Double.parseDouble(objectMap.get("manHours").toString()));
                    if (ObjectUtils.isNotEmpty(auxiliaryCorrectionHours)) {
                        if (auxiliaryCorrectionHours.getSevenHours().compareTo(auxiliaryOriginalHoursDto.getSevenHours()) != 0) {
                            auxiliaryOriginalHoursDto.setSeven(1);
@@ -339,7 +295,7 @@
                    }
                    break;
                case "08":
                    auxiliaryOriginalHoursDto.setEightHours(new BigDecimal(objectMap.get("manHours").toString()));
                    auxiliaryOriginalHoursDto.setEightHours(Double.parseDouble(objectMap.get("manHours").toString()));
                    if (ObjectUtils.isNotEmpty(auxiliaryCorrectionHours)) {
                        if (auxiliaryCorrectionHours.getEightHours().compareTo(auxiliaryOriginalHoursDto.getEightHours()) != 0) {
                            auxiliaryOriginalHoursDto.setEight(1);
@@ -347,7 +303,7 @@
                    }
                    break;
                case "09":
                    auxiliaryOriginalHoursDto.setNineHours(new BigDecimal(objectMap.get("manHours").toString()));
                    auxiliaryOriginalHoursDto.setNineHours(Double.parseDouble(objectMap.get("manHours").toString()));
                    if (ObjectUtils.isNotEmpty(auxiliaryCorrectionHours)) {
                        if (auxiliaryCorrectionHours.getNineHours().compareTo(auxiliaryOriginalHoursDto.getNineHours()) != 0) {
                            auxiliaryOriginalHoursDto.setNine(1);
@@ -355,7 +311,7 @@
                    }
                    break;
                case "10":
                    auxiliaryOriginalHoursDto.setTenHours(new BigDecimal(objectMap.get("manHours").toString()));
                    auxiliaryOriginalHoursDto.setTenHours(Double.parseDouble(objectMap.get("manHours").toString()));
                    if (ObjectUtils.isNotEmpty(auxiliaryCorrectionHours)) {
                        if (auxiliaryCorrectionHours.getTenHours().compareTo(auxiliaryOriginalHoursDto.getTenHours()) != 0) {
                            auxiliaryOriginalHoursDto.setTen(1);
@@ -363,7 +319,7 @@
                    }
                    break;
                case "11":
                    auxiliaryOriginalHoursDto.setElevenHours(new BigDecimal(objectMap.get("manHours").toString()));
                    auxiliaryOriginalHoursDto.setElevenHours(Double.parseDouble(objectMap.get("manHours").toString()));
                    if (ObjectUtils.isNotEmpty(auxiliaryCorrectionHours)) {
                        if (auxiliaryCorrectionHours.getElevenHours().compareTo(auxiliaryOriginalHoursDto.getElevenHours()) != 0) {
                            auxiliaryOriginalHoursDto.setEleven(1);
@@ -371,7 +327,7 @@
                    }
                    break;
                case "12":
                    auxiliaryOriginalHoursDto.setTwelveHours(new BigDecimal(objectMap.get("manHours").toString()));
                    auxiliaryOriginalHoursDto.setTwelveHours(Double.parseDouble(objectMap.get("manHours").toString()));
                    if (ObjectUtils.isNotEmpty(auxiliaryCorrectionHours)) {
                        if (auxiliaryCorrectionHours.getTwelveHours().compareTo(auxiliaryOriginalHoursDto.getTwelveHours()) != 0) {
                            auxiliaryOriginalHoursDto.setTwelve(1);
@@ -379,7 +335,7 @@
                    }
                    break;
                case "13":
                    auxiliaryOriginalHoursDto.setThirteenHours(new BigDecimal(objectMap.get("manHours").toString()));
                    auxiliaryOriginalHoursDto.setThirteenHours(Double.parseDouble(objectMap.get("manHours").toString()));
                    if (ObjectUtils.isNotEmpty(auxiliaryCorrectionHours)) {
                        if (auxiliaryCorrectionHours.getThirteenHours().compareTo(auxiliaryOriginalHoursDto.getThirteenHours()) != 0) {
                            auxiliaryOriginalHoursDto.setThirteen(1);
@@ -387,7 +343,7 @@
                    }
                    break;
                case "14":
                    auxiliaryOriginalHoursDto.setFourteenHours(new BigDecimal(objectMap.get("manHours").toString()));
                    auxiliaryOriginalHoursDto.setFourteenHours(Double.parseDouble(objectMap.get("manHours").toString()));
                    if (ObjectUtils.isNotEmpty(auxiliaryCorrectionHours)) {
                        if (auxiliaryCorrectionHours.getFourteenHours().compareTo(auxiliaryOriginalHoursDto.getFourteenHours()) != 0) {
                            auxiliaryOriginalHoursDto.setFourteen(1);
@@ -395,7 +351,7 @@
                    }
                    break;
                case "15":
                    auxiliaryOriginalHoursDto.setFifteenHours(new BigDecimal(objectMap.get("manHours").toString()));
                    auxiliaryOriginalHoursDto.setFifteenHours(Double.parseDouble(objectMap.get("manHours").toString()));
                    if (ObjectUtils.isNotEmpty(auxiliaryCorrectionHours)) {
                        if (auxiliaryCorrectionHours.getFifteenHours().compareTo(auxiliaryOriginalHoursDto.getFifteenHours()) != 0) {
                            auxiliaryOriginalHoursDto.setFifteen(1);
@@ -403,7 +359,7 @@
                    }
                    break;
                case "16":
                    auxiliaryOriginalHoursDto.setSixteenHours(new BigDecimal(objectMap.get("manHours").toString()));
                    auxiliaryOriginalHoursDto.setSixteenHours(Double.parseDouble(objectMap.get("manHours").toString()));
                    if (ObjectUtils.isNotEmpty(auxiliaryCorrectionHours)) {
                        if (auxiliaryCorrectionHours.getSixteenHours().compareTo(auxiliaryOriginalHoursDto.getSixteenHours()) != 0) {
                            auxiliaryOriginalHoursDto.setSixteen(1);
@@ -411,7 +367,7 @@
                    }
                    break;
                case "17":
                    auxiliaryOriginalHoursDto.setSeventeenHours(new BigDecimal(objectMap.get("manHours").toString()));
                    auxiliaryOriginalHoursDto.setSeventeenHours(Double.parseDouble(objectMap.get("manHours").toString()));
                    if (ObjectUtils.isNotEmpty(auxiliaryCorrectionHours)) {
                        if (auxiliaryCorrectionHours.getSeventeenHours().compareTo(auxiliaryOriginalHoursDto.getSeventeenHours()) != 0) {
                            auxiliaryOriginalHoursDto.setSeventeen(1);
@@ -419,7 +375,7 @@
                    }
                    break;
                case "18":
                    auxiliaryOriginalHoursDto.setEighteenHours(new BigDecimal(objectMap.get("manHours").toString()));
                    auxiliaryOriginalHoursDto.setEighteenHours(Double.parseDouble(objectMap.get("manHours").toString()));
                    if (ObjectUtils.isNotEmpty(auxiliaryCorrectionHours)) {
                        if (auxiliaryCorrectionHours.getEighteenHours().compareTo(auxiliaryOriginalHoursDto.getEighteenHours()) != 0) {
                            auxiliaryOriginalHoursDto.setEighteen(1);
@@ -427,7 +383,7 @@
                    }
                    break;
                case "19":
                    auxiliaryOriginalHoursDto.setNineteenHours(new BigDecimal(objectMap.get("manHours").toString()));
                    auxiliaryOriginalHoursDto.setNineteenHours(Double.parseDouble(objectMap.get("manHours").toString()));
                    if (ObjectUtils.isNotEmpty(auxiliaryCorrectionHours)) {
                        if (auxiliaryCorrectionHours.getNineteenHours().compareTo(auxiliaryOriginalHoursDto.getNineteenHours()) != 0) {
                            auxiliaryOriginalHoursDto.setNineteen(1);
@@ -435,7 +391,7 @@
                    }
                    break;
                case "20":
                    auxiliaryOriginalHoursDto.setTwentyHours(new BigDecimal(objectMap.get("manHours").toString()));
                    auxiliaryOriginalHoursDto.setTwentyHours(Double.parseDouble(objectMap.get("manHours").toString()));
                    if (ObjectUtils.isNotEmpty(auxiliaryCorrectionHours)) {
                        if (auxiliaryCorrectionHours.getTwentyHours().compareTo(auxiliaryOriginalHoursDto.getTwentyHours()) != 0) {
                            auxiliaryOriginalHoursDto.setTwenty(1);
@@ -443,7 +399,7 @@
                    }
                    break;
                case "21":
                    auxiliaryOriginalHoursDto.setTwentyOneHours(new BigDecimal(objectMap.get("manHours").toString()));
                    auxiliaryOriginalHoursDto.setTwentyOneHours(Double.parseDouble(objectMap.get("manHours").toString()));
                    if (ObjectUtils.isNotEmpty(auxiliaryCorrectionHours)) {
                        if (auxiliaryCorrectionHours.getTwentyOneHours().compareTo(auxiliaryOriginalHoursDto.getTwentyOneHours()) != 0) {
                            auxiliaryOriginalHoursDto.setTwentyOne(1);
@@ -451,7 +407,7 @@
                    }
                    break;
                case "22":
                    auxiliaryOriginalHoursDto.setTwentyTwoHours(new BigDecimal(objectMap.get("manHours").toString()));
                    auxiliaryOriginalHoursDto.setTwentyTwoHours(Double.parseDouble(objectMap.get("manHours").toString()));
                    if (ObjectUtils.isNotEmpty(auxiliaryCorrectionHours)) {
                        if (auxiliaryCorrectionHours.getTwentyTwoHours().compareTo(auxiliaryOriginalHoursDto.getTwentyTwoHours()) != 0) {
                            auxiliaryOriginalHoursDto.setTwentyTwo(1);
@@ -459,7 +415,7 @@
                    }
                    break;
                case "23":
                    auxiliaryOriginalHoursDto.setTwentyThreeHours(new BigDecimal(objectMap.get("manHours").toString()));
                    auxiliaryOriginalHoursDto.setTwentyThreeHours(Double.parseDouble(objectMap.get("manHours").toString()));
                    if (ObjectUtils.isNotEmpty(auxiliaryCorrectionHours)) {
                        if (auxiliaryCorrectionHours.getTwentyThreeHours().compareTo(auxiliaryOriginalHoursDto.getTwentyThreeHours()) != 0) {
                            auxiliaryOriginalHoursDto.setTwentyThree(1);
@@ -467,7 +423,7 @@
                    }
                    break;
                case "24":
                    auxiliaryOriginalHoursDto.setTwentyFourHours(new BigDecimal(objectMap.get("manHours").toString()));
                    auxiliaryOriginalHoursDto.setTwentyFourHours(Double.parseDouble(objectMap.get("manHours").toString()));
                    if (ObjectUtils.isNotEmpty(auxiliaryCorrectionHours)) {
                        if (auxiliaryCorrectionHours.getTwentyFourHours().compareTo(auxiliaryOriginalHoursDto.getTwentyFourHours()) != 0) {
                            auxiliaryOriginalHoursDto.setTwentyFour(1);
@@ -475,7 +431,7 @@
                    }
                    break;
                case "25":
                    auxiliaryOriginalHoursDto.setTwentyFiveHours(new BigDecimal(objectMap.get("manHours").toString()));
                    auxiliaryOriginalHoursDto.setTwentyFiveHours(Double.parseDouble(objectMap.get("manHours").toString()));
                    if (ObjectUtils.isNotEmpty(auxiliaryCorrectionHours)) {
                        if (auxiliaryCorrectionHours.getTwentyFiveHours().compareTo(auxiliaryOriginalHoursDto.getTwentyFiveHours()) != 0) {
                            auxiliaryOriginalHoursDto.setTwentyFive(1);
@@ -483,7 +439,7 @@
                    }
                    break;
                case "26":
                    auxiliaryOriginalHoursDto.setTwentySixHours(new BigDecimal(objectMap.get("manHours").toString()));
                    auxiliaryOriginalHoursDto.setTwentySixHours(Double.parseDouble(objectMap.get("manHours").toString()));
                    if (ObjectUtils.isNotEmpty(auxiliaryCorrectionHours)) {
                        if (auxiliaryCorrectionHours.getTwentySixHours().compareTo(auxiliaryOriginalHoursDto.getTwentySixHours()) != 0) {
                            auxiliaryOriginalHoursDto.setTwentySix(1);
@@ -491,7 +447,7 @@
                    }
                    break;
                case "27":
                    auxiliaryOriginalHoursDto.setTwentySevenHours(new BigDecimal(objectMap.get("manHours").toString()));
                    auxiliaryOriginalHoursDto.setTwentySevenHours(Double.parseDouble(objectMap.get("manHours").toString()));
                    if (ObjectUtils.isNotEmpty(auxiliaryCorrectionHours)) {
                        if (auxiliaryCorrectionHours.getTwentySevenHours().compareTo(auxiliaryOriginalHoursDto.getTwentySevenHours()) != 0) {
                            auxiliaryOriginalHoursDto.setTwentySeven(1);
@@ -499,7 +455,7 @@
                    }
                    break;
                case "28":
                    auxiliaryOriginalHoursDto.setTwentyEightHours(new BigDecimal(objectMap.get("manHours").toString()));
                    auxiliaryOriginalHoursDto.setTwentyEightHours(Double.parseDouble(objectMap.get("manHours").toString()));
                    if (ObjectUtils.isNotEmpty(auxiliaryCorrectionHours)) {
                        if (auxiliaryCorrectionHours.getTwentyEightHours().compareTo(auxiliaryOriginalHoursDto.getTwentyEightHours()) != 0) {
                            auxiliaryOriginalHoursDto.setTwentyEight(1);
@@ -507,7 +463,7 @@
                    }
                    break;
                case "29":
                    auxiliaryOriginalHoursDto.setTwentyNineHours(new BigDecimal(objectMap.get("manHours").toString()));
                    auxiliaryOriginalHoursDto.setTwentyNineHours(Double.parseDouble(objectMap.get("manHours").toString()));
                    if (ObjectUtils.isNotEmpty(auxiliaryCorrectionHours)) {
                        if (auxiliaryCorrectionHours.getTwentyNineHours().compareTo(auxiliaryOriginalHoursDto.getTwentyNineHours()) != 0) {
                            auxiliaryOriginalHoursDto.setTwentyNine(1);
@@ -515,7 +471,7 @@
                    }
                    break;
                case "30":
                    auxiliaryOriginalHoursDto.setThirtyHours(new BigDecimal(objectMap.get("manHours").toString()));
                    auxiliaryOriginalHoursDto.setThirtyHours(Double.parseDouble(objectMap.get("manHours").toString()));
                    if (ObjectUtils.isNotEmpty(auxiliaryCorrectionHours)) {
                        if (auxiliaryCorrectionHours.getThirtyHours().compareTo(auxiliaryOriginalHoursDto.getThirtyHours()) != 0) {
                            auxiliaryOriginalHoursDto.setThirty(1);
@@ -523,7 +479,7 @@
                    }
                    break;
                case "31":
                    auxiliaryOriginalHoursDto.setThirtyOneHours(new BigDecimal(objectMap.get("manHours").toString()));
                    auxiliaryOriginalHoursDto.setThirtyOneHours(Double.parseDouble(objectMap.get("manHours").toString()));
                    if (ObjectUtils.isNotEmpty(auxiliaryCorrectionHours)) {
                        if (auxiliaryCorrectionHours.getThirtyOneHours().compareTo(auxiliaryOriginalHoursDto.getThirtyOneHours()) != 0) {
                            auxiliaryOriginalHoursDto.setThirtyOne(1);
@@ -531,42 +487,129 @@
                    }
                    break;
            }
            auxiliaryOriginalHoursDto.setTotal((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getOneHours()) ? auxiliaryOriginalHoursDto.getOneHours() : BigDecimal.ZERO)
                    .add(ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getThreeHours()) ? auxiliaryOriginalHoursDto.getThreeHours() : BigDecimal.ZERO)
                    .add(ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getFourHours()) ? auxiliaryOriginalHoursDto.getFourHours() : BigDecimal.ZERO)
                    .add(ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getFiveHours()) ? auxiliaryOriginalHoursDto.getFiveHours() : BigDecimal.ZERO)
                    .add(ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getSixHours()) ? auxiliaryOriginalHoursDto.getSixHours() : BigDecimal.ZERO)
                    .add(ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getSevenHours()) ? auxiliaryOriginalHoursDto.getSevenHours() : BigDecimal.ZERO)
                    .add(ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getEightHours()) ? auxiliaryOriginalHoursDto.getEightHours() : BigDecimal.ZERO)
                    .add(ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getNineHours()) ? auxiliaryOriginalHoursDto.getNineHours() : BigDecimal.ZERO)
                    .add(ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getTenHours()) ? auxiliaryOriginalHoursDto.getTenHours() : BigDecimal.ZERO)
                    .add(ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getElevenHours()) ? auxiliaryOriginalHoursDto.getElevenHours() : BigDecimal.ZERO)
                    .add(ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getTwelveHours()) ? auxiliaryOriginalHoursDto.getTwelveHours() : BigDecimal.ZERO)
                    .add(ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getThirteenHours()) ? auxiliaryOriginalHoursDto.getThirteenHours() : BigDecimal.ZERO)
                    .add(ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getFourteenHours()) ? auxiliaryOriginalHoursDto.getFourteenHours() : BigDecimal.ZERO)
                    .add(ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getFifteenHours()) ? auxiliaryOriginalHoursDto.getFifteenHours() : BigDecimal.ZERO)
                    .add(ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getSixteenHours()) ? auxiliaryOriginalHoursDto.getSixteenHours() : BigDecimal.ZERO)
                    .add(ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getSeventeenHours()) ? auxiliaryOriginalHoursDto.getSeventeenHours() : BigDecimal.ZERO)
                    .add(ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getEighteenHours()) ? auxiliaryOriginalHoursDto.getEighteenHours() : BigDecimal.ZERO)
                    .add(ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getNineteenHours()) ? auxiliaryOriginalHoursDto.getNineteenHours() : BigDecimal.ZERO)
                    .add(ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getTwentyHours()) ? auxiliaryOriginalHoursDto.getTwentyHours() : BigDecimal.ZERO)
                    .add(ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getTwentyOneHours()) ? auxiliaryOriginalHoursDto.getTwentyOneHours() : BigDecimal.ZERO)
                    .add(ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getTwentyTwoHours()) ? auxiliaryOriginalHoursDto.getTwentyTwoHours() : BigDecimal.ZERO)
                    .add(ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getTwentyThreeHours()) ? auxiliaryOriginalHoursDto.getTwentyThreeHours() : BigDecimal.ZERO)
                    .add(ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getTwentyFourHours()) ? auxiliaryOriginalHoursDto.getTwentyFourHours() : BigDecimal.ZERO)
                    .add(ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getTwentyFiveHours()) ? auxiliaryOriginalHoursDto.getTwentyFiveHours() : BigDecimal.ZERO)
                    .add(ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getTwentySixHours()) ? auxiliaryOriginalHoursDto.getTwentySixHours() : BigDecimal.ZERO)
                    .add(ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getTwentySevenHours()) ? auxiliaryOriginalHoursDto.getTwentySevenHours() : BigDecimal.ZERO)
                    .add(ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getTwentyEightHours()) ? auxiliaryOriginalHoursDto.getTwentyEightHours() : BigDecimal.ZERO)
                    .add(ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getTwentyNineHours()) ? auxiliaryOriginalHoursDto.getTwentyNineHours() : BigDecimal.ZERO)
                    .add(ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getThirtyHours()) ? auxiliaryOriginalHoursDto.getThirtyHours() : BigDecimal.ZERO)
                    .add(ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getThirtyOneHours()) ? auxiliaryOriginalHoursDto.getThirtyOneHours() : BigDecimal.ZERO)
            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)
            );
            auxiliaryOriginalHoursDto.setTotal(auxiliaryOriginalHoursDto.getTotal().setScale(4, RoundingMode.HALF_UP));
            DecimalFormat df = new DecimalFormat("#.####"); // 设定四位小数
            auxiliaryOriginalHoursDto.setTotal(Double.parseDouble(df.format(auxiliaryOriginalHoursDto.getTotal())));
            dtoMap.put(name, auxiliaryOriginalHoursDto);
        }
        return dtoMap;
    }
    /**
     * 合并总工时
     * @param outputWorkHourMap 产量工时
     * @param auxiliaryWorkHourMap 辅助工时
     * @param overtimeWorkHourMap 加班工时
     */
    private Map<String, AuxiliaryOriginalHoursDto> mergeTotal(Map<String, AuxiliaryOriginalHoursDto> outputWorkHourMap,
                                                              Map<String, AuxiliaryOriginalHoursDto> auxiliaryWorkHourMap,
                                                              Map<String, AuxiliaryOriginalHoursDto> overtimeWorkHourMap){
        Map<String, AuxiliaryOriginalHoursDto> totalMap = new HashMap<>();
        for (String userNameKey : outputWorkHourMap.keySet()) {
            //产出工时记录
            AuxiliaryOriginalHoursDto outputWorkHourDTO = outputWorkHourMap.get(userNameKey);
            //总工时记录
            AuxiliaryOriginalHoursDto totalDTO = new AuxiliaryOriginalHoursDto();
            BeanUtils.copyProperties(outputWorkHourDTO, totalDTO);
            totalDTO.setType("总工时");
            //当前人员的辅助工时记录
            AuxiliaryOriginalHoursDto auxiliaryHoursDTO = new AuxiliaryOriginalHoursDto();
            if(!Objects.isNull(auxiliaryWorkHourMap.get(userNameKey))){
                auxiliaryHoursDTO = auxiliaryWorkHourMap.get(userNameKey);
            }
            //当前人员的加班工时记录
            AuxiliaryOriginalHoursDto overtimeHoursDTO = new AuxiliaryOriginalHoursDto();
            if(!Objects.isNull(overtimeWorkHourMap.get(userNameKey))){
                overtimeHoursDTO = overtimeWorkHourMap.get(userNameKey);
            }
            totalDTO.setOneHours(calcWorkHourTotal(outputWorkHourDTO.getOneHours(),auxiliaryHoursDTO.getOneHours(),overtimeHoursDTO.getOneHours()));
            totalDTO.setTwoHours(calcWorkHourTotal(outputWorkHourDTO.getTwoHours(),auxiliaryHoursDTO.getTwoHours(),overtimeHoursDTO.getTwoHours()));
            totalDTO.setThreeHours(calcWorkHourTotal(outputWorkHourDTO.getThreeHours(),auxiliaryHoursDTO.getThreeHours(),overtimeHoursDTO.getThreeHours()));
            totalDTO.setFourHours(calcWorkHourTotal(outputWorkHourDTO.getFourHours(),auxiliaryHoursDTO.getFourHours(),overtimeHoursDTO.getFourHours()));
            totalDTO.setFiveHours(calcWorkHourTotal(outputWorkHourDTO.getFiveHours(),auxiliaryHoursDTO.getFiveHours(),overtimeHoursDTO.getFiveHours()));
            totalDTO.setSixHours(calcWorkHourTotal(outputWorkHourDTO.getSixHours(),auxiliaryHoursDTO.getSixHours(),overtimeHoursDTO.getSixHours()));
            totalDTO.setSevenHours(calcWorkHourTotal(outputWorkHourDTO.getSevenHours(),auxiliaryHoursDTO.getSevenHours(),overtimeHoursDTO.getSevenHours()));
            totalDTO.setEightHours(calcWorkHourTotal(outputWorkHourDTO.getEightHours(),auxiliaryHoursDTO.getEightHours(),overtimeHoursDTO.getEightHours()));
            totalDTO.setNineHours(calcWorkHourTotal(outputWorkHourDTO.getNineHours(),auxiliaryHoursDTO.getNineHours(),overtimeHoursDTO.getNineHours()));
            totalDTO.setTenHours(calcWorkHourTotal(outputWorkHourDTO.getTenHours(),auxiliaryHoursDTO.getTenHours(),overtimeHoursDTO.getTenHours()));
            totalDTO.setElevenHours(calcWorkHourTotal(outputWorkHourDTO.getElevenHours(),auxiliaryHoursDTO.getElevenHours(),overtimeHoursDTO.getElevenHours()));
            totalDTO.setTwelveHours(calcWorkHourTotal(outputWorkHourDTO.getTwelveHours(),auxiliaryHoursDTO.getTwelveHours(),overtimeHoursDTO.getTwelveHours()));
            totalDTO.setThirteenHours(calcWorkHourTotal(outputWorkHourDTO.getThirteenHours(),auxiliaryHoursDTO.getThirteenHours(),overtimeHoursDTO.getThirteenHours()));
            totalDTO.setFourteenHours(calcWorkHourTotal(outputWorkHourDTO.getFourteenHours(),auxiliaryHoursDTO.getFourteenHours(),overtimeHoursDTO.getFourteenHours()));
            totalDTO.setFifteenHours(calcWorkHourTotal(outputWorkHourDTO.getFifteenHours(),auxiliaryHoursDTO.getFifteenHours(),overtimeHoursDTO.getFifteenHours()));
            totalDTO.setSixteenHours(calcWorkHourTotal(outputWorkHourDTO.getSixteenHours(),auxiliaryHoursDTO.getSixteenHours(),overtimeHoursDTO.getSixteenHours()));
            totalDTO.setSeventeenHours(calcWorkHourTotal(outputWorkHourDTO.getSeventeenHours(),auxiliaryHoursDTO.getSeventeenHours(),overtimeHoursDTO.getSeventeenHours()));
            totalDTO.setEighteenHours(calcWorkHourTotal(outputWorkHourDTO.getEighteenHours(),auxiliaryHoursDTO.getEighteenHours(),overtimeHoursDTO.getEighteenHours()));
            totalDTO.setNineteenHours(calcWorkHourTotal(outputWorkHourDTO.getNineteenHours(),auxiliaryHoursDTO.getNineteenHours(),overtimeHoursDTO.getNineteenHours()));
            totalDTO.setTwentyHours(calcWorkHourTotal(outputWorkHourDTO.getTwentyHours(),auxiliaryHoursDTO.getTwentyHours(),overtimeHoursDTO.getTwentyHours()));
            totalDTO.setTwentyOneHours(calcWorkHourTotal(outputWorkHourDTO.getTwentyOneHours(),auxiliaryHoursDTO.getTwentyOneHours(),overtimeHoursDTO.getTwentyOneHours()));
            totalDTO.setTwentyTwoHours(calcWorkHourTotal(outputWorkHourDTO.getTwentyTwoHours(),auxiliaryHoursDTO.getTwentyTwoHours(),overtimeHoursDTO.getTwentyTwoHours()));
            totalDTO.setTwentyThreeHours(calcWorkHourTotal(outputWorkHourDTO.getTwentyThreeHours(),auxiliaryHoursDTO.getTwentyThreeHours(),overtimeHoursDTO.getTwentyThreeHours()));
            totalDTO.setTwentyFourHours(calcWorkHourTotal(outputWorkHourDTO.getTwentyFourHours(),auxiliaryHoursDTO.getTwentyFourHours(),overtimeHoursDTO.getTwentyFourHours()));
            totalDTO.setTwentyFiveHours(calcWorkHourTotal(outputWorkHourDTO.getTwentyFiveHours(),auxiliaryHoursDTO.getTwentyFiveHours(),overtimeHoursDTO.getTwentyFiveHours()));
            totalDTO.setTwentySixHours(calcWorkHourTotal(outputWorkHourDTO.getTwentySixHours(),auxiliaryHoursDTO.getTwentySixHours(),overtimeHoursDTO.getTwentySixHours()));
            totalDTO.setTwentySevenHours(calcWorkHourTotal(outputWorkHourDTO.getTwentySevenHours(),auxiliaryHoursDTO.getTwentySevenHours(),overtimeHoursDTO.getTwentySevenHours()));
            totalDTO.setTwentyEightHours(calcWorkHourTotal(outputWorkHourDTO.getTwentyEightHours(),auxiliaryHoursDTO.getTwentyEightHours(),overtimeHoursDTO.getTwentyEightHours()));
            totalDTO.setTwentyNineHours(calcWorkHourTotal(outputWorkHourDTO.getTwentyNineHours(),auxiliaryHoursDTO.getTwentyNineHours(),overtimeHoursDTO.getTwentyNineHours()));
            totalDTO.setThirtyHours(calcWorkHourTotal(outputWorkHourDTO.getThirtyHours(),auxiliaryHoursDTO.getThirtyHours(),overtimeHoursDTO.getThirtyHours()));
            totalDTO.setThirtyOneHours(calcWorkHourTotal(outputWorkHourDTO.getThirtyOneHours(),auxiliaryHoursDTO.getThirtyOneHours(),overtimeHoursDTO.getThirtyOneHours()));
            totalDTO.setTotal(calcWorkHourTotal(outputWorkHourDTO.getTotal(),auxiliaryHoursDTO.getTotal(),overtimeHoursDTO.getTotal()));
            totalMap.put(userNameKey,totalDTO);
        }
        return totalMap;
    }
    /**
     * 计算总工时
     * @param outputWorkHour 产出工时
     * @param auxiliaryWorkHour 辅助工时
     * @param overtimeWorkHour 加班工时
     * @return
     */
    private double calcWorkHourTotal(Double outputWorkHour,Double auxiliaryWorkHour,Double overtimeWorkHour){
        if(Objects.isNull(outputWorkHour)){
            outputWorkHour = 0.0;
        }
        if(Objects.isNull(auxiliaryWorkHour)){
            auxiliaryWorkHour = 0.0;
        }
        if(Objects.isNull(overtimeWorkHour)){
            overtimeWorkHour = 0.0;
        }
        return outputWorkHour + auxiliaryWorkHour + overtimeWorkHour;
    }
    //合并
@@ -581,55 +624,48 @@
                        AuxiliaryOriginalHoursDto hoursDto = data5.get(key);
                        BeanUtils.copyProperties(hoursDto, auxiliaryOriginalHoursDto);
                        auxiliaryOriginalHoursDto.setType("总工时");
                        auxiliaryOriginalHoursDto.setOneHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getOneHours()) ? auxiliaryOriginalHoursDto.getOneHours() : BigDecimal.ZERO).add(ObjectUtils.isNotEmpty(value.getOneHours()) ? value.getOneHours() : BigDecimal.ZERO));
                        auxiliaryOriginalHoursDto.setTwoHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getTwoHours()) ? auxiliaryOriginalHoursDto.getTwoHours() : BigDecimal.ZERO).add(ObjectUtils.isNotEmpty(value.getTwoHours()) ? value.getTwoHours() : BigDecimal.ZERO));
                        auxiliaryOriginalHoursDto.setThreeHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getThreeHours()) ? auxiliaryOriginalHoursDto.getThreeHours() : BigDecimal.ZERO).add(ObjectUtils.isNotEmpty(value.getThreeHours()) ? value.getThreeHours() : BigDecimal.ZERO));
                        auxiliaryOriginalHoursDto.setFourHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getFourHours()) ? auxiliaryOriginalHoursDto.getFourHours() : BigDecimal.ZERO).add(ObjectUtils.isNotEmpty(value.getFourHours()) ? value.getFourHours() : BigDecimal.ZERO));
                        auxiliaryOriginalHoursDto.setFiveHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getFiveHours()) ? auxiliaryOriginalHoursDto.getFiveHours() : BigDecimal.ZERO).add(ObjectUtils.isNotEmpty(value.getFiveHours()) ? value.getFiveHours() : BigDecimal.ZERO));
                        auxiliaryOriginalHoursDto.setSixHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getSixHours()) ? auxiliaryOriginalHoursDto.getSixHours() : BigDecimal.ZERO).add(ObjectUtils.isNotEmpty(value.getSixHours()) ? value.getSixHours() : BigDecimal.ZERO));
                        auxiliaryOriginalHoursDto.setSevenHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getSevenHours()) ? auxiliaryOriginalHoursDto.getSevenHours() : BigDecimal.ZERO).add(ObjectUtils.isNotEmpty(value.getSevenHours()) ? value.getSevenHours() : BigDecimal.ZERO));
                        auxiliaryOriginalHoursDto.setEightHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getEightHours()) ? auxiliaryOriginalHoursDto.getEightHours() : BigDecimal.ZERO).add(ObjectUtils.isNotEmpty(value.getEightHours()) ? value.getEightHours() : BigDecimal.ZERO));
                        auxiliaryOriginalHoursDto.setNineHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getNineHours()) ? auxiliaryOriginalHoursDto.getNineHours() : BigDecimal.ZERO).add(ObjectUtils.isNotEmpty(value.getNineHours()) ? value.getNineHours() : BigDecimal.ZERO));
                        auxiliaryOriginalHoursDto.setTenHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getTenHours()) ? auxiliaryOriginalHoursDto.getTenHours() : BigDecimal.ZERO).add(ObjectUtils.isNotEmpty(value.getTenHours()) ? value.getTenHours() : BigDecimal.ZERO));
                        auxiliaryOriginalHoursDto.setElevenHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getElevenHours()) ? auxiliaryOriginalHoursDto.getElevenHours() : BigDecimal.ZERO).add(ObjectUtils.isNotEmpty(value.getElevenHours()) ? value.getElevenHours() : BigDecimal.ZERO));
                        auxiliaryOriginalHoursDto.setTwelveHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getTwelveHours()) ? auxiliaryOriginalHoursDto.getTwelveHours() : BigDecimal.ZERO).add(ObjectUtils.isNotEmpty(value.getTwelveHours()) ? value.getTwelveHours() : BigDecimal.ZERO));
                        auxiliaryOriginalHoursDto.setThirteenHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getThirteenHours()) ? auxiliaryOriginalHoursDto.getThirteenHours() : BigDecimal.ZERO).add(ObjectUtils.isNotEmpty(value.getThirteenHours()) ? value.getThirteenHours() : BigDecimal.ZERO));
                        auxiliaryOriginalHoursDto.setFourteenHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getFourteenHours()) ? auxiliaryOriginalHoursDto.getFourteenHours() : BigDecimal.ZERO).add(ObjectUtils.isNotEmpty(value.getFourteenHours()) ? value.getFourteenHours() : BigDecimal.ZERO));
                        auxiliaryOriginalHoursDto.setFifteenHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getFifteenHours()) ? auxiliaryOriginalHoursDto.getFifteenHours() : BigDecimal.ZERO).add(ObjectUtils.isNotEmpty(value.getFifteenHours()) ? value.getFifteenHours() : BigDecimal.ZERO));
                        auxiliaryOriginalHoursDto.setSixteenHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getSixteenHours()) ? auxiliaryOriginalHoursDto.getSixteenHours() : BigDecimal.ZERO).add(ObjectUtils.isNotEmpty(value.getSixteenHours()) ? value.getSixteenHours() : BigDecimal.ZERO));
                        auxiliaryOriginalHoursDto.setSeventeenHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getSeventeenHours()) ? auxiliaryOriginalHoursDto.getSeventeenHours() : BigDecimal.ZERO).add(ObjectUtils.isNotEmpty(value.getSeventeenHours()) ? value.getSeventeenHours() : BigDecimal.ZERO));
                        auxiliaryOriginalHoursDto.setEighteenHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getEighteenHours()) ? auxiliaryOriginalHoursDto.getEighteenHours() : BigDecimal.ZERO).add(ObjectUtils.isNotEmpty(value.getEighteenHours()) ? value.getEighteenHours() : BigDecimal.ZERO));
                        auxiliaryOriginalHoursDto.setNineteenHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getNineteenHours()) ? auxiliaryOriginalHoursDto.getNineteenHours() : BigDecimal.ZERO).add(ObjectUtils.isNotEmpty(value.getNineteenHours()) ? value.getNineteenHours() : BigDecimal.ZERO));
                        auxiliaryOriginalHoursDto.setTwelveHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getTwelveHours()) ? auxiliaryOriginalHoursDto.getTwelveHours() : BigDecimal.ZERO).add(ObjectUtils.isNotEmpty(value.getTwelveHours()) ? value.getTwelveHours() : BigDecimal.ZERO));
                        auxiliaryOriginalHoursDto.setTwentyOneHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getTwentyOneHours()) ? auxiliaryOriginalHoursDto.getTwentyOneHours() : BigDecimal.ZERO).add(ObjectUtils.isNotEmpty(value.getTwentyOneHours()) ? value.getTwentyOneHours() : BigDecimal.ZERO));
                        auxiliaryOriginalHoursDto.setTwentyTwoHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getTwentyTwoHours()) ? auxiliaryOriginalHoursDto.getTwentyTwoHours() : BigDecimal.ZERO).add(ObjectUtils.isNotEmpty(value.getTwentyTwoHours()) ? value.getTwentyTwoHours() : BigDecimal.ZERO));
                        auxiliaryOriginalHoursDto.setTwentyThreeHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getTwentyThreeHours()) ? auxiliaryOriginalHoursDto.getTwentyThreeHours() : BigDecimal.ZERO).add(ObjectUtils.isNotEmpty(value.getTwentyThreeHours()) ? value.getTwentyThreeHours() : BigDecimal.ZERO));
                        BigDecimal v = ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getTwentyFourHours()) ? auxiliaryOriginalHoursDto.getTwentyFourHours() : BigDecimal.ZERO;
                        BigDecimal v1 = ObjectUtils.isNotEmpty(value.getTwentyFourHours()) ? value.getTwentyFourHours() : BigDecimal.ZERO;
                        BigDecimal v2 = v.add(v1);
                        auxiliaryOriginalHoursDto.setTwentyFourHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getTwentyFourHours()) ? auxiliaryOriginalHoursDto.getTwentyFourHours() : BigDecimal.ZERO).add(ObjectUtils.isNotEmpty(value.getTwentyFourHours()) ? value.getTwentyFourHours() : BigDecimal.ZERO));
                        auxiliaryOriginalHoursDto.setTwentyFiveHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getTwentyFiveHours()) ? auxiliaryOriginalHoursDto.getTwentyFiveHours() : BigDecimal.ZERO).add(ObjectUtils.isNotEmpty(value.getTwentyFiveHours()) ? value.getTwentyFiveHours() : BigDecimal.ZERO));
                        auxiliaryOriginalHoursDto.setTwentySixHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getTwentySixHours()) ? auxiliaryOriginalHoursDto.getTwentySixHours() : BigDecimal.ZERO).add(ObjectUtils.isNotEmpty(value.getTwentySixHours()) ? value.getTwentySixHours() : BigDecimal.ZERO));
                        auxiliaryOriginalHoursDto.setTwentySevenHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getTwentySevenHours()) ? auxiliaryOriginalHoursDto.getTwentySevenHours() : BigDecimal.ZERO).add(ObjectUtils.isNotEmpty(value.getTwentySevenHours()) ? value.getTwentySevenHours() : BigDecimal.ZERO));
                        auxiliaryOriginalHoursDto.setTwentyEightHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getTwentyEightHours()) ? auxiliaryOriginalHoursDto.getTwentyEightHours() : BigDecimal.ZERO).add(ObjectUtils.isNotEmpty(value.getTwentyEightHours()) ? value.getTwentyEightHours() : BigDecimal.ZERO));
                        auxiliaryOriginalHoursDto.setTwentyNineHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getTwentyNineHours()) ? auxiliaryOriginalHoursDto.getTwentyNineHours() : BigDecimal.ZERO).add(ObjectUtils.isNotEmpty(value.getTwentyNineHours()) ? value.getTwentyNineHours() : BigDecimal.ZERO));
                        auxiliaryOriginalHoursDto.setThirtyHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getThirtyHours()) ? auxiliaryOriginalHoursDto.getThirtyHours() : BigDecimal.ZERO).add(ObjectUtils.isNotEmpty(value.getThirtyHours()) ? value.getThirtyHours() : BigDecimal.ZERO));
                        auxiliaryOriginalHoursDto.setThirtyOneHours((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getThirtyOneHours()) ? auxiliaryOriginalHoursDto.getThirtyOneHours() : BigDecimal.ZERO).add(ObjectUtils.isNotEmpty(value.getThirtyOneHours()) ? value.getThirtyOneHours() : BigDecimal.ZERO));
                        auxiliaryOriginalHoursDto.setTotal((ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getTotal()) ? auxiliaryOriginalHoursDto.getTotal() : BigDecimal.ZERO).add(ObjectUtils.isNotEmpty(value.getTotal()) ? value.getTotal() : BigDecimal.ZERO));
                        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));
                        double v = ObjectUtils.isNotEmpty(auxiliaryOriginalHoursDto.getTwentyFourHours()) ? auxiliaryOriginalHoursDto.getTwentyFourHours() : 0;
                        double v1 = ObjectUtils.isNotEmpty(value.getTwentyFourHours()) ? value.getTwentyFourHours() : 0;
                        double v2 = v + v1;
                        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 = data5.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);
            }
        }
    }
}
performance-server/src/main/java/com/ruoyi/performance/service/impl/AuxiliaryOutputWorkingHoursServiceImpl.java
@@ -4,13 +4,18 @@
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet;
import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
import com.alibaba.fastjson.JSONArray;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.core.domain.entity.User;
import com.ruoyi.common.utils.QueryWrappers;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.performance.dto.AuxiliaryOutputWorkingHoursDto;
import com.ruoyi.performance.dto.AuxiliaryWorkingHoursDayDto;
import com.ruoyi.performance.mapper.AuxiliaryOutputWorkingHoursMapper;
@@ -27,10 +32,7 @@
import java.io.IOException;
import java.math.BigDecimal;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.stream.Collectors;
/**
@@ -53,118 +55,184 @@
    @Resource
    UserMapper userMapper;
    @Override
    public IPage<AuxiliaryOutputWorkingHoursDto> selectAuxiliaryOutputWorkingHours(Page page, AuxiliaryOutputWorkingHoursDto auxiliaryOutputWorkingHoursDto) {
        auxiliaryOutputWorkingHoursDto.setWeekDay(weekConvert(StringUtils.isNotEmpty(auxiliaryOutputWorkingHoursDto.getWeekDay()) ? auxiliaryOutputWorkingHoursDto.getWeekDay() : ""));
        String dates = auxiliaryOutputWorkingHoursDto.getDateTime();
        String week = auxiliaryOutputWorkingHoursDto.getWeek();
        auxiliaryOutputWorkingHoursDto.setDateTime(null);
        auxiliaryOutputWorkingHoursDto.setWeek(null);
        Map<String, Object> map = new HashMap<>();
        List<Integer> ids = new ArrayList<>();
        if (ids.size() == 0) {
            ids = null;
        }
        //判断组长,组员,管理员权限
        User user = userMapper.selectById(Integer.parseInt(SecurityUtils.getLoginUser().getUser().getUserId().toString()));
        IPage<AuxiliaryOutputWorkingHoursDto> auxiliaryOutputWorkingHoursDtoIPage = null;
        if (ObjectUtils.isNotEmpty(dates) && ObjectUtils.isNotEmpty(week)) {
            String[] split = dates.replaceAll("\\[", "").replaceAll("]", "").replaceAll("\"", "").split(",");
            String[] weeks = week.replaceAll("\\[", "").replaceAll("]", "").replaceAll("\"", "").split(",");
            IPage<AuxiliaryOutputWorkingHoursDto> auxiliaryOutputWorkingHoursDtoIPage = auxiliaryOutputWorkingHoursMapper.selectAuxiliaryOutputWorkingHours(page,
             auxiliaryOutputWorkingHoursDtoIPage = auxiliaryOutputWorkingHoursMapper.selectAuxiliaryOutputWorkingHours(page,
                    QueryWrappers.queryWrappers(auxiliaryOutputWorkingHoursDto)
                            .ge("date_time", split[0]).le("date_time", split[1] + " 23:59:59")
                            .ge("week", weeks[0]).le("week", weeks[1]), ids);
            for (AuxiliaryOutputWorkingHoursDto record : auxiliaryOutputWorkingHoursDtoIPage.getRecords()) {
                record.setDateTime(record.getDateTime().substring(0,10));
            }
            return auxiliaryOutputWorkingHoursDtoIPage ;
            map.put("body",auxiliaryOutputWorkingHoursDtoIPage );
        } else if (ObjectUtils.isNotEmpty(dates) && ObjectUtils.isEmpty(week)) {
            String[] split = dates.replaceAll("\\[", "").replaceAll("]", "").replaceAll("\"", "").split(",");
            IPage<AuxiliaryOutputWorkingHoursDto> auxiliaryOutputWorkingHoursDtoIPage = auxiliaryOutputWorkingHoursMapper.selectAuxiliaryOutputWorkingHours(page,
            auxiliaryOutputWorkingHoursDtoIPage = auxiliaryOutputWorkingHoursMapper.selectAuxiliaryOutputWorkingHours(page,
                    QueryWrappers.queryWrappers(auxiliaryOutputWorkingHoursDto)
                            .ge("date_time", split[0]).le("date_time", split[1] + " 23:59:59"), ids);
            for (AuxiliaryOutputWorkingHoursDto record : auxiliaryOutputWorkingHoursDtoIPage.getRecords()) {
                record.setDateTime(record.getDateTime().substring(0,10));
            }
            return auxiliaryOutputWorkingHoursDtoIPage ;
            map.put("body",auxiliaryOutputWorkingHoursDtoIPage );
        } else if (ObjectUtils.isEmpty(dates) && ObjectUtils.isNotEmpty(week)) {
            String[] weeks = week.replaceAll("\\[", "").replaceAll("]", "").replaceAll("\"", "").split(",");
            IPage<AuxiliaryOutputWorkingHoursDto> auxiliaryOutputWorkingHoursDtoIPage = auxiliaryOutputWorkingHoursMapper.selectAuxiliaryOutputWorkingHours(page,
             auxiliaryOutputWorkingHoursDtoIPage = auxiliaryOutputWorkingHoursMapper.selectAuxiliaryOutputWorkingHours(page,
                    QueryWrappers.queryWrappers(auxiliaryOutputWorkingHoursDto)
                            .ge("week", weeks[0]).le("week", weeks[1]), ids);
            for (AuxiliaryOutputWorkingHoursDto record : auxiliaryOutputWorkingHoursDtoIPage.getRecords()) {
                record.setDateTime(record.getDateTime().substring(0,10));
            }
            return auxiliaryOutputWorkingHoursDtoIPage ;
            map.put("body", auxiliaryOutputWorkingHoursDtoIPage);
        } else {
            IPage<AuxiliaryOutputWorkingHoursDto> auxiliaryOutputWorkingHoursDtoIPage = auxiliaryOutputWorkingHoursMapper.selectAuxiliaryOutputWorkingHours(page, QueryWrappers.queryWrappers(auxiliaryOutputWorkingHoursDto), ids);
            auxiliaryOutputWorkingHoursDtoIPage = auxiliaryOutputWorkingHoursMapper.selectAuxiliaryOutputWorkingHours(page, QueryWrappers.queryWrappers(auxiliaryOutputWorkingHoursDto), ids);
            for (AuxiliaryOutputWorkingHoursDto record : auxiliaryOutputWorkingHoursDtoIPage.getRecords()) {
                record.setDateTime(record.getDateTime().substring(0,10));
            }
        }
            return auxiliaryOutputWorkingHoursDtoIPage ;
        }
    }
    //统计产量工时汇总和辅助工时汇总
    @Override
    public Map<String, Object> collectWorkingHours(AuxiliaryOutputWorkingHoursDto auxiliaryOutputWorkingHoursDto) {
        AuxiliaryOutputWorkingHours outputWorkingHours = new AuxiliaryOutputWorkingHours();
        AuxiliaryWorkingHoursDay workingHoursDay = new AuxiliaryWorkingHoursDay();
        List<Integer> ids = new ArrayList<>();
        if (ObjectUtils.isNotEmpty(auxiliaryOutputWorkingHoursDto.getWeekDay())){
            outputWorkingHours.setWeekDay(auxiliaryOutputWorkingHoursDto.getWeekDay());
            workingHoursDay.setWeekDay(auxiliaryOutputWorkingHoursDto.getWeekDay());
        }
        if (ObjectUtils.isNotEmpty(auxiliaryOutputWorkingHoursDto.getName())){
            List<User> user = userMapper.selectList(Wrappers.<User>lambdaQuery().like(User::getName, auxiliaryOutputWorkingHoursDto.getName()));
            ids.addAll(user.stream().map(User::getId).collect(Collectors.toList()));
        }
        String dates = auxiliaryOutputWorkingHoursDto.getDateTime();
        auxiliaryOutputWorkingHoursDto.setDateTime(null);
        // 返回的结果
        Map<String, Object> map = new HashMap<>();
        BigDecimal sumOutputWorkTime = BigDecimal.ZERO;
        BigDecimal sumApprovedWorkingHour = BigDecimal.ZERO;
        //判断是组长还是组员还是管理员
        List<AuxiliaryOutputWorkingHours> auxiliaryOutputWorkingHours = new ArrayList<>();
        List<AuxiliaryWorkingHoursDay> auxiliaryWorkingHoursDays = new ArrayList<>();
        if (ids.size() == 0) {
            ids=null;
        // 判断当前人的权限 是否可查看多人
        List<Integer> ids = getCurrentGroupUserIds(StringUtils.isNotEmpty(auxiliaryOutputWorkingHoursDto.getName()) ? auxiliaryOutputWorkingHoursDto.getName() : "");
        String dateTime = auxiliaryOutputWorkingHoursDto.getDateTime();
        String startTime = "";
        String endTime = "";
        if(StringUtils.isNotEmpty(dateTime)) {
            List<String> list = JSONArray.parseArray(dateTime, String.class);
            startTime = list.get(0)+ " 00:00:00";
            endTime = list.get(1)+ " 23:59:59";
        }
        if (ObjectUtils.isNotEmpty(dates)) {
            String[] split = dates.replaceAll("\\[", "").replaceAll("]", "").replaceAll("\"", "").split(",");
            //统计当前用户的产品工时
            auxiliaryOutputWorkingHours = auxiliaryOutputWorkingHoursMapper.selectLists(QueryWrappers.queryWrappers(outputWorkingHours)
                    .ge("date_time", split[0])
                    .le("date_time", split[1] + " 23:59:59"),ids);
            //统计当前用户的辅助工时
            auxiliaryWorkingHoursDays = auxiliaryWorkingHoursDayMapper.selectLists(QueryWrappers.queryWrappers(workingHoursDay)
                    .eq("state","已批准")
                    .ge("date_time", split[0])
                    .le("date_time", split[1] + " 23:59:59"),ids);
        }else if (ObjectUtils.isNotEmpty(auxiliaryOutputWorkingHoursDto.getWeekDay())){
            //统计当前用户的产品工时
            auxiliaryOutputWorkingHours = auxiliaryOutputWorkingHoursMapper.selectLists(QueryWrappers.queryWrappers(outputWorkingHours),ids);
            //统计当前用户的辅助工时
            auxiliaryWorkingHoursDays = auxiliaryWorkingHoursDayMapper.selectLists(QueryWrappers.queryWrappers(workingHoursDay).eq("state","已批准"),ids);
        String weekConvert = weekConvert(StringUtils.isNotEmpty(auxiliaryOutputWorkingHoursDto.getWeekDay()) ? auxiliaryOutputWorkingHoursDto.getWeekDay()  : ""  ); // 周次转换
        // 根据条件获取数据
        List<AuxiliaryOutputWorkingHours> auxiliaryOutputWorkingHours = auxiliaryOutputWorkingHoursMapper.selectList(new QueryWrapper<AuxiliaryOutputWorkingHours>()
                .in(CollectionUtils.isNotEmpty(ids), "check_id", ids)
                .like(StringUtils.isNotBlank(auxiliaryOutputWorkingHoursDto.getWeekDay()), "week_day", weekConvert)
                .between(StringUtils.isNotEmpty(dateTime),"date_time", startTime, endTime));
        // 1.产量工时汇总
        // 根据委托编号、样品编号、工时分组 来进行分组统计
        // 加班的工时汇总
        BigDecimal overTime = BigDecimal.ZERO;
        // 过滤出加班的工时
        List<AuxiliaryOutputWorkingHours> overFilter = auxiliaryOutputWorkingHours.stream()
                .filter(item -> Objects.nonNull(item.getOvertimeOrderNo()) && StringUtils.isNotEmpty(item.getOvertimeOrderNo()))
                .collect(Collectors.toList());
        Map<String, List<AuxiliaryOutputWorkingHours>> collect = overFilter.stream()
                .collect(Collectors.groupingBy(item -> item.getOvertimeOrderNo() + "@" + item.getSample() + "@" + item.getManHourGroup()));
        Iterator<Map.Entry<String, List<AuxiliaryOutputWorkingHours>>> iterator = collect.entrySet().iterator();
        while (iterator.hasNext()) {
            Map.Entry<String, List<AuxiliaryOutputWorkingHours>> entry = iterator.next();
            // 同一分组下的只需要算一次
            overTime = add(overTime, BigDecimal.valueOf(entry.getValue().get(0).getOvertimeWorkTime()));
        }
        else {
            auxiliaryOutputWorkingHours = auxiliaryOutputWorkingHoursMapper.selectListByIds(ids);
            auxiliaryWorkingHoursDays = auxiliaryWorkingHoursDayMapper.selectListByIds(ids);
        // 非加班的工时汇总
        BigDecimal workTime = BigDecimal.ZERO;
        List<AuxiliaryOutputWorkingHours> workFilter = auxiliaryOutputWorkingHours.stream()
                .filter(item -> Objects.nonNull(item.getOrderNo()) && StringUtils.isNotEmpty(item.getOrderNo()))
                .collect(Collectors.toList());
        Map<String, List<AuxiliaryOutputWorkingHours>> collect1 = workFilter.stream()
                .collect(Collectors.groupingBy(item -> item.getOrderNo() + "@" + item.getSample() + "@" + item.getManHourGroup()));
        Iterator<Map.Entry<String, List<AuxiliaryOutputWorkingHours>>> iterator1 = collect1.entrySet().iterator();
        while (iterator1.hasNext()) {
            Map.Entry<String, List<AuxiliaryOutputWorkingHours>> entry = iterator1.next();
            workTime = add(workTime, BigDecimal.valueOf(entry.getValue().get(0).getOutputWorkTime()));
        }
        if (ObjectUtils.isNotEmpty(auxiliaryOutputWorkingHours)) {
            Map<String, BigDecimal> sumMap = new HashMap<>();
            for (AuxiliaryOutputWorkingHours auxiliaryOutputWorkingHour : auxiliaryOutputWorkingHours) {
                if (!sumMap.containsKey(auxiliaryOutputWorkingHour.getManHourGroup()+auxiliaryOutputWorkingHour.getOrderNo()+auxiliaryOutputWorkingHour.getSample())) {
                    sumMap.put(auxiliaryOutputWorkingHour.getManHourGroup()+auxiliaryOutputWorkingHour.getOrderNo()+auxiliaryOutputWorkingHour.getSample(), auxiliaryOutputWorkingHour.getOutputWorkTime());
        BigDecimal outPutWorkTime = add(overTime, workTime);
        // 2.辅助工时汇总
        BigDecimal dayWorkTime = BigDecimal.ZERO;
        List<AuxiliaryWorkingHoursDay> dayList = auxiliaryWorkingHoursDayMapper.selectList(new QueryWrapper<AuxiliaryWorkingHoursDay>()
                .in(CollectionUtils.isNotEmpty(ids), "name_user", ids)
                .like(StringUtils.isNotBlank(auxiliaryOutputWorkingHoursDto.getWeekDay()), "week_day", auxiliaryOutputWorkingHoursDto.getWeekDay())
                .eq(StringUtils.isNotEmpty(auxiliaryOutputWorkingHoursDto.getState()), "state", auxiliaryOutputWorkingHoursDto.getState())
                .between(StringUtils.isNotEmpty(dateTime),"date_time", startTime, endTime));
        for (AuxiliaryWorkingHoursDay a  : dayList) {
            if(ObjectUtils.isNull(a.getReviewerNonproductiveTime())) {
                dayWorkTime = add(dayWorkTime, BigDecimal.ZERO);
            }else {
                dayWorkTime = add(dayWorkTime, BigDecimal.valueOf(a.getReviewerNonproductiveTime()));
                }
            }
            sumOutputWorkTime = sumMap.values().stream().reduce(BigDecimal.ZERO, BigDecimal::add);
        }
        map.put("产量工时汇总", sumOutputWorkTime);
        if (ObjectUtils.isNotEmpty(auxiliaryWorkingHoursDays)) {
            for (AuxiliaryWorkingHoursDay auxiliaryWorkingHoursDay : auxiliaryWorkingHoursDays) {
//                sumApprovedWorkingHour = sumApprovedWorkingHour.add(auxiliaryWorkingHoursDay.getReviewerNonproductiveTime());//复核工时
            }
        }
        map.put("辅助工时汇总", sumApprovedWorkingHour);
        map.put("产量工时汇总", outPutWorkTime);
        map.put("辅助工时汇总", dayWorkTime);
        return map;
    }
    public  BigDecimal add(BigDecimal a, BigDecimal b){
        return a.add(b);
    }
    // 周次转换
    public String weekConvert(String week){
        String weekDay = "";
        switch (week) {
            case "1":
                weekDay = "周一";
                break;
            case "2":
                weekDay = "周二";
                break;
            case "3":
                weekDay = "周三";
                break;
            case "4":
                weekDay = "周四";
                break;
            case "5":
                weekDay = "周五";
                break;
            case "6":
                weekDay = "周六";
                break;
            case "0":
                weekDay = "周日";
                break;
        }
        return weekDay;
    }
    /**
     * 获取当前用户组织的用户id
     * @return
     */
    private List<Integer> getCurrentGroupUserIds(){
        return getCurrentGroupUserIds("");
    }
    private List<Integer> getCurrentGroupUserIds(String name){
        List<Integer> ids = new ArrayList<>();
        //判断是组长还是组员还是管理员,根据roleId(7:检验员,8:检验组长)
        Integer userId = Integer.parseInt(SecurityUtils.getLoginUser().getUser().getUserId().toString());
        User user = userMapper.selectById(userId);
        //管理员(不添加限制条件所有人都可以看)
        //不是组长
        return ids;
    }
    //导出
@@ -172,11 +240,25 @@
    public void exportWorkingHours(HttpServletResponse response) throws IOException {
        List<AuxiliaryOutputWorkingHoursDto> auxiliaryOutputWorkingHoursDtos = new ArrayList<>();
        List<AuxiliaryWorkingHoursDayDto> auxiliaryWorkingHoursDayDtos = new ArrayList<>();
        List<Integer> ids = new ArrayList<>();
        List<Integer> ids = getCurrentGroupUserIds();
        //查询辅助工时
        auxiliaryWorkingHoursDayDtos = auxiliaryWorkingHoursDayMapper.selectDataByUser(ids);
        //查询统计工时
        auxiliaryOutputWorkingHoursDtos = auxiliaryOutputWorkingHoursMapper.selectDataByUser(ids);
        auxiliaryOutputWorkingHoursDtos = auxiliaryOutputWorkingHoursMapper.selectDataByUser(ids).stream().map(item -> {
            if(Objects.isNull(item.getOvertimeWorkTime())) {
                item.setOvertimeWorkTime((double)0);
            }
            if(Objects.isNull(item.getOvertimeAmount())) {
                item.setOvertimeAmount(0);
            }
            if(Objects.isNull(item.getWorkTime())) {
                item.setWorkTime((double)0);
            }
            if(Objects.isNull(item.getAmount())) {
                item.setAmount(0);
            }
            return item;
        }).collect(Collectors.toList());
        response.setContentType("application/vnd.ms-excel");
        response.setCharacterEncoding("UTF-8");
        // 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系
@@ -185,72 +267,10 @@
        try {
            // 新建ExcelWriter
            ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()).build();
            WriteSheet mainSheet = EasyExcel.writerSheet(0, "辅助工时导出").head(AuxiliaryWorkingHoursDayDto.class).build();
            excelWriter.write(auxiliaryWorkingHoursDayDtos, mainSheet);
            WriteSheet mainSheet1 = EasyExcel.writerSheet(1, "产量工时导出").head(AuxiliaryOutputWorkingHoursDto.class).build();
            excelWriter.write(auxiliaryOutputWorkingHoursDtos, mainSheet1);
            // 关闭流
            excelWriter.finish();
        } catch (IOException e) {
            throw new RuntimeException("导出失败");
        }
    }
    /**
     * 导出产量工时
     * @param response
     */
    @Override
    public void exportOutputHours(AuxiliaryOutputWorkingHoursDto auxiliaryOutputWorkingHoursDto, HttpServletResponse response) {
        //查询导出的费用统计数据
        String dates = auxiliaryOutputWorkingHoursDto.getDateTime();
        String week = auxiliaryOutputWorkingHoursDto.getWeek();
        auxiliaryOutputWorkingHoursDto.setDateTime(null);
        auxiliaryOutputWorkingHoursDto.setWeek(null);
        List<Integer> ids = new ArrayList<>();
        String name = auxiliaryOutputWorkingHoursDto.getName();
        if (ObjectUtils.isNotEmpty(name)) {
            ids.addAll(userMapper.selectList(Wrappers.<User>lambdaQuery().like(User::getName, name)).stream().map(User::getId).collect(Collectors.toList()));
        }
        List<AuxiliaryOutputWorkingHoursDto> auxiliaryOutputWorkingHoursDtoIPage = new ArrayList<>();
        if (ObjectUtils.isNotEmpty(dates) && ObjectUtils.isNotEmpty(week)) {
            String[] split = dates.replaceAll("\\[", "").replaceAll("]", "").replaceAll("\"", "").split(",");
            String[] weeks = week.replaceAll("\\[", "").replaceAll("]", "").replaceAll("\"", "").split(",");
            auxiliaryOutputWorkingHoursDtoIPage = auxiliaryOutputWorkingHoursMapper.selectAuxiliaryOutputWorkingHoursList(QueryWrappers.queryWrappers(auxiliaryOutputWorkingHoursDto)
                            .ge("date_time", split[0]).le("date_time", split[1] + " 23:59:59")
                            .ge("week", weeks[0]).le("week", weeks[1]), ids);
        } else if (ObjectUtils.isNotEmpty(dates) && ObjectUtils.isEmpty(week)) {
            String[] split = dates.replaceAll("\\[", "").replaceAll("]", "").replaceAll("\"", "").split(",");
            auxiliaryOutputWorkingHoursDtoIPage = auxiliaryOutputWorkingHoursMapper.selectAuxiliaryOutputWorkingHoursList(QueryWrappers.queryWrappers(auxiliaryOutputWorkingHoursDto)
                            .ge("date_time", split[0]).le("date_time", split[1] + " 23:59:59"), ids);
        } else if (ObjectUtils.isEmpty(dates) && ObjectUtils.isNotEmpty(week)) {
            String[] weeks = week.replaceAll("\\[", "").replaceAll("]", "").replaceAll("\"", "").split(",");
            auxiliaryOutputWorkingHoursDtoIPage = auxiliaryOutputWorkingHoursMapper.selectAuxiliaryOutputWorkingHoursList(QueryWrappers.queryWrappers(auxiliaryOutputWorkingHoursDto)
                            .ge("week", weeks[0]).le("week", weeks[1]), ids);
        } else {
            auxiliaryOutputWorkingHoursDtoIPage = auxiliaryOutputWorkingHoursMapper.selectAuxiliaryOutputWorkingHoursList(QueryWrappers.queryWrappers(auxiliaryOutputWorkingHoursDto), ids);
        }
        try {
            response.setContentType("application/vnd.ms-excel");
            response.setCharacterEncoding("UTF-8");
            // 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系
            String fileName = URLEncoder.encode("产量工时信息导出", "UTF-8");
            response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
            //新建ExcelWriter
            ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()).build();
            //获取sheet0对象
            WriteSheet mainSheet = EasyExcel.writerSheet(0, "产量工时信息导出").head(AuxiliaryOutputWorkingHoursDto.class).build();
            //向sheet0写入数据 传入空list这样只导出表头
            excelWriter.write(auxiliaryOutputWorkingHoursDtoIPage, mainSheet);
            //关闭流
            excelWriter.finish();
        } catch (IOException e) {
performance-server/src/main/java/com/ruoyi/performance/service/impl/AuxiliaryWorkingHoursDayServiceImpl.java
@@ -1,41 +1,45 @@
package com.ruoyi.performance.service.impl;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
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.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
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.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.core.domain.entity.User;
import com.ruoyi.common.exception.base.BaseException;
import com.ruoyi.common.utils.QueryWrappers;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.framework.exception.ErrorException;
import com.ruoyi.performance.dto.AuxiliaryWorkingHoursDayDto;
import com.ruoyi.performance.dto.HoursDay;
import com.ruoyi.performance.mapper.AuxiliaryWorkingHoursDayMapper;
import com.ruoyi.performance.mapper.AuxiliaryWorkingHoursMapper;
import com.ruoyi.performance.mapper.PerformanceShiftMapper;
import com.ruoyi.performance.mapper.ShiftTimeMapper;
import com.ruoyi.performance.pojo.AuxiliaryWorkingHours;
import com.ruoyi.performance.pojo.AuxiliaryWorkingHoursDay;
import com.ruoyi.performance.pojo.PerformanceShift;
import com.ruoyi.performance.pojo.ShiftTime;
import com.ruoyi.performance.service.AuxiliaryWorkingHoursDayService;
import com.ruoyi.system.mapper.SysRoleMapper;
import com.ruoyi.system.mapper.SysUserRoleMapper;
import com.ruoyi.system.mapper.UserMapper;
import com.ruoyi.system.service.ISysDictTypeService;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.math3.analysis.function.Power;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.net.URLEncoder;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.stream.Collectors;
/**
@@ -55,11 +59,25 @@
    @Resource
    AuxiliaryWorkingHoursMapper auxiliaryWorkingHoursMapper;
    @Resource
    UserMapper userMapper;
    @Resource
    private SysRoleMapper roleMapper;
    @Resource
    private SysUserRoleMapper userRoleMapper;
    @Resource
    PerformanceShiftMapper performanceShiftMapper;
    @Resource
    private ISysDictTypeService dictTypeService;
    @Resource
    private ShiftTimeMapper shiftTimeMapper;
    @Override
    public IPage<AuxiliaryWorkingHoursDayDto> selectAuxiliaryWorkingHoursDay(Page page, AuxiliaryWorkingHoursDayDto auxiliaryWorkingHoursDayDto) {
@@ -67,48 +85,45 @@
        String week = auxiliaryWorkingHoursDayDto.getWeek();
        auxiliaryWorkingHoursDayDto.setDateTime(null);
        auxiliaryWorkingHoursDayDto.setWeek(null);
        Map<String, Object> map = new HashMap<>();
        List<Integer> ids = new ArrayList<>();
        if (ids.size() == 0) {
            ids = null;
        }
        IPage<AuxiliaryWorkingHoursDayDto> auxiliaryWorkingHoursDayDtoIPage = null;
        if (ObjectUtils.isNotEmpty(dates) && ObjectUtils.isNotEmpty(week)) {
            String[] split = dates.replaceAll("\\[", "").replaceAll("]", "").replaceAll("\"", "").split(",");
            String[] weeks = week.replaceAll("\\[", "").replaceAll("]", "").replaceAll("\"", "").split(",");
            IPage<AuxiliaryWorkingHoursDayDto> auxiliaryWorkingHoursDayDtoIPage = auxiliaryWorkingHoursDayMapper.selectAuxiliaryWorkingHoursDay(page,
            auxiliaryWorkingHoursDayDtoIPage = auxiliaryWorkingHoursDayMapper.selectAuxiliaryWorkingHoursDay(page,
                    QueryWrappers.queryWrappers(auxiliaryWorkingHoursDayDto)
                            .ge("date_time", split[0]).le("date_time", split[1] + " 23:59:59")
                            .ge("week", weeks[0]).le("week", weeks[1]), ids);
            for (AuxiliaryWorkingHoursDayDto record : auxiliaryWorkingHoursDayDtoIPage.getRecords()) {
                record.setDateTime(record.getDateTime().substring(0, 10));
            }
            return auxiliaryWorkingHoursDayDtoIPage;
        } else if (ObjectUtils.isNotEmpty(dates) && ObjectUtils.isEmpty(week)) {
            String[] split = dates.replaceAll("\\[", "").replaceAll("]", "").replaceAll("\"", "").split(",");
            IPage<AuxiliaryWorkingHoursDayDto> auxiliaryWorkingHoursDayDtoIPage = auxiliaryWorkingHoursDayMapper.selectAuxiliaryWorkingHoursDay(page,
            auxiliaryWorkingHoursDayDtoIPage = auxiliaryWorkingHoursDayMapper.selectAuxiliaryWorkingHoursDay(page,
                    QueryWrappers.queryWrappers(auxiliaryWorkingHoursDayDto)
                            .ge("date_time", split[0]).le("date_time", split[1] + " 23:59:59"), ids);
            for (AuxiliaryWorkingHoursDayDto record : auxiliaryWorkingHoursDayDtoIPage.getRecords()) {
                record.setDateTime(record.getDateTime().substring(0, 10));
            }
            return auxiliaryWorkingHoursDayDtoIPage;
        } else if (ObjectUtils.isEmpty(dates) && ObjectUtils.isNotEmpty(week)) {
            String[] weeks = week.replaceAll("\\[", "").replaceAll("]", "").replaceAll("\"", "").split(",");
            IPage<AuxiliaryWorkingHoursDayDto> auxiliaryWorkingHoursDayDtoIPage = auxiliaryWorkingHoursDayMapper.selectAuxiliaryWorkingHoursDay(page,
            auxiliaryWorkingHoursDayDtoIPage = auxiliaryWorkingHoursDayMapper.selectAuxiliaryWorkingHoursDay(page,
                    QueryWrappers.queryWrappers(auxiliaryWorkingHoursDayDto)
                            .ge("week", weeks[0]).le("week", weeks[1]), ids);
            for (AuxiliaryWorkingHoursDayDto record : auxiliaryWorkingHoursDayDtoIPage.getRecords()) {
                record.setDateTime(record.getDateTime().substring(0, 10));
            }
            return auxiliaryWorkingHoursDayDtoIPage;
        } else {
            IPage<AuxiliaryWorkingHoursDayDto> auxiliaryWorkingHoursDayDtoIPage = auxiliaryWorkingHoursDayMapper.selectAuxiliaryWorkingHoursDay(page, QueryWrappers.queryWrappers(auxiliaryWorkingHoursDayDto), ids);
            auxiliaryWorkingHoursDayDtoIPage = auxiliaryWorkingHoursDayMapper.selectAuxiliaryWorkingHoursDay(page, QueryWrappers.queryWrappers(auxiliaryWorkingHoursDayDto), ids);
            for (AuxiliaryWorkingHoursDayDto record : auxiliaryWorkingHoursDayDtoIPage.getRecords()) {
                record.setDateTime(record.getDateTime().substring(0, 10));
            }
            return auxiliaryWorkingHoursDayDtoIPage;
        }
        return auxiliaryWorkingHoursDayDtoIPage;
    }
    //根据编号查询辅助工时配置信息
@@ -117,7 +132,7 @@
        //根据填写的编号查询辅助工时配置
        AuxiliaryWorkingHours auxiliaryWorkingHours = auxiliaryWorkingHoursMapper.selectOne(Wrappers.<AuxiliaryWorkingHours>lambdaQuery().eq(AuxiliaryWorkingHours::getNumber, number));
        if (ObjectUtils.isEmpty(auxiliaryWorkingHours)) {
            throw new BaseException("该编号没有对应的辅助工时配置");
            throw new ErrorException("该编号没有对应的辅助工时配置");
        }
        AuxiliaryWorkingHoursDay auxiliaryWorkingHoursDay = new AuxiliaryWorkingHoursDay();
        BeanUtils.copyProperties(auxiliaryWorkingHours, auxiliaryWorkingHoursDay);
@@ -127,23 +142,134 @@
    //录入数据(新增)
    @Override
    public int insertAuxiliaryWorkingHoursDay(AuxiliaryWorkingHoursDay auxiliaryWorkingHoursDay) {
        Integer userId = SecurityUtils.getUserId().intValue();
        Integer userId = Integer.parseInt(SecurityUtils.getUserId().toString());
        auxiliaryWorkingHoursDay.setNameUser(userId);//姓名id
        auxiliaryWorkingHoursDay.setState("已提交");
        //查询人员当前的班次
        if(StringUtils.isNotBlank(auxiliaryWorkingHoursDay.getDateTime())){
            //录入时间
            DateTimeFormatter pattern = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
            LocalDateTime saveDate = LocalDateTime.parse(auxiliaryWorkingHoursDay.getDateTime(), pattern);
            LocalDate now1 = LocalDate.now();//当前日期
            LocalDate dateTime = LocalDate.parse(saveDate.format(formatter));// 用户选择日期
            //班次记录
            PerformanceShift performanceShift = performanceShiftMapper.selectOne(Wrappers.<PerformanceShift>lambdaQuery()
                    .eq(PerformanceShift::getUserId, userId)
                    .eq(PerformanceShift::getWorkTime, saveDate).last("limit 1"));
            if(Objects.isNull(performanceShift)) {
                throw new ErrorException("请先录入班次信息");
            }
            auxiliaryWorkingHoursDay.setShift(performanceShift.getShift());
            DateTime parse = DateUtil.parse(saveDate.format(formatter));
            auxiliaryWorkingHoursDay.setWeek(String.valueOf(DateUtil.weekOfYear(DateUtil.offsetDay(parse, 1)))); // 周次
            // 如果是昨天,赋值到上一个班次
            if(now1.isAfter(dateTime)) {
            }else{
                // 如果是今天,并且是跨天的班次,需要将日期改为昨天
                ShiftTime shiftTime = shiftTimeMapper.selectOne(new LambdaQueryWrapper<ShiftTime>()
                        .eq(ShiftTime::getShift, performanceShift.getShift()));
                if(Objects.nonNull(shiftTime)) {
                    String start = shiftTime.getStartTime();
                    String end = shiftTime.getEndTime();
                    LocalTime startTime = LocalTime.parse(start);
                    LocalTime endTime = LocalTime.parse(end);
                    LocalTime now = LocalTime.now();
                    // 跨天班次
                    if(startTime.isAfter(endTime)){
                        // 不在今天的班次时间内
                        if(now.isBefore(startTime)) {
                            auxiliaryWorkingHoursDay = previousShift(userId, auxiliaryWorkingHoursDay);
                        }
                    }else {
                        // 不跨天的情况
                        // 如果当前时间不在今天的班次时间内,且在开始之前 算到上一个班次
                        if(now.isBefore(startTime)){
                            auxiliaryWorkingHoursDay = previousShift(userId, auxiliaryWorkingHoursDay);
                        }
                    }
                }else {
                    // 如果是休息 请假  出差 的情况,需要将日期改为前一个班次
                    // 都算到上一个班次
                    auxiliaryWorkingHoursDay = previousShift(userId, auxiliaryWorkingHoursDay);
                }
            }
        }
        return auxiliaryWorkingHoursDayMapper.insert(auxiliaryWorkingHoursDay);
    }
    // 获取上一个班次的时间
    public AuxiliaryWorkingHoursDay previousShift(Integer userId,AuxiliaryWorkingHoursDay auxiliaryWorkingHoursDay) {
        LocalTime time = LocalTime.of(0, 0, 0);
        LocalDateTime yesterdayTime = LocalDateTime.of(LocalDate.now(), time);
        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        // 都算到上一个班次
        List<Integer> list = Arrays.asList(3, 4, 6); // 休息 请假 半天 出差
        List<PerformanceShift> performanceShifts = performanceShiftMapper.selectList(new LambdaQueryWrapper<PerformanceShift>()
                .eq(PerformanceShift::getUserId, userId)
                .lt(PerformanceShift::getWorkTime, yesterdayTime.format(dateTimeFormatter))
                .notIn(PerformanceShift::getShift, list)
                .orderByDesc(PerformanceShift::getWorkTime));
        String dateTime = performanceShifts.get(0).getWorkTime().format(dateTimeFormatter);
        auxiliaryWorkingHoursDay.setDateTime(dateTime);//日期 前一个班次
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
        DateTime parse = DateUtil.parse(performanceShifts.get(0).getWorkTime().format(formatter));
        auxiliaryWorkingHoursDay.setWeek(String.valueOf(DateUtil.weekOfYear(DateUtil.offsetDay(parse, 1)))); // 周次
        auxiliaryWorkingHoursDay.setWeekDay(getWeek(dateTime));//星期
        return auxiliaryWorkingHoursDay;
    }
    public static String getWeek(String dayStr) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        try {
            Date date = sdf.parse(dayStr);
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(date);
            int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
            int day = calendar.get(Calendar.DAY_OF_MONTH);
            return getWeekDay(dayOfWeek);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
    public static String getWeekDay(int dayOfWeek) {
        switch (dayOfWeek) {
            case Calendar.MONDAY:
                return "1";
            case Calendar.TUESDAY:
                return "2";
            case Calendar.WEDNESDAY:
                return "3";
            case Calendar.THURSDAY:
                return "4";
            case Calendar.FRIDAY:
                return "5";
            case Calendar.SATURDAY:
                return "6";
            case Calendar.SUNDAY:
                return "7";
            default:
                return "未知";
        }
    }
    //审核/批准
    @Override
    public boolean checkOrApprove(HoursDay hoursDay) {
        List<AuxiliaryWorkingHoursDay> auxiliaryWorkingHoursDays = hoursDay.getAuxiliaryWorkingHoursDays();
        for (AuxiliaryWorkingHoursDay auxiliaryWorkingHoursDay : auxiliaryWorkingHoursDays) {
            Integer userId = SecurityUtils.getUserId().intValue();
            if (auxiliaryWorkingHoursDay.getState().equals("已审核")) {
                Integer userId = Integer.parseInt(SecurityUtils.getUserId().toString());
            auxiliaryWorkingHoursDay.setReviewer(userMapper.selectById(userId).getName());
            }
            if (auxiliaryWorkingHoursDay.getReviewerNumber() == null) {
                auxiliaryWorkingHoursDay.setReviewerNumber(auxiliaryWorkingHoursDay.getAmount());//复核数量
                auxiliaryWorkingHoursDay.setReviewerNonproductiveTime(auxiliaryWorkingHoursDay.getNonproductiveTime());//复核工时
            }
        }
        return updateBatchById(auxiliaryWorkingHoursDays);
    }
@@ -151,7 +277,7 @@
    //编辑
    @Override
    public int updateAuxiliaryWorkingHoursDay(AuxiliaryWorkingHoursDay auxiliaryWorkingHoursDay) {
        Integer userId = SecurityUtils.getUserId().intValue();
        Integer userId = Integer.parseInt(SecurityUtils.getUserId().toString());
        auxiliaryWorkingHoursDay.setNameUser(userId);//姓名id
        return auxiliaryWorkingHoursDayMapper.updateById(auxiliaryWorkingHoursDay);
    }
@@ -165,67 +291,12 @@
    //根据编号当前用户信息查询所在班次
    @Override
    public String selectshiftByUser(LocalDateTime dateTime) {
        Integer userId = SecurityUtils.getUserId().intValue();
        Integer userId = Integer.parseInt(SecurityUtils.getUserId().toString());
        PerformanceShift performanceShift = performanceShiftMapper.selectOne(Wrappers.<PerformanceShift>lambdaQuery().eq(PerformanceShift::getUserId, userId).eq(PerformanceShift::getWorkTime, dateTime));
        if (ObjectUtils.isEmpty(performanceShift)) {
            return null;
        }
        return performanceShift.getShift();
    }
    /**
     * 导出辅助工时
     * @param
     * @param response
     */
    @Override
    public void exportWorkingHours(AuxiliaryWorkingHoursDayDto auxiliaryWorkingHoursDayDto, HttpServletResponse response) {
        String dates = auxiliaryWorkingHoursDayDto.getDateTime();
        String week = auxiliaryWorkingHoursDayDto.getWeek();
        auxiliaryWorkingHoursDayDto.setDateTime(null);
        auxiliaryWorkingHoursDayDto.setWeek(null);
        List<Integer> ids = new ArrayList<>();
        String name = auxiliaryWorkingHoursDayDto.getName();
        if (ObjectUtils.isNotEmpty(name)) {
            ids.addAll(userMapper.selectList(Wrappers.<User>lambdaQuery().like(User::getName, name)).stream().map(User::getId).collect(Collectors.toList()));
        }
        List<AuxiliaryWorkingHoursDayDto> auxiliaryWorkingHoursDayDtoIPage = new ArrayList<>();
        if (ObjectUtils.isNotEmpty(dates) && ObjectUtils.isNotEmpty(week)) {
            String[] split = dates.replaceAll("\\[", "").replaceAll("]", "").replaceAll("\"", "").split(",");
            String[] weeks = week.replaceAll("\\[", "").replaceAll("]", "").replaceAll("\"", "").split(",");
            auxiliaryWorkingHoursDayDtoIPage = auxiliaryWorkingHoursDayMapper.selectAuxiliaryWorkingHoursDayList(QueryWrappers.queryWrappers(auxiliaryWorkingHoursDayDto)
                            .ge("date_time", split[0]).le("date_time", split[1] + " 23:59:59")
                            .ge("week", weeks[0]).le("week", weeks[1]), ids);
        } else if (ObjectUtils.isNotEmpty(dates) && ObjectUtils.isEmpty(week)) {
            String[] split = dates.replaceAll("\\[", "").replaceAll("]", "").replaceAll("\"", "").split(",");
            auxiliaryWorkingHoursDayDtoIPage = auxiliaryWorkingHoursDayMapper.selectAuxiliaryWorkingHoursDayList(QueryWrappers.queryWrappers(auxiliaryWorkingHoursDayDto)
                            .ge("date_time", split[0]).le("date_time", split[1] + " 23:59:59"), ids);
        } else if (ObjectUtils.isEmpty(dates) && ObjectUtils.isNotEmpty(week)) {
            String[] weeks = week.replaceAll("\\[", "").replaceAll("]", "").replaceAll("\"", "").split(",");
            auxiliaryWorkingHoursDayDtoIPage = auxiliaryWorkingHoursDayMapper.selectAuxiliaryWorkingHoursDayList(QueryWrappers.queryWrappers(auxiliaryWorkingHoursDayDto)
                            .ge("week", weeks[0]).le("week", weeks[1]), ids);
        } else {
            auxiliaryWorkingHoursDayDtoIPage = auxiliaryWorkingHoursDayMapper.selectAuxiliaryWorkingHoursDayList( QueryWrappers.queryWrappers(auxiliaryWorkingHoursDayDto), ids);
        }
        try {
            response.setContentType("application/vnd.ms-excel");
            response.setCharacterEncoding("UTF-8");
            // 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系
            String fileName = URLEncoder.encode("辅助工时信息导出", "UTF-8");
            response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
            //新建ExcelWriter
            ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()).build();
            //获取sheet0对象
            WriteSheet mainSheet = EasyExcel.writerSheet(0, "辅助工时信息导出").head(AuxiliaryWorkingHoursDayDto.class).build();
            //向sheet0写入数据 传入空list这样只导出表头
            excelWriter.write(auxiliaryWorkingHoursDayDtoIPage, mainSheet);
            //关闭流
            excelWriter.finish();
        } catch (IOException e) {
            throw new RuntimeException("导出失败");
        }
    }
performance-server/src/main/java/com/ruoyi/performance/service/impl/AuxiliaryWorkingHoursServiceImpl.java
@@ -3,6 +3,8 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.core.domain.entity.User;
import com.ruoyi.common.core.dto.UserPageDto;
import com.ruoyi.common.utils.QueryWrappers;
import com.ruoyi.performance.mapper.AuxiliaryWorkingHoursMapper;
import com.ruoyi.performance.pojo.AuxiliaryWorkingHours;
@@ -52,4 +54,5 @@
        }
        return auxiliaryWorkingHoursMapper.insert(auxiliaryWorkingHours);
    }
}
performance-server/src/main/resources/mapper/AuxiliaryOutputWorkingHoursMapper.xml
@@ -17,41 +17,36 @@
        <result column="date_time" property="dateTime"/>
        <result column="week" property="week"/>
        <result column="week_day" property="weekDay"/>
        <result column="check" property="check"/>
        <result column="check_id" property="checkId"/>
        <result column="create_time" property="createTime"/>
        <result column="update_time" property="updateTime"/>
        <result column="create_user" property="createUser"/>
        <result column="update_user" property="updateUser"/>
    </resultMap>
    <sql id="selectAuxiliaryOutputWorking">
    <select id="selectAuxiliaryOutputWorkingHours" resultType="com.ruoyi.performance.dto.AuxiliaryOutputWorkingHoursDto">
        select *
        from (
        select aowh.id,
        aowh.inspection_item_class,
        aowh.inspection_item,
        aowh.inspection_item_subclass,
        aowh.overtime_order_no,
        aowh.overtime_work_time,
        aowh.overtime_amount,
        aowh.order_no,
        aowh.work_time,
        aowh.amount,
        aowh.output_work_time,
        aowh.date_time,
        aowh.week,
        aowh.week_day,
        user.name,
        aowh.sample,
        aowh.price,
        aowh.man_hour_group,
        ip.cable_tag
        inspection_item,
        inspection_item_subclass,
        overtime_order_no,
        overtime_work_time,
        overtime_amount,
        order_no,
        work_time,
        amount,
        output_work_time,
        date_time,
        week,
        week_day,
        name,
        sample,
        aowh.check_id
        FROM auxiliary_output_working_hours aowh
        left join ins_product ip on ip.id = aowh.ins_product_id
        left join user on user.id=aowh.`check`
        left join user on user.id=aowh.check_id
        WHERE 1=1
        <if test="ids !=null and ids.size() > 0">
            and `check` in
            and aowh.check_id in
            <foreach collection="ids" index="index" open="(" separator="," close=")" item="val">
                #{val}
            </foreach>
@@ -60,18 +55,14 @@
        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
            ${ew.customSqlSegment}
        </if>
    </sql>
    <select id="selectAuxiliaryOutputWorkingHours" resultType="com.ruoyi.performance.dto.AuxiliaryOutputWorkingHoursDto">
        <include refid="selectAuxiliaryOutputWorking"/>
    </select>
    <select id="selectDataByUser" resultType="com.ruoyi.performance.dto.AuxiliaryOutputWorkingHoursDto">
        select aowh.*, name, ip.cable_tag cableTag
        select aowh.*,name
        FROM auxiliary_output_working_hours aowh
        left join ins_product ip on ip.id = aowh.ins_product_id
        left join user on user.id = aowh.`check`
        left join user on user.id=aowh.check_id
        WHERE 1 = 1
        <if test="ids !=null and ids.size() > 0">
            and `check` in
            and aowh.check_id in
            <foreach collection="ids" index="index" open="(" separator="," close=")" item="val">
                #{val}
            </foreach>
@@ -80,22 +71,24 @@
    <select id="totalHours" resultType="java.util.Map">
        select A.name,
        A.month,
        FORMAT(SUM(A.manHours), 4) manHours
        FORMAT(SUM(A.manHours), 4) AS manHours
        from(
        select user.name,
        date_time as month,
        order_no,
        sample,
        man_hour_group,
        case when #{type}='加班工时' then  case when overtime_work_time is null then 0 else overtime_work_time end
        else case when work_time is null then 0 else work_time end  end as manHours
        case
        when #{type}='加班工时' then case when overtime_work_time is null then 0 else overtime_work_time end
        else case when work_time is null then 0 else work_time end
        end as manHours
        -- FORMAT(SUM(output_work_time), 4) as manHours
        from auxiliary_output_working_hours aowh
        left join user on user.id=aowh.`check`
        left join user on user.id=aowh.check_id
        left join department_lims dl on depart_lims_id=dl.id
        where date_time LIKE CONCAT('%', #{month}, '%')
        <if test="ids !=null and ids != ''">
            and `check` in
        <if test="ids !=null and ids.size()>0">
            and aowh.check_id in
            <foreach collection="ids" open="(" separator="," close=")" item="val">
                #{val}
            </foreach>
@@ -115,8 +108,8 @@
    <select id="selectListByIds" resultType="com.ruoyi.performance.pojo.AuxiliaryOutputWorkingHours">
        select * from auxiliary_output_working_hours
        where 1=1
        <if test="ids !=null and ids != ''">
            and `check` in
        <if test="ids !=null and ids.size()>0">
            and check_id in
            <foreach collection="ids" index="index" open="(" separator="," close=")" item="val">
                #{val}
            </foreach>
@@ -126,8 +119,8 @@
    <select id="selectLists" resultMap="BaseResultMap">
        select * from(select * from auxiliary_output_working_hours
        WHERE 1=1
        <if test="ids !=null and ids != ''">
            and `check` in
        <if test="ids !=null and ids.size()>0">
            and check_id in
            <foreach collection="ids" index="index" open="(" separator="," close=")" item="val">
                #{val}
            </foreach>
@@ -136,51 +129,5 @@
        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
            ${ew.customSqlSegment}
        </if>
    </select>
    <select id="selectAuxiliaryAllByMonth" resultType="com.ruoyi.performance.dto.AuxiliaryAllDto">
        select sum(aowh.work_time) yieldHour,
               u.name           userName,
               aowh.`check`           userId,
               #{dto.month} month
        from (SELECT *
              FROM auxiliary_output_working_hours
              GROUP BY CASE
                           WHEN man_hour_group IS NOT NULL AND man_hour_group != '' THEN man_hour_group
                           ELSE id
                  END
                     , CASE
                           WHEN man_hour_group IS NOT NULL AND man_hour_group != '' THEN order_id
                           ELSE id
                  END) aowh
                 left join user u on u.id = aowh.`check`
        where aowh.date_time between #{dto.beginDate} and #{dto.endDate}
        <if test="userIds !=null and userIds.size() > 0">
            and aowh.`check` in
            <foreach collection="userIds" index="index" open="(" separator="," close=")" item="val">
                #{val}
            </foreach>
        </if>
        group by aowh.`check`
    </select>
    <select id="selectSubsidiaryAllByMonth" resultType="com.ruoyi.performance.dto.AuxiliaryAllDto">
        select sum(awhd.reviewer_nonproductive_time) subsidiaryHour,
               u.name              userName,
               awhd.name_user      userId,
               #{dto.month} month
        from auxiliary_working_hours_day awhd
                 left join user u on u.id = awhd.name_user
        where awhd.date_time between #{dto.beginDate} and #{dto.endDate}
        and awhd.state = '已批准'
        <if test="userIds !=null and userIds.size() > 0">
            and awhd.name_user in
            <foreach collection="userIds" index="index" open="(" separator="," close=")" item="val">
                #{val}
            </foreach>
        </if>
        group by awhd.name_user
    </select>
    <!-- 查询产量工时集合 -->
    <select id="selectAuxiliaryOutputWorkingHoursList" resultType="com.ruoyi.performance.dto.AuxiliaryOutputWorkingHoursDto">
        <include refid="selectAuxiliaryOutputWorking"/>
    </select>
</mapper>
performance-server/src/main/resources/mapper/PerformanceShiftMapper.xml
@@ -149,7 +149,7 @@
        from user u
                 left join department_lims dl
                           on FIND_IN_SET(dl.id,u.depart_lims_id)
        where dl.name in('通信产品实验室','电力产品实验室')
        where dl.name in('通信产品实验室','电力产品实验室','检测办')
          and u.status = 0
          and u.is_custom = 0
    </select>
ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserRoleMapper.java
@@ -59,4 +59,12 @@
     * @return 结果
     */
    public int deleteUserRoleInfos(@Param("roleId") Long roleId, @Param("userIds") Long[] userIds);
    /**
     * 通过用户ID查询角色ID
     * @param userId 用户ID
     */
    public List<Long> selectRoleIdsByUserId(Long userId);
}
ruoyi-system/src/main/resources/mapper/system/SysUserRoleMapper.xml
@@ -41,4 +41,10 @@
             #{userId}
            </foreach> 
    </delete>
    <select id="selectRoleIdsByUserId" resultType="list">
        select role_id from sys_user_role where user_id=#{userId}
    </select>
</mapper>