using SyntacticSugar.constant; using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Threading.Tasks; using System.Web; using WebAPI.Exceptions; using WebAPI.WebBLL.JCJM.GYZL; namespace WebAPI.WebBLL.JCJM.IMPL { public class Gy_CustomerImpl : Gy_CustomerService { // 线程计数器 List taskList = new List(); SQLHelper.ClsCN oCN = new SQLHelper.ClsCN(); #region 导入EXCEL public void ImportExcel() { throw new NotImplementedException(); } #endregion /// /// 判断列 /// /// /// private static string JudgmentColumns(DataTable provisional) { var error = ""; //查询没有的列 if (!provisional.Columns.Contains("客户代码")) error += "没有找到【客户代码】的标题,"; if (!provisional.Columns.Contains("客户名称")) error += "没有找到【客户名称】的标题,"; return error; } #region 上传EXCEL public DataTable UploadExcel(DataSet ExcelDs) { //创建临时表 DataTable provisional = new DataTable("dt2"); //添加列名 for (int i = 0; i < ExcelDs.Tables[0].Columns.Count; i++) { provisional.Columns.Add(ExcelDs.Tables[0].Rows[0][i].ToString()); } //添加数据 for (int i = 1; i < ExcelDs.Tables[0].Rows.Count; i++) { DataRow row = provisional.NewRow(); for (int j = 0; j < ExcelDs.Tables[0].Columns.Count; j++) { row[j] = ExcelDs.Tables[0].Rows[i][j].ToString(); } provisional.Rows.Add(row); } //判断列 string error = JudgmentColumns(provisional); if (error.Length > 0) { throw new ExcelException($"Excel模板存在错误,{error}\r\n"); } for (int i = 0; i <= provisional.Rows.Count - 1; i++) { string HRegionNumber = DBUtility.ClsPub.isStrNull(provisional.Rows[i]["地区代码"].ToString()); string HRegionName = DBUtility.ClsPub.isStrNull(provisional.Rows[i]["地区名称"].ToString()); string HCurrencyNumber = DBUtility.ClsPub.isStrNull(provisional.Rows[i]["默认货币代码"].ToString()); string HCurrencyName = DBUtility.ClsPub.isStrNull(provisional.Rows[i]["默认货币名称"].ToString()); //string HBillingNumber = DBUtility.ClsPub.isStrNull(provisional.Rows[i]["结算方式代码"].ToString()); //string HBillingName = DBUtility.ClsPub.isStrNull(provisional.Rows[i]["结算方式名称"].ToString()); string HCusTypeNumber = DBUtility.ClsPub.isStrNull(provisional.Rows[i]["客户分类代码"].ToString()); string HCusTypeName = DBUtility.ClsPub.isStrNull(provisional.Rows[i]["客户分类名称"].ToString()); //记录任务 var tasks = new List(); //如果当前地区代码和地区名称不为空则判断是否存在 if (!String.IsNullOrEmpty(HRegionName) || !String.IsNullOrEmpty(HRegionNumber)) { tasks.Add(JudgeRegion(HRegionNumber, HRegionName)); } // 如果当前货币代码和货币名称不为空则判断是否存在 if (!String.IsNullOrEmpty(HCurrencyName) || !String.IsNullOrEmpty(HCurrencyNumber)) { tasks.Add(JudgeCurrency(HCurrencyNumber, HCurrencyName)); } //如果当前客户分类代码和名称 if (!String.IsNullOrEmpty(HCusTypeName) || !String.IsNullOrEmpty(HCusTypeNumber)) { tasks.Add(JudgeCusType(HCusTypeNumber, HCusTypeName)); } try { //等待任务完成 Task.WaitAll(tasks.ToArray()); } catch (AggregateException ae) { string msg = ae.Message; ae.Handle(ex => { if (ex is EmptyException) msg = ex.Message; Console.WriteLine(ex.Message); return ex is EmptyException; }); throw new Exception("第" + i +1 +"有问题: " +msg); } //获取真实行数 int line = i + 1; } return provisional; } /// /// 判断地区是否正确 /// private Task JudgeRegion(string HNumber, string HName) { return Task.Factory.StartNew(() => { try { SQLHelper.ClsCN oCN = new SQLHelper.ClsCN(); DataSet ds = oCN.RunProcReturn("select * from Gy_AreaSet where HNumber = '" + HNumber + "' and HName = '" + HName + "'", "Gy_AreaSet"); if (ds.Tables[0].Rows.Count == EmptyConstant.EMPTY) { throw new EmptyException("当前地区不存在,请重新选择"); } return (int)ds.Tables[0].Rows[0][0]; } catch (Exception e) { throw new EmptyException(e.Message); } }); } /// /// 判断货币是否正确 /// private Task JudgeCurrency(string HNumber, string HName) { { return Task.Factory.StartNew(() => { try { SQLHelper.ClsCN oCN = new SQLHelper.ClsCN(); DataSet ds = oCN.RunProcReturn("select * from Gy_Currency where HNumber = '" + HNumber + "' and HName = '" + HName + "'", "Gy_Currency"); if (ds.Tables[0].Rows.Count == EmptyConstant.EMPTY) { throw new EmptyException("当前货币不存在,请重新选择"); } return (int)ds.Tables[0].Rows[0][0]; } catch (Exception e) { throw new EmptyException(e.Message); } }); } } /// /// 判断客户分类 /// private Task JudgeCusType(string HNumber, string HName) { { return Task.Factory.StartNew(() => { try { SQLHelper.ClsCN oCN = new SQLHelper.ClsCN(); DataSet ds = oCN.RunProcReturn("select * from Gy_CusType where HNumber = '" + HNumber + "' and HName = '" + HName + "'", "Gy_CusType"); if (ds.Tables[0].Rows.Count == EmptyConstant.EMPTY) { throw new EmptyException("当前分类不存在,请重新选择"); } return (int)ds.Tables[0].Rows[0][0]; } catch (Exception e) { throw new EmptyException(e.Message); } }); } } #endregion } }