guoyujie
2025-07-08 7104751e2f26872d4891d01d42ee88cf19715d01
north-glass-erp/src/main/java/com/example/erp/service/pp/ReportService.java
@@ -3,19 +3,25 @@
import com.baomidou.dynamic.datasource.annotation.DS;
import com.example.erp.dto.pp.DamageReportDTO;
import com.example.erp.dto.pp.ScheduleProductionScheduleDTO;
import com.example.erp.dto.pp.TeamOutputDTO;
import com.example.erp.dto.pp.*;
import com.example.erp.entity.pp.DamageDetails;
import com.example.erp.entity.pp.Report;
import com.example.erp.mapper.pp.FlowCardMapper;
import com.example.erp.mapper.pp.ProductionSchedulingMapper;
import com.example.erp.mapper.pp.ReportMapper;
import com.example.erp.mapper.sd.OrderProcessDetailMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import java.sql.Date;
import java.time.LocalDate;
import java.util.*;
import java.util.concurrent.Executor;
import java.util.function.Function;
import java.util.stream.Collectors;
@Service
@DS("pp")
@@ -25,11 +31,42 @@
    private final OrderProcessDetailMapper orderProcessDetailMapper;
    private final ProductionSchedulingMapper productionSchedulingMapper;
    FlowCardMapper flowCardMapper;
    public ReportService(ReportMapper reportMapper, OrderProcessDetailMapper orderProcessDetailMapper, ProductionSchedulingMapper productionSchedulingMapper) {
    private void mergeTeamsGroupsName(
            List<WorkInProgressDTO> dataList1,
            List<WorkInProgressDTO> dataList2
    ) {
        Function<WorkInProgressDTO, String> keyFn = dto ->
                dto.getProcessId() + "|" +
                        dto.getOrderNumber() + "|" +
                        dto.getTechnologyNumber();
        Map<String, WorkInProgressDTO> map2 = dataList2.stream()
                .collect(Collectors.toMap(
                        keyFn,
                        Function.identity(),
                        (existing, replacement) -> existing
                ));
        for (WorkInProgressDTO dto1 : dataList1) {
            WorkInProgressDTO dto2 = map2.get(keyFn.apply(dto1));
            if (dto2 != null) {
                String tgn = dto2.getTeamsGroupsName();
                if (StringUtils.hasText(tgn)) {
                    dto1.setTeamsGroupsName(tgn);
                }
            }
        }
    }
    public ReportService(ReportMapper reportMapper, OrderProcessDetailMapper orderProcessDetailMapper, ProductionSchedulingMapper productionSchedulingMapper,FlowCardMapper flowCardMapper) {
        this.reportMapper = reportMapper;
        this.orderProcessDetailMapper = orderProcessDetailMapper;
        this.productionSchedulingMapper = productionSchedulingMapper;
        this.flowCardMapper = flowCardMapper;
    }
    //流程卡进度方法
@@ -88,7 +125,12 @@
            getRowCount.forEach(row -> {
                Map<String, Integer> getRow = new HashMap<>();
                // { row: 0, col: 1, rowspan: 3, colspan: 0},
                getRow.put("row", row.get("RowNum"));
                Object rowNumObj = row.get("RowNum");
                if (rowNumObj instanceof Double) {
                    getRow.put("row", ((Double) rowNumObj).intValue());
                } else if (rowNumObj instanceof Integer) {
                    getRow.put("row", (Integer) rowNumObj);
                }
                getRow.put("col", col);
                getRow.put("rowspan", row.get("rowCount"));
                getRow.put("colspan", 0);
@@ -102,7 +144,7 @@
        return map;
    }
    public Map<String, Object> crossProcessBreakingSv(Integer pageNum, Integer pageSize, List<String> selectDate, DamageDetails damageDetails) {
    public Map<String, Object> crossProcessBreakingSv(Integer pageNum, Integer pageSize, List<String> selectDate, CrossProcessBreakingDTO crossProcessBreakingDTO) {
        Integer offset = (pageNum - 1) * pageSize;
        String endDate = LocalDate.now().toString();
        String startDate = LocalDate.now().minusDays(15).toString();
@@ -115,18 +157,17 @@
            }
        }
        Map<String, Object> map = new HashMap<>();
        map.put("data", reportMapper.getProcessBreaking(offset, pageSize, startDate, endDate, damageDetails));
        map.put("total", reportMapper.getProcessBreakingTotal(offset, pageSize, startDate, endDate, damageDetails));
        map.put("data", reportMapper.getProcessBreaking(offset, pageSize, startDate, endDate, crossProcessBreakingDTO));
        map.put("total", reportMapper.getProcessBreakingTotal(offset, pageSize, startDate, endDate, crossProcessBreakingDTO));
        List<String> list = new ArrayList<>();
        list.add(startDate);
        list.add(endDate);
        map.put("selectDate", list);
//        map.put("total",orderMapper.getPageTotal(offset, pageSize, startDate, endDate, orderDetail));
        return map;
    }
    public Map<String, Object> workInProgressSv(Date selectTime1, Date selectTime2, String orderId, String inputProject, String selectProcesses, String optionVal, Report report) {
    public Map<String, Object> workInProgressSv(Integer pageNum, Integer pageSize, String orderId, String inputProject, String selectProcesses, String optionVal, WorkInProgressDTO workInProgressDTO) {
        Integer offset = (pageNum - 1) * pageSize;
        if ("null".equals(orderId)) {
            orderId = "";
        }
@@ -136,20 +177,39 @@
        if ("null".equals(optionVal)) {
            optionVal = ("");
        }
        if (selectProcesses.equals("全部")){
            selectProcesses="";
        }
        Map<String, Object> map = new HashMap<>();
        List<WorkInProgressDTO> dataList2  =reportMapper.workInProgressMpdataList2(offset, pageSize, orderId, inputProject, selectProcesses, workInProgressDTO);
        if (optionVal.equals("1")){
            /* 根据销售单号汇总*/
            map.put("data", reportMapper.workInProgressOrderMp(selectTime1, selectTime2, orderId, inputProject, selectProcesses, report));
            //map.put("data", reportMapper.workInProgressOrderMp(offset, pageSize, orderId, inputProject, selectProcesses, workInProgressDTO));
            List<WorkInProgressDTO> dataList1  =reportMapper.workInProgressOrderMpList1(offset, pageSize, orderId, inputProject, selectProcesses, workInProgressDTO);
            mergeTeamsGroupsName(dataList1, dataList2);
            map.put("data",dataList1);
            // map.put("total", reportMapper.workInProgressOrderTotal(offset, pageSize, orderId, inputProject, selectProcesses, workInProgressDTO));
            map.put("total" ,reportMapper.workInProgressOrderFootSum(offset, pageSize,orderId, inputProject, selectProcesses, workInProgressDTO));
        }else if(optionVal.equals("2")){
            /* 根流程卡号汇总*/
            map.put("data", reportMapper.workInProgressProcessMp(selectTime1, selectTime2, orderId, inputProject, selectProcesses, report));
            /* 根据流程卡号汇总*/
            //map.put("data", reportMapper.workInProgressProcessMp(offset, pageSize, orderId, inputProject, selectProcesses, workInProgressDTO));
            List<WorkInProgressDTO> dataList1  =reportMapper.workInProgressProcessMpList1(offset, pageSize, orderId, inputProject, selectProcesses, workInProgressDTO);
            mergeTeamsGroupsName(dataList1, dataList2);
            map.put("data",dataList1);
            // map.put("total", reportMapper.workInProgressProcessTotal(offset, pageSize, orderId, inputProject, selectProcesses, workInProgressDTO));
            map.put("total" ,reportMapper.workInProgressOrderFootSum(offset, pageSize,orderId, inputProject, selectProcesses, workInProgressDTO));
        } else if (optionVal.equals("3")) {
        } else {
            //没有选择分组
            //map.put("data", reportMapper.workInProgressMp(offset, pageSize, orderId, inputProject, selectProcesses, workInProgressDTO));
            List<WorkInProgressDTO> dataList1  =reportMapper.workInProgressMpdataList1(offset, pageSize, orderId, inputProject, selectProcesses, workInProgressDTO);
            mergeTeamsGroupsName(dataList1, dataList2);
            map.put("data",dataList1);
            //map.put("total", reportMapper.workInProgressTotal(offset, pageSize, orderId, inputProject, selectProcesses, workInProgressDTO));
            map.put("total" ,reportMapper.workInProgressOrderFootSum(offset, pageSize,orderId, inputProject, selectProcesses, workInProgressDTO));
            map.put("data", reportMapper.workInProgressMp(selectTime1, selectTime2, orderId, inputProject, selectProcesses, report));
        }
        map.put("process", productionSchedulingMapper.selectProcess());
        return map;
@@ -165,6 +225,8 @@
        Map<String, Object> map = new HashMap<>();
        map.put("data", reportMapper.processToBeCompletedMp(selectTime1, selectTime2, orderId, inputProject, selectProcesses, report));
        map.put("process", productionSchedulingMapper.selectProcess());
        map.put("footSum" ,reportMapper.processToBeCompletedFootSum(selectTime1, selectTime2, orderId, inputProject, selectProcesses, report));
        return map;
    }
@@ -173,12 +235,14 @@
        Map<String, Object> map = new HashMap<>();
        map.put("data", reportMapper.selectDamageReportMp(offset, pageSize, selectTime1, selectTime2, damageReportDTO));
        map.put("total", reportMapper.getDamageReportPageTotal(offset, pageSize, selectTime1, selectTime2, damageReportDTO));
        map.put("footSum" ,reportMapper.damageReportFootSum(selectTime1, selectTime2, damageReportDTO));
        return map;
    }
    public Map<String, Object> splittingDetailsOutsideSv(String orderId, Report report) {
        Map<String, Object> map = new HashMap<>();
        map.put("data", reportMapper.splittingDetailsOutsideMp(orderId, report));
        map.put("orderOtherMoney", flowCardMapper.selectorderOtherMoney());
        return map;
    }
@@ -339,6 +403,12 @@
        return map;
    }
    public Map<String, Object> orderReportingWorks(Date selectTime1, Date selectTime2, Report report) {
        Map<String, Object> map = new HashMap<>();
        map.put("data", reportMapper.orderReportingWorks(selectTime1, selectTime2, report));
        return map;
    }
    public Map<String, Object> rawMaterialRequisitionSv(Date selectTime1, Date selectTime2, Report report) {
        Map<String, Object> map = new HashMap<>();
        map.put("data", reportMapper.rawMaterialRequisitionMp(selectTime1, selectTime2, report));
@@ -350,7 +420,9 @@
    }
    public List exportDamageReportSv(List<LocalDate> dates) {
        if (dates != null && dates.size() > 1) {
            dates.set(1, dates.get(1).plusDays(1)); // 将第二个日期加一天
        }
        return reportMapper.exportDamageReportMp(dates);
    }
@@ -373,8 +445,10 @@
    }
    public List exportWorkInProgressSv(Map<String, Object> dates) {
        List<LocalDate> date= (List<LocalDate>) dates.get("date");
        String process= (String) dates.get("processes");
        if (process.equals("全部")){
            process="";
        }
        String inputVal= (String) dates.get("inputVal");
        String project= (String) dates.get("project");
        if ("null".equals(inputVal)) {
@@ -383,7 +457,11 @@
        if ("null".equals(project)) {
            project = "";
        }
        return reportMapper.exportWorkInProgressMp(date,process,inputVal,project);
        List<WorkInProgressDTO> dataList1  =reportMapper.exportWorkInProgressMp(process,inputVal,project);
        List<WorkInProgressDTO> dataList2  =reportMapper.exportWorkInProgressMpdataList2(process);
        mergeTeamsGroupsName(dataList1, dataList2);
        return dataList1;
    }
    public List exportTaskCompletionStatusSv(Map<String, Object> dates) {
@@ -405,11 +483,16 @@
    }
    public Map<String, Object> teamOutputSv(Integer pageNum, Integer pageSize, Date selectTime1, Date selectTime2, String selectProcesses, TeamOutputDTO teamOutputDTO) {
        if (selectProcesses.equals("全部")){
            selectProcesses="";
        }
        Integer offset = (pageNum - 1) * pageSize;
        Map<String, Object> map = new HashMap<>();
        map.put("data", reportMapper.teamOutputMp(offset, pageSize, selectTime1, selectTime2,selectProcesses, teamOutputDTO));
        String laminating = reportMapper.getLaminating(selectProcesses);
        map.put("data", reportMapper.teamOutputMp(offset, pageSize, selectTime1, selectTime2,selectProcesses,laminating, teamOutputDTO));
        map.put("process", productionSchedulingMapper.selectProcess());
        map.put("total", reportMapper.teamOutputPageTotal(offset, pageSize, selectTime1, selectTime2,selectProcesses, teamOutputDTO));
        map.put("total", reportMapper.teamOutputPageTotal(offset, pageSize, selectTime1, selectTime2,selectProcesses,laminating, teamOutputDTO));
        map.put("footSum" ,reportMapper.teamOutputFootSum(selectTime1, selectTime2,selectProcesses,laminating, teamOutputDTO));
        return map;
    }
@@ -423,8 +506,18 @@
    }
    public List exportScheduleReportSv(Map<String, Object> dates) {
        List<LocalDate> date= (List<LocalDate>) dates.get("date");
        List<LocalDate> date= (List<LocalDate>) dates.get("date1");
        String process= (String) dates.get("processes");
        return reportMapper.exportScheduleReportMp(date,process);
    }
    public List exportTeamOutputSv(Map<String, Object> dates) {
        List<LocalDate> date= (List<LocalDate>) dates.get("date");
        String process= (String) dates.get("processes");
        if (process.equals("全部")){
            process="";
        }
        String laminating = reportMapper.getLaminating(process);
        return reportMapper.exportTeamOutputMp(date,process,laminating);
    }
}