You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1544 lines
76 KiB
C#

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

using IBKLinker_Minio.Entity;
using log4net;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using System.Web.Http;
using Minio;
using System.Net.PeerToPeer;
using System.IO;
using System.Reactive.Linq;
using Minio.DataModel;
using System.Security.AccessControl;
using System.IO.Pipes;
using System.Net.Mime;
using IBKLinker_Minio.Entity.MinioController;
using SOA.Objects;
using SOA.Persistent;
using System.Web.Http.Results;
using System.Runtime.InteropServices.ComTypes;
using System.Xml;
using Swashbuckle.Swagger;
using System.Runtime.ConstrainedExecution;
using System.Net.Http;
using System.Web.UI.WebControls;
using System.Runtime.Remoting.Contexts;
using System.Runtime.InteropServices;
using System.Net;
using NPOI.XSSF.UserModel;
using NPOI.SS.UserModel;
using System.Net.Http.Headers;
using NPOI.SS.Formula.Functions;
using System.Xml.Linq;
using NPOI.HPSF;
using IBKLinker_Minio.Common;
using NPOI.POIFS.Crypt.Dsig;
using NPOI.SS.Formula.Atp;
using Org.BouncyCastle.Asn1.Pkcs;
using System.Windows.Forms;
using Org.BouncyCastle.Asn1.Ocsp;
namespace IBKLinker_Minio.Controller.MinioController
{
/// <summary>
/// 作者:孙亮
/// 编写时间2023-08-15
/// 编写内容mino上传接口
/// </summary>
[RoutePrefix("minio/minioapi")]
public class MinioApiController : ApiController
{
/// <summary>
/// 调用log日志文件
/// </summary>
private static readonly ILog logger = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
#region minio权限表
/// <summary>
/// 添加minio权限表
/// </summary>
/// <param name="minioAuthority">权限表</param>
[HttpPost, Route("AddAuthority")]
public RequestEntity AddAuthority(MinioAuthority minioAuthority)
{
RequestEntity request = new RequestEntity();
MinioBusinessLogic bb = new MinioBusinessLogic();//定义业务逻辑方法
try
{
///创建数据库连接上下文对象
using (IDbContext db = ObjectContainer.GetObject<IDbContext>("db"))
{
///拿到表自增长的值赋值给自增长主键pk
minioAuthority.Id = bb.getPk("S_MINIO_AUTHORITY", "MINIO_AUTHORITY");
///给创建时间赋值
minioAuthority.CreatorTime = DateTime.Now;
///把需要添加的数据同步到数据库
db.Insert<MinioAuthority>(minioAuthority);
request.code = "0";
}
}
catch (Exception ex)
{
request.code = "1";
logger.ErrorFormat("主表:MINIO_AUTHORITYminio权限表添加数据失败错误原因:{0}", ex);
}
return request;
}
/// <summary>
/// 修改minio权限表
/// </summary>
/// <param name="data">修改数据</param>
[HttpPost, Route("UpdateAuthority")]
public RequestEntity UpdateAuthority(List<MinioAuthority> data)
{
RequestEntity request = new RequestEntity();
try
{
///创建数据库连接上下文对象
using (IDbContext db = ObjectContainer.GetObject<IDbContext>("db"))
{
try
{
///启动事务
db.BeginTransaction();
///给修改时间赋值
DateTime time = DateTime.Now;
db.Update<MinioAuthority>(data);
db.Commit();
request.code = "0";
}
catch (Exception ex)
{
request.code = "1";
db.Rollback();
///把错误日志写到日志文件
logger.ErrorFormat("主表:MINIO_AUTHORITY修改minio权限表失败错误原因:{0}", ex);
}
}
}
catch (Exception ex)
{
request.code = "1";
logger.ErrorFormat("主表:MINIO_AUTHORITY创建数据库连接对象错误原因:{0}", ex);
}
return request;
}
/// <summary>
/// 删除minio权限表
/// </summary>
/// <param name="master">需要删除的数据</param>
[HttpPost, Route("RemoveAuthority")]
public RequestEntity RemoveAuthority(List<MinioAuthority> master)
{
RequestEntity request = new RequestEntity();
try
{
using (IDbContext db = ObjectContainer.GetObject<IDbContext>("db"))
{
db.BeginTransaction();
db.Delete<MinioAuthority>(master);
db.Commit();
request.code = "0";
}
}
catch (Exception ex)
{
request.code = "1";
logger.ErrorFormat("主表:MINIO_AUTHORITY创建数据库连接对象失败错误原因:{0}", ex);
}
return request;
}
/// <summary>
/// 查询minio权限表
/// </summary>
/// <returns></returns>
[HttpPost, Route("GetAuthority")]
public RequestEntity GetAuthority(MinioAuthority minioAuthority)
{
RequestEntity request = new RequestEntity();
try
{
using (IDbContext db = ObjectContainer.GetObject<IDbContext>("db"))
{
string sql = string.Empty;
//IList<MinioAuthority> result = new List<MinioAuthority>();
if (!string.IsNullOrEmpty(minioAuthority.LimitsAuthorityId))
{
sql += " and a.LIMITS_AUTHORITY_ID ='" + minioAuthority.LimitsAuthorityId + "'";
}
request.data = db.Query<AuthorityModel>("select a.*,b.Role_Name as RoleName from MINIO_AUTHORITY a left join MINIO_ROLE_PERMISSION b on a.LIMITS_AUTHORITY_ID=b.ID where 1=1 " + sql + " ORDER BY PK");
request.code = "0";
}
}
catch (Exception ex)
{
request.code = "1";
logger.ErrorFormat("主表:MINIO_AUTHORITY查询minio权限表失败错误原因:{0}", ex);
}
return request;
}
#endregion
#region minio用户表
/// <summary>
/// 添加minio角色表
/// </summary>
/// <param name="minioUser">角色表</param>
[HttpPost, Route("AddUSER")]
public RequestEntity AddUSER(MinioUser minioUser)
{
RequestEntity request = new RequestEntity();
try
{
///创建数据库连接上下文对象
using (IDbContext db = ObjectContainer.GetObject<IDbContext>("db"))
{
///拿到表自增长的值赋值给自增长主键pk
//minioUser.UserId = getPk("S_MINIO_USER", "MINIO_USER");
///给创建时间赋值
minioUser.CreatorTime = DateTime.Now;
///把需要添加的数据同步到数据库
db.Insert<MinioUser>(minioUser);
request.code = "0";
}
}
catch (Exception ex)
{
request.code = "1";
logger.ErrorFormat("主表:MINIO_USERminio角色表添加数据失败错误原因:{0}", ex);
}
return request;
}
/// <summary>
/// 修改minio用户表
/// </summary>
/// <param name="data">修改数据</param>
[HttpPost, Route("UpdateUSER")]
public RequestEntity UpdateUSER(List<MinioUser> data)
{
RequestEntity request = new RequestEntity();
try
{
///创建数据库连接上下文对象
using (IDbContext db = ObjectContainer.GetObject<IDbContext>("db"))
{
try
{
///启动事务
db.BeginTransaction();
///给修改时间赋值
DateTime time = DateTime.Now;
db.Update<MinioUser>(data);
db.Commit();
request.code = "0";
}
catch (Exception ex)
{
request.code = "1";
db.Rollback();
///把错误日志写到日志文件
logger.ErrorFormat("主表:MINIO_USER修改minio角色表失败错误原因:{0}", ex);
}
}
}
catch (Exception ex)
{
request.code = "1";
logger.ErrorFormat("主表:MINIO_USER创建数据库连接对象错误原因:{0}", ex);
}
return request;
}
/// <summary>
/// 删除minio角色表
/// </summary>
/// <param name="master">需要删除的数据</param>
[HttpPost, Route("RemoveUSER")]
public RequestEntity RemoveUSER(List<MinioUser> master)
{
RequestEntity request = new RequestEntity();
try
{
using (IDbContext db = ObjectContainer.GetObject<IDbContext>("db"))
{
db.BeginTransaction();
db.Delete<MinioUser>(master);
db.Commit();
request.code = "0";
}
}
catch (Exception ex)
{
request.code = "1";
logger.ErrorFormat("主表:MINIO_USER创建数据库连接对象失败错误原因:{0}", ex);
}
return request;
}
/// <summary>
/// 查询minio用户表
/// </summary>
/// <returns></returns>
[HttpPost, Route("GetUSER")]
public RequestEntity GetUSER(MinioUser minioUser)
{
RequestEntity request = new RequestEntity();
try
{
using (IDbContext db = ObjectContainer.GetObject<IDbContext>("db"))
{
string sql = string.Empty;
//IList<MinioUser> result = new List<MinioUser>();
if (!string.IsNullOrEmpty(minioUser.UserName))
{
sql += " and a.USER_NAME ='" + minioUser.UserName + "'";
}
if (!string.IsNullOrEmpty(minioUser.UserId))
{
sql += " and a.USER_ID ='" + minioUser.UserId + "'";
}
if (!string.IsNullOrEmpty(minioUser.State.ToString()))
{
sql += " and a.STATE =" + minioUser.State + "";
}
if (minioUser.RoleId != "")
{
sql += " and a.ROLE_ID ='" + minioUser.RoleId + "'";
}
request.data = db.Query<UserModel>("select a.*,b.Role_Name as RoleName from MINIO_USER a left join MINIO_ROLE_PERMISSION b on a. ROLE_ID=b.ID where 1=1 " + sql + " ORDER BY USER_ID");
request.code = "0";
}
}
catch (Exception ex)
{
request.code = "1";
logger.ErrorFormat("主表:MINIO_USER查询minio角色表失败错误原因:{0}", ex);
}
return request;
}
#endregion
#region minio文件关联表
/// <summary>
/// 添加minio文件关联表
/// </summary>
/// <param name="minioFileassociation">文件关联表</param>
[HttpPost, Route("AddFileassociation")]
public RequestEntity AddFileassociation(MinioFileassociation minioFileassociation)
{
RequestEntity request = new RequestEntity();
///创建数据库连接上下文对象
using (IDbContext db = ObjectContainer.GetObject<IDbContext>("db"))
{
try
{
IList<MinioFileassociation> SelMFdata = new List<MinioFileassociation>();
SelMFdata = db.Query<MinioFileassociation>("select * from MINIO_FILEASSOCIATION where 1=1 and FILE_PK='"+ minioFileassociation.FilePk+ "' and ASSOCIATION_FILE_PK='"+ minioFileassociation.AssociationFilePk+ "'");
//查询当前被关联文件是否已经被关联过
if (SelMFdata.Count > 0)
{
request.code = "1";
request.msg = "当前文件已经被关联过,请勿重复关联!";
}
else
{
db.BeginTransaction();//启动事务
///拿到表自增长的值赋值给自增长主键pk
minioFileassociation.Pk = Convert.ToInt32(db.QueryScalar("select S_MINIO_FILEASSOCIATION.nextval from dual"));
minioFileassociation.CreatorTime = DateTime.Now;
///把需要添加的数据同步到数据库
db.Insert<MinioFileassociation>(minioFileassociation);
db.Commit();//提交事务
request.code = "0";
request.msg = "关联成功!";
}
}
catch (Exception ex)
{
db.Rollback();//回滚
request.code = "1";
request.msg = "关联失败!";
logger.ErrorFormat("主表:MINIO_FILEASSOCIATIONminio文件关联表表添加数据失败错误原因:{0}", ex);
}
}
return request;
}
/// <summary>
/// 修改minio文件关联表
/// </summary>
/// <param name="data">修改数据</param>
[HttpPost, Route("UpdateFileassociation")]
public RequestEntity UpdateFileassociation(List<MinioFileassociation> data)
{
RequestEntity request = new RequestEntity();
///创建数据库连接上下文对象
using (IDbContext db = ObjectContainer.GetObject<IDbContext>("db"))
{
try
{
try
{
///启动事务
db.BeginTransaction();
///给修改时间赋值
DateTime time = DateTime.Now;
db.Update<MinioFileassociation>(data);
db.Commit();
request.code = "0";
request.msg = "修改成功!";
}
catch (Exception ex)
{
request.code = "1";
db.Rollback();//回滚
///把错误日志写到日志文件
logger.ErrorFormat("主表:MINIO_FILEASSOCIATION修改minio文件关联表表失败错误原因:{0}", ex);
}
}
catch (Exception ex)
{
db.Rollback();//回滚
request.code = "1";
logger.ErrorFormat("主表:MINIO_FILEASSOCIATION创建数据库连接对象错误原因:{0}", ex);
}
}
return request;
}
/// <summary>
/// 删除minio文件关联表
/// </summary>
/// <param name="master">需要删除的数据</param>
[HttpPost, Route("RemoveFileassociation")]
public RequestEntity RemoveFileassociation(MinioFileassociation master)
{
RequestEntity request = new RequestEntity();
///创建数据库连接上下文对象
using (IDbContext db = ObjectContainer.GetObject<IDbContext>("db"))
{
try
{
if (master != null)
{
db.BeginTransaction();//启动事务
string sql = string.Format("delete from MINIO_FILEASSOCIATION where 1=1 and PK={0}", master.Pk);
db.Execute(sql);
db.Commit();//提交事务
request.code = "0";
request.msg = "删除成功!";
}
else
{
request.code = "1";
request.msg = "删除失败!";
}
}
catch (Exception ex)
{
db.Rollback();//回滚
request.code = "1";
logger.ErrorFormat("主表:MINIO_FILEASSOCIATION创建数据库连接对象失败错误原因:{0}", ex);
}
}
return request;
}
/// <summary>
/// 查询minio文件关联表
/// </summary>
/// <returns></returns>
[HttpPost, Route("GetFileassociation")]
public RequestEntity GetFileassociation(string FilePk)
{
RequestEntity request = new RequestEntity();
try
{
using (IDbContext db = ObjectContainer.GetObject<IDbContext>("db"))
{
if (FilePk != null)
{
string sql = string.Empty;
//先通过文件ID拿到文件的类型是技术协议还是质量要点或者工艺卡
MinioStoragePath ds = db.Query<MinioStoragePath>("select * from MINIO_STORAGE_PATH where PK= " + int.Parse(FilePk) + " and CLEAR_FLAG='0' ORDER BY PK").FirstOrDefault();
if (ds != null)
{
if (ds.DocumentType == "1")
{
sql += string.Format(" and FILE_PK ={0}", int.Parse(FilePk));
}
else if (ds.DocumentType == "2")
{
sql += string.Format(" and FILE_PK ={0} or ASSOCIATION_FILE_PK ={0}", int.Parse(FilePk));
}
else
{
sql += string.Format(" and ASSOCIATION_FILE_PK ={0}", int.Parse(FilePk));
}
}
//通过文件类型判断是查文件的下一级还是查文件的上下级
IList<MinioFileassociation> SelMFdata = new List<MinioFileassociation>();
IList<MinioFileassociation> result = new List<MinioFileassociation>();
SelMFdata = db.Query<MinioFileassociation>("select * from MINIO_FILEASSOCIATION where 1=1 " + sql + " ORDER BY PK");
if (SelMFdata.Count > 0) //如果有数据
{
foreach (var item in SelMFdata)
{
MinioFileassociation date = new MinioFileassociation();//存储单条数据
if (item.FilePk.ToString() == FilePk)//判断当前查询结果文件pk是否等于选中的文件pk
{
#region 数据赋值
date.Pk = item.Pk;//主键
date.FileType = item.FileType;//文件类型
date.FilePk = item.FilePk;//文件PK
date.FilePath = item.FilePath;//文件路径
date.FileLevel = item.FileLevel;//文件层级
date.FileName = item.FileName;//文件名称
date.DownloadNum = item.DownloadNum;//文件下载次数
date.CreatorUser = item.CreatorUser;//创建者
date.CreatorTime = item.CreatorTime;//创建时间
date.AssociationFilePk = item.AssociationFilePk;//关联文件PK
date.AssociationFileType = item.AssociationFileType;//关联文件类型
date.AssorciationFilePath = item.AssorciationFilePath;//关联文件路径
date.AssociationFileName = item.AssociationFileName;//关联文件名称
date.AssociationFileLevel = item.AssociationFileLevel;//关联文件层级
date.AssociationDownloadNum = item.AssociationDownloadNum;//关联文件下载次数
#endregion
}
else //如果不等与的话将关联文件与被关联文件信息调换位置返回前端
{
#region 数据赋值
date.Pk = item.Pk;//主键
date.FileType = item.AssociationFileType;//文件类型
date.FilePk = item.AssociationFilePk;//文件PK
date.FilePath = item.AssorciationFilePath;//文件路径
date.FileLevel = item.AssociationFileLevel;//文件层级
date.FileName = item.AssociationFileName;//文件名称
date.DownloadNum = item.AssociationDownloadNum;//文件下载次数
date.CreatorUser = item.CreatorUser;//创建者
date.CreatorTime = item.CreatorTime;//创建时间
date.AssociationFilePk = item.FilePk;//关联文件PK
date.AssociationFileType = item.FileType;//关联文件类型
date.AssorciationFilePath = item.FilePath;//关联文件路径
date.AssociationFileName = item.FileName;//关联文件名称
date.AssociationFileLevel = item.FileLevel;//关联文件层级
date.AssociationDownloadNum = item.DownloadNum;//关联文件下载次数
#endregion
}
result.Add(date);//添加数据到list
}
request.data = result;
request.code = "0";
}
else
{
request.code = "0";
request.msg = "暂无数据!";
request.data = result;
}
}
}
}
catch (Exception ex)
{
request.code = "1";
logger.ErrorFormat("主表:MINIO_FILEASSOCIATION查询minio文件关联表表失败错误原因:{0}", ex);
}
return request;
}
#endregion
#region minio角色权限表
/// <summary>
/// 添加minio角色权限表
/// </summary>
/// <param name="minioRolePermission">minio角色权限表</param>
[HttpPost, Route("AddRolePermission")]
public RequestEntity AddRolePermission(RolePermissionModel minioRolePermission)
{
MinioBusinessLogic bb = new MinioBusinessLogic();//定义业务逻辑方法
RequestEntity request = new RequestEntity();
try
{
List<MinioAuthority> AuthorityList = new List<MinioAuthority>();
///创建数据库连接上下文对象
using (IDbContext db = ObjectContainer.GetObject<IDbContext>("db"))
{
minioRolePermission.minioRolePermission.Id = Guid.NewGuid().ToString();
minioRolePermission.minioRolePermission.LimitsAuthorityId = Guid.NewGuid().ToString();
foreach (var item in minioRolePermission.ds.Split(','))
{
MinioAuthority ds = new MinioAuthority();
ds.LimitsAuthorityId = minioRolePermission.minioRolePermission.LimitsAuthorityId;
ds.CreatorTime = DateTime.Now;
ds.CreatorUser = minioRolePermission.minioRolePermission.CreatorUser;
ds.Id = Convert.ToInt32(db.QueryScalar("select S_MINIO_STORAGE_PATH.nextval from dual"));
ds.FileId = int.Parse(item);
AuthorityList.Add(ds);
}
db.BeginTransaction();
///拿到表自增长的值赋值给自增长主键pk
minioRolePermission.minioRolePermission.Pk = bb.getPk("S_MINIO_ROLE_PERMISSION", "MINIO_ROLE_PERMISSION");
///给创建时间赋值
minioRolePermission.minioRolePermission.CreatorTime = DateTime.Now;
///把需要添加的数据同步到数据库
db.Insert<MinioRolePermission>(minioRolePermission.minioRolePermission);
db.Insert<MinioAuthority>(AuthorityList);
db.Commit();
request.code = "0";
}
}
catch (Exception ex)
{
request.code = "1";
logger.ErrorFormat("主表:MINIO_ROLE_PERMISSIONminio角色权限表添加数据失败错误原因:{0}", ex);
}
return request;
}
/// <summary>
/// 修改minio角色表
/// </summary>
/// <param name="data">修改数据</param>
[HttpPost, Route("UpdateRolePermission")]
public RequestEntity UpdateRolePermission(RolePermissionModel minioRolePermission)
{
RequestEntity request = new RequestEntity();
try
{
List<MinioAuthority> AuthorityList = new List<MinioAuthority>();
///创建数据库连接上下文对象
using (IDbContext db = ObjectContainer.GetObject<IDbContext>("db"))
{
//data.Id=Guid.NewGuid().ToString();
if (string.IsNullOrEmpty(minioRolePermission.minioRolePermission.LimitsAuthorityId))
{
minioRolePermission.minioRolePermission.LimitsAuthorityId = Guid.NewGuid().ToString();
}
foreach (var item in minioRolePermission.ds.Split(','))
{
MinioAuthority ds = new MinioAuthority();
ds.LimitsAuthorityId = minioRolePermission.minioRolePermission.LimitsAuthorityId;
ds.CreatorTime = DateTime.Now;
ds.CreatorUser = minioRolePermission.minioRolePermission.CreatorUser;
ds.FileId = int.Parse(item);
ds.Id = Convert.ToInt32(db.QueryScalar("select S_MINIO_STORAGE_PATH.nextval from dual"));
AuthorityList.Add(ds);
}
try
{
///启动事务
db.BeginTransaction();
///给修改时间赋值
//DateTime time = DateTime.Now;
db.Update<MinioRolePermission>(minioRolePermission.minioRolePermission);
//删除历史记录加入新的记录
db.Execute("delete from MINIO_AUTHORITY where LIMITS_AUTHORITY_ID='" + minioRolePermission.minioRolePermission.LimitsAuthorityId + "' ");
db.Insert<MinioAuthority>(AuthorityList);
db.Commit();
request.code = "0";
}
catch (Exception ex)
{
request.code = "1";
db.Rollback();
///把错误日志写到日志文件
logger.ErrorFormat("主表:MINIO_ROLE_PERMISSION修改minio角色权限表表失败错误原因:{0}", ex);
}
}
}
catch (Exception ex)
{
request.code = "1";
logger.ErrorFormat("主表:MINIO_ROLE_PERMISSION创建数据库连接对象错误原因:{0}", ex);
}
return request;
}
/// <summary>
/// 删除minio角色表
/// </summary>
/// <param name="master">需要删除的数据</param>
[HttpPost, Route("RemoveRolePermission")]
public RequestEntity RemoveRolePermission(MinioRolePermission data)
{
RequestEntity request = new RequestEntity();
IList<MinioUser> MUData = new List<MinioUser>();
IList<MinioUser> UdpData = new List<MinioUser>();
string sql = "begin ";
using (IDbContext db = ObjectContainer.GetObject<IDbContext>("db"))
{
try
{
if (data != null)
{
MUData = db.Query<MinioUser>("select * from MINIO_USER where 1=1 and ROLE_ID='" + data.Id + "'");//查询用户表中使用要被删除的角色
db.BeginTransaction();//启动事务
if (MUData.Count > 0)//如果有数据需要同步修改用户表中的角色
{
foreach (var item in MUData)
{
MinioUser date = new MinioUser();
date.UserId = item.UserId;//用户ID
date.UserName = item.UserName;//用户姓名
date.RoleId = "";//角色ID将角色id改成0
date.CreatorUser = item.CreatorUser;//创建人
date.State = item.State;//状态
date.CreatorTime = item.CreatorTime;//创建时间
UdpData.Add(date);//将数据加入list中
}
db.Update<MinioUser>(UdpData);
}
sql += string.Format("delete from MINIO_AUTHORITY where 1=1 and LIMITS_AUTHORITY_ID='{0}';", data.LimitsAuthorityId);
sql += string.Format("delete from MINIO_ROLE_PERMISSION where 1=1 and PK={0};", data.Pk);
sql += "end;";
db.Execute(sql);
db.Commit();//提交事务
request.code = "0";
request.msg = "删除成功";
}
}
catch (Exception ex)
{
db.Rollback();//回滚
request.code = "1";
logger.ErrorFormat("主表:MINIO_ROLE_PERMISSION创建数据库连接对象失败错误原因:{0}", ex);
}
}
return request;
}
/// <summary>
/// 查询minio角色表
/// </summary>
/// <returns></returns>
[HttpPost, Route("GetRolePermission")]
public RequestEntity GetRolePermission(MinioRolePermission minioRolePermission)
{
RequestEntity request = new RequestEntity();
try
{
using (IDbContext db = ObjectContainer.GetObject<IDbContext>("db"))
{
string sql = string.Empty;
IList<MinioRolePermission> result = new List<MinioRolePermission>();
if (!string.IsNullOrEmpty(minioRolePermission.Id))
{
sql += " and ID ='" + minioRolePermission.Id + "'";
}
if (!string.IsNullOrEmpty(minioRolePermission.RoleName))
{
sql += " and ROLE_NAME like'%" + minioRolePermission.RoleName + "%'";
}
request.data = db.Query<MinioRolePermission>("select * from MINIO_ROLE_PERMISSION where 1=1 " + sql + " ORDER BY PK");
request.code = "0";
}
}
catch (Exception ex)
{
request.code = "1";
logger.ErrorFormat("主表:MINIO_ROLE_PERMISSION查询minio角色权限表失败错误原因:{0}", ex);
}
return request;
}
#endregion
#region minio文件文件夹路径表
/// <summary>
/// 添加minio文件文件夹路径表
/// </summary>
/// <param name="minioStoragePath">minio文件文件夹路径表</param>
[HttpPost, Route("AddStoragePath")]
public RequestEntity AddStoragePath(List<MinioStoragePath> minioStoragePath)
{
RequestEntity request = new RequestEntity();
MinioBusinessLogic bb = new MinioBusinessLogic();//定义业务逻辑方法
using (IDbContext db = ObjectContainer.GetObject<IDbContext>("db"))
{
try
{
MinioClient minio = bb.ConnectMinIO();//调用连接minio数据库方法
string BuckName = bb.GetBuckName();//调用取桶名称方法
var bucket = minio.BucketExistsAsync(BuckName);//判断桶是否存在
if (bucket.Result == false) //不存在就创建
{
minio.MakeBucketAsync(BuckName);//创建桶
}
string Operate = "";//操作
List<MinioStoragePath> date = new List<MinioStoragePath>();
List<MinioStoragePath> checkdatelist = new List<MinioStoragePath>();
string RecordFileName = "";//重复文件名称记录
///创建数据库连接上下文对象
db.BeginTransaction();//启动事务
if (minioStoragePath != null)
{
foreach (var items in minioStoragePath) //先循环接收数据
{
checkdatelist = db.Query<MinioStoragePath>("select t.* from MINIO_STORAGE_PATH t where 1=1 and t.FILE_NAME='" + items.FileName + "'").ToList();//查询上传的文件或新建的文件夹在当前文件夹下是否有重复存在
if (checkdatelist.Count > 0) //如果有
{
RecordFileName += items.FileName + ",";//记录名称
}
}
if (RecordFileName == "")//如果正常上传
{
foreach (var item in minioStoragePath)
{
MinioStoragePath data = new MinioStoragePath();
date = db.Query<MinioStoragePath>("select * from MINIO_STORAGE_PATH where pk='" + minioStoragePath[0].Upk + "' ORDER BY PK").ToList();
if (item.FileType == 0) //如果是文件夹
{
if (item.Upk > 0)//判断如果创建的是根目录文件夹前端不需要对父级id传值
{
if (date.Count > 0)
{
#region 文件文件夹路径表字段赋值
data.Upk = minioStoragePath[0].Upk;//子文件夹的父级id
data.FileName = minioStoragePath[0].FileName;//文件名称
data.FileType = minioStoragePath[0].FileType;//文件类型
data.FilePath = minioStoragePath[0].FilePath;//文件路径
data.CreatorUser = minioStoragePath[0].CreatorUser;//创建者
data.ClearFlag = "0";//删除状态为未删除
data.CreatorTime = DateTime.Now;//创建时间
data.FileLevel = date[0].FileLevel + 1;//层级
data.Pk = Convert.ToInt32(db.QueryScalar("select S_MINIO_STORAGE_PATH.nextval from dual"));///拿到表自增长的值赋值给自增长主键pk
#endregion
db.Insert<MinioStoragePath>(data);
#region 记录日志
Operate = " 创建了一个新的文件夹,";
bb.MinioOperationLog(data.CreatorUser, data.FileName, Operate, data.Pk.ToString(), data.Upk.ToString(), db);
#endregion
}
}
else
{
#region 文件文件夹路径表字段赋值
data.Pk = Convert.ToInt32(db.QueryScalar("select S_MINIO_STORAGE_PATH.nextval from dual"));///拿到表自增长的值赋值给自增长主键pk
data.Upk = 0;//子文件夹的父级id如果是根目录默认父级id为0
data.FileName = minioStoragePath[0].FileName;//文件名称
data.FileType = minioStoragePath[0].FileType;//文件类型
data.FilePath = minioStoragePath[0].FilePath;//文件路径
data.CreatorUser = minioStoragePath[0].CreatorUser;//创建者
data.CreatorTime = DateTime.Now;//创建时间
data.ClearFlag = "0";//删除状态为未删除
data.FileLevel = 1;//层级
#endregion
db.Insert<MinioStoragePath>(data);
#region 记录日志
Operate = " 创建了一个新的文件夹,";
bb.MinioOperationLog(data.CreatorUser, data.FileName, Operate, data.Pk.ToString(), data.Upk.ToString(), db);
#endregion
}
#region minio创建文件夹
//var folderName = minioStoragePath[0].FilePath + "/";//取前端发送路径(或单一文件夹名称)
//minio.PutObjectAsync(buckname, folderName, new MemoryStream(), 0, "application/octet-stream");
#endregion
request.msg = "文件夹创建成功!";
request.code = "0";
}
if (item.FileType == 1)//如果是文件
{
var contentType = item.FileCategory;
string strBase64 = item.Bate64;//取文件base64流数据
byte[] bt = Convert.FromBase64String(strBase64);//获取html base64
var uploadTask = minio.PutObjectAsync(BuckName, "/" + item.FileName, new MemoryStream(bt), bt.Length, contentType);//上传文件到minio数据库
uploadTask.Wait();
if (uploadTask.Status == TaskStatus.RanToCompletion && !uploadTask.IsFaulted)//判断是否上传成功
{
#region 文件文件夹路径表字段赋值
data.Pk = Convert.ToInt32(db.QueryScalar("select S_MINIO_STORAGE_PATH.nextval from dual"));///拿到表自增长的值赋值给自增长主键pk
data.Upk = item.Upk;//子文件夹的父级id如果是根目录默认父级id为0
data.FileName = item.FileName;//文件名称
data.FileType = item.FileType;//文件类型
data.FilePath = item.FilePath;//文件路径
data.CreatorUser = item.CreatorUser;//创建者
data.CreatorTime = DateTime.Now;//创建时间
data.ClearFlag = "0";//删除状态为未删除
data.FileLevel = date[0].FileLevel + 1;//层级
data.DocumentType = item.DocumentType;//文件种类
#endregion
db.Insert<MinioStoragePath>(data);
request.msg = "文件上传成功!";
request.code = "0";
#region 记录日志
Operate = " 上传了一个新的文档,";
bb.MinioOperationLog(item.CreatorUser, item.FileName, Operate, data.Pk.ToString(), data.Upk.ToString(), db);
#endregion
}
else
{
request.msg = "文件上传失败,请检查文件是否正确!";
request.code = "1";
}
}
}
}
else
{
request.msg = "文件上传失败,其中" + RecordFileName + "在此文件夹已经存在!";
request.code = "1";
}
db.Commit();
}
}
catch (Exception ex)
{
db.Rollback();
request.code = "1";
logger.ErrorFormat("主表:MINIO_STORAGE_PATHminio文件文件夹路径表添加数据失败错误原因:{0}", ex);
}
}
return request;
}
/// <summary>
/// 修改minio文件文件夹路径
/// </summary>
/// <param name="data">修改数据</param>
[HttpPost, Route("UpdateStoragePath")]
public RequestEntity UpdateStoragePath(List<MinioStoragePath> data)
{
RequestEntity request = new RequestEntity();
MinioBusinessLogic bb = new MinioBusinessLogic();//定义业务逻辑方法
try
{
MinioClient minio = bb.ConnectMinIO();//调用连接minio数据库方法
string BuckName = bb.GetBuckName();//调用取桶名称方法
var bucket = minio.BucketExistsAsync(BuckName);//判断桶是否存在
if (bucket.Result == false) //不存在就创建
{
minio.MakeBucketAsync(BuckName);//创建桶
}
///创建数据库连接上下文对象
using (IDbContext db = ObjectContainer.GetObject<IDbContext>("db"))
{
try
{
///启动事务
db.BeginTransaction();
///给修改时间赋值
DateTime time = DateTime.Now;//取当前时间
MinioStoragePath date = new MinioStoragePath();
List<MinioStoragePath> datelist = new List<MinioStoragePath>();
string Operate = "";//操作
if (data.Count > 0)
{
foreach (var item in data)
{
date.Pk = item.Pk;//主键ID
date.Upk = item.Upk;//子文件夹的父ID
date.FileName = item.FileName;//文件名称
date.FileType = item.FileType;//文件类型
date.FilePath = item.FilePath;//文件路径
date.CreatorUser = item.CreatorUser;//创建者
date.CreatorTime = item.CreatorTime;//创建时间
date.DownloadNum = item.DownloadNum;//下载次数
date.FileLevel = item.FileLevel;//层级
date.ModifyUsers = item.ModifyUsers;//修改用户
date.ModifyTime = time;//修改时间
date.ClearFlag = "0";//删除标记 0未删除 1删除
date.DocumentType = item.DocumentType;//文件种类
if (item.Bate64 != null)//如果是修改文件
{
var contentType = item.FileCategory;
string strBase64 = item.Bate64;//取文件base64流数据
byte[] bt = Convert.FromBase64String(strBase64);//获取html base64
var uploadTask = minio.PutObjectAsync(BuckName, "/" + item.FileName, new MemoryStream(bt), bt.Length, contentType);//上传文件到minio数据库
uploadTask.Wait();
if (uploadTask.Status == TaskStatus.RanToCompletion && !uploadTask.IsFaulted)//判断是否上传成功
{
datelist.Add(date);
#region 记录日志
Operate = " 更新了这个文档, ";
bb.MinioOperationLog(item.CreatorUser, item.FileName, Operate, item.Pk.ToString(), item.Upk.ToString(), db);
#endregion
}
}
else //正常修改文件/文件夹名称或移动
{
datelist.Add(date);
}
}
if (datelist != null)
{
db.Update<MinioStoragePath>(datelist);
db.Commit();//提交事务
request.code = "0";
request.msg = "修改成功!";
}
else
{
request.code = "1";
request.msg = "请检查是否符合修改规范!";
}
}
}
catch (Exception ex)
{
request.code = "1";
db.Rollback();//回滚
///把错误日志写到日志文件
logger.ErrorFormat("主表:MINIO_STORAGE_PATH修改minio文件文件夹路径表失败错误原因:{0}", ex);
}
}
}
catch (Exception ex)
{
request.code = "1";
logger.ErrorFormat("主表:MINIO_STORAGE_PATH创建数据库连接对象错误原因:{0}", ex);
}
return request;
}
/// <summary>
/// 删除minio文件文件夹路径表
/// </summary>
/// <param name="master">需要删除的数据</param>
[HttpPost, Route("RemoveStoragePath")]
public RequestEntity RemoveStoragePath(List<MinioStoragePath> master)
{
RequestEntity request = new RequestEntity();
MinioBusinessLogic bb = new MinioBusinessLogic();//定义业务逻辑方法
using (IDbContext db = ObjectContainer.GetObject<IDbContext>("db"))
{
try
{
DateTime time = DateTime.Now;//取当前时间
MinioClient minio = bb.ConnectMinIO();//调用连接minio数据库方法
string BuckName = bb.GetBuckName();//调用取桶名称方法
string Operate = "";//操作
string FilePk = "";//文件pk
string fileUPk = "";//文件父级pk
db.BeginTransaction();
string sql = "";
//db.Delete<MinioStoragePath>(master);
foreach (var item in master)
{
if (item.FileType == 1) //如果类型是文件
{
var DelTask = minio.RemoveObjectAsync(BuckName, item.FileName);//minio操作删除文件
DelTask.Wait();
if (DelTask.Status == TaskStatus.RanToCompletion && !DelTask.IsFaulted)//判断是否删除成功
{
sql = "begin ";
sql += string.Format("delete from MINIO_STORAGE_PATH where 1=1 and PK='{2}';", item.ClearUsers, time, item.Pk);//更新文件路径表中的删除状态
sql += string.Format(" delete from MINIO_FILEASSOCIATION where FILE_PK like'%{0}%' or ASSOCIATION_FILE_PK like'%{0}%';", item.Pk);//删除关联表中的关联关系
sql += "end;";
db.Execute(sql);
#region 记录日志
Operate = " 删除了这个文档, ";
bb.MinioOperationLog(item.ClearUsers, item.FileName, Operate, FilePk, fileUPk, db);
#endregion
}
}
else //如果类型是文件夹
{
sql = string.Format("delete from MINIO_STORAGE_PATH where 1=1 and PK='{2}' ", item.ClearUsers, time, item.Pk);//更新文件路径表中的删除状态
db.Execute(sql);
#region 记录日志
Operate = " 删除了这个文件夹, ";
bb.MinioOperationLog(item.ClearUsers, item.FileName, Operate, FilePk, fileUPk, db);
#endregion
}
}
request.code = "0";
request.msg = "删除成功";
db.Commit();
}
catch (Exception ex)
{
db.Rollback();
request.code = "1";
logger.ErrorFormat("主表:MINIO_ROLE_PERMISSION创建数据库连接对象失败错误原因:{0}", ex);
}
}
return request;
}
/// <summary>
/// 查询minio文件文件夹路径表
/// </summary>
/// <returns></returns>
[HttpPost, Route("GetStoragePath")]
public RequestEntity GetStoragePath(GetStoragePathModel PathData)
{
RequestEntity request = new RequestEntity();//定义返回集合
try
{
using (IDbContext db = ObjectContainer.GetObject<IDbContext>("db"))
{
string sql = string.Empty;
IList<MinioStoragePath> result = new List<MinioStoragePath>();//定义查询到的list
if (PathData != null)//传输数据不为空
{
if (!string.IsNullOrEmpty(PathData.FileName.ToString()))//如果有名称模糊查询
{
sql += " and FILE_NAME like'%" + PathData.FileName + "%'";
}
//if (PathData.Upk > 0) //如果在子文件夹内
//{
// sql += " and UPK = '" + PathData.Upk + "'";
//}
if (!string.IsNullOrEmpty(PathData.BeginTime))//如果有开始时间
{
sql += string.Format(" and CREATE_TIME >= to_date('{0}', 'yyyy/mm/dd hh24:mi:ss')", PathData.BeginTime);//开始时间
}
if (!string.IsNullOrEmpty(PathData.EndTime))//如果有结束时间
{
sql += string.Format(" and CREATE_TIME <= to_date('{0}', 'yyyy/mm/dd hh24:mi:ss')", PathData.EndTime);//结束时间
}
request.data = db.Query<MinioStoragePath>("select * from MINIO_STORAGE_PATH where 1=1 " + sql + " and CLEAR_FLAG='0' ORDER BY PK");
request.code = "0";
}
else
{
request.code = "1";
request.msg = "查询失败,请检查查询条件!";
}
}
}
catch (Exception ex)
{
request.code = "1";
logger.ErrorFormat("主表:MINIO_STORAGE_PATH查询minio文件文件夹路径表失败错误原因:{0}", ex);
}
return request;
}
#endregion
#region minio文件菜单递归和权限判断
/// <summary>
/// 根据ID查询子菜单
/// </summary>
/// <param name="PK"></param>
/// <returns></returns>
[HttpPost, Route("GetMenuTree")]
public List<MinioStoragePath> GetMenuTree(string PK = "")
{
List<MinioStoragePath> date = new List<MinioStoragePath>();
using (IDbContext db = ObjectContainer.GetObject<IDbContext>("db"))
{
string sql = string.Empty;
if (!string.IsNullOrEmpty(PK))
{
sql += " and UPK =" + int.Parse(PK);
}
date = db.Query<MinioStoragePath>("select * from MINIO_STORAGE_PATH where 1=1 " + sql + "and CLEAR_FLAG='0' ORDER BY PK").ToList();
}
return date;
}
/// <summary>
/// 获取所有文件夹
/// </summary>
/// <returns></returns>
[HttpPost, Route("GetRecursion")]
public RequestEntity GetRecursion()
{
MinioBusinessLogic bb = new MinioBusinessLogic();//定义业务逻辑方法
RequestEntity request = new RequestEntity();
try
{
List<RequstStoragePath> requstStoragePaths = new List<RequstStoragePath>();
using (IDbContext db = ObjectContainer.GetObject<IDbContext>("db"))
{
List<MinioStoragePath> rootDirectories = db.Query<MinioStoragePath>("select * from MINIO_STORAGE_PATH where CLEAR_FLAG='0' and FILE_TYPE='0'and FILE_LEVEL='1' ORDER BY PK").ToList();//查询根文件夹
foreach (var rootDir in rootDirectories)
{
RequstStoragePath rootModel = new RequstStoragePath();
rootModel.Pk = rootDir.Pk;//主键ID
rootModel.Upk = rootDir.Upk;//父级文件夹pk
rootModel.FileName = rootDir.FileName;//文件名称
rootModel.FilePath = rootDir.FilePath;//文件路径
rootModel.FileType = rootDir.FileType;//文件类型
rootModel.FileLevel = rootDir.FileLevel;//层级
rootModel.CreatorTime = rootDir.CreatorTime;//创建时间
rootModel.CreatorUser = rootDir.CreatorUser;//创建者
rootModel.DownloadNum = rootDir.DownloadNum;//下载次数
rootModel.ModifyUsers = rootDir.ModifyUsers;//修改用户
rootModel.ModifyTime = rootDir.ModifyTime;//修改时间
rootModel.ClearUsers = rootDir.ClearUsers;//删除用户
rootModel.ClearTime = rootDir.ClearTime;//删除时间
rootModel.ClearFlag = rootDir.ClearFlag;//删除标记 0未删除 1删除
rootModel.requstStoragePaths = bb.GetSubDirectories(rootDir.Pk);//子级存进list
requstStoragePaths.Add(rootModel);//添加list
}
}
request.data = requstStoragePaths;
request.code = "0";
}
catch (Exception)
{
request.code = "1";
throw;
}
return request;
}
/// <summary>
/// 权限查询
/// </summary>
/// <param name="UserID"></param>
/// <param name="FileName"></param>
/// <param name="EmpowerType"></param>
/// <returns></returns>
[HttpGet, Route("GetEmpower")]
public RequestEntity GetEmpower(string UserID, string FileName, string EmpowerType)
{
RequestEntity request = new RequestEntity();
try
{
//用户ID文件ID文件操作类型查看/移动)
using (IDbContext db = ObjectContainer.GetObject<IDbContext>("db"))
{
string sql = string.Empty;
if (!string.IsNullOrEmpty(UserID))
{
sql += "and a.USER_ID='"+UserID+"'";
}
if (!string.IsNullOrEmpty(FileName))
{
sql += "and d.File_Name='" + FileName + "'";
}
if (!string.IsNullOrEmpty(EmpowerType))
{
if (EmpowerType == "下载/打印")
{
sql += "and b.PRINT_FLAG=1";
}
if (EmpowerType == "查看")
{
sql += "and b.VIEW_FLAG=1";
}
if (EmpowerType == "上传")
{
sql += "and b.UPLOAD_FLAG=1";
}
if (EmpowerType == "编辑")
{
sql += "and b.EDIT_FLAG=1";
}
if (EmpowerType == "移动")
{
sql += "and b.MOVE_FLAG=1";
}
if (EmpowerType == "删除")
{
sql += "and b.DELETE_FLAG=1";
}
if (EmpowerType == "文件夹查看")
{
sql += "and b.FILE_VIEW_PERMISSIONS=1";
}
if (EmpowerType == "文件夹控制")
{
sql += "and b.FILE_CONTROL_PERMISSIONS=1";
}
}
request.data = db.Query<retqustUser>("select b.*d.FILE_NAME,d.FILE_PATH from minio_user a left join minio_role_permission b on a.role_id=b.id left join minio_authority c on b.limits_authority_id=c.limits_authority_id left join minio_storage_path d on c.file_id=d.pk where 1=1 " + sql + " ORDER BY d.PK").ToList();
request.code = "0";
}
}
catch (Exception)
{
request.code = "1";
//throw;
}
//通过用户ID查询用户得角色ID
//判断当前角色是否有操作权限
//通过角色ID查询用户有权限得文件夹
return request;
}
#endregion
#region minio文件下载及预览
/// <summary>
/// 件下载及预览接口
/// </summary>
[HttpPost, Route("FileDownload")]
public RequestEntity FileDownload(List<MinioStoragePath> minioStoragePath)
{
MinioBusinessLogic bb = new MinioBusinessLogic();//定义业务逻辑方法
RequestEntity request = new RequestEntity();//定义返回集合
List<MinioStoragePath> data = new List<MinioStoragePath>();//定义输出下载的list
using (IDbContext db = ObjectContainer.GetObject<IDbContext>("db"))
{
try
{
if (minioStoragePath != null)
{
foreach (var item in minioStoragePath)
{
MinioStoragePath date = new MinioStoragePath();//定义单条返回数据
string BuckName = bb.GetBuckName();//调用取桶名称方法
string NewFileName = item.FileName.Replace(".pdf","_") + item.Version + ".pdf";
var uploadTask = bb.Download(BuckName, NewFileName);//异步取base64
uploadTask.Wait();//等待取值
if (uploadTask.Status == TaskStatus.RanToCompletion && !uploadTask.IsFaulted) //判读是否有数值
{
date.Bate64 = uploadTask.Result;//赋值流文件
date.FileName = item.FileName;//赋值文件名称
data.Add(date);
if (item.OperationType == "0") //操作类型为下载
{
int DownloadNum = item.DownloadNum + 1;//将下载次数加一
string sql = "update MINIO_STORAGE_PATH set DOWNLOAD_NUM='" + DownloadNum + "' where pk='" + item.Pk + "'";
db.Execute(sql);//更新下载次数
}
request.code = "0";
}
else //如果不存在
{
request.msg = "请联系管理员检查!";
request.code = "1";
}
}
if (data != null)
{
request.data = data;//返回数据
}
}
else
{
request.msg = "请联系管理员检查!";
request.code = "1";
}
}
catch (Exception ex)
{
request.msg = "请联系管理员检查!";
request.code = "1";
logger.InfoFormat(ex.ToString());
}
}
return request;
}
#endregion
#region 操作日志接口
/// <summary>
/// 查询minio文件操作日志
/// </summary>
/// <returns></returns>
[HttpPost, Route("GetMinioBusinessLogic")]
public RequestEntity GetMinioBusinessLogic()
{
RequestEntity request = new RequestEntity();
try
{
using (IDbContext db = ObjectContainer.GetObject<IDbContext>("db"))
{
request.data = db.Query<MinioOperationlog>("select * from MINIO_OPERATIONLOG where 1=1 order by OPERATE_TIME desc");
request.code = "0";
}
}
catch (Exception ex)
{
request.code = "1";
logger.ErrorFormat("主表:MINIO_OPERATIONLOG查询minio文件操作日志表失败错误原因:{0}", ex);
}
return request;
}
#endregion
#region 标准清单
/// <summary>
/// 标准清单导出接口
/// </summary>
[HttpPost, Route("StandardListGeneration")]
public HttpResponseMessage StandardListGeneration(StandardListGenerationModel master)
{
RequestEntity request = new RequestEntity();//定义返回集合
IList<MinioStoragePath> date = new List<MinioStoragePath>();
HttpResponseMessage result = new HttpResponseMessage(HttpStatusCode.OK);
using (IDbContext db = ObjectContainer.GetObject<IDbContext>("db"))
{
try
{
if (master.InventoryName != null && master.InventoryType != null)
{
string ExcelName = "";//定义导出Excel文件名称
FileStream file = new FileStream(Application.StartupPath + "\\Files\\" + "清单模板.xlsx", FileMode.Open, FileAccess.Read);
XSSFWorkbook hssfworkbook = new XSSFWorkbook(file);
string sql = "select * from MINIO_STORAGE_PATH where 1=1 and FILE_TYPE='1' ";
if (master.InventoryType == "0")//标准类型
{
if (!string.IsNullOrEmpty(master.BeginTime))
{
sql += string.Format(" and CREATE_TIME >= to_date('{0}', 'yyyy/mm/dd hh24:mi:ss')", master.BeginTime);//开始时间
}
if (!string.IsNullOrEmpty(master.EndTime))
{
sql += string.Format(" and CREATE_TIME <= to_date('{0}', 'yyyy/mm/dd hh24:mi:ss')", master.EndTime);//结束时间
}
sql += string.Format(" and FILE_PATH like'%{0}%'", master.InventoryName);//直接添加文件加名称
ExcelName = "标准清单";
}
else
{
#region 清单判断
if (master.InventoryName == "HY企业标准清单")
{
sql += "and upk='103'";
ExcelName = "HY企业标准清单";
}
if (master.InventoryName == "Q-HY企业标准清单")
{
sql += "and upk='106'";
ExcelName = "Q-HY企业标准清单";
}
if (master.InventoryName == "新产品标准清单")
{
//sql += "and (FILE_PATH like'%XYGN%' or FILE_PATH like'%XYGW%')";
sql += "and (upk='91' or upk='93')";
ExcelName = "新产品标准清单";
}
if (master.InventoryName == "标准目录有效清单")
{
sql += "and (FILE_PATH like'企业标准'";
ExcelName = "标准目录有效清单";
}
if (master.InventoryName == "企业标准明细表")
{
sql += "and (FILE_PATH like'企业标准'";
ExcelName = "企业标准明细表";
}
if (master.InventoryName == "过期标准清单")
{
sql += "and (FILE_PATH like'%过期标准%'";
ExcelName = "过期标准清单";
}
if (master.InventoryName == "参考标准清单")
{
sql += "and (FILE_PATH like'%参考标准%'";
ExcelName = "参考标准清单";
}
if (master.InventoryName == "工艺卡清单")
{
sql += "and (FILE_PATH like'%170钢管厂工艺卡%' or FILE_PATH like'%219钢管厂工艺卡%' or FILE_PATH like'%460钢管厂工艺卡%' or FILE_PATH like'%170热处理工艺卡%' or FILE_PATH like'%连模铸系列工艺卡/转炉厂%' or FILE_PATH like'%连模铸系列工艺卡/特冶厂%' or FILE_PATH like'%连模铸系列工艺卡/电炉厂%' or FILE_PATH like'%电炉厂工艺卡%' or FILE_PATH like'%转炉厂工艺卡%' or FILE_PATH like'%特冶厂工艺卡%' or FILE_PATH like'%大棒厂工艺卡%' or FILE_PATH like'%小棒厂工艺卡%' or FILE_PATH like'%中棒厂工艺卡%'or FILE_PATH like'%锻造厂工艺卡%' or FILE_PATH like'%扁棒厂工艺卡%')";
ExcelName = "工艺卡清单";
}
if (master.InventoryName == "工艺规程清单")
{
sql += "and FILE_PATH like'%工艺规程%'";
ExcelName = "工艺规程清单";
}
if (master.InventoryName == "技术制度清单")
{
sql += "and FILE_PATH like'%技术制度%'";
ExcelName = "技术制度清单";
}
if (master.InventoryName == "艺字工艺清单")
{
sql += "and FILE_PATH like'%艺字工艺%'";
ExcelName = "艺字工艺清单";
}
if (master.InventoryName == "技字通知清单")
{
sql += "and FILE_PATH like'%技字通知%'";
ExcelName = "技字通知清单";
}
#endregion
}
date = db.Query<MinioStoragePath>(string.Format("{0} order by UPK ASC, CREATOR_TIME ASC ", sql));
if (date.Count > 0)
{
request.data = date;//测试查看数据用后去去掉
var sheet = hssfworkbook.GetSheetAt(0);
for (int i = 0; i < date.Count; i++)
{
if (sheet != null)
{
sheet.CopyRow(2, 3 + i);
}
}
var rowIndex = 3;
for (int i = 0; i < date.Count; i++)
{
var curRow = sheet.GetRow(rowIndex);
var data = date[i];
if (data.FilePath.IndexOf("企业标准/XYGN") >= 0 || data.FilePath.IndexOf("企业标准/XYGW") >= 0)//对国内国外标准进行特殊处理
{
int Num = data.FileName.IndexOf("-") + 8;//取文件名称技术协议编号位数
int name = data.FileName.Length - Num;//取文件名称技术协议名称位数
curRow.GetCell(0).SetCellValue(data.FilePath.Replace(data.FileName, ""));//路径
curRow.GetCell(1).SetCellValue(data.FileName.Substring(0, Num).Trim());//协议编号
curRow.GetCell(2).SetCellValue(data.FileName.Substring(Num, name).Trim());//名称
}
if (data.FilePath.IndexOf("标准通知") >= 0)
{
int Num = data.FileName.IndexOf("号");//取文件名称编号位数
int name = data.FileName.Length - Num;//取文件名称名称位数
curRow.GetCell(0).SetCellValue(data.FilePath.Replace(data.FileName, ""));//路
curRow.GetCell(1).SetCellValue(data.FileName.Substring(0, Num).Trim());//编号
curRow.GetCell(2).SetCellValue(data.FileName.Substring(Num, name).Replace("", "").Trim());//名称
}
if (data.FilePath.IndexOf("标准通知") == -1 && data.FilePath.IndexOf("企业标准/XYGN") == -1 || data.FilePath.IndexOf("企业标准/XYGW") == -1)
{
var filecontent = data.FileName.Split(' ');//以空格进行区分
curRow.GetCell(0).SetCellValue(data.FilePath.Replace(data.FileName, ""));//路径
curRow.GetCell(1).SetCellValue(filecontent[0].ToString().Trim());//编号
curRow.GetCell(2).SetCellValue(data.FileName.Replace(filecontent[0].ToString(), ""));//名称
}
rowIndex = rowIndex + 1;
}
MemoryStream output = new MemoryStream();
hssfworkbook.Write(output);
output.Seek(0, SeekOrigin.Begin);
result.Content = new StreamContent(output);
result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment");
if (ExcelName != null)
{
result.Content.Headers.ContentDisposition.FileName = ExcelName + ".xlsx";
}
else
{
result.Content.Headers.ContentDisposition.FileName = "标准清单.xlsx";
}
result.Content.Headers.ContentLength = output.Length;
}
}
}
catch (Exception ex)
{
logger.InfoFormat(ex.ToString());
}
}
return result;
}
#endregion
}
}