private OperationReturn LoadScoreItem(SessionInfo session, ScoreItem parent, string scoreID) { OperationReturn optReturn = new OperationReturn(); optReturn.Result = true; optReturn.Code = 0; try { string rentToken = session.RentInfo.Token; ScoreSheet scoreSheet = parent.ScoreSheet; if (scoreSheet == null) { optReturn.Result = false; optReturn.Code = Defines.RET_OBJECT_NULL; optReturn.Message = string.Format("ScoreSheet is null"); return(optReturn); } string temp1 = string.Empty; string temp2 = string.Empty; if (!string.IsNullOrWhiteSpace(scoreID)) { temp1 = string.Format(",T3109.C005 AS NA"); temp2 = string.Format(" LEFT JOIN T_31_009_{0} T3109 ON T3102.C002=T3109.C002", rentToken); } string strSql; DataSet objDataSet; switch (session.DBType) { case 2: strSql = string.Format( "SELECT T3102.*{4} FROM T_31_002_{0} T3102{5} WHERE T3102.C003 = {1} AND T3102.C004 = {2}{3} ", rentToken, scoreSheet.ID, parent.ID, scoreID, temp1, temp2); optReturn = MssqlOperation.GetDataSet(session.DBConnectionString, strSql); if (!optReturn.Result) { return(optReturn); } objDataSet = optReturn.Data as DataSet; break; case 3: strSql = string.Format( "SELECT T3102.*{4} FROM T_31_002_{0} T3102{5} WHERE T3102.C003 = {1} AND T3102.C004 = {2}{3} ", rentToken, scoreSheet.ID, parent.ID, scoreID, temp1, temp2); optReturn = OracleOperation.GetDataSet(session.DBConnectionString, strSql); if (!optReturn.Result) { return(optReturn); } objDataSet = optReturn.Data as DataSet; break; default: optReturn.Result = false; optReturn.Code = Defines.RET_PARAM_INVALID; optReturn.Message = string.Format("DBType invalid"); return(optReturn); } if (objDataSet == null || objDataSet.Tables.Count <= 0) { optReturn.Result = false; optReturn.Code = Defines.RET_OBJECT_NULL; optReturn.Message = string.Format("DataSet is null or DataTables empty"); return(optReturn); } List <ScoreItem> listItems = new List <ScoreItem>(); for (int i = 0; i < objDataSet.Tables[0].Rows.Count; i++) { DataRow dr = objDataSet.Tables[0].Rows[i]; ScoreItem scoreItem; bool isStandard = dr["C009"].ToString() == "Y"; if (isStandard) { Standard standard = null; StandardType standardType = (StandardType)Convert.ToInt32(dr["C015"]); switch (standardType) { case StandardType.Numeric: NumericStandard numericStandard = new NumericStandard(); numericStandard.Type = ScoreObjectType.NumericStandard; numericStandard.MaxValue = Convert.ToDouble(dr["C027"]); numericStandard.MinValue = Convert.ToDouble(dr["C028"]); numericStandard.DefaultValue = string.IsNullOrWhiteSpace(dr["C029"].ToString()) ? 0 : Convert.ToDouble(dr["C029"]); numericStandard.ScoreClassic = StandardClassic.TextBox; standard = numericStandard; break; case StandardType.YesNo: YesNoStandard yesNoStandard = new YesNoStandard(); yesNoStandard.Type = ScoreObjectType.YesNoStandard; if (string.IsNullOrWhiteSpace(dr["C029"].ToString())) { yesNoStandard.DefaultValue = false; } else { if (Convert.ToDouble(dr["C029"]) == 1.0) { yesNoStandard.DefaultValue = true; } else { yesNoStandard.DefaultValue = false; } } yesNoStandard.ReverseDisplay = dr["C104"].ToString() == "1"; yesNoStandard.ScoreClassic = StandardClassic.YesNo; standard = yesNoStandard; break; case StandardType.Slider: SliderStandard sliderStandard = new SliderStandard(); sliderStandard.Type = ScoreObjectType.SliderStandard; sliderStandard.MinValue = Convert.ToDouble(dr["C023"]); sliderStandard.MaxValue = Convert.ToDouble(dr["C024"]); sliderStandard.Interval = Convert.ToDouble(dr["C026"]); sliderStandard.DefaultValue = string.IsNullOrWhiteSpace(dr["C029"].ToString()) ? 0 : Convert.ToDouble(dr["C029"]); sliderStandard.ScoreClassic = StandardClassic.Slider; standard = sliderStandard; break; case StandardType.Item: ItemStandard itemStandard = new ItemStandard(); itemStandard.Type = ScoreObjectType.ItemStandard; itemStandard.ScoreClassic = StandardClassic.DropDownList; itemStandard.DefaultIndex = string.IsNullOrWhiteSpace(dr["C029"].ToString())?0: Convert.ToInt32(dr["C029"]); standard = itemStandard; break; } if (standard == null) { optReturn.Result = false; optReturn.Code = Defines.RET_OBJECT_NULL; optReturn.Message = string.Format("Standard is null"); return(optReturn); } standard.PointSystem = Convert.ToDouble(dr["C018"]); standard.StandardType = standardType; standard.IsAutoStandard = dr["C101"].ToString() == "Y"; if (!string.IsNullOrWhiteSpace(scoreID)) { if (string.IsNullOrWhiteSpace(dr["NA"].ToString())) { standard.IsNA = false; } else { standard.IsNA = dr["NA"].ToString() == "Y" ? true : false; } } string strStaID = dr["C102"].ToString(); long staID; if (long.TryParse(strStaID, out staID)) { standard.StatisticalID = staID; } scoreItem = standard; } else { ScoreGroup scoreGroup = new ScoreGroup(); scoreGroup.Type = ScoreObjectType.ScoreGroup; scoreGroup.IsAvg = dr["C016"].ToString() == "Y"; scoreItem = scoreGroup; } scoreItem.ScoreSheet = parent.ScoreSheet; scoreItem.Parent = parent; scoreItem.ItemID = Convert.ToInt32(dr["C001"]); scoreItem.ID = Convert.ToInt64(dr["C002"]); scoreItem.OrderID = Convert.ToInt32(dr["C005"]); scoreItem.Title = dr["C006"].ToString(); scoreItem.Description = dr["C007"].ToString(); scoreItem.TotalScore = Convert.ToDouble(dr["C008"]); scoreItem.IsAbortScore = dr["C010"].ToString() == "Y"; scoreItem.ControlFlag = dr["C011"].ToString() == "Y" ? 1 : 0; scoreItem.IsKeyItem = dr["C012"].ToString() == "Y"; scoreItem.IsAllowNA = dr["C013"].ToString() == "Y"; scoreItem.IsJumpItem = dr["C014"].ToString() == "Y"; scoreItem.IsAddtionItem = dr["C017"].ToString() == "Y"; scoreItem.UsePointSystem = dr["C019"].ToString() == "Y"; scoreItem.ScoreType = dr["C020"].ToString() == "F" ? ScoreType.YesNo : dr["C020"].ToString() == "P" ? ScoreType.Pecentage : ScoreType.Numeric; scoreItem.Tip = dr["C022"].ToString(); scoreItem.AllowModifyScore = dr["C103"].ToString() == "Y"; #region 子项 //如果是 ScoreGroup 加载子项 if (!isStandard) { ScoreGroup scoreGroup = scoreItem as ScoreGroup; optReturn = LoadScoreItem(session, scoreGroup, scoreID); if (!optReturn.Result) { return(optReturn); } List <ScoreItem> subItems = optReturn.Data as List <ScoreItem>; if (subItems == null) { optReturn.Result = false; optReturn.Code = Defines.RET_OBJECT_NULL; optReturn.Message = string.Format("ListItems is null"); return(optReturn); } for (int j = 0; j < subItems.Count; j++) { ScoreItem subItem = subItems[j]; scoreGroup.Items.Add(subItem); } scoreGroup.Items = scoreGroup.Items.OrderBy(j => j.OrderID).ToList(); } //如果是多值型评分标准,加载评分标准子项 ItemStandard temp = scoreItem as ItemStandard; if (temp != null) { optReturn = LoadStandardItem(session, temp); if (!optReturn.Result) { return(optReturn); } List <StandardItem> valueItems = optReturn.Data as List <StandardItem>; if (valueItems == null) { optReturn.Result = false; optReturn.Code = Defines.RET_OBJECT_NULL; optReturn.Message = string.Format("ValueItems is null"); return(optReturn); } for (int j = 0; j < valueItems.Count; j++) { StandardItem valueItem = valueItems[j]; temp.ValueItems.Add(valueItem); } temp.ValueItems = temp.ValueItems.OrderBy(j => j.OrderID).ToList(); } #endregion #region 备注 OperationReturn commentReturn; commentReturn = LoadComment(session, scoreItem); if (!commentReturn.Result) { return(commentReturn); } List <Comment> listComments = commentReturn.Data as List <Comment>; if (listComments == null) { optReturn.Result = false; optReturn.Code = Defines.RET_OBJECT_NULL; optReturn.Message = string.Format("listComments is null"); return(optReturn); } for (int j = 0; j < listComments.Count; j++) { Comment comment = listComments[j]; scoreItem.Comments.Add(comment); } scoreItem.Comments = scoreItem.Comments.OrderBy(j => j.OrderID).ToList(); #endregion #region 样式 OperationReturn styleReturn; styleReturn = LoadVisualStyle(session, scoreItem, "T"); if (!styleReturn.Result) { if (styleReturn.Code != Defines.RET_NOT_EXIST) { return(styleReturn); } scoreItem.TitleStyle = null; } else { VisualStyle style = styleReturn.Data as VisualStyle; if (style != null) { style.ScoreSheet = scoreSheet; scoreItem.TitleStyle = style; } } styleReturn = LoadVisualStyle(session, scoreItem, "P"); if (!styleReturn.Result) { if (styleReturn.Code != Defines.RET_NOT_EXIST) { return(styleReturn); } scoreItem.PanelStyle = null; } else { VisualStyle style = styleReturn.Data as VisualStyle; if (style != null) { style.ScoreSheet = scoreSheet; scoreItem.PanelStyle = style; } } #endregion listItems.Add(scoreItem); } optReturn.Data = listItems; } catch (Exception ex) { optReturn.Result = false; optReturn.Code = Defines.RET_FAIL; optReturn.Message = ex.Message; } return(optReturn); }