| | |
| | | using System; |
| | | using SqlSugar.Extensions; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Drawing.Drawing2D; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using WIDESEA_Common; |
| | | using WIDESEA_Common.OrderEnum; |
| | | using WIDESEA_Common.StockEnum; |
| | | using WIDESEA_Common.TaskEnum; |
| | | using WIDESEA_Common.WareHouseEnum; |
| | | using WIDESEA_Core; |
| | | using WIDESEA_Core.BaseRepository; |
| | | using WIDESEA_Core.BaseServices; |
| | | using WIDESEA_IWMsInfoServices; |
| | |
| | | { |
| | | public class Inventory_BatchServices : ServiceBase<Dt_Inventory_Batch, IRepository<Dt_Inventory_Batch>>, IInventory_BatchServices |
| | | { |
| | | public Inventory_BatchServices(IRepository<Dt_Inventory_Batch> BaseDal) : base(BaseDal) |
| | | private IMessageInfoService _messageInfoService; |
| | | private IMaterielInfoService _materielInfoService; |
| | | private IInventoryInfoService _inventoryInfoService; |
| | | private ISupplyTaskService _supplyTaskService; |
| | | public Inventory_BatchServices(IRepository<Dt_Inventory_Batch> BaseDal, IMessageInfoService messageInfoService, IMaterielInfoService materielInfoService, IInventoryInfoService inventoryInfoService, ISupplyTaskService supplyTaskService) : base(BaseDal) |
| | | { |
| | | _messageInfoService = messageInfoService; |
| | | _materielInfoService = materielInfoService; |
| | | _inventoryInfoService = inventoryInfoService; |
| | | _supplyTaskService = supplyTaskService; |
| | | } |
| | | |
| | | public IRepository<Dt_Inventory_Batch> Repository => BaseDal; |
| | | |
| | | |
| | | /// <summary> |
| | | /// è°æ¨å |
| | | /// </summary> |
| | | /// <param name="saveModel"></param> |
| | | /// <returns></returns> |
| | | //public override WebResponseContent UpdateData(SaveModel saveModel) |
| | | //{ |
| | | // try |
| | | // { |
| | | // string WareCode = WarehouseEnum.大件åº.ObjToInt().ToString("000"); |
| | | // var qty = saveModel.MainData["availableQuantity"].ObjToInt(); |
| | | // var id = saveModel.MainData["id"].ObjToInt(); |
| | | // var materielCode = saveModel.MainData["materielCode"].ToString(); |
| | | // var batchNo = saveModel.MainData["batchNo"].ToString(); |
| | | // //var Inventory_Batch = BaseDal.QueryFirst(x => x.Id == id); |
| | | // //if (qty > Inventory_Batch.AvailableQuantity) throw new Exception("è°æ¨æ°éä¸å¯å¤§äºå¯ç¨æ°é"); |
| | | // var materielInfo = _materielInfoService.Repository.QueryFirst(x => x.MaterielCode == materielCode); |
| | | // if (materielInfo == null) return WebResponseContent.Instance.Error($"请维æ¤è¯åç¼å·ã{materielCode}ãçä¿¡æ¯"); |
| | | // if (!Enum.IsDefined(typeof(MaterielSourceTypeEnum), materielInfo.MaterielSourceType)) |
| | | // return WebResponseContent.Instance.Error($"请设置è¯åç¼å·ã{materielCode}ãç屿§åç±»"); |
| | | // if (materielInfo.MaterielSourceType == MaterielSourceTypeEnum.PurchasePart) |
| | | // return WebResponseContent.Instance.Error($"è¯åç¼å·ã{materielCode}ãç屿§å类为大件,ä¸å¯è°æ¨"); |
| | | // List<Dt_InventoryInfo> dt_InventoryInfos = _inventoryInfoService.Repository.QueryData(x => x.MaterielCode == materielInfo.MaterielCode && x.BatchNo == batchNo && x.StockStatus == StockStatusEmun.å
¥åºå®æ.ObjToInt() && x.AvailableQuantity > 0 && x.WarehouseCode == WareCode).OrderBy(x => x.InDate).ToList(); |
| | | // if (dt_InventoryInfos.Count < 1) return WebResponseContent.Instance.Error($"ç©æç¼å·ã{materielInfo.MaterielCode}ãå¤§ä»¶åºæ åºåï¼è¯·åæ¶è¡¥å
åºåï¼"); |
| | | // var StockQty = dt_InventoryInfos.Sum(x => x.AvailableQuantity); |
| | | // if (StockQty < qty) return WebResponseContent.Instance.Error($"è°æ¨æ°éä¸å¯å¤§äºå¤§ä»¶åºå¯ç¨æ°é,大件åºå¯ç¨æ°é为ã{StockQty}ã"); |
| | | // var zx = (qty / materielInfo.BoxQty).ObjToInt(); |
| | | // var ys = qty % materielInfo.BoxQty; |
| | | // if (ys > 0) zx++; |
| | | // decimal Qty = 0; |
| | | // List<Dt_SupplyTask> supplyTasks = new List<Dt_SupplyTask>(); |
| | | // Dt_DeliveryOrder deliveryOrder = new Dt_DeliveryOrder() |
| | | // { |
| | | // Out_no = DateTime.Now.ToString("yyMMddHHmmss"), |
| | | // Warehouse_no = WareCode, |
| | | // Out_type = OutOrderTypeEnum.Allocate.ObjToInt().ToString(), |
| | | // OutStatus = "æ°å»º", |
| | | // Details = new List<Dt_DeliveryOrderDetail>() |
| | | // }; |
| | | // foreach (var item in dt_InventoryInfos) |
| | | // { |
| | | // decimal taskQty = 0; |
| | | // if (zx < 1) break; |
| | | // while (item.AvailableQuantity > 0 && zx > 0) |
| | | // { |
| | | // zx--; |
| | | // Qty += materielInfo.BoxQty; |
| | | // taskQty += materielInfo.BoxQty; |
| | | // materielInfo.Business_qty += materielInfo.BoxQty; |
| | | // item.OutboundQuantity += materielInfo.BoxQty; |
| | | // item.AvailableQuantity -= materielInfo.BoxQty; |
| | | // } |
| | | // #region æ·»å è°æ¨åºåºä»»å¡ |
| | | // Dt_SupplyTask supplyTask = new Dt_SupplyTask() |
| | | // { |
| | | // WarehouseCode = item.WarehouseCode, |
| | | // BatchNo = item.BatchNo, |
| | | // MaterielName = item.MaterielName, |
| | | // MaterielCode = item.MaterielCode, |
| | | // MaterielSpec = item.MaterielSpec, |
| | | // TaskStatus = SupplyStatusEnum.NewOut.ObjToInt(), |
| | | // TaskType = TaskTypeEnum.AllocatOut.ObjToInt(), |
| | | // CreateDate = DateTime.Now, |
| | | // Creater = App.User.UserName ?? "System", |
| | | // LocationCode = item.LocationCode, |
| | | // OrderNo = deliveryOrder.Out_no, |
| | | // StockQuantity = taskQty, |
| | | // SupplyQuantity = 0, |
| | | // Remark = "è°æ¨åºåº" |
| | | // }; |
| | | // supplyTasks.Add(supplyTask); |
| | | // #endregion |
| | | // } |
| | | // Dt_DeliveryOrderDetail deliveryOrderDetail = new Dt_DeliveryOrderDetail() |
| | | // { |
| | | // Batch_num = batchNo, |
| | | // Order_Outqty = 0, |
| | | // Order_qty = Qty, |
| | | // CreateDate = DateTime.Now, |
| | | // Creater = App.User.UserName ?? "System", |
| | | // Goods_no = materielCode, |
| | | // OotDetailStatus = "æ°å»º", |
| | | // Status = 2, |
| | | // Reservoirarea = WareCode |
| | | // }; |
| | | // deliveryOrder.Details.Add(deliveryOrderDetail); |
| | | // #region æ·»å è°æ¨å
¥åºå |
| | | // Dt_CabinOrder cabinOrder = new Dt_CabinOrder() |
| | | // { |
| | | // Order_no = deliveryOrder.Out_no, |
| | | // Order_type = InOrderTypeEnum.Allocat.ObjToInt().ToString(), |
| | | // Warehouse_no = "001", |
| | | // OdrderStatus = "æ°å»º", |
| | | // Details = new List<Dt_CabinOrderDetail>() |
| | | // }; |
| | | // foreach (var item in deliveryOrder.Details) |
| | | // { |
| | | // Dt_CabinOrderDetail orderDetail = new Dt_CabinOrderDetail() |
| | | // { |
| | | // Reservoirarea = cabinOrder.Warehouse_no, |
| | | // Goods_no = item.Goods_no, |
| | | // Order_qty = item.Order_qty, |
| | | // Batch_num = item.Batch_num, |
| | | // OrderDetailStatus = "æ°å»º", |
| | | // Status = 0 |
| | | // }; |
| | | // cabinOrder.Details.Add(orderDetail); |
| | | // } |
| | | // #endregion |
| | | // Db.Ado.BeginTran(); |
| | | // _materielInfoService.UpdateData(materielInfo); |
| | | // _inventoryInfoService.Repository.UpdateData(dt_InventoryInfos); |
| | | // _supplyTaskService.AddData(supplyTasks); |
| | | // if (deliveryOrder.Details.Count > 0) Db.InsertNav(deliveryOrder).Include(x => x.Details).ExecuteCommand(); |
| | | // if (cabinOrder.Details.Count > 0) Db.InsertNav(cabinOrder).Include(x => x.Details).ExecuteCommand(); |
| | | // Db.Ado.CommitTran(); |
| | | // return WebResponseContent.Instance.OK("è°æ¨åºå
¥åºåçææå,请æä½è°æ¨å"); |
| | | // } |
| | | // catch (Exception ex) |
| | | // { |
| | | // Db.Ado.RollbackTran(); |
| | | // return WebResponseContent.Instance.Error(ex.Message); |
| | | // } |
| | | //} |
| | | |
| | | |
| | | |
| | | /// <summary> |
| | | /// è°æ¨å |
| | | /// </summary> |
| | | /// <param name="saveModel"></param> |
| | | /// <returns></returns> |
| | | public override WebResponseContent UpdateData(SaveModel saveModel) |
| | | { |
| | | try |
| | | { |
| | | string WareCode = WarehouseEnum.大件åº.ObjToInt().ToString("000"); |
| | | var qty = saveModel.MainData["availableQuantity"].ObjToInt();//ç¨æ·è¾å
¥çæ°é |
| | | var id = saveModel.MainData["id"].ObjToInt();//åºåæ¹æ¬¡çid |
| | | var materielCode = saveModel.MainData["materielCode"].ToString(); |
| | | var batchNo = saveModel.MainData["batchNo"].ToString(); |
| | | |
| | | var materielInfo = _materielInfoService.Repository.QueryFirst(x => x.MaterielCode == materielCode); |
| | | if (materielInfo == null) return WebResponseContent.Instance.Error($"请维æ¤è¯åç¼å·ã{materielCode}ãçä¿¡æ¯"); |
| | | if (!Enum.IsDefined(typeof(MaterielSourceTypeEnum), materielInfo.MaterielSourceType)) |
| | | return WebResponseContent.Instance.Error($"请设置è¯åç¼å·ã{materielCode}ãç屿§åç±»"); |
| | | if (materielInfo.MaterielSourceType == MaterielSourceTypeEnum.PurchasePart) |
| | | return WebResponseContent.Instance.Error($"è¯åç¼å·ã{materielCode}ãç屿§å类为大件,ä¸å¯è°æ¨"); |
| | | |
| | | List<Dt_InventoryInfo> dt_InventoryInfos = _inventoryInfoService.Repository.QueryData(x => x.MaterielCode == materielInfo.MaterielCode && x.BatchNo == batchNo && x.StockStatus == StockStatusEmun.å
¥åºå®æ.ObjToInt() && x.AvailableQuantity > 0 && x.WarehouseCode == WareCode).OrderBy(x => x.InDate).ToList(); |
| | | if (dt_InventoryInfos.Count < 1) return WebResponseContent.Instance.Error($"ç©æç¼å·ã{materielInfo.MaterielCode}ãå¤§ä»¶åºæ åºåï¼è¯·åæ¶è¡¥å
åºåï¼"); |
| | | |
| | | var StockQty = dt_InventoryInfos.Sum(x => x.AvailableQuantity); |
| | | if (StockQty < qty) return WebResponseContent.Instance.Error($"è°æ¨æ°éä¸å¯å¤§äºå¤§ä»¶åºå¯ç¨æ°é,大件åºå¯ç¨æ°é为ã{StockQty}ã"); |
| | | |
| | | // æ£æ¥å¤§ä»¶åºä¸æ¯å¦å卿£ä»¶ |
| | | decimal totalLooseQty = 0; |
| | | foreach (var inventory in dt_InventoryInfos) |
| | | { |
| | | var looseQty = inventory.AvailableQuantity % materielInfo.BoxQty; |
| | | if (looseQty > 0) |
| | | { |
| | | totalLooseQty += looseQty; |
| | | } |
| | | } |
| | | |
| | | decimal Qty = 0; // å®é
è°æ¨æ»æ°é |
| | | decimal businessQtyToAdd = 0; // éè¦æ·»å å°ä¸å¡æ°éçæ°é |
| | | List<Dt_SupplyTask> supplyTasks = new List<Dt_SupplyTask>(); |
| | | Dt_DeliveryOrder deliveryOrder = new Dt_DeliveryOrder() |
| | | { |
| | | Out_no = DateTime.Now.ToString("yyMMddHHmmss"), |
| | | Warehouse_no = WareCode, |
| | | Out_type = OutOrderTypeEnum.Allocate.ObjToInt().ToString(), |
| | | OutStatus = "æ°å»º", |
| | | Details = new List<Dt_DeliveryOrderDetail>() |
| | | }; |
| | | |
| | | // æ
åµ1ï¼å¤§ä»¶åºææ£ä»¶ï¼ä¸ç¨æ·è¾å
¥æ°éå°äºçäºæ£ä»¶æ»æ°ï¼ä¸æ¬¡æ§è°æ¨æææ£ä»¶ |
| | | if (totalLooseQty > 0 && qty <= totalLooseQty) |
| | | { |
| | | decimal remainingLooseQty = totalLooseQty; |
| | | |
| | | foreach (var item in dt_InventoryInfos) |
| | | { |
| | | if (remainingLooseQty <= 0) break; |
| | | |
| | | var looseQty = item.AvailableQuantity % materielInfo.BoxQty; |
| | | if (looseQty > 0) |
| | | { |
| | | // 䏿¬¡æ§è°æ¨è¯¥åºåè®°å½ä¸çæææ£ä»¶ |
| | | item.OutboundQuantity += looseQty; |
| | | item.AvailableQuantity -= looseQty; |
| | | Qty += looseQty; |
| | | businessQtyToAdd += looseQty; |
| | | remainingLooseQty -= looseQty; |
| | | |
| | | // æ·»å ä¾åºä»»å¡ |
| | | Dt_SupplyTask supplyTask = new Dt_SupplyTask() |
| | | { |
| | | WarehouseCode = item.WarehouseCode, |
| | | BatchNo = item.BatchNo, |
| | | MaterielName = item.MaterielName, |
| | | MaterielCode = item.MaterielCode, |
| | | MaterielSpec = item.MaterielSpec, |
| | | TaskStatus = SupplyStatusEnum.NewOut.ObjToInt(), |
| | | TaskType = TaskTypeEnum.AllocatOut.ObjToInt(), |
| | | CreateDate = DateTime.Now, |
| | | Creater = App.User.UserName ?? "System", |
| | | LocationCode = item.LocationCode, |
| | | OrderNo = deliveryOrder.Out_no, |
| | | Modifier= item.ValidityPeriod,//ææ |
| | | StockQuantity = looseQty, |
| | | SupplyQuantity = 0, |
| | | Remark = "æ£ä»¶è°æ¨åºåºï¼ä¸æ¬¡æ§æ¸
çï¼" |
| | | }; |
| | | supplyTasks.Add(supplyTask); |
| | | } |
| | | } |
| | | } |
| | | // æ
åµ2ï¼å¤§ä»¶åºææ£ä»¶ï¼ä½ç¨æ·è¾å
¥æ°éå¤§äºæ£ä»¶æ»æ°ï¼æè
å¤§ä»¶åºæ²¡ææ£ä»¶ï¼æåæ¥æ´ç®±é»è¾ |
| | | else |
| | | { |
| | | // å¦æå¤§ä»¶åºææ£ä»¶ä½ç¨æ·è¦è°æ¨æ´å¤ï¼å
æ¸
çæ£ä»¶ |
| | | decimal allocatedLooseQty = 0; |
| | | if (totalLooseQty > 0) |
| | | { |
| | | foreach (var item in dt_InventoryInfos) |
| | | { |
| | | var looseQty = item.AvailableQuantity % materielInfo.BoxQty; |
| | | if (looseQty > 0) |
| | | { |
| | | // 䏿¬¡æ§è°æ¨è¯¥åºåè®°å½ä¸çæææ£ä»¶ |
| | | item.OutboundQuantity += looseQty; |
| | | item.AvailableQuantity -= looseQty; |
| | | allocatedLooseQty += looseQty; |
| | | Qty += looseQty; |
| | | businessQtyToAdd += looseQty; |
| | | |
| | | // æ·»å ä¾åºä»»å¡ |
| | | Dt_SupplyTask supplyTask = new Dt_SupplyTask() |
| | | { |
| | | WarehouseCode = item.WarehouseCode, |
| | | BatchNo = item.BatchNo, |
| | | MaterielName = item.MaterielName, |
| | | MaterielCode = item.MaterielCode, |
| | | MaterielSpec = item.MaterielSpec, |
| | | TaskStatus = SupplyStatusEnum.NewOut.ObjToInt(), |
| | | TaskType = TaskTypeEnum.AllocatOut.ObjToInt(), |
| | | CreateDate = DateTime.Now, |
| | | Creater = App.User.UserName ?? "System", |
| | | LocationCode = item.LocationCode, |
| | | OrderNo = deliveryOrder.Out_no, |
| | | StockQuantity = looseQty, |
| | | Modifier = item.ValidityPeriod,//ææ |
| | | SupplyQuantity = 0, |
| | | Remark = "æ£ä»¶è°æ¨åºåºï¼ä¸æ¬¡æ§æ¸
çï¼" |
| | | }; |
| | | supplyTasks.Add(supplyTask); |
| | | } |
| | | } |
| | | } |
| | | |
| | | // 计ç®è¿éè¦è°æ¨çæ´ç®±æ°é |
| | | var remainingQty = qty - allocatedLooseQty; |
| | | if (remainingQty > 0) |
| | | { |
| | | var zx = (int)Math.Ceiling((decimal)remainingQty / materielInfo.BoxQty); // éè¦çæ´ç®±æ° |
| | | |
| | | foreach (var item in dt_InventoryInfos) |
| | | { |
| | | decimal taskQty = 0; |
| | | if (zx < 1) break; |
| | | |
| | | // 计ç®å½ååºå坿ä¾ç宿´ç®±æ° |
| | | var availableFullBoxes = item.AvailableQuantity / materielInfo.BoxQty; |
| | | var boxesToTransfer = Math.Min(availableFullBoxes, zx); |
| | | |
| | | if (boxesToTransfer > 0) |
| | | { |
| | | var transferQty = boxesToTransfer * materielInfo.BoxQty; |
| | | taskQty += transferQty; |
| | | Qty += transferQty; |
| | | businessQtyToAdd += transferQty; |
| | | zx -= (int)boxesToTransfer; |
| | | |
| | | item.OutboundQuantity += transferQty; |
| | | item.AvailableQuantity -= transferQty; |
| | | |
| | | // æ·»å ä¾åºä»»å¡ |
| | | Dt_SupplyTask supplyTask = new Dt_SupplyTask() |
| | | { |
| | | WarehouseCode = item.WarehouseCode, |
| | | BatchNo = item.BatchNo, |
| | | MaterielName = item.MaterielName, |
| | | MaterielCode = item.MaterielCode, |
| | | MaterielSpec = item.MaterielSpec, |
| | | TaskStatus = SupplyStatusEnum.NewOut.ObjToInt(), |
| | | TaskType = TaskTypeEnum.AllocatOut.ObjToInt(), |
| | | CreateDate = DateTime.Now, |
| | | Creater = App.User.UserName ?? "System", |
| | | LocationCode = item.LocationCode, |
| | | OrderNo = deliveryOrder.Out_no, |
| | | Modifier = item.ValidityPeriod,//ææ |
| | | StockQuantity = taskQty, |
| | | SupplyQuantity = 0, |
| | | Remark = "æ´ç®±è°æ¨åºåº" |
| | | }; |
| | | supplyTasks.Add(supplyTask); |
| | | } |
| | | } |
| | | |
| | | // æ£æ¥æ´ç®±æ°éæ¯å¦è¶³å¤ |
| | | if (zx > 0) |
| | | { |
| | | return WebResponseContent.Instance.Error($"æ´ç®±åºåä¸è¶³ï¼æ æ³å®æè°æ¨ãè¿éè¦{zx}ç®±"); |
| | | } |
| | | } |
| | | } |
| | | |
| | | // æ´æ°ä¸å¡æ°éï¼ä¸å¡æ°é = 忥çä¸å¡æ°é + å®é
è°æ¨æ»æ°é |
| | | materielInfo.Business_qty += businessQtyToAdd; |
| | | |
| | | // æ·»å åºåºåæç» |
| | | Dt_DeliveryOrderDetail deliveryOrderDetail = new Dt_DeliveryOrderDetail() |
| | | { |
| | | Batch_num = batchNo, |
| | | Order_Outqty = 0, |
| | | Order_qty = Qty, |
| | | CreateDate = DateTime.Now, |
| | | Creater = App.User.UserName ?? "System", |
| | | Goods_no = materielCode, |
| | | OotDetailStatus = "æ°å»º", |
| | | Status = 2, |
| | | Reservoirarea = WareCode |
| | | }; |
| | | deliveryOrder.Details.Add(deliveryOrderDetail); |
| | | |
| | | // æ·»å è°æ¨å
¥åºå |
| | | Dt_CabinOrder cabinOrder = new Dt_CabinOrder() |
| | | { |
| | | Order_no = deliveryOrder.Out_no, |
| | | Order_type = InOrderTypeEnum.Allocat.ObjToInt().ToString(), |
| | | Warehouse_no = "001", |
| | | OdrderStatus = "æ°å»º", |
| | | Details = new List<Dt_CabinOrderDetail>() |
| | | }; |
| | | foreach (var item in deliveryOrder.Details) |
| | | { |
| | | Dt_CabinOrderDetail orderDetail = new Dt_CabinOrderDetail() |
| | | { |
| | | Reservoirarea = cabinOrder.Warehouse_no, |
| | | Goods_no = item.Goods_no, |
| | | Order_qty = item.Order_qty, |
| | | Batch_num = item.Batch_num, |
| | | OrderDetailStatus = "æ°å»º", |
| | | Status = 0 |
| | | }; |
| | | cabinOrder.Details.Add(orderDetail); |
| | | } |
| | | |
| | | Db.Ado.BeginTran(); |
| | | _materielInfoService.UpdateData(materielInfo); |
| | | _inventoryInfoService.Repository.UpdateData(dt_InventoryInfos); |
| | | _supplyTaskService.AddData(supplyTasks); |
| | | if (deliveryOrder.Details.Count > 0) Db.InsertNav(deliveryOrder).Include(x => x.Details).ExecuteCommand(); |
| | | if (cabinOrder.Details.Count > 0) Db.InsertNav(cabinOrder).Include(x => x.Details).ExecuteCommand(); |
| | | Db.Ado.CommitTran(); |
| | | |
| | | return WebResponseContent.Instance.OK($"è°æ¨åºå
¥åºåçææåï¼å®é
è°æ¨æ°éï¼{(int)Qty}"); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | Db.Ado.RollbackTran(); |
| | | return WebResponseContent.Instance.Error(ex.Message); |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | public WebResponseContent GetExpiredAndlow() |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | try |
| | | { |
| | | DateTime dateTime = DateTime.Now.AddDays(30).Date; |
| | | List<Dt_Inventory_Batch> inventory_Batches = BaseDal.QueryData(x => x.ValidityPeriod < dateTime); |
| | | foreach (var item in inventory_Batches) |
| | | { |
| | | var day = (item.ValidityPeriod - DateTime.Now).Days; |
| | | string d = $"è¿æ{day}å¤©è¿æ"; |
| | | if (day < 0) d = $"å·²è¿æ{Math.Abs(day)}天"; |
| | | _messageInfoService.AddMessageInfo(MessageGroupByEnum.InventoryExceedAlarm, "ç©æåç§°:" + item.MaterielName, $"ç©æç¼å·ã{item.MaterielCode}ãç©ææ¹æ¬¡ã{item.BatchNo}ã{d}", messageRemark: $"ç©æç¼å·ã{item.MaterielCode}ãç©ææ¹æ¬¡ã{item.BatchNo}ã"); |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | content.Error(ex.Message); |
| | | } |
| | | return content; |
| | | } |
| | | } |
| | | } |