yangys
2025-06-27 26f07223e1b33a8eb5ee184041575e9b204cfebe
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
/**
 * BladeX Commercial License Agreement
 * Copyright (c) 2018-2099, https://bladex.cn. All rights reserved.
 * <p>
 * Use of this software is governed by the Commercial License Agreement
 * obtained after purchasing a license from BladeX.
 * <p>
 * 1. This software is for development use only under a valid license
 * from BladeX.
 * <p>
 * 2. Redistribution of this software's source code to any third party
 * without a commercial license is strictly prohibited.
 * <p>
 * 3. Licensees may copyright their own code but cannot use segments
 * from this software for such purposes. Copyright of this software
 * remains with BladeX.
 * <p>
 * Using this software signifies agreement to this License, and the software
 * must not be used for illegal purposes.
 * <p>
 * THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY. The author is
 * not liable for any claims arising from secondary or illegal development.
 * <p>
 * Author: Chill Zhuang (bladejava@qq.com)
 */
package org.springblade.mdm.program.service;
 
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.IOUtils;
import org.flowable.engine.*;
import org.springblade.core.mp.base.BizServiceImpl;
import org.springblade.core.oss.OssTemplate;
import org.springblade.core.oss.model.BladeFile;
import org.springblade.mdm.basesetting.machine.MachineService;
import org.springblade.mdm.basesetting.machine.entity.Machine;
import org.springblade.mdm.program.mapper.NcProgramMapper;
import org.springblade.mdm.program.entity.NcProgram;
import org.springblade.mdm.program.vo.DncSendBackData;
import org.springblade.mdm.utils.FileContentUtil;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
 
import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.List;
 
/**
 * 工作流服务实现类
 *
 * @author Chill
 */
@Slf4j
@Service
@AllArgsConstructor
public class NcProgramService  extends BizServiceImpl<NcProgramMapper, NcProgram> {
 
    private final MachineService machineService;
 
    private final OssTemplate ossTemplate;
    /**
     * 查询现有固化的程序,暂定条件:零组件号相同,且是同一机床组
     * @param partNo
     * @param machineCode
     * @return
     */
    public NcProgram getCuredNcProgram(String partNo,String machineCode) {
        Machine machine = machineService.getByCode(machineCode);
        return this.getBaseMapper().getCuredNcProgram(partNo,machine.getMachineGroupCode());
    }
 
 
    /**
     * 上传程序文件到指定节点
     * @param file
     * @param nodeId
     * @param category 文件分类(程序文件/其他文件)
     */
    public void uploadProgramFile(MultipartFile file, Long nodeId, String category) {
        BladeFile bfile = ossTemplate.putFile(file);
        String link = bfile.getLink();
        //保存profame
        NcProgram prog = new NcProgram();
        prog.setName(file.getOriginalFilename());
        prog.setNcNodeId(nodeId);
        prog.setOssName(bfile.getName());
        boolean isTextFile = false;
        try {
            isTextFile = FileContentUtil.isTextFile(file.getInputStream());
        } catch (IOException e) {
            log.warn("判断是否文本文件异常",e);
        }
        prog.setIsTextFile(isTextFile);
        prog.setUrl(link);
        prog.setCategory(category);
 
        this.save(prog);
    }
 
    /**
     * 删除一个程序
     * @param id
     */
    public String getFileContent(Long id) {
        String result  ="";
 
        NcProgram prog = this.getById(id);
        String fileName = prog.getOssName();
        try (InputStream inputStream = ossTemplate.statFileStream(fileName)) {
            result = IOUtils.toString(inputStream, StandardCharsets.UTF_8);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        return result;
    }
    /**
     * 删除一个程序
     * @param id
     */
    public void removeProgram(Long id) {
        NcProgram prog = this.getById(id);
        ossTemplate.removeFile(prog.getOssName());
        this.getBaseMapper().deleteById(id);
    }
}