dengjunjie
6 天以前 1c8f0035e164e9780d8c35a32fc1524d67ff9d9d
н¨Îļþ¼Ð/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/extend/Allocat.cs
@@ -6,6 +6,7 @@
using System.Net.NetworkInformation;
using System.Text;
using System.Threading.Tasks;
using WIDESEA_Common;
using WIDESEA_Common.OrderEnum;
using WIDESEA_Common.StockEnum;
using WIDESEA_Common.TaskEnum;
@@ -30,10 +31,13 @@
            WebResponseContent response = new WebResponseContent();
            try
            {
                string WareCode = WarehouseEnum.大件库.ObjToInt().ToString("000");
                if (materielInfo.Business_qty >= materielInfo.MinQty) return response;
                Dt_Tactics tactics = _tacticsService.Repository.QueryFirst(x => x.TacticeName == "出库策略");
                List<Dt_SupplyTask> supplyTasks = new List<Dt_SupplyTask>();
                List<Dt_InventoryInfo> dt_InventoryInfos = _inventoryInfoService.Repository.QueryData(x => x.MaterielCode == materielInfo.MaterielCode && x.StockStatus == StockStatusEmun.入库完成.ObjToInt() && x.StockQuantity > x.OutboundQuantity && x.WarehouseCode == WarehouseEnum.大件库.ObjToInt().ToString("000"));
                //// æŸ¥è¯¢å¤§ä»¶åº“中可用的库存
                List<Dt_InventoryInfo> dt_InventoryInfos = _inventoryInfoService.Repository.QueryData(x => x.MaterielCode == materielInfo.MaterielCode && x.StockStatus == StockStatusEmun.入库完成.ObjToInt() && x.AvailableQuantity > 0 && x.WarehouseCode == WareCode);
                if (dt_InventoryInfos.Count < 1) throw new Exception($"物料编号【{materielInfo.MaterielCode}】大件库无库存!请及时补充库存!");
                if (tactics.SelectTactice == TacticsEnum.ComeOutonFirstTime.ObjToInt())
                    dt_InventoryInfos = dt_InventoryInfos.OrderBy(x => x.ValidityPeriod).ToList();
                else
@@ -42,7 +46,7 @@
                foreach (var item in dt_InventoryInfos)
                {
                    if (materielInfo.Business_qty >= materielInfo.MinQty) break;
                    item.StockStatus = StockStatusEmun.出库锁定.ObjToInt();
                    //item.StockStatus = StockStatusEmun.出库锁定.ObjToInt();
                    while (item.StockQuantity > item.OutboundQuantity && materielInfo.Business_qty < materielInfo.MinQty)
                    {
                        Qty += materielInfo.BoxQty;
@@ -51,7 +55,17 @@
                    }
                    item.AvailableQuantity = item.StockQuantity - item.OutboundQuantity;
                }
                #region å¤§ä»¶åº“补立库后立库业务库存数还是小于立库最小库存数,添加提示信息
                //添加报警信息
                if (materielInfo.Business_qty < materielInfo.MinQty)
                {
                    _messageInfoService.AddMessageInfo(MessageGroupByEnum.InventoryLowAlarm, $"物料名称:{materielInfo.MaterielName}", $"【物料编码{materielInfo.MaterielCode}已生成调拨出入库单,请进行出入库流程。大件库库存过低!请及时补充库存!】");
                }
                else
                {
                    _messageInfoService.AddMessageInfo(MessageGroupByEnum.InventoryLowAlarm, $"物料名称:{materielInfo.MaterielName}", $"【物料编码{materielInfo.MaterielCode}已生成调拨出入库单,请进行出入库流程】");
                }
                #endregion
                #region æ·»åŠ è°ƒæ‹¨å‡ºåº“å•
                Dt_DeliveryOrder deliveryOrder = new Dt_DeliveryOrder()
                {
@@ -61,7 +75,7 @@
                    Details = new List<Dt_DeliveryOrderDetail>()
                };
                dt_InventoryInfos = dt_InventoryInfos.Where(X => X.StockStatus == StockStatusEmun.出库锁定.ObjToInt()).ToList();
                foreach (var item in dt_InventoryInfos.GroupBy(x => x.BatchNo))
                foreach (var item in dt_InventoryInfos.GroupBy(x => x.BatchNo)) //这里按批次分组了
                {
                    Dt_DeliveryOrderDetail deliveryOrderDetail = new Dt_DeliveryOrderDetail()
                    {
@@ -120,7 +134,6 @@
                        Reservoirarea = cabinOrder.Warehouse_no,
                        Goods_no = item.Goods_no,
                        Order_qty = item.Order_qty,
                        Order_Inqty = item.Order_qty,
                        Batch_num = item.Batch_num,
                        OrderDetailStatus = "新建",
                        Status = 0
@@ -129,16 +142,18 @@
                }
                #endregion
                _unitOfWorkManage.BeginTran();
                //_unitOfWorkManage.BeginTran();
                _materielInfoService.UpdateData(materielInfo);
                _inventoryInfoService.Repository.UpdateData(dt_InventoryInfos);
                _supplyTaskService.AddData(supplyTasks);
                BaseDal.Db.InsertNav(deliveryOrder).Include(x => x.Details).ExecuteCommand();
                _cabinOrderServices.Repository.Db.InsertNav(cabinOrder).Include(x => x.Details).ExecuteCommand();
                _unitOfWorkManage.CommitTran();
                if (deliveryOrder.Details.Count > 1) BaseDal.Db.InsertNav(deliveryOrder).Include(x => x.Details).ExecuteCommand();
                if (cabinOrder.Details.Count > 1) _cabinOrderServices.Repository.Db.InsertNav(cabinOrder).Include(x => x.Details).ExecuteCommand();
                //_unitOfWorkManage.CommitTran();
            }
            catch (Exception ex)
            {
                _unitOfWorkManage.RollbackTran();
                //_unitOfWorkManage.RollbackTran();
                _messageInfoService.AddMessageInfo(MessageGroupByEnum.InventoryLowAlarm, "大件库补货立库", ex.Message);
                response.Error(ex.Message);
            }
            return response;