Преглед изворни кода

Merge branch 'master' of http://123.60.180.165:4647/ZZYDOP/DOPCore

tangdi пре 3 година
родитељ
комит
ffa7d20960

+ 3 - 0
.gitignore

@@ -881,3 +881,6 @@ MicroServices/Business/Business.Test/obj/Debug/net6.0/Business.Test.GlobalUsings
 MicroServices/Business/Business.Test/obj/Debug/net6.0/Business.Test.pdb
 MicroServices/Business/Business.Test/obj/Debug/net6.0/ref/Business.Test.dll
 MicroServices/Business/Business.Test/obj/Debug/net6.0/refint/Business.Test.dll
+MicroServices/Business/Business.Tests/obj/Business.Host.csproj.nuget.dgspec.json
+MicroServices/Business/Business.Tests/obj/Business.Host.csproj.nuget.g.props
+MicroServices/Business/Business.Tests/obj/Business.Host.csproj.nuget.g.targets

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

@@ -25,20 +25,5 @@ namespace Business.ResourceExamineManagement.Dto
         /// 生产件数
         /// </summary>
         public int packages { get; set; }
-
-        /// <summary>
-        /// 企业id
-        /// </summary>
-        public long tenantId { get; set; }
-
-        /// <summary>
-        /// 工厂id
-        /// </summary>
-        public long factoryId { get; set; }
-
-        /// <summary>
-        /// 计算id
-        /// </summary>
-        public long bangId { get; set; }
     }
 }

+ 30 - 40
MicroServices/Business/Business.Application/ResourceExamineManagement/CalcBomViewAppService.cs

@@ -85,7 +85,16 @@ namespace Business.ResourceExamineManagement
             PurchaseOrderAppService purchaseOrderAppService)
         {
             _morderAppService = morderAppService;
+            _morderAppService.process = process;
+            _morderAppService.techs = techs;
+            _morderAppService.tech_Processes = tech_Processes;
+            _morderAppService.tech_Proc_Workshops = tech_Proc_Workshops;
+
             _productExamineAppService = productExamineAppService;
+            _productExamineAppService.process = process;
+            _productExamineAppService.techs = techs;
+            _productExamineAppService.tech_Processes = tech_Processes;
+            _productExamineAppService.tech_Proc_Workshops = tech_Proc_Workshops;
             _purchaseOrderAppService = purchaseOrderAppService;
         }
 
@@ -212,11 +221,6 @@ namespace Business.ResourceExamineManagement
                         bang_id = bangid,
 
                     };
-                    //工单添加工艺路径数据
-                    _morderAppService.techs = techs;//工艺路径
-                    _morderAppService.tech_Processes = tech_Processes;//工艺关联工序
-                    _morderAppService.process = process;//工序
-                    _morderAppService.tech_Proc_Workshops = tech_Proc_Workshops;//工艺工序关联工位
                     //生成主工单
                     mes_MorderDto = _morderAppService.GenerateMorder(generateMorderDto);
                 }
@@ -245,22 +249,15 @@ namespace Business.ResourceExamineManagement
                     if (!string.IsNullOrEmpty(mes_Morders.bom_number))
                     {
                         //var ProductiveDate = ProductiveExamine(mes_Morders.bom_number, level1Dto.version, (int)mes_Morders.morder_production_number.Value);
-                        //ProdExamineParamDto prodExamine = new ProdExamineParamDto()
-                        //{
-                        //    bom_number = mes_Morders.bom_number,
-                        //    version = level1Dto.version,
-                        //    packages = (int)mes_Morders.morder_production_number.Value,
-                        //    tenantId = param.tenantId,
-                        //    factoryId = param.factoryId
-
-                        //};
-                        _productExamineAppService.tech = techs.FirstOrDefault(p => p.bom == mes_Morders.bom_number && p.bomver == level1Dto.version);
-                        _productExamineAppService.tech_Processes = tech_Processes.Where(p => p.tech_id == _productExamineAppService.tech.mysql_id).ToList();
-                        _productExamineAppService.process = process.Where(p => _productExamineAppService.tech_Processes.Select(m => m.proc_id).Contains(p.mysql_id)).ToList();
-                        _productExamineAppService.tech_Proc_Workshops = tech_Proc_Workshops.Where(p => _productExamineAppService.tech_Processes.Select(m => m.mysql_id).Contains(p.tech_proc_id.GetValueOrDefault())).ToList();
+                        ProdExamineParamDto prodExamine = new ProdExamineParamDto()
+                        {
+                            bom_number = mes_Morders.bom_number,
+                            version = level1Dto.version,
+                            packages = (int)mes_Morders.morder_production_number.Value
+                        };
 
                         var plan = planList.Find(x => x.icitem_id == level1Dto.item_id);
-                        var ProductiveDate = _productExamineAppService.ProductiveExamine((int)mes_Morders.morder_production_number.Value);
+                        var ProductiveDate = _productExamineAppService.ProductiveExamine(prodExamine);
                         var Day = ProductiveDate / (60 * 10); //返回的分钟除以十个小时得出工作天数;
                         mes_Morders.moentry_sys_stime = level1Dto.kitting_time.Value.AddDays(1);//数据齐套完成后隔天开始生产;
                         //结束日期=开始时间+生产时长+自检提前期+入库提前期+发运提前期;
@@ -484,24 +481,16 @@ namespace Business.ResourceExamineManagement
                         }
                         item.make_qty = item.lack_qty;
                         //走自制
-                        //ProdExamineParamDto prodExamine = new ProdExamineParamDto()
-                        //{
-                        //    bom_number = item.bom_number,
-                        //    version = item.version,
-                        //    packages = (int)item.lack_qty,
-                        //    tenantId = param.tenantId,
-                        //    factoryId = param.factoryId
-
-                        //};
-                        //var minute = _productExamineAppService.ProductiveExamine(prodExamine);
-                        _productExamineAppService.tech = techs.FirstOrDefault(p => p.bom == item.bom_number && p.bomver == item.version);
-                        _productExamineAppService.tech_Processes = tech_Processes.Where(p => p.tech_id == _productExamineAppService.tech.mysql_id).ToList();
-                        _productExamineAppService.process = process.Where(p => _productExamineAppService.tech_Processes.Select(m => m.proc_id).Contains(p.mysql_id)).ToList();
-                        _productExamineAppService.tech_Proc_Workshops = tech_Proc_Workshops.Where(p => _productExamineAppService.tech_Processes.Select(m => m.mysql_id).Contains(p.tech_proc_id.GetValueOrDefault())).ToList();
+                        ProdExamineParamDto prodExamine = new ProdExamineParamDto()
+                        {
+                            bom_number = item.bom_number,
+                            version = item.version,
+                            packages = (int)item.lack_qty
+                        };
                         item.make_qty = item.lack_qty;
                         //todo:增加生成子工单后,这里需要加上生成的子工单的明细。
                         item.make_list = new List<moorder>();
-                        var minute = _productExamineAppService.ProductiveExamine((int)item.lack_qty);
+                        var minute = _productExamineAppService.ProductiveExamine(prodExamine);
                         //系统建议完工日期为 开工日期+产能检查时间=完工日期
                         var Day = minute / (60 * 10); //返回的分钟除以十个小时得出工作天数;
                         var ktime = item.kitting_time.Value.AddDays((double)Day);
@@ -876,12 +865,13 @@ namespace Business.ResourceExamineManagement
                                 sct.kitting_time = cilList.Max(s => s.kitting_time);
                             }
                             //走自制
-                            _productExamineAppService.tech = techs.FirstOrDefault(p => p.bom == sct.bom_number && p.bomver == sct.version);
-                            _productExamineAppService.tech_Processes = tech_Processes.Where(p => p.tech_id == _productExamineAppService.tech.mysql_id).ToList();
-                            _productExamineAppService.process = process.Where(p => _productExamineAppService.tech_Processes.Select(m => m.proc_id).Contains(p.mysql_id)).ToList();
-                            _productExamineAppService.tech_Proc_Workshops = tech_Proc_Workshops.Where(p => _productExamineAppService.tech_Processes.Select(m => m.mysql_id).Contains(p.tech_proc_id.GetValueOrDefault())).ToList();
-
-                            var minute = _productExamineAppService.ProductiveExamine((int)sct.lack_qty);
+                            ProdExamineParamDto prodExamine = new ProdExamineParamDto()
+                            {
+                                bom_number = sct.bom_number,
+                                version = sct.version,
+                                packages = (int)sct.lack_qty
+                            };
+                            var minute = _productExamineAppService.ProductiveExamine(prodExamine);
                             //系统建议完工日期为 开工日期+产能检查时间=完工日期
                             var Day = minute / (60 * 10); //返回的分钟除以十个小时得出工作天数;
                             sct.kitting_time = sct.kitting_time.Value.AddDays((double)Day);

+ 11 - 14
MicroServices/Business/Business.Application/ResourceExamineManagement/MorderAppService.cs

@@ -107,6 +107,10 @@ namespace Business.ResourceExamineManagement
             _mysql_crm_seorder = mysql_crm_seorder;
             _mysql_crm_seorderentry = mysql_crm_seorderentry;
             _productExamineAppService = productExamineAppService;
+            _productExamineAppService.process = process;
+            _productExamineAppService.techs = techs;
+            _productExamineAppService.tech_Processes = tech_Processes;
+            _productExamineAppService.tech_Proc_Workshops = tech_Proc_Workshops;
 
         }
         #endregion
@@ -148,20 +152,13 @@ namespace Business.ResourceExamineManagement
                 mes_Morder.moentry_sys_stime = generateMorderDto.moentry_sys_stime;
                 if (!string.IsNullOrEmpty(generateMorderDto.BomNumber))
                 {
-                    //ProdExamineParamDto prodExamine = new ProdExamineParamDto()
-                    //{
-                    //    bom_number = generateMorderDto.BomNumber,
-                    //    version = generateMorderDto.version,
-                    //    packages = (int)generateMorderDto.Quantity.GetValueOrDefault(),
-                    //    tenantId = generateMorderDto.seorderentry.tenant_id,
-                    //    factoryId = generateMorderDto.seorderentry.factory_id.GetValueOrDefault()
-                    //};
-                    _productExamineAppService.tech = techs.FirstOrDefault(p => p.bom == generateMorderDto.BomNumber && p.bomver == generateMorderDto.version);
-                    _productExamineAppService.tech_Processes = tech_Processes.Where(p => p.tech_id == _productExamineAppService.tech.mysql_id).ToList();
-                    _productExamineAppService.process = process.Where(p => _productExamineAppService.tech_Processes.Select(m => m.proc_id).Contains(p.mysql_id)).ToList();
-                    _productExamineAppService.tech_Proc_Workshops = tech_Proc_Workshops.Where(p => _productExamineAppService.tech_Processes.Select(m => m.mysql_id).Contains(p.tech_proc_id.GetValueOrDefault())).ToList();
-
-                    var ProductiveDate = _productExamineAppService.ProductiveExamine((int)generateMorderDto.Quantity.GetValueOrDefault());
+                    ProdExamineParamDto prodExamine = new ProdExamineParamDto()
+                    {
+                        bom_number = generateMorderDto.BomNumber,
+                        version = generateMorderDto.version,
+                        packages = (int)generateMorderDto.Quantity.GetValueOrDefault()
+                    };
+                    var ProductiveDate = _productExamineAppService.ProductiveExamine(prodExamine);
                     //系统建议完工日期为 开工日期+产能检查时间=完工日期
                     var Day = ProductiveDate / (60 * 10); //返回的分钟除以十个小时得出工作天数;
                     mes_Morder.moentry_sys_etime = mes_Morder.moentry_sys_stime.GetValueOrDefault().AddDays((double)Day);

+ 28 - 7
MicroServices/Business/Business.Application/ResourceExamineManagement/ProductExamineAppService.cs

@@ -23,7 +23,7 @@ namespace Business.ResourceExamineManagement
         /// <summary>
         /// 工艺路径
         /// </summary>
-        public mo_mes_technique tech = new mo_mes_technique();
+        public List<mo_mes_technique> techs = new List<mo_mes_technique>();
 
         /// <summary>
         /// 工艺关联工序
@@ -54,21 +54,42 @@ namespace Business.ResourceExamineManagement
         /// </summary>
         /// <param name="packages">件数</param>
         /// <returns>生产时长</returns>
-        public decimal ProductiveExamine(int packages)
+        public decimal ProductiveExamine(ProdExamineParamDto param)
         {
-            if (packages <= 0)
+            if (param.packages <= 0)
             {
                 throw new NotImplementedException("产能计算参数有误!");
             }
-            
-            //1、获取工艺路径下的第一层级工序:目前只考虑第一层级
-            List<mo_mes_tech_process> fistLevels = tech_Processes.Where(p => p.parentprocid == tech.mysql_id).ToList();
+            //过滤数据
+            //1.1、获取工艺路径数据
+            mo_mes_technique curTech = techs.FirstOrDefault(p => p.bom == param.bom_number && p.bomver == param.version);
+            if (curTech == null)
+            {
+                throw new NotImplementedException("工艺路径不存在,请调整!");
+            }
+            //1.2、获取工艺关联工序数据
+            List<mo_mes_tech_process> curTechProcess = tech_Processes.Where(p => p.tech_id == curTech.mysql_id).ToList();
+            if (curTechProcess.Count == 0)
+            {
+                throw new NotImplementedException("当前工艺路径没有配置工序,请调整!");
+            }
+            //1.3、获取工序数据
+            List<mo_mes_process> curProcess = process.Where(p => curTechProcess.Select(m => m.proc_id).Contains(p.mysql_id)).ToList();
+            if (curProcess.Count == 0)
+            {
+                throw new NotImplementedException("工序数据不存在,请调整!");
+            }
+            //1.4、获取工位数据
+            List<mo_mes_tech_proc_workshop> curWorkShops = tech_Proc_Workshops.Where(p=> curTechProcess.Select(m=>m.mysql_id).Contains(p.tech_proc_id.GetValueOrDefault())).ToList(); ;
+
+            //2、获取工艺路径下的第一层级工序:目前只考虑第一层级
+            List<mo_mes_tech_process> fistLevels = curTechProcess.Where(p => p.parentprocid == curTech.mysql_id).ToList();
             if (fistLevels.Count == 0)
             {
                 throw new NotImplementedException("当前工艺路径没有配置工序,请调整!");
             }
             //工艺预处理
-            List<TechProcDto> teches = TechProcPretreatment(fistLevels,packages);
+            List<TechProcDto> teches = TechProcPretreatment(fistLevels,param.packages);
             decimal sumTimes = teches.OrderByDescending(p => p.sumTimes).First().sumTimes;
             return sumTimes;
         }

+ 12 - 4
MicroServices/Business/Business.Test/ProductExamineTest.cs

@@ -23,12 +23,18 @@ namespace Business.Test
         {
             //Arrange
             var sut = new ProductExamineAppService();
-            sut.tech = CreateTechnique();
+            sut.techs = CreateTechnique();
             sut.process = CreateProcess();
             sut.tech_Processes = CreateTechProcess();
 
             //Act
-            var result =  sut.ProductiveExamine(1000);
+            ProdExamineParamDto prodExamine = new ProdExamineParamDto()
+            {
+                bom_number = "R650K",
+                version = "3.0",
+                packages = 1000
+            };
+            var result =  sut.ProductiveExamine(prodExamine);
             //Assert
             Xunit.Assert.Equal(14030, result);
         }
@@ -37,8 +43,9 @@ namespace Business.Test
         /// 创建工艺路径数据
         /// </summary>
         /// <returns></returns>
-        public mo_mes_technique CreateTechnique()
+        public List<mo_mes_technique> CreateTechnique()
         {
+            List<mo_mes_technique> techs = new List<mo_mes_technique>();
             mo_mes_technique info = new mo_mes_technique();
             info.id = 1111111111;
             info.mysql_id = 111111111111111;
@@ -47,7 +54,8 @@ namespace Business.Test
             info.bom = "R650K";
             info.bomver = "3.0";
             info.desc = "断路器";
-            return info;
+            techs.Add(info);
+            return techs;
         }
 
         /// <summary>