/// <summary> /// 時間形式書式設定 /// </summary> /// <param name="item">ファイル出力ビュー</param> /// <param name="value">出力項目</param> /// <returns>出力項目</returns> private string setTimeFormat(OutputFileViewDto item, string value) { string formatValue = value; if (item.TimeFormat.HasValue && !string.IsNullOrWhiteSpace(value)) { DateTime date; //日付変換のため、まず半角へ変換 string halfValue = this.convertToNarrow(value); if (DateTime.TryParseExact(halfValue, timeFormats, null, DateTimeStyles.AllowWhiteSpaces, out date)) { switch (item.TimeFormat) { case Definition.TimeFormat.hhmm: formatValue = date.ToString(Definition.TimeFormatType.hhmm); break; case Definition.TimeFormat.hhmmss: formatValue = date.ToString(Definition.TimeFormatType.hhmmss); break; } } } return(formatValue); }
/// <summary> /// グループ項目の桁数の合計値を取得する /// </summary> /// <returns></returns> private int getRcDigit(OutputFileViewDto item) { int rcDigit = (from x in this.groupDetailItemList where x.ClId == item.ClId && x.ClGroupId == item.ClGroupId && x.TemplateId == item.TemplateId && (item.RcPageNo == 0 || x.PageNo == item.RcPageNo) select x.RcDigit).Sum(digit => { int ret = 0; return(int.TryParse(digit, out ret) ? ret : 0); }); return(rcDigit); }
/// <summary> /// 数値のカンマ区切りの設定 /// </summary> /// <param name="item">ファイル出力ビュー</param> /// <param name="value">出力項目</param> /// <returns>出力項目</returns> private string setCommaSeparate(OutputFileViewDto item, string value) { string formatValue = value; if (item.CommaSeparateFlag && !string.IsNullOrWhiteSpace(value)) { decimal num; //日付変換のため、まず半角へ変換 string halfValue = this.convertToNarrow(value); if (decimal.TryParse(halfValue, out num)) { formatValue = String.Format("{0:#,0}", num); } } return(formatValue); }
/// <summary> /// 出力項目の値を取得する /// </summary> /// <param name="item"></param> /// <param name="pageNo">結果データのページ番号</param> /// <returns></returns> private string getItemValue(OutputFileViewDto item, int pageNo) { string value = string.Empty; switch (item.OpItemType) { case Definition.OutputItemType.ViewGroup: value = this.getGroupItemValue(item.TemplateId, item.ClGroupId, pageNo); break; case Definition.OutputItemType.System: value = this.getSystemItemValue(item.SystemItemId, pageNo, item.TemplateId); break; case Definition.OutputItemType.UserExpression: value = this.getUserExpressItemValue(item, pageNo); break; } //半角変換(ユーザー定義項目すでに半角修正が入れたので、再度変換しない) if (item.HalfCharacterFlag && item.OpItemType != Definition.OutputItemType.UserExpression) { value = this.convertToNarrow(value); } // 日付形式書式設定 value = setDateFormat(item, value); // 時間形式書式設定 value = setTimeFormat(item, value); // カンマ区切り出力 value = setCommaSeparate(item, value); // 金額文字列の生成 value = setMoneyString(item, value); //プレーンファイルの場合、グループ項目の指定桁数まで空白を埋め込む(OMR項目の場合、埋め込む済みためしない) if (this.outputDesignInfo.RcResultOpFormat == Definition.OpDesignFileFormat.Plain && item.OpItemType == Definition.OutputItemType.ViewGroup && item.GroupItemKind != Definition.ItemKind.OMR) { int digit = this.getRcDigit(item); value = this.padValue(value, digit); } return(value); }
/// <summary> /// 金額文字列の設定 /// </summary> /// <param name="item">ファイル出力ビュー</param> /// <param name="value">出力項目</param> /// <returns>出力項目</returns> private string setMoneyString(OutputFileViewDto item, string value) { string formatValue = value; if (item.MoneyStringGenerationFlag && !string.IsNullOrWhiteSpace(value)) { switch (item.CurrencySymbol) { case Definition.CurrencyFormat.Yen: formatValue = Definition.CurrencyFormatString.Yen + value; break; case Definition.CurrencyFormat.Dollar: formatValue = Definition.CurrencyFormatString.Dollar + value; break; } } return(formatValue); }
/// <summary> /// ユーザー定義項目の値を取得する /// </summary> /// <param name="item">ユーザー定義項目</param> /// <param name="pageNo">出力項目のページ番号</param> /// <returns></returns> private string getUserExpressItemValue(OutputFileViewDto item, int pageNo) { //ユーザー定義項目を取得する var items = (from x in this.userDefineItems where x.UserDefinitionId == item.UserDefinitionId && x.RcPageNo == item.RcPageNo && x.OpOrderNo == item.OpOrderNo select x).OrderBy(x => x.RowNo); StringBuilder sb = new StringBuilder(); foreach (OutputFileOUViewDto userItem in items) { switch (userItem.ExpressionType) { case Definition.UserExpressionType.String: //文字列指定の場合 sb.Append(userItem.ExpressionString); break; case Definition.UserExpressionType.ViewGroup: //グループ項目の場合 int usePageNo = userItem.ExpressionRcPageNo == 0 ? pageNo : userItem.ExpressionRcPageNo; string groupValue = this.getGroupItemValue(userItem.ExpressionTemplateId, userItem.ExpressionItemId, usePageNo); sb.Append(groupValue); break; } } string value = sb.ToString(); //半角変換 if (item.HalfCharacterFlag) { value = this.convertToNarrow(value); } //桁数設定 if (this.outputDesignInfo.RcResultOpFormat == Definition.OpDesignFileFormat.Plain && item.UserDefinitionNo.HasValue) { value = this.padValue(value, item.UserDefinitionNo.Value); } return(value); }