8 天以前 | Rodney Chen | ![]() |
8 天以前 | Rodney Chen | ![]() |
8 天以前 | Ben Lin | ![]() |
9 天以前 | YangYuGang | ![]() |
9 天以前 | YangYuGang | ![]() |
Tiger.Business.MES/iERP/U9C_MES.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Tiger.Business.WMS/Extensions/Yada/OutExtension.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Tiger.Business.WMS/Transaction/Yada/In_BIZ_U9_RECEIPT.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Tiger.Business.WMS/Transaction/Yada/Out_BIZ_WMS_PREP.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Tiger.Business.WMS/Transaction/Yada/Print_BIZ_U9_ASN.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Tiger.Model.Net/Entitys/WMS/BIZ_U9_MISC_OUT_DTL.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Tiger.Model.Net/Entitys/WMS/BIZ_WMS_PREP.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Tiger.Model.Net/Entitys/WMS/BIZ_WMS_TRANSFER_DTL.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Tiger.Model.Net/Entitys/WMS/WMS_ITEM_POOL.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
Tiger.Business.MES/iERP/U9C_MES.cs
@@ -31,11 +31,11 @@ public ApiAction GetBasItem(U9C_Base_Input input) { var action = new ApiAction(); var db = Biz.Db; Logger.Scheduler.Info($"物料信息开始同步。。。数据检查进行中。。。"); Logger.Scheduler.Info($"{input.triggerDetail}"); DbClient db = Biz.DataSource["YadaU9C"].Client; var list = db.Queryable<dynamic>().AS("mes_ItemMaster").Where("ModifiedOn > @startTime And ModifiedOn < @endTime", new { startTime = input.startTime, endTime = input.endTime }).ToList(); var orgs = Biz.Db.Queryable<SYS_ORGANIZATION>().ToList(); var list = Biz.DataSource["YadaU9C"].Client.Queryable<dynamic>().AS("mes_ItemMaster").Where("ModifiedOn > @startTime And ModifiedOn < @endTime", new { startTime = input.startTime, endTime = input.endTime }).ToList(); var orgs = db.Queryable<SYS_ORGANIZATION>().ToList(); List<BAS_ITEM> items = new(); var itemExts = new List<BAS_ITEM_EXT>(); if (list != null && list.Count > 0) @@ -67,6 +67,13 @@ RULE_CODE = di["BarRule"] == null ? "" : di["BarRule"].ToString(), DEFAULT_LOCATION = di["BinCode"] == null ? "" : di["BinCode"].ToString(), }; var whUnit = db.Queryable<V_WH_UNIT>().Where(t => t.LOCATION_CODE == basItem.DEFAULT_LOCATION && t.AUTH_ORG == basItem.AUTH_ORG).First(); if (!whUnit.IsNullOrEmpty()) { basItem.DEFAULT_WH = whUnit.WH_CODE; basItem.DEFAULT_REGION = whUnit.REGION_CODE; basItem.DEFAULT_SHELF = whUnit.SHELF_CODE; } items.Add(basItem); var extInfo = new BAS_ITEM_EXT() { @@ -88,7 +95,7 @@ } } Logger.Scheduler.Info($"物料信息存入实体中,总数:[{items.Count}]"); db = Biz.Db; //var dbTran = db.UseTran(() => //{ if (items.Any()) Tiger.Business.WMS/Extensions/Yada/OutExtension.cs
@@ -12,8 +12,6 @@ using Tiger.Model.Base; using Tiger.Model.Entitys.MES.U9C; using Tiger.Model.MES.Yada; using static IronPython.SQLite.PythonSQLite; using static Microsoft.Scripting.Hosting.Shell.ConsoleHostOptions; namespace Tiger.Business.WMS.Extensions { @@ -37,6 +35,8 @@ return nameof(BIZ_MES_WO); case BIZ_WMS_PREP.BIZ_TYPEs.Outsourcing: return nameof(BIZ_U9_SCM_OUT); case BIZ_WMS_PREP.BIZ_TYPEs.Transfer: return nameof(BIZ_WMS_TRANSFER); case BIZ_WMS_PREP.BIZ_TYPEs.Requisition: default: return ""; @@ -73,6 +73,12 @@ pickList = dtls.Select(q => q.GetPickItem()).ToList(); } break; case BIZ_WMS_PREP.BIZ_TYPEs.Transfer: { var dtls = Biz.Db.Queryable<BIZ_WMS_TRANSFER_DTL>().Where(q => q.ORDER_NO == orderNo).ToList(); pickList = dtls.Select(q => q.GetPickItem()).ToList(); } break; case BIZ_WMS_PREP.BIZ_TYPEs.Requisition: default: break; @@ -93,6 +99,7 @@ case BIZ_WMS_PREP.BIZ_TYPEs.Others: case BIZ_WMS_PREP.BIZ_TYPEs.WorkOrder: case BIZ_WMS_PREP.BIZ_TYPEs.Outsourcing: case BIZ_WMS_PREP.BIZ_TYPEs.Transfer: case BIZ_WMS_PREP.BIZ_TYPEs.Requisition: default: return dtl.QTY_REQ; @@ -116,6 +123,7 @@ return await CreateIssueDoc(trans, input); case BIZ_WMS_PREP.BIZ_TYPEs.Outsourcing: return await CreatePMIssueDoc(trans, input); case BIZ_WMS_PREP.BIZ_TYPEs.Transfer: case BIZ_WMS_PREP.BIZ_TYPEs.Requisition: default: throw new NotImplementedException($"发料单据类型[{type.GetDesc()}]未实现ERP接口调用"); Tiger.Business.WMS/Transaction/Yada/In_BIZ_U9_RECEIPT.cs
@@ -537,13 +537,13 @@ var action = new ApiAction<PageAble<BIZ_U9_RECEIPT>>(); var query = Biz.DataSource["YadaU9C"].Client.Queryable<mes_ReturnedDocInfo>().Where(q => q.Status == 3) .WhereIF(!input.OrderNo.IsNullOrEmpty(), q => q.DocNo.Contains(input.OrderNo) || SqlFunc.Subqueryable<mes_AsnDocInfo>().Where(a => a.AsnId == q.SrcASNDocId && q.DocNo.Contains(input.OrderNo)).Any()) .OrderBy(q => q.DocNo).ToPage(input.pageIndex, input.pageSize); .OrderBy(q => q.DocNo).Select(q => new { q.DocNo, q.Status, q.StatusName }).Distinct().ToList(); action.Data = await MainDB.Queryable<BIZ_U9_RECEIPT>().Where(q => query.data.Select(o => o.DocNo).Contains(q.ORDER_NO)).ToPageAsync(input.pageIndex, input.pageSize); action.Data = await MainDB.Queryable<BIZ_U9_RECEIPT>().Where(q => query.Select(o => o.DocNo).Contains(q.ORDER_NO)).ToPageAsync(input.pageIndex, input.pageSize); foreach (var order in action.Data.data) { order.ERP_STATUS_CODE = query.data.FirstOrDefault(q => q.DocNo == order.ORDER_NO)?.Status.ToString(); order.ERP_STATUS_NAME = query.data.FirstOrDefault(q => q.DocNo == order.ORDER_NO)?.StatusName; order.ERP_STATUS_CODE = query.FirstOrDefault(q => q.DocNo == order.ORDER_NO)?.Status.ToString(); order.ERP_STATUS_NAME = query.FirstOrDefault(q => q.DocNo == order.ORDER_NO)?.StatusName; } MainDB.Updateable(action.Data.data, UserCode).UpdateColumns(q => new { q.UPDATE_TIME, q.UPDATE_USER, q.ERP_STATUS_CODE, q.ERP_STATUS_NAME }).ExecuteCommand(); return action; Tiger.Business.WMS/Transaction/Yada/Out_BIZ_WMS_PREP.cs
@@ -415,6 +415,14 @@ action.LocaleMsg = Biz.L("WMS.Default.ScanItem.ItemIsLock", inv.CurPkg.SN); return SetOutPutMqttMsg(action, input.Locale); } //验证条码是否被其他用户和单据锁定 if (inv.Items.Any(q => q.IS_LOCKED == "Y")) { action.IsSuccessed = false; //action.LocaleMsg = Biz.L("条码[{0}]已被锁定,请重新扫描"); action.LocaleMsg = Biz.L("WMS.Default.ScanItem.ItemIsLock", inv.CurPkg.SN); return SetOutPutMqttMsg(action, input.Locale); } //储位验证 if (inv.Location.IsNullOrEmpty()) { @@ -432,13 +440,22 @@ return SetOutPutMqttMsg(action, input.Locale); } //判断是否在备料中的物料 if (!CurPREP.Order.Details.Any(q => q.ITEM_CODE == inv.ItemInfo.ITEM_CODE)) if (inv.ItemInfo.ITEM_CODE != CurPrepDtl.ITEM_CODE) { action.IsSuccessed = false; //action.LocaleMsg = Biz.L($"当前备料任务[{0}]不包含条码[{1}]的物料编码[{2}],请放回原储位"); action.LocaleMsg = Biz.L("WMS.Out_BIZ_WMS_PREP.ScanItem.NoNeedItemCode", inv.ItemInfo.ITEM_CODE.IsNullOrEmpty(inv.Barcode.ItemCode)); //action.LocaleMsg = Biz.L($"条码[{0}]不是当前选中的物料行[{1}],请放回原储位或者重新选择下架物料行"); action.LocaleMsg = Biz.L("WMS.Out_BIZ_WMS_PREP.ScanItem.NoNeedItemCode", inv.CurPkg.SN, CurPrepDtl.ITEM_CODE); return action; } //判断是否在备料中的物料 //if (!CurPREP.Order.Details.Any(q => q.ITEM_CODE == inv.ItemInfo.ITEM_CODE)) //{ // action.IsSuccessed = false; // //action.LocaleMsg = Biz.L($"当前备料任务[{0}]不包含条码[{1}]的物料编码[{2}],请放回原储位"); // action.LocaleMsg = Biz.L("WMS.Out_BIZ_WMS_PREP.ScanItem.NoNeedItemCode", inv.ItemInfo.ITEM_CODE.IsNullOrEmpty(inv.Barcode.ItemCode)); // return action; //} //ProcessingOrderDetail = input.SN; //if (WMSContext.TransactionDic.Where(q => !string.IsNullOrWhiteSpace(q.Value.ProcessingSn)).Any(q => q.Value.ProcessingSn == ProcessingSn && q.Value.TransID != this.TransID)) //{ Tiger.Business.WMS/Transaction/Yada/Print_BIZ_U9_ASN.cs
@@ -44,6 +44,7 @@ private List<BIZ_U9_ASN_SN> CurSn = new(); List<string> SnList = new(); private string rcvDocType = "RCV03"; //默认无单 private string CurReqType = "0"; #endregion #region Functions @@ -140,9 +141,9 @@ var action = new ApiAction<ScanOutput>(new ScanOutput()); try { var reqType = input.Options["reqType"].ToString(); CurReqType = input.Options["reqType"].ToString(); rcvDocType = "RCV01"; if (reqType != "1") if (CurReqType != "1") { action.IsSuccessed = false; action.LocaleMsg = Biz.L($"不是随单赠品,不用扫描条码"); @@ -166,17 +167,17 @@ if (CurSn.Count > 0 && _sns.Any()) { action.LocaleMsg = Biz.L($"批次[{AsnSn.LOTNO}]已经提交,请继续下一步操作"); var _Order = await MainDB.Queryable<BIZ_U9_ASN>().Where(q => q.ORDER_NO == _sns[0].ORDER_NO).Includes(q => q.Details, d => d._ItemInfos).IncludesAllFirstLayer().FirstAsync(); if (_Order == null) CurOrder = await MainDB.Queryable<BIZ_U9_ASN>().Where(q => q.ORDER_NO == _sns[0].ORDER_NO).Includes(q => q.Details, d => d._ItemInfos).IncludesAllFirstLayer().FirstAsync(); if (CurOrder == null) { action.IsSuccessed = false; action.LocaleMsg = Biz.L($"查不到ASN单[{_Order.ORDER_NO}]的数据"); action.LocaleMsg = Biz.L($"查不到ASN单[{CurOrder.ORDER_NO}]的数据"); return action; } _Order.Details = _Order.Details.Where(q => _sns[0].LINE_NO == q.LINE_NO).ToList(); CurOrder.Details = CurOrder.Details.Where(q => _sns[0].LINE_NO == q.LINE_NO).ToList(); SnList.AddRange(_sns.Select(q => q.SN).ToList()); _Order.BarcodeList = SnList; action.Data.Data = _Order; CurOrder.BarcodeList = SnList; action.Data.Data = CurOrder; return action; } if (CurSn.Any(q=> q.ORDER_NO == AsnSn.ORDER_NO && q.LINE_NO == AsnSn.LINE_NO)) @@ -186,11 +187,14 @@ return action; } CurSn.Add(AsnSn); var _order = CurOrder.Clone(); CurOrder.ORDER_NO = $"WASN{DateTime.Now.ToString("yyyyMMddHHmmss")}"; _order.Details = _order.Details.Where(q => CurSn.Any(s => s.LINE_NO == q.LINE_NO)).ToList(); if (!CurOrder.ORDER_NO.StartsWith("WASN")) { CurOrder.ORDER_NO = $"WASN{DateTime.Now.ToString("yyyyMMddHHmmss")}"; CurOrder.STATUS = BIZ_U9_ASN.STATUSs.Arrived.GetValue(); } CurOrder.Details = CurOrder.Details.Where(q => CurSn.Any(s => s.LINE_NO == q.LINE_NO)).ToList(); action.LocaleMsg = Biz.L($"成功获取ASN单[{AsnSn.ORDER_NO}]的信息"); action.Data.Data = _order; action.Data.Data = CurOrder; } catch (Exception ex) { @@ -212,14 +216,26 @@ try { var reqType = input.Options["reqType"].ToString(); //如果类型不一样,则清除CurOrder if (CurReqType != reqType) { CurOrder = null; CurReqType = reqType; } var dtl = input.Options["record"].ToString().JsonToObject<BIZ_U9_ASN_DTL>(); CurOrder = CurOrder??new() { ORDER_NO= $"WASN{DateTime.Now.ToString("yyyyMMddHHmmss")}", SUPP_CODE = dtl.SUPP_CODE, DELIVERY_DATE = DateTime.Now, PLANARRIVED_DATE = DateTime.Now, AUTH_ORG = OrgCode, }; CurOrder.ORDER_NO = $"WASN{DateTime.Now.ToString("yyyyMMddHHmmss")}"; if (!CurOrder.ORDER_NO.IsNullOrEmpty() && CurOrder.ORDER_NO.StartsWith("WASN") && CurOrder.STATUS == BIZ_U9_ASN.STATUSs.Counting.GetValue()) { action.IsSuccessed = false; action.LocaleMsg = Biz.L($"已经生成ASN单[{CurOrder.ORDER_NO}],请继续下一步操作"); return action; } dtl.UPDATE_USER = $"GenerateASN_{UserCode}"; dtl.REMARK = CurSn.Where(q => q.ORDER_NO == dtl.ORDER_NO && q.LINE_NO == dtl.LINE_NO).FirstOrDefault()?.SN; dtl.ORDER_NO = CurOrder.ORDER_NO; @@ -244,6 +260,7 @@ _dtl.ID = Guid.NewGuid().ToString("N"); _dtl.IS_GIFT = reqType == "1" ? "Y" : "N"; _dtl.AUTH_ORG = CurOrder.AUTH_ORG; _dtl.LINE_NO = _dtl.LINE_NO ?? "10"; input.Options["record"] = _dtl.ToJson(); var _Asn = Asn.Clone(); AddCommitAction("GenerateASN", () => @@ -282,10 +299,12 @@ var dtl = input.Options["record"].ToString().JsonToObject<BIZ_U9_ASN_DTL>(); action.LocaleMsg = Biz.L($"成功提交ASN单[{dtl.ORDER_NO}]行数据,请点击打印按钮打印标签"); if (MainDB.Queryable<BIZ_U9_ASN_SN>().Where(q => q.ORDER_NO == dtl.ORDER_NO && q.LINE_NO == dtl.LINE_NO && (q.STATUS == WMS_ITEM.STATUSs.Counted.GetValue() || q.STATUS == WMS_ITEM.STATUSs.Rejected.GetValue())).Sum(q => q.QTY) == dtl.QTY) var asnSn = MainDB.Queryable<BIZ_U9_ASN_SN>().Where(q => q.ORDER_NO == dtl.ORDER_NO && q.LINE_NO == dtl.LINE_NO && (q.STATUS == WMS_ITEM.STATUSs.Counted.GetValue() || q.STATUS == WMS_ITEM.STATUSs.Rejected.GetValue())).ToList(); if (asnSn.Count>0 && asnSn.Sum(q => q.QTY) == dtl.QTY) { action.IsSuccessed = false; action.LocaleMsg = dtl.ORDER_NO.IsNullOrEmpty() ? Biz.L($"数据不存在!") : Biz.L($"ASN单[{dtl.ORDER_NO}]行[{dtl.LINE_NO}]数据已全部提交完成,如果未打印标签请点击打印按钮打印标签"); SnList.AddRange(asnSn.Select(q=>q.SN)); return action; } List<BIZ_U9_ASN_SN> sns = new(); @@ -296,7 +315,8 @@ SnList.Clear(); foreach (var sn in snlist) { var metaSn = DI.Resolve<ICodeRuleCache>()["NoSourceBarcode"]?.Generate($"{sn.SN}").Data.ToString() ?? ""; var strs = sn.SN.Split('/'); var metaSn = reqType == "2" ? $"{DI.Resolve<ICodeRuleCache>()["SampleBarcode"]?.Generate(strs[0],"/", strs[1], "/").Data.ToString() ?? ""}" : DI.Resolve<ICodeRuleCache>()["NoSourceBarcode"]?.Generate($"{sn.SN}").Data.ToString() ?? ""; SnList.Add(metaSn); var barcode = new Barcode(metaSn); BIZ_U9_ASN_SN info = new() @@ -364,6 +384,7 @@ { sn.STATUS = WMS_ITEM.STATUSs.Counted.GetValue(); } CurOrder.STATUS = BIZ_U9_ASN.STATUSs.Counting.GetValue(); AddCommitAction("CountedAndPrint", () => { @@ -404,7 +425,7 @@ public async Task<ApiAction> GenerateReceipt(BaseInput input) { var action = new ApiAction(); var orderNo = input.Data; var orderNo = CurOrder.ORDER_NO; try { var reqType = input.Options["reqType"].ToString(); @@ -614,6 +635,8 @@ order.STATUS = BIZ_U9_ASN.STATUSs.Finished.GetValue(); order.RECEIVER = UserCode; order.RECEIVE_DATE = DateTime.Now; order.UPDATE_USER = UserCode; order.REMARK = ""; } //使用统一的事务DB对象 @@ -665,7 +688,7 @@ doAfterSave?.Invoke(); // 返回数据 action.Data.Data = SnList; action.Data.Data = new { OrderNo = CurOrder.ORDER_NO, Sns = SnList }; //action.LocaleMsg = Biz.L($"条码[{0}]清点成功!"); //action.LocaleMsg = Biz.L("WMS.Count_BIZ_U9_ASN.CountSuccess", string.Join(",", SnList)); Tiger.Model.Net/Entitys/WMS/BIZ_U9_MISC_OUT_DTL.cs
@@ -155,7 +155,7 @@ AUTH_ORG = AUTH_ORG, ITEM_CODE = ITEM_CODE, UNIT = UNIT, SOURCE_CODE = nameof(BIZ_U9_SCM_OUT), SOURCE_CODE = nameof(BIZ_U9_MISC_OUT), SOURCE_ORDER = ORDER_NO, SOURCE_LINE = LINE_NO, QTY_REQ = QTY, Tiger.Model.Net/Entitys/WMS/BIZ_WMS_PREP.cs
@@ -141,9 +141,11 @@ Requisition = 1, [Description("工单备料")] WorkOrder = 2, [Description("委外备料")] Outsourcing = 3, } [Description("委外备料")] Outsourcing = 3, [Description("调拨备料")] Transfer = 4, } /// <summary> /// 枚举:状态(0Init初始化|1Called已叫料|2WaitPick待捡料|3Picking捡料中|4Picked已捡完|5Sended已发料|6Close已关闭|7Cancel作废) Tiger.Model.Net/Entitys/WMS/BIZ_WMS_TRANSFER_DTL.cs
@@ -3,6 +3,7 @@ using System.Linq; using System.ComponentModel; using System.Collections.Generic; using Tiger.Model.Base; namespace Tiger.Model { @@ -13,8 +14,8 @@ [DisplayName("调拨单(WMS)明细")] [Serializable] [SugarTable("BIZ_WMS_TRANSFER_DTL")] public class BIZ_WMS_TRANSFER_DTL : DbEntityWithAuth { public class BIZ_WMS_TRANSFER_DTL : DbEntityWithAuth, iPrepPickItem { #region 构造函数 /// <summary> /// 实体:调拨单(WMS)明细 @@ -145,8 +146,8 @@ public BAS_ITEM ItemInfo => _ItemInfos?.FirstOrDefault(q => q.AUTH_ORG == AUTH_ORG); #endregion #region 枚举变量 /*例子 #region 枚举变量 /*例子 public enum FieldNames { [Description("枚举描述0")] @@ -155,11 +156,25 @@ Enum1, } */ #endregion #endregion #region 公共方法 #region 公共方法 public BIZ_WMS_PREP_SRC_DTL GetPickItem() { return new BIZ_WMS_PREP_SRC_DTL() { Source = this, AUTH_ORG = AUTH_ORG, ITEM_CODE = ITEM_CODE, UNIT = UNIT, SOURCE_CODE = nameof(BIZ_WMS_TRANSFER), SOURCE_ORDER = ORDER_NO, SOURCE_LINE = ORDER_LINE, QTY_REQ = QTY_REQ, QTY_ACT_REQ = QTY_REQ - QTY_OUT, }; } #endregion #endregion }//endClass }//endClass } Tiger.Model.Net/Entitys/WMS/WMS_ITEM_POOL.cs
@@ -7,151 +7,237 @@ namespace Tiger.Model { /// <summary> /// 实体:备料库存池 /// 实体:备料库存池 /// </summary> [Description("Primary:ID")] [DisplayName("备料库存池")] [Serializable] [SugarTable("WMS_ITEM_POOL")] public class WMS_ITEM_POOL : DbEntityNoGhostWithAuth { #region 构造函数 { #region 构造函数 /// <summary> /// 实体:备料库存池 /// 实体:备料库存池 /// </summary> public WMS_ITEM_POOL() {} #endregion #endregion #region 公共属性 /// <summary> /// 业务单据编码 /// </summary> public string TRANS_CODE { get; set; } /// <summary> /// 业务单据号码 /// </summary> public string TRANS_NO { get; set; } /// <summary> /// 业务单据行号 /// </summary> public string TRANS_LINE { get; set; } /// <summary> /// 来源单据编码 /// </summary> public string SOURCE_CODE { get; set; } /// <summary> /// 来源单据号码 /// </summary> public string SOURCE_ORDER { get; set; } /// <summary> /// 来源单据行号 /// </summary> public string SOURCE_LINE { get; set; } #region 公共属性 /// <summary> /// 物料编码 /// 事务ID /// </summary> [DisplayName("事务ID")] public string TRANS_ID { get; set; } /// <summary> /// 业务单据编码 /// </summary> [DisplayName("业务单据编码")] public string TRANS_CODE { get; set; } /// <summary> /// 业务单据号码 /// </summary> [DisplayName("业务单据号码")] public string TRANS_NO { get; set; } /// <summary> /// 业务单据行号 /// </summary> [DisplayName("业务单据行号")] public string TRANS_LINE { get; set; } /// <summary> /// 来源单据编码 /// </summary> [DisplayName("来源单据编码")] public string SOURCE_CODE { get; set; } /// <summary> /// 来源单据号码 /// </summary> [DisplayName("来源单据号码")] public string SOURCE_ORDER { get; set; } /// <summary> /// 来源单据行号 /// </summary> [DisplayName("来源单据行号")] public string SOURCE_LINE { get; set; } /// <summary> /// 备料策略(位标志枚举)(1FIFO先进先出|2FSFO/尾数优先) /// </summary> [DisplayName("备料策略(位标志枚举)(1FIFO先进先出|2FSFO/尾数优先)")] public int STRATEGY { get; set; } /// <summary> /// 发料方式(0Supply正常发料|1First首套发料) /// </summary> [DisplayName("发料方式(0Supply正常发料|1First首套发料)")] public int DLVY_MODE { get; set; } /// <summary> /// 是否被锁定(Y/N),锁定则不允许其他事务分配当前物料 /// </summary> [DisplayName("是否被锁定(Y/N),锁定则不允许其他事务分配当前物料")] public string IS_LOCKED { get; set; } /// <summary> /// 物料编码 /// </summary> [DisplayName("物料编码")] public string ITEM_CODE { get; set; } /// <summary> /// 物料条码 /// 物料条码 /// </summary> [DisplayName("物料条码")] public string SN { get; set; } /// <summary> /// 物料数量 /// 物料数量 /// </summary> [DisplayName("物料数量")] public double QTY { get; set; } /// <summary> /// 已分配数量 /// 已分配数量 /// </summary> [DisplayName("已分配数量")] public double ALLOC_QTY { get; set; } /// <summary> /// 生产日期 /// </summary> public DateTime PROD_DATE { get; set; } = DateTime.MinValue; /// <summary> /// 储位ID /// </summary> public string LOCATION_ID { get; set; } /// <summary> /// 是否首套料(Y/N) /// </summary> public string IS_FIRST { get; set; } /// <summary> /// 分配状态(0AllAllocated全部分配|1PartialAllocate部分分配) /// 生产日期 /// </summary> [DisplayName("生产日期")] public DateTime PROD_DATE { get; set; } = DateTime.MinValue; /// <summary> /// 仓库ID /// </summary> [DisplayName("仓库ID")] public string WH_ID { get; set; } /// <summary> /// 储区ID /// </summary> [DisplayName("储区ID")] public string REGION_ID { get; set; } /// <summary> /// 货架/料车ID /// </summary> [DisplayName("货架/料车ID")] public string SHELF_ID { get; set; } /// <summary> /// 储位ID /// </summary> [DisplayName("储位ID")] public string LOCATION_ID { get; set; } /// <summary> /// 是否首套料(Y/N) /// </summary> [DisplayName("是否首套料(Y/N)")] public string IS_FIRST { get; set; } /// <summary> /// 分配状态(0AllAllocated全部分配|1PartialAllocate部分分配) /// </summary> [DisplayName("分配状态(0AllAllocated全部分配|1PartialAllocate部分分配)")] public int ALLOC_MODE { get; set; } /// <summary> /// 状态(0WaitPick待捡料|1Picking捡料中|2WaitSend待发料|3Sended已发料|4Close已关闭|5Cancel作废) /// 状态(0WaitPick待捡料|1Picking捡料中|2WaitSend待发料|3Sended已发料|4Close已关闭|5Cancel作废) /// </summary> [DisplayName("状态(0WaitPick待捡料|1Picking捡料中|2WaitSend待发料|3Sended已发料|4Close已关闭|5Cancel作废)")] public int STATUS { get; set; } /// <summary> /// 加工段 /// 加工段 /// </summary> [DisplayName("加工段")] public string SEGMENT { get; set; } /// <summary> /// 目标产线代码 /// 目标产线编码 /// </summary> [DisplayName("目标产线编码")] public string LINE_CODE { get; set; } /// <summary> /// 备注 /// 备注 /// </summary> [DisplayName("备注")] public string REMARK { get; set; } #endregion #endregion #region 虚拟属性 /*例子 #region 虚拟属性 /*例子 [SugarColumn(IsIgnore = true)] public string FieldName { get; set; } */ #endregion #endregion #region 外键属性 /*例子 //一对一外键导航 [Navigate(NavigateType.OneToOne, nameof(ClassAId))]//一对一 ClassAId是WMS_ITEM_POOL类里面的外键ID字段 public ClassA ClassA { get; set; } //注意禁止手动赋值,只能是null //一对多外键导航 [Navigate(NavigateType.OneToMany, nameof(ClassA.WMS_ITEM_POOLId))]//ClassA表中的WMS_ITEM_POOLId public List<ClassA> ClassAList { get; set; }//注意禁止手动赋值,只能是null //多对多外键导航 [Navigate(typeof(MappingClass), nameof(MappingClass.WMS_ITEM_POOLId), nameof(MappingClass.ClassAId))]//注意顺序 public List<ClassA> ClassAList { get; set; } //注意禁止手动赋值,只能是null #region 外键属性 /*例子 //一对一外键导航 [Navigate(NavigateType.OneToOne, nameof(ClassAId))]//一对一 ClassAId是WMS_ITEM_POOL类里面的外键ID字段 public ClassA ClassA { get; set; } //注意禁止手动赋值,只能是null //一对多外键导航 [Navigate(NavigateType.OneToMany, nameof(ClassA.WMS_ITEM_POOLId))]//ClassA表中的WMS_ITEM_POOLId public List<ClassA> ClassAList { get; set; }//注意禁止手动赋值,只能是null //多对多外键导航 [Navigate(typeof(MappingClass), nameof(MappingClass.WMS_ITEM_POOLId), nameof(MappingClass.ClassAId))]//注意顺序 public List<ClassA> ClassAList { get; set; } //注意禁止手动赋值,只能是null */ #endregion #endregion #region 枚举变量 /// <summary> /// 分配状态(0AllAllocated全部分配|1PartialAllocate部分分配) #region 枚举变量 /*例子 public enum FieldNames { [Description("枚举描述0")] Enum0, [Description("枚举描述1")] Enum1, } */ /// <summary> /// 枚举:备料策略(位标志枚举)(1FIFO先进先出|2FSFO/尾数优先) /// </summary> public enum ALLOC_MODEs { [Description("全部分配")] AllAllocated, [Description("部分分配")] PartialAllocate, } public enum STRATEGYs { [Description("先进先出")] FIFO = 1, [Description("尾数优先")] FSFO = 2, } /// <summary> /// 状态(0WaitPick待捡料|1Picking捡料中|2WaitSend待发料|3Sended已发料|4Close已关闭|5Cancel作废) /// </summary> public enum STATUSs { [Description("待捡料")] WaitPick, [Description("捡料中")] Picking, [Description("待发料")] WaitSend, [Description("已发料")] Sended, [Description("已关闭")] Close, [Description("作废")] Cancel, } #endregion /// <summary> /// 枚举:发料方式(0Supply正常发料|1First首套发料) /// </summary> public enum DLVY_MODEs { [Description("正常发料")] Supply = 0, [Description("首套发料")] First = 1, } #region 公共方法 /// <summary> /// 枚举:分配状态(0AllAllocated全部分配|1PartialAllocate部分分配) /// </summary> public enum ALLOC_MODEs { [Description("全部分配")] AllAllocated = 0, [Description("部分分配")] PartialAllocate = 1, } #endregion /// <summary> /// 枚举:状态(0WaitPick待捡料|1Picking捡料中|2WaitSend待发料|3Sended已发料|4Close已关闭|5Cancel作废) /// </summary> public enum STATUSs { [Description("待捡料")] WaitPick = 0, [Description("捡料中")] Picking = 1, [Description("待发料")] WaitSend = 2, [Description("已发料")] Sended = 3, [Description("已关闭")] Close = 4, [Description("作废")] Cancel = 5, } #endregion }//endClass #region 公共方法 #endregion }//endClass }