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_MACHINE_GROUP = "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; } public String subNodeParentIds(){ return this.parentIds+","+this.getId(); } /** * 组装程序名称 * @return 程序名称 */ public String programName(){ return this.drawingNo+"-"+this.getProcessNo()+"-"+this.getProcessEdition(); } }