Quellcode durchsuchen

新增库存流水归档功能及并发控制

在 `BaseController.cs` 中添加 `WmsServiceExportMq` 方法,并实现了对 Redis 的并发控制。
在 `FjController.cs` 中新增 `InvFlowMoveToHistory` 方法,支持库存流水信息的归档,并使用并发控制。
在 `IFJService.cs` 中声明了 `InvFlowMoveToHistory` 接口。
更新 `FJService.cs`,添加 `_invFlowHistoryRepository` 以支持历史数据操作。
在 `WmsPrifile.cs` 中配置了 `Bill_InvflowHistory` 的映射。
在 `RepositoryTask.cs` 中新增批量插入支持。
新增 `Bill_InvflowHistory.cs` 文件,定义库存流水数据历史表的结构。
林豪 左 vor 4 Wochen
Ursprung
Commit
1197fe904d

+ 46 - 3
wms.api/Controllers/BaseController.cs

@@ -55,7 +55,7 @@ namespace wms.api.Controllers
         {
             var res = new SRes();
             //var aa = (new StackTrace()).GetFrame(0).GetMethod().Name;//当前方法名
-            var methodName = (new StackTrace()).GetFrame(1).GetMethod().Name;//调用的方法名称                                                 
+            var methodName = (new StackTrace()).GetFrame(1).GetMethod().Name;//调用的方法名称
             string methodcode = "";
             if (_ptService != null)
             {
@@ -122,11 +122,12 @@ namespace wms.api.Controllers
             }
             return res.ToCamelCaseString();
         }
+
         internal string WmsServiceExportMq(object strReqBody)
         {
             var res = new SRes();
             //var aa = (new StackTrace()).GetFrame(0).GetMethod().Name;//当前方法名
-            var methodName = (new StackTrace()).GetFrame(1).GetMethod().Name;//调用的方法名称                                                 
+            var methodName = (new StackTrace()).GetFrame(1).GetMethod().Name;//调用的方法名称
             string methodcode = "";
             if (_ptService != null)
             {
@@ -245,5 +246,47 @@ namespace wms.api.Controllers
                 RedisHelper.Del(key);
             }
         }
+
+        /// <summary>
+        /// 并发管控
+        /// </summary>
+        /// <typeparam name="U">方法响应参数类型</typeparam>
+        /// <param name="key">并发管控关键key</param>
+        /// <param name="equNo">管控设备号</param>
+        /// <param name="reqparam">请求参数</param>
+        /// <param name="fun">管控方法</param>
+        /// <returns></returns>
+        public U ConcurrencyReqControl<U>(string key, string equNo, Func<U> fun) where U : SRes, new()
+        {
+            var res = new U();
+            try
+            {
+                //并发管控
+                var sign = RedisHelper.Get(key);
+                if (!string.IsNullOrEmpty(sign) && sign == "1")
+                {
+                    //不可通行
+                    res.ResCode = 0;
+                    res.ResMsg = equNo + "并发重复请求";
+                    return res;
+                }
+                //加状态
+                RedisHelper.Set(key, "1");
+                var resulttemp = fun();
+                RedisHelper.Set(key, "0");
+                return resulttemp;
+            }
+            catch (Exception ex)
+            {
+                RedisHelper.Set(key, "0");
+                res.ResCode = 500;
+                res.ResMsg = ex.Message;
+                return res;
+            }
+            finally
+            {
+                RedisHelper.Del(key);
+            }
+        }
     }
-}
+}

+ 15 - 2
wms.api/Controllers/FjController.cs

@@ -60,7 +60,7 @@ namespace wms.api.Controllers
         private static object lockerlockerStockChange = new object();
         private static object lockerWetFormulaInfo = new object();
         private static object lockerManualBuildEmptyStock = new object();
-        private static object lockFindAvailableFlatStorageSlot=new object();
+        private static object lockFindAvailableFlatStorageSlot = new object();
 
         /// <summary>
         ///  人工组盘传输接口
@@ -572,7 +572,6 @@ namespace wms.api.Controllers
         {
             return ConcurrencyReqControl<CreateMaterialPalletWarehouTaskRequest, SRes>(lockerCreateMaterialPalletWarehouTask, "CreateMaterialUTPalletWarehouTask", reqDto.SpoolNr, reqDto, _fjService.CreateMaterialUTPalletWarehouTask);
         }
-        
 
         /// <summary>
         ///  芯股满托创建库存信息
@@ -1027,6 +1026,20 @@ namespace wms.api.Controllers
             return IdFactory.NewId().ToString();
         }
 
+        #region 数据归档
+
+        /// <summary>
+        /// 库存流水信息数据归档
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost]
+        public SRes InvFlowMoveToHistory()
+        {
+            return ConcurrencyReqControl<SRes>("InvFlowMoveToHistory", "流水数据归档", _fjService.InvFlowMoveToHistory);
+        }
+
+        #endregion 数据归档
+
         #region 定时器
 
         [HttpPost]

+ 10 - 1
wms.service/IService/IFJService.cs

@@ -108,7 +108,6 @@ namespace wms.service.IService
         /// <param name="reqDto"></param>
         /// <returns></returns>
         public SRes CreateMaterialUTPalletWarehouTask(CreateMaterialPalletWarehouTaskRequest reqDto);
-        
 
         /// <summary>
         ///  芯股满托创建库存信息
@@ -299,6 +298,16 @@ namespace wms.service.IService
         /// <param name="barCode">条码</param>
         /// <returns></returns>
         public SRes<WCS_TaskOld> GetTaskInfo(FJGetTaskInfoRequest dto);
+
+        #region 数据归档
+
+        /// <summary>
+        /// 库存流水信息数据归档
+        /// </summary>
+        /// <returns></returns>
+        public SRes InvFlowMoveToHistory();
+
+        #endregion 数据归档
     }
 
     public class FJGetTaskInfoRequest

+ 1 - 1
wms.service/Service/DBService.cs

@@ -128,7 +128,7 @@ namespace wms.service.Service
             //db1.CodeFirst.InitTables<sqlsugar.model.fj.BillSpoolTrans>();
             //db1.CodeFirst.InitTables<sqlsugar.model.fj.BillMachinfo>();
             //db1.CodeFirst.InitTables<sqlsugar.model.fj.BillRingPalletizingInfo>();
-            db1.CodeFirst.InitTables<sqlsugar.model.fj.BillPaiKu>();
+            //db1.CodeFirst.InitTables<sqlsugar.model.fj.Bill_InvflowHistory>();
         }
 
         public void InitSxDB()

+ 40 - 0
wms.service/Service/FJService.cs

@@ -3792,6 +3792,7 @@ namespace wms.service.Service
         ///     任务历史表
         /// </summary>
         private RepositoryTask<WCS_TaskOld> _wcstaskoldrepository => new RepositoryTask<WCS_TaskOld>();
+        private RepositoryTask<Bill_InvflowHistory> _invFlowHistoryRepository => new RepositoryTask<Bill_InvflowHistory>();
 
         /// <summary>
         ///     agv任务表
@@ -9122,6 +9123,45 @@ namespace wms.service.Service
             }
             return true;
         }
+
+        #region MyRegion
+
+        /// <summary>
+        ///  库存流水信息数据归档
+        /// </summary>
+        /// <returns></returns>
+        public SRes InvFlowMoveToHistory() 
+        {
+            var res = new SRes() { ResCode= ResponseStatusCodeEnum.Sucess.GetHashCode(),ResMsg= ResponseStatusCodeEnum.Sucess.GetDescription() };
+            //流水表
+            try
+            {
+                //获取当月第一天
+                var time = DateTime.Now.AddDays(-(DateTime.Now.Day - 1)).Date;
+                var flow = _billInvflow.AsQueryable().With(SqlWith.NoLock).Where(p => p.AddTime < time).OrderBy(p => p.Id).Take(1000).ToList();
+                if (flow.Any())
+                {
+                    var ids = flow.Select(p => p.Id).Distinct().ToList();
+                    var flowhty = _mapper.Map<List<Bill_InvflowHistory>>(flow);
+                    if (_invFlowHistoryRepository.AsQueryable().With(SqlWith.NoLock).SplitTable(p => p.Take(2)).Where(p => ids.Contains(p.Id)).Any())
+                    {
+                        _invFlowHistoryRepository.Context.Deleteable<Bill_InvflowHistory>(p => ids.Contains(p.Id)).SplitTable(x => x.Take(2)).ExecuteCommand();
+                    }
+                    _invFlowHistoryRepository.InsertableSplitTable(flowhty);
+
+                    _billInvflow.Delete(p => ids.Contains(p.Id));
+                }
+            }
+            catch (Exception ex)
+            {
+                res.ResCode = ResponseStatusCodeEnum.Fail.GetHashCode();
+                res.ResMsg = ex.Message;
+                return res;
+            }
+
+            return res;
+        }
+        #endregion
     }
 
     public static class TaslEx

+ 1 - 1
wms.service/mapper/WmsPrifile.cs

@@ -57,7 +57,7 @@ namespace wms.service.mapper
             CreateMap<sqlsugar.model.fj.BillInvnow, sqlsugar.model.fj.BillInvflow>();
             CreateMap<sqlsugar.model.fj.BillInvflow, sqlsugar.model.fj.BillInvnow>();
             CreateMap<WCS.Entity.fj.WCS_TaskInfo, WCS.Entity.fj.WCS_TaskOld>();
-            CreateMap<sqlsugar.model.fj.BillInvflow, sqlsugar.model.fj.BillInvnow>();
+            CreateMap<sqlsugar.model.fj.BillInvflow, sqlsugar.model.fj.Bill_InvflowHistory>();
 
             #endregion 分拣
 

+ 4 - 0
wms.sqlsugar/RepositoryTask.cs

@@ -41,6 +41,10 @@ namespace wms.sqlsugar
         {
             return base.Context.Insertable(t).SplitTable().ExecuteCommand();
         }
+        public int InsertableSplitTable(List<T> t)
+        {
+            return base.Context.Insertable(t).SplitTable().ExecuteCommand();
+        }
         /// <summary>
         /// 该方法默认不更新CreatedUserId,CreatedTime
         /// </summary>

+ 478 - 0
wms.sqlsugar/model/fj/Bill_InvflowHistory.cs

@@ -0,0 +1,478 @@
+using SqlSugar;
+using System;
+using wms.util.Check;
+
+namespace wms.sqlsugar.model.fj
+{
+    /// <summary>
+    /// 库存流水数据历史表
+    /// </summary>
+    [Tenant("fj")]
+    [SugarTable(nameof(Bill_InvflowHistory) + "_{year}{month}{day}", "任务表")]
+    [SplitTable(SplitType.Month)]//按年分表 (自带分表支持 年、季、月、周、日)
+    public partial class Bill_InvflowHistory
+    {
+        /// <summary>
+        ///  ID
+        /// </summary>
+        [SugarColumn(ColumnName = "Id", IsPrimaryKey = true, ColumnDescription = "ID")]
+        public virtual long Id { get; set; } = IdFactory.NewId();
+
+        /// <summary>
+        ///  备注
+        /// </summary>
+        [SugarColumn(ColumnName = "Memo", Length = 500, IsNullable = true, ColumnDataType = "nvarchar", DefaultValue = "", ColumnDescription = "备注")]
+        public virtual string Memo { get; set; }
+
+        /// <summary>
+        ///  创建用户
+        /// </summary>
+        [SugarColumn(ColumnName = "AddWho", Length = 50, ColumnDataType = "nvarchar", DefaultValue = "", IsNullable = false, ColumnDescription = "创建用户")]
+        public virtual string AddWho { get; set; } = "";
+
+        /// <summary>
+        ///  更新用户
+        /// </summary>
+        [SugarColumn(ColumnName = "EditWho", Length = 50, ColumnDataType = "nvarchar", DefaultValue = "", IsNullable = false, ColumnDescription = "更新用户")]
+        public virtual string EditWho { get; set; } = "";
+
+        /// <summary>
+        ///  创建时间
+        /// </summary>
+        [SplitField]
+        [SugarColumn(ColumnName = "AddTime", DefaultValue = "1900-1-1", IsNullable = false, ColumnDescription = "创建时间")]
+        public virtual DateTime AddTime { get; set; } = DateTime.Now;
+
+        /// <summary>
+        /// 更新时间
+        /// </summary>
+        [SugarColumn(ColumnName = "EditTime", DefaultValue = "1900-1-1", IsNullable = false, ColumnDescription = "更新时间")]
+        public virtual DateTime EditTime { get; set; } = DateTime.Now;
+
+        /// <summary>
+        ///  仓库ID
+        /// </summary>
+        [SugarColumn(ColumnDataType = "bigint", IsNullable = false)]
+        public long WarehouseId { get; set; }
+
+        /// <summary>
+        ///  容器ID
+        /// </summary>
+        [SugarColumn(ColumnDataType = "bigint", IsNullable = false)]
+        public long ContGrpId { get; set; }
+
+        /// <summary>
+        ///  容器编号
+        /// </summary>
+        [SugarColumn(ColumnDataType = "nvarchar", Length = 50, IsNullable = true)]
+        public string ContGrpBarCode { get; set; }
+
+        /// <summary>
+        /// 组盘类型(1物料盘 2空盘)
+        /// </summary>
+        [SugarColumn(ColumnDataType = "int", IsNullable = false)]
+        public int ContGrpType { get; set; }
+
+        /// <summary>
+        /// BoxBarCode
+        /// </summary>
+        [SugarColumn(ColumnDataType = "nvarchar", Length = 50, IsNullable = true)]
+        public string BoxBarCode { get; set; }
+
+        /// <summary>
+        /// BomDocsNo
+        /// </summary>
+        [SugarColumn(ColumnDataType = "nvarchar", Length = 50, IsNullable = true)]
+        public string BomDocsNo { get; set; }
+
+        /// <summary>
+        /// BomMatId
+        /// </summary>
+        [SugarColumn(ColumnDataType = "bigint", IsNullable = false)]
+        public long BomMatId { get; set; }
+
+        /// <summary>
+        /// BomMatCode
+        /// </summary>
+        [SugarColumn(ColumnDataType = "nvarchar", Length = 50, IsNullable = true)]
+        public string BomMatCode { get; set; }
+
+        /// <summary>
+        /// BomMatName
+        /// </summary>
+        [SugarColumn(ColumnDataType = "nvarchar", Length = 100, IsNullable = true)]
+        public string BomMatName { get; set; }
+
+        /// <summary>
+        /// BomSetId
+        /// </summary>
+        [SugarColumn(ColumnDataType = "bigint", IsNullable = false)]
+        public long BomSetId { get; set; }
+
+        /// <summary>
+        /// ExecStateCode
+        /// </summary>
+        [SugarColumn(ColumnDataType = "nvarchar", Length = 50, IsNullable = true)]
+        public string ExecStateCode { get; set; }
+
+        /// <summary>
+        /// ExecDocsNo
+        /// </summary>
+        [SugarColumn(ColumnDataType = "nvarchar", Length = 50, IsNullable = true)]
+        public string ExecDocsNo { get; set; }
+
+        /// <summary>
+        /// ExecDocsRowNo
+        /// </summary>
+        [SugarColumn(ColumnDataType = "nvarchar", Length = 50, IsNullable = true)]
+        public string ExecDocsRowNo { get; set; }
+
+        /// <summary>
+        /// ExecDocsTypeCode
+        /// </summary>
+        [SugarColumn(ColumnDataType = "nvarchar", Length = 50, IsNullable = true)]
+        public string ExecDocsTypeCode { get; set; }
+
+        /// <summary>
+        /// InvInOut
+        /// </summary>
+        [SugarColumn(ColumnDataType = "int", IsNullable = false)]
+        public int InvInOut { get; set; }
+
+        /// <summary>
+        /// ExecWho
+        /// </summary>
+        [SugarColumn(ColumnDataType = "nvarchar", Length = 50, IsNullable = true)]
+        public string ExecWho { get; set; }
+
+        /// <summary>
+        /// ExecTime
+        /// </summary>
+        [SugarColumn(ColumnDataType = "datetime", IsNullable = false)]
+        public DateTime ExecTime { get; set; }
+
+        /// <summary>
+        /// PutRow
+        /// </summary>
+        [SugarColumn(ColumnDataType = "int", IsNullable = false)]
+        public int PutRow { get; set; }
+
+        /// <summary>
+        /// PutCol
+        /// </summary>
+        [SugarColumn(ColumnDataType = "int", IsNullable = false)]
+        public int PutCol { get; set; }
+
+        /// <summary>
+        /// PutLayer
+        /// </summary>
+        [SugarColumn(ColumnDataType = "int", IsNullable = false)]
+        public int PutLayer { get; set; }
+
+        /// <summary>
+        /// InvBarCode
+        /// </summary>
+        [SugarColumn(ColumnDataType = "nvarchar", Length = 50, IsNullable = true)]
+        public string InvBarCode { get; set; }
+
+        /// <summary>
+        /// InvStateCode
+        /// </summary>
+        [SugarColumn(ColumnDataType = "nvarchar", Length = 50, IsNullable = true)]
+        public string InvStateCode { get; set; }
+
+        /// <summary>
+        /// InDocsNo
+        /// </summary>
+        [SugarColumn(ColumnDataType = "nvarchar", Length = 50, IsNullable = true)]
+        public string InDocsNo { get; set; }
+
+        /// <summary>
+        /// InDocsRowNo
+        /// </summary>
+        [SugarColumn(ColumnDataType = "nvarchar", Length = 50, IsNullable = true)]
+        public string InDocsRowNo { get; set; }
+
+        /// <summary>
+        /// SuppCode
+        /// </summary>
+        [SugarColumn(ColumnDataType = "nvarchar", Length = 50, IsNullable = true)]
+        public string SuppCode { get; set; }
+
+        /// <summary>
+        /// SuppName
+        /// </summary>
+        [SugarColumn(ColumnDataType = "nvarchar", Length = 50, IsNullable = true)]
+        public string SuppName { get; set; }
+
+        /// <summary>
+        /// CustCode
+        /// </summary>
+        [SugarColumn(ColumnDataType = "nvarchar", Length = 50, IsNullable = true)]
+        public string CustCode { get; set; }
+
+        /// <summary>
+        /// CustName
+        /// </summary>
+        [SugarColumn(ColumnDataType = "nvarchar", Length = 50, IsNullable = true)]
+        public string CustName { get; set; }
+
+        /// <summary>
+        /// MatId
+        /// </summary>
+        [SugarColumn(ColumnDataType = "bigint", IsNullable = false)]
+        public long MatId { get; set; }
+
+        /// <summary>
+        /// MatCode
+        /// </summary>
+        [SugarColumn(ColumnDataType = "nvarchar", Length = 50, IsNullable = true)]
+        public string MatCode { get; set; }
+
+        /// <summary>
+        /// MatName
+        /// </summary>
+        [SugarColumn(ColumnDataType = "nvarchar", Length = 100, IsNullable = true)]
+        public string MatName { get; set; }
+
+        /// <summary>
+        /// TolWQty
+        /// </summary>
+        [SugarColumn(ColumnDataType = "decimal", Length = 18, IsNullable = false)]
+        public decimal TolWQty { get; set; }
+
+        /// <summary>
+        /// NetWQty
+        /// </summary>
+        [SugarColumn(ColumnDataType = "decimal", Length = 18, IsNullable = false)]
+        public decimal NetWQty { get; set; }
+
+        /// <summary>
+        /// TareWQty
+        /// </summary>
+        [SugarColumn(ColumnDataType = "decimal", Length = 18, IsNullable = false)]
+        public decimal TareWQty { get; set; }
+
+        /// <summary>
+        /// LengthQty
+        /// </summary>
+        [SugarColumn(ColumnDataType = "decimal", Length = 18, IsNullable = false)]
+        public decimal LengthQty { get; set; }
+
+        /// <summary>
+        /// CaQty
+        /// </summary>
+        [SugarColumn(ColumnDataType = "decimal", Length = 18, IsNullable = false)]
+        public decimal CaQty { get; set; }
+
+        /// <summary>
+        /// SolderQty
+        /// </summary>
+        [SugarColumn(ColumnDataType = "decimal", Length = 18, IsNullable = false)]
+        public decimal SolderQty { get; set; }
+
+        /// <summary>
+        /// ContUsageQty
+        /// </summary>
+        [SugarColumn(ColumnDataType = "int", IsNullable = false)]
+        public int ContUsageQty { get; set; }
+
+        /// <summary>
+        /// BatchNo
+        /// </summary>
+        [SugarColumn(ColumnDataType = "nvarchar", Length = 50, IsNullable = true)]
+        public string BatchNo { get; set; }
+
+        /// <summary>
+        /// ProductTime
+        /// </summary>
+        [SugarColumn(ColumnDataType = "datetime", IsNullable = false)]
+        public DateTime ProductTime { get; set; }
+
+        /// <summary>
+        /// OneInTime
+        /// </summary>
+        [SugarColumn(ColumnDataType = "datetime", IsNullable = false)]
+        public DateTime OneInTime { get; set; }
+
+        /// <summary>
+        /// RodBarCode
+        /// </summary>
+        [SugarColumn(ColumnDataType = "nvarchar", Length = 50, IsNullable = true)]
+        public string RodBarCode { get; set; }
+
+        /// <summary>
+        /// HWBarCode
+        /// </summary>
+        [SugarColumn(ColumnDataType = "nvarchar", Length = 50, IsNullable = true)]
+        public string HWBarCode { get; set; }
+
+        /// <summary>
+        /// RFIDBarCode
+        /// </summary>
+        [SugarColumn(ColumnDataType = "nvarchar", Length = 50, IsNullable = true)]
+        public string RFIDBarCode { get; set; }
+
+        /// <summary>
+        /// CLBarCode
+        /// </summary>
+        [SugarColumn(ColumnDataType = "nvarchar", Length = 50, IsNullable = true)]
+        public string CLBarCode { get; set; }
+
+        /// <summary>
+        /// HWTypeCode
+        /// </summary>
+        [SugarColumn(ColumnDataType = "nvarchar", Length = 50, IsNullable = true)]
+        public string HWTypeCode { get; set; }
+
+        /// <summary>
+        /// BoilerNo
+        /// </summary>
+        [SugarColumn(ColumnDataType = "nvarchar", Length = 50, IsNullable = true)]
+        public string BoilerNo { get; set; }
+
+        /// <summary>
+        /// PackNo
+        /// </summary>
+        [SugarColumn(ColumnDataType = "nvarchar", Length = 50, IsNullable = true)]
+        public string PackNo { get; set; }
+
+        /// <summary>
+        /// BrandNo
+        /// </summary>
+        [SugarColumn(ColumnDataType = "nvarchar", Length = 50, IsNullable = true)]
+        public string BrandNo { get; set; }
+
+        /// <summary>
+        /// ExecStd
+        /// </summary>
+        [SugarColumn(ColumnDataType = "nvarchar", Length = 50, IsNullable = true)]
+        public string ExecStd { get; set; }
+
+        /// <summary>
+        /// LicenceCode
+        /// </summary>
+        [SugarColumn(ColumnDataType = "nvarchar", Length = 50, IsNullable = true)]
+        public string LicenceCode { get; set; }
+
+        /// <summary>
+        /// IsSurplus
+        /// </summary>
+        [SugarColumn(ColumnDataType = "bit", IsNullable = false)]
+        public bool IsSurplus { get; set; }
+
+        /// <summary>
+        /// IsRework
+        /// </summary>
+        [SugarColumn(ColumnDataType = "bit", IsNullable = false)]
+        public bool IsRework { get; set; }
+
+        /// <summary>
+        /// IsBlack
+        /// </summary>
+        [SugarColumn(ColumnDataType = "bit", IsNullable = false)]
+        public bool IsBlack { get; set; }
+
+        /// <summary>
+        /// IsCore
+        /// </summary>
+        [SugarColumn(ColumnDataType = "bit", IsNullable = false)]
+        public bool IsCore { get; set; }
+
+        /// <summary>
+        /// IsFast
+        /// </summary>
+        [SugarColumn(ColumnDataType = "bit", IsNullable = false)]
+        public bool IsFast { get; set; }
+
+        /// <summary>
+        /// IsFail
+        /// </summary>
+        [SugarColumn(ColumnDataType = "bit", IsNullable = false)]
+        public bool IsFail { get; set; }
+
+        /// <summary>
+        /// FailReason
+        /// </summary>
+        [SugarColumn(ColumnDataType = "nvarchar", Length = 200, IsNullable = true)]
+        public string FailReason { get; set; }
+
+        /// <summary>
+        /// SilkTypeCode
+        /// </summary>
+        [SugarColumn(ColumnDataType = "nvarchar", Length = 50, IsNullable = true)]
+        public string SilkTypeCode { get; set; }
+
+        /// <summary>
+        /// Grade
+        /// </summary>
+        [SugarColumn(ColumnDataType = "nvarchar", Length = 50, IsNullable = true)]
+        public string Grade { get; set; }
+
+        /// <summary>
+        /// IsBack
+        /// </summary>
+        [SugarColumn(ColumnDataType = "bit", IsNullable = false)]
+        public bool IsBack { get; set; }
+
+        /// <summary>
+        /// BackReason
+        /// </summary>
+        [SugarColumn(ColumnDataType = "nvarchar", Length = 200, IsNullable = true)]
+        public string BackReason { get; set; }
+
+        /// <summary>
+        /// IsTorsChk
+        /// </summary>
+        [SugarColumn(ColumnDataType = "bit", IsNullable = false)]
+        public bool IsTorsChk { get; set; }
+
+        /// <summary>
+        /// TorsChkQty
+        /// </summary>
+        [SugarColumn(ColumnDataType = "int", IsNullable = false)]
+        public int TorsChkQty { get; set; }
+
+        /// <summary>
+        /// TorsChkTime
+        /// </summary>
+        [SugarColumn(ColumnDataType = "datetime", IsNullable = false)]
+        public DateTime TorsChkTime { get; set; }
+
+        /// <summary>
+        /// TorsChkValue
+        /// </summary>
+        [SugarColumn(ColumnDataType = "decimal", Length = 18, IsNullable = true)]
+        public decimal? TorsChkValue { get; set; }
+
+        /// <summary>
+        /// TorsChkMachCode
+        /// </summary>
+        [SugarColumn(ColumnDataType = "nvarchar", Length = 50, IsNullable = true)]
+        public string TorsChkMachCode { get; set; }
+
+        /// <summary>
+        /// ProcessDocsCode
+        /// </summary>
+        [SugarColumn(ColumnDataType = "nvarchar", Length = 50, IsNullable = true)]
+        public string ProcessDocsCode { get; set; }
+
+        /// <summary>
+        /// ProductMachCode
+        /// </summary>
+        [SugarColumn(ColumnDataType = "nvarchar", Length = 50, IsNullable = true)]
+        public string ProductMachCode { get; set; }
+
+        /// <summary>
+        /// ProductLineNo
+        /// </summary>
+        [SugarColumn(ColumnDataType = "nvarchar", Length = 50, IsNullable = true)]
+        public string ProductLineNo { get; set; }
+
+        /// <summary>
+        /// 货物大小
+        /// </summary>
+        [SugarColumn(IsNullable = false)]
+        public int Size { get; set; }
+    }
+}