Commit 5debbd47 by ruyun.zhang@suvalue.com

Merge branch 'feature/writeexcel' into develop

# Conflicts:
#	performance/Performance.Api/Controllers/TemplateController.cs
parents bc4ceecc 017c70ef
using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Http.Internal; using Microsoft.AspNetCore.Http.Internal;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
...@@ -15,16 +15,19 @@ namespace Performance.Api.Controllers ...@@ -15,16 +15,19 @@ namespace Performance.Api.Controllers
[Route("api/[controller]")] [Route("api/[controller]")]
public class TemplateController : Controller public class TemplateController : Controller
{ {
private TemplateService templateService; private readonly TemplateService templateService;
private readonly ExtractService extractService;
private HospitalService hospitalService; private HospitalService hospitalService;
private IHostingEnvironment evn; private IHostingEnvironment evn;
private ClaimService claim; private ClaimService claim;
public TemplateController(TemplateService templateService, public TemplateController(TemplateService templateService,
HospitalService hospitalService, HospitalService hospitalService,
ExtractService extractService,
IHostingEnvironment evn, IHostingEnvironment evn,
ClaimService claim) ClaimService claim)
{ {
this.templateService = templateService; this.templateService = templateService;
this.extractService = extractService;
this.hospitalService = hospitalService; this.hospitalService = hospitalService;
this.evn = evn; this.evn = evn;
this.claim = claim; this.claim = claim;
...@@ -54,7 +57,7 @@ public ApiResponse Import([FromForm] IFormCollection form) ...@@ -54,7 +57,7 @@ public ApiResponse Import([FromForm] IFormCollection form)
var name = FileHelper.GetFileNameNoExtension(file.FileName) + DateTime.Now.ToString("yyyyMMddHHmmssfff"); var name = FileHelper.GetFileNameNoExtension(file.FileName) + DateTime.Now.ToString("yyyyMMddHHmmssfff");
var ext = FileHelper.GetExtension(file.FileName); var ext = FileHelper.GetExtension(file.FileName);
var dpath = Path.Combine(evn.ContentRootPath, "FirstFiles", $"{hospitalid}"); var dpath = Path.Combine(evn.ContentRootPath, "Files", $"{hospitalid}", "first");
FileHelper.CreateDirectory(dpath); FileHelper.CreateDirectory(dpath);
var path = Path.Combine(dpath, $"{name}{ext}"); var path = Path.Combine(dpath, $"{name}{ext}");
...@@ -79,5 +82,18 @@ public ApiResponse Import([FromForm] IFormCollection form) ...@@ -79,5 +82,18 @@ public ApiResponse Import([FromForm] IFormCollection form)
} }
return new ApiResponse(ResponseType.OK); return new ApiResponse(ResponseType.OK);
} }
/// <summary>
/// 提取绩效数据
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[Route("extractdata")]
[HttpPost]
public ApiResponse ExtractData([FromBody]ApiRequest request)
{
var filePath = extractService.ExtractData(24);
return new ApiResponse(ResponseType.OK, "OK", filePath);
}
} }
} }
\ No newline at end of file
...@@ -65,10 +65,17 @@ public AutoMapperConfigs() ...@@ -65,10 +65,17 @@ public AutoMapperConfigs()
CreateMap<PerHeader, im_header>() CreateMap<PerHeader, im_header>()
.ForMember(dest => dest.IsMerge, opt => opt.MapFrom(src => src.IsMerge ? 1 : 2)); .ForMember(dest => dest.IsMerge, opt => opt.MapFrom(src => src.IsMerge ? 1 : 2));
CreateMap<PerData, im_data>() CreateMap<PerData, im_data>()
.ForMember(dest => dest.IsFactor, opt => opt.MapFrom(src => src.IsFactor ? 1 : 2)) .ForMember(dest => dest.IsFactor, opt => opt.MapFrom(src => src.IsFactor ? 1 : 2))
.ForMember(dest => dest.UnitType, opt => opt.MapFrom(src => src.UnitType == "医生组" ? 1 : (src.UnitType == "护理组" ? 2 : 0))); .ForMember(dest => dest.UnitType, opt => opt.MapFrom(src => src.UnitType == "医生组" ? 1 : (src.UnitType == "护理组" ? 2 : 0)));
CreateMap<im_header, PerHeader>()
.ForMember(dest => dest.IsMerge, opt => opt.MapFrom(src => src.IsMerge == 1 ? true : false));
CreateMap<im_data, PerData>()
.ForMember(dest => dest.IsFactor, opt => opt.MapFrom(src => src.IsFactor == 1 ? true : false))
.ForMember(dest => dest.UnitType, opt => opt.MapFrom(src => src.UnitType == 1 ? "医生组" : (src.UnitType == 2 ? "护理组" : "")));
CreateMap<PerDataEmployee, im_employee>(); CreateMap<PerDataEmployee, im_employee>();
CreateMap<im_employee, PerDataEmployee>(); CreateMap<im_employee, PerDataEmployee>();
......
...@@ -39,7 +39,7 @@ public class sys_hospitalconfig ...@@ -39,7 +39,7 @@ public class sys_hospitalconfig
/// <summary> /// <summary>
/// ///
/// </summary> /// </summary>
public Nullable<int> DbUser { get; set; } public string DbUser { get; set; }
/// <summary> /// <summary>
/// ///
......
using MySql.Data.MySqlClient;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Text;
namespace Performance.Repository
{
/// <summary>
/// 创建连接
/// </summary>
public class ConnectionBuilder
{
/// <summary>
/// 创建连接
/// </summary>
/// <param name="type"></param>
/// <param name="connectionString"></param>
/// <returns></returns>
public static IDbConnection Create(DatabaseType type, string connectionString)
{
switch (type)
{
case DatabaseType.MySql:
return new MySqlConnection(connectionString);
case DatabaseType.SqlServer:
return new SqlConnection(connectionString);
default:
throw new Exception($"nonsupport {DatabaseType.MySql}");
}
}
/// <summary>
/// 创建连接字符串
/// </summary>
/// <param name="type"></param>
/// <param name="ip"></param>
/// <param name="database"></param>
/// <param name="uid"></param>
/// <param name="pwd"></param>
/// <returns></returns>
public static string GetConnectionString(DatabaseType type, string ip, string database, string uid, string pwd)
{
string connectionString = "";
switch (type)
{
case DatabaseType.MySql:
connectionString = $"Server={ip};Database={database};Uid={uid};Pwd={pwd};connection timeout=12000;pooling=true;charset=utf8;Convert Zero Datetime=True;port=3306;Allow User Variables=True;;";
break;
case DatabaseType.SqlServer:
connectionString = $"data source={ip};initial catalog={database};user id={uid};password={pwd};connection timeout=12000;";
break;
default:
throw new Exception($"nonsupport {DatabaseType.MySql}");
}
return connectionString;
}
/// <summary>
/// 创建连接
/// </summary>
/// <param name="type"></param>
/// <param name="ip"></param>
/// <param name="database"></param>
/// <param name="uid"></param>
/// <param name="pwd"></param>
/// <returns></returns>
public static IDbConnection Create(DatabaseType type, string ip, string database, string uid, string pwd)
{
string connectionString = GetConnectionString(type, ip, database, uid, pwd);
return Create(type, connectionString);
}
}
}
using System;
using System.Collections.Generic;
using System.Text;
namespace Performance.Repository
{
public enum DatabaseType
{
MySql,
SqlServer
}
}
//-----------------------------------------------------------------------
// <copyright file=" sys_extract.cs">
// * FileName: sys_extract.cs
// </copyright>
//-----------------------------------------------------------------------
using Dapper;
using Performance.EntityModels;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
namespace Performance.Repository
{
/// <summary>
/// sys_extract Repository
/// </summary>
public partial class PerforExtractRepository : PerforRepository<sys_extract>
{
public List<CustomExecute> ExecuteScript(IDbConnection connection, string sql, string param)
{
List<CustomExecute> result = new List<CustomExecute>();
using (connection)
{
var dataReader = connection.ExecuteReader(sql, param);
int row = 0;
while (dataReader.Read())
{
for (int i = 0; i < dataReader.FieldCount; i++)
{
var fileName = dataReader.GetName(i);
var @object = dataReader[fileName];
result.Add(new CustomExecute { RowNumber = row, ColumnName = fileName, Value = @object });
}
row++;
}
}
return result;
}
}
public class CustomExecute
{
public int RowNumber { get; set; }
public string ColumnName { get; set; }
public object Value { get; set; }
}
}
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