c#通用函数[转]
using System;
using System.Data;
using EBiz.Security.API;
using System.IO;
using System.Reflection;
using System.Text;
using System.Text.RegularExpressions;
using System.Xml;
using System.Xml.Serialization;
using System.Globalization;
using System.Web;
using System.Web.Security;
using System.Configuration;
using EBiz.DBM.Common.Types;
namespace EBiz.DBM.API
{
/// <summary>
/// 这是收集一些常用的函数
/// </summary>
public class Utility
{
public const string numerousString = "啊阿埃挨哎唉哀皚癌藹矮艾礙愛隘鞍氨安俺按暗岸胺案肮昂盎凹敖熬翺襖傲奧懊澳芭捌扒叭吧笆八疤巴拔跋靶把耙壩霸罷爸白柏百擺佰敗拜稗斑班搬扳般頒板版扮拌伴瓣半辦絆邦幫梆榜膀綁棒磅蚌鎊傍謗苞胞包褒剝薄雹保堡飽寶抱報暴豹鮑爆杯碑悲卑北輩背貝鋇倍狽備憊焙被奔苯本笨崩繃甭泵蹦迸逼鼻比鄙筆彼碧蓖蔽畢斃毖幣庇痹閉敝弊必辟壁臂避陛鞭邊編貶扁便變卞辨辯辮遍標彪膘表鼈憋別癟彬斌瀕濱賓擯兵冰柄丙秉餅炳病並玻菠播撥缽波博勃搏鉑箔伯帛舶脖膊渤泊駁捕蔔哺補埠不布步簿部怖擦猜裁材才財睬踩采彩菜蔡餐參蠶殘慚慘燦蒼艙倉滄藏操糙槽曹草廁策側冊測層蹭插叉茬茶查碴搽察岔差詫拆柴豺攙摻蟬饞讒纏鏟産闡顫昌猖場嘗常長償腸廠敞暢唱倡超抄鈔朝嘲潮巢吵炒車扯撤掣徹澈郴臣辰塵晨忱沈陳趁襯撐稱城橙成呈乘程懲澄誠承逞騁秤吃癡持匙池遲弛馳恥齒侈尺赤翅斥熾充沖蟲崇寵抽酬疇躊稠愁籌仇綢瞅醜臭初出櫥廚躇鋤雛滁除楚礎儲矗搐觸處揣川穿椽傳船喘串瘡窗幢床闖創吹炊捶錘垂春椿醇唇淳純蠢戳綽疵茨磁雌辭慈瓷詞此刺賜次聰蔥囪匆從叢湊粗醋簇促躥篡竄摧崔催脆瘁粹淬翠村存寸磋撮搓措挫錯搭達答瘩打大呆歹傣戴帶殆代貸袋待逮怠耽擔丹單鄲撣膽旦氮但憚淡誕彈蛋當擋黨蕩檔刀搗蹈倒島禱導到稻悼道盜德得的蹬燈登等瞪凳鄧堤低滴迪敵笛狄滌翟嫡抵底地蒂第帝弟"
+ "遞締顛掂滇碘點典靛墊電佃甸店惦奠澱殿碉叼雕凋***掉吊釣調跌爹碟蝶叠諜疊丁盯叮釘頂鼎錠定訂丟東冬董懂動棟侗恫凍洞兜抖鬥陡豆逗痘都督毒犢獨讀堵睹賭杜鍍肚度渡妒端短鍛段斷緞堆兌隊對墩噸蹲敦頓囤鈍盾遁掇哆多奪垛躲朵跺舵剁惰墮蛾峨鵝俄額訛娥惡厄扼遏鄂餓恩而兒耳爾餌洱二貳發罰筏伐乏閥法琺藩帆番翻樊礬釩繁凡煩反返範販犯飯泛坊芳方肪房防妨仿訪紡放菲非啡飛肥匪誹吠肺廢沸費芬酚吩氛分紛墳焚汾粉奮份忿憤糞豐封楓蜂峰鋒風瘋烽逢馮縫諷奉鳳佛否夫敷膚孵扶拂輻幅氟符伏俘服浮涪福袱弗甫撫輔俯釜斧脯腑府腐赴副覆賦複傅付阜父腹負富訃附婦縛咐噶嘎該改概鈣蓋溉幹甘杆柑竿肝趕感稈敢贛岡剛鋼缸肛綱崗港杠篙臯高膏羔糕搞鎬稿告哥歌擱戈鴿胳疙割革葛格蛤閣隔鉻個各給根跟耕更庚羹埂耿梗工攻功恭龔供躬公宮弓鞏汞拱貢共鈎勾溝苟狗垢構購夠辜菇咕箍估沽孤姑鼓古蠱骨谷股故顧固雇刮瓜剮寡挂褂乖拐怪棺關官冠觀管館罐慣灌貫光廣逛瑰規圭矽歸龜閨軌鬼詭癸桂櫃跪貴劊輥滾棍鍋郭國果裹過哈骸孩海氦亥害駭酣憨邯韓含涵寒函喊罕翰撼捍旱憾悍焊汗漢夯杭航壕嚎豪毫郝好耗號浩呵喝荷菏核禾和何合盒貉閡河涸赫褐鶴賀嘿黑痕很狠恨哼亨橫衡恒轟哄烘虹鴻洪宏弘紅喉侯猴吼厚候後呼乎忽瑚壺葫胡蝴狐糊湖弧虎唬護互滬戶花嘩華猾滑畫劃化話槐徊懷淮壞歡環桓還緩"
+ "換患喚瘓豢煥渙宦幻荒慌黃磺蝗簧皇凰惶煌晃幌恍謊灰揮輝徽恢蛔回毀悔慧卉惠晦賄穢會燴彙諱誨繪葷昏婚魂渾混豁活夥火獲或惑霍貨禍擊圾基機畸稽積箕肌饑迹激譏雞姬績緝吉極棘輯籍集及急疾汲即嫉級擠幾脊己薊技冀季伎祭劑悸濟寄寂計記既忌際妓繼紀嘉枷夾佳家加莢頰賈甲鉀假稼價架駕嫁殲監堅尖箋間煎兼肩艱奸緘繭檢柬堿鹼揀撿簡儉剪減薦檻鑒踐賤見鍵箭件健艦劍餞漸濺澗建僵姜將漿江疆蔣槳獎講匠醬降蕉椒礁焦膠交郊澆驕嬌嚼攪鉸矯僥腳狡角餃繳絞剿教酵轎較叫窖揭接皆稭街階截劫節莖睛晶鯨京驚精粳經井警景頸靜境敬鏡徑痙靖竟競淨炯窘揪究糾玖韭久灸九酒廄救舊臼舅咎就疚鞠拘狙疽居駒菊局咀矩舉沮聚拒據巨具距踞鋸俱句懼炬劇捐鵑娟倦眷卷絹撅攫抉掘倔爵桔傑捷睫竭潔結解姐戒藉芥界借介疥誡屆巾筋斤金今津襟緊錦僅謹進靳晉禁近燼浸盡勁荊兢覺決訣絕均菌鈞軍君峻俊竣浚郡駿喀咖卡咯開揩楷凱慨刊堪勘坎砍看康慷糠扛抗亢炕考拷烤靠坷苛柯棵磕顆科殼咳可渴克刻客課肯啃墾懇坑吭空恐孔控摳口扣寇枯哭窟苦酷庫褲誇垮挎跨胯塊筷儈快寬款匡筐狂框礦眶曠況虧盔巋窺葵奎魁傀饋愧潰坤昆捆困括擴廓闊垃拉喇蠟臘辣啦萊來賴藍婪欄攔籃闌蘭瀾讕攬覽懶纜爛濫琅榔狼廊郎朗浪撈勞牢老佬姥酪烙澇勒樂雷鐳蕾磊累儡壘擂肋類淚棱楞冷厘梨犁黎籬狸離漓理李裏鯉禮莉荔吏栗麗"
+ "厲勵礫曆利傈例俐痢立粒瀝隸力璃哩倆聯蓮連鐮廉憐漣簾斂臉鏈戀煉練糧涼梁粱良兩輛量晾亮諒撩聊僚療燎寥遼潦了撂鐐廖料列裂烈劣獵琳林磷霖臨鄰鱗淋凜賃吝拎玲菱零齡鈴伶羚淩靈陵嶺領另令溜琉榴硫餾留劉瘤流柳六龍聾嚨籠窿隆壟攏隴樓婁摟簍漏陋蘆盧顱廬爐擄鹵虜魯麓碌露路賂鹿潞祿錄陸戮驢呂鋁侶旅履屢縷慮氯律率濾綠巒攣孿灤卵亂掠略掄輪倫侖淪綸論蘿螺羅邏鑼籮騾裸落洛駱絡媽麻瑪碼螞馬罵嘛嗎埋買麥賣邁脈瞞饅蠻滿蔓曼慢漫謾芒茫盲氓忙莽貓茅錨毛矛鉚卯茂冒帽貌貿麽玫枚梅酶黴煤沒眉媒鎂每美昧寐妹媚門悶們萌蒙檬盟錳猛夢孟眯醚靡糜迷謎彌米秘覓泌蜜密冪棉眠綿冕免勉娩緬面苗描瞄藐秒渺廟妙蔑滅民抿皿敏憫閩明螟鳴銘名命謬摸摹蘑模膜磨摩魔抹末莫墨默沫漠寞陌謀牟某拇牡畝姆母墓暮幕募慕木目睦牧穆拿哪呐鈉那娜納氖乃奶耐奈南男難囊撓腦惱鬧淖呢餒內嫩能妮霓倪泥尼擬你匿膩逆溺蔫拈年碾攆撚念娘釀鳥尿捏聶孽齧鑷鎳涅您檸獰凝甯擰濘牛扭鈕紐膿濃農弄奴努怒女暖虐瘧挪懦糯諾哦歐鷗毆藕嘔偶漚啪趴爬帕怕琶拍排牌徘湃派攀潘盤磐盼畔判叛乓龐旁耪胖抛咆刨炮袍跑泡呸胚培裴賠陪配佩沛噴盆砰抨烹澎彭蓬棚硼篷膨朋鵬捧碰坯砒霹批披劈琵毗啤脾疲皮匹痞僻屁譬篇偏片騙飄漂瓢票撇瞥拼頻貧品聘乒坪蘋萍平憑瓶評屏坡潑頗婆破魄迫粕剖撲鋪仆莆葡菩蒲埔樸圃"
+ "普浦譜曝瀑期欺棲戚妻七淒漆柒沏其棋奇歧畦崎臍齊旗祈祁騎起豈乞企啓契砌器氣迄棄汽泣訖掐洽牽扡釺鉛千遷簽仟謙乾黔錢鉗前潛遣淺譴塹嵌欠歉槍嗆腔羌牆薔強搶橇鍬敲悄橋瞧喬僑巧鞘撬翹峭俏竅切茄且怯竊欽侵親秦琴勤芹擒禽寢沁青輕氫傾卿清擎晴氰情頃請慶瓊窮秋丘邱球求囚酋泅趨區蛆曲軀屈驅渠取娶齲趣去圈顴權醛泉全痊拳犬券勸缺炔瘸卻鵲榷確雀裙群然燃冉染瓤壤攘嚷讓饒擾繞惹熱壬仁人忍韌任認刃妊紉扔仍日戎茸蓉榮融熔溶容絨冗揉柔肉茹蠕儒孺如辱乳汝入褥軟阮蕊瑞銳閏潤若弱撒灑薩腮鰓塞賽三三傘散桑嗓喪搔騷掃嫂瑟色澀森僧莎砂殺刹沙紗傻啥煞篩曬珊苫杉山刪煽衫閃陝擅贍膳善汕扇繕墒傷商賞晌上尚裳梢捎稍燒芍勺韶少哨邵紹奢賒蛇舌舍赦攝射懾涉社設砷申呻伸身深娠紳神沈審嬸甚腎慎滲聲生甥牲升繩省盛剩勝聖師失獅施濕詩屍虱十石拾時什食蝕實識史矢使屎駛始式示士世柿事拭誓逝勢是嗜噬適仕侍釋飾氏市恃室視試收手首守壽授售受瘦獸蔬樞梳殊抒輸叔舒淑疏書贖孰熟薯暑曙署蜀黍鼠屬術述樹束戍豎墅庶數漱恕刷耍摔衰甩帥栓拴霜雙爽誰水睡稅吮瞬順舜說碩朔爍斯撕嘶思私司絲死肆寺嗣四伺似飼巳松聳慫頌送宋訟誦搜艘擻嗽蘇酥俗素速粟僳塑溯宿訴肅酸蒜算雖隋隨綏髓碎歲穗遂隧祟孫損筍蓑梭唆縮瑣索鎖所塌他它她塔獺撻蹋踏胎苔擡台泰酞太態汰坍攤貪癱灘壇"
+ "檀痰潭譚談坦毯袒碳探歎炭湯塘搪堂棠膛唐糖倘躺淌趟燙掏濤滔縧萄桃逃淘陶討套特藤騰疼謄梯剔踢銻提題蹄啼體替嚏惕涕剃屜天添填田甜恬舔腆挑條迢眺跳貼鐵帖廳聽烴汀廷停亭庭挺艇通桐酮瞳同銅彤童桶捅筒統痛偷投頭透凸禿突圖徒途塗屠土吐兔湍團推頹腿蛻褪退吞屯臀拖托脫鴕陀馱駝橢妥拓唾挖哇蛙窪娃瓦襪歪外豌彎灣玩頑丸烷完碗挽晚皖惋宛婉萬腕汪王亡枉網往旺望忘妄威巍微危韋違桅圍唯惟爲濰維葦萎委偉僞尾緯未蔚味畏胃喂魏位渭謂尉慰衛瘟溫蚊文聞紋吻穩紊問嗡翁甕撾蝸渦窩我斡臥握沃巫嗚鎢烏汙誣屋無蕪梧吾吳毋武五捂午舞伍侮塢戊霧晤物勿務悟誤昔熙析西硒矽晰嘻吸錫犧稀息希悉膝夕惜熄烯溪汐犀檄襲席習媳喜銑洗系隙戲細瞎蝦匣霞轄暇峽俠狹下廈夏嚇掀鍁先仙鮮纖鹹賢銜舷閑涎弦嫌顯險現獻縣腺餡羨憲陷限線相廂鑲香箱襄湘鄉翔祥詳想響享項巷橡像向象蕭硝霄削哮囂銷消宵淆曉小孝校肖嘯笑效楔些歇蠍鞋協挾攜邪斜脅諧寫械卸蟹懈泄瀉謝屑薪芯鋅欣辛新忻心信釁星腥猩惺興刑型形邢行醒幸杏性姓兄凶胸匈洶雄熊休修羞朽嗅鏽秀袖繡墟戌需虛噓須徐許蓄酗敘旭序畜恤絮婿緒續軒喧宣懸旋玄選癬眩絢靴薛學穴雪血勳熏循旬詢尋馴巡殉汛訓訊遜迅壓押鴉鴨呀丫芽牙蚜崖衙涯雅啞亞訝焉咽閹煙淹鹽嚴研蜒岩延言顔閻炎沿奄掩眼衍演豔堰燕厭硯雁唁彥焰宴諺驗殃央鴦秧楊揚"
+ "佯瘍羊洋陽氧仰癢養樣漾邀腰妖瑤搖堯遙窯謠姚咬舀藥要耀椰噎耶爺野冶也頁掖業葉曳腋夜液一壹醫揖銥依伊衣頤夷遺移儀胰疑沂宜姨彜椅蟻倚已乙矣以藝抑易邑屹億役臆逸肄疫亦裔意毅憶義益溢詣議誼譯異翼翌繹茵蔭因殷音陰姻吟銀淫寅飲尹引隱印英櫻嬰鷹應纓瑩螢營熒蠅迎贏盈影穎硬映喲擁傭臃癰庸雍踴蛹詠泳湧永恿勇用幽優悠憂尤由郵鈾猶油遊酉有友右佑釉誘又幼迂淤于盂榆虞愚輿余俞逾魚愉渝漁隅予娛雨與嶼禹宇語羽玉域芋郁籲遇喻峪禦愈欲獄育譽浴寓裕預豫馭鴛淵冤元垣袁原援轅園員圓猿源緣遠苑願怨院曰約越躍鑰嶽粵月悅閱耘雲鄖勻隕允運蘊醞暈韻孕匝砸雜栽哉災宰載再在咱攢暫贊贓髒葬遭糟鑿藻棗早澡蚤躁噪造皂竈燥責擇則澤賊怎增憎曾贈紮喳渣劄軋鍘閘眨柵榨咋乍炸詐摘齋宅窄債寨瞻氈詹粘沾盞斬輾嶄展蘸棧占戰站湛綻樟章彰漳張掌漲杖丈帳賬仗脹瘴障招昭找沼趙照罩兆肇召遮折哲蟄轍者鍺蔗這浙珍斟真甄砧臻貞針偵枕疹診震振鎮陣蒸掙睜征猙爭怔整拯正政幀症鄭證芝枝支吱蜘知肢脂汁之織職直植殖執值侄址指止趾只旨紙志摯擲至致置幟峙制智秩稚質炙痔滯治窒中盅忠鍾衷終種腫重仲衆舟周州洲謅粥軸肘帚咒皺宙晝驟珠株蛛朱豬諸誅逐竹燭煮拄矚囑主著柱助蛀貯鑄築住注祝駐抓爪拽專磚轉撰賺篆樁莊裝妝撞壯狀椎錐追贅墜綴諄准捉拙卓桌琢茁酌啄著灼濁茲咨資姿滋淄孜紫仔籽滓子自漬字鬃棕蹤宗綜總縱鄒走奏揍租足卒族祖詛阻組鑽纂嘴醉最罪尊遵昨左佐柞做作坐座";
public const string simpleString = "啊阿埃挨哎唉哀皑癌蔼矮艾碍爱隘鞍氨安俺按暗岸胺案肮昂盎凹敖熬翱袄傲奥懊澳芭捌扒叭吧笆八疤巴拔跋靶把耙坝霸罢爸白柏百摆佰败拜稗斑班搬扳般颁板版扮拌伴瓣半办绊邦帮梆榜膀绑棒磅蚌镑傍谤苞胞包褒剥薄雹保堡饱宝抱报暴豹鲍爆杯碑悲卑北辈背贝钡倍狈备惫焙被奔苯本笨崩绷甭泵蹦迸逼鼻比鄙笔彼碧蓖蔽毕毙毖币庇痹闭敝弊必辟壁臂避陛鞭边编贬扁便变卞辨辩辫遍标彪膘表鳖憋别瘪彬斌濒滨宾摈兵冰柄丙秉饼炳病并玻菠播拨钵波博勃搏铂箔伯帛舶脖膊渤泊驳捕卜哺补埠不布步簿部怖擦猜裁材才财睬踩采彩菜蔡餐参蚕残惭惨灿苍舱仓沧藏操糙槽曹草厕策侧册测层蹭插叉茬茶查碴搽察岔差诧拆柴豺搀掺蝉馋谗缠铲产阐颤昌猖场尝常长偿肠厂敞畅唱倡超抄钞朝嘲潮巢吵炒车扯撤掣彻澈郴臣辰尘晨忱沉陈趁衬撑称城橙成呈乘程惩澄诚承逞骋秤吃痴持匙池迟弛驰耻齿侈尺赤翅斥炽充冲虫崇宠抽酬畴踌稠愁筹仇绸瞅丑臭初出橱厨躇锄雏滁除楚础储矗搐触处揣川穿椽传船喘串疮窗幢床闯创吹炊捶锤垂春椿醇唇淳纯蠢戳绰疵茨磁雌辞慈瓷词此刺赐次聪葱囱匆从丛凑粗醋簇促蹿篡窜摧崔催脆瘁粹淬翠村存寸磋撮搓措挫错搭达答瘩打大呆歹傣戴带殆代贷袋待逮怠耽担丹单郸掸胆旦氮但惮淡诞弹蛋当挡党荡档刀捣蹈倒岛祷导到稻悼道盗德得的蹬灯登等瞪凳邓堤低滴迪敌笛狄涤翟嫡抵底地蒂第帝弟递"
+ "缔颠掂滇碘点典靛垫电佃甸店惦奠淀殿碉叼雕凋***掉吊钓调跌爹碟蝶迭谍叠丁盯叮钉顶鼎锭定订丢东冬董懂动栋侗恫冻洞兜抖斗陡豆逗痘都督毒犊独读堵睹赌杜镀肚度渡妒端短锻段断缎堆兑队对墩吨蹲敦顿囤钝盾遁掇哆多夺垛躲朵跺舵剁惰堕蛾峨鹅俄额讹娥恶厄扼遏鄂饿恩而儿耳尔饵洱二贰发罚筏伐乏阀法珐藩帆番翻樊矾钒繁凡烦反返范贩犯饭泛坊芳方肪房防妨仿访纺放菲非啡飞肥匪诽吠肺废沸费芬酚吩氛分纷坟焚汾粉奋份忿愤粪丰封枫蜂峰锋风疯烽逢冯缝讽奉凤佛否夫敷肤孵扶拂辐幅氟符伏俘服浮涪福袱弗甫抚辅俯釜斧脯腑府腐赴副覆赋复傅付阜父腹负富讣附妇缚咐噶嘎该改概钙盖溉干甘杆柑竿肝赶感秆敢赣冈刚钢缸肛纲岗港杠篙皋高膏羔糕搞镐稿告哥歌搁戈鸽胳疙割革葛格蛤阁隔铬个各给根跟耕更庚羹埂耿梗工攻功恭龚供躬公宫弓巩汞拱贡共钩勾沟苟狗垢构购够辜菇咕箍估沽孤姑鼓古蛊骨谷股故顾固雇刮瓜剐寡挂褂乖拐怪棺关官冠观管馆罐惯灌贯光广逛瑰规圭硅归龟闺轨鬼诡癸桂柜跪贵刽辊滚棍锅郭国果裹过哈骸孩海氦亥害骇酣憨邯韩含涵寒函喊罕翰撼捍旱憾悍焊汗汉夯杭航壕嚎豪毫郝好耗号浩呵喝荷菏核禾和何合盒貉阂河涸赫褐鹤贺嘿黑痕很狠恨哼亨横衡恒轰哄烘虹鸿洪宏弘红喉侯猴吼厚候后呼乎忽瑚壶葫胡蝴狐糊湖弧虎唬护互沪户花哗华猾滑画划化话槐徊怀淮坏欢环桓还缓换患"
+ "唤痪豢焕涣宦幻荒慌黄磺蝗簧皇凰惶煌晃幌恍谎灰挥辉徽恢蛔回毁悔慧卉惠晦贿秽会烩汇讳诲绘荤昏婚魂浑混豁活伙火获或惑霍货祸击圾基机畸稽积箕肌饥迹激讥鸡姬绩缉吉极棘辑籍集及急疾汲即嫉级挤几脊己蓟技冀季伎祭剂悸济寄寂计记既忌际妓继纪嘉枷夹佳家加荚颊贾甲钾假稼价架驾嫁歼监坚尖笺间煎兼肩艰奸缄茧检柬碱硷拣捡简俭剪减荐槛鉴践贱见键箭件健舰剑饯渐溅涧建僵姜将浆江疆蒋桨奖讲匠酱降蕉椒礁焦胶交郊浇骄娇嚼搅铰矫侥脚狡角饺缴绞剿教酵轿较叫窖揭接皆秸街阶截劫节茎睛晶鲸京惊精粳经井警景颈静境敬镜径痉靖竟竞净炯窘揪究纠玖韭久灸九酒厩救旧臼舅咎就疚鞠拘狙疽居驹菊局咀矩举沮聚拒据巨具距踞锯俱句惧炬剧捐鹃娟倦眷卷绢撅攫抉掘倔爵桔杰捷睫竭洁结解姐戒藉芥界借介疥诫届巾筋斤金今津襟紧锦仅谨进靳晋禁近烬浸尽劲荆兢觉决诀绝均菌钧军君峻俊竣浚郡骏喀咖卡咯开揩楷凯慨刊堪勘坎砍看康慷糠扛抗亢炕考拷烤靠坷苛柯棵磕颗科壳咳可渴克刻客课肯啃垦恳坑吭空恐孔控抠口扣寇枯哭窟苦酷库裤夸垮挎跨胯块筷侩快宽款匡筐狂框矿眶旷况亏盔岿窥葵奎魁傀馈愧溃坤昆捆困括扩廓阔垃拉喇蜡腊辣啦莱来赖蓝婪栏拦篮阑兰澜谰揽览懒缆烂滥琅榔狼廊郎朗浪捞劳牢老佬姥酪烙涝勒乐雷镭蕾磊累儡垒擂肋类泪棱楞冷厘梨犁黎篱狸离漓理李里鲤礼莉荔吏栗丽厉励砾"
+ "历利傈例俐痢立粒沥隶力璃哩俩联莲连镰廉怜涟帘敛脸链恋炼练粮凉梁粱良两辆量晾亮谅撩聊僚疗燎寥辽潦了撂镣廖料列裂烈劣猎琳林磷霖临邻鳞淋凛赁吝拎玲菱零龄铃伶羚凌灵陵岭领另令溜琉榴硫馏留刘瘤流柳六龙聋咙笼窿隆垄拢陇楼娄搂篓漏陋芦卢颅庐炉掳卤虏鲁麓碌露路赂鹿潞禄录陆戮驴吕铝侣旅履屡缕虑氯律率滤绿峦挛孪滦卵乱掠略抡轮伦仑沦纶论萝螺罗逻锣箩骡裸落洛骆络妈麻玛码蚂马骂嘛吗埋买麦卖迈脉瞒馒蛮满蔓曼慢漫谩芒茫盲氓忙莽猫茅锚毛矛铆卯茂冒帽貌贸么玫枚梅酶霉煤没眉媒镁每美昧寐妹媚门闷们萌蒙檬盟锰猛梦孟眯醚靡糜迷谜弥米秘觅泌蜜密幂棉眠绵冕免勉娩缅面苗描瞄藐秒渺庙妙蔑灭民抿皿敏悯闽明螟鸣铭名命谬摸摹蘑模膜磨摩魔抹末莫墨默沫漠寞陌谋牟某拇牡亩姆母墓暮幕募慕木目睦牧穆拿哪呐钠那娜纳氖乃奶耐奈南男难囊挠脑恼闹淖呢馁内嫩能妮霓倪泥尼拟你匿腻逆溺蔫拈年碾撵捻念娘酿鸟尿捏聂孽啮镊镍涅您柠狞凝宁拧泞牛扭钮纽脓浓农弄奴努怒女暖虐疟挪懦糯诺哦欧鸥殴藕呕偶沤啪趴爬帕怕琶拍排牌徘湃派攀潘盘磐盼畔判叛乓庞旁耪胖抛咆刨炮袍跑泡呸胚培裴赔陪配佩沛喷盆砰抨烹澎彭蓬棚硼篷膨朋鹏捧碰坯砒霹批披劈琵毗啤脾疲皮匹痞僻屁譬篇偏片骗飘漂瓢票撇瞥拼频贫品聘乒坪苹萍平凭瓶评屏坡泼颇婆破魄迫粕剖扑铺仆莆葡菩蒲埔朴圃普浦谱曝"
+ "瀑期欺栖戚妻七凄漆柒沏其棋奇歧畦崎脐齐旗祈祁骑起岂乞企启契砌器气迄弃汽泣讫掐洽牵扦钎铅千迁签仟谦乾黔钱钳前潜遣浅谴堑嵌欠歉枪呛腔羌墙蔷强抢橇锹敲悄桥瞧乔侨巧鞘撬翘峭俏窍切茄且怯窃钦侵亲秦琴勤芹擒禽寝沁青轻氢倾卿清擎晴氰情顷请庆琼穷秋丘邱球求囚酋泅趋区蛆曲躯屈驱渠取娶龋趣去圈颧权醛泉全痊拳犬券劝缺炔瘸却鹊榷确雀裙群然燃冉染瓤壤攘嚷让饶扰绕惹热壬仁人忍韧任认刃妊纫扔仍日戎茸蓉荣融熔溶容绒冗揉柔肉茹蠕儒孺如辱乳汝入褥软阮蕊瑞锐闰润若弱撒洒萨腮鳃塞赛三叁伞散桑嗓丧搔骚扫嫂瑟色涩森僧莎砂杀刹沙纱傻啥煞筛晒珊苫杉山删煽衫闪陕擅赡膳善汕扇缮墒伤商赏晌上尚裳梢捎稍烧芍勺韶少哨邵绍奢赊蛇舌舍赦摄射慑涉社设砷申呻伸身深娠绅神沈审婶甚肾慎渗声生甥牲升绳省盛剩胜圣师失狮施湿诗尸虱十石拾时什食蚀实识史矢使屎驶始式示士世柿事拭誓逝势是嗜噬适仕侍释饰氏市恃室视试收手首守寿授售受瘦兽蔬枢梳殊抒输叔舒淑疏书赎孰熟薯暑曙署蜀黍鼠属术述树束戍竖墅庶数漱恕刷耍摔衰甩帅栓拴霜双爽谁水睡税吮瞬顺舜说硕朔烁斯撕嘶思私司丝死肆寺嗣四伺似饲巳松耸怂颂送宋讼诵搜艘擞嗽苏酥俗素速粟僳塑溯宿诉肃酸蒜算虽隋随绥髓碎岁穗遂隧祟孙损笋蓑梭唆缩琐索锁所塌他它她塔獭挞蹋踏胎苔抬台泰酞太态汰坍摊贪瘫滩坛檀痰潭谭谈"
+ "坦毯袒碳探叹炭汤塘搪堂棠膛唐糖倘躺淌趟烫掏涛滔绦萄桃逃淘陶讨套特藤腾疼誊梯剔踢锑提题蹄啼体替嚏惕涕剃屉天添填田甜恬舔腆挑条迢眺跳贴铁帖厅听烃汀廷停亭庭挺艇通桐酮瞳同铜彤童桶捅筒统痛偷投头透凸秃突图徒途涂屠土吐兔湍团推颓腿蜕褪退吞屯臀拖托脱鸵陀驮驼椭妥拓唾挖哇蛙洼娃瓦袜歪外豌弯湾玩顽丸烷完碗挽晚皖惋宛婉万腕汪王亡枉网往旺望忘妄威巍微危韦违桅围唯惟为潍维苇萎委伟伪尾纬未蔚味畏胃喂魏位渭谓尉慰卫瘟温蚊文闻纹吻稳紊问嗡翁瓮挝蜗涡窝我斡卧握沃巫呜钨乌污诬屋无芜梧吾吴毋武五捂午舞伍侮坞戊雾晤物勿务悟误昔熙析西硒矽晰嘻吸锡牺稀息希悉膝夕惜熄烯溪汐犀檄袭席习媳喜铣洗系隙戏细瞎虾匣霞辖暇峡侠狭下厦夏吓掀锨先仙鲜纤咸贤衔舷闲涎弦嫌显险现献县腺馅羡宪陷限线相厢镶香箱襄湘乡翔祥详想响享项巷橡像向象萧硝霄削哮嚣销消宵淆晓小孝校肖啸笑效楔些歇蝎鞋协挟携邪斜胁谐写械卸蟹懈泄泻谢屑薪芯锌欣辛新忻心信衅星腥猩惺兴刑型形邢行醒幸杏性姓兄凶胸匈汹雄熊休修羞朽嗅锈秀袖绣墟戌需虚嘘须徐许蓄酗叙旭序畜恤絮婿绪续轩喧宣悬旋玄选癣眩绚靴薛学穴雪血勋熏循旬询寻驯巡殉汛训讯逊迅压押鸦鸭呀丫芽牙蚜崖衙涯雅哑亚讶焉咽阉烟淹盐严研蜒岩延言颜阎炎沿奄掩眼衍演艳堰燕厌砚雁唁彦焰宴谚验殃央鸯秧杨扬佯疡羊洋阳氧"
+ "仰痒养样漾邀腰妖瑶摇尧遥窑谣姚咬舀药要耀椰噎耶爷野冶也页掖业叶曳腋夜液一壹医揖铱依伊衣颐夷遗移仪胰疑沂宜姨彝椅蚁倚已乙矣以艺抑易邑屹亿役臆逸肄疫亦裔意毅忆义益溢诣议谊译异翼翌绎茵荫因殷音阴姻吟银淫寅饮尹引隐印英樱婴鹰应缨莹萤营荧蝇迎赢盈影颖硬映哟拥佣臃痈庸雍踊蛹咏泳涌永恿勇用幽优悠忧尤由邮铀犹油游酉有友右佑釉诱又幼迂淤于盂榆虞愚舆余俞逾鱼愉渝渔隅予娱雨与屿禹宇语羽玉域芋郁吁遇喻峪御愈欲狱育誉浴寓裕预豫驭鸳渊冤元垣袁原援辕园员圆猿源缘远苑愿怨院曰约越跃钥岳粤月悦阅耘云郧匀陨允运蕴酝晕韵孕匝砸杂栽哉灾宰载再在咱攒暂赞赃脏葬遭糟凿藻枣早澡蚤躁噪造皂灶燥责择则泽贼怎增憎曾赠扎喳渣札轧铡闸眨栅榨咋乍炸诈摘斋宅窄债寨瞻毡詹粘沾盏斩辗崭展蘸栈占战站湛绽樟章彰漳张掌涨杖丈帐账仗胀瘴障招昭找沼赵照罩兆肇召遮折哲蛰辙者锗蔗这浙珍斟真甄砧臻贞针侦枕疹诊震振镇阵蒸挣睁征狰争怔整拯正政帧症郑证芝枝支吱蜘知肢脂汁之织职直植殖执值侄址指止趾只旨纸志挚掷至致置帜峙制智秩稚质炙痔滞治窒中盅忠钟衷终种肿重仲众舟周州洲诌粥轴肘帚咒皱宙昼骤珠株蛛朱猪诸诛逐竹烛煮拄瞩嘱主著柱助蛀贮铸筑住注祝驻抓爪拽专砖转撰赚篆桩庄装妆撞壮状椎锥追赘坠缀谆准捉拙卓桌琢茁酌啄着灼浊兹咨资姿滋淄孜紫仔籽滓子自渍字鬃棕踪宗综总纵邹走奏揍租足卒族祖诅阻组钻纂嘴醉最罪尊遵昨左佐柞做作坐座";
public const string PARTNUMBER_FORBIDDEN_CHARACTERS = "?*'%/-%#"\,._[]^&()~!|@$ ";
public const string PARTNUMBER_FORBIDDEN_CHARACTERS_SMARTSEARCH = "*'/-#"\,._[]^&()~!|@$ ";
public const string NONELIST="(1=2)";
public const string GLOBALLIST="(1=1)";
//used by session
public const string SMART_PARTNUMBER = "PartNumber";
public const string SYSTEM_LAST_ERROR = "SystemLastError";
public const string USER_PRIVILIGE_FUNCTION_POINT_LIST = "User_Privilige_Function_Point_List";
//used by session
public static string ConnectionString = string.Empty;
private const string RANKFUNCTION = "dbo.GetQueryRank('{0}','{1}',PrefixStrExtracted,BasePartNumberExtracted)";
//海外税率代表值
public const int OVERSEA_TAX_CODE = 9;
//其他税率代表值
public const int OTHER_TAX_CODE = 10;
//0%税率代表值
public const int ZERO_TAX_CODE = 7;
public static string NO_PRIVILEGE_PAGE
{
get
{
return ApplicationPath+"AccessDenied.aspx";
}
}
static Utility()
{
try
{
ConnectionString = ConfigurationSettings.AppSettings["DBMConnectionString"].ToString();
}
catch
{
}
}
/// <summary>
/// 返回应用程序的路径
/// 例如:如果应用程式是根目录,则返回"/";
/// 如果应用程式是其他虚拟目录,则返回"/Virtual Path/"
/// </summary>
/// <returns>返回应用程式的路径</returns>
public static string ApplicationPath
{
get
{
string applicationPath = HttpContext.Current.Request.ApplicationPath;
if (applicationPath != "/")
{
applicationPath = applicationPath+ "/";
}
return applicationPath;
}
}
/// <summary>
/// 返回应用程序的路径
/// 例如:如果应用程式是根目录,则返回"https://www.domain.com/";
/// 如果应用程式是其他虚拟目录,则返回"https://www.domain.com/Virtual Path/"
/// </summary>
/// <returns>返回应用程式的路径</returns>
public static string ApplicationSSLPath
{
get
{
bool useSSL= false;
try
{
useSSL= Convert.ToBoolean(ConfigurationSettings.AppSettings["UseSSL"]);
}
catch
{
useSSL = false;
}
return "http" + (useSSL ? "s" : "") + "://" + HttpContext.Current.Request.ServerVariables["HTTP_HOST"].ToString().ToLower() + ApplicationPath;
}
}
/// <summary>
/// 如果有什么信息在客户的弹出的,则调用此函数
/// </summary>
/// <param name="message"></param>
public static void Message(string message)
{
string script ="<script>";
script +="window.alert(""+message.Replace("'", "\'") +"");";
script +="</script>";
HttpContext.Current.Response.Write(script);
}
/// <summary>
/// 如果有什么信息在客户的弹出的,则调用此函数
/// </summary>
/// <param name="message"></param>
public static void Message(System.Web.UI.Page page, string message)
{
string script ="<script>";
script +="window.alert(""+message.Replace("'", "\'") +"");";
script +="</script>";
//Guid.NewGuid().ToString("N")是指在一个界面中可能有多个调用要弹出消息的内容
page.RegisterClientScriptBlock("Clientmsg"+Guid.NewGuid().ToString("N"), script);
}
/// <summary>
/// 对一个字符串进行剪切,对多于该字符数的用“...”表示,则以ToolTip进行提示
/// </summary>
/// <param name="sValue">要剪切的字符串</param>
/// <param name="size">要保留的字符数</param>
/// <returns>返回剪切好的及ToolTip的整个Html格式的字符串</returns>
public static string CutString(string sValue, int size)
{
string m_retu="";
if(sValue.Length > size)
{
m_retu= "<span title="" +
HttpContext.Current.Server.HtmlDecode(sValue) + "">"
+ HttpContext.Current.Server.HtmlEncode(sValue.Substring(0,size)) + "...</span>";
}
else
{
m_retu= sValue;
}
return m_retu;
}
/// <summary>
/// 把文本框的内容格式成相应的Html在网页中显示
/// </summary>
/// <param name="sValue">要格式的字符串</param>
/// <returns>格式好的Html字符串</returns>
public static string ToHtml(string sValue)
{
string m_retu="";
if (sValue != null)
{
m_retu = HttpUtility.HtmlEncode(sValue);
m_retu = m_retu.Replace(" ", "<br />");
m_retu = m_retu.Replace(" ", "<br />");
m_retu = m_retu.Replace(" ", "<br />");
}
return m_retu;
}
/// <summary>
/// 检查是否为Guid类型的字符串
/// </summary>
/// <param name="o">要检查的字符串</param>
/// <returns>如果是,则返回true,如果不是,则返回false</returns>
public static bool IsGuid(object o)
{
try
{
Guid a= new Guid(o.ToString());
return true;
}
catch
{
return false;
}
}
/// <summary>
/// 检查是否为整数的字符串
/// </summary>
/// <param name="o">要检查的字符串</param>
/// <returns>如果是,则返回true,如果不是,则返回false</returns>
public static bool IsInt(object o)
{
try
{
Convert.ToInt32(o);
return true;
}
catch
{
return false;
}
}
/// <summary>
/// 检查是否为日期型的字符串
/// </summary>
/// <param name="o">要检查的字符串</param>
/// <returns>如果是,则返回true,如果不是,则返回false</returns>
public static bool IsDateTime(object o)
{
if(o==null) return false;
try
{
Convert.ToDateTime(o);
return true;
}
catch
{
return false;
}
}
/// <summary>
/// 检查是否为浮点型
/// </summary>
/// <param name="o">要检查的字符串</param>
/// <returns>如果是,则返回true,如果不是,则返回false</returns>
public static bool IsDouble(object o)
{
double num1;
if(IsNull(o)) return false;
if (!double.TryParse(o.ToString(), NumberStyles.Any, null, out num1))
{
return false;
}
return true;
}
/// <summary>
/// 检查是否为Single型
/// </summary>
/// <param name="o">要检查的字符串</param>
/// <returns>如果是,则返回true,如果不是,则返回false</returns>
public static bool IsSingle(object o)
{
try
{
Convert.ToSingle(o);
return true;
}
catch
{
return false;
}
}
/// <summary>
/// 检查是否为Decimal型
/// </summary>
/// <param name="o">要检查的字符串</param>
/// <returns>如果是,则返回true,如果不是,则返回false</returns>
public static bool IsDecimal(object o)
{
try
{
Convert.ToDecimal(o);
return true;
}
catch
{
return false;
}
}
/// <summary>
/// 检查是否为bool型
/// </summary>
/// <param name="o">要检查的字符串</param>
/// <returns>如果是,则返回true,如果不是,则返回false</returns>
public static bool IsBool(object o)
{
try
{
Convert.ToBoolean(o);
return true;
}
catch
{
return false;
}
}
/// <summary>
/// 当前的用户
/// </summary>
public static UserToken CurrentUser
{
get
{
UserToken token= (UserToken)System.Web.HttpContext.Current.Session["UserToken"];
if(token == null)
{
FormsAuthentication.SignOut();
HttpContext.Current.Response.Redirect(Utility.ApplicationPath + "Security/SignIn.aspx");
}
return token;
}
}
/// <summary>
/// 当前的用户权限
/// </summary>
public static UserPermissions CurrentPermissions
{
get
{
UserPermissions permission= (UserPermissions) HttpContext.Current.Session["UserPermissions"];
if(permission == null)
{
FormsAuthentication.SignOut();
HttpContext.Current.Response.Redirect(Utility.ApplicationPath + "Security/SignIn.aspx");
}
return permission;
}
}
/// <summary>
/// 根据币种代码取回货币符号
/// </summary>
/// <param name="CurrentPage">取回币种的页,传入该参数的目的是为了获取界面的语言</param>
/// <param name="CurrencyCode">货币代码</param>
/// <returns>货币符号</returns>
public static string GetCurrencySymbolByCode(System.Web.UI.Page CurrentPage,string CurrencyCode)
{
string m_retu;
if(CurrencyCode.Trim()=="")
m_retu="";
else
// m_retu= StringMapCache.RetrieveDisplayValue((int)ObjectTypeEnum.Organization,"CurrencyCode",int.Parse(CurrencyCode),"en-us");
m_retu = StringMapCache.RetrieveDisplayValue((int)ObjectTypeEnum.Organization,"CurrencyCode",int.Parse(CurrencyCode));
return m_retu;
}
/// <summary>
/// 根据币种代码取回货币符号
/// </summary>
/// <param name="CurrencyCode">货币代码</param>
/// <returns>货币符号</returns>
public static string GetCurrencySymbolByCode(string CurrencyCode)
{
string m_retu;
if(CurrencyCode.Trim()=="")
m_retu="";
else
m_retu = StringMapCache.RetrieveDisplayValue((int)ObjectTypeEnum.Organization,"CurrencyCode",int.Parse(CurrencyCode));
return m_retu;
}
/// <summary>
/// 加入一些用户信息到记录行中
/// 如果是新增的,则加入以下内容:新增的初始信息和修改的初始信息
/// 如果是修改的,则加入以下内容:修改的初始信息
/// </summary>
/// <param name="m_dr">要加入记录的行</param>
/// <param name="isInsert">是否为新增</param>
public static void AddUserInfoToRow(System.Data.DataRow m_dr,bool isInsert)
{
if(isInsert)
{
if(m_dr.Table.Columns.Contains("StateCode"))
{
m_dr["StateCode"] = 1; //处于初始状态
}
m_dr["ModifiedBy"]=CurrentUser.EntityID;
m_dr["ModifiedOn"]= DateTime.UtcNow;
m_dr["ModifiedbyName"] =CurrentUser.EntityAlias;
m_dr["CreatedBy"]=CurrentUser.EntityID;
m_dr["CreatedOn"]=DateTime.UtcNow ;
m_dr["CreatedbyName"]=CurrentUser.EntityAlias;
m_dr["DeletionStateCode"] =0;
try
{
m_dr["OwningUser"] = CurrentUser.EntityID;
}
catch{}
}
else
{
m_dr["ModifiedBy"]=CurrentUser.EntityID;
m_dr["ModifiedOn"]= DateTime.UtcNow;
m_dr["ModifiedbyName"] =CurrentUser.EntityAlias;
}
}
/// <summary>
/// 更改某行时的更改元数据信息[20040120SUN]
/// </summary>
/// <returns></returns>
public static string ModifiedInfoSQL()
{
System.Text.StringBuilder sqlStringBuilder = new StringBuilder(200);
sqlStringBuilder.Append(" ModifiedOn='"+DateTime.UtcNow.ToString()+"' ");
sqlStringBuilder.Append(" , ModifiedBy='"+Utility.CurrentUser.EntityID.ToString()+"' ");
return sqlStringBuilder.ToString();
}
/// <summary>
/// 根据UserID取回用户的名称
/// </summary>
/// <param name="sUserID">用户的ID</param>
/// <returns>取回用户的名称</returns>
public static string GetUserDisplayNameByUserGuid(string sUserID)
{
string m_retu="";
try
{
if(IsGuid(sUserID))
{
Connection conn = new Connection();
User oUser = conn.GetUserByID(new Guid(sUserID));
m_retu = oUser.EntityAlias;
oUser = null;
}
}
catch
{
m_retu=string.Empty;
}
return m_retu;
}
/// <summary>
/// 根据用户名称取得ID
/// </summary>
/// <param name="userName"></param>
/// <returns></returns>
public static Guid GetUserIDByUserName(string userName)
{
using(ConnectionBR c = new ConnectionBR())
{
try
{
return (Guid) c.ExecuteScalar("Select EntityID FROM EntityBase WHERE EntityAlias = '"+userName.Trim()+"'");
}
catch
{
return Guid.Empty;
}
}
}
private static string EncodeString(object theValue)
{
return String.Format("{0}", theValue.ToString().Replace("'", "''"));
}
public static object ToString(string str)
{
return ToString(str, DBNull.Value);
}
public static object ToString(string str, object defaultValue)
{
str=str.Trim(); //add by hjs 2004-9-23
if(defaultValue != DBNull.Value)
{
defaultValue = IsNull(defaultValue) ? defaultValue : DBNull.Value;
}
if(IsNull(str) || str == string.Empty )
{
return defaultValue;
}
else
{
return EncodeString(str);
}
}
/// <summary>
///去除空格
/// </summary>
/// <returns></returns>
public static object ToString(string str,bool removespace)
{
if(removespace)
{
return ToString(str.Replace(" ",""),DBNull.Value);
}
else
{
return ToString(str,DBNull.Value);
}
}
public static int GetInt(object obj)
{
return GetInt(obj, int.MinValue);
}
public static int GetInt(object obj, int defaultValue)
{
if(IsNull(obj) || !IsInt(obj))
{
return defaultValue;
}
else
{
return Convert.ToInt32(obj);
}
}
public static object ToInt(string str)
{
return ToInt(str, DBNull.Value);
}
public static object ToInt(string str, object defaultValue)
{
if(defaultValue != DBNull.Value)
{
defaultValue = IsInt(defaultValue) ? defaultValue : DBNull.Value;
}
if(IsNull(str) || !IsInt(str.Trim()))
{
return defaultValue;
}
else
{
return Convert.ToInt32(str.Trim());
}
}
public static decimal GetDecimal(object obj)
{
return GetDecimal(obj, decimal.MinValue);
}
public static decimal GetDecimal(object obj, decimal defaultValue)
{
string str=obj as string;
if(str!=null)
{
//这是把$等符号去掉.
if(str.Length>0)
{
if(str[0]>'9' || str[0]<0)
{
str=str.Substring(1,str.Length-1);
}
}
obj=str;
}
if(IsNull(obj) || !IsDecimal(obj))
{
return defaultValue;
}
else
{
return Convert.ToDecimal(obj);
}
}
public static object ToDecimal(string str)
{
return ToDecimal(str, DBNull.Value);
}
public static object ToDecimal(string str, object defaultValue)
{
//这是把$等符号去掉.
if(str.Length>0)
{
if(str[0]>'9' || str[0]<0)
{
str=str.Substring(1,str.Length-1);
}
}
if(defaultValue != DBNull.Value)
{
defaultValue = IsDecimal(defaultValue) ? defaultValue : DBNull.Value;
}
if(IsNull(str) || !IsDecimal(str.Trim()))
{
return defaultValue;
}
else
{
return Convert.ToDecimal(str.Trim());
}
}
public static double GetDouble(object obj)
{
return GetDouble(obj, double.NaN);
}
public static double GetDouble(object obj, double defaultValue)
{
string str=obj as string;
if(str!=null)
{
//这是把$等符号去掉.
if(str.Length>0)
{
if(str[0]>'9' || str[0]<0)
{
str=str.Substring(1,str.Length-1);
}
}
obj=str;
}
if(IsNull(obj) || !IsDouble(obj))
{
return defaultValue;
}
else
{
return Convert.ToDouble(obj);
}
}
public static object ToDouble(string str)
{
return ToDouble(str, DBNull.Value);
}
public static object ToDouble(string str, object defaultValue)
{
if(str.Length>0)
{
if(str[0]>'9' || str[0]<0)
{
str=str.Substring(1,str.Length-1);
}
}
if(defaultValue != DBNull.Value)
{
defaultValue = IsDouble(defaultValue) ? defaultValue : DBNull.Value;
}
if(IsNull(str) || !IsDouble(str.Trim()))
{
return defaultValue;
}
else
{
return Convert.ToDouble(str.Trim());
}
}
public static string GetString(object obj)
{
return GetString(obj,string.Empty);
}
public static string GetString(object obj,string defaultValue)
{
if(!IsNull(obj))
{
return obj.ToString();
}
else
{
return defaultValue;
}
}
public static Guid GetGuid(object obj)
{
return GetGuid(obj, Guid.Empty);
}
public static Guid GetGuid(object obj, Guid defaultValue)
{
if(IsNull(obj) || !IsGuid(obj))
{
return defaultValue;
}
else
{
return new Guid(obj.ToString());
}
}
public static object ToGuid(object str)
{
if(str==null)
{
return ToGuid(null, DBNull.Value);
}
else
{
return ToGuid(str.ToString(), DBNull.Value);
}
}
public static object ToGuid(string str)
{
return ToGuid(str, DBNull.Value);
}
public static object ToGuid(string str, object defaultValue)
{
if(defaultValue != DBNull.Value)
{
defaultValue = IsGuid(defaultValue) ? defaultValue : DBNull.Value;
}
if(IsNull(str) || !IsGuid(str.Trim()))
{
return defaultValue;
}
else
{
return new Guid(str.Trim());
}
}
public static bool GetBool(object obj)
{
return GetBool(obj, false);
}
public static bool GetBool(object obj, bool defaultValue)
{
if(IsNull(obj) || !IsBool(obj))
{
return defaultValue;
}
else
{
return Convert.ToBoolean(obj);
}
}
public static object ToBool(string str)
{
return ToBool(str, DBNull.Value);
}
public static object ToBool(string str, object defaultValue)
{
if(defaultValue != DBNull.Value)
{
defaultValue = IsBool(defaultValue) ? defaultValue : DBNull.Value;
}
if(str == null || str.Trim() == string.Empty)
{
return defaultValue;
}
else
{
string str1 = str.ToLower().Trim();
if(str1 == "1" || str1 == "true")
{
return true;
}
else if( str1 == "0" || str1 == "false")
{
return false;
}
else
{
return defaultValue;
}
}
}
public static DateTime GetDateTime(object obj)
{
return GetDateTime(obj, DateTime.Now);
}
public static DateTime GetDateTime(object obj, DateTime defaultValue)
{
if(IsNull(obj) || !IsDateTime(obj))
{
return defaultValue;
}
else
{
return Convert.ToDateTime(obj);
}
}
public static object ToDateTime(string str)
{
return ToDateTime(str, DBNull.Value);
}
public static object ToDateTime(string str, object defaultValue)
{
if(defaultValue != DBNull.Value)
{
defaultValue = IsDateTime(defaultValue) ? defaultValue : DBNull.Value;
}
if(IsNull(str) || !IsDateTime(str.Trim()))
{
return defaultValue;
}
else
{
return Convert.ToDateTime(str.Trim()).ToUniversalTime();
}
}
public static object ToDateTime(object date, object time)
{
return ToDateTime(date, time, DBNull.Value);
}
public static object ToDateTime(object date, object time, object defaultValue)
{
if(defaultValue != DBNull.Value)
{
defaultValue = IsDateTime(defaultValue) ? defaultValue : DBNull.Value;
}
if(IsNull(date) || !IsDateTime(date))
{
return defaultValue;
}
string selectTime = time == null || time.ToString().Trim() == string.Empty ? "12:00 PM" : time.ToString().Trim();
DateTime dateTime1 = Convert.ToDateTime(date.ToString().Trim());
return Convert.ToDateTime(dateTime1.ToShortDateString() + " " + selectTime).ToUniversalTime();
}
private static byte[] ToBytes(string str)
{
return Encoding.UTF8.GetBytes(str);
}
public static bool IsNull(object obj)
{
if ((obj != null) && !Convert.IsDBNull(obj))
{
return false;
}
return true;
}
/// <summary>
/// 序列化一个对象,把一个对象序列化成一个字符串
/// </summary>
/// <param name="obj">对象</param>
/// <returns>序列化好的字符串</returns>
public static string SerializeObject(object obj)
{
XmlDocument document1 = new XmlDocument();
using (MemoryStream stream1 = new MemoryStream())
{
using (StreamWriter writer1 = new StreamWriter(stream1, Encoding.Unicode))
{
try
{
new XmlSerializer(obj.GetType()).Serialize(stream1, obj);
}
catch
{
if (!(obj is Exception))
{
throw;
}
return ((Exception) obj).ToString();
}
stream1.Seek((long) 0, SeekOrigin.Begin);
document1.Load(stream1);
return document1.DocumentElement.OuterXml;
}
}
}
/// <summary>
/// 序列化一个对象数组,把一个对象数组序列化成一个字符串
/// </summary>
/// <param name="arr">对象数组</param>
/// <returns>序列化好的字符串</returns>
public static string SerializeObjectArray(object[] arr)
{
StringBuilder builder1 = new StringBuilder();
builder1.Append("<details> ");
object[] objArray1 = arr;
for (int num1 = 0; num1 < objArray1.Length; num1++)
{
object obj1 = objArray1[num1];
builder1.Append(SerializeObject(obj1));
}
builder1.Append(" </details>");
XmlDocument document1 = new XmlDocument();
document1.LoadXml(builder1.ToString());
return document1.OuterXml;
}
/// <summary>
/// 把货币金额转成英文的大写.
/// </summary>
/// <param name="sAmount">要转换大写的货币金额</param>
/// <param name="bShowSuffix">是否要显示小数点后面的同容</param>
/// <returns>格式好的字符串</returns>
public static string GetAmountEnglisth(string sAmount,bool bShowSuffix)
{
string[] numAry ="One,Two,Three,Four,Five,Six,Seven,Eight,Nine,Ten,Eleven,Twelve,Thirteen,Fourteen,Fifteen,Sixteen,Seventeen,Eighteen,Nineteen".Split(',');
string[] num10Ary ="Ten,Twenty,Thirty,Forty,Fifty,Sixty,Seventy,Eighty,Ninety".Split(',');
string[] carrySymbolAry ="Hundred,Thousand,Million,Billion".Split(',');
decimal d = Convert.ToDecimal(sAmount);
if(d>100000000000) return "";
string sValue = d.ToString("#0");
string sInt ="";
string sDec ="";
if(bShowSuffix)
{
sValue = d.ToString("#0.00");
int iZeroPos = sValue.IndexOf(".");
sInt = sValue.Substring(0,iZeroPos);
sDec = sValue.Substring(iZeroPos+1);
}
else
{
sInt = sValue;
}
if(sInt.Length>11)
{
return "can not translate so big number!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!";
}
System.Text.StringBuilder sbRes = new System.Text.StringBuilder();
for (int i=0;i<sInt.Length;i++)
{
int iPos = sInt.Length- i;
int iCarryPos = iPos % 3;
int num = Convert.ToInt32(sInt.Substring(i,1));
if(num ==0)
{
if(iCarryPos ==2)
{
sbRes.Append(" and");
}
if(iPos ==4 || iPos ==7 || iPos == 10)
{
int iSectionPos = (int)Math.Floor((iPos/3));
sbRes.Append(" " + carrySymbolAry[iSectionPos]);
}
continue;
}
if(iCarryPos ==0)
{
sbRes.Append(" " + numAry[num-1] + " Hundred");
}
else if(iCarryPos ==2)
{
if(sbRes.Length>7)
{
sbRes.Append(" and");
}
if(num ==1) // evelven twelve etc..
{
i++;
int numNext = Convert.ToInt32(sInt.Substring(i,1));
num = num*10+numNext;
sbRes.Append(" "+numAry[num-1]);
iPos = sInt.Length- i; //Recalculate iPos;
}
else
{
sbRes.Append(" "+num10Ary[num-1]);
}
}
else if(iCarryPos ==1)
{
if(sbRes.Length>0)
{
if(sbRes.ToString().Substring(sbRes.Length-2,2) =="ty")
{
sbRes.Append(" ");
}
}
sbRes.Append(" " +numAry[num-1]);
}
if(iPos ==4 || iPos ==7 || iPos == 10)
{
int iSectionPos = (int)Math.Floor((iPos/3));
sbRes.Append(" " + carrySymbolAry[iSectionPos]);
}
}
string res = sbRes.ToString();
while (res.IndexOf(" and and")>-1)
{
res = res.Replace(" and and"," and");
}
res = res.Trim();
while (res.Length>3 && res.Substring(res.Length-3,3)=="and")
{
res = res.Substring(0,res.Length-3);
}
res = res.Replace("- ","-");
res = res.Replace(" and Thousand"," Thousand");
res = res.Replace(" and Million"," Million");
res = res.Replace(" and Billion"," Billion");
res = res.Replace("Million Thousand","Million");
res = res.Replace("Billion Million","Billion");
if(bShowSuffix)
{
int iCents =Convert.ToInt32(sDec);
if (iCents>0)
{
res += " and";
if(iCents<20)
{
res += " " +numAry[iCents-1];
}
else
{
res += " " + num10Ary[Convert.ToInt32(sDec.Substring(0,1))-1];
if(sDec.Substring(1,1)!="0")
{
res += " " + numAry[Convert.ToInt32(sDec.Substring(1,1))-1];
}
}
res +=" Cents";
}
else
{
res +=" Even";
}
}
//替换多的END信息
res = res.Replace(" and ","|");
if(res.IndexOf("|")<0)
{
return res;
}
else
{
string[] p = res.Split(new char[]{'|'});
if(p.Length==2)
{
return p[0]+" and "+ p[1];
}
else
{
string temp = string.Empty;
for(int i=0;i<p.Length;i++)
{
if(i!=p.Length-1)
{
temp +=" "+ p[i];
}
else
{
temp +=" and "+ p[i];
}
}
return temp;
}
}
}
/// <summary>
/// 把货币金额从数字转为大写
/// </summary>
/// <param name="sAmount">要转换大写的货币金额</param>
/// <param name="bShowSuffix">是否要显示小数点后面的同容</param>
/// <returns>格式好的字符串</returns>
public static string GetAmountChinese(string sAmount,bool bShowSuffix)
{
string[] numAry = new string[]{"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
string[] posAry = new string[]{"","拾","佰","仟","万","拾","佰","仟","亿","拾","佰","仟"};
string[] decAry = new string[]{"角","分"};
try
{
decimal.Parse(sAmount);
}
catch
{
return "零圆";
}
string res ="" ;
decimal d = Convert.ToDecimal(sAmount);
string sValue = d.ToString("#0");
string sInt = sValue;
string sDec ="";
int iZeroPos = 0;
if(bShowSuffix)
{
sValue = d.ToString("#0.00");
iZeroPos = sValue.IndexOf(".");
sInt = sValue.Substring(0,iZeroPos);
sDec = sValue.Substring(iZeroPos+1);
}
if(bShowSuffix)
{
sInt = sValue.Substring(0,iZeroPos);
}
if(sInt.Length>11)
{
return "can not translate so big number!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!";
}
for (int i=0;i<sInt.Length;i++)
{
res += numAry[Convert.ToInt32(sInt.Substring(i,1))] + posAry[sInt.Length-i-1];
}
res = res.Replace("零圆","");
res = res.Replace("零拾","零");
res = res.Replace("零佰","零");
res = res.Replace("零仟","零");
while (res.IndexOf("零亿")>-1)
{
res = res.Replace("零亿","亿");
}
while (res.IndexOf("零万")>-1)
{
res = res.Replace("零万","万");
}
res = res.Replace("亿万","亿");
while (res.IndexOf("零零")>-1)
{
res = res.Replace("零零","零");
}
if(res.Substring(res.Length-1,1) =="零")
{
res = res.Substring(0,res.Length-1);
}
res +="圆";
if(bShowSuffix)
{
for(int i=0;i<sDec.Length;i++)
{
res += numAry[Convert.ToInt32(sDec.Substring(i,1))] + decAry[i] ;
}
res =res.Replace("零角零分","整");
}
if(res =="圆")
{
res ="零圆";
}
return res;
}
/// <summary>
/// 把URL格式转换成可以点击的URL内容
/// </summary>
/// <param name="url">要连接的URL地址</param>
/// <param name="DisplayName">显示到界面的内容</param>
/// <returns>已格式好的字符串</returns>
public static string GetURLDisplayString(string url,string DisplayName)
{
if(url =="") return "";
if (url.Length>=7)
{
if(url.Substring(0,7).ToUpper()!="HTTP://")
{
url ="Http://" +url;
}
}
if (DisplayName.Length>15)
{
DisplayName = DisplayName.Substring(0,15)+"...";
}
return "<a href='" + url +"' target='_blank'>" + DisplayName +"</a>";
}
/// <summary>
/// 把Email格式成可点击的Email显示格式
/// </summary>
/// <param name="email">Email地址</param>
/// <returns>已格式好的字符串</returns>
public static string GetEmailDisplayValue(string email)
{
if(email.Trim() =="") return"";
return "<a href="mailto:"+email+"">"+email+"</a>";
}
/// <summary>
/// 刷新父窗口,并确定是是要刷新父窗口,确定是否关闭本页。
/// </summary>
/// <param name="win">要进行操作的页面</param>
/// <param name="refreshParent">是否要刷新父窗口</param>
/// <param name="close">是否要关闭本窗口</param>
public static void RefreshWindow(System.Web.UI.Page win, bool refreshParent, bool close)
{
if(!refreshParent && !close) return;
string script ="<script>";
if(refreshParent)
{
script +="if(top.opener.refresh==null){";
script += "try{top.opener.location.href = top.opener.location.href;}catch(e){}";
script +="}else{top.opener.refresh();}";
}
if(close)
{
script +="top.close();";
}
script +="</script>";
if(!win.IsClientScriptBlockRegistered("RefreshWindowScript"))
{
win.RegisterClientScriptBlock("RefreshWindowScript", script);
}
}
/// <summary>
/// 刷新父窗口,并确定是是要刷新父窗口,确定是否关闭本页。
/// </summary>
/// <param name="win">要进行操作的页面</param>
/// <param name="refreshParent">是否要刷新父窗口</param>
/// <param name="close">是否要关闭本窗口</param>
public static void OpenExportWindow(System.Web.UI.Page win, string exportWin)
{
string script ="<script>";
script += "try{window.open('"+exportWin+"');}catch(e){}";
script +="</script>";
if(!win.IsClientScriptBlockRegistered("OpenExportWindow"))
{
win.RegisterClientScriptBlock("OpenExportWindow", script);
}
}
/// <summary>
/// 刷新父窗口,并确定是是要刷新父窗口,确定是否关闭本页。
/// </summary>
/// <param name="win">要进行操作的页面</param>
/// <param name="refreshParent">是否要刷新父窗口</param>
/// <param name="close">是否要关闭本窗口</param>
public static void RefreshParentWindow(System.Web.UI.Page win, bool refreshParent, bool close)
{
if(!refreshParent && !close) return;
string script ="<script>";
if(refreshParent)
{
script += "try{top.opener.refresh();}catch(e){}";
}
if(close)
{
script +="top.close();";
}
script +="</script>";
if(!win.IsClientScriptBlockRegistered("RefreshParentWindowScript"))
{
win.RegisterClientScriptBlock("RefreshParentWindowScript", script);
}
}
public static string GetPageBgColorFormat()
{
// return System.Drawing.Color.FromArgb(240,240,240);
return "White";
}
public static string GetUserPageBgColorFormat()
{
// return System.Drawing.Color.FromArgb(240,240,240);
SystemUserSettingBR systemUserSettingBR = new SystemUserSettingBR();
string color = systemUserSettingBR.GetValueByKey("BgColor");
if(color!=null)
{
return color;
}
else
{
return GetPageBgColorFormat();
}
}
/// <summary>
/// 取回电话组合的格式
/// </summary>
/// <param name="phoneCountryKey">电话的国家码</param>
/// <param name="phoneAreaKey">电话的地址码</param>
/// <param name="phoneKey">电话号码</param>
/// <param name="phoneExtKey">分号</param>
/// <returns>返回组合好的电话格式</returns>
public static string GetPhoneFormat(string phoneCountryKey, string phoneAreaKey, string phoneKey, string phoneExtKey)
{
string strRetu="";
if(phoneCountryKey!=null && phoneCountryKey!=string.Empty)
{
strRetu=phoneCountryKey;
}
if(phoneAreaKey!=null && phoneAreaKey!=string.Empty)
{
strRetu+="("+phoneAreaKey+")";
}
if(phoneKey!=null && phoneKey!=string.Empty)
{
strRetu+=phoneKey;
}
if(phoneExtKey!=null && phoneExtKey!=string.Empty)
{
strRetu+=" Ext "+phoneExtKey;
}
return strRetu;
}
public static string GetPhoneFormat(object phoneCountryKey, object phoneAreaKey, object phoneKey, object phoneExtKey)
{
string strRetu="";
if(phoneCountryKey!=null && phoneCountryKey.ToString()!=string.Empty)
{
strRetu=phoneCountryKey.ToString();
}
if(phoneAreaKey!=null && phoneAreaKey.ToString()!=string.Empty)
{
strRetu+="("+phoneAreaKey.ToString()+")";
}
if(phoneKey!=null && phoneKey.ToString()!=string.Empty)
{
strRetu+=phoneKey.ToString();
}
if(phoneExtKey!=null && phoneExtKey.ToString()!=string.Empty)
{
strRetu+=" Ext "+phoneExtKey.ToString();
}
return strRetu;
}
/// <summary>
/// 取得utc时间的当地时间
/// </summary>
/// <param name="dt"></param>
/// <returns></returns>
public static string GetUtcLocalString(object obj)
{
DateTime d = Convert.ToDateTime(obj);
return GetUtcLocalString(d, "d");
}
/// <summary>
/// by hjs 2004-10-20 取得utc时间的当地时间
/// </summary>
/// <param name="dt"></param>
/// <returns></returns>
public static string GetUtcLocalString(DateTime d)
{
return GetUtcLocalString(d, "d");
}
/// <summary>
///
/// </summary>
/// <param name="d">a DateTime value</param>
/// <param name="outputFormat">'d', 't', 'g', or 'gbr'</param>
/// <returns></returns>
public static string GetUtcLocalString(DateTime d, string outputFormat)
{
string localTimeFormat = "<script>document.write(ebcUTC2Loc({0},{1},{2},{3},{4},{5},'" + outputFormat +"'));</script>";
return string.Format(localTimeFormat, d.Year, d.Month, d.Day, d.Hour, d.Minute, d.Second);
}
public static void ParsePartNumber(string partNumber, ref string prefix, ref string partBase, ref string partitionSupport)
{
if(partNumber == null || partNumber == string.Empty)
{
prefix = string.Empty;
partBase= string.Empty;
partitionSupport = string.Empty;
return;
}
Regex regex = new Regex("[0-9]");
Match match = regex.Match(partNumber);
if(match.Success)
{
prefix = partNumber.Substring(0,match.Index);
partBase = partNumber.Substring(match.Index);
partitionSupport = partNumber.Substring(match.Index, 1);
}
else
{
prefix = partNumber;
partitionSupport = "-1";
}
}
public static void ParsePartNumberExtracted(string partNumber, ref string prefix, ref string partBase, ref string partitionSupport)
{
string l_PartNumber = GetPartNumberExtracted(partNumber);
ParsePartNumber(partNumber, ref prefix, ref partBase, ref partitionSupport);
}
/// <summary>
/// 把型号拆分放在记录行中.
/// </summary>
/// <param name="partNumber">输入型号</param>
/// <param name="m_dr">要分拆型号的记录</param>
/// <remarks>Prefix->PrefixStr[SUN20041109]</remarks>
public static void ParsePartNumberExtractedToRow(string partNumber,System.Data.DataRow m_dr)
{
m_dr["PartNumber"]=partNumber;
string l_PartNumber = GetPartNumberExtracted(partNumber);
string prefix="",partBase="",partitionSupport="";
ParsePartNumber(l_PartNumber, ref prefix, ref partBase, ref partitionSupport);
m_dr["PrefixStr"]=prefix;
m_dr["PartitionSupport"]=Utility.ToInt(partitionSupport);
m_dr["PartNumberExtracted"]=l_PartNumber;
}
public static string GetPartNumberExtracted(string partNumber)
{
if (partNumber == null || partNumber == string.Empty)
{
return "";
}
for(int i = 0; i< PARTNUMBER_FORBIDDEN_CHARACTERS.Length; i++)
{
partNumber = partNumber.Replace(PARTNUMBER_FORBIDDEN_CHARACTERS.Substring(i, 1), "");
}
return partNumber;
}
public static string GetPartNumberExtracted(string partNumber,int partNumberSearchFlg)
{
if (partNumber == null || partNumber == string.Empty)
{
return "";
}
if(partNumberSearchFlg!=5)
partNumber=GetPartNumberExtracted(partNumber);
else
{
for(int i = 0; i< PARTNUMBER_FORBIDDEN_CHARACTERS_SMARTSEARCH.Length; i++)
{
partNumber = partNumber.Replace(PARTNUMBER_FORBIDDEN_CHARACTERS_SMARTSEARCH.Substring(i, 1), "");
}
}
return partNumber;
}
public static string GetPartNumberFilterExpression(string partNumber)
{
string l_PartNumber = string.Empty;
l_PartNumber = GetPartNumberExtracted(partNumber);
if(l_PartNumber==string.Empty)
{
return string.Empty;
}
string l_prefix = string.Empty;
string l_partBase = string.Empty;
string l_partitionSupport = "-1";
Utility.ParsePartNumber(Utility.ToString(l_PartNumber).ToString(), ref l_prefix, ref l_partBase, ref l_partitionSupport);
//System.Text.StringBuilder filterExpression= new System.Text.StringBuilder("PartitionSupport = '" + l_partitionSupport + "'" );
System.Text.StringBuilder filterExpression= new System.Text.StringBuilder();
if(l_partBase != string.Empty)
{
if(l_prefix != string.Empty)
{
filterExpression.Append("PrefixStrExtracted LIKE N'" + l_prefix + "%' AND BasePartNumberExtracted LIKE N'" + l_partBase + "%'" );
}
else
{
filterExpression.Append("BasePartNumberExtracted LIKE N'" + l_partBase + "%'" );
}
}
else if(l_prefix != string.Empty)
{
filterExpression.Append("PrefixStrExtracted LIKE N'" + l_prefix + "%'" );
}
return filterExpression.ToString();
}
/// <summary>
/// 取回要查找型号的条件字符串
/// </summary>
/// <param name="reqFindPartNumber">要查的型号</param>
/// <returns>返回要查找型号的条件字符串</returns>
public static string GetPartNumberRankExpression(string reqFindPartNumber)
{
string m_RANKFUNCTION = "dbo.GetQueryRank('{0}','{1}',PrefixStrExtracted,BasePartNumberExtracted)";
string PartNumberExtracted=string.Empty;
PartNumberExtracted = GetPartNumberExtracted(reqFindPartNumber);
if(PartNumberExtracted == string.Empty)
{
return "1=2";
}
string prefix = string.Empty;
string partBase = string.Empty;
string partitionSupport = "-1";
Utility.ParsePartNumber(Utility.ToString(reqFindPartNumber).ToString(), ref prefix, ref partBase, ref partitionSupport);
if(prefix == string.Empty && partBase == string.Empty)
{
return "1=2";
}
StringBuilder filterExpression = new StringBuilder("PartitionSupport = '" + partitionSupport + "'" );
if(partBase != string.Empty)
{
if(partBase.Length <3)
{
if(prefix != string.Empty)
{
filterExpression.Append("AND PrefixStrExtracted = N'" + prefix + "' AND BasePartNumberExtracted LIKE N'" + partBase + "%'" );
}
else
{
filterExpression.Append("AND BasePartNumberExtracted = N'" + partBase + "'" );
}
}
else
{
filterExpression.Append("AND BasePartNumberExtracted LIKE N'" + partBase + "%'" );
}
}
else if(prefix != string.Empty)
{
filterExpression.Append("AND PrefixStrExtracted LIKE N'" + prefix + "%'" );
}
filterExpression.Append(" AND " + String.Format(m_RANKFUNCTION, prefix,partBase) + " IN (1,2,3,4)");
return filterExpression.ToString();
}
/// <summary>
/// 得到兑换率信息集合
/// </summary>
/// <returns></returns>
public static string GetExchangeRateInfoOfJavaScript()
{
System.Text.StringBuilder sb = new StringBuilder(200);
sb.Append(" var ExchangeRateInfo = '");
System.Data.DataRow[] m_strMap_arr=StringMapCache.RetrieveStringMap("ObjectTypeCode="+((int)ObjectTypeEnum.Organization).ToString()+" AND FieldName='CurrencyCode' ","");
if(m_strMap_arr.Length==0)
{
return sb.Append("';").ToString();
}
foreach(DataRow dr in m_strMap_arr)
{
sb.Append(dr["FieldValue"].ToString().Trim()+"|");
sb.Append(Utility.GetDecimal(dr["InternalValue"],1).ToString().Trim()+"#");
}
string resultString = sb.ToString().Substring(0,sb.ToString().Length-1);
return resultString+"';";
}
public static void SetSmartPartNumber()
{
if(HttpContext.Current.Request.QueryString["PartNumber"]!=null)
HttpContext.Current.Session["PartNumber"] = HttpContext.Current.Request.QueryString["PartNumber"];
else
HttpContext.Current.Session["PartNumber"]=string.Empty;
}
/// <summary>
/// 根据币种取回币种的计算值
/// </summary>
/// <param name="currencyCode">币种代码</param>
/// <returns></returns>
public static decimal GetExchangeRateByCurrencyCode(string currencyCode)
{
decimal m_retu=0;
if(currencyCode.Trim()=="")
m_retu=1;
else
{
System.Data.DataRow[] m_strMap_arr=StringMapCache.RetrieveStringMap("ObjectTypeCode="+((int)ObjectTypeEnum.Organization).ToString()+" AND FieldName='CurrencyCode' AND FieldValue="+currencyCode,"");
if(m_strMap_arr.Length>0)
{
m_retu=Utility.GetDecimal(m_strMap_arr[0]["InternalValue"],1);
}
}
return m_retu;
}
/// <summary>
/// 根据前一个币种及价格转换成后一币种的价格[20050120SUN]
/// </summary>
/// <returns></returns>
public static decimal GetTransferPrice(decimal price ,int firstCurrencyCode,int secondCurrencyCode)
{
try
{
return price*(GetExchangeRateByCurrencyCode(secondCurrencyCode.ToString())/GetExchangeRateByCurrencyCode(firstCurrencyCode.ToString()));
}
catch
{
return price;
}
}
/// <summary>
/// 根据税率类型取回计算值
/// </summary>
/// <param name="taxRateCode">币种代码</param>
/// <returns></returns>
public static decimal GetTaxRateByTaxRateCode(string taxRateCode)
{
decimal m_retu=0;
if(taxRateCode.Trim()=="")
m_retu=0;
else
{
System.Data.DataRow[] m_strMap_arr=StringMapCache.RetrieveStringMap("ObjectTypeCode="+((int)ObjectTypeEnum.Organization).ToString()+" AND FieldName='TaxRateCode' AND LangID='en-us' AND FieldValue="+taxRateCode,"");
if(m_strMap_arr.Length>0)
{
m_retu=Utility.GetDecimal(m_strMap_arr[0]["InternalValue"],0);
}
}
return m_retu;
}
public static bool CompareDoubleIsEqual(double first,double secord)
{
return System.Math.Abs(first-secord)<0.01;
}
public static bool CompareDecimalIsEqual(decimal first,decimal secord)
{
return System.Math.Abs(first-secord)<Convert.ToDecimal(0.01);
}
public static string CurrentAccountPeriod
{
get
{
DataSet ds = null;
using (AccountSubjectMapBR br=new AccountSubjectMapBR())
{
ds = br.GetSubjectByAlias("AccountPeriod");
}
if(ds != null && ds.Tables[0].Rows.Count == 1)
{
return ds.Tables[0].Rows[0]["SubjectNo"].ToString();
}
return string.Empty;
}
}
/// <summary>
/// 取回指定记录的ID序列号,如果没有值,则会传过来一个'0000-0000-...'
/// 该函数只是方便把一个或二个记录集的ID字段组合成'ID','ID'的形式
/// </summary>
/// <param name="specifyIDName">要取回那个字段的ID</param>
/// <param name="m_FirstDs">第一个记录集</param>
/// <param name="m_SecordDs">第二个记录集</param>
/// <returns></returns>
public static string GetSpecifyRecordIDs(string specifyIDName,System.Data.DataSet m_FirstDs,System.Data.DataSet m_SecordDs)
{
string m_retu="";
foreach(System.Data.DataRow m_dr in m_FirstDs.Tables[0].Rows)
{
if(m_retu=="")
{
if(m_dr.RowState==System.Data.DataRowState.Deleted)
{
m_retu="'"+Utility.GetGuid(m_dr[specifyIDName,System.Data.DataRowVersion.Original]).ToString()+"'";
}
else
{
m_retu="'"+Utility.GetGuid(m_dr[specifyIDName]).ToString()+"'";
}
}
else
{
if(m_dr.RowState==System.Data.DataRowState.Deleted)
{
m_retu+=",'"+Utility.GetGuid(m_dr[specifyIDName,System.Data.DataRowVersion.Original]).ToString()+"'";
}
else
{
m_retu+=",'"+Utility.GetGuid(m_dr[specifyIDName]).ToString()+"'";
}
}
}
if(m_SecordDs!=null)
{
foreach(System.Data.DataRow m_dr in m_SecordDs.Tables[0].Rows)
{
if(m_retu=="")
{
if(m_dr.RowState==System.Data.DataRowState.Deleted)
{
m_retu="'"+Utility.GetGuid(m_dr[specifyIDName,System.Data.DataRowVersion.Original]).ToString()+"'";
}
else
{
m_retu="'"+Utility.GetGuid(m_dr[specifyIDName]).ToString()+"'";
}
}
else
{
if(m_dr.RowState==System.Data.DataRowState.Deleted)
{
m_retu+=",'"+Utility.GetGuid(m_dr[specifyIDName,System.Data.DataRowVersion.Original]).ToString()+"'";
}
else
{
m_retu+=",'"+Utility.GetGuid(m_dr[specifyIDName]).ToString()+"'";
}
}
}
}
if(m_retu.Trim()=="")
{
m_retu="'"+Guid.Empty.ToString()+"'";
}
return m_retu;
}
/// <summary>
/// 取回正常的日期和时间,不经过本地时间和全局时间的转换
/// </summary>
/// <param name="obj"></param>
/// <returns></returns>
public static DateTime GetNormalDateTime(object obj,DateTime defaultValue)
{
if(IsNull(obj) || !IsDateTime(obj))
{
return defaultValue;
}
else
{
return Convert.ToDateTime(obj);
}
}
public static DateTime GetNormalDateTime(object obj)
{
return GetNormalDateTime(obj,System.DateTime.Now);
}
/// <summary>
/// 转为正常时间,不经过本地时间和全局时间的转换
/// </summary>
/// <param name="str"></param>
/// <param name="defaultValue"></param>
/// <returns></returns>
public static object ToNormalDateTime(string str, object defaultValue)
{
if(defaultValue != DBNull.Value)
{
defaultValue = IsDateTime(defaultValue) ? defaultValue : DBNull.Value;
}
if(IsNull(str) || !IsDateTime(str.Trim()))
{
return defaultValue;
}
else
{
return Convert.ToDateTime(str.Trim());
}
}
public static object ToNormalDateTime(string str)
{
return ToNormalDateTime(str,DBNull.Value);
}
/// <summary>
/// 取回时间格式
/// </summary>
/// <returns>给定的时间格式</returns>
public static string GetDateFormat()
{
string m_retu= "yyyy-MM-dd";
string datetimeCode="";
datetimeCode=new SystemUserSettingBR().GetValueByKey("DefaultDateFormat");
if(datetimeCode==null || datetimeCode==string.Empty)
{
datetimeCode=OrganizationCache.RetrieveOrganization()
.Settings.DefaultDateFormatCode.ToString();
}
try
{
m_retu=StringMapCache.RetrieveDisplayValue(ObjectTypeEnum.Organization,"DateFormatCode",
datetimeCode);
}
catch
{
}
if(m_retu==string.Empty)
{
m_retu= "yyyy-MM-dd";
}
return m_retu;
}
public static string GetLongDateFormat()
{
string m_retu= "MM/dd/yyyy hh:mm:ss";
return m_retu;
}
/// <summary>
/// 得到价格的显示格式
/// </summary>
/// <returns></returns>
/// <remarks>[SUN20041207]</remarks>
public static string GetPriceFormat()
{
string m_retu= "###,##0.00";
string m_priceCode="";
m_priceCode=new SystemUserSettingBR().GetValueByKey("DefaultPriceFormat");
if(m_priceCode==null || m_priceCode==string.Empty)
{
m_priceCode=OrganizationCache.RetrieveOrganization()
.Settings.PricingDecimalPrecision.ToString();
}
//先取个人的币种格式,如果不能取到,则了系统的。
try
{
m_retu=StringMapCache.RetrieveDisplayValue(ObjectTypeEnum.Organization,"NumberFormatCode",
m_priceCode);
}
catch{}
if(m_retu==string.Empty)
{
m_retu= "###,##0.00";
}
return m_retu;
}
/// <summary>
/// 数量的格式
/// </summary>
/// <returns></returns>
public static string GetQTYFormat()
{
return "";
}
/// <summary>
/// 得到小数位个数
/// </summary>
/// <returns></returns>
public static int GetPriceFloatCount()
{
string m_retu = GetPriceFormat();
try
{
return m_retu.Length - (m_retu.IndexOf(".")+1);
}
catch
{
}
return 2;
}
/// <summary>
/// 检查单一深度的权限
/// </summary>
/// <param name="permissionType">要检查的许可类型</param>
/// <returns></returns>
public static bool CheckSinglePermission(PrivilegeDepth permissionType)
{
return permissionType!=PrivilegeDepth.None;
}
/// <summary>
/// 检查是否对指定拥有者的某条记录具有指定许可
/// </summary>
/// <param name="permissionType">要检查的许可类型</param>
/// <param name="guidOwningUser">客户拥有者</param>
/// <returns></returns>
public static bool CheckPermission(PrivilegeDepth permissionType,Guid guidOwningUser)
{
if(permissionType==PrivilegeDepth.None)
{
return false;
}
if(permissionType==PrivilegeDepth.Global)
{
return true;
}
if(permissionType==PrivilegeDepth.Deep)
{
if(EBiz.DBM.API.Utility.CurrentUser.MemberAllUserIDs.IndexOf(guidOwningUser.ToString())>=0)
{
return true;
}
}
if(permissionType==PrivilegeDepth.Local)
{
if(EBiz.DBM.API.Utility.CurrentUser.MemberUserIDs.IndexOf(guidOwningUser.ToString())>=0)
{
return true;
}
}
if(permissionType==PrivilegeDepth.Basic)
{
if(EBiz.DBM.API.Utility.CurrentUser.EntityID==guidOwningUser || guidOwningUser==Guid.Empty)
{
return true;
}
}
return false;
}
/// <summary>
/// 获取列表SQL过滤IDs表达式
/// </summary>
/// <param name="ids">要检查的Ids, 如,CustomerList</param>
/// <returns></returns>
public static string GetOwningUserFilterExpression(string ids)
{
if(ids== string.Empty)
{
return GLOBALLIST;
}
if(ids=="'"+Guid.Empty.ToString()+"'")
{
return NONELIST;
}
string filterExpression = string.Empty;
string[] guids = ids.Split(",".ToCharArray());
foreach(string id in guids)
{
if(filterExpression.IndexOf(id) < 0)
{
if(filterExpression.Trim().Length > 0)
{
filterExpression +=" OR ";
}
filterExpression += "OwningUser=" + id;
}
}
if(filterExpression.Trim().Length > 0)
{
return " (" + filterExpression.Trim() + ") ";
}
else
{
return string.Empty;
}
}
/// <summary>
/// 根据拥有者标示获取列表SQL过滤IDs表达式
/// </summary>
/// <param name="ids">要检查的Ids, 如,CustomerList</param>
/// <returns></returns>
/// <remarks>SUN[20041217]</remarks>
public static string GetOwningUserFilterExpression(string ids,string ownerFlag)
{
if(ids== string.Empty)
{
return GLOBALLIST;
}
if(ids=="'"+Guid.Empty.ToString()+"'")
{
return NONELIST;
}
string filterExpression = string.Empty;
string[] guids = ids.Split(",".ToCharArray());
foreach(string id in guids)
{
if(filterExpression.IndexOf(id) < 0)
{
if(filterExpression.Trim().Length > 0)
{
filterExpression +=" OR ";
}
filterExpression += ownerFlag+"=" + id;
}
}
if(filterExpression.Trim().Length > 0)
{
return " (" + filterExpression.Trim() + ") ";
}
else
{
return string.Empty;
}
}
/// <summary>
/// 取回可以看到那几个仓库的库存的条件
/// </summary>
/// <param name="fieldName">仓库的字段名</param>
/// <returns></returns>
public static string GetWarehouseCondition(string fieldName)
{
string ids=Utility.CurrentPermissions.WarehouseList;
if(ids== string.Empty)
{
return GLOBALLIST;
}
if(ids=="'"+Guid.Empty.ToString()+"'")
{
return NONELIST;
}
EBiz.DBM.Common.DataSets.WarehouseDataSet
m_wh_ds=new WarehouseBR().GetByWhere("","OwnerID in ("+ids+")","");
ids="'"+Guid.Empty.ToString()+"'";
foreach(System.Data.DataRow m_dr in m_wh_ds.Warehouse)
{
ids+=",'"+m_dr["WarehouseID"].ToString()+"'";
}
string filterExpression = string.Empty;
string[] guids = ids.Split(",".ToCharArray());
foreach(string id in guids)
{
if(filterExpression.IndexOf(id) < 0)
{
if(filterExpression.Trim().Length > 0)
{
filterExpression +=" OR ";
}
filterExpression += fieldName+"=" + id;
}
}
if(filterExpression.Trim().Length > 0)
{
return " (" + filterExpression.Trim() + ") ";
}
else
{
return NONELIST;
}
}
/// <summary>
///
/// </summary>
/// <param name="partNumber"></param>
/// <param name="partNumberSearchFlg">1-Exact Prefix / Best Base,2-Exact Prefix / Exact Base,3-Any Prefix / Exact Base,4--Any Prefix / Best Base,5--smart search</param>
/// <returns></returns>
public static string GetPartNumberFilterExpression(string partNumber,int partNumberSearchFlg)
{
string partNumberExtracted=Utility.GetPartNumberExtracted(partNumber);
string s_partNumberExtracted=string.Empty;
string s_prefix=string.Empty;
if(partNumberExtracted == string.Empty)
{
return "1=2";
}
string prefix = string.Empty;
string partBase = string.Empty;
string partitionSupport = "-1";
if(partNumberSearchFlg==5)
{
s_partNumberExtracted=Utility.GetPartNumberExtracted(partNumber,5);
Utility.ParsePartNumber(s_partNumberExtracted,ref s_prefix,ref partBase,ref partitionSupport);
}
Utility.ParsePartNumber(partNumberExtracted,ref prefix,ref partBase,ref partitionSupport);
StringBuilder filterExpression = new StringBuilder("PartitionSupport = '" + partitionSupport + "'" );
if(partBase != string.Empty)
{
if(partBase.Length <3)
{
if(prefix != string.Empty)
{
if(partNumberSearchFlg==5&&s_prefix!=string.Empty)
filterExpression.Append("AND patindex('"+s_prefix.Replace("?","%")+"',PrefixStrExtracted)>0 AND BasePartNumberExtracted LIKE '" + partBase + "%'" );
else
filterExpression.Append("AND PrefixStrExtracted = '" + prefix + "' AND BasePartNumberExtracted LIKE '" + partBase + "%'" );
}
else
{
filterExpression.Append("AND BasePartNumberExtracted = '" + partBase + "'" );
}
}
else
{
if(partNumberSearchFlg==5&&s_prefix!=string.Empty)
filterExpression.Append("AND patindex('"+s_prefix.Replace("?","%")+"',PrefixStrExtracted)>0 AND BasePartNumberExtracted LIKE '" + partBase + "%'" );
else
filterExpression.Append("AND BasePartNumberExtracted LIKE '" + partBase + "%'" );
}
}
else if(prefix != string.Empty)
{
if(partNumberSearchFlg==5&&s_prefix!=string.Empty)
filterExpression.Append("AND patindex('"+s_prefix.Replace("?","%")+"',PrefixStrExtracted)>0" );
filterExpression.Append("AND PrefixStrExtracted LIKE '" + prefix + "%'" );
}
if(partNumberSearchFlg == 5)//smart search智能查询:
{
filterExpression.Append(" AND " + String.Format(RANKFUNCTION, prefix,partBase) + " IN (1,2,3,4)");
}
else if(partNumberSearchFlg == 2)//Exact Prefix / Exact Base准确前缀/准确基码
{
filterExpression.Append(" AND " + String.Format(RANKFUNCTION, prefix,partBase) + " IN (1) ");
}
else if(partNumberSearchFlg == 1)//Exact Prefix / Best Base准确前缀/最佳基码
{
filterExpression.Append(" AND " + String.Format(RANKFUNCTION, prefix,partBase) + " IN (1,2) ");
}
else if(partNumberSearchFlg == 3)//Any Prefix / Exact Base任意前缀/准确基码
{
filterExpression.Append(" AND " + String.Format(RANKFUNCTION, prefix,partBase) + " IN (1,3) ");
}
else if(partNumberSearchFlg == 4)//Any Prefix / Best Base任意前缀/最佳基码
{
filterExpression.Append(" AND " + String.Format(RANKFUNCTION, prefix,partBase) + " IN (1,2,3,4) ");
}
else
{
filterExpression.Append(" AND " + String.Format(RANKFUNCTION, prefix,partBase) + " IN (1,2) ");
}
return filterExpression.ToString();
}
public static string GetClientScriptBlock(string str)
{
string res ="<script language='javascript'> <!-- " + str +" --></script> ";
return res;
}
#region UserInfoScript
public static string GetUserInfoScriptString()
{
DataSet ds = new ConnectionBR().GetByWhere("EntityID, LoginName","", "LoginName","View_User_Joined");
System.Text.StringBuilder sb = new System.Text.StringBuilder();
sb.Append("<script language='javascript'>");
sb.Append(getArrayUserGroup("self",getUserInfo(1,ds.Tables[0])));
sb.Append(getArrayUserGroup("group",getUserInfo(2,ds.Tables[0])));
sb.Append(getArrayUserGroup("unit",getUserInfo(3,ds.Tables[0])));
sb.Append(getArrayUserGroup("all",getUserInfo(4,ds.Tables[0])));
sb.Append("</script>");
return sb.ToString();
}
/// <summary>
/// 得到用户分类的数据集合
/// </summary>
/// <param name="name"></param>
/// <param name="htInfo"></param>
/// <returns></returns>
public static string getArrayUserGroup(string name,string[] htInfo)
{
string arrayName = "ussg_"+name+"_array";//生成用户标示集合名
System.Text.StringBuilder sb = new System.Text.StringBuilder(500);
sb.Append("var "+arrayName+"= new Array();");
for(int i=0;i<htInfo.Length;i++)
{
if(htInfo[i]==null||htInfo[i]==string.Empty)
{
continue;
}
else
{
sb.Append(arrayName+"["+i.ToString()+"]="+htInfo[i]+";");
}
}
return sb.ToString();
}
/// <summary>
/// 得到用户数据集合
/// </summary>
/// <param name="flag"></param>
/// <param name="dtInfo"></param>
/// <returns></returns>
public static string[] getUserInfo(int flag ,DataTable dtInfo)
{
string[] htInfo =null;
if(flag==1)
{
htInfo = new string[1];
htInfo[0] = "'"+Utility.CurrentUser.EntityID+"|"+Utility.CurrentUser.EntityAlias+"'";
return htInfo;
}
else
{
string ids = string.Empty;
if(flag==4)//全部
{
htInfo = new string[dtInfo.Rows.Count];
for(int i=0;i<dtInfo.Rows.Count;i++)
{
string loginName = dtInfo.Rows[i]["LoginName"].ToString();
string guid = dtInfo.Rows[i]["EntityID"].ToString();
htInfo[i] = "'"+guid+"|"+loginName+"'";
}
return htInfo;
}
else if(flag==2||flag==3)//主或者是团队
{
if(flag==2)//group
{
ids=Utility.CurrentUser.MemberUserIDs.ToString().Replace("'","");
}
if(flag==3)
{
ids=Utility.CurrentUser.MemberAllUserIDs.ToString().Replace("'","");
}
int index = 0;//下标索引
string[] guids = ids.Split(",".ToCharArray());
htInfo = new string[guids.Length];
for(int i=0;i<guids.Length;i++)
{
string loginName = string.Empty;
DataRow[] drs = dtInfo.Select("EntityID='"+guids[i]+"'");
if(drs.Length==1)
{
loginName = drs[0]["LoginName"].ToString();
htInfo[index] = "'"+guids[i]+"|"+loginName+"'";
index++;
}
}
return htInfo;
}
else
{
return null;
}
}
}
#endregion
/// <summary>
/// 这是取回事务对象,如果有调用,请维护好提交和回滚
/// </summary>
/// <returns></returns>
public static System.Data.SqlClient.SqlTransaction GetTransaction()
{
System.Data.SqlClient.SqlConnection m_con=new System.Data.SqlClient.SqlConnection(Utility.ConnectionString);
m_con.Open();
System.Data.SqlClient.SqlTransaction m_transaction=
m_con.BeginTransaction();
return m_transaction;
}
/// <summary>
/// 取回指定记录的ID序列号,如果没有值,则会传过来一个'0000-0000-...'
/// </summary>
/// <param name="specifyIDName">要取回那个字段的ID</param>
/// <param name="m_FirstDs">第一个记录集</param>
/// <param name="m_SecordDs">第二个记录集</param>
/// <returns></returns>
public static string GetSpecifyRecordIDs(string specifyIDName,System.Data.DataSet m_FirstDs,System.Data.DataSet m_SecordDs,string condition)
{
string m_retu="";
foreach(System.Data.DataRow m_dr in m_FirstDs.Tables[0].Select(condition))
{
if(m_retu=="")
{
m_retu="'"+Utility.GetGuid(m_dr[specifyIDName]).ToString()+"'";
}
else
{
m_retu+=",'"+Utility.GetGuid(m_dr[specifyIDName]).ToString()+"'";
}
}
if(m_SecordDs!=null)
{
foreach(System.Data.DataRow m_dr in m_SecordDs.Tables[0].Select(condition))
{
if(m_retu=="")
{
m_retu="'"+Utility.GetGuid(m_dr[specifyIDName]).ToString()+"'";
}
else
{
m_retu+=",'"+Utility.GetGuid(m_dr[specifyIDName]).ToString()+"'";
}
}
}
if(m_retu.Trim()=="")
{
m_retu="'"+Guid.Empty.ToString()+"'";
}
return m_retu;
}
/// <summary>
/// 这是根据一个某个条件(一般是主键的条件),取回一行记录,可能为空
/// </summary>
/// <param name="m_dt"></param>
/// <param name="condition"></param>
/// <returns>如果条件不合,则取回来的是空值</returns>
public static System.Data.DataRow GetDataRowFromTableByCondition(System.Data.DataSet m_ds,string condition)
{
System.Data.DataRow[] m_arr=m_ds.Tables[0].Select(condition);
if(m_arr.Length==0)
return null;
else
return m_arr[0];
}
/// <summary>
/// 取得当前页面的名称
/// </summary>
/// <returns></returns>
public static string GetCurrentPageName()
{
string pageName = System.Web.HttpContext.Current.Request.FilePath;
if(pageName.IndexOf("/")<0)
{
return pageName;
}
else
{
pageName = pageName.Substring(pageName.LastIndexOf("/")+1);
pageName = pageName.Substring(0,pageName.LastIndexOf("."));
return pageName;
}
}
public static string GetCurrencySymbol(int currencyCode)
{
if(currencyCode==1)
{
return "¥";
}
if(currencyCode==2)
{
return "US$";
}
return "";
}
public static void BillEncode(System.Data.DataSet ds)
{
BillEncode(ds,false);
}
/// <summary>
/// 单据编码据总项传入,进行编码
/// </summary>
/// <param name="ds"></param>
/// <param name="UpdateToCode">为true表示在编辑状态下也要重新生成他的编码</param>
/// <returns></returns>
public static void BillEncode(System.Data.DataSet ds,bool UpdateToCode)
{
//如果传来的数据集不含有ObjectTypeCode字段的话,就说明他不是编码的数据
if(!ds.Tables[0].Columns.Contains("ObjectTypeCode"))
{
return;
}
foreach(System.Data.DataRow m_dr in ds.Tables[0].Rows)
{
if(m_dr.RowState==System.Data.DataRowState.Deleted)
continue;
string m_OrderNumber=string.Empty;
//如果ObjectTypeCode不存在的话,就不是编码的数据
if(m_dr["ObjectTypeCode"]==System.DBNull.Value)
{
continue;
}
m_OrderNumber="X";//第一位等下面用switch来做
switch((EBiz.DBM.Common.Types.ObjectTypeEnum)m_dr["ObjectTypeCode"])
{
case EBiz.DBM.Common.Types.ObjectTypeEnum.CustomerPayment:
case EBiz.DBM.Common.Types.ObjectTypeEnum.PaymentToSupplier:
{
EBiz.DBM.Common.DataSets.AccountDataSet m_account_ds=new AccountBR().GetByAccountID(Utility.GetGuid(m_dr["AccountID"]));
if(m_account_ds==null || m_account_ds.Tables[0].Rows.Count==0)
{
m_OrderNumber+="XXX";
}
else
{
string m_t=StringMapCache.RetrieveAbbreviation((int)EBiz.DBM.Common.Types.ObjectTypeEnum.Organization,"TaxRateCode",Utility.GetInt(m_account_ds.Tables[0].Rows[0]["TaxRateCode"],0));
if(m_t==string.Empty)
{
m_t="X";
}
m_OrderNumber+=m_t;
m_t=StringMapCache.RetrieveAbbreviation((int)EBiz.DBM.Common.Types.ObjectTypeEnum.Organization,"PaymentTermCode",Utility.GetInt(m_account_ds.Tables[0].Rows[0]["PaymentTermsCode"],0));
if(m_t==string.Empty)
{
m_t="X";
}
m_OrderNumber+=m_t;
m_OrderNumber+="X";
}
break;
}
default:
{
//第二位编码--税率
if(m_dr.Table.Columns.Contains("TaxRateCode"))
{
if(m_dr["TaxRateCode"]==System.DBNull.Value)
{
m_OrderNumber+="X";
}
else
{
string m_t=StringMapCache.RetrieveAbbreviation((int)EBiz.DBM.Common.Types.ObjectTypeEnum.Organization,"TaxRateCode",(int)m_dr["TaxRateCode"]);
if(m_t==string.Empty)
{
m_t="X";
}
m_OrderNumber+=m_t;
}
}
else
{
m_OrderNumber+="X";
}
//第三位编码
if(m_dr.Table.Columns.Contains("PaymentTermCode"))
{
if(m_dr["PaymentTermCode"]==System.DBNull.Value)
{
m_OrderNumber+="X";
}
else
{
string m_t=StringMapCache.RetrieveAbbreviation((int)EBiz.DBM.Common.Types.ObjectTypeEnum.Organization,"PaymentTermCode",(int)m_dr["PaymentTermCode"]);
if(m_t==string.Empty)
{
m_t="X";
}
m_OrderNumber+=m_t;
}
}
else
{
m_OrderNumber+="X";
}
//第四位编码
if(m_dr.Table.Columns.Contains("FreightPaymentTermCode"))
{
if(m_dr["FreightPaymentTermCode"]==System.DBNull.Value)
{
m_OrderNumber+="X";
}
else
{
string m_t=StringMapCache.RetrieveAbbreviation((int)EBiz.DBM.Common.Types.ObjectTypeEnum.Organization,"FreightPaymentTermCode",(int)m_dr["FreightPaymentTermCode"]);
if(m_t==string.Empty)
{
m_t="X";
}
m_OrderNumber+=m_t;
}
}
else
{
m_OrderNumber+="X";
}
break;
}
}
m_OrderNumber+="-";
if(m_dr.RowState==System.Data.DataRowState.Added || UpdateToCode)
{
//拥有者
Guid m_OwningUser=Guid.Empty;
string m_OwningName=string.Empty;
if(m_dr.Table.Columns.Contains("OwningUser"))
{
if(m_dr["OwningUser"]!=System.DBNull.Value)
{
m_OwningUser=(Guid)m_dr["OwningUser"];
}
}
else if(m_dr.Table.Columns.Contains("CreatedBy"))
{
if(m_dr["CreatedBy"]!=System.DBNull.Value)
{
m_OwningUser=(Guid)m_dr["CreatedBy"];
}
}
//取Name
if(m_OwningUser==Utility.CurrentUser.EntityID)
{
m_OwningName=Utility.CurrentUser.EntityAlias;
}
else
{
try
{
Entity m_u_ds=new EBiz.Security.API.Connection().GetEntityByID(m_OwningUser);
m_OwningName=m_u_ds.EntityAlias;
}
catch
{
m_OwningName=string.Empty;
}
}
m_OrderNumber+=m_OwningName;
//年代编码
System.DateTime m_Day=System.DateTime.Today;
if(m_dr.Table.Columns.Contains("CreatedOn"))
{
if(m_dr["CreatedOn"]!=System.DBNull.Value)
{
m_Day=(System.DateTime)m_dr["CreatedOn"];
}
}
char m_YearCode='A';
try
{
m_YearCode=Convert.ToChar(Convert.ToInt64('A')+(m_Day.Year-2000));
}
catch
{
m_YearCode=Convert.ToChar(Convert.ToInt64('A')+(System.DateTime.Today.Year-2000));
}
m_OrderNumber+=m_YearCode;//年
m_OrderNumber+=m_Day.Month.ToString("00");//月
m_OrderNumber+=m_Day.Day.ToString("00");//日
switch((EBiz.DBM.Common.Types.ObjectTypeEnum)m_dr["ObjectTypeCode"])
{
case EBiz.DBM.Common.Types.ObjectTypeEnum.SalesOrder:
{
m_OrderNumber=m_OrderNumber.Substring(1);
m_OrderNumber="S"+m_OrderNumber;
m_OrderNumber+=GetSerialNumberFromTable("SalesOrderBase",m_Day,m_OwningUser,"");
break;
}
case EBiz.DBM.Common.Types.ObjectTypeEnum.DeliveryToCustomer:
{
m_OrderNumber=m_OrderNumber.Substring(1);
m_OrderNumber="L"+m_OrderNumber;
m_OrderNumber+=GetSerialNumberFromTable("DeliveryToCustomerBase",m_Day,m_OwningUser,"");
break;
}
case EBiz.DBM.Common.Types.ObjectTypeEnum.PurchaseOrder:
{
m_OrderNumber=m_OrderNumber.Substring(1);
m_OrderNumber="P"+m_OrderNumber;
m_OrderNumber+=GetSerialNumberFromTable("PurchaseOrderBase",m_Day,m_OwningUser,"");
break;
}
case EBiz.DBM.Common.Types.ObjectTypeEnum.SupplierDelivery:
{
m_OrderNumber=m_OrderNumber.Substring(1);
m_OrderNumber="J"+m_OrderNumber;
m_OrderNumber+=GetSerialNumberFromTable("SupplierDeliveryBase",m_Day,m_OwningUser,"");
break;
}
case EBiz.DBM.Common.Types.ObjectTypeEnum.SalesInvoice:
{
m_OrderNumber=m_OrderNumber.Substring(1);
if(Utility.GetInt(m_dr["BillTypeCode"],0)==1)//货单发票
{
m_OrderNumber="I"+m_OrderNumber;
m_OrderNumber+=GetSerialNumberFromTable("SalesInvoiceBase",m_Day,m_OwningUser,"BillTypeCode=1");
}
else//形式发票
{
m_OrderNumber="F"+m_OrderNumber;
m_OrderNumber+=GetSerialNumberFromTable("SalesInvoiceBase",m_Day,m_OwningUser,"BillTypeCode=2");
}
break;
}
case EBiz.DBM.Common.Types.ObjectTypeEnum.PurchaseInvoice:
{
m_OrderNumber=m_OrderNumber.Substring(1);
if(Utility.GetInt(m_dr["BillTypeCode"],0)==1)//货单发票
{
m_OrderNumber="K"+m_OrderNumber;
m_OrderNumber+=GetSerialNumberFromTable("PurchaseInvoiceBase",m_Day,m_OwningUser,"BillTypeCode=1");
}
else//形式发票
{
m_OrderNumber="G"+m_OrderNumber;
m_OrderNumber+=GetSerialNumberFromTable("PurchaseInvoiceBase",m_Day,m_OwningUser,"BillTypeCode=2");
}
break;
}
case EBiz.DBM.Common.Types.ObjectTypeEnum.RMAFromCustomer:
{
m_OrderNumber=m_OrderNumber.Substring(1);
m_OrderNumber="M"+m_OrderNumber;
m_OrderNumber+=GetSerialNumberFromTable("RMAFromCustomerBase",m_Day,m_OwningUser,"");
break;
}
case EBiz.DBM.Common.Types.ObjectTypeEnum.RMAToSupplier:
{
m_OrderNumber=m_OrderNumber.Substring(1);
m_OrderNumber="N"+m_OrderNumber;
m_OrderNumber+=GetSerialNumberFromTable("RMAToSupplierBase",m_Day,m_OwningUser,"");
break;
}
case EBiz.DBM.Common.Types.ObjectTypeEnum.CustomerPayment:
{
m_OrderNumber=m_OrderNumber.Substring(1);
m_OrderNumber="P"+m_OrderNumber;
m_OrderNumber+=GetSerialNumberFromTable("PaymentBase",m_Day,m_OwningUser,"ObjectTypeCode="+((int)EBiz.DBM.Common.Types.ObjectTypeEnum.CustomerPayment).ToString());
break;
}
case EBiz.DBM.Common.Types.ObjectTypeEnum.PaymentToSupplier:
{
m_OrderNumber=m_OrderNumber.Substring(1);
m_OrderNumber="T"+m_OrderNumber;
m_OrderNumber+=GetSerialNumberFromTable("PaymentBase",m_Day,m_OwningUser,"ObjectTypeCode="+((int)EBiz.DBM.Common.Types.ObjectTypeEnum.PaymentToSupplier).ToString());
break;
}
}
}
else
{
m_dr["OrderNumber"]=m_dr["OrderNumber"].ToString().Substring(0,1)+m_OrderNumber.Substring(1,4)+m_dr["OrderNumber"].ToString().Substring(5);
}
if(m_OrderNumber.Length>12)
{
m_dr["OrderNumber"]=m_OrderNumber;
}
}
}
/// <summary>
/// 取回当天,当人的当前单的序号
/// </summary>
/// <param name="TableName"></param>
/// <param name="m_Day"></param>
/// <param name="m_OwningUser"></param>
/// <param name="OtherCondition"></param>
/// <returns></returns>
private static string GetSerialNumberFromTable(string TableName,System.DateTime m_Day,Guid m_OwningUser,string OtherCondition)
{
string m_return=string.Empty;
System.Data.DataSet m_tem_ds=null;
try
{
string m_sql="Select Max(cast(SUBSTRING(coalesce(OrderNumber,''),coalesce(Len(OrderNumber),0)-2,3) as int)) From "+TableName+" WHERE CreatedOn>='"+m_Day.ToString("MM/dd/yyyy 00:00:00")+"' AND CreatedOn<='"+m_Day.ToString("MM/dd/yyyy 23:59:59")+"' AND OwningUser='"+m_OwningUser.ToString()+"'";
if(OtherCondition!=null && OtherCondition!=string.Empty)
{
m_sql+=" AND "+OtherCondition;
}
m_tem_ds=new ConnectionBR().ProcessQuery(m_sql);
}
catch{}
if(m_tem_ds==null)
{
m_return="000";
}
else
{
if(m_tem_ds.Tables[0].Rows.Count==0 || m_tem_ds.Tables[0].Rows[0][0]==System.DBNull.Value)
{
m_return="001";
}
else
{
int inttem=(int)m_tem_ds.Tables[0].Rows[0][0]+1;
string str_tem="000"+inttem.ToString();
str_tem=str_tem.Substring(str_tem.Length-3,3);
m_return=str_tem;
}
}
return m_return;
}
/// <summary>
/// 根据权限深度取IDS
/// </summary>
/// <param name="deep"></param>
/// <returns></returns>
public static string GetIDsByDeep(PrivilegeDepth deep)
{
UserToken token=(UserToken)System.Web.HttpContext.Current.Session["UserToken"];
string ids = UserPermissions.EMPTY_ID;
if (deep==PrivilegeDepth.Global)
{
ids = string.Empty;
}
else if(deep==PrivilegeDepth.Deep)
{
ids = token.MemberAllUserIDs;
}
else if(deep==PrivilegeDepth.Local)
{
ids = token.MemberUserIDs;
}
else if(deep==PrivilegeDepth.Basic)
{
ids = "'" + token.EntityID.ToString() + "','" + Guid.Empty.ToString() + "'";
}
else
{
ids = UserPermissions.EMPTY_ID;
}
return ids;
}
/// <summary>
/// 得到型号的显示格式
/// </summary>
/// <param name="partNumber"></param>
/// <param name="key"></param>
/// <returns></returns>
public static string GetPartFormat(string partNumber, string key)
{
if(key == null || key == string.Empty)
{
return string.Empty;
}
string prefix = string.Empty;
string partBase = string.Empty;
string partitionSupport = "-1";
ParsePartNumber(key, ref prefix, ref partBase, ref partitionSupport);
string patternExact = string.Empty;
string patternBase = string.Empty;
foreach(char c in key)
{
if (c=='+') continue;
patternExact += @"W*" + c;
}
if(partBase != string.Empty)
{
foreach(char c in partBase)
{
patternBase += @"W*" + c;
}
}
Regex regexExact = new Regex(patternExact, RegexOptions.IgnoreCase);
Match match = regexExact.Match(partNumber);
if(match.Success)
{
return partNumber.Substring(0,match.Index) + "<b><font color='red'>" + match.Value + "</font></b>" + partNumber.Substring(match.Index + match.Value.Length);
}
else if(partBase != string.Empty)
{
Regex regexBase = new Regex(patternBase, RegexOptions.IgnoreCase);
Match m = regexBase.Match(partNumber);
if(m.Success)
{
return partNumber.Substring(0,m.Index) + "<b><font color='red'>" + m.Value + "</font></b>" + partNumber.Substring(m.Index + m.Value.Length);
}
else
{
return partNumber;
}
}
else
{
return partNumber;
}
}
public static string GetAddressConditionByWarehouse(string warehouseID)
{
System.Text.StringBuilder filterExpression=new StringBuilder();
string addressID=Guid.Empty.ToString();
string address2ID=Guid.Empty.ToString();
string address3ID=Guid.Empty.ToString();
string address4ID=Guid.Empty.ToString();
string address5ID=Guid.Empty.ToString();
string address6ID=Guid.Empty.ToString();
System.Data.DataSet m_ds=new EBiz.DBM.API.WarehouseBR().GetByWhere("","WarehouseID='"+warehouseID.Trim()+"'","");
if(m_ds.Tables[0].Rows.Count>0)
{
addressID=Utility.GetGuid(m_ds.Tables[0].Rows[0]["AddressID"]).ToString();
address2ID=Utility.GetGuid(m_ds.Tables[0].Rows[0]["Address2ID"]).ToString();
address3ID=Utility.GetGuid(m_ds.Tables[0].Rows[0]["Address3ID"]).ToString();
address4ID=Utility.GetGuid(m_ds.Tables[0].Rows[0]["Address4ID"]).ToString();
address5ID=Utility.GetGuid(m_ds.Tables[0].Rows[0]["Address5ID"]).ToString();
address6ID=Utility.GetGuid(m_ds.Tables[0].Rows[0]["Address6ID"]).ToString();
}
m_ds=new EBiz.DBM.API.WarehouseBR().GetAll();
string m_con=string.Empty;
foreach(System.Data.DataRow m_dr in m_ds.Tables[0].Rows)
{
if(Utility.GetGuid(m_dr["AddressID"])!=Guid.Empty)
{
if(m_con==string.Empty)
{
m_con="'"+m_dr["AddressID"].ToString()+"'";
}
else
{
m_con+=",'"+m_dr["AddressID"].ToString()+"'";
}
}
if(Utility.GetGuid(m_dr["Address2ID"])!=Guid.Empty)
{
if(m_con==string.Empty)
{
m_con="'"+m_dr["Address2ID"].ToString()+"'";
}
else
{
m_con+=",'"+m_dr["Address2ID"].ToString()+"'";
}
}
if(Utility.GetGuid(m_dr["Address3ID"])!=Guid.Empty)
{
if(m_con==string.Empty)
{
m_con="'"+m_dr["Address3ID"].ToString()+"'";
}
else
{
m_con+=",'"+m_dr["Address3ID"].ToString()+"'";
}
}
if(Utility.GetGuid(m_dr["Address4ID"])!=Guid.Empty)
{
if(m_con==string.Empty)
{
m_con="'"+m_dr["Address4ID"].ToString()+"'";
}
else
{
m_con+=",'"+m_dr["Address4ID"].ToString()+"'";
}
}
if(Utility.GetGuid(m_dr["Address5ID"])!=Guid.Empty)
{
if(m_con==string.Empty)
{
m_con="'"+m_dr["Address5ID"].ToString()+"'";
}
else
{
m_con+=",'"+m_dr["Address5ID"].ToString()+"'";
}
}
if(Utility.GetGuid(m_dr["Address6ID"])!=Guid.Empty)
{
if(m_con==string.Empty)
{
m_con="'"+m_dr["Address6ID"].ToString()+"'";
}
else
{
m_con+=",'"+m_dr["Address6ID"].ToString()+"'";
}
}
}
if(m_con!=string.Empty)
{
m_con="AccountAddressID NOT IN ("+m_con+")";
}
m_ds=new EBiz.DBM.API.AccountAddressBR().GetByWhere("","ParentID='"+EBiz.DBM.API.OrganizationCache.RetrieveOrganization().ID.ToString() +"' AND ParentObjectTypeCode="+((int)EBiz.DBM.Common.Types.ObjectTypeEnum.Organization).ToString()+(m_con==string.Empty?"":(" AND "+m_con)),"");
string tem="";
if(addressID!=string.Empty)
{
tem="AddressID='"+addressID.ToString()+"'";
}
if(address2ID!=string.Empty)
{
if(tem!=string.Empty)
tem+=" OR ";
tem+="AddressID='"+address2ID.ToString()+"'";
}
if(address3ID!=string.Empty)
{
if(tem!=string.Empty)
tem+=" OR ";
tem+="AddressID='"+address3ID.ToString()+"'";
}
if(address4ID!=string.Empty)
{
if(tem!=string.Empty)
tem+=" OR ";
tem+="AddressID='"+address4ID.ToString()+"'";
}
if(address5ID!=string.Empty)
{
if(tem!=string.Empty)
tem+=" OR ";
tem+="AddressID='"+address5ID.ToString()+"'";
}
if(address6ID!=string.Empty)
{
if(tem!=string.Empty)
tem+=" OR ";
tem+="AddressID='"+address6ID.ToString()+"'";
}
filterExpression.Append("(");
if(tem!=string.Empty)
{
filterExpression.Append(tem);
}
filterExpression.Append(" or WarehouseID='"+Utility.GetGuid(warehouseID).ToString()+"'");
foreach(System.Data.DataRow m_dr in m_ds.Tables[0].Rows)
{
filterExpression.Append(" OR AddressID='"+m_dr["AccountAddressID"].ToString()+"' ");
}
filterExpression.Append(")");
return filterExpression.ToString();
}
/// <summary>
/// 得到清单费用计算比率值(运费, 关税等)
/// </summary>
/// <returns></returns>
public static decimal GetChargeRateValue()
{
return 1.04M;
}
/// <summary>
/// 涉及到库存销售的比值。
/// </summary>
/// <param name="soTaxCode"></param>
/// <param name="ioTaxCode"></param>
/// <returns></returns>
public static decimal GetStockFeeRateValue(int soTaxCode,int ioTaxCode)
{
if(ioTaxCode==int.MinValue)//
{
return 1.06135M;
}
else
{
return GetContactFeeRateValue(soTaxCode,ioTaxCode);
}
}
/// <summary>
/// 取出关系到销售税率与采购税率的计算值
/// </summary>
/// <param name="soTaxCode"></param>
/// <param name="poTaxCode"></param>
/// <returns></returns>
public static decimal GetContactFeeRateValue(int soTaxCode,int poTaxCode)
{
if(poTaxCode==int.MinValue)//无税率,按海外采购计算
{
return 1.06135M;
}
else
{
if(poTaxCode==OVERSEA_TAX_CODE||poTaxCode==OTHER_TAX_CODE)//海外采购
{
//取出存在于中文中的计算值
decimal computeValue = StringMapCache.RetrieveIntervalValue((int)ObjectTypeEnum.Organization,"TaxRateCode",soTaxCode,"zh-CN");
if(computeValue!=0)
{
return computeValue;
}
else
{
return 1;
}
}
else
{
return 1;
}
}
}
/// <summary>
/// 得到拥有者表达式
/// </summary>
/// <param name="listByAccount"></param>
/// <param name="list"></param>
/// <returns></returns>
public static string GetOwnerListExpression(string listByAccount,string list)
{
if(System.Web.HttpContext.Current.Request.QueryString["id"]!=null)
{
return Utility.GetOwningUserFilterExpression(listByAccount,"AccountOwningUser");
}
else
{
return Utility.GetOwningUserFilterExpression(list);
}
}
/// <summary>
/// 得到拥有者表达式
/// </summary>
/// <param name="listByAccount"></param>
/// <param name="list"></param>
/// <returns></returns>
public static string GetOwnerListExpression(string listByAccount,string list,string ownerFlag)
{
if(System.Web.HttpContext.Current.Request.QueryString["id"]!=null)
{
return Utility.GetOwningUserFilterExpression(listByAccount,"AccountOwningUser");
}
else
{
return Utility.GetOwningUserFilterExpression(list,ownerFlag);
}
}
/// <summary>
/// 判断两个税率是否相同
/// </summary>
/// <param name="taxCode1"></param>
/// <param name="taxCode2"></param>
/// <returns></returns>
public static bool JudgeTaxCodeSame(int taxCode1,int taxCode2)
{
if(taxCode1==taxCode2)
{
return true;
}
else
{
if(taxCode1==9||taxCode1==10)//海外与其他,不可能相同
{
return false;
}
else
{
if(taxCode1==1&&taxCode2==2)
{
return true;
}
if(taxCode1==2&&taxCode2==1)
{
return true;
}
if(taxCode1==3&&taxCode2==4)
{
return true;
}
if(taxCode1==4&&taxCode2==3)
{
return true;
}
if(taxCode1==5&&taxCode2==6)
{
return true;
}
if(taxCode1==6&&taxCode2==5)
{
return true;
}
if(taxCode1==7&&taxCode2==8)
{
return true;
}
if(taxCode1==8&&taxCode2==8)
{
return true;
}
return false;
}
}
}
/// <summary>
/// 将简体中文转换繁体中文
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public static string ConvertNumerous(string str)
{
System.Text.StringBuilder sb = new System.Text.StringBuilder();
for(int i=0;i<str.Length;i++)
{
if(simpleString.IndexOf(str[i])!=-1)
{
sb.Append(numerousString[simpleString.IndexOf(str[i])]);
}
else
{
sb.Append(str[i]);
}
}
return sb.ToString();
}
}
}
using System.Data;
using EBiz.Security.API;
using System.IO;
using System.Reflection;
using System.Text;
using System.Text.RegularExpressions;
using System.Xml;
using System.Xml.Serialization;
using System.Globalization;
using System.Web;
using System.Web.Security;
using System.Configuration;
using EBiz.DBM.Common.Types;
namespace EBiz.DBM.API
{
/// <summary>
/// 这是收集一些常用的函数
/// </summary>
public class Utility
{
public const string numerousString = "啊阿埃挨哎唉哀皚癌藹矮艾礙愛隘鞍氨安俺按暗岸胺案肮昂盎凹敖熬翺襖傲奧懊澳芭捌扒叭吧笆八疤巴拔跋靶把耙壩霸罷爸白柏百擺佰敗拜稗斑班搬扳般頒板版扮拌伴瓣半辦絆邦幫梆榜膀綁棒磅蚌鎊傍謗苞胞包褒剝薄雹保堡飽寶抱報暴豹鮑爆杯碑悲卑北輩背貝鋇倍狽備憊焙被奔苯本笨崩繃甭泵蹦迸逼鼻比鄙筆彼碧蓖蔽畢斃毖幣庇痹閉敝弊必辟壁臂避陛鞭邊編貶扁便變卞辨辯辮遍標彪膘表鼈憋別癟彬斌瀕濱賓擯兵冰柄丙秉餅炳病並玻菠播撥缽波博勃搏鉑箔伯帛舶脖膊渤泊駁捕蔔哺補埠不布步簿部怖擦猜裁材才財睬踩采彩菜蔡餐參蠶殘慚慘燦蒼艙倉滄藏操糙槽曹草廁策側冊測層蹭插叉茬茶查碴搽察岔差詫拆柴豺攙摻蟬饞讒纏鏟産闡顫昌猖場嘗常長償腸廠敞暢唱倡超抄鈔朝嘲潮巢吵炒車扯撤掣徹澈郴臣辰塵晨忱沈陳趁襯撐稱城橙成呈乘程懲澄誠承逞騁秤吃癡持匙池遲弛馳恥齒侈尺赤翅斥熾充沖蟲崇寵抽酬疇躊稠愁籌仇綢瞅醜臭初出櫥廚躇鋤雛滁除楚礎儲矗搐觸處揣川穿椽傳船喘串瘡窗幢床闖創吹炊捶錘垂春椿醇唇淳純蠢戳綽疵茨磁雌辭慈瓷詞此刺賜次聰蔥囪匆從叢湊粗醋簇促躥篡竄摧崔催脆瘁粹淬翠村存寸磋撮搓措挫錯搭達答瘩打大呆歹傣戴帶殆代貸袋待逮怠耽擔丹單鄲撣膽旦氮但憚淡誕彈蛋當擋黨蕩檔刀搗蹈倒島禱導到稻悼道盜德得的蹬燈登等瞪凳鄧堤低滴迪敵笛狄滌翟嫡抵底地蒂第帝弟"
+ "遞締顛掂滇碘點典靛墊電佃甸店惦奠澱殿碉叼雕凋***掉吊釣調跌爹碟蝶叠諜疊丁盯叮釘頂鼎錠定訂丟東冬董懂動棟侗恫凍洞兜抖鬥陡豆逗痘都督毒犢獨讀堵睹賭杜鍍肚度渡妒端短鍛段斷緞堆兌隊對墩噸蹲敦頓囤鈍盾遁掇哆多奪垛躲朵跺舵剁惰墮蛾峨鵝俄額訛娥惡厄扼遏鄂餓恩而兒耳爾餌洱二貳發罰筏伐乏閥法琺藩帆番翻樊礬釩繁凡煩反返範販犯飯泛坊芳方肪房防妨仿訪紡放菲非啡飛肥匪誹吠肺廢沸費芬酚吩氛分紛墳焚汾粉奮份忿憤糞豐封楓蜂峰鋒風瘋烽逢馮縫諷奉鳳佛否夫敷膚孵扶拂輻幅氟符伏俘服浮涪福袱弗甫撫輔俯釜斧脯腑府腐赴副覆賦複傅付阜父腹負富訃附婦縛咐噶嘎該改概鈣蓋溉幹甘杆柑竿肝趕感稈敢贛岡剛鋼缸肛綱崗港杠篙臯高膏羔糕搞鎬稿告哥歌擱戈鴿胳疙割革葛格蛤閣隔鉻個各給根跟耕更庚羹埂耿梗工攻功恭龔供躬公宮弓鞏汞拱貢共鈎勾溝苟狗垢構購夠辜菇咕箍估沽孤姑鼓古蠱骨谷股故顧固雇刮瓜剮寡挂褂乖拐怪棺關官冠觀管館罐慣灌貫光廣逛瑰規圭矽歸龜閨軌鬼詭癸桂櫃跪貴劊輥滾棍鍋郭國果裹過哈骸孩海氦亥害駭酣憨邯韓含涵寒函喊罕翰撼捍旱憾悍焊汗漢夯杭航壕嚎豪毫郝好耗號浩呵喝荷菏核禾和何合盒貉閡河涸赫褐鶴賀嘿黑痕很狠恨哼亨橫衡恒轟哄烘虹鴻洪宏弘紅喉侯猴吼厚候後呼乎忽瑚壺葫胡蝴狐糊湖弧虎唬護互滬戶花嘩華猾滑畫劃化話槐徊懷淮壞歡環桓還緩"
+ "換患喚瘓豢煥渙宦幻荒慌黃磺蝗簧皇凰惶煌晃幌恍謊灰揮輝徽恢蛔回毀悔慧卉惠晦賄穢會燴彙諱誨繪葷昏婚魂渾混豁活夥火獲或惑霍貨禍擊圾基機畸稽積箕肌饑迹激譏雞姬績緝吉極棘輯籍集及急疾汲即嫉級擠幾脊己薊技冀季伎祭劑悸濟寄寂計記既忌際妓繼紀嘉枷夾佳家加莢頰賈甲鉀假稼價架駕嫁殲監堅尖箋間煎兼肩艱奸緘繭檢柬堿鹼揀撿簡儉剪減薦檻鑒踐賤見鍵箭件健艦劍餞漸濺澗建僵姜將漿江疆蔣槳獎講匠醬降蕉椒礁焦膠交郊澆驕嬌嚼攪鉸矯僥腳狡角餃繳絞剿教酵轎較叫窖揭接皆稭街階截劫節莖睛晶鯨京驚精粳經井警景頸靜境敬鏡徑痙靖竟競淨炯窘揪究糾玖韭久灸九酒廄救舊臼舅咎就疚鞠拘狙疽居駒菊局咀矩舉沮聚拒據巨具距踞鋸俱句懼炬劇捐鵑娟倦眷卷絹撅攫抉掘倔爵桔傑捷睫竭潔結解姐戒藉芥界借介疥誡屆巾筋斤金今津襟緊錦僅謹進靳晉禁近燼浸盡勁荊兢覺決訣絕均菌鈞軍君峻俊竣浚郡駿喀咖卡咯開揩楷凱慨刊堪勘坎砍看康慷糠扛抗亢炕考拷烤靠坷苛柯棵磕顆科殼咳可渴克刻客課肯啃墾懇坑吭空恐孔控摳口扣寇枯哭窟苦酷庫褲誇垮挎跨胯塊筷儈快寬款匡筐狂框礦眶曠況虧盔巋窺葵奎魁傀饋愧潰坤昆捆困括擴廓闊垃拉喇蠟臘辣啦萊來賴藍婪欄攔籃闌蘭瀾讕攬覽懶纜爛濫琅榔狼廊郎朗浪撈勞牢老佬姥酪烙澇勒樂雷鐳蕾磊累儡壘擂肋類淚棱楞冷厘梨犁黎籬狸離漓理李裏鯉禮莉荔吏栗麗"
+ "厲勵礫曆利傈例俐痢立粒瀝隸力璃哩倆聯蓮連鐮廉憐漣簾斂臉鏈戀煉練糧涼梁粱良兩輛量晾亮諒撩聊僚療燎寥遼潦了撂鐐廖料列裂烈劣獵琳林磷霖臨鄰鱗淋凜賃吝拎玲菱零齡鈴伶羚淩靈陵嶺領另令溜琉榴硫餾留劉瘤流柳六龍聾嚨籠窿隆壟攏隴樓婁摟簍漏陋蘆盧顱廬爐擄鹵虜魯麓碌露路賂鹿潞祿錄陸戮驢呂鋁侶旅履屢縷慮氯律率濾綠巒攣孿灤卵亂掠略掄輪倫侖淪綸論蘿螺羅邏鑼籮騾裸落洛駱絡媽麻瑪碼螞馬罵嘛嗎埋買麥賣邁脈瞞饅蠻滿蔓曼慢漫謾芒茫盲氓忙莽貓茅錨毛矛鉚卯茂冒帽貌貿麽玫枚梅酶黴煤沒眉媒鎂每美昧寐妹媚門悶們萌蒙檬盟錳猛夢孟眯醚靡糜迷謎彌米秘覓泌蜜密冪棉眠綿冕免勉娩緬面苗描瞄藐秒渺廟妙蔑滅民抿皿敏憫閩明螟鳴銘名命謬摸摹蘑模膜磨摩魔抹末莫墨默沫漠寞陌謀牟某拇牡畝姆母墓暮幕募慕木目睦牧穆拿哪呐鈉那娜納氖乃奶耐奈南男難囊撓腦惱鬧淖呢餒內嫩能妮霓倪泥尼擬你匿膩逆溺蔫拈年碾攆撚念娘釀鳥尿捏聶孽齧鑷鎳涅您檸獰凝甯擰濘牛扭鈕紐膿濃農弄奴努怒女暖虐瘧挪懦糯諾哦歐鷗毆藕嘔偶漚啪趴爬帕怕琶拍排牌徘湃派攀潘盤磐盼畔判叛乓龐旁耪胖抛咆刨炮袍跑泡呸胚培裴賠陪配佩沛噴盆砰抨烹澎彭蓬棚硼篷膨朋鵬捧碰坯砒霹批披劈琵毗啤脾疲皮匹痞僻屁譬篇偏片騙飄漂瓢票撇瞥拼頻貧品聘乒坪蘋萍平憑瓶評屏坡潑頗婆破魄迫粕剖撲鋪仆莆葡菩蒲埔樸圃"
+ "普浦譜曝瀑期欺棲戚妻七淒漆柒沏其棋奇歧畦崎臍齊旗祈祁騎起豈乞企啓契砌器氣迄棄汽泣訖掐洽牽扡釺鉛千遷簽仟謙乾黔錢鉗前潛遣淺譴塹嵌欠歉槍嗆腔羌牆薔強搶橇鍬敲悄橋瞧喬僑巧鞘撬翹峭俏竅切茄且怯竊欽侵親秦琴勤芹擒禽寢沁青輕氫傾卿清擎晴氰情頃請慶瓊窮秋丘邱球求囚酋泅趨區蛆曲軀屈驅渠取娶齲趣去圈顴權醛泉全痊拳犬券勸缺炔瘸卻鵲榷確雀裙群然燃冉染瓤壤攘嚷讓饒擾繞惹熱壬仁人忍韌任認刃妊紉扔仍日戎茸蓉榮融熔溶容絨冗揉柔肉茹蠕儒孺如辱乳汝入褥軟阮蕊瑞銳閏潤若弱撒灑薩腮鰓塞賽三三傘散桑嗓喪搔騷掃嫂瑟色澀森僧莎砂殺刹沙紗傻啥煞篩曬珊苫杉山刪煽衫閃陝擅贍膳善汕扇繕墒傷商賞晌上尚裳梢捎稍燒芍勺韶少哨邵紹奢賒蛇舌舍赦攝射懾涉社設砷申呻伸身深娠紳神沈審嬸甚腎慎滲聲生甥牲升繩省盛剩勝聖師失獅施濕詩屍虱十石拾時什食蝕實識史矢使屎駛始式示士世柿事拭誓逝勢是嗜噬適仕侍釋飾氏市恃室視試收手首守壽授售受瘦獸蔬樞梳殊抒輸叔舒淑疏書贖孰熟薯暑曙署蜀黍鼠屬術述樹束戍豎墅庶數漱恕刷耍摔衰甩帥栓拴霜雙爽誰水睡稅吮瞬順舜說碩朔爍斯撕嘶思私司絲死肆寺嗣四伺似飼巳松聳慫頌送宋訟誦搜艘擻嗽蘇酥俗素速粟僳塑溯宿訴肅酸蒜算雖隋隨綏髓碎歲穗遂隧祟孫損筍蓑梭唆縮瑣索鎖所塌他它她塔獺撻蹋踏胎苔擡台泰酞太態汰坍攤貪癱灘壇"
+ "檀痰潭譚談坦毯袒碳探歎炭湯塘搪堂棠膛唐糖倘躺淌趟燙掏濤滔縧萄桃逃淘陶討套特藤騰疼謄梯剔踢銻提題蹄啼體替嚏惕涕剃屜天添填田甜恬舔腆挑條迢眺跳貼鐵帖廳聽烴汀廷停亭庭挺艇通桐酮瞳同銅彤童桶捅筒統痛偷投頭透凸禿突圖徒途塗屠土吐兔湍團推頹腿蛻褪退吞屯臀拖托脫鴕陀馱駝橢妥拓唾挖哇蛙窪娃瓦襪歪外豌彎灣玩頑丸烷完碗挽晚皖惋宛婉萬腕汪王亡枉網往旺望忘妄威巍微危韋違桅圍唯惟爲濰維葦萎委偉僞尾緯未蔚味畏胃喂魏位渭謂尉慰衛瘟溫蚊文聞紋吻穩紊問嗡翁甕撾蝸渦窩我斡臥握沃巫嗚鎢烏汙誣屋無蕪梧吾吳毋武五捂午舞伍侮塢戊霧晤物勿務悟誤昔熙析西硒矽晰嘻吸錫犧稀息希悉膝夕惜熄烯溪汐犀檄襲席習媳喜銑洗系隙戲細瞎蝦匣霞轄暇峽俠狹下廈夏嚇掀鍁先仙鮮纖鹹賢銜舷閑涎弦嫌顯險現獻縣腺餡羨憲陷限線相廂鑲香箱襄湘鄉翔祥詳想響享項巷橡像向象蕭硝霄削哮囂銷消宵淆曉小孝校肖嘯笑效楔些歇蠍鞋協挾攜邪斜脅諧寫械卸蟹懈泄瀉謝屑薪芯鋅欣辛新忻心信釁星腥猩惺興刑型形邢行醒幸杏性姓兄凶胸匈洶雄熊休修羞朽嗅鏽秀袖繡墟戌需虛噓須徐許蓄酗敘旭序畜恤絮婿緒續軒喧宣懸旋玄選癬眩絢靴薛學穴雪血勳熏循旬詢尋馴巡殉汛訓訊遜迅壓押鴉鴨呀丫芽牙蚜崖衙涯雅啞亞訝焉咽閹煙淹鹽嚴研蜒岩延言顔閻炎沿奄掩眼衍演豔堰燕厭硯雁唁彥焰宴諺驗殃央鴦秧楊揚"
+ "佯瘍羊洋陽氧仰癢養樣漾邀腰妖瑤搖堯遙窯謠姚咬舀藥要耀椰噎耶爺野冶也頁掖業葉曳腋夜液一壹醫揖銥依伊衣頤夷遺移儀胰疑沂宜姨彜椅蟻倚已乙矣以藝抑易邑屹億役臆逸肄疫亦裔意毅憶義益溢詣議誼譯異翼翌繹茵蔭因殷音陰姻吟銀淫寅飲尹引隱印英櫻嬰鷹應纓瑩螢營熒蠅迎贏盈影穎硬映喲擁傭臃癰庸雍踴蛹詠泳湧永恿勇用幽優悠憂尤由郵鈾猶油遊酉有友右佑釉誘又幼迂淤于盂榆虞愚輿余俞逾魚愉渝漁隅予娛雨與嶼禹宇語羽玉域芋郁籲遇喻峪禦愈欲獄育譽浴寓裕預豫馭鴛淵冤元垣袁原援轅園員圓猿源緣遠苑願怨院曰約越躍鑰嶽粵月悅閱耘雲鄖勻隕允運蘊醞暈韻孕匝砸雜栽哉災宰載再在咱攢暫贊贓髒葬遭糟鑿藻棗早澡蚤躁噪造皂竈燥責擇則澤賊怎增憎曾贈紮喳渣劄軋鍘閘眨柵榨咋乍炸詐摘齋宅窄債寨瞻氈詹粘沾盞斬輾嶄展蘸棧占戰站湛綻樟章彰漳張掌漲杖丈帳賬仗脹瘴障招昭找沼趙照罩兆肇召遮折哲蟄轍者鍺蔗這浙珍斟真甄砧臻貞針偵枕疹診震振鎮陣蒸掙睜征猙爭怔整拯正政幀症鄭證芝枝支吱蜘知肢脂汁之織職直植殖執值侄址指止趾只旨紙志摯擲至致置幟峙制智秩稚質炙痔滯治窒中盅忠鍾衷終種腫重仲衆舟周州洲謅粥軸肘帚咒皺宙晝驟珠株蛛朱豬諸誅逐竹燭煮拄矚囑主著柱助蛀貯鑄築住注祝駐抓爪拽專磚轉撰賺篆樁莊裝妝撞壯狀椎錐追贅墜綴諄准捉拙卓桌琢茁酌啄著灼濁茲咨資姿滋淄孜紫仔籽滓子自漬字鬃棕蹤宗綜總縱鄒走奏揍租足卒族祖詛阻組鑽纂嘴醉最罪尊遵昨左佐柞做作坐座";
public const string simpleString = "啊阿埃挨哎唉哀皑癌蔼矮艾碍爱隘鞍氨安俺按暗岸胺案肮昂盎凹敖熬翱袄傲奥懊澳芭捌扒叭吧笆八疤巴拔跋靶把耙坝霸罢爸白柏百摆佰败拜稗斑班搬扳般颁板版扮拌伴瓣半办绊邦帮梆榜膀绑棒磅蚌镑傍谤苞胞包褒剥薄雹保堡饱宝抱报暴豹鲍爆杯碑悲卑北辈背贝钡倍狈备惫焙被奔苯本笨崩绷甭泵蹦迸逼鼻比鄙笔彼碧蓖蔽毕毙毖币庇痹闭敝弊必辟壁臂避陛鞭边编贬扁便变卞辨辩辫遍标彪膘表鳖憋别瘪彬斌濒滨宾摈兵冰柄丙秉饼炳病并玻菠播拨钵波博勃搏铂箔伯帛舶脖膊渤泊驳捕卜哺补埠不布步簿部怖擦猜裁材才财睬踩采彩菜蔡餐参蚕残惭惨灿苍舱仓沧藏操糙槽曹草厕策侧册测层蹭插叉茬茶查碴搽察岔差诧拆柴豺搀掺蝉馋谗缠铲产阐颤昌猖场尝常长偿肠厂敞畅唱倡超抄钞朝嘲潮巢吵炒车扯撤掣彻澈郴臣辰尘晨忱沉陈趁衬撑称城橙成呈乘程惩澄诚承逞骋秤吃痴持匙池迟弛驰耻齿侈尺赤翅斥炽充冲虫崇宠抽酬畴踌稠愁筹仇绸瞅丑臭初出橱厨躇锄雏滁除楚础储矗搐触处揣川穿椽传船喘串疮窗幢床闯创吹炊捶锤垂春椿醇唇淳纯蠢戳绰疵茨磁雌辞慈瓷词此刺赐次聪葱囱匆从丛凑粗醋簇促蹿篡窜摧崔催脆瘁粹淬翠村存寸磋撮搓措挫错搭达答瘩打大呆歹傣戴带殆代贷袋待逮怠耽担丹单郸掸胆旦氮但惮淡诞弹蛋当挡党荡档刀捣蹈倒岛祷导到稻悼道盗德得的蹬灯登等瞪凳邓堤低滴迪敌笛狄涤翟嫡抵底地蒂第帝弟递"
+ "缔颠掂滇碘点典靛垫电佃甸店惦奠淀殿碉叼雕凋***掉吊钓调跌爹碟蝶迭谍叠丁盯叮钉顶鼎锭定订丢东冬董懂动栋侗恫冻洞兜抖斗陡豆逗痘都督毒犊独读堵睹赌杜镀肚度渡妒端短锻段断缎堆兑队对墩吨蹲敦顿囤钝盾遁掇哆多夺垛躲朵跺舵剁惰堕蛾峨鹅俄额讹娥恶厄扼遏鄂饿恩而儿耳尔饵洱二贰发罚筏伐乏阀法珐藩帆番翻樊矾钒繁凡烦反返范贩犯饭泛坊芳方肪房防妨仿访纺放菲非啡飞肥匪诽吠肺废沸费芬酚吩氛分纷坟焚汾粉奋份忿愤粪丰封枫蜂峰锋风疯烽逢冯缝讽奉凤佛否夫敷肤孵扶拂辐幅氟符伏俘服浮涪福袱弗甫抚辅俯釜斧脯腑府腐赴副覆赋复傅付阜父腹负富讣附妇缚咐噶嘎该改概钙盖溉干甘杆柑竿肝赶感秆敢赣冈刚钢缸肛纲岗港杠篙皋高膏羔糕搞镐稿告哥歌搁戈鸽胳疙割革葛格蛤阁隔铬个各给根跟耕更庚羹埂耿梗工攻功恭龚供躬公宫弓巩汞拱贡共钩勾沟苟狗垢构购够辜菇咕箍估沽孤姑鼓古蛊骨谷股故顾固雇刮瓜剐寡挂褂乖拐怪棺关官冠观管馆罐惯灌贯光广逛瑰规圭硅归龟闺轨鬼诡癸桂柜跪贵刽辊滚棍锅郭国果裹过哈骸孩海氦亥害骇酣憨邯韩含涵寒函喊罕翰撼捍旱憾悍焊汗汉夯杭航壕嚎豪毫郝好耗号浩呵喝荷菏核禾和何合盒貉阂河涸赫褐鹤贺嘿黑痕很狠恨哼亨横衡恒轰哄烘虹鸿洪宏弘红喉侯猴吼厚候后呼乎忽瑚壶葫胡蝴狐糊湖弧虎唬护互沪户花哗华猾滑画划化话槐徊怀淮坏欢环桓还缓换患"
+ "唤痪豢焕涣宦幻荒慌黄磺蝗簧皇凰惶煌晃幌恍谎灰挥辉徽恢蛔回毁悔慧卉惠晦贿秽会烩汇讳诲绘荤昏婚魂浑混豁活伙火获或惑霍货祸击圾基机畸稽积箕肌饥迹激讥鸡姬绩缉吉极棘辑籍集及急疾汲即嫉级挤几脊己蓟技冀季伎祭剂悸济寄寂计记既忌际妓继纪嘉枷夹佳家加荚颊贾甲钾假稼价架驾嫁歼监坚尖笺间煎兼肩艰奸缄茧检柬碱硷拣捡简俭剪减荐槛鉴践贱见键箭件健舰剑饯渐溅涧建僵姜将浆江疆蒋桨奖讲匠酱降蕉椒礁焦胶交郊浇骄娇嚼搅铰矫侥脚狡角饺缴绞剿教酵轿较叫窖揭接皆秸街阶截劫节茎睛晶鲸京惊精粳经井警景颈静境敬镜径痉靖竟竞净炯窘揪究纠玖韭久灸九酒厩救旧臼舅咎就疚鞠拘狙疽居驹菊局咀矩举沮聚拒据巨具距踞锯俱句惧炬剧捐鹃娟倦眷卷绢撅攫抉掘倔爵桔杰捷睫竭洁结解姐戒藉芥界借介疥诫届巾筋斤金今津襟紧锦仅谨进靳晋禁近烬浸尽劲荆兢觉决诀绝均菌钧军君峻俊竣浚郡骏喀咖卡咯开揩楷凯慨刊堪勘坎砍看康慷糠扛抗亢炕考拷烤靠坷苛柯棵磕颗科壳咳可渴克刻客课肯啃垦恳坑吭空恐孔控抠口扣寇枯哭窟苦酷库裤夸垮挎跨胯块筷侩快宽款匡筐狂框矿眶旷况亏盔岿窥葵奎魁傀馈愧溃坤昆捆困括扩廓阔垃拉喇蜡腊辣啦莱来赖蓝婪栏拦篮阑兰澜谰揽览懒缆烂滥琅榔狼廊郎朗浪捞劳牢老佬姥酪烙涝勒乐雷镭蕾磊累儡垒擂肋类泪棱楞冷厘梨犁黎篱狸离漓理李里鲤礼莉荔吏栗丽厉励砾"
+ "历利傈例俐痢立粒沥隶力璃哩俩联莲连镰廉怜涟帘敛脸链恋炼练粮凉梁粱良两辆量晾亮谅撩聊僚疗燎寥辽潦了撂镣廖料列裂烈劣猎琳林磷霖临邻鳞淋凛赁吝拎玲菱零龄铃伶羚凌灵陵岭领另令溜琉榴硫馏留刘瘤流柳六龙聋咙笼窿隆垄拢陇楼娄搂篓漏陋芦卢颅庐炉掳卤虏鲁麓碌露路赂鹿潞禄录陆戮驴吕铝侣旅履屡缕虑氯律率滤绿峦挛孪滦卵乱掠略抡轮伦仑沦纶论萝螺罗逻锣箩骡裸落洛骆络妈麻玛码蚂马骂嘛吗埋买麦卖迈脉瞒馒蛮满蔓曼慢漫谩芒茫盲氓忙莽猫茅锚毛矛铆卯茂冒帽貌贸么玫枚梅酶霉煤没眉媒镁每美昧寐妹媚门闷们萌蒙檬盟锰猛梦孟眯醚靡糜迷谜弥米秘觅泌蜜密幂棉眠绵冕免勉娩缅面苗描瞄藐秒渺庙妙蔑灭民抿皿敏悯闽明螟鸣铭名命谬摸摹蘑模膜磨摩魔抹末莫墨默沫漠寞陌谋牟某拇牡亩姆母墓暮幕募慕木目睦牧穆拿哪呐钠那娜纳氖乃奶耐奈南男难囊挠脑恼闹淖呢馁内嫩能妮霓倪泥尼拟你匿腻逆溺蔫拈年碾撵捻念娘酿鸟尿捏聂孽啮镊镍涅您柠狞凝宁拧泞牛扭钮纽脓浓农弄奴努怒女暖虐疟挪懦糯诺哦欧鸥殴藕呕偶沤啪趴爬帕怕琶拍排牌徘湃派攀潘盘磐盼畔判叛乓庞旁耪胖抛咆刨炮袍跑泡呸胚培裴赔陪配佩沛喷盆砰抨烹澎彭蓬棚硼篷膨朋鹏捧碰坯砒霹批披劈琵毗啤脾疲皮匹痞僻屁譬篇偏片骗飘漂瓢票撇瞥拼频贫品聘乒坪苹萍平凭瓶评屏坡泼颇婆破魄迫粕剖扑铺仆莆葡菩蒲埔朴圃普浦谱曝"
+ "瀑期欺栖戚妻七凄漆柒沏其棋奇歧畦崎脐齐旗祈祁骑起岂乞企启契砌器气迄弃汽泣讫掐洽牵扦钎铅千迁签仟谦乾黔钱钳前潜遣浅谴堑嵌欠歉枪呛腔羌墙蔷强抢橇锹敲悄桥瞧乔侨巧鞘撬翘峭俏窍切茄且怯窃钦侵亲秦琴勤芹擒禽寝沁青轻氢倾卿清擎晴氰情顷请庆琼穷秋丘邱球求囚酋泅趋区蛆曲躯屈驱渠取娶龋趣去圈颧权醛泉全痊拳犬券劝缺炔瘸却鹊榷确雀裙群然燃冉染瓤壤攘嚷让饶扰绕惹热壬仁人忍韧任认刃妊纫扔仍日戎茸蓉荣融熔溶容绒冗揉柔肉茹蠕儒孺如辱乳汝入褥软阮蕊瑞锐闰润若弱撒洒萨腮鳃塞赛三叁伞散桑嗓丧搔骚扫嫂瑟色涩森僧莎砂杀刹沙纱傻啥煞筛晒珊苫杉山删煽衫闪陕擅赡膳善汕扇缮墒伤商赏晌上尚裳梢捎稍烧芍勺韶少哨邵绍奢赊蛇舌舍赦摄射慑涉社设砷申呻伸身深娠绅神沈审婶甚肾慎渗声生甥牲升绳省盛剩胜圣师失狮施湿诗尸虱十石拾时什食蚀实识史矢使屎驶始式示士世柿事拭誓逝势是嗜噬适仕侍释饰氏市恃室视试收手首守寿授售受瘦兽蔬枢梳殊抒输叔舒淑疏书赎孰熟薯暑曙署蜀黍鼠属术述树束戍竖墅庶数漱恕刷耍摔衰甩帅栓拴霜双爽谁水睡税吮瞬顺舜说硕朔烁斯撕嘶思私司丝死肆寺嗣四伺似饲巳松耸怂颂送宋讼诵搜艘擞嗽苏酥俗素速粟僳塑溯宿诉肃酸蒜算虽隋随绥髓碎岁穗遂隧祟孙损笋蓑梭唆缩琐索锁所塌他它她塔獭挞蹋踏胎苔抬台泰酞太态汰坍摊贪瘫滩坛檀痰潭谭谈"
+ "坦毯袒碳探叹炭汤塘搪堂棠膛唐糖倘躺淌趟烫掏涛滔绦萄桃逃淘陶讨套特藤腾疼誊梯剔踢锑提题蹄啼体替嚏惕涕剃屉天添填田甜恬舔腆挑条迢眺跳贴铁帖厅听烃汀廷停亭庭挺艇通桐酮瞳同铜彤童桶捅筒统痛偷投头透凸秃突图徒途涂屠土吐兔湍团推颓腿蜕褪退吞屯臀拖托脱鸵陀驮驼椭妥拓唾挖哇蛙洼娃瓦袜歪外豌弯湾玩顽丸烷完碗挽晚皖惋宛婉万腕汪王亡枉网往旺望忘妄威巍微危韦违桅围唯惟为潍维苇萎委伟伪尾纬未蔚味畏胃喂魏位渭谓尉慰卫瘟温蚊文闻纹吻稳紊问嗡翁瓮挝蜗涡窝我斡卧握沃巫呜钨乌污诬屋无芜梧吾吴毋武五捂午舞伍侮坞戊雾晤物勿务悟误昔熙析西硒矽晰嘻吸锡牺稀息希悉膝夕惜熄烯溪汐犀檄袭席习媳喜铣洗系隙戏细瞎虾匣霞辖暇峡侠狭下厦夏吓掀锨先仙鲜纤咸贤衔舷闲涎弦嫌显险现献县腺馅羡宪陷限线相厢镶香箱襄湘乡翔祥详想响享项巷橡像向象萧硝霄削哮嚣销消宵淆晓小孝校肖啸笑效楔些歇蝎鞋协挟携邪斜胁谐写械卸蟹懈泄泻谢屑薪芯锌欣辛新忻心信衅星腥猩惺兴刑型形邢行醒幸杏性姓兄凶胸匈汹雄熊休修羞朽嗅锈秀袖绣墟戌需虚嘘须徐许蓄酗叙旭序畜恤絮婿绪续轩喧宣悬旋玄选癣眩绚靴薛学穴雪血勋熏循旬询寻驯巡殉汛训讯逊迅压押鸦鸭呀丫芽牙蚜崖衙涯雅哑亚讶焉咽阉烟淹盐严研蜒岩延言颜阎炎沿奄掩眼衍演艳堰燕厌砚雁唁彦焰宴谚验殃央鸯秧杨扬佯疡羊洋阳氧"
+ "仰痒养样漾邀腰妖瑶摇尧遥窑谣姚咬舀药要耀椰噎耶爷野冶也页掖业叶曳腋夜液一壹医揖铱依伊衣颐夷遗移仪胰疑沂宜姨彝椅蚁倚已乙矣以艺抑易邑屹亿役臆逸肄疫亦裔意毅忆义益溢诣议谊译异翼翌绎茵荫因殷音阴姻吟银淫寅饮尹引隐印英樱婴鹰应缨莹萤营荧蝇迎赢盈影颖硬映哟拥佣臃痈庸雍踊蛹咏泳涌永恿勇用幽优悠忧尤由邮铀犹油游酉有友右佑釉诱又幼迂淤于盂榆虞愚舆余俞逾鱼愉渝渔隅予娱雨与屿禹宇语羽玉域芋郁吁遇喻峪御愈欲狱育誉浴寓裕预豫驭鸳渊冤元垣袁原援辕园员圆猿源缘远苑愿怨院曰约越跃钥岳粤月悦阅耘云郧匀陨允运蕴酝晕韵孕匝砸杂栽哉灾宰载再在咱攒暂赞赃脏葬遭糟凿藻枣早澡蚤躁噪造皂灶燥责择则泽贼怎增憎曾赠扎喳渣札轧铡闸眨栅榨咋乍炸诈摘斋宅窄债寨瞻毡詹粘沾盏斩辗崭展蘸栈占战站湛绽樟章彰漳张掌涨杖丈帐账仗胀瘴障招昭找沼赵照罩兆肇召遮折哲蛰辙者锗蔗这浙珍斟真甄砧臻贞针侦枕疹诊震振镇阵蒸挣睁征狰争怔整拯正政帧症郑证芝枝支吱蜘知肢脂汁之织职直植殖执值侄址指止趾只旨纸志挚掷至致置帜峙制智秩稚质炙痔滞治窒中盅忠钟衷终种肿重仲众舟周州洲诌粥轴肘帚咒皱宙昼骤珠株蛛朱猪诸诛逐竹烛煮拄瞩嘱主著柱助蛀贮铸筑住注祝驻抓爪拽专砖转撰赚篆桩庄装妆撞壮状椎锥追赘坠缀谆准捉拙卓桌琢茁酌啄着灼浊兹咨资姿滋淄孜紫仔籽滓子自渍字鬃棕踪宗综总纵邹走奏揍租足卒族祖诅阻组钻纂嘴醉最罪尊遵昨左佐柞做作坐座";
public const string PARTNUMBER_FORBIDDEN_CHARACTERS = "?*'%/-%#"\,._[]^&()~!|@$ ";
public const string PARTNUMBER_FORBIDDEN_CHARACTERS_SMARTSEARCH = "*'/-#"\,._[]^&()~!|@$ ";
public const string NONELIST="(1=2)";
public const string GLOBALLIST="(1=1)";
//used by session
public const string SMART_PARTNUMBER = "PartNumber";
public const string SYSTEM_LAST_ERROR = "SystemLastError";
public const string USER_PRIVILIGE_FUNCTION_POINT_LIST = "User_Privilige_Function_Point_List";
//used by session
public static string ConnectionString = string.Empty;
private const string RANKFUNCTION = "dbo.GetQueryRank('{0}','{1}',PrefixStrExtracted,BasePartNumberExtracted)";
//海外税率代表值
public const int OVERSEA_TAX_CODE = 9;
//其他税率代表值
public const int OTHER_TAX_CODE = 10;
//0%税率代表值
public const int ZERO_TAX_CODE = 7;
public static string NO_PRIVILEGE_PAGE
{
get
{
return ApplicationPath+"AccessDenied.aspx";
}
}
static Utility()
{
try
{
ConnectionString = ConfigurationSettings.AppSettings["DBMConnectionString"].ToString();
}
catch
{
}
}
/// <summary>
/// 返回应用程序的路径
/// 例如:如果应用程式是根目录,则返回"/";
/// 如果应用程式是其他虚拟目录,则返回"/Virtual Path/"
/// </summary>
/// <returns>返回应用程式的路径</returns>
public static string ApplicationPath
{
get
{
string applicationPath = HttpContext.Current.Request.ApplicationPath;
if (applicationPath != "/")
{
applicationPath = applicationPath+ "/";
}
return applicationPath;
}
}
/// <summary>
/// 返回应用程序的路径
/// 例如:如果应用程式是根目录,则返回"https://www.domain.com/";
/// 如果应用程式是其他虚拟目录,则返回"https://www.domain.com/Virtual Path/"
/// </summary>
/// <returns>返回应用程式的路径</returns>
public static string ApplicationSSLPath
{
get
{
bool useSSL= false;
try
{
useSSL= Convert.ToBoolean(ConfigurationSettings.AppSettings["UseSSL"]);
}
catch
{
useSSL = false;
}
return "http" + (useSSL ? "s" : "") + "://" + HttpContext.Current.Request.ServerVariables["HTTP_HOST"].ToString().ToLower() + ApplicationPath;
}
}
/// <summary>
/// 如果有什么信息在客户的弹出的,则调用此函数
/// </summary>
/// <param name="message"></param>
public static void Message(string message)
{
string script ="<script>";
script +="window.alert(""+message.Replace("'", "\'") +"");";
script +="</script>";
HttpContext.Current.Response.Write(script);
}
/// <summary>
/// 如果有什么信息在客户的弹出的,则调用此函数
/// </summary>
/// <param name="message"></param>
public static void Message(System.Web.UI.Page page, string message)
{
string script ="<script>";
script +="window.alert(""+message.Replace("'", "\'") +"");";
script +="</script>";
//Guid.NewGuid().ToString("N")是指在一个界面中可能有多个调用要弹出消息的内容
page.RegisterClientScriptBlock("Clientmsg"+Guid.NewGuid().ToString("N"), script);
}
/// <summary>
/// 对一个字符串进行剪切,对多于该字符数的用“...”表示,则以ToolTip进行提示
/// </summary>
/// <param name="sValue">要剪切的字符串</param>
/// <param name="size">要保留的字符数</param>
/// <returns>返回剪切好的及ToolTip的整个Html格式的字符串</returns>
public static string CutString(string sValue, int size)
{
string m_retu="";
if(sValue.Length > size)
{
m_retu= "<span title="" +
HttpContext.Current.Server.HtmlDecode(sValue) + "">"
+ HttpContext.Current.Server.HtmlEncode(sValue.Substring(0,size)) + "...</span>";
}
else
{
m_retu= sValue;
}
return m_retu;
}
/// <summary>
/// 把文本框的内容格式成相应的Html在网页中显示
/// </summary>
/// <param name="sValue">要格式的字符串</param>
/// <returns>格式好的Html字符串</returns>
public static string ToHtml(string sValue)
{
string m_retu="";
if (sValue != null)
{
m_retu = HttpUtility.HtmlEncode(sValue);
m_retu = m_retu.Replace(" ", "<br />");
m_retu = m_retu.Replace(" ", "<br />");
m_retu = m_retu.Replace(" ", "<br />");
}
return m_retu;
}
/// <summary>
/// 检查是否为Guid类型的字符串
/// </summary>
/// <param name="o">要检查的字符串</param>
/// <returns>如果是,则返回true,如果不是,则返回false</returns>
public static bool IsGuid(object o)
{
try
{
Guid a= new Guid(o.ToString());
return true;
}
catch
{
return false;
}
}
/// <summary>
/// 检查是否为整数的字符串
/// </summary>
/// <param name="o">要检查的字符串</param>
/// <returns>如果是,则返回true,如果不是,则返回false</returns>
public static bool IsInt(object o)
{
try
{
Convert.ToInt32(o);
return true;
}
catch
{
return false;
}
}
/// <summary>
/// 检查是否为日期型的字符串
/// </summary>
/// <param name="o">要检查的字符串</param>
/// <returns>如果是,则返回true,如果不是,则返回false</returns>
public static bool IsDateTime(object o)
{
if(o==null) return false;
try
{
Convert.ToDateTime(o);
return true;
}
catch
{
return false;
}
}
/// <summary>
/// 检查是否为浮点型
/// </summary>
/// <param name="o">要检查的字符串</param>
/// <returns>如果是,则返回true,如果不是,则返回false</returns>
public static bool IsDouble(object o)
{
double num1;
if(IsNull(o)) return false;
if (!double.TryParse(o.ToString(), NumberStyles.Any, null, out num1))
{
return false;
}
return true;
}
/// <summary>
/// 检查是否为Single型
/// </summary>
/// <param name="o">要检查的字符串</param>
/// <returns>如果是,则返回true,如果不是,则返回false</returns>
public static bool IsSingle(object o)
{
try
{
Convert.ToSingle(o);
return true;
}
catch
{
return false;
}
}
/// <summary>
/// 检查是否为Decimal型
/// </summary>
/// <param name="o">要检查的字符串</param>
/// <returns>如果是,则返回true,如果不是,则返回false</returns>
public static bool IsDecimal(object o)
{
try
{
Convert.ToDecimal(o);
return true;
}
catch
{
return false;
}
}
/// <summary>
/// 检查是否为bool型
/// </summary>
/// <param name="o">要检查的字符串</param>
/// <returns>如果是,则返回true,如果不是,则返回false</returns>
public static bool IsBool(object o)
{
try
{
Convert.ToBoolean(o);
return true;
}
catch
{
return false;
}
}
/// <summary>
/// 当前的用户
/// </summary>
public static UserToken CurrentUser
{
get
{
UserToken token= (UserToken)System.Web.HttpContext.Current.Session["UserToken"];
if(token == null)
{
FormsAuthentication.SignOut();
HttpContext.Current.Response.Redirect(Utility.ApplicationPath + "Security/SignIn.aspx");
}
return token;
}
}
/// <summary>
/// 当前的用户权限
/// </summary>
public static UserPermissions CurrentPermissions
{
get
{
UserPermissions permission= (UserPermissions) HttpContext.Current.Session["UserPermissions"];
if(permission == null)
{
FormsAuthentication.SignOut();
HttpContext.Current.Response.Redirect(Utility.ApplicationPath + "Security/SignIn.aspx");
}
return permission;
}
}
/// <summary>
/// 根据币种代码取回货币符号
/// </summary>
/// <param name="CurrentPage">取回币种的页,传入该参数的目的是为了获取界面的语言</param>
/// <param name="CurrencyCode">货币代码</param>
/// <returns>货币符号</returns>
public static string GetCurrencySymbolByCode(System.Web.UI.Page CurrentPage,string CurrencyCode)
{
string m_retu;
if(CurrencyCode.Trim()=="")
m_retu="";
else
// m_retu= StringMapCache.RetrieveDisplayValue((int)ObjectTypeEnum.Organization,"CurrencyCode",int.Parse(CurrencyCode),"en-us");
m_retu = StringMapCache.RetrieveDisplayValue((int)ObjectTypeEnum.Organization,"CurrencyCode",int.Parse(CurrencyCode));
return m_retu;
}
/// <summary>
/// 根据币种代码取回货币符号
/// </summary>
/// <param name="CurrencyCode">货币代码</param>
/// <returns>货币符号</returns>
public static string GetCurrencySymbolByCode(string CurrencyCode)
{
string m_retu;
if(CurrencyCode.Trim()=="")
m_retu="";
else
m_retu = StringMapCache.RetrieveDisplayValue((int)ObjectTypeEnum.Organization,"CurrencyCode",int.Parse(CurrencyCode));
return m_retu;
}
/// <summary>
/// 加入一些用户信息到记录行中
/// 如果是新增的,则加入以下内容:新增的初始信息和修改的初始信息
/// 如果是修改的,则加入以下内容:修改的初始信息
/// </summary>
/// <param name="m_dr">要加入记录的行</param>
/// <param name="isInsert">是否为新增</param>
public static void AddUserInfoToRow(System.Data.DataRow m_dr,bool isInsert)
{
if(isInsert)
{
if(m_dr.Table.Columns.Contains("StateCode"))
{
m_dr["StateCode"] = 1; //处于初始状态
}
m_dr["ModifiedBy"]=CurrentUser.EntityID;
m_dr["ModifiedOn"]= DateTime.UtcNow;
m_dr["ModifiedbyName"] =CurrentUser.EntityAlias;
m_dr["CreatedBy"]=CurrentUser.EntityID;
m_dr["CreatedOn"]=DateTime.UtcNow ;
m_dr["CreatedbyName"]=CurrentUser.EntityAlias;
m_dr["DeletionStateCode"] =0;
try
{
m_dr["OwningUser"] = CurrentUser.EntityID;
}
catch{}
}
else
{
m_dr["ModifiedBy"]=CurrentUser.EntityID;
m_dr["ModifiedOn"]= DateTime.UtcNow;
m_dr["ModifiedbyName"] =CurrentUser.EntityAlias;
}
}
/// <summary>
/// 更改某行时的更改元数据信息[20040120SUN]
/// </summary>
/// <returns></returns>
public static string ModifiedInfoSQL()
{
System.Text.StringBuilder sqlStringBuilder = new StringBuilder(200);
sqlStringBuilder.Append(" ModifiedOn='"+DateTime.UtcNow.ToString()+"' ");
sqlStringBuilder.Append(" , ModifiedBy='"+Utility.CurrentUser.EntityID.ToString()+"' ");
return sqlStringBuilder.ToString();
}
/// <summary>
/// 根据UserID取回用户的名称
/// </summary>
/// <param name="sUserID">用户的ID</param>
/// <returns>取回用户的名称</returns>
public static string GetUserDisplayNameByUserGuid(string sUserID)
{
string m_retu="";
try
{
if(IsGuid(sUserID))
{
Connection conn = new Connection();
User oUser = conn.GetUserByID(new Guid(sUserID));
m_retu = oUser.EntityAlias;
oUser = null;
}
}
catch
{
m_retu=string.Empty;
}
return m_retu;
}
/// <summary>
/// 根据用户名称取得ID
/// </summary>
/// <param name="userName"></param>
/// <returns></returns>
public static Guid GetUserIDByUserName(string userName)
{
using(ConnectionBR c = new ConnectionBR())
{
try
{
return (Guid) c.ExecuteScalar("Select EntityID FROM EntityBase WHERE EntityAlias = '"+userName.Trim()+"'");
}
catch
{
return Guid.Empty;
}
}
}
private static string EncodeString(object theValue)
{
return String.Format("{0}", theValue.ToString().Replace("'", "''"));
}
public static object ToString(string str)
{
return ToString(str, DBNull.Value);
}
public static object ToString(string str, object defaultValue)
{
str=str.Trim(); //add by hjs 2004-9-23
if(defaultValue != DBNull.Value)
{
defaultValue = IsNull(defaultValue) ? defaultValue : DBNull.Value;
}
if(IsNull(str) || str == string.Empty )
{
return defaultValue;
}
else
{
return EncodeString(str);
}
}
/// <summary>
///去除空格
/// </summary>
/// <returns></returns>
public static object ToString(string str,bool removespace)
{
if(removespace)
{
return ToString(str.Replace(" ",""),DBNull.Value);
}
else
{
return ToString(str,DBNull.Value);
}
}
public static int GetInt(object obj)
{
return GetInt(obj, int.MinValue);
}
public static int GetInt(object obj, int defaultValue)
{
if(IsNull(obj) || !IsInt(obj))
{
return defaultValue;
}
else
{
return Convert.ToInt32(obj);
}
}
public static object ToInt(string str)
{
return ToInt(str, DBNull.Value);
}
public static object ToInt(string str, object defaultValue)
{
if(defaultValue != DBNull.Value)
{
defaultValue = IsInt(defaultValue) ? defaultValue : DBNull.Value;
}
if(IsNull(str) || !IsInt(str.Trim()))
{
return defaultValue;
}
else
{
return Convert.ToInt32(str.Trim());
}
}
public static decimal GetDecimal(object obj)
{
return GetDecimal(obj, decimal.MinValue);
}
public static decimal GetDecimal(object obj, decimal defaultValue)
{
string str=obj as string;
if(str!=null)
{
//这是把$等符号去掉.
if(str.Length>0)
{
if(str[0]>'9' || str[0]<0)
{
str=str.Substring(1,str.Length-1);
}
}
obj=str;
}
if(IsNull(obj) || !IsDecimal(obj))
{
return defaultValue;
}
else
{
return Convert.ToDecimal(obj);
}
}
public static object ToDecimal(string str)
{
return ToDecimal(str, DBNull.Value);
}
public static object ToDecimal(string str, object defaultValue)
{
//这是把$等符号去掉.
if(str.Length>0)
{
if(str[0]>'9' || str[0]<0)
{
str=str.Substring(1,str.Length-1);
}
}
if(defaultValue != DBNull.Value)
{
defaultValue = IsDecimal(defaultValue) ? defaultValue : DBNull.Value;
}
if(IsNull(str) || !IsDecimal(str.Trim()))
{
return defaultValue;
}
else
{
return Convert.ToDecimal(str.Trim());
}
}
public static double GetDouble(object obj)
{
return GetDouble(obj, double.NaN);
}
public static double GetDouble(object obj, double defaultValue)
{
string str=obj as string;
if(str!=null)
{
//这是把$等符号去掉.
if(str.Length>0)
{
if(str[0]>'9' || str[0]<0)
{
str=str.Substring(1,str.Length-1);
}
}
obj=str;
}
if(IsNull(obj) || !IsDouble(obj))
{
return defaultValue;
}
else
{
return Convert.ToDouble(obj);
}
}
public static object ToDouble(string str)
{
return ToDouble(str, DBNull.Value);
}
public static object ToDouble(string str, object defaultValue)
{
if(str.Length>0)
{
if(str[0]>'9' || str[0]<0)
{
str=str.Substring(1,str.Length-1);
}
}
if(defaultValue != DBNull.Value)
{
defaultValue = IsDouble(defaultValue) ? defaultValue : DBNull.Value;
}
if(IsNull(str) || !IsDouble(str.Trim()))
{
return defaultValue;
}
else
{
return Convert.ToDouble(str.Trim());
}
}
public static string GetString(object obj)
{
return GetString(obj,string.Empty);
}
public static string GetString(object obj,string defaultValue)
{
if(!IsNull(obj))
{
return obj.ToString();
}
else
{
return defaultValue;
}
}
public static Guid GetGuid(object obj)
{
return GetGuid(obj, Guid.Empty);
}
public static Guid GetGuid(object obj, Guid defaultValue)
{
if(IsNull(obj) || !IsGuid(obj))
{
return defaultValue;
}
else
{
return new Guid(obj.ToString());
}
}
public static object ToGuid(object str)
{
if(str==null)
{
return ToGuid(null, DBNull.Value);
}
else
{
return ToGuid(str.ToString(), DBNull.Value);
}
}
public static object ToGuid(string str)
{
return ToGuid(str, DBNull.Value);
}
public static object ToGuid(string str, object defaultValue)
{
if(defaultValue != DBNull.Value)
{
defaultValue = IsGuid(defaultValue) ? defaultValue : DBNull.Value;
}
if(IsNull(str) || !IsGuid(str.Trim()))
{
return defaultValue;
}
else
{
return new Guid(str.Trim());
}
}
public static bool GetBool(object obj)
{
return GetBool(obj, false);
}
public static bool GetBool(object obj, bool defaultValue)
{
if(IsNull(obj) || !IsBool(obj))
{
return defaultValue;
}
else
{
return Convert.ToBoolean(obj);
}
}
public static object ToBool(string str)
{
return ToBool(str, DBNull.Value);
}
public static object ToBool(string str, object defaultValue)
{
if(defaultValue != DBNull.Value)
{
defaultValue = IsBool(defaultValue) ? defaultValue : DBNull.Value;
}
if(str == null || str.Trim() == string.Empty)
{
return defaultValue;
}
else
{
string str1 = str.ToLower().Trim();
if(str1 == "1" || str1 == "true")
{
return true;
}
else if( str1 == "0" || str1 == "false")
{
return false;
}
else
{
return defaultValue;
}
}
}
public static DateTime GetDateTime(object obj)
{
return GetDateTime(obj, DateTime.Now);
}
public static DateTime GetDateTime(object obj, DateTime defaultValue)
{
if(IsNull(obj) || !IsDateTime(obj))
{
return defaultValue;
}
else
{
return Convert.ToDateTime(obj);
}
}
public static object ToDateTime(string str)
{
return ToDateTime(str, DBNull.Value);
}
public static object ToDateTime(string str, object defaultValue)
{
if(defaultValue != DBNull.Value)
{
defaultValue = IsDateTime(defaultValue) ? defaultValue : DBNull.Value;
}
if(IsNull(str) || !IsDateTime(str.Trim()))
{
return defaultValue;
}
else
{
return Convert.ToDateTime(str.Trim()).ToUniversalTime();
}
}
public static object ToDateTime(object date, object time)
{
return ToDateTime(date, time, DBNull.Value);
}
public static object ToDateTime(object date, object time, object defaultValue)
{
if(defaultValue != DBNull.Value)
{
defaultValue = IsDateTime(defaultValue) ? defaultValue : DBNull.Value;
}
if(IsNull(date) || !IsDateTime(date))
{
return defaultValue;
}
string selectTime = time == null || time.ToString().Trim() == string.Empty ? "12:00 PM" : time.ToString().Trim();
DateTime dateTime1 = Convert.ToDateTime(date.ToString().Trim());
return Convert.ToDateTime(dateTime1.ToShortDateString() + " " + selectTime).ToUniversalTime();
}
private static byte[] ToBytes(string str)
{
return Encoding.UTF8.GetBytes(str);
}
public static bool IsNull(object obj)
{
if ((obj != null) && !Convert.IsDBNull(obj))
{
return false;
}
return true;
}
/// <summary>
/// 序列化一个对象,把一个对象序列化成一个字符串
/// </summary>
/// <param name="obj">对象</param>
/// <returns>序列化好的字符串</returns>
public static string SerializeObject(object obj)
{
XmlDocument document1 = new XmlDocument();
using (MemoryStream stream1 = new MemoryStream())
{
using (StreamWriter writer1 = new StreamWriter(stream1, Encoding.Unicode))
{
try
{
new XmlSerializer(obj.GetType()).Serialize(stream1, obj);
}
catch
{
if (!(obj is Exception))
{
throw;
}
return ((Exception) obj).ToString();
}
stream1.Seek((long) 0, SeekOrigin.Begin);
document1.Load(stream1);
return document1.DocumentElement.OuterXml;
}
}
}
/// <summary>
/// 序列化一个对象数组,把一个对象数组序列化成一个字符串
/// </summary>
/// <param name="arr">对象数组</param>
/// <returns>序列化好的字符串</returns>
public static string SerializeObjectArray(object[] arr)
{
StringBuilder builder1 = new StringBuilder();
builder1.Append("<details> ");
object[] objArray1 = arr;
for (int num1 = 0; num1 < objArray1.Length; num1++)
{
object obj1 = objArray1[num1];
builder1.Append(SerializeObject(obj1));
}
builder1.Append(" </details>");
XmlDocument document1 = new XmlDocument();
document1.LoadXml(builder1.ToString());
return document1.OuterXml;
}
/// <summary>
/// 把货币金额转成英文的大写.
/// </summary>
/// <param name="sAmount">要转换大写的货币金额</param>
/// <param name="bShowSuffix">是否要显示小数点后面的同容</param>
/// <returns>格式好的字符串</returns>
public static string GetAmountEnglisth(string sAmount,bool bShowSuffix)
{
string[] numAry ="One,Two,Three,Four,Five,Six,Seven,Eight,Nine,Ten,Eleven,Twelve,Thirteen,Fourteen,Fifteen,Sixteen,Seventeen,Eighteen,Nineteen".Split(',');
string[] num10Ary ="Ten,Twenty,Thirty,Forty,Fifty,Sixty,Seventy,Eighty,Ninety".Split(',');
string[] carrySymbolAry ="Hundred,Thousand,Million,Billion".Split(',');
decimal d = Convert.ToDecimal(sAmount);
if(d>100000000000) return "";
string sValue = d.ToString("#0");
string sInt ="";
string sDec ="";
if(bShowSuffix)
{
sValue = d.ToString("#0.00");
int iZeroPos = sValue.IndexOf(".");
sInt = sValue.Substring(0,iZeroPos);
sDec = sValue.Substring(iZeroPos+1);
}
else
{
sInt = sValue;
}
if(sInt.Length>11)
{
return "can not translate so big number!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!";
}
System.Text.StringBuilder sbRes = new System.Text.StringBuilder();
for (int i=0;i<sInt.Length;i++)
{
int iPos = sInt.Length- i;
int iCarryPos = iPos % 3;
int num = Convert.ToInt32(sInt.Substring(i,1));
if(num ==0)
{
if(iCarryPos ==2)
{
sbRes.Append(" and");
}
if(iPos ==4 || iPos ==7 || iPos == 10)
{
int iSectionPos = (int)Math.Floor((iPos/3));
sbRes.Append(" " + carrySymbolAry[iSectionPos]);
}
continue;
}
if(iCarryPos ==0)
{
sbRes.Append(" " + numAry[num-1] + " Hundred");
}
else if(iCarryPos ==2)
{
if(sbRes.Length>7)
{
sbRes.Append(" and");
}
if(num ==1) // evelven twelve etc..
{
i++;
int numNext = Convert.ToInt32(sInt.Substring(i,1));
num = num*10+numNext;
sbRes.Append(" "+numAry[num-1]);
iPos = sInt.Length- i; //Recalculate iPos;
}
else
{
sbRes.Append(" "+num10Ary[num-1]);
}
}
else if(iCarryPos ==1)
{
if(sbRes.Length>0)
{
if(sbRes.ToString().Substring(sbRes.Length-2,2) =="ty")
{
sbRes.Append(" ");
}
}
sbRes.Append(" " +numAry[num-1]);
}
if(iPos ==4 || iPos ==7 || iPos == 10)
{
int iSectionPos = (int)Math.Floor((iPos/3));
sbRes.Append(" " + carrySymbolAry[iSectionPos]);
}
}
string res = sbRes.ToString();
while (res.IndexOf(" and and")>-1)
{
res = res.Replace(" and and"," and");
}
res = res.Trim();
while (res.Length>3 && res.Substring(res.Length-3,3)=="and")
{
res = res.Substring(0,res.Length-3);
}
res = res.Replace("- ","-");
res = res.Replace(" and Thousand"," Thousand");
res = res.Replace(" and Million"," Million");
res = res.Replace(" and Billion"," Billion");
res = res.Replace("Million Thousand","Million");
res = res.Replace("Billion Million","Billion");
if(bShowSuffix)
{
int iCents =Convert.ToInt32(sDec);
if (iCents>0)
{
res += " and";
if(iCents<20)
{
res += " " +numAry[iCents-1];
}
else
{
res += " " + num10Ary[Convert.ToInt32(sDec.Substring(0,1))-1];
if(sDec.Substring(1,1)!="0")
{
res += " " + numAry[Convert.ToInt32(sDec.Substring(1,1))-1];
}
}
res +=" Cents";
}
else
{
res +=" Even";
}
}
//替换多的END信息
res = res.Replace(" and ","|");
if(res.IndexOf("|")<0)
{
return res;
}
else
{
string[] p = res.Split(new char[]{'|'});
if(p.Length==2)
{
return p[0]+" and "+ p[1];
}
else
{
string temp = string.Empty;
for(int i=0;i<p.Length;i++)
{
if(i!=p.Length-1)
{
temp +=" "+ p[i];
}
else
{
temp +=" and "+ p[i];
}
}
return temp;
}
}
}
/// <summary>
/// 把货币金额从数字转为大写
/// </summary>
/// <param name="sAmount">要转换大写的货币金额</param>
/// <param name="bShowSuffix">是否要显示小数点后面的同容</param>
/// <returns>格式好的字符串</returns>
public static string GetAmountChinese(string sAmount,bool bShowSuffix)
{
string[] numAry = new string[]{"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
string[] posAry = new string[]{"","拾","佰","仟","万","拾","佰","仟","亿","拾","佰","仟"};
string[] decAry = new string[]{"角","分"};
try
{
decimal.Parse(sAmount);
}
catch
{
return "零圆";
}
string res ="" ;
decimal d = Convert.ToDecimal(sAmount);
string sValue = d.ToString("#0");
string sInt = sValue;
string sDec ="";
int iZeroPos = 0;
if(bShowSuffix)
{
sValue = d.ToString("#0.00");
iZeroPos = sValue.IndexOf(".");
sInt = sValue.Substring(0,iZeroPos);
sDec = sValue.Substring(iZeroPos+1);
}
if(bShowSuffix)
{
sInt = sValue.Substring(0,iZeroPos);
}
if(sInt.Length>11)
{
return "can not translate so big number!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!";
}
for (int i=0;i<sInt.Length;i++)
{
res += numAry[Convert.ToInt32(sInt.Substring(i,1))] + posAry[sInt.Length-i-1];
}
res = res.Replace("零圆","");
res = res.Replace("零拾","零");
res = res.Replace("零佰","零");
res = res.Replace("零仟","零");
while (res.IndexOf("零亿")>-1)
{
res = res.Replace("零亿","亿");
}
while (res.IndexOf("零万")>-1)
{
res = res.Replace("零万","万");
}
res = res.Replace("亿万","亿");
while (res.IndexOf("零零")>-1)
{
res = res.Replace("零零","零");
}
if(res.Substring(res.Length-1,1) =="零")
{
res = res.Substring(0,res.Length-1);
}
res +="圆";
if(bShowSuffix)
{
for(int i=0;i<sDec.Length;i++)
{
res += numAry[Convert.ToInt32(sDec.Substring(i,1))] + decAry[i] ;
}
res =res.Replace("零角零分","整");
}
if(res =="圆")
{
res ="零圆";
}
return res;
}
/// <summary>
/// 把URL格式转换成可以点击的URL内容
/// </summary>
/// <param name="url">要连接的URL地址</param>
/// <param name="DisplayName">显示到界面的内容</param>
/// <returns>已格式好的字符串</returns>
public static string GetURLDisplayString(string url,string DisplayName)
{
if(url =="") return "";
if (url.Length>=7)
{
if(url.Substring(0,7).ToUpper()!="HTTP://")
{
url ="Http://" +url;
}
}
if (DisplayName.Length>15)
{
DisplayName = DisplayName.Substring(0,15)+"...";
}
return "<a href='" + url +"' target='_blank'>" + DisplayName +"</a>";
}
/// <summary>
/// 把Email格式成可点击的Email显示格式
/// </summary>
/// <param name="email">Email地址</param>
/// <returns>已格式好的字符串</returns>
public static string GetEmailDisplayValue(string email)
{
if(email.Trim() =="") return"";
return "<a href="mailto:"+email+"">"+email+"</a>";
}
/// <summary>
/// 刷新父窗口,并确定是是要刷新父窗口,确定是否关闭本页。
/// </summary>
/// <param name="win">要进行操作的页面</param>
/// <param name="refreshParent">是否要刷新父窗口</param>
/// <param name="close">是否要关闭本窗口</param>
public static void RefreshWindow(System.Web.UI.Page win, bool refreshParent, bool close)
{
if(!refreshParent && !close) return;
string script ="<script>";
if(refreshParent)
{
script +="if(top.opener.refresh==null){";
script += "try{top.opener.location.href = top.opener.location.href;}catch(e){}";
script +="}else{top.opener.refresh();}";
}
if(close)
{
script +="top.close();";
}
script +="</script>";
if(!win.IsClientScriptBlockRegistered("RefreshWindowScript"))
{
win.RegisterClientScriptBlock("RefreshWindowScript", script);
}
}
/// <summary>
/// 刷新父窗口,并确定是是要刷新父窗口,确定是否关闭本页。
/// </summary>
/// <param name="win">要进行操作的页面</param>
/// <param name="refreshParent">是否要刷新父窗口</param>
/// <param name="close">是否要关闭本窗口</param>
public static void OpenExportWindow(System.Web.UI.Page win, string exportWin)
{
string script ="<script>";
script += "try{window.open('"+exportWin+"');}catch(e){}";
script +="</script>";
if(!win.IsClientScriptBlockRegistered("OpenExportWindow"))
{
win.RegisterClientScriptBlock("OpenExportWindow", script);
}
}
/// <summary>
/// 刷新父窗口,并确定是是要刷新父窗口,确定是否关闭本页。
/// </summary>
/// <param name="win">要进行操作的页面</param>
/// <param name="refreshParent">是否要刷新父窗口</param>
/// <param name="close">是否要关闭本窗口</param>
public static void RefreshParentWindow(System.Web.UI.Page win, bool refreshParent, bool close)
{
if(!refreshParent && !close) return;
string script ="<script>";
if(refreshParent)
{
script += "try{top.opener.refresh();}catch(e){}";
}
if(close)
{
script +="top.close();";
}
script +="</script>";
if(!win.IsClientScriptBlockRegistered("RefreshParentWindowScript"))
{
win.RegisterClientScriptBlock("RefreshParentWindowScript", script);
}
}
public static string GetPageBgColorFormat()
{
// return System.Drawing.Color.FromArgb(240,240,240);
return "White";
}
public static string GetUserPageBgColorFormat()
{
// return System.Drawing.Color.FromArgb(240,240,240);
SystemUserSettingBR systemUserSettingBR = new SystemUserSettingBR();
string color = systemUserSettingBR.GetValueByKey("BgColor");
if(color!=null)
{
return color;
}
else
{
return GetPageBgColorFormat();
}
}
/// <summary>
/// 取回电话组合的格式
/// </summary>
/// <param name="phoneCountryKey">电话的国家码</param>
/// <param name="phoneAreaKey">电话的地址码</param>
/// <param name="phoneKey">电话号码</param>
/// <param name="phoneExtKey">分号</param>
/// <returns>返回组合好的电话格式</returns>
public static string GetPhoneFormat(string phoneCountryKey, string phoneAreaKey, string phoneKey, string phoneExtKey)
{
string strRetu="";
if(phoneCountryKey!=null && phoneCountryKey!=string.Empty)
{
strRetu=phoneCountryKey;
}
if(phoneAreaKey!=null && phoneAreaKey!=string.Empty)
{
strRetu+="("+phoneAreaKey+")";
}
if(phoneKey!=null && phoneKey!=string.Empty)
{
strRetu+=phoneKey;
}
if(phoneExtKey!=null && phoneExtKey!=string.Empty)
{
strRetu+=" Ext "+phoneExtKey;
}
return strRetu;
}
public static string GetPhoneFormat(object phoneCountryKey, object phoneAreaKey, object phoneKey, object phoneExtKey)
{
string strRetu="";
if(phoneCountryKey!=null && phoneCountryKey.ToString()!=string.Empty)
{
strRetu=phoneCountryKey.ToString();
}
if(phoneAreaKey!=null && phoneAreaKey.ToString()!=string.Empty)
{
strRetu+="("+phoneAreaKey.ToString()+")";
}
if(phoneKey!=null && phoneKey.ToString()!=string.Empty)
{
strRetu+=phoneKey.ToString();
}
if(phoneExtKey!=null && phoneExtKey.ToString()!=string.Empty)
{
strRetu+=" Ext "+phoneExtKey.ToString();
}
return strRetu;
}
/// <summary>
/// 取得utc时间的当地时间
/// </summary>
/// <param name="dt"></param>
/// <returns></returns>
public static string GetUtcLocalString(object obj)
{
DateTime d = Convert.ToDateTime(obj);
return GetUtcLocalString(d, "d");
}
/// <summary>
/// by hjs 2004-10-20 取得utc时间的当地时间
/// </summary>
/// <param name="dt"></param>
/// <returns></returns>
public static string GetUtcLocalString(DateTime d)
{
return GetUtcLocalString(d, "d");
}
/// <summary>
///
/// </summary>
/// <param name="d">a DateTime value</param>
/// <param name="outputFormat">'d', 't', 'g', or 'gbr'</param>
/// <returns></returns>
public static string GetUtcLocalString(DateTime d, string outputFormat)
{
string localTimeFormat = "<script>document.write(ebcUTC2Loc({0},{1},{2},{3},{4},{5},'" + outputFormat +"'));</script>";
return string.Format(localTimeFormat, d.Year, d.Month, d.Day, d.Hour, d.Minute, d.Second);
}
public static void ParsePartNumber(string partNumber, ref string prefix, ref string partBase, ref string partitionSupport)
{
if(partNumber == null || partNumber == string.Empty)
{
prefix = string.Empty;
partBase= string.Empty;
partitionSupport = string.Empty;
return;
}
Regex regex = new Regex("[0-9]");
Match match = regex.Match(partNumber);
if(match.Success)
{
prefix = partNumber.Substring(0,match.Index);
partBase = partNumber.Substring(match.Index);
partitionSupport = partNumber.Substring(match.Index, 1);
}
else
{
prefix = partNumber;
partitionSupport = "-1";
}
}
public static void ParsePartNumberExtracted(string partNumber, ref string prefix, ref string partBase, ref string partitionSupport)
{
string l_PartNumber = GetPartNumberExtracted(partNumber);
ParsePartNumber(partNumber, ref prefix, ref partBase, ref partitionSupport);
}
/// <summary>
/// 把型号拆分放在记录行中.
/// </summary>
/// <param name="partNumber">输入型号</param>
/// <param name="m_dr">要分拆型号的记录</param>
/// <remarks>Prefix->PrefixStr[SUN20041109]</remarks>
public static void ParsePartNumberExtractedToRow(string partNumber,System.Data.DataRow m_dr)
{
m_dr["PartNumber"]=partNumber;
string l_PartNumber = GetPartNumberExtracted(partNumber);
string prefix="",partBase="",partitionSupport="";
ParsePartNumber(l_PartNumber, ref prefix, ref partBase, ref partitionSupport);
m_dr["PrefixStr"]=prefix;
m_dr["PartitionSupport"]=Utility.ToInt(partitionSupport);
m_dr["PartNumberExtracted"]=l_PartNumber;
}
public static string GetPartNumberExtracted(string partNumber)
{
if (partNumber == null || partNumber == string.Empty)
{
return "";
}
for(int i = 0; i< PARTNUMBER_FORBIDDEN_CHARACTERS.Length; i++)
{
partNumber = partNumber.Replace(PARTNUMBER_FORBIDDEN_CHARACTERS.Substring(i, 1), "");
}
return partNumber;
}
public static string GetPartNumberExtracted(string partNumber,int partNumberSearchFlg)
{
if (partNumber == null || partNumber == string.Empty)
{
return "";
}
if(partNumberSearchFlg!=5)
partNumber=GetPartNumberExtracted(partNumber);
else
{
for(int i = 0; i< PARTNUMBER_FORBIDDEN_CHARACTERS_SMARTSEARCH.Length; i++)
{
partNumber = partNumber.Replace(PARTNUMBER_FORBIDDEN_CHARACTERS_SMARTSEARCH.Substring(i, 1), "");
}
}
return partNumber;
}
public static string GetPartNumberFilterExpression(string partNumber)
{
string l_PartNumber = string.Empty;
l_PartNumber = GetPartNumberExtracted(partNumber);
if(l_PartNumber==string.Empty)
{
return string.Empty;
}
string l_prefix = string.Empty;
string l_partBase = string.Empty;
string l_partitionSupport = "-1";
Utility.ParsePartNumber(Utility.ToString(l_PartNumber).ToString(), ref l_prefix, ref l_partBase, ref l_partitionSupport);
//System.Text.StringBuilder filterExpression= new System.Text.StringBuilder("PartitionSupport = '" + l_partitionSupport + "'" );
System.Text.StringBuilder filterExpression= new System.Text.StringBuilder();
if(l_partBase != string.Empty)
{
if(l_prefix != string.Empty)
{
filterExpression.Append("PrefixStrExtracted LIKE N'" + l_prefix + "%' AND BasePartNumberExtracted LIKE N'" + l_partBase + "%'" );
}
else
{
filterExpression.Append("BasePartNumberExtracted LIKE N'" + l_partBase + "%'" );
}
}
else if(l_prefix != string.Empty)
{
filterExpression.Append("PrefixStrExtracted LIKE N'" + l_prefix + "%'" );
}
return filterExpression.ToString();
}
/// <summary>
/// 取回要查找型号的条件字符串
/// </summary>
/// <param name="reqFindPartNumber">要查的型号</param>
/// <returns>返回要查找型号的条件字符串</returns>
public static string GetPartNumberRankExpression(string reqFindPartNumber)
{
string m_RANKFUNCTION = "dbo.GetQueryRank('{0}','{1}',PrefixStrExtracted,BasePartNumberExtracted)";
string PartNumberExtracted=string.Empty;
PartNumberExtracted = GetPartNumberExtracted(reqFindPartNumber);
if(PartNumberExtracted == string.Empty)
{
return "1=2";
}
string prefix = string.Empty;
string partBase = string.Empty;
string partitionSupport = "-1";
Utility.ParsePartNumber(Utility.ToString(reqFindPartNumber).ToString(), ref prefix, ref partBase, ref partitionSupport);
if(prefix == string.Empty && partBase == string.Empty)
{
return "1=2";
}
StringBuilder filterExpression = new StringBuilder("PartitionSupport = '" + partitionSupport + "'" );
if(partBase != string.Empty)
{
if(partBase.Length <3)
{
if(prefix != string.Empty)
{
filterExpression.Append("AND PrefixStrExtracted = N'" + prefix + "' AND BasePartNumberExtracted LIKE N'" + partBase + "%'" );
}
else
{
filterExpression.Append("AND BasePartNumberExtracted = N'" + partBase + "'" );
}
}
else
{
filterExpression.Append("AND BasePartNumberExtracted LIKE N'" + partBase + "%'" );
}
}
else if(prefix != string.Empty)
{
filterExpression.Append("AND PrefixStrExtracted LIKE N'" + prefix + "%'" );
}
filterExpression.Append(" AND " + String.Format(m_RANKFUNCTION, prefix,partBase) + " IN (1,2,3,4)");
return filterExpression.ToString();
}
/// <summary>
/// 得到兑换率信息集合
/// </summary>
/// <returns></returns>
public static string GetExchangeRateInfoOfJavaScript()
{
System.Text.StringBuilder sb = new StringBuilder(200);
sb.Append(" var ExchangeRateInfo = '");
System.Data.DataRow[] m_strMap_arr=StringMapCache.RetrieveStringMap("ObjectTypeCode="+((int)ObjectTypeEnum.Organization).ToString()+" AND FieldName='CurrencyCode' ","");
if(m_strMap_arr.Length==0)
{
return sb.Append("';").ToString();
}
foreach(DataRow dr in m_strMap_arr)
{
sb.Append(dr["FieldValue"].ToString().Trim()+"|");
sb.Append(Utility.GetDecimal(dr["InternalValue"],1).ToString().Trim()+"#");
}
string resultString = sb.ToString().Substring(0,sb.ToString().Length-1);
return resultString+"';";
}
public static void SetSmartPartNumber()
{
if(HttpContext.Current.Request.QueryString["PartNumber"]!=null)
HttpContext.Current.Session["PartNumber"] = HttpContext.Current.Request.QueryString["PartNumber"];
else
HttpContext.Current.Session["PartNumber"]=string.Empty;
}
/// <summary>
/// 根据币种取回币种的计算值
/// </summary>
/// <param name="currencyCode">币种代码</param>
/// <returns></returns>
public static decimal GetExchangeRateByCurrencyCode(string currencyCode)
{
decimal m_retu=0;
if(currencyCode.Trim()=="")
m_retu=1;
else
{
System.Data.DataRow[] m_strMap_arr=StringMapCache.RetrieveStringMap("ObjectTypeCode="+((int)ObjectTypeEnum.Organization).ToString()+" AND FieldName='CurrencyCode' AND FieldValue="+currencyCode,"");
if(m_strMap_arr.Length>0)
{
m_retu=Utility.GetDecimal(m_strMap_arr[0]["InternalValue"],1);
}
}
return m_retu;
}
/// <summary>
/// 根据前一个币种及价格转换成后一币种的价格[20050120SUN]
/// </summary>
/// <returns></returns>
public static decimal GetTransferPrice(decimal price ,int firstCurrencyCode,int secondCurrencyCode)
{
try
{
return price*(GetExchangeRateByCurrencyCode(secondCurrencyCode.ToString())/GetExchangeRateByCurrencyCode(firstCurrencyCode.ToString()));
}
catch
{
return price;
}
}
/// <summary>
/// 根据税率类型取回计算值
/// </summary>
/// <param name="taxRateCode">币种代码</param>
/// <returns></returns>
public static decimal GetTaxRateByTaxRateCode(string taxRateCode)
{
decimal m_retu=0;
if(taxRateCode.Trim()=="")
m_retu=0;
else
{
System.Data.DataRow[] m_strMap_arr=StringMapCache.RetrieveStringMap("ObjectTypeCode="+((int)ObjectTypeEnum.Organization).ToString()+" AND FieldName='TaxRateCode' AND LangID='en-us' AND FieldValue="+taxRateCode,"");
if(m_strMap_arr.Length>0)
{
m_retu=Utility.GetDecimal(m_strMap_arr[0]["InternalValue"],0);
}
}
return m_retu;
}
public static bool CompareDoubleIsEqual(double first,double secord)
{
return System.Math.Abs(first-secord)<0.01;
}
public static bool CompareDecimalIsEqual(decimal first,decimal secord)
{
return System.Math.Abs(first-secord)<Convert.ToDecimal(0.01);
}
public static string CurrentAccountPeriod
{
get
{
DataSet ds = null;
using (AccountSubjectMapBR br=new AccountSubjectMapBR())
{
ds = br.GetSubjectByAlias("AccountPeriod");
}
if(ds != null && ds.Tables[0].Rows.Count == 1)
{
return ds.Tables[0].Rows[0]["SubjectNo"].ToString();
}
return string.Empty;
}
}
/// <summary>
/// 取回指定记录的ID序列号,如果没有值,则会传过来一个'0000-0000-...'
/// 该函数只是方便把一个或二个记录集的ID字段组合成'ID','ID'的形式
/// </summary>
/// <param name="specifyIDName">要取回那个字段的ID</param>
/// <param name="m_FirstDs">第一个记录集</param>
/// <param name="m_SecordDs">第二个记录集</param>
/// <returns></returns>
public static string GetSpecifyRecordIDs(string specifyIDName,System.Data.DataSet m_FirstDs,System.Data.DataSet m_SecordDs)
{
string m_retu="";
foreach(System.Data.DataRow m_dr in m_FirstDs.Tables[0].Rows)
{
if(m_retu=="")
{
if(m_dr.RowState==System.Data.DataRowState.Deleted)
{
m_retu="'"+Utility.GetGuid(m_dr[specifyIDName,System.Data.DataRowVersion.Original]).ToString()+"'";
}
else
{
m_retu="'"+Utility.GetGuid(m_dr[specifyIDName]).ToString()+"'";
}
}
else
{
if(m_dr.RowState==System.Data.DataRowState.Deleted)
{
m_retu+=",'"+Utility.GetGuid(m_dr[specifyIDName,System.Data.DataRowVersion.Original]).ToString()+"'";
}
else
{
m_retu+=",'"+Utility.GetGuid(m_dr[specifyIDName]).ToString()+"'";
}
}
}
if(m_SecordDs!=null)
{
foreach(System.Data.DataRow m_dr in m_SecordDs.Tables[0].Rows)
{
if(m_retu=="")
{
if(m_dr.RowState==System.Data.DataRowState.Deleted)
{
m_retu="'"+Utility.GetGuid(m_dr[specifyIDName,System.Data.DataRowVersion.Original]).ToString()+"'";
}
else
{
m_retu="'"+Utility.GetGuid(m_dr[specifyIDName]).ToString()+"'";
}
}
else
{
if(m_dr.RowState==System.Data.DataRowState.Deleted)
{
m_retu+=",'"+Utility.GetGuid(m_dr[specifyIDName,System.Data.DataRowVersion.Original]).ToString()+"'";
}
else
{
m_retu+=",'"+Utility.GetGuid(m_dr[specifyIDName]).ToString()+"'";
}
}
}
}
if(m_retu.Trim()=="")
{
m_retu="'"+Guid.Empty.ToString()+"'";
}
return m_retu;
}
/// <summary>
/// 取回正常的日期和时间,不经过本地时间和全局时间的转换
/// </summary>
/// <param name="obj"></param>
/// <returns></returns>
public static DateTime GetNormalDateTime(object obj,DateTime defaultValue)
{
if(IsNull(obj) || !IsDateTime(obj))
{
return defaultValue;
}
else
{
return Convert.ToDateTime(obj);
}
}
public static DateTime GetNormalDateTime(object obj)
{
return GetNormalDateTime(obj,System.DateTime.Now);
}
/// <summary>
/// 转为正常时间,不经过本地时间和全局时间的转换
/// </summary>
/// <param name="str"></param>
/// <param name="defaultValue"></param>
/// <returns></returns>
public static object ToNormalDateTime(string str, object defaultValue)
{
if(defaultValue != DBNull.Value)
{
defaultValue = IsDateTime(defaultValue) ? defaultValue : DBNull.Value;
}
if(IsNull(str) || !IsDateTime(str.Trim()))
{
return defaultValue;
}
else
{
return Convert.ToDateTime(str.Trim());
}
}
public static object ToNormalDateTime(string str)
{
return ToNormalDateTime(str,DBNull.Value);
}
/// <summary>
/// 取回时间格式
/// </summary>
/// <returns>给定的时间格式</returns>
public static string GetDateFormat()
{
string m_retu= "yyyy-MM-dd";
string datetimeCode="";
datetimeCode=new SystemUserSettingBR().GetValueByKey("DefaultDateFormat");
if(datetimeCode==null || datetimeCode==string.Empty)
{
datetimeCode=OrganizationCache.RetrieveOrganization()
.Settings.DefaultDateFormatCode.ToString();
}
try
{
m_retu=StringMapCache.RetrieveDisplayValue(ObjectTypeEnum.Organization,"DateFormatCode",
datetimeCode);
}
catch
{
}
if(m_retu==string.Empty)
{
m_retu= "yyyy-MM-dd";
}
return m_retu;
}
public static string GetLongDateFormat()
{
string m_retu= "MM/dd/yyyy hh:mm:ss";
return m_retu;
}
/// <summary>
/// 得到价格的显示格式
/// </summary>
/// <returns></returns>
/// <remarks>[SUN20041207]</remarks>
public static string GetPriceFormat()
{
string m_retu= "###,##0.00";
string m_priceCode="";
m_priceCode=new SystemUserSettingBR().GetValueByKey("DefaultPriceFormat");
if(m_priceCode==null || m_priceCode==string.Empty)
{
m_priceCode=OrganizationCache.RetrieveOrganization()
.Settings.PricingDecimalPrecision.ToString();
}
//先取个人的币种格式,如果不能取到,则了系统的。
try
{
m_retu=StringMapCache.RetrieveDisplayValue(ObjectTypeEnum.Organization,"NumberFormatCode",
m_priceCode);
}
catch{}
if(m_retu==string.Empty)
{
m_retu= "###,##0.00";
}
return m_retu;
}
/// <summary>
/// 数量的格式
/// </summary>
/// <returns></returns>
public static string GetQTYFormat()
{
return "";
}
/// <summary>
/// 得到小数位个数
/// </summary>
/// <returns></returns>
public static int GetPriceFloatCount()
{
string m_retu = GetPriceFormat();
try
{
return m_retu.Length - (m_retu.IndexOf(".")+1);
}
catch
{
}
return 2;
}
/// <summary>
/// 检查单一深度的权限
/// </summary>
/// <param name="permissionType">要检查的许可类型</param>
/// <returns></returns>
public static bool CheckSinglePermission(PrivilegeDepth permissionType)
{
return permissionType!=PrivilegeDepth.None;
}
/// <summary>
/// 检查是否对指定拥有者的某条记录具有指定许可
/// </summary>
/// <param name="permissionType">要检查的许可类型</param>
/// <param name="guidOwningUser">客户拥有者</param>
/// <returns></returns>
public static bool CheckPermission(PrivilegeDepth permissionType,Guid guidOwningUser)
{
if(permissionType==PrivilegeDepth.None)
{
return false;
}
if(permissionType==PrivilegeDepth.Global)
{
return true;
}
if(permissionType==PrivilegeDepth.Deep)
{
if(EBiz.DBM.API.Utility.CurrentUser.MemberAllUserIDs.IndexOf(guidOwningUser.ToString())>=0)
{
return true;
}
}
if(permissionType==PrivilegeDepth.Local)
{
if(EBiz.DBM.API.Utility.CurrentUser.MemberUserIDs.IndexOf(guidOwningUser.ToString())>=0)
{
return true;
}
}
if(permissionType==PrivilegeDepth.Basic)
{
if(EBiz.DBM.API.Utility.CurrentUser.EntityID==guidOwningUser || guidOwningUser==Guid.Empty)
{
return true;
}
}
return false;
}
/// <summary>
/// 获取列表SQL过滤IDs表达式
/// </summary>
/// <param name="ids">要检查的Ids, 如,CustomerList</param>
/// <returns></returns>
public static string GetOwningUserFilterExpression(string ids)
{
if(ids== string.Empty)
{
return GLOBALLIST;
}
if(ids=="'"+Guid.Empty.ToString()+"'")
{
return NONELIST;
}
string filterExpression = string.Empty;
string[] guids = ids.Split(",".ToCharArray());
foreach(string id in guids)
{
if(filterExpression.IndexOf(id) < 0)
{
if(filterExpression.Trim().Length > 0)
{
filterExpression +=" OR ";
}
filterExpression += "OwningUser=" + id;
}
}
if(filterExpression.Trim().Length > 0)
{
return " (" + filterExpression.Trim() + ") ";
}
else
{
return string.Empty;
}
}
/// <summary>
/// 根据拥有者标示获取列表SQL过滤IDs表达式
/// </summary>
/// <param name="ids">要检查的Ids, 如,CustomerList</param>
/// <returns></returns>
/// <remarks>SUN[20041217]</remarks>
public static string GetOwningUserFilterExpression(string ids,string ownerFlag)
{
if(ids== string.Empty)
{
return GLOBALLIST;
}
if(ids=="'"+Guid.Empty.ToString()+"'")
{
return NONELIST;
}
string filterExpression = string.Empty;
string[] guids = ids.Split(",".ToCharArray());
foreach(string id in guids)
{
if(filterExpression.IndexOf(id) < 0)
{
if(filterExpression.Trim().Length > 0)
{
filterExpression +=" OR ";
}
filterExpression += ownerFlag+"=" + id;
}
}
if(filterExpression.Trim().Length > 0)
{
return " (" + filterExpression.Trim() + ") ";
}
else
{
return string.Empty;
}
}
/// <summary>
/// 取回可以看到那几个仓库的库存的条件
/// </summary>
/// <param name="fieldName">仓库的字段名</param>
/// <returns></returns>
public static string GetWarehouseCondition(string fieldName)
{
string ids=Utility.CurrentPermissions.WarehouseList;
if(ids== string.Empty)
{
return GLOBALLIST;
}
if(ids=="'"+Guid.Empty.ToString()+"'")
{
return NONELIST;
}
EBiz.DBM.Common.DataSets.WarehouseDataSet
m_wh_ds=new WarehouseBR().GetByWhere("","OwnerID in ("+ids+")","");
ids="'"+Guid.Empty.ToString()+"'";
foreach(System.Data.DataRow m_dr in m_wh_ds.Warehouse)
{
ids+=",'"+m_dr["WarehouseID"].ToString()+"'";
}
string filterExpression = string.Empty;
string[] guids = ids.Split(",".ToCharArray());
foreach(string id in guids)
{
if(filterExpression.IndexOf(id) < 0)
{
if(filterExpression.Trim().Length > 0)
{
filterExpression +=" OR ";
}
filterExpression += fieldName+"=" + id;
}
}
if(filterExpression.Trim().Length > 0)
{
return " (" + filterExpression.Trim() + ") ";
}
else
{
return NONELIST;
}
}
/// <summary>
///
/// </summary>
/// <param name="partNumber"></param>
/// <param name="partNumberSearchFlg">1-Exact Prefix / Best Base,2-Exact Prefix / Exact Base,3-Any Prefix / Exact Base,4--Any Prefix / Best Base,5--smart search</param>
/// <returns></returns>
public static string GetPartNumberFilterExpression(string partNumber,int partNumberSearchFlg)
{
string partNumberExtracted=Utility.GetPartNumberExtracted(partNumber);
string s_partNumberExtracted=string.Empty;
string s_prefix=string.Empty;
if(partNumberExtracted == string.Empty)
{
return "1=2";
}
string prefix = string.Empty;
string partBase = string.Empty;
string partitionSupport = "-1";
if(partNumberSearchFlg==5)
{
s_partNumberExtracted=Utility.GetPartNumberExtracted(partNumber,5);
Utility.ParsePartNumber(s_partNumberExtracted,ref s_prefix,ref partBase,ref partitionSupport);
}
Utility.ParsePartNumber(partNumberExtracted,ref prefix,ref partBase,ref partitionSupport);
StringBuilder filterExpression = new StringBuilder("PartitionSupport = '" + partitionSupport + "'" );
if(partBase != string.Empty)
{
if(partBase.Length <3)
{
if(prefix != string.Empty)
{
if(partNumberSearchFlg==5&&s_prefix!=string.Empty)
filterExpression.Append("AND patindex('"+s_prefix.Replace("?","%")+"',PrefixStrExtracted)>0 AND BasePartNumberExtracted LIKE '" + partBase + "%'" );
else
filterExpression.Append("AND PrefixStrExtracted = '" + prefix + "' AND BasePartNumberExtracted LIKE '" + partBase + "%'" );
}
else
{
filterExpression.Append("AND BasePartNumberExtracted = '" + partBase + "'" );
}
}
else
{
if(partNumberSearchFlg==5&&s_prefix!=string.Empty)
filterExpression.Append("AND patindex('"+s_prefix.Replace("?","%")+"',PrefixStrExtracted)>0 AND BasePartNumberExtracted LIKE '" + partBase + "%'" );
else
filterExpression.Append("AND BasePartNumberExtracted LIKE '" + partBase + "%'" );
}
}
else if(prefix != string.Empty)
{
if(partNumberSearchFlg==5&&s_prefix!=string.Empty)
filterExpression.Append("AND patindex('"+s_prefix.Replace("?","%")+"',PrefixStrExtracted)>0" );
filterExpression.Append("AND PrefixStrExtracted LIKE '" + prefix + "%'" );
}
if(partNumberSearchFlg == 5)//smart search智能查询:
{
filterExpression.Append(" AND " + String.Format(RANKFUNCTION, prefix,partBase) + " IN (1,2,3,4)");
}
else if(partNumberSearchFlg == 2)//Exact Prefix / Exact Base准确前缀/准确基码
{
filterExpression.Append(" AND " + String.Format(RANKFUNCTION, prefix,partBase) + " IN (1) ");
}
else if(partNumberSearchFlg == 1)//Exact Prefix / Best Base准确前缀/最佳基码
{
filterExpression.Append(" AND " + String.Format(RANKFUNCTION, prefix,partBase) + " IN (1,2) ");
}
else if(partNumberSearchFlg == 3)//Any Prefix / Exact Base任意前缀/准确基码
{
filterExpression.Append(" AND " + String.Format(RANKFUNCTION, prefix,partBase) + " IN (1,3) ");
}
else if(partNumberSearchFlg == 4)//Any Prefix / Best Base任意前缀/最佳基码
{
filterExpression.Append(" AND " + String.Format(RANKFUNCTION, prefix,partBase) + " IN (1,2,3,4) ");
}
else
{
filterExpression.Append(" AND " + String.Format(RANKFUNCTION, prefix,partBase) + " IN (1,2) ");
}
return filterExpression.ToString();
}
public static string GetClientScriptBlock(string str)
{
string res ="<script language='javascript'> <!-- " + str +" --></script> ";
return res;
}
#region UserInfoScript
public static string GetUserInfoScriptString()
{
DataSet ds = new ConnectionBR().GetByWhere("EntityID, LoginName","", "LoginName","View_User_Joined");
System.Text.StringBuilder sb = new System.Text.StringBuilder();
sb.Append("<script language='javascript'>");
sb.Append(getArrayUserGroup("self",getUserInfo(1,ds.Tables[0])));
sb.Append(getArrayUserGroup("group",getUserInfo(2,ds.Tables[0])));
sb.Append(getArrayUserGroup("unit",getUserInfo(3,ds.Tables[0])));
sb.Append(getArrayUserGroup("all",getUserInfo(4,ds.Tables[0])));
sb.Append("</script>");
return sb.ToString();
}
/// <summary>
/// 得到用户分类的数据集合
/// </summary>
/// <param name="name"></param>
/// <param name="htInfo"></param>
/// <returns></returns>
public static string getArrayUserGroup(string name,string[] htInfo)
{
string arrayName = "ussg_"+name+"_array";//生成用户标示集合名
System.Text.StringBuilder sb = new System.Text.StringBuilder(500);
sb.Append("var "+arrayName+"= new Array();");
for(int i=0;i<htInfo.Length;i++)
{
if(htInfo[i]==null||htInfo[i]==string.Empty)
{
continue;
}
else
{
sb.Append(arrayName+"["+i.ToString()+"]="+htInfo[i]+";");
}
}
return sb.ToString();
}
/// <summary>
/// 得到用户数据集合
/// </summary>
/// <param name="flag"></param>
/// <param name="dtInfo"></param>
/// <returns></returns>
public static string[] getUserInfo(int flag ,DataTable dtInfo)
{
string[] htInfo =null;
if(flag==1)
{
htInfo = new string[1];
htInfo[0] = "'"+Utility.CurrentUser.EntityID+"|"+Utility.CurrentUser.EntityAlias+"'";
return htInfo;
}
else
{
string ids = string.Empty;
if(flag==4)//全部
{
htInfo = new string[dtInfo.Rows.Count];
for(int i=0;i<dtInfo.Rows.Count;i++)
{
string loginName = dtInfo.Rows[i]["LoginName"].ToString();
string guid = dtInfo.Rows[i]["EntityID"].ToString();
htInfo[i] = "'"+guid+"|"+loginName+"'";
}
return htInfo;
}
else if(flag==2||flag==3)//主或者是团队
{
if(flag==2)//group
{
ids=Utility.CurrentUser.MemberUserIDs.ToString().Replace("'","");
}
if(flag==3)
{
ids=Utility.CurrentUser.MemberAllUserIDs.ToString().Replace("'","");
}
int index = 0;//下标索引
string[] guids = ids.Split(",".ToCharArray());
htInfo = new string[guids.Length];
for(int i=0;i<guids.Length;i++)
{
string loginName = string.Empty;
DataRow[] drs = dtInfo.Select("EntityID='"+guids[i]+"'");
if(drs.Length==1)
{
loginName = drs[0]["LoginName"].ToString();
htInfo[index] = "'"+guids[i]+"|"+loginName+"'";
index++;
}
}
return htInfo;
}
else
{
return null;
}
}
}
#endregion
/// <summary>
/// 这是取回事务对象,如果有调用,请维护好提交和回滚
/// </summary>
/// <returns></returns>
public static System.Data.SqlClient.SqlTransaction GetTransaction()
{
System.Data.SqlClient.SqlConnection m_con=new System.Data.SqlClient.SqlConnection(Utility.ConnectionString);
m_con.Open();
System.Data.SqlClient.SqlTransaction m_transaction=
m_con.BeginTransaction();
return m_transaction;
}
/// <summary>
/// 取回指定记录的ID序列号,如果没有值,则会传过来一个'0000-0000-...'
/// </summary>
/// <param name="specifyIDName">要取回那个字段的ID</param>
/// <param name="m_FirstDs">第一个记录集</param>
/// <param name="m_SecordDs">第二个记录集</param>
/// <returns></returns>
public static string GetSpecifyRecordIDs(string specifyIDName,System.Data.DataSet m_FirstDs,System.Data.DataSet m_SecordDs,string condition)
{
string m_retu="";
foreach(System.Data.DataRow m_dr in m_FirstDs.Tables[0].Select(condition))
{
if(m_retu=="")
{
m_retu="'"+Utility.GetGuid(m_dr[specifyIDName]).ToString()+"'";
}
else
{
m_retu+=",'"+Utility.GetGuid(m_dr[specifyIDName]).ToString()+"'";
}
}
if(m_SecordDs!=null)
{
foreach(System.Data.DataRow m_dr in m_SecordDs.Tables[0].Select(condition))
{
if(m_retu=="")
{
m_retu="'"+Utility.GetGuid(m_dr[specifyIDName]).ToString()+"'";
}
else
{
m_retu+=",'"+Utility.GetGuid(m_dr[specifyIDName]).ToString()+"'";
}
}
}
if(m_retu.Trim()=="")
{
m_retu="'"+Guid.Empty.ToString()+"'";
}
return m_retu;
}
/// <summary>
/// 这是根据一个某个条件(一般是主键的条件),取回一行记录,可能为空
/// </summary>
/// <param name="m_dt"></param>
/// <param name="condition"></param>
/// <returns>如果条件不合,则取回来的是空值</returns>
public static System.Data.DataRow GetDataRowFromTableByCondition(System.Data.DataSet m_ds,string condition)
{
System.Data.DataRow[] m_arr=m_ds.Tables[0].Select(condition);
if(m_arr.Length==0)
return null;
else
return m_arr[0];
}
/// <summary>
/// 取得当前页面的名称
/// </summary>
/// <returns></returns>
public static string GetCurrentPageName()
{
string pageName = System.Web.HttpContext.Current.Request.FilePath;
if(pageName.IndexOf("/")<0)
{
return pageName;
}
else
{
pageName = pageName.Substring(pageName.LastIndexOf("/")+1);
pageName = pageName.Substring(0,pageName.LastIndexOf("."));
return pageName;
}
}
public static string GetCurrencySymbol(int currencyCode)
{
if(currencyCode==1)
{
return "¥";
}
if(currencyCode==2)
{
return "US$";
}
return "";
}
public static void BillEncode(System.Data.DataSet ds)
{
BillEncode(ds,false);
}
/// <summary>
/// 单据编码据总项传入,进行编码
/// </summary>
/// <param name="ds"></param>
/// <param name="UpdateToCode">为true表示在编辑状态下也要重新生成他的编码</param>
/// <returns></returns>
public static void BillEncode(System.Data.DataSet ds,bool UpdateToCode)
{
//如果传来的数据集不含有ObjectTypeCode字段的话,就说明他不是编码的数据
if(!ds.Tables[0].Columns.Contains("ObjectTypeCode"))
{
return;
}
foreach(System.Data.DataRow m_dr in ds.Tables[0].Rows)
{
if(m_dr.RowState==System.Data.DataRowState.Deleted)
continue;
string m_OrderNumber=string.Empty;
//如果ObjectTypeCode不存在的话,就不是编码的数据
if(m_dr["ObjectTypeCode"]==System.DBNull.Value)
{
continue;
}
m_OrderNumber="X";//第一位等下面用switch来做
switch((EBiz.DBM.Common.Types.ObjectTypeEnum)m_dr["ObjectTypeCode"])
{
case EBiz.DBM.Common.Types.ObjectTypeEnum.CustomerPayment:
case EBiz.DBM.Common.Types.ObjectTypeEnum.PaymentToSupplier:
{
EBiz.DBM.Common.DataSets.AccountDataSet m_account_ds=new AccountBR().GetByAccountID(Utility.GetGuid(m_dr["AccountID"]));
if(m_account_ds==null || m_account_ds.Tables[0].Rows.Count==0)
{
m_OrderNumber+="XXX";
}
else
{
string m_t=StringMapCache.RetrieveAbbreviation((int)EBiz.DBM.Common.Types.ObjectTypeEnum.Organization,"TaxRateCode",Utility.GetInt(m_account_ds.Tables[0].Rows[0]["TaxRateCode"],0));
if(m_t==string.Empty)
{
m_t="X";
}
m_OrderNumber+=m_t;
m_t=StringMapCache.RetrieveAbbreviation((int)EBiz.DBM.Common.Types.ObjectTypeEnum.Organization,"PaymentTermCode",Utility.GetInt(m_account_ds.Tables[0].Rows[0]["PaymentTermsCode"],0));
if(m_t==string.Empty)
{
m_t="X";
}
m_OrderNumber+=m_t;
m_OrderNumber+="X";
}
break;
}
default:
{
//第二位编码--税率
if(m_dr.Table.Columns.Contains("TaxRateCode"))
{
if(m_dr["TaxRateCode"]==System.DBNull.Value)
{
m_OrderNumber+="X";
}
else
{
string m_t=StringMapCache.RetrieveAbbreviation((int)EBiz.DBM.Common.Types.ObjectTypeEnum.Organization,"TaxRateCode",(int)m_dr["TaxRateCode"]);
if(m_t==string.Empty)
{
m_t="X";
}
m_OrderNumber+=m_t;
}
}
else
{
m_OrderNumber+="X";
}
//第三位编码
if(m_dr.Table.Columns.Contains("PaymentTermCode"))
{
if(m_dr["PaymentTermCode"]==System.DBNull.Value)
{
m_OrderNumber+="X";
}
else
{
string m_t=StringMapCache.RetrieveAbbreviation((int)EBiz.DBM.Common.Types.ObjectTypeEnum.Organization,"PaymentTermCode",(int)m_dr["PaymentTermCode"]);
if(m_t==string.Empty)
{
m_t="X";
}
m_OrderNumber+=m_t;
}
}
else
{
m_OrderNumber+="X";
}
//第四位编码
if(m_dr.Table.Columns.Contains("FreightPaymentTermCode"))
{
if(m_dr["FreightPaymentTermCode"]==System.DBNull.Value)
{
m_OrderNumber+="X";
}
else
{
string m_t=StringMapCache.RetrieveAbbreviation((int)EBiz.DBM.Common.Types.ObjectTypeEnum.Organization,"FreightPaymentTermCode",(int)m_dr["FreightPaymentTermCode"]);
if(m_t==string.Empty)
{
m_t="X";
}
m_OrderNumber+=m_t;
}
}
else
{
m_OrderNumber+="X";
}
break;
}
}
m_OrderNumber+="-";
if(m_dr.RowState==System.Data.DataRowState.Added || UpdateToCode)
{
//拥有者
Guid m_OwningUser=Guid.Empty;
string m_OwningName=string.Empty;
if(m_dr.Table.Columns.Contains("OwningUser"))
{
if(m_dr["OwningUser"]!=System.DBNull.Value)
{
m_OwningUser=(Guid)m_dr["OwningUser"];
}
}
else if(m_dr.Table.Columns.Contains("CreatedBy"))
{
if(m_dr["CreatedBy"]!=System.DBNull.Value)
{
m_OwningUser=(Guid)m_dr["CreatedBy"];
}
}
//取Name
if(m_OwningUser==Utility.CurrentUser.EntityID)
{
m_OwningName=Utility.CurrentUser.EntityAlias;
}
else
{
try
{
Entity m_u_ds=new EBiz.Security.API.Connection().GetEntityByID(m_OwningUser);
m_OwningName=m_u_ds.EntityAlias;
}
catch
{
m_OwningName=string.Empty;
}
}
m_OrderNumber+=m_OwningName;
//年代编码
System.DateTime m_Day=System.DateTime.Today;
if(m_dr.Table.Columns.Contains("CreatedOn"))
{
if(m_dr["CreatedOn"]!=System.DBNull.Value)
{
m_Day=(System.DateTime)m_dr["CreatedOn"];
}
}
char m_YearCode='A';
try
{
m_YearCode=Convert.ToChar(Convert.ToInt64('A')+(m_Day.Year-2000));
}
catch
{
m_YearCode=Convert.ToChar(Convert.ToInt64('A')+(System.DateTime.Today.Year-2000));
}
m_OrderNumber+=m_YearCode;//年
m_OrderNumber+=m_Day.Month.ToString("00");//月
m_OrderNumber+=m_Day.Day.ToString("00");//日
switch((EBiz.DBM.Common.Types.ObjectTypeEnum)m_dr["ObjectTypeCode"])
{
case EBiz.DBM.Common.Types.ObjectTypeEnum.SalesOrder:
{
m_OrderNumber=m_OrderNumber.Substring(1);
m_OrderNumber="S"+m_OrderNumber;
m_OrderNumber+=GetSerialNumberFromTable("SalesOrderBase",m_Day,m_OwningUser,"");
break;
}
case EBiz.DBM.Common.Types.ObjectTypeEnum.DeliveryToCustomer:
{
m_OrderNumber=m_OrderNumber.Substring(1);
m_OrderNumber="L"+m_OrderNumber;
m_OrderNumber+=GetSerialNumberFromTable("DeliveryToCustomerBase",m_Day,m_OwningUser,"");
break;
}
case EBiz.DBM.Common.Types.ObjectTypeEnum.PurchaseOrder:
{
m_OrderNumber=m_OrderNumber.Substring(1);
m_OrderNumber="P"+m_OrderNumber;
m_OrderNumber+=GetSerialNumberFromTable("PurchaseOrderBase",m_Day,m_OwningUser,"");
break;
}
case EBiz.DBM.Common.Types.ObjectTypeEnum.SupplierDelivery:
{
m_OrderNumber=m_OrderNumber.Substring(1);
m_OrderNumber="J"+m_OrderNumber;
m_OrderNumber+=GetSerialNumberFromTable("SupplierDeliveryBase",m_Day,m_OwningUser,"");
break;
}
case EBiz.DBM.Common.Types.ObjectTypeEnum.SalesInvoice:
{
m_OrderNumber=m_OrderNumber.Substring(1);
if(Utility.GetInt(m_dr["BillTypeCode"],0)==1)//货单发票
{
m_OrderNumber="I"+m_OrderNumber;
m_OrderNumber+=GetSerialNumberFromTable("SalesInvoiceBase",m_Day,m_OwningUser,"BillTypeCode=1");
}
else//形式发票
{
m_OrderNumber="F"+m_OrderNumber;
m_OrderNumber+=GetSerialNumberFromTable("SalesInvoiceBase",m_Day,m_OwningUser,"BillTypeCode=2");
}
break;
}
case EBiz.DBM.Common.Types.ObjectTypeEnum.PurchaseInvoice:
{
m_OrderNumber=m_OrderNumber.Substring(1);
if(Utility.GetInt(m_dr["BillTypeCode"],0)==1)//货单发票
{
m_OrderNumber="K"+m_OrderNumber;
m_OrderNumber+=GetSerialNumberFromTable("PurchaseInvoiceBase",m_Day,m_OwningUser,"BillTypeCode=1");
}
else//形式发票
{
m_OrderNumber="G"+m_OrderNumber;
m_OrderNumber+=GetSerialNumberFromTable("PurchaseInvoiceBase",m_Day,m_OwningUser,"BillTypeCode=2");
}
break;
}
case EBiz.DBM.Common.Types.ObjectTypeEnum.RMAFromCustomer:
{
m_OrderNumber=m_OrderNumber.Substring(1);
m_OrderNumber="M"+m_OrderNumber;
m_OrderNumber+=GetSerialNumberFromTable("RMAFromCustomerBase",m_Day,m_OwningUser,"");
break;
}
case EBiz.DBM.Common.Types.ObjectTypeEnum.RMAToSupplier:
{
m_OrderNumber=m_OrderNumber.Substring(1);
m_OrderNumber="N"+m_OrderNumber;
m_OrderNumber+=GetSerialNumberFromTable("RMAToSupplierBase",m_Day,m_OwningUser,"");
break;
}
case EBiz.DBM.Common.Types.ObjectTypeEnum.CustomerPayment:
{
m_OrderNumber=m_OrderNumber.Substring(1);
m_OrderNumber="P"+m_OrderNumber;
m_OrderNumber+=GetSerialNumberFromTable("PaymentBase",m_Day,m_OwningUser,"ObjectTypeCode="+((int)EBiz.DBM.Common.Types.ObjectTypeEnum.CustomerPayment).ToString());
break;
}
case EBiz.DBM.Common.Types.ObjectTypeEnum.PaymentToSupplier:
{
m_OrderNumber=m_OrderNumber.Substring(1);
m_OrderNumber="T"+m_OrderNumber;
m_OrderNumber+=GetSerialNumberFromTable("PaymentBase",m_Day,m_OwningUser,"ObjectTypeCode="+((int)EBiz.DBM.Common.Types.ObjectTypeEnum.PaymentToSupplier).ToString());
break;
}
}
}
else
{
m_dr["OrderNumber"]=m_dr["OrderNumber"].ToString().Substring(0,1)+m_OrderNumber.Substring(1,4)+m_dr["OrderNumber"].ToString().Substring(5);
}
if(m_OrderNumber.Length>12)
{
m_dr["OrderNumber"]=m_OrderNumber;
}
}
}
/// <summary>
/// 取回当天,当人的当前单的序号
/// </summary>
/// <param name="TableName"></param>
/// <param name="m_Day"></param>
/// <param name="m_OwningUser"></param>
/// <param name="OtherCondition"></param>
/// <returns></returns>
private static string GetSerialNumberFromTable(string TableName,System.DateTime m_Day,Guid m_OwningUser,string OtherCondition)
{
string m_return=string.Empty;
System.Data.DataSet m_tem_ds=null;
try
{
string m_sql="Select Max(cast(SUBSTRING(coalesce(OrderNumber,''),coalesce(Len(OrderNumber),0)-2,3) as int)) From "+TableName+" WHERE CreatedOn>='"+m_Day.ToString("MM/dd/yyyy 00:00:00")+"' AND CreatedOn<='"+m_Day.ToString("MM/dd/yyyy 23:59:59")+"' AND OwningUser='"+m_OwningUser.ToString()+"'";
if(OtherCondition!=null && OtherCondition!=string.Empty)
{
m_sql+=" AND "+OtherCondition;
}
m_tem_ds=new ConnectionBR().ProcessQuery(m_sql);
}
catch{}
if(m_tem_ds==null)
{
m_return="000";
}
else
{
if(m_tem_ds.Tables[0].Rows.Count==0 || m_tem_ds.Tables[0].Rows[0][0]==System.DBNull.Value)
{
m_return="001";
}
else
{
int inttem=(int)m_tem_ds.Tables[0].Rows[0][0]+1;
string str_tem="000"+inttem.ToString();
str_tem=str_tem.Substring(str_tem.Length-3,3);
m_return=str_tem;
}
}
return m_return;
}
/// <summary>
/// 根据权限深度取IDS
/// </summary>
/// <param name="deep"></param>
/// <returns></returns>
public static string GetIDsByDeep(PrivilegeDepth deep)
{
UserToken token=(UserToken)System.Web.HttpContext.Current.Session["UserToken"];
string ids = UserPermissions.EMPTY_ID;
if (deep==PrivilegeDepth.Global)
{
ids = string.Empty;
}
else if(deep==PrivilegeDepth.Deep)
{
ids = token.MemberAllUserIDs;
}
else if(deep==PrivilegeDepth.Local)
{
ids = token.MemberUserIDs;
}
else if(deep==PrivilegeDepth.Basic)
{
ids = "'" + token.EntityID.ToString() + "','" + Guid.Empty.ToString() + "'";
}
else
{
ids = UserPermissions.EMPTY_ID;
}
return ids;
}
/// <summary>
/// 得到型号的显示格式
/// </summary>
/// <param name="partNumber"></param>
/// <param name="key"></param>
/// <returns></returns>
public static string GetPartFormat(string partNumber, string key)
{
if(key == null || key == string.Empty)
{
return string.Empty;
}
string prefix = string.Empty;
string partBase = string.Empty;
string partitionSupport = "-1";
ParsePartNumber(key, ref prefix, ref partBase, ref partitionSupport);
string patternExact = string.Empty;
string patternBase = string.Empty;
foreach(char c in key)
{
if (c=='+') continue;
patternExact += @"W*" + c;
}
if(partBase != string.Empty)
{
foreach(char c in partBase)
{
patternBase += @"W*" + c;
}
}
Regex regexExact = new Regex(patternExact, RegexOptions.IgnoreCase);
Match match = regexExact.Match(partNumber);
if(match.Success)
{
return partNumber.Substring(0,match.Index) + "<b><font color='red'>" + match.Value + "</font></b>" + partNumber.Substring(match.Index + match.Value.Length);
}
else if(partBase != string.Empty)
{
Regex regexBase = new Regex(patternBase, RegexOptions.IgnoreCase);
Match m = regexBase.Match(partNumber);
if(m.Success)
{
return partNumber.Substring(0,m.Index) + "<b><font color='red'>" + m.Value + "</font></b>" + partNumber.Substring(m.Index + m.Value.Length);
}
else
{
return partNumber;
}
}
else
{
return partNumber;
}
}
public static string GetAddressConditionByWarehouse(string warehouseID)
{
System.Text.StringBuilder filterExpression=new StringBuilder();
string addressID=Guid.Empty.ToString();
string address2ID=Guid.Empty.ToString();
string address3ID=Guid.Empty.ToString();
string address4ID=Guid.Empty.ToString();
string address5ID=Guid.Empty.ToString();
string address6ID=Guid.Empty.ToString();
System.Data.DataSet m_ds=new EBiz.DBM.API.WarehouseBR().GetByWhere("","WarehouseID='"+warehouseID.Trim()+"'","");
if(m_ds.Tables[0].Rows.Count>0)
{
addressID=Utility.GetGuid(m_ds.Tables[0].Rows[0]["AddressID"]).ToString();
address2ID=Utility.GetGuid(m_ds.Tables[0].Rows[0]["Address2ID"]).ToString();
address3ID=Utility.GetGuid(m_ds.Tables[0].Rows[0]["Address3ID"]).ToString();
address4ID=Utility.GetGuid(m_ds.Tables[0].Rows[0]["Address4ID"]).ToString();
address5ID=Utility.GetGuid(m_ds.Tables[0].Rows[0]["Address5ID"]).ToString();
address6ID=Utility.GetGuid(m_ds.Tables[0].Rows[0]["Address6ID"]).ToString();
}
m_ds=new EBiz.DBM.API.WarehouseBR().GetAll();
string m_con=string.Empty;
foreach(System.Data.DataRow m_dr in m_ds.Tables[0].Rows)
{
if(Utility.GetGuid(m_dr["AddressID"])!=Guid.Empty)
{
if(m_con==string.Empty)
{
m_con="'"+m_dr["AddressID"].ToString()+"'";
}
else
{
m_con+=",'"+m_dr["AddressID"].ToString()+"'";
}
}
if(Utility.GetGuid(m_dr["Address2ID"])!=Guid.Empty)
{
if(m_con==string.Empty)
{
m_con="'"+m_dr["Address2ID"].ToString()+"'";
}
else
{
m_con+=",'"+m_dr["Address2ID"].ToString()+"'";
}
}
if(Utility.GetGuid(m_dr["Address3ID"])!=Guid.Empty)
{
if(m_con==string.Empty)
{
m_con="'"+m_dr["Address3ID"].ToString()+"'";
}
else
{
m_con+=",'"+m_dr["Address3ID"].ToString()+"'";
}
}
if(Utility.GetGuid(m_dr["Address4ID"])!=Guid.Empty)
{
if(m_con==string.Empty)
{
m_con="'"+m_dr["Address4ID"].ToString()+"'";
}
else
{
m_con+=",'"+m_dr["Address4ID"].ToString()+"'";
}
}
if(Utility.GetGuid(m_dr["Address5ID"])!=Guid.Empty)
{
if(m_con==string.Empty)
{
m_con="'"+m_dr["Address5ID"].ToString()+"'";
}
else
{
m_con+=",'"+m_dr["Address5ID"].ToString()+"'";
}
}
if(Utility.GetGuid(m_dr["Address6ID"])!=Guid.Empty)
{
if(m_con==string.Empty)
{
m_con="'"+m_dr["Address6ID"].ToString()+"'";
}
else
{
m_con+=",'"+m_dr["Address6ID"].ToString()+"'";
}
}
}
if(m_con!=string.Empty)
{
m_con="AccountAddressID NOT IN ("+m_con+")";
}
m_ds=new EBiz.DBM.API.AccountAddressBR().GetByWhere("","ParentID='"+EBiz.DBM.API.OrganizationCache.RetrieveOrganization().ID.ToString() +"' AND ParentObjectTypeCode="+((int)EBiz.DBM.Common.Types.ObjectTypeEnum.Organization).ToString()+(m_con==string.Empty?"":(" AND "+m_con)),"");
string tem="";
if(addressID!=string.Empty)
{
tem="AddressID='"+addressID.ToString()+"'";
}
if(address2ID!=string.Empty)
{
if(tem!=string.Empty)
tem+=" OR ";
tem+="AddressID='"+address2ID.ToString()+"'";
}
if(address3ID!=string.Empty)
{
if(tem!=string.Empty)
tem+=" OR ";
tem+="AddressID='"+address3ID.ToString()+"'";
}
if(address4ID!=string.Empty)
{
if(tem!=string.Empty)
tem+=" OR ";
tem+="AddressID='"+address4ID.ToString()+"'";
}
if(address5ID!=string.Empty)
{
if(tem!=string.Empty)
tem+=" OR ";
tem+="AddressID='"+address5ID.ToString()+"'";
}
if(address6ID!=string.Empty)
{
if(tem!=string.Empty)
tem+=" OR ";
tem+="AddressID='"+address6ID.ToString()+"'";
}
filterExpression.Append("(");
if(tem!=string.Empty)
{
filterExpression.Append(tem);
}
filterExpression.Append(" or WarehouseID='"+Utility.GetGuid(warehouseID).ToString()+"'");
foreach(System.Data.DataRow m_dr in m_ds.Tables[0].Rows)
{
filterExpression.Append(" OR AddressID='"+m_dr["AccountAddressID"].ToString()+"' ");
}
filterExpression.Append(")");
return filterExpression.ToString();
}
/// <summary>
/// 得到清单费用计算比率值(运费, 关税等)
/// </summary>
/// <returns></returns>
public static decimal GetChargeRateValue()
{
return 1.04M;
}
/// <summary>
/// 涉及到库存销售的比值。
/// </summary>
/// <param name="soTaxCode"></param>
/// <param name="ioTaxCode"></param>
/// <returns></returns>
public static decimal GetStockFeeRateValue(int soTaxCode,int ioTaxCode)
{
if(ioTaxCode==int.MinValue)//
{
return 1.06135M;
}
else
{
return GetContactFeeRateValue(soTaxCode,ioTaxCode);
}
}
/// <summary>
/// 取出关系到销售税率与采购税率的计算值
/// </summary>
/// <param name="soTaxCode"></param>
/// <param name="poTaxCode"></param>
/// <returns></returns>
public static decimal GetContactFeeRateValue(int soTaxCode,int poTaxCode)
{
if(poTaxCode==int.MinValue)//无税率,按海外采购计算
{
return 1.06135M;
}
else
{
if(poTaxCode==OVERSEA_TAX_CODE||poTaxCode==OTHER_TAX_CODE)//海外采购
{
//取出存在于中文中的计算值
decimal computeValue = StringMapCache.RetrieveIntervalValue((int)ObjectTypeEnum.Organization,"TaxRateCode",soTaxCode,"zh-CN");
if(computeValue!=0)
{
return computeValue;
}
else
{
return 1;
}
}
else
{
return 1;
}
}
}
/// <summary>
/// 得到拥有者表达式
/// </summary>
/// <param name="listByAccount"></param>
/// <param name="list"></param>
/// <returns></returns>
public static string GetOwnerListExpression(string listByAccount,string list)
{
if(System.Web.HttpContext.Current.Request.QueryString["id"]!=null)
{
return Utility.GetOwningUserFilterExpression(listByAccount,"AccountOwningUser");
}
else
{
return Utility.GetOwningUserFilterExpression(list);
}
}
/// <summary>
/// 得到拥有者表达式
/// </summary>
/// <param name="listByAccount"></param>
/// <param name="list"></param>
/// <returns></returns>
public static string GetOwnerListExpression(string listByAccount,string list,string ownerFlag)
{
if(System.Web.HttpContext.Current.Request.QueryString["id"]!=null)
{
return Utility.GetOwningUserFilterExpression(listByAccount,"AccountOwningUser");
}
else
{
return Utility.GetOwningUserFilterExpression(list,ownerFlag);
}
}
/// <summary>
/// 判断两个税率是否相同
/// </summary>
/// <param name="taxCode1"></param>
/// <param name="taxCode2"></param>
/// <returns></returns>
public static bool JudgeTaxCodeSame(int taxCode1,int taxCode2)
{
if(taxCode1==taxCode2)
{
return true;
}
else
{
if(taxCode1==9||taxCode1==10)//海外与其他,不可能相同
{
return false;
}
else
{
if(taxCode1==1&&taxCode2==2)
{
return true;
}
if(taxCode1==2&&taxCode2==1)
{
return true;
}
if(taxCode1==3&&taxCode2==4)
{
return true;
}
if(taxCode1==4&&taxCode2==3)
{
return true;
}
if(taxCode1==5&&taxCode2==6)
{
return true;
}
if(taxCode1==6&&taxCode2==5)
{
return true;
}
if(taxCode1==7&&taxCode2==8)
{
return true;
}
if(taxCode1==8&&taxCode2==8)
{
return true;
}
return false;
}
}
}
/// <summary>
/// 将简体中文转换繁体中文
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public static string ConvertNumerous(string str)
{
System.Text.StringBuilder sb = new System.Text.StringBuilder();
for(int i=0;i<str.Length;i++)
{
if(simpleString.IndexOf(str[i])!=-1)
{
sb.Append(numerousString[simpleString.IndexOf(str[i])]);
}
else
{
sb.Append(str[i]);
}
}
return sb.ToString();
}
}
}