From ee979acdd5866fd65325db60c9f22b38fd5e34e8 Mon Sep 17 00:00:00 2001 From: ddlucky Date: Tue, 16 Aug 2022 14:03:23 +0800 Subject: [PATCH] 0816 --- D7MqClient/D7MqClient/App.config | 2 +- D7MqClient/D7MqClient/InvtoD7.cs | 682 +++++++++++++++++++++++++++++++ 2 files changed, 683 insertions(+), 1 deletion(-) create mode 100644 D7MqClient/D7MqClient/InvtoD7.cs diff --git a/D7MqClient/D7MqClient/App.config b/D7MqClient/D7MqClient/App.config index 9426984f..77aa9354 100644 --- a/D7MqClient/D7MqClient/App.config +++ b/D7MqClient/D7MqClient/App.config @@ -16,7 +16,7 @@ --> - + diff --git a/D7MqClient/D7MqClient/InvtoD7.cs b/D7MqClient/D7MqClient/InvtoD7.cs new file mode 100644 index 00000000..44ae086f --- /dev/null +++ b/D7MqClient/D7MqClient/InvtoD7.cs @@ -0,0 +1,682 @@ +using log4net; +using RabbitMQ.Client; +using RabbitMQ.Client.Events; +using System; +using Newtonsoft.Json; +using System.Collections.Generic; +using System.Configuration; +using System.Linq; +using System.Text; +using System.Data; +using DSWeb.Common.DB; +using MailAnalyzeTools; + +namespace D7MqClient +{ + + public class InvoiceListItem + { + /// + /// + /// + public Int64 apiReadTime { get; set; } + /// + /// + /// + public Int64 apiSendTime { get; set; } + /// + /// + /// + public string buyerAccount { get; set; } + /// + /// + /// + public string buyerAddress { get; set; } + /// + /// + /// + public string buyerName { get; set; } + /// + /// + /// + public string buyerTaxNum { get; set; } + /// + /// + /// + public string buyerTel { get; set; } + /// + /// + /// + public string checker { get; set; } + /// + /// + /// + public string clerk { get; set; } + /// + /// + /// + public string compId { get; set; } + /// + /// + /// + public Int64 createTime { get; set; } + /// + /// + /// + public string email { get; set; } + /// + /// + /// + public string gID { get; set; } + /// + /// + /// + public string invCode { get; set; } + /// + /// + /// + public string invNum { get; set; } + /// + /// + /// + public string payee { get; set; } + /// + /// + /// + public string pdfUrl { get; set; } + /// + /// + /// + public string pictureUrl { get; set; } + /// + /// + /// + public string salerAccount { get; set; } + /// + /// + /// + public string salerAddress { get; set; } + /// + /// + /// + public string salerName { get; set; } + /// + /// + /// + public string salerTaxNum { get; set; } + /// + /// + /// + public string salerTel { get; set; } + /// + /// + /// + public string serialNo { get; set; } + /// + /// + /// + public string status { get; set; } + + public string message { get; set; } + + public invmessage errormessage { get; set; } + + + public decimal? total { get; set; } + /// + /// 自动根据发票的gid找到需要合计的 + /// + /// + /// + public decimal getAmount(string currency, List ls) + { + + var _ls = ls.Where(x => x.invoiceId == gID).ToList(); + + var result = 0M; + + if (_ls.Count > 0) + { + + if (currency == "RMB") + { + result = _ls.Sum(s => s.amountTotalRMB); + } + else + { + result = _ls.Sum(s => s.amountTotal); + } + } + + return result; + + } + + public decimal getSplitAmount(List ls) + { + + var _ls = ls.Where(x => x.invoiceId == gID).ToList(); + + var result = 0M; + + if (_ls.Count > 0) + { + + if (_ls[0].currency == "RMB") + { + result = _ls.Sum(s => s.splitAmountRMB); + } + else + { + result = _ls.Sum(s => s.splitAmount); + } + } + + return result; + + } + + public decimal getRMBAmount(List ls) + { + + var _ls = ls.Where(x => x.invoiceId == gID).ToList(); + + var result = 0M; + + if (_ls.Count > 0) + { + result = _ls.Sum(s => s.amountTotalRMB); + } + + return result; + + } + + public decimal getOTAmount(List ls) + { + + var _ls = ls.Where(x => x.invoiceId == gID).ToList(); + + var result = 0M; + + if (_ls.Count > 0) + { + + + result = _ls.Sum(s => s.amountTotal); + + } + + return result; + + } + + public void setmessage() + { + if (!string.IsNullOrWhiteSpace(message)) + errormessage = JsonConvert.DeserializeAnonymousType(message, new invmessage()); + } + } + + public class invmessage + { + //"message": "{\"code\":1,\"message\":\"调用金税盘失败\",\"postTime\":1660614772000,\"serialNo\":\"3c27c755b2394998839685cf6a3c714a\"}", + public int code { get; set; } + public string message { get; set; } + public long postTime { get; set; } + public string serialNo { get; set; } + } + + public class SplitListItem + { + /// + /// + /// + public decimal amountTotal { get; set; } + /// + /// + /// + public decimal amountTotalRMB { get; set; } + /// + /// + /// + public string bSNO { get; set; } + /// + /// + /// + public string businessId { get; set; } + /// + /// + /// + public string currency { get; set; } + /// + /// + /// + public string feeId { get; set; } + /// + /// + /// + public string gID { get; set; } + /// + /// + /// + public string invoiceDetailId { get; set; } + /// + /// + /// + public string invoiceId { get; set; } + /// + /// + /// + public string linkId { get; set; } + /// + /// + /// + public decimal splitAmount { get; set; } + /// + /// + /// + public decimal splitAmountRMB { get; set; } + } + + public class InvRoot + { + /// + /// + /// + public string companyId { get; set; } + /// + /// + /// + public List invoiceList { get; set; } + /// + /// + /// + public string linkId { get; set; } + /// + /// + /// + public List splitList { get; set; } + } + + public class InvToD7 + { + private static ILog logger = LogManager.GetLogger("D7MqClient"); + class MqInfo + { + + public string DS7COMPANYID { get; set; } + public string COMPANYID { get; set; } + public string MQURL { get; set; } + public string virtualhost { get; set; } + public string ExchangeName { get; set; } + + public string QueueName { get; set; } + + public string DbconnStr { get; set; } + + private CommonDataContext cdc { get; set; } + + public MqInfo() { } + + public MqInfo(string corpid, string dbconnStr) + { + COMPANYID = corpid; + MQURL = ConfigurationManager.AppSettings["MQURL"]; + virtualhost = ConfigurationManager.AppSettings["virtualhost"]; + ExchangeName = "inv.result"; + QueueName = "inv.result." + COMPANYID; + //ExchangeName = "output"; + //QueueName = "djy.output.cma.file."; + DbconnStr = dbconnStr; + + cdc = new CommonDataContext(DbconnStr); + } + + public IConnection mqConn; + + + public void DoGetInfo() + { + //TestDeal(); + + + logger.Debug($"启动接收文件消息" + COMPANYID); + + var CompanyQueueName = QueueName; + ConnectionFactory factory = new ConnectionFactory(); + factory.Uri = new Uri(MQURL); + factory.VirtualHost = virtualhost; + mqConn = factory.CreateConnection(); + + IModel model = mqConn.CreateModel(); + model.ExchangeDeclare(ExchangeName, ExchangeType.Direct, true, false); + model.QueueDeclare(CompanyQueueName, true, false, false); + //model.ExchangeDeclare(ExchangeName, ExchangeType.Direct, false, false); + //model.QueueDeclare(CompanyQueueName, false, false, false, null); + + var consumer = new EventingBasicConsumer(model); + consumer.Received += (ch, ea) => + { + var body = ea.Body; + var strBody = Encoding.UTF8.GetString(body.ToArray()); + logger.Debug($"收到消息:{strBody}"); + + try + { + //回写数据 + var InvRoot = JsonConvert.DeserializeAnonymousType(strBody, new InvRoot()); + + + SaveInv(InvRoot); + } + catch (Exception ex) + { + logger.Error($"处理消息时出错:" + ex.Message); + logger.Error(ex.Message); + logger.Error(ex.StackTrace); + } + }; + model.BasicConsume(CompanyQueueName, true, consumer); + + } + + private void TestDeal() + { + + var strBody = "{\"companyId\":\"9f3b3526-4dd4-4997-b974-1f2adb2793c7\",\"invoiceList\":[{\"apiReadTime\":1660614772000,\"apiSendTime\":1660614724000,\"buyerAccount\":\"招商银行股份有限公司济南会展中心支行 531903348710703 \",\"buyerName\":\"山东百特凯瑞国际物流有限公司\",\"buyerTaxNum\":\"91370103689810707B\",\"buyerTel\":\"\",\"checker\":\"sss\",\"clerk\":\"zwk\",\"compId\":\"9f3b3526-4dd4-4997-b974-1f2adb2793c7\",\"createTime\":1660614469000,\"email\":\"market@dongshengsoft.com\",\"gID\":\"3c27c755b2394998839685cf6a3c714a\",\"message\":\"{\\\"code\\\":1,\\\"message\\\":\\\"调用金税盘失败\\\",\\\"postTime\\\":1660614772000,\\\"serialNo\\\":\\\"3c27c755b2394998839685cf6a3c714a\\\"}\",\"payee\":\"zwk\",\"requireRemark\":\"\n\",\"salerAccount\":\"\",\"salerAddress\":\"青岛市市南区延安三路129号1005室\",\"salerName\":\"青岛东胜伟业软件有限公司\",\"salerTaxNum\":\"913702020814028524\",\"salerTel\":\"0532-68628148\",\"serialNo\":\"3c27c755b2394998839685cf6a3c714a\",\"status\":\"fail\"},{\"apiReadTime\":1660614771000,\"apiSendTime\":1660614724000,\"buyerAccount\":\"招商银行股份有限公司济南会展中心支行 531903348710703 \",\"buyerName\":\"山东百特凯瑞国际物流有限公司\",\"buyerTaxNum\":\"91370103689810707B\",\"buyerTel\":\"\",\"checker\":\"sss\",\"clerk\":\"zwk\",\"compId\":\"9f3b3526-4dd4-4997-b974-1f2adb2793c7\",\"createTime\":1660614469000,\"email\":\"market@dongshengsoft.com\",\"gID\":\"bbc69ec0289745d992e9076fcd73e407\",\"invCode\":\"137021616606\",\"invNum\":\"14724755\",\"invoiceDate\":1660614724000,\"payee\":\"zwk\",\"pdfUrl\":\"https://www.chinaeinv.com:943/pdfUnsigned.jspa?c=188D03F009871C521F36\",\"pictureUrl\":\"https://www.chinaeinv.com:943/p.jspa?c=188D03F009871C521F36\",\"requireRemark\":\"\n\",\"salerAccount\":\"\",\"salerAddress\":\"青岛市市南区延安三路129号1005室\",\"salerName\":\"青岛东胜伟业软件有限公司\",\"salerTaxNum\":\"913702020814028524\",\"salerTel\":\"0532-68628148\",\"serialNo\":\"bbc69ec0289745d992e9076fcd73e407\",\"status\":\"success\",\"total\":2000.00},{\"apiReadTime\":1660614773000,\"apiSendTime\":1660614724000,\"buyerAccount\":\"招商银行股份有限公司济南会展中心支行 531903348710703 \",\"buyerName\":\"山东百特凯瑞国际物流有限公司\",\"buyerTaxNum\":\"91370103689810707B\",\"buyerTel\":\"\",\"checker\":\"sss\",\"clerk\":\"zwk\",\"compId\":\"9f3b3526-4dd4-4997-b974-1f2adb2793c7\",\"createTime\":1660614469000,\"email\":\"market@dongshengsoft.com\",\"gID\":\"c68782186a6a43bcb511e32ca22b92b2\",\"message\":\"{\\\"code\\\":1,\\\"message\\\":\\\"调用金税盘失败\\\",\\\"postTime\\\":1660614773000,\\\"serialNo\\\":\\\"c68782186a6a43bcb511e32ca22b92b2\\\"}\",\"payee\":\"zwk\",\"requireRemark\":\"\n\",\"salerAccount\":\"\",\"salerAddress\":\"青岛市市南区延安三路129号1005室\",\"salerName\":\"青岛东胜伟业软件有限公司\",\"salerTaxNum\":\"913702020814028524\",\"salerTel\":\"0532-68628148\",\"serialNo\":\"c68782186a6a43bcb511e32ca22b92b2\",\"status\":\"fail\"},{\"apiReadTime\":1660614772000,\"apiSendTime\":1660614724000,\"buyerAccount\":\"招商银行股份有限公司济南会展中心支行 531903348710703 \",\"buyerName\":\"山东百特凯瑞国际物流有限公司\",\"buyerTaxNum\":\"91370103689810707B\",\"buyerTel\":\"\",\"checker\":\"sss\",\"clerk\":\"zwk\",\"compId\":\"9f3b3526-4dd4-4997-b974-1f2adb2793c7\",\"createTime\":1660614469000,\"email\":\"market@dongshengsoft.com\",\"gID\":\"c71288775cf24b38a15caaaa99c423aa\",\"invCode\":\"137021616606\",\"invNum\":\"14725902\",\"invoiceDate\":1660614725000,\"payee\":\"zwk\",\"pdfUrl\":\"https://www.chinaeinv.com:943/pdfUnsigned.jspa?c=8458CA4084740312534C\",\"pictureUrl\":\"https://www.chinaeinv.com:943/p.jspa?c=8458CA4084740312534C\",\"requireRemark\":\"\n\",\"salerAccount\":\"\",\"salerAddress\":\"青岛市市南区延安三路129号1005室\",\"salerName\":\"青岛东胜伟业软件有限公司\",\"salerTaxNum\":\"913702020814028524\",\"salerTel\":\"0532-68628148\",\"serialNo\":\"c71288775cf24b38a15caaaa99c423aa\",\"status\":\"success\",\"total\":2000.00},{\"apiReadTime\":1660614770000,\"apiSendTime\":1660614724000,\"buyerAccount\":\"招商银行股份有限公司济南会展中心支行 531903348710703 \",\"buyerName\":\"山东百特凯瑞国际物流有限公司\",\"buyerTaxNum\":\"91370103689810707B\",\"buyerTel\":\"\",\"checker\":\"sss\",\"clerk\":\"zwk\",\"compId\":\"9f3b3526-4dd4-4997-b974-1f2adb2793c7\",\"createTime\":1660614469000,\"email\":\"market@dongshengsoft.com\",\"gID\":\"b9d33364a33148498f0f8cf76c0173f8\",\"invCode\":\"137021616606\",\"invNum\":\"14726444\",\"invoiceDate\":1660614726000,\"payee\":\"zwk\",\"pdfUrl\":\"https://www.chinaeinv.com:943/pdfUnsigned.jspa?c=6EEE34F19FC02D10476C\",\"pictureUrl\":\"https://www.chinaeinv.com:943/p.jspa?c=6EEE34F19FC02D10476C\",\"requireRemark\":\"\n\",\"salerAccount\":\"\",\"salerAddress\":\"青岛市市南区延安三路129号1005室\",\"salerName\":\"青岛东胜伟业软件有限公司\",\"salerTaxNum\":\"913702020814028524\",\"salerTel\":\"0532-68628148\",\"serialNo\":\"b9d33364a33148498f0f8cf76c0173f8\",\"status\":\"success\",\"total\":2000.00},{\"apiReadTime\":1660614773000,\"apiSendTime\":1660614725000,\"buyerAccount\":\"招商银行股份有限公司济南会展中心支行 531903348710703 \",\"buyerName\":\"山东百特凯瑞国际物流有限公司\",\"buyerTaxNum\":\"91370103689810707B\",\"buyerTel\":\"\",\"checker\":\"sss\",\"clerk\":\"zwk\",\"compId\":\"9f3b3526-4dd4-4997-b974-1f2adb2793c7\",\"createTime\":1660614469000,\"email\":\"market@dongshengsoft.com\",\"gID\":\"f527e46f2871456583772af01860a352\",\"invCode\":\"137021616606\",\"invNum\":\"14726981\",\"invoiceDate\":1660614726000,\"payee\":\"zwk\",\"pdfUrl\":\"https://www.chinaeinv.com:943/pdfUnsigned.jspa?c=6D72FB34DCF99164306D\",\"pictureUrl\":\"https://www.chinaeinv.com:943/p.jspa?c=6D72FB34DCF99164306D\",\"requireRemark\":\"\n\",\"salerAccount\":\"\",\"salerAddress\":\"青岛市市南区延安三路129号1005室\",\"salerName\":\"青岛东胜伟业软件有限公司\",\"salerTaxNum\":\"913702020814028524\",\"salerTel\":\"0532-68628148\",\"serialNo\":\"f527e46f2871456583772af01860a352\",\"status\":\"success\",\"total\":2000.00},{\"apiReadTime\":1660614771000,\"apiSendTime\":1660614725000,\"buyerAccount\":\"招商银行股份有限公司济南会展中心支行 531903348710703 \",\"buyerName\":\"山东百特凯瑞国际物流有限公司\",\"buyerTaxNum\":\"91370103689810707B\",\"buyerTel\":\"\",\"checker\":\"sss\",\"clerk\":\"zwk\",\"compId\":\"9f3b3526-4dd4-4997-b974-1f2adb2793c7\",\"createTime\":1660614469000,\"email\":\"market@dongshengsoft.com\",\"gID\":\"4ab4879360a94596bd28e5c375083c77\",\"invCode\":\"137021616606\",\"invNum\":\"14727567\",\"invoiceDate\":1660614727000,\"payee\":\"zwk\",\"pdfUrl\":\"https://www.chinaeinv.com:943/pdfUnsigned.jspa?c=FF9DF779D9D613AD34E6\",\"pictureUrl\":\"https://www.chinaeinv.com:943/p.jspa?c=FF9DF779D9D613AD34E6\",\"requireRemark\":\"\n\",\"salerAccount\":\"\",\"salerAddress\":\"青岛市市南区延安三路129号1005室\",\"salerName\":\"青岛东胜伟业软件有限公司\",\"salerTaxNum\":\"913702020814028524\",\"salerTel\":\"0532-68628148\",\"serialNo\":\"4ab4879360a94596bd28e5c375083c77\",\"status\":\"success\",\"total\":1000.00},{\"apiReadTime\":1660614772000,\"apiSendTime\":1660614725000,\"buyerAccount\":\"招商银行股份有限公司济南会展中心支行 531903348710703 \",\"buyerName\":\"山东百特凯瑞国际物流有限公司\",\"buyerTaxNum\":\"91370103689810707B\",\"buyerTel\":\"\",\"checker\":\"sss\",\"clerk\":\"zwk\",\"compId\":\"9f3b3526-4dd4-4997-b974-1f2adb2793c7\",\"createTime\":1660614469000,\"email\":\"market@dongshengsoft.com\",\"gID\":\"fbc27354033945d8826b505f2a3d4a5d\",\"invCode\":\"137021616606\",\"invNum\":\"14728192\",\"invoiceDate\":1660614728000,\"payee\":\"zwk\",\"pdfUrl\":\"https://www.chinaeinv.com:943/pdfUnsigned.jspa?c=D8645507953E97F63851\",\"pictureUrl\":\"https://www.chinaeinv.com:943/p.jspa?c=D8645507953E97F63851\",\"requireRemark\":\"\n\",\"salerAccount\":\"\",\"salerAddress\":\"青岛市市南区延安三路129号1005室\",\"salerName\":\"青岛东胜伟业软件有限公司\",\"salerTaxNum\":\"913702020814028524\",\"salerTel\":\"0532-68628148\",\"serialNo\":\"fbc27354033945d8826b505f2a3d4a5d\",\"status\":\"success\",\"total\":2000.00}],\"linkId\":\"bafcaacb-3350-47c8-b6df-3a5b594b5b5a\",\"splitList\":[{\"amountTotal\":0.00,\"amountTotalRMB\":13000.00,\"bSNO\":\"topother272b76d839e94a47b3a6db6c33d90c78\",\"businessId\":\"5d126725fd064eedbbc64bff20d0c5f3\",\"currency\":\"RMB\",\"feeId\":\"54F6550C-BB16-255A-76DD-0585F3407AB3\",\"gID\":\"2a14703deda84978851409cd54f1925a\",\"invoiceDetailId\":\"3e2fdb75fd374b88b0c9af6c5aef0d30\",\"invoiceId\":\"b9d33364a33148498f0f8cf76c0173f8\",\"linkId\":\"bafcaacb-3350-47c8-b6df-3a5b594b5b5a\",\"splitAmount\":0.00,\"splitAmountRMB\":2000.00},{\"amountTotal\":0.00,\"amountTotalRMB\":13000.00,\"bSNO\":\"topother272b76d839e94a47b3a6db6c33d90c78\",\"businessId\":\"5d126725fd064eedbbc64bff20d0c5f3\",\"currency\":\"RMB\",\"feeId\":\"54F6550C-BB16-255A-76DD-0585F3407AB3\",\"gID\":\"3dda8a51bbd24cd2b1d10cfa39384301\",\"invoiceDetailId\":\"ee126f614be4491e8c0fe7e005c18aaa\",\"invoiceId\":\"4ab4879360a94596bd28e5c375083c77\",\"linkId\":\"bafcaacb-3350-47c8-b6df-3a5b594b5b5a\",\"splitAmount\":0.00,\"splitAmountRMB\":1000.00},{\"amountTotal\":0.00,\"amountTotalRMB\":13000.00,\"bSNO\":\"topother272b76d839e94a47b3a6db6c33d90c78\",\"businessId\":\"5d126725fd064eedbbc64bff20d0c5f3\",\"currency\":\"RMB\",\"feeId\":\"54F6550C-BB16-255A-76DD-0585F3407AB3\",\"gID\":\"481ca05901bb45e792cb7af7e17cc366\",\"invoiceDetailId\":\"d4caec2ed57c41b7af03f7635b397612\",\"invoiceId\":\"bbc69ec0289745d992e9076fcd73e407\",\"linkId\":\"bafcaacb-3350-47c8-b6df-3a5b594b5b5a\",\"splitAmount\":0.00,\"splitAmountRMB\":2000.00},{\"amountTotal\":0.00,\"amountTotalRMB\":13000.00,\"bSNO\":\"topother272b76d839e94a47b3a6db6c33d90c78\",\"businessId\":\"5d126725fd064eedbbc64bff20d0c5f3\",\"currency\":\"RMB\",\"feeId\":\"54F6550C-BB16-255A-76DD-0585F3407AB3\",\"gID\":\"aac2f4352ba34938b8a88d3f88ae301e\",\"invoiceDetailId\":\"72238f3f98b548b3baa0d6f35c81e9d0\",\"invoiceId\":\"c71288775cf24b38a15caaaa99c423aa\",\"linkId\":\"bafcaacb-3350-47c8-b6df-3a5b594b5b5a\",\"splitAmount\":0.00,\"splitAmountRMB\":2000.00},{\"amountTotal\":0.00,\"amountTotalRMB\":2000.00,\"bSNO\":\"topother272b76d839e94a47b3a6db6c33d90c78\",\"businessId\":\"5d126725fd064eedbbc64bff20d0c5f3\",\"currency\":\"RMB\",\"feeId\":\"B96AA2ED-1643-141A-B940-4660F5F2A189\",\"gID\":\"b78965637b72426e9e79ec8b1ef0783c\",\"invoiceDetailId\":\"6ec60e4489c8498a898df662aa34c7b2\",\"invoiceId\":\"fbc27354033945d8826b505f2a3d4a5d\",\"linkId\":\"bafcaacb-3350-47c8-b6df-3a5b594b5b5a\",\"splitAmount\":0.00,\"splitAmountRMB\":2000.00},{\"amountTotal\":0.00,\"amountTotalRMB\":13000.00,\"bSNO\":\"topother272b76d839e94a47b3a6db6c33d90c78\",\"businessId\":\"5d126725fd064eedbbc64bff20d0c5f3\",\"currency\":\"RMB\",\"feeId\":\"54F6550C-BB16-255A-76DD-0585F3407AB3\",\"gID\":\"bfacf0523e60424a852b3d8b5f15d057\",\"invoiceDetailId\":\"642e396aaf6a44c790031f1f92e461b4\",\"invoiceId\":\"3c27c755b2394998839685cf6a3c714a\",\"linkId\":\"bafcaacb-3350-47c8-b6df-3a5b594b5b5a\",\"splitAmount\":0.00,\"splitAmountRMB\":2000.00},{\"amountTotal\":0.00,\"amountTotalRMB\":13000.00,\"bSNO\":\"topother272b76d839e94a47b3a6db6c33d90c78\",\"businessId\":\"5d126725fd064eedbbc64bff20d0c5f3\",\"currency\":\"RMB\",\"feeId\":\"54F6550C-BB16-255A-76DD-0585F3407AB3\",\"gID\":\"caeb6f2eaf5645f491cd06424a519f03\",\"invoiceDetailId\":\"b6d62c9306a0462da0885107a37d3a50\",\"invoiceId\":\"c68782186a6a43bcb511e32ca22b92b2\",\"linkId\":\"bafcaacb-3350-47c8-b6df-3a5b594b5b5a\",\"splitAmount\":0.00,\"splitAmountRMB\":2000.00},{\"amountTotal\":0.00,\"amountTotalRMB\":13000.00,\"bSNO\":\"topother272b76d839e94a47b3a6db6c33d90c78\",\"businessId\":\"5d126725fd064eedbbc64bff20d0c5f3\",\"currency\":\"RMB\",\"feeId\":\"54F6550C-BB16-255A-76DD-0585F3407AB3\",\"gID\":\"fc72e31aed8f403f9bd9174ca6afe8b6\",\"invoiceDetailId\":\"cac1db24a8e64916819e4e94575371b2\",\"invoiceId\":\"f527e46f2871456583772af01860a352\",\"linkId\":\"bafcaacb-3350-47c8-b6df-3a5b594b5b5a\",\"splitAmount\":0.00,\"splitAmountRMB\":2000.00}]}"; + //// + var InvRoot = JsonConvert.DeserializeAnonymousType(strBody, new InvRoot()); + + SaveInv(InvRoot); + } + + + private void SaveInv(InvRoot InvRoot) + { + ////根据linkid 找到 ch_fee.invlinkgid=linkid的费用 + ////var feelist = cdc.ch_fee.Where(x => x.INVLINKGID == InvRoot.linkId).ToList(); + var 开票人codename = InvRoot.invoiceList[0].clerk; + + var 开票人info = cdc.VW_user.FirstOrDefault(x => x.CODENAME == 开票人codename); + + DS7COMPANYID = 开票人info.COMPANYID; + + //遍历invoiceList: + foreach (var inv in InvRoot.invoiceList) + { + inv.setmessage(); + //根据InvoiceListItem建立发票 + var newInv = getNewInv(inv, InvRoot); + + if (!string.IsNullOrEmpty(newInv.CUSTOMERNAME)) + { + cdc.ch_fee_invoice.Add(newInv); + + + //增加一条发票明细 + var newInvdetail = getNewInvDetail(newInv, inv, InvRoot); + + //遍历splitList,如果 SplitListItem.invoiceid= 这个票的invoiceId + //增加一个ch_fee,feeid=SplitListItem.feeId + var feedoList = getNewFeeDoList(newInv, inv, InvRoot); + + cdc.ch_fee_invoicedetail.Add(newInvdetail); + + cdc.ch_fee_do.AddRange(feedoList); + + //20220805 根据chfeedo的内容 改写chfee的开票金额信息 + var feeidlist = feedoList.Select(s => s.FEEID).ToList(); + var feelist = cdc.ch_fee.Where(x => feeidlist.Contains(x.GID)).ToList(); + + foreach (var feedo in feedoList) + { + if (feelist.Exists(x => x.GID == feedo.FEEID)) + { + var updrec = feelist.FirstOrDefault(x => x.GID == feedo.FEEID); + updrec.INVOICE = updrec.INVOICE == null ? 0 : updrec.INVOICE; + updrec.INVOICE += feedo.AMOUNT; + + updrec.ORDERINVOICE = updrec.ORDERINVOICE == null ? 0 : updrec.ORDERINVOICE; + updrec.ORDERINVOICE += feedo.AMOUNT; + } + } + + + + cdc.SaveChanges(); + + } + } + } + + private ch_fee_invoice_md getNewInv(InvoiceListItem inv, InvRoot invroot) + { + + var result = new ch_fee_invoice_md(); + var billno = DbHelperSQL.GetBillNo(invroot.companyId.Replace(" ", ""), "0308"); + + var _infoclientList = cdc.info_client.Where(x => x.TAXNO == inv.buyerTaxNum).ToList(); + if (_infoclientList.Count > 0) + { + var _infoclient = _infoclientList[0]; + + var _firstfee = invroot.splitList.FirstOrDefault(x => x.invoiceId == inv.gID); + var _firstthisfee = cdc.ch_fee.FirstOrDefault(x => x.GID == _firstfee.feeId); + + result.GID = Guid.NewGuid().ToString(); + result.BILLNO = billno; + //填充购方信息 销方信息 发票号 + result.INVOICECODE = inv.invCode; + result.INVOICENO = inv.invNum; + + if (string.IsNullOrWhiteSpace(inv.invNum)) + { + result.REMARK = inv.errormessage.message; + } + + result.CUSTOMERNAME = _infoclient.SHORTNAME; + result.INVOICECUSTNAME = inv.buyerName; + result.INVOICEMAKETIME = TimestampHelper.GetDateTime(inv.createTime); + result.CURRENCY = _firstfee.currency; + result.AMOUNT = inv.getSplitAmount(invroot.splitList); + //result.REMARK=inv. + + var clerk = cdc.VW_user.FirstOrDefault(x => inv.clerk == x.CODENAME); + var payee = cdc.VW_user.FirstOrDefault(x => inv.payee == x.CODENAME); + var checker = cdc.VW_user.FirstOrDefault(x => inv.checker == x.CODENAME); + + //OPERATOR、clerk开票人 payee收款人 checker复核人 + if (clerk != null) + result.OPERATOR = clerk.USERID; + if (payee != null) + result.PAYEE = payee.USERID; + if (checker != null) + result.CHECKER = checker.USERID; + + result.INVOICETYPE = 2; + result.OPERATETIME = TimestampHelper.GetDateTime(inv.apiSendTime); + result.EXCHANGERATE = _firstthisfee.EXCHANGERATE; + result.COMPANYID = DS7COMPANYID; + result.CUSTRATENO = inv.buyerTaxNum; + result.TAXCODE = inv.buyerTaxNum; + result.CUSTADDRTEL = inv.buyerAddress + " " + inv.buyerTel; + result.CUSTBANK = inv.buyerAccount; + result.INVOICECATEGORY = 0; + result.INVAMOUNT = inv.getSplitAmount(invroot.splitList); + result.OTCURRAMOUNT = inv.getOTAmount(invroot.splitList); + + result.RECVCURR = result.CURRENCY; + result.SALECORPID = DS7COMPANYID; + result.SETRED = false; + result.CREATEUSER = clerk.USERID; + result.CREATETIME = TimestampHelper.GetDateTime(inv.apiSendTime); + result.PUSHEMAIL = inv.email; + result.INVOICESERIALNUM = inv.serialNo; + result.INVOICEINFOURL = inv.pictureUrl; + result.INVOICEPDFURL = inv.pdfUrl; + + result.PTORRED = "1"; + + if (inv.status == "success") + { + result.BILLSTATUS = 1; + result.EINVOICESTATE = "2"; + } + else + { + result.INVOICESERIALNUM = ""; + result.BILLSTATUS = 0; + result.EINVOICESTATE = "3"; + } + + //0 未开票 + //1 开票中 + //2 开票成功 + //3 开票失败 + } + return result; + + } + + + private ch_fee_invoicedetail_md getNewInvDetail(ch_fee_invoice_md head, InvoiceListItem inv, InvRoot invroot) + { + + var result = new ch_fee_invoicedetail_md(); + + result.GID = Guid.NewGuid().ToString(); + //生成一条单条的发票明细 + result.PID = head.GID; + result.SerialNo = 1; + + result.GOODSNAME = cdc.code_goods_inv.FirstOrDefault(x => x.GOODNAME == "代理海运费").GID; + result.SPEC = ""; + result.UNIT = ""; + result.PKGS = 1; + result.TAXPRICE = inv.total == null ? 0 : inv.total; + result.PRICE = inv.total == null ? 0 : inv.total; + result.AMOUNT = inv.total == null ? 0 : inv.total; + result.TAXRATE = 0; + result.TAX = 0; + + return result; + } + + private List getNewFeeDoList(ch_fee_invoice_md head, InvoiceListItem inv, InvRoot invroot) + { + + var result = new List(); + + //result.GID = Guid.NewGuid().ToString(); + //寻找该发票相关的明细 + + var resultdetailList = invroot.splitList.Where(x => x.invoiceId == inv.gID).ToList(); + + var feeidlist = resultdetailList.Select(s => s.feeId).ToList(); + + var feelist = cdc.ch_fee.Where(x => feeidlist.Contains(x.GID)).ToList(); + + if (resultdetailList != null && resultdetailList.Count > 0) + { + foreach (var resultdetail in resultdetailList) + { + var newdetail = new ch_fee_do_md(); + var _thisfee = feelist.FirstOrDefault(x => x.GID == resultdetail.feeId); + newdetail.GID = Guid.NewGuid().ToString(); + newdetail.BILLNO = head.BILLNO; + newdetail.BSNO = _thisfee.BSNO; + newdetail.MBLNO = ""; + newdetail.HBLNO = ""; + newdetail.CUSTOMERNAME = _thisfee.CUSTOMERNAME; + newdetail.BSTYPE = 0; + newdetail.FEEID = _thisfee.GID; + newdetail.FEENAME = _thisfee.FEENAME; + newdetail.CURRENCY = _thisfee.CURRENCY; + + newdetail.AMOUNT = resultdetail.splitAmount == 0 ? resultdetail.splitAmountRMB : resultdetail.splitAmount; + newdetail.DOAMOUNT = 0; + newdetail.FEETYPE = 1; + newdetail.CATEGORY = 7; + newdetail.BILLSTATUS = 1; + newdetail.REMARK = null; + newdetail.ISDELETED = false; + newdetail.CREATETIME = DateTime.Now; + newdetail.EXCHANGERATE = _thisfee.EXCHANGERATE; + newdetail.ORIGCURRENCY = _thisfee.CURRENCY; + newdetail.DELETEUSER = null; + newdetail.DELETETIME = null; + newdetail.ORIGAMOUNT = _thisfee.AMOUNT; + newdetail.INVOICESETTLENO = ""; + newdetail.COMPANYID = DS7COMPANYID; + //newdetail.ORIGAMOUNT = null; + result.Add(newdetail); + } + } + + return result; + + } + } + + //private static string COMPANYID = ConfigurationManager.AppSettings["COMPANYID"]; + //private static string MQURL = ConfigurationManager.AppSettings["MQURL"]; + //private static string connStr = ConfigurationManager.AppSettings["ConnectionString"]; + //private const string ExchangeName = "inv.result"; + //private const string QueueName_Head = "inv.result."; + + /// + /// 根据返回的开票信息 记录开票结果 + /// + /// + + + private static List CORPList = new List(); + private static void addCorp(string corpid, string connstr) + { + CORPList.Add(new MqInfo(corpid, connstr)); + } + public InvToD7() + { + ConnectionStringSettingsCollection corpSettlingList = ConfigurationManager.ConnectionStrings; + + CORPList = new List(); + string[] keys = ConfigurationManager.AppSettings.AllKeys; + + for (int i = 0; i < keys.Length; i++) + { + if (keys[i].IndexOf("DJYUSERID:") == 0) + { + string corpid = keys[i].Replace("DJYUSERID:", ""); + //通过Key来索引Value + string value = ConfigurationManager.AppSettings[keys[i]]; + addCorp(corpid, value); + } + } + + + + + foreach (var corp in CORPList) + { + corp.DoGetInfo(); + } + } + + + + + public static void StopProcess() + { + foreach (var corp in CORPList) + { + if (corp.mqConn != null && corp.mqConn.IsOpen) + { + corp.mqConn.Close(); + corp.mqConn = null; + } + } + } + + } +}