Przeglądaj źródła

检查成品库存和生成工单

zhengly 3 lat temu
rodzic
commit
b5316bbd44

+ 59 - 4
MicroServices/Business/Business.Application/ResourceExamineManagement/ResourceExamineAppService.cs

@@ -280,7 +280,7 @@ namespace Business.ResourceExamineManagement
             //工序需要等待时间记录
             List<StartTimeDto> starts = new List<StartTimeDto>();
             //1、获取工艺路径下的第一层级工序
-            List<mes_tech_process> fistChilds = tech_Processes.Where(p=>p.parentprocid == tech_id).OrderBy(m=>m.Id).ToList();
+            List<mes_tech_process> fistChilds = tech_Processes.Where(p => p.parentprocid == tech_id).OrderBy(m => m.Id).ToList();
             if (fistChilds.Count == 0)
             {
                 throw new NotImplementedException("当前工艺路径没有配置工序,请调整!");
@@ -296,7 +296,8 @@ namespace Business.ResourceExamineManagement
                     //计算最后一个工序耗时
                     curTakeTime = CalcTakeTime(chd, packages);
                 }
-                else {
+                else
+                {
                     curTakeTime = CalcTakeTime(chd, chd.lq.Value);
                 }
                 sumTimes += curTakeTime;
@@ -318,7 +319,7 @@ namespace Business.ResourceExamineManagement
         /// <param name="proc"></param>
         /// <param name="quantity">LeadQuantity to Start Next</param>
         /// <returns></returns>
-        private decimal CalcTakeTime(mes_tech_process proc,decimal quantity)
+        private decimal CalcTakeTime(mes_tech_process proc, decimal quantity)
         {
             decimal takeTime = 0.00m;//当前工序前置准备时间(分钟)
             if (proc.wctype == 1)//人工型:数量/uph(一小时生产数量)*60(小时转换为分钟)/wsinuse(工位数)
@@ -339,13 +340,67 @@ namespace Business.ResourceExamineManagement
             return takeTime;
         }
 
+        /// <summary>
+        /// 生成主工单
+        /// </summary>
+        /// <param name="BomNumber">Bom编码</param>
+        /// <param name="Quantity">需要数量</param>
+        /// <param name="DeliverDate">交付日期</param>
+        /// <param name="OrderId">销售订单ID</param>
+        /// <returns></returns>
+        public async Task GenerateMorder(string BomNumber, decimal? Quantity, DateTime DeliverDate, long OrderId)
+        {
+            //需要生成的物料,需要生产的数量,对应销售订单。
+
+            //1.库存、在制工单检查完成后 当前BOM需要自制时 产生工单。
+
+            //2.每一个销售订单行对应一个工单。
+
+            if (string.IsNullOrEmpty(BomNumber) || Quantity == null)
+            {
+                //TODO: 参数异常 直接返回
+            }
+            //获取销售订单信息
+            //var seorder = await _crm_seorder.FindAsync(x => x.Id == OrderId);
+            var seorderentry = await _crm_seorderentry.FindAsync(x => x.seorder_id == OrderId);
+
+        }
+        /// <summary>
+        /// 检查成品库存
+        /// </summary>
+        /// <param name="OrderId">销售订单ID</param>
+        /// <returns></returns>
+        public async Task<bool> CheckFinishedProductInventory(long OrderId)
+        {
+            //获取销售订单信息
+            var seorder = await _crm_seorder.FindAsync(x => x.Id == OrderId);
+            //获取销售订单子表
+            var seorderentry = await _crm_seorderentry.FindAsync(x => x.seorder_id == OrderId);
+            //获取物料详情
+            var mysql_ic_item = await _ic_item_stock.(x => x.number == seorderentry.bom_number);
+            if (string.IsNullOrEmpty(seorderentry.bom_number))
+            {
+                return false;
+            }
+            Expression<Func<ic_item_stock, bool>> filter = x => x.icitem_id == long.Parse(seorderentry.bom_number);
+            var ic_Item_Stocks = await _ic_item_stock.GetManyByCondition(filter);
+
+            if (seorderentry.qty <= ic_Item_Stocks.Sum(x => x.sqty))
+            {
+                return true;
+            }
+            else
+            {
+                return false;
+            }
+        }
 
         /// <summary>
         /// 检查在制工单
         /// </summary>
         /// <param name="bomNumber">Bom编码</param>
         /// <param name="Quantity">需要数量</param>
-        /// <param name="EndDate">交付日期</param>
+        /// <param name="DeliverDate">交付日期</param>
         /// <param name="OrderId">销售订单ID</param>
         /// <returns></returns>
         public async Task<List<mes_morder>> CheckMorder(string bomNumber, decimal? Quantity, DateTime DeliverDate, long OrderId)