yangys
2025-09-13 e853c35455332a4652ec604c650ca82c411c864d
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
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
package org.springblade.mdm.program.entity;
 
import com.alibaba.excel.util.StringUtils;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Getter;
import lombok.Setter;
import org.springblade.core.mp.base.BizEntity;
import org.springblade.mdm.flow.entity.FlowProgramFile;
 
import java.util.Date;
 
 
@Setter
@Getter
@TableName("mdm_nc_node")
public class NcNode extends BizEntity {
    /**
     * 节点类型: 程序状态 10
     */
    public static final String TYPE_PROGRAM_STATUS = "10";
    /*
    产品型号
     */
    public static final String TYPE_PRODUCT_MODEL = "15";
    /**
     * 节点类型: 零组件号/图号 10
     */
    public static final String TYPE_DRAWING_NO = "20";
    /**
     * 工艺版次
     *
     */
    public static final String TYPE_CRAFT_EDITION = "30";
    /**
     * 工序号
     *
     */
    public static final String TYPE_PROCESS_NO = "40";
    /**
     * 工序版次
     */
    public static final String TYPE_PROCESS_EDITION = "45";
    /**
     * 加工机床
     */
    public static final String TYPE_MACHINE_CODE = "50";
    /**
     * 程序包名
     */
    public static final String TYPE_PROGRAM_PACKAGE = "60";
 
    /**
     * 程序文件
     */
    public static final String TYPE_PROGRAM_FILE = "70";
 
    /**
     * 未锁定
     */
    public static final int UNLOCK = 0;
    /**
     * 已锁定
     */
    public static final int LOCKED = 1;
 
    /**
     * 文件节点文件类型:程序
     */
    public static final String FILE_CATEGOAY_PROGRAM = "program";
    /**
     * 文件节点文件类型:其他
     */
    public static final String FILE_CATEGORY_OTHER = "other";
    /**
     * 文件节点文件类型:子程序
     */
    public static final String FILE_CATEGORY_SUBPROGRAM = "subprogram";
 
    private String name;
    private Long parentId;
 
    /**
     * 上级父id集合
     */
    private String parentIds;
    /**
     * 设备编号
     */
    private String machineCode;
 
    /**
     * 机床组字典吗
     */
    private String machineGroupCode;
    /**
     * 工序,如“精铣”
     */
    private String processName;
 
    /**
     * 工序版次
     */
    private String processEdition;
 
    /**
     * 工艺版次
     */
    private String craftEdition;
    /**
     * 是否最新版次,1:最新版次;0:历史版次
     */
    private Integer isLastEdition = 1;
    /**
     * 零组件号/图号
     */
    private String drawingNo;
    /**
     * 图号版次
     */
    private String drawingNoEdition;
 
    /**
     * 是否固化
     */
    private Integer isCured = 0;
    /**
     * 过期日期
     */
    private Date expireDate;
    /**
     * 是否锁定
     */
    private Integer isLocked = 0;
    /**
     * 节点类型:字典
      */
    private String nodeType;
 
    private String description;
    private String remark;
    //0808新增
    /**
     * 程序文件节点的数据
     */
    private String processNo;
    /**
     * 产品型号
     */
    private String productModel;
 
    /**
     * 程序编号(程序包名节点需要)
     */
    private String programNo;
 
    /**
     * 历史序列号
     */
    private Long hisSerial;
 
    /**
     * 流程程序文件id,只有程序文件(70)类型的节点有此值
     */
    private Long flowProgramFileId;
 
    /**
     * 审批时的流程实例id,只有程序包节点有这个字段值
     */
    private String processInstanceId;
    /**
     * 偏离单号
     */
    private String deviation;
    /**
     * 版本号,更新一次(入升版,dnc导入),就会+1
     */
    private Integer versionNumber = 1;
 
    transient FlowProgramFile flowProgramFile;
 
    /**
     * 是否是偏离程序
     * @return 是否偏离
     */
    public boolean isDeviationProgram(){
        return StringUtils.isNotBlank(this.deviation);
    }
    /**
     * 根据当前版本号,获取新增版本号
     * @return 升级后的版本号
     */
    public int genNewVersionNumber(){
        if(this.versionNumber == null){
            return 1;
        }else{
            return this.versionNumber + 1;
        }
    }
 
    /**
     * 是否在有效期内
     * @return 是否
     */
    public boolean withinValidityPeriod() {
        if(expireDate == null){
            return true;
        }
        return expireDate.getTime() > System.currentTimeMillis();
    }
 
    /**
     * 是否已经固化
     * @return 是否
     */
    public boolean hasCured() {
        return this.isCured != null && this.isCured == 1;
    }
 
    public void upgradeVersionNumber() {
        this.versionNumber = genNewVersionNumber();
    }
 
    /**
     * 锁定节点
     */
    public void lock() {
        this.isLocked = LOCKED;
    }
 
    /**
     * 锁定节点
     * @param remark 锁定原因
     */
    public void lock(String remark) {
        this.isLocked = LOCKED;
        this.remark = remark;
    }
 
    public void unlock() {
        this.isLocked = UNLOCK;
    }
 
    /**
     * 是否已锁定
     * @return 是否
     */
    public boolean hasLocked() {
        return this.isLocked != null && this.isLocked == LOCKED;
    }
}