diff --git a/插件库/Lskj.Control/Model/GridDetailModel.cs b/插件库/Lskj.Control/Model/GridDetailModel.cs
index 164af1f..27a438a 100644
--- a/插件库/Lskj.Control/Model/GridDetailModel.cs
+++ b/插件库/Lskj.Control/Model/GridDetailModel.cs
@@ -28,6 +28,7 @@ namespace Lskj.Control.Model
private bool _autoRefresh;
private bool _rightVisible;
private bool _isSearch;
+ private bool _isDownloadRelated;
private string _detailName;
private string _detailSql;
private string _formKey;
@@ -203,6 +204,10 @@ namespace Lskj.Control.Model
///
public bool IsMrpDrag { get { return this._isMrpDrag; } }
///
+ /// 批量关联明细
+ ///
+ public bool IsDownloadRelated { get { return this._isDownloadRelated; } }
+ ///
/// Mrp拖拽标记
///
public string MrpDragTag { get { return this._mrpDragTag; } }
@@ -296,6 +301,7 @@ namespace Lskj.Control.Model
this._unionValue = item.Table.Columns.Contains("unionValue") ? (item["unionValue"] + "").Replace("{", "").Replace("}", "") : string.Empty;
this._unionParentField = item.Table.Columns.Contains("unionParentField") ? (item["unionParentField"] + "").Replace("{", "").Replace("}", "") : string.Empty;
this._columns = gridColumns;
+ this._isDownloadRelated = item.Table.Columns.Contains("IsDownloadRelated") ? "True".Equals(item["IsDownloadRelated"] + "") : false;
this._isSearch = isSearch;
this._isUnioDetail = item.Table.Columns.Contains("IsUnioDetail") ? "1".Equals(item["IsUnioDetail"] + "") : false;
this.AutoMultiHeader = item.Table.Columns.Contains("AutoMultiHeader") && !string.IsNullOrEmpty(item["AutoMultiHeader"] + "") ? Convert.ToInt32(item["AutoMultiHeader"] + "") : 0;
diff --git a/插件库/Lskj.Control/Model/MenuStrip/BaseMenuStrip.cs b/插件库/Lskj.Control/Model/MenuStrip/BaseMenuStrip.cs
index 72fd7d2..5c2b7bd 100644
--- a/插件库/Lskj.Control/Model/MenuStrip/BaseMenuStrip.cs
+++ b/插件库/Lskj.Control/Model/MenuStrip/BaseMenuStrip.cs
@@ -588,10 +588,11 @@ namespace Lskj.Control.Model
string fileTitle = szName[szName.Length - 1];
//设置文件存放路径
string DownloadFileDirectory = string.Format("{0}\\{1}", Application.StartupPath, "RightDownloadFile");
- if (!Directory.Exists(DownloadFileDirectory))
+ if (Directory.Exists(DownloadFileDirectory))
{
- Directory.CreateDirectory(DownloadFileDirectory);
+ Directory.Delete(DownloadFileDirectory, true);
}
+ Directory.CreateDirectory(DownloadFileDirectory);
DownloadFileDirectory = string.Format("{0}\\{1}", DownloadFileDirectory, fileTitle);
FrmDownload frm = new FrmDownload(url, fileTitle, DownloadFileDirectory, true, false);
@@ -1113,116 +1114,148 @@ namespace Lskj.Control.Model
string procName = model.Action;
if (string.IsNullOrWhiteSpace(procName))
{
- if (rows.Length > 0 && rows[0].Table.Columns.Contains("webpath"))
+ if (rows.Length > 0 && !string.IsNullOrWhiteSpace(Model.ModuleCode))
{
- StringBuilder urlsBuilder = new StringBuilder();
- foreach (DataRow row in rows)
+ int filequency = 0;
+ bool isOpenvisble = rows.Count() > 0;
+ string parmaryKey = BaseImpl.GetBasePrimaryKey(this.Model.ModuleCode);//获取主键
+ //string detailparmaryKey = parmaryKey;
+ List details = GetDetails(Model.ModuleCode);//捕获所有明细 // 2. 筛选出 “关联下载” 的明细
+ List downloadRelated = details
+ .Where(d => d.IsDownloadRelated) // 只保留 IsDownloadRelated 为 true 的项
+ .ToList();
+ if (downloadRelated.Count > 0)
{
- string url = row["webpath"] + "";
- if (!string.IsNullOrEmpty(url))
+ foreach (DataRow dataRow in rows)
{
- urlsBuilder.Append($"{url},");
- }
- }
- try
- {
- string urls = urlsBuilder.ToString().TrimEnd(',');
- string idvalue = rows[0].Table.Columns.Contains("keyvalue") ? rows[0]["keyvalue"] + "" : "";
- string fileDownTitle = rows[0].Table.Columns.Contains("fileTitle") ? rows[0]["fileTitle"] + "" : "";
- if (!string.IsNullOrWhiteSpace(urls))
- {
- string token = "";
- string loginUrl = $"{SystemInfo.Instance.OAUrl}/Api/SysUserAjaxApi.ashx";
- HttpTools.setting("application/x-www-form-urlencoded", null, null, HttpTools.Encode.UTF8);
- Dictionary loginPmsDic = new Dictionary();
- loginPmsDic.Add("method", "Login");
- loginPmsDic.Add("username", ERPInfo.Instance.UserName);
- loginPmsDic.Add("password", ERPInfo.Instance.InPassWord);
- HttpWebResponse loginResponse = HttpTools.Post(loginUrl, "", loginPmsDic, HttpTools.Method.POST, out CookieCollection loginCookie, out string loginResult);
- if (loginResponse != null && !string.IsNullOrEmpty(loginResult))
+ StringBuilder urlsBuilder = new StringBuilder();
+ string filenameheader = dataRow[parmaryKey] + "";//头部文件数据
+ foreach (GridDetailModel gridDetailModel in downloadRelated)
{
- JObject jObject = JsonConvert.DeserializeObject(loginResult);
- if (jObject.ContainsKey("success"))
+ //detailparmaryKey = BaseImpl.GetBasePrimaryKey(gridDetailModel.UnionModule);//获取主键
+ string searchSql = this.GetSearchSql(gridDetailModel, dataRow, parmaryKey);
+ DataTable dataTable = SqlHelper.ExecuteDataTable(searchSql);
+ if (dataTable.Rows.Count > 0 && dataTable.Columns.Contains("webpath"))
{
- if ((jObject["success"] + "").Equals("True"))
+ foreach (DataRow row in dataTable.Rows)
{
- if (jObject.ContainsKey("token"))
+
+ string url = row["webpath"] + "";
+ if (!string.IsNullOrEmpty(url))
{
- token = jObject["token"] + "";
+ urlsBuilder.Append($"{url},");
}
}
}
}
- if (!string.IsNullOrEmpty(token))
+ try
{
- string downUrl = string.Format("{0}Api/FileUploadApi.ashx", SystemInfo.Instance.OAUrl);
- Dictionary parmarsDic = new Dictionary();
- parmarsDic.Add("userid", HttpUtility.UrlEncode(ERPInfo.Instance.UserId));
- parmarsDic.Add("username", HttpUtility.UrlEncode(ERPInfo.Instance.UserName));
- parmarsDic.Add("password", HttpUtility.UrlEncode(ERPInfo.Instance.InPassWord));
- parmarsDic.Add("method", HttpUtility.UrlEncode("DownLoadFiels"));
- parmarsDic.Add("urls", HttpUtility.UrlEncode(urls));
- parmarsDic.Add("moduleid", HttpUtility.UrlEncode(model.MenuTabName));
- parmarsDic.Add("idvalue", HttpUtility.UrlEncode(idvalue));
- Dictionary headerDic = new Dictionary();
- headerDic.Add("Authorization", $"Bearer {token}");
- HttpTools.setting("application/x-www-form-urlencoded", null, null);
- //HttpWebResponse response = HttpTools.Post(downUrl, "", parmarsDic, HttpTools.Method.POST);
- HttpWebResponse response = HttpTools.Post(downUrl, "", parmarsDic, headerDic, HttpTools.Method.POST);
-
- string result = new StreamReader(response.GetResponseStream(), Encoding.UTF8).ReadToEnd();
- if (response != null && !string.IsNullOrEmpty(result))
+ string urls = urlsBuilder.ToString().TrimEnd(',');
+ string idvalue = parmaryKey;
+ //string fileDownTitle = rows[0].Table.Columns.Contains("fileTitle") ? rows[0]["fileTitle"] + "" : "";
+ if (!string.IsNullOrWhiteSpace(urls))
{
- JObject jsonObject = (JObject)Newtonsoft.Json.JsonConvert.DeserializeObject(result);
- string isSuccess = jsonObject["success"] + "";
- if (isSuccess.Equals("True", StringComparison.CurrentCultureIgnoreCase))
+ string token = "";
+ string loginUrl = $"{SystemInfo.Instance.OAUrl}/Api/SysUserAjaxApi.ashx";
+ HttpTools.setting("application/x-www-form-urlencoded", null, null, HttpTools.Encode.UTF8);
+ Dictionary loginPmsDic = new Dictionary();
+ loginPmsDic.Add("method", "Login");
+ loginPmsDic.Add("username", ERPInfo.Instance.UserName);
+ loginPmsDic.Add("password", ERPInfo.Instance.InPassWord);
+ HttpWebResponse loginResponse = HttpTools.Post(loginUrl, "", loginPmsDic, HttpTools.Method.POST, out CookieCollection loginCookie, out string loginResult);
+ if (loginResponse != null && !string.IsNullOrEmpty(loginResult))
{
- string zipPathUrl = jsonObject["data"] + "";
- string downLoadUrl = string.Format("{0}{1}", SystemInfo.Instance.OAUrl, zipPathUrl.TrimStart('/'));
- FrmSelectDownload frmSelectDownload = new FrmSelectDownload();
- frmSelectDownload.URL = downLoadUrl;
+ JObject jObject = JsonConvert.DeserializeObject(loginResult);
+ if (jObject.ContainsKey("success"))
+ {
+ if ((jObject["success"] + "").Equals("True"))
+ {
+ if (jObject.ContainsKey("token"))
+ {
+ token = jObject["token"] + "";
+ }
+ }
+ }
+ }
+ if (!string.IsNullOrEmpty(token))
+ {
+ string downUrl = string.Format("{0}Api/FileUploadApi.ashx", SystemInfo.Instance.OAUrl);
+ Dictionary parmarsDic = new Dictionary();
+ parmarsDic.Add("userid", HttpUtility.UrlEncode(ERPInfo.Instance.UserId));
+ parmarsDic.Add("username", HttpUtility.UrlEncode(ERPInfo.Instance.UserName));
+ parmarsDic.Add("password", HttpUtility.UrlEncode(ERPInfo.Instance.InPassWord));
+ parmarsDic.Add("method", HttpUtility.UrlEncode("DownLoadFiels"));
+ parmarsDic.Add("urls", HttpUtility.UrlEncode(urls));
+ parmarsDic.Add("moduleid", HttpUtility.UrlEncode(model.MenuTabName));
+ parmarsDic.Add("idvalue", HttpUtility.UrlEncode(idvalue));
+ Dictionary headerDic = new Dictionary();
+ headerDic.Add("Authorization", $"Bearer {token}");
+ HttpTools.setting("application/x-www-form-urlencoded", null, null);
+ //HttpWebResponse response = HttpTools.Post(downUrl, "", parmarsDic, HttpTools.Method.POST);
+ HttpWebResponse response = HttpTools.Post(downUrl, "", parmarsDic, headerDic, HttpTools.Method.POST);
- frmSelectDownload.ModelId = model.MenuTabName;
- frmSelectDownload.MenuName = model.MenuName;
- frmSelectDownload.MenuId = model.Id + "";
-
- string[] szName = zipPathUrl.Split('/');
- string fileTitle = !string.IsNullOrWhiteSpace(fileDownTitle) ? fileDownTitle : szName[szName.Length - 1];
- frmSelectDownload.FileName = fileTitle;
- //frmSelectDownload.TopMost = true;
- frmSelectDownload.Show();
+ string result = new StreamReader(response.GetResponseStream(), Encoding.UTF8).ReadToEnd();
+ if (response != null && !string.IsNullOrEmpty(result))
+ {
+ JObject jsonObject = (JObject)Newtonsoft.Json.JsonConvert.DeserializeObject(result);
+ string isSuccess = jsonObject["success"] + "";
+ if (isSuccess.Equals("True", StringComparison.CurrentCultureIgnoreCase))
+ {
+ string zipPathUrl = jsonObject["data"] + "";
+ string downLoadUrl = string.Format("{0}{1}", SystemInfo.Instance.OAUrl, zipPathUrl.TrimStart('/'));
+ FrmSelectDownload frmSelectDownload = new FrmSelectDownload();
+ if (filequency > 0) frmSelectDownload.isMultiple = true;
+ frmSelectDownload.isprompt = filequency + 1 == rows.Count();
+ frmSelectDownload.URL = downLoadUrl;
+ frmSelectDownload.isOpenvisble = isOpenvisble;
+ frmSelectDownload.ModelId = model.MenuTabName;
+ frmSelectDownload.MenuName = model.MenuName;
+ frmSelectDownload.MenuId = model.Id + "";
+ string[] szName = zipPathUrl.Split('/');
+ string fileTitle = !string.IsNullOrWhiteSpace(filenameheader) ? filenameheader + ".zip" : szName[szName.Length - 1];
+ frmSelectDownload.FileName = fileTitle;
+ //frmSelectDownload.TopMost = true;
+ frmSelectDownload.ShowDialog();
+ }
+ else
+ {
+ MessageUtil.Show(jsonObject["msg"] + "");
+ }
+ }
+ response.GetResponseStream().Close();
+ response.Close();
}
else
{
- MessageUtil.Show(jsonObject["msg"] + "");
+ MessageUtil.Show($"登录验证失败\r\n{loginResult}");
}
}
- response.GetResponseStream().Close();
- response.Close();
+ else
+ {
+ MessageUtil.Show("操作失败,未查询到数据");
+ }
}
- else
+ catch (SqlException ex)
{
- MessageUtil.Show($"登录验证失败\r\n{loginResult}");
+ string Message = ErrorMessage.PromptErrorMessage(ex);
+ MessageUtil.Show(Message, ex.Message);
+ return false;
}
+ catch (Exception ex)
+ {
+ MessageUtil.Show(ex.Message);
+ }
+ filequency++;
}
- else
- {
- MessageUtil.Show("操作失败,未查询到数据");
- }
+
}
- catch (SqlException ex)
+ else
{
- string Message = ErrorMessage.PromptErrorMessage(ex);
- MessageUtil.Show(Message, ex.Message);
- return false;
- }
- catch (Exception ex)
- {
- MessageUtil.Show(ex.Message);
+ MessageUtil.Show("未配置关联明细数据");
}
}
- else
- {
+ else {
+
MessageUtil.Show("没有需要下载的数据");
}
return reaultValue;
@@ -1375,6 +1408,59 @@ namespace Lskj.Control.Model
}
}
///
+ /// 说明:获取查询条件
+ /// 创建人:龚宇超
+ /// 创建日期:2017-11-22
+ /// 修改人:
+ /// 修改日期:
+ /// 修改备注:
+ /// 版本:1.0
+ ///
+ /// The model.
+ /// The row item.
+ /// System.String.
+ protected string GetSearchSql(GridDetailModel model, DataRow rowItem,string ParmaryKey)
+ {
+ string fieldName = !string.IsNullOrEmpty(model.UnionParentField) && rowItem.Table.Columns.Contains(model.UnionParentField) ? model.UnionParentField : ParmaryKey;
+ string sqlValue = model.IsReadOnly || model.IsChart ? model.DetailSql : model.SystemModel.MenuSql;
+
+
+ sqlValue = ReplaceHelper.ReplaceRowParam(rowItem, sqlValue);
+
+ if (ReplaceHelper.IsSelect(sqlValue) && !string.IsNullOrEmpty(model.UnionValue))
+ {
+ string Conditions = string.Empty;
+ sqlValue = ReplaceHelper.ReplaceWhereCond(sqlValue) + string.Format(" and {0}='{1}'", model.UnionValue, Conditions);
+ }
+ if (!string.IsNullOrEmpty(model.UnionCond))
+ {
+ string UnionCond = ReplaceHelper.ReplaceRowParam(rowItem, model.UnionCond);
+ sqlValue += UnionCond;
+ }
+ return sqlValue;
+ }
+ ///
+ /// 说明:右键捕获明细
+ /// 创建人:龚宇超
+ /// 创建日期:2017-11-21
+ /// 修改人:
+ /// 修改日期:
+ /// 修改备注:
+ /// 版本:1.0
+ ///
+ /// List<GridDetailModel>.
+ private List GetDetails(string ModuleCode)
+ {
+ List details = new List();//表格明细对象的集合
+ DataTable table = BaseModuleImpl.GetBaseDetailPages(ModuleCode);// 根据传入的模块编号获得基础档案底部标签的数据
+ foreach (DataRow item in table.Rows)
+ {
+ DataTable gridColumns = ReportImpl.GetReportDetailColumns(ModuleCode, item["id"] + "");//获取报表明细列
+ details.Add(new GridDetailModel(item, gridColumns, GridCustomColumnStruct.BaseDetailGridView));
+ }
+ return details;
+ }
+ ///
/// 调用主程序右键直接添加到page上页面自动关闭后执行刷新
///
///