/// <summary> /// 輸出一列資料 /// </summary> /// <param name="StudentObj"></param> public void OutRowData(ValueObj.StudentVO StudentObj) { int columnIndex = 0; _RowIndex++; if (_RowIndex > _MAX_ROW_COUNT) { _IsOverRow = true; return; } // 學生姓名 SetColumnValue(_OutCells, columnIndex++, StudentObj.StudentName, _Style_Normal); // 身分證統一編號 SetColumnValue(_OutCells, columnIndex++, StudentObj.StudentIdNumber, _Style_Normal); // 生日 if (StudentObj.StudentBirthday.HasValue) { // 出生年 string tmp = ((StudentObj.StudentBirthday.Value.Year) - 1911).ToString().PadLeft(3, '0'); SetColumnValue(_OutCells, columnIndex++, tmp, _Style_Normal); // 出生月 tmp = StudentObj.StudentBirthday.Value.Month.ToString().PadLeft(2, '0'); SetColumnValue(_OutCells, columnIndex++, tmp, _Style_Normal); // 出生日 tmp = StudentObj.StudentBirthday.Value.Day.ToString().PadLeft(2, '0'); SetColumnValue(_OutCells, columnIndex++, tmp, _Style_Normal); } else { // 出生年 SetColumnValue(_OutCells, columnIndex++, "000", _Style_Normal); // 出生月 SetColumnValue(_OutCells, columnIndex++, "00", _Style_Normal); // 出生日 SetColumnValue(_OutCells, columnIndex++, "00", _Style_Normal); } // 就近入學 SetColumnValue(_OutCells, columnIndex++, "00", _Style_Normal); // 扶助弱勢 均衡學習 德行表現 無記過紀錄 獎勵紀錄 for (int intI = 0; intI < StudentObj.ItemList.Count; intI++) { decimal point = StudentObj.ItemList.Values.ToArray()[intI]; // 針對某些欄位格式化 switch (intI) { case Global.index_BalanceLearning: SetColumnValue(_OutCells, columnIndex++, point.ToString().PadLeft(2, '0'), _Style_Normal); break; case Global.index_Merit: SetColumnValue(_OutCells, columnIndex++, String.Format("{0:0.0}", point), _Style_Normal); break; default: SetColumnValue(_OutCells, columnIndex++, point.ToString(), _Style_Normal); break; } } }
/// <summary> /// Change a single value in the list /// </summary> /// <param name="id">The id of the value to be changed</param> /// <param name="value">The new value</param> public void Put(int id, [FromBody] ValueObj value) { if (value == null) { value = new ValueObj("PutValue"); } lista[id] = value; }
/// <summary> /// Insert a single value in the list /// </summary> /// <param name="value">New value to be inserted</param> public void Post([FromBody] ValueObj value) { if (value == null) { value = new ValueObj("AddValue"); } lista.Add(value); }
public int CheckValueExist(ValueObj _valueobj) { for (int i = 0; i < (int)m_List.Count; i++) { if ((_valueobj.ValueType == m_List[i].ValueType) && (_valueobj.Val.UDINT == m_List[i].Val.UDINT)) { return(i); } } return(-1); }
public int Add(ValueObj _valueobj) { int ret; if ((ret = CheckValueExist(_valueobj)) == -1) { ValueObj valueobj = new ValueObj(); valueobj.Val.UDINT = _valueobj.Val.UDINT; valueobj.ValueType = _valueobj.ValueType; this.m_List.Add(valueobj); return(m_List.Count - 1); } return(ret); }
//////////////////////////////////////////////////////////////////////////////////////////////////// /// <summary> Recommended constructor used to initialize data. </summary> /// /// <remarks> Aedmonds, 8/25/2017. </remarks> /// /// <param name="colorInfo"> Integer array of color values [r,g,b,a]. </param> //////////////////////////////////////////////////////////////////////////////////////////////////// public Color(int[] colorInfo) { //ColorData = colorInfo.ToList<int>(); ColorData = colorInfo.ToList <int>(); LAB = colorInfo.ToList <int>(); InternalLAB = string.Join(",", LAB); InternalColorString = string.Join(",", ColorData); ColorStyle = _displayColorStyle(ColorData); ColorString = _displayColorData(ColorData); TimeStamp = (Int32)(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalSeconds; WorkspaceId = WorkspaceId; R = new ValueObj { Value = ColorData[0], Percent = (int)Math.Round((double)(ColorData[0] / 256 * 100)) //Value = RGB[0], //Percent = (int)Math.Round((double)(RGB[0] / 256 * 100)) }; G = new ValueObj { Value = ColorData[1], //Value = RGB[1], Percent = (int)Math.Round((double)(ColorData[1] / 256 * 100)) }; B = new ValueObj { Value = ColorData[2], //Value = RGB[2], Percent = (int)Math.Round((double)(ColorData[2] / 256 * 100)) }; //L.A.B L = new ValueObj { Value = LAB[0], Percent = (int)Math.Round((float)(LAB[0] / 256 * 100)) }; A = new ValueObj { Value = LAB[1], Percent = (int)Math.Round((float)(LAB[1] / 256 * 100)) }; Blab = new ValueObj { Value = LAB[2], Percent = (int)Math.Round((float)(LAB[2] / 256 * 100)) }; }
/// <summary> /// Change a single value in the list /// </summary> /// <param name='id'> /// The id of the value to be changed /// </param> /// <param name='value'> /// The new value /// </param> /// <param name='customHeaders'> /// Headers that will be added to request. /// </param> /// <param name='cancellationToken'> /// The cancellation token. /// </param> /// <return> /// A response object containing the response body and response headers. /// </return> public async Task <HttpOperationResponse> PutByidvalueWithHttpMessagesAsync(int id, ValueObj value, Dictionary <string, List <string> > customHeaders = null, CancellationToken cancellationToken = default(CancellationToken)) { if (value == null) { throw new ValidationException(ValidationRules.CannotBeNull, "value"); } // Tracing bool _shouldTrace = ServiceClientTracing.IsEnabled; string _invocationId = null; if (_shouldTrace) { _invocationId = ServiceClientTracing.NextInvocationId.ToString(); Dictionary <string, object> tracingParameters = new Dictionary <string, object>(); tracingParameters.Add("id", id); tracingParameters.Add("value", value); tracingParameters.Add("cancellationToken", cancellationToken); ServiceClientTracing.Enter(_invocationId, this, "PutByidvalue", tracingParameters); } // Construct URL var _baseUrl = this.Client.BaseUri.AbsoluteUri; var _url = new Uri(new Uri(_baseUrl + (_baseUrl.EndsWith("/") ? "" : "/")), "api/Values/{id}").ToString(); _url = _url.Replace("{id}", Uri.EscapeDataString(SafeJsonConvert.SerializeObject(id, this.Client.SerializationSettings).Trim('"'))); // Create HTTP transport objects HttpRequestMessage _httpRequest = new HttpRequestMessage(); HttpResponseMessage _httpResponse = null; _httpRequest.Method = new HttpMethod("PUT"); _httpRequest.RequestUri = new Uri(_url); // Set Headers if (customHeaders != null) { foreach (var _header in customHeaders) { if (_httpRequest.Headers.Contains(_header.Key)) { _httpRequest.Headers.Remove(_header.Key); } _httpRequest.Headers.TryAddWithoutValidation(_header.Key, _header.Value); } } // Serialize Request string _requestContent = null; if (value != null) { _requestContent = SafeJsonConvert.SerializeObject(value, this.Client.SerializationSettings); _httpRequest.Content = new StringContent(_requestContent, Encoding.UTF8); _httpRequest.Content.Headers.ContentType = MediaTypeHeaderValue.Parse("application/json; charset=utf-8"); } // Set Credentials if (this.Client.Credentials != null) { cancellationToken.ThrowIfCancellationRequested(); await this.Client.Credentials.ProcessHttpRequestAsync(_httpRequest, cancellationToken).ConfigureAwait(false); } // Send Request if (_shouldTrace) { ServiceClientTracing.SendRequest(_invocationId, _httpRequest); } cancellationToken.ThrowIfCancellationRequested(); _httpResponse = await this.Client.HttpClient.SendAsync(_httpRequest, cancellationToken).ConfigureAwait(false); if (_shouldTrace) { ServiceClientTracing.ReceiveResponse(_invocationId, _httpResponse); } HttpStatusCode _statusCode = _httpResponse.StatusCode; cancellationToken.ThrowIfCancellationRequested(); string _responseContent = null; if ((int)_statusCode != 204) { var ex = new HttpOperationException(string.Format("Operation returned an invalid status code '{0}'", _statusCode)); _responseContent = await _httpResponse.Content.ReadAsStringAsync().ConfigureAwait(false); ex.Request = new HttpRequestMessageWrapper(_httpRequest, _requestContent); ex.Response = new HttpResponseMessageWrapper(_httpResponse, _responseContent); if (_shouldTrace) { ServiceClientTracing.Error(_invocationId, ex); } _httpRequest.Dispose(); if (_httpResponse != null) { _httpResponse.Dispose(); } throw ex; } // Create Result var _result = new HttpOperationResponse(); _result.Request = _httpRequest; _result.Response = _httpResponse; if (_shouldTrace) { ServiceClientTracing.Exit(_invocationId, _result); } return(_result); }
/// <summary> /// 處理扶助弱勢 /// </summary> /// <param name="studentObj"></param> /// <param name="tagIdList"></param> private decimal Cal_VulnerableGroups(ValueObj.StudentVO studentObj, Dictionary<string, List<string>> tagIdList) { int ItemIndex = Global.index_VulnerableGroups; // 取得大項目的條件 ValueObj.ItemConditionVO itemCondition = new ValueObj.ItemConditionVO(ItemIndex); // 取得子項目的條件 ValueObj.DetailItemConditionVO detailCondition = new ValueObj.DetailItemConditionVO(ItemIndex); // 大項目名稱 string itemName = itemCondition.ItemName; // 項目的積分 decimal ItemTotalPoints = 0; // loop 每個子項目 for (int intI = 0; intI < Global.DetailItemNameList[ItemIndex].Length; intI++) { // 子項目名稱 string detailItemName = Global.DetailItemNameList[ItemIndex][intI]; // 子項目積分 decimal points = detailCondition.DetailItemListDic[detailItemName]; // 看學生的類別有沒有在TagIdList bool isFound = Utility.IsContansTagId(studentObj.StudentTagId, tagIdList[detailItemName]); if (isFound == false) { points = 0; } // 取得detail item in student ValueObj.DetailItemVO detailItem = studentObj.DetailItemList[itemName][detailItemName]; // 回存此項目顯示的內容 detailItem.Value = "TagID: " + string.Join(",", tagIdList[detailItemName].ToArray()); // 回存此項目的積分 detailItem.Points = points; // 加總 ItemTotalPoints += points; } // 假如超過上限, 就以上限為主 ItemTotalPoints = (ItemTotalPoints > itemCondition.MaxItemPoints) ? itemCondition.MaxItemPoints : ItemTotalPoints; // 此學生在這個項目的積分 studentObj.ItemList[itemName] = ItemTotalPoints; return ItemTotalPoints; }
/// <summary> /// 排序:年級/班級序號/班級名稱/座號/學號/姓名 /// </summary> /// <param name="obj1"></param> /// <param name="obj2"></param> private int SortStudent(ValueObj.StudentVO obj1, ValueObj.StudentVO obj2) { string seatno1 = obj1.ClassGradeYear.PadLeft(1, '0'); // 年級 seatno1 += obj1.ClassDisplayOrder.PadLeft(3, '0'); // 班級序號 seatno1 += obj1.ClassName.PadLeft(20, '0'); // 班級名稱 seatno1 += obj1.StudentSeatNo.PadLeft(3, '0'); // 座號 seatno1 += obj1.StudentNumber.PadLeft(20, '0'); // 學號 seatno1 += obj1.StudentName.PadLeft(10, '0'); // 姓名 string seatno2 = obj2.ClassGradeYear.PadLeft(1, '0'); // 年級 seatno2 += obj2.ClassDisplayOrder.PadLeft(3, '0'); // 班級序號 seatno2 += obj2.ClassName.PadLeft(20, '0'); // 班級名稱 seatno2 += obj2.StudentSeatNo.PadLeft(3, '0'); // 座號 seatno2 += obj2.StudentNumber.PadLeft(20, '0'); // 學號 seatno2 += obj2.StudentName.PadLeft(10, '0'); // 姓名 return seatno1.CompareTo(seatno2); }
private bool CheckAssingmentIsValidValue(string str, string typestr) { ValueObj _valueobj = new ValueObj(); if ((typestr.ToUpper() == "BOOL") && Common.IsValueBOOL(str, ref _valueobj)) { return(true); } if ((typestr.ToUpper() == "BYTE") && Common.IsValueBYTE(str, ref _valueobj)) { return(true); } if ((typestr.ToUpper() == "WORD") && Common.IsValueWORD(str, ref _valueobj)) { return(true); } if ((typestr.ToUpper() == "DWORD") && Common.IsValueDWORD(str, ref _valueobj)) { return(true); } if ((typestr.ToUpper() == "LWORD") && Common.IsValueLWORD(str, ref _valueobj)) { return(true); } if ((typestr.ToUpper() == "SINT") && Common.IsValueSINT(str, ref _valueobj)) { return(true); } if ((typestr.ToUpper() == "INT") && Common.IsValueINT(str, ref _valueobj)) { return(true); } if ((typestr.ToUpper() == "DINT") && Common.IsValueDINT(str, ref _valueobj)) { return(true); } if ((typestr.ToUpper() == "LINT") && Common.IsValueLINT(str, ref _valueobj)) { return(true); } if ((typestr.ToUpper() == "USINT") && Common.IsValueUSINT(str, ref _valueobj)) { return(true); } if ((typestr.ToUpper() == "UINT") && Common.IsValueUINT(str, ref _valueobj)) { return(true); } if ((typestr.ToUpper() == "UDINT") && Common.IsValueUDINT(str, ref _valueobj)) { return(true); } if ((typestr.ToUpper() == "ULINT") && Common.IsValueULINT(str, ref _valueobj)) { return(true); } if ((typestr.ToUpper() == "REAL") && Common.IsValueREAL(str, ref _valueobj)) { return(true); } if ((typestr.ToUpper() == "LREAL") && Common.IsValueLREAL(str, ref _valueobj)) { return(true); } if ((typestr.ToUpper() == "COLOR") && Common.IsValueColor(str, ref _valueobj)) { return(true); } if ((typestr.ToUpper() == "TIME") && Common.IsValueTIME(str, ref _valueobj)) { return(true); } if ((typestr.ToUpper() == "DATE") && Common.IsValueDATE(str, ref _valueobj)) { return(true); } if ((typestr.ToUpper() == "TOD") && Common.IsValueTOD(str, ref _valueobj)) { return(true); } if ((typestr.ToUpper() == "DT") && Common.IsValueDT(str, ref _valueobj)) { return(true); } return(false); }
/// <summary> /// 處理無記過紀錄 /// </summary> /// <param name="studentObj"></param> /// <param name="gradeMap"></param> /// <param name="demeritObj"></param> private decimal Cal_Demerit(ValueObj.StudentVO studentObj, Dictionary<int, ValueObj.SchoolYearSemester> gradeMap, ValueObj.DemeritsVO demeritObj) { int ItemIndex = Global.index_Demerit; // 取得大項目的條件 ValueObj.ItemConditionVO itemCondition = new ValueObj.ItemConditionVO(ItemIndex); // 取得子項目的條件 ValueObj.DetailItemConditionVO detailCondition = new ValueObj.DetailItemConditionVO(ItemIndex); // 取得需要看的學年度學期 List<ValueObj.SchoolYearSemester> needSchoolYearList = Utility.GetNeedSchoolSemester(itemCondition.NeedSemester, gradeMap); // 大項目名稱 string itemName = itemCondition.ItemName; decimal ItemTotalPoints = 0; #region 處理無記過紀錄 // 無記過紀錄名稱 string detailItemName = Global.DetailItemNameList[ItemIndex][0]; // 無記過紀錄積分 decimal noDemeritPoints = detailCondition.DetailItemListDic[detailItemName]; if (demeritObj != null) { foreach (ValueObj.SchoolYearSemester schoolYear in needSchoolYearList) { if (schoolYear == null) continue; int demeritCnt = demeritObj.GetDemeritsBySchoolYear(schoolYear).Count; // 其中有一個學期被記過或警告, 就為0分 if (demeritCnt > 0) { noDemeritPoints = 0; break; } } } // 取得detail item in student ValueObj.DetailItemVO detailItem = studentObj.DetailItemList[itemName][detailItemName]; // 回存此項目顯示的內容 detailItem.Value = "--"; // 回存此項目的積分 detailItem.Points = noDemeritPoints; #endregion if (noDemeritPoints > 0 ) { // 回存此項目顯示的內容 detailItem.Value = "無記過紀錄!"; studentObj.ItemList[itemName] = noDemeritPoints; // 不處理無小過以上記錄 return noDemeritPoints; } #region 處理無小過以上記錄 int MaxDemeritCount = 3; // 無小過以上記錄名稱 detailItemName = Global.DetailItemNameList[ItemIndex][1]; // 無小過以上記錄積分 decimal demeritPoints = detailCondition.DetailItemListDic[detailItemName]; // loop 每個學期, 取得所有的大過, 小過, 警告 decimal[] Demerit = new decimal[3]; foreach (ValueObj.SchoolYearSemester schoolYear in needSchoolYearList) { if (schoolYear == null) continue; List<Data.DemeritRecord> demeritList = demeritObj.GetDemeritsBySchoolYear(schoolYear); foreach(Data.DemeritRecord rec in demeritList) { if(rec.DemeritA.HasValue) Demerit[0] = rec.DemeritA.Value; if(rec.DemeritB.HasValue) Demerit[1] = rec.DemeritB.Value; if(rec.DemeritC.HasValue) Demerit[2] += rec.DemeritC.Value; } } if (Demerit[0] > 0 || Demerit[1] >0 ) { // 此學生在這個項目的積分 ItemTotalPoints = 0; } else { // 看警告有沒有超過三次 if (Demerit[2] >= MaxDemeritCount) ItemTotalPoints = 0; else ItemTotalPoints = demeritPoints; } // 取得detail item in student detailItem = studentObj.DetailItemList[itemName][detailItemName]; // 回存此項目顯示的內容 detailItem.Value = "大過:" + Demerit[0] + ", 小過:" + Demerit[1] + ", 警告:" + Demerit[2]; // 回存此項目的積分 detailItem.Points = ItemTotalPoints; #endregion // 此學生在這個項目的積分 studentObj.ItemList[itemName] = ItemTotalPoints; return ItemTotalPoints; }
/// <summary> /// 處理獎勵紀錄 /// </summary> /// <param name="studentObj"></param> /// <param name="gradeMap"></param> /// <param name="meritsObj"></param> private decimal Cal_Merit(ValueObj.StudentVO studentObj, Dictionary<int, ValueObj.SchoolYearSemester> gradeMap, ValueObj.MeritsVO meritsObj) { int ItemIndex = Global.index_Merit; // 取得大項目的條件 ValueObj.ItemConditionVO itemCondition = new ValueObj.ItemConditionVO(ItemIndex); // 取得子項目的條件 ValueObj.DetailItemConditionVO detailCondition = new ValueObj.DetailItemConditionVO(ItemIndex); // 取得需要看的學年度學期 List<ValueObj.SchoolYearSemester> needSchoolYearList = Utility.GetNeedSchoolSemester(itemCondition.NeedSemester, gradeMap); // 大項目名稱 string itemName = itemCondition.ItemName; // 項目的積分 decimal ItemTotalPoints = 0; decimal[] meritCount = new decimal[Global.DetailItemNameList[ItemIndex].Length]; if (meritsObj != null) { // loop 每個學期分數的大功, 小功, 獎勵 foreach (ValueObj.SchoolYearSemester schoolYear in needSchoolYearList) { if (schoolYear == null) continue; List<Data.MeritRecord> meritList = meritsObj.GetMeritsBySchoolYear(schoolYear); foreach (Data.MeritRecord rec in meritList) { if(rec.MeritA.HasValue) meritCount[0] += rec.MeritA.Value; if(rec.MeritB.HasValue) meritCount[1] += rec.MeritB.Value; if(rec.MeritC.HasValue) meritCount[2] += rec.MeritC.Value; } } } // loop 每個子項目 for (int intI = 0; intI < Global.DetailItemNameList[ItemIndex].Length; intI++) { // 子項目名稱 string meritName = Global.DetailItemNameList[ItemIndex][intI]; // 子項目積分 decimal points = detailCondition.DetailItemListDic[meritName]; // 取得detail item in student ValueObj.DetailItemVO detailItem = studentObj.DetailItemList[itemName][meritName]; // 計算積分 decimal mixPoints = meritCount[intI] * points; // 回存此項目顯示的內容 detailItem.Value = "Points:" + points + " Counts:" + meritCount[intI].ToString(); // 回存此項目的積分 detailItem.Points = mixPoints; // 加總 ItemTotalPoints += mixPoints; } // 假如超過上限, 就以上限為主 ItemTotalPoints = (ItemTotalPoints > itemCondition.MaxItemPoints) ? itemCondition.MaxItemPoints : ItemTotalPoints; // 此學生在這個項目的積分 studentObj.ItemList[itemName] = ItemTotalPoints; return ItemTotalPoints; }
/// <summary> /// 處理德行表現 /// </summary> /// <param name="studentObj"></param> /// <param name="gradeMap"></param> /// <param name="clubsObj"></param> /// <param name="servicesObj"></param> private decimal Cal_VirtuousConduct(ValueObj.StudentVO studentObj, Dictionary<int, ValueObj.SchoolYearSemester> gradeMap, ValueObj.ClubsVO clubsObj, ValueObj.ServicesVO servicesObj) { int ItemIndex = Global.index_VirtuousConduct; // 取得大項目的條件 ValueObj.ItemConditionVO itemCondition = new ValueObj.ItemConditionVO(ItemIndex); // 取得子項目的條件 ValueObj.DetailItemConditionVO detailCondition = new ValueObj.DetailItemConditionVO(ItemIndex); // 取得需要看的學年度學期 List<ValueObj.SchoolYearSemester> needSchoolYearList = Utility.GetNeedSchoolSemester(itemCondition.NeedSemester, gradeMap); // 大項目名稱 string itemName = itemCondition.ItemName; decimal ItemTotalPoints = 0; #region 處理社團 // 社團名稱 string detailItemName = Global.DetailItemNameList[ItemIndex][0]; // 社團積分 decimal clubPoints = detailCondition.DetailItemListDic[detailItemName]; decimal clubTotalPoints = 0; if (clubsObj != null) { // loop 每個學期 foreach (ValueObj.SchoolYearSemester schoolYear in needSchoolYearList) { if (schoolYear == null) continue; List<ValueObj.ClubVO> clubList = clubsObj.GetClubsBySchoolYear(schoolYear); // 假如有參加過社團, +1分 if (clubList.Count > 0) clubTotalPoints += 1; } } // 取得detail item in student ValueObj.DetailItemVO detailItem = studentObj.DetailItemList[itemName][detailItemName]; // 回存此項目顯示的內容 detailItem.Value = "Count:" + clubTotalPoints.ToString(); // 假如超過上限, 就以上限為主 clubPoints = (clubTotalPoints > clubPoints) ? clubPoints : clubTotalPoints; // 回存此項目的積分 detailItem.Points = clubPoints; #endregion #region 處理服務學習 decimal ServiceHours = 6; // 服務學習名稱 detailItemName = Global.DetailItemNameList[ItemIndex][1]; // 服務學習積分 decimal servicePoints = detailCondition.DetailItemListDic[detailItemName]; decimal serviceTotalPoints = 0; // 特殊條件 // 取得三下的學年度學期 ValueObj.SchoolYearSemester specilSchoolYear = gradeMap[6]; // 截止時間 103/5/9 DateTime deadTime = new DateTime(2014, 5, 9); if(servicesObj != null) { // loop 每個學期 foreach (ValueObj.SchoolYearSemester schoolYear in needSchoolYearList) { if (schoolYear == null) continue; decimal hours = 0; List<ValueObj.ServiceVO> serviceList = servicesObj.GetServicesBySchoolYear(schoolYear); // 加總此學期的時數 foreach(var serviceObj in serviceList) { if (schoolYear == specilSchoolYear) { if (serviceObj.OccurTime.HasValue && (serviceObj.OccurTime.Value <= deadTime)) hours += serviceObj.Hours; } else hours += serviceObj.Hours; } // 假如超過6小時, +1分 if (hours >= ServiceHours) serviceTotalPoints += 1; } } // 取得detail item in student detailItem = studentObj.DetailItemList[itemName][detailItemName]; // 回存此項目顯示的內容 detailItem.Value = "Count:" + serviceTotalPoints.ToString(); // 假如超過上限, 就以上限為主 servicePoints = (serviceTotalPoints > servicePoints) ? servicePoints : serviceTotalPoints; // 回存此項目的積分 detailItem.Points = servicePoints; #endregion ItemTotalPoints = clubPoints + servicePoints; // 此學生在這個項目的積分 studentObj.ItemList[itemName] = ItemTotalPoints; return ItemTotalPoints; }
private void Assingment2Value(string typestr) { ValueObj _valueobj = new ValueObj(); if ((typestr.ToUpper() == "BOOL") && Common.IsValueBOOL(thenField, ref _valueobj)) { m_value.BOOL = _valueobj.Val.BOOL; return; } if ((typestr.ToUpper() == "BYTE") && Common.IsValueBYTE(thenField, ref _valueobj)) { m_value.BYTE = _valueobj.Val.BYTE; return; } if ((typestr.ToUpper() == "WORD") && Common.IsValueWORD(thenField, ref _valueobj)) { m_value.WORD = _valueobj.Val.WORD; return; } if ((typestr.ToUpper() == "DWORD") && Common.IsValueDWORD(thenField, ref _valueobj)) { m_value.DWORD = _valueobj.Val.DWORD; return; } if ((typestr.ToUpper() == "LWORD") && Common.IsValueLWORD(thenField, ref _valueobj)) { m_value.LWORD = _valueobj.Val.LWORD; return; } if ((typestr.ToUpper() == "SINT") && Common.IsValueSINT(thenField, ref _valueobj)) { m_value.SINT = _valueobj.Val.SINT; return; } if ((typestr.ToUpper() == "INT") && Common.IsValueINT(thenField, ref _valueobj)) { m_value.INT = _valueobj.Val.INT; return; } if ((typestr.ToUpper() == "DINT") && Common.IsValueDINT(thenField, ref _valueobj)) { m_value.DINT = _valueobj.Val.DINT; return; } if ((typestr.ToUpper() == "LINT") && Common.IsValueLINT(thenField, ref _valueobj)) { m_value.LINT = _valueobj.Val.LINT; return; } if ((typestr.ToUpper() == "USINT") && Common.IsValueUSINT(Then, ref _valueobj)) { m_value.USINT = _valueobj.Val.USINT; return; } if ((typestr.ToUpper() == "UINT") && Common.IsValueUINT(thenField, ref _valueobj)) { m_value.UINT = _valueobj.Val.UINT; return; } if ((typestr.ToUpper() == "UDINT") && Common.IsValueUDINT(thenField, ref _valueobj)) { m_value.UDINT = _valueobj.Val.UDINT; return; } if ((typestr.ToUpper() == "ULINT") && Common.IsValueULINT(thenField, ref _valueobj)) { m_value.ULINT = _valueobj.Val.ULINT; return; } if ((typestr.ToUpper() == "REAL") && Common.IsValueREAL(thenField, ref _valueobj)) { m_value.REAL = _valueobj.Val.REAL; return; } if ((typestr.ToUpper() == "LREAL") && Common.IsValueLREAL(thenField, ref _valueobj)) { m_value.LREAL = _valueobj.Val.LREAL; return; } if ((typestr.ToUpper() == "COLOR") && Common.IsValueColor(thenField, ref _valueobj)) { m_value.DINT = _valueobj.Val.DINT; return; } if ((typestr.ToUpper() == "TIME") && Common.IsValueTIME(thenField, ref _valueobj)) { m_value.TIME = _valueobj.Val.TIME; return; } if ((typestr.ToUpper() == "DATE") && Common.IsValueDATE(thenField, ref _valueobj)) { m_value.DATE = _valueobj.Val.DATE; return; } if ((typestr.ToUpper() == "TOD") && Common.IsValueTOD(thenField, ref _valueobj)) { m_value.TOD = _valueobj.Val.TOD; return; } if ((typestr.ToUpper() == "DT") && Common.IsValueDT(thenField, ref _valueobj)) { m_value.DT = _valueobj.Val.DT; return; } }
/// <summary> /// Insert a single value in the list /// </summary> /// <param name='operations'> /// The operations group for this extension method. /// </param> /// <param name='value'> /// New value to be inserted /// </param> public static void PostByvalue(this IValues operations, ValueObj value) { Task.Factory.StartNew(s => ((IValues)s).PostByvalueAsync(value), operations, CancellationToken.None, TaskCreationOptions.None, TaskScheduler.Default).Unwrap().GetAwaiter().GetResult(); }
/// <summary> /// 輸出學習歷程或領域成績有問題學生 /// </summary> /// <param name="StudentObj"></param> /// <param name="gradeList"></param> public void OutWarningData(ValueObj.StudentVO StudentObj, ValueObj.LackMsg msgList) { int columnIndex = 0; _RowIndex++; if (_RowIndex > _MAX_ROW_COUNT) { _IsOverRow = true; return; } StringBuilder sb = new StringBuilder(); sb.Append(StudentObj.StudentName).Append(" 缺少 "); if (msgList.HistoryLack.Count > 0) { sb.Append(Utility.ComposeHistoryLackMsg(msgList.HistoryLack)); sb.Append(" "); } if (msgList.DomainLack.Count >0 ) sb.Append(Utility.ComposeDomainLackMsg(msgList.DomainLack)); SetColumnValue(_OutCells, columnIndex++, sb.ToString(), _Style_Error); }
/// <summary> /// for debug /// </summary> /// <param name="StudentObj"></param> public void OutDetailData(ValueObj.StudentVO StudentObj) { if (Global.IsDebug == false) return; int columnIndex = 0; if (_DetailRowIndex == 0) OutDetailTitle(_DetailCells); _DetailRowIndex++; if (_DetailRowIndex > _MAX_ROW_COUNT) return; // 年級/班級序號/班級名稱/座號/學號/姓名 _DetailCells[_DetailRowIndex, columnIndex++].PutValue(StudentObj.ClassGradeYear); _DetailCells[_DetailRowIndex, columnIndex++].PutValue(StudentObj.ClassDisplayOrder); _DetailCells[_DetailRowIndex, columnIndex++].PutValue(StudentObj.ClassName); _DetailCells[_DetailRowIndex, columnIndex++].PutValue(StudentObj.StudentSeatNo); _DetailCells[_DetailRowIndex, columnIndex++].PutValue(StudentObj.StudentNumber); // 學生姓名 _DetailCells[_DetailRowIndex, columnIndex++].PutValue(StudentObj.StudentName); // 身分證統一編號 _DetailCells[_DetailRowIndex, columnIndex++].PutValue(StudentObj.StudentIdNumber); // 生日 _DetailCells[_DetailRowIndex, columnIndex++].PutValue("" + StudentObj.StudentBirthday); // 詳細資料 foreach (string itemName in StudentObj.ItemList.Keys) { _DetailCells[_DetailRowIndex, columnIndex++].PutValue("" + StudentObj.ItemList[itemName]); foreach (ValueObj.DetailItemVO rec in StudentObj.DetailItemList[itemName].Values) { _DetailCells[_DetailRowIndex, columnIndex++].PutValue("" + rec.Value); _DetailCells[_DetailRowIndex, columnIndex++].PutValue("" + rec.Points); } } }
/// <summary> /// Insert a single value in the list /// </summary> /// <param name='operations'> /// The operations group for this extension method. /// </param> /// <param name='value'> /// New value to be inserted /// </param> /// <param name='cancellationToken'> /// The cancellation token. /// </param> public static async Task PostByvalueAsync(this IValues operations, ValueObj value, CancellationToken cancellationToken = default(CancellationToken)) { await operations.PostByvalueWithHttpMessagesAsync(value, null, cancellationToken).ConfigureAwait(false); }
/// <summary> /// 處理均衡學習 /// </summary> /// <param name="studentObj"></param> /// <param name="gradeMap"></param> /// <param name="domains"></param> private decimal Cal_BalanceLearning(ValueObj.StudentVO studentObj, Dictionary<int, ValueObj.SchoolYearSemester> gradeMap, ValueObj.DomainsVO domains) { int ItemIndex = Global.index_BalanceLearning; // 取得大項目的條件 ValueObj.ItemConditionVO itemCondition = new ValueObj.ItemConditionVO(ItemIndex); // 取得子項目的條件 ValueObj.DetailItemConditionVO detailCondition = new ValueObj.DetailItemConditionVO(ItemIndex); // 取得需要看的學年度學期 Dictionary<int, ValueObj.SchoolYearSemester> needSchoolYearList = Utility.GetNeedSchoolSemesterIndex(itemCondition.NeedSemester, gradeMap); // 大項目名稱 string itemName = itemCondition.ItemName; // 及格分數 decimal PassScore = 60; // 項目的積分 decimal ItemTotalPoints = 0; if (domains != null) { // loop 每個需要的領域 for (int intI = 0; intI < Global.DetailItemNameList[ItemIndex].Length; intI++) { // 子項目名稱 string detailItemName = Global.DetailItemNameList[ItemIndex][intI]; // 子項目積分 decimal points = detailCondition.DetailItemListDic[detailItemName]; decimal totalScore = 0; decimal avgScore = 0; decimal scoreCount = 0; // loop 領域的每個學期分數 foreach (KeyValuePair<int, ValueObj.SchoolYearSemester> pair in needSchoolYearList) { ValueObj.SchoolYearSemester schoolYear = pair.Value; if (schoolYear == null) { // 少了需要的學期 if (!_WarningStudentDic.ContainsKey(studentObj)) _WarningStudentDic.Add(studentObj, new ValueObj.LackMsg()); _WarningStudentDic[studentObj].AddHistoryLack(pair.Key); continue; } List<ValueObj.DomainVO> domainList = domains.GetDomainsBySechoolYear(schoolYear, detailItemName); if (domainList.Count == 0) { // 少了需要的領域 if (!_WarningStudentDic.ContainsKey(studentObj)) _WarningStudentDic.Add(studentObj, new ValueObj.LackMsg()); _WarningStudentDic[studentObj].AddDomainLack(pair.Key); continue; } foreach (ValueObj.DomainVO domain in domainList) { totalScore += domain.DomainScore; scoreCount++; } } // 取得detail item in student ValueObj.DetailItemVO detailItem = studentObj.DetailItemList[itemName][detailItemName]; // 領域的平均 // 原本是固定除以需要的學期, 這樣有少一個學期分數的話, 會很難看, 所以改成有幾個分數就除以幾 // avgScore = Math.Round((totalScore / needSchoolYearList.Count), 2, MidpointRounding.AwayFromZero); if (scoreCount > 0) avgScore = Math.Round((totalScore / scoreCount), 2, MidpointRounding.AwayFromZero); // 回存此項目顯示的內容 detailItem.Value = "總分: " + totalScore + ", 學期數: " + scoreCount + ", 平均: " + avgScore.ToString(); // 看學生有沒有得到此積分 if (avgScore >= PassScore) { ItemTotalPoints += points; // 回存此項目的積分 detailItem.Points = points; } } } else { // 完全沒有領域成績 if (!_WarningStudentDic.ContainsKey(studentObj)) _WarningStudentDic.Add(studentObj, new ValueObj.LackMsg()); foreach(int rec in needSchoolYearList.Keys) _WarningStudentDic[studentObj].AddDomainLack(rec); } // 假如超過上限, 就以上限為主 ItemTotalPoints = (ItemTotalPoints > itemCondition.MaxItemPoints) ? itemCondition.MaxItemPoints : ItemTotalPoints; // 此學生在這個項目的積分 studentObj.ItemList[itemName] = ItemTotalPoints; return ItemTotalPoints; }