yangys
2025-09-25 31ecdb8c700529a59dd762f0c47f0ed9c66d5092
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
package org.springblade.mdm.machinefile.controller;
 
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.servlet.http.HttpServletResponse;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.excel.util.ExcelUtil;
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.BeanUtil;
import org.springblade.core.tool.utils.DateUtil;
import org.springblade.core.tool.utils.Func;
import org.springblade.core.tool.utils.UrlUtil;
import org.springblade.mdm.commons.service.OssFileCommonService;
import org.springblade.mdm.machinefile.entity.FileSendRecord;
import org.springblade.mdm.machinefile.entity.MachineAcceptedFile;
import org.springblade.mdm.machinefile.service.MachineFileService;
import org.springblade.mdm.machinefile.service.MachineAcceptedFileService;
import org.springblade.mdm.machinefile.service.NcProgramExportInnerService;
import org.springblade.mdm.machinefile.vo.MachineBackFileHandleExcelVO;
import org.springblade.mdm.machinefile.vo.MachineAcceptedFileHandleQueryVO;
import org.springblade.mdm.machinefile.vo.MachineAcceptedFileVO;
import org.springblade.mdm.program.service.programannotation.AnnotationUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
 
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
 
@Slf4j
@RestController
@AllArgsConstructor
@RequestMapping("/machinefile/filehandle")
@Tag(name = "机床回传程序处理", description = "机床回传程序处理")
public class MachineAcceptedFileHandleController {
    private final OssFileCommonService ossFileCommonService;
    private final MachineAcceptedFileService acceptedFileService;
    private final NcProgramExportInnerService ncProgramExportInnerService;
    /**
     * 分页
     */
    @Operation(summary = "机床回传文件处理分页查询", description = "名称或编码,已接受的文件列表")
    @GetMapping("/page")
    public R<IPage<MachineAcceptedFileVO>> page(MachineAcceptedFileHandleQueryVO query) {
        IPage<MachineAcceptedFileVO> pages = acceptedFileService.handlePageQuery(query);
        return R.data(pages);
    }
 
    @GetMapping("/download-by-id")
    @Operation(summary = "下发文件记录列表", description = "下发文件记录列表")
    public void downloadByRecordId(Long id,HttpServletResponse response) throws IOException {
        MachineAcceptedFile acceptedFile = acceptedFileService.getById(id);
        ossFileCommonService.download(acceptedFile.getOssName(),acceptedFile.getName(),response);
    }
 
    @GetMapping("export-to-inner")
    @ApiOperationSupport(order = 13)
    @Operation(summary = "导出到涉密网", description = "导出到涉密网")
    public void exportToInner(@Parameter(description = "机床接收文件id数组") String ids, HttpServletResponse response) {
 
        if(Func.isBlank(ids)) {
            throw new ServiceException("未选择文件导出");
        }
        try {
            String prefix = UrlUtil.encode(AuthUtil.getNickName()+"-工控网导出");
            String filename = prefix+"-"+ DateUtil.format(DateUtil.now(), "yyyyMMddHHmm")+".zip";
 
            response.setHeader("Content-Disposition", "attachment; filename="+filename);
            response.setContentType("application/octet-stream");
            ncProgramExportInnerService.exportToInner(Func.toLongList(ids),response.getOutputStream());
        } catch (IOException e) {
            log.error("工控网导出回传文件异常", e);
            throw new RuntimeException(e);
        }
 
    }
 
    @Operation(summary = "回传程序处理导出Excel", description = "回传程序处理导出Excel")
    @GetMapping("/export-excel")
    public void exportExcel(MachineAcceptedFileHandleQueryVO query, HttpServletResponse response) {
        query.setCurrent(1);
        query.setSize(Integer.MAX_VALUE);
 
        //IPage<MachineAcceptedFileVO> pages = machineFileService.handlePageQuery(query);
        IPage<MachineAcceptedFileVO> pages = acceptedFileService.handlePageQuery(query);
        List<MachineBackFileHandleExcelVO> list = new ArrayList<>();
        pages.getRecords().forEach(vo ->{
            MachineBackFileHandleExcelVO excelVO = new MachineBackFileHandleExcelVO();
            BeanUtil.copyProperties(vo, excelVO);
            excelVO.setProgramStatusName(parseProgramStatusName(vo.getProgramStatus()));
 
            list.add(excelVO);
        });
        ExcelUtil.export(response, "机床回传程序" + DateUtil.time(), "机床回传程序表", list, MachineBackFileHandleExcelVO.class);
    }
 
    /**
     * 转换状态为显示文本
     * @param programStatus 程序状态编码
     * @return 状态名称
     */
    String parseProgramStatusName(String programStatus){
        if(programStatus == null){
            return "未知";
        }
        return switch (programStatus) {
            case AnnotationUtil.SQ -> "试切";
            case AnnotationUtil.GH -> "固化";
            case AnnotationUtil.LG -> "临时更改单";
            default -> "未知";
        };
    }
}