文章目录
金蝶云星空的网络控制设置
说明
网控设置主要用户多个用户操作一个业务单据编号时,对于冲突操作的处理。
例如:销售订单XSDD0066,张三打开将其处于编辑状态,则李四打开只能是查看状态,不能是编辑状态。 或者列表张三在操作某一张的审核(该单数据状态=审核中),则李四在列表不能操作编辑状态,也不能操作撤掉或者审核
网控参数
csharp
public class NetworkCtrl
{
#region <属性>
/// <summary>
/// 网控对象ID
/// </summary>
public string NetCtrlId { get; set; }
/// <summary>
/// 业务对象ID
/// </summary>
public string InterID { get; set; }
/// <summary>
/// 业务操作
/// </summary>
public string OperationDesc { get; set; }
#endregion <属性>
}
加入网络控制
需要参数:网控对象ID、业务对象ID、业务操作
csharp
/// <summary>
/// 手动插入网控数据
/// Krystal 2023-11-03 10:24:32
/// </summary>
/// <param name="ctx">上下文</param>
/// <param name="ncList">需要插入的网控集合</param>
public void BatchStartNetworkCtrl(Context ctx, List<NetworkCtrl> ncList)
{
foreach (var ian in ncList)
{
NetWorkCtrlMonitorInfo mInfo = new NetWorkCtrlMonitorInfo();
mInfo.Id = SequentialGuid.NewGuid().ToString();//网控主键
mInfo.NetCtrlType = NetworkCtrlType.BusinessObjOperateMutex;
mInfo.OrgID = ((ctx.CurrentOrganizationInfo == null) ? 1 : ctx.CurrentOrganizationInfo.ID);//执行组织ID
mInfo.StartMenID = Convert.ToInt32(ctx.UserId);//启动人
mInfo.ComputerName = ctx.ComputerName;//登录电脑名称
mInfo.IP = ctx.IpAddress;//登录IP
mInfo.NetCtrlId = ian.NetCtrlId;//网控对象ID
mInfo.OperationDesc = ian.OperationDesc;//业务操作
mInfo.InterID = ian.InterID;//业务对象ID,比如单据的内码
mInfo.Token = ctx.ContextId;//上下文ID
SaleServiceHelper.StartNetworkCtrl(ctx, mInfo);// Kingdee.K3.SCM.ServiceHelper
}
}
清除网络控制
需要参数:网控对象ID、业务对象ID
清除网络控制(单个)
csharp
/// <summary>
/// 清除网络控制(单个)
/// </summary>
/// <param name="ctx">上下文</param>
/// <param name="FNetCtrlID">网控对象ID</param>
/// <param name="FinterID">业务对象ID,比如单据的内码</param>
/// <returns>返回执行成功的条数</returns>
public int ClearNetworkCtrl(Context ctx, string FNetCtrlID, long FinterID)
{
string strSQL = string.Format(@"{0}DELETE T_BAS_NETWORKCTRLRECORDS WHERE FNETCTRLID = '{1}' AND FINTERID ={2}; "
,OtherConst.DIALECT, FNetCtrlID, FinterID);
return DBUtils.Execute(ctx, strSQL);
}
清除网络控制(批量)
csharp
/// <summary>
/// 清除网络控制(批量)
/// </summary>
/// <param name="ctx">上下文</param>
/// <param name="FNetCtrlID">网控对象ID</param>
/// <param name="FinterID">业务对象ID,比如单据的内码【集合】</param>
/// <returns>返回执行成功的条数</returns>
public int ClearNetworkCtrl(Context ctx, string FNetCtrlID, List<long> FinterID)
{
string strSQL = string.Format(@"{0}DELETE T_BAS_NETWORKCTRLRECORDS WHERE FNETCTRLID = '{1}' AND FINTERID in ({2}); "
, OtherConst.DIALECT, FNetCtrlID, string.Join(",", FinterID));
return DBUtils.Execute(ctx, strSQL);
}
清除网络控制(批量,参数是拼接好的业务对象)
csharp
/// <summary>
/// 清除网络控制(批量,参数是拼接好的业务对象)
/// </summary>
/// <param name="ctx">上下文</param>
/// <param name="FNetCtrlID">网控对象ID</param>
/// <param name="FinterID">业务对象ID,比如单据的内码【拼接好的字符串】</param>
/// <returns>返回执行成功的条数</returns>
public int ClearNetworkCtrl(Context ctx, string FNetCtrlID, string FinterID)
{
string strSQL = string.Format(@"{0}DELETE T_BAS_NETWORKCTRLRECORDS WHERE FNETCTRLID = '{1}' AND FINTERID in ({2}); "
, OtherConst.DIALECT, FNetCtrlID, FinterID);
return DBUtils.Execute(ctx, strSQL);
}