Kaynağa Gözat

Merge branch 'dev' of http://123.60.180.165:4647/ZZYDOP/DOPCore into dev

heteng 2 yıl önce
ebeveyn
işleme
b278b82300

+ 40 - 20
MicroServices/Business/Business.Application/ResourceExamineManagement/ResourceExamineAppService.cs

@@ -982,24 +982,24 @@ namespace Business.ResourceExamineManagement
             //物料、供应商为相同才允许合并。
             var idList = AnalysisIdList(ids);
             List<srm_pr_main> prlist = _mysql_srm_pr_main.GetListAsync(s => idList.Contains(s.Id)).Result;
-            if (prlist.Where(s => s.state == 0).Count() > 0)
-            {
-                return JsonConvert.SerializeObject("所选包含已关闭采购申请,请重新选择。");
-            }
-            if (prlist.Where(s => s.state == 2).Count() > 0)
-            {
-                return JsonConvert.SerializeObject("所选包含已提交评审采购申请,请重新选择。");
-            }
-            if (prlist.Where(s => s.state == 4).Count() > 0)
-            {
-                return JsonConvert.SerializeObject("所选包含已评审通过采购申请,请重新选择。");
-            }
             if (prlist.Any())
             {
-                var list = prlist.GroupBy(s => new { s.icitem_id, s.pr_purchaseid });
+                if (prlist.Where(s => s.state == 0).Count() > 0)
+                {
+                    return JsonConvert.SerializeObject("所选包含已关闭采购申请,请重新选择。");
+                }
+                if (prlist.Where(s => s.state == 2).Count() > 0)
+                {
+                    return JsonConvert.SerializeObject("所选包含已提交评审采购申请,请重新选择。");
+                }
+                if (prlist.Where(s => s.state == 4).Count() > 0)
+                {
+                    return JsonConvert.SerializeObject("所选包含已评审通过采购申请,请重新选择。");
+                }
+                var list = prlist.GroupBy(s => new { s.icitem_id, s.pr_purchaseid, s.IsRequireGoods });
                 if (list.Count() > 1)
                 {
-                    return JsonConvert.SerializeObject("所选行的物料编码,供应商名称必须相同");
+                    return JsonConvert.SerializeObject("所选行的物料编码、供应商名称、采购类型必须相同");
                 }
             }
             else {
@@ -1085,13 +1085,13 @@ namespace Business.ResourceExamineManagement
             {
                 bool bl = pr.sentry_id == null;//区分是销售订单和非销售订单的合并。
                 //找到是否生成了新的PR  当前数据是否已经产生合并,则不再合并。
-                var newPr = insetPrList.Find(s => s.pr_purchaseid == pr.pr_purchaseid && s.icitem_id == pr.icitem_id && (s.sentry_id == null) == bl);
+                var newPr = insetPrList.Find(s => s.pr_purchaseid == pr.pr_purchaseid && s.icitem_id == pr.icitem_id && s.IsRequireGoods == pr.IsRequireGoods && (s.sentry_id == null) == bl);
                 //var newPr = insetPrList.Find(s => s.pr_purchaseid == pr.pr_purchaseid && s.icitem_id == pr.icitem_id);
                 if (newPr == null)
                 {
                     //有多条才进行合并
-                    //var ilist = prlist.Where(s => s.pr_purchaseid == pr.pr_purchaseid && s.icitem_id == pr.icitem_id && (s.sentry_id == null) == bl).ToList();
-                    var ilist = prlist.Where(s => s.pr_purchaseid == pr.pr_purchaseid && s.icitem_id == pr.icitem_id).ToList();
+                    var ilist = prlist.Where(s => s.pr_purchaseid == pr.pr_purchaseid && s.icitem_id == pr.icitem_id && s.IsRequireGoods == pr.IsRequireGoods && (s.sentry_id == null) == bl).ToList();
+                    //var ilist = prlist.Where(s => s.pr_purchaseid == pr.pr_purchaseid && s.icitem_id == pr.icitem_id).ToList();
                     if (ilist.Count > 1)
                     {
                         var icitem = ic_Items.Find(s => s.Id == pr.icitem_id);
@@ -2548,6 +2548,7 @@ namespace Business.ResourceExamineManagement
             {
                 List<WorkOrdRouting> alllist = workordRList.Where(s => s.WorkOrd == work).ToList();
                 List<WorkOrdRouting> parentlist = alllist.Where(s => s.WorkOrd == work && s.ParentOp == 0).ToList();
+                //非关键工序也要添加
                 copyList.AddRange(parentlist.Where(s => s.MilestoneOp == false).ToList());
                 GetChildOP(parentlist, alllist, copyList);
             }
@@ -3768,11 +3769,13 @@ namespace Business.ResourceExamineManagement
                 if (exm != null)
                 {
                     var childs = childExamineList.Where(s => s.examine_id == exm.Id).ToList();
-                    if (childs.Any())
+                    List<b_bom_child_examine> returnList = new List<b_bom_child_examine>();
+                    GetWorkDetalis(childs.Where(s => s.level == 2).ToList(), returnList, childs);
+                    if (returnList.Any())
                     {
-                        foreach (var structure in childs)
+                        foreach (var structure in returnList)
                         {
-                            woDetail = workOrdDetails.Find(s => s.ItemNum == structure.item_number);
+                            woDetail = workOrdDetails.Find(s => s.ItemNum == structure.item_number && s.WorkOrd == item.morder_no);
                             if (woDetail == null)
                             {
                                 //添加工单的物料信息
@@ -3828,6 +3831,23 @@ namespace Business.ResourceExamineManagement
             }
         }
 
+        /// <summary>
+        /// 获取虚拟件明细
+        /// </summary>
+        /// <param name="dtl"></param>
+        /// <param name="returnList"></param>
+        /// <param name="childs"></param>
+        public void GetWorkDetalis(List<b_bom_child_examine> dtl, List<b_bom_child_examine> returnList, List<b_bom_child_examine> childs)
+        {
+            returnList.AddRange(dtl);
+            var rst = childs.Where(s => dtl.Where(x => x.erp_cls == 4).Select(c => c.fid).Contains(s.parent_id.GetValueOrDefault())).ToList();
+            if (rst.Any())
+            {
+                GetWorkDetalis(rst, returnList, childs);
+            }
+            return;
+        }
+
         /// <summary>
         /// 获取标准Bom数据--TODO:存在循环查询数据库问题,后续调整
         /// </summary>