Преглед изворни кода

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

# Conflicts:
#	MicroServices/Business/Business.Application/ResourceExamineManagement/ResourceExamineAppService.cs
tangdi пре 3 година
родитељ
комит
5767d472a7

+ 38 - 22
MicroServices/Business/Business.Application/ResourceExamineManagement/ResourceExamineAppService.cs

@@ -300,9 +300,9 @@ namespace Business.ResourceExamineManagement
             _srm_po_list = srm_po_list;
             _crm_seorder = crm_seorder;
             _crm_seorderentry = crm_seorderentry;
-            _srm_po_occupy= srm_po_occupy;
-            _ic_item_pur= ic_item_pur;
-            _ic_plan= ic_plan;
+            _srm_po_occupy = srm_po_occupy;
+            _ic_item_pur = ic_item_pur;
+            _ic_plan = ic_plan;
             _ic_substitute = ic_substitute;
             _ic_substitute_all = ic_substitute_all;
             _ic_substitute_all_dtl = ic_substitute_all_dtl;
@@ -422,21 +422,21 @@ namespace Business.ResourceExamineManagement
         {
             //资源检查结果
             PschedDto rtn = new PschedDto();
-            rtn.sorderid = input.sorderId; 
+            rtn.sorderid = input.sorderId;
 
             //生成当前计算bangid
             SnowFlake snow = new SnowFlake();
             long bangid = snow.NextId();
 
             //获取订单数据
-            crm_seorder sorder = _mysql_crm_seorder.GetListAsync(p=>p.tenant_id == input.tenantId && p.factory_id == input.factoryId && p.Id == input.sorderId && p.IsDeleted ==false).Result.FirstOrDefault();
+            crm_seorder sorder = _mysql_crm_seorder.GetListAsync(p => p.tenant_id == input.tenantId && p.factory_id == input.factoryId && p.Id == input.sorderId && p.IsDeleted == false).Result.FirstOrDefault();
             if (sorder == null)
             {
                 throw new NotImplementedException("订单数据不存在!");
             }
             //获取订单行数据
             List<crm_seorderentry> sentrys = _mysql_crm_seorderentry.GetListAsync(p => p.tenant_id == input.tenantId && p.factory_id == input.factoryId && p.seorder_id == input.sorderId && p.IsDeleted == false).Result;
-            
+
             //数据库快照-同步mysql库数据到mongoDB中
             await SyncData(input.tenantId, input.factoryId, bangid);
 
@@ -477,6 +477,8 @@ namespace Business.ResourceExamineManagement
                 dtl.substitutes = getBomList;
                 //添加订单行开工信息
                 examines.Add(dtl);
+                //生成工单 TODO:0=产品数量
+                //GenerateMorder(o, 0);
             }
             #endregion
             //订单行资源检查明细list
@@ -834,7 +836,7 @@ namespace Business.ResourceExamineManagement
         /// <param name="DeliverDate">交付日期</param>
         /// <param name="seorderentry_id">销售订单子表ID</param>
         /// <returns></returns>
-        public async Task GenerateMorder(crm_seorderentry seorderentry, decimal? Quantity)
+        public void GenerateMorder(crm_seorderentry seorderentry, decimal? Quantity)
         {
             //1.库存、在制工单检查完成后 当前BOM需要自制时 产生工单。
 
@@ -842,7 +844,7 @@ namespace Business.ResourceExamineManagement
             //查询销售订单子表数据
             //var seorderentry = await _mysql_crm_seorderentry.FindAsync(x => x.Id == seorderentry_id);
             //获取销售订单信息
-            var seorder = await _mysql_crm_seorder.FindAsync(x => x.Id == seorderentry.seorder_id);
+            var seorder = _mysql_crm_seorder.FindAsync(x => x.Id == seorderentry.seorder_id).Result;
             //物料BOM
             // var ic_bom = _ic_bom.GetManyByCondition(x => x.bom_number == seorderentry.bom_number && x.factory_id == seorderentry.factory_id).Result.FirstOrDefault();
 
@@ -905,8 +907,8 @@ namespace Business.ResourceExamineManagement
             mes_Moentry.factory_id = seorderentry.factory_id;
             //using (TransactionScope scope = new TransactionScope())
             // {
-            await _mes_morder.InsertOne(mes_Morder);
-            await _mes_moentry.InsertOne(mes_Moentry);
+            _mes_morder.InsertOne(mes_Morder);
+            _mes_moentry.InsertOne(mes_Moentry);
             //scope.Complete();
             //}
         }
@@ -945,13 +947,14 @@ namespace Business.ResourceExamineManagement
         /// <param name="DeliverDate">交付日期</param>
         /// <param name="seorderentry_id">销售订单子表ID</param>
         /// <returns></returns>
-        public async Task<bool> CheckMorder(string bomNumber, decimal? Quantity, DateTime DeliverDate, crm_seorderentry seorderentry)
+        public async Task<int> CheckMorder(string bomNumber, decimal? Quantity, DateTime DeliverDate, crm_seorderentry seorderentry)
         {
             if (string.IsNullOrEmpty(bomNumber) || Quantity == null)
             {
                 //TODO:入参异常;
                 throw new NotImplementedException("BOM编码或需求数量不能为空!");
             }
+            var Number = 0; //1,满足,2数量满足,时间不满足,3不满足
             //获取销售订单信息
             //var seorder = await _crm_seorder.FindAsync(x => x.Id == OrderId);
             //var seorderentry = await _mysql_crm_seorderentry.FindAsync(x => x.Id == seorderentry_id);
@@ -970,6 +973,8 @@ namespace Business.ResourceExamineManagement
             //当前工单计划日期-1天 小于交付日期 && 计算生产数量-入库数据并且大于需求产品数量。
             var morderDataList = morderList.Where(x => x.planner_end_date.Value.AddDays(-1) < DeliverDate &&
             (x.morder_production_number - x.inventory_number) > Quantity).ToList();
+
+
             if (morderDataList.Count > 0)
             {
                 //存在此数据满足当前BOM交付找到最早日期工单,则返回无需后续继续检查。
@@ -977,17 +982,12 @@ namespace Business.ResourceExamineManagement
                 var mooccupies = mes_mooccupyList.Where(x => x.moo_moid == morder.Id).ToList();
                 var mes_Mooccupy = GetMooccupies(seorderentry, ic_item, morder, mooccupies);
                 await _mes_mooccupy.InsertOne(mes_Mooccupy);
+                return Number = 1;
             }
             else
             {
                 // 寻找最早日期工单 &&  计算生产数量-入库数据并且大于需求产品数量后累加直到满足需求产品数量
                 var morderListData = morderList.Where(x => x.planner_end_date.Value.AddDays(-1) < DeliverDate).OrderByDescending(x => x.planner_end_date).ToList();
-                if (morderListData.Count == 0)
-                {
-                    //TODO:后期处理无在制工单返回内容
-                    //throw new NotImplementedException("无可用在制工单!");
-                    return false;
-                }
                 List<mes_mooccupy> mes_Mooccupies = new List<mes_mooccupy>();
                 decimal? number = Quantity;
                 foreach (var item in morderListData)
@@ -1002,8 +1002,21 @@ namespace Business.ResourceExamineManagement
                         break;
                     }
                 }
+                var morderDatas = morderList.Where(x => x.planner_end_date.Value.AddDays(-1) > DeliverDate &&
+          (x.morder_production_number - x.inventory_number) > Quantity).ToList();
+                if (number > 0)
+                {
+                    return Number = 3;
+                }
+                if (morderDatas.Count > 0)
+                {
+                    return Number = 2;
+                }
+                else
+                {
+                    return Number = 1;
+                }
             }
-            return true;
         }
         /// <summary>
         /// 拼接工单占用表
@@ -1069,7 +1082,7 @@ namespace Business.ResourceExamineManagement
             {
                 return returnlist;
             }
-            
+
             var dto = new BomChildExamineDto();
             dto.item_id = bom.icitem_id;
             dto.bom_id = BomId.Value;
@@ -1107,7 +1120,8 @@ namespace Business.ResourceExamineManagement
             {
                 item = icitemlist.Where(a => a.Id == bom.icitem_id).FirstOrDefault();
             }
-            else {
+            else
+            {
                 item = icitemlist.Where(a => a.Id == dto.item_id).FirstOrDefault();
             }
             if (item == null)
@@ -1548,7 +1562,8 @@ namespace Business.ResourceExamineManagement
                     //替代
                     select = sublist.Where(s => s.type == 0).ToList();
                 }
-                else {
+                else
+                {
                     //取代
                     select = sublist.Where(s => s.substitute_all_num == 0).ToList();
                 }
@@ -1666,7 +1681,8 @@ namespace Business.ResourceExamineManagement
                     //替代
                     select = sublist.Where(s => s.type == 0).ToList();
                 }
-                else {
+                else
+                {
                     //取代
                     select = sublist.Where(s => s.substitute_all_num == 0).ToList();
                 }