ZengTao
2024-08-02 fd5db10a0a6c2429a012501da022a4129259901b
hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/service/impl/DamageServiceImpl.java
@@ -21,6 +21,7 @@
import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.stream.Collectors;
/**
@@ -55,6 +56,11 @@
        if(!"0".equals(workingProcedure)){
            damageSelectWrapper.eq(Damage::getWorkingProcedure,workingProcedure);
        }
        List<Damage> damageList = baseMapper.selectList(damageSelectWrapper);
        for (Damage damage : damageList) {
            damage.setStatus(2);
        }
        return baseMapper.selectList(damageSelectWrapper);
    }
@@ -62,27 +68,7 @@
     * 提交报工
     */
    @Override
    public void submitDamage(String startTime, String endTime, int type, int status, String workingProcedures){
        LambdaUpdateWrapper<Damage> damageUpdateWrapper=new LambdaUpdateWrapper<>();
        LambdaQueryWrapper<Damage> damageLambdaQueryWrapper=new LambdaQueryWrapper<>()
;       damageUpdateWrapper.between(Damage::getDamageTime,startTime,endTime);
        damageLambdaQueryWrapper.between(Damage::getDamageTime,startTime,endTime);
        if (type!=0){
            damageUpdateWrapper.eq(Damage::getType,type);
            damageLambdaQueryWrapper.eq(Damage::getType,type);
        }
        if (status!=0){
            damageUpdateWrapper.eq(Damage::getStatus,status);
            damageLambdaQueryWrapper.eq(Damage::getStatus,status);
        }
        if(!"0".equals(workingProcedures)){
            damageUpdateWrapper.eq(Damage::getWorkingProcedure,workingProcedures);
            damageLambdaQueryWrapper.eq(Damage::getWorkingProcedure,workingProcedures);
        }
//        Damage damage=new Damage();
//        damage.setStatus(2);
//        baseMapper.update(damage,damageUpdateWrapper);
        List<Damage> damageList = baseMapper.selectList(damageLambdaQueryWrapper);
    public void submitDamage(List<Damage> damageList){
        Map<String, Map<String, Map<String, Map<String, List<Damage>>>>> resultMap = damageList.stream()
                .collect(Collectors.groupingBy(
                        Damage::getProcessId,
@@ -125,15 +111,23 @@
                        // 获取 Damage 列表
                        List<Damage> damageListForTeamsGroupsName = teamsGroupsNameEntry.getValue();
                        //报工主表数据
                        ReportingWork reportingWork=new ReportingWork();
                        reportingWork.setProcessId(processId);
                        reportingWork.setThisProcess(workingProcedure);
                        reportingWork.setDeviceName(deviceName);
                        reportingWork.setTeamsGroupsName(teamsGroupsName);
                        // 使用 stream 对 damageListForTeamsGroupsName 进行再次分组
                        Map<Integer, Map<Integer, Map<String, List<Damage>>>> groupedByOrderTechBreakage = damageListForTeamsGroupsName.stream()
                                .map(damage -> Optional.ofNullable(damage)) // 使用Optional处理可能为null的元素
                                .filter(Optional::isPresent) // 过滤掉空的Optional
                                .map(Optional::get) // 获取非空的Damage对象
                                .collect(Collectors.groupingBy(
                                        Damage::getOrderNumber,
                                        damage -> Optional.ofNullable(damage.getOrderNumber()).orElse(0), // 使用orElse设置默认值,以处理null值
                                        Collectors.groupingBy(
                                                Damage::getTechnologyNumber,
                                                damage -> Optional.ofNullable(damage.getTechnologyNumber()).orElse(0), // 同样处理technologyNumber可能为null的情况
                                                Collectors.groupingBy(
                                                        Damage::getBreakageType,
                                                        damage -> Optional.ofNullable(damage.getBreakageType()).orElse("Unknown"), // 处理breakageType可能为null的情况
                                                        Collectors.toList()
                                                )
                                        )
@@ -160,11 +154,7 @@
                                    String breakageType = breakageTypeEntry.getKey();
                                    System.out.println("            BreakageType: " + breakageType);
                                    ReportingWork reportingWork=new ReportingWork();
                                    reportingWork.setProcessId(processId);
                                    reportingWork.setThisProcess(workingProcedure);
                                    reportingWork.setDeviceName(deviceName);
                                    reportingWork.setTeamsGroupsName(teamsGroupsName);
                                    // 获取 Damage 列表
                                    List<Damage> damageListForBreakageType = breakageTypeEntry.getValue();
                                    int completedQuantity=0;