|  |  |  | 
|---|
|  |  |  | using System.Data.SqlClient; | 
|---|
|  |  |  | using System.Web.Http; | 
|---|
|  |  |  | using WebAPI.Models; | 
|---|
|  |  |  | using System.Text.RegularExpressions; | 
|---|
|  |  |  | namespace WebAPI.Controllers | 
|---|
|  |  |  | { | 
|---|
|  |  |  | public class Gy_CustomerController : ApiController | 
|---|
|  |  |  | 
|---|
|  |  |  | return objJsonResult; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | #region 客户根据分类获取最大客户编码 | 
|---|
|  |  |  | [Route("Gy_Customer/getMaxNum")] | 
|---|
|  |  |  | [HttpGet] | 
|---|
|  |  |  | public object getMaxNum(int HCusTypeID, string user, string Organization) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | try | 
|---|
|  |  |  | { | 
|---|
|  |  |  | List<object> columnNameList = new List<object>(); | 
|---|
|  |  |  | //编辑权限 | 
|---|
|  |  |  | if (!DBUtility.ClsPub.Security_Log_second("Gy_Customer", 1, false, user)) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | objJsonResult.code = "0"; | 
|---|
|  |  |  | objJsonResult.count = 0; | 
|---|
|  |  |  | objJsonResult.Message = "无查看权限!"; | 
|---|
|  |  |  | objJsonResult.data = null; | 
|---|
|  |  |  | return objJsonResult; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (HCusTypeID == 0) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | objJsonResult.code = "0"; | 
|---|
|  |  |  | objJsonResult.count = 0; | 
|---|
|  |  |  | objJsonResult.Message = "没有选择具体分类!"; | 
|---|
|  |  |  | objJsonResult.data = null; | 
|---|
|  |  |  | return objJsonResult; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | else | 
|---|
|  |  |  | { | 
|---|
|  |  |  | ds = oCN.RunProcReturn(@"select * from h_v_Gy_CustomerList where 组织名称='" + Organization + "'" + "and HCusTypeID = '" + HCusTypeID + "'" + " order by 客户代码 desc", "h_v_Gy_CustomerList"); | 
|---|
|  |  |  | if (ds == null || ds.Tables[0].Rows.Count == 0) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | objJsonResult.code = "0"; | 
|---|
|  |  |  | objJsonResult.count = 1; | 
|---|
|  |  |  | objJsonResult.Message = "没有找到该分类的客户编码请使用普通新增"; | 
|---|
|  |  |  | objJsonResult.data = null; | 
|---|
|  |  |  | return objJsonResult; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | string HNumber = ds.Tables[0].Rows[0]["客户代码"].ToString(); | 
|---|
|  |  |  | // 使用正则表达式找到数字部分  (?<=\D)是一个零宽断言,表示前面的字符不是数字 (\d+)$表示后面跟着一连串字符串知道末尾 | 
|---|
|  |  |  | Match match = Regex.Match(HNumber, @"(?<=\D)(\d+)$"); | 
|---|
|  |  |  | if (match.Success) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | string prefix = HNumber.Substring(0, HNumber.Length - match.Length); // 提取前缀 | 
|---|
|  |  |  | int number = int.Parse(match.Value); // 解析数字 | 
|---|
|  |  |  | // 数字+1 | 
|---|
|  |  |  | number++; | 
|---|
|  |  |  | // 格式化数字,保持原长度 | 
|---|
|  |  |  | string formattedNumber = number.ToString().PadLeft(match.Length, '0'); | 
|---|
|  |  |  | // 重新组合字符串 | 
|---|
|  |  |  | string result = prefix + formattedNumber; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | objJsonResult.code = "1"; | 
|---|
|  |  |  | objJsonResult.count = 1; | 
|---|
|  |  |  | objJsonResult.Message = "success"; | 
|---|
|  |  |  | objJsonResult.data = result; | 
|---|
|  |  |  | return objJsonResult; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | else | 
|---|
|  |  |  | { | 
|---|
|  |  |  | objJsonResult.code = "0"; | 
|---|
|  |  |  | objJsonResult.count = 1; | 
|---|
|  |  |  | objJsonResult.Message = "此分类客户编码格式有误"; | 
|---|
|  |  |  | objJsonResult.data = null; | 
|---|
|  |  |  | return objJsonResult; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | catch (Exception e) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | objJsonResult.code = "0"; | 
|---|
|  |  |  | objJsonResult.count = 0; | 
|---|
|  |  |  | objJsonResult.Message = "Exception!" + e.ToString(); | 
|---|
|  |  |  | objJsonResult.data = null; | 
|---|
|  |  |  | return objJsonResult; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | #endregion | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /// <summary> | 
|---|
|  |  |  | 
|---|
|  |  |  | ",HEmpID,HCreditDate,HCreditRatingDate,HMaxCreditRatingDate" + | 
|---|
|  |  |  | ",HMonthUseQty,HForecastCreditRating,HCreditLevelID,HCountAccrualRating" + | 
|---|
|  |  |  | ",HSubsidyAccrualRating,HCreditRating,HMaxCreditRating" + | 
|---|
|  |  |  | ",HCusTypeID) " + | 
|---|
|  |  |  | ",HCusTypeID,HERPItemID) " + | 
|---|
|  |  |  | " Values('" + lsmain[0].HItemID + "','" + lsmain[0].HNumber + "','" + lsmain[0].HName + "','" + lsmain[0].HHelpCode + "','" + lsmain[0].HShortNumber + "'," + lsmain[0].HParentID + | 
|---|
|  |  |  | ", " + lsmain[0].HLevel + ",0,'" + lsmain[0].HStopFlag + "','" + lsmain[0].HRemark + "'" + | 
|---|
|  |  |  | ",'" + lsmain[0].HShortName + "','" + lsmain[0].HAddress + "','" + lsmain[0].HLinkMan + "','" + lsmain[0].HLinkPhone + "','" + lsmain[0].HMobilePhone + "'" + | 
|---|
|  |  |  | 
|---|
|  |  |  | "," + lsmain[0].HEmpID + "," + lsmain[0].HCreditDate + "," + lsmain[0].HCreditRatingDate + "," + lsmain[0].HMaxCreditRatingDate + | 
|---|
|  |  |  | "," + lsmain[0].HMonthUseQty + "," + lsmain[0].HForecastCreditRating + "," + lsmain[0].HCreditLevelID + "," + lsmain[0].HCountAccrualRating + | 
|---|
|  |  |  | "," + lsmain[0].HSubsidyAccrualRating + "," + lsmain[0].HCreditRating + "," + lsmain[0].HMaxCreditRating + | 
|---|
|  |  |  | ", " + lsmain[0].HCusTypeID + ")"); | 
|---|
|  |  |  | ", " + lsmain[0].HCusTypeID + "," + lsmain[0].HItemID + ")"); | 
|---|
|  |  |  | sql = "set identity_insert gy_Customer off"; | 
|---|
|  |  |  | oCN.RunProc(sql); | 
|---|
|  |  |  | //客户_交货地点 | 
|---|
|  |  |  | 
|---|
|  |  |  | ,HLevel,HEndFlag,HStopflag,HRemark,HUseFlag,HMakeTime,HCREATEORGID,HUSEORGID | 
|---|
|  |  |  | ) | 
|---|
|  |  |  | values | 
|---|
|  |  |  | ({jsonData.HItemID},{jsonData.HERPItemID},'{jsonData.HNumber}','{jsonData.HName}', | 
|---|
|  |  |  | ({jsonData.HItemID},{jsonData.HItemID},'{jsonData.HNumber}','{jsonData.HName}', | 
|---|
|  |  |  | '{jsonData.HShortNumber}',{jsonData.HParentID},{jsonData.HLevel},{jsonData.HEndFlag},{jsonData.HStopflag},'{jsonData.HRemark}','{jsonData.HUseFlag}','{jsonData.HMakeTime}',{jsonData.HCREATEORGID},{jsonData.HUSEORGID})"; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | oCN.RunProc(sql); | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | #endregion | 
|---|
|  |  |  |  | 
|---|
|  |  |  | #region 客户分类 树形图(根据代码展开树状图) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | [Route("Gy_BadReason/Gy_CusrTypeTreeList")] | 
|---|
|  |  |  | [HttpGet] | 
|---|
|  |  |  | public object Gy_CusrTypeTreeList() | 
|---|
|  |  |  | { | 
|---|
|  |  |  | try | 
|---|
|  |  |  | { | 
|---|
|  |  |  | string sql1 = string.Format("select hitemid,hnumber,hname from Gy_MaterType order by hnumber"); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | ds = oCN.RunProcReturn(sql1, "Gy_MaterType"); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | List<TreeModel> treeModels = new List<TreeModel>(); | 
|---|
|  |  |  | TreeModel first = new TreeModel(); | 
|---|
|  |  |  | first.id = "0"; | 
|---|
|  |  |  | first.title = "客户分类设置"; | 
|---|
|  |  |  | treeModels.Add(first); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | foreach (DataRow row in ds.Tables[0].Rows) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | var strLen = row["hnumber"].ToString().Split('.'); | 
|---|
|  |  |  | if (strLen.Length == 1) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | TreeModel tree = new TreeModel(); | 
|---|
|  |  |  | tree.id = row["hitemid"].ToString(); | 
|---|
|  |  |  | tree.title = row["hname"].ToString(); | 
|---|
|  |  |  | treeModels[0].children.Add(tree); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | digui(ds.Tables[0], treeModels[0].children, 2); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | objJsonResult.code = "1"; | 
|---|
|  |  |  | objJsonResult.count = 1; | 
|---|
|  |  |  | objJsonResult.Message = "Sucess!"; | 
|---|
|  |  |  | objJsonResult.data = Newtonsoft.Json.JsonConvert.SerializeObject(treeModels); | 
|---|
|  |  |  | return objJsonResult; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | catch (Exception e) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | objJsonResult.code = "0"; | 
|---|
|  |  |  | objJsonResult.count = 0; | 
|---|
|  |  |  | objJsonResult.Message = "Exception!" + e.ToString(); | 
|---|
|  |  |  | objJsonResult.data = null; | 
|---|
|  |  |  | return objJsonResult; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | #endregion | 
|---|
|  |  |  |  | 
|---|
|  |  |  | #region 根据父id和等级获得树状图递归 | 
|---|
|  |  |  |  | 
|---|
|  |  |  | [Route("Gy_BadReason/Gy_CusTypeTreeListByLevel")] | 
|---|
|  |  |  | [HttpGet] | 
|---|
|  |  |  | public object Gy_CusTypeTreeListByLevel() | 
|---|
|  |  |  | { | 
|---|
|  |  |  | try | 
|---|
|  |  |  | { | 
|---|
|  |  |  | string sql1 = string.Format("select hitemid,hnumber,hname,hparentid,hlevel from Gy_CusType order by hnumber"); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | ds = oCN.RunProcReturn(sql1, "Gy_CusType"); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | List<TreeModel> treeModels = new List<TreeModel>(); | 
|---|
|  |  |  | TreeModel first = new TreeModel(); | 
|---|
|  |  |  | first.id = "0"; | 
|---|
|  |  |  | first.title = "客户分类设置"; | 
|---|
|  |  |  | treeModels.Add(first); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | foreach (DataRow row in ds.Tables[0].Rows) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | var HLevel = (int)row["hlevel"]; | 
|---|
|  |  |  | if (HLevel == 1) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | TreeModel tree = new TreeModel(); | 
|---|
|  |  |  | tree.id = row["hitemid"].ToString(); | 
|---|
|  |  |  | tree.title = row["hname"].ToString(); | 
|---|
|  |  |  | treeModels[0].children.Add(tree); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | getTreeByLevel(ds.Tables[0], treeModels[0].children, 2); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | objJsonResult.code = "1"; | 
|---|
|  |  |  | objJsonResult.count = 1; | 
|---|
|  |  |  | objJsonResult.Message = "Sucess!"; | 
|---|
|  |  |  | objJsonResult.data = Newtonsoft.Json.JsonConvert.SerializeObject(treeModels); | 
|---|
|  |  |  | return objJsonResult; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | catch (Exception e) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | objJsonResult.code = "0"; | 
|---|
|  |  |  | objJsonResult.count = 0; | 
|---|
|  |  |  | objJsonResult.Message = "Exception!" + e.ToString(); | 
|---|
|  |  |  | objJsonResult.data = null; | 
|---|
|  |  |  | return objJsonResult; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | #endregion | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | #region 物料分类 树形图(根据代码展开树状图) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public void getTreeByLevel(DataTable dt, List<TreeModel> tree, int num) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | for (int m = 0; m < tree.Count; m++) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | tree[m].children = new List<TreeModel>(); | 
|---|
|  |  |  | for (int i = 0; i < dt.Rows.Count; i++)//第一次循环,得到所有根节点的子集 | 
|---|
|  |  |  | { | 
|---|
|  |  |  | var HLevel = (int)dt.Rows[i]["hlevel"]; | 
|---|
|  |  |  | var HParentID = dt.Rows[i]["hparentid"].ToString(); | 
|---|
|  |  |  | if (HLevel == num && HParentID == tree[m].id) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | TreeModel tbjson = new TreeModel(); | 
|---|
|  |  |  | tbjson.id = dt.Rows[i]["hitemid"].ToString(); | 
|---|
|  |  |  | tbjson.title = dt.Rows[i]["hname"].ToString(); | 
|---|
|  |  |  | tree[m].children.Add(tbjson); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | for (int i = 0; i < tree[m].children.Count; i++) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | getTreeByLevel(dt, tree[m].children, num + 1);//再次用子集去循环,拿出子集的子集 | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | public class TreeModel | 
|---|
|  |  |  | { | 
|---|
|  |  |  | public string id { get; set; } | 
|---|
|  |  |  | public string title { get; set; } | 
|---|
|  |  |  | public List<TreeModel> children = new List<TreeModel>(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | #endregion | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /// <summary> | 
|---|
|  |  |  | /// 递归函数 | 
|---|
|  |  |  | /// </summary> | 
|---|
|  |  |  | public void digui(DataTable dt, List<TreeModel> tree, int num) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | for (int m = 0; m < tree.Count; m++) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | tree[m].children = new List<TreeModel>(); | 
|---|
|  |  |  | for (int i = 0; i < dt.Rows.Count; i++)//第一次循环,得到所有根节点的子集 | 
|---|
|  |  |  | { | 
|---|
|  |  |  | var strLen = dt.Rows[i]["hnumber"].ToString().Split('.'); | 
|---|
|  |  |  | if (strLen.Length == num && dt.Rows[i]["hnumber"].ToString().Contains(tree[m].id + ".")) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | TreeModel tbjson = new TreeModel(); | 
|---|
|  |  |  | tbjson.id = dt.Rows[i]["hitemid"].ToString(); | 
|---|
|  |  |  | tbjson.title = dt.Rows[i]["hname"].ToString(); | 
|---|
|  |  |  | tree[m].children.Add(tbjson); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | var strLens = tree[m].id.Split('.'); | 
|---|
|  |  |  | for (int i = 0; i < tree[m].children.Count; i++) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | digui(dt, tree[m].children, strLens.Length + 2);//再次用子集去循环,拿出子集的子集 | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|