Przeglądaj źródła

Merge branch 'master' of http://123.60.180.165:4647/ZZYDOP/DOPCore

heteng 3 lat temu
rodzic
commit
3da7f5e8f2

+ 46 - 47
MicroServices/Business/Business.Application/ResourceExamineManagement/ResourceExamineAppService.cs

@@ -233,7 +233,7 @@ namespace Business.ResourceExamineManagement
             //同步数据测试方法
             //await SyncData();
 
-            await ProductiveExamine(1733221167209762816,100);
+            await ProductiveExamine(1733221167209762816, 100);
             return null;
             throw new NotImplementedException();
         }
@@ -244,7 +244,7 @@ namespace Business.ResourceExamineManagement
         /// <returns></returns>
         public async Task SyncData()
         {
-            var query =  _mysql_mes_technique.GetQueryableAsync().Result.ToListAsync().Result;
+            var query = _mysql_mes_technique.GetQueryableAsync().Result.ToListAsync().Result;
             await _mes_technique.InsertMany(query);
         }
 
@@ -255,7 +255,7 @@ namespace Business.ResourceExamineManagement
         /// <param name="packages">需要生产产品件数</param>
         public async Task<DateTime> ProductiveExamine(long tech_id, int packages)
         {
-            if (packages <=0)
+            if (packages <= 0)
             {
                 throw new NotImplementedException("产能计算参数有误!");
             }
@@ -423,6 +423,7 @@ namespace Business.ResourceExamineManagement
             //TODO:获取销售订单信息
             //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 _mysql_ic_item.FindAsync(x => x.number == bomNumber);
 
             //工单已被占用后要与占用表关联查询...减去占用量后 剩下生产数量可供下个销售工单使用。
             Expression<Func<mes_mooccupy, bool>> mooccupyfilter = x => x.moo_state == 1 && x.IsDeleted == false;
@@ -436,27 +437,8 @@ namespace Business.ResourceExamineManagement
             {
                 //存在此数据满足当前BOM交付找到最早日期工单,则返回无需后续继续检查。
                 var morder = morderDataList.OrderByDescending(x => x.planner_end_date).FirstOrDefault();
-
-                //生成mes_mooccupy工单占用表数据,代表此工单被某个销售订单已占用。
-                mes_mooccupy mes_Mooccupy = new mes_mooccupy();
-                mes_Mooccupy.GenerateNewId();
-                mes_Mooccupy.moo_id_type = "分配";
-                mes_Mooccupy.moo_id_billid = 0;//销售订单ID
-                mes_Mooccupy.fbill_no = "0";//销售订单号
-                mes_Mooccupy.fentry_id = 0;//销售订单行
-                mes_Mooccupy.fitem_name = string.Empty;//物料名称
-                mes_Mooccupy.fitem_number = bomNumber;
-                mes_Mooccupy.fmodel = string.Empty;//规格型号
-                mes_Mooccupy.moo_moid = morder.Id;
-                mes_Mooccupy.moo_mo = morder.morder_no;
-                mes_Mooccupy.moo_qty = Quantity;
-                mes_Mooccupy.moo_stime = DateTime.Now;
-                mes_Mooccupy.moo_etime = DateTime.Now;//日期来源需确定
-                mes_Mooccupy.moo_state = 1;
-                mes_Mooccupy.moo_cbr = string.Empty;
-                //mes_Mooccupy.moo_ctime = ;
-                mes_Mooccupy.moo_creason = string.Empty;
-                mes_Mooccupy.tenant_id = 0;
+                var mooccupies = mes_mooccupyList.Where(x => x.moo_moid == morder.Id).ToList();
+                var mes_Mooccupy = GetMooccupies(seorderentry, mysql_ic_item, morder, mooccupies);
                 await _mes_mooccupy.InsertOne(mes_Mooccupy);
             }
             else
@@ -468,34 +450,13 @@ namespace Business.ResourceExamineManagement
                     //TODO:后期处理无在制工单返回内容
                     throw new NotImplementedException("无可用在制工单!");
                 }
-                List<mes_morder> mes_Morders = new List<mes_morder>();
                 List<mes_mooccupy> mes_Mooccupies = new List<mes_mooccupy>();
                 decimal? number = Quantity;
                 foreach (var item in morderListData)
                 {
                     //查询出工单已占用总数量
-                    var mes_mooccupy = mes_mooccupyList.Where(x => x.moo_moid == item.Id).ToList();
-                    //生成mes_mooccupy工单占用表数据,代表多个工单被某个销售订单已占用。 
-                    mes_mooccupy mes_Mooccupy = new mes_mooccupy();
-                    mes_Mooccupy.GenerateNewId();
-                    mes_Mooccupy.moo_id_type = "分配";
-                    mes_Mooccupy.moo_id_billid = seorderentry.seorder_id;//销售订单ID
-                    mes_Mooccupy.fbill_no = seorderentry.bill_no;//销售订单号
-                    mes_Mooccupy.fentry_id = seorderentry.entry_seq.Value;//销售订单行
-                    mes_Mooccupy.fitem_name = string.Empty;//物料名称
-                    mes_Mooccupy.fitem_number = bomNumber;
-                    mes_Mooccupy.fmodel = seorderentry.specification;//规格型号
-                    mes_Mooccupy.moo_moid = item.Id;
-                    mes_Mooccupy.moo_mo = item.morder_no;
-                    //占用量=生产计划数量-入库数量-已被占用数量
-                    mes_Mooccupy.moo_qty = item.morder_production_number - item.inventory_number - mes_mooccupy.Sum(x => x.moo_qty);
-                    mes_Mooccupy.moo_stime = DateTime.Now;
-                    mes_Mooccupy.moo_etime = DateTime.Now;//日期来源需确定
-                    mes_Mooccupy.moo_state = 1;
-                    mes_Mooccupy.moo_cbr = string.Empty;
-                    //mes_Mooccupy.moo_ctime = ;
-                    mes_Mooccupy.moo_creason = string.Empty;
-                    mes_Mooccupy.tenant_id = 0;
+                    var mooccupies = mes_mooccupyList.Where(x => x.moo_moid == item.Id).ToList();
+                    var mes_Mooccupy = GetMooccupies(seorderentry, mysql_ic_item, item, mooccupies);
                     mes_Mooccupies.Add(mes_Mooccupy);
                     //需求数量-占用量后小于或等于0 停止循环占用工单
                     if (number - mes_Mooccupy.moo_qty <= 0)
@@ -526,6 +487,44 @@ namespace Business.ResourceExamineManagement
             #endregion
         }
         /// <summary>
+        /// 拼接工单占用表
+        /// </summary>
+        /// <param name="seorderentry">销售订单子表</param>
+        /// <param name="mysql_ic_item">物料详情表</param>
+        /// <param name="item">工单表</param>
+        /// <param name="mes_mooccupy">占用工单表</param>
+        /// <returns></returns>
+        public mes_mooccupy GetMooccupies(crm_seorderentry seorderentry, ic_item mysql_ic_item, mes_morder item, List<mes_mooccupy> mes_mooccupy)
+        {
+            decimal? Sumqty = 0;
+            if (mes_mooccupy.Count > 0)
+            {
+                Sumqty = mes_mooccupy.Sum(x => x.moo_qty);
+            }
+            //生成mes_mooccupy工单占用表数据,代表多个工单被某个销售订单已占用。 
+            mes_mooccupy mes_Mooccupy = new mes_mooccupy();
+            mes_Mooccupy.GenerateNewId();
+            mes_Mooccupy.moo_id_type = "分配";
+            mes_Mooccupy.moo_id_billid = seorderentry.seorder_id;//销售订单ID
+            mes_Mooccupy.fbill_no = seorderentry.bill_no;//销售订单号
+            mes_Mooccupy.fentry_id = seorderentry.entry_seq.Value;//销售订单行
+            mes_Mooccupy.fitem_name = mysql_ic_item.name;//物料名称
+            mes_Mooccupy.fitem_number = mysql_ic_item.number;
+            mes_Mooccupy.fmodel = mysql_ic_item.model;//规格型号
+            mes_Mooccupy.moo_moid = item.Id;
+            mes_Mooccupy.moo_mo = item.morder_no;
+            //占用量=生产计划数量-入库数量-已被占用数量
+            mes_Mooccupy.moo_qty = item.morder_production_number - item.inventory_number - Sumqty;
+            mes_Mooccupy.moo_stime = DateTime.Now;
+            mes_Mooccupy.moo_etime = DateTime.Now;//日期来源需确定
+            mes_Mooccupy.moo_state = 1;
+            mes_Mooccupy.moo_cbr = string.Empty;
+            //mes_Mooccupy.moo_ctime = ;
+            mes_Mooccupy.moo_creason = string.Empty;
+            mes_Mooccupy.tenant_id = 0;
+            return mes_Mooccupy;
+        }
+        /// <summary>
         /// BOM预处理
         /// </summary>
         /// <param name="orderid"></param>