buhuazhen
2026-04-25 5035c404359e536bcdaa2668318ecd3b38c72584
src/main/java/com/ruoyi/production/service/impl/ProductionPrintOrderServiceImpl.java
@@ -2,11 +2,17 @@
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.io.IoUtil;
import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.basic.excel.ProductionPrintOrderExcel;
import com.ruoyi.basic.service.CustomerFollowUpFileService;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.dto.SimplePersonDto;
import com.ruoyi.production.dto.*;
import com.ruoyi.production.mapper.ProductOrderMapper;
@@ -15,9 +21,11 @@
import com.ruoyi.production.pojo.ProductionPrintOrder;
import com.ruoyi.production.service.ProductionPrintOrderService;
import lombok.RequiredArgsConstructor;
import org.jetbrains.annotations.Nullable;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
@@ -36,6 +44,7 @@
    private final ProductOrderMapper productOrderMapper;
    private final ProcessRouteServiceImpl processRouteService;
    private final ProductionPrintOrderExcel productionPrintOrderExcel;
    private final CustomerFollowUpFileService customerFollowUpFileService;
    @Override
@@ -58,7 +67,7 @@
            pdto.setProcessRouteName(it.getProcessName());
            pdto.setProcessRouteOpenNum(it.getOpenCount());
            pdto.setProcessRouteNum(it.getProcessPositive());
            pdto.setProcessRouteAddNum(it.getProcessPositive());
            pdto.setProcessRouteAddNum(it.getAllowanceQty());
//            pdto.setProcessRouteRequire(); 工艺要求
            pdto.setProductModelId(Long.valueOf(materialInfoDtoFirst.getProductModelId()));
            pdto.setUserIds(it.getReportWorkerList().stream().map(SimplePersonDto::getUserId).map(String::valueOf).collect(Collectors.joining(",")));
@@ -111,6 +120,46 @@
            map -> new ArrayList<>(map.values())
        ));
    }
    @Override
    public void exportPrintExcelByWordId(@Nullable Long orderId) {
        ProductionPrintOrderDto printOrderDto = this.getByProductWordId(orderId);
        List<MaterialInfoDto> materialInfo = printOrderDto.getMaterialInfo();
        Assert.isTrue(CollUtil.isNotEmpty(materialInfo),"未有材料信息,请添加改信息!");
        MaterialInfoDto materialInfoDto = materialInfo.get(0);
        ExportProductionPrintOrderDto exportProductionPrintOrderDto = BeanUtil.copyProperties(printOrderDto, ExportProductionPrintOrderDto.class);
        exportProductionPrintOrderDto.setNumSuffix(materialInfoDto.getNumSuffix());
        exportProductionPrintOrderDto.setUnitSuffix(materialInfoDto.getUnitSuffix());
        exportProductionPrintOrderDto.setPriceSuffix(materialInfoDto.getPriceSuffix());
        StringUtils.fillStringNull(exportProductionPrintOrderDto);
        // 日期修正为 yyyy年 MM 月 mm 日
        exportProductionPrintOrderDto.setPrintOrderTimeStr(DateUtil.format(exportProductionPrintOrderDto.getPrintOrderTime(),"yyyy年 MM 月 mm 日"));
        exportProductionPrintOrderDto.setFinishTimeStr(DateUtil.format(exportProductionPrintOrderDto.getFinishTime(),"yyyy年 MM 月 mm 日"));
        // 介绍信 勾选框
        String introductionLetter = exportProductionPrintOrderDto.getIntroductionLetter();
        List<String> introductionLetterItem = StrUtil.split(introductionLetter, ",");
        exportProductionPrintOrderDto.setIntroductionLetter1(introductionLetterItem.contains("介绍信")?"R" : "£");
        exportProductionPrintOrderDto.setIntroductionLetter2(introductionLetterItem.contains("商标注册")?"R" : "£");
        exportProductionPrintOrderDto.setIntroductionLetter3(introductionLetterItem.contains("委印单")?"R" : "£");
        exportProductionPrintOrderDto.setIntroductionLetter4(introductionLetterItem.contains("书号")?"R" : "£");
        // 切料图示
        exportProductionPrintOrderDto.setCuttingDiagramCheckout1("平张".equals(exportProductionPrintOrderDto.getCuttingDiagramCheckout())?"R" : "£");
        exportProductionPrintOrderDto.setCuttingDiagramCheckout2("卷筒".equals(exportProductionPrintOrderDto.getCuttingDiagramCheckout())?"R" : "£");
        // 读取图片信息
        if(exportProductionPrintOrderDto.getCuttingFileVo() != null){
            byte[] bytes = FileUtil.readBytes(exportProductionPrintOrderDto.getCuttingFileVo().getFileUrl());
            exportProductionPrintOrderDto.setCuttingImage(bytes);
        }
        productionPrintOrderExcel.createPrintOrderTemplate(exportProductionPrintOrderDto, IoUtil.toStream(new File("/Users/ONEX/Downloads/printOrderTemp.xlsx")));
    }
}