【WEBAPI】供应商冻结/反冻结自定义接口案例原创
金蝶云社区-王尚策
王尚策
23人赞赏了该文章 366次浏览 未经作者许可,禁止转载编辑于2023年11月01日 13:56:47

【应用场景】

目前供应商的冻结和反冻结操作,是表单插件实现,没有标准对外的接口。这时候想要通过API的方式调用冻结、反冻结操作,需要自行二开自定义接口


【代码案例】

        /// <summary>
        /// 供应商冻结/反冻结
        /// </summary>
        /// <param name="ctx">上下文</param>
        /// <param name="freezeLimit">冻结范围</param>
        /// <param name="freezeStatus">冻结/反冻结状态</param>
        /// <param name="fIds">供应商的FID</param>
public void UpdateFreeze(Context ctx, string freezeLimit, string freezeStatus, string fIds)
        {
            List<SqlParam> paras = new List<SqlParam>();
            List<SqlObject> lstSqlObj = new List<SqlObject>();
            string SQL = string.Format("
Update t_BD_SupplierBusiness SET FFreezeLimit = @FreezeLimit, FBusinessStatus = @FreezeStatus WHERE FSupplierId in ({0})", fIds);

            SqlParam param = new SqlParam("@FreezeLimit", DbType.String, freezeLimit);
            paras.Add(param);
            param = new SqlParam("@FreezeStatus", DbType.String, freezeStatus);
            paras.Add(param);
            lstSqlObj.Add(new SqlObject(SQL, paras));

            if (freezeStatus.EqualsIgnoreCase("A"))//反冻结时清空冻结人和冻结日期
            {
                SQL = string.Format("
 Update t_BD_SupplierBusiness SET FFreezeOperator = @FreezeOperator, FFREEZEDATE = @FreezeDate  WHERE FSupplierId in ({0})", fIds);
                paras = new List<SqlParam>();
                param = new SqlParam("@FreezeOperator", DbType.Int64, 0);
                paras.Add(param);
                param = new SqlParam("@FreezeDate", DbType.DateTime, null);
                paras.Add(param);
                lstSqlObj.Add(new SqlObject(SQL, paras));

            }
            else//冻结时写入冻结人和冻结日期
            {
                SQL = string.Format("
Update t_BD_SupplierBusiness SET FFreezeOperator = @FreezeOperator, FFREEZEDATE = @FreezeDate  WHERE FSupplierId in ({0})", fIds);
                paras = new List<SqlParam>();
                param = new SqlParam("@FreezeOperator", DbType.Int64, ctx.UserId);
                paras.Add(param);
                param = new SqlParam("@FreezeDate", DbType.DateTime, BOS.App.ServiceHelper.GetService<ITimeService>().GetSystemDateTime(ctx));
                paras.Add(param);
                lstSqlObj.Add(new SqlObject(SQL, paras));

            }
            DBUtils.ExecuteBatch(ctx, lstSqlObj);
        }



【注意事项】

<1>冻结、反冻结操作,更新供应商的冻结人(FFreezeOperator)、冻结日期(FreezeDate)、冻结范围(FFreezeLimit)、业务状态(FBusinessStatus)的数据


<2>自定义接口的封装参考:

二开案例.WebApi.从零开发自定义WebApi接口 (kingdee.com)

WebApi自定义接口 (kingdee.com)


<3>相关的枚举信息可在BOS中获取:


赞 23