Просмотр исходного кода

增加提供更新物料明细库位。

tangdi 2 лет назад
Родитель
Сommit
c0ba2f9739

+ 57 - 55
MicroServices/Business/Business.Application/ReplenishmentManagement/ReplenishmentAppService.cs

@@ -4001,7 +4001,7 @@ namespace Business.Replenishment
             //成品虚拟件对应关系
             var productOpList = _productStructureOp.Select(x => orderCode.Contains(x.ProductItem) && x.Domain == param.factoryId.ToString());
             //获取物料主数据
-            List<ItemMaster> itemMasters = _itemMaster.Select(p => p.Domain == param.factoryId.ToString() && orderCode.Contains(p.ItemNum)).ToList();
+            List<ItemMaster> itemMasters = _itemMaster.Select(p => p.Domain == param.factoryId.ToString()).ToList();
             foreach (var item in morders)
             {
                 var moItem = exmResult.Find(b => b.morder_no ==item.morder_no);
@@ -4072,7 +4072,7 @@ namespace Business.Replenishment
                         foreach (var caleNumber in calereturnList)
                         {
                             var caleList = returnList.Where(x => x.item_number == caleNumber).ToList();
-
+                            var itemMst = itemMasters.Find(x => x.ItemNum == caleNumber);
                             //添加工单的物料信息
                             woDetail = new WorkOrdDetail();
                             woDetail.Domain = item.factory_id.ToString();
@@ -4091,6 +4091,7 @@ namespace Business.Replenishment
                             woDetail.CreateTime = DateTime.Now;
                             woDetail.Line = num;
                             woDetail.QtyRequired = caleList.Sum(c => c.needCount.GetValueOrDefault());
+                            woDetail.Location = itemMst == null ? "" : itemMst.Location;
                             if (workOrd.QtyOrded != 0)
                             {
                                 woDetail.FrozenBOMQty = Math.Round(woDetail.QtyRequired / workOrd.QtyOrded, 10);
@@ -4951,72 +4952,73 @@ namespace Business.Replenishment
                 //暂时屏蔽重新生成工单物料明细
                 List<WorkOrdDetail> mainWorkOrdDetails = new List<WorkOrdDetail>();
                 List<WorkOrdDetail> delWorkOrddetails = new List<WorkOrdDetail>();
-                
-                    //成品虚拟件对应关系
-                    var productOpList = _productStructureOp.Select(x => mo_Mes_Morders.Select(c => c.product_code).Contains(x.ProductItem) && x.Domain == param.factoryId.ToString());
-                    var workOrds = _workOrdMaster.Select(a => mo_Mes_Morders.Select(p => p.morder_no).ToList().Contains(a.WorkOrd) && a.Domain == param.factoryId.ToString() && a.IsActive);
-                    delWorkOrddetails = _workOrdDetail.Select(x => workOrds.Select(c => c.RecID).Contains((int)x.WorkOrdMasterRecID) && x.Domain == param.factoryId.ToString());
-                    foreach (var workord in mo_Mes_Morders)
+                //获取物料主数据
+                List<ItemMaster> itemMasters = _itemMaster.Select(p => p.Domain == param.factoryId.ToString()).ToList();
+                //成品虚拟件对应关系
+                var productOpList = _productStructureOp.Select(x => mo_Mes_Morders.Select(c => c.product_code).Contains(x.ProductItem) && x.Domain == param.factoryId.ToString());
+                var workOrds = _workOrdMaster.Select(a => mo_Mes_Morders.Select(p => p.morder_no).ToList().Contains(a.WorkOrd) && a.Domain == param.factoryId.ToString() && a.IsActive);
+                delWorkOrddetails = _workOrdDetail.Select(x => workOrds.Select(c => c.RecID).Contains((int)x.WorkOrdMasterRecID) && x.Domain == param.factoryId.ToString());
+                foreach (var workord in mo_Mes_Morders)
+                {
+                    long fid = GetParentMo(mo_Mes_Morders, workord);
+                    var exm = examines.Find(s => s.morder_id == fid);
+                    //var exm = examines.Find(s => s.morder_no == workord.morder_no);
+                    if (exm != null)
                     {
-                        long fid = GetParentMo(mo_Mes_Morders, workord);
-                        var exm = examines.Find(s => s.morder_id == fid);
-                        //var exm = examines.Find(s => s.morder_no == workord.morder_no);
-                        if (exm != null)
-                        {
-                            var childs = exm.BomChildExamineList.Where(s => s.is_use == true).ToList();
+                        var childs = exm.BomChildExamineList.Where(s => s.is_use == true).ToList();
 
-                            var child = childs.Find(s => s.item_number == workord.product_code);
-                            if (child == null)
+                        var child = childs.Find(s => s.item_number == workord.product_code);
+                        if (child == null)
+                        {
+                            continue;
+                        }
+                        List<BomChildExamineDto> returnList = new List<BomChildExamineDto>();
+                        var productOps = productOpList.Where(x => x.ProductItem == workord.product_code).ToList();
+                        GetWorkDetalis(childs.Where(s => s.parent_id == child.fid).ToList(), returnList, childs, productOps);
+                        if (returnList.Any())
+                        {
+                            WorkOrdDetail woDetail = null;
+                            var calereturnList = returnList.OrderBy(c => c.item_number).Select(x => x.item_number).Distinct().ToList();
+                            var work = workOrds.Find(x => x.WorkOrd == workord.morder_no);
+                            if (work == null)
                             {
                                 continue;
                             }
-                            List<BomChildExamineDto> returnList = new List<BomChildExamineDto>();
-                            var productOps = productOpList.Where(x => x.ProductItem == workord.product_code).ToList();
-                            GetWorkDetalis(childs.Where(s => s.parent_id == child.fid).ToList(), returnList, childs, productOps);
-                            if (returnList.Any())
+                            short num = 1;
+                            foreach (var caleNumber in calereturnList)
                             {
-                                WorkOrdDetail woDetail = null;
-                                var calereturnList = returnList.OrderBy(c => c.item_number).Select(x => x.item_number).Distinct().ToList();
-                                var work = workOrds.Find(x => x.WorkOrd == workord.morder_no);
-                                if (work == null)
+                                var caleList = returnList.Where(x => x.item_number == caleNumber).ToList();
+                                var itmeMst = itemMasters.Find(x => x.ItemNum == caleNumber);
+                                //添加工单的物料信息
+                                woDetail = new WorkOrdDetail();
+                                woDetail.Domain = workord.factory_id.ToString();
+                                woDetail.WorkOrd = workord.morder_no;
+                                var oplist = caleList.Where(x => x.Op > 0).ToList();
+                                woDetail.Op = 0;
+                                if (oplist.Any())
                                 {
-                                    continue;
+                                    woDetail.Op = oplist.Min(f => f.Op);
                                 }
-                                short num = 1;
-                                foreach (var caleNumber in calereturnList)
+                                woDetail.ItemNum = caleNumber;
+                                woDetail.QtyPosted = 0m;
+                                woDetail.QtyReturned = 0m;
+                                woDetail.Status = "";
+                                woDetail.IsActive = true;
+                                woDetail.CreateTime = DateTime.Now;
+                                woDetail.Line = num;
+                                woDetail.QtyRequired = caleList.Sum(c => c.needCount);
+                                woDetail.WorkOrdMasterRecID = work.RecID;
+                                woDetail.Location = itmeMst == null ? "" : itmeMst.Location;
+                                if (workord.need_number != 0)
                                 {
-                                    var caleList = returnList.Where(x => x.item_number == caleNumber).ToList();
-
-                                    //添加工单的物料信息
-                                    woDetail = new WorkOrdDetail();
-                                    woDetail.Domain = workord.factory_id.ToString();
-                                    woDetail.WorkOrd = workord.morder_no;
-                                    var oplist = caleList.Where(x => x.Op > 0).ToList();
-                                    woDetail.Op = 0;
-                                    if (oplist.Any())
-                                    {
-                                        woDetail.Op = oplist.Min(f => f.Op);
-                                    }
-                                    woDetail.ItemNum = caleNumber;
-                                    woDetail.QtyPosted = 0m;
-                                    woDetail.QtyReturned = 0m;
-                                    woDetail.Status = "";
-                                    woDetail.IsActive = true;
-                                    woDetail.CreateTime = DateTime.Now;
-                                    woDetail.Line = num;
-                                    woDetail.QtyRequired = caleList.Sum(c => c.needCount);
-                                    woDetail.WorkOrdMasterRecID = work.RecID;
-                                    if (workord.need_number != 0)
-                                    {
-                                        woDetail.FrozenBOMQty = Math.Round(woDetail.QtyRequired / workord.need_number.GetValueOrDefault(), 10);
-                                    }
-                                    mainWorkOrdDetails.Add(woDetail);
-                                    num++;
+                                    woDetail.FrozenBOMQty = Math.Round(woDetail.QtyRequired / workord.need_number.GetValueOrDefault(), 10);
                                 }
+                                mainWorkOrdDetails.Add(woDetail);
+                                num++;
                             }
                         }
                     }
-                
+                }
 
                 List<srm_pr_main> updatPrList = new List<srm_pr_main>();
                 List<srm_pr_main> deletePrList = new List<srm_pr_main>();

+ 6 - 3
MicroServices/Business/Business.Application/ResourceExamineManagement/ResourceExamineAppService.cs

@@ -3546,6 +3546,7 @@ namespace Business.ResourceExamineManagement
             {                
                 //成品虚拟件对应关系
                 var productOpList = _productStructureOp.Select(x => priorityMorderList.Select(c => c.product_code).Contains(x.ProductItem) && x.Domain == param.factoryId.ToString());
+                List<ItemMaster> itemMasterList = _itemMaster.Select(p => p.Domain == param.factoryId.ToString()).ToList();
                 foreach (var workord in priorityMorderList)
                 {
                     long fid = GetParentMo(priorityMorderList, workord);
@@ -3575,7 +3576,7 @@ namespace Business.ResourceExamineManagement
                             foreach (var caleNumber in calereturnList)
                             {
                                 var caleList = returnList.Where(x => x.item_number == caleNumber).ToList();
-
+                                var itemMst = itemMasterList.Find(x => x.ItemNum == caleNumber);
                                 //添加工单的物料信息
                                 woDetail = new WorkOrdDetail();
                                 woDetail.Domain = workord.factory_id.ToString();
@@ -3595,6 +3596,7 @@ namespace Business.ResourceExamineManagement
                                 woDetail.Line = num;
                                 woDetail.QtyRequired = caleList.Sum(c => c.needCount);
                                 woDetail.WorkOrdMasterRecID = work.RecID;
+                                woDetail.Location = itemMst == null ? "" : itemMst.Location;
                                 if (workord.need_number != 0)
                                 {
                                     woDetail.FrozenBOMQty = Math.Round(woDetail.QtyRequired / workord.need_number.GetValueOrDefault(), 10);
@@ -4503,7 +4505,7 @@ namespace Business.ResourceExamineManagement
             //成品虚拟件对应关系
             var productOpList = _productStructureOp.Select(x => orderCode.Contains(x.ProductItem) && x.Domain == param.factoryId.ToString());
             //获取物料主数据
-            List<ItemMaster> itemMasters = _itemMaster.Select(p => p.Domain == param.factoryId.ToString() && orderCode.Contains(p.ItemNum)).ToList();
+            List<ItemMaster> itemMasters = _itemMaster.Select(p => p.Domain == param.factoryId.ToString()).ToList();
             var dbworklist = _workOrdMaster.Select(x => (string.IsNullOrEmpty(x.Status) || x.Status == "p" || x.Status == "P") && (string.IsNullOrEmpty(x.Typed) || (!string.IsNullOrEmpty(x.Typed) && x.Typed.ToUpper() != "PW" && x.BusinessID > 0))).ToList();
             decimal Priority = 0;
             if (dbworklist.Any())
@@ -4580,7 +4582,7 @@ namespace Business.ResourceExamineManagement
                         foreach (var caleNumber in calereturnList)
                         {
                             var caleList = returnList.Where(x => x.item_number == caleNumber).ToList();
-
+                            var itemMst = itemMasters.Find(x => x.ItemNum == caleNumber);
                             //添加工单的物料信息
                             woDetail = new WorkOrdDetail();
                             woDetail.Domain = item.factory_id.ToString();
@@ -4599,6 +4601,7 @@ namespace Business.ResourceExamineManagement
                             woDetail.CreateTime = DateTime.Now;
                             woDetail.Line = num;
                             woDetail.QtyRequired = caleList.Sum(c => c.needCount.GetValueOrDefault());
+                            woDetail.Location = itemMst == null ? "" : itemMst.Location;
                             if (workOrd.QtyOrded != 0)
                             {
                                 woDetail.FrozenBOMQty = Math.Round(woDetail.QtyRequired / workOrd.QtyOrded, 10);