服务端的TigerApi 框架,基于.NET6 2024 版本
Rodney Chen
4 天以前 36746596927952a6b860129a62eec9059bf083a7
优化了备料逻辑
已修改9个文件
575 ■■■■■ 文件已修改
Tiger.Business.WMS/Common/Preparation.cs 56 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Business.WMS/Extensions/Yada/OutExtension.cs 100 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Business.WMS/Transaction/Old/OutTransfer.cs 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Business.WMS/Transaction/Yada/Out_BIZ_WMS_PREP.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Model.Net/Entitys/WMS/BIZ_U9_MISC_OUT.cs 134 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Model.Net/Entitys/WMS/BIZ_U9_MISC_OUT_SN.cs 123 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Model.Net/Entitys/WMS/BIZ_WMS_PREP_SN.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Model.Net/Entitys/WMS/BIZ_WMS_TRANSFER.cs 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Model.Net/Entitys/WMS/BIZ_WMS_TRANSFER_SN.cs 119 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Business.WMS/Common/Preparation.cs
@@ -90,8 +90,8 @@
                }
                // 查询单据明细,并合并到备料单的备料明细中
                var dtls = bizType.GetPickList(orderNo);
                if (dtls.Sum(q => q.QTY_ACT_REQ) <= 0)
                var srcDtls = bizType.GetPickList(orderNo);
                if (srcDtls.Sum(q => q.QTY_ACT_REQ) <= 0)
                {
                    action.IsSuccessed = false;
                    //action.LocaleMsg = Biz.L("单据[{0}]未找到需要备料的行明细,请扫描正确的单据");
@@ -129,10 +129,10 @@
                    ADD_TIME = DateTime.Now,
                };
                Order.SourceOrders.Add(srcOrder);
                foreach (var dtl in dtls)
                foreach (var sdtl in srcDtls)
                {
                    dtl.AUTH_ORG = OrgCode;
                    var pdtl = Order.Details.Where(q => q.ITEM_CODE == dtl.ITEM_CODE).FirstOrDefault();
                    sdtl.AUTH_ORG = OrgCode;
                    var pdtl = Order.Details.Where(q => q.ITEM_CODE == sdtl.ITEM_CODE).FirstOrDefault();
                    if (pdtl.IsNullOrEmpty())
                    {
                        pdtl = new ()
@@ -140,32 +140,34 @@
                            AUTH_ORG = OrgCode,
                            ORDER_NO = Order.ORDER_NO,
                            ORDER_LINE = (Order.Details.Max(q => q.LINE_CODE.ToInt32()) + 1).ToString(),
                            ITEM_CODE = dtl.ITEM_CODE,
                            SUBITEM_CODE = dtl.SUBITEM_CODE,
                            UNIT = dtl.UNIT,
                            PLAN_LOSS_QTY = dtl.PLAN_LOSS_QTY,
                            PLAN_LOSS_RATE = dtl.PLAN_LOSS_RATE,
                            IS_CALC_LOSS = dtl.IS_CALC_LOSS,
                            IS_WHOLE = dtl.IS_WHOLE,
                            SOURCE_CODE = dtl.SOURCE_CODE,
                            SOURCE_ORDER = dtl.SOURCE_ORDER,
                            SOURCE_LINE = dtl.SOURCE_LINE,
                            ITEM_CODE = sdtl.ITEM_CODE,
                            SUBITEM_CODE = sdtl.SUBITEM_CODE,
                            UNIT = sdtl.UNIT,
                            PLAN_LOSS_QTY = sdtl.PLAN_LOSS_QTY,
                            PLAN_LOSS_RATE = sdtl.PLAN_LOSS_RATE,
                            IS_CALC_LOSS = sdtl.IS_CALC_LOSS,
                            IS_WHOLE = sdtl.IS_WHOLE,
                            SOURCE_CODE = sdtl.SOURCE_CODE,
                            SOURCE_ORDER = sdtl.SOURCE_ORDER,
                            SOURCE_LINE = sdtl.SOURCE_LINE,
                            STATUS = BIZ_WMS_PREP_DTL.STATUSs.UnCalc.GetValue(),
                            FTY_CODE = dtl.FTY_CODE,
                            WS_CODE = dtl.WS_CODE,
                            LINE_CODE = dtl.LINE_CODE,
                            POST_CODE = dtl.POST_CODE,
                            OPER_CODE = dtl.OPER_CODE,
                            SEGMENT = dtl.SEGMENT,
                            SMT_NO = dtl.SMT_NO,
                            STATION_NO = dtl.STATION_NO,
                            FEEDER_NO = dtl.FEEDER_NO,
                            FEEDER_TYPE = dtl.FEEDER_TYPE,
                            FTY_CODE = sdtl.FTY_CODE,
                            WS_CODE = sdtl.WS_CODE,
                            LINE_CODE = sdtl.LINE_CODE,
                            POST_CODE = sdtl.POST_CODE,
                            OPER_CODE = sdtl.OPER_CODE,
                            SEGMENT = sdtl.SEGMENT,
                            SMT_NO = sdtl.SMT_NO,
                            STATION_NO = sdtl.STATION_NO,
                            FEEDER_NO = sdtl.FEEDER_NO,
                            FEEDER_TYPE = sdtl.FEEDER_TYPE,
                        };
                        Order.Details.Add(pdtl);
                    }
                    pdtl.QTY_REQ += dtl.QTY_ACT_REQ;
                    Order.SourceDetails.Add(dtl);
                    pdtl.QTY_REQ += sdtl.QTY_ACT_REQ;
                    sdtl.ORDER_NO = pdtl.ORDER_NO;
                    sdtl.ORDER_LINE = pdtl.ORDER_LINE;
                    Order.SourceDetails.Add(sdtl);
                }
                var srcInfo = Order.SourceOrders.Select(q => new { q.SOURCE_CODE, q.SOURCE_ORDER }).DistinctBy(q => q.SOURCE_ORDER).OrderBy(q => q.SOURCE_ORDER);
                Order.SOURCE_CODE = string.Join(",", srcInfo.Select(q => q.SOURCE_CODE));
Tiger.Business.WMS/Extensions/Yada/OutExtension.cs
@@ -3,6 +3,7 @@
using Newtonsoft.Json;
using Newtonsoft.Json.Serialization;
using Org.BouncyCastle.Asn1.X509;
using Org.BouncyCastle.Ocsp;
using Rhea.Common;
using SqlSugar;
using System;
@@ -221,14 +222,42 @@
                item.QTY_ACT_DLVY = item.QTY_ACT_REQ;
            }
            trans.CurPREP.Order.STATUS = BIZ_WMS_PREP.STATUSs.Sended.GetValue();
            var orders = trans.MainDB.Queryable<BIZ_U9_MISC_OUT>().Where(q => trans.CurPREP.Order.SourceOrders.Select(s => s.SOURCE_ORDER).Contains(q.ORDER_NO)).ToList();
            foreach (var item in orders)
            var orders = trans.MainDB.Queryable<BIZ_U9_MISC_OUT>().Where(q => trans.CurPREP.Order.SourceOrders.Select(s => s.SOURCE_ORDER).Contains(q.ORDER_NO)).IncludesAllFirstLayer().ToList();
            foreach (var order in orders)
            {
                item.STATUS = BIZ_U9_MISC_OUT.STATUSs.Sended.GetValue();
                item.PREP_PERSON = trans.UserCode;
                item.FINISH_TIME = DateTime.Now;
                item.REQ_PERSON = trans.UserCode;
                item.DLVY_TIME = DateTime.Now;
                order.STATUS = BIZ_U9_MISC_OUT.STATUSs.Sended.GetValue();
                order.PREP_PERSON = trans.UserCode;
                order.FINISH_TIME = DateTime.Now;
                order.REQ_PERSON = trans.UserCode;
                order.DLVY_TIME = DateTime.Now;
                foreach (var dtl in order.Details)
                {
                    dtl.STATUS = BIZ_WMS_TRANSFER.STATUSs.Sended.GetValue();
                }
                order.SnList ??= new();
                foreach (var sn in trans.CurPREP.Order.SnList)
                {
                    var dtl = order.Details.Where(q => q.ITEM_CODE == sn.ITEM_CODE).First();
                    order.SnList.Add(new()
                    {
                        AUTH_ORG = dtl.AUTH_ORG,
                        ORDER_NO = dtl.ORDER_NO,
                        LINE_NO = dtl.LINE_NO,
                        SN = sn.SN,
                        STATUS = sn.STATUS,
                        ITEM_CODE = sn.ITEM_CODE,
                        QTY = sn.QTY,
                        UNIT = sn.UNIT,
                        WH_CODE = sn.WH_CODE,
                        REGION_CODE = sn.REGION_CODE,
                        SHELF_CODE = sn.SHELF_CODE,
                        LOCATION_CODE = sn.LOCATION_CODE,
                        DOWN_TIME = sn.DOWN_TIME,
                        DLVY_TIME = DateTime.Now,
                        IS_OUT = "Y",
                        LOTNO = sn.LOTNO,
                    });
                }
            }
            var items = trans.MainDB.Queryable<WMS_ITEM>().Where(q => q.TRANS_NO == trans.CurPREP.Order.ORDER_NO).ToList();
            var history = new List<WMS_ITEM_HIS>();
@@ -250,6 +279,8 @@
                db.Updateable(items, trans.UserCode).UpdateColumns(q => new { q.UPDATE_TIME, q.UPDATE_USER, q.STATUS }).ExecuteCommand();
                db.Insertable(history, trans.UserCode).ExecuteCommand();
                db.Updateable(orders, trans.UserCode).UpdateColumns(q => new { q.UPDATE_TIME, q.UPDATE_USER, q.STATUS, q.PREP_PERSON, q.FINISH_TIME, q.REQ_PERSON, q.DLVY_TIME }).ExecuteCommand();
                db.Updateable(orders.SelectMany(q => q.Details).ToList(), trans.UserCode).UpdateColumns(q => new { q.UPDATE_TIME, q.UPDATE_USER, q.STATUS }).ExecuteCommand();
                db.Storageable(orders.SelectMany(q => q.SnList).ToList(), trans.UserCode).ToStorage().AsInsertable.ExecuteCommand();
            });
            if (dbTran.IsSuccess)
            {
@@ -364,6 +395,8 @@
            {
                sn.DLVY_BATCH = batch.DLVY_BATCH;
                sn.STATUS = WMS_ITEM.STATUSs.Sended.GetValue();
                sn.REQ_ID = batch.REQ_ID;
                sn.REQ_ORDER = batch.REQ_ORDER;
            }
            var items = trans.MainDB.Queryable<WMS_ITEM>().Where(q => sns.Select(s => s.SN).Contains(q.SN)).ToList();
@@ -388,7 +421,7 @@
                db.Updateable(trans.CurPREP.Order, trans.UserCode).UpdateColumns(q => new { q.UPDATE_TIME, q.UPDATE_USER, q.STATUS }).ExecuteCommand();
                db.Updateable(prepSrcList, trans.UserCode).UpdateColumns(q => new { q.UPDATE_TIME, q.UPDATE_USER, q.QTY_ACT_DLVY }).ExecuteCommand();
                db.Insertable(batch, trans.UserCode).ExecuteCommand();
                db.Updateable(sns, trans.UserCode).UpdateColumns(q => new { q.UPDATE_TIME, q.UPDATE_USER, q.STATUS, q.DLVY_BATCH }).ExecuteCommand();
                db.Updateable(sns, trans.UserCode).UpdateColumns(q => new { q.UPDATE_TIME, q.UPDATE_USER, q.STATUS, q.DLVY_BATCH, q.REQ_ID, q.REQ_ORDER }).ExecuteCommand();
                db.Updateable(items, trans.UserCode).UpdateColumns(q => new { q.UPDATE_TIME, q.UPDATE_USER, q.STATUS }).ExecuteCommand();
                db.Insertable(history, trans.UserCode).ExecuteCommand();
            });
@@ -504,6 +537,8 @@
            {
                sn.DLVY_BATCH = batch.DLVY_BATCH;
                sn.STATUS = WMS_ITEM.STATUSs.Sended.GetValue();
                sn.REQ_ID = batch.REQ_ID;
                sn.REQ_ORDER = batch.REQ_ORDER;
            }
            var items = trans.MainDB.Queryable<WMS_ITEM>().Where(q => sns.Select(s => s.SN).Contains(q.SN)).ToList();
@@ -538,7 +573,7 @@
                db.Updateable(trans.CurPREP.Order, trans.UserCode).UpdateColumns(q => new { q.UPDATE_TIME, q.UPDATE_USER, q.STATUS }).ExecuteCommand();
                db.Updateable(prepSrcList, trans.UserCode).UpdateColumns(q => new { q.UPDATE_TIME, q.UPDATE_USER, q.QTY_ACT_DLVY }).ExecuteCommand();
                db.Insertable(batch, trans.UserCode).ExecuteCommand();
                db.Updateable(sns, trans.UserCode).UpdateColumns(q => new { q.UPDATE_TIME, q.UPDATE_USER, q.STATUS, q.DLVY_BATCH }).ExecuteCommand();
                db.Updateable(sns, trans.UserCode).UpdateColumns(q => new { q.UPDATE_TIME, q.UPDATE_USER, q.STATUS, q.DLVY_BATCH, q.REQ_ID, q.REQ_ORDER }).ExecuteCommand();
                db.Updateable(items, trans.UserCode).UpdateColumns(q => new { q.UPDATE_TIME, q.UPDATE_USER, q.STATUS }).ExecuteCommand();
                db.Insertable(history, trans.UserCode).ExecuteCommand();
                if (orders.Any())
@@ -598,15 +633,40 @@
                item.QTY_ACT_DLVY = item.QTY_ACT_REQ;
            }
            trans.CurPREP.Order.STATUS = BIZ_WMS_PREP.STATUSs.Sended.GetValue();
            //var orders = trans.MainDB.Queryable<BIZ_WMS_TRANSFER>().Where(q => trans.CurPREP.Order.SourceOrders.Select(s => s.SOURCE_ORDER).Contains(q.ORDER_NO)).ToList();
            //foreach (var item in orders)
            //{
            //    item.STATUS = BIZ_WMS_TRANSFER.STATUSs.Sended.GetValue();
            //    item.PREP_PERSON = trans.UserCode;
            //    item.FINISH_TIME = DateTime.Now;
            //    item.REQ_PERSON = trans.UserCode;
            //    item.DLVY_TIME = DateTime.Now;
            //}
            var orders = trans.MainDB.Queryable<BIZ_WMS_TRANSFER>().Where(q => trans.CurPREP.Order.SourceOrders.Select(s => s.SOURCE_ORDER).Contains(q.ORDER_NO)).IncludesAllFirstLayer().ToList();
            foreach (var order in orders)
            {
                order.STATUS = BIZ_WMS_TRANSFER.STATUSs.Sended.GetValue();
                order.OUT_WH_CODE = string.Join(",", trans.CurPREP.Order.SnList.Select(q => q.WH_CODE).Distinct());
                foreach (var dtl in order.Details)
                {
                    dtl.STATUS = BIZ_WMS_TRANSFER.STATUSs.Sended.GetValue();
                    dtl.OUT_WH_CODE = string.Join(",", trans.CurPREP.Order.SnList.Select(q => q.WH_CODE).Distinct());
                    dtl.QTY_OUT = dtl.QTY_REQ;
                    dtl.OUT_LOTNO = string.Join(",", trans.CurPREP.Order.SnList.Select(q => q.LOTNO).Distinct());
                }
                order.SnList ??= new();
                foreach (var sn in trans.CurPREP.Order.SnList)
                {
                    var dtl = order.Details.Where(q => q.ITEM_CODE ==  sn.ITEM_CODE).First();
                    order.SnList.Add(new()
                    {
                        AUTH_ORG = dtl.AUTH_ORG,
                        ORDER_NO = dtl.ORDER_NO,
                        ORDER_LINE = dtl.ORDER_LINE,
                        SN = sn.SN,
                        STATUS = sn.STATUS,
                        ITEM_CODE = sn.ITEM_CODE,
                        QTY = sn.QTY,
                        LOTNO = sn.LOTNO,
                        OUT_WH_CODE = sn.WH_CODE,
                        OUT_REGION_CODE = sn.REGION_CODE,
                        OUT_SHELF_CODE = sn.SHELF_CODE,
                        OUT_LOCATION_CODE = sn.LOCATION_CODE,
                        OUT_TIME = DateTime.Now,
                    });
                }
            }
            var items = trans.MainDB.Queryable<WMS_ITEM>().Where(q => q.TRANS_NO == trans.CurPREP.Order.ORDER_NO).ToList();
            var history = new List<WMS_ITEM_HIS>();
            foreach(var item in items)
@@ -626,7 +686,9 @@
                    .SetColumns(q => q.DLVY_BATCH == batch.DLVY_BATCH).SetColumns(q => q.STATUS == WMS_ITEM.STATUSs.Sended.GetValue()).ExecuteCommand();
                db.Updateable(items, trans.UserCode).UpdateColumns(q => new { q.UPDATE_TIME, q.UPDATE_USER, q.STATUS }).ExecuteCommand();
                db.Insertable(history, trans.UserCode).ExecuteCommand();
                //db.Updateable(orders, trans.UserCode).UpdateColumns(q => new { q.UPDATE_TIME, q.UPDATE_USER, q.STATUS, q.PREP_PERSON, q.FINISH_TIME, q.REQ_PERSON, q.DLVY_TIME }).ExecuteCommand();
                db.Updateable(orders, trans.UserCode).UpdateColumns(q => new { q.UPDATE_TIME, q.UPDATE_USER, q.STATUS, q.OUT_WH_CODE }).ExecuteCommand();
                db.Updateable(orders.SelectMany(q => q.Details).ToList(), trans.UserCode).UpdateColumns(q => new { q.UPDATE_TIME, q.UPDATE_USER, q.STATUS, q.OUT_WH_CODE, q.QTY_OUT, q.OUT_LOTNO }).ExecuteCommand();
                db.Storageable(orders.SelectMany(q => q.SnList).ToList(), trans.UserCode).ToStorage().AsInsertable.ExecuteCommand();
            });
            if (dbTran.IsSuccess)
            {
Tiger.Business.WMS/Transaction/Old/OutTransfer.cs
@@ -61,9 +61,9 @@
            var action = new ApiAction<ProdReqOutput>();
            try
            {
                req = await Biz.Db.Queryable<BIZ_WMS_TRANSFER>().Where(x => x.ORDER_NO == input.ReqNo).Includes(q => q.DtlsWithGhost, d => d.ItemInfo).IncludesAllFirstLayer().FirstAsync();
                req = await Biz.Db.Queryable<BIZ_WMS_TRANSFER>().Where(x => x.ORDER_NO == input.ReqNo).Includes(q => q.Details, d => d.ItemInfo).IncludesAllFirstLayer().FirstAsync();
                //验证明细是否正确
                if (!req.Dtls.Any())
                if (!req.Details.Any())
                {
                    action.IsSuccessed = false;
                    action.LocaleMsg = new("WMS.ProdMReq.SelectOrder.DtlsException", input.ReqNo);
@@ -82,7 +82,7 @@
                var begin = DateTime.Now;
                var ElapsedTime = 0.0;
                var sumDtls = req.Dtls.Where(q => q.STATUS != BIZ_WMS_TRANSFER.STATUSs.Finished.GetValue())
                var sumDtls = req.Details.Where(q => q.STATUS != BIZ_WMS_TRANSFER.STATUSs.Finished.GetValue())
                    .GroupBy(x => new { x.ITEM_CODE }).Select(x => new { ItemCode = x.Key.ITEM_CODE.ToString(), WarehouseCode = x.Max(t => t.OUT_WH_CODE), actQty = x.Sum(t => t.QTY_REQ - t.QTY_OUT), lockObj = new object() });
                var dic = sumDtls.ToDictionary(k => k, v => new Result<List<SuggestItem>>());
                foreach (var item in dic)
@@ -206,11 +206,11 @@
            var action = new ApiAction();
            try
            {
                var dtls = req.Dtls.GroupBy(x => new { x.ORDER_LINE, x.ITEM_CODE, x.ItemInfo.ITEM_NAME }).Select(x => new ProdReqDtl() { BillLine = x.Key.ORDER_LINE.ToInt32(), ItemCode = x.Key.ITEM_CODE, ItemName = x.Key.ITEM_NAME, Status = "", Items = new List<ProdReqDtlItems>() }).ToList();
                var dtls = req.Details.GroupBy(x => new { x.ORDER_LINE, x.ITEM_CODE, x.ItemInfo.ITEM_NAME }).Select(x => new ProdReqDtl() { BillLine = x.Key.ORDER_LINE.ToInt32(), ItemCode = x.Key.ITEM_CODE, ItemName = x.Key.ITEM_NAME, Status = "", Items = new List<ProdReqDtlItems>() }).ToList();
                foreach (var d in dtls)
                {
                    d.Items = Suggests.Where(x => x.Item.ITEM_CODE == d.ItemCode).Select(x => new ProdReqDtlItems { WHCode = x.Warehouse.WH_CODE, LocationCode = x.Location.LOCATION_CODE, SN = x.Item.SN, QTY = x.Item.QTY }).ToList();
                    d.Status = $"{(double)req.Dtls.Where(x => x.ITEM_CODE == d.ItemCode).Sum(x => x.QTY_OUT)} / {(double)req.Dtls.Where(x => x.ITEM_CODE == d.ItemCode).Sum(x => x.QTY_REQ)} {Suggests.FirstOrDefault()?.Item?.UNIT} (还需{d.Items.Count}个)";
                    d.Status = $"{(double)req.Details.Where(x => x.ITEM_CODE == d.ItemCode).Sum(x => x.QTY_OUT)} / {(double)req.Details.Where(x => x.ITEM_CODE == d.ItemCode).Sum(x => x.QTY_REQ)} {Suggests.FirstOrDefault()?.Item?.UNIT} (还需{d.Items.Count}个)";
                }
                action.Data = itemcode.IsNullOrEmpty() ? dtls.OrderBy(q => q.BillLine) : dtls.Where(x => x.ItemCode == itemcode).FirstOrDefault()?.Items.OrderBy(q => q.SN);
            }
@@ -230,7 +230,7 @@
            var action = new ApiAction();
            try
            {
                action.Data = $"物料{itemcode}:已下架[{(double)req.Dtls.Where(x => x.ITEM_CODE == itemcode).Sum(x => x.QTY_OUT)}],共{(double)req.Dtls.Where(x => x.ITEM_CODE == itemcode).Sum(x => x.QTY_REQ)} {Suggests.FirstOrDefault()?.Item?.UNIT}";
                action.Data = $"物料{itemcode}:已下架[{(double)req.Details.Where(x => x.ITEM_CODE == itemcode).Sum(x => x.QTY_OUT)}],共{(double)req.Details.Where(x => x.ITEM_CODE == itemcode).Sum(x => x.QTY_REQ)} {Suggests.FirstOrDefault()?.Item?.UNIT}";
            }
            catch (Exception ex)
            {
@@ -318,7 +318,7 @@
                }
                //仓库卡控
                if (!req.Dtls.Any(q => q.ITEM_CODE == CurInv.ItemInfo.ITEM_CODE && q.OUT_WH_CODE == CurInv.Warehouse.WH_CODE))
                if (!req.Details.Any(q => q.ITEM_CODE == CurInv.ItemInfo.ITEM_CODE && q.OUT_WH_CODE == CurInv.Warehouse.WH_CODE))
                {
                    action.IsSuccessed = false;
                    action.LocaleMsg = Biz.L($"条码[{CurInv.Barcode.SN}]的料号或者仓库跟单据[{req.ORDER_NO}]上的不一致");
@@ -382,8 +382,8 @@
                //2.是否超发
                isExceed = false;
                req = await Biz.Db.Queryable<BIZ_WMS_TRANSFER>().Where(x => x.ORDER_NO == req.ORDER_NO).Includes(q => q.DtlsWithGhost, d => d.ItemInfo).IncludesAllFirstLayer().FirstAsync();
                dtls = req.Dtls.Where(x => x.ITEM_CODE == CurInv.ItemInfo.ITEM_CODE).ToList();
                req = await Biz.Db.Queryable<BIZ_WMS_TRANSFER>().Where(x => x.ORDER_NO == req.ORDER_NO).Includes(q => q.Details, d => d.ItemInfo).IncludesAllFirstLayer().FirstAsync();
                dtls = req.Details.Where(x => x.ITEM_CODE == CurInv.ItemInfo.ITEM_CODE).ToList();
                if (dtls.IsNullOrEmpty())
                {
                    action.IsSuccessed = false;
@@ -583,7 +583,7 @@
                };
                //4.更新业务单据,BIZ_WMS_TRANSFER、BIZ_WMS_TRANSFER_DTL、BIZ_WMS_TRANSFER_SN 判断明细行状态是否完成
                var isComplete = !req.Dtls.Any(x => x.STATUS != BIZ_WMS_TRANSFER.STATUSs.Finished.GetValue() && x.STATUS != BIZ_WMS_TRANSFER.STATUSs.Picked.GetValue() && x.QTY_REQ > 0);
                var isComplete = !req.Details.Any(x => x.STATUS != BIZ_WMS_TRANSFER.STATUSs.Finished.GetValue() && x.STATUS != BIZ_WMS_TRANSFER.STATUSs.Picked.GetValue() && x.QTY_REQ > 0);
                his_isComplete = isComplete;
                if (isComplete)
                {
Tiger.Business.WMS/Transaction/Yada/Out_BIZ_WMS_PREP.cs
@@ -479,6 +479,8 @@
                    SHELF_CODE = CurInvItem.Shelf.SHELF_CODE,
                    LOCATION_ID = CurInvItem.Location.ID,
                    LOCATION_CODE = CurInvItem.Location.LOCATION_CODE,
                    PREP_USER = UserCode,
                    DOWN_TIME = DateTime.Now,
                    SMT_NO = CurPrepDtl.SMT_NO,
                    STATION_NO = CurPrepDtl.STATION_NO,
                    FEEDER_NO = CurPrepDtl.FEEDER_NO,
Tiger.Model.Net/Entitys/WMS/BIZ_U9_MISC_OUT.cs
@@ -7,164 +7,168 @@
namespace Tiger.Model
{
    /// <summary>
    /// 实体:杂发单(U9)
    /// 实体:杂发单(U9)
    /// </summary>
    [Description("Primary:ID")]
    [DisplayName("杂发单(U9)")]
    [DisplayName("杂发单(U9)")]
    [Serializable]
    [SugarTable("BIZ_U9_MISC_OUT")]
    public class BIZ_U9_MISC_OUT : DbEntityWithAuth
    {
        #region 构造函数
        #region 构造函数
        /// <summary>
        /// 实体:杂发单(U9)
        /// 实体:杂发单(U9)
        /// </summary>
        public BIZ_U9_MISC_OUT() {}
        #endregion
        #region 公共属性
        #region 公共属性
        /// <summary>
        /// 单据号
        /// 单据号
        /// </summary>
        [DisplayName("单据号")]
        [DisplayName("单据号")]
        public string ORDER_NO { get; set; }
        /// <summary>
        /// 状态(0Init初始化|1WaitPick待捡料|2Picking捡料中|3Picked已捡完|4Sended已发料|5Close已关闭|6Cancel作废)
        /// 状态(0Init初始化|1WaitPick待捡料|2Picking捡料中|3Picked已捡完|4Sended已发料|5Close已关闭|6Cancel作废)
        /// </summary>
        [DisplayName("状态(0Init初始化|1WaitPick待捡料|2Picking捡料中|3Picked已捡完|4Sended已发料|5Close已关闭|6Cancel作废)")]
        [DisplayName("状态(0Init初始化|1WaitPick待捡料|2Picking捡料中|3Picked已捡完|4Sended已发料|5Close已关闭|6Cancel作废)")]
        public int STATUS { get; set; }
        /// <summary>
        /// 单据类型编码
        /// 单据类型编码
        /// </summary>
        [DisplayName("单据类型编码")]
        [DisplayName("单据类型编码")]
        public string TYPE_CODE { get; set; }
        /// <summary>
        /// 单据类型名称
        /// 单据类型名称
        /// </summary>
        [DisplayName("单据类型名称")]
        [DisplayName("单据类型名称")]
        public string TYPE_NAME { get; set; }
        /// <summary>
        /// ERP单据状态
        /// ERP单据状态
        /// </summary>
        [DisplayName("ERP单据状态")]
        [DisplayName("ERP单据状态")]
        public string ERP_STATUS_CODE { get; set; }
        /// <summary>
        /// ERP单据状态名称
        /// ERP单据状态名称
        /// </summary>
        [DisplayName("ERP单据状态名称")]
        [DisplayName("ERP单据状态名称")]
        public string ERP_STATUS_NAME { get; set; }
        /// <summary>
        /// 单据日期
        /// 单据日期
        /// </summary>
        [DisplayName("单据日期")]
        [DisplayName("单据日期")]
        public DateTime ORDER_DATE { get; set; } = DateTime.MinValue;
        /// <summary>
        /// 备料人
        /// 备料人
        /// </summary>
        [DisplayName("备料人")]
        [DisplayName("备料人")]
        public string PREP_PERSON { get; set; }
        /// <summary>
        /// 备料完成时间
        /// 备料完成时间
        /// </summary>
        [DisplayName("备料完成时间")]
        [DisplayName("备料完成时间")]
        public DateTime FINISH_TIME { get; set; } = DateTime.MinValue;
        /// <summary>
        /// 领料人
        /// 领料人
        /// </summary>
        [DisplayName("领料人")]
        [DisplayName("领料人")]
        public string REQ_PERSON { get; set; }
        /// <summary>
        /// 领料部门
        /// 领料部门
        /// </summary>
        [DisplayName("领料部门")]
        [DisplayName("领料部门")]
        public string REQ_DEPT { get; set; }
        /// <summary>
        /// 出库时间
        /// 出库时间
        /// </summary>
        [DisplayName("出库时间")]
        [DisplayName("出库时间")]
        public DateTime DLVY_TIME { get; set; } = DateTime.MinValue;
        /// <summary>
        /// 备注
        /// 备注
        /// </summary>
        [DisplayName("备注")]
        [DisplayName("备注")]
        public string REMARK { get; set; }
        /// <summary>
        /// -1:未处理,0:同步处理完,>0:同步处理失败次数
        /// -1:未处理,0:同步处理完,>0:同步处理失败次数
        /// </summary>
        [DisplayName("-1:未处理,0:同步处理完,>0:同步处理失败次数")]
        [DisplayName("-1:未处理,0:同步处理完,>0:同步处理失败次数")]
        public int HANDLED { get; set; }
        /// <summary>
        /// 最后一次同步处理日期
        /// 最后一次同步处理日期
        /// </summary>
        [DisplayName("最后一次同步处理日期")]
        [DisplayName("最后一次同步处理日期")]
        public DateTime HANDLED_DATE { get; set; } = DateTime.MinValue;
        /// <summary>
        /// 过账提交的JSON
        /// 过账提交的JSON
        /// </summary>
        [DisplayName("过账提交的JSON")]
        [DisplayName("过账提交的JSON")]
        public string COMMIT_JSON { get; set; }
        /// <summary>
        /// 过账提交的返回信息
        /// 过账提交的返回信息
        /// </summary>
        [DisplayName("过账提交的返回信息")]
        [DisplayName("过账提交的返回信息")]
        public string COMMIT_MSG { get; set; }
        #endregion
        #region 虚拟属性
        /*例子
        #region 虚拟属性
        /*例子
        [SugarColumn(IsIgnore = true)]
        public string FieldName { get; set; }
        */
        #endregion
        #region 外键属性
        /*例子
        //一对一外键导航
        [Navigate(NavigateType.OneToOne, nameof(ClassAId))]//一对一 ClassAId是BIZ_U9_MISC_OUT类里面的外键ID字段
        public ClassA ClassA { get; set; } //注意禁止手动赋值,只能是null
        //一对多外键导航
        [Navigate(NavigateType.OneToMany, nameof(ClassA.BIZ_U9_MISC_OUTId))]//ClassA表中的BIZ_U9_MISC_OUTId
        public List<ClassA> ClassAList { get; set; }//注意禁止手动赋值,只能是null
        //多对多外键导航
        [Navigate(typeof(MappingClass), nameof(MappingClass.BIZ_U9_MISC_OUTId), nameof(MappingClass.ClassAId))]//注意顺序
        public List<ClassA> ClassAList { get; set; } //注意禁止手动赋值,只能是null
        #region 外键属性
        /*例子
        //一对一外键导航
        [Navigate(NavigateType.OneToOne, nameof(ClassAId))]//一对一 ClassAId是BIZ_U9_MISC_OUT类里面的外键ID字段
        public ClassA ClassA { get; set; } //注意禁止手动赋值,只能是null
        //一对多外键导航
        [Navigate(NavigateType.OneToMany, nameof(ClassA.BIZ_U9_MISC_OUTId))]//ClassA表中的BIZ_U9_MISC_OUTId
        public List<ClassA> ClassAList { get; set; }//注意禁止手动赋值,只能是null
        //多对多外键导航
        [Navigate(typeof(MappingClass), nameof(MappingClass.BIZ_U9_MISC_OUTId), nameof(MappingClass.ClassAId))]//注意顺序
        public List<ClassA> ClassAList { get; set; } //注意禁止手动赋值,只能是null
        */
        [Navigate(NavigateType.OneToMany, nameof(BIZ_U9_MISC_OUT_DTL.ORDER_NO), nameof(ORDER_NO), "GHOST_ROW = 0")]//一对一 ClassAId是BIZ_U9_MISC_OUT类里面的外键ID字段
        public List<BIZ_U9_MISC_OUT_DTL> Details { get; set; } //注意禁止手动赋值,只能是null
        [Navigate(NavigateType.OneToMany, nameof(BIZ_U9_MISC_OUT_SN.ORDER_NO), nameof(ORDER_NO), "GHOST_ROW = 0")]//一对一 ClassAId是BIZ_U9_MISC_OUT类里面的外键ID字段
        public List<BIZ_U9_MISC_OUT_SN> SnList { get; set; } //注意禁止手动赋值,只能是null
        #endregion
        #region 枚举变量
        /*例子
        #region 枚举变量
        /*例子
        public enum FieldNames
        {
            [Description("枚举描述0")]
            [Description("枚举描述0")]
            Enum0,
            [Description("枚举描述1")]
            [Description("枚举描述1")]
            Enum1,
        }
        */
        /// <summary>
        /// 枚举:状态(0Init初始化|1WaitPick待捡料|2Picking捡料中|3Picked已捡完|4Sended已发料|5Close已关闭|6Cancel作废)
        /// 枚举:状态(0Init初始化|1WaitPick待捡料|2Picking捡料中|3Picked已捡完|4Sended已发料|5Close已关闭|6Cancel作废)
        /// </summary>
        public enum STATUSs
        {
            [Description("初始化")]
            [Description("初始化")]
            Init = 0,
            [Description("待捡料")]
            [Description("待捡料")]
            WaitPick = 1,
            [Description("捡料中")]
            [Description("捡料中")]
            Picking = 2,
            [Description("已捡完")]
            [Description("已捡完")]
            Picked = 3,
            [Description("已发料")]
            [Description("已发料")]
            Sended = 4,
            [Description("已关闭")]
            [Description("已关闭")]
            Close = 5,
            [Description("作废")]
            [Description("作废")]
            Cancel = 6,
        }
        #endregion
        #region 公共方法
        #region 公共方法
        #endregion
Tiger.Model.Net/Entitys/WMS/BIZ_U9_MISC_OUT_SN.cs
@@ -7,153 +7,148 @@
namespace Tiger.Model
{
    /// <summary>
    /// 实体:杂发单(U9)条码明细
    /// 实体:杂发单(U9)条码明细
    /// </summary>
    [Description("Primary:ID")]
    [DisplayName("杂发单(U9)条码明细")]
    [DisplayName("杂发单(U9)条码明细")]
    [Serializable]
    [SugarTable("BIZ_U9_MISC_OUT_SN")]
    public class BIZ_U9_MISC_OUT_SN : DbEntityWithAuth
    {
        #region 构造函数
        #region 构造函数
        /// <summary>
        /// 实体:杂发单(U9)条码明细
        /// 实体:杂发单(U9)条码明细
        /// </summary>
        public BIZ_U9_MISC_OUT_SN() {}
        #endregion
        #region 公共属性
        #region 公共属性
        /// <summary>
        /// 单据号
        /// 单据号
        /// </summary>
        [DisplayName("单据号")]
        [DisplayName("单据号")]
        public string ORDER_NO { get; set; }
        /// <summary>
        /// 单据行号
        /// 单据行号
        /// </summary>
        [DisplayName("单据行号")]
        [DisplayName("单据行号")]
        public string LINE_NO { get; set; }
        /// <summary>
        /// 条码
        /// 条码
        /// </summary>
        [DisplayName("条码")]
        [DisplayName("条码")]
        public string SN { get; set; }
        /// <summary>
        /// 元条码
        /// 物料编码
        /// </summary>
        [DisplayName("元条码")]
        public string META_SN { get; set; }
        /// <summary>
        /// 物料编码
        /// </summary>
        [DisplayName("物料编码")]
        [DisplayName("物料编码")]
        public string ITEM_CODE { get; set; }
        /// <summary>
        /// ״̬(ͬWMS_ITEM״̬)
        /// 状态(同WMS_ITEM状态)
        /// </summary>
        [DisplayName("״̬(ͬWMS_ITEM״̬)")]
        [DisplayName("状态(同WMS_ITEM状态)")]
        public int STATUS { get; set; }
        /// <summary>
        /// 数量
        /// 数量
        /// </summary>
        [DisplayName("数量")]
        [DisplayName("数量")]
        public double QTY { get; set; }
        /// <summary>
        /// 单位
        /// 单位
        /// </summary>
        [DisplayName("单位")]
        [DisplayName("单位")]
        public string UNIT { get; set; }
        /// <summary>
        /// 发料仓库
        /// 发料仓库
        /// </summary>
        [DisplayName("发料仓库")]
        [DisplayName("发料仓库")]
        public string WH_CODE { get; set; }
        /// <summary>
        /// 发料储区
        /// 发料储区
        /// </summary>
        [DisplayName("发料储区")]
        [DisplayName("发料储区")]
        public string REGION_CODE { get; set; }
        /// <summary>
        /// 发料货架/料车
        /// 发料货架/料车
        /// </summary>
        [DisplayName("发料货架/料车")]
        [DisplayName("发料货架/料车")]
        public string SHELF_CODE { get; set; }
        /// <summary>
        /// 发料储位
        /// 发料储位
        /// </summary>
        [DisplayName("发料储位")]
        [DisplayName("发料储位")]
        public string LOCATION_CODE { get; set; }
        /// <summary>
        /// 下架时间
        /// 下架时间
        /// </summary>
        [DisplayName("下架时间")]
        [DisplayName("下架时间")]
        public DateTime DOWN_TIME { get; set; } = DateTime.MinValue;
        /// <summary>
        /// 出库时间
        /// 出库时间
        /// </summary>
        [DisplayName("出库时间")]
        [DisplayName("出库时间")]
        public DateTime DLVY_TIME { get; set; } = DateTime.MinValue;
        /// <summary>
        /// 是否出库(Y/N)
        /// 是否出库(Y/N)
        /// </summary>
        [DisplayName("是否出库(Y/N)")]
        [DisplayName("是否出库(Y/N)")]
        public string IS_OUT { get; set; }
        /// <summary>
        /// 批次号
        /// 批次号
        /// </summary>
        [DisplayName("批次号")]
        [DisplayName("批次号")]
        public string LOTNO { get; set; }
        /// <summary>
        /// 箱号
        /// 箱号
        /// </summary>
        [DisplayName("箱号")]
        [DisplayName("箱号")]
        public string CARTON_NO { get; set; }
        /// <summary>
        /// 栈板号
        /// 栈板号
        /// </summary>
        [DisplayName("栈板号")]
        [DisplayName("栈板号")]
        public string PALLET_NO { get; set; }
        /// <summary>
        /// 备注
        /// 备注
        /// </summary>
        [DisplayName("备注")]
        [DisplayName("备注")]
        public string REMARK { get; set; }
        #endregion
        #region 虚拟属性
        /*例子
        #region 虚拟属性
        /*例子
        [SugarColumn(IsIgnore = true)]
        public string FieldName { get; set; }
        */
        #endregion
        #region 外键属性
        /*例子
        //一对一外键导航
        [Navigate(NavigateType.OneToOne, nameof(ClassAId))]//一对一 ClassAId是BIZ_U9_MISC_OUT_SN类里面的外键ID字段
        public ClassA ClassA { get; set; } //注意禁止手动赋值,只能是null
        //一对多外键导航
        [Navigate(NavigateType.OneToMany, nameof(ClassA.BIZ_U9_MISC_OUT_SNId))]//ClassA表中的BIZ_U9_MISC_OUT_SNId
        public List<ClassA> ClassAList { get; set; }//注意禁止手动赋值,只能是null
        //多对多外键导航
        [Navigate(typeof(MappingClass), nameof(MappingClass.BIZ_U9_MISC_OUT_SNId), nameof(MappingClass.ClassAId))]//注意顺序
        public List<ClassA> ClassAList { get; set; } //注意禁止手动赋值,只能是null
        #region 外键属性
        /*例子
        //一对一外键导航
        [Navigate(NavigateType.OneToOne, nameof(ClassAId))]//一对一 ClassAId是BIZ_U9_MISC_OUT_SN类里面的外键ID字段
        public ClassA ClassA { get; set; } //注意禁止手动赋值,只能是null
        //一对多外键导航
        [Navigate(NavigateType.OneToMany, nameof(ClassA.BIZ_U9_MISC_OUT_SNId))]//ClassA表中的BIZ_U9_MISC_OUT_SNId
        public List<ClassA> ClassAList { get; set; }//注意禁止手动赋值,只能是null
        //多对多外键导航
        [Navigate(typeof(MappingClass), nameof(MappingClass.BIZ_U9_MISC_OUT_SNId), nameof(MappingClass.ClassAId))]//注意顺序
        public List<ClassA> ClassAList { get; set; } //注意禁止手动赋值,只能是null
        */
        #endregion
        #region 枚举变量
        /*例子
        #region 枚举变量
        /*例子
        public enum FieldNames
        {
            [Description("枚举描述0")]
            [Description("枚举描述0")]
            Enum0,
            [Description("枚举描述1")]
            [Description("枚举描述1")]
            Enum1,
        }
        */
        #endregion
        #region 公共方法
        #region 公共方法
        #endregion
Tiger.Model.Net/Entitys/WMS/BIZ_WMS_PREP_SN.cs
@@ -119,6 +119,11 @@
        [DisplayName("发料储位")]
        public string LOCATION_CODE { get; set; }
        /// <summary>
        /// 备料人
        /// </summary>
        [DisplayName("备料人")]
        public string PREP_USER { get; set; }
        /// <summary>
        /// 下架时间
        /// </summary>
        [DisplayName("下架时间")]
Tiger.Model.Net/Entitys/WMS/BIZ_WMS_TRANSFER.cs
@@ -129,18 +129,10 @@
        [Navigate(typeof(MappingClass), nameof(MappingClass.BIZ_WMS_TRANSFERId), nameof(MappingClass.ClassAId))]//注意顺序
        public List<ClassA> ClassAList { get; set; } //注意禁止手动赋值,只能是null
        */
        [Navigate(NavigateType.OneToMany, nameof(BIZ_WMS_TRANSFER_DTL.ORDER_NO), nameof(ORDER_NO))]
        public List<BIZ_WMS_TRANSFER_DTL> DtlsWithGhost { get; set; }//注意禁止手动赋值,只能是null
        [SugarColumn(IsIgnore = true)]
        public List<BIZ_WMS_TRANSFER_DTL> Dtls => DtlsWithGhost?.Where(q => !q.GHOST_ROW).ToList();
        [Navigate(NavigateType.OneToMany, nameof(BIZ_WMS_TRANSFER_SN.ORDER_NO), nameof(ORDER_NO))]
        public List<BIZ_WMS_TRANSFER_SN> SnListWithGhost { get; set; }//注意禁止手动赋值,只能是null
        [SugarColumn(IsIgnore = true)]
        public List<BIZ_WMS_TRANSFER_SN> SnList => SnListWithGhost?.Where(q => !q.GHOST_ROW).ToList();
        [Navigate(NavigateType.OneToMany, nameof(BIZ_WMS_TRANSFER_DTL.ORDER_NO), nameof(ORDER_NO), "GHOST_ROW = 0")]//一对一 ClassAId是BIZ_WMS_TRANSFER类里面的外键ID字段
        public List<BIZ_WMS_TRANSFER_DTL> Details { get; set; } //注意禁止手动赋值,只能是null
        [Navigate(NavigateType.OneToMany, nameof(BIZ_WMS_TRANSFER_SN.ORDER_NO), nameof(ORDER_NO), "GHOST_ROW = 0")]//一对一 ClassAId是BIZ_WMS_TRANSFER类里面的外键ID字段
        public List<BIZ_WMS_TRANSFER_SN> SnList { get; set; } //注意禁止手动赋值,只能是null
        #endregion 外键属性
Tiger.Model.Net/Entitys/WMS/BIZ_WMS_TRANSFER_SN.cs
@@ -7,143 +7,148 @@
namespace Tiger.Model
{
    /// <summary>
    /// 实体:调拨单(WMS)条码明细
    /// 实体:调拨单(WMS)条码明细
    /// </summary>
    [Description("Primary:ID")]
    [DisplayName("调拨单(WMS)条码明细")]
    [DisplayName("调拨单(WMS)条码明细")]
    [Serializable]
    [SugarTable("BIZ_WMS_TRANSFER_SN")]
    public class BIZ_WMS_TRANSFER_SN : DbEntityWithAuth
    {
        #region 构造函数
        #region 构造函数
        /// <summary>
        /// 实体:调拨单(WMS)条码明细
        /// 实体:调拨单(WMS)条码明细
        /// </summary>
        public BIZ_WMS_TRANSFER_SN() {}
        #endregion
        #region 公共属性
        #region 公共属性
        /// <summary>
        /// 调拨单号
        /// 调拨单号
        /// </summary>
        [DisplayName("调拨单号")]
        [DisplayName("调拨单号")]
        public string ORDER_NO { get; set; }
        /// <summary>
        /// 调拨单行号
        /// 调拨单行号
        /// </summary>
        [DisplayName("调拨单行号")]
        [DisplayName("调拨单行号")]
        public string ORDER_LINE { get; set; }
        /// <summary>
        /// 条码
        /// 条码
        /// </summary>
        [DisplayName("条码")]
        [DisplayName("条码")]
        public string SN { get; set; }
        /// <summary>
        /// ״̬(ͬWMS_ITEM״̬)
        /// 状态(同WMS_ITEM状态)
        /// </summary>
        [DisplayName("״̬(ͬWMS_ITEM״̬)")]
        [DisplayName("状态(同WMS_ITEM状态)")]
        public int STATUS { get; set; }
        /// <summary>
        /// 物料编码
        /// 物料编码
        /// </summary>
        [DisplayName("物料编码")]
        [DisplayName("物料编码")]
        public string ITEM_CODE { get; set; }
        /// <summary>
        /// 数量
        /// 数量
        /// </summary>
        [DisplayName("数量")]
        [DisplayName("数量")]
        public double QTY { get; set; }
        /// <summary>
        /// 调出仓库
        /// 批号
        /// </summary>
        [DisplayName("调出仓库")]
        [DisplayName("批号")]
        public string LOTNO { get; set; }
        /// <summary>
        /// 调出仓库
        /// </summary>
        [DisplayName("调出仓库")]
        public string OUT_WH_CODE { get; set; }
        /// <summary>
        /// 调出储区
        /// 调出储区
        /// </summary>
        [DisplayName("调出储区")]
        [DisplayName("调出储区")]
        public string OUT_REGION_CODE { get; set; }
        /// <summary>
        /// 调出货架
        /// 调出货架
        /// </summary>
        [DisplayName("调出货架")]
        [DisplayName("调出货架")]
        public string OUT_SHELF_CODE { get; set; }
        /// <summary>
        /// 调出储位
        /// 调出储位
        /// </summary>
        [DisplayName("调出储位")]
        [DisplayName("调出储位")]
        public string OUT_LOCATION_CODE { get; set; }
        /// <summary>
        /// 调出时间
        /// 调出时间
        /// </summary>
        [DisplayName("调出时间")]
        [DisplayName("调出时间")]
        public DateTime OUT_TIME { get; set; } = DateTime.MinValue;
        /// <summary>
        /// 拨入仓库
        /// 拨入仓库
        /// </summary>
        [DisplayName("拨入仓库")]
        [DisplayName("拨入仓库")]
        public string IN_WH_CODE { get; set; }
        /// <summary>
        /// 拨入储区
        /// 拨入储区
        /// </summary>
        [DisplayName("拨入储区")]
        [DisplayName("拨入储区")]
        public string IN_REGION_CODE { get; set; }
        /// <summary>
        /// 拨入货架
        /// 拨入货架
        /// </summary>
        [DisplayName("拨入货架")]
        [DisplayName("拨入货架")]
        public string IN_SHELF_CODE { get; set; }
        /// <summary>
        /// 拨入储位
        /// 拨入储位
        /// </summary>
        [DisplayName("拨入储位")]
        [DisplayName("拨入储位")]
        public string IN_LOCATION_CODE { get; set; }
        /// <summary>
        /// 拨入时间
        /// 拨入时间
        /// </summary>
        [DisplayName("拨入时间")]
        [DisplayName("拨入时间")]
        public DateTime IN_TIME { get; set; } = DateTime.MinValue;
        /// <summary>
        /// 备注
        /// 备注
        /// </summary>
        [DisplayName("备注")]
        [DisplayName("备注")]
        public string REMARK { get; set; }
        #endregion
        #region 虚拟属性
        /*例子
        #region 虚拟属性
        /*例子
        [SugarColumn(IsIgnore = true)]
        public string FieldName { get; set; }
        */
        #endregion
        #region 外键属性
        /*例子
        //一对一外键导航
        [Navigate(NavigateType.OneToOne, nameof(ClassAId))]//一对一 ClassAId是BIZ_WMS_TRANSFER_SN类里面的外键ID字段
        public ClassA ClassA { get; set; } //注意禁止手动赋值,只能是null
        //一对多外键导航
        [Navigate(NavigateType.OneToMany, nameof(ClassA.BIZ_WMS_TRANSFER_SNId))]//ClassA表中的BIZ_WMS_TRANSFER_SNId
        public List<ClassA> ClassAList { get; set; }//注意禁止手动赋值,只能是null
        //多对多外键导航
        [Navigate(typeof(MappingClass), nameof(MappingClass.BIZ_WMS_TRANSFER_SNId), nameof(MappingClass.ClassAId))]//注意顺序
        public List<ClassA> ClassAList { get; set; } //注意禁止手动赋值,只能是null
        #region 外键属性
        /*例子
        //一对一外键导航
        [Navigate(NavigateType.OneToOne, nameof(ClassAId))]//一对一 ClassAId是BIZ_WMS_TRANSFER_SN类里面的外键ID字段
        public ClassA ClassA { get; set; } //注意禁止手动赋值,只能是null
        //一对多外键导航
        [Navigate(NavigateType.OneToMany, nameof(ClassA.BIZ_WMS_TRANSFER_SNId))]//ClassA表中的BIZ_WMS_TRANSFER_SNId
        public List<ClassA> ClassAList { get; set; }//注意禁止手动赋值,只能是null
        //多对多外键导航
        [Navigate(typeof(MappingClass), nameof(MappingClass.BIZ_WMS_TRANSFER_SNId), nameof(MappingClass.ClassAId))]//注意顺序
        public List<ClassA> ClassAList { get; set; } //注意禁止手动赋值,只能是null
        */
        #endregion
        #region 枚举变量
        /*例子
        #region 枚举变量
        /*例子
        public enum FieldNames
        {
            [Description("枚举描述0")]
            [Description("枚举描述0")]
            Enum0,
            [Description("枚举描述1")]
            [Description("枚举描述1")]
            Enum1,
        }
        */
        #endregion
        #region 公共方法
        #region 公共方法
        #endregion