Browse Source

Merge branch 'develop' of http://132.232.92.186:3000/XinXiBu/OA2023 into develop

yuanrf 9 months ago
parent
commit
6a9bbbcab1

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

+ 18 - 38
OASystem/OASystem.Api/Controllers/GroupsController.cs

@@ -2892,38 +2892,22 @@ namespace OASystem.API.Controllers
         [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
         public async Task<IActionResult> DecreasePaymentsSelect(DecreasePaymentsDto dto)
         {
-            try
-            {
-                #region 参数验证
-
-                if (dto.UserId < 1) return Ok(JsonView(false, "请传入有效的UserId参数!"));
-                if (dto.CTId < 1) return Ok(JsonView(false, "请传入有效的CTId参数!"));
 
-                #endregion
-
-                //var groupData = await GeneralMethod.PostOperationAuthReturnGroupInfosAsync(dto.UserId, dto.CTId);
-                ////支付方式
-                //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);
+            #region 参数验证
 
-                //var data = new
-                //{
-                //    Payment = _Payment,
-                //    GroupName = groupData,
-                //};
+            if (dto.UserId < 1) return Ok(JsonView(false, "请传入有效的UserId参数!"));
+            if (dto.CTId < 1) return Ok(JsonView(false, "请传入有效的CTId参数!"));
 
-                var res = await _decreasePaymentsRep.DecreasePaymentsSelect(dto);
-                if (res.Code != 0)
-                {
-                    return Ok(JsonView(false, res.Msg));
-                }
+            #endregion
 
-                return Ok(JsonView(true, "操作成功!", res.Data));
-            }
-            catch (Exception ex)
+            var res = await _decreasePaymentsRep.DecreasePaymentsSelect(dto);
+            if (res.Code != 0)
             {
-                return Ok(JsonView(false, ex.Message));
+                return Ok(JsonView(false, res.Msg));
             }
+
+            return Ok(JsonView(true, "操作成功!", res.Data));
+
         }
 
         /// <summary>
@@ -2956,6 +2940,7 @@ namespace OASystem.API.Controllers
                 return Ok(JsonView(false, "程序错误!"));
             }
         }
+        
         /// <summary>
         /// 团组增减款项操作(Status:1.新增,2.修改)
         /// </summary>
@@ -3025,20 +3010,15 @@ namespace OASystem.API.Controllers
         [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
         public async Task<IActionResult> QueryDecreasePaymentsById(DecreasePaymentsByIdDto dto)
         {
-            try
-            {
-                Result groupData = await _decreasePaymentsRep.QueryDecreasePaymentsById(dto);
-                if (groupData.Code != 0)
-                {
-                    return Ok(JsonView(false, groupData.Msg));
-                }
-                return Ok(JsonView(true, groupData.Msg, groupData.Data));
-            }
-            catch (Exception ex)
+            if (dto.Id < 1) return Ok(JsonView(false, "请传入有效的数据Id!"));
+
+            Result groupData = await _decreasePaymentsRep.QueryDecreasePaymentsById(dto);
+            if (groupData.Code != 0)
             {
-                return Ok(JsonView(false, "程序错误!"));
-                throw;
+                return Ok(JsonView(false, groupData.Msg));
             }
+            return Ok(JsonView(true, groupData.Msg, groupData.Data));
+
         }
 
         #endregion

+ 42 - 6
OASystem/OASystem.Domain/Dtos/Groups/DecreasePaymentsDto.cs

@@ -39,13 +39,12 @@ namespace OASystem.Domain.Dtos.Groups
         /// </summary>
         public int PayDId { get; set; }
         /// <summary>
-        /// 费用表示
+        /// 费用标识
         /// </summary>
         public int OrbitalPrivateTransfer { get; set; }
-        /// <summary>
-        /// 收款方
-        /// </summary>
-        public string Payee { get;set; }
+
+
+
         /// <summary>
         /// 编号
         /// </summary>
@@ -54,15 +53,52 @@ namespace OASystem.Domain.Dtos.Groups
         /// 团组外键编号
         /// </summary>
         public int DiId { get; set; }
+
+        /// <summary>
+        /// 供应商地区
+        ///  1 国内(默认) 2 国外
+        /// </summary>
+        public int SupplierArea { get; set; } = 1;
+
+        /// <summary>
+        /// 供应商类型
+        /// </summary>
+        public int SupplierTypeId { get; set; }
+
+        /// <summary>
+        /// 供应商名称
+        /// </summary>
+        public string SupplierName { get; set; }
+
+        /// <summary>
+        /// 供应商联系人
+        /// </summary>
+        public string SupplierContact { get; set; }
+
+        /// <summary>
+        /// 供应商联系电话
+        /// </summary>
+        public string SupplierContactNumber { get; set; }
+
         /// <summary>
         /// 费用名称
         /// </summary>
         public string PriceName { get; set; }
         /// <summary>
-        /// 费用金额
+        /// 单价
         /// </summary>
         public decimal Price { get; set; }
 
+        /// <summary>
+        /// 数量
+        /// </summary>
+        public decimal Quantity { get; set; }
+
+        /// <summary>
+        /// 费用总计
+        /// </summary>
+        public decimal FeeTotal { get; set; }
+
         /// <summary>
         /// 费用币种
         /// </summary>

+ 47 - 1
OASystem/OASystem.Domain/Entities/Groups/Grp_DecreasePayments.cs

@@ -18,17 +18,63 @@ namespace OASystem.Domain.Entities.Groups
         /// </summary>
         [SugarColumn(IsNullable =true,ColumnDataType ="int")]
         public int DiId { get; set; }
+
+        /// <summary>
+        /// 供应商地区
+        /// 1 国内(默认) 2 国外
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "int")]
+        public int SupplierArea { get; set; } = 1;
+
+        /// <summary>
+        /// 供应商类型
+        /// setdata 外键Id  StID = 21
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "int")]
+        public int SupplierTypeId { get; set; }
+
+        /// <summary>
+        /// 供应商名称
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "nvarchar(200)")]
+        public string SupplierName { get; set; }
+
+        /// <summary>
+        /// 供应商联系人
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "nvarchar(100)")]
+        public string SupplierContact { get; set; }
+
+        /// <summary>
+        /// 供应商联系电话
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(50)")]
+        public string SupplierContactNumber { get; set; }
+
         /// <summary>
         /// 费用名称
         /// </summary>
         [SugarColumn(IsNullable = true, ColumnDataType = "varchar(225)")]
         public string PriceName { get; set; }
+
         /// <summary>
-        /// 费用金额
+        /// 单价
         /// </summary>
         [SugarColumn(IsNullable = true, ColumnDataType = "decimal(10,2)")]
         public decimal Price { get; set; }
 
+        /// <summary>
+        /// 数量
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "decimal(10,2)")]
+        public decimal Quantity { get; set; }
+
+        /// <summary>
+        /// 费用总计
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "decimal(10,2)")]
+        public decimal FeeTotal { get; set; }
+
         /// <summary>
         /// 费用币种
         /// </summary>

+ 95 - 1
OASystem/OASystem.Domain/ViewModels/Groups/DecreasePaymentsView.cs

@@ -23,7 +23,7 @@ namespace OASystem.Domain.ViewModels.Groups
         /// <summary>
         /// 费用金额
         /// </summary>
-        public decimal Price { get; set; }
+        public decimal FeeTotal { get; set; }
 
         /// <summary>
         /// 费用币种
@@ -38,4 +38,98 @@ 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; }
+    }
+
+    public class DecreasePaymentsInfoView
+    {
+       
+        public int id { get; set; }
+        /// <summary>
+        /// 团组外键编号
+        /// </summary>
+        public int diId { get; set; }
+
+        /// <summary>
+        /// 供应商地区
+        ///  1 国内(默认) 2 国外
+        /// </summary>
+        public int supplierArea { get; set; }
+
+        /// <summary>
+        /// 供应商类型
+        /// </summary>
+        public int supplierTypeId { get; set; }
+
+        /// <summary>
+        /// 供应商名称
+        /// </summary>
+        public string SupplierName { get; set; }
+
+        /// <summary>
+        /// 供应商联系人
+        /// </summary>
+        public string SupplierContact { get; set; }
+
+        /// <summary>
+        /// 供应商联系电话
+        /// </summary>
+        public string SupplierContactNumber { get; set; }
+
+        /// <summary>
+        /// 费用名称
+        /// </summary>
+        public string priceName { get; set; }
+        /// <summary>
+        /// 单价
+        /// </summary>
+        public decimal price { get; set; }
+
+        /// <summary>
+        /// 数量
+        /// </summary>
+        public decimal quantity { get; set; }
+
+        /// <summary>
+        /// 费用总计
+        /// </summary>
+        public decimal feeTotal { get; set; }
+
+        /// <summary>
+        /// 费用币种
+        /// </summary>
+        public int currency { get; set; }
+        /// <summary>
+        /// 附件地址
+        /// </summary>
+        public string filePath { get; set; }
+
+        /// <summary>
+        /// 支付方式
+        /// </summary>
+        public int payDId { get; set; }
+        /// <summary>
+        /// 费用标识
+        /// </summary>
+        public int orbitalPrivateTransfer { get; set; }
+        /// <summary>
+        /// 备注
+        /// </summary>
+        public string remark { get; set; }
+    }
 }

+ 114 - 49
OASystem/OASystem.Infrastructure/Repositories/Groups/DecreasePaymentsRepository.cs

@@ -54,7 +54,7 @@ namespace OASystem.Infrastructure.Repositories.Groups
                 }
 
                 //雷怡 2024-5-8 15:14 新增View字段 CreateTime
-                string sql = string.Format(@" Select gdp.Id,gdp.DiId,gdp.PriceName,gdp.Price,sd1.[Name] as Currency,gdp.FilePath,su.CnName as CreateUserName,
+                string sql = string.Format(@" Select gdp.Id,gdp.DiId,gdp.PriceName,gdp.FeeTotal,sd1.[Name] as Currency,gdp.FilePath,su.CnName as CreateUserName,
                                               ccp.IsAuditGM as isAudit,ccp.IsPay,gdp.CreateTime
                                               From Grp_DecreasePayments as gdp With(Nolock) Left Join Grp_CreditCardPayment as ccp With(Nolock) On gdp.Id = ccp.CId
                                               Left Join Sys_SetData as sd1 On gdp.Currency = sd1.Id
@@ -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,75 @@ 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)
+            List<dynamic> _supplierArea = new List<dynamic>() {
+                new { id=1,name = "国内" },
+                new { id=2,name = "国外" },
+            };
+
+            #endregion
+
+            var data = new
             {
-                return result = new Result() { Code = -2, Msg = "程序错误" };
-                throw;
-            }
+                payment = _Payment,
+                groupName = _Delegations,
+                supplier = _supplier,
+                supplierArea = _supplierArea
+            };
+            return result = new Result() { Code = 0, Msg = "查询成功!", Data = data };
+
         }
 
         public async Task<Result> OpDecreasePayments(DecreasePaymentsOpDto dto)
@@ -132,6 +179,12 @@ namespace OASystem.Infrastructure.Repositories.Groups
             {
                 int id = 0;
                 Grp_DecreasePayments grp_Decrease = _mapper.Map<Grp_DecreasePayments>(dto);
+                //处理费用总计
+                if (grp_Decrease.FeeTotal == 0.00M)
+                {
+                    grp_Decrease.FeeTotal = grp_Decrease.Price * grp_Decrease.Price;
+                }
+
                 List<TeamRateDescAddCurrencyIdView> teamRates = await _teamRateRep.PostGroupTeamRateItemByDiIdAndCTableId(1, dto.DiId, 98);
                 if (dto.Status == 1)//添加
                 {
@@ -144,7 +197,6 @@ namespace OASystem.Infrastructure.Repositories.Groups
                     }
                     else//不存在,可添加
                     {
-
                         id = await AddAsyncReturnId(grp_Decrease);
                         if (id < 1)
                         {
@@ -160,7 +212,7 @@ namespace OASystem.Infrastructure.Repositories.Groups
                         C.CTDId = 0;
                         C.BankNo = "";
                         C.CardholderName = "";
-                        C.PayMoney = grp_Decrease.Price;
+                        C.PayMoney = grp_Decrease.FeeTotal;
                         C.PaymentCurrency = grp_Decrease.Currency;
                         //当天汇率
                         //if (!string.IsNullOrEmpty(hfRate.Value))
@@ -196,7 +248,7 @@ namespace OASystem.Infrastructure.Repositories.Groups
                         C.PayPercentageOld = 0;
                         C.PayThenMoneyOld = 0;
                         C.UpdateDate = "";
-                        C.Payee = dto.Payee;
+                        C.Payee = dto.SupplierName;
                         C.OrbitalPrivateTransfer = dto.OrbitalPrivateTransfer;
                         C.ExceedBudget = 0;
                         //C.RMBPrice = 0.00f;
@@ -244,8 +296,15 @@ namespace OASystem.Infrastructure.Repositories.Groups
                     bool res = await UpdateAsync(a => a.Id == grp_Decrease.Id, a => new Grp_DecreasePayments
                     {
                         DiId = grp_Decrease.DiId,
+                        SupplierArea = grp_Decrease.SupplierArea,
+                        SupplierTypeId = grp_Decrease.SupplierTypeId,
+                        SupplierName = grp_Decrease.SupplierName,
+                        SupplierContact = grp_Decrease.SupplierContact,
+                        SupplierContactNumber = grp_Decrease.SupplierContactNumber,
                         PriceName = grp_Decrease.PriceName,
                         Price = grp_Decrease.Price,
+                        Quantity    = grp_Decrease.Quantity,
+                        FeeTotal = grp_Decrease.FeeTotal,
                         Currency = grp_Decrease.Currency,
                         FilePath = grp_Decrease.FilePath,
                         Remark = grp_Decrease.Remark,
@@ -288,9 +347,9 @@ namespace OASystem.Infrastructure.Repositories.Groups
                                                         {
                                                             PayDId = dto.PayDId,
                                                             IsPay = ispay,
-                                                            PayMoney = grp_Decrease.Price,
+                                                            PayMoney = grp_Decrease.FeeTotal,
                                                             PaymentCurrency = grp_Decrease.Currency,
-                                                            Payee = dto.Payee,
+                                                            Payee = dto.SupplierName,
                                                             OrbitalPrivateTransfer = dto.OrbitalPrivateTransfer,
                                                             DayRate = grp_CreditCardPayment.DayRate,
                                                             RMBPrice = grp_CreditCardPayment.RMBPrice,
@@ -410,24 +469,30 @@ namespace OASystem.Infrastructure.Repositories.Groups
         /// <exception cref="NotImplementedException"></exception>
         public async Task<Result> QueryDecreasePaymentsById(DecreasePaymentsByIdDto dto)
         {
-            Result result = new Result() { Code = -2, Msg = "程序错误" };
-            try
-            {
-                Grp_DecreasePayments grp_Decrease = _sqlSugar.Queryable<Grp_DecreasePayments>().First(a => a.Id == dto.Id && a.IsDel == 0);
-                Grp_CreditCardPayment grp_CreditCard = _sqlSugar.Queryable<Grp_CreditCardPayment>().First(a => a.CId == dto.Id && a.IsDel == 0 && a.CTable == 98);
-                var data = new
-                {
-                    _Decrease = grp_Decrease,
-                    _CreditCard = grp_CreditCard,
-                };
-                result = new Result() { Code = 0, Msg = "查询成功!", Data = data };
-            }
-            catch (Exception ex)
-            {
-                result = new Result() { Code = -2, Msg = "程序错误" };
-                throw;
-            }
-            return result;
+            string sql = string.Format($@"Select 
+											dp.Id,
+											dp.DiId,
+											dp.SupplierArea,
+											dp.SupplierTypeId,
+											dp.SupplierName,
+											dp.SupplierContact,
+											dp.SupplierContactNumber,
+											dp.PriceName,
+											dp.Price,
+											dp.Quantity,
+											dp.FeeTotal,
+											dp.Currency,
+											dp.FilePath,
+											dp.Remark,
+											ccp.PayDId,
+											ccp.OrbitalPrivateTransfer
+										From Grp_DecreasePayments dp With(NoLock)
+										Left Join Grp_CreditCardPayment ccp With(NoLock) On dp.Id = ccp.CId And dp.DiId = ccp.DIId And ccp.CTable = 98
+										Where dp.IsDel = 0  And dp.Id = {dto.Id}");
+
+            var info = await _sqlSugar.SqlQueryable<DecreasePaymentsInfoView>(sql).FirstAsync();
+
+            return new Result() { Code = 0, Msg = "查询成功!", Data = info };
         }
 
         /// <summary>