diff --git a/插件库/Lskj.AutoWordFile/FrmMain.cs b/插件库/Lskj.AutoWordFile/FrmMain.cs index 3e7d9bb..625e5e7 100644 --- a/插件库/Lskj.AutoWordFile/FrmMain.cs +++ b/插件库/Lskj.AutoWordFile/FrmMain.cs @@ -162,18 +162,27 @@ namespace Lskj.AutoWordFile } private DataSet Worddata(string modid, int tagid, int mid) { - SqlParameter[] param = + try { + SqlParameter[] param = + { new SqlParameter("@modid",SqlDbType.VarChar,15), new SqlParameter("@tagid",SqlDbType.Int), new SqlParameter("@Mid",SqlDbType.Int) }; - param[0].Value = modid; - param[1].Value = tagid; - param[2].Value = mid; - DataSet ds = SqlHelper.ExecuteDataSet(CommandType.StoredProcedure, "pr_system_File01", "#ba_firstpage", param); - return ds; + param[0].Value = modid; + param[1].Value = tagid; + param[2].Value = mid; + DataSet ds = SqlHelper.ExecuteDataSet(CommandType.StoredProcedure, "pr_system_File01", "#ba_firstpage", param); + return ds; + + } + catch (Exception ex) + { + throw; + } + } public void Mulu() { diff --git a/插件库/Lskj.BaseAccraditation/FrmBaseAccraditation.cs b/插件库/Lskj.BaseAccraditation/FrmBaseAccraditation.cs index 8823048..5c54ed4 100644 --- a/插件库/Lskj.BaseAccraditation/FrmBaseAccraditation.cs +++ b/插件库/Lskj.BaseAccraditation/FrmBaseAccraditation.cs @@ -615,7 +615,7 @@ namespace Lskj.BaseAccraditation { this._flowRowData = BaseAuditImpl.GetCurrentFlowRowData(this.ModuleModelObj.MenuTable, this.ModuleModelObj.ParmaryKey, this.SysModel.PrimaryValue); } - + this.UpdateCirculationData(); string billType = this._flowRowData != null ? _flowRowData[this.ModuleModelObj.BillType] + "" : ""; if (string.IsNullOrEmpty(billType) || billType == "0") { @@ -1733,6 +1733,7 @@ namespace Lskj.BaseAccraditation { string printFile = e.Item.Tag + ""; this._flowRowData = BaseAuditImpl.GetCurrentFlowRowData(this.ModuleModelObj.MenuTable, this.ModuleModelObj.ParmaryKey, this.SysModel.PrimaryValue); + this.UpdateCirculationData(); string printPath = PubUtil.PrintFileAbsolutelyPath; if (!File.Exists(printPath)) { @@ -1911,6 +1912,7 @@ namespace Lskj.BaseAccraditation if (this.ModuleModelObj.SaveSuccessfullyRefresh && !isSuccess) return;//保存成功才刷新 // 刷新主表 this._flowRowData = BaseAuditImpl.GetCurrentFlowRowData(this.ModuleModelObj.MenuTable, this.ModuleModelObj.ParmaryKey, this.SysModel.PrimaryValue); + this.UpdateCirculationData(); this._baseRowData = BaseAuditImpl.GetCurrentControlData(ReplaceHelper.ReplaceWhereCond(ReplaceHelper.ReplaceUserInfo(this.ModuleModelObj.MenuSql)), this.ModuleModelObj.ParmaryKey, this.SysModel.PrimaryValue); if (this._baseRowData == null) this._baseRowData = this._flowRowData; this.ControlObj.CanExecControl = false; @@ -2915,5 +2917,25 @@ namespace Lskj.BaseAccraditation } } + /// + /// 更新当前流转数据 + /// + public void UpdateCirculationData() + { + if (SystemInfo.Instance.IsSpecialAuditSave) + { + DataTable snapshotTable = this._flowRowData.Table.Clone(); + DataRow snapshotRow = snapshotTable.NewRow(); + snapshotRow.ItemArray = (object[])this._flowRowData.ItemArray.Clone(); + snapshotTable.Rows.Add(snapshotRow); + snapshotTable.AcceptChanges(); + this.ControlObj.beforeData = snapshotRow; + } + } + + + + + } } diff --git a/插件库/Lskj.Business/Impl/SystemInfo.cs b/插件库/Lskj.Business/Impl/SystemInfo.cs index 46b5594..c1e49a7 100644 --- a/插件库/Lskj.Business/Impl/SystemInfo.cs +++ b/插件库/Lskj.Business/Impl/SystemInfo.cs @@ -66,6 +66,9 @@ namespace Lskj.Business if (item.Table.Columns.Contains("UpdateAddressXp") && ERPInfo.Instance.SystemVersion.Contains("Windows XP")) Instance.UpdateAddress = !string.IsNullOrEmpty(item["UpdateAddressXp"] + "") ? item["UpdateAddressXp"] + "" : ""; + //内网对应的升级地址 + Instance.UpdateAddress = DBConfig.Instance.IsInternalNetwork && item.Table.Columns.Contains("InternalUpdateAddress") && !string.IsNullOrEmpty(item["InternalUpdateAddress"] + "") ? item["InternalUpdateAddress"] + "" : Instance.UpdateAddress; + Instance.OAUrl = DBConfig.Instance.Internet && item.Table.Columns.Contains("localOAUrl") && !string.IsNullOrEmpty(item["localOAUrl"] + "") ? item["localOAUrl"] + "" : item["OAUrl"] + ""; @@ -336,6 +339,7 @@ namespace Lskj.Business { ResourceDynamic.PubBrower = System.Environment.OSVersion.Version.Major == 5 && (System.Environment.OSVersion.Version.Minor == 1 || System.Environment.OSVersion.Version.Minor == 2) ? "Lskj.PubBrowerXp.dll" : "Lskj.PubBrower2.dll"; } + Instance.IsSpecialAuditSave = item.Table.Columns.Contains("IsSpecialAuditSave") && !string.IsNullOrEmpty(item["IsSpecialAuditSave"] + "") ? "1".Equals(item["IsSpecialAuditSave"] + "") : false; } /// /// 高拍仪AccessKey @@ -1161,9 +1165,12 @@ namespace Lskj.Business /// public string DeadlockPrompt; /// - /// 附件浏览器自带逻辑 + /// 附件按钮打开Lskj.PubBrower2.dll /// public bool SpecialAttachmentBrowser; - + /// + /// 特殊审核保存模式(修改语句只拼接修改后的控件) + /// + public bool IsSpecialAuditSave; } } diff --git a/插件库/Lskj.Control/AuditPanel2.cs b/插件库/Lskj.Control/AuditPanel2.cs index d2cfdbf..0e5e264 100644 --- a/插件库/Lskj.Control/AuditPanel2.cs +++ b/插件库/Lskj.Control/AuditPanel2.cs @@ -2016,7 +2016,7 @@ namespace Lskj.Control } //选中上一次选中行行号 - if (SelectGridControlEx != null && oldRowHandle > 0) + if (SelectGridControlEx != null && oldRowHandle >= 0) { SelectGridControlEx.GridView.SelectRowHandler(oldRowHandle); OnPcgridRowCellClick(SelectGridControlEx.GridView, null); @@ -2057,10 +2057,25 @@ namespace Lskj.Control string fieldValue = this.ControlObj.GetControlValue(model); if (fieldValue == "****") continue; + if (SystemInfo.Instance.IsSpecialAuditSave && + this._drBillInfoMsg != null && + this._drBillInfoMsg.Table != null && + this._drBillInfoMsg.Table.Columns.Contains(model.FieldName) && + AuditChangeLog.IsSameValue(this._drBillInfoMsg[model.FieldName] + "", fieldValue)) + { + continue; + } + + //updateBuilder.AppendFormat("{0}='{1}',", model.FieldName, fieldValue); updateBuilder.Append(string.IsNullOrEmpty(fieldValue) ? string.Format("{0}={1}", model.FieldName, this.ControlObj.GetNullValue(model)) : string.Format("{0}=N'{1}',", model.FieldName, fieldValue.Contains("'") ? fieldValue.Replace("'", "''") : fieldValue)); } } + string updateFields = updateBuilder.ToString().TrimEnd(','); + if (string.IsNullOrEmpty(updateFields)) + { + return string.Empty; + } return string.Format("update {0} set {1} where {2}='{3}'", this.BillModelObj.MasterTable, updateBuilder.ToString().TrimEnd(','), BillModelObj.PrimaryKey, this.SysModel.BillDocumentId); } #endregion diff --git a/插件库/Lskj.Control/BandedGridControlEx.cs b/插件库/Lskj.Control/BandedGridControlEx.cs index 0c9c03a..8c23b7e 100644 --- a/插件库/Lskj.Control/BandedGridControlEx.cs +++ b/插件库/Lskj.Control/BandedGridControlEx.cs @@ -258,7 +258,8 @@ namespace Lskj.Control DataRow gridRow = this.GridView.GetDataRow(e.RowHandle); foreach (DataRow item in this.GridRowColorsTable.Rows) { - string cond = ReplaceHelper.ReplaceRowParam(gridRow, item["condition"] + ""); + //string cond = ReplaceHelper.ReplaceRowParam(gridRow, item["condition"] + ""); + string cond = ReplaceHelper.ReplaceRowParamEmptyWrapQuote(gridRow, item["condition"] + ""); try { if (!string.IsNullOrWhiteSpace(cond) && ReplaceHelper.EvalCond(cond)) @@ -360,7 +361,8 @@ namespace Lskj.Control continue; } } - cond = ReplaceHelper.ReplaceRowParam(gridRow, item["condition"] + "").ReplaceColumnParam(e.Column.Name, e.Column.Caption, e.CellValue + ""); + //cond = ReplaceHelper.ReplaceRowParam(gridRow, item["condition"] + "").ReplaceColumnParam(e.Column.Name, e.Column.Caption, e.CellValue + ""); + cond = ReplaceHelper.ReplaceRowParamEmptyWrapQuote(gridRow, item["condition"] + "").ReplaceColumnParam(e.Column.Name, e.Column.Caption, e.CellValue + ""); try { if (!string.IsNullOrWhiteSpace(cond) && ReplaceHelper.EvalCond(cond) && (!string.IsNullOrEmpty(e.CellValue + "") || isLaterDatePresent|| SystemInfo.Instance.isBlankCellColor)) diff --git a/插件库/Lskj.Control/FrmWebBrowser2.Designer.cs b/插件库/Lskj.Control/FrmWebBrowser2.Designer.cs index 6f89029..9ecc201 100644 --- a/插件库/Lskj.Control/FrmWebBrowser2.Designer.cs +++ b/插件库/Lskj.Control/FrmWebBrowser2.Designer.cs @@ -31,11 +31,10 @@ namespace Lskj.Control { this.SuspendLayout(); // - // FrmWebBrowser + // FrmWebBrowser2 // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.Name = "FrmWebBrowser"; + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; + this.Name = "FrmWebBrowser2"; this.Size = new System.Drawing.Size(800, 450); this.ResumeLayout(false); diff --git a/插件库/Lskj.Control/GridControlEx.cs b/插件库/Lskj.Control/GridControlEx.cs index c3b8bef..c3e20a6 100644 --- a/插件库/Lskj.Control/GridControlEx.cs +++ b/插件库/Lskj.Control/GridControlEx.cs @@ -1205,6 +1205,19 @@ namespace Lskj.Control } } + + + + + + + + + + + + + /// /// 说明:设置列格式化 /// 创建人:龚宇超 @@ -6608,7 +6621,8 @@ namespace Lskj.Control DataRow gridRow = this.gridView.GetDataRow(e.RowHandle); foreach (DataRow item in this.GridRowColorsTable.Rows) { - string cond = ReplaceHelper.ReplaceRowParam(gridRow, item["condition"] + "").ReplaceColumnParam(e.Column.Name, e.Column.Caption, e.CellValue + ""); + // string cond = ReplaceHelper.ReplaceRowParam(gridRow, item["condition"] + "").ReplaceColumnParam(e.Column.Name, e.Column.Caption, e.CellValue + ""); + string cond = ReplaceHelper.ReplaceRowParamEmptyWrapQuote(gridRow, item["condition"] + "").ReplaceColumnParam(e.Column.Name, e.Column.Caption, e.CellValue + ""); try { @@ -6669,7 +6683,8 @@ namespace Lskj.Control DataRow gridRow = this.gridView.GetDataRow(e.RowHandle); foreach (DataRow item in this.GridRowColorsTable.Rows) { - string cond = ReplaceHelper.ReplaceRowParam(gridRow, item["condition"] + ""); + //string cond = ReplaceHelper.ReplaceRowParam(gridRow, item["condition"] + ""); + string cond = ReplaceHelper.ReplaceRowParamEmptyWrapQuote(gridRow, item["condition"] + ""); try { if (!string.IsNullOrWhiteSpace(cond) && ReplaceHelper.EvalCond(cond)) diff --git a/插件库/Lskj.Control/Model/AuditChangeLog.cs b/插件库/Lskj.Control/Model/AuditChangeLog.cs index 084a209..bdd3bbe 100644 --- a/插件库/Lskj.Control/Model/AuditChangeLog.cs +++ b/插件库/Lskj.Control/Model/AuditChangeLog.cs @@ -182,7 +182,10 @@ namespace Lskj.Control.Model /// 判断两个值是否相同。 /// 优先按日期、数字进行值比较,最后再按普通字符串比较。 /// - private static bool IsSameValue(string oldValue, string newValue) + /// 原始值 + /// 当前值 + /// 两个值在统一格式后是否相同 + public static bool IsSameValue(string oldValue, string newValue) { oldValue = NormalizeValue(oldValue); newValue = NormalizeValue(newValue); diff --git a/插件库/Lskj.Control/Model/CommonMenu.cs b/插件库/Lskj.Control/Model/CommonMenu.cs index a6dd5f8..035d904 100644 --- a/插件库/Lskj.Control/Model/CommonMenu.cs +++ b/插件库/Lskj.Control/Model/CommonMenu.cs @@ -22,6 +22,7 @@ using System.IO; using System.Data.SqlClient; using Lskj.Business; using DevExpress.XtraGrid.Views.Grid; +using Lskj.Core; namespace Lskj.Control.Model { @@ -38,6 +39,12 @@ namespace Lskj.Control.Model /// private MyControl _controlObj; public bool issuccess = true; + + /// + /// 最初账套版本 + /// + public DataRow AccountItem; + /// /// Occurs when [apply before]. /// @@ -73,13 +80,12 @@ namespace Lskj.Control.Model /// true if XXXX, false otherwise. public bool Apply(DataRow rowItem) { + bool resultValue = false; + if (rowItem == null || this._controlObj == null) return resultValue; + GridRightMenuModel model = new GridRightMenuModel(rowItem); + try { - bool resultValue = false; - if (rowItem == null || this._controlObj == null) return resultValue; - - GridRightMenuModel model = new GridRightMenuModel(rowItem); - //if (!string.IsNullOrWhiteSpace(model.MenuCond)) //{ // try @@ -103,6 +109,18 @@ namespace Lskj.Control.Model // } //} + if (!string.IsNullOrEmpty(model.UnionZTid)) + { + string UnionZTid = ReplaceHelper.ReplaceRowParam(BaseGridView.GetFocusedDataRow(), model.UnionZTid); + string condition = string.Format("where ShowName ='{0}'", ERPInfo.Instance.AccountBook); + DataTable dt = MainImpl.GetLedgerList(condition); + DataRow RT = BaseImpl.GetDataRowResult($"select * from p_sydbGroupTab where ID={UnionZTid}"); + + AccountItem = dt.Rows[0]; + AccountItem["IP"] = DBConfig.Instance.ServerName; + ToDBatching(RT, AccountItem); + } + if (!string.IsNullOrWhiteSpace(model.BeforeMsg)) { @@ -186,6 +204,10 @@ namespace Lskj.Control.Model string Message = ErrorMessage.PromptErrorMessage(ex); MessageUtil.Show(Message, ex.Message); } + finally + { + if (!string.IsNullOrEmpty(model.UnionZTid)) ToDBatching(AccountItem, AccountItem); + } return true; } /// @@ -507,5 +529,29 @@ namespace Lskj.Control.Model } return false; } + + + /// + /// 启动账套数据源刷新 + /// + protected void ToDBatching(DataRow RT, DataRow firstrow) + { + string serverIP = RT["IP"] + ""; + string dbName = RT["DBName"] + ""; + string dataBook = RT["ShowName"] + ""; + bool isInternal = RT.Table.Columns.Contains("IsInternalNetwork") && !string.IsNullOrEmpty(RT["IsInternalNetwork"] + "") ? "1".Equals(RT["IsInternalNetwork"] + "") : false; + DBConfig.Instance.DataBook = dataBook; + DBConfig.Instance.ServerName = serverIP; + DBConfig.Instance.DataBase = dbName; + DBConfig.Instance.IsInternalNetwork = isInternal; + if (!DBConfig.Instance.CreateConnection()) + { + ToDBatching(firstrow, firstrow); + } + + } + + + } } diff --git a/插件库/Lskj.Control/Model/ControlType.cs b/插件库/Lskj.Control/Model/ControlType.cs index d1da03b..a51106b 100644 --- a/插件库/Lskj.Control/Model/ControlType.cs +++ b/插件库/Lskj.Control/Model/ControlType.cs @@ -501,6 +501,23 @@ namespace Lskj.Control.Model /// public const int LabSearchReturnIdExtended = 174; + ///// + ///// 快速搜索框返回id(字典模式) + ///// + //public const int DictionarySearchBoxToId = 181; + ///// + ///// 快速搜索框返回text(字典模式) + ///// + //public const int DictionarySearchBoxToText = 182; + ///// + ///// 快速搜索框返回id 带参数(字典模式) + ///// + //public const int DictionarySearchBoxToIdParam = 183; + ///// + ///// 快速搜索框返回text 带参数(字典模式) + ///// + //public const int DictionarySearchBoxToTextParam = 184; + /// /// 说明:是否为Value类型 /// 创建人:龚宇超 diff --git a/插件库/Lskj.Control/Model/GridDetailModel.cs b/插件库/Lskj.Control/Model/GridDetailModel.cs index c688183..bf5b3e4 100644 --- a/插件库/Lskj.Control/Model/GridDetailModel.cs +++ b/插件库/Lskj.Control/Model/GridDetailModel.cs @@ -307,6 +307,11 @@ namespace Lskj.Control.Model /// public bool AddHideBottomPanel; + /// + /// 禁用条件 + /// + public string VisibleCond; + /// /// 主模块编号 /// @@ -379,6 +384,7 @@ namespace Lskj.Control.Model this.IgnoreAssociatedFields = item.Table.Columns.Contains("IgnoreAssociatedFields") ? "1".Equals(item["IgnoreAssociatedFields"] + "") : false; this.Library = item.Table.Columns.Contains("Library") ? item["Library"] + "" : ""; this.AddHideBottomPanel = item.Table.Columns.Contains("AddHideBottomPanel") ? "1".Equals(item["AddHideBottomPanel"] + "") : false; + this.VisibleCond = item.Table.Columns.Contains("VisibleCond") ? item["VisibleCond"] + "" : ""; } } } diff --git a/插件库/Lskj.Control/Model/MenuStrip/BandedGridMenuStrip.cs b/插件库/Lskj.Control/Model/MenuStrip/BandedGridMenuStrip.cs index e779fc8..4a58558 100644 --- a/插件库/Lskj.Control/Model/MenuStrip/BandedGridMenuStrip.cs +++ b/插件库/Lskj.Control/Model/MenuStrip/BandedGridMenuStrip.cs @@ -36,54 +36,62 @@ namespace Lskj.Control.Model.MenuStrip } protected override void MenuStripOpening(object sender, System.ComponentModel.CancelEventArgs e) { - int[] mSelectRows = this._gridView.GetSelectedRows(); - if (mSelectRows == null || mSelectRows.Length == 0) return; + int[] mSelectRows = this._gridView.GetSelectedRows() ?? new int[0]; - DataRow mSelectRow = this._gridView.GetDataRow(mSelectRows[0]); + DataRow[] dataRows = new DataRow[mSelectRows.Length]; + for (int i = 0; i < mSelectRows.Length; i++) + { + dataRows[i] = this._gridView.GetDataRow(mSelectRows[i]); + } ContextMenuStrip cmsMenu = (ContextMenuStrip)sender; cmsMenu.Items.Clear(); cmsMenu.Items.AddRange(this.RightMenuItems.ToArray()); - // 创建QQ、浏览器右键菜单 - List mQQArray = new List(); - List mBrowerArray = new List(); - - foreach (GridColumn column in this._gridView.Columns) + if (mSelectRows.Length > 0) { - if (!mSelectRow.Table.Columns.Contains(column.Name)) - continue; - string rowValue = mSelectRow[column.Name] + ""; - if (!string.IsNullOrWhiteSpace(rowValue)) + DataRow mSelectRow = this._gridView.GetDataRow(mSelectRows[0]); + + // 创建QQ、浏览器右键菜单 + List mQQArray = new List(); + List mBrowerArray = new List(); + + foreach (GridColumn column in this._gridView.Columns) { - GridColumnModel model = column.Tag as GridColumnModel; - if (model == null) continue; - - if (model.FieldType == ControlType.LabQQ) + if (!mSelectRow.Table.Columns.Contains(column.Name)) + continue; + string rowValue = mSelectRow[column.Name] + ""; + if (!string.IsNullOrWhiteSpace(rowValue)) { - ToolStripMenuItem item = new ToolStripMenuItem("(" + column.Caption + ")" + rowValue, Resources.qq); - item.Tag = mSelectRow[column.Name] + ""; - item.Click += new EventHandler(QQItemClick); - mQQArray.Add(item); - } + GridColumnModel model = column.Tag as GridColumnModel; + if (model == null) continue; - if (model.FieldType == ControlType.LabWWW || - rowValue.StartsWith("www.") || - rowValue.StartsWith("http://") || - rowValue.StartsWith("https://") || - rowValue.StartsWith("ftp://") || - rowValue.StartsWith("file://")) - { - ToolStripMenuItem item = new ToolStripMenuItem("(" + column.Caption + ")" + rowValue, Resources.qq); - item.Tag = mSelectRow[column.Name] + ""; - item.Click += new EventHandler(BrowerItemClick); - mBrowerArray.Add(item); + if (model.FieldType == ControlType.LabQQ) + { + ToolStripMenuItem item = new ToolStripMenuItem("(" + column.Caption + ")" + rowValue, Resources.qq); + item.Tag = mSelectRow[column.Name] + ""; + item.Click += new EventHandler(QQItemClick); + mQQArray.Add(item); + } + + if (model.FieldType == ControlType.LabWWW || + rowValue.StartsWith("www.") || + rowValue.StartsWith("http://") || + rowValue.StartsWith("https://") || + rowValue.StartsWith("ftp://") || + rowValue.StartsWith("file://")) + { + ToolStripMenuItem item = new ToolStripMenuItem("(" + column.Caption + ")" + rowValue, Resources.qq); + item.Tag = mSelectRow[column.Name] + ""; + item.Click += new EventHandler(BrowerItemClick); + mBrowerArray.Add(item); + } } } - } - cmsMenu.Items.AddRange(mQQArray.ToArray()); - cmsMenu.Items.AddRange(mBrowerArray.ToArray()); + cmsMenu.Items.AddRange(mQQArray.ToArray()); + cmsMenu.Items.AddRange(mBrowerArray.ToArray()); + } // 判断右键菜单是否可用 foreach (ToolStripItem cms in cmsMenu.Items) @@ -95,34 +103,83 @@ namespace Lskj.Control.Model.MenuStrip { try { - string cond = string.Empty; - if (this._control != null) - cond = _control.ReplaceParentControlValue(model.MenuCond); - cond = ReplaceHelper.ReplaceRowParam(mSelectRow, model.MenuCond); - if (this._gridView != null) + bool condResult = false; + StringBuilder condBuilder = new StringBuilder(); + StringBuilder sqlCondBuilder = new StringBuilder(); + GridCell[] cells = this._gridView.GetSelectedCells(); + DataRow focusedRow = this.BaseGridView.GetFocusedDataRow(); + + DataRow[] conditionRows = dataRows; + if (model.AllowNullExec && conditionRows.Length == 0) { - GridCell[] cells = this._gridView.GetSelectedCells(); - if (cells != null && cells.Length > 0 && cond.Contains("{COLUMN_")) + conditionRows = new DataRow[] { new DataTable().NewRow() }; + } + + foreach (DataRow selectRow in conditionRows) + { + string cond = ReplaceHelper.ReplaceUserInfo(model.MenuCond); + cond = RaiseBeforeHandleParamsCallback(model.ParamList, conditionRows, model.MenuCond, selectRow, cond); + if (this._control != null) { - GridCell cell = cells[0]; - DataRow focusedRow = this.BaseGridView.GetFocusedDataRow(); - string colValue = focusedRow == null || !focusedRow.Table.Columns.Contains(cell.Column.Name) ? "" : focusedRow[cell.Column.Name] + ""; - cond = cond.ReplaceColumnParam(cell.Column.Name, cell.Column.Caption, colValue); + cond = _control.ReplaceParentControlValue(cond); + } + //cond = ReplaceHelper.ReplaceRowParam(selectRow, cond); + cond = ReplaceHelper.ReplaceRowParamEmptyWrapQuote(selectRow, cond); + if (model.Mergeexec && cond.StartsWith("@")) + { + //替换[],替换的是多选行中的数据 + cond = ReplaceHelper.ReplaceRowParam(conditionRows, cond.Replace("[", "{").Replace("]", "}"), "", ""); + } + + if (this._gridView != null) + { + if (cells != null && cells.Length > 0 && cond.Contains("{COLUMN_")) + { + GridCell cell = cells[0]; + string colValue = focusedRow == null || !focusedRow.Table.Columns.Contains(cell.Column.Name) ? "" : focusedRow[cell.Column.Name] + ""; + cond = cond.ReplaceColumnParam(cell.Column.Name, cell.Column.Caption, colValue); + } + } + + if (ControlObj != null) + { + cond = ControlObj.ReplaceParentControlValue(cond); + } + if (cond.StartsWith("@")) + { + sqlCondBuilder.Append($"({cond.TrimStart('@')}) = '1' and "); + } + else + { + condBuilder.Append($"({cond}) and "); } } - if (ControlObj != null) - cond = ControlObj.ReplaceParentControlValue(cond); + string condStr = model.MenuCond; + if (!string.IsNullOrWhiteSpace(sqlCondBuilder.ToString()) || !string.IsNullOrWhiteSpace(condBuilder.ToString())) + { + if (model.MenuCond.StartsWith("@")) + { + condStr = $"@if({sqlCondBuilder.ToString().TrimEnd().TrimEnd('d', 'n', 'a')}) begin select '1' end else begin select '0' end"; + } + else + { + condStr = condBuilder.ToString().TrimEnd().TrimEnd('d', 'n', 'a'); + } + } + + condResult = ValidateCond(condStr, null); //cms.Enabled = ReplaceHelper.EvalCond(cond); if (model.ForbiddenDisplay) { - cms.Visible = ValidateCond(cond, null); ; + cms.Visible = condResult; } - cms.Enabled = ValidateCond(cond, null); ; + cms.Enabled = condResult; } catch (Exception ex) { string Message = ErrorMessage.PromptErrorMessage(ex); MessageUtil.Show(ResourceKeys.SetRightMenuCondFault + "\r\n" + Message); + e.Cancel = true; break; } } diff --git a/插件库/Lskj.Control/Model/MenuStrip/BaseMenuStrip.cs b/插件库/Lskj.Control/Model/MenuStrip/BaseMenuStrip.cs index bf3d039..9a059e0 100644 --- a/插件库/Lskj.Control/Model/MenuStrip/BaseMenuStrip.cs +++ b/插件库/Lskj.Control/Model/MenuStrip/BaseMenuStrip.cs @@ -50,6 +50,7 @@ namespace Lskj.Control.Model /// 最初账套版本 /// public DataRow AccountItem; + public DataTable MenuTable; public DynamicModel Model; public MyControl ControlObj; @@ -267,7 +268,7 @@ namespace Lskj.Control.Model public bool ValidateCond(string cond, DataRow dataRow) { bool result = false; - cond = ReplaceHelper.ReplaceRowParam(dataRow, cond); + cond = ReplaceHelper.ReplaceRowParamEmptyWrapQuote(dataRow, cond); if (cond.StartsWith("@") || cond.StartsWith("!")) { result = "1".Equals(BaseImpl.GetDefaultValue(cond)); diff --git a/插件库/Lskj.Control/Model/MenuStrip/GridViewMenuStrip.cs b/插件库/Lskj.Control/Model/MenuStrip/GridViewMenuStrip.cs index 16ef186..f81de32 100644 --- a/插件库/Lskj.Control/Model/MenuStrip/GridViewMenuStrip.cs +++ b/插件库/Lskj.Control/Model/MenuStrip/GridViewMenuStrip.cs @@ -147,8 +147,8 @@ namespace Lskj.Control.Model { cond = _control.ReplaceParentControlValue(cond); } - cond = ReplaceHelper.ReplaceRowParam(selectRow, cond); - + //cond = ReplaceHelper.ReplaceRowParam(selectRow, cond); + cond = ReplaceHelper.ReplaceRowParamEmptyWrapQuote(selectRow, cond); if (model.Mergeexec&& cond.StartsWith("@")) { //替换[],替换的是多选行中的数据 diff --git a/插件库/Lskj.Control/Model/MenuStrip/TreeGridViewMenuStrip.cs b/插件库/Lskj.Control/Model/MenuStrip/TreeGridViewMenuStrip.cs index ad1d646..df15ee8 100644 --- a/插件库/Lskj.Control/Model/MenuStrip/TreeGridViewMenuStrip.cs +++ b/插件库/Lskj.Control/Model/MenuStrip/TreeGridViewMenuStrip.cs @@ -156,8 +156,8 @@ namespace Lskj.Control.Model.MenuStrip cond = RaiseBeforeHandleParamsCallback(model.ParamList, conditionRows, model.MenuCond, selectRow, cond); if (this._control != null) cond = _control.ReplaceParentControlValue(cond); - cond = ReplaceHelper.ReplaceRowParam(selectRow, cond); - + //cond = ReplaceHelper.ReplaceRowParam(selectRow, cond); + cond = ReplaceHelper.ReplaceRowParamEmptyWrapQuote(selectRow, cond); if (model.Mergeexec && cond.StartsWith("@")) { //替换[],替换的是多选行中的数据 diff --git a/插件库/Lskj.Control/Model/MyControl.cs b/插件库/Lskj.Control/Model/MyControl.cs index 661e5e8..da93b61 100644 --- a/插件库/Lskj.Control/Model/MyControl.cs +++ b/插件库/Lskj.Control/Model/MyControl.cs @@ -265,6 +265,12 @@ namespace Lskj.Control.Model ///特殊左侧表 /// public GridControlEx SpecialLeftTable; + /// + ///修改前的数据源 + /// + public DataRow beforeData; + + /// /// 控件Panel对象 /// @@ -3048,6 +3054,8 @@ namespace Lskj.Control.Model } else { + + // 修改记录 foreach (ControlModel model in this.ControlModels) { @@ -3064,6 +3072,16 @@ namespace Lskj.Control.Model if (userControl != null) { string fieldValue = this.GetControlValue(model); + + if (beforeData != null && + beforeData.Table != null && + beforeData.Table.Columns.Contains(model.FieldName) && + AuditChangeLog.IsSameValue(beforeData[model.FieldName] + "", fieldValue)) + { + continue; + } + + if (fieldValue == "****") continue; if (model.FieldType == 7) { @@ -4373,6 +4391,8 @@ namespace Lskj.Control.Model model.FieldType = 161; model.IsRadio = true; } + + return model; } /// @@ -4727,7 +4747,11 @@ namespace Lskj.Control.Model multiAutoEdit.ValueField = model.ValueMember; multiAutoEdit.TextField = model.TextMember; multiAutoEdit.ControlObj = this; - multiAutoEdit.CurrentOperColumnKey= Model.ModuleCode + "_" + model.FieldName; + if (Model != null) + { + multiAutoEdit.CurrentOperColumnKey = Model.ModuleCode + "_" + model.FieldName; + } + //multiAutoEdit.SetDataSource(dataSource); multiAutoEdit.TextBoxProhibition = model.TextBoxProhibition; multiAutoEdit.TextEdit.KeyDown += new KeyEventHandler(OnTextEditKeyDown); diff --git a/插件库/Lskj.Control/ModuleEx.cs b/插件库/Lskj.Control/ModuleEx.cs index 4dc7ac1..cc64641 100644 --- a/插件库/Lskj.Control/ModuleEx.cs +++ b/插件库/Lskj.Control/ModuleEx.cs @@ -2081,7 +2081,7 @@ namespace Lskj.Control { if (this.gridLeft.Visible) this.OnGridViewRowClick(null, null); if (this.treeGridLeft.Visible) this.TreeListObj_Click(null, null); - if (this.treeLeft.Visible) + if (this.treeLeft.Visible&& this.treeLeft.TreeView.SelectedNode!=null) { TreeViewEventArgs treeViewEventArgs = new TreeViewEventArgs(this.treeLeft.TreeView.SelectedNode); this.OnTreeLeftTreeNodeSelected(null, treeViewEventArgs); diff --git a/插件库/Lskj.Control/ModuleGridDetailEx.cs b/插件库/Lskj.Control/ModuleGridDetailEx.cs index e77afd5..9c9024e 100644 --- a/插件库/Lskj.Control/ModuleGridDetailEx.cs +++ b/插件库/Lskj.Control/ModuleGridDetailEx.cs @@ -707,6 +707,13 @@ namespace Lskj.Control } } + if (model!=null&& !string.IsNullOrWhiteSpace(model.VisibleCond)) + { + tabPage.PageVisible = !ValidateCond(model.VisibleCond, rowItem); + if (!tabPage.PageVisible) return; + } + + if (IsDynamicDetailType) { @@ -1464,7 +1471,46 @@ namespace Lskj.Control } + /// + /// 说明:检查可用条件 + /// 创建人:龚宇超 + /// 创建日期:2017-11-09 + /// 修改人: + /// 修改日期: + /// 修改备注: + /// 版本:1.0 + /// + /// The cond. + /// The data row. + /// true if XXXX, false otherwise. + private bool ValidateCond(string cond, DataRow dataRow) + { + bool result = false; + string condition = cond; + try + { + if (string.IsNullOrWhiteSpace(cond)) return true;//如果值是空格或者空行,默认正确 + cond = ReplaceHelper.ReplaceRowParamEmptyWrapQuote(dataRow, cond); + if (cond.StartsWith("@") || cond.StartsWith("!")) + { + result = "1".Equals(BaseImpl.GetDefaultValue(cond)); + } + else if (dataRow == null) + { + result = ReplaceHelper.EvalCond(cond); + } + else + { + result = ReplaceHelper.ReplaceRowParamCond(dataRow, cond); + } + return result; + } + catch (Exception ex) + { + } + return result; + } diff --git a/插件库/Lskj.Control/ModuleGridEx.cs b/插件库/Lskj.Control/ModuleGridEx.cs index 6aad0a4..9ea4a43 100644 --- a/插件库/Lskj.Control/ModuleGridEx.cs +++ b/插件库/Lskj.Control/ModuleGridEx.cs @@ -538,6 +538,14 @@ namespace Lskj.Control if (fixedQuery) { + + //固定条件不显示,隐藏上方。(只显示表格) + if (SystemInfo.Instance.HideFixedConditions) + { + this.pl_top.Visible = false; + return; + } + this.pl_top_fix_search.Visible = true; // 加载固定查询条件 @@ -560,11 +568,7 @@ namespace Lskj.Control this.SearchObj.InitDefaultSearchControl(table, this.pl_top_fix_search, false); else this.SearchObj.InitDefaultSearchControl(table, this.pl_top_fix_search); - //固定条件不显示,隐藏上方。(只显示表格) - if (SystemInfo.Instance.HideFixedConditions) - { - this.pl_top.Visible = false; - } + } else { @@ -1680,7 +1684,8 @@ namespace Lskj.Control } else { - cond = ReplaceHelper.ReplaceRowParam(dataRow, cond); + //cond = ReplaceHelper.ReplaceRowParam(dataRow, cond); + cond = ReplaceHelper.ReplaceRowParamEmptyWrapQuote(dataRow, cond); if (cond.StartsWith("@") || cond.StartsWith("!")) { result = "1".Equals(BaseImpl.GetDefaultValue(cond)); diff --git a/插件库/Lskj.Control/TreeGridControlEx.cs b/插件库/Lskj.Control/TreeGridControlEx.cs index 2b73bf2..f45eef8 100644 --- a/插件库/Lskj.Control/TreeGridControlEx.cs +++ b/插件库/Lskj.Control/TreeGridControlEx.cs @@ -396,7 +396,8 @@ namespace Lskj.Control DataRow gridRow = dataRowView != null ? dataRowView.Row : null; foreach (DataRow item in this.GridRowColorsTable.Rows) { - string cond = ReplaceHelper.ReplaceRowParam(gridRow, item["condition"] + ""); + //string cond = ReplaceHelper.ReplaceRowParam(gridRow, item["condition"] + ""); + string cond = ReplaceHelper.ReplaceRowParamEmptyWrapQuote(gridRow, item["condition"] + ""); try { if (!string.IsNullOrWhiteSpace(cond) && ReplaceHelper.EvalCond(cond)) @@ -448,7 +449,8 @@ namespace Lskj.Control DataRow gridRow = dataRowView != null ? dataRowView.Row : null; foreach (DataRow item in this.GridRowColorsTable.Rows) { - string cond = ReplaceHelper.ReplaceRowParam(gridRow, item["condition"] + "").ReplaceColumnParam(e.Column.Name, e.Column.Caption, e.CellValue + ""); + //string cond = ReplaceHelper.ReplaceRowParam(gridRow, item["condition"] + "").ReplaceColumnParam(e.Column.Name, e.Column.Caption, e.CellValue + ""); + string cond = ReplaceHelper.ReplaceRowParamEmptyWrapQuote(gridRow, item["condition"] + "").ReplaceColumnParam(e.Column.Name, e.Column.Caption, e.CellValue + ""); try { if (!string.IsNullOrWhiteSpace(cond) && ReplaceHelper.EvalCond(cond)) diff --git a/插件库/Lskj.PubAccraditation/FrmAccraditation.cs b/插件库/Lskj.PubAccraditation/FrmAccraditation.cs index 4fb6979..f854069 100644 --- a/插件库/Lskj.PubAccraditation/FrmAccraditation.cs +++ b/插件库/Lskj.PubAccraditation/FrmAccraditation.cs @@ -3665,6 +3665,15 @@ namespace Lskj.PubAccraditation string newfieldValue = fieldValue; if (fieldValue == "****") continue; + if (SystemInfo.Instance.IsSpecialAuditSave && + this._drBillInfoMsg != null && + this._drBillInfoMsg.Table != null && + this._drBillInfoMsg.Table.Columns.Contains(model.FieldName) && + AuditChangeLog.IsSameValue(this._drBillInfoMsg[model.FieldName] + "", fieldValue)) + { + continue; + } + if ((model.FieldType == ControlType.LabDate || model.FieldType == ControlType.LabDate || model.FieldType == ControlType.LabDate || @@ -3683,7 +3692,12 @@ namespace Lskj.PubAccraditation } } SaveErrorMessage = errorMessage; - return string.Format("update {0} set {1} where {2}='{3}'", this.BillModelObj.MasterTable, updateBuilder.ToString().TrimEnd(','), BillModelObj.PrimaryKey, this.SysModel.BillDocumentId); + string updateFields = updateBuilder.ToString().TrimEnd(','); + if (string.IsNullOrEmpty(updateFields)) + { + return string.Empty; + } + return string.Format("update {0} set {1} where {2}='{3}'", this.BillModelObj.MasterTable, updateFields, BillModelObj.PrimaryKey, this.SysModel.BillDocumentId); } #endregion diff --git a/插件库/Lskj.Util/ReplaceHelper.cs b/插件库/Lskj.Util/ReplaceHelper.cs index 8e969da..59058bc 100644 --- a/插件库/Lskj.Util/ReplaceHelper.cs +++ b/插件库/Lskj.Util/ReplaceHelper.cs @@ -528,6 +528,50 @@ namespace Lskj.Util } return param; } + + /// + /// 说明:说明:替换"{字段}"格式字符串,已替换操作员等信息,其中替换后空值会加上引号 + /// {xxx}=0 原本替换 =0 现在替换 ''=0 + /// + /// + /// + /// + public static string ReplaceRowParamEmptyWrapQuote(DataRow row, string param) + { + param = ReplaceUserInfo(param); + + if (row == null) return param; + param = param.Replace(_rightLineStatus, (int)row.RowState + "", true); + + List condition = GetParamFields(param); + foreach (string item in condition) + { + string field = item.Replace("{", "").Replace("}", ""); + string value = row.Table.Columns.Contains(field) ? row[field] + "" : item; + if (!string.IsNullOrEmpty(value) || value == item) + { + param = param.Replace(item, value); + continue; + } + + string sourceParam = param; + param = Regex.Replace(sourceParam, Regex.Escape(item), match => + { + int rightIndex = match.Index + match.Length; + bool isWrappedBySingleQuote = match.Index > 0 && rightIndex < sourceParam.Length && + sourceParam[match.Index - 1] == '\'' && sourceParam[rightIndex] == '\''; + bool isWrappedByDoubleQuote = match.Index > 0 && rightIndex < sourceParam.Length && + sourceParam[match.Index - 1] == '"' && sourceParam[rightIndex] == '"'; + + return isWrappedBySingleQuote || isWrappedByDoubleQuote ? string.Empty : "''"; + }); + } + return param; + } + + + + /// /// 说明:说明:替换"{字段}"格式字符串,已替换操作员等信息 /// 创建人:龚宇超