yangys
2025-09-29 4c7296d45efe849dc70a3b2e2240c905481a91c9
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/entity/NcNode.java
@@ -1,22 +1,266 @@
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.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Date;
@Setter
@Getter
@TableName("mdm_nc_node")
public class NcNode extends BizEntity {
   private String name;
   private Long parentId;
   /**
    * 节点类型: 程序状态 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();
   }
}