ab56a9bcf7
SVN-Revision: r240
304 lines
12 KiB
C#
304 lines
12 KiB
C#
/******************************
|
|
* 说明:下载进度窗口
|
|
* 创建人:龚宇超
|
|
* 创建日期:2018-02-09
|
|
* 修改人:
|
|
* 修改日期:
|
|
* 修改备注:
|
|
* 版本:1.0.0.0
|
|
******************************/
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.Data;
|
|
using System.Drawing;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Windows.Forms;
|
|
using System.IO;
|
|
using System.Threading;
|
|
using System.Net;
|
|
using Lskj.Model;
|
|
using Lskj.Core;
|
|
using Lskj.Business;
|
|
using Lskj.Control.BrowserSetting;
|
|
using Newtonsoft.Json.Linq;
|
|
|
|
namespace Lskj.BatchUpload
|
|
{
|
|
/// <summary>
|
|
/// 下载进度窗口
|
|
/// </summary>
|
|
public partial class FrmProgress : Form
|
|
{
|
|
public DynamicPowerModel Model;
|
|
/// <summary>
|
|
/// 是否下载完成
|
|
/// </summary>
|
|
private bool isFinished = false;
|
|
/// <summary>
|
|
/// 上传总数
|
|
/// </summary>
|
|
private long total = 0;
|
|
/// <summary>
|
|
/// 当前下载的总数
|
|
/// </summary>
|
|
private long nDownloadedTotal = 0;
|
|
/// <summary>
|
|
/// 上传文件列表
|
|
/// </summary>
|
|
private List<string> UploadFileList = new List<string>();
|
|
private delegate void SetProcessBarCallBack(int current, int total);
|
|
private delegate void ExitCallBack(bool success);
|
|
private delegate void ShowCurrentDownloadFileNameCallBack(string name);
|
|
public FrmProgress(List<string> fileNames)
|
|
{
|
|
|
|
InitializeComponent();
|
|
total = fileNames.Count;
|
|
this.UploadFileList = fileNames;
|
|
System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls = false;
|
|
this.lblAll.Text = string.Format("总进度(0/{0})", this.UploadFileList.Count);
|
|
}
|
|
/// <summary>
|
|
/// <para>说明:窗口加载</para>
|
|
/// <para>创建人:龚宇超</para>
|
|
/// <para>创建日期:2018-02-23 </para>
|
|
/// <para>修改人:</para>
|
|
/// <para>修改日期:</para>
|
|
/// <para>修改备注:</para>
|
|
/// <para>版本:1.0</para>
|
|
/// </summary>
|
|
/// <param name="sender">The sender.</param>
|
|
/// <param name="e">The <see cref="EventArgs"/> instance containing the event data.</param>
|
|
private void OnFormLoad(object sender, EventArgs e)
|
|
{
|
|
ThreadPool.QueueUserWorkItem(new WaitCallback(this.ProcDownload));
|
|
}
|
|
/// <summary>
|
|
/// <para>说明:下载文件</para>
|
|
/// <para>创建人:龚宇超</para>
|
|
/// <para>创建日期:2018-02-23 </para>
|
|
/// <para>修改人:</para>
|
|
/// <para>修改日期:</para>
|
|
/// <para>修改备注:</para>
|
|
/// <para>版本:1.0</para>
|
|
/// </summary>
|
|
/// <param name="o">The o.</param>
|
|
private void ProcDownload(object o)
|
|
{
|
|
if (UploadFileList.Count == 0)
|
|
{
|
|
return;
|
|
}
|
|
|
|
string sql = @"if isnull((select 1 from Plm_MapNumberTab where plm_mn_dwgNo='{0}'),0)!=1
|
|
begin
|
|
insert into Plm_MapNumberTab(plm_mn_dwgNo,plm_mn_BillNo,plm_mn_operatorid,plm_mn_operatedate,plm_mn_modid) values('{0}','{1}','{2}',getdate(),'201041')
|
|
end";
|
|
|
|
string sql2 = "insert into Plm_FigBindingTab(plm_fb_dwgNo,plm_fb_billdocument_id,plm_fb_stepover,plm_fb_operatorid,plm_fb_operatedate,plm_fb_modid) values('{0}','{1}','1','{2}',getdate(),'201043')";
|
|
|
|
string sql3 = " update P_fm_FileTab set dwgNo='{0}' where fileId='{1}'";
|
|
|
|
//年份后2位+2位月+2位日
|
|
DateTime now = DateTime.Now;
|
|
string date = now.ToString("yyMMdd");
|
|
|
|
ERPInfo.Instance.UserId = DBConfig.Instance.NoticeUserID;
|
|
ERPInfo.Instance.UserName = DBConfig.Instance.NoticeUserName;
|
|
|
|
int i = 1;
|
|
foreach (string filePath in UploadFileList)
|
|
{
|
|
try
|
|
{
|
|
string MaximumValue = SqlHelper.ExecuteScalar("select MAX(plm_mn_id) AS max_value FROM Plm_MapNumberTab;") + "";//主表
|
|
string DetailsMaximumValue = SqlHelper.ExecuteScalar("select MAX(plm_fb_id) AS max_value FROM Plm_FigBindingTab;") + "";//明细表
|
|
int number = int.Parse(MaximumValue)+1;//最大id
|
|
int DetailsNumber = int.Parse(DetailsMaximumValue)+1;
|
|
|
|
string filename = Path.GetFileNameWithoutExtension(filePath);
|
|
string wjm = "TH" + date + number.ToString("D4");
|
|
string DetailsWjm = "TZ" + date + DetailsNumber.ToString("D4");
|
|
string ReturnID = string.Empty;
|
|
bool isUpdate = UploadFile(filePath, DetailsWjm, out string msg, out ReturnID);
|
|
|
|
if (isUpdate)
|
|
{
|
|
|
|
SqlHelper.ExecuteNonQuery(string.Format(sql, filename, wjm, ERPInfo.Instance.UserId));
|
|
SqlHelper.ExecuteNonQuery(string.Format(sql2, filename, DetailsWjm, ERPInfo.Instance.UserId));
|
|
|
|
SqlHelper.ExecuteNonQuery(string.Format("update Plm_FigBindingTab set plm_fb_assid=(select plm_mn_id from Plm_MapNumberTab where plm_mn_dwgNo='{0}') where plm_fb_dwgNo='{0}'", filename));
|
|
|
|
if (!string.IsNullOrWhiteSpace(ReturnID))SqlHelper.ExecuteNonQuery(string.Format(sql3, filename, ReturnID));
|
|
// SqlHelper.ExecuteNonQuery(string.Format(sql2, filename, "TZ" + date + i.ToString("D4"), ERPInfo.Instance.UserId));
|
|
}
|
|
//Thread.Sleep(500);
|
|
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
//MessageBox.Show(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
this.lblAll.Text = string.Format("总进度({0}/{1})", i, this.UploadFileList.Count);
|
|
progressBarTotal.Value = (int)(i * 100 / total);
|
|
}
|
|
|
|
i++;
|
|
}
|
|
if (this.UploadFileList.Count == i)
|
|
Exit(true);
|
|
else
|
|
Exit(false);
|
|
}
|
|
/// <summary>
|
|
/// <para>说明:显示当前上传文件</para>
|
|
/// <para>创建人:龚宇超</para>
|
|
/// <para>创建日期:2018-02-23 </para>
|
|
/// <para>修改人:</para>
|
|
/// <para>修改日期:</para>
|
|
/// <para>修改备注:</para>
|
|
/// <para>版本:1.0</para>
|
|
/// </summary>
|
|
/// <param name="name">The name.</param>
|
|
private void ShowCurrentDownloadFileName(string name)
|
|
{
|
|
if (this.labelCurrentItem.InvokeRequired)
|
|
{
|
|
ShowCurrentDownloadFileNameCallBack cb = new ShowCurrentDownloadFileNameCallBack(ShowCurrentDownloadFileName);
|
|
this.Invoke(cb, new object[] { name });
|
|
this.labelCurrentItem.Text = "正在上传:" + name;
|
|
}
|
|
else
|
|
{
|
|
this.labelCurrentItem.Text = "正在上传:" + name;
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// <para>说明:退出升级程序</para>
|
|
/// <para>创建人:龚宇超</para>
|
|
/// <para>创建日期:2018-02-23 </para>
|
|
/// <para>修改人:</para>
|
|
/// <para>修改日期:</para>
|
|
/// <para>修改备注:</para>
|
|
/// <para>版本:1.0</para>
|
|
/// </summary>
|
|
/// <param name="success">if set to <c>true</c> [success].</param>
|
|
private void Exit(bool success)
|
|
{
|
|
if (this.InvokeRequired)
|
|
{
|
|
ExitCallBack cb = new ExitCallBack(Exit);
|
|
this.Invoke(cb, new object[] { success });
|
|
}
|
|
else
|
|
{
|
|
this.isFinished = success;
|
|
this.DialogResult = success ? DialogResult.OK : DialogResult.Cancel;
|
|
this.Close();
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 取消
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void buttonOk_Click(object sender, EventArgs e)
|
|
{
|
|
this.DialogResult = DialogResult.Cancel;
|
|
this.Close();
|
|
}
|
|
/// <summary>
|
|
/// 上传文件
|
|
/// </summary>
|
|
/// <param name="filePath"></param>
|
|
/// <param name="msg"></param>
|
|
/// <returns></returns>
|
|
private bool UploadFile(string filePath,string wjm, out string msg, out string ReturnID)
|
|
{
|
|
bool isUpload = false;
|
|
string returnMsg = "";
|
|
string postUrl = "";
|
|
ReturnID = "";
|
|
try
|
|
{
|
|
FileInfo fileInfo = new FileInfo(filePath);
|
|
string fileName = Path.GetFileName(filePath);
|
|
byte[] fileBytes = ConvertFileToBytes(filePath);
|
|
string fileBase64 = Convert.ToBase64String(fileBytes);
|
|
//上传文件到服务器目录
|
|
postUrl = $"{SystemInfo.Instance.OAUrl}Api/FileUploadApi.ashx?moduleId={Model.ModuleCode}&idValue={wjm}&totsize={fileInfo.Length}&position=0&filename={fileName}&method=DoWebUpload";
|
|
HttpTools.setting("application/x-www-form-urlencoded", null, null);
|
|
string result = "";
|
|
CookieCollection cookieCollection = null;
|
|
HttpWebResponse webResponse = HttpTools.Post(postUrl, fileBase64, null, HttpTools.Method.POST, out cookieCollection, out result);
|
|
if (webResponse != null && !string.IsNullOrEmpty(result))
|
|
{
|
|
JObject jsonObject = (JObject)Newtonsoft.Json.JsonConvert.DeserializeObject(result);
|
|
string isSuccess = jsonObject["success"] + "";
|
|
if (isSuccess.Equals("True", StringComparison.CurrentCultureIgnoreCase))
|
|
{
|
|
string fileId = jsonObject["other"] + "";
|
|
ReturnID = fileId;
|
|
string webpath = jsonObject["data"]["WebRelPath"] + "";
|
|
isUpload = true;
|
|
}
|
|
else
|
|
{
|
|
if (jsonObject.ContainsKey("msg"))
|
|
{
|
|
returnMsg = jsonObject["msg"] + "";
|
|
}
|
|
isUpload = false;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
returnMsg = "上传请求失败";
|
|
isUpload = false;
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
returnMsg = ex.Message;
|
|
isUpload = false;
|
|
}
|
|
msg = returnMsg;
|
|
return isUpload;
|
|
}
|
|
/// <summary>
|
|
/// 附件转换byte[]
|
|
/// </summary>
|
|
/// <param name="filePath">附件路径</param>
|
|
/// <returns>二进制</returns>
|
|
private byte[] ConvertFileToBytes(string filePath)
|
|
{
|
|
byte[] bytContent = null;
|
|
FileStream fs = null;
|
|
BinaryReader br = null;
|
|
try
|
|
{
|
|
fs = new FileStream(filePath, System.IO.FileMode.Open);
|
|
}
|
|
catch (Exception)
|
|
{
|
|
throw;
|
|
}
|
|
finally
|
|
{
|
|
if (fs != null)
|
|
br = new BinaryReader((Stream)fs);
|
|
if (br != null)
|
|
bytContent = br.ReadBytes((Int32)fs.Length);
|
|
if (fs != null)
|
|
fs.Dispose();
|
|
}
|
|
return bytContent;
|
|
}
|
|
}
|
|
}
|