sfd
2025-05-09 a080d67b9964cd632f52c481c0f20ef2e3e7073a
aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlateProcessShopStatServiceImpl.java
@@ -1,5 +1,6 @@
package com.aps.core.service.impl;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
@@ -130,7 +131,7 @@
            // 定义该功能使用数据源为南通的工厂
            final String plant = "FORTUNA";
            final String major="钣金";
            // 查询相关数据
            ApsPlatePlan platePlan = new ApsPlatePlan();
            platePlan.setPlant(plant);
@@ -144,6 +145,7 @@
            ApsStandardProcess process = new ApsStandardProcess();
            process.setPlant(plant);
            process.setMajor(major);
            List<ApsStandardProcess> shopProcesses = standardProcessMapper.selectApsStandardProcessList(process);
            if (planList.isEmpty() || shopList.isEmpty() || shopProcesses.isEmpty()) {
                log.warn("计划列表、车间列表或工序列表为空,无法生成统计信息");
@@ -190,7 +192,8 @@
        stat.setDelFlag("0");
        stat.setCreateBy(SecurityUtils.getUsername());
        stat.setCreateTime(DateUtils.getNowDate());
        stat.setWorkCenter(plan.getWorkCenter());
        stat.setProcessNumber(plan.getProcessNumber());
        try {
@@ -316,7 +319,6 @@
            List<ApsPlateProcessShopPlanStat>  table= (List<ApsPlateProcessShopPlanStat>)stat.get("data");
            SXSSFSheet sheet = wb.getSheetAt(0);
            /*填写日期列 和 工时列*/
            SXSSFRow rowTitle = sheet.createRow(0);
            SXSSFCell mainPartNumberTitle = rowTitle.createCell(0);
            mainPartNumberTitle.setCellValue("主件料号");
@@ -338,90 +340,202 @@
            documentStatusTitle.setCellValue("单据状态");
            documentStatusTitle.setCellStyle(title);
            SXSSFCell workCenterTitle = rowTitle.createCell(5);
            SXSSFCell approveDateTitle = rowTitle.createCell(5);
            approveDateTitle.setCellValue("审核时间");
            approveDateTitle.setCellStyle(title);
            SXSSFCell workCenterTitle = rowTitle.createCell(6);
            workCenterTitle.setCellValue("当前工序");
            workCenterTitle.setCellStyle(title);
            SXSSFCell itemNumberTitle = rowTitle.createCell(6);
            SXSSFCell departmentTitle = rowTitle.createCell(7);
            departmentTitle.setCellValue("当前工序负责人");
            departmentTitle.setCellStyle(title);
            SXSSFCell crtPcsStsTitle = rowTitle.createCell(8);
            crtPcsStsTitle.setCellValue("当前工序状态");
            crtPcsStsTitle.setCellStyle(title);
            SXSSFCell nextProcessTitle = rowTitle.createCell(9);
            nextProcessTitle.setCellValue("下一工序");
            nextProcessTitle.setCellStyle(title);
            SXSSFCell nextProcessDeparmentTitle = rowTitle.createCell(10);
            nextProcessDeparmentTitle.setCellValue("下一工序负责人");
            nextProcessDeparmentTitle.setCellStyle(title);
            SXSSFCell itemNumberTitle = rowTitle.createCell(11);
            itemNumberTitle.setCellValue("料号");
            itemNumberTitle.setCellStyle(title);
            SXSSFCell drawingNoTitle = rowTitle.createCell(7);
            SXSSFCell drawingNoTitle = rowTitle.createCell(12);
            drawingNoTitle.setCellValue("图号");
            drawingNoTitle.setCellStyle(title);
            SXSSFCell versionNumberTitle = rowTitle.createCell(8);
            SXSSFCell versionNumberTitle = rowTitle.createCell(13);
            versionNumberTitle.setCellValue("版本号");
            versionNumberTitle.setCellStyle(title);
            SXSSFCell productionQuantityTitle = rowTitle.createCell(9);
            SXSSFCell lowNumTitle = rowTitle.createCell(14);
            lowNumTitle.setCellValue("低阶码");
            lowNumTitle.setCellStyle(title);
            SXSSFCell productionQuantityTitle = rowTitle.createCell(15);
            productionQuantityTitle.setCellValue("生产数量");
            productionQuantityTitle.setCellStyle(title);
            SXSSFCell planEndDayTitle = rowTitle.createCell(10);
            planEndDayTitle.setCellValue("计划完工日");
            SXSSFCell planSendDateTitle = rowTitle.createCell(16);
            planSendDateTitle.setCellValue("工单计划下发时间");
            planSendDateTitle.setCellStyle(title);
            SXSSFCell planEndDayTitle = rowTitle.createCell(17);
            planEndDayTitle.setCellValue("系统完工时间");
            planEndDayTitle.setCellStyle(title);
            for (int i = 0; i < shopNames.size(); i++) {
            String firstShopName = shopNames.get(0);
            SXSSFCell firstShopBeginDateTitle = rowTitle.createCell(18);
            firstShopBeginDateTitle.setCellValue(firstShopName+"开工时间");
            firstShopBeginDateTitle.setCellStyle(title);
            SXSSFCell firstShopEndDateTitle = rowTitle.createCell(19);
            firstShopEndDateTitle.setCellValue(firstShopName+"完工时间");
            firstShopEndDateTitle.setCellStyle(title);
            /*焊接件齐套*/
            SXSSFCell hanJieQiTaoTitle= rowTitle.createCell(20);
            hanJieQiTaoTitle.setCellValue("焊接件齐套开始时间");
            hanJieQiTaoTitle.setCellStyle(title);
            int i1 = 19;
            for (int i = 1; i < shopNames.size(); i++) {
                String shopName = shopNames.get(i);
                SXSSFCell beginDateCell = rowTitle.createCell(i * 2 + 11);
                SXSSFCell endDateCell = rowTitle.createCell(i * 2 + 12);
                SXSSFCell beginDateCell = rowTitle.createCell(i * 2 + i1);
                SXSSFCell endDateCell = rowTitle.createCell(i * 2 + i1+1);
                beginDateCell.setCellValue(shopName+"开工时间");
                endDateCell.setCellValue(shopName+"完工时间");
                beginDateCell.setCellStyle(title);
                endDateCell.setCellStyle(title);
            }
            SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            for (int i = 0; i < table.size(); i++) {
                ApsPlateProcessShopPlanStat plan = table.get(i);
                /*创建数据行*/
                SXSSFRow dataRow  = sheet.createRow(i+1);
                //主件料号
                SXSSFCell mainPartNumberCell = dataRow.createCell(0);
                mainPartNumberTitle.setCellValue(plan.getMainPartNumber());
                //mainPartNumberTitle.setCellStyle(title);
                mainPartNumberCell.setCellValue(plan.getMainPartNumber());
                //业务类型;
                SXSSFCell businessTypeCell= dataRow.createCell(1);
                businessTypeCell.setCellValue(plan.getBusinessType());
                //businessTypeCell.setCellStyle(title);
                //单据号;
                SXSSFCell documentNumberCell = dataRow.createCell(2);
                documentNumberCell.setCellValue(plan.getDocumentNumber());
               // documentNumberCell.setCellStyle(title);
                //需求分类;
                SXSSFCell requirementTypeCell = dataRow.createCell(3);
                requirementTypeCell.setCellValue(plan.getRequirementType());
               // requirementTypeCell.setCellStyle(title);
                // 单据状态
                SXSSFCell documentStatusCell = dataRow.createCell(4);
                documentStatusCell.setCellValue(plan.getDocumentStatus());
               // documentStatusCell.setCellStyle(title);
                SXSSFCell workCenterCell = dataRow.createCell(5);
                // 审核时间
                SXSSFCell approveDateCell = dataRow.createCell(5);
                approveDateCell.setCellValue("");
                //当前工序
                SXSSFCell workCenterCell = dataRow.createCell(6);
                workCenterCell.setCellValue(plan.getWorkCenter());
               // workCenterCell.setCellStyle(title);
                SXSSFCell itemNumberCell = dataRow.createCell(6);
                //当前工序负责人;
                SXSSFCell departmentCell = dataRow.createCell(7);
                departmentCell.setCellValue(plan.getDepartment());
                /*当前工序状态*/
                SXSSFCell crtPcsStsCell = dataRow.createCell(8);
                crtPcsStsCell.setCellValue(plan.getOpStatus());
                //下一工序
                SXSSFCell nextProcessCell = dataRow.createCell(9);
                nextProcessCell.setCellValue(plan.getNextOpName());
                //下一工序工序负责人
                SXSSFCell nextProcessDeparmentCell = dataRow.createCell(10);
                nextProcessDeparmentCell.setCellValue(plan.getNextProcessDeparment());
                //料号
                SXSSFCell itemNumberCell = dataRow.createCell(11);
                itemNumberCell.setCellValue(plan.getItemNumber());
               // itemNumberCell.setCellStyle(title);
                SXSSFCell drawingNoCell = dataRow.createCell(7);
                // 图号
                SXSSFCell drawingNoCell = dataRow.createCell(12);
                drawingNoCell.setCellValue(plan.getDrawingNo());
               // drawingNoCell.setCellStyle(title);
                SXSSFCell versionNumberCell = dataRow.createCell(8);
               //版本号
                SXSSFCell versionNumberCell = dataRow.createCell(13);
                versionNumberCell.setCellValue(plan.getVersionNumber());
              //  versionNumberCell.setCellStyle(title);
                SXSSFCell productionQuantityCell = dataRow.createCell(9);
                //低阶码
                SXSSFCell lowNumCell = dataRow.createCell(14);
                lowNumCell.setCellValue("");
                //生产数量
                SXSSFCell productionQuantityCell = dataRow.createCell(15);
                productionQuantityCell.setCellValue(plan.getProductionQuantity().toString());
              //  productionQuantityCell.setCellStyle(title);
                SXSSFCell planEndDayCell = dataRow.createCell(10);
                planEndDayCell.setCellValue(plan.getPlanEndDay());
              //  planEndDayCell.setCellStyle(title);
                //工单计划下发时间
                SXSSFCell planSendDateCell = dataRow.createCell(16);
                planSendDateCell.setCellValue("");
                //系统完工时间
                SXSSFCell planEndDayCell = dataRow.createCell(17);
                planEndDayCell.setCellValue(dateFormat.format(plan.getPlanEndDay()));
                SXSSFCell firstShopBeginDateCell = dataRow.createCell(18);
                SXSSFCell firstShopEndDateCell = dataRow.createCell(19);
                plan.getDeptPlans().stream().filter(x->x.getShopName().equals(firstShopName)).findFirst().ifPresent(x->{
                    firstShopBeginDateCell.setCellValue(x.getPlanStartDate());
                    firstShopEndDateCell.setCellValue(x.getPlanEndDate());
                });
                /*焊接件齐套*/
                SXSSFCell hanJieQiTaoCell = dataRow.createCell(20);
                hanJieQiTaoCell.setCellValue("");
                for (int j = 1; j< shopNames.size(); j++) {
                    String shopName = shopNames.get(j);
                    SXSSFCell beginDateCell = dataRow.createCell(j * 2 + i1);
                    SXSSFCell endDateCell = dataRow.createCell(j * 2 + i1+1);
                    plan.getDeptPlans().stream().filter(x->x.getShopName().equals(shopName)).findFirst().ifPresent(x->{
                        beginDateCell.setCellValue(x.getPlanStartDate());
                        endDateCell.setCellValue(x.getPlanEndDate());
                    });
                }
            }
            for (int i = 0; i <  rowTitle.getLastCellNum(); i++) {
                sheet.setColumnWidth(i, 20 * 256);
            }
            wb.write(response.getOutputStream());
        }
        catch (Exception e)
@@ -447,6 +561,10 @@
        style.setFont(titleFont);
        DataFormat dataFormat = wb.createDataFormat();
        style.setDataFormat(dataFormat.getFormat("@"));
        styles.put("title", style);
        return styles;
    }