|  |  | 
 |  |  | using System.Data.SqlClient; | 
 |  |  | using System.Web.Http; | 
 |  |  | using WebAPI.Models; | 
 |  |  | using System.Text.RegularExpressions; | 
 |  |  | namespace WebAPI.Controllers | 
 |  |  | { | 
 |  |  |     public class Gy_CustomerController : ApiController | 
 |  |  | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         #region 客户子表[关联用户] 查询 | 
 |  |  |         /// <summary> | 
 |  |  |         /// 返回客户子表[关联用户]列表 | 
 |  |  |         ///参数:string sql。 | 
 |  |  |         ///返回值:object。 | 
 |  |  |         /// </summary> | 
 |  |  |         [Route("Gy_Customer/RelationUserlist")] | 
 |  |  |         [HttpGet] | 
 |  |  |         public object RelationUserlist(Int64 HCusID) | 
 |  |  |         { | 
 |  |  |             try | 
 |  |  |             { | 
 |  |  |                 List<object> columnNameList = new List<object>(); | 
 |  |  |  | 
 |  |  |                 string sql = "select * from h_v_Gy_Customer_RelationUsers_Query where HCusID = " + HCusID + " order by 用户编码 asc"; | 
 |  |  |                 ds = oCN.RunProcReturn(sql, "h_v_Gy_Customer_RelationUsers_Query"); | 
 |  |  |  | 
 |  |  |                 //添加列名 | 
 |  |  |                 foreach (DataColumn col in ds.Tables[0].Columns) | 
 |  |  |                 { | 
 |  |  |                     Type dataType = col.DataType; | 
 |  |  |                     string ColmString = "{\"ColmCols\":\"" + col.ColumnName + "\",\"ColmType\":\"" + dataType.Name + "\"}"; | 
 |  |  |                     columnNameList.Add(JsonConvert.DeserializeObject(ColmString));//获取到DataColumn列对象的列名 | 
 |  |  |                 } | 
 |  |  |  | 
 |  |  |                 objJsonResult.code = "1"; | 
 |  |  |                 objJsonResult.count = 1; | 
 |  |  |                 objJsonResult.Message = "Sucess!"; | 
 |  |  |                 objJsonResult.data = ds.Tables[0]; | 
 |  |  |                 objJsonResult.list = columnNameList; | 
 |  |  |                 return objJsonResult; | 
 |  |  |             } | 
 |  |  |             catch (Exception e) | 
 |  |  |             { | 
 |  |  |                 objJsonResult.code = "0"; | 
 |  |  |                 objJsonResult.count = 0; | 
 |  |  |                 objJsonResult.Message = "Exception!" + e.ToString(); | 
 |  |  |                 objJsonResult.data = null; | 
 |  |  |                 return objJsonResult; | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |         #endregion | 
 |  |  |  | 
 |  |  |         /// <summary> | 
 |  |  |         /// 客户列表修改按钮方法 | 
 |  |  |         ///参数:string sql。 | 
 |  |  | 
 |  |  |             try | 
 |  |  |             { | 
 |  |  |                 string sql = string.Format(@"select  c.HItemID,c.HNumber 客户代码,c.HName 客户名称,c.HHelpCode  助记码,c.HShortName 简称,c.HAddress 地址,c.HLinkMan 联系人,c.HLinkPhone 联系电话 | 
 |  |  |                                             ,c.HMobilePhone 手机,c.HFax 传真,c.HPostalCode 邮编,c.HEmail 电子邮件,c.HCorMan 法人代表,c.HBank 开户银行,c.HBankAccount 银行账号, | 
 |  |  |                                             ,c.HMobilePhone 手机,c.HFax 传真,c.HPostalCode 邮编,c.HEmail 电子邮件,c.HCorMan 法人代表,c.HBank 开户银行,c.HBankAccount 银行账号,c.HMateOutEmp 领用人, | 
 |  |  |                                             c.HTaxNum 税务登记号,c.HTaxRate 增值税率,c.HEnglishName 英文名称,c.HEngLishAddress 英文地址,c.HCountry 国家,c.HCusStatus 客户状态 | 
 |  |  |                                             ,c.HStopflag 禁用标志,c.HRemark 备注,c.HAreaID 地区ID,a.HName 地区名称,c.HCurID 默认货币ID,r.HName 默认货币, | 
 |  |  |                                             c.HSSID 结算方式ID,s.HName 结算方式,c.HCusTypeID 客户分类ID,t.HName 客户分类 from Gy_Customer c | 
 |  |  | 
 |  |  |                 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> | 
 |  |  | 
 |  |  |                 DateTime HMakeTime = list[0].HMakeTime; | 
 |  |  |                 long HCreateOrgID = list[0].HCREATEORGID; | 
 |  |  |                 long HUseOrgID = list[0].HUSEORGID; | 
 |  |  |  | 
 |  |  |                 string HMateOutEmp = list[0].HMateOutEmp; | 
 |  |  |                 //DateTime HDeleteDate = list[0].HDeleteDate; | 
 |  |  |  | 
 |  |  |  | 
 |  |  | 
 |  |  |                     ",HEmpID,HCreditDate,HCreditRatingDate,HMaxCreditRatingDate" + | 
 |  |  |                     ",HMonthUseQty,HForecastCreditRating,HCreditLevelID,HCountAccrualRating" + | 
 |  |  |                     ",HSubsidyAccrualRating,HCreditRating,HMaxCreditRating" + | 
 |  |  |                     ",HCusTypeID,HCREATEORGID,HUSEORGID) " + | 
 |  |  |                     ",HCusTypeID,HCREATEORGID,HUSEORGID,HMateOutEmp) " + | 
 |  |  |                     " Values('" + HNumber + "','" + HName + "','" + HHelpCode + "','" + HShortNumber + "'," + HParentID + | 
 |  |  |                     ", " + HLevel + ",1,'" + HStopflag + "','" + HRemark + "'" + | 
 |  |  |                     ",'" + HShortName + "','" + HAddress + "','" + HLinkMan + "','" + HLinkPhone + "','" + HMobilePhone + "'" + | 
 |  |  | 
 |  |  |                     "," + HEmpID + "," + HCreditDate + "," + HCreditRatingDate + "," + HMaxCredRatingDate + | 
 |  |  |                     "," + HMonthUseQty + "," + HForecastCreditRating + "," + HCreditLevelID + "," + HCountAccrualRating + | 
 |  |  |                     "," + HSubsidyAccrualRating + "," + HCreditRating + "," + HMaxCreditRating + | 
 |  |  |                     ", " + HCusTypeID + ","+ HCreateOrgID + ","+ HUseOrgID + ")"); | 
 |  |  |                     ", " + HCusTypeID + ","+ HCreateOrgID + ","+ HUseOrgID + ",'"+ HMateOutEmp + "')"); | 
 |  |  |                 //修改上级为非末级代码 | 
 |  |  |                 oCN.RunProc("Update Gy_Customer set HEndflag=0 where HItemID=" + HParentID, ref DBUtility.ClsPub.sExeReturnInfo); | 
 |  |  |  | 
 |  |  | 
 |  |  |             try | 
 |  |  |             { | 
 |  |  |                 var model = oMain["model"].ToString(); | 
 |  |  |                 LogService.Write("客户:" + model); | 
 |  |  |                 var custLocationModel = oMain["model"]["HCustLocationEntry"].ToString(); | 
 |  |  |                 var custContactModel = oMain["model"]["HCustContactEntry"].ToString(); | 
 |  |  |                 //反序列化 | 
 |  |  | 
 |  |  |                 oCN.RunProc(sql); | 
 |  |  |                 sql = "set identity_insert gy_Customer on"; | 
 |  |  |                 oCN.RunProc(sql); | 
 |  |  |                 //主表_客户 | 
 |  |  |                 oCN.RunProc("Insert into Gy_Customer " + | 
 |  |  |  | 
 |  |  |                 LogService.Write("客户:" + "Insert into Gy_Customer " + | 
 |  |  |                     " (HItemID,HNumber,HName,HHelpCode,HShortNumber,HParentID" + | 
 |  |  |                     ",HLevel,HEndFlag,HStopflag,HRemark" + | 
 |  |  |                     ",HShortName,HAddress,HLinkMan,HLinkPhone,HMobilePhone" + | 
 |  |  | 
 |  |  |                     "," + lsmain[0].HMonthUseQty + "," + lsmain[0].HForecastCreditRating + "," + lsmain[0].HCreditLevelID + "," + lsmain[0].HCountAccrualRating + | 
 |  |  |                     "," + lsmain[0].HSubsidyAccrualRating + "," + lsmain[0].HCreditRating + "," + lsmain[0].HMaxCreditRating + | 
 |  |  |                     ", " + lsmain[0].HCusTypeID + ")"); | 
 |  |  |                 //主表_客户 | 
 |  |  |                 oCN.RunProc("Insert into Gy_Customer " + | 
 |  |  |                     " (HItemID,HNumber,HName,HHelpCode,HShortNumber,HParentID" + | 
 |  |  |                     ",HLevel,HEndFlag,HStopflag,HRemark" + | 
 |  |  |                     ",HShortName,HAddress,HLinkMan,HLinkPhone,HMobilePhone" + | 
 |  |  |                     ",HFax,HPostalCode,HEmail,HBank,HBankAccount" + | 
 |  |  |                     ",HTaxNum,HTaxRate,HCountry,HCorMan,HEnglishName" + | 
 |  |  |                     ",HEnglishAddress,HCurID,HSSID,HAreaID,HCusStatus" + | 
 |  |  |                     ",HEmpID,HCreditDate,HCreditRatingDate,HMaxCreditRatingDate" + | 
 |  |  |                     ",HMonthUseQty,HForecastCreditRating,HCreditLevelID,HCountAccrualRating" + | 
 |  |  |                     ",HSubsidyAccrualRating,HCreditRating,HMaxCreditRating" + | 
 |  |  |                     ",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].HFax + "','" + lsmain[0].HPostalCode + "','" + lsmain[0].HEmail + "','" + lsmain[0].HBank + "','" + lsmain[0].HBankAccount + "'" + | 
 |  |  |                     ",'" + lsmain[0].HTaxNum + "'," + lsmain[0].HTaxRate + ",'" + lsmain[0].HCountry + "','" + lsmain[0].HCorMan + "','" + lsmain[0].HEnglishName + "'" + | 
 |  |  |                     ",'" + lsmain[0].HEnglishAddress + "'," + lsmain[0].HCurID + "," + lsmain[0].HSSID + "," + lsmain[0].HAreaID + ",'" + lsmain[0].HCusStatus + "'" + | 
 |  |  |                     "," + 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].HItemID + ")"); | 
 |  |  |                 sql = "set identity_insert gy_Customer off"; | 
 |  |  |                 oCN.RunProc(sql); | 
 |  |  |                 //客户_交货地点 | 
 |  |  | 
 |  |  |                 DateTime HMakeTime = list[0].HMakeTime; | 
 |  |  |                 long HCreateOrgID = list[0].HCREATEORGID; | 
 |  |  |                 long HUseOrgID = list[0].HUSEORGID; | 
 |  |  |  | 
 |  |  |                 string HMateOutEmp = list[0].HMateOutEmp; | 
 |  |  |  | 
 |  |  |                 //判断权限 | 
 |  |  |                 if (!ClsPub.Security_Log(msg5, 1, false, msg4)) | 
 |  |  | 
 |  |  |                     ",HAreaID  ='" + HAreaID + "'" + | 
 |  |  |                     ",HCusStatus  ='" + HCusStatus + "'" + | 
 |  |  |                     ",HCusTypeID  ='" + HCusTypeID + "'" + | 
 |  |  |                     ",HRemark= '" + HRemark + "' Where HItemID=" + HItemID, ref DBUtility.ClsPub.sExeReturnInfo); | 
 |  |  |                     ",HMateOutEmp='"+ HMateOutEmp+ | 
 |  |  |                     "',HRemark= '" + HRemark + "' Where HItemID=" + HItemID, ref DBUtility.ClsPub.sExeReturnInfo); | 
 |  |  |                 //修改子项目代码 | 
 |  |  |                 //oCN.RunProc("exec h_p_Gy_UpdateNumber Gy_Department,'" + HNumber + ".','" + this.HOldNumber + ".'", ref DBUtility.ClsPub.sExeReturnInfo); | 
 |  |  |                 //将上级 为非末级 | 
 |  |  | 
 |  |  |                         return objJsonResult; | 
 |  |  |                     } | 
 |  |  |                     // | 
 |  |  |                     if (oDept.DeleteByID(HItemID)) | 
 |  |  |                     try | 
 |  |  |                     { | 
 |  |  |                         //写入日志 | 
 |  |  |                         ClsPub.Add_Log("", "删除项目,代码:" + oDeptHlp.omodel.HNumber + ",名称:" + oDeptHlp.omodel.HName, ClsPub.CurUserName); | 
 |  |  |                         //更新上级为 末级 | 
 |  |  |                         objJsonResult.code = "1"; | 
 |  |  |                         objJsonResult.count = 1; | 
 |  |  |                         objJsonResult.Message = "删除成功"; | 
 |  |  |                         objJsonResult.data = null; | 
 |  |  |                         return objJsonResult; | 
 |  |  |                         if (oDept.DeleteByID(HItemID)) | 
 |  |  |                         { | 
 |  |  |                             //写入日志 | 
 |  |  |                             ClsPub.Add_Log("", "删除项目,代码:" + oDeptHlp.omodel.HNumber + ",名称:" + oDeptHlp.omodel.HName, ClsPub.CurUserName); | 
 |  |  |                             //更新上级为 末级 | 
 |  |  |                             objJsonResult.code = "1"; | 
 |  |  |                             objJsonResult.count = 1; | 
 |  |  |                             objJsonResult.Message = "删除成功"; | 
 |  |  |                             objJsonResult.data = null; | 
 |  |  |                             return objJsonResult; | 
 |  |  |                         } | 
 |  |  |                         else | 
 |  |  |                         { | 
 |  |  |                             objJsonResult.code = "0"; | 
 |  |  |                             objJsonResult.count = 0; | 
 |  |  |                             objJsonResult.Message = "删除失败"; | 
 |  |  |                             objJsonResult.data = null; | 
 |  |  |                             return objJsonResult; | 
 |  |  |                         } | 
 |  |  |                     } | 
 |  |  |                     else | 
 |  |  |                     catch (Exception e) | 
 |  |  |                     { | 
 |  |  |                         objJsonResult.code = "0"; | 
 |  |  |                         objJsonResult.count = 0; | 
 |  |  |                         objJsonResult.Message = "删除失败"; | 
 |  |  |                         objJsonResult.Message = "删除失败,该客户存在关联的销售订单、销售出库单、生产订单,或程序错误。"; | 
 |  |  |                         objJsonResult.data = null; | 
 |  |  |                         return objJsonResult; | 
 |  |  |                     } | 
 |  |  |                      | 
 |  |  |                 } | 
 |  |  |                 //ds = oCN.RunProcReturn("delete from Gy_Department where HItemID =  " + HItemID, "Gy_Department"); | 
 |  |  |  | 
 |  |  | 
 |  |  |                ,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);//再次用子集去循环,拿出子集的子集 | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |  | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |     } | 
 |  |  | } |