当前位置: 首页> 科技> 名企 > 金蝶云星空解锁时同时解锁序列号

金蝶云星空解锁时同时解锁序列号

时间:2025/7/10 17:47:44来源:https://blog.csdn.net/qq_33881408/article/details/141324994 浏览次数:0次

文章目录

  • 金蝶云星空解锁时同时解锁序列号
    • 业务背景
    • 系统现状
    • 方案设计
    • 详细设计
      • 解锁操作-扩展
      • 创建表单插件实现解锁逻辑
    • 测试

金蝶云星空解锁时同时解锁序列号

业务背景

公司业务要求,如果检查发现序列号有问题,先锁库不允许出库。前置任务
如果已经锁库,此时序列号允许出库,则可以解锁。

系统现状

即时库存锁库,锁定的是数量,库存-锁库数=可用数,当可用量小于等于0就不可以再出库了。
如果想要控制锁到序列号,系统就不支持了。

方案设计

锁库时同时锁定库存和根据输入的序列号锁定序列号,解锁的时候,同时解锁库存和根据输入的序列号进行解锁。

详细设计

解锁操作-扩展

添加页签控件,将原来的解锁信息放到第一个页签,第二个页签添加一个单据体,单据体增加一个基础资料,绑定序列号主档。

在这里插入图片描述

在这里插入图片描述
菜单项,添加按钮,按序列号解锁
在这里插入图片描述

创建表单插件实现解锁逻辑

找到表单插件,新建插件,继承它。在这里插入图片描述

创建类UnLockOperateBySerialExtend,继承UnLockStockOperate。
实现:
解锁数量不能大于锁库数;
解锁数=序列号个数;
序列号必须在当前即时库存里且在序列号主档标记锁定;
释放库存和清空锁定标记必须一起成功。


using Kingdee.BOS;
using Kingdee.BOS.App.Data;
using Kingdee.BOS.Core;
using Kingdee.BOS.Core.DynamicForm;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Core.Metadata.EntityElement;
using Kingdee.BOS.Core.Metadata.FieldElement;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.Resource;
using Kingdee.BOS.Util;
using Kingdee.K3.Core.SCM.STK;
using Kingdee.K3.SCM.ServiceHelper;
using Kingdee.K3.SCM.Stock.Business.PlugIn;
using Krystal.K3Cloud.Core.Const;
using Krystal.K3Cloud.Core.Model.STK;
using Krystal.K3Cloud.Core.Util;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Transactions;namespace Krystal.K3.SCM.Business.PlugIn.STK.DynamicForm
{/// <summary>/// 功能描述    :UnLockOperateBySerialExtend  /// 创 建 者    :Administrator/// 创建日期    :2024/8/14 15:46:46 /// 最后修改者  :Krystal/// 最后修改日期:2024/8/14 15:46:46 /// </summary>[Description("即时库存解锁操作插件--二开继承"), HotUpdate]public class UnLockOperateBySerialExtend: UnLockStockOperate{#region <常量>/// <summary>/// 操作类型:StockLock-库存锁库,Inv-即时库存,SaleOrder-销售订单 StockLockLog-库存日志解锁/// </summary>private string opType = "Inv";#endregion <常量>#region <变量>/// <summary>/// 标示是否关闭界面/// </summary>private bool IsClose;#endregion <变量>#region <方法>/// <summary>/// 获得动态对象的值,优先返回MasterId/// </summary>/// <param name="obj"></param>/// <returns></returns>private long GetDynamicValue(DynamicObject obj){if (obj == null){return 0L;}if (obj.DynamicObjectType.Properties.ContainsKey(FormConst.MASTER_ID)){return Convert.ToInt64(obj[FormConst.MASTER_ID]);}if (obj.DynamicObjectType.Properties.ContainsKey("Id")){return Convert.ToInt64(obj["Id"]);}return 0L;}/// <summary>/// 校验序列号是否在库,且未锁定/// </summary>/// <param name="objList"></param>/// <param name="invId"></param>/// <returns></returns>private bool CheckSerial(List<DynamicObject> objList, string invId, out string serialMsg){bool isSucceed = true;serialMsg = string.Empty;//序列号物料编码,在库状态List<SqlParam> para = new List<SqlParam>(){//new SqlParam("@STOCKID", KDDbType.Int32,493513),new SqlParam("@InvId", KDDbType.String,invId),new SqlParam("@IsLock", KDDbType.Int32,1),//new SqlParam("@ENDTIME",KDDbType.String,_filterArgs.EndTime.ToString("yyyy-MM-dd")),//new SqlParam("@t",KDDbType.String,temp_detail)};//执行sql语句并将结果集填充至DataSet  XXXX_PR_STK_SerialInfoByInvId未使用DataSet getSerial = DBUtils.ExecuteDataSet(this.Context, System.Data.CommandType.StoredProcedure, string.Format(@"{0}XXXX_PR_STK_SerialInfoByInvId", OtherConst.DIALECT), para);//调用上面的将DataSet转换为List<Menu>实体集合List<SerialMainFile> serialListInStock = (List<SerialMainFile>)KrystalCommonUtil.DataSetToList<SerialMainFile>(getSerial, 0);if (serialListInStock == null || serialListInStock.Count <= 0){isSucceed = false;}//LINQ两个集合关联,左集合在右边找不到,则为空,找出为空的数据提示出来//使用查询语句var list = from left in objListjoin right in serialListInStock on left["F_XXXX_SerialId_Id"] + "" equals right.FSERIALID + "" into tempselect new{serialId = left["F_XXXX_SerialId_Id"] + "",serialNumber = (left["F_XXXX_SerialId"] as DynamicObject)["Number"] + "",serialNo = temp.Select(t => t.FSERIALNO).FirstOrDefault()};var isEmpty = list.Where(s => s.serialNo.IsNullOrEmptyOrWhiteSpace()).ToList(
关键字:金蝶云星空解锁时同时解锁序列号

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: