public override List <RecordBase> Extract() { var list = new List <RecordBase>(); var targets = getTargetListFromReplaceTable(); if (targets.Count == 0) { return(list); } var TradeCompany = getTradeCompany(targets); foreach (var item in targets) { var reorgRec = new ReorganizationRec(); reorgRec.Id = this.Id; reorgRec.Target = item.Target; reorgRec.TargetCompany = item.Comany; foreach (var tc in TradeCompany) { if (tc.TargetCompany == item.Comany) { reorgRec.TradeCompany = tc.TradeCompany; break; } } var Price = GetPrice(reorgRec); reorgRec.Price = MoneyUtility.Format(Price.MoneyAmount, String.Empty); reorgRec.EvaluateMethod = getEvaluateMethod(reorgRec); list.Add(reorgRec); } return(list); }
/// <summary> /// 获得金额 /// </summary> /// <param name="MoneyAmount"></param> /// <param name="MoneyCurrency"></param> public static List <LocAndValue <(String MoneyAmount, String MoneyCurrency)> > LocateMoney(HTMLEngine.MyRootHtmlNode root) { var list = new List <LocAndValue <(String MoneyAmount, String MoneyCurrency)> >(); foreach (var paragrah in root.Children) { foreach (var sentence in paragrah.Children) { var OrgString = sentence.Content; OrgString = NumberUtility.ConvertUpperToLower(OrgString).Replace(" ", String.Empty); var Money = MoneyUtility.SeekMoney(OrgString); foreach (var money in Money) { list.Add(new LocAndValue <(String MoneyAmount, String MoneyCurrency)> { Loc = sentence.PositionId, Description = "金额", Value = money, StartIdx = OrgString.IndexOf(money.MoneyAmount) }); } } } return(list); }
List <RecordBase> ExtractMultiCommon() { var MainRec = ExtractSingle(); //三项订单 //中标通知书6份 //中标通知书四份 //履行进展情况 var Records = new List <RecordBase>(); var isMulti = false; foreach (var p in root.Children) { foreach (var s in p.Children) { if (isMulti) { if (nermap.ParagraghlocateDict.ContainsKey(s.PositionId)) { var nerlist = nermap.ParagraghlocateDict[s.PositionId]; if (nerlist.moneylist.Count == 1) { var ContractRec = new ContractRec(); ContractRec.Id = Id; ContractRec.JiaFang = MainRec.JiaFang; ContractRec.YiFang = MainRec.YiFang; ContractRec.ContractMoneyUpLimit = MoneyUtility.Format(nerlist.moneylist.First().Value.MoneyAmount, String.Empty); ContractRec.ContractMoneyDownLimit = ContractRec.ContractMoneyUpLimit; Records.Add(ContractRec); } } } else { var scan = NumberUtility.ConvertUpperToLower(s.Content).Replace(" ", ""); var cnt = RegularTool.GetRegular(scan, "中标通知书\\d份"); if (cnt.Count == 1) { Console.WriteLine(Id + ":" + cnt[0].RawData + "[" + scan + "]"); isMulti = true; } if (s.Content.Contains("履行进展情况")) { Console.WriteLine(Id + ":履行进展情况"); isMulti = true; } } } } return(Records); }
public static void ContractTest() { var x1 = Normalizer.NormalizeItemListNumber("(4)2012 年 4 月,公司与中国华西企业股份"); var x2 = Normalizer.NormalizeItemListNumber("4 、承包方式: 从深化设计、制作、运输、"); var x3 = Normalizer.NormalizeItemListNumber("4、承包方式: 从深化设计、制作、运输、"); /* StockChange.Extract(Program.DocBase + @"\FDDC_announcements_round1_train_20180518\round1_train_20180518\增减持\html\20526193.html"); StockChange.Extract(Program.DocBase + @"\FDDC_announcements_round1_train_20180518\round1_train_20180518\增减持\html\20596890.html"); StockChange.Extract(Program.DocBase + @"\FDDC_announcements_round1_train_20180518\round1_train_20180518\增减持\html\1018217.html"); StockChange.Extract(Program.DocBase + @"\FDDC_announcements_round1_train_20180518\round1_train_20180518\增减持\html\314146.html"); IncreaseStock.Extract(Program.DocBase + @"\FDDC_announcements_round1_train_20180518\round1_train_20180518\定增\html\7880.html"); Contract.Extract(Program.DocBase + @"\FDDC_announcements_round1_train_20180518\round1_train_20180518\重大合同\html\1153.html"); Contract.Extract(Program.DocBase + @"\FDDC_announcements_round1_train_20180518\round1_train_20180518\重大合同\html\1008828.html"); Contract.Extract(Program.DocBase + @"\FDDC_announcements_round1_train_20180518\round1_train_20180518\重大合同\html\3620.html"); Contract.Extract(Program.DocBase + @"\FDDC_announcements_round1_train_20180518\round1_train_20180518\重大合同\html\1518.html"); Contract.Extract(Program.DocBase + @"\FDDC_announcements_round1_train_20180518\round1_train_20180518\重大合同\html\1120707.html"); Contract.Extract(Program.DocBase + @"\FDDC_announcements_round1_train_20180518\round1_train_20180518\重大合同\html\1044779.html"); Contract.Extract(Program.DocBase + @"\FDDC_announcements_round1_train_20180518\round1_train_20180518\重大合同\html\1450.html"); Contract.Extract(Program.DocBase + @"\FDDC_announcements_round1_train_20180518\round1_train_20180518\重大合同\html\1042224.html"); Contract.Extract(Program.DocBase + @"\FDDC_announcements_round1_train_20180518\round1_train_20180518\重大合同\html\917362.html"); Contract.Extract(Program.DocBase + @"\FDDC_announcements_round1_train_20180518\round1_train_20180518\重大合同\html\5258.html"); IncreaseStock.Extract(@"E:\WorkSpace2018\FDDC_announcements_round1_train_20180518\round1_train_20180518\定增\html\7880.html"); */ //数字金额的测试 var TestString = "中标价为人民币共计16928.79754万元(大写:人民币壹亿陆仟玖佰贰拾捌万柒仟玖佰柒拾伍元肆角整)。"; var Result = MoneyUtility.SeekMoney(TestString); Console.WriteLine(Result[0].MoneyAmount); TestString = "安徽盛运环保(集团)股份有限公司"; //Result = Utility.GetStringBefore(TestString, "有限公司"); //Console.WriteLine(Result); var x0 = "在此之前,2003年6月30日,本公司曾与MICROS US和MICROS Singapore(以下简称 “MICROS”)签订了《技术许可与代理协议》,并分别于2005年11月、2006年12月和2007年 10月与MICROS相继签署了第一、二、三次补充协议。"; var t0 = EntityWordAnlayzeTool.GetMainWordSentence(x0); //在此之前,2003年6月30日,本公司曾与MICROS US和MICROS Singapore(以下简称 “MICROS”)签订了《技术许可与代理协议》,并分别于2005年11月、2006年12月和2007年 10月与MICROS相继签署了第一、二、三次补充协议。" //在此之前,2003年6月30日,本公司 与MICROS US和MICROS Singapore(以下简称 “MICROS”)签订 《技术许可与代理协议》,并 于2005年11月、2006年12月和2007年 10月与MICROS 签署 第一、二、三次补充协议。 }
ContractRec ExtractSingle() { contractType = String.Empty; foreach (var paragrah in root.Children) { foreach (var item in paragrah.Children) { if (item.Content.Contains("中标")) { contractType = "中标"; break; } if (item.Content.Contains("合同")) { contractType = "合同"; break; } } if (contractType != String.Empty) { break; } } if (contractType == String.Empty) { Console.WriteLine("contractType Null:" + Id); } var contract = new ContractRec(); //公告ID contract.Id = Id; //乙方 contract.YiFang = GetYiFang(); if (contract.YiFang.Contains("本公司")) { contract.YiFang = string.Empty; } contract.YiFang = CompanyNameLogic.AfterProcessFullName(contract.YiFang).secFullName; contract.YiFang = contract.YiFang.NormalizeTextResult(); //按照规定除去括号 contract.YiFang = RegularTool.TrimBrackets(contract.YiFang); if (contract.YiFang.Length < 3) { contract.YiFang = string.Empty; } //甲方 contract.JiaFang = GetJiaFang(contract.YiFang); if (contract.JiaFang.Contains("本公司")) { contract.JiaFang = string.Empty; } contract.JiaFang = CompanyNameLogic.AfterProcessFullName(contract.JiaFang).secFullName; contract.JiaFang = contract.JiaFang.NormalizeTextResult(); if (contract.JiaFang.Contains("简称")) { contract.JiaFang = Utility.GetStringBefore(contract.JiaFang, "("); } //机构列表 if (Nerlist != null) { var NiList = Nerlist.Where((n) => n.Type == LTPTrainingNER.enmNerType.Ni).Select((m) => m.RawData); if (!NiList.Contains(contract.JiaFang)) { if (NiList.Contains("国家电网公司")) { contract.JiaFang = "国家电网公司"; } } } //项目 contract.ProjectName = GetProjectName(); contract.ProjectName = contract.ProjectName.NormalizeTextResult(); if (contract.ProjectName.StartsWith("“") && contract.ProjectName.EndsWith("”")) { contract.ProjectName = contract.ProjectName.TrimStart("“".ToCharArray()).TrimEnd("”".ToCharArray()); } if (contract.ProjectName.EndsWith(",签约双方")) { contract.ProjectName = Utility.GetStringAfter(contract.ProjectName, ",签约双方"); } if (contract.ProjectName.Contains("(以下简称")) { contract.ProjectName = Utility.GetStringAfter(contract.ProjectName, "(以下简称"); } if (contract.ProjectName.EndsWith(")")) { if (contract.ProjectName.Contains("(招标编号")) { contract.ProjectName = Utility.GetStringBefore(contract.ProjectName, "(招标编号"); } if (contract.ProjectName.Contains("(合同编号")) { contract.ProjectName = Utility.GetStringBefore(contract.ProjectName, "(合同编号"); } } contract.ProjectName = contract.ProjectName.Replace("的推荐中标", ""); //特殊处理 contract.ProjectName = contract.ProjectName.Replace("<1>", "1、"); contract.ProjectName = contract.ProjectName.Replace("“", ""); contract.ProjectName = contract.ProjectName.Replace("”", ""); //合同名 contract.ContractName = GetContractName(); if (contract.ContractName.StartsWith("“") && contract.ContractName.EndsWith("”")) { contract.ContractName = contract.ContractName.TrimStart("“".ToCharArray()).TrimEnd("”".ToCharArray()); } //去掉书名号 contract.ContractName = contract.ContractName.Replace("《", String.Empty).Replace("》", String.Empty); contract.ContractName = contract.ContractName.NormalizeTextResult(); if (contract.ContractName.Contains("(以下简称")) { contract.ContractName = Utility.GetStringAfter(contract.ContractName, "(以下简称"); } contract.ContractName = ExtendContractName(contract.ContractName); //如果是采购协议,则工程名清空 if (contract.ContractName.Contains("采购")) { if (contract.ProjectName.Contains("标段")) { //TODO: } else { contract.ProjectName = string.Empty; } } //金额 var money = GetMoney(); contract.ContractMoneyUpLimit = MoneyUtility.Format(money.MoneyAmount, String.Empty); contract.ContractMoneyDownLimit = contract.ContractMoneyUpLimit; //联合体 contract.UnionMember = GetUnionMember(contract); contract.UnionMember = contract.UnionMember.NormalizeTextResult(); //按照规定除去括号 contract.UnionMember = RegularTool.TrimBrackets(contract.UnionMember); var YiFangArray = contract.YiFang.Split(Utility.SplitChar); if (YiFangArray.Length > 1) { contract.UnionMember = Utility.GetStringAfter(contract.YiFang, Utility.SplitChar); contract.YiFang = YiFangArray[0]; Console.WriteLine("联合体:" + contract.UnionMember); } return(contract); }
/// <summary> /// 北车 /// </summary> /// <returns></returns> List <RecordBase> ExtractMultiFromNorthVehicle() { //主合同的抽取:(北车专用) //#151135: 若干项重大合同 //#153045: 若干项重大合同 //#153271: 若干项重大合同 //#175840: 若干项重大合同 var Records = new List <RecordBase>(); var isMulti = false; foreach (var p in root.Children) { foreach (var s in p.Children) { if (s.Content.Contains("若干项重大合同")) { isMulti = true; Console.WriteLine("若干项重大合同 ID:" + Id); } if (s.Content.StartsWith("<") && isMulti) { var ContractRec = new ContractRec(); ContractRec.Id = Id; //5 、本公司全资子公司中国北车集团大连机车车辆有限公司与大同地方铁路公司签订了约 3.26 亿元人民币的电力机车销售合同。 var i0 = s.Content.IndexOf("与"); var i1 = s.Content.IndexOf("签订"); if (i0 != -1 && i1 != -1 && i0 < i1) { ContractRec.JiaFang = s.Content.Substring(i0 + 1, i1 - i0 - 1); } foreach (var cn in companynamelist) { if (cn.isSubCompany && cn.positionId == s.PositionId) { ContractRec.YiFang = cn.secFullName; } } var ml = moneylist.Where((x) => x.Loc == s.PositionId).ToList(); var SpecailContractNames = new string[] { "地铁车辆出口合同", "地铁车辆牵引系统销售合同", "地铁车辆销售合同", "地铁销售合同", "电动客车销售合同", "电力机车销售合同", "动车组检修合同", "动车组销售合同", "风力发电机组销售合同", "货车出口合同", "货车检修合同", "货车销售合同", "货车修理合同", "机车出口合同", "机车大修及加改合同", "客车检修合同", "客车销售合同", "客车修理合同", "煤炭漏斗车销售合同", "内燃电传动机车销售合同", "内燃动车组销售合同", "内燃机车订单", "铁路客车修理合同", "有轨电车销售合同" }.ToList(); foreach (var scn in SpecailContractNames) { if (s.Content.Contains(scn)) { ContractRec.ContractName = scn; break; } } if (ml.Count == 1) { if (!String.IsNullOrEmpty(ContractRec.JiaFang) && !String.IsNullOrEmpty(ContractRec.YiFang)) { ContractRec.ContractMoneyUpLimit = MoneyUtility.Format(ml.First().Value.MoneyAmount, String.Empty); ContractRec.ContractMoneyDownLimit = ContractRec.ContractMoneyUpLimit; Records.Add(ContractRec); } } } } } return(Records); }
List <RecordBase> ExtractMultiFromTable() { var Records = new List <RecordBase>(); var JiaFang = new TableSearchTitleRule(); JiaFang.Name = "甲方"; JiaFang.Title = new string[] { "采购人" }.ToList(); JiaFang.IsTitleEq = false; JiaFang.IsRequire = true; var YiFang = new TableSearchTitleRule(); YiFang.Name = "乙方"; //"投资者名称","股东名称" YiFang.Title = new string[] { "中标人" }.ToList(); YiFang.IsTitleEq = false; YiFang.IsRequire = true; var ProjectName = new TableSearchTitleRule(); ProjectName.Name = "项目名称"; ProjectName.Title = new string[] { "项目名称" }.ToList(); ProjectName.IsTitleEq = false; ProjectName.IsRequire = false; var Money = new TableSearchTitleRule(); Money.Name = "中标金额"; Money.Title = new string[] { "中标金额" }.ToList(); Money.IsTitleEq = false; Money.IsRequire = false; var Rules = new List <TableSearchTitleRule>(); Rules.Add(JiaFang); Rules.Add(YiFang); Rules.Add(ProjectName); Rules.Add(Money); var opt = new SearchOption(); opt.IsMeger = false; var result = HTMLTable.GetMultiInfoByTitleRules(root, Rules, opt); if (result.Count > 0) { Console.WriteLine("Table ExtractMulti ID:" + Id); foreach (var item in result) { var ContractRec = new ContractRec(); ContractRec.Id = Id; ContractRec.JiaFang = item[0].RawData; ContractRec.JiaFang = ContractRec.JiaFang.NormalizeTextResult(); ContractRec.YiFang = item[1].RawData; ContractRec.YiFang = ContractRec.YiFang.NormalizeTextResult(); foreach (var cn in companynamelist) { if (!String.IsNullOrEmpty(cn.secShortName) && cn.secShortName.Equals(ContractRec.YiFang)) { if (!string.IsNullOrEmpty(cn.secFullName)) { ContractRec.YiFang = cn.secFullName; break; } } } ContractRec.ProjectName = item[2].RawData; ContractRec.ProjectName = ContractRec.ProjectName.NormalizeTextResult(); ContractRec.ContractMoneyUpLimit = MoneyUtility.Format(item[3].RawData, item[3].Title); ContractRec.ContractMoneyDownLimit = ContractRec.ContractMoneyUpLimit; Records.Add(ContractRec); } } return(Records); }
struContract ExtractSingle(MyRootHtmlNode root, String Id) { contractType = String.Empty; foreach (var paragrah in root.Children) { foreach (var item in paragrah.Children) { if (item.Content.Contains("中标")) { contractType = "中标"; break; } if (item.Content.Contains("合同")) { contractType = "合同"; break; } } if (contractType != String.Empty) { break; } } if (contractType == String.Empty) { Console.WriteLine("contractType Null:" + Id); } var contract = new struContract(); //公告ID contract.id = Id; //甲方 contract.JiaFang = GetJiaFang(); contract.JiaFang = CompanyNameLogic.AfterProcessFullName(contract.JiaFang).secFullName; contract.JiaFang = contract.JiaFang.NormalizeTextResult(); if (!Nerlist.Contains(contract.JiaFang)) { //作为特殊单位,国家电网公司一般都是甲方 if (Nerlist.Contains("国家电网公司")) { contract.JiaFang = "国家电网公司"; } } //乙方 contract.YiFang = GetYiFang(); contract.YiFang = CompanyNameLogic.AfterProcessFullName(contract.YiFang).secFullName; contract.YiFang = contract.YiFang.NormalizeTextResult(); //按照规定除去括号 contract.YiFang = RegularTool.TrimBrackets(contract.YiFang); //项目 contract.ProjectName = GetProjectName(); if (contract.ProjectName.StartsWith("“") && contract.ProjectName.EndsWith("”")) { contract.ProjectName = contract.ProjectName.TrimStart("“".ToCharArray()).TrimEnd("”".ToCharArray()); } if (contract.ProjectName.EndsWith(",签约双方")) { contract.ProjectName = Utility.GetStringAfter(contract.ProjectName, ",签约双方"); } if (contract.ProjectName.Contains("(以下简称")) { contract.ProjectName = Utility.GetStringAfter(contract.ProjectName, "(以下简称"); } contract.ProjectName = contract.ProjectName.NormalizeTextResult(); //合同 if (contractType == "中标") { //按照数据分析来看,应该工程名 在中标的时候填写,合同名在合同的时候填写 contract.ContractName = String.Empty; } else { contract.ContractName = GetContractName(); if (contract.ContractName.StartsWith("“") && contract.ContractName.EndsWith("”")) { contract.ContractName = contract.ContractName.TrimStart("“".ToCharArray()).TrimEnd("”".ToCharArray()); } //去掉书名号 contract.ContractName = contract.ContractName.Replace("《", String.Empty).Replace("》", String.Empty); if (contract.ContractName.Contains("(以下简称")) { contract.ContractName = Utility.GetStringAfter(contract.ContractName, "(以下简称"); } contract.ContractName = contract.ContractName.NormalizeTextResult(); } //金额 var money = GetMoney(); contract.ContractMoneyUpLimit = MoneyUtility.Format(money.MoneyAmount, String.Empty); contract.ContractMoneyDownLimit = contract.ContractMoneyUpLimit; //联合体 contract.UnionMember = GetUnionMember(contract.JiaFang, contract.YiFang); contract.UnionMember = contract.UnionMember.NormalizeTextResult(); //按照规定除去括号 contract.UnionMember = RegularTool.TrimBrackets(contract.UnionMember); return(contract); }
public override List <RecordBase> Extract() { InitTableRules(); GetPersonList(); //是否在释义表中存在交易对手信息 foreach (var item in ExplainDict) { var keys = item.Key.Split(Utility.SplitChar); var keys2 = item.Key.Split(new char[] { '/', '/' }); if (keys.Length == 1 && keys2.Length > 1) { keys = keys2; } foreach (var k in keys) { if (k.Contains("交易对方")) { Console.WriteLine("交易对方条目:" + k); } } } //HTML结构 foreach (var item in root.Children) { //var title = item.Content.Normalize().NormalizeTextResult(); //Console.WriteLine(item.PositionId + ":" + title.Substring(0, Math.Min(20, title.Length))); } var list = new List <RecordBase>(); var targets = getTargetListFromExplainTable().Distinct().ToList(); if (targets.Count == 0) { return(list); } var EvaluateMethodLoc = LocateProperty.LocateCustomerWord(root, ReOrganizationTraning.EvaluateMethodList, "评估法"); this.CustomerList = EvaluateMethodLoc; nermap.Anlayze(this); foreach (var item in targets) { if (item.Target.Contains("发行")) { continue; } if (item.Target.Contains("置换")) { continue; } if (item.Target.Contains("置出")) { continue; } if (item.Target.Contains("置入")) { continue; } if (item.Target.Contains("本次")) { continue; } if (item.Target.Contains("出售")) { continue; } if (item.Target.Contains("购买")) { continue; } var reorgRec = new ReorganizationRec(); reorgRec.Id = this.Id; reorgRec.Target = item.Target; reorgRec.TargetCompany = item.Comany.TrimEnd("合计".ToArray()); //<1>XXXX公司的的对应 Regex r = new Regex(@"\<(\d+)\>"); if (r.IsMatch(reorgRec.TargetCompany)) { Console.WriteLine("Before Trim:" + reorgRec.TargetCompany); reorgRec.TargetCompany = r.Replace(reorgRec.TargetCompany, ""); Console.WriteLine("After Trim:" + reorgRec.TargetCompany); } if (reorgRec.TargetCompany.Equals("本公司")) { continue; } if (reorgRec.TargetCompany.Equals("标的公司")) { continue; } //标的公司的简称填补 foreach (var dict in ExplainDict) { var keys = dict.Key.Split(Utility.SplitChar); var keys2 = dict.Key.Split(new char[] { '/', '/' }); var isHit = false; if (keys.Length == 1 && keys2.Length > 1) { keys = keys2; } foreach (var key in keys) { if (key.Contains("标的")) { continue; } if (key.Contains("目标")) { continue; } if (key.Equals("上市公司")) { continue; } if (key.Equals("本公司")) { continue; } if (key.Equals(reorgRec.TargetCompany) || dict.Value.Equals(reorgRec.TargetCompany)) { var tempKey = key; if (tempKey.Contains(",")) { tempKey = Utility.GetStringBefore(tempKey, ","); } var tempvalue = dict.Value; if (tempvalue.Contains(",")) { tempvalue = Utility.GetStringBefore(tempvalue, ","); } reorgRec.TargetCompanyFullName = tempvalue; reorgRec.TargetCompanyShortName = tempKey; isHit = true; break; } } if (isHit) { break; } } var TradeCompany = getTradeCompany(reorgRec); reorgRec.TradeCompany = String.Join(Utility.SplitChar, TradeCompany); //根据各种模板规则获得的交易对手 var xTradeList = getTradeCompanyByKeyWord(reorgRec); if (xTradeList.Count == 1) { var xTrade = ""; xTrade = xTradeList.First(); //单个结果的情况下 if (!String.IsNullOrEmpty(xTrade)) { foreach (var dict in ExplainDict) { var keys = dict.Key.Split(Utility.SplitChar); var keys2 = dict.Key.Split(new char[] { '/', '/' }); var isHit = false; if (keys.Length == 1 && keys2.Length > 1) { keys = keys2; } foreach (var key in keys) { if (key.Contains("标的")) { continue; } if (key.Contains("目标")) { continue; } if (key.Equals("上市公司")) { continue; } if (key.Equals("本公司")) { continue; } if (key.Equals(xTrade) || dict.Value.Equals(xTrade)) { var tempKey = key; if (tempKey.Contains(",")) { tempKey = Utility.GetStringBefore(tempKey, ","); } var tempvalue = dict.Value; if (tempvalue.Contains(",")) { tempvalue = Utility.GetStringBefore(tempvalue, ","); } reorgRec.TradeCompanyFullName = tempvalue; reorgRec.TradeCompanyShortName = tempKey; isHit = true; break; } } if (isHit) { break; } } reorgRec.TradeCompany = xTrade; if (!String.IsNullOrEmpty(reorgRec.TradeCompanyFullName) && !String.IsNullOrEmpty(reorgRec.TradeCompanyShortName)) { reorgRec.TradeCompany = reorgRec.TradeCompanyFullName + "|" + reorgRec.TradeCompanyShortName; } } } if (xTradeList.Count > 1) { reorgRec.TradeCompany = String.Join(Utility.SplitChar, xTradeList); } //释义表中获得的交易对手,进行必要的订正 if (string.IsNullOrEmpty(reorgRec.TradeCompany)) { var xTradeListExplain = getTradeCompanyByExplain(reorgRec); foreach (var tradeItem in xTradeListExplain) { //交易公司的简称填补 foreach (var dict in ExplainDict) { var keys = dict.Key.Split(Utility.SplitChar); var keys2 = dict.Key.Split(new char[] { '/', '/' }); var isHit = false; if (keys.Length == 1 && keys2.Length > 1) { keys = keys2; } foreach (var key in keys) { if (key.Contains("标的")) { continue; } if (key.Contains("目标")) { continue; } if (key.Equals("上市公司")) { continue; } if (key.Equals("本公司")) { continue; } if (key.Equals(tradeItem.Value) || dict.Value.Equals(tradeItem.Value)) { var tempKey = key; if (tempKey.Contains(",")) { tempKey = Utility.GetStringBefore(tempKey, ","); } var tempvalue = dict.Value; if (tempvalue.Contains(",")) { tempvalue = Utility.GetStringBefore(tempvalue, ","); } reorgRec.TradeCompanyFullName = tempvalue; if (!tempKey.Equals("交易对方") && !tempKey.Equals("发行对象")) { reorgRec.TradeCompanyShortName = tempKey; } isHit = true; break; } } if (isHit) { break; } } reorgRec.TradeCompany = tradeItem.Value; if (!String.IsNullOrEmpty(reorgRec.TradeCompanyFullName) && !String.IsNullOrEmpty(reorgRec.TradeCompanyShortName)) { reorgRec.TradeCompany = reorgRec.TradeCompanyFullName + "|" + reorgRec.TradeCompanyShortName; } else { //中建六局及中建八局 var tradeArray = tradeItem.Value.Split(Utility.SplitChar).ToList(); var last = tradeArray.Last(); if (last.Contains("以及")) { tradeArray.RemoveAt(tradeArray.Count - 1); tradeArray.Add(Utility.GetStringBefore(last, "以及")); tradeArray.Add(Utility.GetStringAfter(last, "以及")); reorgRec.TradeCompany = String.Join(Utility.SplitChar, tradeArray); } else { if (last.Contains("及")) { tradeArray.RemoveAt(tradeArray.Count - 1); tradeArray.Add(Utility.GetStringBefore(last, "及")); tradeArray.Add(Utility.GetStringAfter(last, "及")); reorgRec.TradeCompany = String.Join(Utility.SplitChar, tradeArray); } if (last.Contains("和")) { tradeArray.RemoveAt(tradeArray.Count - 1); tradeArray.Add(Utility.GetStringBefore(last, "和")); tradeArray.Add(Utility.GetStringAfter(last, "和")); reorgRec.TradeCompany = String.Join(Utility.SplitChar, tradeArray); } } } Console.WriteLine("使用释义表的交易对手:" + tradeItem.Key + ":" + reorgRec.TradeCompany); break; } } //交易对手最后整型 NormalizeTradeCompany(reorgRec); var Price = GetPrice(reorgRec, targets.Count == 1); reorgRec.Price = MoneyUtility.Format(Price.MoneyAmount, String.Empty); reorgRec.EvaluateMethod = getEvaluateMethod(reorgRec, targets.Count == 1); if (!String.IsNullOrEmpty(reorgRec.TargetCompanyFullName) && !String.IsNullOrEmpty(reorgRec.TargetCompanyShortName)) { reorgRec.TargetCompany = reorgRec.TargetCompanyFullName + "|" + reorgRec.TargetCompanyShortName; } if (String.IsNullOrEmpty(reorgRec.TargetCompany) || String.IsNullOrEmpty(reorgRec.Target)) { continue; } //相同记录合并 var UnionKey = reorgRec.TargetCompany + reorgRec.Target; bool IsKeyExist = false; foreach (ReorganizationRec exist in list) { var existKey = exist.TargetCompany + exist.Target; if (UnionKey.Equals(existKey)) { IsKeyExist = true; break; } } if (!IsKeyExist) { list.Add(reorgRec); } } //价格或者评估表中出现过的(以下代码这里只是检证) if (PriceTable.Count != 0 && EvaluateTable.Count != 0 && PriceTable.Count == EvaluateTable.Count) { if (PriceTable.Count != list.Count) { Console.WriteLine(Id); foreach (var item in EvaluateTable) { Console.WriteLine("评估表:" + item[0].RawData.Replace(" ", "") + " Value:" + item[1].RawData); } foreach (var item in PriceTable) { Console.WriteLine("价格表:" + item[0].RawData.Replace(" ", "") + " Value:" + item[1].RawData); } foreach (ReorganizationRec item in list) { Console.WriteLine("抽出:" + item.TargetCompany + item.Target); } } } return(list); }
private string ToUpperChineseMoney(decimal money) { return(MoneyUtility.GetChineseMoney(money)); }
public override List <RecordBase> Extract() { InitTableRules(); var list = new List <RecordBase>(); var targets = getTargetListFromReplaceTable(); if (targets.Count == 0) { return(list); } var TradeCompany = getTradeCompany(targets); foreach (var item in targets) { var reorgRec = new ReorganizationRec(); reorgRec.Id = this.Id; reorgRec.Target = item.Target; reorgRec.TargetCompany = item.Comany; foreach (var tc in TradeCompany) { if (tc.TargetCompany == item.Comany) { reorgRec.TradeCompany = tc.TradeCompany; break; } } var Price = GetPrice(reorgRec); reorgRec.Price = MoneyUtility.Format(Price.MoneyAmount, String.Empty); reorgRec.EvaluateMethod = getEvaluateMethod(reorgRec); //最后才能进行 多选配置!!! foreach (var dict in ExplainDict) { var keys = dict.Key.Split(Utility.SplitChar); var keys2 = dict.Key.Split("/"); var isHit = false; if (keys.Length == 1 && keys2.Length > 1) { keys = keys2; } foreach (var key in keys) { if (key.Contains("标的")) { continue; } if (key.Contains("目标")) { continue; } if (key.Equals("上市公司")) { continue; } if (key.Equals("本公司")) { continue; } if (dict.Key.Equals(reorgRec.TargetCompany) || dict.Value.Equals(reorgRec.TargetCompany)) { var tempKey = key; if (tempKey.Contains(",")) { tempKey = Utility.GetStringBefore(tempKey, ","); } var tempvalue = dict.Value; if (tempvalue.Contains(",")) { tempvalue = Utility.GetStringBefore(tempvalue, ","); } reorgRec.TargetCompany = tempKey + "|" + tempvalue; isHit = true; break; } } if (isHit) { break; } } list.Add(reorgRec); } //需要在释义表中出现过的 if (PriceTable.Count != 0 && EvaluateTable.Count != 0 && PriceTable.Count == EvaluateTable.Count) { if (PriceTable.Count != list.Count) { Console.WriteLine(Id); foreach (var item in EvaluateTable) { Console.WriteLine("评估表:" + item[0].RawData.Replace(" ", "") + " Value:" + item[1].RawData); } foreach (var item in PriceTable) { Console.WriteLine("价格表:" + item[0].RawData.Replace(" ", "") + " Value:" + item[1].RawData); } foreach (ReorganizationRec item in list) { Console.WriteLine("抽出:" + item.TargetCompany + item.Target); } } } return(list); }
public void BuildData(System.Collections.Specialized.NameValueCollection requestPostData, out KeyValueVariables variables, out KeyTableVariables tableVariables) { variables = new KeyValueVariables(); tableVariables = new KeyTableVariables(); string sysNo = requestPostData["SysNo"]; if (sysNo != null && sysNo.Trim() != String.Empty) { sysNo = System.Web.HttpUtility.UrlDecode(sysNo); int requestSysNo = int.TryParse(sysNo, out requestSysNo) ? requestSysNo : int.MinValue; if (requestSysNo > int.MinValue) { AdjustRequestInfo requestInfo = ObjectFactory <AdjustRequestAppService> .Instance.GetAdjustRequestInfoBySysNo(requestSysNo); DataTable dtInvoice = new DataTable(); dtInvoice.Columns.AddRange(new DataColumn[] { new DataColumn("OutStockDate"), new DataColumn("ReceiveName"), new DataColumn("Contact"), new DataColumn("Address"), new DataColumn("Phone"), new DataColumn("Note"), new DataColumn("CustomerID"), new DataColumn("RequestSysNo"), new DataColumn("UpperAmount"), new DataColumn("ProductList", typeof(DataTable)) }); tableVariables.Add("InvoiceList", dtInvoice); DataRow dr = dtInvoice.NewRow(); dr["ReceiveName"] = requestInfo.InvoiceInfo.ReceiveName; dr["Contact"] = requestInfo.InvoiceInfo.ContactAddress; dr["Address"] = requestInfo.InvoiceInfo.ContactShippingAddress; dr["Phone"] = requestInfo.InvoiceInfo.ContactPhoneNumber; dr["CustomerID"] = requestInfo.InvoiceInfo.CustomerID; dr["RequestSysNo"] = requestInfo.SysNo; dr["OutStockDate"] = requestInfo.OutStockDate.HasValue ? requestInfo.OutStockDate.Value.ToString(SOConst.DateFormat) : string.Empty; dr["Note"] = requestInfo.InvoiceInfo.Note; DataTable dtProduct = new DataTable(); dtProduct.Columns.AddRange(new System.Data.DataColumn[] { new DataColumn("ProductID"), new DataColumn("ProductName"), new DataColumn("Price"), new DataColumn("Quantity"), new DataColumn("Amount") }); decimal totalAmount = 0M; int i = 0; requestInfo.AdjustItemInfoList.ForEach(p => { i++; totalAmount += p.AdjustQuantity * p.AdjustCost; DataRow drProduct = dtProduct.NewRow(); drProduct["ProductID"] = p.AdjustProduct.ProductID; drProduct["ProductName"] = p.AdjustProduct.ProductBasicInfo.ProductBriefTitle; drProduct["Price"] = p.AdjustCost.ToString("N2"); drProduct["Quantity"] = p.AdjustQuantity; drProduct["Amount"] = (p.AdjustQuantity * p.AdjustCost).ToString("N2"); dtProduct.Rows.Add(drProduct); if (i % 6 == 0 || i == requestInfo.AdjustItemInfoList.Count) { dr["ProductList"] = dtProduct; dr["UpperAmount"] = MoneyUtility.GetChineseMoney(totalAmount); dtInvoice.Rows.Add(dr); if (i != requestInfo.AdjustItemInfoList.Count - 1) { dtProduct = dtProduct.Clone(); DataRow tdr = dtInvoice.NewRow(); // dtInvoice.Rows.Add(tdr); tdr["ReceiveName"] = dr["ReceiveName"]; tdr["Contact"] = dr["Contact"]; tdr["Address"] = dr["Address"]; tdr["Phone"] = dr["Phone"]; tdr["CustomerID"] = dr["CustomerID"]; tdr["RequestSysNo"] = dr["RequestSysNo"]; tdr["OutStockDate"] = dr["OutStockDate"]; tdr["Note"] = dr["Note"]; dr = tdr; dtProduct.Rows.Clear(); } } }); } } }