New file |
| | |
| | | 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<Task> taskList = new List<Task>(); |
| | | SQLHelper.ClsCN oCN = new SQLHelper.ClsCN(); |
| | | #region 导入EXCEL |
| | | public void ImportExcel() |
| | | { |
| | | throw new NotImplementedException(); |
| | | } |
| | | #endregion |
| | | |
| | | |
| | | /// <summary> |
| | | /// 判断列 |
| | | /// </summary> |
| | | /// <param name="provisional"></param> |
| | | /// <returns></returns> |
| | | 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<Task>(); |
| | | |
| | | //如果当前地区代码和地区名称不为空则判断是否存在 |
| | | 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; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 判断地区是否正确 |
| | | /// </summary> |
| | | private Task<int> JudgeRegion(string HNumber, string HName) |
| | | { |
| | | return Task<int>.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); |
| | | } |
| | | }); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 判断货币是否正确 |
| | | /// </summary> |
| | | private Task<int> JudgeCurrency(string HNumber, string HName) |
| | | { |
| | | { |
| | | return Task<int>.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); |
| | | } |
| | | }); |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 判断客户分类 |
| | | /// </summary> |
| | | private Task<int> JudgeCusType(string HNumber, string HName) |
| | | { |
| | | { |
| | | return Task<int>.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 |
| | | } |
| | | |
| | | } |