Browse Source

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

heteng 2 năm trước cách đây
mục cha
commit
e01848649a

+ 135 - 175
MicroServices/Business/Business.Application/ResourceExamineManagement/ResourceExamineAppService.cs

@@ -792,7 +792,16 @@ namespace Business.ResourceExamineManagement
             rtn.item_stockoccupy_list = sklist;
 
             //检查结果写入数据库
-            var b_Examine_Results = ObjectMapper.Map<List<ExamineResult>, List<b_examine_result>>(rtn.examines);
+            await ExamineResultInsertDBAsync(rtn.examines);
+            
+            //清空快照数据
+            await ClearSnapShot(bangid);
+            return JsonConvert.SerializeObject("ok");
+        }
+
+        public async Task ExamineResultInsertDBAsync(List<ExamineResult> examines)
+        {
+            //检查结果写入数据库
             List<b_examine_result> examineList = new List<b_examine_result>();
             List<b_bom_child_examine> bomExamineList = new List<b_bom_child_examine>();
             List<b_mo_occupy> mooccupyList = new List<b_mo_occupy>();
@@ -801,7 +810,7 @@ namespace Business.ResourceExamineManagement
             List<b_purchase> purchaseList = new List<b_purchase>();
             List<b_purchase_occupy> purchaseoccupyList = new List<b_purchase_occupy>();
 
-            foreach (var ex in rtn.examines)
+            foreach (var ex in examines)
             {
                 var b_ex = ObjectMapper.Map<ExamineResult, b_examine_result>(ex);
                 b_ex.GenerateNewId(help.NextId());// = help.NextId();
@@ -884,7 +893,7 @@ namespace Business.ResourceExamineManagement
                     }
                 });
             }
-            using (var unitOfWork = _unitOfWorkManager.Begin(false,true))
+            using (var unitOfWork = _unitOfWorkManager.Begin(false, true))
             {
                 try
                 {
@@ -916,20 +925,17 @@ namespace Business.ResourceExamineManagement
                     {
                         _businessBangDbContext.BulkInsert(purchaseoccupyList);
                     }
-                   await unitOfWork.CompleteAsync();
+                    await unitOfWork.CompleteAsync();
                 }
                 catch (Exception e)
                 {
                     new NLogHelper("ResourceExamineAppService").WriteLog("ReceiveResult", "资源检查计算结果相关数据更新失败:" + e.Message, _currentTenant.Id.ToString());
                     unitOfWork.Dispose();
-                    return e.Message;
                 }
             }
-            //清空快照数据
-            await ClearSnapShot(bangid);
-            return JsonConvert.SerializeObject("ok");
         }
 
+
         //PR手动合并
         public async Task<string> PrMerge(string ids)
         {
@@ -1728,27 +1734,24 @@ namespace Business.ResourceExamineManagement
             var mes_mooccupy = _mysql_mes_mooccupy.GetListAsync(x => x.company_id == companyId && x.factory_id == factoryId).Result;
             if (mes_mooccupy.Count > 0)
             {
-                mes_mooccupy.ForEach(item => { item.bang_id = bangid; });
                 var moMes_mooccupy = ObjectMapper.Map<List<mes_mooccupy>, List<mo_mes_mooccupy>>(mes_mooccupy);
-                moMes_mooccupy.ForEach(item => { item.GenerateNewId(help.NextId()); });
+                moMes_mooccupy.ForEach(item => { item.GenerateNewId(help.NextId()); item.bang_id = bangid; });
                 await _mes_mooccupy.InsertManyAsync(moMes_mooccupy);
             }
             //工单主表
             var mes_morder = _mysql_mes_morder.GetListAsync(x => x.company_id == companyId && x.factory_id == factoryId).Result;
             if (mes_morder.Count > 0)
             {
-                mes_morder.ForEach(item => { item.bang_id = bangid; });
                 var moMes_morder = ObjectMapper.Map<List<mes_morder>, List<mo_mes_morder>>(mes_morder);
-                moMes_morder.ForEach(item => { item.GenerateNewId(help.NextId()); });
+                moMes_morder.ForEach(item => { item.GenerateNewId(help.NextId()); item.bang_id = bangid; });
                 await _mes_morder.InsertManyAsync(moMes_morder);
             }
             //工单子表
             var mes_moentry = _mysql_mes_moentry.GetListAsync(x => x.company_id == companyId && x.factory_id == factoryId).Result;
             if (mes_moentry.Count > 0)
             {
-                mes_moentry.ForEach(item => { item.bang_id = bangid; });
                 var moMes_moentry = ObjectMapper.Map<List<mes_moentry>, List<mo_mes_moentry>>(mes_moentry);
-                moMes_moentry.ForEach(item => { item.GenerateNewId(help.NextId()); });
+                moMes_moentry.ForEach(item => { item.GenerateNewId(help.NextId()); item.bang_id = bangid; });
                 await _mes_moentry.InsertManyAsync(moMes_moentry);
             }
 
@@ -1757,9 +1760,8 @@ namespace Business.ResourceExamineManagement
             var srm_po_main = _mysql_srm_po_main.GetListAsync(x => x.company_id == companyId && x.factory_id == factoryId).Result;
             if (srm_po_main.Count > 0)
             {
-                srm_po_main.ForEach(item => { item.bang_id = bangid; });
                 var moSrm_po_main = ObjectMapper.Map<List<srm_po_main>, List<mo_srm_po_main>>(srm_po_main);
-                moSrm_po_main.ForEach(item => { item.GenerateNewId(help.NextId()); });
+                moSrm_po_main.ForEach(item => { item.GenerateNewId(help.NextId()); item.bang_id = bangid; });
                 await _srm_po_main.InsertManyAsync(moSrm_po_main);
             }
 
@@ -1767,9 +1769,8 @@ namespace Business.ResourceExamineManagement
             var srm_po_list = _mysql_srm_po_list.GetListAsync(x => x.company_id == companyId && x.factory_id == factoryId).Result;
             if (srm_po_list.Count > 0)
             {
-                srm_po_list.ForEach(item => { item.bang_id = bangid; });
                 var moSrm_po_list = ObjectMapper.Map<List<srm_po_list>, List<mo_srm_po_list>>(srm_po_list);
-                moSrm_po_list.ForEach(item => { item.GenerateNewId(help.NextId()); });
+                moSrm_po_list.ForEach(item => { item.GenerateNewId(help.NextId()); item.bang_id = bangid; });
                 await _srm_po_list.InsertManyAsync(moSrm_po_list);
             }
 
@@ -1777,9 +1778,8 @@ namespace Business.ResourceExamineManagement
             var srm_po_occupy = _mysql_srm_po_occupy.GetListAsync(x => x.company_id == companyId && x.factory_id == factoryId).Result;
             if (srm_po_occupy.Count > 0)
             {
-                srm_po_occupy.ForEach(item => { item.bang_id = bangid; });
                 var moSrm_po_occupy = ObjectMapper.Map<List<srm_po_occupy>, List<mo_srm_po_occupy>>(srm_po_occupy);
-                moSrm_po_occupy.ForEach(item => { item.GenerateNewId(help.NextId()); });
+                moSrm_po_occupy.ForEach(item => { item.GenerateNewId(help.NextId()); item.bang_id = bangid; });
                 await _srm_po_occupy.InsertManyAsync(moSrm_po_occupy);
             }
         }
@@ -2184,14 +2184,53 @@ namespace Business.ResourceExamineManagement
                 Mes_Morders.ForEach(s => { s.moentry_sys_stime = DateTime.Now.Date.AddDays((double)lookDay + 1); });
                 List<string> monolist = Mes_Morders.Select(c => c.morder_no).ToList();
                 //清理PR的占用。
+                //如果PR没有转PO,则PR没有合并,就删除,有合并,就减少合并后的PR的数量。
+                var prlist = _mysql_srm_pr_main.GetListAsync(s => monolist.Contains(s.pr_mono)).Result;
+                List<srm_pr_main> alllist = new List<srm_pr_main>();
+                List<srm_pr_main> updatelist = new List<srm_pr_main>();
+                List<srm_pr_main> dellist = new List<srm_pr_main>();
+                RecursionGetDbPr2(prlist, alllist);
+                foreach (var pr in prlist)
+                {
+                    //找到没有关闭的PR,如果关联上的PR都是已关闭,则说明已经转了PO。
+                    var getPr = RerunPr(pr, alllist);
+                    if (getPr != null)
+                    {
+                        getPr.pr_aqty = getPr.pr_aqty - pr.pr_aqty;
+                        if (getPr.pr_aqty <= 0)
+                        {
+                            //删除这个pr,没有小于0则是更新
+                            dellist.Add(getPr);
+                        }
+                        else {
+                            updatelist.Add(getPr);
+                        }
+                    }
+                }
                 List<srm_po_occupy> occupy = await _mysql_srm_po_occupy.GetListAsync(s => monolist.Contains(s.morder_mo));
                 _businessDbContext.BulkDelete(occupy);
+                if (updatelist.Any())
+                {
+                    _businessDbContext.BulkUpdate(updatelist);
+                }
+                if (dellist.Any())
+                {
+                    _businessDbContext.BulkDelete(dellist);
+                }
 
-                //清理锁定期外的排程数据
-                _periodSequenceDet.Delete(s => monolist.Contains(s.WorkOrds));
-                _scheduleResultOpMaster.Delete(s => monolist.Contains(s.WorkOrd));
+                //清理锁定期外的排程数据.
+                var periodList = _periodSequenceDet.Select(s => monolist.Contains(s.WorkOrds));
+                if (periodList.Any())
+                {
+                    _periodSequenceDet.Delete(s => monolist.Contains(s.WorkOrds));
+                }
+                var schedulList = _scheduleResultOpMaster.Select(s => monolist.Contains(s.WorkOrd));
+                if (schedulList.Any())
+                {
+                    _scheduleResultOpMaster.Delete(s => monolist.Contains(s.WorkOrd));
+                }
                 //只走计划工单
-                await OrderKittingCheck(Mes_Morders, true);
+                var rtn = await OrderKittingCheck(Mes_Morders, true);
             }
             else {
                 return JsonConvert.SerializeObject("未查找到对应的计划工单,请联系管理员。");
@@ -2199,6 +2238,42 @@ namespace Business.ResourceExamineManagement
             return "ok";
         }
 
+        /// <summary>
+        /// 递归寻找PR,找到合并后的PR
+        /// </summary>
+        public void RecursionGetDbPr2(List<srm_pr_main> list, List<srm_pr_main> referlist)
+        {
+            List<srm_pr_main> prlist = _mysql_srm_pr_main.GetListAsync(s => list.Select(c => c.refer_pr_billno).Contains(s.pr_billno)).Result;
+            if (prlist.Any())
+            {
+                referlist.AddRange(prlist);
+                RecursionGetDbPr2(prlist, referlist);
+            }
+        }
+
+        //找到没有关闭的PR,做数量的减少
+        public srm_pr_main RerunPr(srm_pr_main pr, List<srm_pr_main> referlist)
+        {
+            //如果当前PR已经关闭,则检查合并数据
+            if (pr.state == 0)
+            {
+                //已关闭,并且没有关联数据,则代表转PO了。
+                var refPr = referlist.Find(s => s.pr_billno == pr.refer_pr_billno);
+                //如果有关联,继续往下查
+                if (refPr != null)
+                {
+                    return RerunPr(refPr, referlist);
+                }
+                else {
+                    return null;
+                }
+            }
+            else {
+                return pr;
+            }
+        }
+
+
         /// <summary>
         /// 按未来N天工单齐套检查
         /// </summary>
@@ -2701,25 +2776,24 @@ namespace Business.ResourceExamineManagement
                     morder.moentry_sys_stime = wod.OrdDate;
                     morder.moentry_sys_etime = wod.DueDate;
 
-                    var exa = rtn.examines.Find(s => s.morder_no == wod.WorkOrd);
-                    exa.latest_times = morder.moentry_sys_etime.GetValueOrDefault().Date.AddDays(1);
+                    /*var exa = rtn.examines.Find(s => s.morder_no == wod.WorkOrd);
+                    exa.latest_times = morder.moentry_sys_etime.GetValueOrDefault().Date.AddDays(1);*/
                     //根据排产后得日期,反推PR。
                     var wkordPrList = prmainlist.Where(s => s.pr_mono == wod.WorkOrd).ToList();
 
-                    //反算所有的PR,根据时间减去提前期
+                    //反算所有的PR,根据时间减去提前期   //按最大预处理时间倒排
+                    var moIcitems = icitemlist.Where(s => wkordPrList.Select(c => c.icitem_id).Contains(s.Id)).ToList();
+                    var maxTime = moIcitems.Max(s => s.clean_leadtime.GetValueOrDefault());
                     wkordPrList.ForEach(pr =>
                     {
                         var ts = pr.pr_parrive_date - pr.pr_psend_date;
-                        var icitem = icitemlist.Find(s => s.mysql_id == pr.icitem_id);
-                        if (icitem != null)
+                        //var icitem = icitemlist.Find(s => s.mysql_id == pr.icitem_id);
+                        //var bce = exa.BomChildExamineList.Find(s => s.item_id == pr.icitem_id && s.num == pr.num);
+                        pr.pr_sarrive_date = morder.moentry_sys_stime.Value.AddDays((double)(0 - maxTime - 1));//到货还需要向前推 物料的预处理时间。到货日期必须提前一天到
+                        pr.pr_ssend_date = pr.pr_sarrive_date.GetValueOrDefault().AddDays(0 - ts.Value.Days);
+                        if (pr.pr_ssend_date < DateTime.Now.Date.AddDays(1))
                         {
-                            var bce = exa.BomChildExamineList.Find(s => s.item_id == pr.icitem_id && s.num == pr.num);
-                            pr.pr_sarrive_date = morder.moentry_sys_stime.Value.AddDays((double)(0 - bce.pre_time.GetValueOrDefault() - 1 - icitem.clean_leadtime.GetValueOrDefault()));//到货还需要向前推 物料的预处理时间。到货日期必须提前一天到
-                            pr.pr_ssend_date = pr.pr_sarrive_date.GetValueOrDefault().AddDays(0 - ts.Value.Days);
-                            if (pr.pr_ssend_date < DateTime.Now.Date.AddDays(1))
-                            {
-                                pr.pr_ssend_date = DateTime.Now.Date.AddDays(1);
-                            }
+                            pr.pr_ssend_date = DateTime.Now.Date.AddDays(1);
                         }
                     });
                 }
@@ -2748,141 +2822,9 @@ namespace Business.ResourceExamineManagement
                     }
                 }
                 
-                //检查结果写入数据库
-                var b_Examine_Results = ObjectMapper.Map<List<ExamineResult>, List<b_examine_result>>(rtn.examines);
-                List<b_examine_result> examineList = new List<b_examine_result>();
-                List<b_bom_child_examine> bomExamineList = new List<b_bom_child_examine>();
-                List<b_mo_occupy> mooccupyList = new List<b_mo_occupy>();
-                List<b_mo_order> moorderList = new List<b_mo_order>();
-                List<b_ooder> ooderList = new List<b_ooder>();
-                List<b_purchase> purchaseList = new List<b_purchase>();
-                List<b_purchase_occupy> purchaseoccupyList = new List<b_purchase_occupy>();
-
-                foreach (var ex in rtn.examines)
-                {
-                    var b_ex = ObjectMapper.Map<ExamineResult, b_examine_result>(ex);
-                    b_ex.GenerateNewId(help.NextId());// = help.NextId();
-                    if (_CalcBomViewAppService.mordersInsertList.Any())
-                    {
-                        var moentry = _CalcBomViewAppService.moentriesInsertList.Where(s => s.soentry_id == b_ex.sentry_id).FirstOrDefault();
-                        if (moentry != null)
-                        {
-                            var sentryMo = _CalcBomViewAppService.mordersInsertList.Where(s => s.mysql_id == moentry.moentry_moid).FirstOrDefault();
-                            if (sentryMo != null)
-                            {
-                                b_ex.morder_id = sentryMo.mysql_id;
-                                b_ex.morder_no = sentryMo.morder_no;
-                            }
-                        }
-                    }
-                    b_ex.create_time = DateTime.Now;
-                    b_ex.company_id = param.company_id;
-                    b_ex.factory_id = param.factoryId;
-                    examineList.Add(b_ex);
-                    ex.BomChildExamineList.ForEach(s =>
-                    {
-                        var bc_ex = ObjectMapper.Map<BomChildExamineDto, b_bom_child_examine>(s);
-                        bc_ex.GenerateNewId(help.NextId());
-                        bc_ex.examine_id = b_ex.Id;
-                        bc_ex.company_id = param.company_id;
-                        bc_ex.factory_id = param.factoryId;
-                        bc_ex.create_time = DateTime.Now;
-                        bomExamineList.Add(bc_ex);
-
-                        if (s.mo_occupy_list != null)
-                        {
-                            var olist = ObjectMapper.Map<List<mo_occupy>, List<b_mo_occupy>>(s.mo_occupy_list);
-                            olist.ForEach(o =>
-                            {
-                                o.bom_child_examine_id = bc_ex.Id; o.company_id = param.company_id;
-                                o.factory_id = param.factoryId;
-                            });
-                            mooccupyList.AddRange(olist);
-                        }
-                        if (s.make_list != null)
-                        {
-                            var mlist = ObjectMapper.Map<List<moorder>, List<b_mo_order>>(s.make_list);
-                            mlist.ForEach(o =>
-                            {
-                                o.bom_child_examine_id = bc_ex.Id; o.company_id = param.company_id;
-                                o.factory_id = param.factoryId;
-                            });
-                            moorderList.AddRange(mlist);
-                        }
-                        if (s.subcontracting_list != null)
-                        {
-                            var slist = ObjectMapper.Map<List<ooder>, List<b_ooder>>(s.subcontracting_list);
-                            slist.ForEach(o =>
-                            {
-                                o.bom_child_examine_id = bc_ex.Id; o.company_id = param.company_id;
-                                o.factory_id = param.factoryId;
-                            });
-                            ooderList.AddRange(slist);
-                        }
-                        if (s.purchase_list != null)
-                        {
-                            var plist = ObjectMapper.Map<List<purchase>, List<b_purchase>>(s.purchase_list);
-                            plist.ForEach(o =>
-                            {
-                                o.bom_child_examine_id = bc_ex.Id; o.company_id = param.company_id;
-                                o.factory_id = param.factoryId;
-                            });
-                            purchaseList.AddRange(plist);
-                        }
-                        if (s.purchase_occupy_list != null)
-                        {
-                            var purlist = ObjectMapper.Map<List<purchase_occupy>, List<b_purchase_occupy>>(s.purchase_occupy_list);
-                            purlist.ForEach(o =>
-                            {
-                                o.bom_child_examine_id = bc_ex.Id; o.company_id = param.company_id;
-                                o.factory_id = param.factoryId;
-                            });
-                            purchaseoccupyList.AddRange(purlist);
-                        }
-                    });
-                }
-                using (var unitOfWork = _unitOfWorkManager.Begin(false, true))
-                {
-                    try
-                    {
-                        if (examineList.Any())
-                        {
-                            _businessBangDbContext.BulkInsert(examineList);
-                        }
-                        if (bomExamineList.Any())
-                        {
-                            _businessBangDbContext.BulkInsert(bomExamineList.OrderBy(s => s.num_order).ToList());
-                        }
-                        if (mooccupyList.Any())
-                        {
-                            _businessBangDbContext.BulkInsert(mooccupyList);
-                        }
-                        if (moorderList.Any())
-                        {
-                            _businessBangDbContext.BulkInsert(moorderList);
-                        }
-                        if (ooderList.Any())
-                        {
-                            _businessBangDbContext.BulkInsert(ooderList);
-                        }
-                        if (purchaseList.Any())
-                        {
-                            _businessBangDbContext.BulkInsert(purchaseList);
-                        }
-                        if (purchaseoccupyList.Any())
-                        {
-                            _businessBangDbContext.BulkInsert(purchaseoccupyList);
-                        }
-                        await unitOfWork.CompleteAsync();
-                    }
-                    catch (Exception e)
-                    {
-                        new NLogHelper("ResourceExamineAppService").WriteLog("OrderKittingCheck", "工单检查资源检查计算结果数据更新失败:" + e.Message, _currentTenant.Id.ToString());
-                        unitOfWork.Dispose();
-                    }
-                }
             }
-
+            //检查结果写入数据库
+            await ExamineResultInsertDBAsync(examines);
             //清空快照数据
             await ClearSnapShot(bangid);
             return rtn;
@@ -3082,29 +3024,47 @@ namespace Business.ResourceExamineManagement
         {
             if (dbPeriodSequences.Any())
             {
+                List<string> AllLines = dbPeriodSequences.Where(a => workOrdMasters.Select(b=>b.WorkOrd).Contains(a.WorkOrds)).Select(a => a.Line).Distinct().ToList();
+                List<LineMaster> AllLineMasters = _lineMaster.Select(p => AllLines.Contains(p.Line) && p.Domain == workOrdMasters[0].Domain && p.IsActive);
+
+
                 //按照工单领料,一个工单一个领料单,之前是按照排产日期和产线分别领料
                 foreach (var workord in workOrdMasters)
                 {
                     Dictionary<string, decimal> dictItemQty = new Dictionary<string, decimal>();
                     List<string> lines = dbPeriodSequences.Where(a => a.WorkOrds == workord.WorkOrd).Select(a => a.Line).Distinct().ToList();
-                    List<LineMaster> lineMasters = _lineMaster.Select(p => lines.Contains(p.Line) && p.Domain == "1001" && p.IsActive);
+                    List<LineMaster> lineMasters = AllLineMasters.Where(p => lines.Contains(p.Line) && p.Domain == workord.Domain && p.IsActive).ToList();
                     List<ProductStructureMaster> itemList = GetProductStructure(dbPeriodSequences.First(a => a.WorkOrds == workord.WorkOrd).ItemNum);
                     var childrenList = itemList.Select(a => a.ComponentItem).Distinct().ToList();
-                    List<ItemMaster> itemLocList = _itemMaster.Select(p => childrenList.Contains(p.ItemNum) && p.Domain == "1001" && p.IsActive).Distinct().ToList();
-                    List<ItemPackMaster> itemPackList = _itemPackMaster.Select(p => childrenList.Contains(p.ItemNum) && p.Domain == "1001" && p.IsActive).Distinct().ToList();
+                    List<ItemMaster> itemLocList = _itemMaster.Select(p => childrenList.Contains(p.ItemNum) && p.Domain == workord.Domain && p.IsActive).Distinct().ToList();
+                    var dopIcitems = _ic_item.GetListAsync(s => itemLocList.Select(c => c.ItemNum).Contains(s.number)).Result;
+                    //获取预处理提前期最大值
+                    decimal cleanTime = 0;
+                    if (dopIcitems.Any())
+                    {
+                        cleanTime = dopIcitems.Max(s => s.clean_leadtime.GetValueOrDefault());
+                    }
+                    List<ItemPackMaster> itemPackList = _itemPackMaster.Select(p => childrenList.Contains(p.ItemNum) && p.Domain == workord.Domain && p.IsActive).Distinct().ToList();
                     var Nbr = GetMaxSerialNumber(417416915624005);
                     //根据某一产线汇总即该工单的总数
                     decimal QtyOrdSum = dbPeriodSequences.Where(a => a.WorkOrds == workord.WorkOrd && a.Line == lines[0]).Sum(a => a.OrdQty.GetValueOrDefault());
                     string LocationTo= lineMasters.FirstOrDefault()?.Location;
+                    DateTime eff = workord.OrdDate.GetValueOrDefault().Date.AddDays(-1);
+                    DateTime start = eff.AddDays((double)(0 - cleanTime - 1));
+                    if (start <= DateTime.Now.Date)
+                    {
+                        start = DateTime.Now.Date;
+                    }
                     nbrMasterList.Add(new NbrMaster
                     {
                         Domain = "1001",
                         Type = "SM",
                         Nbr = Nbr,
                         Remark = "下达自动领料",
-                        Date = dbPeriodSequences.Where(a => a.WorkOrds == workord.WorkOrd).Min(a => a.PlanDate),
+                        //Date = dbPeriodSequences.Where(a => a.WorkOrds == workord.WorkOrd).Min(a => a.PlanDate),
                         //ProdLine = item.Line,
-                        EffDate = workord.OrdDate.GetValueOrDefault().Date.AddDays(-1),
+                        EffDate = eff,
+                        Date = start,
                         Status = "",
                         WorkOrd = workord.WorkOrd,
                         QtyOrd = QtyOrdSum,

+ 1 - 1
MicroServices/Business/Business.Domain/StructuredDB/SRM/srm_pr_main.cs

@@ -179,7 +179,7 @@ namespace Business.Domain
         [Comment("单位")]
         public string pr_unit { get; set; }
         /// <summary>
-        /// 状态 0,关闭;1,新增;2,提交;3,未通过;4,评审通过
+        /// 状态 0,关闭;1,新增;    暂时不考虑这种状态,影响PR重新生成,如增加需调整PR代码。2,提交;3,未通过;4,评审通过
         /// </summary>
         [Comment("状态")]
         public int? state { get; set; }

+ 2 - 0
MicroServices/Business/Business.EntityFrameworkCore/Repository/SqlRepositories/ISqlRepository.cs

@@ -19,6 +19,8 @@ namespace Business.EntityFrameworkCore.SqlRepositories
 
         int Delete(Expression<Func<T, bool>> whereLambda);
 
+        int Delete(List<T> entitylist);
+
         bool IsExist(Expression<Func<T, bool>> whereLambda);
 
         List<T> Select();

+ 6 - 0
MicroServices/Business/Business.EntityFrameworkCore/Repository/SqlRepositories/SqlRepository.cs

@@ -59,6 +59,12 @@ namespace Business.EntityFrameworkCore.SqlRepositories
             return  _dbContext.SaveChanges();
         }
 
+        public int Delete(List<T> entitylist)
+        {
+            _dbContext.Set<T>().RemoveRange(entitylist);
+            return _dbContext.SaveChanges();
+        }
+
         public  bool IsExist(Expression<Func<T, bool>> whereLambda)
         {
             return  _dbContext.Set<T>().Any(whereLambda);