日志

parent 079d5d4b
using System; using FluentValidation.AspNetCore;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using FluentValidation.AspNetCore;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options; using Microsoft.Extensions.Options;
using Performance.DtoModels; using Performance.DtoModels;
using Performance.DtoModels.AppSettings; using Performance.DtoModels.AppSettings;
using Performance.Infrastructure; using Performance.Infrastructure;
using Performance.Services; using Performance.Services;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace Performance.Api.Controllers namespace Performance.Api.Controllers
{ {
[Route("api/[controller]")] [Route("api/[controller]")]
public class ModExtractController : Controller public class ModExtractController : Controller
{ {
private readonly ILogger<ModExtractController> logger;
private ModExtractService modExtractService; private ModExtractService modExtractService;
private WebapiUrl url; private WebapiUrl url;
public ModExtractController(ModExtractService modExtractService, public ModExtractController(
ILogger<ModExtractController> logger,
ModExtractService modExtractService,
IOptions<WebapiUrl> url) IOptions<WebapiUrl> url)
{ {
this.logger = logger;
this.modExtractService = modExtractService; this.modExtractService = modExtractService;
this.url = url.Value; this.url = url.Value;
} }
...@@ -155,7 +160,7 @@ public ApiResponse AddItem([FromBody]ItemListRequest request) ...@@ -155,7 +160,7 @@ public ApiResponse AddItem([FromBody]ItemListRequest request)
[HttpPost] [HttpPost]
public ApiResponse Items([FromBody]ModItemRequest request) public ApiResponse Items([FromBody]ModItemRequest request)
{ {
LogHelper.Information(url.HttpPost + "/modextract/items", "请求地址"); logger.LogInformation($"请求地址 {url.HttpPost}/modextract/items");
HttpHelper.HttpPost(url.HttpPost + "/modextract/items", JsonHelper.Serialize(request), true); HttpHelper.HttpPost(url.HttpPost + "/modextract/items", JsonHelper.Serialize(request), true);
var list = modExtractService.Items(request.ModuleId.Value); var list = modExtractService.Items(request.ModuleId.Value);
return new ApiResponse(ResponseType.OK, list); return new ApiResponse(ResponseType.OK, list);
......
...@@ -238,7 +238,7 @@ public ApiResponse NewExtractData([CustomizeValidator, FromBody]ExtractRequest r ...@@ -238,7 +238,7 @@ public ApiResponse NewExtractData([CustomizeValidator, FromBody]ExtractRequest r
request.Email = email; request.Email = email;
//if (request.UseScheme == (int)UseTemplate.Config) //if (request.UseScheme == (int)UseTemplate.Config)
//{ //{
LogHelper.Information("请求路径:" + url.HttpPost + "/extract/extract", "提取绩效数据"); logger.LogInformation("提取绩效数据请求路径:" + url.HttpPost + "/extract/extract");
HttpHelper.HttpPostNoRequest(url.HttpPost + "/extract/extract", JsonHelper.Serialize(request), true); HttpHelper.HttpPostNoRequest(url.HttpPost + "/extract/extract", JsonHelper.Serialize(request), true);
//} //}
//else //else
...@@ -307,14 +307,14 @@ public IActionResult DownFile([FromQuery]AllotRequest request) ...@@ -307,14 +307,14 @@ public IActionResult DownFile([FromQuery]AllotRequest request)
[AllowAnonymous] [AllowAnonymous]
public ApiResponse SaveFile([FromForm] IFormCollection form, int allotId, int hospitalId) public ApiResponse SaveFile([FromForm] IFormCollection form, int allotId, int hospitalId)
{ {
LogHelper.Information($"请求参数:allotId:{allotId} hospitalId:{hospitalId}", "保存提取文件"); logger.LogInformation($"保存提取文件请求参数:allotId:{allotId} hospitalId:{hospitalId}");
logger.LogInformation($"保存提取文件 参数:allotId:{allotId} hospitalId:{hospitalId}"); logger.LogInformation($"保存提取文件 参数:allotId:{allotId} hospitalId:{hospitalId}");
try try
{ {
var file = ((FormFileCollection)form.Files).FirstOrDefault(); var file = ((FormFileCollection)form.Files).FirstOrDefault();
if (file == null) if (file == null)
{ {
LogHelper.Error($"返回文件为空!", "保存提取文件"); logger.LogError($"返回文件为空!");
return new ApiResponse(ResponseType.Error, "上传文件无效"); return new ApiResponse(ResponseType.Error, "上传文件无效");
} }
...@@ -322,7 +322,7 @@ public ApiResponse SaveFile([FromForm] IFormCollection form, int allotId, int ho ...@@ -322,7 +322,7 @@ public ApiResponse SaveFile([FromForm] IFormCollection form, int allotId, int ho
FileHelper.CreateDirectory(dpath); FileHelper.CreateDirectory(dpath);
var path = Path.Combine(dpath, FileHelper.GetFileName(file.FileName)); var path = Path.Combine(dpath, FileHelper.GetFileName(file.FileName));
LogHelper.Information($"保存路径:" + path, "保存提取文件"); logger.LogInformation($"保存提取文件保存路径:" + path);
using (var stream = file.OpenReadStream()) using (var stream = file.OpenReadStream())
{ {
...@@ -330,7 +330,7 @@ public ApiResponse SaveFile([FromForm] IFormCollection form, int allotId, int ho ...@@ -330,7 +330,7 @@ public ApiResponse SaveFile([FromForm] IFormCollection form, int allotId, int ho
stream.Read(bytes, 0, bytes.Length); stream.Read(bytes, 0, bytes.Length);
if (!FileHelper.CreateFile(path, bytes)) if (!FileHelper.CreateFile(path, bytes))
{ {
LogHelper.Error($"保存失败", "保存提取文件"); logger.LogError($"保存提取文件保存失败");
return new ApiResponse(ResponseType.Error, "保存失败"); return new ApiResponse(ResponseType.Error, "保存失败");
} }
} }
...@@ -339,12 +339,12 @@ public ApiResponse SaveFile([FromForm] IFormCollection form, int allotId, int ho ...@@ -339,12 +339,12 @@ public ApiResponse SaveFile([FromForm] IFormCollection form, int allotId, int ho
allot.IsExtracting = 2; allot.IsExtracting = 2;
if (string.IsNullOrEmpty(path) || !FileHelper.IsExistFile(path)) if (string.IsNullOrEmpty(path) || !FileHelper.IsExistFile(path))
{ {
LogHelper.Information($"文件未保存成功,保存文件不存在!", "保存提取文件"); logger.LogInformation($"保存提取文件文件未保存成功,保存文件不存在!");
return new ApiResponse(ResponseType.Fail, "上传成功!"); return new ApiResponse(ResponseType.Fail, "上传成功!");
} }
if (!allotService.Update(allot)) if (!allotService.Update(allot))
{ {
LogHelper.Information($"更新文件路径失败!", "保存提取文件"); logger.LogInformation($"保存提取文件更新文件路径失败!");
return new ApiResponse(ResponseType.Fail, "上传成功!"); return new ApiResponse(ResponseType.Fail, "上传成功!");
} }
return new ApiResponse(ResponseType.OK, "上传成功!"); return new ApiResponse(ResponseType.OK, "上传成功!");
...@@ -352,7 +352,7 @@ public ApiResponse SaveFile([FromForm] IFormCollection form, int allotId, int ho ...@@ -352,7 +352,7 @@ public ApiResponse SaveFile([FromForm] IFormCollection form, int allotId, int ho
catch (Exception ex) catch (Exception ex)
{ {
logger.LogInformation($"保存提取文件异常{ex.ToString()}"); logger.LogInformation($"保存提取文件异常{ex.ToString()}");
LogHelper.Error($"保存失败:" + ex.ToString(), "保存提取文件"); logger.LogError($"保存提取文件保存失败:" + ex.ToString());
return new ApiResponse(ResponseType.Error, ex.Message); return new ApiResponse(ResponseType.Error, ex.Message);
} }
} }
......
...@@ -57,7 +57,6 @@ public ActionsFilter(ILoggerFactory factory, IMemoryCache cache, IHostingEnviron ...@@ -57,7 +57,6 @@ public ActionsFilter(ILoggerFactory factory, IMemoryCache cache, IHostingEnviron
context.Result = new ObjectResult(response); context.Result = new ObjectResult(response);
var jsonData = JsonHelper.Serialize(context.Result); var jsonData = JsonHelper.Serialize(context.Result);
_logger.LogInformation($"响应结果:{jsonData}"); _logger.LogInformation($"响应结果:{jsonData}");
LogHelper.Information($"请求地址:{context.HttpContext.Request.Path};响应结果:{jsonData}", "响应结果");
} }
//记录response结果 //记录response结果
...@@ -69,11 +68,10 @@ public ActionsFilter(ILoggerFactory factory, IMemoryCache cache, IHostingEnviron ...@@ -69,11 +68,10 @@ public ActionsFilter(ILoggerFactory factory, IMemoryCache cache, IHostingEnviron
if (executedContext.Result is ObjectResult) if (executedContext.Result is ObjectResult)
{ {
LogHelper.Information(JsonHelper.Serialize(executedContext.Result), "响应结果"); _logger.LogInformation("响应结果" + JsonHelper.Serialize(executedContext.Result));
var objectResult = (ObjectResult)executedContext.Result; var objectResult = (ObjectResult)executedContext.Result;
var jsonData = JsonHelper.Serialize(objectResult.Value); var jsonData = JsonHelper.Serialize(objectResult.Value);
_logger.LogInformation($"响应结果:{jsonData}"); _logger.LogInformation($"请求地址:{context.HttpContext.Request.Path};响应结果:{jsonData}");
LogHelper.Information($"请求地址:{context.HttpContext.Request.Path};响应结果:{jsonData}", "响应结果");
} }
} }
} }
......
...@@ -26,21 +26,21 @@ public Task OnExceptionAsync(ExceptionContext context) ...@@ -26,21 +26,21 @@ public Task OnExceptionAsync(ExceptionContext context)
_logger.LogWarning($"接口错误警告:{context.Exception.ToString()}"); _logger.LogWarning($"接口错误警告:{context.Exception.ToString()}");
var response = new ApiResponse(ResponseType.Fail, context.Exception.Message); var response = new ApiResponse(ResponseType.Fail, context.Exception.Message);
context.Result = new ObjectResult(response); context.Result = new ObjectResult(response);
LogHelper.Warning(JsonHelper.Serialize(response), "接口错误警告"); _logger.LogWarning("接口错误警告" + JsonHelper.Serialize(response));
} }
else if (context.Exception is PerformanceTokenErrorException) else if (context.Exception is PerformanceTokenErrorException)
{ {
_logger.LogWarning($"Token Error:{context.Exception.ToString()}"); _logger.LogWarning($"Token Error:{context.Exception.ToString()}");
var response = new ApiResponse(ResponseType.TokenError, context.Exception.Message); var response = new ApiResponse(ResponseType.TokenError, context.Exception.Message);
context.Result = new ObjectResult(response); context.Result = new ObjectResult(response);
LogHelper.Warning(JsonHelper.Serialize(response), "Token Error"); _logger.LogWarning("Token Error" + JsonHelper.Serialize(response));
} }
else else
{ {
_logger.LogError($"接口异常:{context.Exception.ToString()}"); _logger.LogError($"接口异常:{context.Exception.ToString()}");
var response = new ApiResponse(ResponseType.Error, "接口内部异常", context.Exception.Message); var response = new ApiResponse(ResponseType.Error, "接口内部异常", context.Exception.Message);
context.Result = new ObjectResult(response); context.Result = new ObjectResult(response);
LogHelper.Error(JsonHelper.Serialize(response), "接口内部异常"); _logger.LogError("接口内部异常" + JsonHelper.Serialize(response));
} }
return Task.CompletedTask; return Task.CompletedTask;
} }
......
...@@ -48,7 +48,7 @@ public Startup(IConfiguration configuration) ...@@ -48,7 +48,7 @@ public Startup(IConfiguration configuration)
// This method gets called by the runtime. Use this method to add services to the container. // This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services) public void ConfigureServices(IServiceCollection services)
{ {
LogHelper.Initialize(Configuration.GetSection("AppConnection:RedisConnectionString").Value, "MTEzMTAyMzEzNDYzMzY5MzE4NA"); //LogHelper.Initialize(Configuration.GetSection("AppConnection:RedisConnectionString").Value, "MTEzMTAyMzEzNDYzMzY5MzE4NA");
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
#region appsetting注入 #region appsetting注入
......
...@@ -120,37 +120,35 @@ public void Index([FromBody]AllotRequest request) ...@@ -120,37 +120,35 @@ public void Index([FromBody]AllotRequest request)
[HttpPost] [HttpPost]
public void ExtractData([CustomizeValidator, FromBody]ExtractRequest request) public void ExtractData([CustomizeValidator, FromBody]ExtractRequest request)
{ {
LogHelper.Information("请求参数:" + JsonHelper.Serialize(request), "提取绩效数据"); logger.LogInformation("提取绩效数据请求参数:" + JsonHelper.Serialize(request));
logger.LogInformation("请求参数:" + JsonHelper.Serialize(request));
//string filePath = newExtractService.ExtractData(request.AllotId, request.Email, request.HospitalId); //string filePath = newExtractService.ExtractData(request.AllotId, request.Email, request.HospitalId);
string filePath = dfExtractService.ExtractData(request.AllotId, request.Email, request.HospitalId); string filePath = dfExtractService.ExtractData(request.AllotId, request.Email, request.HospitalId);
if (!string.IsNullOrEmpty(filePath) && FileHelper.IsExistFile(filePath)) if (!string.IsNullOrEmpty(filePath) && FileHelper.IsExistFile(filePath))
{ {
logger.LogInformation("请求路径:" + url.ImportFile + ",请求参数" + JsonHelper.Serialize(new { allotId = request.AllotId, hospitalId = request.HospitalId })); logger.LogInformation("请求路径:" + url.ImportFile + ",请求参数" + JsonHelper.Serialize(new { allotId = request.AllotId, hospitalId = request.HospitalId }));
LogHelper.Information("请求路径:" + url.ImportFile + ",请求参数" + JsonHelper.Serialize(new { allotId = request.AllotId, hospitalId = request.HospitalId }), "保存提取文件");
int i = 1; int i = 1;
while (i <= 5) while (i <= 5)
{ {
if (i == 5) if (i == 5)
LogHelper.Information($"保存文件失败,已尝试执行五次,请联系开发人员!", "保存提取文件"); logger.LogInformation($"保存文件失败,已尝试执行五次,请联系开发人员!");
else else
LogHelper.Information($"正在尝试第{i}次保存!", "保存提取文件"); logger.LogInformation($"正在尝试第{i}次保存!");
//保存文件 //保存文件
string retJson = HttpHelper.HttpClient(url.ImportFile + $"?allotId={request.AllotId}&hospitalId={request.HospitalId}", filePath); string retJson = HttpHelper.HttpClient(url.ImportFile + $"?allotId={request.AllotId}&hospitalId={request.HospitalId}", filePath);
LogHelper.Information("返回结果:" + JsonHelper.Serialize(retJson), "保存提取文件"); logger.LogInformation("保存提取文件返回结果:" + JsonHelper.Serialize(retJson));
logger.LogInformation(retJson); logger.LogInformation(retJson);
var ret = JsonHelper.Deserialize<ApiResponse>(retJson); var ret = JsonHelper.Deserialize<ApiResponse>(retJson);
if (ret != null && (int)ret.State == 1) if (ret != null && (int)ret.State == 1)
{ {
LogHelper.Information("保存成功!", "保存提取文件"); logger.LogInformation("保存提取文件保存成功!");
break; break;
} }
i++; i++;
} }
} }
else else
LogHelper.Information($"提取文件不存在!", "保存提取文件"); logger.LogInformation($"保存提取文件提取文件不存在!");
} }
#endregion #endregion
......
using FluentValidation.AspNetCore; using FluentValidation.AspNetCore;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using Performance.DtoModels; using Performance.DtoModels;
using Performance.Infrastructure; using Performance.Infrastructure;
using Performance.Services; using Performance.Services;
...@@ -13,9 +14,13 @@ namespace Performance.Extract.Api.Controllers ...@@ -13,9 +14,13 @@ namespace Performance.Extract.Api.Controllers
[Route("api/[controller]")] [Route("api/[controller]")]
public class ModExtractController : Controller public class ModExtractController : Controller
{ {
private readonly ILogger<ModExtractController> logger;
private ModExtractService modExtractService; private ModExtractService modExtractService;
public ModExtractController(ModExtractService modExtractService) public ModExtractController(
ILogger<ModExtractController> logger,
ModExtractService modExtractService)
{ {
this.logger = logger;
this.modExtractService = modExtractService; this.modExtractService = modExtractService;
} }
...@@ -59,7 +64,7 @@ public ApiResponse FeeSource([FromBody]ModModuleRequest request) ...@@ -59,7 +64,7 @@ public ApiResponse FeeSource([FromBody]ModModuleRequest request)
if (request.HospitalId == null || request.HospitalId.Value == 0) if (request.HospitalId == null || request.HospitalId.Value == 0)
return new ApiResponse(ResponseType.ParameterError, "HospitalId 参数错误!"); return new ApiResponse(ResponseType.ParameterError, "HospitalId 参数错误!");
LogHelper.Information($"绩效考核项费用来源:{JsonHelper.Serialize(request)}", "请求参数"); logger.LogInformation($"请求参数绩效考核项费用来源:{JsonHelper.Serialize(request)}");
var list = modExtractService.FeeSource(request); var list = modExtractService.FeeSource(request);
return new ApiResponse(ResponseType.OK, list); return new ApiResponse(ResponseType.OK, list);
} }
...@@ -72,7 +77,7 @@ public ApiResponse FeeSource([FromBody]ModModuleRequest request) ...@@ -72,7 +77,7 @@ public ApiResponse FeeSource([FromBody]ModModuleRequest request)
[HttpPost] [HttpPost]
public ApiResponse Items([FromBody]ModItemRequest request) public ApiResponse Items([FromBody]ModItemRequest request)
{ {
LogHelper.Information($"绩效收入模板配置项列表:{JsonHelper.Serialize(request)}", "请求参数"); logger.LogInformation($"绩效收入模板配置项列表:{JsonHelper.Serialize(request)}");
modExtractService.AddItems(request.ModuleId.Value); modExtractService.AddItems(request.ModuleId.Value);
return new ApiResponse(ResponseType.OK); return new ApiResponse(ResponseType.OK);
} }
......
...@@ -26,21 +26,21 @@ public Task OnExceptionAsync(ExceptionContext context) ...@@ -26,21 +26,21 @@ public Task OnExceptionAsync(ExceptionContext context)
_logger.LogWarning($"接口错误警告:{context.Exception.ToString()}"); _logger.LogWarning($"接口错误警告:{context.Exception.ToString()}");
var response = new ApiResponse(ResponseType.Fail, context.Exception.Message); var response = new ApiResponse(ResponseType.Fail, context.Exception.Message);
context.Result = new ObjectResult(response); context.Result = new ObjectResult(response);
LogHelper.Warning(JsonHelper.Serialize(response), "接口错误警告"); _logger.LogWarning("接口错误警告" + JsonHelper.Serialize(response));
} }
else if (context.Exception is PerformanceTokenErrorException) else if (context.Exception is PerformanceTokenErrorException)
{ {
_logger.LogWarning($"Token Error:{context.Exception.ToString()}"); _logger.LogWarning($"Token Error:{context.Exception.ToString()}");
var response = new ApiResponse(ResponseType.TokenError, context.Exception.Message); var response = new ApiResponse(ResponseType.TokenError, context.Exception.Message);
context.Result = new ObjectResult(response); context.Result = new ObjectResult(response);
LogHelper.Warning(JsonHelper.Serialize(response), "Token Error"); _logger.LogWarning("Token Error" + JsonHelper.Serialize(response));
} }
else else
{ {
_logger.LogError($"接口异常:{context.Exception.ToString()}"); _logger.LogError($"接口异常:{context.Exception.ToString()}");
var response = new ApiResponse(ResponseType.Error, "接口内部异常", context.Exception.Message); var response = new ApiResponse(ResponseType.Error, "接口内部异常", context.Exception.Message);
context.Result = new ObjectResult(response); context.Result = new ObjectResult(response);
LogHelper.Error(JsonHelper.Serialize(response), "接口内部异常"); _logger.LogError("接口内部异常" + JsonHelper.Serialize(response));
} }
return Task.CompletedTask; return Task.CompletedTask;
} }
......
using System; using AutoMapper;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using AutoMapper;
using FluentValidation; using FluentValidation;
using FluentValidation.AspNetCore; using FluentValidation.AspNetCore;
using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Builder;
...@@ -23,6 +16,13 @@ ...@@ -23,6 +16,13 @@
using Performance.EntityModels; using Performance.EntityModels;
using Performance.Infrastructure; using Performance.Infrastructure;
using Performance.Services; using Performance.Services;
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
namespace Performance.Extract.Api namespace Performance.Extract.Api
{ {
...@@ -39,7 +39,7 @@ public Startup(IConfiguration configuration, IHostingEnvironment env) ...@@ -39,7 +39,7 @@ public Startup(IConfiguration configuration, IHostingEnvironment env)
// This method gets called by the runtime. Use this method to add services to the container. // This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services) public void ConfigureServices(IServiceCollection services)
{ {
LogHelper.Initialize(Configuration.GetSection("AppConnection:RedisConnectionString").Value, "MTEzMTAyMzEzNDYzMzY5MzE4NA"); //LogHelper.Initialize(Configuration.GetSection("AppConnection:RedisConnectionString").Value, "MTEzMTAyMzEzNDYzMzY5MzE4NA");
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
#region appsetting注入 #region appsetting注入
......
using CSRedis; //using CSRedis;
using Microsoft.AspNetCore.Http; //using Microsoft.AspNetCore.Http;
using System; //using System;
using System.Collections.Concurrent; //using System.Collections.Concurrent;
using System.Collections.Generic; //using System.Collections.Generic;
using System.Diagnostics; //using System.Diagnostics;
using System.Linq; //using System.Linq;
using System.Reflection; //using System.Reflection;
using System.Threading; //using System.Threading;
using System.Threading.Tasks; //using System.Threading.Tasks;
public static class LogHelper //public static class LogHelper
{ //{
private static AsyncLocal<string> _asyncLocal; // private static AsyncLocal<string> _asyncLocal;
private static BlockingCollection<Log> _queue; // private static BlockingCollection<Log> _queue;
private static object _lockObject; // private static object _lockObject;
private static string _secretKey; // private static string _secretKey;
private static IHttpContextAccessor _contextAccessor; // private static IHttpContextAccessor _contextAccessor;
public static void Initialize(string redisConnectionString, string secretKey) // public static void Initialize(string redisConnectionString, string secretKey)
{ // {
_secretKey = secretKey; // _secretKey = secretKey;
var client = new CSRedisClient(redisConnectionString); // var client = new CSRedisClient(redisConnectionString);
_queue = new BlockingCollection<Log>(); // _queue = new BlockingCollection<Log>();
_asyncLocal = new AsyncLocal<string>(); // _asyncLocal = new AsyncLocal<string>();
_lockObject = new object(); // _lockObject = new object();
_contextAccessor = new HttpContextAccessor(); // _contextAccessor = new HttpContextAccessor();
Task.Factory.StartNew(() => // Task.Factory.StartNew(() =>
{ // {
while (!_queue.IsCompleted) // while (!_queue.IsCompleted)
{ // {
var log = _queue.Take(); // var log = _queue.Take();
client.LPush("log.queue", log); // client.LPush("log.queue", log);
} // }
}); // });
} // }
public static void Trace(string message, params string[] tag) // public static void Trace(string message, params string[] tag)
{ // {
WriteLog(message, tag, LogLevel.Trace); // WriteLog(message, tag, LogLevel.Trace);
} // }
public static void Debug(string message, params string[] tag) // public static void Debug(string message, params string[] tag)
{ // {
WriteLog(message, tag, LogLevel.Debug); // WriteLog(message, tag, LogLevel.Debug);
} // }
public static void Information(string message, params string[] tag) // public static void Information(string message, params string[] tag)
{ // {
WriteLog(message, tag, LogLevel.Information); // WriteLog(message, tag, LogLevel.Information);
} // }
public static void Warning(string message, params string[] tag) // public static void Warning(string message, params string[] tag)
{ // {
WriteLog(message, tag, LogLevel.Warning); // WriteLog(message, tag, LogLevel.Warning);
} // }
public static void Error(string message, params string[] tag) // public static void Error(string message, params string[] tag)
{ // {
WriteLog(message, tag, LogLevel.Error); // WriteLog(message, tag, LogLevel.Error);
} // }
public static void Fatal(string message, params string[] tag) // public static void Fatal(string message, params string[] tag)
{ // {
WriteLog(message, tag, LogLevel.Fatal); // WriteLog(message, tag, LogLevel.Fatal);
} // }
private static void WriteLog(string message, string[] tag, LogLevel logLevel) // private static void WriteLog(string message, string[] tag, LogLevel logLevel)
{ // {
try // try
{ // {
if (_contextAccessor.HttpContext == null || string.IsNullOrEmpty(_contextAccessor.HttpContext.TraceIdentifier)) // if (_contextAccessor.HttpContext == null || string.IsNullOrEmpty(_contextAccessor.HttpContext.TraceIdentifier))
{ // {
if (string.IsNullOrEmpty(_asyncLocal.Value)) // if (string.IsNullOrEmpty(_asyncLocal.Value))
lock (_lockObject) // lock (_lockObject)
Guid.NewGuid().ToString("N"); // Guid.NewGuid().ToString("N");
} // }
else // else
{ // {
_asyncLocal.Value = _contextAccessor.HttpContext.TraceIdentifier; // _asyncLocal.Value = _contextAccessor.HttpContext.TraceIdentifier;
} // }
Log log = new Log // Log log = new Log
{ // {
Id = SnowflakeId.Default().NextId(), // Id = SnowflakeId.Default().NextId(),
Level = logLevel, // Level = logLevel,
LogTime = DateTime.Now, // LogTime = DateTime.Now,
Message = message, // Message = message,
Stack = GetStackInfo(), // Stack = GetStackInfo(),
TraceId = _asyncLocal.Value, // TraceId = _asyncLocal.Value,
Tag = tag.ToList(), // Tag = tag.ToList(),
SecretKey = _secretKey // SecretKey = _secretKey
}; // };
_queue.Add(log); // _queue.Add(log);
} // }
catch { } // catch { }
} // }
private static List<string> GetStackInfo() // private static List<string> GetStackInfo()
{ // {
StackTrace trace = new StackTrace(true); // StackTrace trace = new StackTrace(true);
List<string> result = new List<string>(); // List<string> result = new List<string>();
for (int i = 0; i < trace.FrameCount; i++) // for (int i = 0; i < trace.FrameCount; i++)
{ // {
StackFrame frame = trace.GetFrame(i); // StackFrame frame = trace.GetFrame(i);
MethodBase method = frame.GetMethod(); // MethodBase method = frame.GetMethod();
if (method.DeclaringType == null // if (method.DeclaringType == null
|| method.DeclaringType.FullName.StartsWith("System") // || method.DeclaringType.FullName.StartsWith("System")
|| method.DeclaringType.FullName.StartsWith("Microsoft") // || method.DeclaringType.FullName.StartsWith("Microsoft")
|| method.DeclaringType.FullName.StartsWith("Online.Log")) // || method.DeclaringType.FullName.StartsWith("Online.Log"))
continue; // continue;
var paras = method.GetParameters().Select(t => $"{t.ParameterType.Name} {t.Name}"); // var paras = method.GetParameters().Select(t => $"{t.ParameterType.Name} {t.Name}");
result.Add($"At {method.DeclaringType.FullName}.{method.Name}({string.Join(",", paras)}) Number({frame.GetFileLineNumber()})"); // result.Add($"At {method.DeclaringType.FullName}.{method.Name}({string.Join(",", paras)}) Number({frame.GetFileLineNumber()})");
} // }
return result; // return result;
} // }
} //}
internal class Log //internal class Log
{ //{
public long Id { get; set; } // public long Id { get; set; }
public DateTime LogTime { get; set; } // public DateTime LogTime { get; set; }
public LogLevel Level { get; set; } // public LogLevel Level { get; set; }
public string SecretKey { get; set; } // public string SecretKey { get; set; }
public string TraceId { get; set; } // public string TraceId { get; set; }
public string Message { get; set; } // public string Message { get; set; }
public List<string> Stack { get; set; } // public List<string> Stack { get; set; }
public List<string> Tag { get; set; } // public List<string> Tag { get; set; }
} //}
internal enum LogLevel //internal enum LogLevel
{ //{
All = 0, // All = 0,
Trace = 1, // Trace = 1,
Debug = 2, // Debug = 2,
Information = 3, // Information = 3,
Warning = 4, // Warning = 4,
Error = 5, // Error = 5,
Fatal = 6 // Fatal = 6
} //}
internal class SnowflakeId //internal class SnowflakeId
{ //{
public const long Twepoch = 1288834974657L; // public const long Twepoch = 1288834974657L;
private const int WorkerIdBits = 5; // private const int WorkerIdBits = 5;
private const int DatacenterIdBits = 5; // private const int DatacenterIdBits = 5;
private const int SequenceBits = 12; // private const int SequenceBits = 12;
private const long MaxWorkerId = -1L ^ (-1L << WorkerIdBits); // private const long MaxWorkerId = -1L ^ (-1L << WorkerIdBits);
private const long MaxDatacenterId = -1L ^ (-1L << DatacenterIdBits); // private const long MaxDatacenterId = -1L ^ (-1L << DatacenterIdBits);
private const int WorkerIdShift = SequenceBits; // private const int WorkerIdShift = SequenceBits;
private const int DatacenterIdShift = SequenceBits + WorkerIdBits; // private const int DatacenterIdShift = SequenceBits + WorkerIdBits;
public const int TimestampLeftShift = SequenceBits + WorkerIdBits + DatacenterIdBits; // public const int TimestampLeftShift = SequenceBits + WorkerIdBits + DatacenterIdBits;
private const long SequenceMask = -1L ^ (-1L << SequenceBits); // private const long SequenceMask = -1L ^ (-1L << SequenceBits);
private static SnowflakeId _snowflakeId; // private static SnowflakeId _snowflakeId;
private readonly object _lock = new object(); // private readonly object _lock = new object();
private static readonly object SLock = new object(); // private static readonly object SLock = new object();
private long _lastTimestamp = -1L; // private long _lastTimestamp = -1L;
public SnowflakeId(long workerId, long datacenterId, long sequence = 0L) // public SnowflakeId(long workerId, long datacenterId, long sequence = 0L)
{ // {
WorkerId = workerId; // WorkerId = workerId;
DatacenterId = datacenterId; // DatacenterId = datacenterId;
Sequence = sequence; // Sequence = sequence;
// sanity check for workerId // // sanity check for workerId
if (workerId > MaxWorkerId || workerId < 0) // if (workerId > MaxWorkerId || workerId < 0)
throw new ArgumentException($"worker Id can't be greater than {MaxWorkerId} or less than 0"); // throw new ArgumentException($"worker Id can't be greater than {MaxWorkerId} or less than 0");
if (datacenterId > MaxDatacenterId || datacenterId < 0) // if (datacenterId > MaxDatacenterId || datacenterId < 0)
throw new ArgumentException($"datacenter Id can't be greater than {MaxDatacenterId} or less than 0"); // throw new ArgumentException($"datacenter Id can't be greater than {MaxDatacenterId} or less than 0");
} // }
public long WorkerId { get; protected set; } // public long WorkerId { get; protected set; }
public long DatacenterId { get; protected set; } // public long DatacenterId { get; protected set; }
public long Sequence { get; internal set; } // public long Sequence { get; internal set; }
public static SnowflakeId Default() // public static SnowflakeId Default()
{ // {
lock (SLock) // lock (SLock)
{ // {
if (_snowflakeId != null) // if (_snowflakeId != null)
{ // {
return _snowflakeId; // return _snowflakeId;
} // }
var random = new Random(); // var random = new Random();
if (!int.TryParse(Environment.GetEnvironmentVariable("CAP_WORKERID", EnvironmentVariableTarget.Machine), out var workerId)) // if (!int.TryParse(Environment.GetEnvironmentVariable("CAP_WORKERID", EnvironmentVariableTarget.Machine), out var workerId))
{ // {
workerId = random.Next((int)MaxWorkerId); // workerId = random.Next((int)MaxWorkerId);
} // }
if (!int.TryParse(Environment.GetEnvironmentVariable("CAP_DATACENTERID", EnvironmentVariableTarget.Machine), out var datacenterId)) // if (!int.TryParse(Environment.GetEnvironmentVariable("CAP_DATACENTERID", EnvironmentVariableTarget.Machine), out var datacenterId))
{ // {
datacenterId = random.Next((int)MaxDatacenterId); // datacenterId = random.Next((int)MaxDatacenterId);
} // }
return _snowflakeId = new SnowflakeId(workerId, datacenterId); // return _snowflakeId = new SnowflakeId(workerId, datacenterId);
} // }
} // }
public virtual long NextId() // public virtual long NextId()
{ // {
lock (_lock) // lock (_lock)
{ // {
var timestamp = TimeGen(); // var timestamp = TimeGen();
if (timestamp < _lastTimestamp) // if (timestamp < _lastTimestamp)
throw new Exception( // throw new Exception(
$"InvalidSystemClock: Clock moved backwards, Refusing to generate id for {_lastTimestamp - timestamp} milliseconds"); // $"InvalidSystemClock: Clock moved backwards, Refusing to generate id for {_lastTimestamp - timestamp} milliseconds");
if (_lastTimestamp == timestamp) // if (_lastTimestamp == timestamp)
{ // {
Sequence = (Sequence + 1) & SequenceMask; // Sequence = (Sequence + 1) & SequenceMask;
if (Sequence == 0) timestamp = TilNextMillis(_lastTimestamp); // if (Sequence == 0) timestamp = TilNextMillis(_lastTimestamp);
} // }
else // else
{ // {
Sequence = 0; // Sequence = 0;
} // }
_lastTimestamp = timestamp; // _lastTimestamp = timestamp;
var id = ((timestamp - Twepoch) << TimestampLeftShift) | // var id = ((timestamp - Twepoch) << TimestampLeftShift) |
(DatacenterId << DatacenterIdShift) | // (DatacenterId << DatacenterIdShift) |
(WorkerId << WorkerIdShift) | Sequence; // (WorkerId << WorkerIdShift) | Sequence;
return id; // return id;
} // }
} // }
protected virtual long TilNextMillis(long lastTimestamp) // protected virtual long TilNextMillis(long lastTimestamp)
{ // {
var timestamp = TimeGen(); // var timestamp = TimeGen();
while (timestamp <= lastTimestamp) timestamp = TimeGen(); // while (timestamp <= lastTimestamp) timestamp = TimeGen();
return timestamp; // return timestamp;
} // }
protected virtual long TimeGen() // protected virtual long TimeGen()
{ // {
return DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(); // return DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
} // }
} //}
...@@ -174,14 +174,14 @@ public string TemplateExecute(string email, per_allot lastAllot, sys_hospital ho ...@@ -174,14 +174,14 @@ public string TemplateExecute(string email, per_allot lastAllot, sys_hospital ho
workbook.Write(file); workbook.Write(file);
} }
logManageService.WriteMsg("提取绩效数据", $"{hospital.HosName}HIS数据提取成功,文件路径:{newPath}。", 5, Allot.ID, "ReceiveMessage"); logManageService.WriteMsg("提取绩效数据", $"{hospital.HosName}HIS数据提取成功,文件路径:{newPath}。", 5, Allot.ID, "ReceiveMessage");
LogHelper.Information($"{hospital.HosName}HIS数据提取成功,文件路径:{newPath}。", "提取绩效数据"); logger.LogInformation($"提取绩效数据 {hospital.HosName}HIS数据提取成功,文件路径:{newPath}");
SendEmail(email, newPath, $"{hospital.HosName}HIS数据提取成功", $"{hospital.HosName}{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}成功提取。"); SendEmail(email, newPath, $"{hospital.HosName}HIS数据提取成功", $"{hospital.HosName}{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}成功提取。");
return newPath; return newPath;
} }
catch (Exception ex) catch (Exception ex)
{ {
logManageService.WriteMsg("提取数据异常", $"数据写入出现异常", 4, Allot.ID, "ReceiveMessage"); logManageService.WriteMsg("提取数据异常", $"数据写入出现异常", 4, Allot.ID, "ReceiveMessage");
LogHelper.Error($"数据写入出现异常{ex.ToString()}", "提取绩效数据", "异常"); logger.LogError($"提取绩效数据异常 数据写入出现异常{ex.ToString()}");
SendEmail(email, "", $"{hospital.HosName}HIS数据提取失败", $"{hospital.HosName}提取数据过程中出现异常情况,我们将尽快解决问题。给您带来的不便我们深感歉意!"); SendEmail(email, "", $"{hospital.HosName}HIS数据提取失败", $"{hospital.HosName}提取数据过程中出现异常情况,我们将尽快解决问题。给您带来的不便我们深感歉意!");
throw ex; throw ex;
} }
...@@ -257,14 +257,14 @@ public string AlllotExecute(string email, per_allot lastAllot, sys_hospital hosp ...@@ -257,14 +257,14 @@ public string AlllotExecute(string email, per_allot lastAllot, sys_hospital hosp
workbook.Write(file); workbook.Write(file);
} }
logManageService.WriteMsg("提取绩效数据", $"{hospital.HosName}HIS数据提取成功,文件路径:{newPath}。", 5, Allot.ID, "ReceiveMessage"); logManageService.WriteMsg("提取绩效数据", $"{hospital.HosName}HIS数据提取成功,文件路径:{newPath}。", 5, Allot.ID, "ReceiveMessage");
LogHelper.Information($"{hospital.HosName}HIS数据提取成功,文件路径:{newPath}。", "提取绩效数据"); logger.LogInformation($"提取绩效数据 {hospital.HosName}HIS数据提取成功,文件路径:{newPath}");
SendEmail(email, newPath, $"{hospital.HosName}HIS数据提取成功", $"{hospital.HosName}{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}成功提取。"); SendEmail(email, newPath, $"{hospital.HosName}HIS数据提取成功", $"{hospital.HosName}{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}成功提取。");
return newPath; return newPath;
} }
catch (Exception ex) catch (Exception ex)
{ {
logManageService.WriteMsg("提取数据异常", $"数据写入出现异常", 4, Allot.ID, "ReceiveMessage"); logManageService.WriteMsg("提取数据异常", $"数据写入出现异常", 4, Allot.ID, "ReceiveMessage");
LogHelper.Error($"数据写入出现异常{ex.ToString()}", "提取绩效数据", "异常"); logger.LogError($"提取绩效数据 异常 数据写入出现异常{ex.ToString()}");
SendEmail(email, "", $"{hospital.HosName}HIS数据提取失败", $"{hospital.HosName}提取数据过程中出现异常情况,我们将尽快解决问题。给您带来的不便我们深感歉意!"); SendEmail(email, "", $"{hospital.HosName}HIS数据提取失败", $"{hospital.HosName}提取数据过程中出现异常情况,我们将尽快解决问题。给您带来的不便我们深感歉意!");
throw ex; throw ex;
} }
...@@ -394,7 +394,7 @@ private void WriteOtherIncome(ISheet sheet, IPerSheetDataRead sheetRead, List<Ac ...@@ -394,7 +394,7 @@ private void WriteOtherIncome(ISheet sheet, IPerSheetDataRead sheetRead, List<Ac
foreach (var moditem in category) foreach (var moditem in category)
{ {
logManageService.WriteMsg("提取绩效数据", $"执行SQL脚本获取数据 -- {module.ModuleName}", 1, Allot.ID, "ReceiveMessage"); logManageService.WriteMsg("提取绩效数据", $"执行SQL脚本获取数据 -- {module.ModuleName}", 1, Allot.ID, "ReceiveMessage");
LogHelper.Information($"执行SQL脚本获取数据 -- {module.ModuleName},", "提取绩效数据"); logger.LogInformation($"提取绩效数据 执行SQL脚本获取数据 -- {module.ModuleName}");
var config = configs.FirstOrDefault(t => t.Id == moditem.ConfigId); var config = configs.FirstOrDefault(t => t.Id == moditem.ConfigId);
if (config == null) continue; if (config == null) continue;
...@@ -426,7 +426,7 @@ private void WriteIncome(ISheet sheet, IPerSheetDataRead sheetRead, List<Account ...@@ -426,7 +426,7 @@ private void WriteIncome(ISheet sheet, IPerSheetDataRead sheetRead, List<Account
foreach (var item in extractList) foreach (var item in extractList)
{ {
logManageService.WriteMsg("提取绩效数据", $"执行SQL脚本获取数据 -- {module.ModuleName}", 1, Allot.ID, "ReceiveMessage"); logManageService.WriteMsg("提取绩效数据", $"执行SQL脚本获取数据 -- {module.ModuleName}", 1, Allot.ID, "ReceiveMessage");
LogHelper.Information($"执行SQL脚本获取数据 -- {module.ModuleName}", "提取绩效数据"); logger.LogInformation($"提取绩效数据 执行SQL脚本获取数据 -- {module.ModuleName}");
var config = configs.FirstOrDefault(t => t.Id == module.ConfigId); var config = configs.FirstOrDefault(t => t.Id == module.ConfigId);
if (config == null) continue; if (config == null) continue;
...@@ -464,7 +464,7 @@ private void WriteWorkload(ISheet sheet, IPerSheetDataRead sheetRead, List<Accou ...@@ -464,7 +464,7 @@ private void WriteWorkload(ISheet sheet, IPerSheetDataRead sheetRead, List<Accou
if (IsWriteHead) if (IsWriteHead)
{ {
logManageService.WriteMsg("提取绩效数据", $"写入列头信息 -- {module.ModuleName}", 1, Allot.ID, "ReceiveMessage"); logManageService.WriteMsg("提取绩效数据", $"写入列头信息 -- {module.ModuleName}", 1, Allot.ID, "ReceiveMessage");
LogHelper.Information($"写入列头信息 -- {module.ModuleName}", "提取绩效数据"); logger.LogInformation($"提取绩效数据 写入列头信息 -- {module.ModuleName}");
//写入列头信息 //写入列头信息
int cellStartIndex = sheetRead.Point.HeaderFirstCellNum.Value + 2; int cellStartIndex = sheetRead.Point.HeaderFirstCellNum.Value + 2;
foreach (var item in itemList) foreach (var item in itemList)
...@@ -493,7 +493,7 @@ private void WriteWorkload(ISheet sheet, IPerSheetDataRead sheetRead, List<Accou ...@@ -493,7 +493,7 @@ private void WriteWorkload(ISheet sheet, IPerSheetDataRead sheetRead, List<Accou
foreach (var moditem in category) foreach (var moditem in category)
{ {
logManageService.WriteMsg("提取绩效数据", $"执行SQL脚本获取数据 -- {module.ModuleName}", 1, Allot.ID, "ReceiveMessage"); logManageService.WriteMsg("提取绩效数据", $"执行SQL脚本获取数据 -- {module.ModuleName}", 1, Allot.ID, "ReceiveMessage");
LogHelper.Information($"执行SQL脚本获取数据 -- {module.ModuleName},", "提取绩效数据"); logger.LogInformation($"提取绩效数据 执行SQL脚本获取数据 -- {module.ModuleName}");
var config = configs.FirstOrDefault(t => t.Id == moditem.ConfigId); var config = configs.FirstOrDefault(t => t.Id == moditem.ConfigId);
if (config == null) continue; if (config == null) continue;
...@@ -511,7 +511,7 @@ private void WriteWorkload(ISheet sheet, IPerSheetDataRead sheetRead, List<Accou ...@@ -511,7 +511,7 @@ private void WriteWorkload(ISheet sheet, IPerSheetDataRead sheetRead, List<Accou
} }
logManageService.WriteMsg("提取绩效数据", $"填充数据 -- {module.ModuleName}", 1, Allot.ID, "ReceiveMessage"); logManageService.WriteMsg("提取绩效数据", $"填充数据 -- {module.ModuleName}", 1, Allot.ID, "ReceiveMessage");
LogHelper.Information($"填充数据 -- {module.ModuleName}", "提取绩效数据"); logger.LogInformation($"提取绩效数据 填充数据 -- {module.ModuleName}");
//写入数据 //写入数据
var rowIndex = sheetRead.Point.HeaderFirstRowNum.Value + 2; var rowIndex = sheetRead.Point.HeaderFirstRowNum.Value + 2;
foreach (var department in allExtract.Select(t => t.Department).Distinct()) foreach (var department in allExtract.Select(t => t.Department).Distinct())
...@@ -569,7 +569,7 @@ private void WriteWorkload(ISheet sheet, IPerSheetDataRead sheetRead, List<Accou ...@@ -569,7 +569,7 @@ private void WriteWorkload(ISheet sheet, IPerSheetDataRead sheetRead, List<Accou
// }; // };
// logManageService.WriteMsg("提取绩效数据", $"填充数据 -- 临床科室医护绩效测算表", 1, Allot.ID, "ReceiveMessage"); // logManageService.WriteMsg("提取绩效数据", $"填充数据 -- 临床科室医护绩效测算表", 1, Allot.ID, "ReceiveMessage");
// LogHelper.Information($"填充数据 -- 临床科室医护绩效测算表", "提取绩效数据"); // logger.Information($"填充数据 -- 临床科室医护绩效测算表", "提取绩效数据");
// var dataList = perforImaccountbasicRepository.GetEntities(t => t.AllotID == allotLastId)?.OrderBy(t => t.UnitType).ThenBy(t => t.DoctorAccountingUnit).ToList(); // var dataList = perforImaccountbasicRepository.GetEntities(t => t.AllotID == allotLastId)?.OrderBy(t => t.UnitType).ThenBy(t => t.DoctorAccountingUnit).ToList();
// for (int i = 0; i < dataList.Count; i++) // for (int i = 0; i < dataList.Count; i++)
// { // {
...@@ -626,7 +626,7 @@ private void WriteSpecialUnit(ISheet sheet, IPerSheetDataRead sheetRead, List<sy ...@@ -626,7 +626,7 @@ private void WriteSpecialUnit(ISheet sheet, IPerSheetDataRead sheetRead, List<sy
// foreach (var specialitem in category) // foreach (var specialitem in category)
// { // {
// logManageService.WriteMsg("提取绩效数据", $"执行SQL脚本获取数据 -- 特殊核算单元绩效测算表", 1, Allot.ID, "ReceiveMessage"); // logManageService.WriteMsg("提取绩效数据", $"执行SQL脚本获取数据 -- 特殊核算单元绩效测算表", 1, Allot.ID, "ReceiveMessage");
// LogHelper.Information($"执行SQL脚本获取数据 -- 特殊核算单元绩效测算表,", "提取绩效数据"); // logger.Information($"执行SQL脚本获取数据 -- 特殊核算单元绩效测算表,", "提取绩效数据");
// var config = configs.FirstOrDefault(t => t.Id == specialitem.ConfigId); // var config = configs.FirstOrDefault(t => t.Id == specialitem.ConfigId);
// if (config == null) continue; // if (config == null) continue;
...@@ -655,7 +655,7 @@ private void WriteSpecialUnit(ISheet sheet, IPerSheetDataRead sheetRead, List<sy ...@@ -655,7 +655,7 @@ private void WriteSpecialUnit(ISheet sheet, IPerSheetDataRead sheetRead, List<sy
int mergedEnd = sheetRead.Point.DataFirstRowNum.Value; int mergedEnd = sheetRead.Point.DataFirstRowNum.Value;
logManageService.WriteMsg("提取绩效数据", $"填充数据 -- 特殊核算单元绩效测算表", 1, Allot.ID, "ReceiveMessage"); logManageService.WriteMsg("提取绩效数据", $"填充数据 -- 特殊核算单元绩效测算表", 1, Allot.ID, "ReceiveMessage");
LogHelper.Information($"填充数据 -- 特殊核算单元绩效测算表", "提取绩效数据"); logger.LogInformation($"提取绩效数据 填充数据 -- 特殊核算单元绩效测算表");
for (int i = 0; i < speaialList.Count; i++) for (int i = 0; i < speaialList.Count; i++)
{ {
var headIndex = sheetRead.Point.HeaderFirstRowNum; var headIndex = sheetRead.Point.HeaderFirstRowNum;
...@@ -683,7 +683,7 @@ private void WriteSpecialUnit(ISheet sheet, IPerSheetDataRead sheetRead, List<sy ...@@ -683,7 +683,7 @@ private void WriteSpecialUnit(ISheet sheet, IPerSheetDataRead sheetRead, List<sy
if (cell.StringCellValue == "数量" && speaialList[i]?.ExtractId > 0) if (cell.StringCellValue == "数量" && speaialList[i]?.ExtractId > 0)
{ {
logManageService.WriteMsg("提取绩效数据", $"执行SQL脚本获取数据 -- 特殊核算单元绩效测算表", 1, Allot.ID, "ReceiveMessage"); logManageService.WriteMsg("提取绩效数据", $"执行SQL脚本获取数据 -- 特殊核算单元绩效测算表", 1, Allot.ID, "ReceiveMessage");
LogHelper.Information($"执行SQL脚本获取数据 -- 特殊核算单元绩效测算表,", "提取绩效数据"); logger.LogInformation($"提取绩效数据 执行SQL脚本获取数据 -- 特殊核算单元绩效测算表 ");
var config = configs.FirstOrDefault(t => t.Id == speaialList[i].ConfigId); var config = configs.FirstOrDefault(t => t.Id == speaialList[i].ConfigId);
if (config == null) continue; if (config == null) continue;
...@@ -719,7 +719,7 @@ private void WriteHeaderAndFactor(ISheet sheet, IPerSheetDataRead sheetRead, Lis ...@@ -719,7 +719,7 @@ private void WriteHeaderAndFactor(ISheet sheet, IPerSheetDataRead sheetRead, Lis
var head = GetOrCreate(sheet, sheetRead.Point.HeaderFirstRowNum.Value); var head = GetOrCreate(sheet, sheetRead.Point.HeaderFirstRowNum.Value);
logManageService.WriteMsg("提取绩效数据", $"写入列头信息 -- {sheet.SheetName}", 1, Allot.ID, "ReceiveMessage"); logManageService.WriteMsg("提取绩效数据", $"写入列头信息 -- {sheet.SheetName}", 1, Allot.ID, "ReceiveMessage");
LogHelper.Information($"写入列头信息 -- {sheet.SheetName}", "提取绩效数据"); logger.LogInformation($"提取绩效数据 提取绩效数据 写入列头信息 -- {sheet.SheetName}");
//写入列头信息 //写入列头信息
int cellStartIndex = sheetRead.Point.HeaderFirstCellNum.Value + 4; int cellStartIndex = sheetRead.Point.HeaderFirstCellNum.Value + 4;
foreach (var item in items) foreach (var item in items)
...@@ -746,7 +746,7 @@ private void WriteHeaderAndFactor(ISheet sheet, IPerSheetDataRead sheetRead, Lis ...@@ -746,7 +746,7 @@ private void WriteHeaderAndFactor(ISheet sheet, IPerSheetDataRead sheetRead, Lis
private void WriteSheetData(ISheet sheet, IPerSheetDataRead sheetRead, List<AccountUnitEntity> unitList, List<ExtractDto> allExtract) private void WriteSheetData(ISheet sheet, IPerSheetDataRead sheetRead, List<AccountUnitEntity> unitList, List<ExtractDto> allExtract)
{ {
logManageService.WriteMsg("提取绩效数据", $"填充数据 -- {sheet.SheetName}", 1, Allot.ID, "ReceiveMessage"); logManageService.WriteMsg("提取绩效数据", $"填充数据 -- {sheet.SheetName}", 1, Allot.ID, "ReceiveMessage");
LogHelper.Information($"填充数据 -- {sheet.SheetName}", "提取绩效数据"); logger.LogInformation($"提取绩效数据 填充数据 -- {sheet.SheetName}");
//写入数据 //写入数据
var head = GetOrCreate(sheet, sheetRead.Point.HeaderFirstRowNum.Value); var head = GetOrCreate(sheet, sheetRead.Point.HeaderFirstRowNum.Value);
var rowIndex = sheetRead.Point.HeaderFirstRowNum.Value + 1; var rowIndex = sheetRead.Point.HeaderFirstRowNum.Value + 1;
...@@ -809,7 +809,7 @@ private List<ExtractDto> QueryDatabase(sys_hospitalconfig config, mod_extract ex ...@@ -809,7 +809,7 @@ private List<ExtractDto> QueryDatabase(sys_hospitalconfig config, mod_extract ex
executeScript = Regex.Replace(executeScript, item.Key, item.Value, RegexOptions.IgnoreCase); executeScript = Regex.Replace(executeScript, item.Key, item.Value, RegexOptions.IgnoreCase);
} }
//logManageService.WriteMsg("提取绩效数据", $"SQL脚本:{executeScript}", 1, AllotId, "ReceiveMessage"); //logManageService.WriteMsg("提取绩效数据", $"SQL脚本:{executeScript}", 1, AllotId, "ReceiveMessage");
LogHelper.Information($"SQL脚本{executeScript},", "提取绩效数据"); logger.LogInformation($"提取绩效数据 SQL脚本{executeScript}");
var result = connection.Query<ExtractDto>(executeScript, commandTimeout: 20000); var result = connection.Query<ExtractDto>(executeScript, commandTimeout: 20000);
if (result != null && result.Count() > 0) if (result != null && result.Count() > 0)
{ {
......
...@@ -95,7 +95,7 @@ public string GetFilepath(int hospitalId, out int type) ...@@ -95,7 +95,7 @@ public string GetFilepath(int hospitalId, out int type)
} }
catch (Exception ex) catch (Exception ex)
{ {
LogHelper.Error(ex.ToString(), "获取提取模板文件路径", "异常"); logger.LogError("获取提取模板文件路径" + ex.ToString());
type = 0; type = 0;
return ""; return "";
} }
...@@ -103,7 +103,7 @@ public string GetFilepath(int hospitalId, out int type) ...@@ -103,7 +103,7 @@ public string GetFilepath(int hospitalId, out int type)
public string ExtractData(int allotId, string mail, sys_hospital hospital, string firstPath) public string ExtractData(int allotId, string mail, sys_hospital hospital, string firstPath)
{ {
LogHelper.Information($"开始执行绩效数据提取任务{new { allotId, mail, hospital }}", "提取绩效数据"); logger.LogInformation($"提取绩效数据开始执行绩效数据提取任务{new { allotId, mail, hospital }}");
List<PerSheet> sheetList = new List<PerSheet>(); List<PerSheet> sheetList = new List<PerSheet>();
string filepath = ""; string filepath = "";
try try
...@@ -115,13 +115,13 @@ public string ExtractData(int allotId, string mail, sys_hospital hospital, strin ...@@ -115,13 +115,13 @@ public string ExtractData(int allotId, string mail, sys_hospital hospital, strin
if (configList == null || !configList.Any()) if (configList == null || !configList.Any())
{ {
LogHelper.Error("暂不支持自动提取绩效数据", "提取绩效数据"); logger.LogError("提取绩效数据 暂不支持自动提取绩效数据", "");
throw new PerformanceException($"暂不支持自动提取绩效数据"); throw new PerformanceException($"暂不支持自动提取绩效数据");
} }
if (scriptList == null || !scriptList.Any()) if (scriptList == null || !scriptList.Any())
{ {
LogHelper.Error($"暂无该医院的配置信息和执行sql,无法进行数据提取", "提取绩效数据"); logger.LogError($"提取绩效数据 暂无该医院的配置信息和执行sql,无法进行数据提取", "");
throw new PerformanceException($"暂无该医院的配置信息和执行sql,无法进行数据提取"); throw new PerformanceException($"暂无该医院的配置信息和执行sql,无法进行数据提取");
} }
...@@ -130,7 +130,7 @@ public string ExtractData(int allotId, string mail, sys_hospital hospital, strin ...@@ -130,7 +130,7 @@ public string ExtractData(int allotId, string mail, sys_hospital hospital, strin
//判断是否是首次 //判断是否是首次
if ((allotList == null || !allotList.Any(t => t.States > 0)) && (firstList != null || !firstList.Any())) if ((allotList == null || !allotList.Any(t => t.States > 0)) && (firstList != null || !firstList.Any()))
{ {
LogHelper.Information($"当前绩效为首次提取,从EXCEL中获取信息", "提取绩效数据"); logger.LogInformation($"提取绩效数据 当前绩效为首次提取,从EXCEL中获取信息", "");
//var first = firstList.OrderByDescending(t => t.CreateDate).FirstOrDefault(); //var first = firstList.OrderByDescending(t => t.CreateDate).FirstOrDefault();
//首次 从excel中获取人员信息,SHEET页信息,列头信息 //首次 从excel中获取人员信息,SHEET页信息,列头信息
sheetList = GetFileData(firstPath); sheetList = GetFileData(firstPath);
...@@ -138,7 +138,7 @@ public string ExtractData(int allotId, string mail, sys_hospital hospital, strin ...@@ -138,7 +138,7 @@ public string ExtractData(int allotId, string mail, sys_hospital hospital, strin
} }
else else
{ {
LogHelper.Information($"当前绩效为非首次提取,从数据库中获取信息", "提取绩效数据"); logger.LogInformation($"提取绩效数据 当前绩效为非首次提取,从数据库中获取信息", "");
//非首次 从数据库中获取人员信息,SHEET页信息,列头信息 //非首次 从数据库中获取人员信息,SHEET页信息,列头信息
if (allotList.Any(t => t.Path != null && t.Path != "")) if (allotList.Any(t => t.Path != null && t.Path != ""))
{ {
...@@ -148,18 +148,18 @@ public string ExtractData(int allotId, string mail, sys_hospital hospital, strin ...@@ -148,18 +148,18 @@ public string ExtractData(int allotId, string mail, sys_hospital hospital, strin
} }
else else
{ {
LogHelper.Error($"历史绩效未上传文件", "提取绩效数据"); logger.LogError($"提取绩效数据 历史绩效未上传文件", "");
throw new PerformanceException($"历史绩效未上传文件"); throw new PerformanceException($"历史绩效未上传文件");
} }
} }
LogHelper.Information($"基础数据提取完成,", "提取绩效数据"); logger.LogInformation($"提取绩效数据 基础数据提取完成,", "");
var dpath = Path.Combine(environment.ContentRootPath, "Files", $"{hospital.ID}", "autoextract"); var dpath = Path.Combine(environment.ContentRootPath, "Files", $"{hospital.ID}", "autoextract");
FileHelper.CreateDirectory(dpath); FileHelper.CreateDirectory(dpath);
string path = Path.Combine(dpath, $"绩效数据{DateTime.Now.ToString("yyyyMMddHHmmssfff")}.xlsx"); string path = Path.Combine(dpath, $"绩效数据{DateTime.Now.ToString("yyyyMMddHHmmssfff")}.xlsx");
//根据SHEET页信息,列头信息,创建EXCEL文件 //根据SHEET页信息,列头信息,创建EXCEL文件
if (WriteExcel(path, originalPath, sheetList, hospitalConfig, hospital.ID, allotList.First(t => t.ID == allotId), out filepath)) if (WriteExcel(path, originalPath, sheetList, hospitalConfig, hospital.ID, allotList.First(t => t.ID == allotId), out filepath))
{ {
LogHelper.Information($"基础数据提取完成,文件保存成功{filepath}", "提取绩效数据"); logger.LogInformation($"提取绩效数据 基础数据提取完成,文件保存成功{filepath}", "");
//var allot = allotList.First(t => t.ID == allotId); //var allot = allotList.First(t => t.ID == allotId);
//allot.ExtractPath = filepath; //allot.ExtractPath = filepath;
//if (!string.IsNullOrEmpty(filepath)) //if (!string.IsNullOrEmpty(filepath))
...@@ -170,14 +170,12 @@ public string ExtractData(int allotId, string mail, sys_hospital hospital, strin ...@@ -170,14 +170,12 @@ public string ExtractData(int allotId, string mail, sys_hospital hospital, strin
} }
catch (PerformanceException ex) catch (PerformanceException ex)
{ {
logger.LogError(ex.ToString()); logger.LogError("提取绩效数据" + ex.ToString());
LogHelper.Error(ex.ToString(), "提取绩效数据", "异常");
SendEmail(mail, "", $"{hospital.HosName}HIS数据提取失败", $"{hospital.HosName}提取数据失败,{ex.Message}!"); SendEmail(mail, "", $"{hospital.HosName}HIS数据提取失败", $"{hospital.HosName}提取数据失败,{ex.Message}!");
} }
catch (Exception ex) catch (Exception ex)
{ {
logger.LogError(ex.ToString()); logger.LogError("提取绩效数据" + ex.ToString());
LogHelper.Error(ex.ToString(), "提取绩效数据", "异常");
SendEmail(mail, "", $"{hospital.HosName}HIS数据提取失败", $"{hospital.HosName}提取数据过程中出现异常情况,我们将尽快解决问题。给您带来的不便我们深感歉意!"); SendEmail(mail, "", $"{hospital.HosName}HIS数据提取失败", $"{hospital.HosName}提取数据过程中出现异常情况,我们将尽快解决问题。给您带来的不便我们深感歉意!");
} }
finally finally
...@@ -225,10 +223,10 @@ private void SendEmail(string mail, string path, string subject, string body) ...@@ -225,10 +223,10 @@ private void SendEmail(string mail, string path, string subject, string body)
/// <param name="hospitalId"></param> /// <param name="hospitalId"></param>
private bool WriteExcel(string newpath, string originalPath, List<PerSheet> sheetList, sys_hospitalconfig hospitalConfig, int hospitalId, per_allot allot, out string filepath) private bool WriteExcel(string newpath, string originalPath, List<PerSheet> sheetList, sys_hospitalconfig hospitalConfig, int hospitalId, per_allot allot, out string filepath)
{ {
LogHelper.Information($"开始向EXCEL中写入数据,", "提取绩效数据"); logger.LogInformation($"提取绩效数据 开始向EXCEL中写入数据,", "");
if (string.IsNullOrEmpty(originalPath)) if (string.IsNullOrEmpty(originalPath))
{ {
LogHelper.Error($"{originalPath}文件路径无效", "提取绩效数据"); logger.LogError($"提取绩效数据{originalPath}文件路径无效", "");
throw new PerformanceException($"{originalPath}文件路径无效"); throw new PerformanceException($"{originalPath}文件路径无效");
} }
...@@ -246,7 +244,7 @@ private bool WriteExcel(string newpath, string originalPath, List<PerSheet> shee ...@@ -246,7 +244,7 @@ private bool WriteExcel(string newpath, string originalPath, List<PerSheet> shee
if (importSheet == null) continue; if (importSheet == null) continue;
if (sheet.PerHeader == null) continue; if (sheet.PerHeader == null) continue;
LogHelper.Information($"列头信息写入,", "提取绩效数据"); logger.LogInformation($"提取绩效数据列头信息写入,", "");
var maxHeaderRowNumber = sheet.PerHeader.Max(t => t.PointRow); var maxHeaderRowNumber = sheet.PerHeader.Max(t => t.PointRow);
sheet.PerHeader?.ForEach(t => sheet.PerHeader?.ForEach(t =>
{ {
...@@ -277,7 +275,7 @@ private bool WriteExcel(string newpath, string originalPath, List<PerSheet> shee ...@@ -277,7 +275,7 @@ private bool WriteExcel(string newpath, string originalPath, List<PerSheet> shee
//填充人员信息 //填充人员信息
if (SheetType.Employee == sheet.SheetType && sheet.PerData != null && sheet.PerData.Any()) if (SheetType.Employee == sheet.SheetType && sheet.PerData != null && sheet.PerData.Any())
{ {
LogHelper.Information($"填充人员信息,", "提取绩效数据"); logger.LogInformation($"提取绩效数据填充人员信息,", "");
var dataList = sheet.PerData.ConvertAll(new Converter<IPerData, PerDataEmployee>(t => (PerDataEmployee)t)); var dataList = sheet.PerData.ConvertAll(new Converter<IPerData, PerDataEmployee>(t => (PerDataEmployee)t));
for (int i = 0; i < dataList.Count; i++) for (int i = 0; i < dataList.Count; i++)
{ {
...@@ -316,7 +314,7 @@ private bool WriteExcel(string newpath, string originalPath, List<PerSheet> shee ...@@ -316,7 +314,7 @@ private bool WriteExcel(string newpath, string originalPath, List<PerSheet> shee
//临床科室医护绩效测算表 //临床科室医护绩效测算表
else if (SheetType.AccountBasic == sheet.SheetType && sheet.PerData != null && sheet.PerData.Any()) else if (SheetType.AccountBasic == sheet.SheetType && sheet.PerData != null && sheet.PerData.Any())
{ {
LogHelper.Information($"填充临床科室医护绩效测算表,", "提取绩效数据"); logger.LogInformation($"提取绩效数据 填充临床科室医护绩效测算表,", "");
var dataList = sheet.PerData.ConvertAll(new Converter<IPerData, PerDataAccountBaisc>(t => (PerDataAccountBaisc)t)); var dataList = sheet.PerData.ConvertAll(new Converter<IPerData, PerDataAccountBaisc>(t => (PerDataAccountBaisc)t));
var children = new List<PerHeader>(); var children = new List<PerHeader>();
foreach (var item in sheet.PerHeader) foreach (var item in sheet.PerHeader)
...@@ -362,12 +360,12 @@ private bool WriteExcel(string newpath, string originalPath, List<PerSheet> shee ...@@ -362,12 +360,12 @@ private bool WriteExcel(string newpath, string originalPath, List<PerSheet> shee
//SHEET页在SQL提取中出现时,执行SQL脚本获得结果向EXCEL中填充 //SHEET页在SQL提取中出现时,执行SQL脚本获得结果向EXCEL中填充
else if (scriptList.Any(t => sheet.SheetName.Contains(t.SheetName))) else if (scriptList.Any(t => sheet.SheetName.Contains(t.SheetName)))
{ {
LogHelper.Information($"执行SQL脚本获取数据,", "提取绩效数据"); logger.LogInformation($"提取绩效数据 执行SQL脚本获取数据,", "");
var script = scriptList.First(t => sheet.SheetName.Contains(t.SheetName)); var script = scriptList.First(t => sheet.SheetName.Contains(t.SheetName));
if (!string.IsNullOrEmpty(script.ExecuteScript)) if (!string.IsNullOrEmpty(script.ExecuteScript))
{ {
script.ExecuteScript = ReplaceParameter(script.ExecuteScript, allot); script.ExecuteScript = ReplaceParameter(script.ExecuteScript, allot);
LogHelper.Information($"SQL脚本{script.ExecuteScript},", "提取绩效数据"); logger.LogInformation($"提取绩效数据 SQL脚本{script.ExecuteScript},", "");
var children = new List<PerHeader>(); var children = new List<PerHeader>();
foreach (var item in sheet.PerHeader?.Select(t => t.Children)) foreach (var item in sheet.PerHeader?.Select(t => t.Children))
{ {
...@@ -377,7 +375,7 @@ private bool WriteExcel(string newpath, string originalPath, List<PerSheet> shee ...@@ -377,7 +375,7 @@ private bool WriteExcel(string newpath, string originalPath, List<PerSheet> shee
var connection = ConnectionBuilder.Create(DatabaseType.SqlServer, hospitalConfig.DbSource, hospitalConfig.DbName, hospitalConfig.DbUser, hospitalConfig.DbPassword); var connection = ConnectionBuilder.Create(DatabaseType.SqlServer, hospitalConfig.DbSource, hospitalConfig.DbName, hospitalConfig.DbUser, hospitalConfig.DbPassword);
var dataList = perforExtractRepository.ExecuteScript(connection, script.ExecuteScript, null); var dataList = perforExtractRepository.ExecuteScript(connection, script.ExecuteScript, null);
LogHelper.Information($"写入SQL脚本执行结果", "提取绩效数据"); logger.LogInformation($"提取绩效数据 写入SQL脚本执行结果", "");
//用于查询核算单元 //用于查询核算单元
var deptList = dataList.Where(t => t.ColumnName == "科室名称").Select(t => t.Value.ToString()).Distinct().ToList(); var deptList = dataList.Where(t => t.ColumnName == "科室名称").Select(t => t.Value.ToString()).Distinct().ToList();
...@@ -430,7 +428,7 @@ private bool WriteExcel(string newpath, string originalPath, List<PerSheet> shee ...@@ -430,7 +428,7 @@ private bool WriteExcel(string newpath, string originalPath, List<PerSheet> shee
} }
} }
LogHelper.Information($"数据写入完成,开始保存文件{newpath}", "提取绩效数据"); logger.LogInformation($"提取绩效数据 数据写入完成,开始保存文件{newpath}", "");
file = new FileStream(newpath, FileMode.Create); file = new FileStream(newpath, FileMode.Create);
workbook.Write(file); workbook.Write(file);
filepath = newpath; filepath = newpath;
...@@ -438,7 +436,7 @@ private bool WriteExcel(string newpath, string originalPath, List<PerSheet> shee ...@@ -438,7 +436,7 @@ private bool WriteExcel(string newpath, string originalPath, List<PerSheet> shee
} }
catch (Exception ex) catch (Exception ex)
{ {
LogHelper.Error($"数据写入出现异常{ex.ToString()}", "提取绩效数据", "异常"); logger.LogError($"提取绩效数据 数据写入出现异常{ex.ToString()}");
throw ex; throw ex;
} }
finally finally
......
using Performance.DtoModels; using Microsoft.Extensions.Logging;
using Performance.DtoModels;
using Performance.EntityModels; using Performance.EntityModels;
using Performance.Infrastructure; using Performance.Infrastructure;
using Performance.Repository; using Performance.Repository;
...@@ -12,6 +13,7 @@ namespace Performance.Services ...@@ -12,6 +13,7 @@ namespace Performance.Services
{ {
public class ModExtractService : IAutoInjection public class ModExtractService : IAutoInjection
{ {
private readonly ILogger<ModExtractService> logger;
private PerforModextractRepository perforModextractRepository; private PerforModextractRepository perforModextractRepository;
private PerforModitemRepository perforModitemRepository; private PerforModitemRepository perforModitemRepository;
private PerforModmoduleRepository perforModmoduleRepository; private PerforModmoduleRepository perforModmoduleRepository;
...@@ -20,14 +22,17 @@ public class ModExtractService : IAutoInjection ...@@ -20,14 +22,17 @@ public class ModExtractService : IAutoInjection
private PerforExtractRepository perforExtractRepository; private PerforExtractRepository perforExtractRepository;
private PerforModdicRepository moddicRepository; private PerforModdicRepository moddicRepository;
public ModExtractService(PerforModextractRepository perforModextractRepository, public ModExtractService(
PerforModitemRepository perforModitemRepository, ILogger<ModExtractService> logger,
PerforModmoduleRepository perforModmoduleRepository, PerforModextractRepository perforModextractRepository,
PerforModspecialRepository perforModspecialRepository, PerforModitemRepository perforModitemRepository,
PerforHospitalconfigRepository perforHospitalconfigRepository, PerforModmoduleRepository perforModmoduleRepository,
PerforExtractRepository perforExtractRepository, PerforModspecialRepository perforModspecialRepository,
PerforModdicRepository moddicRepository) PerforHospitalconfigRepository perforHospitalconfigRepository,
PerforExtractRepository perforExtractRepository,
PerforModdicRepository moddicRepository)
{ {
this.logger = logger;
this.perforModextractRepository = perforModextractRepository; this.perforModextractRepository = perforModextractRepository;
this.perforModitemRepository = perforModitemRepository; this.perforModitemRepository = perforModitemRepository;
this.perforModmoduleRepository = perforModmoduleRepository; this.perforModmoduleRepository = perforModmoduleRepository;
...@@ -425,13 +430,13 @@ public void AddItems(int moduleId) ...@@ -425,13 +430,13 @@ public void AddItems(int moduleId)
var sqlconfig = moddicRepository.GetEntity(w => w.HospitalId == module.HospitalId && w.Type.Trim().ToLower() == "itemsql"); var sqlconfig = moddicRepository.GetEntity(w => w.HospitalId == module.HospitalId && w.Type.Trim().ToLower() == "itemsql");
if (sqlconfig == null) if (sqlconfig == null)
{ {
LogHelper.Information("医院配置信息未设置", "添加默认收费项"); logger.LogInformation("{0} 医院配置信息未设置", "添加默认收费项");
throw new PerformanceException($"医院配置信息未设置"); throw new PerformanceException($"医院配置信息未设置");
} }
var hospitalConfig = perforHospitalconfigRepository.GetEntity(t => t.HospitalId == module.HospitalId && t.Id == sqlconfig.ConfigId); var hospitalConfig = perforHospitalconfigRepository.GetEntity(t => t.HospitalId == module.HospitalId && t.Id == sqlconfig.ConfigId);
if (hospitalConfig == null) if (hospitalConfig == null)
{ {
LogHelper.Information("医院配置信息未设置", "添加默认收费项"); logger.LogInformation("{0} 医院配置信息未设置", "添加默认收费项");
throw new PerformanceException($"医院配置信息未设置"); throw new PerformanceException($"医院配置信息未设置");
} }
...@@ -450,7 +455,7 @@ public void AddItems(int moduleId) ...@@ -450,7 +455,7 @@ public void AddItems(int moduleId)
ExtractId = module.ExtractId, ExtractId = module.ExtractId,
ReadOnly = 1 ReadOnly = 1
}); });
LogHelper.Information($"受影响行数{itemList.Count()}", "添加默认收费项"); logger.LogInformation($"添加默认收费项 受影响行数{itemList.Count()}");
perforModitemRepository.AddRange(itemList.ToArray()); perforModitemRepository.AddRange(itemList.ToArray());
module.IsGenerated = 1; module.IsGenerated = 1;
perforModmoduleRepository.Update(module); perforModmoduleRepository.Update(module);
......
...@@ -165,14 +165,14 @@ public string ExtractData(int allotId, string email, int hospitalId) ...@@ -165,14 +165,14 @@ public string ExtractData(int allotId, string email, int hospitalId)
workbook.Write(file); workbook.Write(file);
} }
logManageService.WriteMsg("提取绩效数据", $"{hospital.HosName}HIS数据提取成功,文件路径:{newPath}。", 5, allotId, "ReceiveMessage"); logManageService.WriteMsg("提取绩效数据", $"{hospital.HosName}HIS数据提取成功,文件路径:{newPath}。", 5, allotId, "ReceiveMessage");
LogHelper.Information($"{hospital.HosName}HIS数据提取成功,文件路径:{newPath}。", "提取绩效数据"); logger.LogInformation($"提取绩效数据 {hospital.HosName}HIS数据提取成功,文件路径:{newPath}");
SendEmail(email, newPath, $"{hospital.HosName}HIS数据提取成功", $"{hospital.HosName}{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}成功提取。"); SendEmail(email, newPath, $"{hospital.HosName}HIS数据提取成功", $"{hospital.HosName}{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}成功提取。");
return newPath; return newPath;
} }
catch (Exception ex) catch (Exception ex)
{ {
logManageService.WriteMsg("提取数据异常", $"数据写入出现异常", 4, allotId, "ReceiveMessage"); logManageService.WriteMsg("提取数据异常", $"数据写入出现异常", 4, allotId, "ReceiveMessage");
LogHelper.Error($"数据写入出现异常{ex.ToString()}", "提取绩效数据", "异常"); logger.LogError($"提取绩效数据异常 数据写入出现异常{ex.ToString()}");
SendEmail(email, "", $"{hospital.HosName}HIS数据提取失败", $"{hospital.HosName}提取数据过程中出现异常情况,我们将尽快解决问题。给您带来的不便我们深感歉意!"); SendEmail(email, "", $"{hospital.HosName}HIS数据提取失败", $"{hospital.HosName}提取数据过程中出现异常情况,我们将尽快解决问题。给您带来的不便我们深感歉意!");
throw ex; throw ex;
} }
...@@ -229,7 +229,7 @@ private void WriteOtherIncome(ISheet sheet, int hospitalId, List<AccountUnitEnti ...@@ -229,7 +229,7 @@ private void WriteOtherIncome(ISheet sheet, int hospitalId, List<AccountUnitEnti
int cellStartIndex = sheetRead.Point.HeaderFirstCellNum.Value + 4; int cellStartIndex = sheetRead.Point.HeaderFirstCellNum.Value + 4;
logManageService.WriteMsg("提取绩效数据", $"写入列头信息 -- {module.ModuleName}", 1, AllotId, "ReceiveMessage"); logManageService.WriteMsg("提取绩效数据", $"写入列头信息 -- {module.ModuleName}", 1, AllotId, "ReceiveMessage");
LogHelper.Information($"写入列头信息 -- {module.ModuleName}", "提取绩效数据"); logger.LogInformation($"提取绩效数据 写入列头信息 -- {module.ModuleName}");
//写入列头信息 //写入列头信息
foreach (var item in itemList) foreach (var item in itemList)
{ {
...@@ -264,7 +264,7 @@ private void WriteOtherIncome(ISheet sheet, int hospitalId, List<AccountUnitEnti ...@@ -264,7 +264,7 @@ private void WriteOtherIncome(ISheet sheet, int hospitalId, List<AccountUnitEnti
foreach (var moditem in category) foreach (var moditem in category)
{ {
logManageService.WriteMsg("提取绩效数据", $"执行SQL脚本获取数据 -- {module.ModuleName}", 1, AllotId, "ReceiveMessage"); logManageService.WriteMsg("提取绩效数据", $"执行SQL脚本获取数据 -- {module.ModuleName}", 1, AllotId, "ReceiveMessage");
LogHelper.Information($"执行SQL脚本获取数据 -- {module.ModuleName},", "提取绩效数据"); logger.LogInformation($"提取绩效数据 执行SQL脚本获取数据 -- {module.ModuleName}");
var config = hospitalConfigList.FirstOrDefault(t => t.Id == moditem.ConfigId); var config = hospitalConfigList.FirstOrDefault(t => t.Id == moditem.ConfigId);
if (config == null) continue; if (config == null) continue;
...@@ -282,7 +282,7 @@ private void WriteOtherIncome(ISheet sheet, int hospitalId, List<AccountUnitEnti ...@@ -282,7 +282,7 @@ private void WriteOtherIncome(ISheet sheet, int hospitalId, List<AccountUnitEnti
} }
logManageService.WriteMsg("提取绩效数据", $"填充数据 -- {module.ModuleName}", 1, AllotId, "ReceiveMessage"); logManageService.WriteMsg("提取绩效数据", $"填充数据 -- {module.ModuleName}", 1, AllotId, "ReceiveMessage");
LogHelper.Information($"填充数据 -- {module.ModuleName}", "提取绩效数据"); logger.LogInformation($"提取绩效数据 填充数据 -- {module.ModuleName}");
//写入数据 //写入数据
var rowIndex = sheetRead.Point.HeaderFirstRowNum.Value + 1; var rowIndex = sheetRead.Point.HeaderFirstRowNum.Value + 1;
foreach (var department in allExtract.Select(t => t.Department).Distinct()) foreach (var department in allExtract.Select(t => t.Department).Distinct())
...@@ -342,7 +342,7 @@ private void WriteIncome(ISheet sheet, int hospitalId, List<AccountUnitEntity> u ...@@ -342,7 +342,7 @@ private void WriteIncome(ISheet sheet, int hospitalId, List<AccountUnitEntity> u
var head = GetOrCreate(sheet, sheetRead.Point.HeaderFirstRowNum.Value); var head = GetOrCreate(sheet, sheetRead.Point.HeaderFirstRowNum.Value);
logManageService.WriteMsg("提取绩效数据", $"写入列头信息 -- {module.ModuleName}", 1, AllotId, "ReceiveMessage"); logManageService.WriteMsg("提取绩效数据", $"写入列头信息 -- {module.ModuleName}", 1, AllotId, "ReceiveMessage");
LogHelper.Information($"写入列头信息 -- {module.ModuleName}", "提取绩效数据"); logger.LogInformation($"提取绩效数据 写入列头信息 -- {module.ModuleName}");
//写入列头信息 //写入列头信息
int cellStartIndex = sheetRead.Point.HeaderFirstCellNum.Value + 4; int cellStartIndex = sheetRead.Point.HeaderFirstCellNum.Value + 4;
foreach (var item in itemList) foreach (var item in itemList)
...@@ -372,7 +372,7 @@ private void WriteIncome(ISheet sheet, int hospitalId, List<AccountUnitEntity> u ...@@ -372,7 +372,7 @@ private void WriteIncome(ISheet sheet, int hospitalId, List<AccountUnitEntity> u
foreach (var item in extractList) foreach (var item in extractList)
{ {
logManageService.WriteMsg("提取绩效数据", $"执行SQL脚本获取数据 -- {module.ModuleName}", 1, AllotId, "ReceiveMessage"); logManageService.WriteMsg("提取绩效数据", $"执行SQL脚本获取数据 -- {module.ModuleName}", 1, AllotId, "ReceiveMessage");
LogHelper.Information($"执行SQL脚本获取数据 -- {module.ModuleName}", "提取绩效数据"); logger.LogInformation($"提取绩效数据 执行SQL脚本获取数据 -- {module.ModuleName}");
var config = hospitalConfigList.FirstOrDefault(t => t.Id == module.ConfigId); var config = hospitalConfigList.FirstOrDefault(t => t.Id == module.ConfigId);
if (config == null) continue; if (config == null) continue;
...@@ -382,7 +382,7 @@ private void WriteIncome(ISheet sheet, int hospitalId, List<AccountUnitEntity> u ...@@ -382,7 +382,7 @@ private void WriteIncome(ISheet sheet, int hospitalId, List<AccountUnitEntity> u
} }
logManageService.WriteMsg("提取绩效数据", $"填充数据 -- {module.ModuleName}", 1, AllotId, "ReceiveMessage"); logManageService.WriteMsg("提取绩效数据", $"填充数据 -- {module.ModuleName}", 1, AllotId, "ReceiveMessage");
LogHelper.Information($"填充数据 -- {module.ModuleName}", "提取绩效数据"); logger.LogInformation($"提取绩效数据 填充数据 -- {module.ModuleName}");
//写入数据 //写入数据
var rowIndex = sheetRead.Point.HeaderFirstRowNum.Value + 1; var rowIndex = sheetRead.Point.HeaderFirstRowNum.Value + 1;
foreach (var department in allExtract.Select(t => t.Department).Distinct()) foreach (var department in allExtract.Select(t => t.Department).Distinct())
...@@ -471,7 +471,7 @@ private void WriteWorkload(ISheet sheet, int hospitalId, List<AccountUnitEntity> ...@@ -471,7 +471,7 @@ private void WriteWorkload(ISheet sheet, int hospitalId, List<AccountUnitEntity>
var factor = GetOrCreate(sheet, sheetRead.Point.HeaderFirstRowNum.Value + 1); var factor = GetOrCreate(sheet, sheetRead.Point.HeaderFirstRowNum.Value + 1);
logManageService.WriteMsg("提取绩效数据", $"写入列头信息 -- {module.ModuleName}", 1, AllotId, "ReceiveMessage"); logManageService.WriteMsg("提取绩效数据", $"写入列头信息 -- {module.ModuleName}", 1, AllotId, "ReceiveMessage");
LogHelper.Information($"写入列头信息 -- {module.ModuleName}", "提取绩效数据"); logger.LogInformation($"提取绩效数据 写入列头信息 -- {module.ModuleName}");
//写入列头信息 //写入列头信息
int cellStartIndex = sheetRead.Point.HeaderFirstCellNum.Value + 2; int cellStartIndex = sheetRead.Point.HeaderFirstCellNum.Value + 2;
foreach (var item in itemList) foreach (var item in itemList)
...@@ -498,7 +498,7 @@ private void WriteWorkload(ISheet sheet, int hospitalId, List<AccountUnitEntity> ...@@ -498,7 +498,7 @@ private void WriteWorkload(ISheet sheet, int hospitalId, List<AccountUnitEntity>
foreach (var moditem in category) foreach (var moditem in category)
{ {
logManageService.WriteMsg("提取绩效数据", $"执行SQL脚本获取数据 -- {module.ModuleName}", 1, AllotId, "ReceiveMessage"); logManageService.WriteMsg("提取绩效数据", $"执行SQL脚本获取数据 -- {module.ModuleName}", 1, AllotId, "ReceiveMessage");
LogHelper.Information($"执行SQL脚本获取数据 -- {module.ModuleName},", "提取绩效数据"); logger.LogInformation($"提取绩效数据 执行SQL脚本获取数据 -- {module.ModuleName}");
var config = hospitalConfigList.FirstOrDefault(t => t.Id == moditem.ConfigId); var config = hospitalConfigList.FirstOrDefault(t => t.Id == moditem.ConfigId);
if (config == null) continue; if (config == null) continue;
...@@ -516,7 +516,7 @@ private void WriteWorkload(ISheet sheet, int hospitalId, List<AccountUnitEntity> ...@@ -516,7 +516,7 @@ private void WriteWorkload(ISheet sheet, int hospitalId, List<AccountUnitEntity>
} }
logManageService.WriteMsg("提取绩效数据", $"填充数据 -- {module.ModuleName}", 1, AllotId, "ReceiveMessage"); logManageService.WriteMsg("提取绩效数据", $"填充数据 -- {module.ModuleName}", 1, AllotId, "ReceiveMessage");
LogHelper.Information($"填充数据 -- {module.ModuleName}", "提取绩效数据"); logger.LogInformation($"提取绩效数据 填充数据 -- {module.ModuleName}");
//写入数据 //写入数据
var rowIndex = sheetRead.Point.HeaderFirstRowNum.Value + 2; var rowIndex = sheetRead.Point.HeaderFirstRowNum.Value + 2;
foreach (var department in allExtract.Select(t => t.Department).Distinct()) foreach (var department in allExtract.Select(t => t.Department).Distinct())
...@@ -563,7 +563,7 @@ private List<ExtractDto> QueryDatabase(sys_hospitalconfig config, mod_extract ex ...@@ -563,7 +563,7 @@ private List<ExtractDto> QueryDatabase(sys_hospitalconfig config, mod_extract ex
executeScript = Regex.Replace(executeScript, item.Key, item.Value, RegexOptions.IgnoreCase); executeScript = Regex.Replace(executeScript, item.Key, item.Value, RegexOptions.IgnoreCase);
} }
//logManageService.WriteMsg("提取绩效数据", $"SQL脚本:{executeScript}", 1, AllotId, "ReceiveMessage"); //logManageService.WriteMsg("提取绩效数据", $"SQL脚本:{executeScript}", 1, AllotId, "ReceiveMessage");
LogHelper.Information($"SQL脚本{executeScript},", "提取绩效数据"); logger.LogInformation($"提取绩效数据 SQL脚本{executeScript}");
var result = connection.Query<ExtractDto>(executeScript, commandTimeout: 20000); var result = connection.Query<ExtractDto>(executeScript, commandTimeout: 20000);
if (result != null && result.Count() > 0) if (result != null && result.Count() > 0)
{ {
...@@ -594,7 +594,7 @@ private void WriteExpend(ISheet sheet, int hospitalId, IPerSheetDataRead sheetRe ...@@ -594,7 +594,7 @@ private void WriteExpend(ISheet sheet, int hospitalId, IPerSheetDataRead sheetRe
int cellStartIndex = sheetRead.Point.HeaderFirstCellNum.Value + 4; int cellStartIndex = sheetRead.Point.HeaderFirstCellNum.Value + 4;
logManageService.WriteMsg("提取绩效数据", $"写入列头信息 -- {module.ModuleName}", 1, AllotId, "ReceiveMessage"); logManageService.WriteMsg("提取绩效数据", $"写入列头信息 -- {module.ModuleName}", 1, AllotId, "ReceiveMessage");
LogHelper.Information($"写入列头信息 -- {module.ModuleName}", "提取绩效数据"); logger.LogInformation($"提取绩效数据 写入列头信息 -- {module.ModuleName}");
//写入列头信息 //写入列头信息
foreach (var item in itemList) foreach (var item in itemList)
{ {
...@@ -649,7 +649,7 @@ private void WriteEmployee(ISheet sheet, int allotLastId, IPerSheetDataRead shee ...@@ -649,7 +649,7 @@ private void WriteEmployee(ISheet sheet, int allotLastId, IPerSheetDataRead shee
}; };
logManageService.WriteMsg("提取绩效数据", $"填充数据 -- 人员信息", 1, AllotId, "ReceiveMessage"); logManageService.WriteMsg("提取绩效数据", $"填充数据 -- 人员信息", 1, AllotId, "ReceiveMessage");
LogHelper.Information($"填充数据 -- 人员信息", "提取绩效数据"); logger.LogInformation($"提取绩效数据 填充数据 -- 人员信息");
var dataList = perforImemployeeRepository.GetEntities(t => t.AllotID == allotLastId)?.OrderBy(t => t.AccountType).ToList(); var dataList = perforImemployeeRepository.GetEntities(t => t.AllotID == allotLastId)?.OrderBy(t => t.AccountType).ToList();
for (int i = 0; i < dataList.Count; i++) for (int i = 0; i < dataList.Count; i++)
{ {
...@@ -701,7 +701,7 @@ private void WriteSpecialUnit(ISheet sheet, int hospitalId, per_allot allot, IPe ...@@ -701,7 +701,7 @@ private void WriteSpecialUnit(ISheet sheet, int hospitalId, per_allot allot, IPe
foreach (var moditem in category) foreach (var moditem in category)
{ {
logManageService.WriteMsg("提取绩效数据", $"执行SQL脚本获取数据 -- 特殊核算单元绩效测算表", 1, AllotId, "ReceiveMessage"); logManageService.WriteMsg("提取绩效数据", $"执行SQL脚本获取数据 -- 特殊核算单元绩效测算表", 1, AllotId, "ReceiveMessage");
LogHelper.Information($"执行SQL脚本获取数据 -- 特殊核算单元绩效测算表,", "提取绩效数据"); logger.LogInformation($"提取绩效数据 执行SQL脚本获取数据 -- 特殊核算单元绩效测算表,");
var config = hospitalConfigList.FirstOrDefault(t => t.Id == moditem.ConfigId); var config = hospitalConfigList.FirstOrDefault(t => t.Id == moditem.ConfigId);
if (config == null) continue; if (config == null) continue;
...@@ -730,7 +730,7 @@ private void WriteSpecialUnit(ISheet sheet, int hospitalId, per_allot allot, IPe ...@@ -730,7 +730,7 @@ private void WriteSpecialUnit(ISheet sheet, int hospitalId, per_allot allot, IPe
int mergedEnd = sheetRead.Point.DataFirstRowNum.Value; int mergedEnd = sheetRead.Point.DataFirstRowNum.Value;
logManageService.WriteMsg("提取绩效数据", $"填充数据 -- 特殊核算单元绩效测算表", 1, AllotId, "ReceiveMessage"); logManageService.WriteMsg("提取绩效数据", $"填充数据 -- 特殊核算单元绩效测算表", 1, AllotId, "ReceiveMessage");
LogHelper.Information($"填充数据 -- 特殊核算单元绩效测算表", "提取绩效数据"); logger.LogInformation($"提取绩效数据 填充数据 -- 特殊核算单元绩效测算表");
for (int i = 0; i < modDataList.Count; i++) for (int i = 0; i < modDataList.Count; i++)
{ {
var headIndex = sheetRead.Point.HeaderFirstRowNum; var headIndex = sheetRead.Point.HeaderFirstRowNum;
...@@ -798,7 +798,7 @@ private void WriteAccountBasic(ISheet sheet, int allotLastId, IPerSheetDataRead ...@@ -798,7 +798,7 @@ private void WriteAccountBasic(ISheet sheet, int allotLastId, IPerSheetDataRead
}; };
logManageService.WriteMsg("提取绩效数据", $"填充数据 -- 临床科室医护绩效测算表", 1, AllotId, "ReceiveMessage"); logManageService.WriteMsg("提取绩效数据", $"填充数据 -- 临床科室医护绩效测算表", 1, AllotId, "ReceiveMessage");
LogHelper.Information($"填充数据 -- 临床科室医护绩效测算表", "提取绩效数据"); logger.LogInformation($"提取绩效数据 填充数据 -- 临床科室医护绩效测算表");
var dataList = perforImaccountbasicRepository.GetEntities(t => t.AllotID == allotLastId)?.OrderBy(t => t.UnitType).ThenBy(t => t.DoctorAccountingUnit).ToList(); var dataList = perforImaccountbasicRepository.GetEntities(t => t.AllotID == allotLastId)?.OrderBy(t => t.UnitType).ThenBy(t => t.DoctorAccountingUnit).ToList();
for (int i = 0; i < dataList.Count; i++) for (int i = 0; i < dataList.Count; i++)
{ {
...@@ -926,12 +926,12 @@ public string Judge(int allotId, int hospitalId, int useTemplate) ...@@ -926,12 +926,12 @@ public string Judge(int allotId, int hospitalId, int useTemplate)
} }
catch (PerformanceException ex) catch (PerformanceException ex)
{ {
LogHelper.Error(ex.ToString(), "提取绩效数据"); logger.LogError($"提取绩效数据异常 {ex.ToString()}");
result = ex.Message; result = ex.Message;
} }
catch (Exception ex) catch (Exception ex)
{ {
LogHelper.Error(ex.ToString(), "提取绩效数据"); logger.LogError($"提取绩效数据异常 {ex.ToString()}");
throw new Exception(ex.Message); throw new Exception(ex.Message);
} }
return result; return result;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment