|
@@ -41,6 +41,7 @@ using NetTaste;
|
|
|
using EyeSoft.Runtime.InteropServices;
|
|
|
using NPOI.HPSF;
|
|
|
using System.Data.OleDb;
|
|
|
+using Org.BouncyCastle.Crypto;
|
|
|
|
|
|
namespace OASystem.API.Controllers
|
|
|
{
|
|
@@ -3624,7 +3625,7 @@ Group by PriceType ", dto.diId);
|
|
|
/// <returns></returns>
|
|
|
[HttpPost]
|
|
|
[ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
|
|
|
- public async Task<IActionResult> PostCreditCardBill([FromForm] IFormFile file, int cardType, string beginDt, string endDt)
|
|
|
+ public async Task<IActionResult> PostCreditCardBill(IFormFile file, int cardType, string beginDt, string endDt)
|
|
|
{
|
|
|
if (file == null || file.Length < 1)
|
|
|
{
|
|
@@ -3643,7 +3644,7 @@ Group by PriceType ", dto.diId);
|
|
|
|
|
|
var beginValid = DateTime.TryParse(beginDt, out _);
|
|
|
var endValid = DateTime.TryParse(endDt, out _);
|
|
|
- if (beginValid || endValid) return Ok(JsonView(false, "请输入正确的日期格式"));
|
|
|
+ if (!beginValid || !endValid) return Ok(JsonView(false, "请输入正确的日期格式"));
|
|
|
|
|
|
|
|
|
//保存文件
|
|
@@ -3683,132 +3684,593 @@ Group by PriceType ", dto.diId);
|
|
|
* 363 交行卡 1
|
|
|
*
|
|
|
*/
|
|
|
- switch (cardType)
|
|
|
+
|
|
|
+ var ids = new List<int>();
|
|
|
+ if (cardType == 74) //美元卡
|
|
|
{
|
|
|
- case 74:
|
|
|
- cardTempPath = $"{cardTempPath}/信用卡对账模板-美元卡.xls";
|
|
|
- var AirGroupReuslt = List_ccp.Where(x => x.CTable == 85).GroupBy(x => x.DIId).ToList();
|
|
|
- if (AirGroupReuslt != null && AirGroupReuslt.Count > 0)
|
|
|
+ cardTempPath = $"{cardTempPath}/信用卡对账模板-美元卡.xls";
|
|
|
+ var AirGroupReuslt = List_ccp.Where(x => x.CTable == 85).GroupBy(x => x.DIId).ToList();
|
|
|
+ if (AirGroupReuslt != null && AirGroupReuslt.Count > 0)
|
|
|
+ {
|
|
|
+ foreach (var item in AirGroupReuslt)
|
|
|
{
|
|
|
- foreach (var item in AirGroupReuslt)
|
|
|
+ if (item.Count() > 1)
|
|
|
{
|
|
|
- if (item.Count() > 1)
|
|
|
- {
|
|
|
- var obj = item.FirstOrDefault();
|
|
|
- obj.RMBPrice = item.Sum(x => x.PayMoney);//合计币种金额
|
|
|
- obj.Remark = "团组机票总价(虚拟)";
|
|
|
- List_ccp.Add(obj);
|
|
|
- }
|
|
|
+ var obj = item.FirstOrDefault();
|
|
|
+ obj.RMBPrice = item.Sum(x => x.PayMoney);//合计币种金额
|
|
|
+ obj.Remark = "团组机票总价(虚拟)";
|
|
|
+ List_ccp.Add(obj);
|
|
|
}
|
|
|
}
|
|
|
+ }
|
|
|
|
|
|
- if (Directory.Exists(filePath))
|
|
|
+ if (Directory.Exists(filePath))
|
|
|
+ {
|
|
|
+ Workbook wb = new Workbook(filePath);
|
|
|
+ WorksheetCollection collection = wb.Worksheets;
|
|
|
+ DataTable dt = new DataTable();
|
|
|
+ if (collection.Count == 1) dt = ExcelToDataTable(filePath, collection[0].Name);
|
|
|
+ else return Ok(JsonView(false, "请检查工作簿页数,请保留一页工作簿页数!!!"));
|
|
|
+
|
|
|
+ if (dt == null) return Ok(JsonView(false, "您上传的Excel工作表没有内容,请检查!!!"));
|
|
|
+
|
|
|
+ dt.AcceptChanges(); //提交
|
|
|
+
|
|
|
+ dt.Columns.Add("TeamRemark", Type.GetType("System.String")); //团组备注描述
|
|
|
+ dt.Columns.Add("Handlers", Type.GetType("System.String")); //经手人
|
|
|
+ dt.Columns.Add("State", Type.GetType("System.String")); //状态
|
|
|
+
|
|
|
+ //修改table列名
|
|
|
+ dt.Columns[0].ColumnName = "accountType"; // 账户类型
|
|
|
+ dt.Columns[1].ColumnName = "tradeDate"; //交易日期
|
|
|
+ dt.Columns[2].ColumnName = "BillingDate"; // 记账日期
|
|
|
+ dt.Columns[3].ColumnName = "CardNo"; // 卡号
|
|
|
+ dt.Columns[4].ColumnName = "deposit"; // 存入金额
|
|
|
+ dt.Columns[5].ColumnName = "SpendingAmount"; // 支出金额
|
|
|
+ dt.Columns[6].ColumnName = "TransactionDescription"; // 交易描述
|
|
|
+
|
|
|
+ foreach (DataRow item in dt.Rows)
|
|
|
{
|
|
|
- Workbook wb = new Workbook(filePath);
|
|
|
- WorksheetCollection collection = wb.Worksheets;
|
|
|
- DataTable dt = new DataTable();
|
|
|
- if (collection.Count == 1) dt = ExcelToDataTable(filePath, collection[0].Name);
|
|
|
- else return Ok(JsonView(false, "请检查工作簿页数,请保留一页工作簿页数!!!"));
|
|
|
-
|
|
|
- if (dt == null) return Ok(JsonView(false, "您上传的Excel工作表没有内容,请检查!!!"));
|
|
|
-
|
|
|
- dt.AcceptChanges(); //提交
|
|
|
-
|
|
|
- dt.Columns.Add("TeamRemark", Type.GetType("System.String")); //团组备注描述
|
|
|
- dt.Columns.Add("Handlers", Type.GetType("System.String")); //经手人
|
|
|
- dt.Columns.Add("State", Type.GetType("System.String")); //状态
|
|
|
-
|
|
|
- //修改table列名
|
|
|
- dt.Columns[0].ColumnName = "accountType"; // 账户类型
|
|
|
- dt.Columns[1].ColumnName = "tradeDate"; //交易日期
|
|
|
- dt.Columns[2].ColumnName = "BillingDate"; // 记账日期
|
|
|
- dt.Columns[3].ColumnName = "CardNo"; // 卡号
|
|
|
- dt.Columns[4].ColumnName = "deposit"; // 存入金额
|
|
|
- dt.Columns[5].ColumnName = "SpendingAmount"; // 支出金额
|
|
|
- dt.Columns[6].ColumnName = "TransactionDescription"; // 交易描述
|
|
|
-
|
|
|
- foreach (DataRow item in dt.Rows)
|
|
|
+ #region 匹配的金额
|
|
|
+ decimal ExcelAmount = 0.00M;
|
|
|
+ decimal deposit = 0.00M;
|
|
|
+ if (!string.IsNullOrEmpty(item["SpendingAmount"].ToString()))
|
|
|
{
|
|
|
- #region 匹配的金额
|
|
|
- decimal ExcelAmount = 0.00M;
|
|
|
- decimal deposit = 0.00M;
|
|
|
- if (!string.IsNullOrEmpty(item["SpendingAmount"].ToString()))
|
|
|
+ var isParase = decimal.TryParse(item["SpendingAmount"].ToString(), out ExcelAmount);
|
|
|
+ if (isParase)
|
|
|
{
|
|
|
- var isParase = decimal.TryParse(item["SpendingAmount"].ToString(), out ExcelAmount);
|
|
|
- if (isParase)
|
|
|
+ var CList = List_ccp.FindAll(x => x.PayMoney == ExcelAmount);
|
|
|
+ if (CList != null && CList.Count > 0)
|
|
|
{
|
|
|
- var CList = List_ccp.FindAll(x => x.PayMoney == ExcelAmount);
|
|
|
- if (CList != null && CList.Count > 0)
|
|
|
- {
|
|
|
- item["TeamRemark"] = delegationInfos.Find(it => it.Id == CList.First().DIId)?.TeamName;
|
|
|
- item["Handlers"] = users.Find(it => it.Id == CList.First().CreateUserId)?.CnName;
|
|
|
- item["State"] = 1;
|
|
|
- }
|
|
|
+ item["TeamRemark"] = delegationInfos.Find(it => it.Id == CList.First().DIId)?.TeamName;
|
|
|
+ item["Handlers"] = users.Find(it => it.Id == CList.First().CreateUserId)?.CnName;
|
|
|
+ item["State"] = 1;
|
|
|
}
|
|
|
}
|
|
|
- if (!string.IsNullOrEmpty(item["deposit"].ToString()))
|
|
|
+ }
|
|
|
+ if (!string.IsNullOrEmpty(item["deposit"].ToString()))
|
|
|
+ {
|
|
|
+ var isParse = decimal.TryParse(item["deposit"].ToString(), out deposit);
|
|
|
+ if (isParse)
|
|
|
{
|
|
|
- var isParse = decimal.TryParse(item["deposit"].ToString(), out deposit);
|
|
|
- if (isParse)
|
|
|
+ var CList = List_ccp.FindAll(x => x.PayMoney == deposit);
|
|
|
+ if (CList != null && CList.Count > 0)
|
|
|
{
|
|
|
- var CList = List_ccp.FindAll(x => x.PayMoney == deposit);
|
|
|
- if (CList != null && CList.Count > 0)
|
|
|
- {
|
|
|
- item["TeamRemark"] = delegationInfos.Find(it => it.Id == CList.First().DIId)?.TeamName;
|
|
|
- item["Handlers"] = users.Find(it => it.Id == CList.First().CreateUserId)?.CnName;
|
|
|
- item["State"] = 1;
|
|
|
- }
|
|
|
+ item["TeamRemark"] = delegationInfos.Find(it => it.Id == CList.First().DIId)?.TeamName;
|
|
|
+ item["Handlers"] = users.Find(it => it.Id == CList.First().CreateUserId)?.CnName;
|
|
|
+ item["State"] = 1;
|
|
|
}
|
|
|
}
|
|
|
- #endregion
|
|
|
-
|
|
|
+ }
|
|
|
+ #endregion
|
|
|
|
|
|
- //交易描述
|
|
|
- if (!string.IsNullOrEmpty(item["TransactionDescription"].ToString()))
|
|
|
+ //交易描述
|
|
|
+ if (!string.IsNullOrEmpty(item["TransactionDescription"].ToString()))
|
|
|
+ {
|
|
|
+ string TransactionDescription = item["TransactionDescription"].ToString();
|
|
|
+ var startIndex = TransactionDescription.LastIndexOf("[");
|
|
|
+ var endIndex = TransactionDescription.LastIndexOf("]");
|
|
|
+ if (startIndex != -1 && endIndex != -1)
|
|
|
{
|
|
|
- string TransactionDescription = item["TransactionDescription"].ToString();
|
|
|
- var startIndex = TransactionDescription.LastIndexOf("[");
|
|
|
- var endIndex = TransactionDescription.LastIndexOf("]");
|
|
|
- if (startIndex != -1 && endIndex != -1)
|
|
|
+ var moenyList = TransactionDescription.Substring(startIndex + 1, endIndex - startIndex - 1).Split(' ').
|
|
|
+ Where(x => !string.IsNullOrEmpty(x)).ToList();
|
|
|
+ decimal money = 0.00M;
|
|
|
+ foreach (var itemMoeny in moenyList)
|
|
|
{
|
|
|
- var moenyList = TransactionDescription.Substring(startIndex + 1, endIndex - startIndex - 1).Split(' ').
|
|
|
- Where(x => !string.IsNullOrEmpty(x)).ToList();
|
|
|
- decimal money = 0.00M;
|
|
|
- foreach (var itemMoeny in moenyList)
|
|
|
+ if (itemMoeny.Contains('.'))
|
|
|
{
|
|
|
- if (itemMoeny.Contains('.'))
|
|
|
+ string itemMoenyStr = itemMoeny.Replace(",", string.Empty);
|
|
|
+ bool istrue = decimal.TryParse(itemMoenyStr, out money);
|
|
|
+ if (istrue)
|
|
|
{
|
|
|
- string itemMoenyStr = itemMoeny.Replace(",", string.Empty);
|
|
|
- bool istrue = decimal.TryParse(itemMoenyStr, out money);
|
|
|
- if (istrue)
|
|
|
+ var CList = List_ccp.FindAll(x => x.PayMoney == money);
|
|
|
+ if (CList != null && CList.Count > 0)
|
|
|
{
|
|
|
- var CList = List_ccp.FindAll(x => x.PayMoney == money);
|
|
|
- if (CList != null && CList.Count > 0)
|
|
|
- {
|
|
|
- item["TeamRemark"] = delegationInfos.Find(it => it.Id == CList.First().DIId)?.TeamName;
|
|
|
- item["Handlers"] = users.Find(it => it.Id == CList.First().CreateUserId)?.CnName;
|
|
|
- item["State"] = 1;
|
|
|
- }
|
|
|
+ item["TeamRemark"] = delegationInfos.Find(it => it.Id == CList.First().DIId)?.TeamName;
|
|
|
+ item["Handlers"] = users.Find(it => it.Id == CList.First().CreateUserId)?.CnName;
|
|
|
+ item["State"] = 1;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+ }
|
|
|
+
|
|
|
+ string fileName1 = $"信用卡账单(美元卡){DateTime.Now.ToString("yyyy.MM.dd")}.xls";
|
|
|
+ Dictionary<string, object> pairs = new Dictionary<string, object>();
|
|
|
+ List<DataTable> datas = new List<DataTable>();
|
|
|
+ datas.Add(dt);
|
|
|
+ url = AsposeHelper.ExpertExcelToModel("信用卡对账模板-美元卡.xls", "TB", fileName1, pairs, datas);
|
|
|
+ }
|
|
|
+ else return Ok(JsonView(false, "操作失败", "上传的文件不存在!"));
|
|
|
+
|
|
|
+ }
|
|
|
+ else if (cardType == 75) //欧元卡
|
|
|
+ {
|
|
|
+ cardTempPath = $"{cardTempPath}/信用卡对账模板-欧元卡.xls";
|
|
|
+ if (Directory.Exists(filePath))
|
|
|
+ {
|
|
|
+ Workbook wb = new Workbook(filePath);
|
|
|
+ WorksheetCollection collection = wb.Worksheets;
|
|
|
+ DataTable dt = new DataTable();
|
|
|
+ if (collection.Count == 1) dt = ExcelToDataTable(filePath, collection[0].Name);
|
|
|
+ else return Ok(JsonView(false, "请检查工作簿页数,请保留一页工作簿页数!!!"));
|
|
|
+
|
|
|
+ dt.Columns[0].ColumnName = "All";
|
|
|
+
|
|
|
+ DataTable dt1 = new DataTable();
|
|
|
+ dt1.Columns.Add("TradingDate", Type.GetType("System.String"));//交易日期
|
|
|
+ dt1.Columns.Add("TallyDate", Type.GetType("System.String")); //记账日期
|
|
|
+ dt1.Columns.Add("TradindDesc", Type.GetType("System.String"));//交易描述
|
|
|
+ dt1.Columns.Add("TradindMoney", Type.GetType("System.String"));//交易币种/金额
|
|
|
+ dt1.Columns.Add("ClearindMoney", Type.GetType("System.String"));// 清算币种/金额
|
|
|
+ dt1.Columns.Add("TeamRemark", Type.GetType("System.String")); //团组备注描述
|
|
|
+ dt1.Columns.Add("Handlers", Type.GetType("System.String")); //经手人
|
|
|
+ dt1.Columns.Add("State", Type.GetType("System.String")); //状态
|
|
|
+
|
|
|
+ for (int i = 0; i < dt.Rows.Count; i++)
|
|
|
+ {
|
|
|
+ string[] str = dt.Rows[i]["All"].ToString().Split(' ');
|
|
|
+ DataRow dr = dt1.NewRow();
|
|
|
+ dr["TradingDate"] = str[0].ToString();
|
|
|
+ dr["TallyDate"] = str[1].ToString();
|
|
|
+ dr["TradindDesc"] = str[2].ToString() + " " + str[3].ToString();
|
|
|
+ dr["TradindMoney"] = str[4].ToString() + " " + str[5].ToString();
|
|
|
+ dr["ClearindMoney"] = str[6].ToString() + " " + str[7].ToString();
|
|
|
+ dt1.Rows.Add(dr);
|
|
|
+ }
|
|
|
+
|
|
|
+ foreach (DataRow item in dt1.Rows)
|
|
|
+ {
|
|
|
+ for (int i = 0; i < List_ccp.Count; i++)
|
|
|
+ {
|
|
|
+ DateTime dtTime1 = Convert.ToDateTime(item["TradingDate"].ToString() == "" ? DateTime.Now.ToString("MM/dd") : item["TradingDate"].ToString()); //交易日期
|
|
|
+ string USDPrice = item["TradindMoney"].ToString(); //支出金额
|
|
|
+ USDPrice = USDPrice.Split(' ')[1].Trim(); //替换掉非数字
|
|
|
+
|
|
|
+ //USDPrice = USDPrice.Split('/')[1];
|
|
|
+ // 经手人 and excel行状态
|
|
|
+ if (!string.IsNullOrEmpty(List_ccp[i].ConsumptionDate) && !string.IsNullOrEmpty(USDPrice))
|
|
|
+ {
|
|
|
+ DateTime dtTime2 = Convert.ToDateTime(List_ccp[i].ConsumptionDate.ToString() == "" ? DateTime.Now.ToString("MM/dd") : List_ccp[i].ConsumptionDate.ToString());
|
|
|
+ float price1 = float.Parse(USDPrice);
|
|
|
+ float price2 = float.Parse(List_ccp[i].PayMoney.ToString("F2"));
|
|
|
+ if (dtTime1 == dtTime2 && price1 == price2)
|
|
|
+ {
|
|
|
+ item["TeamRemark"] = delegationInfos.Find(it => it.Id == List_ccp[i].DIId)?.TeamName;
|
|
|
+ item["Handlers"] = users.Find(it => it.Id == List_ccp[i].CreateUserId)?.CnName;
|
|
|
+ item["State"] = "1";
|
|
|
+ i = List_ccp.Count - 1;
|
|
|
+ }
|
|
|
+ else item["State"] = "0";
|
|
|
+ }
|
|
|
+ else item["State"] = "0";
|
|
|
+ }
|
|
|
|
|
|
- string fileName1 = $"信用卡账单(美元卡){DateTime.Now.ToString("yyyy.MM.dd")}.xls";
|
|
|
- Dictionary<string, object> pairs = new Dictionary<string, object>();
|
|
|
- List<DataTable> datas = new List<DataTable>();
|
|
|
- datas.Add(dt);
|
|
|
- url = AsposeHelper.ExpertExcelToModel("信用卡对账模板-美元卡.xls", "TB", fileName1, pairs, datas);
|
|
|
- return Ok(JsonView(true, "操作成功", new { url = "url" }));
|
|
|
+ if (item["TradindDesc"].ToString().Contains("财付通"))
|
|
|
+ item["State"] = "2";
|
|
|
+ else if (item["TradindDesc"].ToString().Contains("京东"))
|
|
|
+ item["State"] = "2";
|
|
|
+ else if (item["TradindDesc"].ToString().Contains("微信支付"))
|
|
|
+ item["State"] = "2";
|
|
|
+ else if (item["TradindDesc"].ToString().Contains("淘宝"))
|
|
|
+ item["State"] = "2";
|
|
|
}
|
|
|
|
|
|
- break;
|
|
|
+ string fileName1 = $"信用卡账单(欧元卡){DateTime.Now.ToString("yyyy.MM.dd")}.xls";
|
|
|
+ Dictionary<string, object> pairs = new Dictionary<string, object>();
|
|
|
+ List<DataTable> datas = new List<DataTable>();
|
|
|
+ datas.Add(dt);
|
|
|
+ url = AsposeHelper.ExpertExcelToModel("信用卡对账模板-欧元卡.xls", "TB", fileName1, pairs, datas);
|
|
|
+
|
|
|
+ }
|
|
|
+ else return Ok(JsonView(false, "操作失败", "上传的文件不存在!"));
|
|
|
+
|
|
|
+ }
|
|
|
+ else if (cardType == 86) //招行卡
|
|
|
+ {
|
|
|
+ cardTempPath = $"{cardTempPath}/信用卡对账模板-招行卡.xls";
|
|
|
+ var AirGroupReuslt1 = List_ccp.Where(x => x.CTable == 85).GroupBy(x => x.DIId).ToList();
|
|
|
+ if (AirGroupReuslt1 != null && AirGroupReuslt1.Count > 0)
|
|
|
+ {
|
|
|
+ foreach (var item in AirGroupReuslt1)
|
|
|
+ {
|
|
|
+ if (item.Count() > 1)
|
|
|
+ {
|
|
|
+ var di = delegationInfos.Find(it => it.Id == item.Key);
|
|
|
+ var obj = item.FirstOrDefault();
|
|
|
+ obj.Remark = "团组机票总价";
|
|
|
+ if (di != null)
|
|
|
+ {
|
|
|
+ obj.Remark = "团组机票总价(" + di.TeamName + ")";
|
|
|
+ }
|
|
|
+ obj.RMBPrice = item.Sum(x => x.RMBPrice);//合计人民币
|
|
|
+ List_ccp.Add(obj);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //查询所有刷卡的团组
|
|
|
+ //将刷卡团组内刷卡金额的金额存入ccp_list
|
|
|
+ //将excel作比较
|
|
|
+
|
|
|
+ //机票刷卡记录
|
|
|
+ var AirListAndPayID = List_ccp.Where(x => x.CTable == 85 && x.PayDId == 72).Select(x => x.DIId).Distinct().ToList();
|
|
|
+ var AirData = _sqlSugar.Queryable<Grp_AirTicketReservations>().Where(it => AirListAndPayID.Contains(it.DIId) && it.PrePrice != it.Price).ToList();
|
|
|
+ foreach (var item in AirData)
|
|
|
+ {
|
|
|
+ var DBwhere = List_ccp.Find(x => x.PayMoney == item.PrePrice);
|
|
|
+ if (DBwhere == null)
|
|
|
+ {
|
|
|
+ List_ccp.Add(new Grp_CreditCardPayment
|
|
|
+ {
|
|
|
+ PayMoney = item.PrePrice,
|
|
|
+ DIId = item.DIId,
|
|
|
+ CreateUserId = item.CreateUserId,
|
|
|
+ Remark = "(机票单价价格)",
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ var HotelGroupReuslt = List_ccp.Where(x => x.CTable == 76).GroupBy(x => x.DIId).ToList();
|
|
|
+ if (HotelGroupReuslt != null && HotelGroupReuslt.Count > 0)
|
|
|
+ {
|
|
|
+ foreach (var item in HotelGroupReuslt)
|
|
|
+ {
|
|
|
+ if (item.Count() > 1)
|
|
|
+ {
|
|
|
+ var di = delegationInfos.Find(it => it.Id == item.Key);
|
|
|
+ var obj = item.FirstOrDefault();
|
|
|
+ obj.Remark = "团组酒店总价";
|
|
|
+ if (di != null)
|
|
|
+ {
|
|
|
+ obj.Remark = "团组酒店总价(" + di.TeamName + ")";
|
|
|
+ }
|
|
|
+ obj.RMBPrice = item.Sum(x => x.RMBPrice);//合计人民币
|
|
|
+ List_ccp.Add(obj);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ #region
|
|
|
+ //上传保存文档
|
|
|
+ if (Directory.Exists(filePath))
|
|
|
+ {
|
|
|
+ //得到书签下的所有标签名
|
|
|
+ Workbook wk = new Workbook(filePath ); //读取excel
|
|
|
+ WorksheetCollection myColection = wk.Worksheets; //获取excel sheet页
|
|
|
+
|
|
|
+ DataTable dt = new DataTable(); //实例一张表格
|
|
|
+ //修改table列名
|
|
|
+ dt.Columns.Add("TradingDay", Type.GetType("System.String")); // 交易日
|
|
|
+ dt.Columns.Add("TallyDay", Type.GetType("System.String")); // 记账日
|
|
|
+ dt.Columns.Add("TransactionDesc", Type.GetType("System.String")); // 交易描述
|
|
|
+ dt.Columns.Add("RMBMoney", Type.GetType("System.String")); // 人名币金额
|
|
|
+ dt.Columns.Add("CardNo", Type.GetType("System.String")); // 卡号
|
|
|
+ dt.Columns.Add("TradingMoney", Type.GetType("System.String")); // 交易地金额
|
|
|
+ dt.Columns.Add("Currency", Type.GetType("System.String")); // 币种
|
|
|
+ dt.Columns.Add("TeamRemark", Type.GetType("System.String")); //团组备注描述
|
|
|
+ dt.Columns.Add("Handlers", Type.GetType("System.String")); //经手人
|
|
|
+ dt.Columns.Add("State", Type.GetType("System.String")); //状态
|
|
|
+
|
|
|
+ for (int i = 0; i < myColection.Count; i++) //遍历读取的sheet页
|
|
|
+ {
|
|
|
+ DataTable dt1 = ExcelToDataTable(filePath , myColection[i].Name);//sheet页转dataTable
|
|
|
+ for (int j = 0; j < dt1.Rows.Count; j++)//遍历行
|
|
|
+ {
|
|
|
+ DataRow dr = dt.NewRow(); //获取每一行的数据
|
|
|
+ dr["TradingDay"] = dt1.Rows[j][0].ToString();
|
|
|
+ dr["TallyDay"] = dt1.Rows[j][1].ToString();
|
|
|
+ dr["TransactionDesc"] = dt1.Rows[j][2].ToString();
|
|
|
+ dr["RMBMoney"] = dt1.Rows[j][3].ToString();
|
|
|
+ dr["CardNo"] = dt1.Rows[j][4].ToString();
|
|
|
+ string currency = "CN";
|
|
|
+ string money = dt1.Rows[j][5].ToString();
|
|
|
+ if (money.Contains('('))
|
|
|
+ {
|
|
|
+ string[] strs = money.Split('(');
|
|
|
+ money = strs[0];
|
|
|
+ currency = strs[1].Replace(")", "");
|
|
|
+ }
|
|
|
+ dr["TradingMoney"] = money;
|
|
|
+ dr["Currency"] = currency;
|
|
|
+ if (string.IsNullOrEmpty(money))
|
|
|
+ {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ dt.Rows.Add(dr);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //dt.Rows[0].Delete();//删除列名行
|
|
|
+ //datatable 排序
|
|
|
+ //dt.DefaultView.Sort = "TradingDay asc";
|
|
|
+ //dt = dt.DefaultView.ToTable();
|
|
|
+
|
|
|
+ foreach (DataRow item in dt.Rows)
|
|
|
+ {
|
|
|
+
|
|
|
+ if (item["TradingDay"] == "" && item["RMBMoney"] == "")
|
|
|
+ {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
+ //excel获取交易日期
|
|
|
+ string ExcelDt = string.Empty;
|
|
|
+ //C表交易日期
|
|
|
+ string DBDt = string.Empty;
|
|
|
+ //excel交易的金额
|
|
|
+ decimal TradingMoney = decimal.Parse(item["TradingMoney"].ToString());
|
|
|
+
|
|
|
+ if (item["TradingDay"] != null)
|
|
|
+ {
|
|
|
+ ExcelDt = DateTime.Parse(item["TradingDay"].ToString()).ToString("MMdd");
|
|
|
+ }
|
|
|
+
|
|
|
+ //加一获取金额区间
|
|
|
+ decimal MaxTradingMoney = TradingMoney + 1;
|
|
|
+ decimal MinTradingMoney = TradingMoney - 1;
|
|
|
+
|
|
|
+ //匹配C表金额相等的值
|
|
|
+ var CList = List_ccp.FindAll(x => x.PayMoney < MaxTradingMoney && x.PayMoney > MinTradingMoney);
|
|
|
+
|
|
|
+ if (CList != null && CList.Count > 0)
|
|
|
+ {
|
|
|
+ #region 日期匹配
|
|
|
+ foreach (var Citem in CList)
|
|
|
+ {
|
|
|
+ if (!string.IsNullOrWhiteSpace(Citem.ConsumptionDate))
|
|
|
+ {
|
|
|
+ DBDt = DateTime.Parse(Citem.ConsumptionDate).ToString("MMdd");
|
|
|
+
|
|
|
+ if (DBDt == ExcelDt)
|
|
|
+ {
|
|
|
+ item["TeamRemark"] = delegationInfos.Find(it => it.Id == Citem.DIId)?.TeamName;
|
|
|
+ item["Handlers"] = users.Find(it => it.Id == Citem.CreateUserId)?.CnName;
|
|
|
+
|
|
|
+ ids.Add(Citem.Id);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ #endregion
|
|
|
+ }
|
|
|
+
|
|
|
+ if (item["TransactionDesc"].ToString().Contains("财付通"))
|
|
|
+ item["State"] = "2";
|
|
|
+ else if (item["TransactionDesc"].ToString().Contains("京东支付"))
|
|
|
+ item["State"] = "2";
|
|
|
+ else if (item["TransactionDesc"].ToString().Contains("微信支付"))
|
|
|
+ item["State"] = "2";
|
|
|
+ else if (item["TransactionDesc"].ToString().Contains("淘宝"))
|
|
|
+ item["State"] = "2";
|
|
|
+ else if (item["TransactionDesc"].ToString().Contains("支付宝"))
|
|
|
+ item["State"] = "2";
|
|
|
+ else if (item["TransactionDesc"].ToString().Contains("拼多多"))
|
|
|
+ item["State"] = "2";
|
|
|
+ else
|
|
|
+ item["State"] = "0";
|
|
|
+
|
|
|
+ if (!string.IsNullOrEmpty(item["TeamRemark"].ToString()) && !string.IsNullOrEmpty(item["Handlers"].ToString()))
|
|
|
+ item["State"] = "1";
|
|
|
+ }
|
|
|
+
|
|
|
+ //更改匹配项状态
|
|
|
+ if (ids.Count > 0 )
|
|
|
+ {
|
|
|
+ var _CreditCardPayments = new List<Grp_CreditCardPayment>();
|
|
|
+ foreach (var item in ids)
|
|
|
+ {
|
|
|
+ _CreditCardPayments.Add(new Grp_CreditCardPayment() {Id = item,IsMatchCreditCard = 1.00M });
|
|
|
+ }
|
|
|
+ var updateStatus = _sqlSugar.Updateable<Grp_CreditCardPayment>(_CreditCardPayments)
|
|
|
+ .UpdateColumns(it => new { it.IsMatchCreditCard })
|
|
|
+ .Where(it => ids.Contains(it.Id))
|
|
|
+ .ExecuteCommand();
|
|
|
+ }
|
|
|
+
|
|
|
+ string fileName1 = $"信用卡账单(招行卡){DateTime.Now.ToString("yyyy.MM.dd")}.xls";
|
|
|
+ Dictionary<string, object> pairs = new Dictionary<string, object>();
|
|
|
+ List<DataTable> datas = new List<DataTable>();
|
|
|
+ datas.Add(dt);
|
|
|
+ url = AsposeHelper.ExpertExcelToModel("信用卡对账模板-招行卡.xls", "TB", fileName1, pairs, datas);
|
|
|
+
|
|
|
+ }
|
|
|
+ else return Ok(JsonView(false, "操作失败", "上传的文件不存在!"));
|
|
|
+
|
|
|
+
|
|
|
+ #endregion
|
|
|
+
|
|
|
+ }
|
|
|
+ else if (cardType == 346) //中信卡
|
|
|
+ {
|
|
|
+ cardTempPath = $"{cardTempPath}/信用卡对账模板-中信卡.xls";
|
|
|
+ if (Directory.Exists(filePath))
|
|
|
+ {
|
|
|
+ Workbook wb = new Workbook(filePath);
|
|
|
+ WorksheetCollection collection = wb.Worksheets;
|
|
|
+ DataTable dt = new DataTable();
|
|
|
+ if (collection.Count == 1)
|
|
|
+ dt = ExcelToDataTable(filePath, collection[0].Name);
|
|
|
+ else return Ok(JsonView(false, "请检查工作簿页数,请保留一页工作簿页数!!!"));
|
|
|
+
|
|
|
+ dt.Columns.Add("TeamRemark", Type.GetType("System.String")); //团组备注描述
|
|
|
+ dt.Columns.Add("Handlers", Type.GetType("System.String")); //经手人
|
|
|
+ dt.Columns.Add("State", Type.GetType("System.String")); //状态
|
|
|
+
|
|
|
+ //修改table列名
|
|
|
+ dt.Columns[0].ColumnName = "TransactionDesc"; // 交易描述
|
|
|
+ dt.Columns[1].ColumnName = "TradingCurrencyAndMoney"; // 交易币种和金额
|
|
|
+ dt.Columns[2].ColumnName = "TransactionDate"; // 交易日期
|
|
|
+ dt.Columns[3].ColumnName = "SettlementCurrencyAndMoney";// 结算币种和金额
|
|
|
+ dt.Columns[4].ColumnName = "BookedDate"; // 入账日期
|
|
|
+
|
|
|
+ foreach (DataRow item in dt.Rows)
|
|
|
+ {
|
|
|
+ for (int i = 0; i < List_ccp.Count; i++)
|
|
|
+ {
|
|
|
+ if (string.IsNullOrEmpty(item["TransactionDate"].ToString()))
|
|
|
+ break;
|
|
|
+
|
|
|
+ DateTime dtTime1 = Convert.ToDateTime(item["TransactionDate"].ToString()); //交易日期
|
|
|
+ string USDPrice = item["TradingCurrencyAndMoney"].ToString(); //支出金额
|
|
|
+ USDPrice = USDPrice.Split('/')[1];
|
|
|
+ //string USDPrice1 = USDPrice.ToString("0.00");
|
|
|
+ // 经手人 and excel行状态
|
|
|
+ if (!string.IsNullOrEmpty(List_ccp[i].ConsumptionDate) && !string.IsNullOrEmpty(USDPrice))
|
|
|
+ {
|
|
|
+ DateTime dtTime2 = Convert.ToDateTime(List_ccp[i].ConsumptionDate);
|
|
|
+ float price1 = float.Parse(USDPrice);
|
|
|
+ float price2 = float.Parse(List_ccp[i].PayMoney.ToString("F2"));
|
|
|
+ if (dtTime1 == dtTime2 && price1 == price2)
|
|
|
+ {
|
|
|
+ item["TeamRemark"] = delegationInfos.Find(it => it.Id == List_ccp[i].DIId)?.TeamName;
|
|
|
+ item["Handlers"] = users.Find(it => it.Id == List_ccp[i].CreateUserId)?.CnName;
|
|
|
+ item["State"] = "1";
|
|
|
+ i = List_ccp.Count - 1;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ item["State"] = "0";
|
|
|
+ }
|
|
|
+ else
|
|
|
+ item["State"] = "0";
|
|
|
+
|
|
|
+ }
|
|
|
+ //判断是否是数字
|
|
|
+ //if (IsNumber(item["TradingCurrencyAndMoney"].ToString().Split('/')[1]) == false)
|
|
|
+ // item["State"] = "0";
|
|
|
+
|
|
|
+ if (item["TransactionDesc"].ToString().Contains("财付通"))
|
|
|
+ item["State"] = "2";
|
|
|
+ else if (item["TransactionDesc"].ToString().Contains("京东"))
|
|
|
+ item["State"] = "2";
|
|
|
+ else if (item["TransactionDesc"].ToString().Contains("微信支付"))
|
|
|
+ item["State"] = "2";
|
|
|
+ else if (item["TransactionDesc"].ToString().Contains("淘宝"))
|
|
|
+ item["State"] = "2";
|
|
|
+ }
|
|
|
+
|
|
|
+ #region DownExcel
|
|
|
+
|
|
|
+ string fileName1 = $"信用卡账单(中信卡){DateTime.Now.ToString("yyyy.MM.dd")}.xls";
|
|
|
+ Dictionary<string, object> pairs = new Dictionary<string, object>();
|
|
|
+ List<DataTable> datas = new List<DataTable>();
|
|
|
+ datas.Add(dt);
|
|
|
+ url = AsposeHelper.ExpertExcelToModel("信用卡对账模板-中信卡.xls", "TB", fileName1, pairs, datas);
|
|
|
+
|
|
|
+
|
|
|
+ #endregion
|
|
|
+
|
|
|
+ }
|
|
|
+ else return Ok(JsonView(false, "操作失败", "上传的文件不存在!"));
|
|
|
+
|
|
|
+ }
|
|
|
+ else if (cardType == 363) //交行卡
|
|
|
+ {
|
|
|
+
|
|
|
+ if (Directory.Exists(filePath))
|
|
|
+ {
|
|
|
+
|
|
|
+ Workbook wb = new Workbook(filePath );
|
|
|
+ WorksheetCollection collection = wb.Worksheets;
|
|
|
+ DataTable dt = new DataTable();
|
|
|
+ if (collection.Count == 1) dt = ExcelToDataTable(filePath, collection[0].Name);
|
|
|
+ else return Ok(JsonView(false, "请检查工作簿页数,请保留一页工作簿页数!!!"));
|
|
|
+
|
|
|
+ dt.Columns[0].ColumnName = "All";
|
|
|
+
|
|
|
+ DataTable dt1 = new DataTable();
|
|
|
+ dt1.Columns.Add("TradingDate", Type.GetType("System.String"));//交易日期
|
|
|
+ dt1.Columns.Add("TallyDate", Type.GetType("System.String")); //记账日期
|
|
|
+ dt1.Columns.Add("TradindDesc", Type.GetType("System.String"));//交易描述
|
|
|
+ dt1.Columns.Add("TradindMoney", Type.GetType("System.String"));//交易币种/金额
|
|
|
+ dt1.Columns.Add("ClearindMoney", Type.GetType("System.String"));// 清算币种/金额
|
|
|
+ dt1.Columns.Add("TeamRemark", Type.GetType("System.String")); //团组备注描述
|
|
|
+ dt1.Columns.Add("Handlers", Type.GetType("System.String")); //经手人
|
|
|
+ dt1.Columns.Add("State", Type.GetType("System.String")); //状态
|
|
|
+
|
|
|
+ for (int i = 0; i < dt.Rows.Count; i++)
|
|
|
+ {
|
|
|
+ string[] str = dt.Rows[i]["All"].ToString().Split(' ');
|
|
|
+ DataRow dr = dt1.NewRow();
|
|
|
+ dr["TradingDate"] = str[0].ToString();
|
|
|
+ dr["TallyDate"] = str[1].ToString();
|
|
|
+ dr["TradindDesc"] = str[2].ToString() + " " + str[3].ToString();
|
|
|
+ dr["TradindMoney"] = str[4].ToString() + " " + str[5].ToString();
|
|
|
+ dr["ClearindMoney"] = str[6].ToString() + " " + str[7].ToString();
|
|
|
+ dt1.Rows.Add(dr);
|
|
|
+ }
|
|
|
+
|
|
|
+ foreach (DataRow item in dt1.Rows)
|
|
|
+ {
|
|
|
+ for (int i = 0; i < List_ccp.Count; i++)
|
|
|
+ {
|
|
|
+ DateTime dtTime1 = Convert.ToDateTime(item["TradingDate"].ToString() == "" ? DateTime.Now.ToString("MM/dd") : item["TradingDate"].ToString()); //交易日期
|
|
|
+ string USDPrice = item["TradindMoney"].ToString(); //支出金额
|
|
|
+ USDPrice = USDPrice.Split(' ')[1].Trim(); //替换掉非数字
|
|
|
+
|
|
|
+ //USDPrice = USDPrice.Split('/')[1];
|
|
|
+ // 经手人 and excel行状态
|
|
|
+ if (!string.IsNullOrEmpty(List_ccp[i].ConsumptionDate) && !string.IsNullOrEmpty(USDPrice))
|
|
|
+ {
|
|
|
+ DateTime dtTime2 = Convert.ToDateTime(List_ccp[i].ConsumptionDate.ToString() == "" ? DateTime.Now.ToString("MM/dd") : List_ccp[i].ConsumptionDate.ToString());
|
|
|
+ float price1 = float.Parse(USDPrice);
|
|
|
+ float price2 = float.Parse(List_ccp[i].PayMoney.ToString("F2"));
|
|
|
+ if (dtTime1 == dtTime2 && price1 == price2)
|
|
|
+ {
|
|
|
+ item["TeamRemark"] = delegationInfos.Find(it => it.Id == List_ccp[i].DIId)?.TeamName;
|
|
|
+
|
|
|
+ item["Handlers"] = users.Find(it => it.Id == List_ccp[i].CreateUserId)?.CnName;
|
|
|
+ item["State"] = "1";
|
|
|
+ i = List_ccp.Count - 1;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ item["State"] = "0";
|
|
|
+ }
|
|
|
+ else
|
|
|
+ item["State"] = "0";
|
|
|
+ }
|
|
|
+
|
|
|
+ if (item["TradindDesc"].ToString().Contains("财付通"))
|
|
|
+ item["State"] = "2";
|
|
|
+ else if (item["TradindDesc"].ToString().Contains("京东"))
|
|
|
+ item["State"] = "2";
|
|
|
+ else if (item["TradindDesc"].ToString().Contains("微信支付"))
|
|
|
+ item["State"] = "2";
|
|
|
+ else if (item["TradindDesc"].ToString().Contains("淘宝"))
|
|
|
+ item["State"] = "2";
|
|
|
+ }
|
|
|
+
|
|
|
+ string fileName1 = $"信用卡账单(交行卡){DateTime.Now.ToString("yyyy.MM.dd")}.xls";
|
|
|
+ Dictionary<string, object> pairs = new Dictionary<string, object>();
|
|
|
+ List<DataTable> datas = new List<DataTable>();
|
|
|
+ datas.Add(dt);
|
|
|
+ url = AsposeHelper.ExpertExcelToModel("信用卡对账模板-交行卡.xls", "TB", fileName1, pairs, datas);
|
|
|
+
|
|
|
+ }
|
|
|
+ else return Ok(JsonView(false, "操作失败", "上传的文件不存在!"));
|
|
|
|
|
|
- default:
|
|
|
- return Ok(JsonView(false, "该卡类型对账开发中..."));
|
|
|
- break;
|
|
|
}
|
|
|
}
|
|
|
catch (Exception ex)
|
|
@@ -3816,7 +4278,7 @@ Group by PriceType ", dto.diId);
|
|
|
return Ok(JsonView(false, ex.Message));
|
|
|
}
|
|
|
|
|
|
- return Ok(JsonView(true, "操作成功"));
|
|
|
+ return Ok(JsonView(true, "操作成功", new { url = url }));
|
|
|
}
|
|
|
|
|
|
|