/// <summary> /// 逻辑删除 /// </summary> /// <typeparam name="T">实体类型</typeparam> /// <param name="info">实体</param> /// <returns>删除行数</returns> public int LogicDelete <T>(T info) where T : new() { int count = 0; string tableName = ""; string sql = ""; string where = ""; string UPDATEUSR = ""; T oldInfo = default(T); DataChangeManageDAL markManager = new DataChangeManageDAL(); List <DataParameter> parameters = new List <DataParameter>(); try { //获取表名 Type type = typeof(T); object[] attrsClassAtt = type.GetCustomAttributes(typeof(DBTableAttribute), true); DBTableAttribute tableAtt = (DBTableAttribute)attrsClassAtt[0]; tableName = tableAtt.TableName; //获取主键信息 Dictionary <string, object> pkColumns = new DataQueryHelper().GetPkColumns <T>(info); UPDATEUSR = BindHelper.GetPropertyValue(info, "UPDATEUSER") == null ? "" : BindHelper.GetPropertyValue(info, "UPDATEUSER").ToString(); //获取原实体 oldInfo = (T)(info as BaseEntity).Clone(); oldInfo = this.BaseSession.Get <T>(info); //获取数据主键 string dataID = this.GetEntityDataID <T>(info); //逻辑删除 sql = string.Format("UPDATE {0} SET FLGDEL='1',UPDATEDATE=GETDATE(),UPDATEUSER=@UPDATEUSER WHERE ", tableName, UPDATEUSR); parameters.Add(new DataParameter("UPDATEUSER", UPDATEUSR)); foreach (string key in pkColumns.Keys) { where += " AND " + key + " = @" + key; parameters.Add(new DataParameter(key, pkColumns[key])); } sql += where.Substring(4); sql = this.ChangeSqlByDB(sql, this.BaseSession); count = this.BaseSession.ExecuteSql(sql, parameters.ToArray()); //记录痕迹 markManager.Session = this.BaseSession; //markManager.RecordDataChangeMarkDetail<T>(DataOprType.Delete, UPDATEUSR, dataID, oldInfo, info); return(count); } catch (Exception ex) { throw ex; } }
public override void ExecuteCommand(IList <NavigationModelNodeBase> navigationNodes, NavigationModelNodeTask task, ICollection <String> parameters) { foreach (NavigationModelNode navigationNode in navigationNodes) { IDataItem dataitemIncident = null; IDataItem dataitemIncidentStatus = null; IDataItem dataitemMessageType = null; bool boolIsFormAction = false; Uri uriFormsDefinition = new Uri(NavigationModel.NavigationRoot, "Windows/Forms/"); if (navigationNode != null && uriFormsDefinition.IsBaseOf(navigationNode.Location)) { boolIsFormAction = true; FrameworkElement userControl = GetIncidentControl(navigationNode); if (userControl != null) { if (userControl.CheckAccess()) { dataitemIncident = userControl.DataContext as IDataItem; } else { using (AutoResetEvent autoreset = new AutoResetEvent(false)) { EventHandler delegateHandleUserControl = delegate(object sender, EventArgs e) { dataitemIncident = userControl.DataContext as IDataItem; autoreset.Set(); }; userControl.Dispatcher.BeginInvoke( System.Windows.Threading.DispatcherPriority.Normal, delegateHandleUserControl, null, null); autoreset.WaitOne(); } } } } else { //Console Node IDataItem dataItem = navigationNode as IDataItem; if (dataItem != null) { dataitemIncident = DataQueryHelper.GetEmoProjectionItem((Guid)dataItem[Constants.MP_PROPERTY_ID_DOLLAR], new Guid(Constants.MP_PROJECTION_TYPE_INCIDENT)); } } String strMessage = String.Empty; Boolean boolAddToActionLog = false; dataitemIncidentStatus = (IDataItem)dataitemIncident[Constants.MP_PROPERTY_INCIDENT_STATUS]; bool?result = SendEmailForm.LaunchDialog(task.DisplayName, ref dataitemMessageType, ref dataitemIncidentStatus, out strMessage, out boolAddToActionLog); if (result == null || !result.Value || String.IsNullOrEmpty(strMessage)) { // The user either did not enter any comment or he clicked the cancel button break; } dataitemIncident[Constants.MP_PROPERTY_INCIDENT_MESSAGE] = strMessage; dataitemIncident[Constants.MP_PROPERTY_INCIDENT_MESSAGE_TYPE] = dataitemMessageType; dataitemIncident[Constants.MP_PROPERTY_INCIDENT_STATUS] = dataitemIncidentStatus; if (boolAddToActionLog) { //Add the Action Log Object IDataItem dataitemSentEmailActionType = DataQueryHelper.GetEnumerations(new Guid(Constants.MP_ENUM_TYPE_SENT_EMAIL), false)[0]; IDataItem dataitemActionLogItem = DataQueryHelper.CreateNewInstanceBindableItem(new Guid(Constants.MP_CLASS_TYPE_ACTION_LOG)); dataitemActionLogItem[Constants.MP_PROPERTY_ACTION_LOG_ENTERED_DATE] = DateTime.Now; dataitemActionLogItem[Constants.MP_PROPERTY_ACTION_LOG_DESCRIPTION] = strMessage; dataitemActionLogItem[Constants.MP_PROPERTY_ACTION_LOG_ID] = Guid.NewGuid().ToString(); dataitemActionLogItem[Constants.MP_PROPERTY_ACTION_LOG_ACTION_TYPE] = dataitemSentEmailActionType; dataitemActionLogItem[Constants.MP_PROPERTY_ACTION_LOG_TITLE] = dataitemSentEmailActionType[DataItemConstants.DisplayName]; dataitemActionLogItem[Constants.MP_PROPERTY_ACTION_LOG_ENTERED_BY] = (String)DataQueryHelper.GetCurrentLoggedInUser()[DataItemConstants.DisplayName]; if (dataitemIncident.HasProperty(Constants.MP_PROPERTY_ACTION_LOG_ACTION_LOGS)) { dataitemIncident[Constants.MP_PROPERTY_ACTION_LOG_ACTION_LOGS] = dataitemActionLogItem; } } if (!boolIsFormAction) { //If this was initiated from the console we need to update the incident straight away EnterpriseManagementObjectProjectionDataType.UpdateDataItem(dataitemIncident); } } }