123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Reflection;
- using System.Text;
- using System.Text.RegularExpressions;
- using System.Threading.Tasks;
- namespace PTMedicalInsurance.Common
- {
- public class FastReportFunction
- {
- /// <summary>
- /// 兼容方法
- /// </summary>
- /// <returns></returns>
- public static string moneyToChinese(object money)
- {
- return MoneyToUpper(string.Format("{0}", money));
- }
- /// <summary>
- /// 金额转换成中文大写金额
- /// </summary>
- /// <param name="LowerMoney">eg:10.74</param>
- /// <returns></returns>
- public static string MoneyToUpper(string LowerMoney)
- {
- string functionReturnValue = null;
- bool IsNegative = false; // 是否是负数
- if (LowerMoney.Trim().Substring(0, 1) == "-")
- {
- // 是负数则先转为正数
- LowerMoney = LowerMoney.Trim().Remove(0, 1);
- IsNegative = true;
- }
- string strLower = null;
- string strUpart = null;
- string strUpper = null;
- int iTemp = 0;
- // 保留两位小数 123.489→123.49 123.4→123.4
- LowerMoney = Math.Round(double.Parse(LowerMoney), 2).ToString();
- if (LowerMoney.IndexOf(".") > 0)
- {
- if (LowerMoney.IndexOf(".") == LowerMoney.Length - 2)
- {
- LowerMoney = LowerMoney + "0";
- }
- }
- else
- {
- LowerMoney = LowerMoney + ".00";
- }
- strLower = LowerMoney;
- iTemp = 1;
- strUpper = "";
- while (iTemp <= strLower.Length)
- {
- switch (strLower.Substring(strLower.Length - iTemp, 1))
- {
- case ".":
- strUpart = "圆";
- break;
- case "0":
- strUpart = "零";
- break;
- case "1":
- strUpart = "壹";
- break;
- case "2":
- strUpart = "贰";
- break;
- case "3":
- strUpart = "叁";
- break;
- case "4":
- strUpart = "肆";
- break;
- case "5":
- strUpart = "伍";
- break;
- case "6":
- strUpart = "陆";
- break;
- case "7":
- strUpart = "柒";
- break;
- case "8":
- strUpart = "捌";
- break;
- case "9":
- strUpart = "玖";
- break;
- }
- switch (iTemp)
- {
- case 1:
- strUpart = strUpart + "分";
- break;
- case 2:
- strUpart = strUpart + "角";
- break;
- case 3:
- strUpart = strUpart + "";
- break;
- case 4:
- strUpart = strUpart + "";
- break;
- case 5:
- strUpart = strUpart + "拾";
- break;
- case 6:
- strUpart = strUpart + "佰";
- break;
- case 7:
- strUpart = strUpart + "仟";
- break;
- case 8:
- strUpart = strUpart + "万";
- break;
- case 9:
- strUpart = strUpart + "拾";
- break;
- case 10:
- strUpart = strUpart + "佰";
- break;
- case 11:
- strUpart = strUpart + "仟";
- break;
- case 12:
- strUpart = strUpart + "亿";
- break;
- case 13:
- strUpart = strUpart + "拾";
- break;
- case 14:
- strUpart = strUpart + "佰";
- break;
- case 15:
- strUpart = strUpart + "仟";
- break;
- case 16:
- strUpart = strUpart + "万";
- break;
- default:
- strUpart = strUpart + "";
- break;
- }
- strUpper = strUpart + strUpper;
- iTemp = iTemp + 1;
- }
- strUpper = strUpper.Replace("零拾", "零");
- strUpper = strUpper.Replace("零佰", "零");
- strUpper = strUpper.Replace("零仟", "零");
- strUpper = strUpper.Replace("零零零", "零");
- strUpper = strUpper.Replace("零零", "零");
- strUpper = strUpper.Replace("零角零分", "整");
- strUpper = strUpper.Replace("零分", "整");
- strUpper = strUpper.Replace("零角", "零");
- strUpper = strUpper.Replace("零亿零万零圆", "亿圆");
- strUpper = strUpper.Replace("亿零万零圆", "亿圆");
- strUpper = strUpper.Replace("零亿零万", "亿");
- strUpper = strUpper.Replace("零万零圆", "万圆");
- strUpper = strUpper.Replace("零亿", "亿");
- strUpper = strUpper.Replace("零万", "万");
- strUpper = strUpper.Replace("零圆", "圆");
- strUpper = strUpper.Replace("零零", "零");
- // 对壹圆以下的金额的处理
- if (strUpper.Substring(0, 1) == "圆")
- {
- strUpper = strUpper.Substring(1, strUpper.Length - 1);
- }
- if (strUpper.Substring(0, 1) == "零")
- {
- strUpper = strUpper.Substring(1, strUpper.Length - 1);
- }
- if (strUpper.Substring(0, 1) == "角")
- {
- strUpper = strUpper.Substring(1, strUpper.Length - 1);
- }
- if (strUpper.Substring(0, 1) == "分")
- {
- strUpper = strUpper.Substring(1, strUpper.Length - 1);
- }
- if (strUpper.Substring(0, 1) == "整")
- {
- strUpper = "零圆整";
- }
- functionReturnValue = strUpper;
- if (IsNegative == true)
- {
- return "负" + functionReturnValue;
- }
- else
- {
- return functionReturnValue;
- }
- }
- /// <summary>
- /// 取两点时间之间的天数、小时、分钟、秒钟
- /// </summary>
- /// <param name="DateTime1"></param>
- /// <param name="DateTime2"></param>
- /// <returns></returns>
- public static string DateDiff(DateTime DateTime1, DateTime DateTime2)
- {
- string dateDiff = null;
- TimeSpan ts1 = new TimeSpan(DateTime1.Ticks);
- TimeSpan ts2 = new TimeSpan(DateTime2.Ticks);
- TimeSpan ts = ts1.Subtract(ts2).Duration();
- //dateDiff = ts.Days.ToString() + "天"
- // + ts.Hours.ToString() + "小时"
- // + ts.Minutes.ToString() + "分钟"
- // + ts.Seconds.ToString() + "秒";
- if (ts.Days == 0)
- dateDiff = "1天";
- else
- dateDiff = ts.Days.ToString() + "天";
- return dateDiff;
- }
- public static void Register()
- {
-
- Type funType = typeof(FastReportFunction);
- MethodInfo methodUpper = funType.GetMethod("MoneyToUpper");
- MethodInfo methodChinese = funType.GetMethod("moneyToChinese");
- if (!FastReport.Utils.RegisteredObjects.IsTypeRegistered(funType))
- {
- FastReport.Utils.RegisteredObjects.Add(funType, "Functions,CustomFunctions",0x34);
- if(methodUpper != null)
- {
- FastReport.Utils.RegisteredObjects.AddFunction(methodUpper, "CustomFunctions");
- }
- if(methodChinese != null)
- {
- FastReport.Utils.RegisteredObjects.AddFunction(methodChinese, "CustomFunctions");
- }
-
- }
-
- }
- }
- }
|