采购订单BE插件开发

最近我们公司要做采购订单审批和OA的集成,也就是把u9的审批流程搬到OA里去做。当业务员点击标准采购提交按钮的时候,把采购订单的信息触发到OA流程,在OA里做审核,OA审核完成之后,再把审核结果回写到U9。

要实现这个功能需要用到BE插件和BP插件。

BE插件负责在业务员提交审核的时候,把采购订单的信息写到中间表里,然后再触发OA流程。

BP插件负责定时查询中间表,把审核结果写回到u9系统。

这里我讲解下BE插件的开发流程。

BE的大概开发步骤:

生成项目代码

1.打开u9的插件工具

这个工具做U9开发的同学应该都有(没有的同学请关注公众号“编程我也会”,然后输入“插件”即可获得)。

2.选择工具-配置,填好配置信息


u9环境配置参数如下:
系统引用库:D:\yonyou\UBFV60\U9.VOB.Product.UBF\UBFStudio\Runtime
界面路径:D:\yonyou\U9V60\Portal\UILib
应用组件运行库路径:D:\yonyou\U9V60\Portal\ApplicationServer\Libs
Portal路径:D:\yonyou\U9V60\Portal
UI元数据库路径:D:\yonyou\UBFV60\U9.VOB.Product.Metadata\UI

把D:\yonyou替换成你本地的u9安装路径就行了。

3.点击文件-新建,新建一个解决方案

4.修改项目名称

5.右键解决方案-新建项目


填上名称、命名空间、程序集,类型选择BE。

6.右键项目-添加事件集

由于我做的是标准采购的插件,在插件模块中选择“供应链-采购管理”,然后搜索“采购”,选择“采购订单”,点确定按钮。

然后右键PurchaseOrder,选择添加事件:

选择Updating事件:

点击生成按钮,生成项目代码:

在右下角的消息记录中,可以看到工具生成的项目路径。

编写代码

打开生成的项目,点击显示所有文件按钮,显示被隐藏的sub.xml文件。

修改sub.xml文件

在文件“UFIDA.U9.Cust.Canaan.PurchaseOrderPlugBE.sub.xml”上右键,选择包括在项目中,双击打开文件,修改文件内容:

<?xml version="1.0" encoding="utf-16"?>
<pub-sub><subcription event="UFIDA.U9.PM.PO.PurchaseOrder.Updating"><subscriber type="UFIDA.U9.Cust.Canaan.PurchaseOrderPlugBE.Updating,UFIDA.U9.Cust.Canaan.PurchaseOrderPlugBE.dll" /></subcription>
</pub-sub>

添加引用:

把一些必要的dll文件添加进项目。

编码

我们的代码就写在UpdatingExtend.cs中。


代码如下:

namespace UFIDA.U9.Cust.Canaan.PurchaseOrderPlugBE
{using System;using System.Data;using System.Collections.Generic;using System.Text;using UFIDA.U9.Base;using UFIDA.U9.Base.UserRole;using UFSoft.UBF.Business;using UFSoft.UBF.Util.DataAccess;public partial class Updating{private void Do_Notify(object[] args){#region 从事件参数中取得当前业务实体                                                    if (args == null || args.Length == 0 || !(args[0] is UFSoft.UBF.Business.EntityEvent))return;                                                                           BusinessEntity.EntityKey key = ((UFSoft.UBF.Business.EntityEvent)args[0]).EntityKey;  if (key == null)                                                                      return;                                                                           UFIDA.U9.PM.PO.PurchaseOrder PurchaseOrderBe = key.GetEntity() as UFIDA.U9.PM.PO.PurchaseOrder;                                      if (PurchaseOrderBe == null)                                                                   return;#endregion// 如果审核状态为核准中,插入数据到中间表Canaan_PurchaseOrder_Middle,触发OA审核流程if (PurchaseOrderBe.Status.Value == 1){String userID = Context.LoginUserID;String userWorkCode = "";User user = User.Finder.FindByID(userID);if (user != null){//获取工号userWorkCode = user.Code;}DataSet ds;DataParamList paras = new DataParamList();StringBuilder sql = new StringBuilder();sql.Append("select * from Canaan_PurchaseOrder_Middle where PRID = " + PurchaseOrderBe.ID);DataAccessor.RunSQL(UFSoft.UBF.Util.DataAccess.DataAccessor.GetConn(), sql.ToString(), paras, out ds);if (ds != null){if (ds.Tables.Count > 0){// 如果中间表已经存在改单据就不插入了if (ds.Tables[0].Rows.Count == 0){//供应商名称string supplierName = PurchaseOrderBe.Supplier.Supplier.Name;//供应商联系人string supplierContact = PurchaseOrderBe.Supplier.Supplier.DescFlexField.PrivateDescSeg7;//供应商联系人电话string supplierContactTel = PurchaseOrderBe.Supplier.Supplier.DescFlexField.PrivateDescSeg10;sql.Clear();sql.Append("insert into Canaan_PurchaseOrder_Middle(PRID,DocNo,CreatedOn,supplier_name,supplier_contact,supplier_contact_tel,state,memo,create_by,create_time,ry) values(" +PurchaseOrderBe.ID + ",'" + PurchaseOrderBe.DocNo + "','" + PurchaseOrderBe.CreatedOn + "','" + supplierName + "','" + supplierContact + "','" + supplierContactTel + "',0,'" + "','待同步','sys',GETDATE(),'" + userWorkCode + "')");DataAccessor.RunSQL(UFSoft.UBF.Util.DataAccess.DataAccessor.GetConn(), sql.ToString(), paras, out ds);}}}}}}
}

编译和复制

编译完整个项目之后,需要复制文件到对应的文件夹下:

1.复制UFIDA.U9.Cust.Canaan.PurchaseOrderPlugBE.dll 和 UFIDA.U9.Cust.Canaan.PurchaseOrderPlugBE.pdb 文件到U9V60\Portal\ApplicationServer\Libs目录下:

2.复制UFIDA.U9.Cust.Canaan.PurchaseOrderPlugBE.sub.xml文件到\U9V60\Portal\bin目录下:

然后在cmd中运行 iisreset ,重启iis服务器,就可以运行插件了。

调试

如果需要调试的话,下完断点之后,选择调试-附加到进程。

搜索w3,附加w3wp.exe进程。

附加完进程之后就可以调试啦。

测试没问题之后就可以制作补丁,发布啦。

最后

这就是BE开发的整个过程,没什么难度,只是过程比较繁琐,网上u9二开的资料也比较少,仅仅做个记录,以备查看。

U9二次开发之BE插件开发相关推荐

  1. U9二次开发之BP定时任务插件开发

    采购订单BP定时任务插件开发 最近我们公司要做采购订单审批和OA的集成,也就是把u9的审批流程搬到OA里去做.当业务员点击标准采购提交按钮的时候,把采购订单的信息触发到OA流程,在OA里做审核,OA审 ...

  2. Datax 插件二次开发之parquet日志问题处理

    Datax 插件二次开发之parquet日志问题处理 Date: December 31, 2021 参考文档: https://blog.csdn.net/wuleidaren/article/de ...

  3. C#进行Visio二次开发之Shape的Data1、Data2、Data3的用处

    我们知道,Visio的Shape对象有有3个比较特别的属性,分别是Data1.Data2.Data3,平常我们很少用到它,因为我们如果需要属性的话,可能会通过ShapeSheet的Customed P ...

  4. C#进行Visio二次开发之Web查看Visio图纸

    前面介绍的Visio开发知识,都是基于Winform的Visio的开发知识,图纸的展示都是基于Winform方式展示的.但很多时候,如果能够通过Web方式可以查看最新的图纸信息,那么系统将更加趋向完美 ...

  5. C#进行MapX二次开发之MapX基础知识

    C#进行MapX二次开发之MapX基础知识 MapX的主要技术特点 (1). 以表(Table)的形式组织信息 每一个表都是一组MapInfo文件,这些文件组成了地图文件和数据库文件.为使用MapIn ...

  6. Vissim11二次开发之C#---实现仿真时间内实施不同信号控制方案

    Vissim11二次开发之C#-实现仿真时间内实施不同信号控制方案 本文起源:近些日子,由于论文仿真需求,重重重操Vissim旧业. 先说下需求情况吧:路网区域优化前后两种信号控制方案,由于论文场景要 ...

  7. AutoCAD .Net二次开发之Editor选择集

    AutoCAD .Net二次开发之Editor选择集 PickFirst选择集 一般选择集 选择集过滤SelectionFilter Editor的路径: Autodesk.AutoCAD.Appli ...

  8. Revit二次开发之DMU

    Revit二次开发之DMU   Revit是一款三维联动的设计软件,一处修改处处修改, 比如,在三维视图修改了墙的位置,二维视图上墙的位置也跟着变化了,同时,墙上的门窗也会跟着移动. 这种联动关系是R ...

  9. AutoCAD .Net二次开发之JIG动态绘制详解

    AutoCAD .Net二次开发之JIG动态绘制详解 AutoCAD平台动态绘制分两种,单实体绘制EntityJig和多实体绘制DrawJig,需要自己自定义类去继承.(本人的理解全放在了代码注释中, ...

最新文章

  1. 【Linux】一步一步学Linux——dnsdomainname命令(174)
  2. 迪普交换机清空配置_交换机环路详解
  3. 2014.9.13模拟赛【数位和乘积】
  4. 无忧计算机二级试题题库,全国计算机二级MS Office试题
  5. Linux中brk()系统调用,sbrk(),mmap(),malloc(),calloc()的异同【转】
  6. 关于IE8以上 不引人css 症状
  7. vnpy软件架构分析
  8. eslint配置文件解析
  9. FastqC结果简介
  10. 衡量一个社交类APP的指标有哪些
  11. 美团3.12笔试题解
  12. Windows电脑开机蓝屏(1)
  13. 组织效能及人均效能指标大全和计算方法
  14. vue3【列表渲染】v-for 详细介绍(vue中的“循环”)
  15. python爬虫企业数据_python爬取企业名录并入库
  16. linux跑wrf.exe程序的前提,WRF模式上机手册
  17. golang小案例 —— 剪子剪子包袱锤小游戏
  18. 稀奇!20多年前的硬盘拆解(附高清图)
  19. 亿网文交孟建州,分享代码里有意思的事
  20. Android Studio不识别新安装的字体

热门文章

  1. linux shell脚本攻略 第五章 一团乱麻(web处理) wget curl
  2. 解决win10系统中截图异常放大的问题 window10-win10 截图放大-缩放-问题解决办法
  3. 达立易考教育2023年全真模拟考试盛大开考,是骡子是马溜溜
  4. C Primer Plus (第五版)中文版——第 10 章 数组和指针
  5. mysql找不到my.ini的解决方法
  6. AttributeError: module 'easygui' has no attribute 'msgbox'错误
  7. 6月书讯:最受欢迎的SQL入门书重磅升级
  8. 服务器不稳定补偿,部分服务器网络波动及中都临时维护补偿
  9. 必备知识:关于曲线的一、二、三阶导的总结
  10. 移动端组件库ThorUI正确引入小程序方式