tangdi 3 жил өмнө
parent
commit
cb5960c04e

+ 109 - 92
MicroServices/Business/Business.Application/ResourceExamineManagement/CalcBomViewAppService.cs

@@ -501,64 +501,45 @@ namespace Business.ResourceExamineManagement
                 else if (item.erp_cls == 3)
                 {
                     //先找在途
-                    _purchaseOrderAppService.mo_Srm_Po_Lists = srm_Po_Lists;
-                    _purchaseOrderAppService.srm_Po_Occupies = srm_Po_Occupies;
                     CalcInTransit(sentrys, item, bangid, plan_date.GetValueOrDefault());
                     if (item.lack_qty > 0)
                     {
                         //采购申请
-                        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);
+                        PackageSRMPR(item, input, bangid, plan_date);
                     }
                 }
                 else if (item.erp_cls == 2)
                 {
                     //先找在途
-
-
-                    //先计算末级数据的齐套时间。
-                    if (cilList.Count() > 0)
+                    CalcInTransit(sentrys, item, bangid, plan_date.GetValueOrDefault());
+                    if (item.lack_qty > 0)
                     {
-                        CalcIcitem(cilList, returnlist, bangid, input, sklist, plan_date, icitemlist, sentrys, childidList);
-                        item.kitting_time = cilList.Max(s => s.kitting_time);
+                        //先计算末级数据的齐套时间。
+                        if (cilList.Count() > 0)
+                        {
+                            CalcIcitem(cilList, returnlist, bangid, input, sklist, plan_date, icitemlist, sentrys, childidList);
+                            item.kitting_time = cilList.Max(s => s.kitting_time);
+                        }
+                        //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);
+                        //2.生成采购申请
+                        //采购申请
+                        PackageSRMPR(item, input, bangid, plan_date);
                     }
-                    //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);
                 }
             }
             else
@@ -882,59 +863,66 @@ namespace Business.ResourceExamineManagement
                         else if (sct.erp_cls == 3)
                         {
                             //先找在途
-                            _purchaseOrderAppService.mo_Srm_Po_Lists = srm_Po_Lists;
-                            _purchaseOrderAppService.srm_Po_Occupies = srm_Po_Occupies;
                             CalcInTransit(sentrys, sct, bangid, plan_date.GetValueOrDefault());
-
-                            //采购申请
-                            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)
+                            if (sct.lack_qty > 0)
                             {
-                                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);
+                                //采购申请
+                                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);
                             }
-                            sct.kitting_time = SRMPRDto.lastStartTmie;
-                            SRMPRDtoList.Add(SRMPRDto);
                         }
                         else if (sct.erp_cls == 2)
                         {
-                            //先计算末级数据的齐套时间。
-                            if (cilList.Count() > 0)
+                            //先找在途
+                            CalcInTransit(sentrys, sct, bangid, plan_date.GetValueOrDefault());
+                            if (sct.lack_qty > 0)
                             {
-                                CalcIcitem(cilList, returnlist, bangid, input, sklist, plan_date, icitemlist, sentrys, childidList);
-                                sct.kitting_time = cilList.Max(s => s.kitting_time);
+                                //先计算末级数据的齐套时间。
+                                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);
+                                //采购申请
+                                PackageSRMPR(item, input, bangid, plan_date);
                             }
-                            //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);
                         }
                     }
 
@@ -1101,6 +1089,7 @@ namespace Business.ResourceExamineManagement
                 item.purchase_occupy_qty = occqty;
                 item.lack_qty -= occqty;
                 item.purchase_occupy_list = new List<purchase_occupy>();
+                item.kitting_time = occupylist[0].etime;
                 occupylist.ForEach(s => {
                     purchase_occupy ocp = new purchase_occupy();
                     ocp.stime = s.stime;
@@ -1116,5 +1105,33 @@ namespace Business.ResourceExamineManagement
                 });
             }
         }
+
+        public void PackageSRMPR(BomChildExamineDto item, SeorderentryDto input,long bangid,DateTime? plan_date)
+        {
+            //采购申请
+            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);
+        }
     }
 }

+ 2 - 2
MicroServices/Business/Business.Application/ResourceExamineManagement/ProductExamineAppService.cs

@@ -191,7 +191,7 @@ namespace Business.ResourceExamineManagement
             //记录当前工序耗时
             StartTimeDto dto = new StartTimeDto();
             //添加耗时记录
-            dto.tech_id = proc.tech_id.GetValueOrDefault();
+            dto.tech_id = proc.tech_id;
             dto.proc_id = proc.proc_id.GetValueOrDefault();
             dto.nextproc_id = proc.nextprocid;
             if (proc.wctype == 1)//人工型:数量/uph(一小时生产数量)*60(小时转换为分钟)/wsinuse(工位数)
@@ -239,7 +239,7 @@ namespace Business.ResourceExamineManagement
             {
                 dto = new StartTimeDto();
                 //添加耗时记录
-                dto.tech_id = chd.tech_id.GetValueOrDefault();
+                dto.tech_id = chd.tech_id;
                 dto.proc_id = chd.proc_id.GetValueOrDefault();
                 dto.nextproc_id = chd.nextprocid;
 

+ 12 - 5
MicroServices/Business/Business.Application/ResourceExamineManagement/ResourceExamineAppService.cs

@@ -193,6 +193,11 @@ namespace Business.ResourceExamineManagement
         /// </summary>
         private readonly PretreatmentAppService _pretreatmentAppService;
 
+        /// <summary>
+        /// 在途检查
+        /// </summary>
+        private readonly PurchaseOrderAppService _purchaseOrderAppService;
+
         /// <summary>
         /// 计算BOM平铺物料情况
         /// </summary>
@@ -261,7 +266,8 @@ namespace Business.ResourceExamineManagement
             IRepository<ic_item_pur, long> mysql_ic_item_pur,
             IRepository<ic_plan, long> mysql_ic_plan,
             PretreatmentAppService pretreatmentAppService,
-            CalcBomViewAppService calcbomviewAppService
+            CalcBomViewAppService calcbomviewAppService,
+            PurchaseOrderAppService purchaseOrderAppService
             )
         {
             _mes_technique = mes_technique;
@@ -307,6 +313,7 @@ namespace Business.ResourceExamineManagement
             _mysql_ic_plan = mysql_ic_plan;
             _pretreatmentAppService = pretreatmentAppService;
             _CalcBomViewAppService = calcbomviewAppService;
+            _purchaseOrderAppService = purchaseOrderAppService;
         }
         #endregion
 
@@ -375,14 +382,14 @@ namespace Business.ResourceExamineManagement
 
             #region 1、数据准备
             //1.1、获取工艺路径数据
-            List<mo_mes_technique> techs = GetMesTechniques(boms);
+            List<mo_mes_technique> techs = GetMesTechniques(bomlist);
             if (techs.Count == 0)
             {
                 throw new NotImplementedException("请先配置工艺路径!");
             }
 
             //1.2、获取工艺路径关联工序数据
-            List<mo_mes_tech_process> tech_Processes = await _mes_tech_process.GetManyByCondition(p => techs.Select(m => m.mysql_id).ToList().Contains(p.tech_id.GetValueOrDefault()) && p.tenant_id == param.tenantId && p.factory_id == param.factoryId && !p.IsDeleted);
+            List<mo_mes_tech_process> tech_Processes = await _mes_tech_process.GetManyByCondition(p => techs.Select(m => m.mysql_id).ToList().Contains(p.tech_id) && p.tenant_id == param.tenantId && p.factory_id == param.factoryId && !p.IsDeleted);
             if (tech_Processes.Count == 0)
             {
                 throw new NotImplementedException("请先配置工序!");
@@ -440,8 +447,8 @@ namespace Business.ResourceExamineManagement
             _CalcBomViewAppService.mooccupyAllList = mes_mooccupyList;//工单占用表
             _CalcBomViewAppService.srm_po_list = srm_po_list;
 
-            _CalcBomViewAppService.srm_Po_Lists = poDetailList;
-            _CalcBomViewAppService.srm_Po_Occupies = poOccupys;
+            _purchaseOrderAppService.mo_Srm_Po_Lists = poDetailList;
+            _purchaseOrderAppService.srm_Po_Occupies = poOccupys;
 
             foreach (var item in sentrys)
             {

+ 3 - 3
MicroServices/Business/Business.Core/MongoDBHelper/MongoDBTools.cs

@@ -36,14 +36,14 @@ namespace Business.Core.MongoDBHelper
         public MongoDBTools(IOptionsSnapshot<Config> config)
         {
             _config = config;
-            //数据库链接
-            MongoClient client = new MongoClient(config.Value.connectstring);
-
+            
             collectonName = typeof(T).GetCustomAttributes(typeof(CollectionNameAttribute), true).FirstOrDefault() as CollectionNameAttribute;
             if (collectonName == null)
             {
                 throw new NotImplementedException("请配置Attribute属性!");
             }
+            //数据库链接
+            MongoClient client = new MongoClient(config.Value.connectstring + collectonName.DatabaseName);
             //数据库
             dataBase = client.GetDatabase(collectonName.DatabaseName);
             //表名

+ 1 - 1
MicroServices/Business/Business.Host/appsettings.json

@@ -4,7 +4,7 @@
   },
   "ConnectionStrings": {
     "Default": "Server=123.60.180.165;Database=dopbiz;Uid=root; Pwd=5heng=uN;Allow User Variables=true",
-    "MongoDB": "mongodb://zzydop:h1Q$us3r@123.60.180.165/dopbase",
+    "MongoDB": "mongodb://zzydop:h1Q$us3r@123.60.180.165/",
     "DBName": "dopbase"
   },
   "Redis": {

+ 1 - 1
MicroServices/Business/Bussiness.MongoModel/Tech/mo_mes_tech_process.cs

@@ -25,7 +25,7 @@ namespace Bussiness.MongoModel.Tech
         /// </summary>
         [Required]
         [Comment("工艺主键")]
-        public long? tech_id { get; set; }
+        public long tech_id { get; set; }
 
         /// <summary>
         /// 工序主键