yangys
2025-07-07 4301ffcfa7d715d7341cb77ba29dee24366fb2a3
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
120
121
122
123
124
125
126
127
128
129
130
 
package org.springblade.mdm.program.controller;
 
import com.baomidou.mybatisplus.core.metadata.IPage;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.flowable.engine.task.Comment;
import org.flowable.task.api.history.HistoricTaskInstance;
import org.springblade.core.tenant.annotation.NonDS;
import org.springblade.core.tool.api.R;
import org.springblade.mdm.flow.service.ApproveRecordService;
import org.springblade.mdm.flow.vo.ApproveRecordVO;
import org.springblade.mdm.flow.vo.TaskTraceVO;
import org.springblade.mdm.program.entity.NcProgram;
import org.springblade.mdm.program.service.NcProgramService;
import org.springblade.mdm.program.service.ProcessProgRefService;
import org.springblade.mdm.program.vo.NcNodeProgramQueryVO;
import org.springblade.mdm.program.vo.NcProgramUploadVO;
import org.springblade.mdm.program.vo.NcProgramVO;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
 
import java.util.ArrayList;
import java.util.List;
 
/**
 * 程序节点
 *
 * @author yangys
 */
@NonDS
@RestController
@RequestMapping("/program/ncfile")
@AllArgsConstructor
@Tag(name = "数控程序", description = "数控程序")
@Slf4j
public class NcProgramController {
 
    private final NcProgramService ncProgramService;
    private final ProcessProgRefService ncProcessProgRefService;
 
    private final ApproveRecordService approveRecordService;
 
    @PostMapping("/upload")
    @Operation(summary = "上传文件", description = "上传程序/附件文件")
    public R<Boolean> upload(NcProgramUploadVO uploadVO) {
        //@Parameter(description="文件") @RequestPart("file") MultipartFile file, @Parameter(description="所属节点ID")@RequestParam Long nodeId,
        //                             @Parameter(description="文件分类,使用字典(node_file_type)") @RequestParam String category
        ncProgramService.uploadProgramFileNew(uploadVO);
        return R.<Boolean>status(true);
    }
 
    @PostMapping("/remove")
    @Operation(summary = "删除程序文件", description = "")
    public R<Boolean> removeFile(Long id) {
        try {
            ncProgramService.removeProgram(id);
            return R.success();
        }catch(Exception e) {
            log.error("删除文件失败",e);
            return R.fail(e.getMessage());
        }
    }
 
    @GetMapping("/content")
    @Operation(summary = "获取文件内容", description = "仅限文本格式的内容,二进制文件将返回空串")
    public R<String> fileContent(@Parameter(description = "程序文件id") Long id) {
        try {
            return R.data(ncProgramService.getFileContent(id));
        }catch(Exception e) {
            log.error("删除文件失败",e);
            return R.fail(e.getMessage());
        }
    }
    @GetMapping("/content-by-nodeid")
    @Operation(summary = "根据节点获取文件内容", description = "仅限文本格式的内容,二进制文件将返回空串")
    public R<String> fileContentByNodeId(@Parameter(description = "节点id") Long nodeId) {
        try {
            return R.data(ncProgramService.getFileContentByNodeId(nodeId));
        }catch(Exception e) {
            log.error("删除文件失败",e);
            return R.fail(e.getMessage());
        }
    }
 
    @GetMapping("/list-by-node")
    @Operation(summary = "节点程序文件列表", description = "某节点内的程序列表,仅‘程序包’字典值60")
    public R<List<NcProgramVO>> listByNode(@Parameter(description="所属节点ID")@RequestParam Long nodeId) {
        return R.data(ncProgramService.listByNode(nodeId));
    }
 
    @PostMapping("/upgrade-process-edition")
    @Operation(summary = "升版", description = "升级工序版次")
    public R<Boolean> upgradeProcessEdition(Long id,String newProcessEdition ) {
        ncProgramService.upgradeProcessEdition(id,newProcessEdition);
        return R.<Boolean>status(true);
    }
 
    @Operation(summary = "程序分页查询", description = "用于在编制节点选择流程对应的程序")
    @GetMapping("/programpickpage")
    public R<IPage<NcProgramVO>> page(NcNodeProgramQueryVO query) {
        IPage<NcProgramVO> pages = ncProgramService.pageQuery(query);
        return R.data(pages);
    }
 
    @GetMapping("/list-by-process")
    @Operation(summary = "流程已选程序文件列表", description = "流程已选程序列表")
    public R<List<NcProgramVO>> listByProcess(@Parameter(description="所属节点ID")@RequestParam String processInstanceId) {
        return R.data(ncProcessProgRefService.listByProcess(processInstanceId));
    }
 
    @Operation(summary = "操作日志", description = "程序操作日志,即审批记录,在主页点击某一个程序后的下方标签显示")
    @GetMapping("approve-records")
    public R<List<ApproveRecordVO>> processTrace1(@Parameter(description = "程序id") Long ncProgramId){
        List<TaskTraceVO> result = new ArrayList<>();
 
        return R.data(approveRecordService.listByNcProgramId(ncProgramId));
    }
 
    @PostMapping("/send")
    @Operation(summary = "程序下发", description = "工控网数控程序下发(发送到机床配置的下发目录)")
    public R<List<NcProgramVO>> send(@Parameter(description="所属节点ID")@RequestParam Long id) {
        return null;//R.data(ncProcessProgRefService.listByProcess(processInstanceId));
    }
}