Kaynağa Gözat

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

Murphy 3 yıl önce
ebeveyn
işleme
b736604e78

+ 13 - 26
MicroServices/Business/Business.Application/ResourceExamineManagement/CalcBomViewAppService.cs

@@ -1,5 +1,6 @@
 using Business.Core.Enum;
 using Business.Core.MongoDBHelper;
+using Business.Core.Utilities;
 using Business.ResourceExamineManagement.Dto;
 using Bussiness.Model.MES.IC;
 using Bussiness.Model.Production;
@@ -35,15 +36,19 @@ namespace Business.ResourceExamineManagement
         public List<mo_mes_oorder> orderList = new List<mo_mes_oorder>();
 
         public List<mo_mes_morder> mordersList = new List<mo_mes_morder>();
+        public List<mo_mes_morder> mordersInsertList = new List<mo_mes_morder>();
         public List<mo_mes_moentry> moentriesList = new List<mo_mes_moentry>();
         public List<mo_mes_mooccupy> mooccupyAllList = new List<mo_mes_mooccupy>();
-        //public List<mo_srm_po_list> srm_po_list = new List<mo_srm_po_list>();
+        public List<mo_mes_mooccupy> mooccupyAllInsertList = new List<mo_mes_mooccupy>();
 
         public List<mo_srm_po_list> srm_Po_Lists = new List<mo_srm_po_list>();
         public List<mo_srm_po_occupy> srm_Po_Occupies = new List<mo_srm_po_occupy>();
+        public List<mo_srm_po_occupy> srm_Po_OccupiesInsert = new List<mo_srm_po_occupy>();
 
         public crm_seorder seorder = new crm_seorder();
 
+        SnowFlake help = new SnowFlake();
+
         /// <summary>
         /// 工艺路径
         /// </summary>
@@ -157,6 +162,7 @@ namespace Business.ResourceExamineManagement
                 if (mooccupylist.Any())
                 {
                     mooccupyAllList.AddRange(mooccupylist);
+                    mooccupyAllInsertList.AddRange(mooccupylist);
                     //在制占用明细
                     level1Dto.mo_occupy_list = new List<mo_occupy>();
                     mooccupylist.ForEach(s =>
@@ -297,6 +303,7 @@ namespace Business.ResourceExamineManagement
                     });
                     //批量保存 后期考虑子工单
                     mordersList.AddRange(mes_MorderDto.mes_Morders);
+                    mordersInsertList.AddRange(mes_MorderDto.mes_Morders);
                     moentriesList.AddRange(mes_MorderDto.mes_Moentries);
                 }
             }
@@ -879,29 +886,7 @@ namespace Business.ResourceExamineManagement
                             if (sct.lack_qty > 0)
                             {
                                 //采购申请
-                                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);
+                                PackageSRMPR(sct, input, bangid, plan_date);
                             }
                         }
                         else if (sct.erp_cls == 2)
@@ -933,7 +918,7 @@ namespace Business.ResourceExamineManagement
                                 sct.kitting_time = mesorder.ooentry_etime;
                                 orderList.Add(mesorder);
                                 //采购申请
-                                PackageSRMPR(item, input, bangid, plan_date);
+                                PackageSRMPR(sct, input, bangid, plan_date);
                             }
                         }
                     }
@@ -982,7 +967,7 @@ namespace Business.ResourceExamineManagement
                 return sRMPR;
                 //throw new NotImplementedException("未找到物料ic_factory_details或ic_item_pur或ic_plan信息!");
             }
-
+            srm_Pr.id = help.NextId();
             srm_Pr.GenerateNewId();
             srm_Pr.pr_billno = getOrderNum("PR");//pr单号
             srm_Pr.pr_mono = "";//关联工单号
@@ -1115,6 +1100,8 @@ namespace Business.ResourceExamineManagement
                     }
                     item.purchase_occupy_list.Add(ocp);
                 });
+                srm_Po_Occupies.AddRange(occupylist);
+                srm_Po_OccupiesInsert.AddRange(occupylist);
             }
         }
 

+ 3 - 0
MicroServices/Business/Business.Application/ResourceExamineManagement/MorderAppService.cs

@@ -127,6 +127,7 @@ namespace Business.ResourceExamineManagement
             //TODO:考虑性能问题 循环调用,后期改造传递数组,批量处理数据后,批量保存。
 
             mo_mes_morder mes_Morder = new mo_mes_morder();
+            mes_Morder.id = snowFlake.NextId();
             mes_Morder.mysql_id = snowFlake.NextId();
             mes_Morder.bang_id = generateMorderDto.bang_id;
             mes_Morder.morder_type = generateMorderDto.morder_type;
@@ -187,6 +188,7 @@ namespace Business.ResourceExamineManagement
             mes_Morder.remaining_number = 0;
             //生成工单子表数据
             mo_mes_moentry mes_Moentry = new mo_mes_moentry();
+            mes_Moentry.id = snowFlake.NextId();
             mes_Moentry.mysql_id = snowFlake.NextId();
             mes_Moentry.bang_id = generateMorderDto.bang_id;
             mes_Moentry.moentry_moid = mes_Morder.mysql_id;
@@ -438,6 +440,7 @@ namespace Business.ResourceExamineManagement
         {
             //生成mes_mooccupy工单占用表数据,代表多个工单被某个销售订单已占用。 
             mo_mes_mooccupy mes_Mooccupy = new mo_mes_mooccupy();
+            mes_Mooccupy.id = snowFlake.NextId();
             mes_Mooccupy.mysql_id = snowFlake.NextId();
             mes_Mooccupy.bang_id = bang_id;
             mes_Mooccupy.moo_id_type = MorderEnum.Zyjc_Type;

+ 9 - 5
MicroServices/Business/Business.Application/ResourceExamineManagement/ProductExamineAppService.cs

@@ -58,26 +58,29 @@ namespace Business.ResourceExamineManagement
         {
             if (param.packages <= 0)
             {
-                throw new NotImplementedException("产能计算参数有误!");
+                //throw new NotImplementedException("产能计算参数有误!");
             }
             //过滤数据
             //1.1、获取工艺路径数据
             mo_mes_technique curTech = techs.FirstOrDefault(p => p.bom == param.bom_number && p.bomver == param.version);
             if (curTech == null)
             {
-                throw new NotImplementedException("工艺路径不存在,请调整!");
+                return param.packages * 20;
+                //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("当前工艺路径没有配置工序,请调整!");
+                return param.packages * 20;
+                //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("工序数据不存在,请调整!");
+                return param.packages * 20;
+                //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)).ToList(); ;
@@ -86,7 +89,8 @@ namespace Business.ResourceExamineManagement
             List<mo_mes_tech_process> fistLevels = curTechProcess.Where(p => p.parentprocid == curTech.mysql_id).ToList();
             if (fistLevels.Count == 0)
             {
-                throw new NotImplementedException("当前工艺路径没有配置工序,请调整!");
+                return param.packages * 20;
+                //throw new NotImplementedException("当前工艺路径没有配置工序,请调整!");
             }
             //工艺预处理
             List<TechProcDto> teches = TechProcPretreatment(fistLevels,param.packages);

+ 3 - 2
MicroServices/Business/Business.Application/ResourceExamineManagement/PurchaseOrderAppService.cs

@@ -86,10 +86,10 @@ namespace Business.ResourceExamineManagement
             //查询出对应物料采购订单明细  --数据未被停用 && 评审通过后
             var poDetailList = mo_Srm_Po_Lists.Where(x => x.icitem_id == icitem_id);
             //采购订单占用数据
-            var poOccupys = srm_Po_Occupies.Where(x => poDetailList.Select(p => p.id).ToList().Contains(x.polist_id.GetValueOrDefault()));
+            var poOccupys = srm_Po_Occupies.Where(x => poDetailList.Select(p => p.id).ToList().Contains(x.polist_id));
             //先查询出满足日期,并且数量可满足占用的数据
             var poDetails = poDetailList.Where(x => x.rarrdate.GetValueOrDefault().AddDays(-(int)ic_Plan.self_inspection_date.GetValueOrDefault()) < DeliverDate && x.qty - x.rqty - x.esqty -
-                poOccupys.Where(p => p.polist_id.GetValueOrDefault() == x.mysql_id)?.Sum(m => m.qty) > Quantity).OrderByDescending(x => x.rarrdate).ToList();
+                poOccupys.Where(p => p.polist_id == x.mysql_id)?.Sum(m => m.qty) > Quantity).OrderByDescending(x => x.rarrdate).ToList();
             //未满足则查询出满足日期的订单
             if (poDetails.Count == 0)
             {
@@ -138,6 +138,7 @@ namespace Business.ResourceExamineManagement
         {
             //生成mo_srm_po_occupy采购占用表数据。 
             mo_srm_po_occupy srm_Po_Occupy = new mo_srm_po_occupy();
+            srm_Po_Occupy.id = 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;

+ 36 - 18
MicroServices/Business/Business.Application/ResourceExamineManagement/ResourceExamineAppService.cs

@@ -208,10 +208,6 @@ namespace Business.ResourceExamineManagement
         private List<mo_ic_item_pur> supplierList;
 
         private List<mo_ic_plan> planList;
-
-        private List<SRMPRDto> SRMPRDtoList = new List<SRMPRDto>();
-
-        private List<mo_mes_oorder> orderList = new List<mo_mes_oorder>();
         #endregion
 
         #region 构造函数
@@ -338,8 +334,7 @@ namespace Business.ResourceExamineManagement
             ExamineResult dtl;
 
             //生成当前计算bangid
-            SnowFlake snow = new SnowFlake();
-            long bangid = snow.NextId();
+            long bangid = help.NextId();
 
             //获取订单数据
             crm_seorder sorder = _mysql_crm_seorder.GetListAsync(p => p.tenant_id == input.tenantId && p.factory_id == input.factoryId && p.Id == input.sorderId && !p.IsDeleted).Result.FirstOrDefault();
@@ -411,7 +406,7 @@ namespace Business.ResourceExamineManagement
             //物料采购订单明细
             var poDetailList = await _srm_po_list.GetManyByCondition(x => boms.Select(p => p.icitem_id).ToList().Contains(x.icitem_id.Value) && x.state == 1 && x.rstate == 1 && !x.IsDeleted);
             //采购订单占用数据
-            var poOccupys = await _srm_po_occupy.GetManyByCondition(x => poDetailList.Select(p => p.id).ToList().Contains(x.polist_id.GetValueOrDefault()) && !x.IsDeleted);
+            var poOccupys = await _srm_po_occupy.GetManyByCondition(x => poDetailList.Select(p => p.id).ToList().Contains(x.polist_id) && !x.IsDeleted);
             #endregion
 
             //物料占用记录
@@ -484,19 +479,42 @@ namespace Business.ResourceExamineManagement
                 //添加订单行开工信息
                 examines.Add(dtl);
             }
-            if (_CalcBomViewAppService.mooccupyAllList.Any())
+            //批量保存 后期考虑子工单
+            if (_CalcBomViewAppService.mordersInsertList.Any())
             {
-                await _mes_mooccupy.InsertMany(_CalcBomViewAppService.mooccupyAllList);
+                await _mes_morder.InsertMany(_CalcBomViewAppService.mordersInsertList);
+                rtn.mordersList = _CalcBomViewAppService.mordersInsertList;
             }
-            //批量保存 后期考虑子工单
-            await _mes_morder.InsertMany(_CalcBomViewAppService.mordersList);
-            await _mes_moentry.InsertMany(_CalcBomViewAppService.moentriesList);
-
-            rtn.mooccupyAllList = _CalcBomViewAppService.mooccupyAllList;
-            rtn.srm_pr_list = _CalcBomViewAppService.SRMPRDtoList;
-            rtn.order_list = _CalcBomViewAppService.orderList;
-            //订单行资源检查明细list
-            rtn.mordersList = _CalcBomViewAppService.mordersList;
+            if (_CalcBomViewAppService.mooccupyAllInsertList.Any())
+            {
+                await _mes_mooccupy.InsertMany(_CalcBomViewAppService.mooccupyAllInsertList);
+                rtn.mooccupyAllList = _CalcBomViewAppService.mooccupyAllInsertList;
+            }
+            if (_CalcBomViewAppService.moentriesList.Any())
+            {
+                await _mes_moentry.InsertMany(_CalcBomViewAppService.moentriesList);
+            }
+            if (_CalcBomViewAppService.orderList.Any())
+            {
+                await _mes_oorder.InsertMany(_CalcBomViewAppService.orderList);
+                rtn.order_list = _CalcBomViewAppService.orderList;
+            }
+            if (sklist.Any())
+            {
+                sklist.ForEach(s => s.id = help.NextId());
+                await _ic_item_stockoccupy.InsertMany(sklist);
+            }
+            if (_CalcBomViewAppService.srm_Po_OccupiesInsert.Any())
+            {
+                await _srm_po_occupy.InsertMany(_CalcBomViewAppService.srm_Po_OccupiesInsert);
+            }
+            if (_CalcBomViewAppService.SRMPRDtoList.Any())
+            {
+                var prlist = _CalcBomViewAppService.SRMPRDtoList.Select(s => s.srm_Pr_Main).ToList();
+                await _srm_pr_main.InsertMany(prlist);
+                rtn.srm_pr_list = _CalcBomViewAppService.SRMPRDtoList;
+            }
+
             rtn.examines = examines;
             rtn.item_stockoccupy_list = sklist;
 

+ 2 - 2
MicroServices/Business/Business.Core/MongoDBHelper/IMongoDB.cs

@@ -1,4 +1,5 @@
-using MongoDB.Driver;
+using Amazon.Runtime.Documents;
+using MongoDB.Driver;
 using MongoDB.Driver.Linq;
 using System;
 using System.Collections.Generic;
@@ -79,6 +80,5 @@ namespace Business.Core.MongoDBHelper
         /// <param name="options"></param>
         /// <returns></returns>
         Task<BulkWriteResult<T>> BulkWrite(List<WriteModel<T>> updates, BulkWriteOptions options = null);
-
     }
 }

+ 34 - 0
MicroServices/Business/Business.HttpApi/Controllers/SnowFlakeController.cs

@@ -0,0 +1,34 @@
+using Business.Core.Utilities;
+using Business.ResourceExamineManagement;
+using Business.ResourceExamineManagement.Dto;
+using Microsoft.AspNetCore.Mvc;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Volo.Abp;
+using Volo.Abp.AspNetCore.Mvc;
+
+namespace Business.Controllers
+{
+    /// <summary>
+    /// 雪花算法接口
+    /// </summary>
+    [RemoteService]
+    [Area("Business")]
+    [Route("api/business/snowflake")]
+    public class SnowFlakeController : AbpController
+    {
+        /// <summary>
+        /// 雪花算法
+        /// </summary>
+        /// <returns></returns>
+        [HttpGet]
+        public long CreatePrimaryKey()
+        {
+            SnowFlake snow = new SnowFlake();
+            return snow.NextId();
+        }
+    }
+}

+ 1 - 0
MicroServices/Business/Business.Test/ProductExamineTest.cs

@@ -21,6 +21,7 @@ namespace Business.Test
         [Fact]
         public void ProductExamine()
         {
+            //dev合并master测试注释
             //Arrange
             var sut = new ProductExamineAppService();
             sut.techs = CreateTechnique();

+ 1 - 1
MicroServices/Business/Bussiness.MongoModel/SRM/mo_srm_po_list.cs

@@ -19,7 +19,7 @@ namespace Bussiness.MongoModel.SRM
         /// </summary>
         [Required]
         [Comment("po单id")]
-        public long? po_id { get; set; }
+        public long po_id { get; set; }
         /// <summary>
         /// po单号
         /// </summary>

+ 1 - 1
MicroServices/Business/Bussiness.MongoModel/SRM/mo_srm_po_occupy.cs

@@ -19,7 +19,7 @@ namespace Bussiness.MongoModel.SRM
         /// </summary>
         [Required]
         [Comment("采购订单id")]
-        public long? polist_id { get; set; }
+        public long polist_id { get; set; }
         /// <summary>
         /// 采购订单行号
         /// </summary>