private Array CreateArray(SheetDataType newDataType, int length) { switch (newDataType) { case SheetDataType.Long: return(new long[length]); case SheetDataType.Int: return(new int[length]); case SheetDataType.Short: return(new short[length]); case SheetDataType.Byte: return(new byte[length]); case SheetDataType.Double: return(new double[length]); case SheetDataType.Float: return(new float[length]); case SheetDataType.String: return(new string[length]); case SheetDataType.Boolean: return(new bool[length]); case SheetDataType.Reference: return(new string[length]); } throw new MissingMemberException(string.Format(Localization.EXCEPTION_CONVERTDATA, newDataType)); }
private static object GetDataValue_Single(this SheetDataType dataType, string value) { switch (dataType) { case SheetDataType.Long: return(long.Parse(value)); case SheetDataType.Int: return(int.Parse(value)); case SheetDataType.Short: return(short.Parse(value)); case SheetDataType.Byte: return(byte.Parse(value)); case SheetDataType.Double: return(double.Parse(value)); case SheetDataType.Float: return(float.Parse(value)); case SheetDataType.String: return(value); case SheetDataType.Boolean: return(bool.Parse(value)); case SheetDataType.Reference: return(value); } throw new MissingMemberException(string.Format(Localization.EXCEPTION_GETDATAVALUE_SINGLE, dataType)); }
private object ConvertFloatToDataType(float oldData, SheetDataType newDataType) { switch (newDataType) { case SheetDataType.Long: return((long)oldData); case SheetDataType.Int: return((int)oldData); case SheetDataType.Short: return((short)oldData); case SheetDataType.Byte: return((byte)oldData); case SheetDataType.Double: return((double)oldData); case SheetDataType.Float: return(oldData); case SheetDataType.String: return(oldData.ToString()); } return(newDataType.GetDefaultValue(false)); }
private static object GetDataValue_Collection(this SheetDataType dataType, string value) { switch (dataType) { case SheetDataType.Long: return(GetDataCollection_Long(value)); case SheetDataType.Int: return(GetDataCollection_Int(value)); case SheetDataType.Short: return(GetDataCollection_Short(value)); case SheetDataType.Byte: return(GetDataCollection_Byte(value)); case SheetDataType.Double: return(GetDataCollection_Double(value)); case SheetDataType.Float: return(GetDataCollection_Float(value)); case SheetDataType.String: return(GetDataCollection_String(value)); case SheetDataType.Boolean: return(GetDataCollection_Bool(value)); case SheetDataType.Reference: return(GetDataCollection_String(value)); } throw new MissingMemberException(string.Format(Localization.EXCEPTION_GETDATAVALUE_COLLECTION, dataType)); }
public SheetColumn(SheetPage sheetPage, string serializationName, string propertyName, SheetDataType dataType, string referenceSheet, bool isCollection, int insertIndex) { if (insertIndex < sheetPage.columns.Count) { sheetPage.columns.Insert(insertIndex, this); } else { sheetPage.columns.Add(this); } this.serializationName = serializationName; this.propertyName = propertyName; this.dataType = dataType; this.isCollection = isCollection; this.referenceSheet = referenceSheet; object defaultData = dataType.GetDefaultValue(isCollection); foreach (SheetRow sheetRow in sheetPage.rows) { SheetCell sheetCell = new SheetCell(defaultData); if (insertIndex < sheetPage.columns.Count) { sheetRow.cells.Insert(insertIndex, sheetCell); } else { sheetRow.cells.Add(sheetCell); } } }
private static object GetDefaultValue_Collection(this SheetDataType dataType) { switch (dataType) { case SheetDataType.Long: return(new long[0]); case SheetDataType.Int: return(new int[0]); case SheetDataType.Short: return(new short[0]); case SheetDataType.Byte: return(new byte[0]); case SheetDataType.Double: return(new double[0]); case SheetDataType.Float: return(new float[0]); case SheetDataType.String: return(new string[0]); case SheetDataType.Boolean: return(new bool[0]); case SheetDataType.Reference: return(new string[0]); } throw new MissingMemberException(string.Format(Localization.EXCEPTION_GETDEFAULTVALUE_COLLECTION, dataType)); }
private static object GetDefaultValue_Single(this SheetDataType dataType) { switch (dataType) { case SheetDataType.Long: return(default(long)); case SheetDataType.Int: return(default(int)); case SheetDataType.Short: return(default(short)); case SheetDataType.Byte: return(default(byte)); case SheetDataType.Double: return(default(double)); case SheetDataType.Float: return(default(float)); case SheetDataType.String: return(string.Empty); case SheetDataType.Boolean: return(default(bool)); case SheetDataType.Reference: return("None"); } throw new MissingMemberException(string.Format(Localization.EXCEPTION_GETDEFAULTVALUE_SINGLE, dataType)); }
private static string GetStringValue_Collection(this SheetDataType dataType, object value) { switch (dataType) { case SheetDataType.Long: return(GetStringCollection_Long((long[])value)); case SheetDataType.Int: return(GetStringCollection_Int((int[])value)); case SheetDataType.Short: return(GetStringCollection_Short((short[])value)); case SheetDataType.Byte: return(GetStringCollection_Byte((byte[])value)); case SheetDataType.Double: return(GetStringCollection_Double((double[])value)); case SheetDataType.Float: return(GetStringCollection_Float((float[])value)); case SheetDataType.String: return(GetStringCollection_String((string[])value)); case SheetDataType.Boolean: return(GetStringCollection_Bool((bool[])value)); case SheetDataType.Reference: return(GetStringCollection_String((string[])value)); } throw new MissingMemberException(string.Format(Localization.EXCEPTION_GETSTRINGVALUE_COLLECTION, dataType)); }
private static string GetStringValue_Single(this SheetDataType dataType, object value) { switch (dataType) { case SheetDataType.Long: return(value.ToString()); case SheetDataType.Int: return(value.ToString()); case SheetDataType.Short: return(value.ToString()); case SheetDataType.Byte: return(value.ToString()); case SheetDataType.Double: return(value.ToString()); case SheetDataType.Float: return(value.ToString()); case SheetDataType.String: return((string)value); case SheetDataType.Boolean: return(value.ToString()); case SheetDataType.Reference: return((string)value); } throw new MissingMemberException(string.Format(Localization.EXCEPTION_GETSTRINGVALUE_SINGLE, dataType)); }
private object ConvertData(object oldData, SheetDataType oldDataType, SheetDataType newDataType, bool sameReferenceSheet) { switch (oldDataType) { case SheetDataType.Long: return(ConvertLongToDataType((long)oldData, newDataType)); case SheetDataType.Int: return(ConvertIntToDataType((int)oldData, newDataType)); case SheetDataType.Short: return(ConvertShortToDataType((short)oldData, newDataType)); case SheetDataType.Byte: return(ConvertByteToDataType((byte)oldData, newDataType)); case SheetDataType.Double: return(ConvertDoubleToDataType((double)oldData, newDataType)); case SheetDataType.Float: return(ConvertFloatToDataType((float)oldData, newDataType)); case SheetDataType.String: return(ConvertStringToDataType((string)oldData, newDataType)); case SheetDataType.Boolean: return(ConvertBoolToDataType((bool)oldData, newDataType)); case SheetDataType.Reference: return(ConvertReferenceToDataType((string)oldData, newDataType, sameReferenceSheet)); } return(newDataType.GetDefaultValue(false)); }
private Array ReplaceColumnValuesNonArrayToArray(object oldData, SheetDataType oldDataType, SheetDataType newDataType, bool sameReferenceSheet) { Array newData = CreateArray(newDataType, 1); object newValue = ConvertData(oldData, oldDataType, newDataType, sameReferenceSheet); newData.SetValue(newValue, 0); return(newData); }
public SheetColumn(SheetColumnJsonable jsonable) { serializationName = jsonable.serializationName; propertyName = jsonable.propertyName; dataType = jsonable.dataType; isCollection = jsonable.isCollection; referenceSheet = jsonable.referenceSheet; }
public SheetColumnJsonable(SheetColumn sheetColumn) { serializationName = sheetColumn.serializationName; propertyName = sheetColumn.propertyName; dataType = sheetColumn.dataType; isCollection = sheetColumn.isCollection; referenceSheet = sheetColumn.referenceSheet; }
private object ReplaceColumnValuesArrayToNonArray(Array oldData, SheetDataType oldDataType, SheetDataType newDataType, bool sameReferenceSheet) { if (oldData.Length == 0) { return(newDataType.GetDefaultValue(false)); } object oldValue = oldData.GetValue(0); return(ConvertData(oldValue, oldDataType, newDataType, sameReferenceSheet)); }
public static string GetStringValue(this SheetDataType dataType, object value, bool isCollection) { if (isCollection) { return(dataType.GetStringValue_Collection(value)); } else { return(dataType.GetStringValue_Single(value)); } }
public static object GetDefaultValue(this SheetDataType dataType, bool isCollection) { if (isCollection) { return(dataType.GetDefaultValue_Collection()); } else { return(dataType.GetDefaultValue_Single()); } }
private Array ReplaceColumnValuesArrayToArray(Array oldData, SheetDataType oldDataType, SheetDataType newDataType, bool sameReferenceSheet) { Array newData = CreateArray(newDataType, oldData.Length); for (int i = 0; i < newData.Length; i++) { object oldValue = oldData.GetValue(i); object newValue = ConvertData(oldValue, oldDataType, newDataType, sameReferenceSheet); newData.SetValue(newValue, i); } return(newData); }
private object ConvertBoolToDataType(bool oldData, SheetDataType newDataType) { switch (newDataType) { case SheetDataType.String: return(oldData.ToString()); case SheetDataType.Boolean: return(oldData); } return(newDataType.GetDefaultValue(false)); }
private void Awake() { titleContent.text = "Add Column"; minSize = new Vector2(WIDTH, 200); dataType = SheetDataType.Int; isCollection = false; referenceSheet = default; propertyManuallyChanged = false; serializationName = string.Empty; propertyName = string.Empty; }
private void DrawSaveButton(bool containsColumnChanges) { if (!GUILayout.Button(Localization.SAVE)) { return; } string oldReferenceSheet = sheetColumn.referenceSheet; bool oldIsCollection = sheetColumn.isCollection; SheetDataType oldDataType = sheetColumn.dataType; sheetColumn.isCollection = isCollection; sheetColumn.serializationName = serializationName; sheetColumn.propertyName = propertyName; sheetColumn.dataType = dataType; sheetColumn.referenceSheet = dataType == SheetDataType.Reference ? referenceSheet : ""; bool sameReferenceSheet = oldReferenceSheet == sheetColumn.referenceSheet; if (containsColumnChanges) { int columnIndex = sheetPage.columns.IndexOf(sheetColumn); foreach (SheetRow sheetRow in sheetPage.rows) { SheetCell sheetCell = sheetRow.cells[columnIndex]; if (oldIsCollection && isCollection) { sheetCell.data = ReplaceColumnValuesArrayToArray(sheetCell.data as Array, oldDataType, dataType, sameReferenceSheet); } else if (oldIsCollection && !isCollection) { sheetCell.data = ReplaceColumnValuesArrayToNonArray(sheetCell.data as Array, oldDataType, dataType, sameReferenceSheet); } else if (!oldIsCollection && isCollection) { sheetCell.data = ReplaceColumnValuesNonArrayToArray(sheetCell.data, oldDataType, dataType, sameReferenceSheet); } else { sheetCell.data = ReplaceColumnValuesNonArrayToNonArray(sheetCell.data, oldDataType, dataType, sameReferenceSheet); } } } onColumnEdited(); Close(); }
private object ConvertReferenceToDataType(string oldData, SheetDataType newDataType, bool sameReferenceSheet) { switch (newDataType) { case SheetDataType.Reference: { if (!sameReferenceSheet) { break; } return(oldData); } } return(newDataType.GetDefaultValue(false)); }
private void DrawDataType() { EditorGUILayout.BeginHorizontal(); GUILayout.Label(Localization.COLUMN_DATA_TYPE, GUILayout.Width(120)); dataType = (SheetDataType)EditorGUILayout.EnumPopup(dataType); EditorGUILayout.EndHorizontal(); if (dataType == SheetDataType.Reference) { EditorGUILayout.BeginHorizontal(); GUILayout.Label(Localization.COLUMN_REFERENCE_SHEET, GUILayout.Width(120)); string[] options = dataSheet.datasheetPages.Select(i => i.sheetName).ToArray(); int currentOption = Array.IndexOf(options, referenceSheet); int selectedOption = EditorGUILayout.Popup(currentOption, options); referenceSheet = options[selectedOption]; EditorGUILayout.EndHorizontal(); } }
public void Initialize(DataSheet dataSheet, SheetPage sheetPage, SheetColumn sheetColumn, Action onColumnEdited) { this.dataSheet = dataSheet; this.sheetPage = sheetPage; this.sheetColumn = sheetColumn; this.onColumnEdited = onColumnEdited; serializationName = sheetColumn.serializationName; propertyName = sheetColumn.propertyName; isCollection = sheetColumn.isCollection; dataType = sheetColumn.dataType; if (dataType != SheetDataType.Reference) { string[] options = dataSheet.datasheetPages.Select(i => i.sheetName).ToArray(); referenceSheet = options[0]; } else { referenceSheet = sheetColumn.referenceSheet; } }
public string DataTrack(MvcPostValue MvcPost, FieldSchema[] fields, SheetDataType sheetDataType, ClientActivity clientActivity) { var dics = new Dictionary <string, object>(); // 数据项存在2个情况,1.数据项名称 2.数据项.子数据项 foreach (FieldSchema field in fields) { // 如果数据项设置不允许保存,那么不会被保存进去 if (sheetDataType == SheetDataType.Workflow && !clientActivity.GetItemEditable(field.Name)) { continue; } if (!MvcPost.BizObject.DataItems.ContainsKey(field.Name)) { continue; } if (field.LogicType == DataLogicType.BizObject || field.LogicType == DataLogicType.BizObjectArray) { continue; } if (field.LogicType == DataLogicType.Comment && int.Equals(MvcPost.WorkItemType, (int)WorkItemType.WorkItemAssist)) { // 协办处理审核意见和审批结果逻辑 //SaveCommentData(MvcPost.BizObject, field.Name, MvcResult, MvcPost); } else if (field.LogicType == DataLogicType.Comment) { // 处理审核意见和审批结果逻辑 //SaveCommentData(MvcPost.BizObject, field.Name, MvcResult, null); } else if (field.LogicType == DataLogicType.Attachment) { // 处理附件逻辑 } else if (field.LogicType == DataLogicType.MultiParticipant) { // 处理多人参与者逻辑 } else { // 处理普通数据项 //this.ActionContext.InstanceData[field.Name].Value = MvcPost.BizObject.DataItems[field.Name].V; dics.Add(field.Name, MvcPost.BizObject.DataItems[field.Name].V); } } // 最后保存子表,因为关联关系的子表主键有可能在主表中,所以先保存主表 foreach (FieldSchema field in fields) { // 如果数据项设置不允许保存,那么不会被保存进去 if (sheetDataType == SheetDataType.Workflow && !clientActivity.GetItemEditable(field.Name)) { continue; } if (!MvcPost.BizObject.DataItems.ContainsKey(field.Name)) { continue; } if (field.LogicType != DataLogicType.BizObject && field.LogicType != DataLogicType.BizObjectArray) { continue; } if (field.LogicType == DataLogicType.BizObject) { // 业务对象可以使用普通控件显示,例如:业务对象A.Code,可以使用文本框绑定数据项显示 A.Code } else if (field.LogicType == DataLogicType.BizObjectArray) { if (field.Name == "APPLICANT_TYPE") { continue; } // 记录字表变动数据 List <Dictionary <string, object> > result = Newtonsoft.Json.JsonConvert.DeserializeObject <List <Dictionary <string, object> > >(MvcPost.BizObject.DataItems[field.Name].V.ToString()); if (result != null && result.Any()) { var dicItems = new List <Dictionary <string, object> >(); foreach (var item in result) { var dicItem = new Dictionary <string, object>(); foreach (var dicKey in item.Keys) { if (dicKey.ToLower() == "objectid") { continue; } var itemField = field.Schema.Fields.Where(p => p.Name == dicKey).FirstOrDefault(); if (itemField != null) { dicItem.Add(dicKey, item[dicKey]); } } dicItems.Add(dicItem); } dics.Add(field.Name, dicItems); } } } var dataTrack = JsonConvert.SerializeObject(dics, Formatting.Indented); return(dataTrack); }
/// <summary> /// 验证权限 /// </summary> /// <param name="UserValidator"></param> /// <param name="SheetDataType"></param> /// <param name="IsOriginateMode"></param> /// <param name="SchemaCode"></param> /// <param name="BizObject"></param> /// <param name="SheetMode"></param> /// <param name="WorkflowCode"></param> /// <param name="WorkItem"></param> /// <param name="InstanceContext"></param> /// <returns></returns> public static bool ValidateAuthorization( UserValidator UserValidator, SheetDataType SheetDataType, bool IsOriginateMode, string SchemaCode, DataModel.BizObject BizObject, SheetMode SheetMode, string WorkflowCode, WorkItem.WorkItem WorkItem, WorkItem.CirculateItem CirculateItem, Instance.InstanceContext InstanceContext) { if (UserValidator.ValidateAdministrator()) { return(true); } // 业务对象表单 else if (SheetDataType == SheetDataType.BizObject) { if (IsOriginateMode) { return(UserValidator.ValidateBizObjectAdd(SchemaCode, null, UserValidator.UserID)); } else { if (UserValidator.ValidateOrgAdmin(BizObject.OwnerId)) { return(true); } return(UserValidator.ValidateBizObjectAdmin(SchemaCode, null, BizObject.OwnerId)); } } else { switch (SheetMode) { case SheetMode.Originate: return(UserValidator.ValidateCreateInstance(WorkflowCode)); case SheetMode.View: case SheetMode.Print: if (WorkItem != null && ValidateWorkItemAuth(WorkItem, UserValidator, UserValidator.Engine.AgencyManager)) { return(true); } else if (CirculateItem != null && ValidateCirculateItemAuth(CirculateItem, UserValidator)) { return(true); } else if (UserValidator.ValidateWFInsView(WorkflowCode, InstanceContext.Originator)) { // 是否允许查看这个流程模板的所有实例 return(true); } else { // 判定用户是否参与过流程实例 string[] workItems = UserValidator.Engine.Query.QueryWorkItems( new string[] { InstanceContext.InstanceId }, new string[] { UserValidator.UserID }, DateTime.Now.AddYears(-100), DateTime.Now.AddDays(1), H3.WorkItem.WorkItemState.Unspecified, OThinker.H3.WorkItem.WorkItem.NullWorkItemID); if (workItems != null && workItems.Length > 0) { return(true); } return(false); } case SheetMode.Work: if (WorkItem != null) { return(ValidateWorkItemAuth(WorkItem, UserValidator, UserValidator.Engine.AgencyManager)); } else { return(ValidateCirculateItemAuth(CirculateItem, UserValidator)); } default: throw new NotImplementedException(); } } }
private object ReplaceColumnValuesNonArrayToNonArray(object oldData, SheetDataType oldDataType, SheetDataType newDataType, bool sameReferenceSheet) { return(ConvertData(oldData, oldDataType, newDataType, sameReferenceSheet)); }
/// <summary> /// 从服务器读取数据 /// </summary> private void GetDataFromServer() { if (!_GetDataFromServer) { _GetDataFromServer = true; string strWorkItemId = OThinker.Data.Convertor.SqlInjectionPrev(this.Request.QueryString[Param_WorkItemID]); string strInstanceId = OThinker.Data.Convertor.SqlInjectionPrev(this.Request.QueryString[Param_InstanceId]); string strWorkflowCode = OThinker.Data.Convertor.SqlInjectionPrev(this.Request.QueryString[Param_WorkflowCode]); string strSchemaCode = OThinker.Data.Convertor.SqlInjectionPrev(this.Request.QueryString[Param_SchemaCode]); int workflowVersion = WorkflowTemplate.PublishedWorkflowTemplate.NullWorkflowVersion; int.TryParse(this.Request.QueryString[Param_WorkflowVersion], out workflowVersion); string strSheetCode = OThinker.Data.Convertor.SqlInjectionPrev(this.Request.QueryString[OThinker.H3.Controllers.SheetEnviroment.Param_SheetCode] + string.Empty); if (!string.IsNullOrEmpty(strWorkItemId) || !string.IsNullOrEmpty(strInstanceId) || (this.IsOriginateMode && !string.IsNullOrEmpty(strWorkflowCode))) { // 流程模式 this._SheetDataType = SheetDataType.Workflow; } else if (!string.IsNullOrEmpty(strSchemaCode)) { // 开发平台模式 this._SheetDataType = SheetDataType.BizObject; } if (this.SheetDataType == SheetDataType.Workflow) { this.Engine.Interactor.GetDataForWorkflow( (InteractiveType)this.SheetMode, strWorkflowCode, workflowVersion, strInstanceId, strWorkItemId, strSheetCode, this.User.UserID, SheetUtility.GetClientIP(this.Request), SheetUtility.GetClientPlatform(this.Request), SheetUtility.GetClientBrowser(this.Request), out this._Authorized, out this._InstanceContext, out this._WorkItem, out this._CirculateItem, out this._Workflow, out this._Schema, out this._ActivityCode, out this._Sheet, out this._PostUnits, out this._SheetDisplayName, out this._LockValidation, out this._Message); } else { this.Engine.Interactor.GetDataForBizObject( strSchemaCode, strSheetCode, out this._Schema, out this._Sheet); } } }
private object ConvertStringToDataType(string oldData, SheetDataType newDataType) { switch (newDataType) { case SheetDataType.Long: { long result; if (long.TryParse(oldData, out result)) { return(result); } break; } case SheetDataType.Int: { int result; if (int.TryParse(oldData, out result)) { return(result); } break; } case SheetDataType.Short: { short result; if (short.TryParse(oldData, out result)) { return(result); } break; } case SheetDataType.Byte: { byte result; if (byte.TryParse(oldData, out result)) { return(result); } break; } case SheetDataType.Double: { double result; if (double.TryParse(oldData, out result)) { return(result); } break; } case SheetDataType.Float: { float result; if (float.TryParse(oldData, out result)) { return(result); } break; } case SheetDataType.Boolean: { bool result; if (bool.TryParse(oldData, out result)) { return(result); } break; } case SheetDataType.String: { return(oldData); } } return(newDataType.GetDefaultValue(false)); }