Forráskód Böngészése

工单编码修改

zhengly 2 éve
szülő
commit
0314052e11

+ 58 - 2
MicroServices/Business/Business.Application/ResourceExamineManagement/MorderAppService.cs

@@ -1,11 +1,13 @@
 using Business.Core.Enum;
 using Business.Core.Utilities;
+using Business.EntityFrameworkCore.SqlRepositories;
 using Business.Model.Production;
 using Business.Model.Sale;
 using Business.MongoModel.MES.IC;
 using Business.MongoModel.Production;
 using Business.MongoModel.Tech;
 using Business.ResourceExamineManagement.Dto;
+using Newtonsoft.Json.Linq;
 using System;
 using System.Collections.Generic;
 using System.Globalization;
@@ -97,6 +99,8 @@ namespace Business.ResourceExamineManagement
         /// </summary>
         public List<mo_mes_mooccupy> mo_Mes_Mooccupies = new List<mo_mes_mooccupy>();
 
+
+        private readonly ISqlRepository<rf_serialnumber> _rf_serialnumber;
         #endregion
         #region 构造函数
         /// <summary>
@@ -110,7 +114,8 @@ namespace Business.ResourceExamineManagement
             //IMongoDB<mo_mes_mooccupy> mo_mes_mooccupy,
             //IRepository<crm_seorder, long> mysql_crm_seorder,
             //IRepository<crm_seorderentry, long> mysql_crm_seorderentry,
-            ProductExamineAppService productExamineAppService
+            ProductExamineAppService productExamineAppService,
+            ISqlRepository<rf_serialnumber> rf_serialnumber
             )
         {
 
@@ -120,6 +125,7 @@ namespace Business.ResourceExamineManagement
             //_mysql_crm_seorder = mysql_crm_seorder;
             //_mysql_crm_seorderentry = mysql_crm_seorderentry;
             _productExamineAppService = productExamineAppService;
+            _rf_serialnumber = rf_serialnumber;
         }
         #endregion
 
@@ -148,7 +154,7 @@ namespace Business.ResourceExamineManagement
             //mes_Morder.morder_icitem_type
             mes_Morder.work_order_type = generateMorderDto.work_order_type;
             mes_Morder.morder_state = generateMorderDto.morder_state;
-            mes_Morder.morder_no = string.Format("VMO{0}", DateTime.Now.ToString("yyyyMMddhhmmss"));//测试编码
+            mes_Morder.morder_no = GetMaxSerialNumber(418022612537413);//WWPO
             mes_Morder.fms_number = generateMorderDto.ic_Item.fms_number;
             mes_Morder.bom_number = generateMorderDto.BomNumber;
             mes_Morder.fmodel = generateMorderDto.ic_Item.model;
@@ -497,5 +503,55 @@ namespace Business.ResourceExamineManagement
             mes_Mooccupy.factory_id = param.factoryId;
             return mes_Mooccupy;
         }
+
+        /// <summary>
+        /// 得到一个流水号的最大流水号
+        /// </summary>
+        /// <param name="id">流水号id</param>
+        /// <param name="formData">json数据,可以用json中的某个字段值作为通配符字替换流水号格式。</param>
+        /// <returns></returns>
+        public string GetMaxSerialNumber(long id, JObject? formData = null)
+        {
+            var modelList = _rf_serialnumber.Select(s => s.Id == id);
+            if (modelList == null && modelList.Count < 1)
+            {
+                return string.Empty;
+            }
+            var model = modelList[0];
+            int max = model.CurrentNumber + 1;
+            var date = DateTime.Now;
+            var lastDate = model.LastTime;
+            switch (model.NumberType)
+            {
+                case 1: //年流水
+                    if (date.Year > lastDate.Year)
+                    {
+                        max = 1;
+                    }
+                    break;
+                case 2: //月流水
+                    if (date.Year > lastDate.Year || date.Month > lastDate.Month)
+                    {
+                        max = 1;
+                    }
+                    break;
+                case 3: //日流水
+                    if (date.Year > lastDate.Year || date.Month > lastDate.Month || date.Day > lastDate.Day)
+                    {
+                        max = 1;
+                    }
+                    break;
+            }
+            string number = max.ToString().PadLeft(model.NumberSize, '0');
+            string serialNumber = string.IsNullOrWhiteSpace(model.Format) ? number
+                : model.Format.ContainsIgnoreCase("{number}")
+                ? model.Format.ReplaceIgnoreCase("{number}", number)
+                : model.Format + number;
+            //更新当前编号和最后时间
+            model.LastTime = date;
+            model.CurrentNumber = max;
+            _rf_serialnumber.Update(model);
+            return Wildcard.Replace(serialNumber, formData);
+        }
     }
 }

+ 1 - 1
MicroServices/Business/Business.Test/MorderTest.cs

@@ -23,7 +23,7 @@ namespace Business.Test
             //ProductExamine.techs = productExamineTest.CreateTechnique();
             //ProductExamine.process = productExamineTest.CreateProcess();
             //ProductExamine.tech_Processes = productExamineTest.CreateTechProcess();
-            var morder = new MorderAppService(ProductExamine);
+            //var morder = new MorderAppService(ProductExamine);
 
             //Act
             //ProdExamineParamDto prodExamine = new ProdExamineParamDto()