电脑桌面
添加蚂蚁七词文库到电脑桌面
安装后可以在桌面快捷访问

针对星空PLM二开实现CAD文档导入时对CAD数据模型进行校验

来源:金蝶云社区作者:金蝶2024-09-2324

针对星空PLM二开实现CAD文档导入时对CAD数据模型进行校验

【应用场景】

二开实现CAD文档导入阶段对CAD数据模型进行检验

针对CAD检入时的二开校验请参考:

https://vip.kingdee.com/article/398760024484581632


【注意事项】

二开的插件需要继承标准功能插件,重写标准功能方法。视二开业务复杂度存在影响CAD导入界面加载速度的情况

本文基于以下版本代码进行整理:

K3Cloud V8.0(12号补丁)

补丁编号:PT-146930 [8.1.0.20221110]

发布时间:2022/11/10


【案例演示】


【实现步骤】

<1>创建.Net 4.0类库项目编写插件,项目需引用以下组件:

Kingdee.BOS.Core.dll 

Kingdee.BOS.DataEntity.dll 

Kingdee.K3.PLM.Business.PlugIn.dll 

Kingdee.K3.PLM.Common.Cad.dll 

Kingdee.K3.PLM.Common.Core.dll 

Kingdee.K3.PLM.STD.Business.PlugIn.dll 

Kingdee.K3.PLM.STD.Common.BusinessEntity.dll


继承CADImportForm类。这个类是标准产品中实现CAD导入的基础类,从中获取到反序列化后的Cad数据结构对象_cadDataModel。以及校验实体对象 _validateSubjects


二开需求的实现参考方案如下:

重写CreateTree方法,在CreateTree方法中对数据模型进行校验。

同时缓存校验结果,并重写AfterBarItemClick事件,对导入按钮tbUpLoadFile的实现进行干预。

复用CreateTree方法中缓存下来的校验结果,如果存在校验不通过的情况,则提示出来。否则执行标准事件方法


参考下图

参考代码如下:

namespace PLM.CAD.Plugin
{
    [Description("测试CAD导入动态表单二开")]
    public class CADImportFormBefore : CADImportForm
    {

        /// <summary>
        /// 重写CreateTree方法,在界面加载过程中对数据进行二开校验
        /// </summary>
        /// <param name="ctlData"></param>
        /// <param name="progress"></param>
        public override void CreateTree(CADUserControlData ctlData, Action<CallProgress> progress)
        {
            base.CreateTree(ctlData, progress);
            Validate(PLMContext, _cadDataModel,ref _validateSubjects, ctlData);//校验数据,将全局变量 _cadDataModel,_validateSubjects作为参数传入
            RenderErrorDataStateColumn(PLMView, _validateSubjects, MainEntity, StateColumnName, "CadId", ref _rowStateRecord);//展示渲染
        }


        protected List<CadValidateSubject> ErrValidSubjectsCache = new List<CadValidateSubject>();//校验结果缓存,用以将校验结果在上传时复用
        /// <summary>
        /// 业务校验方法,根据业务需要实现,示例代码仅供参考
        /// </summary>
        /// <param name="ctx"></param>
        /// <param name="cadDataModel">Cad数据模型</param>
        /// <param name="validateSubjects">校验对象</param>
        /// <param name="ctlData">界面控制信息</param>
        protected void Validate(PLMContext ctx, CadDataModel cadDataModel, ref List<CadValidateSubject> validateSubjects, CADUserControlData ctlData)
        {
            var dataStructs = cadDataModel.CadDataStructs;
            for (int i = 0; i < dataStructs.Count; i++)
            {
                if (i == 1)
 

针对星空PLM二开实现CAD文档导入时对CAD数据模型进行校验

【应用场景】二开实现CAD文档导入阶段对CAD数据模型进行检验针对CAD检入时的二开校验请参考:https://vip.kingdee.com/article/39876002448...
点击下载文档文档为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

已经是第一篇
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息
QQ群
  • 答案:my7c点击这里加入QQ群
支持邮箱
微信
  • 微信