576 lines
23 KiB
C#
576 lines
23 KiB
C#
using DevExpress.XtraEditors;
|
|
using DevExpress.XtraEditors.Controls;
|
|
using HL_FristAidPlatform_DTO;
|
|
using HL_FristAidPlatform_Public;
|
|
using Newtonsoft.Json;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Configuration;
|
|
using System.Data;
|
|
using System.Diagnostics;
|
|
using System.Drawing;
|
|
using System.IO;
|
|
using System.Linq;
|
|
using System.Net;
|
|
using System.Runtime.InteropServices;
|
|
using System.Text;
|
|
using System.Windows.Forms;
|
|
|
|
namespace HL_FristAidPlatform_PreHospitalEmergency
|
|
{
|
|
public partial class Form_FileInfo : XtraForm
|
|
{
|
|
/// <summary>
|
|
/// 当前页
|
|
/// </summary>
|
|
public int curPage = 1;
|
|
/// <summary>
|
|
/// 每页大小
|
|
/// </summary>
|
|
public int pageSize = 100;
|
|
/// <summary>
|
|
/// 所有记录条数
|
|
/// </summary>
|
|
public int totalNumber = 0;
|
|
|
|
public Form_FileInfo()
|
|
{
|
|
InitializeComponent();
|
|
}
|
|
|
|
const int GB = 1024 * 1024 * 1024;//定义GB的计算常量
|
|
const int MB = 1024 * 1024;//定义MB的计算常量
|
|
const int KB = 1024;//定义KB的计算常量
|
|
|
|
private void Form_FileInfo_Load(object sender, EventArgs e)
|
|
{
|
|
GetSuffixList();
|
|
BindFileInfoDetail(curPage);
|
|
|
|
}
|
|
|
|
/// <summary>
|
|
/// 文件上传
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void sbtn_Upload_Click(object sender, EventArgs e)
|
|
{
|
|
try
|
|
{
|
|
OpenFileDialog openFileDialog = new OpenFileDialog();
|
|
openFileDialog.ShowHelp = false;//设置是否显示"帮助"按钮
|
|
openFileDialog.InitialDirectory = "C:\\";//设置初始目录为盘
|
|
openFileDialog.Title = "选择文件";//设置对话框的标题
|
|
openFileDialog.FileName = "";//设置初始选择的文件名为空
|
|
openFileDialog.Multiselect = true;//可以多选
|
|
if (openFileDialog.ShowDialog() == DialogResult.OK)
|
|
{
|
|
string[] strNames = openFileDialog.SafeFileNames;
|
|
List<T_Service_FirstAid_FileInfoDTO> list = new List<T_Service_FirstAid_FileInfoDTO>();
|
|
string webUrl = ConfigurationManager.AppSettings["WebApiUrl"];
|
|
string sendFileUrl = webUrl + "api/service/T_Service_FirstAid_FileInfo/MultiFileUpload";
|
|
progressBarControl1.Visible = true;
|
|
progressBarControl1.Properties.Minimum = 0;
|
|
progressBarControl1.Properties.Maximum = 100;
|
|
progressBarControl1.Properties.Step = 1;
|
|
progressBarControl1.Properties.ProgressViewStyle = DevExpress.XtraEditors.Controls.ProgressViewStyle.Solid;
|
|
progressBarControl1.Position = 0;
|
|
progressBarControl1.Properties.ShowTitle = true;
|
|
progressBarControl1.Properties.PercentView = true;
|
|
for (int i = 0; i < strNames.Length; i++)
|
|
{
|
|
T_Service_FirstAid_FileInfoDTO fileDto = new T_Service_FirstAid_FileInfoDTO();
|
|
fileDto.CreationTime = DateTime.Now;
|
|
fileDto.CreationID = Information.User.ID;
|
|
fileDto.UserName = Information.User.LoginName;
|
|
fileDto.HospitalGuid = Information.Hospital.GUID;
|
|
string filePath = strNames[i].Substring(0, strNames[i].IndexOf('.')).ToString();
|
|
fileDto.FileName = filePath;
|
|
FileInfo info = new FileInfo(openFileDialog.FileNames[i]);
|
|
info.IsReadOnly = true;
|
|
fileDto.GUID = Guid.NewGuid().ToString();
|
|
FileStream fs = new FileStream(openFileDialog.FileNames[i], FileMode.OpenOrCreate, FileAccess.Read);
|
|
FileStream fileStream = new FileStream(openFileDialog.FileNames[i], FileMode.Open, FileAccess.Read, FileShare.Read);
|
|
if (info != null && info.Exists)
|
|
{
|
|
fileDto.FlieSize = ByteConversionGBMBKB(info.Length);
|
|
fileDto.Suffix = Path.GetExtension(strNames[i]);
|
|
byte[] buffer;
|
|
//音频文件:
|
|
string[] voideFile = { ".mp3,.wma,.avi,.rm,.rmvb,.flv,.mpg,.mov,.mkv,.cda,.midi,wav" };
|
|
bool isContains = voideFile.Contains(fileDto.Suffix);
|
|
if (isContains)
|
|
{
|
|
buffer = new byte[fileStream.Length];
|
|
fileStream.Read(buffer, 0, buffer.Length);
|
|
fileStream.Close();
|
|
Stream stream = new MemoryStream(buffer);
|
|
}
|
|
else
|
|
{
|
|
buffer = new byte[1024 * 1024 * 5];
|
|
//返回本次读取到的有效字节数
|
|
int iNr = fs.Read(buffer, 0, buffer.Length);
|
|
//将字节数组中每一个元素按指定编码写成字符串
|
|
string str = Encoding.UTF8.GetString(buffer, 0, iNr);
|
|
fs.Close();
|
|
//释放资源
|
|
fs.Dispose();
|
|
}
|
|
|
|
}
|
|
else
|
|
{
|
|
Console.WriteLine("指定的文件路径不正确!");
|
|
}
|
|
|
|
WebClient webClient = new WebClient();
|
|
webClient.Headers.Add(HttpRequestHeader.Authorization, "Bearer " + Information.User.Token);
|
|
webClient.Headers.Add("Content-Type", "application/form-data");
|
|
|
|
var resultData = webClient.UploadFile(sendFileUrl, openFileDialog.FileNames[i]);
|
|
string result = Encoding.UTF8.GetString(resultData);
|
|
MultiFileUploadDTO dto = JsonConvert.DeserializeObject<MultiFileUploadDTO>(result);
|
|
int index = dto.res.Split('\\').Length - 1;
|
|
fileDto.FileSavePath = webUrl + "UploadFile/" + dto.res.Split('\\')[index];
|
|
if (dto.isSuccess == "false")
|
|
{
|
|
MessageBox.Show(dto.returnMsg);
|
|
}
|
|
else
|
|
{
|
|
list.Add(fileDto);
|
|
}
|
|
}
|
|
string url = string.Empty;
|
|
url = "api/service/T_Service_FirstAid_FileInfo";
|
|
ClientFactory<T_Service_FirstAid_FileInfoDTO> httpClient = new HttpClientFactory<T_Service_FirstAid_FileInfoDTO>();
|
|
Client<T_Service_FirstAid_FileInfoDTO> client = httpClient.VisitFactory();
|
|
var sendData = JsonConvert.SerializeObject(list);
|
|
//访问
|
|
ListEntity<T_Service_FirstAid_FileInfoDTO> t = client.BatchPost(sendData, url);
|
|
if (t.Success)
|
|
{
|
|
BindFileInfoDetail(curPage);
|
|
for (int j = 0; j < progressBarControl1.Properties.Maximum; j++)
|
|
{
|
|
//处理当前消息队列中的所有windows消息
|
|
Application.DoEvents();
|
|
//执行步长
|
|
progressBarControl1.PerformStep();
|
|
}
|
|
BindFileInfoDetail(curPage);
|
|
|
|
}
|
|
else
|
|
{
|
|
XtraMessageBox.Show("保存失败,请稍后重试!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
}
|
|
progressBarControl1.Visible = false;
|
|
BindFileInfoDetail(curPage);
|
|
GetSuffixList();
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
MessageBox.Show("错误:" + ex.Message);
|
|
}
|
|
}
|
|
private void sbtn_Find_Click(object sender, EventArgs e)
|
|
{
|
|
BindFileInfoDetail(curPage);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 绑定文件信息列表
|
|
/// </summary>
|
|
/// <param name="curPage"></param>
|
|
private void BindFileInfoDetail(int curPage)
|
|
{
|
|
try
|
|
{
|
|
string fileName = txt_FileName.Text;
|
|
string daID = "";
|
|
if (!string.IsNullOrEmpty(lookUpEdit_suffix.Text.ToString()))
|
|
{
|
|
daID = this.lookUpEdit_suffix.EditValue.ToString();
|
|
}
|
|
|
|
string suffix = "";
|
|
if (PublicClass.ToString(lookUpEdit_suffix.EditValue, "") != "-1")
|
|
{
|
|
suffix = PublicClass.ToString(lookUpEdit_suffix.EditValue, "");
|
|
}
|
|
string startTime = time_FristTime.TimeValue;
|
|
string endTime = time_EndTime.TimeValue;
|
|
FileListEntity<T_Service_FirstAid_FileInfoDTO> dt = DBHelpClass.GetFile(string.Format("api/service/T_Service_FirstAid_FileInfo?hospitalGuid={0}&fileName={1}&suffix={2}&startTime={3}&endTime={4}&pageIndex={5}&pageSize={6}", Information.Hospital.GUID, fileName, suffix, startTime, endTime, curPage, pageSize));
|
|
grid_FileInfo.DataSource = dt.Data;
|
|
gridView1.Appearance.EvenRow.BackColor = Color.FromArgb(245, 245, 245);
|
|
gridView1.Appearance.OddRow.BackColor = Color.FromArgb(255, 255, 255);
|
|
gridView1.OptionsView.EnableAppearanceEvenRow = true;
|
|
gridView1.OptionsView.EnableAppearanceOddRow = true;
|
|
gridView2.OptionsSelection.ShowCheckBoxSelectorInColumnHeader = DevExpress.Utils.DefaultBoolean.True;
|
|
totalNumber = DBHelpClass.TotalNumber;
|
|
userControlForPage.RefreshPager(pageSize, totalNumber, curPage);
|
|
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
PublicClass.WriteErrorLog(this.Text, "绑定数据源:\r\n" + ex);
|
|
}
|
|
}
|
|
private void sbtn_Dowload_Click(object sender, EventArgs e)
|
|
{
|
|
|
|
int[] rows = gridView2.GetSelectedRows();
|
|
if (rows.Length == 0)
|
|
{
|
|
MessageBox.Show("请选择至少一条数据");
|
|
return;
|
|
}
|
|
string savePath = "";
|
|
FolderBrowserDialog dialog = new FolderBrowserDialog();
|
|
dialog.Description = "请选择下载路径";
|
|
string foldPath = "";
|
|
if (dialog.ShowDialog() == DialogResult.OK)
|
|
{
|
|
foldPath = dialog.SelectedPath;
|
|
}
|
|
else
|
|
{
|
|
return;
|
|
}
|
|
savePath = foldPath;
|
|
if (!savePath.EndsWith("/") && !savePath.EndsWith("\\"))
|
|
{
|
|
savePath = savePath + "/";
|
|
}
|
|
progressBarControl1.Visible = true;
|
|
progressBarControl1.Properties.Minimum = 0;
|
|
progressBarControl1.Properties.Maximum = 100;
|
|
progressBarControl1.Properties.Step = 1;
|
|
progressBarControl1.Properties.ProgressViewStyle = DevExpress.XtraEditors.Controls.ProgressViewStyle.Solid;
|
|
progressBarControl1.Position = 0;
|
|
progressBarControl1.Properties.ShowTitle = true;
|
|
progressBarControl1.Properties.PercentView = true;
|
|
foreach (int r in rows)
|
|
{
|
|
string uri = gridView2.GetRowCellValue(r, "FileSavePath").ToString();
|
|
string fileName; //被下载的文件名
|
|
if (uri.IndexOf("\\") > -1)
|
|
{
|
|
fileName = uri.Substring(uri.LastIndexOf("\\") + 1);
|
|
}
|
|
else
|
|
{
|
|
fileName = uri.Substring(uri.LastIndexOf("/") + 1);
|
|
}
|
|
savePath += fileName; //另存为的绝对路径+文件名
|
|
WebClient client = new WebClient();
|
|
try
|
|
{
|
|
client.DownloadFile(uri, savePath);
|
|
}
|
|
catch
|
|
{
|
|
MessageBox.Show("下载失败");
|
|
return;
|
|
}
|
|
|
|
}
|
|
for (int j = 0; j < progressBarControl1.Properties.Maximum; j++)
|
|
{
|
|
//处理当前消息队列中的所有windows消息
|
|
Application.DoEvents();
|
|
//执行步长
|
|
progressBarControl1.PerformStep();
|
|
}
|
|
progressBarControl1.Visible = false;
|
|
MessageBox.Show("下载成功");
|
|
}
|
|
public string ByteConversionGBMBKB(Int64 KSize)
|
|
{
|
|
if (KSize / GB >= 1)//如果当前Byte的值大于等于1GB
|
|
return (Math.Round(KSize / (float)GB, 2)).ToString() + "GB";//将其转换成GB
|
|
else if (KSize / MB >= 1)//如果当前Byte的值大于等于1MB
|
|
return (Math.Round(KSize / (float)MB, 2)).ToString() + "MB";//将其转换成MB
|
|
else if (KSize / KB >= 1)//如果当前Byte的值大于等于1KB
|
|
return (Math.Round(KSize / (float)KB, 2)).ToString() + "KB";//将其转换成KGB
|
|
else
|
|
return KSize.ToString();//显示Byte值
|
|
}
|
|
|
|
/// <summary>
|
|
/// 打开指定目录下的文件
|
|
/// </summary>
|
|
/// <param name="filePath">文件地址(包含文件名称)</param>
|
|
/// <returns></returns>
|
|
public static bool OpenFile(string filePath)
|
|
{
|
|
try
|
|
{
|
|
if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) //windows环境下打开文件
|
|
{
|
|
Process.Start(new ProcessStartInfo("cmd", $"/c start { filePath}") { CreateNoWindow = true, WindowStyle = ProcessWindowStyle.Hidden });
|
|
}
|
|
else if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux)) //Linux环境下打开文件
|
|
{
|
|
Process.Start("xdg-open", filePath);
|
|
}
|
|
else if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX)) //Mac环境下打开文件
|
|
{
|
|
Process.Start("open", filePath);
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 文件类型下拉框数据
|
|
/// </summary>
|
|
public void GetSuffixList()
|
|
{
|
|
try
|
|
{
|
|
DataTable dt = DBHelpClass.GetDate(string.Format("api/service/T_Service_FirstAid_FileInfo/GetSuffixList"));
|
|
DataTable table = new DataTable();
|
|
DataColumn ddc = new DataColumn();
|
|
ddc.ColumnName = "Name";
|
|
ddc.Caption = "Name";
|
|
table.Columns.Add(ddc);
|
|
DataColumn dnameDc = new DataColumn();
|
|
dnameDc.Caption = "Value";
|
|
dnameDc.ColumnName = "Value";
|
|
table.Columns.Add(dnameDc);
|
|
foreach (var item in dt.Columns)
|
|
{
|
|
DataRow ddr = table.NewRow();
|
|
ddr["Name"] = item;
|
|
ddr["Value"] = item;
|
|
table.Rows.Add(ddr);
|
|
}
|
|
PublicClass.SetLookUpList(lookUpEdit_suffix, table, "Name", "Value", true, "请选择");
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
|
|
PublicClass.WriteErrorLog(this.Text, "绑定文件类型:\r\n" + ex);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 下载服务器文件至客户端
|
|
/// </summary>
|
|
/// <param name="uri">被下载的文件地址</param>
|
|
/// <param name="savePath">另存放的目录</param>
|
|
public void Download(string uri)
|
|
{
|
|
string fileName; //被下载的文件名
|
|
if (uri.IndexOf("\\") > -1)
|
|
{
|
|
fileName = uri.Substring(uri.LastIndexOf("\\") + 1);
|
|
}
|
|
else
|
|
{
|
|
fileName = uri.Substring(uri.LastIndexOf("/") + 1);
|
|
}
|
|
|
|
string savePath = "";
|
|
FolderBrowserDialog dialog = new FolderBrowserDialog();
|
|
dialog.Description = "请选择下载路径";
|
|
string foldPath = "";
|
|
if (dialog.ShowDialog() == DialogResult.OK)
|
|
{
|
|
foldPath = dialog.SelectedPath;
|
|
}
|
|
else
|
|
{
|
|
return;
|
|
}
|
|
savePath = foldPath;
|
|
if (!savePath.EndsWith("/") && !savePath.EndsWith("\\"))
|
|
{
|
|
savePath+=@"\";
|
|
// savePath = savePath;
|
|
}
|
|
|
|
savePath +=fileName; //另存为的绝对路径+文件名
|
|
|
|
WebClient client = new WebClient();
|
|
try
|
|
{
|
|
client.DownloadFile(uri, savePath);
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
MessageBox.Show("下载失败:" + e.ToString());
|
|
return;
|
|
}
|
|
MessageBox.Show("下载成功");
|
|
}
|
|
|
|
public void DeleteFile(string file, List<T_Service_FirstAid_FileInfoDTO> list)
|
|
{
|
|
try
|
|
{
|
|
DialogResult dr = XtraMessageBox.Show("确认是否删除", "", MessageBoxButtons.YesNo, MessageBoxIcon.Information);
|
|
if (dr == DialogResult.Yes)
|
|
{
|
|
if (System.IO.File.Exists(file))
|
|
{
|
|
System.IO.File.Delete(file);
|
|
Delete(list);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
return;
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
PublicClass.WriteErrorLog(this.Text, "删除:\r\n" + ex);
|
|
}
|
|
}
|
|
|
|
public void Delete(List<T_Service_FirstAid_FileInfoDTO> list)
|
|
{
|
|
try
|
|
{
|
|
|
|
string Url = "api/service/T_Service_FirstAid_FileInfo/Delete";
|
|
|
|
//初始化两个工厂
|
|
ClientFactory<T_Service_FirstAid_FileInfoDTO> httpClient = new HttpClientFactory<T_Service_FirstAid_FileInfoDTO>();
|
|
Client<T_Service_FirstAid_FileInfoDTO> client = httpClient.VisitFactory();
|
|
var sendData = JsonConvert.SerializeObject(list);
|
|
//访问
|
|
ListEntity<T_Service_FirstAid_FileInfoDTO> t = client.BatchPost(sendData, Url);
|
|
if (t.Success)
|
|
{
|
|
XtraMessageBox.Show("删除文件成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
|
BindFileInfoDetail(curPage);
|
|
}
|
|
else
|
|
{
|
|
XtraMessageBox.Show("删除文件失败,请稍后重试!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
|
|
PublicClass.WriteErrorLog(this.Text, "删除:\r\n" + ex);
|
|
}
|
|
}
|
|
|
|
private void sbt_Delete_Click(object sender, EventArgs e)
|
|
{
|
|
List<T_Service_FirstAid_FileInfoDTO> list = new List<T_Service_FirstAid_FileInfoDTO>();
|
|
|
|
int[] rows = gridView2.GetSelectedRows();
|
|
if (rows.Length == 0)
|
|
{
|
|
MessageBox.Show("请选择至少一条数据");
|
|
return;
|
|
}
|
|
DialogResult dr = XtraMessageBox.Show("确认是否删除", "", MessageBoxButtons.YesNo, MessageBoxIcon.Information);
|
|
if (dr == DialogResult.Yes)
|
|
{
|
|
for (int i = 0; i < rows.Length; i++)
|
|
{
|
|
string file = gridView2.GetRowCellValue(i, "FileSavePath").ToString();
|
|
System.IO.File.Delete(file);
|
|
T_Service_FirstAid_FileInfoDTO dto = new T_Service_FirstAid_FileInfoDTO();
|
|
dto.GUID = gridView2.GetRowCellValue(i, "GUID").ToString();
|
|
list.Add(dto);
|
|
}
|
|
Delete(list);
|
|
}
|
|
else
|
|
{
|
|
return;
|
|
|
|
}
|
|
}
|
|
|
|
//private void repositoryItemButtonEdit_ButtonClick(object sender, ButtonPressedEventArgs e)
|
|
//{
|
|
// string filePath = gridView2.GetFocusedRowCellValue("FileSavePath").ToString();
|
|
// switch (e.Button.Caption)
|
|
// {
|
|
// case "查看":
|
|
// OpenFile(filePath);
|
|
// break;
|
|
// case "下载":
|
|
// Download(filePath);
|
|
// break;
|
|
// case "删除":
|
|
// List<T_Service_FirstAid_FileInfoDTO> list = new List<T_Service_FirstAid_FileInfoDTO>();
|
|
// T_Service_FirstAid_FileInfoDTO dto = new T_Service_FirstAid_FileInfoDTO();
|
|
// string guid = gridView2.GetFocusedRowCellValue("GUID").ToString();
|
|
// string file = gridView2.GetFocusedRowCellValue("FileSavePath").ToString();
|
|
// dto.GUID = guid;
|
|
// list.Add(dto);
|
|
// DeleteFile(file, list);
|
|
// break;
|
|
// default:
|
|
// break;
|
|
// }
|
|
//}
|
|
|
|
private void Form_FileInfo_FormClosed(object sender, FormClosedEventArgs e)
|
|
{
|
|
this.Dispose();
|
|
}
|
|
|
|
private void repositoryItemButtonEdit1_ButtonClick(object sender, ButtonPressedEventArgs e)
|
|
{
|
|
string filePath = gridView2.GetFocusedRowCellValue("FileSavePath").ToString();
|
|
switch (e.Button.Caption)
|
|
{
|
|
case "查看":
|
|
OpenFile(filePath);
|
|
break;
|
|
case "下载":
|
|
Download(filePath);
|
|
break;
|
|
case "删除":
|
|
List<T_Service_FirstAid_FileInfoDTO> list = new List<T_Service_FirstAid_FileInfoDTO>();
|
|
T_Service_FirstAid_FileInfoDTO dto = new T_Service_FirstAid_FileInfoDTO();
|
|
string guid = gridView2.GetFocusedRowCellValue("GUID").ToString();
|
|
string file = gridView2.GetFocusedRowCellValue("FileSavePath").ToString();
|
|
dto.GUID = guid;
|
|
list.Add(dto);
|
|
DeleteFile(file, list);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
private void userControlForPage_myPagerEvents(int curPage, int pageSize)
|
|
{
|
|
userControlForPage.myPagerEvents += MyPagerEvents;
|
|
}
|
|
|
|
private void MyPagerEvents(int curPage, int pageSize)
|
|
{
|
|
this.curPage = curPage;
|
|
this.pageSize = pageSize;
|
|
BindFileInfoDetail(curPage);
|
|
}
|
|
|
|
private void userControlForPage_exportEvents(bool singlePage)
|
|
{
|
|
//userControlForPage.exportEvents += ExportEvents;
|
|
}
|
|
|
|
|
|
}
|
|
}
|