服务端的TigerApi 框架,基于.NET6 2024 版本
Rodney Chen
2024-07-26 2c8b6a511da5848099f9419b36997716395979a5
工单,工单批次,在制品信息增加物料信息的导航属性
已修改4个文件
272 ■■■■ 文件已修改
Tiger.Api/Controllers/Test/TestController.R.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Model.Net/Entitys/MES/BIZ_MES_WO.cs 247 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Model.Net/Entitys/MES/BIZ_MES_WO_BATCH.cs 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Model.Net/Entitys/MES/MES_WIP_DATA.cs 21 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Api/Controllers/Test/TestController.R.cs
@@ -106,6 +106,7 @@
        [HttpGet]
        public async Task<IActionResult> Get2Async(string param)
        {
            var auth = new AuthOption() { UserId = "admin", ByOrg = true, ByWh = true };
            //var data = await Biz.Db.Queryable<BIZ_ERP_PO>().Where(q => q.BILLTYPE == 11)
            //    //.ByAuth("admin", DbAuth.Org | DbAuth.Wh)
Tiger.Model.Net/Entitys/MES/BIZ_MES_WO.cs
@@ -7,181 +7,181 @@
namespace Tiger.Model
{
    /// <summary>
    /// 实体:工单
    /// 实体:工单
    /// </summary>
    [Description("Primary:ID")]
    [DisplayName("工单")]
    [DisplayName("工单")]
    [Serializable]
    [SugarTable("BIZ_MES_WO")]
    public class BIZ_MES_WO : DbEntityWithAuth
    {
        #region 构造函数
        #region 构造函数
        /// <summary>
        /// 实体:工单
        /// 实体:工单
        /// </summary>
        public BIZ_MES_WO() {}
        #endregion
        #region 公共属性
        #region 公共属性
        /// <summary>
        /// 工单号
        /// 工单号
        /// </summary>
        [DisplayName("工单号")]
        [DisplayName("工单号")]
        public string ORDER_NO { get; set; }
        /// <summary>
        /// 工单类型(0Plan计划|1Standard标准|2Rework返工|3Restructuring在库改制|5Outsourcing委外|6RD研发|7Forecast预测|8Disassemble拆卸)
        /// 工单类型(0Plan计划|1Standard标准|2Rework返工|3Restructuring在库改制|5Outsourcing委外|6RD研发|7Forecast预测|8Disassemble拆卸)
        /// </summary>
        [DisplayName("工单类型(0Plan计划|1Standard标准|2Rework返工|3Restructuring在库改制|5Outsourcing委外|6RD研发|7Forecast预测|8Disassemble拆卸)")]
        [DisplayName("工单类型(0Plan计划|1Standard标准|2Rework返工|3Restructuring在库改制|5Outsourcing委外|6RD研发|7Forecast预测|8Disassemble拆卸)")]
        public int ORDER_TYPE { get; set; }
        /// <summary>
        /// 工单描述
        /// 工单描述
        /// </summary>
        [DisplayName("工单描述")]
        [DisplayName("工单描述")]
        public string ORDER_DESC { get; set; }
        /// <summary>
        /// 父工单
        /// 父工单
        /// </summary>
        [DisplayName("父工单")]
        [DisplayName("父工单")]
        public string PARENT_ORDER { get; set; }
        /// <summary>
        /// 状态(0Init初始化|1Imported已导入|2Release已下发|3Working生产中|4Paused已暂停|5Closed已关闭)
        /// 状态(0Init初始化|1Imported已导入|2Release已下发|3Working生产中|4Paused已暂停|5Closed已关闭)
        /// </summary>
        [DisplayName("状态(0Init初始化|1Imported已导入|2Release已下发|3Working生产中|4Paused已暂停|5Closed已关闭)")]
        [DisplayName("状态(0Init初始化|1Imported已导入|2Release已下发|3Working生产中|4Paused已暂停|5Closed已关闭)")]
        public int STATUS { get; set; }
        /// <summary>
        /// 物料编码
        /// 物料编码
        /// </summary>
        [DisplayName("物料编码")]
        [DisplayName("物料编码")]
        public string ITEM_CODE { get; set; }
        /// <summary>
        /// 物料类型
        /// 物料类型
        /// </summary>
        [DisplayName("物料类型")]
        [DisplayName("物料类型")]
        public string ITEM_TYPE { get; set; }
        /// <summary>
        /// 机型
        /// 机型
        /// </summary>
        [DisplayName("机型")]
        [DisplayName("机型")]
        public string ITEM_MODEL { get; set; }
        /// <summary>
        /// 优先级
        /// 优先级
        /// </summary>
        [DisplayName("优先级")]
        [DisplayName("优先级")]
        public string PRIORITY { get; set; }
        /// <summary>
        /// 客户编码
        /// 客户编码
        /// </summary>
        [DisplayName("客户编码")]
        [DisplayName("客户编码")]
        public string CUST_CODE { get; set; }
        /// <summary>
        /// 路由编码
        /// 路由编码
        /// </summary>
        [DisplayName("路由编码")]
        [DisplayName("路由编码")]
        public string ROUTE_CODE { get; set; }
        /// <summary>
        /// 工艺状态(0WaitSet待配置|1Finish已配置|2Cancel取消|3Close关闭)
        /// 工艺状态(0WaitSet待配置|1Finish已配置|2Cancel取消|3Close关闭)
        /// </summary>
        [DisplayName("工艺状态(0WaitSet待配置|1Finish已配置|2Cancel取消|3Close关闭)")]
        [DisplayName("工艺状态(0WaitSet待配置|1Finish已配置|2Cancel取消|3Close关闭)")]
        public int ROUTE_STATUS { get; set; }
        /// <summary>
        /// 工厂
        /// 工厂
        /// </summary>
        [DisplayName("工厂")]
        [DisplayName("工厂")]
        public string FACTORY { get; set; }
        /// <summary>
        /// 车间编码
        /// 车间编码
        /// </summary>
        [DisplayName("车间编码")]
        [DisplayName("车间编码")]
        public string WS_CODE { get; set; }
        /// <summary>
        /// 计划线体
        /// 计划线体
        /// </summary>
        [DisplayName("计划线体")]
        [DisplayName("计划线体")]
        public string PLAN_LINE { get; set; }
        /// <summary>
        /// 实际线体
        /// 实际线体
        /// </summary>
        [DisplayName("实际线体")]
        [DisplayName("实际线体")]
        public string ACT_LINE { get; set; }
        /// <summary>
        /// 计划开始时间
        /// 计划开始时间
        /// </summary>
        [DisplayName("计划开始时间")]
        [DisplayName("计划开始时间")]
        public DateTime PLAN_START_TIME { get; set; } = DateTime.MinValue;
        /// <summary>
        /// 计划结束时间
        /// 计划结束时间
        /// </summary>
        [DisplayName("计划结束时间")]
        [DisplayName("计划结束时间")]
        public DateTime PLAN_END_TIME { get; set; } = DateTime.MinValue;
        /// <summary>
        /// 实际开始时间
        /// 实际开始时间
        /// </summary>
        [DisplayName("实际开始时间")]
        [DisplayName("实际开始时间")]
        public DateTime ACT_START_TIME { get; set; } = DateTime.MinValue;
        /// <summary>
        /// 实际结束时间
        /// 实际结束时间
        /// </summary>
        [DisplayName("实际结束时间")]
        [DisplayName("实际结束时间")]
        public DateTime ACT_END_TIME { get; set; } = DateTime.MinValue;
        /// <summary>
        /// 标准作业人数
        /// 标准作业人数
        /// </summary>
        [DisplayName("标准作业人数")]
        [DisplayName("标准作业人数")]
        public int STD_WORKER_QTY { get; set; }
        /// <summary>
        /// 实际作业人数
        /// 实际作业人数
        /// </summary>
        [DisplayName("实际作业人数")]
        [DisplayName("实际作业人数")]
        public int ACT_WORKER_QTY { get; set; }
        /// <summary>
        /// 导入时间
        /// 导入时间
        /// </summary>
        [DisplayName("导入时间")]
        [DisplayName("导入时间")]
        public DateTime IMPORT_TIME { get; set; } = DateTime.MinValue;
        /// <summary>
        /// 下发时间
        /// 下发时间
        /// </summary>
        [DisplayName("下发时间")]
        [DisplayName("下发时间")]
        public DateTime RELEASE_TIME { get; set; } = DateTime.MinValue;
        /// <summary>
        /// 下发人
        /// 下发人
        /// </summary>
        [DisplayName("下发人")]
        [DisplayName("下发人")]
        public string RELEASE_USER { get; set; }
        /// <summary>
        /// 变更时间
        /// 变更时间
        /// </summary>
        [DisplayName("变更时间")]
        [DisplayName("变更时间")]
        public DateTime CHANGE_TIME { get; set; } = DateTime.MinValue;
        /// <summary>
        /// 变更人
        /// 变更人
        /// </summary>
        [DisplayName("变更人")]
        [DisplayName("变更人")]
        public string CHANGE_USER { get; set; }
        /// <summary>
        /// 计划数量
        /// 计划数量
        /// </summary>
        [DisplayName("计划数量")]
        [DisplayName("计划数量")]
        public int PLAN_QTY { get; set; }
        /// <summary>
        /// 投入数量
        /// 投入数量
        /// </summary>
        [DisplayName("投入数量")]
        [DisplayName("投入数量")]
        public int INPUT_QTY { get; set; }
        /// <summary>
        /// 完工数量
        /// 完工数量
        /// </summary>
        [DisplayName("完工数量")]
        [DisplayName("完工数量")]
        public int OUTPUT_QTY { get; set; }
        /// <summary>
        /// 报废数量
        /// 报废数量
        /// </summary>
        [DisplayName("报废数量")]
        [DisplayName("报废数量")]
        public int SCRAP_QTY { get; set; }
        /// <summary>
        /// 入库数量
        /// 入库数量
        /// </summary>
        [DisplayName("入库数量")]
        [DisplayName("入库数量")]
        public int STOCK_IN_QTY { get; set; }
        /// <summary>
        /// UPH
@@ -194,118 +194,121 @@
        [DisplayName("UPPH")]
        public double UPPH { get; set; }
        /// <summary>
        /// 最后的工单历史ID
        /// 最后的工单历史ID
        /// </summary>
        [DisplayName("最后的工单历史ID")]
        [DisplayName("最后的工单历史ID")]
        public string LAST_HIST_ID { get; set; }
        /// <summary>
        /// 备注
        /// 备注
        /// </summary>
        [DisplayName("备注")]
        [DisplayName("备注")]
        public string REMARK { get; set; }
        /// <summary>
        /// 接口表记录ID
        /// 接口表记录ID
        /// </summary>
        [DisplayName("接口表记录ID")]
        [DisplayName("接口表记录ID")]
        public string FBILLNO_ID { get; set; }
        /// <summary>
        /// 备料单返回信息
        /// 备料单返回信息
        /// </summary>
        [DisplayName("备料单返回信息")]
        [DisplayName("备料单返回信息")]
        public string PREP_MSG { get; set; }
        #endregion
        #endregion
        #region 虚拟属性
        /*例子
        #region 虚拟属性
        /*例子
        [SugarColumn(IsIgnore = true)]
        public string FieldName { get; set; }
        */
        #endregion
        #endregion
        #region 外键属性
        /*例子
        //一对一外键导航
        [Navigate(NavigateType.OneToOne, nameof(ClassAId))]//一对一 ClassAId是BIZ_MES_WO类里面的外键ID字段
        public ClassA ClassA { get; set; } //注意禁止手动赋值,只能是null
        //一对多外键导航
        [Navigate(NavigateType.OneToMany, nameof(ClassA.BIZ_MES_WOId))]//ClassA表中的BIZ_MES_WOId
        public List<ClassA> ClassAList { get; set; }//注意禁止手动赋值,只能是null
        //多对多外键导航
        [Navigate(typeof(MappingClass), nameof(MappingClass.BIZ_MES_WOId), nameof(MappingClass.ClassAId))]//注意顺序
        public List<ClassA> ClassAList { get; set; } //注意禁止手动赋值,只能是null
        #region 外键属性
        /*例子
        //一对一外键导航
        [Navigate(NavigateType.OneToOne, nameof(ClassAId))]//一对一 ClassAId是BIZ_MES_WO类里面的外键ID字段
        public ClassA ClassA { get; set; } //注意禁止手动赋值,只能是null
        //一对多外键导航
        [Navigate(NavigateType.OneToMany, nameof(ClassA.BIZ_MES_WOId))]//ClassA表中的BIZ_MES_WOId
        public List<ClassA> ClassAList { get; set; }//注意禁止手动赋值,只能是null
        //多对多外键导航
        [Navigate(typeof(MappingClass), nameof(MappingClass.BIZ_MES_WOId), nameof(MappingClass.ClassAId))]//注意顺序
        public List<ClassA> ClassAList { get; set; } //注意禁止手动赋值,只能是null
        */
        #endregion
        [Navigate(NavigateType.OneToMany, nameof(BAS_ITEM.ITEM_CODE), nameof(ITEM_CODE), "GHOST_ROW = 0")]//一对一 ClassAId是MES_WIP_DATA类里面的外键ID字段
        public List<BAS_ITEM> _ItemInfos { get; set; } //注意禁止手动赋值,只能是null
        public BAS_ITEM ItemInfo => _ItemInfos?.FirstOrDefault(q => q.AUTH_ORG == AUTH_ORG);
        #endregion
        #region 枚举变量
        /*例子
        #region 枚举变量
        /*例子
        public enum FieldNames
        {
            [Description("枚举描述0")]
            [Description("枚举描述0")]
            Enum0,
            [Description("枚举描述1")]
            [Description("枚举描述1")]
            Enum1,
        }
        */
        /// <summary>
        /// 枚举:工单类型(0Plan计划|1Standard标准|2Rework返工|3Restructuring在库改制|5Outsourcing委外|6RD研发|7Forecast预测|8Disassemble拆卸)
        /// </summary>
        public enum ORDER_TYPEs
        /// <summary>
        /// 枚举:工单类型(0Plan计划|1Standard标准|2Rework返工|3Restructuring在库改制|5Outsourcing委外|6RD研发|7Forecast预测|8Disassemble拆卸)
        /// </summary>
        public enum ORDER_TYPEs
        {
            [Description("计划")]
            [Description("计划")]
            Plan = 0,
            [Description("标准")]
            [Description("标准")]
            Standard = 1,
            [Description("返工")]
            [Description("返工")]
            Rework = 2,
            [Description("在库改制")]
            [Description("在库改制")]
            Restructuring = 3,
            [Description("委外")]
            [Description("委外")]
            Outsourcing = 5,
            [Description("研发")]
            [Description("研发")]
            RD = 6,
            [Description("预测")]
            [Description("预测")]
            Forecast = 7,
            [Description("拆卸")]
            [Description("拆卸")]
            Disassemble = 8,
        }
        /// <summary>
        /// 枚举:状态(0Init初始化|1Imported已导入|2Release已下发|3Working生产中|4Paused已暂停|5Closed已关闭)
        /// 枚举:状态(0Init初始化|1Imported已导入|2Release已下发|3Working生产中|4Paused已暂停|5Closed已关闭)
        /// </summary>
        public enum STATUSs
        {
            [Description("初始化")]
            [Description("初始化")]
            Init = 0,
            [Description("已导入")]
            [Description("已导入")]
            Imported = 1,
            [Description("已下发")]
            [Description("已下发")]
            Release = 2,
            [Description("生产中")]
            [Description("生产中")]
            Working = 3,
            [Description("已暂停")]
            [Description("已暂停")]
            Paused = 4,
            [Description("已关闭")]
            [Description("已关闭")]
            Closed = 5,
        }
        /// <summary>
        /// 枚举:工艺状态(0WaitSet待配置|1Finish已配置|2Cancel取消|3Close关闭)
        /// 枚举:工艺状态(0WaitSet待配置|1Finish已配置|2Cancel取消|3Close关闭)
        /// </summary>
        public enum ROUTE_STATUSs
        {
            [Description("待配置")]
            [Description("待配置")]
            WaitSet = 0,
            [Description("已配置")]
            [Description("已配置")]
            Finish = 1,
            [Description("取消")]
            [Description("取消")]
            Cancel = 2,
            [Description("关闭")]
            [Description("关闭")]
            Close = 3,
        }
        #endregion
        #region 公共方法
        #region 公共方法
        #endregion
Tiger.Model.Net/Entitys/MES/BIZ_MES_WO_BATCH.cs
@@ -154,6 +154,9 @@
        [Navigate(typeof(MappingClass), nameof(MappingClass.BIZ_MES_WO_BATCHId), nameof(MappingClass.ClassAId))]//注意顺序
        public List<ClassA> ClassAList { get; set; } //注意禁止手动赋值,只能是null
        */
        [Navigate(NavigateType.OneToMany, nameof(BAS_ITEM.ITEM_CODE), nameof(ITEM_CODE), "GHOST_ROW = 0")]//一对一 ClassAId是MES_WIP_DATA类里面的外键ID字段
        public List<BAS_ITEM> _ItemInfos { get; set; } //注意禁止手动赋值,只能是null
        public BAS_ITEM ItemInfo => _ItemInfos?.FirstOrDefault(q => q.AUTH_ORG == AUTH_ORG);
        #endregion
        #region 枚举变量
Tiger.Model.Net/Entitys/MES/MES_WIP_DATA.cs
@@ -218,17 +218,17 @@
        /// </summary>
        [DisplayName("备注")]
        public string REMARK { get; set; }
        #endregion
        #endregion
        #region 虚拟属性
        /*例子
        #region 虚拟属性
        /*例子
        [SugarColumn(IsIgnore = true)]
        public string FieldName { get; set; }
        */
        #endregion
        #endregion
        #region 外键属性
        /*例子
        #region 外键属性
        /*例子
        //一对一外键导航
        [Navigate(NavigateType.OneToOne, nameof(ClassAId))]//一对一 ClassAId是MES_WIP_DATA类里面的外键ID字段
        public ClassA ClassA { get; set; } //注意禁止手动赋值,只能是null
@@ -239,10 +239,11 @@
        [Navigate(typeof(MappingClass), nameof(MappingClass.MES_WIP_DATAId), nameof(MappingClass.ClassAId))]//注意顺序
        public List<ClassA> ClassAList { get; set; } //注意禁止手动赋值,只能是null
        */
        [Navigate(NavigateType.OneToOne, nameof(ITEM_CODE), nameof(BAS_ITEM.ITEM_CODE), "GHOST_ROW = 0")]//一对一 ClassAId是MES_WIP_DATA类里面的外键ID字段
        public BAS_ITEM ItemInfo { get; set; } //注意禁止手动赋值,只能是null
        //[Navigate(NavigateType.OneToMany, nameof(BAS_ITEM.ITEM_CODE), nameof(ITEM_CODE), "GHOST_ROW = 0")]//一对一 ClassAId是MES_WIP_DATA类里面的外键ID字段
        //public List<BAS_ITEM> ItemInfos { get; set; } //注意禁止手动赋值,只能是null
        //[Navigate(NavigateType.OneToOne, nameof(ITEM_CODE), nameof(BAS_ITEM.ITEM_CODE), "GHOST_ROW = 0")]//一对一 ClassAId是MES_WIP_DATA类里面的外键ID字段
        //public BAS_ITEM ItemInfo { get; set; } //注意禁止手动赋值,只能是null
        [Navigate(NavigateType.OneToMany, nameof(BAS_ITEM.ITEM_CODE), nameof(ITEM_CODE), "GHOST_ROW = 0")]//一对一 ClassAId是MES_WIP_DATA类里面的外键ID字段
        public List<BAS_ITEM> _ItemInfos { get; set; } //注意禁止手动赋值,只能是null
        public BAS_ITEM ItemInfo => _ItemInfos?.FirstOrDefault(q => q.AUTH_ORG == AUTH_ORG);
        [Navigate(NavigateType.OneToMany, nameof(MES_WIP_HIS.SN), nameof(SN), "GHOST_ROW = 0")]//ClassA表中的MES_WIP_DATAId
        public List<MES_WIP_HIS> _History { get; set; }//注意禁止手动赋值,只能是null
        public List<MES_WIP_HIS> History => _History ?? new List<MES_WIP_HIS>();