同步数据到外部系统


以仓库同步到腾一为例:

 

1. 先仓库表添加UD字段,meslog_c,代表是否同步到腾一

2. 查询列表和详情页 添加上这个字段的显示 只读

3. 再接口平台中添加仓库数据推送的接口

控制器 PushDataToTengYiController中添加 Warehse 方法

C# 全选
/// <summary>
/// 推送仓库
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost]
public bool Warehse(List<WarehseInput> input)
{
	var warehseCodes = input.Select(x => x.WarehouseCode).Distinct().ToList();
	var datas = _db.Queryable<Tables.ErpWarehse>().Where(x => warehseCodes.Contains(x.WarehouseCode)).ToList();

	foreach (var item in datas)
	{
		ToTengYiWarehouseModel mod = new ToTengYiWarehouseModel()
		{
			Company = item.Company,
			WarehouseCode = item.WarehouseCode,
			Description = item.Description,
			Plant = item.Plant,
			InActive = item.Inactive
		};
		// 更新同步标记

		var warehseUD = _db.Queryable<Tables.ErpWarehseUD>().Where(w => w.ForeignSysRowID == item.SysRowID).FirstAsync();
		int resutl = _db.Updateable<Tables.ErpWarehseUD>().Where(w => w.ForeignSysRowID == item.SysRowID)
			 .SetColumns(it => new ErpWarehseUD { MesLog_c = true })
			 .ExecuteCommand();
	}

	return true;
}

4. 在适当的函数库中新建一个同步函数。

函数库需要引用 ZAPIServer库

同步数据到外部系统

新建函数 SendWarehouse

参数信息

同步数据到外部系统

内容方法:

C# 全选
var paramData =new {
  warehouseCode= this.warehouseCode
};

var paramJson = System.Text.Json.JsonSerializer.Serialize(new []{ paramData });

var urlPath = $"/api/{this.callContextClient.CurrentCompany}/PushDataToTengYi/Warehse";

var result = this.EfxLib.ZAPIServer.Post(urlPath, paramJson);

this.success = result.success;
this.message = result.message;

5. 添加一个事件 SyncToTengYi

同步数据到外部系统

6. 添加手动同步按钮

Detail中添加同步到腾一按钮

同步数据到外部系统

按钮事件

7. 自动同步

自动同步到腾一逻辑主要通过BPM中来实现,

7.1 新增,修改得时候,要把mes_log设置为false

update方法BPM指令

同步数据到外部系统

代码:

C# 全选
foreach(var row in ds.Warehse) {
    // 新增,修改 滕一同步标记置为false
    if(row.RowMod =="A" || row.RowMod =="U") {
        row["MesLog_c"] = false;
    }
}

7.2 删除时,如果已经同步到腾一,需要先从腾一删除,然后再从epicor中删除,腾一如果删除失败,epicor不允许删除

C# 全选
foreach(var row in ds.Warehse) {
    // 新增,修改 滕一同步标记置为false
    if(row.RowMod =="A" || row.RowMod =="U") {
        row["MesLog_c"] = false;
    }
    if(row.RowMod =="D" && ds.Warehse[0].UDField<System.Boolean>("MesLog_c")==true) {
        
        string functionLibrary =  "ZAPIServer";
        string function =  "Post";
        var paramData =new {
            warehouseCode= row.WarehouseCode
        };
        
        var urlPath = $"/api/{callContextClient.CurrentCompany}/PushDataToTengYi/WarehseDelete";
        string jsonStr = System.Text.Json.JsonSerializer.Serialize(new []{ paramData });
        try{
            var result = (Tuple<System.Boolean, System.String,System.String>)this.InvokeFunction(functionLibrary,function,Tuple.Create(this.ds));
            bool success = result.Item1;
            string message = result.Item2;
            if(!success) {
                throw new Ice.Common.BusinessObjectException(new Ice.Common.BusinessObjectMessage("删除滕一发生错误:"+message){
                    Type=Ice.Common.BusinessObjectMessageType.Error
                });
            }
        } catch(Exception ex){
             throw new Ice.Common.BusinessObjectException(new Ice.Common.BusinessObjectMessage("删除滕一发生错误:"+ex.Message){
                Type=Ice.Common.BusinessObjectMessageType.Error
            });
        }
        // outputStr = result.Item2;   
    }
}

 

 

 

 

 

 

 

 

 

 

版权声明:本文为YES开发框架网发布内容,转载请附上原文出处连接
张国生
上一篇:Epicor BPM中自定义代码弹出错误提醒
下一篇:function函数无法更改原因排查
评论列表

发表评论

评论内容
昵称:
关联文章

同步数据外部系统
.net异步Task转同步
GZDBHelper中Update方法,更新表格数据数据库
C# 从做早餐看同步异步
Exsi迁移pve
Javascript 中通过 yield 和 promise 使异步变同步
客户端发送数据
vscode同步配置时,重新生成 github token 之后,怎样继续下载配置
系统登录后默认显示可视化数据大屏
网站迁移纪实:从Web Form Asp.Net Core (Abp vNext 自定义开发)
PVE复制虚拟机硬盘另一个虚拟机
selenium爬虫被检测 该如何破
EF并发处理,防止并发修改数据
YES-CMS 内容管理系统 快速发布与部署
《步步入门》 .NET 6 部署Linux
数据绑定模式
批量数据快速插入
服务器漏洞数据
ASP.NET Core 标记帮助程序(TagHelper)数据列表支持,循环数据
iNeuOS工业互联网操作系统,矿山动态产量计量系统和铁路车辆识别系统应用场景案例

联系我们
联系电话:15090125178(微信同号)
电子邮箱:garson_zhang@163.com
站长微信二维码
微信二维码