소스 검색

库存计算添加减去同一订单其他订单行占用数量

heteng 3 년 전
부모
커밋
402317bce9

+ 5 - 0
MicroServices/Business/Business.Application.Contracts/ResourceExamineManagement/Dto/SeorderentryDto.cs

@@ -9,6 +9,11 @@ namespace Business.ResourceExamineManagement.Dto
     /// </summary>
     public class SeorderentryDto : PagedAndSortedResultRequestDto
     {
+        /// <summary>
+        /// ¶©µ¥id
+        /// </summary>
+        private long sorderId;
+
         /// <summary>
         /// ¶©µ¥ÐÐid
         /// </summary>

+ 30 - 16
MicroServices/Business/Business.Application/ResourceExamineManagement/ResourceExamineAppService.cs

@@ -81,6 +81,11 @@ namespace Business.ResourceExamineManagement
         /// </summary>
         private readonly IMongoDB<mes_schedule_occupy> _mes_schedule_occupy;
 
+        /// <summary>
+        /// 物料占用记录
+        /// </summary>
+        private readonly IMongoDB<ic_item_stockoccupy> _ic_item_stockoccupy;
+
         /// <summary>
         /// 物料详情
         /// </summary>
@@ -158,6 +163,7 @@ namespace Business.ResourceExamineManagement
             //IMongoDB<ic_substitute_all_dtl> ic_substitute_all_dtl,
             IMongoDB<mes_morder> mes_morder,
             IMongoDB<mes_mooccupy> mes_mooccupy,
+            IMongoDB<ic_item_stockoccupy> ic_item_stockoccupy,
             IRepository<ic_item, long> mysql_ic_item,
             IRepository<ic_bom, long> mysql_ic_bom,
             IRepository<ic_bom_child, long> mysql_ic_bom_child,
@@ -179,6 +185,8 @@ namespace Business.ResourceExamineManagement
             //_ic_substitute_all = ic_substitute_all;
             //_ic_substitute_all_dtl = ic_substitute_all_dtl;
             _mes_morder = mes_morder;
+            _mes_mooccupy = mes_mooccupy;
+            _ic_item_stockoccupy = ic_item_stockoccupy;
             _mysql_ic_item = mysql_ic_item;
             _mysql_ic_bom = mysql_ic_bom;
             _mysql_ic_bom_child = mysql_ic_bom_child;
@@ -228,18 +236,20 @@ namespace Business.ResourceExamineManagement
         /// <exception cref="NotImplementedException"></exception>
         public async Task<PschedDto> ReceiveResult(SeorderentryDto input)
         {
-            //测试代码
-            //await test();
-            //同步数据测试方法
+            //数据库快照-同步mysql库数据到mongoDB中
             //await SyncData();
+            //生成当前计算bangid
+            SnowFlake snow = new SnowFlake();
+            long bangid = snow.NextId();
 
+            //产能检查
             await ProductiveExamine(1733221167209762816, 100);
             return null;
             throw new NotImplementedException();
         }
 
         /// <summary>
-        /// 同步数据
+        /// 数据库快照
         /// </summary>
         /// <returns></returns>
         public async Task SyncData()
@@ -249,7 +259,7 @@ namespace Business.ResourceExamineManagement
         }
 
         /// <summary>
-        /// 产能计算V2.0
+        /// 产能计算
         /// </summary>
         /// <param name="tech_id">工艺路径主键</param>
         /// <param name="packages">需要生产产品件数</param>
@@ -690,24 +700,28 @@ namespace Business.ResourceExamineManagement
         /// 计算库存量
         /// </summary>
         /// <param name="returnlist"></param>
-        public void BomStock(List<BomChildExamineDto> returnlist, long factoryid)
+        public void BomStock(List<BomChildExamineDto> returnlist,long bangid,long orderid,long orderentryid, long factoryid)
         {
             returnlist = returnlist.OrderBy(s => s.num).ToList();
             //取物料库存记录
-            var stocklist = _ic_item_stock.GetManyByCondition(s => s.icitem_id.IsIn(returnlist.Select(c => c.item_id)) && s.factory_id == factoryid).Result;
-            //取当前物料质检记录
-            //var checklist = _ic_check.GetManyByCondition(s => s.icitem_id.IsIn(returnlist.Select(c => c.item_id)) && s.istest.GetValueOrDefault() != 1).Result.ToList();
-            List<long> idlist = new List<long>();
+            FilterDefinition<ic_item_stock> filter = Builders<ic_item_stock>.Filter.In(s => s.icitem_id, returnlist.Select(c => c.item_id).ToList());
+            var stocklist = _ic_item_stock.GetManyByIds(filter).Result;
+            //取当前订单的物料库存占用记录
+            var occupylist = _ic_item_stockoccupy.GetManyByCondition(p=>p.bang_id == bangid && p.order_id == orderid).Result;
+            //计算剩余库存
             foreach (var item in returnlist)
             {
-                if (item.erp_cls != 4)//虚拟件不计算
+                if (item.erp_cls == 4)//虚拟件不计算
                 {
-                    var sl = stocklist.Where(s => s.icitem_id == item.item_id).ToList();
-                    //库存=物料库存+VMI库存+质检未入库。
-                    item.sqty = sl.Sum(s => s.sqty).GetValueOrDefault();
-                    //质检记录没加入,暂时不考虑。
-                    //VMI仓储信息
+                    continue;
                 }
+                //非虚拟件
+                //当前物料的库存数量
+                decimal stockQty = stocklist.Where(s => s.icitem_id == item.item_id).Sum(p=>p.sqty.GetValueOrDefault());
+                //获取当前订单其他订单行当前物料的占用数量
+                decimal otherStockQty = occupylist.Where(s => s.icitem_id == item.item_id).Sum(p=>p.quantity);
+                //当前订单行物料库存情况
+                item.sqty = stockQty - otherStockQty;
             }
         }
     }

+ 57 - 0
MicroServices/Business/Bussiness.Model/MES/IC/ic_item_stockoccupy.cs

@@ -0,0 +1,57 @@
+using Business.Model;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Business.Core.Attributes;
+
+namespace Bussiness.Model.MES.IC
+{
+    /// <summary>
+    /// 资源检查物料占用明细表
+    /// </summary>
+    [CollectionName("dopbase", "ic_item_stockoccupy")]
+    public class ic_item_stockoccupy:BaseEntity
+    {
+        /// <summary>
+        /// 物料占用明细表id
+        /// </summary>
+        [Description("物料占用明细表id")]
+        public long id { get; set; }
+
+        /// <summary>
+        /// bangid
+        /// </summary>
+        [Description("bangid")]
+        public long bang_id { get; set; }
+
+        /// <summary>
+        /// 订单id
+        /// </summary>
+        [Description("订单id")]
+        public long order_id { get; set; }
+
+        /// <summary>
+        /// 订单行id
+        /// </summary>
+        [Description("订单行id")]
+        public long orderentry_id { get; set; }
+
+        /// <summary>
+        /// 物料id
+        /// </summary>
+        [Description("物料id")]
+        public long icitem_id { get; set; }
+
+        /// <summary>
+        /// 占用数量
+        /// </summary>
+        [Description("占用数量")]
+        public decimal quantity { get; set; }
+
+
+    }
+}