| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- using Business.Core.Utilities;
- using Business.EntityFrameworkCore;
- using Business.ResourceExamineManagement.Dto;
- using Microsoft.EntityFrameworkCore;
- using Microsoft.Extensions.Configuration;
- using System;
- using System.Collections.Generic;
- using System.Globalization;
- using System.Linq;
- using Volo.Abp.Application.Services;
- namespace Business.ResourceExamineManagement
- {
- public class SerialNumberAppService : ApplicationService
- {
- private readonly BusinessDbContext _businessDbContext;
- public SerialNumberAppService(BusinessDbContext businessDbContext) {
- _businessDbContext = businessDbContext;
- }
- /// <summary>
- /// 流水号生成
- /// </summary>
- /// <param name="id"></param>
- /// <returns></returns>
- /// <exception cref="NotImplementedException"></exception>
- public string GetSerialNumber(long id)
- {
- string sn = string.Empty;
- if (id > long.MinValue)
- {
- IConfiguration configuration = new ConfigurationBuilder().SetBasePath(Environment.CurrentDirectory).AddJsonFile("appsettings.json").Build();
- var tfSite = configuration["appSettings:ThinkFlow"];
- string url = tfSite + "/ThinkFlowApi/SerialNumber/GetMaxSerialNumber?id=" + id.ToString();
- /*JObject jobect = new() {
- { "id", id }
- };
- string postJson = jobect.ToString();*/
- string json = HttpHelper.HttpPost(url, "");
- sn = json;
- }
- return sn;
- }
- /// <summary>
- /// 获取单号
- /// </summary>
- /// <param name="domain"></param>
- /// <param name="NbrType">类型</param>
- /// <param name="Increment">步长</param>
- /// <param name="UserNo">用户账号</param>
- /// <param name="IsDopCall"></param>
- /// <returns></returns>
- public List<GetNbr> GetBillNo(string domain, string NbrType, int Increment, string UserNo, int IsDopCall)
- {
- string sql = string.Format("CALL pr_SFM_GetOrdNbr('{0}', '{1}', {2}, '{3}', {4}, @NbrResult);", domain, NbrType, Increment, UserNo, IsDopCall);
- var getnbr = _businessDbContext.GetNbr.FromSqlRaw(sql).ToList();
- return getnbr;
- }
- /// <summary>
- /// 获取序列号(与存储过程 pr_SFM_GetSequenceID 等价的本地实现,不再调用数据库)。
- /// 时间格式:yyMMddHHmmss + 毫秒(3位) + 随机数(3位),再转为数值;IsDopCall=1 时返回首条为 base+1(与过程插入顺序一致);IsDopCall≠1 时与原 EF 无行一致返回空字符串。
- /// </summary>
- /// <param name="domain">域(过程中若 NULL 会置为 1000;原过程未参与数值计算,此处仅保留默认行为)。</param>
- /// <param name="Increment">步长;≤0 时按 1 处理。</param>
- /// <param name="IsDopCall">为 1 时返回与过程首行一致(base+1)。</param>
- /// <returns></returns>
- public string GetSeqIdList(string domain, int Increment, int IsDopCall)
- {
- if (domain == null)
- {
- domain = "1000";
- }
- if (Increment <= 0)
- {
- Increment = 1;
- }
- var now = DateTime.Now;
- var timePart = now.ToString("yyMMddHHmmss", CultureInfo.InvariantCulture);
- var msPart = now.Millisecond.ToString("D3", CultureInfo.InvariantCulture);
- var randPart = Random.Shared.Next(0, 1000).ToString("D3", CultureInfo.InvariantCulture);
- var v_Time = string.Concat(timePart, msPart, randPart);
- if (!ulong.TryParse(v_Time, NumberStyles.Integer, CultureInfo.InvariantCulture, out var p_SequenceId))
- {
- return string.Empty;
- }
- if (IsDopCall == 1)
- {
- return (p_SequenceId + 1).ToString(CultureInfo.InvariantCulture);
- }
- // 与原过程在非 Dop 调用时不返回结果集、FromSqlRaw 得到空列表的行为一致
- return string.Empty;
- }
- }
- }
|