소스 검색

代码提交,增加资源检查报告信息。

tangdi 3 년 전
부모
커밋
d48d22f560

+ 179 - 47
MicroServices/Business/Business.Application.Contracts/ResourceExamineManagement/Dto/BomChildExamineDto.cs

@@ -139,49 +139,39 @@ namespace Business.ResourceExamineManagement.Dto
         public decimal mo_qty { get; set; }
 
         /// <summary>
-        /// 在制占用明细
+        /// 在制工单占用明细
         /// </summary>
         public List<mo_occupy> mo_occupy_list { get; set; }
 
         /// <summary>
-        /// 采购数量
-        /// </summary>
-        public decimal purchase_qty { get; set; }
-
-        /// <summary>
-        /// 采购明细
-        /// </summary>
-        public List<mo_srm_pr_main> purchase_list { get; set; }
-
-        /// <summary>
-        /// 采购占用数量
+        /// 自制数量
         /// </summary>
-        public decimal purchase_occupy_qty { get; set; }
+        public decimal make_qty { get; set; }
 
         /// <summary>
-        /// 采购占用明细
+        /// 自制工单明细
         /// </summary>
-        public List<mo_srm_po_occupy> purchase_occupy_list { get; set; }
+        public List<moorder> make_list { get; set; }
 
         /// <summary>
-        /// 自制数量
+        /// 采购数量
         /// </summary>
-        public decimal make_qty { get; set; }
+        public decimal purchase_qty { get; set; }
 
         /// <summary>
-        /// 自制工单明细
+        /// 采购明细
         /// </summary>
-        public List<Mes_MorderDto> make_list { get; set; }
+        public List<purchase> purchase_list { get; set; }
 
         /// <summary>
-        /// 自制占用数量
+        /// 采购明细占用数量
         /// </summary>
-        public decimal make_occupy_qty { get; set; }
+        public decimal purchase_occupy_qty { get; set; }
 
         /// <summary>
-        /// 自制占用明细
+        /// 采购占用明细
         /// </summary>
-        public List<Mes_MorderDto> make_occupy_list { get; set; }
+        public List<mo_srm_po_occupy> purchase_occupy_list { get; set; }
 
         /// <summary>
         /// 委外数量
@@ -191,7 +181,7 @@ namespace Business.ResourceExamineManagement.Dto
         /// <summary>
         /// 委外工单明细
         /// </summary>
-        public List<mo_mes_oorder> subcontracting_list { get; set; }
+        public List<ooder> subcontracting_list { get; set; }
 
         /// <summary>
         /// 委外占用数量
@@ -199,9 +189,9 @@ namespace Business.ResourceExamineManagement.Dto
         public decimal subcontracting_occupy_qty { get; set; }
 
         /// <summary>
-        /// 委外数量
+        /// 委外工单占用明细
         /// </summary>
-        public decimal subcontracting_occupy_list { get; set; }
+        public List<ooder_occupy> subcontracting_occupy_list { get; set; }
 
         /// <summary>
         /// 齐套时间
@@ -243,11 +233,6 @@ namespace Business.ResourceExamineManagement.Dto
         /// </summary>
         public int substitute_all_num { get; set; }
 
-        /*/// <summary>
-        /// 替代数量
-        /// </summary>
-        public decimal replace_amount { get; set; }*/
-
         /// <summary>
         /// 替代策略
         /// </summary>
@@ -263,37 +248,75 @@ namespace Business.ResourceExamineManagement.Dto
         /// </summary>
         public int stock_state { get; set; }
 
-        /*/// <summary>
-        /// 物料状态--0.缺料 1.充足 2.可制,时间满足 3.可制,时间不满足 4.采购 5.委外
+        /// <summary>
+        /// 单个产品总需要用量
         /// </summary>
-        public int group_state { get; set; }
+        public decimal needCount { get; set; }
 
         /// <summary>
-        /// 满足量
+        /// 是否使用此物料
         /// </summary>
-        public decimal satisfyNum { get; set; }
+        public bool is_use { get; set; }
+    }
 
+    /// <summary>
+    /// 生产工单信息
+    /// </summary>
+    public class moorder
+    {
         /// <summary>
-        /// 库存可制
+        /// 生产工单编号
         /// </summary>
-        public decimal kz { get; set; }
-
+        public string? morder_no { get; set; }
         /// <summary>
-        /// 产品缺量
+        /// 生产组织名称
         /// </summary>
-        public decimal lack { get; set; }*/
-
+        public string? moentry_prdname { get; set; }
         /// <summary>
-        /// 单个产品总需要用量
+        /// 工作中心名称
         /// </summary>
-        public decimal needCount { get; set; }
-
+        public string? moentry_wrkcname { get; set; }
         /// <summary>
-        /// 是否使用此物料
+        /// 生产工单开始日期
         /// </summary>
-        public bool is_use { get; set; }
+        public DateTime? moentry_stime { get; set; }
+        /// <summary>
+        /// 生产工单结束日期
+        /// </summary>
+        public DateTime? moentry_etime { get; set; }
+        /// <summary>
+        /// 系统建议开工时间
+        /// </summary>
+        public DateTime? moentry_sys_stime { get; set; }
+        /// <summary>
+        /// 系统建议完工时间
+        /// </summary>
+        public DateTime? moentry_sys_etime { get; set; }
+        /// <summary>
+        /// 实际开始时间
+        /// </summary>
+        public DateTime? reality_start_time { get; set; }
+        /// <summary>
+        /// 实际结束时间
+        /// </summary>
+        public DateTime? reality_end_time { get; set; }
+        /// <summary>
+        /// 工单所需工时
+        /// </summary>
+        public decimal? morder_need_time { get; set; }
+        /// <summary>
+        /// 工单生产数量(计划数量)
+        /// </summary>
+        public decimal? morder_production_number { get; set; }
+        /// <summary>
+        /// 需求数量
+        /// </summary>
+        public decimal? need_number { get; set; }
     }
 
+    /// <summary>
+    /// 在制占用明细
+    /// </summary>
     public class mo_occupy
     {
         /// <summary>
@@ -316,4 +339,113 @@ namespace Business.ResourceExamineManagement.Dto
         /// </summary>
         public DateTime? moo_etime { get; set; }
     }
+
+    /// <summary>
+    /// 采购明细信息
+    /// </summary>
+    public class purchase
+    {
+        /// <summary>
+        /// pr单号
+        /// </summary>
+        public string? pr_billno { get; set; }
+
+        /// <summary>
+        /// 供应商编码
+        /// </summary>
+        public string? pr_purchasenumber { get; set; }
+        /// <summary>
+        /// 供应商名称
+        /// </summary>
+        public string? pr_purchasename { get; set; }
+        /// <summary>
+        /// 需求数量
+        /// </summary>
+        public decimal? pr_rqty { get; set; }
+        /// <summary>
+        /// 申请数量
+        /// </summary>
+        public decimal? pr_aqty { get; set; }
+        /// <summary>
+        /// 建议数量
+        /// </summary>
+        public decimal? pr_sqty { get; set; }
+        /// <summary>
+        /// 计划到达日期
+        /// </summary>
+        public DateTime? pr_parrive_date { get; set; }
+        /// <summary>
+        /// 需求到货日期
+        /// </summary>
+        public DateTime? pr_rarrive_date { get; set; }
+        /// <summary>
+        /// 采购确认到货日期
+        /// </summary>
+        public DateTime? pr_pur_affirm_date { get; set; }
+        /// <summary>
+        /// 系统价格(含税)
+        /// </summary>
+        public decimal? pr_sysprice { get; set; }
+        /// <summary>
+        /// 订单价格(含税)
+        /// </summary>
+        public decimal? pr_orderprice { get; set; }
+        /// <summary>
+        /// 采购净价(不含税)
+        /// </summary>
+        public decimal? pr_price { get; set; }
+        /// <summary>
+        /// 税率
+        /// </summary>
+        public decimal? pr_rate { get; set; }
+    }
+
+    /// <summary>
+    /// 委外工单信息
+    /// </summary>
+    public class ooder {
+        /// <summary>
+        /// 工单编号
+        /// </summary>
+        public string? oorder_no { get; set; }
+        /// <summary>
+        /// 委外订单日期
+        /// </summary>
+        public DateTime? oorder_date { get; set; }
+        /// <summary>
+        /// 生产组织名称
+        /// </summary>
+        public string? ooentry_prdname { get; set; }
+        /// <summary>
+        /// 计划开工日期
+        /// </summary>
+        public DateTime? ooentry_stime { get; set; }
+        /// <summary>
+        /// 计划完工日期
+        /// </summary>
+        public DateTime? ooentry_etime { get; set; }
+        /// <summary>
+        /// 工单生产数量(计划数量)
+        /// </summary>
+        public decimal? morder_production_number { get; set; }
+        /// <summary>
+        /// 加工单位
+        /// </summary>
+        public string? production_unit { get; set; }
+        /// <summary>
+        /// 加工单位编码
+        /// </summary>
+        public string? production_unit_code { get; set; }
+    }
+
+    /// <summary>
+    /// 委外工单占用信息
+    /// </summary>
+    public class ooder_occupy
+    {
+        /// <summary>
+        /// 工单编号
+        /// </summary>
+        public string? oorder_no { get; set; }
+    }
 }

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

@@ -27,7 +27,7 @@ namespace Business.ResourceExamineManagement.Dto
         /// <summary>
         /// 物料占用记录
         /// </summary>
-        public List<mo_ic_item_stockoccupy> sklist { get; set; }
+        public List<mo_ic_item_stockoccupy> item_stockoccupy_list { get; set; }
 
         /// <summary>
         /// 采购申请

+ 190 - 45
MicroServices/Business/Business.Application/ResourceExamineManagement/CalcBomViewAppService.cs

@@ -8,6 +8,7 @@ using Bussiness.MongoModel.MES.IC;
 using Bussiness.MongoModel.Production;
 using Bussiness.MongoModel.SRM;
 using System;
+using System.Collections;
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;
@@ -233,6 +234,24 @@ namespace Business.ResourceExamineManagement
                         //满足资源检查的时间需加上提前期
                         level1Dto.satisfy_time = mes_Morders.moentry_sys_stime.Value.AddDays((double)LeadTime);
                     }
+                    level1Dto.make_list = new List<moorder>();
+                    mes_MorderDto.mes_Morders.ForEach(me =>
+                    {
+                        moorder mo = new moorder();
+                        mo.moentry_stime = me.moentry_stime;
+                        mo.moentry_etime = me.moentry_etime;
+                        mo.moentry_wrkcname = me.moentry_wrkcname;
+                        mo.moentry_sys_stime = me.moentry_sys_stime;
+                        mo.moentry_sys_etime = me.moentry_sys_etime;
+                        mo.moentry_prdname = me.moentry_prdname;
+                        mo.morder_need_time = me.morder_need_time;
+                        mo.morder_no = me.morder_no;
+                        mo.morder_production_number = me.morder_production_number;
+                        mo.need_number = me.need_number;
+                        mo.reality_end_time = me.reality_end_time;
+                        mo.reality_start_time = me.reality_start_time;
+                        level1Dto.make_list.Add(mo);
+                    });
                     //批量保存 后期考虑子工单
                     mordersList.AddRange(mes_MorderDto.mes_Morders);
                     moentriesList.AddRange(mes_MorderDto.mes_Moentries);
@@ -389,7 +408,17 @@ namespace Business.ResourceExamineManagement
                     /*var ic_item = icitemlist.Find(s => s.Id == item.item_id);
                     var mooccupylist = _morderAppService.CheckMorder(item.bom_number, item.lack_qty, plan_date.GetValueOrDefault(), sentrys, ic_item).Result;
                     decimal moo_qty = mooccupylist.Sum(s => s.moo_qty.GetValueOrDefault());
-                    item.mo_qty = moo_qty;*/
+                    item.mo_qty = moo_qty;
+                    item.mo_occupy_list = new List<mo_occupy>();
+                    mooccupylist.ForEach(s =>
+                    {
+                        mo_occupy mooc = new mo_occupy();
+                        mooc.moo_mo = s.moo_mo;
+                        mooc.moo_stime = s.moo_ctime;
+                        mooc.moo_etime = s.moo_etime;
+                        mooc.moo_qty = s.moo_qty;
+                        item.mo_occupy_list.Add(mooc);
+                    });*/
                     decimal moo_qty = 0;
                     if (moo_qty == returnlist[0].lack_qty)
                     {
@@ -421,6 +450,8 @@ namespace Business.ResourceExamineManagement
 
                         };
                         item.make_qty = item.lack_qty;
+                        //todo:增加生成子工单后,这里需要加上生成的子工单的明细。
+                        item.make_list = new List<moorder>();
                         var minute = _productExamineAppService.ProductiveExamine(prodExamine);
                         //系统建议完工日期为 开工日期+产能检查时间=完工日期
                         var Day = minute.Result / (60 * 10); //返回的分钟除以十个小时得出工作天数;
@@ -431,14 +462,39 @@ namespace Business.ResourceExamineManagement
                 }
                 else if (item.erp_cls == 3)
                 {
+                    //先找在途
+
+
                     //采购申请
                     var SRMPRDto = CreateSRMPR(item, input.tenantId, input.factoryId, bangid, item.erp_cls, leadTimeList, supplierList, planList, plan_date.Value);
                     item.purchase_qty = item.lack_qty;
+                    item.purchase_list = new List<purchase>();
+                    if (SRMPRDto.srm_Pr_Main != null)
+                    {
+                        purchase pur = new purchase();
+                        pur.pr_billno = SRMPRDto.srm_Pr_Main.pr_billno;
+                        pur.pr_purchasenumber = SRMPRDto.srm_Pr_Main.pr_purchasenumber;
+                        pur.pr_purchasename = SRMPRDto.srm_Pr_Main.pr_purchasename;
+                        pur.pr_rqty = SRMPRDto.srm_Pr_Main.pr_rqty;
+                        pur.pr_aqty = SRMPRDto.srm_Pr_Main.pr_aqty;
+                        pur.pr_sqty = SRMPRDto.srm_Pr_Main.pr_sqty;
+                        pur.pr_parrive_date = SRMPRDto.srm_Pr_Main.pr_parrive_date;
+                        pur.pr_rarrive_date = SRMPRDto.srm_Pr_Main.pr_rarrive_date;
+                        pur.pr_pur_affirm_date = SRMPRDto.srm_Pr_Main.pr_pur_affirm_date;
+                        pur.pr_sysprice = SRMPRDto.srm_Pr_Main.pr_sysprice;
+                        pur.pr_orderprice = SRMPRDto.srm_Pr_Main.pr_orderprice;
+                        pur.pr_price = SRMPRDto.srm_Pr_Main.pr_price;
+                        pur.pr_rate = SRMPRDto.srm_Pr_Main.pr_rate;
+                        item.purchase_list.Add(pur);
+                    }
                     item.kitting_time = SRMPRDto.lastStartTmie;
                     SRMPRDtoList.Add(SRMPRDto);
                 }
                 else if (item.erp_cls == 2)
                 {
+                    //先找在途
+
+
                     //先计算末级数据的齐套时间。
                     if (cilList.Count() > 0)
                     {
@@ -448,6 +504,17 @@ namespace Business.ResourceExamineManagement
                     //1.先生成委外工单。
                     var mesorder = CreateMesOOder(item, input.tenantId, input.factoryId, bangid, leadTimeList, supplierList, plan_date.Value);
                     item.subcontracting_qty = item.lack_qty;
+                    item.subcontracting_list = new List<ooder>();
+                    ooder oo = new ooder();
+                    oo.morder_production_number = mesorder.morder_production_number;
+                    oo.production_unit= mesorder.production_unit;
+                    oo.production_unit_code = mesorder.production_unit_code;
+                    oo.ooentry_prdname= mesorder.ooentry_prdname;
+                    oo.ooentry_stime= mesorder.ooentry_stime;
+                    oo.ooentry_etime= mesorder.ooentry_etime;
+                    oo.oorder_date= mesorder.oorder_date;
+                    oo.oorder_no= mesorder.oorder_no;
+                    item.subcontracting_list.Add(oo);
                     item.kitting_time = mesorder.ooentry_etime;
                     orderList.Add(mesorder);
                 }
@@ -483,19 +550,19 @@ namespace Business.ResourceExamineManagement
             switch (item.substitute_strategy)
             {
                 case 0://整批
-                    WholeBatchCheck(sublist, returnlist, sklist, select);
+                    WholeBatchCheck(sublist, returnlist, sklist, select, bangid);
                     //如果都需要采购的情况下,则默认使用优先级最高的
                     WholeBatch(item, sublist, returnlist, sklist, select, bangid, parent, input, plan_date, icitemlist, sentrys, childidList);
                     break;
                 case 1://混用
-                    MixedUse(item, sublist, returnlist, sklist, bangid, parent, input, plan_date, icitemlist, sentrys);
+                    MixedUse(item, sublist, returnlist, sklist, bangid, parent, input, plan_date, icitemlist, sentrys, childidList);
                     break;
                 case 2://整批加混用
-                    WholeBatchCheck(sublist, returnlist, sklist, select);
+                    WholeBatchCheck(sublist, returnlist, sklist, select, bangid);
                     if (select.Count() == 0)
                     {
                         //走混用
-                        MixedUse(item, sublist, returnlist, sklist, bangid, parent, input, plan_date, icitemlist, sentrys);
+                        MixedUse(item, sublist, returnlist, sklist, bangid, parent, input, plan_date, icitemlist, sentrys, childidList);
                     }
                     else
                     {
@@ -512,7 +579,7 @@ namespace Business.ResourceExamineManagement
         /// <param name="returnlist"></param>
         /// <param name="sklist"></param>
         /// <param name="select"></param>
-        public void WholeBatchCheck(List<BomChildExamineDto> sublist, List<BomChildExamineDto> returnlist, List<mo_ic_item_stockoccupy> sklist, List<BomChildExamineDto> select)
+        public void WholeBatchCheck(List<BomChildExamineDto> sublist, List<BomChildExamineDto> returnlist, List<mo_ic_item_stockoccupy> sklist, List<BomChildExamineDto> select,long bangid)
         {
             for (int idx = 0; idx < 99; idx++)
             {
@@ -521,7 +588,7 @@ namespace Business.ResourceExamineManagement
                 {
                     foreach (var s in list)
                     {
-                        RecalculationStock(s, returnlist, sklist);
+                        RecalculationStock(s, returnlist, sklist, bangid);
                     }
                     //可制计算:需要对list进行可制计算,按主料来算辅料
                     if (list.Where(s => s.stock_state != 1).Count() == 0)
@@ -595,7 +662,7 @@ namespace Business.ResourceExamineManagement
         /// <param name="input"></param>
         /// <param name="plan_date"></param>
         public void MixedUse(BomChildExamineDto item, List<BomChildExamineDto> sublist, List<BomChildExamineDto> returnlist, List<mo_ic_item_stockoccupy> sklist, long bangid, BomChildExamineDto parent, SeorderentryDto input, DateTime
-            ? plan_date, List<mo_ic_item> icitemlist, crm_seorderentry sentrys)
+            ? plan_date, List<mo_ic_item> icitemlist, crm_seorderentry sentrys, List<long> childidList)
         {
 
             decimal parent_lack = 0;
@@ -615,7 +682,7 @@ namespace Business.ResourceExamineManagement
                 {
                     foreach (var s in list)
                     {
-                        RecalculationStock(s, returnlist, sklist);
+                        RecalculationStock(s, returnlist, sklist, bangid);
                     }
                     decimal minMake = 99999999;
                     foreach (var hy in list)
@@ -670,6 +737,7 @@ namespace Business.ResourceExamineManagement
                             zy.stock_state = 1;
                         }
                         mo_ic_item_stockoccupy itemStockoccupyDto = new mo_ic_item_stockoccupy();
+                        itemStockoccupyDto.orderentry_id = sentrys.Id;
                         itemStockoccupyDto.bang_id = bangid;
                         itemStockoccupyDto.icitem_id = zy.item_id;
                         /*decimal moo_qty = use_p_num * zy.qty - zy.sqty;
@@ -680,6 +748,16 @@ namespace Business.ResourceExamineManagement
                             itemStockoccupyDto.quantity = zy.sqty;
                             zy.use_qty = zy.sqty;
                             zy.mo_qty = moo_qty;
+                            zy.mo_occupy_list = new List<mo_occupy>();
+                            mooccupylist.ForEach(s =>
+                            {
+                                mo_occupy mooc = new mo_occupy();
+                                mooc.moo_mo = s.moo_mo;
+                                mooc.moo_stime = s.moo_ctime;
+                                mooc.moo_etime = s.moo_etime;
+                                mooc.moo_qty = s.moo_qty;
+                                zy.mo_occupy_list.Add(mooc);
+                            });
                         }
                         else
                         {
@@ -708,45 +786,112 @@ namespace Business.ResourceExamineManagement
                     //取代
                     select = sublist.Where(s => s.substitute_all_num == 0).ToList();
                 }
-                //对select执行采购
+                //对select执行补充(根据属性采购、外购、自制等)
                 foreach (var sct in select)
                 {
-                    //找到当前物料的占用记录
-                    var itemSockoccupy = sklist.Where(s => s.icitem_id == sct.item_id).ToList();
-                    var num = parent_lack * sct.qty - itemSockoccupy.Sum(m => m.quantity);
-                    if (sct.erp_cls == 1)
+                    decimal sqty = sct.sqty - sct.use_qty;//这里得出前面混用使用后的库存。
+                    decimal lack_Count = parent_lack * sct.qty;//混用后还缺的部分。
+                    mo_ic_item_stockoccupy itemStockoccupyDto = new mo_ic_item_stockoccupy();
+                    itemStockoccupyDto.orderentry_id = sentrys.Id;
+                    itemStockoccupyDto.bang_id = bangid;
+                    itemStockoccupyDto.icitem_id = sct.item_id;
+                    itemStockoccupyDto.item_no = sct.num;
+                    decimal lack_num = sqty - lack_Count;//库存还够缺的部分
+                    if (lack_num >= 0)
                     {
-                        //走自制
-                        //var minute = ProductiveExamine(item.bom_number, "1.0", item.lack_qty.GetInt());
-                        ProdExamineParamDto prodExamine = new ProdExamineParamDto()
-                        {
-                            bom_number = sct.bom_number,
-                            version = sct.version,
-                            packages = (int)sct.lack_qty,
-                            tenantId = param.tenantId,
-                            factoryId = param.factoryId
-
-                        };
-                        var minute = _productExamineAppService.ProductiveExamine(prodExamine);
-                        //var ProductiveDate = ProductiveExamine(BomNumber, (int)(Quantity.Value));
-                        //系统建议完工日期为 开工日期+产能检查时间=完工日期
-                        var Day = minute.Result / (60 * 10); //返回的分钟除以十个小时得出工作天数;
-                        sct.kitting_time = sct.kitting_time.Value.AddDays((double)Day);
-                    }
-                    else if (sct.erp_cls == 3)
-                    {
-                        //采购申请
-                        var SRMPRDto = CreateSRMPR(sct, input.tenantId, input.factoryId, bangid, sct.erp_cls, leadTimeList, supplierList, planList, plan_date.Value);
-                        sct.kitting_time = SRMPRDto.lastStartTmie;
-                        SRMPRDtoList.Add(SRMPRDto);
+                        //剩余得库存还够还缺的部分
+                        itemStockoccupyDto.quantity = lack_Count;
+                        sct.use_qty += lack_Count;
+                        sklist.Add(itemStockoccupyDto);
                     }
-                    else if (sct.erp_cls == 2)
-                    {
-                        //1.先生成委外工单。
-                        var mesorder = CreateMesOOder(sct, input.tenantId, input.factoryId, bangid, leadTimeList, supplierList, plan_date.Value);
-                        sct.kitting_time = mesorder.ooentry_etime;
-                        orderList.Add(mesorder);
+                    else {
+                        var cilList = returnlist.Where(s => s.parent_id == sct.id && s.type == sct.type).OrderBy(k => k.num_order).ToList();
+
+                        itemStockoccupyDto.quantity = sqty;
+                        sklist.Add(itemStockoccupyDto);
+                        sct.lack_qty = lack_num * -1;
+                        sct.kitting_time = DateTime.Now;
+                        sct.use_qty += sqty;
+
+                        if (sct.erp_cls == 1)
+                        {
+                            //先计算末级数据的齐套时间。
+                            if (cilList.Count() > 0)
+                            {
+                                CalcIcitem(cilList, returnlist, bangid, input, sklist, plan_date, icitemlist, sentrys, childidList);
+                                sct.kitting_time = cilList.Max(s => s.kitting_time);
+                            }
+                            //走自制
+                            ProdExamineParamDto prodExamine = new ProdExamineParamDto()
+                            {
+                                bom_number = sct.bom_number,
+                                version = sct.version,
+                                packages = (int)sct.lack_qty,
+                                tenantId = param.tenantId,
+                                factoryId = param.factoryId
+                            };
+                            var minute = _productExamineAppService.ProductiveExamine(prodExamine);
+                            //系统建议完工日期为 开工日期+产能检查时间=完工日期
+                            var Day = minute.Result / (60 * 10); //返回的分钟除以十个小时得出工作天数;
+                            sct.kitting_time = sct.kitting_time.Value.AddDays((double)Day);
+                            sct.make_qty = sct.lack_qty;
+                            //todo:
+                            sct.make_list = new List<moorder>();
+                        }
+                        else if (sct.erp_cls == 3)
+                        {
+                            //采购申请
+                            var SRMPRDto = CreateSRMPR(sct, input.tenantId, input.factoryId, bangid, sct.erp_cls, leadTimeList, supplierList, planList, plan_date.Value);
+                            sct.purchase_qty = sct.lack_qty;
+                            sct.purchase_list = new List<purchase>();
+                            if (SRMPRDto.srm_Pr_Main != null)
+                            {
+                                purchase pur = new purchase();
+                                pur.pr_billno = SRMPRDto.srm_Pr_Main.pr_billno;
+                                pur.pr_purchasenumber = SRMPRDto.srm_Pr_Main.pr_purchasenumber;
+                                pur.pr_purchasename = SRMPRDto.srm_Pr_Main.pr_purchasename;
+                                pur.pr_rqty = SRMPRDto.srm_Pr_Main.pr_rqty;
+                                pur.pr_aqty = SRMPRDto.srm_Pr_Main.pr_aqty;
+                                pur.pr_sqty = SRMPRDto.srm_Pr_Main.pr_sqty;
+                                pur.pr_parrive_date = SRMPRDto.srm_Pr_Main.pr_parrive_date;
+                                pur.pr_rarrive_date = SRMPRDto.srm_Pr_Main.pr_rarrive_date;
+                                pur.pr_pur_affirm_date = SRMPRDto.srm_Pr_Main.pr_pur_affirm_date;
+                                pur.pr_sysprice = SRMPRDto.srm_Pr_Main.pr_sysprice;
+                                pur.pr_orderprice = SRMPRDto.srm_Pr_Main.pr_orderprice;
+                                pur.pr_price = SRMPRDto.srm_Pr_Main.pr_price;
+                                pur.pr_rate = SRMPRDto.srm_Pr_Main.pr_rate;
+                                sct.purchase_list.Add(pur);
+                            }
+                            sct.kitting_time = SRMPRDto.lastStartTmie;
+                            SRMPRDtoList.Add(SRMPRDto);
+                        }
+                        else if (sct.erp_cls == 2)
+                        {
+                            //先计算末级数据的齐套时间。
+                            if (cilList.Count() > 0)
+                            {
+                                CalcIcitem(cilList, returnlist, bangid, input, sklist, plan_date, icitemlist, sentrys, childidList);
+                                sct.kitting_time = cilList.Max(s => s.kitting_time);
+                            }
+                            //1.先生成委外工单。
+                            var mesorder = CreateMesOOder(sct, input.tenantId, input.factoryId, bangid, leadTimeList, supplierList, plan_date.Value);
+                            sct.subcontracting_qty = sct.lack_qty;
+                            sct.subcontracting_list = new List<ooder>();
+                            ooder oo = new ooder();
+                            oo.morder_production_number = mesorder.morder_production_number;
+                            oo.production_unit = mesorder.production_unit;
+                            oo.production_unit_code = mesorder.production_unit_code;
+                            oo.ooentry_prdname = mesorder.ooentry_prdname;
+                            oo.ooentry_stime = mesorder.ooentry_stime;
+                            oo.ooentry_etime = mesorder.ooentry_etime;
+                            oo.oorder_date = mesorder.oorder_date;
+                            oo.oorder_no = mesorder.oorder_no;
+                            item.subcontracting_list.Add(oo);
+                            sct.kitting_time = mesorder.ooentry_etime;
+                            orderList.Add(mesorder);
+                        }
                     }
+                    
                 }
             }
         }
@@ -759,11 +904,11 @@ namespace Business.ResourceExamineManagement
         /// <param name="item"></param>
         /// <param name="returnlist"></param>
         /// <param name="sklist"></param>
-        public void RecalculationStock(BomChildExamineDto item, List<BomChildExamineDto> returnlist, List<mo_ic_item_stockoccupy> sklist)
+        public void RecalculationStock(BomChildExamineDto item, List<BomChildExamineDto> returnlist, List<mo_ic_item_stockoccupy> sklist, long bangid)
         {
             //再计算一边占用情况,这里根据父级产品额缺料量*当前子料的使用数量-子料库存量。得出当前子物料的缺料数量
             var parent = returnlist.Find(s => s.id == item.parent_id);
-            decimal stockQty = sklist.Where(s => s.icitem_id == item.item_id).Sum(p => p.quantity);
+            decimal stockQty = sklist.Where(s => s.icitem_id == item.item_id && s.bang_id == bangid).Sum(p => p.quantity);
             item.sqty = item.sqty - stockQty;
             item.lack_qty = parent.lack_qty * item.qty - item.sqty;
             item.lack_qty = item.lack_qty > 0 ? item.lack_qty : 0;

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

@@ -425,7 +425,7 @@ namespace Business.ResourceExamineManagement
             //订单行资源检查明细list
             rtn.mordersList = _CalcBomViewAppService.mordersList;
             rtn.examines = examines;
-            rtn.sklist = sklist;
+            rtn.item_stockoccupy_list = sklist;
 
             //清空快照数据
             await ClearSnapShot(bangid);