// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。 // // 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。 // // 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任! using Admin.NET.Application.Entity; using Admin.NET.Application.Service.WmsBase.WmsBatchRuleDetail.Dto; using Admin.NET.Core.Service; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Admin.NET.Application.CommonHelper; public class BatchRuleHelper { /// /// 根据批次规则获取批次规则属性格式 /// /// /// public static List GetAttrForamtEnumList(BatchRuleEnum batchRule) { if (batchRule == BatchRuleEnum.收货日期) { return new List() { new EnumOutput(){ Title= AttrForamtEnum.日期年.ToString(),Value= Convert.ToInt32(AttrForamtEnum.日期年),Desc=AttrForamtEnum.日期年.GetDescription() }, new EnumOutput(){ Title= AttrForamtEnum.日期年月.ToString(),Value= Convert.ToInt32(AttrForamtEnum.日期年月),Desc=AttrForamtEnum.日期年月.GetDescription() }, new EnumOutput(){ Title= AttrForamtEnum.日期年月日.ToString(),Value= Convert.ToInt32(AttrForamtEnum.日期年月日),Desc=AttrForamtEnum.日期年月日.GetDescription() }, new EnumOutput(){ Title= AttrForamtEnum.时间年月日时.ToString(),Value= Convert.ToInt32(AttrForamtEnum.时间年月日时),Desc=AttrForamtEnum.时间年月日时.GetDescription() }, new EnumOutput(){ Title= AttrForamtEnum.时间年月日时分.ToString(),Value= Convert.ToInt32(AttrForamtEnum.时间年月日时分),Desc=AttrForamtEnum.时间年月日时分.GetDescription() }, new EnumOutput(){ Title= AttrForamtEnum.时间年月日时分秒.ToString(),Value= Convert.ToInt32(AttrForamtEnum.时间年月日时分秒),Desc=AttrForamtEnum.时间年月日时分秒.GetDescription() }, }; } else { return new List() { new EnumOutput(){ Title= AttrForamtEnum.字符.ToString(),Value= Convert.ToInt32(AttrForamtEnum.字符),Desc=AttrForamtEnum.字符.GetDescription() }, }; } } /// /// 根据ASN单明细、批次规则生成批次号 /// /// /// /// /// public static string GetBatch(WmsOrderAsnDetails currentAsnDetails, WmsMaterialOutput materialBaseInfo, List batchRuleDetailsList) { bool isHasBatchRule = batchRuleDetailsList.Count > 0; if (isHasBatchRule) { //如果配置了批次规则 ,批次号=往来单位+物料+12个批次属性 string batchNo = currentAsnDetails.SupplierCode + "-" + materialBaseInfo.MaterialCode; foreach (var item in batchRuleDetailsList.OrderBy(o => o.Priority)) { batchNo += "-"; //TODO 目前 批次规则只开放了 收货日期,后面业务确定了再增加 if (item.BatchRuleType == BatchRuleEnum.收货日期) { if (item.AttrForamt == AttrForamtEnum.日期年) { batchNo += DateTime.Now.ToString("yyyy"); } else if (item.AttrForamt == AttrForamtEnum.日期年月) { batchNo += DateTime.Now.ToString("yyyyMM"); } else if (item.AttrForamt == AttrForamtEnum.日期年月日) { batchNo += DateTime.Now.ToString("yyyyMMdd"); } else if (item.AttrForamt == AttrForamtEnum.时间年月日时) { batchNo += DateTime.Now.ToString("yyyyMMddHH"); } else if (item.AttrForamt == AttrForamtEnum.时间年月日时分) { batchNo += DateTime.Now.ToString("yyyyMMddHHmm"); } else if (item.AttrForamt == AttrForamtEnum.时间年月日时分秒) { batchNo += DateTime.Now.ToString("yyyyMMddHHmmss"); } } else if (item.BatchRuleType == BatchRuleEnum.物料颜色) { if (string.IsNullOrWhiteSpace(materialBaseInfo.Color) && item.InputControl == InputControlEnum.必输) { throw Oops.Oh($"配置的批次规则物料颜色为必输项,该物料{materialBaseInfo.MaterialCode}的颜色为空!"); } batchNo += materialBaseInfo.Color; } } return batchNo; } return string.Empty; } }