From 1ab448972aed699a5665876316972cc07b879e95 Mon Sep 17 00:00:00 2001 From: Rodney Chen <rodney.chen@hotmail.com> Date: 星期五, 18 十月 2024 15:35:13 +0800 Subject: [PATCH] 包装行为支持生成包装条码 --- Tiger.Model.Net/Entitys/BAS/BAS_PKG_DTL.cs | 74 ++++++++++++++---------- Tiger.Business.MES/Transaction/Position.cs | 39 ++++++++++-- Tiger.Business.MES/WorkAction/PackingAction.cs | 12 ++- Tiger.Model.Net/Entitys/MES/ParameterEntity/PositionParameter.cs | 1 Tiger.IBusiness.MES/Transaction/IPosition.cs | 7 ++ Tiger.Business.MES/Common/WoContext.cs | 2 6 files changed, 92 insertions(+), 43 deletions(-) diff --git a/Tiger.Business.MES/Common/WoContext.cs b/Tiger.Business.MES/Common/WoContext.cs index 6fcdb16..9804f8d 100644 --- a/Tiger.Business.MES/Common/WoContext.cs +++ b/Tiger.Business.MES/Common/WoContext.cs @@ -35,7 +35,7 @@ { if (ExistsBatch(workorder, lineCode, batchNo)) { - return WoBatchDic.FirstOrDefault(q => q.Value.Batch.ORDER_NO == workorder && q.Value.Batch.ACT_LINE == lineCode && (batchNo.IsNullOrEmpty() || q.Value.Batch.BATCH_NO == batchNo)).Value; + return WoBatchDic.FirstOrDefault(q => !q.Value.Batch.IsNullOrEmpty() && q.Value.Batch.ORDER_NO == workorder && q.Value.Batch.ACT_LINE == lineCode && (batchNo.IsNullOrEmpty() || q.Value.Batch.BATCH_NO == batchNo)).Value; } return null; } diff --git a/Tiger.Business.MES/Transaction/Position.cs b/Tiger.Business.MES/Transaction/Position.cs index 5035f38..7c5b570 100644 --- a/Tiger.Business.MES/Transaction/Position.cs +++ b/Tiger.Business.MES/Transaction/Position.cs @@ -538,7 +538,7 @@ /// <param name="labelPVs">杩囩▼鍙橀噺鍒楄〃</param> /// <param name="lv">鏍囩妯℃澘鍙橀噺</param> /// <returns></returns> - public string GetPrintProcessValue(List<BAS_LABEL_PV> labelPVs, BAS_LABEL_VAR lv, List<BAS_LABEL_VAR> lvars, IWorkAction action) + public string GetPrintProcessValue(List<BAS_LABEL_PV> labelPVs, BAS_LABEL_VAR lv, List<BAS_LABEL_VAR> lvars, IWorkAction curAction) { var pv = labelPVs.FirstOrDefault(q => q.VAR_CODE == lv.VAR_VALUE); if (!pv.IsNullOrEmpty()) @@ -562,12 +562,12 @@ case "GetPackNumber": return GetLabelVarWo(lv, WorkBatch.WO.ORDER_NO); case "GetBoxQR": - return action is PackingAction ? GetBoxCode(lvars, action as PackingAction) : ""; + return curAction is PackingAction ? GetBoxCode(lvars, curAction as PackingAction) : ""; case "GetCardQR": - return action is PackingAction ? GetCardOrBoxQR(GetCardCode(lvars), lvars, action as PackingAction) : ""; + return curAction is PackingAction ? GetCardOrBoxQR(GetCardCode(lvars), lvars, curAction as PackingAction) : ""; case "GetCardSN": List<string> minPkgList = new List<string>(); - var _pkaction = action is PackingAction ? action as PackingAction : null; + var _pkaction = curAction is PackingAction ? curAction as PackingAction : null; if (_pkaction != null) { minPkgList = GetMinPkgList(_pkaction); @@ -583,7 +583,7 @@ return GetLabelVarWo(lv, WorkBatch.WO.Customer?.CUST_NAME_CN); case "GetHWDate": List<string> list = new List<string>(); - var _action = action is PackingAction ? action as PackingAction : null; + var _action = curAction is PackingAction ? curAction as PackingAction : null; if (_action != null) { list = GetMinPkgList(_action); @@ -591,7 +591,7 @@ return GetHuaWeiWeek(WorkBatch.Batch.ORDER_NO, list); case "GetQty": List<string> qtylist = new List<string>(); - var _qtyAction = action is PackingAction ? action as PackingAction : null; + var _qtyAction = curAction is PackingAction ? curAction as PackingAction : null; if (_qtyAction != null) { qtylist = GetMinPkgList(_qtyAction); @@ -611,7 +611,7 @@ return GetLabelVarWo(lv, ""); case "GetLOTNO": string _lotnos = ""; - var _orderAction = action is PackingAction ? action as PackingAction : null; + var _orderAction = curAction is PackingAction ? curAction as PackingAction : null; if (_orderAction != null) { var snList = _orderAction.GetMinPackageList(_orderAction.CurPkg.Item).Select(q => q.FLOW_SN).ToList(); @@ -816,6 +816,31 @@ } } #endregion + #region 鏉$爜瑙勫垯鏂规硶 + /// <summary> + /// 鑾峰彇鏍规嵁鏉$爜瑙勫垯鐢熸垚鏉$爜 + /// </summary> + /// <param name="ruleCode"></param> + /// <param name="curAction"></param> + /// <returns></returns> + public string GenerateSN(string ruleCode, IWorkAction curAction) + { + var rule = Biz.CodeRule[ruleCode ?? ""]; + if (!rule.IsNullOrEmpty()) + { + switch (rule.RULE_CODE) + { + case "WhiteBoxNo": + return rule.Generate("W", $"{WorkBatch.Batch.BATCH_NO}-{WorkBatch.Batch.PLAN_QTY}-").Data.ToString() ?? ""; + case "CartonNo": + return rule.Generate("B", $"{WorkBatch.Batch.BATCH_NO}-{WorkBatch.Batch.PLAN_QTY}-").Data.ToString() ?? ""; + default: + return rule.Generate().Data.ToString() ?? ""; + } + } + return ""; + } + #endregion #region 鍖呰涓撶敤鏂规硶 /// <summary> /// 鏍规嵁浼犲叆鐨勫寘瑁呭璞¤繑鍥炴墍鏈夌殑鍖呰瀹炰綋鍒楄〃 diff --git a/Tiger.Business.MES/WorkAction/PackingAction.cs b/Tiger.Business.MES/WorkAction/PackingAction.cs index 2fed0fa..b16ca05 100644 --- a/Tiger.Business.MES/WorkAction/PackingAction.cs +++ b/Tiger.Business.MES/WorkAction/PackingAction.cs @@ -84,6 +84,7 @@ PKG_LEVEL = max.PKG_LEVEL, PKG_QTY = max.PKG_QTY, LABEL_CODE = LabelDic.Count > max.PKG_LEVEL ? LabelDic[max.PKG_LEVEL]?.LABEL_CODE : null, + SN = CurPosition.GenerateSN(max.SN_RULE, this), } }; WipPkgItem child = null; @@ -99,6 +100,7 @@ PKG_LEVEL = dtl.PKG_LEVEL, PKG_QTY = dtl.PKG_QTY, LABEL_CODE = LabelDic.Count > dtl.PKG_LEVEL ? LabelDic[dtl.PKG_LEVEL]?.LABEL_CODE : null, + SN = CurPosition.GenerateSN(dtl.SN_RULE, this), }; if (!child.IsNullOrEmpty()) { @@ -533,14 +535,15 @@ PKG_LEVEL = dtl.PKG_LEVEL, PKG_QTY = dtl.PKG_QTY, LABEL_CODE = LabelDic[dtl.PKG_LEVEL]?.LABEL_CODE, + SN = CurPosition.GenerateSN(dtl.SN_RULE, this).IsNullOrEmpty(pInput.PkgSN), IsFinished = true, }; - CurPkgItem.Package = Biz.Db.Queryable<MES_WIP_PKG>().Where(q => q.SN == pInput.PkgSN && q.AUTH_ORG == CurPosition.WorkBatch.WO.AUTH_ORG).First() ?? new() + CurPkgItem.Package = Biz.Db.Queryable<MES_WIP_PKG>().Where(q => q.SN == CurPkgItem.SN && q.AUTH_ORG == CurPosition.WorkBatch.WO.AUTH_ORG).First() ?? new() { AUTH_ORG = CurPosition.WorkBatch.WO.AUTH_ORG, AUTH_PROD = CurPosition.CurLine.LINE_CODE, - SN = pInput.PkgSN, + SN = CurPkgItem.SN, }; CurPkgItem.Package.WIP_ID = CurPosition.CurWipSNs.Count == 1 ? CurPosition.CurWipSNs.First().ID : null; CurPkgItem.Package.PKG_TYPE = dtl.PkgType.PKG_NAME; @@ -585,7 +588,7 @@ { AUTH_ORG = CurPosition.WorkBatch.WO.AUTH_ORG, AUTH_PROD = CurPosition.CurLine.LINE_CODE, - SN = pInput.PkgSN, + SN = CurPkgItem.SN.IsNullOrEmpty(pInput.PkgSN), PKG_TYPE = dtl.PkgType.PKG_NAME, ITEM_CODE = CurPkgItem.Items.First().Package.ITEM_CODE, QTY = CurPkgItem.Items.Sum(q => q.Package.QTY), @@ -605,7 +608,7 @@ { AUTH_ORG = CurPosition.WorkBatch.WO.AUTH_ORG, AUTH_PROD = CurPosition.CurLine.LINE_CODE, - SN = pInput.PkgSN, + SN = CurPkgItem.SN.IsNullOrEmpty(pInput.PkgSN), PKG_TYPE = dtl.PkgType.PKG_NAME, ITEM_CODE = CurPosition.CurWipSNs.First().ITEM_CODE, QTY = CurPkgItem.Items.Sum(q => q.Package.QTY), @@ -656,6 +659,7 @@ PKG_LEVEL = nextDtl.PKG_LEVEL, PKG_QTY = nextDtl.PKG_QTY, LABEL_CODE = LabelDic[nextDtl.PKG_LEVEL]?.LABEL_CODE, + SN = CurPosition.GenerateSN(nextDtl.SN_RULE, this), }; curItem.Items.Add(next); } diff --git a/Tiger.IBusiness.MES/Transaction/IPosition.cs b/Tiger.IBusiness.MES/Transaction/IPosition.cs index c6edc37..00e49f9 100644 --- a/Tiger.IBusiness.MES/Transaction/IPosition.cs +++ b/Tiger.IBusiness.MES/Transaction/IPosition.cs @@ -78,6 +78,13 @@ /// <param name="parent"></param> /// <returns></returns> public List<MES_WIP_PKG> GetPackageList(WipPkgItem parent); + /// <summary> + /// 鑾峰彇鏍规嵁鏉$爜瑙勫垯鐢熸垚鏉$爜 + /// </summary> + /// <param name="ruleCode"></param> + /// <param name="curAction"></param> + /// <returns></returns> + public string GenerateSN(string ruleCode, IWorkAction curAction); #endregion Functions } } diff --git a/Tiger.Model.Net/Entitys/BAS/BAS_PKG_DTL.cs b/Tiger.Model.Net/Entitys/BAS/BAS_PKG_DTL.cs index 1e1ad2f..a3c20a5 100644 --- a/Tiger.Model.Net/Entitys/BAS/BAS_PKG_DTL.cs +++ b/Tiger.Model.Net/Entitys/BAS/BAS_PKG_DTL.cs @@ -6,45 +6,57 @@ namespace Tiger.Model { - /// <summary> - /// 瀹炰綋锛氬寘瑁呮暟閲忔槑缁� - /// </summary> - [Description("Primary:ID")] - [Serializable] - [SugarTable("BAS_PKG_DTL")] - public class BAS_PKG_DTL : DbEntityWithAuth - { - #region 鏋勯�犲嚱鏁� - /// <summary> - /// 瀹炰綋锛氬寘瑁呮暟閲忔槑缁� - /// </summary> - public BAS_PKG_DTL() {} - #endregion + /// <summary> + /// 瀹炰綋锛氬寘瑁呮暟閲忔槑缁� + /// </summary> + [Description("Primary:ID")] + [DisplayName("鍖呰鏁伴噺鏄庣粏")] + [Serializable] + [SugarTable("BAS_PKG_DTL")] + public class BAS_PKG_DTL : DbEntityWithAuth + { + #region 鏋勯�犲嚱鏁� + /// <summary> + /// 瀹炰綋锛氬寘瑁呮暟閲忔槑缁� + /// </summary> + public BAS_PKG_DTL() { } + #endregion - #region 鍏叡灞炴�� - /// <summary> - /// 鍖呰瑙勫垯ID - /// </summary> - public string PKG_RULE_ID { get; set; } - /// <summary> - /// 鍖呰/杞藉叿缂栫爜 - /// </summary> - public string PKG_CODE { get; set; } - /// <summary> - /// 鍖呰灞傜骇 - /// </summary> - public int PKG_LEVEL { get; set; } - /// <summary> - /// 鍖呰鏁伴噺 - /// </summary> - public int PKG_QTY { get; set; } + #region 鍏叡灞炴�� + /// <summary> + /// 鍖呰瑙勫垯ID + /// </summary> + [DisplayName("鍖呰瑙勫垯ID")] + public string PKG_RULE_ID { get; set; } + /// <summary> + /// 鍖呰/杞藉叿缂栫爜 + /// </summary> + [DisplayName("鍖呰/杞藉叿缂栫爜")] + public string PKG_CODE { get; set; } + /// <summary> + /// 鍖呰灞傜骇 + /// </summary> + [DisplayName("鍖呰灞傜骇")] + public int PKG_LEVEL { get; set; } + /// <summary> + /// 鍖呰鏁伴噺 + /// </summary> + [DisplayName("鍖呰鏁伴噺")] + public int PKG_QTY { get; set; } /// <summary> /// 鏍囩妯℃澘缂栫爜 /// </summary> + [DisplayName("鏍囩妯℃澘缂栫爜")] public string LABEL_CODE { get; set; } + /// <summary> + /// 鍖呰鏉$爜瑙勫垯缂栫爜 + /// </summary> + [DisplayName("鍖呰鏉$爜瑙勫垯缂栫爜")] + public string SN_RULE { get; set; } /// <summary> /// 澶囨敞 /// </summary> + [DisplayName("澶囨敞")] public string REMARK { get; set; } #endregion diff --git a/Tiger.Model.Net/Entitys/MES/ParameterEntity/PositionParameter.cs b/Tiger.Model.Net/Entitys/MES/ParameterEntity/PositionParameter.cs index 80918c0..ba389de 100644 --- a/Tiger.Model.Net/Entitys/MES/ParameterEntity/PositionParameter.cs +++ b/Tiger.Model.Net/Entitys/MES/ParameterEntity/PositionParameter.cs @@ -182,6 +182,7 @@ public int PKG_LEVEL { get; set; } public int PKG_QTY { get; set; } public string LABEL_CODE { get; set; } + public string SN { get; set; } public MES_WIP_PKG Package { get; set; } public bool IsFinished { get; set; } = false; public List<WipPkgItem> Items { get; set; } = new List<WipPkgItem>(); -- Gitblit v1.9.3