zhengly 3 年 前
コミット
6d8e37a621

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

@@ -296,9 +296,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;
@@ -323,9 +323,9 @@ namespace Business.ResourceExamineManagement
             _mysql_mes_tech_process = mysql_mes_tech_process;
             _mysql_srm_po_main = mysql_srm_po_main;
             _mysql_srm_po_list = mysql_srm_po_list;
-            _mysql_srm_po_occupy= mysql_srm_po_occupy;
-            _mysql_ic_item_pur= mysql_ic_item_pur;
-            _mysql_ic_plan= mysql_ic_plan;
+            _mysql_srm_po_occupy = mysql_srm_po_occupy;
+            _mysql_ic_item_pur = mysql_ic_item_pur;
+            _mysql_ic_plan = mysql_ic_plan;
         }
 
         /// <summary>
@@ -405,7 +405,9 @@ namespace Business.ResourceExamineManagement
             //产能检查
             //await ProductiveExamine(1353957529328291842, 1000);
             //var id = Save(input.tenantId, input.factoryId);
-            await GenerateMorder(1736470478942093312);
+            //await GenerateMorder(1736470478942093312);
+            var dateTime = DateTime.Parse("2021-09-03");
+            await CheckMorder("9.1.03.01.0541", 1000, dateTime, 1736470478942093312);
             return null;
             throw new NotImplementedException();
         }
@@ -810,7 +812,7 @@ namespace Business.ResourceExamineManagement
         /// <returns></returns>
         public async Task<bool> CheckMorder(string bomNumber, decimal? Quantity, DateTime DeliverDate, long seorderentry_id)
         {
-            if (string.IsNullOrEmpty(bomNumber) || Quantity != null)
+            if (string.IsNullOrEmpty(bomNumber) || Quantity == null)
             {
                 //TODO:入参异常;
                 throw new NotImplementedException("BOM编码或需求数量不能为空!");
@@ -824,7 +826,7 @@ namespace Business.ResourceExamineManagement
             && x.morder_icitem_type != "相关委外工单") && x.IsDeleted == false && x.tenant_id == seorderentry.tenant_id);
 
             //获取物料详情
-            var mysql_ic_item = await _mysql_ic_item.FindAsync(x => x.number == bomNumber && x.tenant_id == seorderentry.tenant_id);
+            var ic_item = _ic_item.GetManyByCondition(x => x.number == bomNumber && x.tenant_id == seorderentry.tenant_id).Result.FirstOrDefault();
 
             //工单已被占用后要与占用表关联查询...减去占用量后 剩下生产数量可供下个销售工单使用。
             var mes_mooccupyList = await _mes_mooccupy.GetManyByCondition(x => x.moo_state == 1 && x.IsDeleted == false && x.tenant_id == seorderentry.tenant_id);
@@ -838,7 +840,7 @@ namespace Business.ResourceExamineManagement
                 //存在此数据满足当前BOM交付找到最早日期工单,则返回无需后续继续检查。
                 var morder = morderDataList.OrderByDescending(x => x.planner_end_date).FirstOrDefault();
                 var mooccupies = mes_mooccupyList.Where(x => x.moo_moid == morder.Id).ToList();
-                var mes_Mooccupy = GetMooccupies(seorderentry, mysql_ic_item, morder, mooccupies);
+                var mes_Mooccupy = GetMooccupies(seorderentry, ic_item, morder, mooccupies);
                 await _mes_mooccupy.InsertOne(mes_Mooccupy);
             }
             else
@@ -857,7 +859,7 @@ namespace Business.ResourceExamineManagement
                 {
                     //查询出工单已占用总数量
                     var mooccupies = mes_mooccupyList.Where(x => x.moo_moid == item.Id).ToList();
-                    var mes_Mooccupy = GetMooccupies(seorderentry, mysql_ic_item, item, mooccupies);
+                    var mes_Mooccupy = GetMooccupies(seorderentry, ic_item, item, mooccupies);
                     mes_Mooccupies.Add(mes_Mooccupy);
                     //需求数量-占用量后小于或等于0 停止循环占用工单
                     if (number - mes_Mooccupy.moo_qty <= 0)
@@ -1540,22 +1542,22 @@ namespace Business.ResourceExamineManagement
         {
             //ToDo:企业Id
             ProjectionDefinitionBuilder<ic_factory_details> project = new ProjectionDefinitionBuilder<ic_factory_details>();
-            return _ic_factory_details.Find(p => returnlist.Select(x => x.item_id).Contains(p.icitem_id) && p.factory_id == factoryid && p.tenant_id==tenantId && !p.IsDeleted,
-                project.Include(p => p.icitem_id).Include(p => p.production_leadtime).Include(p => p.stock_leadtime).Include(p => p.transportation_leadtime).Include(p=>p.order_leadtime)).Result.
-                Select(x => new ICItemLeadTimeDto { item_id = x.icitem_id, transportation_leadtime = x.transportation_leadtime, stock_leadtime = x.stock_leadtime, production_leadtime = x.production_leadtime, order_leadtime=x.order_leadtime }).AsQueryable<ICItemLeadTimeDto>().ToList();
+            return _ic_factory_details.Find(p => returnlist.Select(x => x.item_id).Contains(p.icitem_id) && p.factory_id == factoryid && p.tenant_id == tenantId && !p.IsDeleted,
+                project.Include(p => p.icitem_id).Include(p => p.production_leadtime).Include(p => p.stock_leadtime).Include(p => p.transportation_leadtime).Include(p => p.order_leadtime)).Result.
+                Select(x => new ICItemLeadTimeDto { item_id = x.icitem_id, transportation_leadtime = x.transportation_leadtime, stock_leadtime = x.stock_leadtime, production_leadtime = x.production_leadtime, order_leadtime = x.order_leadtime }).AsQueryable<ICItemLeadTimeDto>().ToList();
         }
 
         //根据物料id获取物料供应商
-        private List<ic_item_pur> GetSupplier(List<BomChildExamineDto> returnlist, long tenantId,long factoryid)
+        private List<ic_item_pur> GetSupplier(List<BomChildExamineDto> returnlist, long tenantId, long factoryid)
         {
             //ToDo:企业Id
             return _ic_item_pur.Find(p => returnlist.Select(x => x.item_id).Contains(p.icitem_id) && p.tenant_id == tenantId && p.factory_id == factoryid && !p.IsDeleted).Result;
         }
 
         //根据物料id获取物料采购计划表
-        private List<ic_plan> GetICPlan(List<BomChildExamineDto> returnlist, long tenantId,long factoryid)
+        private List<ic_plan> GetICPlan(List<BomChildExamineDto> returnlist, long tenantId, long factoryid)
         {
-            return _ic_plan.Find(p => returnlist.Select(x => x.item_id).Contains(p.icitem_id) &&p.tenant_id==tenantId  && p.factory_id == factoryid && !p.IsDeleted).Result;
+            return _ic_plan.Find(p => returnlist.Select(x => x.item_id).Contains(p.icitem_id) && p.tenant_id == tenantId && p.factory_id == factoryid && !p.IsDeleted).Result;
         }
 
 
@@ -1569,11 +1571,11 @@ namespace Business.ResourceExamineManagement
         private async Task<List<ICItemDateDto>> CheckOnOrder(List<BomChildExamineDto> returnlist, long tenantId, long factoryid, DateTime deliveryDate)
         {
             //ToDo:企业Id,数据状态过滤以及isdeleted
-            var po_list = _srm_po_list.Find(p => returnlist.Select(x => x.item_id).Contains(p.icitem_id) && p.tenant_id== tenantId && p.factory_id == factoryid && p.rarrdate >= DateTime.Now && p.rarrdate < deliveryDate && !p.IsDeleted).Result;
+            var po_list = _srm_po_list.Find(p => returnlist.Select(x => x.item_id).Contains(p.icitem_id) && p.tenant_id == tenantId && p.factory_id == factoryid && p.rarrdate >= DateTime.Now && p.rarrdate < deliveryDate && !p.IsDeleted).Result;
             var itemlist = new List<ICItemDateDto>();//需要生成采购申请单的物料信息
             var leadTimeList = GetLeadTime(returnlist, tenantId, factoryid);//提前期列表
             var supplierList = GetSupplier(returnlist, tenantId, factoryid);//供应商列表
-            var planList = GetICPlan(returnlist, tenantId,factoryid);//plan列表
+            var planList = GetICPlan(returnlist, tenantId, factoryid);//plan列表
             foreach (var item in returnlist)
             {
                 //缺料
@@ -1585,15 +1587,15 @@ namespace Business.ResourceExamineManagement
                         //外购生成采购申请单
                         if (item.erp_cls == 3)
                         {
-                            DateTime lastTime=CreateSRMPR(item, tenantId, factoryid, 2, leadTimeList, supplierList, planList,deliveryDate);
+                            DateTime lastTime = CreateSRMPR(item, tenantId, factoryid, 2, leadTimeList, supplierList, planList, deliveryDate);
                             itemlist.Add(new ICItemDateDto { item_id = item.item_id, dateTime = lastTime });
                         }
                         else if (item.erp_cls == 2)
                         {
                             //委外生成委外采购申请单和委外工单
-                            DateTime lastTime=CreateSRMPR(item, tenantId, factoryid, 1, leadTimeList, supplierList, planList,deliveryDate);
-                            CreateMesOOder(item, tenantId, factoryid, leadTimeList, supplierList,deliveryDate);
-                            itemlist.Add(new ICItemDateDto { item_id = item.item_id, dateTime = lastTime});
+                            DateTime lastTime = CreateSRMPR(item, tenantId, factoryid, 1, leadTimeList, supplierList, planList, deliveryDate);
+                            CreateMesOOder(item, tenantId, factoryid, leadTimeList, supplierList, deliveryDate);
+                            itemlist.Add(new ICItemDateDto { item_id = item.item_id, dateTime = lastTime });
                         }
                     }
                     else
@@ -1642,7 +1644,7 @@ namespace Business.ResourceExamineManagement
                                 po_Occupy.cby = "";//变更人
                                 po_Occupy.creason = "";//变更原因
                                 po_Occupy.ctime = DateTime.Now;//变更时间
-                               await _srm_po_occupy.InsertOne(po_Occupy);
+                                await _srm_po_occupy.InsertOne(po_Occupy);
                             }
                         }
                     }
@@ -1656,7 +1658,7 @@ namespace Business.ResourceExamineManagement
         /// </summary>
         /// <param name="returnlist"></param>
         /// <param name="factoryid"></param>
-        private DateTime CreateMesOOder(BomChildExamineDto returnlist, long tenantId, long factoryid, List<ICItemLeadTimeDto> iCItemLeadTimes,List<ic_item_pur> supplierList,DateTime deliveryDate)
+        private DateTime CreateMesOOder(BomChildExamineDto returnlist, long tenantId, long factoryid, List<ICItemLeadTimeDto> iCItemLeadTimes, List<ic_item_pur> supplierList, DateTime deliveryDate)
         {
             mes_oorder oOrder = new mes_oorder();
             oOrder.GenerateNewId();
@@ -1709,7 +1711,7 @@ namespace Business.ResourceExamineManagement
         /// <param name="returnlist"></param>
         /// <param name="factoryid"></param>
         /// <param name="orderType">1委外采购申请单,2采购申请单</param>
-        private DateTime CreateSRMPR(BomChildExamineDto returnlist, long tenantId, long factoryid, int orderType,List<ICItemLeadTimeDto> iCItemLeadTimes, List<ic_item_pur> supplierList, List<ic_plan> planList,DateTime deliveryDate)
+        private DateTime CreateSRMPR(BomChildExamineDto returnlist, long tenantId, long factoryid, int orderType, List<ICItemLeadTimeDto> iCItemLeadTimes, List<ic_item_pur> supplierList, List<ic_plan> planList, DateTime deliveryDate)
         {
             var leadTime = iCItemLeadTimes.Find(x => x.item_id == returnlist.item_id);
             var supplier = supplierList.Find(x => x.icitem_id == returnlist.item_id);//默认取第一个供应商
@@ -1721,13 +1723,13 @@ namespace Business.ResourceExamineManagement
             srm_Pr.entity_id = 1;//工单行号
             srm_Pr.pr_purchaseid = supplier.supplier_id;//供应商id  
             srm_Pr.pr_purchasenumber = supplier.supplier_number;//供应商编码
-            srm_Pr.pr_purchasename =supplier.supplier_name;//供应商名称
-            srm_Pr.pr_purchaser =supplier.purcher;//采购员
-            srm_Pr.pr_purchaser_num ="";//采购员工号(采购信息表)
-            srm_Pr.pr_rqty =returnlist.lack_qty;//需求数量
+            srm_Pr.pr_purchasename = supplier.supplier_name;//供应商名称
+            srm_Pr.pr_purchaser = supplier.purcher;//采购员
+            srm_Pr.pr_purchaser_num = "";//采购员工号(采购信息表)
+            srm_Pr.pr_rqty = returnlist.lack_qty;//需求数量
             srm_Pr.pr_aqty = returnlist.lack_qty;//申请数量
             srm_Pr.pr_sqty = returnlist.lack_qty;//建议数量
-            srm_Pr.icitem_id =returnlist.item_id;//物料id
+            srm_Pr.icitem_id = returnlist.item_id;//物料id
             srm_Pr.icitem_name = returnlist.item_name;//物料名称
             srm_Pr.pr_order_type = 1;//单据类型
             srm_Pr.pr_ssend_date = deliveryDate.AddDays((double)leadTime.order_leadtime * -1);//系统建议下单日期
@@ -1735,21 +1737,21 @@ namespace Business.ResourceExamineManagement
             srm_Pr.pr_psend_date = deliveryDate.AddDays((double)leadTime.order_leadtime * -1);//计划下单日期
             srm_Pr.pr_parrive_date = deliveryDate.AddDays((double)leadTime.transportation_leadtime * -1);//计划到达日期
             srm_Pr.pr_psend_date = deliveryDate.AddDays((double)leadTime.order_leadtime * -1);//计划下单日期
-            srm_Pr.pr_sysprice = returnlist.lack_qty* supplier.netpurchase_price*(1+ supplier.taxrate);//系统价格(含税)
+            srm_Pr.pr_sysprice = returnlist.lack_qty * supplier.netpurchase_price * (1 + supplier.taxrate);//系统价格(含税)
             srm_Pr.pr_orderprice = returnlist.lack_qty * supplier.netpurchase_price * (1 + supplier.taxrate);//订单价格(含税)
-            srm_Pr.pr_price =supplier.netpurchase_price;//采购净价(不含税)
-            srm_Pr.pr_rate =supplier.taxrate;//税率
+            srm_Pr.pr_price = supplier.netpurchase_price;//采购净价(不含税)
+            srm_Pr.pr_rate = supplier.taxrate;//税率
             srm_Pr.pr_unit = returnlist.unit;//单位
             srm_Pr.state = 1;//状态
             srm_Pr.old_apply_aqty = 0;//已申请数量
             srm_Pr.pr_type = orderType;//申请类型
-            srm_Pr.currencytype =supplier.currency_type;//币种
+            srm_Pr.currencytype = supplier.currency_type;//币种
             srm_Pr.secInv_ratio = plan.secinv_ratio;//安全库存触发采购比例
             srm_Pr.tenant_id = tenantId;
             srm_Pr.factory_id = factoryid;
             _srm_pr_main.InsertOne(srm_Pr);
             decimal? totalLeadTime = leadTime.transportation_leadtime + leadTime.stock_leadtime + leadTime.production_leadtime + leadTime.order_leadtime;
-            return deliveryDate.AddDays((double)totalLeadTime*-1);//减去提前期
+            return deliveryDate.AddDays((double)totalLeadTime * -1);//减去提前期
         }
 
         // 生成订单编号 字母+年月日+8位随机数+时间戳