using Admin.NET.Application.Entity; using Admin.NET.Application; namespace Admin.NET.Application { /// /// 到货单 帮助类 /// public class OrderHelper { /// /// 公共更新 ASN单的 状态和 总的的已收货数 /// /// /// public static void UpdateWmsOrderAsnStatus(List wmsOrderAsnDetails, WmsOrderAsn wmsOrderAsn) { var wmsOrderAsnDetailsAll = wmsOrderAsnDetails.Where(x => x.AsnId == wmsOrderAsn.Id && x.IsDelete == false).ToList(); if (wmsOrderAsnDetailsAll?.Count <=0) { throw Oops.Oh($"ASN单号{wmsOrderAsn.AsnNo}更新状态,未获取到明细!"); } else { //汇总明细的已收货数 var totalGoodsQuantity = wmsOrderAsnDetails.Sum(o => o.GoodsQuantity); if (wmsOrderAsnDetailsAll.Sum(o => o.GoodsQuantity) == 0) { wmsOrderAsn.AsnStatus = OrderStatusEnum.新建; } else if (wmsOrderAsnDetailsAll.Sum(o => o.Quantity - o.GoodsQuantity) <= 0) { wmsOrderAsn.AsnStatus = OrderStatusEnum.已完成; } else if (wmsOrderAsnDetailsAll.Sum(o => o.GoodsQuantity) > 0) { wmsOrderAsn.AsnStatus = OrderStatusEnum.处理中; } //单据状态名称赋值 wmsOrderAsn.AsnStatusName = wmsOrderAsn.AsnStatus.GetDescription(); } } /// /// 公共更新 ASN单明细 状态 /// /// public static void UpdateOrderAsnDetailsStatus(WmsOrderAsnDetails goodsdetail) { if (goodsdetail.GoodsQuantity == 0) { goodsdetail.AsnStatus = OrderStatusEnum.新建; } else if (goodsdetail.GoodsQuantity >= goodsdetail.Quantity) { goodsdetail.AsnStatus = OrderStatusEnum.已完成; } else { goodsdetail.AsnStatus = OrderStatusEnum.处理中; } //明细状态名称赋值 goodsdetail.AsnStatusName = goodsdetail.AsnStatus.GetDescription(); } // /// 公共更新 PO单的 状态 和总的的已收货数 /// /// /// public static void UpdatOrderPurchaseStatus(List wmsOrderPurchaseDetails, WmsOrderPurchase wmsOrderPurchase) { var wmsOrderPurchaseDetailsAll = wmsOrderPurchaseDetails.Where(x => x.PoId == wmsOrderPurchase.Id && x.IsDelete == false).ToList(); if (wmsOrderPurchaseDetailsAll?.Count<=0) { throw Oops.Oh($"PO单{wmsOrderPurchase.PurchaseNo}更新状态,未获取到明细!"); } else { //汇总明细的已收货数 var totalGoodsQuantity= wmsOrderPurchaseDetailsAll.Sum(o => o.GoodsQuantity); if (wmsOrderPurchaseDetailsAll.Sum(o => o.GoodsQuantity) == 0) { wmsOrderPurchase.PoStatus = OrderStatusEnum.新建; } else if (wmsOrderPurchaseDetailsAll.Sum(o => o.Quantity - o.GoodsQuantity) <= 0) { wmsOrderPurchase.PoStatus = OrderStatusEnum.已完成; } else if (wmsOrderPurchaseDetailsAll.Sum(o => o.GoodsQuantity) > 0) { wmsOrderPurchase.PoStatus = OrderStatusEnum.处理中; } //单据状态名称赋值 wmsOrderPurchase.PoStatusName = wmsOrderPurchase.PoStatus.GetDescription(); } } /// /// 公共更新 PO单明细 状态 /// /// public static void UpdateOrderPurchaseDetailsStatus(WmsOrderPurchaseDetails detail) { if (detail.GoodsQuantity == 0) { detail.PoDetailStatus = OrderStatusEnum.新建; } else if (detail.GoodsQuantity >= detail.Quantity) { detail.PoDetailStatus = OrderStatusEnum.已完成; } else { detail.PoDetailStatus = OrderStatusEnum.处理中; } //明细状态名称赋值 detail.PoDetailStatusName = detail.PoDetailStatus.GetDescription(); } // /// 公共更新 报检单的 单据状态 /// /// /// public static void UpdateQCOrderStatus(List wmsQcDetails, WmsOrderQc wmsQc) { var wmsQcDetailsAll = wmsQcDetails.Where(x => x.QCOrderId == wmsQc.Id && x.IsDelete == false).ToList(); if (wmsQcDetailsAll?.Count <= 0) { throw Oops.Oh($"报检单{wmsQc.QCNo}更新状态,未获取到明细!"); } else { //明细总数 var totalQcQuantity = wmsQcDetailsAll.Count(); //新建状态的明细数量 var newBuildQcQuantity = wmsQcDetailsAll.Count(o => o.QCOrderStatus == OrderStatusEnum.新建); //已完成状态的明细数量 var completedQcQuantity = wmsQcDetailsAll.Count(o => o.QCOrderStatus == OrderStatusEnum.已完成); if (newBuildQcQuantity == totalQcQuantity)//全是新建状态 { wmsQc.QCOrderStatus = OrderStatusEnum.新建; } else if (completedQcQuantity == totalQcQuantity)//全部是已完成状态 { wmsQc.QCOrderStatus = OrderStatusEnum.已完成; } else //处理中状态 { wmsQc.QCOrderStatus = OrderStatusEnum.处理中; } //单据状态名称赋值 wmsQc.QCOrderStatusName = wmsQc.QCOrderStatus.GetDescription(); } } /// /// 行号补全 /// 根据指定长度补全行号 /// 生产订单是四位行号0001 /// /// /// /// public static string AutoCompleEBELP(string _EBELP, int length) { if (!string.IsNullOrEmpty(_EBELP) & length > 1) { return _EBELP.PadLeft(length, '0'); } return ""; } // /// 公共更新 波次单的 状态 /// /// /// public static void UpdatOrderSortStatus(List wmsOrderOrderSortDetails, WmsOrderSort wmsOrderSort) { var wmsOrderPurchaseDetailsAll = wmsOrderOrderSortDetails.Where(x => x.SortId == wmsOrderSort.Id && x.IsDelete == false).ToList(); if (wmsOrderPurchaseDetailsAll?.Count <= 0) { throw Oops.Oh($"波次单{wmsOrderSort.SortNo}更新状态,未获取到明细!"); } else { //汇总明细的已下发数 var totalIssueQuantity = wmsOrderPurchaseDetailsAll.Sum(o => o.IssueQuantity); //汇总明细的已拣货数 var totalPickQuantity = wmsOrderPurchaseDetailsAll.Sum(o => o.PickQuantity); //汇总明细的需求数 var totalQuantity = wmsOrderPurchaseDetailsAll.Sum(o => o.Quantity); if (wmsOrderPurchaseDetailsAll.Sum(o => o.IssueQuantity) == 0) { wmsOrderSort.SortStatus = OrderStatusEnum.新建; } else if (totalPickQuantity== totalQuantity) //分拣完成,单据完结 { wmsOrderSort.SortStatus = OrderStatusEnum.已完成; } else { wmsOrderSort.SortStatus = OrderStatusEnum.处理中; } //单据状态名称赋值 wmsOrderSort.SortStatusName = wmsOrderSort.SortStatus.GetDescription(); } } /// /// 公共更新 波次单明细 状态 /// /// public static void updateOrderSortDetailsStatus(WmsOrderSortDetails detail) { if (detail.IssueQuantity == 0) { detail.SortDetailStatus = OrderStatusEnum.新建; } else if (detail.PickQuantity == detail.Quantity) //分拣完成,单据完结 { detail.SortDetailStatus = OrderStatusEnum.已完成; } else { detail.SortDetailStatus = OrderStatusEnum.处理中; } //明细状态名称赋值 detail.SortDetailStatusName = detail.SortDetailStatus.GetDescription(); } /// /// 公共更新 容器分拣相信状态 /// /// public static void UpdateContainerSortStatus(WmsContainerSort detail) { if (detail.PickQuantity == 0) { detail.SortStatus = OrderStatusEnum.新建; } else if (detail.PickQuantity == detail.Quantity) //分拣完成,单据完结 { detail.SortStatus = OrderStatusEnum.已完成; } else { detail.SortStatus = OrderStatusEnum.处理中; } //明细状态名称赋值 detail.SortStatusName = detail.SortStatus.GetDescription(); } // /// 公共更新 移动单的 状态 /// /// /// public static void UpdatOrderMovementStatus(List wmsOrderMovementDetails, WmsOrderMovement wmsOrderMovement) { var wmsOrderMovementDetailsAll = wmsOrderMovementDetails.Where(x => x.MovementId == wmsOrderMovement.Id && x.IsDelete == false).ToList(); if (wmsOrderMovementDetailsAll?.Count <= 0) { throw Oops.Oh($"{wmsOrderMovement.OrderType.GetDescription()}类型移动单{wmsOrderMovement.OrderNo}更新状态,未获取到明细!"); } else { if (wmsOrderMovement.OrderType == OrderTypeEnum.下架单) { //汇总明细的已拣货数 var totalPickQuantity = wmsOrderMovementDetailsAll.Sum(o => o.PickQuantity); //汇总明细的需求数 var totalQuantity = wmsOrderMovementDetailsAll.Sum(o => o.Quantity); //未创建波次 = 新建 if (wmsOrderMovementDetailsAll.Sum(o => o.CreateWaveQuantity) == 0) { wmsOrderMovement.OrderStatus = OrderStatusEnum.新建; } else if (totalPickQuantity == totalQuantity) //分拣完成,单据完结 { wmsOrderMovement.OrderStatus = OrderStatusEnum.已完成; } else { wmsOrderMovement.OrderStatus = OrderStatusEnum.处理中; } } else { throw Oops.Oh($"{wmsOrderMovement.OrderType.GetDescription()}类型移动单暂不支持!"); } //单据状态名称赋值 wmsOrderMovement.OrderStatusName = wmsOrderMovement.OrderStatus.GetDescription(); } } // /// 公共更新 DO的 状态 /// /// /// public static void UpdatOrderDeliverStatus(List wmsOrderDeliverDetails, WmsOrderDeliver wmsOrderMovement) { var wmsOrderMovementDetailsAll = wmsOrderDeliverDetails.Where(x => x.DoId == wmsOrderMovement.Id && x.IsDelete == false).ToList(); if (wmsOrderMovementDetailsAll?.Count <= 0) { throw Oops.Oh($"{wmsOrderMovement.OrderType.GetDescription()}类型DO单{wmsOrderMovement.DeliverNo}更新状态,未获取到明细!"); } else { if (wmsOrderMovement.OrderType == OrderTypeEnum.DO单) { //汇总明细的已发货数 var totalPickQuantity = wmsOrderMovementDetailsAll.Sum(o => o.DeliverQuantity); //汇总明细的需求数 var totalQuantity = wmsOrderMovementDetailsAll.Sum(o => o.Quantity); //未创建波次 = 新建 if (wmsOrderMovementDetailsAll.Sum(o => o.CreateMovementQuantity) == 0) { wmsOrderMovement.DoStatus = OrderStatusEnum.新建; } else if (totalPickQuantity == totalQuantity) //发货完成,单据完结 { wmsOrderMovement.DoStatus = OrderStatusEnum.已完成; } else { wmsOrderMovement.DoStatus = OrderStatusEnum.处理中; } } else { throw Oops.Oh($"{wmsOrderMovement.OrderType.GetDescription()}类型移动单暂不支持!"); } //单据状态名称赋值 wmsOrderMovement.DoStatusName = wmsOrderMovement.DoStatus.GetDescription(); } } /// /// 公共更新 移动单明细 状态 /// /// public static void UpdateOrderMovementDetailsStatus(WmsOrderMovementDetails detail) { if (detail.CreateWaveQuantity == 0) { detail.OrderStatus = OrderStatusEnum.新建; } else if (detail.PickQuantity == detail.Quantity) //分拣完成,单据完结 { detail.OrderStatus = OrderStatusEnum.已完成; } else { detail.OrderStatus = OrderStatusEnum.处理中; } //明细状态名称赋值 detail.OrderStatusName = detail.OrderStatus.GetDescription(); } /// /// 公共更新 Do明细 状态 /// /// public static void UpdateOrderDeliverDetailsStatus(WmsOrderDeliverDetails detail) { if (detail.CreateMovementQuantity == 0) { detail.DoDetailStatus = OrderStatusEnum.新建; } else if (detail.DeliverQuantity == detail.Quantity) //发货完成,单据完结 { detail.DoDetailStatus = OrderStatusEnum.已完成; } else { detail.DoDetailStatus = OrderStatusEnum.处理中; } //明细状态名称赋值 detail.DoDetailStatusName = detail.DoDetailStatus.GetDescription(); } /// /// 更新盘点单明细的盘点状态 /// /// /// public static void UpdateInventoryCheckOrderDetailsCheckStatus(WmsInventoryCheckOrderDetails checkOrderDetails, CheckStatusEnum checkStatus) { checkOrderDetails.CheckStatus= checkStatus; checkOrderDetails.CheckStatusName = checkStatus.GetDescription(); } /// /// 更新盘点单明细的盘点结果 /// /// /// public static void UpdateInventoryCheckOrderDetailsCheckResult(WmsInventoryCheckOrderDetails checkOrderDetails, CheckResultEnum checkResult) { checkOrderDetails.CheckResult = checkResult; checkOrderDetails.CheckResultName = checkResult.GetDescription(); } /// /// /// 更新盘点单明细的盘点操作分类 /// /// /// public static void UpdateInventoryCheckOrderDetailsCheckOperatorClassify(WmsInventoryCheckOrderDetails checkOrderDetails, CheckOperatorClassifyEnum checkOperatorClassify) { checkOrderDetails.CheckOperatorClassify = checkOperatorClassify; checkOrderDetails.CheckOperatorClassifyName = checkOperatorClassify.GetDescription(); } ///// ///// 盘点单判断盘点是否有差异 ///// ///// ///// //public static bool CheckDifferenceForInventoryCheckOrder(List checkOrderDetailsList) //{ // bool isCheckDifference = false; // if (checkOrderDetailsList.Any(a => a.CheckResult == CheckResultEnum.盘亏 || a.CheckResult == CheckResultEnum.盘盈)) // { // isCheckDifference = true; // } // return isCheckDifference; //} /// /// 根据单号规则创建单号 update by liuwq /// /// public static async Task CreateOrderNoByRuleCommon(OrderTypeEnum orderTypeEnum, int businessType, SqlSugarRepository _wmsOrderMovement, SqlSugarRepository _WmsNoCreateRuleRep, SqlSugarRepository _repSNRep) { // 获取当前时间 DateTime currentTime = DateTime.Now; // 格式化为年月日字符串 string formattedDate = currentTime.ToString("yyyyMMdd"); //按照单号规则生成单号 - 查找最新的创建的一条单据记录 var newestOrder = await _wmsOrderMovement.AsQueryable().Where(p => p.OrderType == orderTypeEnum).Where(p => p.OrderNo.Contains(formattedDate)).OrderBy(it => it.CreateTime, OrderByType.Desc) .FirstAsync(); //按照单号规则生成单号 var OrderNoSjd = await SerialUtilOrder.GetSerialOrder(orderTypeEnum, _WmsNoCreateRuleRep, _repSNRep, businessType, newestOrder == null ? null : newestOrder.OrderNo); if (OrderNoSjd == null || OrderNoSjd == "") { OrderNoSjd = Yitter.IdGenerator.YitIdHelper.NextId().ToString(); } return OrderNoSjd; } } }