目标对象分录实体构造问题
金蝶云社区-刘凤勇
刘凤勇
0人赞赏了该文章 1603次浏览 未经作者许可,禁止转载编辑于2015年07月27日 11:00:32

本功能的目的是将自定义的“CRM客户信息”转换为“系统客户信息”的转换过程中出现异常,红色部分为异常代码,请各位大神给予指导。具体代码如下:
using System;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Kingdee.BOS.Core.Metadata;
using Kingdee.BOS.ServiceHelper;
using System.Collections.Generic;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.Core.DynamicForm.PlugIn;
/// 注意命名空间的命名规则
namespace GSTF.K3.CD.Business.PlugIn.crm.customer.service {
///


/// CRM客户信息转交易客户业务逻辑层实现类


/// 作者:刘凤勇 日期:2015-07-16

/// 版本:K3 CLOUD 5.0_134.0.10

///


public class RelatedCustomerServicePlugin : AbstractOperationServicePlugIn {
///
/// 添加自定义数据校验器


///


/// 事件对象
public override void OnAddValidators(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.AddValidatorsEventArgs e) {
base.OnAddValidators(e);
}
///
/// 定制加载指定字段到实体里


///


/// 事件对象
public override void OnPreparePropertys(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.PreparePropertysEventArgs e) {
base.OnPreparePropertys(e);
e.FieldKeys.Add("FCountry");
e.FieldKeys.Add("FUseOrgId");
e.FieldKeys.Add("FProvincial");
e.FieldKeys.Add("FCreateOrgId");
e.FieldKeys.Add("FMailingAddress");
e.FieldKeys.Add("FCreatorId");
e.FieldKeys.Add("FZip");
e.FieldKeys.Add("FWebSite");
e.FieldKeys.Add("FCmpTelNo");
e.FieldKeys.Add("FFaxNo");
e.FieldKeys.Add("FName");
e.FieldKeys.Add("FDescription");
e.FieldKeys.Add("FCompanyScale");
e.FieldKeys.Add("FContact");
}
///
/// 保存操作事务结束执行监听函数,该函数在数据库操作事务内进行


///


/// 事件对象
public override void EndOperationTransaction(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.EndOperationTransactionArgs e) {
base.EndOperationTransaction(e);
}
///
/// 保存操作事务开始执行监听函数,该函数在数据库操作事务内进行


///


/// 事件对象
public override void BeginOperationTransaction(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.BeginOperationTransactionArgs e) {
base.BeginOperationTransaction(e);
// 获取表单信息并进行转换
DynamicObject[] records = e.DataEntitys;
if (records != null && records.Count() > 0) {
FormMetadata metadata = (FormMetadata)MetaDataServiceHelper.Load(this.Context, "BD_Customer", true);
// 声明客户对象
DynamicObject customer = null;
foreach(DynamicObject record in records) {
customer = new DynamicObject(metadata.BusinessInfo.GetDynamicObjectType());
// 使用组织
customer["UseOrgId_Id"] = record["UseOrgId_Id"];
// 创建组织
customer["CreateOrgId_Id"] = record["CreateOrgId_Id"];
// 客户名称
customer["Name"] = record["Name"];
// 国家
customer["COUNTRY_Id"] = record["country_Id"];
// 地区
customer["PROVINCIAL_Id"] = record["provincial_Id"];
// 通讯地址
customer["ADDRESS"] = record["mailingAddress"];
// 客户编码
customer["Number"] = record["Number"];
// 邮政编码
customer["FZIP"] = record["zip"];
// 公司网址
customer["WEBSITE"] = record["webSite"];
// 联系电话
customer["TEL"] = record["CmpTelNo"];
// 传真
customer["FAX"] = record["faxNo"];
// 创建者
customer["CreatorId_Id"] = record["CreatorId_Id"];
// 创建时间
customer["CreateDate"] = DateTime.Now;
// 单据状态
customer["DocumentStatus"] = "Z";
// 禁用状态
customer["ForbidStatus"] = "A";
// 是否交易客户
customer["IsTrade"] = true;
// 备注
customer["Description"] = record["Description"];
// 公司规模
customer["CompanyScale_Id"] = record["companyScale_Id"];
// 处理联系人分录
DynamicObjectCollection srcEntrys = record["contactDetailEntry"] as DynamicObjectCollection;
if (srcEntrys != null && srcEntrys.Count() > 0) {
DynamicObjectCollection destEntrys = customer["BD_CUSTLOCATION"] as DynamicObjectCollection;
FormMetadata destMetadata = (FormMetadata)MetaDataServiceHelper.Load(this.Context, metadata.BusinessInfo.Entrys[1].Id, true);
// 声明联系人对象
DynamicObject contactEntry = null;
foreach (DynamicObject entity in srcEntrys) {
contactEntry = new DynamicObject(destMetadata.BusinessInfo.GetDynamicObjectType());
// 传真
contactEntry["FAX"] = entity["faxTel"];
// E-MAIL
contactEntry["EMail"] = entity["email"];
// 职务
contactEntry["Job"] = entity["position"];
// 姓名
contactEntry["CONTACT"] = entity["contact"];
// 固定电话
contactEntry["OFFICEPHONE"] = entity["officeTelNo"];
// 移动电话
contactEntry["MOBILEPHONE"] = entity["mobileTelNo"];
// 增加分录
destEntrys.Add(contactEntry);
}
}
// 执行数据对象保存
Kingdee.BOS.ServiceHelper.BusinessDataServiceHelper.Save(this.Context, customer);
}
}
}
///
/// 保存操作事务后监听函数


///


/// 事件对象
public override void AfterExecuteOperationTransaction(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.AfterExecuteOperationTransaction e) {
base.AfterExecuteOperationTransaction(e);
}

///


/// 保存操作事务前监听函数


///


/// 事件对象
public override void BeforeExecuteOperationTransaction(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.BeforeExecuteOperationTransaction e) {
base.BeforeExecuteOperationTransaction(e);
}
}
}