tangdi 3 лет назад
Родитель
Сommit
c91ab17848

+ 22 - 0
MicroServices/Business/Business.Application.Contracts/ResourceExamineManagement/ISerialNumberAppService.cs

@@ -0,0 +1,22 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Volo.Abp.Application.Services;
+
+namespace Business.ResourceExamineManagement
+{
+    /// <summary>
+    /// 流水号生成
+    /// </summary>
+    public interface ISerialNumberAppService : IApplicationService
+    {
+        /// <summary>
+        /// 生成流水号
+        /// </summary>
+        /// <param name="id"></param>
+        /// <returns></returns>
+        string GetSerialNumber(long id);
+    }
+}

+ 109 - 0
MicroServices/Business/Business.Application/ResourceExamineManagement/SerialNumberAppService.cs

@@ -0,0 +1,109 @@
+using Bussiness.Model.Sale;
+using Bussiness.Model.SystemData;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Text.RegularExpressions;
+using System.Threading.Tasks;
+using Volo.Abp.Application.Services;
+using Volo.Abp.Domain.Repositories;
+using XCZ.Extensions;
+using static Business.Permissions.BusinessPermissions;
+
+namespace Business.ResourceExamineManagement
+{
+    public class SerialNumberAppService : ApplicationService, ISerialNumberAppService
+    {
+        private readonly IRepository<sys_serial_number, long> _sys_serial_number;
+
+        public SerialNumberAppService(IRepository<sys_serial_number, long> sys_serial_number) {
+            _sys_serial_number = sys_serial_number;
+        }
+
+        /// <summary>
+        /// 流水号生成
+        /// </summary>
+        /// <param name="id"></param>
+        /// <returns></returns>
+        /// <exception cref="NotImplementedException"></exception>
+        public string GetSerialNumber(long id)
+        {
+            var model = Get(id);
+            if (model == null)
+            {
+                return string.Empty;
+            }
+            int max = model.current_number + 1;
+            var date = DateTime.Now;
+            var lastDate = model.last_time;
+            switch (model.number_type)
+            {
+                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;
+            }
+            model.last_time = date;
+            model.current_number = max;
+            string number = max.ToString().PadLeft(model.number_size, '0');
+            string sn = model.format;
+            sn = Replace(sn);
+            if (sn.Contains("{number}"))
+            {
+                sn = Regex.Replace(sn, "{number}", number);
+            }
+            Update(model);
+            return sn;
+        }
+
+        /// <summary>
+        /// 获取流水号规则配置信息
+        /// </summary>
+        /// <param name="id"></param>
+        /// <returns></returns>
+        private sys_serial_number Get(long id)
+        {
+            return _sys_serial_number.FindAsync(id).Result;
+        }
+
+        /// <summary>
+        /// 替换通配符
+        /// </summary>
+        private string Replace(string str)
+        {
+            if (str.Contains("{DateTime<"))
+            {
+                string key = str.Substring(str.IndexOf("{DateTime<") + 10);
+                string key1 = key.Substring(0, key.IndexOf(">}"));
+                if (!string.IsNullOrWhiteSpace(key1))
+                {
+                    string newChar = DateTime.Now.ToString(key1);
+                    string old = "{DateTime<" + key1 + ">}";
+                    return str.Replace(old, newChar);
+                }
+            }
+            return str;
+        }
+
+        public void Update(sys_serial_number model)
+        {
+            _sys_serial_number.UpdateAsync(model);
+        }
+
+    }
+}

+ 1 - 0
MicroServices/Business/Business.EntityFrameworkCore/EntityFrameworkCore/BusinessDbContext.cs

@@ -110,6 +110,7 @@ namespace Business.EntityFrameworkCore
         public DbSet<sys_shift_schedule> sys_shift_schedule { get; set; }
         public DbSet<sys_staff> sys_staff { get; set; }
         public DbSet<sys_upload> sys_upload { get; set; }
+        public DbSet<sys_serial_number> sys_serial_number { get; set; }
         #endregion
 
         #region Tech

+ 41 - 0
MicroServices/Business/Business.HttpApi/Controllers/SerialNumberController.cs

@@ -0,0 +1,41 @@
+using Business.Core.Utilities;
+using Business.ResourceExamineManagement;
+using Bussiness.Model.SystemData;
+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;
+using static Business.Permissions.BusinessPermissions;
+
+namespace Business.Controllers
+{
+    /// <summary>
+    /// 流水号生成接口
+    /// </summary>
+    [RemoteService]
+    [Area("Business")]
+    [Route("api/business/serialnumber")]
+    public class SerialNumberController : AbpController
+    {
+        private readonly ISerialNumberAppService _SerialNumberAppService;
+
+        public SerialNumberController(ISerialNumberAppService SerialNumberAppService)
+        {
+            _SerialNumberAppService = SerialNumberAppService;
+        }
+
+        /// <summary>
+        /// 自动生成流水号
+        /// </summary>
+        /// <returns></returns>
+        [HttpGet]
+        public string GetSerialNumber(long id)
+        {
+            return _SerialNumberAppService.GetSerialNumber(id);
+        }
+    }
+}

+ 58 - 0
MicroServices/Business/Bussiness.Model/SystemData/sys_serial_number.cs

@@ -0,0 +1,58 @@
+using Business.Core.Attributes;
+using Business.Model;
+using Microsoft.EntityFrameworkCore;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Bussiness.Model.SystemData
+{
+    /// <summary>
+    /// 流水号配置管理表
+    /// </summary>
+    [CollectionName("dopbiz", "sys_serial_number")]
+    [Comment("采购订单明细详情")]
+    public class sys_serial_number : BaseEntity
+    {
+        /// <summary>
+		/// 标题
+		/// </summary>
+        [StringLength(80)]
+        [Comment("标题")]
+        public string? title { get; set; }
+
+        /// <summary>
+        /// 格式
+        /// </summary>
+        [StringLength(200)]
+        [Comment("格式")]
+        public string? format { get; set; }
+
+        /// <summary>
+        /// 位数
+        /// </summary>
+        [Comment("位数")]
+        public int number_size { get; set; }
+
+        /// <summary>
+        /// 当前值
+        /// </summary>
+        [Comment("当前值")]
+        public int current_number { get; set; }
+
+        /// <summary>
+        /// 类型 0:不重置 1:年流水 2:月流水 3:日流水
+        /// </summary>
+        [Comment("类型")]
+        public int number_type { get; set; }
+
+        /// <summary>
+        /// 最后更新日期
+        /// </summary>
+        [Comment("最后更新日期")]
+        public DateTime last_time { get; set; }
+    }
+}