浏览代码

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

Murphy 2 年之前
父节点
当前提交
dcf2c5b44e
共有 15 个文件被更改,包括 298 次插入111 次删除
  1. 29 0
      MicroServices/Business/Business.Application.Contracts/Dto/UpdateDto.cs
  2. 15 0
      MicroServices/Business/Business.Application.Contracts/ResourceExamineManagement/Dto/GetNbr.cs
  3. 1 0
      MicroServices/Business/Business.Application.Contracts/ResourceExamineManagement/Dto/POGroupDto.cs
  4. 7 0
      MicroServices/Business/Business.Application.Contracts/ResourceExamineManagement/IResourceExamineAppService.cs
  5. 34 43
      MicroServices/Business/Business.Application/ResourceExamineManagement/CalcBomViewAppService.cs
  6. 1 1
      MicroServices/Business/Business.Application/ResourceExamineManagement/PretreatmentAppService.cs
  7. 7 7
      MicroServices/Business/Business.Application/ResourceExamineManagement/ProductionScheduleAppService.cs
  8. 44 7
      MicroServices/Business/Business.Application/ResourceExamineManagement/PurchaseOrderAppService.cs
  9. 116 50
      MicroServices/Business/Business.Application/ResourceExamineManagement/ResourceExamineAppService.cs
  10. 26 1
      MicroServices/Business/Business.Application/ResourceExamineManagement/SerialNumberAppService.cs
  11. 1 1
      MicroServices/Business/Business.Domain/MongoDB/SRM/mo_srm_pr_main.cs
  12. 1 1
      MicroServices/Business/Business.Domain/StructuredDB/Production/WorkOrdDetail.cs
  13. 1 0
      MicroServices/Business/Business.EntityFrameworkCore/Business.EntityFrameworkCore.csproj
  14. 3 0
      MicroServices/Business/Business.EntityFrameworkCore/EntityFrameworkCore/DOP/BusinessDbContext.cs
  15. 12 0
      MicroServices/Business/Business.HttpApi/Controllers/ResourceExamineController.cs

+ 29 - 0
MicroServices/Business/Business.Application.Contracts/Dto/UpdateDto.cs

@@ -0,0 +1,29 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Business.Dto
+{
+    /// <summary>
+    /// 日计划调整日期入参Dto
+    /// </summary>
+    public class UpdateDto
+    {
+        // <summary>
+        /// domain
+        /// </summary>
+        public string domain { get; set; }
+
+        // <summary>
+        /// 工单编号
+        /// </summary>
+        public string workord { get; set; }
+
+        // <summary>
+        /// 调整日期
+        /// </summary>
+        public DateTime planDate { get; set; }
+    }
+}

+ 15 - 0
MicroServices/Business/Business.Application.Contracts/ResourceExamineManagement/Dto/GetNbr.cs

@@ -0,0 +1,15 @@
+using Microsoft.EntityFrameworkCore;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Business.ResourceExamineManagement.Dto
+{
+    [Keyless]
+    public class GetNbr
+    {
+        public string NbrResult { get; set; }
+    }
+}

+ 1 - 0
MicroServices/Business/Business.Application.Contracts/ResourceExamineManagement/Dto/POGroupDto.cs

@@ -1,4 +1,5 @@
 using Business.Domain;
+using Microsoft.EntityFrameworkCore;
 using System;
 using System.Collections.Generic;
 using System.Linq;

+ 7 - 0
MicroServices/Business/Business.Application.Contracts/ResourceExamineManagement/IResourceExamineAppService.cs

@@ -21,6 +21,13 @@ namespace Business.ResourceExamineManagement
         /// <returns></returns>
         Task<string> ProductionSchedule(string domain);
 
+        /// <summary>
+        /// 日计划日期调整
+        /// </summary>
+        /// <param name="input">日计划调整入参</param>
+        /// <returns></returns>
+        Task<string> UpdatePlanDate(UpdateDto input);
+
         /// <summary>
         /// 下达领料
         /// </summary>

+ 34 - 43
MicroServices/Business/Business.Application/ResourceExamineManagement/CalcBomViewAppService.cs

@@ -278,6 +278,11 @@ namespace Business.ResourceExamineManagement
                             Domain = param.factoryId.ToString()
                         };
                         int make_time = _productExamineAppService.ProductTime(prodExamine);
+                        if (make_time < level1Dto.PurLT)
+                        {
+                            //如果生产时长小于供应提前期,则按供应提前期算
+                            make_time = level1Dto.PurLT;
+                        }
                         //根据成品属性来判断是自制还是委外还是外购,需要考虑这种场景
                         if (level1Dto.erp_cls == 1 && param.checkflag)
                         {
@@ -307,7 +312,7 @@ namespace Business.ResourceExamineManagement
                             CalcInTransit(sentrys, level1Dto, bangid, plan_date.GetValueOrDefault());
                             if (level1Dto.lack_qty > 0)
                             {
-                                decimal itemPRQty = srm_Pr_Mains.Where(x => x.icitem_id.Value == level1Dto.item_id && x.pr_parrive_date <= plan_date).Sum(y => y.pr_aqty.GetValueOrDefault());
+                                decimal itemPRQty = srm_Pr_Mains.Where(x => x.icitem_id.Value == level1Dto.item_id && x.pr_sarrive_date <= plan_date).Sum(y => y.pr_aqty.GetValueOrDefault());
                                 if (itemPRQty < level1Dto.lack_qty)
                                 {
                                     level1Dto.lack_qty = level1Dto.lack_qty - itemPRQty;
@@ -331,21 +336,10 @@ namespace Business.ResourceExamineManagement
                                 //先计算末级数据的齐套时间。
                                 if (childList.Count > 0)
                                 {
-                                    MatterTileDevelop(level1Dto, childList, returnlist, sklist, bangid, plan_date, sentrys, icitemlist);
+                                    MatterTileDevelop(level1Dto, childList, returnlist, sklist, bangid, mesorder.ooentry_stime, sentrys, icitemlist);
                                     level1Dto.kitting_time = childList.Max(s => s.kitting_time).GetValueOrDefault().AddDays(srmprDto.totalLeadTime.GetValueOrDefault());//加上物料的采购提前期
                                 }
 
-                                //2.生成采购申请
-                                //采购申请
-                                decimal itemPRQty = srm_Pr_Mains.Where(x => x.icitem_id.Value == level1Dto.item_id && x.pr_parrive_date <= plan_date).Sum(y => y.pr_aqty.GetValueOrDefault());
-                                if (itemPRQty < level1Dto.lack_qty)
-                                {
-                                    level1Dto.lack_qty = level1Dto.lack_qty - itemPRQty;
-                                    //采购申请
-                                    PackageSRMPR(level1Dto, bangid, sentrys, plan_date);
-                                }
-                                //PackageSRMPR(level1Dto, bangid, sentrys);
-
                                 level1Dto.subcontracting_qty = level1Dto.lack_qty;
                                 level1Dto.subcontracting_list = new List<ooder>();
                                 ooder oo = new ooder();
@@ -679,6 +673,11 @@ namespace Business.ResourceExamineManagement
                     newStockOccList.Add(itemStockoccupyDto);
                     sklist.Add(itemStockoccupyDto);
                 }
+                //增加前处理时间
+                if (item.clean_leadtime.GetValueOrDefault() != 0)
+                {
+                    plan_date = plan_date.GetValueOrDefault().AddDays(-(int)Math.Floor(item.clean_leadtime.GetValueOrDefault()));
+                }
                 item.use_qty = item.sqty;
                 if (item.erp_cls == 1)
                 {
@@ -745,6 +744,11 @@ namespace Business.ResourceExamineManagement
                             Domain = param.factoryId.ToString()
                         };
                         int make = _productExamineAppService.ProductTime(prodExamine);
+                        if (make < item.PurLT)
+                        {
+                            //如果生产时长小于供应提前期,则按供应提前期算
+                            make = item.PurLT;
+                        }
                         item.make_qty = item.lack_qty;
                         if (mes_MorderDto != null)
                         {
@@ -791,30 +795,6 @@ namespace Business.ResourceExamineManagement
                                 item.kitting_time = mes_Morders.mat_end_date;
                             }
                         }
-                        
-                        /*//走自制
-                        ProdExamineParamDto prodExamine = new ProdExamineParamDto()
-                        {
-                            bom_number = item.bom_number,
-                            version = item.version,
-                            packages = (int)item.lack_qty
-                        };
-                        _productExamineAppService.process = process;
-                        _productExamineAppService.techs = techs;
-                        _productExamineAppService.tech_Processes = tech_Processes;
-                        _productExamineAppService.tech_Proc_Workshops = tech_Proc_Workshops;
-
-                        *//*if (param.checkflag)
-                        {
-                            //todo:增加生成子工单后,这里需要加上生成的子工单的明细。
-                        }*//*
-                        item.make_list = new List<moorder>();
-                        var minute = _productExamineAppService.ProductiveExamine(prodExamine);
-                        //系统建议完工日期为 开工日期+产能检查时间=完工日期
-                        var Day = minute / (60 * 10); //返回的分钟除以十个小时得出工作天数;
-                        var ktime = item.kitting_time.Value.AddDays((double)Day);
-                        //item.kitting_time = ktime > mooccupylist[0].moo_etime ? ktime : mooccupylist[0].moo_etime;
-                        item.kitting_time = ktime;*/
                     }
                 }
                 else if (item.erp_cls == 3)
@@ -1211,13 +1191,19 @@ namespace Business.ResourceExamineManagement
                         sct.kitting_time = DateTime.Now;
                         sct.use_qty += sqty;
 
+                        DateTime dateTime = plan_date.GetValueOrDefault();
+                        //增加前处理时间
+                        if (item.clean_leadtime.GetValueOrDefault() != 0)
+                        {
+                            dateTime = dateTime.AddDays(-(int)Math.Floor(sct.clean_leadtime.GetValueOrDefault()));
+                        }
                         if (sct.erp_cls == 1)
                         {
                             var ic_item = icitemlist.Find(s => s.mysql_id == sct.item_id);
                             List<mo_mes_mooccupy> mooccupylist = new List<mo_mes_mooccupy>();
                             if (param.checkflag)
                             {
-                                mooccupylist = _morderAppService.CheckMorder(sct.bom_number, sct.lack_qty, plan_date.GetValueOrDefault(), sentrys, ic_item, bangid);
+                                mooccupylist = _morderAppService.CheckMorder(sct.bom_number, sct.lack_qty, dateTime, sentrys, ic_item, bangid);
                             }
                             decimal moo_qty = mooccupylist.Sum(s => s.moo_qty.GetValueOrDefault());
                             sct.mo_qty = moo_qty;
@@ -1270,11 +1256,16 @@ namespace Business.ResourceExamineManagement
                                 ProdExamineParamDto prodExamine = new ProdExamineParamDto()
                                 {
                                     ItemNum = sct.item_number,
-                                    PlanStart = plan_date.GetValueOrDefault(),
+                                    PlanStart = dateTime,
                                     QtyOrd = sct.lack_qty,
                                     Domain = param.factoryId.ToString()
                                 };
                                 int make = _productExamineAppService.ProductTime(prodExamine);
+                                if (make < sct.PurLT)
+                                {
+                                    //如果生产时长小于供应提前期,则按供应提前期算
+                                    make = sct.PurLT;
+                                }
                                 sct.make_qty = sct.lack_qty;
                                 if (mes_MorderDto != null)
                                 {
@@ -1284,7 +1275,7 @@ namespace Business.ResourceExamineManagement
                                     {
                                         //子工单生成的检查明细,还是挂接到主工单上。
                                         //mes_morder = ObjectMapper.Map<mo_mes_morder, mes_morder>(mes_Morders);
-                                        mes_Morders.moentry_sys_etime = plan_date.GetValueOrDefault().AddDays(-1);
+                                        mes_Morders.moentry_sys_etime = dateTime.AddDays(-1);
                                         mes_Morders.moentry_sys_stime = mes_Morders.moentry_sys_etime.GetValueOrDefault().AddDays(-(make - 1));
                                         sct.make_list = new List<moorder>();
                                         mes_MorderDto.mes_Morders.ForEach(me =>
@@ -1435,7 +1426,7 @@ namespace Business.ResourceExamineManagement
                 //判断当前时间与交期还剩余多少天
                 var timesp = plan_date.GetValueOrDefault() - DateTime.Now.Date;
                 //交期-生产时长-物料前处理周期
-                day = Math.Floor(timesp.Days - returnlist.clean_leadtime.GetValueOrDefault());
+                day = timesp.Days;
                 if (day > 0)
                 {
                     supplist = supplist.Where(s => s.lead_time.GetValueOrDefault() < day).ToList();
@@ -1529,8 +1520,7 @@ namespace Business.ResourceExamineManagement
             if (plan_date != null && IsInverted)
             {
                 //-1为提前一天准备
-                int d = ((int)Math.Floor(-1 - returnlist.clean_leadtime.GetValueOrDefault()));
-                srm_Pr.pr_sarrive_date = plan_date.GetValueOrDefault().AddDays(d);
+                srm_Pr.pr_sarrive_date = plan_date.GetValueOrDefault().AddDays(-1);
                 srm_Pr.pr_ssend_date = srm_Pr.pr_sarrive_date.Value.AddDays(-(int)Math.Floor(supplier.lead_time.GetValueOrDefault()));//系统建议下单日期
                 if (srm_Pr.pr_ssend_date < DateTime.Now.AddDays(1))
                 {
@@ -1655,6 +1645,7 @@ namespace Business.ResourceExamineManagement
         {
             _purchaseOrderAppService.mo_Srm_Po_Lists = srm_Po_Lists; //采购明细
             _purchaseOrderAppService.srm_Po_Occupies = srm_Po_Occupies; //采购明细
+            _purchaseOrderAppService.srm_Pr_Mains = srm_Pr_Mains;//在途PR
 
             var occupylist = _purchaseOrderAppService.CheckPurchaseOrder(sentrys, item.item_id, item.lack_qty, plan_date, ic_item_List, bangid);
             if (occupylist.Any())

+ 1 - 1
MicroServices/Business/Business.Application/ResourceExamineManagement/PretreatmentAppService.cs

@@ -90,7 +90,7 @@ namespace Business.ResourceExamineManagement
             dto.erp_cls = item.erp_cls.GetValueOrDefault();
             dto.erp_cls_name = item.erp_cls_name;
             dto.type = type;
-
+            dto.PurLT = item.PurLT;
             //var bdto = ObjectMapper.Map<ic_bom,BomChildExamineDto>(bom);
             returnlist.Add(dto);
             var childlist = bomchildlist.Where(a => a.bom_id == bom.mysql_id).OrderBy(s=>s.child_num).ToList();

+ 7 - 7
MicroServices/Business/Business.Application/ResourceExamineManagement/ProductionScheduleAppService.cs

@@ -206,7 +206,10 @@ namespace Business.ResourceExamineManagement
             DateTime startDate = DateTime.Now.Date.AddDays(1);
             //尚未开始生产的工单+正在生产的工单
             var workOrds = _workOrdMaster.Select(p => p.IsActive && p.Domain == domain && ((p.OrdDate < endDate && p.OrdDate >= startDate && (string.IsNullOrEmpty(p.Typed) || (!string.IsNullOrEmpty(p.Typed) && p.BusinessID >0 ))) || p.Status.ToLower() == "w")).ToList();
-            await DoProductSchedule(workOrds, domain, 1);
+            if (workOrds.Any())
+            {
+                await DoProductSchedule(workOrds, domain, 1);
+            }
         }
 
         /// <summary>
@@ -216,14 +219,10 @@ namespace Business.ResourceExamineManagement
         /// <param name="factoryid">工单的工厂id</param>
         /// <param name="type">排产类型:1-自动排产;2-手动排产</param>
         /// <returns></returns>
-        public async Task DoProductSchedule(List<WorkOrdMaster> workOrds, string factoryid,int type)
+        public async Task<string> DoProductSchedule(List<WorkOrdMaster> workOrds, string factoryid,int type)
         {
             //记录工厂id
             domain = factoryid;
-            if (workOrds.Count == 0)//没有工单需要排产
-            {
-                return;
-            }
             //工单排产的最早日期
             DateTime earlist = DateTime.Now.Date.AddDays(1);
             //特殊工单指定时间开工,不需要计算产能,只需要计算时长即可
@@ -277,7 +276,7 @@ namespace Business.ResourceExamineManagement
                         scope.Dispose();
                     }
                 }
-                return;
+                return "NO|请查看排产异常日志!";
             }
             
             //3、排产
@@ -380,6 +379,7 @@ namespace Business.ResourceExamineManagement
 
             //领料单重新处理
             AdjustNbrDate(workOrds);
+            return "OK";
         }
 
         /// <summary>

+ 44 - 7
MicroServices/Business/Business.Application/ResourceExamineManagement/PurchaseOrderAppService.cs

@@ -48,6 +48,11 @@ namespace Business.ResourceExamineManagement
         /// </summary>
         public List<mo_srm_po_occupy> srm_Po_Occupies = new List<mo_srm_po_occupy>();
 
+        /// <summary>
+        /// 在途PR
+        /// </summary>
+        public List<mo_srm_pr_main> srm_Pr_Mains = new List<mo_srm_pr_main>();
+
         #endregion
         #region 构造函数
         /// <summary>
@@ -95,7 +100,7 @@ namespace Business.ResourceExamineManagement
                 var poOccupy = poOccupys.Where(x => x.polist_id == item.Id).ToList();
                 decimal? Qtys = poOccupy.Count > 0 ? poOccupy.Sum(x => x.qty.GetValueOrDefault()) : 0.00m;
                 //剩余可用数量
-                var PlanQty = item.plan_qty.GetValueOrDefault() - item.rqty.GetValueOrDefault() - item.esqty.GetValueOrDefault() - Qtys;
+                var PlanQty = item.qty.GetValueOrDefault() - item.rqty.GetValueOrDefault() - item.esqty.GetValueOrDefault() - Qtys;
                 if (PlanQty > 0)
                 {
                     //可占用数量-需求数量小于0时 占用全部可占用数量
@@ -108,7 +113,7 @@ namespace Business.ResourceExamineManagement
                         //可占用数量满足 需求数量时直接占用需求数量
                         QuantityNumber = Quantity;
                     }
-                    var mes_Mooccupy = GetMooccupies(seorderentry, item, QuantityNumber, bang_id);
+                    var mes_Mooccupy = GetMooccupies(seorderentry, item.mysql_id, item.create_time, item.rarrdate, QuantityNumber, bang_id);
                     occupyList.Add(mes_Mooccupy);
                     //当剩余需要数量大于0则继续寻找可占用工单,已满足需要数量停止循环查找
                     if (Quantity - PlanQty <= 0)
@@ -118,6 +123,39 @@ namespace Business.ResourceExamineManagement
                     Quantity = Quantity - PlanQty.GetValueOrDefault();
                 }
             }
+            //代表PO还未占用完
+            if (Quantity > 0)
+            {
+                var prlist  = srm_Pr_Mains.Where(x => x.icitem_id.Value == icitem_id && x.pr_sarrive_date <= DeliverDate).ToList();
+                foreach (var pr in prlist)
+                {
+                    decimal prOccupy = srm_Po_Occupies.Where(x => x.polist_id == pr.mysql_id).Sum(c => c.qty.GetValueOrDefault());
+                    //剩余可用数量
+                    var prQty = pr.pr_aqty - prOccupy;
+                    if (prQty > 0)
+                    {
+                        //可占用数量-需求数量小于0时 占用全部可占用数量
+                        if (prQty - Quantity <= 0)
+                        {
+                            QuantityNumber = prQty.GetValueOrDefault();
+                        }
+                        else
+                        {
+                            //可占用数量满足 需求数量时直接占用需求数量
+                            QuantityNumber = Quantity;
+                        }
+                        var mes_Mooccupy = GetMooccupies(seorderentry, pr.mysql_id,pr.create_time,pr.pr_sarrive_date, QuantityNumber, bang_id);
+                        occupyList.Add(mes_Mooccupy);
+                        //当剩余需要数量大于0则继续寻找可占用,已满足需要数量停止循环查找
+                        if (Quantity - prQty <= 0)
+                        {
+                            break;
+                        }
+                        Quantity = Quantity - prQty.GetValueOrDefault();
+                    }
+
+                }
+            }
             return occupyList.OrderByDescending(s => s.etime).ToList();
         }
         /// <summary>
@@ -128,15 +166,14 @@ namespace Business.ResourceExamineManagement
         /// <param name="item">工单表</param>
         /// <param name="mes_mooccupy">占用工单表</param>
         /// <returns></returns>
-        public mo_srm_po_occupy GetMooccupies(crm_seorderentry seorderentry, mo_srm_po_list srm_po_list, decimal? number, long bang_id)
+        public mo_srm_po_occupy GetMooccupies(crm_seorderentry seorderentry, long id,DateTime? stime, DateTime? etime, decimal? number, long bang_id)
         {
             //生成mo_srm_po_occupy采购占用表数据。 
             mo_srm_po_occupy srm_Po_Occupy = new mo_srm_po_occupy();
             srm_Po_Occupy.GenerateNewId(snowFlake.NextId());
             srm_Po_Occupy.mysql_id = snowFlake.NextId();
             srm_Po_Occupy.bang_id = bang_id;
-            srm_Po_Occupy.polist_id = srm_po_list.Id;
-            srm_Po_Occupy.polist_row = srm_po_list.polist_row;
+            srm_Po_Occupy.polist_id = id;
             if (seorderentry != null)
             {
                 srm_Po_Occupy.eid = seorderentry.Id;
@@ -147,8 +184,8 @@ namespace Business.ResourceExamineManagement
             
             srm_Po_Occupy.qty = number;
             srm_Po_Occupy.type = MorderEnum.Zyjc_Type;//TODO:类型未知
-            srm_Po_Occupy.stime = srm_po_list.create_time;
-            srm_Po_Occupy.etime = srm_po_list.rarrdate;
+            srm_Po_Occupy.stime = stime;
+            srm_Po_Occupy.etime = etime;
             srm_Po_Occupy.state = 1;
             srm_Po_Occupy.company_id = param.company_id;//取销售子表企业ID
             srm_Po_Occupy.factory_id = param.factoryId;

+ 116 - 50
MicroServices/Business/Business.Application/ResourceExamineManagement/ResourceExamineAppService.cs

@@ -296,6 +296,8 @@ namespace Business.ResourceExamineManagement
         /// </summary>
         private readonly MorderAppService _morderAppService;
 
+        private readonly SerialNumberAppService _serialNumberAppService;
+
         /// <summary>
         /// 计算BOM平铺物料情况
         /// </summary>
@@ -468,7 +470,8 @@ namespace Business.ResourceExamineManagement
             ISqlRepository<SAPInv> SAPInv,
             ISqlRepository<MonthlyShipmentPlan> monthlyShipmentPlan,
             IRepository<srm_purchase, long> srmPurchase,
-            IUnitOfWorkManager unitOfWorkManager
+            IUnitOfWorkManager unitOfWorkManager,
+            SerialNumberAppService serialNumberAppService
             )
         {
             _mes_technique = mes_technique;
@@ -556,7 +559,7 @@ namespace Business.ResourceExamineManagement
             _generalizedCodeMaster = generalizedCodeMaster;
             _unitOfWorkManager = unitOfWorkManager;
             _scheduleResultOpMaster = scheduleResultOpMaster;
-            _businessDbContext = businessDbContext;
+            _serialNumberAppService = serialNumberAppService;
         }
         #endregion
 
@@ -1016,7 +1019,7 @@ namespace Business.ResourceExamineManagement
             else {
                 return JsonConvert.SerializeObject("所选采购申请单未找到,请刷新界面重新操作。");
             }
-
+            List<srm_po_occupy> occupylist = _mysql_srm_po_occupy.GetListAsync(s => idList.Contains(s.polist_id.GetValueOrDefault())).Result;
             srm_pr_main srm_Pr = help.DeepCopy(prlist[0]);
             srm_Pr.GenerateNewId(help.NextId());
             srm_Pr.pr_billno = prlist[0].pr_type == 2 ? _CalcBomViewAppService.getOrderNum("WWPR") : _CalcBomViewAppService.getOrderNum("PR");//pr单号
@@ -1056,12 +1059,14 @@ namespace Business.ResourceExamineManagement
             srm_Pr.tenant_id = prlist[0].tenant_id;
             srm_Pr.factory_id = prlist[0].factory_id;*/
             prlist.ForEach(s => { s.state = 0; s.refer_pr_billno = srm_Pr.pr_billno; });
+            occupylist.ForEach(s => { s.polist_id = srm_Pr.Id; });
             using (var unitOfWork = _unitOfWorkManager.Begin(false, true))
             {
                 try
                 {
                     _businessDbContext.BulkUpdate(prlist);
                     _businessDbContext.BulkInsert(new List<srm_pr_main> { srm_Pr });
+                    _businessDbContext.BulkUpdate(occupylist);
                     await unitOfWork.CompleteAsync();
                 }
                 catch (Exception e)
@@ -1087,6 +1092,9 @@ namespace Business.ResourceExamineManagement
             DateTime endtime = toTime.Date.AddDays(14);
             List<srm_pr_main> prlist = _mysql_srm_pr_main.GetListAsync(s => s.company_id.ToString() == companyid && s.pr_ssend_date >= starttime && s.pr_ssend_date <= endtime && (s.state == 1 || s.state == 3)).Result;
             List<ic_item> ic_Items = _mysql_ic_item.GetListAsync(s => s.company_id.ToString() == companyid && prlist.Select(c => c.icitem_id).Contains(s.Id)).Result;
+
+            var occupylist = _mysql_srm_po_occupy.GetListAsync(s => prlist.Select(c => c.Id).Contains(s.polist_id.GetValueOrDefault()) && s.company_id.ToString() == companyid && s.IsDeleted == false).Result;
+
             List<PrWeekDto> prWeekDtos = new List<PrWeekDto>();
 
             List<srm_pr_main> insetPrList = new List<srm_pr_main>();
@@ -1106,9 +1114,12 @@ namespace Business.ResourceExamineManagement
                     if (ilist.Count > 1)
                     {
                         var icitem = ic_Items.Find(s => s.Id == pr.icitem_id);
-
+                        var prRefoccupy = occupylist.Where(s => s.polist_id == pr.Id).ToList();
                         newPr = help.DeepCopy(pr);
                         newPr.GenerateNewId(help.NextId());
+                        prRefoccupy.ForEach(a => {
+                            a.polist_id = newPr.Id;
+                        });
                         newPr.pr_billno = pr.pr_type == 2 ? _CalcBomViewAppService.getOrderNum("WWPR") : _CalcBomViewAppService.getOrderNum("PR");//pr单号
                         newPr.state = pr.state;
                         newPr.pr_rqty = ilist.Sum(s => s.pr_rqty);//需求数量
@@ -1194,6 +1205,10 @@ namespace Business.ResourceExamineManagement
                     {
                         _businessDbContext.BulkUpdate(updatePrList);
                     }
+                    if (occupylist.Any())
+                    {
+                        _businessDbContext.BulkUpdate(occupylist);
+                    }
                     unitOfWork.CompleteAsync();
                 }
                 catch (Exception e)
@@ -1310,7 +1325,7 @@ namespace Business.ResourceExamineManagement
                         }
                         if (poaction.poOccupiesList.Any())
                         {
-                            _businessDbContext.BulkInsert(poaction.poOccupiesList);
+                            _businessDbContext.BulkUpdate(poaction.poOccupiesList);
                         }
 
                         if (poaction.poMasterList.Any())
@@ -1319,7 +1334,7 @@ namespace Business.ResourceExamineManagement
                             _purOrdMaster.Insert(poaction.poMasterList);
                             //快开平台用自增列RecId关联,所以需要插入后再查给明细表赋相应的值
                             List<string> nbrs = poaction.poMasterList.Select(a => a.PurOrd).ToList();
-                            var nbrList = _purOrdMaster.Select(a => a.Domain == "1001" && nbrs.Contains(a.PurOrd));
+                            var nbrList = _purOrdMaster.Select(a => a.Domain == poaction.poMasterList[0].Domain && nbrs.Contains(a.PurOrd));
                             poaction.poDetailList.ForEach(c =>
                             {
                                 c.PurOrdRecID = nbrList.Where(a => a.PurOrd == c.PurOrd).First().RecID;
@@ -1395,7 +1410,7 @@ namespace Business.ResourceExamineManagement
                     }
                     if (poaction.poOccupiesList.Any())
                     {
-                        _businessDbContext.BulkInsert(poaction.poOccupiesList);
+                        _businessDbContext.BulkUpdate(poaction.poOccupiesList);
                     }
 
                     if (poaction.poMasterList.Any())
@@ -1404,7 +1419,7 @@ namespace Business.ResourceExamineManagement
                         _purOrdMaster.Insert(poaction.poMasterList);
                         //快开平台用自增列RecId关联,所以需要插入后再查给明细表赋相应的值
                         List<string> nbrs = poaction.poMasterList.Select(a => a.PurOrd).ToList();
-                        var nbrList = _purOrdMaster.Select(a => a.Domain == "1001" && nbrs.Contains(a.PurOrd));
+                        var nbrList = _purOrdMaster.Select(a => a.Domain == poaction.poMasterList[0].Domain && nbrs.Contains(a.PurOrd));
                         poaction.poDetailList.ForEach(c =>
                         {
                             c.PurOrdRecID = nbrList.Where(a => a.PurOrd == c.PurOrd).First().RecID;
@@ -1863,41 +1878,52 @@ namespace Business.ResourceExamineManagement
                     await _mes_mooccupy.InsertManyAsync(moMes_mooccupy);
                 }
             }
-            //TODO:要不要根据某些条件只同步有效的数据
-            //采购订单
-            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)
-            {
-                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()); item.bang_id = bangid; });
-                await _srm_po_main.InsertManyAsync(moSrm_po_main);
-            }
+            //根据物料信息,只同步在途未关闭的采购订单和采购申请
 
             //采购订单明细
-            var srm_po_list = _mysql_srm_po_list.GetListAsync(x => x.company_id == companyId && x.factory_id == factoryId).Result;
+            var srm_po_list = _mysql_srm_po_list.GetListAsync(x => x.company_id == companyId && x.factory_id == factoryId && itemIds.Contains(x.icitem_id.GetValueOrDefault())).Result;
             if (srm_po_list.Count > 0)
             {
-                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()); item.bang_id = bangid; });
-                await _srm_po_list.InsertManyAsync(moSrm_po_list);
-            }
-
-            //采购订单占用详情
-            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)
-            {
-                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()); item.bang_id = bangid; });
-                await _srm_po_occupy.InsertManyAsync(moSrm_po_occupy);
+                //采购订单--取出状态为在途的PO
+                var srm_po_main = _mysql_srm_po_main.GetListAsync(x => x.company_id == companyId && x.factory_id == factoryId && srm_po_list.Select(c => c.po_id).Contains(x.Id) && (x.state == 0 || x.state == 1)).Result;
+                if (srm_po_main.Count > 0)
+                {
+                    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()); item.bang_id = bangid; });
+                    await _srm_po_main.InsertManyAsync(moSrm_po_main);
+
+                    //订单明细--根据在途PO过滤出有效的Po_list
+                    srm_po_list = srm_po_list.Where(s => srm_po_main.Select(x => x.Id).Contains(s.po_id.GetValueOrDefault())).ToList();
+                    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()); item.bang_id = bangid; });
+                    await _srm_po_list.InsertManyAsync(moSrm_po_list);
+                }
+                //采购订单明细占用详情
+                var srm_po_occupy = _mysql_srm_po_occupy.GetListAsync(x => x.company_id == companyId && x.factory_id == factoryId && srm_po_list.Select(c => c.Id).Contains(x.polist_id.GetValueOrDefault())).Result;
+                if (srm_po_occupy.Count > 0)
+                {
+                    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()); item.bang_id = bangid; });
+                    await _srm_po_occupy.InsertManyAsync(moSrm_po_occupy);
+                }
             }
 
             //pr
-            var srm_pr_main = _mysql_srm_pr_main.GetListAsync(x => x.company_id == companyId && x.factory_id == factoryId && itemIds.Contains(x.icitem_id.GetValueOrDefault())).Result;
+            var srm_pr_main = _mysql_srm_pr_main.GetListAsync(x => x.company_id == companyId && x.factory_id == factoryId && x.state != 0 && itemIds.Contains(x.icitem_id.GetValueOrDefault())).Result;
             if(srm_pr_main.Count>0)
             {
                 var moSrm_pr_main = ObjectMapper.Map<List<srm_pr_main>, List<mo_srm_pr_main>>(srm_pr_main);
                 moSrm_pr_main.ForEach(item => { item.GenerateNewId(help.NextId()); item.bang_id = bangid; });
                 await _srm_pr_main.InsertManyAsync(moSrm_pr_main);
+
+                //采购申请占用详情
+                var srm_pr_occupy = _mysql_srm_po_occupy.GetListAsync(x => x.company_id == companyId && x.factory_id == factoryId && srm_pr_main.Select(c => c.Id).Contains(x.polist_id.GetValueOrDefault())).Result;
+                if (srm_pr_occupy.Count > 0)
+                {
+                    var moSrm_pr_occupy = ObjectMapper.Map<List<srm_po_occupy>, List<mo_srm_po_occupy>>(srm_pr_occupy);
+                    moSrm_pr_occupy.ForEach(item => { item.GenerateNewId(help.NextId()); item.bang_id = bangid; });
+                    await _srm_po_occupy.InsertManyAsync(moSrm_pr_occupy);
+                }
             }
         }
 
@@ -2047,7 +2073,11 @@ namespace Business.ResourceExamineManagement
         {
             List<srm_po_main> polist = new List<srm_po_main>();
             List<srm_po_list> podetaillist = new List<srm_po_list>();
+            List<srm_po_occupy> pooccupylist = new List<srm_po_occupy>();
             List<POGroupDto> pOGroupDtos = new List<POGroupDto>();
+
+            var occupyList = _mysql_srm_po_occupy.GetListAsync(s => list.Select(c => c.Id).Contains(s.polist_id.GetValueOrDefault()) && s.company_id == list[0].company_id && s.factory_id == list[0].factory_id && s.IsDeleted == false).Result;
+            string domain = list[0].factory_id.ToString();
             //合并条件:目前传入的数据是一周的数据,暂时不考虑多周数据合并。
             //标准类 1.销售订单产生 2.计划工单产生
             //物料属性 委外  外购
@@ -2101,11 +2131,17 @@ namespace Business.ResourceExamineManagement
                 podetail.factory_id = param.factoryId;
                 podetail.company_id = param.company_id;
                 podetail.stock_id = 1;
+                var refProccupy = occupyList.Where(s => s.polist_id == item.Id).ToList();
+                refProccupy.ForEach(f =>
+                {
+                    f.polist_id = podetail.Id;
+                });
+                poaction.poOccupiesList.AddRange(refProccupy);
                 podetaillist.Add(podetail);
                 poDto.polist.Add(podetail);
             }
-            List<srm_pr_main> referlist = new List<srm_pr_main>();
-            RecursionGetDbPr(list, referlist);
+            /*List<srm_pr_main> referlist = new List<srm_pr_main>();
+            RecursionGetDbPr(list, referlist);*/
             //组合PO
             foreach (var dto in pOGroupDtos)
             {
@@ -2146,7 +2182,7 @@ namespace Business.ResourceExamineManagement
                 {
                     var toPr = list.Find(s => s.Id == p.pr_id);
                     List<srm_pr_main> clist = new List<srm_pr_main>();
-                    RecursionPr(toPr, referlist, clist);
+                    /*RecursionPr(toPr, referlist, clist);
                     if (clist.Any())
                     {
                         clist.ForEach(c =>
@@ -2174,7 +2210,7 @@ namespace Business.ResourceExamineManagement
                                 poaction.poOccupiesList.Add(srm_Po_Occupy);
                             }
                         });
-                    }
+                    }*/
                     
                     po_Main.po_total += p.total_price;
                     p.po_id = po_Main.Id;
@@ -2185,7 +2221,6 @@ namespace Business.ResourceExamineManagement
                     row++;
                 });
             }
-
             poaction.poMain.AddRange(polist);
             poaction.polist.AddRange(podetaillist);
             List<PurOrdMaster> purOrdMasters = new List<PurOrdMaster>();
@@ -2193,7 +2228,7 @@ namespace Business.ResourceExamineManagement
             {
                 purOrdMasters.Add(new PurOrdMaster
                 {
-                    Domain = "1001",
+                    Domain = domain,
                     Potype = poType==1?"po":"pw",
                     PurOrd = a.po_billno,
                     Buyer = a.po_purchaser,
@@ -2215,7 +2250,7 @@ namespace Business.ResourceExamineManagement
             {
                 purOrdDetails.Add(new PurOrdDetail
                 {
-                    Domain = "1001",
+                    Domain = domain,
                     Potype = poType == 1 ? "po" : "pw",
                     PurOrd = a.po_billno,
                     IsActive = true,
@@ -3219,12 +3254,14 @@ namespace Business.ResourceExamineManagement
             List<mo_mes_mooccupy> mes_mooccupyList = _mes_mooccupy.GetListAsync(x => x.moo_state == 1 && !x.IsDeleted && x.company_id == param.company_id
           && boms.Select(p => p.item_number).Contains(x.fitem_number) && x.bang_id == bangid).Result;
 
+            List<long> occoupyRefId = new List<long>();
             //物料采购订单明细
             var poDetailList = _srm_po_list.GetListAsync(x => icitemlist.Select(p => p.mysql_id).ToList().Contains(x.icitem_id.Value) && x.bang_id == bangid && x.state == 1 && x.rstate == 1 && !x.IsDeleted).Result;
-            //采购订单占用数据
-            var poOccupys = _srm_po_occupy.GetListAsync(x => poDetailList.Select(p => p.Id).ToList().Contains(x.polist_id) && x.bang_id == bangid && !x.IsDeleted).Result;
-
-            var srm_pr_mains = _srm_pr_main.GetListAsync(x => icitemlist.Select(p => p.mysql_id).ToList().Contains(x.icitem_id.Value) && x.bang_id == bangid && x.state == 0 && !x.IsDeleted).Result;
+            occoupyRefId.AddRange(poDetailList.Select(p => p.Id).ToList());
+            var srm_pr_mains = _srm_pr_main.GetListAsync(x => icitemlist.Select(p => p.mysql_id).ToList().Contains(x.icitem_id.Value) && x.bang_id == bangid && x.state != 0 && !x.IsDeleted).Result;
+            occoupyRefId.AddRange(srm_pr_mains.Select(p => p.Id).ToList());
+            //采购订单或采购申请占用数据
+            var poOccupys = _srm_po_occupy.GetListAsync(x => occoupyRefId.Contains(x.polist_id) && x.bang_id == bangid && !x.IsDeleted).Result;
             #endregion
 
             //处理一下已经插入得占用记录
@@ -3232,7 +3269,7 @@ namespace Business.ResourceExamineManagement
             //物料库存
             stocklist.AddRange(_ic_item_stock.GetListAsync(p => p.factory_id == param.factoryId && p.bang_id == bangid && itemIds.Contains(p.icitem_id)).Result);
             //物料库存占用表
-            sklist.AddRange(_ic_item_stockoccupy.GetListAsync(x => x.bang_id == bangid && !x.IsDeleted).Result);
+            sklist.AddRange(_ic_item_stockoccupy.GetListAsync(x => x.bang_id == bangid && !x.IsDeleted && itemIds.Contains(x.icitem_id)).Result);
 
             //物料提前期
             leadTimeList = GetLeadTime(icitemlist, param.company_id, param.factoryId);//提前期列表
@@ -3255,7 +3292,7 @@ namespace Business.ResourceExamineManagement
             _CalcBomViewAppService.srm_Po_Lists = poDetailList; //采购明细
             _CalcBomViewAppService.srm_Po_Occupies = poOccupys; //采购占用表
             _CalcBomViewAppService.ic_item_List = icitemlist; //物料表
-            _CalcBomViewAppService.srm_Pr_Mains = srm_pr_mains;//PR
+            _CalcBomViewAppService.srm_Pr_Mains = srm_pr_mains.Where(s=>s.state != 4).ToList();//PR
             DateTime dt = DateTime.Now;
             _CalcBomViewAppService.quarter_starttime = dt.AddMonths(0 - (dt.Month - 1) % 3).AddDays(1 - dt.Day).Date;
             _CalcBomViewAppService.quarter_endtime = _CalcBomViewAppService.quarter_starttime.AddMonths(3);
@@ -3312,7 +3349,7 @@ namespace Business.ResourceExamineManagement
         /// </summary>
         public void AutoCreateBomBill(string companyid,List<mo_ic_bom> ic_Boms = null)
         {
-            ic_Boms ??= _ic_bom.GetListAsync(p => p.company_id.ToString() == companyid && (p.bom_number == "10100012_V1.0" || p.bom_number == "10100241_V1.0" || p.bom_number == "BOM00042070") && !p.IsDeleted).Result.ToList();
+            ic_Boms ??= _ic_bom.GetListAsync(p => p.company_id.ToString() == companyid && !p.IsDeleted).Result.ToList();
             var pretreatment = _mysql_b_bom_pretreatment.GetListAsync(s => ic_Boms.Select(c => c.mysql_id).ToList().Contains(s.sourceid)).Result;
 
             param.company_id = long.Parse(companyid);
@@ -3494,15 +3531,19 @@ namespace Business.ResourceExamineManagement
 
         private void GenerateNbr(WorkOrdMaster workord,decimal cleanTime, LineMaster defaultLine, string userAccount, List<NbrMaster> nbrMasterList, List<NbrDetail> nbrDetailList, List<WorkOrdDetail> detail, List<ItemMaster> itemLocList, List<EmpWorkDutyMaster> ewdmList, string LocationTo,EmployeeMaster user,string TransType)
         {
-            var Nbr = GetMaxSerialNumber(417416915624005);
+            //var Nbr = GetMaxSerialNumber(417416915624005);
+            string Nbr = "";
             DateTime eff = workord.OrdDate.GetValueOrDefault().Date.AddDays(-1);
             DateTime start = eff.AddDays((double)(0 - cleanTime));
             if (start <= DateTime.Now.Date)
             {
                 start = DateTime.Now.Date;
             }
-            //string sql = "exec pr_SFM_GetOrdNbr @Domain='{0}',@NbrType='SM', @UserNo='{1}',@IsDopCall=1'";
-
+            var nbrlistDto = _serialNumberAppService.GetBillNo(workord.Domain, "SM", 1, userAccount, 1);
+            if (nbrlistDto.Any())
+            {
+                Nbr = nbrlistDto[0].NbrResult;
+            }
             var newNbr = new NbrMaster
             {
                 Domain = workord.Domain,
@@ -4291,8 +4332,33 @@ namespace Business.ResourceExamineManagement
             DateTime startDate = DateTime.Now.Date.AddDays(1);
             //尚未开始生产的工单+正在生产的工单
             var workOrds = _workOrdMaster.Select(p => p.IsActive && p.Domain == domain && ((p.OrdDate < endDate && p.OrdDate >= startDate && (string.IsNullOrEmpty(p.Typed) || (!string.IsNullOrEmpty(p.Typed) && p.BusinessID > 0))) || p.Status.ToLower() == "w")).ToList();
-            await _productionScheduleAppService.DoProductSchedule(workOrds, domain, 2);
-            return "ok";
+            string result = await _productionScheduleAppService.DoProductSchedule(workOrds, domain, 2);
+            return result;
+        }
+
+        /// <summary>
+        /// 日计划日期调整
+        /// </summary>
+        /// <param name="input">日计划调整入参</param>
+        /// <returns></returns>
+        /// <exception cref="NotImplementedException"></exception>
+        public async Task<string> UpdatePlanDate(UpdateDto input)
+        {
+            WorkOrdMaster workOrd = _workOrdMaster.Select(p=>p.IsActive && p.Domain == input.domain && p.WorkOrd == input.workord).FirstOrDefault();
+            if (workOrd == null)
+            {
+                return "NO|工单【"+input.workord+"】不存在,请联系系统管理员!";
+            }
+            //更新工单计划开工日期,调整是否需要处理提前期状态字段为B
+            workOrd.OrdDate = input.planDate;
+            workOrd.JointTyped = "B";
+            _workOrdMaster.Update(workOrd);
+
+            //调用优先级计算算法
+
+            //调用手动排产算法
+            string result = await ProductionSchedule(input.domain);
+            return result;
         }
 
         /// <summary>

+ 26 - 1
MicroServices/Business/Business.Application/ResourceExamineManagement/SerialNumberAppService.cs

@@ -1,13 +1,22 @@
 using Business.Core.Utilities;
+using Business.EntityFrameworkCore;
+using Business.ResourceExamineManagement.Dto;
+using Microsoft.EntityFrameworkCore;
 using Microsoft.Extensions.Configuration;
+using Spire.Pdf.Exporting.XPS.Schema;
 using System;
+using System.Collections.Generic;
+using System.Linq;
 using Volo.Abp.Application.Services;
 
 namespace Business.ResourceExamineManagement
 {
     public class SerialNumberAppService : ApplicationService, ISerialNumberAppService
     {
-        public SerialNumberAppService() {
+        private readonly BusinessDbContext _businessDbContext;
+
+        public SerialNumberAppService(BusinessDbContext businessDbContext) {
+            _businessDbContext = businessDbContext;
         }
 
         /// <summary>
@@ -33,5 +42,21 @@ namespace Business.ResourceExamineManagement
             }
             return sn;
         }
+
+        /// <summary>
+        /// 获取单号
+        /// </summary>
+        /// <param name="domain"></param>
+        /// <param name="NbrType">类型</param>
+        /// <param name="Increment">步长</param>
+        /// <param name="UserNo">用户账号</param>
+        /// <param name="IsDopCall"></param>
+        /// <returns></returns>
+        public List<GetNbr> GetBillNo(string domain, string NbrType, int Increment, string UserNo, int IsDopCall)
+        {
+            string sql = string.Format("exec pr_SFM_GetOrdNbr @Domain='{0}',@NbrType='{1}', @Increment ={2}, @UserNo='{3}',@IsDopCall={4}", domain, NbrType, Increment, UserNo, IsDopCall);
+            var getnbr = _businessDbContext.GetNbr.FromSqlRaw(sql).ToList();
+            return getnbr;
+        }
     }
 }

+ 1 - 1
MicroServices/Business/Business.Domain/MongoDB/SRM/mo_srm_pr_main.cs

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

+ 1 - 1
MicroServices/Business/Business.Domain/StructuredDB/Production/WorkOrdDetail.cs

@@ -97,6 +97,6 @@ namespace Business.Domain
         /// 工单主键
         /// </summary>
         [Comment("工单主键")]
-        public int WorkOrdMasterRecID { get; set; }
+        public long WorkOrdMasterRecID { get; set; }
     }
 }

+ 1 - 0
MicroServices/Business/Business.EntityFrameworkCore/Business.EntityFrameworkCore.csproj

@@ -27,6 +27,7 @@
   </ItemGroup>
 
   <ItemGroup>
+    <ProjectReference Include="..\Business.Application.Contracts\Business.Application.Contracts.csproj" />
     <ProjectReference Include="..\Business.Domain\Business.Domain.csproj" />
     <ProjectReference Include="..\Bussiness.MongoDB\Bussiness.MongoDB.csproj" />
   </ItemGroup>

+ 3 - 0
MicroServices/Business/Business.EntityFrameworkCore/EntityFrameworkCore/DOP/BusinessDbContext.cs

@@ -1,4 +1,5 @@
 using Business.Domain;
+using Business.ResourceExamineManagement.Dto;
 using Business.StructuredDB.MES;
 using Business.StructuredDB.Production;
 using Business.StructuredDB.Replenishment;
@@ -28,6 +29,8 @@ namespace Business.EntityFrameworkCore
 
         public DbSet<b_bom_pretreatment> b_bom_pretreatment { get; set; }
 
+        public DbSet<GetNbr> GetNbr { get; set; }
+
         #endregion
         #region MES
         public DbSet<mes_producedailyplan> mes_Producedailyplans { get; set; }

+ 12 - 0
MicroServices/Business/Business.HttpApi/Controllers/ResourceExamineController.cs

@@ -44,6 +44,18 @@ namespace Business.Controllers
             return _ResourceExamineAppService.ProductionSchedule(domain);
         }
 
+        /// <summary>
+        /// 日计划日期调整
+        /// </summary>
+        /// <param name="input">日计划调整入参</param>
+        /// <returns></returns>
+        [HttpPost]
+        [Route("updateplandate")]
+        public Task<string> UpdatePlanDate(UpdateDto input)
+        {
+            return _ResourceExamineAppService.UpdatePlanDate(input);
+        }
+
         /// <summary>
         /// 下达,生成领料单
         /// </summary>