Browse Source

1.其他款项 团组数据返回View优化,增加会务活动类型数据

leiy 11 months ago
parent
commit
3b95362480

+ 559 - 97
OASystem/OASystem.Api/Controllers/FinancialController.cs

@@ -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 }));
         }
 
 

+ 2 - 1
OASystem/OASystem.Api/Controllers/GroupsController.cs

@@ -2956,6 +2956,7 @@ namespace OASystem.API.Controllers
                 return Ok(JsonView(false, "程序错误!"));
             }
         }
+        
         /// <summary>
         /// 团组增减款项操作(Status:1.新增,2.修改)
         /// </summary>
@@ -2979,7 +2980,7 @@ namespace OASystem.API.Controllers
                     int ccpId = groupData.Data.GetType().GetProperty("ccpId").GetValue(groupData.Data, null);
                     int sign = groupData.Data.GetType().GetProperty("sign").GetValue(groupData.Data, null);
 
-                    await AppNoticeLibrary.SendChatMsg_GroupStatus_ApplyFee(ccpId, sign, QiyeWeChatEnum.GuoJiaoLeaderChat);
+                    //await AppNoticeLibrary.SendChatMsg_GroupStatus_ApplyFee(ccpId, sign, QiyeWeChatEnum.GuoJiaoLeaderChat);
                 }
                 catch (Exception ex)
                 {

+ 17 - 0
OASystem/OASystem.Domain/ViewModels/Groups/DecreasePaymentsView.cs

@@ -38,4 +38,21 @@ namespace OASystem.Domain.ViewModels.Groups
         public int isAudit { get; set; }
         public int IsPay { get; set; }
     }
+
+    public class DecreasePaymentGroupView
+    {
+        public int Id { get; set; }
+        public string TeamName { get; set; }
+        public string ClientUnit { get; set; }
+        public string ClientName { get; set; }
+        public string TourCode { get; set; }
+        public int TeamDid { get; set; }
+        public string TeamTypeName { get; set; }
+        public string VisitCountry { get; set; }
+        public DateTime VisitStartDate { get; set; }
+        public DateTime VisitEndDate { get; set; }
+        public int VisitDays { get; set; }
+        public int VisitPNumber { get; set; }
+        public DateTime CreateTime { get; set; }
+    }
 }

+ 66 - 26
OASystem/OASystem.Infrastructure/Repositories/Groups/DecreasePaymentsRepository.cs

@@ -80,13 +80,18 @@ namespace OASystem.Infrastructure.Repositories.Groups
         public async Task<Result> DecreasePaymentsSelect(DecreasePaymentsDto dto)
         {
             Result result = new Result() { Code = -2, Msg = "未知错误" };
-            try
+
+            #region 团组下拉框
+
+            List<Grp_GroupsTaskAssignment> grp_GroupsTaskAssignment = Query<Grp_GroupsTaskAssignment>(a => a.IsDel == 0 && a.UId == dto.UserId && a.CTId == dto.CTId).ToList();
+
+            string DiId = "";
+
+            List<DecreasePaymentGroupView> _Delegations = new List<DecreasePaymentGroupView>();
+            if (grp_GroupsTaskAssignment.Count > 0)
             {
-                #region 团组下拉框
 
-                List<Grp_GroupsTaskAssignment> grp_GroupsTaskAssignment = Query<Grp_GroupsTaskAssignment>(a => a.IsDel == 0 && a.UId == dto.UserId && a.CTId == dto.CTId).ToList();
 
-                string DiId = "0";
                 foreach (var item in grp_GroupsTaskAssignment)
                 {
                     DiId += item.DIId + ",";
@@ -95,33 +100,69 @@ namespace OASystem.Infrastructure.Repositories.Groups
                 {
                     DiId = DiId.Substring(0, DiId.Length - 1);
                 }
-                string sql = string.Format(@"select * from Grp_DelegationInfo where Id in({0}) and IsDel={1} Order By CreateTime Desc", DiId, 0);
-                List<Grp_DelegationInfo> grp_Delegations = _sqlSugar.SqlQueryable<Grp_DelegationInfo>(sql).ToList();
 
-                if (grp_Delegations.Count == 0)
-                {
-                    return result = new Result() { Code = -1, Msg = "查询失败!" };
-                }
-                #endregion
+                string sql = string.Format($@"Select 
+                                        di.Id,
+										di.TeamName,
+										di.ClientUnit,
+										di.ClientName,
+										di.TourCode,
+										di.TeamDid,
+										sd.[Name] As TeamTypeName,
+										di.VisitCountry,
+										di.VisitStartDate,
+										di.VisitEndDate,
+										di.VisitDays,
+										di.VisitPNumber,
+										di.CreateTime
+										From Grp_DelegationInfo di With(NoLock)
+										Left Join Sys_SetData sd On di.TeamDid = sd.Id
+                                        Where di.Id in({DiId}) and di.IsDel=0 
+										Order By di.CreateTime Desc");
+
+                //DecreasePaymentGroupView
+                _Delegations = _sqlSugar.SqlQueryable<DecreasePaymentGroupView>(sql).ToList();
+            }
+            #endregion
 
-                #region 其他下拉框查询
+            #region 其他下拉框查询
 
-                //支付方式
-                List<Sys_SetData> Payment = _sqlSugar.Queryable<Sys_SetData>().Where(a => a.STid == 14 && a.IsDel == 0).ToList();
-                List<SetDataInfoView> _Payment = _mapper.Map<List<SetDataInfoView>>(Payment);
-                #endregion
-                var data = new
+            //支付方式
+            List<Sys_SetData> Payment = _sqlSugar.Queryable<Sys_SetData>().Where(a => a.STid == 14 && a.IsDel == 0).ToList();
+            List<SetDataInfoView> _Payment = _mapper.Map<List<SetDataInfoView>>(Payment);
+
+            //供应商 supplier
+            List<Sys_SetData> supplier = _sqlSugar.Queryable<Sys_SetData>().Where(a => a.STid == 21 && a.IsDel == 0).ToList();
+            List<SetDataInfoView> _supplier = _mapper.Map<List<SetDataInfoView>>(supplier);
+            if (_supplier.Count > 0)
+            {
+                var d1 = _supplier.Find(it => it.Name.Equals("策划 公司"));
+                if (d1 != null) _supplier.Remove(d1);
+
+                var d2 = _supplier.Find(it => it.Name.Equals("礼仪"));
+                if (d2 != null) _supplier.Remove(d2);
+
+                var d3 = _supplier.Find(it => it.Name.Equals("日常办公用品"));
+                if (d3 != null) _supplier.Remove(d3);
+
+                var d4 = _supplier.Find(it => it.Name.Equals("其他"));
+                if (d4 != null)
                 {
-                    Payment = _Payment,
-                    GroupName = grp_Delegations,
-                };
-                return result = new Result() { Code = 0, Msg = "查询成功!", Data = data };
+                    _supplier.Remove(d4);
+                    _supplier.Add(d4);
+                }
+
             }
-            catch (Exception ex)
+            #endregion
+
+            var data = new
             {
-                return result = new Result() { Code = -2, Msg = "程序错误" };
-                throw;
-            }
+                payment = _Payment,
+                groupName = _Delegations,
+                supplier = _supplier
+            };
+            return result = new Result() { Code = 0, Msg = "查询成功!", Data = data };
+
         }
 
         public async Task<Result> OpDecreasePayments(DecreasePaymentsOpDto dto)
@@ -144,7 +185,6 @@ namespace OASystem.Infrastructure.Repositories.Groups
                     }
                     else//不存在,可添加
                     {
-
                         id = await AddAsyncReturnId(grp_Decrease);
                         if (id < 1)
                         {