tangdi 2 лет назад
Родитель
Сommit
011592f162

+ 5 - 0
MicroServices/Business/Business.Application.Contracts/ResourceExamineManagement/Dto/GenerateMorderDto.cs

@@ -61,5 +61,10 @@ namespace Business.ResourceExamineManagement.Dto
         /// 计算ID
         /// </summary>
         public long bang_id { get; set; }
+
+        /// <summary>
+        /// 工单编号
+        /// </summary>
+        public string morder_no { get; set; }
     }
 }

+ 12 - 0
MicroServices/Business/Business.Application/ReplenishmentManagement/ReplenishmentAppService.cs

@@ -3277,6 +3277,17 @@ namespace Business.Replenishment
             
             DataInitialization(boms, bangid, icitemlist, stocklist, pretreatments, sklist);
             _CalcBomViewAppService.param = param;
+
+            List<string> GenerateMoList = new List<string>();
+            var moNbrlistDto = _serialNumberAppService.GetBillNo(input.factoryId.ToString(), "M5", mo_Mes_Morders.Count, "", 1);
+            if (moNbrlistDto.Any())
+            {
+                foreach (var nbr in moNbrlistDto)
+                {
+                    GenerateMoList.Add(nbr.NbrResult);
+                }
+            }
+            _CalcBomViewAppService.GenerateMoList = GenerateMoList;
             foreach (var item in mo_Mes_Morders)
             {
                 var moentry = mo_Mes_Moentries.Find(s => s.moentry_moid == item.Id);
@@ -3314,6 +3325,7 @@ namespace Business.Replenishment
                 _CalcBomViewAppService.newStockOccList = new List<mo_ic_item_stockoccupy>();
                 _CalcBomViewAppService.mes_morder = item;
                 _CalcBomViewAppService.morder_type = item.morder_type;
+               
                 //库存初始化
                 _CalcBomViewAppService.BomStock(getBomList, stocklist, bangid);
 

+ 25 - 3
MicroServices/Business/Business.Application/ResourceExamineManagement/CalcBomViewAppService.cs

@@ -45,6 +45,7 @@ namespace Business.ResourceExamineManagement
 
         public DateTime quarter_starttime;
         public DateTime quarter_endtime;
+        public List<string> GenerateMoList = new List<string>();
 
         /// <summary>
         /// 是否正排
@@ -302,6 +303,12 @@ namespace Business.ResourceExamineManagement
                             //设置成品的生产时长为子物料的提前准备期
                             //param.checkflag=true 销售订单产生工单
                             level1Dto.make_qty = level1Dto.lack_qty;
+                            string order_mo = "";
+                            if (GenerateMoList.Any())
+                            {
+                                order_mo = GenerateMoList[0];
+                                GenerateMoList.Remove(order_mo);
+                            }
                             //生成主工单
                             GenerateMorderDto generateMorderDto = new GenerateMorderDto()
                             {
@@ -315,7 +322,8 @@ namespace Business.ResourceExamineManagement
                                 morder_type = morder_type,
                                 work_order_type = MorderEnum.CgMorder,
                                 morder_state = MorderEnum.Initial_state,
-                                bang_id = bangid
+                                bang_id = bangid,
+                                morder_no = order_mo
                             };
                             CreateMainOrder(generateMorderDto, level1Dto, childList, returnlist, bangid, plan_date, sklist, sentrys, icitemlist, make_time);
                         }
@@ -752,6 +760,12 @@ namespace Business.ResourceExamineManagement
                         //如果是特殊工单,只判断自制件的库存和在制,而不生成自制
                         if (!tsWork.Contains(mes_morder.morder_type))
                         {
+                            string order_mo = "";
+                            if (GenerateMoList.Any())
+                            {
+                                order_mo = GenerateMoList[0];
+                                GenerateMoList.Remove(order_mo);
+                            }
                             GenerateMorderDto generateMorderDto = new GenerateMorderDto()
                             {
                                 seorderentry = sentrys,
@@ -765,7 +779,8 @@ namespace Business.ResourceExamineManagement
                                 work_order_type = MorderEnum.CgMorder,
                                 morder_state = MorderEnum.Initial_state,
                                 ParentId = mes_morder.Id,
-                                bang_id = bangid
+                                bang_id = bangid,
+                                morder_no= order_mo
                             };
                             Mes_MorderDto mes_MorderDto = _morderAppService.GenerateMorder(generateMorderDto);
 
@@ -1307,6 +1322,12 @@ namespace Business.ResourceExamineManagement
                                 {
                                     //TODO:需要按标准UPH来计算生产时长
                                     //生成主工单
+                                    string order_mo = "";
+                                    if (GenerateMoList.Any())
+                                    {
+                                        order_mo = GenerateMoList[0];
+                                        GenerateMoList.Remove(order_mo);
+                                    }
                                     GenerateMorderDto generateMorderDto = new GenerateMorderDto()
                                     {
                                         seorderentry = sentrys,
@@ -1320,7 +1341,8 @@ namespace Business.ResourceExamineManagement
                                         work_order_type = MorderEnum.CgMorder,
                                         morder_state = MorderEnum.Initial_state,
                                         ParentId = mes_morder.Id,
-                                        bang_id = bangid
+                                        bang_id = bangid,
+                                        morder_no = order_mo
                                     };
                                     Mes_MorderDto mes_MorderDto = _morderAppService.GenerateMorder(generateMorderDto);
                                     ProdExamineParamDto prodExamine = new ProdExamineParamDto()

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

@@ -152,15 +152,22 @@ namespace Business.ResourceExamineManagement
             //mes_Morder.morder_icitem_type
             mes_Morder.work_order_type = generateMorderDto.work_order_type;
             mes_Morder.morder_state = generateMorderDto.morder_state;
-            
-            var nbrlistDto = _serialNumberAppService.GetBillNo(param.factoryId.ToString(), "M5", 1, "", 1);
-            if (nbrlistDto.Any())
+
+            if (string.IsNullOrEmpty(generateMorderDto.morder_no))
             {
-                mes_Morder.morder_no = nbrlistDto[0].NbrResult;
+                var nbrlistDto = _serialNumberAppService.GetBillNo(param.factoryId.ToString(), "M5", 1, "", 1);
+                if (nbrlistDto.Any())
+                {
+                    mes_Morder.morder_no = nbrlistDto[0].NbrResult;
+                }
             }
             else {
-                //补救
-                mes_Morder.morder_no = GetMaxSerialNumber(418022612537413);//WWPO
+                mes_Morder.morder_no = generateMorderDto.morder_no;
+            }
+            if (string.IsNullOrEmpty(mes_Morder.morder_no))
+            {
+                //补救措施,使用雪花ID作为主键。
+                mes_Morder.morder_no = GetMaxSerialNumber(418022612537413);
             }
             mes_Morder.fms_number = generateMorderDto.ic_Item.fms_number;
             mes_Morder.bom_number = generateMorderDto.BomNumber;
@@ -381,7 +388,7 @@ namespace Business.ResourceExamineManagement
             var modelList = _rf_serialnumber.Select(s => s.Id == id);
             if (modelList == null || modelList.Count < 1)
             {
-                return string.Empty;
+                return snowFlake.NextId().ToString();
             }
             var model = modelList[0];
             int max = model.CurrentNumber + 1;

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

@@ -726,7 +726,16 @@ namespace Business.ResourceExamineManagement
             List<KittingTimeDto> kittingTimes = new List<KittingTimeDto>();
             DataInitialization(boms, bangid, icitemlist, stocklist, pretreatments, sklist);
 
-            
+            List<string> GenerateMoList = new List<string>();
+            var moNbrlistDto = _serialNumberAppService.GetBillNo(input.factoryId.ToString(), "M5", sentrys.Count, "", 1);
+            if (moNbrlistDto.Any())
+            {
+                foreach (var nbr in moNbrlistDto)
+                {
+                    GenerateMoList.Add(nbr.NbrResult);
+                }
+            }
+            _CalcBomViewAppService.GenerateMoList = GenerateMoList;
             foreach (var sorder in sorders)
             {
                 param.sorderId = sorder.Id;
@@ -3349,6 +3358,18 @@ namespace Business.ResourceExamineManagement
             _morderAppService.param = param;
             _purchaseOrderAppService.param = param;
             _CalcBomViewAppService.param = param;
+
+            List<string> GenerateMoList = new List<string>();
+            /*var moNbrlistDto = _serialNumberAppService.GetBillNo(input.factoryId.ToString(), "M5", priorityMorderList.Count, "", 1);
+            if (moNbrlistDto.Any())
+            {
+                foreach (var nbr in moNbrlistDto)
+                {
+                    GenerateMoList.Add(nbr.NbrResult);
+                }
+            }*/
+            _CalcBomViewAppService.GenerateMoList = GenerateMoList;
+
             foreach (var item in priorityMorderList)
             {
                 var moentry = mo_Mes_Moentries.Find(s => s.moentry_moid == item.Id);