Переглянути джерело

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

heteng 2 роки тому
батько
коміт
d6ebb5f5b3

+ 36 - 11
MicroServices/Business/Business.Application/ReplenishmentManagement/ReplenishmentAppService.cs

@@ -6641,28 +6641,54 @@ namespace Business.Replenishment
             _businessDbContext.BulkUpdate(needupdList);
         }
 
-        public async Task<string> DeleteWeekPlan(long weekplanid,string productorder, long factory_id)
+        public async Task<string> DeleteWeekPlan(long weekplanid, string productorder, long factory_id)
         {
             //2023/12/16 所有工单类型都能删除,中间件由业务人员自行处理
-            var weekplan =_replenishmentWeekPlan.GetListAsync(a =>a.Id==weekplanid && a.ProductionOrder == productorder && a.factory_id == factory_id &&a.IsReplenishmentModel=="N").Result;
-            var workords=_workOrdMaster.Select(a => a.RecID == weekplanid && a.WorkOrd == productorder && a.Domain == factory_id.ToString());
-            if (weekplan.Count==0 && workords.Count==0)
+            var weekplan = _replenishmentWeekPlan.GetListAsync(a => a.Id == weekplanid && a.ProductionOrder == productorder && a.factory_id == factory_id && a.IsReplenishmentModel == "N").Result;
+            var workords = _workOrdMaster.Select(a => a.RecID == weekplanid && a.WorkOrd == productorder && a.Domain == factory_id.ToString());
+            var morders =_mysql_mes_morder.GetListAsync(a => a.Id == weekplanid && a.morder_no == productorder && a.factory_id == factory_id).Result;
+            if (weekplan.Count == 0 && workords.Count == 0 && morders.Count==0)
                 return "Fail|周计划或工单不存在";
-           
-            if(string.IsNullOrEmpty(productorder))
+
+            if (string.IsNullOrEmpty(productorder))
             {
                 //未同步生产周计划工单,只需要删除导入的周计划
-                await _replenishmentWeekPlan.HardDeleteAsync(a => a.Id == weekplanid && a.ProductionOrder == productorder && a.factory_id == factory_id && a.IsReplenishmentModel=="N");
+                await _replenishmentWeekPlan.HardDeleteAsync(a => a.Id == weekplanid && a.ProductionOrder == productorder && a.factory_id == factory_id && a.IsReplenishmentModel == "N");
                 return "OK|删除成功";
-            }else
+            }
+            else
             {
                 //判断是否下达
                 var workord = _workOrdMaster.Select(a => a.WorkOrd == productorder && a.Domain == factory_id.ToString());
                 if (workord.Count > 0)
                 {
                     //未下达的工单才可以删除,也就是初始或者已发布的工单
-                    if (string.IsNullOrEmpty(workord[0].Status) || workord[0].Status.ToLower()== "p")
+                    if (string.IsNullOrEmpty(workord[0].Status) || workord[0].Status.ToLower() == "p")
                     {
+                        if (morders.Any())
+                        {
+                            //如果是订单类型执行的删除,则将订单表更新成删除。
+                            var melist = _mysql_mes_moentry.GetListAsync(x => x.moentry_moid == weekplanid).Result;
+                            var entry_id = melist.Select(x => x.soentry_id.GetValueOrDefault()).ToList();
+                            List<crm_seorderentry> selist = _mysql_crm_seorderentry.GetListAsync(x => entry_id.Contains(x.Id)).Result;
+                            await _mysql_crm_seorderentry.HardDeleteAsync(selist);
+                            List<crm_seorder> solist = _mysql_crm_seorder.GetListAsync(x => selist.Select(c => c.seorder_id.GetValueOrDefault()).Contains(x.Id)).Result;
+
+                            List<crm_seorderentry> allseList = _mysql_crm_seorderentry.GetListAsync(x => solist.Select(c => c.Id).Contains(x.seorder_id.GetValueOrDefault()) && !entry_id.Contains(x.Id)).Result;
+                            List<crm_seorder> delsoList = new List<crm_seorder>();
+                            foreach (var so in solist)
+                            {
+                                if (!allseList.Where(x => x.seorder_id == so.Id).Any())
+                                {
+                                    delsoList.Add(so);
+                                }
+                            }
+                            if (delsoList.Any())
+                            {
+                                await _mysql_crm_seorder.HardDeleteAsync(delsoList);
+                            }
+                        }
+
                         await _replenishmentWeekPlan.HardDeleteAsync(a => a.ProductionOrder == productorder && a.factory_id == factory_id);
                         await _mysql_mes_morder.HardDeleteAsync(a => a.morder_no == productorder && a.factory_id == factory_id);
                         await _mysql_mes_moentry.HardDeleteAsync(a => a.moentry_mono == productorder && a.factory_id == factory_id);
@@ -6674,12 +6700,11 @@ namespace Business.Replenishment
                         await _mysql_ic_item_stockoccupy.HardDeleteAsync(a => a.morder_mo == productorder && a.factory_id == factory_id);
                         await _mysql_srm_po_occupy.HardDeleteAsync(a => a.morder_mo == productorder && a.factory_id == factory_id);
                         await _mysql_mes_mooccupy.HardDeleteAsync(a => a.moo_mo == productorder && a.factory_id == factory_id);
-
                         return "OK|删除成功";
                     }
                     else
                     {
-                        return "Fail|该工单不能删除";
+                        return "Fail|该工单非下达,请走工单关闭。";
                     }
                 }
                 else

+ 5 - 5
MicroServices/Business/Business.Application/SystemJobManagement/SystemJobAppService.cs

@@ -1288,14 +1288,14 @@ namespace Business.SystemJobManagement
                 DateTime start = DateTime.Now.Date.AddDays(-1);
 
                 //销售订单取过去两天和当天的记录,已发出的数据,进行清理库存占用表记录
-                var ASNBOLdtls = _ASNBOLShipperDetail.Select(x => x.Domain == domain && x.IsActive && x.shtype == "SH" && x.Typed != "S" && x.RealQty > 0 && x.UpdateTime >= start).ToList();
+                /*var ASNBOLdtls = _ASNBOLShipperDetail.Select(x => x.Domain == domain && x.IsActive && x.shtype == "SH" && x.Typed != "S" && x.RealQty > 0 && x.UpdateTime >= start).ToList();
                 var ordnbr = ASNBOLdtls.Select(x => x.OrdNbr).ToList();
-                var alldtls = ASNBOLdtls.Where(x => ordnbr.Contains(x.OrdNbr)).ToList();
+                var alldtls = ASNBOLdtls.Where(x => ordnbr.Contains(x.OrdNbr)).ToList();*/
 
                 List<ic_item_stockoccupy> dellist = new List<ic_item_stockoccupy>();
                 List<ic_item_stockoccupy> updtelist = new List<ic_item_stockoccupy>();
 
-                var seorderentrys = _mysql_crm_seorderentry.GetListAsync(x => x.factory_id.ToString() == domain && ordnbr.Contains(x.bill_no)).Result;
+                /*var seorderentrys = _mysql_crm_seorderentry.GetListAsync(x => x.factory_id.ToString() == domain && ordnbr.Contains(x.bill_no)).Result;
                 var occupys = _ic_item_stockoccupy.GetListAsync(x => x.factory_id.ToString() == domain && seorderentrys.Select(c => c.Id).Contains(x.orderentry_id.GetValueOrDefault())).Result;
                 foreach (var se in seorderentrys)
                 {
@@ -1319,7 +1319,7 @@ namespace Business.SystemJobManagement
                             }
                         }
                     }
-                }
+                }*/
                 //工单按领料单已出库完成记录,清理掉库存占用记录
                 List<NbrMaster> nbrlist = _nbrMaster.Select(x => x.Domain == domain && x.Type.ToUpper() == "SM" && x.UpdateTime >= start).ToList();
                
@@ -1331,7 +1331,7 @@ namespace Business.SystemJobManagement
                     var dtls = nbrDtls.Where(x => x.NbrRecID == nbr.RecID).ToList();
                     foreach (var dtl in dtls)
                     {
-                        var occ = occupy.Find(x => x.icitem_number == dtl.ItemNum);
+                        var occ = occupy.Find(x => x.icitem_number == dtl.ItemNum && x.morder_mo == nbr.WorkOrd);
                         if (occ != null)
                         {
                             decimal differ = dtl.QtyOrd - dtl.QtyRec;