wtt
2024-10-22 6768e9f5d677e53e6d788d49e1ca5b9755236ca4
WebAPI/Controllers/BaseSet/Gy_SupplierController.cs
@@ -8,10 +8,14 @@
using System.Data.SqlClient;
using System.Web.Http;
using WebAPI.Models;
using System.Text.RegularExpressions;
using SyntacticSugar.constant;
namespace WebAPI.Controllers
{
    public class Gy_SupplierController : ApiController
    {
        //获取系统参数
        Pub_Class.ClsXt_SystemParameter oSystemParameter = new Pub_Class.ClsXt_SystemParameter();
        public DBUtility.ClsPub.Enum_BillStatus BillStatus;
        private json objJsonResult = new json();
@@ -76,7 +80,61 @@
            }
        }
        #region 供应商分页列表
        [Route("Gy_Supplier/page")]
        [HttpGet]
        public json Gy_SupplierPage(string sWhere, string user, int page, int size, string Organization)
        {
            DataSet ds;
            json res = new json();
            try
            {
                List<object> columnNameList = new List<object>();
                //判断权限
                if (!DBUtility.ClsPub.Security_Log_second("Gy_Supplier", 1, false, user))
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "无查看权限!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                sWhere += ("and 组织名称 = '" + Organization + "'");
                sWhere = sWhere.Replace("'", "''");
                if (sWhere == null || sWhere.Equals(""))
                {
                    ds = oCN.RunProcReturn("exec h_p_Gy_SupplierList " + page + "," + size + ",''", "h_p_Gy_SupplierList");
                }
                else
                {
                    ds = oCN.RunProcReturn("exec h_p_Gy_SupplierList " + page + "," + size + ",'" + sWhere + "'", "h_p_Gy_SupplierList");
                }
                //添加列名
                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列对象的列名
                }
                res.code = CodeConstant.SUCCEED;
                res.count = int.Parse(ds.Tables[1].Rows[0]["count"].ToString());
                res.Message = "Sucess!";
                res.list = columnNameList;
                res.data = ds.Tables[0];
                return res;
            }
            catch (Exception e)
            {
                res.code = CodeConstant.FAIL;
                res.count = CountConstant.FAIL;
                res.Message = "Exception!" + e.ToString();
                res.data = null;
                return res;
            }
        }
        #endregion
        /// <summary>
@@ -108,6 +166,83 @@
            }
        }
        #region 客户根据分类获取最大客户编码
        [Route("Gy_Supplier/getMaxNum")]
        [HttpGet]
        public object getMaxNum(int HSupTypeID, string user, string Organization)
        {
            try
            {
                List<object> columnNameList = new List<object>();
                //编辑权限
                if (!DBUtility.ClsPub.Security_Log_second("Gy_Supplier", 1, false, user))
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "无查看权限!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                if (HSupTypeID == 0)
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "没有选择具体分类!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                else
                {
                    ds = oCN.RunProcReturn(@"select * from h_v_Gy_SupplierList where 组织名称='" + Organization + "'" + "and HSupTypeID = '" + HSupTypeID + "'" + " order by 供应商代码 desc", "h_v_Gy_SupplierList");
                    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>
        /// 供应商列表修改按钮方法
        ///参数:string sql。
@@ -119,21 +254,27 @@
        {
            try
            {
                string sql = string.Format(@"select  s.HItemID,s.HNumber 编码,s.HName 名称,s.HHelpCode  助记码,s.HShortName 简称,s.HAddress 地址,s.HLinkMan 联系人,s.HLinkPhone 联系电话
                                            ,s.HMobilePhone 手机,s.HFax 传真,s.HPostalCode 邮编,s.HEmail 电子邮件,s.HCorMan 法人代表,s.HBank 开户银行,s.HBankAccount 银行账号,
                string sql = string.Format(@"select  s.HItemID,s.HUSEORGID,o.Hname 使用组织,s.HCREATEORGID ,d.Hname 创建组织,s.HNumber 编码,s.HName 名称,s.HHelpCode  助记码,s.HShortName 简称,s.HAddress 地址,s.HLinkMan 联系人,s.HLinkPhone 联系电话
                                            ,s.HMobilePhone 手机,s.HFax 传真,s.HPostalCode 邮编,s.HEmail 电子邮件,s.HCorMan 法人代表,s.HBank 开户银行,s.HBankAccount 银行账号,s.HPSStyleID 采购方式ID,f.HName 采购方式名称,
                                           s.HTaxNum 税务登记号,s.HEnglishName 英文名称,s.HEngLishAddress 英文地址,s.HCountry 国家,s.HStopflag 禁用标志
                                           ,s.HRemark 备注,s.HAreaID 地区ID,a.HName 地区名称,s.HTaxRate 增值税率,s.HCurID 默认货币ID,r.HName 默认货币,
                                           s.HSSID 结算方式ID,e.HName 结算方式 from Gy_Supplier s
                                           s.HSSID 结算方式ID,e.HName 结算方式,s.HMaterClass 供货材料类别  from Gy_Supplier s
                                           left join Gy_AreaSet a on s.HAreaID=a.HItemID
                                           left join Gy_Currency r on s.HCurID=r.HItemID 
                                           left  join Gy_SettleStyle e on s.HSSID=e.HItemID
                                           left join Xt_ORGANIZATIONS o on s.HUSEORGID=o.HItemID
                                 left join Xt_ORGANIZATIONS d on s.HCREATEORGID=d.HItemID
                                 left join Gy_PoStockStyle f on s.HPSStyleID=f.HItemID
                                           where s.HItemID='" + HInterID + "'");
                ds = oCN.RunProcReturn(sql, "Gy_Supplier");
                DataSet cs = oCN.RunProcReturn("select * from Gy_Supplier_PayPlan where HSupID = '"+ HInterID + "'", "Gy_Supplier_PayPlan");
                List<Object> list = new List<object>();
                list.Add(cs);
                objJsonResult.code = "1";
                objJsonResult.count = 1;
                objJsonResult.Message = "";
                objJsonResult.data = ds.Tables[0];
                objJsonResult.list = list;
                return objJsonResult;
            }
            catch (Exception e)
@@ -160,15 +301,16 @@
            {
                var _value = oMain["oMain"].ToString();
                string msg1 = _value.ToString();
                //反序列化
                msg1 = "[" + msg1.ToString() + "]";
                string[] sArray = msg1.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries);
                string msg2 = sArray[0].ToString(); //主表数据
                string msg3 = sArray[1].ToString(); //子表数据
                //主表反序列化
                msg2 = "[" + msg2.ToString() + "]";
                DAL.ClsGy_Supplier_Ctl oDept = new DAL.ClsGy_Supplier_Ctl();
                DAL.ClsGy_Supplier_View oDeptHlp = new DAL.ClsGy_Supplier_View();
                List<Supplier> list = Newtonsoft.Json.JsonConvert.DeserializeObject<List<Supplier>>(msg1);
                List<Supplier> list = Newtonsoft.Json.JsonConvert.DeserializeObject<List<Supplier>>(msg2);
                long HItemID = list[0].HInterID;
                string HNumber = list[0].HNumber;
@@ -204,7 +346,8 @@
                long HCreateOrgID = list[0].HCreateOrgID;
                long HUseOrgID = list[0].HUseOrgID;
                string HRemark = list[0].HRemark;
                string HMaterClass = list[0].HMaterClass;
                long HPSStyleID = list[0].HPSStyleID;
                if (!DBUtility.ClsPub.AllowNumber(HNumber))
                {
@@ -214,9 +357,6 @@
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                //若MAINDI重复则重新获取
                oCN.BeginTran();
                //主表
@@ -226,16 +366,32 @@
                    ",HShortName,HAddress,HLinkMan,HLinkPhone,HMobilePhone" +
                    ",HFax,HPostalCode,HEmail,HBank,HBankAccount" +
                    ",HTaxNum,HTaxRate,HCountry,HCorMan,HEnglishName" +
                    ",HEnglishAddress,HCurID,HSSID,HAreaID) " +
                    ",HEnglishAddress,HCurID,HSSID,HAreaID,HMaterClass,HUSEORGID,HCREATEORGID,HPSStyleID) " +
                " values('" + HNumber + "','" + HName + "','" + HHelpCode + "','" + HShortNumber + "','" + HParentID + "'" +
                "," + HLevel + ",0,'" + HStopflag + "','" + HRemark + "'" +
                "," + HLevel + ",1,'" + HStopflag + "','" + HRemark + "'" +
                ",'" + HShortName + "','" + HAddress + "','" + HLinkMan + "','" + HLinkPhone + "','" + HMobilePhone + "'" +
                ",'" + HFax + "','" + HPostalCode + "','" + HEmail + "','" + HBank + "','" + HBankAccount + "'" +
                ",'" + HTaxNum + "','" + HTaxRate + "','" + HCountry + "','" + HCorMan + "','" + HEnglishName + "'" +
                ",'" + HEnglishAddress + "'," + HCurID + "," + HSSID + "," + HAreaID +
              ") ");
                ",'" + HEnglishAddress + "'," + HCurID + "," + HSSID + "," + HAreaID +" ,'" + HMaterClass + " ','" + HUseOrgID + "' ,'" + HCreateOrgID + "' ,'" + HPSStyleID +
              "') ");
                //修改上级为非末级代码
                oCN.RunProc("Update Gy_Supplier set HEndflag=0 where HItemID=" + HParentID, ref DBUtility.ClsPub.sExeReturnInfo);
                //子表添加
                List<ClsGy_Supplier_PayPlan> DetailColl = Newtonsoft.Json.JsonConvert.DeserializeObject<List<ClsGy_Supplier_PayPlan>>(msg3);
                int i = 0;
                DataSet Cs;
                Cs = oCN.RunProcReturn("select MAX(HItemID)HItemID from Gy_Supplier", "Gy_Supplier");
                string MaxHItemID = Cs.Tables[0].Rows[0]["HItemID"].ToString();
                //删除子表操作 防止出错
                oCN.RunProc("delete from Gy_Supplier_PayPlan where HSupID='" + MaxHItemID + "'");
                foreach (ClsGy_Supplier_PayPlan oSub in DetailColl)
                {
                    i++;
                    oCN.RunProc($@"Insert into Gy_Supplier_PayPlan
                (HSupID,HSubID,HPayType,HPayRate,HPayTime,HPayRemark)
                 values({MaxHItemID},{i} ,'{oSub.HPayType}',{oSub.HPayRate},{oSub.HPayTime},'{oSub.HPayRemark}')");
                }
                oCN.Commit();
                objJsonResult.code = "1";
                objJsonResult.count = 1;
@@ -254,12 +410,66 @@
            }
        }
        [Route("Gy_Supplier/SaveGy_SupplierListApi")]
        [HttpPost]
        public object SaveGy_SupplierListApi([FromBody] JObject msg)
        {
            try
            {
                var _value = msg["model"].ToString();
                SQLHelper.ClsCN oCN = new SQLHelper.ClsCN();
                //反序列化
                _value = "[" + _value.ToString() + "]";
                List<Supplier> lsmain = Newtonsoft.Json.JsonConvert.DeserializeObject<List<Supplier>>(_value);
                string sql = string.Empty;
                //保存
                oCN.BeginTran();
                sql = $"delete from Gy_Supplier where HItemID = {lsmain[0].HItemID}";
                oCN.RunProc(sql);
                sql = "set identity_insert Gy_Supplier on";
                oCN.RunProc(sql);
                oCN.RunProc("Insert Into Gy_Supplier " +
                 "(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,HMaterClass,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].HMaterClass+
                 "'," + lsmain[0].HItemID +
                  ") ");
                //修改上级为非末级代码
                sql = "set identity_insert Gy_Supplier off";
                oCN.RunProc(sql);
                oCN.Commit();
                objJsonResult.code = "1";
                objJsonResult.count = 1;
                objJsonResult.Message = "保存成功!";
                objJsonResult.data = 1;
                return objJsonResult;
            }
            catch (Exception e)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "保存失败!" + e.ToString();
                objJsonResult.data = 1;
                return objJsonResult;
            }
        }
        /// <summary>
        /// 修改单据-保存按钮
        ///参数:string sql。
        ///返回值:object。
        /// </summary>
        [Route("Gy_Supplier/AddBill1")]
        [HttpPost]
        public object AddBill1([FromBody] JObject oMain)
@@ -274,9 +484,10 @@
                string msg1 = _value.ToString();
                string[] sArray = msg1.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries);
                string msg2 = sArray[0].ToString();   //表头数据
                string msg3 = sArray[1].ToString();   //列表主ID
                string msg4 = sArray[2].ToString();   //登录人员
                string msg5 = sArray[3].ToString();   //权限模块代码
                string msg3 = sArray[1].ToString();   //子表数据
                string msg4 = sArray[2].ToString();   //列表主ID
                string msg5 = sArray[3].ToString();   //登录人员
                string msg6 = sArray[4].ToString();   //权限模块代码
                //反序列化
                msg2 = "[" + msg2.ToString() + "]";
                List<Supplier> list = Newtonsoft.Json.JsonConvert.DeserializeObject<List<Supplier>>(msg2);
@@ -315,10 +526,11 @@
                long HCreateOrgID = list[0].HCreateOrgID;
                long HUseOrgID = list[0].HUseOrgID;
                string HRemark = list[0].HRemark;
                string HMaterClass = list[0].HMaterClass;
                long HPSStyleID = list[0].HPSStyleID;
                //判断权限
                if (!ClsPub.Security_Log(msg5, 1, false, msg4))
                if (!ClsPub.Security_Log(msg6, 1, false, msg5))
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
@@ -367,7 +579,11 @@
                   ",HEnglishAddress='" + HEnglishAddress + "'" +
                   ",HCurID=" + HCurID.ToString() +
                   ",HSSID=" + HSSID.ToString() +
                   ",HAreaID=" + HAreaID.ToString() + "Where HItemID=" + HItemID, ref DBUtility.ClsPub.sExeReturnInfo);
                   ",HMaterClass='" + HMaterClass +
                   "',HPSStyleID='"+ HPSStyleID.ToString() +
                   "',HUSEORGID='" + HUseOrgID.ToString() +
                   "',HCREATEORGID='" + HCreateOrgID.ToString() +
                   "',HAreaID=" + HAreaID.ToString() + "Where HItemID=" + HItemID, ref DBUtility.ClsPub.sExeReturnInfo);
                //修改子项目代码
@@ -375,6 +591,22 @@
                //将上级 为非末级
                oCN.RunProc("Update Gy_Supplier set HEndflag=0 where HItemID=" + HParentID, ref DBUtility.ClsPub.sExeReturnInfo);
                //
                //子表添加
                List<ClsGy_Supplier_PayPlan> DetailColl = Newtonsoft.Json.JsonConvert.DeserializeObject<List<ClsGy_Supplier_PayPlan>>(msg3);
                int i = 0;
                //删除子表操作 防止出错
                oCN.RunProc("delete from Gy_Supplier_PayPlan where HSupID='" + HItemID + "'");
                foreach (ClsGy_Supplier_PayPlan oSub in DetailColl)
                {
                    i++;
                    oCN.RunProc($@"Insert into Gy_Supplier_PayPlan
                (HSupID,HSubID,HPayType,HPayRate,HPayTime,HPayRemark)
                 values({HItemID},{i} ,'{oSub.HPayType}',{oSub.HPayRate},{oSub.HPayTime},'{oSub.HPayRemark}')");
                }
                oCN.Commit();
                objJsonResult.code = "1";
                objJsonResult.count = 1;
@@ -435,9 +667,13 @@
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
                    oCN.BeginTran();
                    //
                    if (oGroup.DeleteByID(HItemID))
                    {
                        //删除子表
                        oCN.RunProc("delete from Gy_Supplier_PayPlan where HSupID='" + HItemID + "'");
                        oCN.Commit();
                        //写入日志
                        ClsPub.Add_Log("", "删除项目,代码:" + oGroupHlp.omodel.HNumber + ",名称:" + oGroupHlp.omodel.HName, ClsPub.CurUserName);
                        //更新上级为 末级
@@ -449,6 +685,7 @@
                    }
                    else
                    {
                        oCN.Commit();
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = "删除失败";
@@ -473,6 +710,470 @@
                return objJsonResult;
            }
        }
        //
        #region 供应商审核、反审核
        /// <summary>
        ///
        /// </summary>
        /// <param name="HInterID">单据ID</param>
        /// <param name="IsAudit">审核(0),反审核(1)</param>
        /// <param name="CurUserName">审核人</param>
        /// <returns></returns>
        [Route("Gy_Supplier/AuditGy_Supplier")]
        [HttpGet]
        public object AuditGy_Material(int HInterID, int IsAudit, string CurUserName)
        {
            try
            {
                //审核权限
                if (!DBUtility.ClsPub.Security_Log_second("Gy_Supplier_Check", 1, false, CurUserName))
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "审核失败!无权限!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                var ds = oCN.RunProcReturn("select * from Gy_Supplier where HItemID=" + HInterID, "Gy_Supplier");
                if (ds.Tables[0].Rows.Count > 0)
                {
                    if (IsAudit == 0)  //审核判断
                    {
                        if (ds.Tables[0].Rows[0]["HCheckEmp"].ToString() != "")
                        {
                            objJsonResult.code = "0";
                            objJsonResult.count = 0;
                            objJsonResult.Message = "单据已审核!不能再次审核!";
                            objJsonResult.data = null;
                            return objJsonResult;
                        }
                    }
                    if (IsAudit == 1) //反审核判断
                    {
                        if (ds.Tables[0].Rows[0]["HCheckEmp"].ToString() == "")
                        {
                            objJsonResult.code = "0";
                            objJsonResult.count = 0;
                            objJsonResult.Message = "单据未审核!不需要反审核!";
                            objJsonResult.data = null;
                            return objJsonResult;
                        }
                    }
                }
                else
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "单据不存在!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                oCN.BeginTran();
                if (IsAudit == 0)  //审核判断
                {
                    oCN.RunProc("update Gy_Supplier set HCheckEmp='" + CurUserName + "',HCheckTime=getdate() where HItemID=" + HInterID);
                    objJsonResult.code = "1";
                    objJsonResult.count = 1;
                    objJsonResult.Message = "审核成功";
                    objJsonResult.data = null;
                }
                if (IsAudit == 1) //反审核判断
                {
                    oCN.RunProc("update Gy_Supplier set HCheckEmp='',HCheckTime=null where HItemID=" + HInterID);
                    objJsonResult.code = "1";
                    objJsonResult.count = 1;
                    objJsonResult.Message = "反审核成功";
                    objJsonResult.data = null;
                }
                oCN.Commit();
                return objJsonResult;
            }
            catch (Exception e)
            {
                oCN.RollBack();
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "审核失败或者反审核失败!" + e.ToString();
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        #endregion
        #region 供应商禁用、反禁用
        /// <summary>
        ///
        /// </summary>
        /// <param name="HInterID">单据ID</param>
        /// <param name="IsStop">禁用(0),反禁用(1)</param>
        /// <param name="CurUserName">审核人</param>
        /// <returns></returns>
        [Route("Gy_Supplier/StopGy_Supplier")]
        [HttpGet]
        public object StopGy_Supplier(int HInterID, int IsStop, string CurUserName)
        {
            try
            {
                //审核权限
                if (!DBUtility.ClsPub.Security_Log_second("Gy_Supplier_Stop", 1, false, CurUserName))
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "禁用失败!无权限!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                var ds = oCN.RunProcReturn("select * from Gy_Supplier where HItemID=" + HInterID, "Gy_Supplier");
                if (ds.Tables[0].Rows.Count > 0)
                {
                    if (IsStop == 0)  //禁用判断
                    {
                        if (ds.Tables[0].Rows[0]["HStopEmp"].ToString() != "")
                        {
                            objJsonResult.code = "0";
                            objJsonResult.count = 0;
                            objJsonResult.Message = "单据已禁用!不能再次禁用!";
                            objJsonResult.data = null;
                            return objJsonResult;
                        }
                    }
                    if (IsStop == 1) //反禁用判断
                    {
                        if (ds.Tables[0].Rows[0]["HStopEmp"].ToString() == "")
                        {
                            objJsonResult.code = "0";
                            objJsonResult.count = 0;
                            objJsonResult.Message = "单据未禁用!不需要反禁用!";
                            objJsonResult.data = null;
                            return objJsonResult;
                        }
                    }
                }
                else
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "单据不存在!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                oCN.BeginTran();
                if (IsStop == 0)  //禁用判断
                {
                    oCN.RunProc("update Gy_Supplier set HStopEmp='" + CurUserName + "',HStopTime=getdate(),HStopflag=1 where HItemID=" + HInterID);
                    objJsonResult.code = "1";
                    objJsonResult.count = 1;
                    objJsonResult.Message = "禁用成功";
                    objJsonResult.data = null;
                }
                if (IsStop == 1) //反禁用判断
                {
                    oCN.RunProc("update Gy_Supplier set HStopEmp='',HStopTime=null,HStopflag=0 where HItemID=" + HInterID);
                    objJsonResult.code = "1";
                    objJsonResult.count = 1;
                    objJsonResult.Message = "反禁用成功";
                    objJsonResult.data = null;
                }
                oCN.Commit();
                return objJsonResult;
            }
            catch (Exception e)
            {
                oCN.RollBack();
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "禁用失败或者反禁用失败!" + e.ToString();
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        #endregion
        #region [同步基础资料]
        [Route("Gy_Supplier/Gy_SupplierViewApi")]
        [HttpGet]
        public json Gy_SupplierViewApi(string Number, string Type)
        {
            string sql = string.Empty;
            string sReturn = "";
            if (oSystemParameter.ShowBill(ref sReturn) == true)
            {
                //系统参数是否为私有云模式,N为公有云模式,Y为私有云模式
                if (oSystemParameter.omodel.WMS_CloudMode == "Y")
                {
                    #region [私有云模式,直接调用数据库存储过程更新]
                    try
                    {
                        oCN.BeginTran();
                        SQLHelper.ClsCN oCn = new SQLHelper.ClsCN();
                        DataSet DS = oCn.RunProcReturn("exec h_p_WMS_ERPBasicInfoToLocal '" + Number + "','" + Type + "'", "h_p_WMS_ERPBasicInfoToLocal");
                        if (DS == null)
                        {
                            objJsonResult.code = "0";
                            objJsonResult.count = 0;
                            objJsonResult.Message = "基础资料同步失败";
                            objJsonResult.data = null;
                            return objJsonResult;
                        }
                        else
                        {
                            if (DBUtility.ClsPub.isStrNull(DS.Tables[0].Rows[0]["HBack"]) == "2")
                            {
                                objJsonResult.code = "0";
                                objJsonResult.count = 0;
                                objJsonResult.Message = "ERP中不存在该代码";
                                objJsonResult.data = null;
                                return objJsonResult;
                            }
                            else
                            {
                                objJsonResult.code = "1";
                                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
                }
                else
                {
                    #region [公有云模式,调用WEBAPI的方式进行更新]
                    var json = new
                    {
                        CreateOrgId = 0,
                        Number = Number,
                        Id = ""
                    };
                    #region [金蝶部分]
                    //登录金蝶
                    var loginRet = InvokeHelper.Login();
                    var isSuccess = JObject.Parse(loginRet)["LoginResultType"].Value<int>();
                    //判断是否登录成功
                    if (isSuccess < 0)
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = loginRet;
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
                    //查看 获取数据
                    var _result = InvokeHelper.View("BD_Supplier", JsonConvert.SerializeObject(json));
                    var _saveObj = JObject.Parse(_result);
                    //判断数据是否获取成功
                    if (_saveObj["Result"]["ResponseStatus"]["IsSuccess"].ToString().ToUpper() != "TRUE")
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = "金蝶供应商同步失败jsonRoot:" + _result;
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
                    #endregion
                    //获取数据
                    DataSet Ds;
                    Ds = oCN.RunProcReturn("select * from Gy_Supplier where HNumber = '" + Number + "'", "Gy_Supplier");
                    if (Ds.Tables[0].Rows.Count != 0 && ClsPub.isLong(Ds.Tables[0].Rows[0]["HItemID"].ToString()) != 0)
                    {
                    }
                    #region [表数据赋值]
                    var jsonData = new
                    {
                        HItemID = _saveObj["Result"]["Result"]["Id"],
                        HERPItemID = _saveObj["Result"]["Result"]["Id"],
                        HNumber = _saveObj["Result"]["Result"]["Number"],
                        HName         = _saveObj["Result"]["Result"]["Name"][0]["Value"],
                        HShortNumber  = _saveObj["Result"]["Result"]["Number"],
                        HParentID     = 0,
                        HLevel        = 1,
                        HEndFlag      = 1,
                        HStopflag     = _saveObj["Result"]["Result"]["ForbidStatus"].ToString() == "A" ? 0 : 1,
                        HRemark       = "CLD-ERP导入",
                        HUseFlag      = "已使用",
                        HMakeTime     = _saveObj["Result"]["Result"]["CreateDate"],
                        HCREATEORGID  = _saveObj["Result"]["Result"]["CreateOrgId_Id"],
                        HUSEORGID     = _saveObj["Result"]["Result"]["UseOrgId_Id"],
                        HPAYCONDITION = _saveObj["Result"]["Result"]["SupplierFinance"][0]["PayCondition_Id"]
                    };
                    #endregion
                    // 删除主表对应数据
                    sql = $"delete from Gy_Supplier where HItemID = " + jsonData.HItemID + " and HNumber = '" + Number + "'";
                    oCN.RunProc(sql);
                    sql = "set identity_insert Gy_Supplier on";
                    oCN.RunProc(sql);
                    //插入表
                    sql = $@"
                insert into Gy_Supplier
                (HItemID,HERPItemID,HNumber,HName,HShortNumber,HParentID
               ,HLevel,HEndFlag,HStopflag,HRemark,HUseFlag,HMakeTime,HCREATEORGID,HUSEORGID
               ,HPAYCONDITION
                 )
                values
                ({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},{jsonData.HPAYCONDITION})";
                    oCN.RunProc(sql);
                    sql = "set identity_insert Gy_Supplier off";
                    oCN.RunProc(sql);
                    objJsonResult.code = "1";
                    objJsonResult.count = 1;
                    objJsonResult.Message = "供应商同步成功!";
                    objJsonResult.data = null;
                    return objJsonResult;
                    #endregion
                }
            }
            else
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "基础资料读取失败!";
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        #endregion
        #region 根据父id和等级获得树状图递归
        [Route("Gy_BadReason/Gy_SupTypeTreeListByLevel")]
        [HttpGet]
        public object Gy_MaterTypeTreeListByLevel()
        {
            try
            {
                string sql1 = string.Format("select hitemid,hnumber,hname,hparentid,hlevel from Gy_SupType order by hnumber");
                ds = oCN.RunProcReturn(sql1, "Gy_SupType");
                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;
            }
        }
        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);//再次用子集去循环,拿出子集的子集
                }
            }
        }
        #endregion
        #region 物料分类 树形图(根据代码展开树状图)
        public class TreeModel
        {
            public string id { get; set; }
            public string title { get; set; }
            public List<TreeModel> children = new List<TreeModel>();
        }
        /// <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);//再次用子集去循环,拿出子集的子集
                }
            }
        }
        #endregion
    }
}