|
|
@@ -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);
|
|
|
+ }
|
|
|
}
|
|
|
}
|