yangys
2025-08-31 76c5b07b6f1dd66e1eaf777bf3f6770b6ac85925
修复工控网导出涉密网功能
已修改7个文件
61 ■■■■ 文件已修改
blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/controller/MachineAcceptedFileHandleController.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/entity/MachineAcceptedFile.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/mapper/MachineAcceptedFileMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/service/MachineAcceptedFileService.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/service/NcProgramExportInnerService.java 40 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/vo/MachineAcceptedFileVO.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/vo/MachineBackFileHandleExcelVO.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/controller/MachineAcceptedFileHandleController.java
@@ -36,7 +36,6 @@
public class MachineAcceptedFileHandleController {
    private final MachineAcceptedFileService acceptedFileService;
    private final MachineFileService machineFileService;
    private final NcProgramExportInnerService ncProgramExportInnerService;
    /**
     * 分页
@@ -51,7 +50,7 @@
    @GetMapping("export-to-inner")
    @ApiOperationSupport(order = 13)
    @Operation(summary = "导出到涉密网", description = "导出到涉密网")
    public void exportToInner(@Parameter(description = "审批表id数组") String ids, HttpServletResponse response) {
    public void exportToInner(@Parameter(description = "机床接收文件id数组") String ids, HttpServletResponse response) {
        if(Func.isBlank(ids)) {
            throw new ServiceException("未选择文件导出");
blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/entity/MachineAcceptedFile.java
@@ -14,15 +14,19 @@
@Getter
@TableName("mdm_machine_accepted_file")
public class MachineAcceptedFile extends BizEntity {
    /**
     * 文件名
     */
    private String name;
    /**
     * 机床文件的id
     */
    private Long machineFileId;
    /**
     * 确认时间
     * 导出时间
     */
    private Date confirmTime;
    private Date exportTime;
    /**
     * 对象存储文件名
     */
blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/mapper/MachineAcceptedFileMapper.xml
@@ -22,7 +22,7 @@
-->
    <!--机床回传程序处理分页-->
    <select id="handlePageQuery" resultType="org.springblade.mdm.machinefile.vo.MachineAcceptedFileVO">
        select f.id,mf.name,f.create_time,m.code machine_code, m.name machine_name,f.create_time,mf.program_status,mf.file_create_time
        select f.id,f.name,f.create_time,m.code machine_code, m.name machine_name,f.create_time,mf.program_status,mf.file_create_time,f.export_time,f.create_time
        from mdm_machine_accepted_file f
            left join mdm_machine_file mf on f.machine_file_id=mf.id
        left join mdm_machine m on mf.machine_code=m.code
blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/service/MachineAcceptedFileService.java
@@ -82,6 +82,7 @@
        //新建一个machineaceptedfile对象,存储接收后的数据
        MachineAcceptedFile machineAcceptedFile = new MachineAcceptedFile();
        machineAcceptedFile.setMachineFileId(machineFileId);
        machineAcceptedFile.setName(machineFile.getName());
        String fullPath = machineFileService.getFilePath(machineFile);
        try(InputStream inputStream = Files.newInputStream(Paths.get(fullPath));){
            BladeFile bfile = ossTemplate.putFile(machineFile.getName(),inputStream);
blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/service/NcProgramExportInnerService.java
@@ -6,13 +6,13 @@
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.mp.base.BizServiceImpl;
import org.springblade.core.oss.OssTemplate;
import org.springblade.mdm.machinefile.entity.MachineFile;
import org.springblade.core.tool.utils.DateUtil;
import org.springblade.mdm.machinefile.entity.MachineAcceptedFile;
import org.springblade.mdm.program.entity.NcProgramExchange;
import org.springblade.mdm.program.mapper.NcProgramExchangeMapper;
import org.springblade.mdm.program.service.NcNodeService;
import org.springblade.mdm.program.service.NcProgramService;
import org.springblade.mdm.utils.ProgramFileNameParser;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.io.IOException;
import java.io.InputStream;
@@ -30,41 +30,39 @@
@Service
@AllArgsConstructor
public class NcProgramExportInnerService extends BizServiceImpl<NcProgramExchangeMapper, NcProgramExchange> {
    private final MachineAcceptedFileService machineBackFileService;
    private final NcProgramService progService;
    private final MachineFileService machineFileService;
    private final NcNodeService ncNodeService;
    private final MachineAcceptedFileService machineAcceptedService;
    private final OssTemplate ossTemplate;
    public static final String PROGRAM_JSON_FILE = "exp_mdm_nc_program.json";
    public static final String NODE_JSON_FILE = "exp_mdm_nc_node.json";
    public static final String APPROVE_RECORD_JSON_FILE = "exp_mdm_approve_record.json";
    /**
     * 导出到涉密网
     * @param machineFileIds
     * @param acceptedFileIds
     * @param os
     * @throws IOException
     */
    public void exportToInner(List<Long> machineFileIds, ServletOutputStream os) throws IOException {
        //FileOutputStream fos = new FileOutputStream("d:/exportDnc.zip");
    @Transactional
    public void exportToInner(List<Long> acceptedFileIds, ServletOutputStream os) throws IOException {
        try (ZipOutputStream zipOut = new ZipOutputStream(os);) {//os
            List<MachineFile>  machineFiles = machineFileService.lambdaQuery().in(MachineFile::getId,machineFileIds).list();
            Map<String,List<MachineFile>> map =  machineFiles.stream()
            List<MachineAcceptedFile>  acceptedFiles = machineAcceptedService.lambdaQuery().in(MachineAcceptedFile::getId,acceptedFileIds).list();
            Map<String,List<MachineAcceptedFile>> map =  acceptedFiles.stream()
                .collect(Collectors.groupingBy(s -> ProgramFileNameParser.parseProgramName(s.getName()).logicProgramName()));
            for (Map.Entry<String, List<MachineFile>> entry : map.entrySet()) {
            List<MachineAcceptedFile> exportedFiles = new ArrayList<>();
            for (Map.Entry<String, List<MachineAcceptedFile>> entry : map.entrySet()) {
                String programName = entry.getKey();
                List<MachineFile> progMachineFiles = entry.getValue();
                for (MachineFile mf : progMachineFiles) {
                    try(InputStream ins = machineFileService.getInputStream(mf)) {
                        addInputStreamToZip(zipOut,ins , programName + "/" + mf.getName());
                List<MachineAcceptedFile> acceptedFileList = entry.getValue();
                for (MachineAcceptedFile acceptedFile : acceptedFileList) {
                    try(InputStream ins = ossTemplate.statFileStream(acceptedFile.getOssName()) ) {
                        addInputStreamToZip(zipOut,ins , programName + "/" + acceptedFile.getName());
                    }
                    acceptedFile.setExportTime(DateUtil.now());
                }
            }
            machineAcceptedService.updateBatchById(acceptedFiles);
        }
        os.close();
blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/vo/MachineAcceptedFileVO.java
@@ -21,8 +21,8 @@
    private Integer programStatus;
    @Schema(description = "文件到达时间")
    private Date fileCreateTime;
    @Schema(description = "确认时间")
    private Date determineTime;
    @Schema(description = "导出时间")
    private Date exportTime;
}
blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/vo/MachineBackFileHandleExcelVO.java
@@ -33,4 +33,7 @@
    @ExcelProperty("文件到达时间")
    private Date fileCreateTime;
    @DateTimeFormat("yyyy-MM-dd HH:mm:ss")
    @ExcelProperty("导出时间")
    private Date exportTime;
}