public static string GetFilterString(this FilterScheme scheme, Context ctx, FormMetadata metadata) { if (scheme.Scheme.IsNullOrEmptyOrWhiteSpace()) { return(string.Empty); } //字段比较条件元数据。 var filterMetadata = FormMetaDataCache.GetCachedFilterMetaData(ctx); //过滤模型:解析过滤方案 ListFilterModel filterModel = new ListFilterModel(); filterModel.FilterObject.FilterMetaData = filterMetadata; filterModel.SetContext(ctx, metadata.BusinessInfo, metadata.BusinessInfo.GetForm().GetFormServiceProvider()); filterModel.InitFieldList(metadata, null); //把过滤方案的XML内容,反序列化为对象 DcxmlSerializer dcxmlSerializer = new DcxmlSerializer(new PreInsertDataDcxmlBinder()); SchemeEntity schemeEntity = dcxmlSerializer.DeserializeFromString(scheme.Scheme) as SchemeEntity; //利用ListFilterModel, 翻译过滤条件 filterModel.FilterObject.Setting = schemeEntity.FilterSetting; string statement = filterModel.FilterObject.GetFilterSQLString(ctx, TimeServiceHelper.GetSystemDateTime(ctx)); return(statement); } //end metthod
private QueryBuilderParemeter GetQBPara(CheckPara para, string formKey) { FormMetadata formMetadata = FormMetaDataCache.GetCachedFormMetaData(this.Context, formKey); QueryBuilderParemeter qbPara = new QueryBuilderParemeter(); qbPara.FormId = formKey; if (formKey == "STK_TransferDirect") { qbPara.FilterClauseWihtKey = string.Format(" FJNUnitEnzymes <> {0} And FSTOCKORGID ={1} And {2} = {3} And {4}={5} And {6} = '{7}' ", para.unitEnzymes, para.orgId, matFldKey, para.matId, "FAuxPropId", para.auxPropId, "FLot.FNumber", para.lotNumber); } else { qbPara.FilterClauseWihtKey = string.Format(" FJNUnitEnzymes <> {0} And {1} ={2} And {3} = {4} And {5}={6} And {7} = '{8}' ", para.unitEnzymes, formMetadata.BusinessInfo.MainOrgField.FieldName, para.orgId, matFldKey, para.matId, "FAuxPropId", para.auxPropId, "FLot.FNumber", para.lotNumber); } if (para.currFormKey.EqualsIgnoreCase(formKey)) { qbPara.FilterClauseWihtKey += string.Format(" And {0} <> {1} ", para.currEnFldName, para.currentEntryId); } qbPara.SelectItems = SelectorItemInfo.CreateItems("FBillNo,FMaterialId.FNumber as FMatNumber,FMaterialId.FName as FMatName,FJNUnitEnzymes"); return(qbPara); }
}//end static method public static Context CreateInstanceFromCache(this Context ctx, string dataCenterId, long userId) { Context contextByDataCenterId = DataCenterService.GetDataCenterContextFromCache(dataCenterId); //处理用户登录名 { FormMetadata metadata = FormMetaDataCache.GetCachedFormMetaData(contextByDataCenterId, FormIdConst.SEC_User); BusinessInfo businessInfo = metadata.BusinessInfo.GetSubBusinessInfo(new List <string> { "FNumber", "FUserAccount", "FName" }); DynamicObject dataObject = BusinessDataServiceHelper.LoadFromCache(contextByDataCenterId, new object[] { userId }, businessInfo.GetDynamicObjectType()).FirstOrDefault(); contextByDataCenterId.UserId = dataObject.PkId <long>(); if (businessInfo.GetField("FNumber") != null) { contextByDataCenterId.LoginName = dataObject.FieldProperty <string>(businessInfo.GetField("FNumber")); } if (businessInfo.GetField("FUserAccount") != null) { contextByDataCenterId.LoginName = dataObject.FieldProperty <string>(businessInfo.GetField("FUserAccount")); } contextByDataCenterId.UserName = dataObject.FieldProperty <string>(businessInfo.GetField("FName")); } return(contextByDataCenterId); }//end static method
public override void AfterExecuteOperationTransaction(AfterExecuteOperationTransaction e) { var viewService = ServiceHelper.GetService <IViewService>(); var saveService = ServiceHelper.GetService <ISaveService>(); var mirrorField = this.BusinessInfo.GetField("FMirrorId").AsType <BaseDataField>(); var supMetadata = FormMetaDataCache.GetCachedFormMetaData(this.Context, mirrorField.LookUpObject.FormId); var supBusinessInfo = supMetadata.BusinessInfo.GetSubBusinessInfo("FPHMXContactId"); var supField = supBusinessInfo.GetField("FPHMXContactId").AsType <BaseDataField>(); //获取物料数据包。 var dataEntities = e.SelectedRows.Select(data => data.DataEntity) .Where(data => data.FieldProperty <DynamicObject>(mirrorField) != null) .Where(data => !data.PkId <string>().IsNullOrEmptyOrWhiteSpace()) .Where(data => !data.PkId <string>().EqualsIgnoreCase(data.FieldProperty <DynamicObject>(mirrorField).FieldRefProperty <DynamicObject>(mirrorField, "FPHMXContactId").PkId <string>())) .Select(data => { var sup = data.FieldProperty <DynamicObject>(mirrorField); supField.RefIDDynamicProperty.SetValue(sup, data.PkId <string>()); //先把对应的主键赋值过去。 return(sup); }).ToArray(); if (!dataEntities.Any()) { return; } //获取分配的数据包 var masterIds = dataEntities.Select(data => data.MasterId()).Distinct().ToList(); if (!masterIds.Any()) { masterIds.Add(0); } var para = new QueryBuilderParemeter(); para.FormId = mirrorField.LookUpObject.FormId; para.FilterClauseWihtKey = "FMasterId in (Select FID From TABLE(fn_StrSplit(@MasterIds,',',1))) and FSUPPLIERID <> FMasterId"; para.SqlParams.Add(new SqlParam("@MasterIds", KDDbType.udt_inttable, masterIds)); var allocateEntities = viewService.LoadFromCache(this.Context, mirrorField.RefFormDynamicObjectType, para); //为分配的数据包关联赋值。 dataEntities.Join(allocateEntities, left => left.MasterId <int>(), right => right.MasterId <int>(), (left, right) => { supField.RefIDDynamicProperty.SetValue(right, left.FieldRefIdProperty <string>(supField)); return(right); }).ToArray(); //合并两个数据包,再补充里面字段数据包并无事务保存。 var merge = dataEntities.Concat(allocateEntities).ToArray(); if (merge.Any()) { saveService.Save(this.Context, merge); } base.AfterExecuteOperationTransaction(e); } //end method
public override void AfterExecuteOperationTransaction(AfterExecuteOperationTransaction e) { base.AfterExecuteOperationTransaction(e); if (!e.DataEntitys.Any()) { return; } var metas = this.FormOperation.AppBusinessService.Where(item => item.IsEnabled) .Where(item => !item.IsForbidden) .Where(item => item is AutoPushBusinessServiceMeta) .Cast <AutoPushBusinessServiceMeta>() .Where(item => item.RealSourceFormId.EqualsIgnoreCase(this.BusinessInfo.GetForm().Id)) .Where(item => item.TargetFormId.EqualsIgnoreCase(PIWMSFormPrimaryKey.Instance.InNotice())) .ToArray(); if (!metas.Any()) { return; } var convertService = ServiceHelper.GetService <IConvertService>(); var doNothingService = ServiceHelper.GetService <IDoNothingService>(); foreach (var meta in metas) { var rule = convertService.GetConvertRules(this.Context, meta.RealSourceFormId, meta.TargetFormId) .Where(item => item.Status) .Where(item => meta.ConvertRuleKey.IsNullOrEmptyOrWhiteSpace() ? item.IsDefault : meta.ConvertRuleKey.EqualsIgnoreCase(item.Key)) .FirstOrDefault(); if (rule == null) { continue; } var entryKey = rule.GetDefaultConvertPolicyElement().SourceEntryKey; var selectedRows = e.DataEntitys.SelectMany(data => data.EntryProperty(this.BusinessInfo.GetEntity(entryKey)) .Where(entry => entry.FieldProperty <bool>(this.BusinessInfo.GetField(this.AutoPushFieldKey))) .Select(entry => new { EntryId = entry.PkId().ToChangeTypeOrDefault <string>(), BillId = data.PkId().ToChangeTypeOrDefault <string>() })) .Select(a => new ListSelectedRow(a.BillId, a.EntryId, 0, rule.SourceFormId).Adaptive(row => { row.EntryEntityKey = entryKey; return(row); })).ToArray(); if (!selectedRows.Any()) { continue; } PushArgs pushArgs = new PushArgs(rule, selectedRows); var pushResult = convertService.Push(this.Context, pushArgs); this.OperationResult.MergeResult(pushResult); if (pushResult.IsSuccess) { rule.TargetFormMetadata = FormMetaDataCache.GetCachedFormMetaData(this.Context, rule.TargetFormId); var dataEntities = pushResult.TargetDataEntities.Select(data => data.DataEntity).ToArray(); var uploadResult = doNothingService.DoNothingWithDataEntity(this.Context, rule.TargetFormMetadata.BusinessInfo, dataEntities, "Upload"); this.OperationResult.MergeResult(uploadResult); } //end if } //end foreach } //end method
public override void OnPreparePropertys(PreparePropertysEventArgs e) { base.OnPreparePropertys(e); var metadata = FormMetaDataCache.GetCachedFormMetaData(this.Context, this.BusinessInfo.GetForm().Id); var businessInfo = metadata.BusinessInfo; foreach (var field in businessInfo.GetFieldList()) { e.FieldKeys.Add(field.Key); } }
/// <summary> /// 获取收货通知数据 /// </summary> /// <param name="billno">收货通知单编号</param> /// <returns>返回服务结果。</returns> public ServiceResult ExecuteService(string billno) { var result = new ServiceResult <JSONObject>(); var ctx = this.KDContext.Session.AppContext; // 检查上下文对象 if (this.IsContextExpired(result)) { return(result); } // 检查传入参数 if (string.IsNullOrWhiteSpace(billno)) { result.Code = (int)ResultCode.Fail; result.Message = "收货通知单编号不能为空!"; return(result); } //获取相关信息 try { //TODO:通过平台动态引擎获取数据 var metadata = FormMetaDataCache.GetCachedFormMetaData(ctx, "BAH_WMS_InNotice"); var businessInfo = metadata.BusinessInfo; var queryParameter = new QueryBuilderParemeter(); queryParameter.FormId = businessInfo.GetForm().Id; queryParameter.FilterClauseWihtKey = "FDOCUMENTSTATUS = @FDOCUMENTSTATUS"; queryParameter.SqlParams.Add(new SqlParam("@FDOCUMENTSTATUS", KDDbType.String, "C")); queryParameter.FilterClauseWihtKey = "FBillNo = @BillNo"; queryParameter.SqlParams.Add(new SqlParam("@BillNo", KDDbType.String, billno)); var dataObjectCollection = BusinessDataServiceHelper.Load(ctx, businessInfo.GetDynamicObjectType(), queryParameter); JSONObject Finaldata = new JSONObject(); List <JSONObject> return_data = new List <JSONObject>(); foreach (DynamicObject dataObject in dataObjectCollection) { JSONObject data = new JSONObject(); data.Add("FID", dataObject["Id"].ToString()); data.Add("FNUMBER", dataObject["Number"].ToString()); data.Add("FName", dataObject["Name"].ToString()); return_data.Add(data); } Finaldata.Add("WareHouse", return_data); //返回数据 result.Code = (int)ResultCode.Success; result.Data = Finaldata; result.Message = "成功返回数据!"; } catch (Exception ex) { result.Code = (int)ResultCode.Fail; result.Message = ex.Message; } return(result); }
/// <summary> /// 输入货主分类(组织、供应商、客户),获取货主数据 /// </summary> /// <returns>返回服务结果。</returns> public ServiceResult ExecuteService(string formid) { var result = new ServiceResult <List <JSONObject> >(); var ctx = this.KDContext.Session.AppContext; // 检查上下文对象 if (this.IsContextExpired(result)) { return(result); } //获取相关信息 try { //TODO:通过平台动态引擎获取数据 var metadata = FormMetaDataCache.GetCachedFormMetaData(ctx, "BAH_BD_Owner"); var businessInfo = metadata.BusinessInfo; var queryParameter = new QueryBuilderParemeter(); queryParameter.FormId = businessInfo.GetForm().Id; queryParameter.SelectItems = SelectorItemInfo.CreateItems("FID,FNUMBER,FName"); queryParameter.FilterClauseWihtKey = "FDOCUMENTSTATUS = 'C' and FFORBIDSTATUS = 'A' and FFormId LIKE '%" + formid + "%' "; queryParameter.OrderByClauseWihtKey = "FNUMBER"; var dataObjectCollection = QueryServiceHelper.GetDynamicObjectCollection(ctx, queryParameter); //queryParameter.FilterClauseWihtKey = "FDOCUMENTSTATUS = @FDOCUMENTSTATUS"; //queryParameter.SqlParams.Add(new SqlParam("@FDOCUMENTSTATUS", KDDbType.String, "C")); //queryParameter.FilterClauseWihtKey = "FFORBIDSTATUS = @FFORBIDSTATUS"; //queryParameter.SqlParams.Add(new SqlParam("@FFORBIDSTATUS", KDDbType.String, "A")); //var dataObjectCollection = BusinessDataServiceHelper.Load(ctx, businessInfo.GetDynamicObjectType(), queryParameter); JSONObject Finaldata = new JSONObject(); List <JSONObject> return_data = new List <JSONObject>(); foreach (DynamicObject dataObject in dataObjectCollection) { JSONObject data = new JSONObject(); data.Add("FID", dataObject["FId"].ToString()); data.Add("FNUMBER", dataObject["FNumber"].ToString()); data.Add("FName", dataObject["FName"].ToString()); return_data.Add(data); } Finaldata.Add("Owner", return_data); //返回数据 result.Code = (int)ResultCode.Success; result.Data = return_data; result.Message = "成功返回数据!"; } catch (Exception ex) { result.Code = (int)ResultCode.Fail; result.Message = ex.Message; } return(result); }
public override void AfterCreatePushArgs(AfterCreatePushArgsEventArgs e) { if (e.Rule.SourceFormId.EqualsIgnoreCase("PRD_PPBOM") && e.Rule.TargetFormId.EqualsIgnoreCase("PRD_PickMtrl")) { if (e.Rule.TargetFormMetadata == null) { e.Rule.TargetFormMetadata = FormMetaDataCache.GetCachedFormMetaData(this.Context, e.Rule.TargetFormId); }//end if //给生产领料单默认的单据类型。 e.PushArgs.TargetBillTypeId = e.Rule.TargetFormMetadata.BusinessInfo.GetBillTypeField().GetDefaultBillTypeInfo().PkId <string>(); }//end if }
private void SelectDimensionValue(string formid, BeforeF7SelectEventArgs e, DimentionScopeType scopetype) { ListShowParameter parameter2 = new ListShowParameter { FormId = formid, ParentPageId = this.View.PageId, MultiSelect = true, SyncCallBackAction = true, IsShowQuickFilter = false, IsLookUp = true }; ListShowParameter param = parameter2; long iD = base.Context.CurrentOrganizationInfo.ID; if (this.GetBaseDataType("FCtrlDimensionEntry", e.Row, "Dimension") == "10") { param.FormId = "BOS_ASSISTANTDATA_SELECT"; string str2 = string.Format("FID='{0}'", formid); if (str2.IsNullOrEmptyOrWhiteSpace()) { param.ListFilterParameter.Filter = str2; } else { param.ListFilterParameter.Filter = param.ListFilterParameter.Filter.JoinFilterString(str2, "AND"); } param.IsIsolationOrg = true; param.UseOrgId = base.Context.CurrentOrganizationInfo.ID; } else if (OrganizationServiceHelper.GetBaseDataType(base.Context, formid) == 2) { FormMetadata cachedFormMetaData = FormMetaDataCache.GetCachedFormMetaData(base.Context, formid); string pkFieldName = cachedFormMetaData.BusinessInfo.GetForm().PkFieldName; string masterPKFieldName = cachedFormMetaData.BusinessInfo.GetForm().MasterPKFieldName; string tableName = cachedFormMetaData.BusinessInfo.Entrys[0].TableName; string useOrgFieldKey = cachedFormMetaData.BusinessInfo.GetForm().UseOrgFieldKey; param.ListFilterParameter.Filter = param.ListFilterParameter.Filter.JoinFilterString(string.Format(" {0}={1} and {1} in (select distinct {1} from {2} where FDOCUMENTSTATUS='C' AND FFORBIDSTATUS='A' AND {3} ={4}) ", new object[] { pkFieldName, masterPKFieldName, tableName, useOrgFieldKey, iD }), "AND"); param.IsIsolationOrg = false; } else { param.IsIsolationOrg = true; param.UseOrgId = base.Context.CurrentOrganizationInfo.ID; } param.OpenStyle.ShowType = ShowType.Modal; this.View.ShowForm(param, delegate(Kingdee.BOS.Core.DynamicForm.FormResult formResult) { if (formResult != null) { this.FillSelectedDatas(formResult, e, scopetype); } }); }
private void ReadData() { var formMetaData = FormMetaDataCache.GetCachedFormMetaData(this.Context, "PAE_ZyDemoBase3"); var dynamicObjType = formMetaData.BusinessInfo.GetDynamicObjectType(); string result = ""; //根据内码来查询单据数据 //DynamicObject dynamicObj= BusinessDataServiceHelper.LoadSingle(this.Context, "100001", dynamicObjType); //if (dynamicObj != null) //{ // this.View.ShowMessage(dynamicObj["BILLNO"].ToString()); //} //根据内码查询多条数据 //DynamicObject[] dynamicObjs = BusinessDataServiceHelper.Load(this.Context, new object[] { "100001","100002" }, dynamicObjType); //foreach (var obj in dynamicObjs) //{ // result += obj["BILLNO"].ToString() + ","; //} //this.View.ShowMessage(result); //根据自定义的查询条件来查询单据数据 //QueryBuilderParemeter query = new QueryBuilderParemeter(); //query.FormId = "PAE_ZyDemoBase3"; //query.FilterClauseWihtKey = "FBillNo='F001'"; //query.BusinessInfo = formMetaData.BusinessInfo; ////query.SelectItems.Add(new Kingdee.BOS.Core.Metadata.SelectorItemInfo("BillNo")); //DynamicObject[] dynamicObjs = BusinessDataServiceHelper.Load(this.Context, dynamicObjType, query); //foreach (var obj in dynamicObjs) //{ // result += obj["BILLNO"].ToString() + ","; //} //this.View.ShowMessage(result); //自定义查询条件以及查询列 //List<SelectorItemInfo> selectItems = new List<SelectorItemInfo>(); //selectItems.Add(new SelectorItemInfo("FBillNo")); //selectItems.Add(new SelectorItemInfo("F_PAE_Base")); //OQLFilter oFilter = new OQLFilter(); //oFilter.Add(new OQLFilterHeadEntityItem() { FilterString = "FBillNo='F001'" }); //oFilter.Add(new OQLFilterHeadEntityItem() { EntityKey="FEntity" ,FilterString="F_PAE_Base=110958" }); //oFilter.Add(new OQLFilterHeadEntityItem() { EntityKey="FEntity" ,FilterString="F_PAE_Base.FNumber='CH4441'" }); //DynamicObject[] dynamicObjs = BusinessDataServiceHelper.Load(this.Context,"PAE_ZyDemoBase3", selectItems, oFilter); //foreach (var obj in dynamicObjs) //{ // result += obj["BILLNO"].ToString() + ","; //} //this.View.ShowMessage(result); }
}//end method public static DynamicObject[] LoadFromCache(this IEnumerable <DynamicObject> dataObject, Context ctx, string formId, Func <DynamicObject, object> selector = null, params string[] fieldKeys) { var metadata = FormMetaDataCache.GetCachedFormMetaData(ctx, formId); var businessInfo = metadata.BusinessInfo.Adaptive(info => { if (fieldKeys != null && fieldKeys.Length > 0) { return(info.GetSubBusinessInfo(fieldKeys.ToList())); } else { return(info); } }); return(LoadFromCache(dataObject, ctx, businessInfo.GetDynamicObjectType(), selector)); }//end method
public override void EndOperationTransaction(EndOperationTransactionArgs e) { base.EndOperationTransaction(e); if (!e.DataEntitys.Any()) { return; } var metadata = FormMetaDataCache.GetCachedFormMetaData(this.Context, this.BusinessInfo.GetForm().Id); var businessInfo = metadata.BusinessInfo; var saveService = ServiceHelper.GetService <ISaveService>(); var option = this.Option.Copy(); option.SetIgnoreWarning(true); option.SetIgnoreInteractionFlag(true); saveService.Save(this.Context, businessInfo, e.DataEntitys, option) .ThrowWhenUnSuccess(op => op.GetResultMessage()); }
/// <summary> /// 关联发货明细批量新增发货明细。 /// </summary> /// <param name="ctx">上下文对象。</param> /// <param name="dataArray">发货明细关联发货通知数据实体数组。</param> /// <returns>返回新建保存事务结果。</returns> public IOperationResult CreateNewBillsFromInNoticeEntities(Context ctx, DynamicObjectCollection dataArray) { //取默认转换规则。 var rule = ConvertServiceHelper.GetConvertRules(ctx, "BAH_WMS_Pickup", "BAH_WMS_Outbound") .Where(element => element.IsDefault) .FirstOrDefault(); if (rule == null) { throw new KDBusinessException("RuleNotFound", "未找到拣货明细至发货明细之间,启用的转换规则,无法自动下推!"); } ListSelectedRowCollection listSelectedRowCollection = new ListSelectedRowCollection(); foreach (var data in dataArray) { var row = new ListSelectedRow(data["SourceBillId"].ToString(), data["SourceEntryId"].ToString(), 0, rule.SourceFormId) { EntryEntityKey = "FEntity" }; listSelectedRowCollection.Add(row); }//end foreach //将需要传入的数量作为参数传递进下推操作,并执行下推操作。 PushArgs args = new PushArgs(rule, listSelectedRowCollection.ToArray()); var inDetailDataObjects = ConvertServiceHelper.Push(ctx, args) .Adaptive(result => result.ThrowWhenUnSuccess(op => op.GetResultMessage())) .Adaptive(result => result.TargetDataEntities.Select(entity => entity.DataEntity).ToArray()); //修改明细行数据包。 var inDetailMetadata = FormMetaDataCache.GetCachedFormMetaData(ctx, rule.TargetFormId); var inDetailBillView = inDetailMetadata.CreateBillView(ctx); var inDetailDynamicFormView = inDetailBillView as IDynamicFormViewService; var inDetailBusinessInfo = inDetailMetadata.BusinessInfo; var inDetailEntryEntity = inDetailBusinessInfo.GetEntity("FEntity"); var inDetailEntryLink = inDetailBusinessInfo.GetForm().LinkSet.LinkEntitys.FirstOrDefault(); //调用上传操作,将暂存、保存、提交、审核操作放置在同一事务中执行。 return(inDetailDataObjects.DoNothing(ctx, inDetailBusinessInfo, "Upload")); }//end method
private QueryBuilderParemeter GetQBPara(CheckPara para, string formKey, string tableName, string entryFormKey) { FormMetadata formMetadata = FormMetaDataCache.GetCachedFormMetaData(this.Context, formKey); QueryBuilderParemeter qbPara = new QueryBuilderParemeter(); qbPara.FormId = formKey; qbPara.FilterClauseWihtKey = string.Format(" FJNUnitEnzymes <> {0} And {1} ={2} And {3} = {4} And {5}={6} And {7} = '{8}' ", para.unitEnzymes, formMetadata.BusinessInfo.MainOrgField.FieldName, para.orgId, matFldKey, para.matId, "FAuxPropId", para.auxPropId, "FLOT_TEXT", para.lotNumber); if (para.currFormKey.EqualsIgnoreCase(formKey)) { qbPara.FilterClauseWihtKey += string.Format(" And {2}_{0} <> {1} ", para.currEnFldName, para.currentEntryId, entryFormKey); } if (para.tableName == tableName) { qbPara.FilterClauseWihtKey += string.Format(" And FID not in ({0})", para.linkId); } qbPara.SelectItems = SelectorItemInfo.CreateItems("FBillNo,FMaterialId.FNumber as FMatNumber,FMaterialId.FName as FMatName,FJNUnitEnzymes"); return(qbPara); }
public override void AfterExecuteOperationTransaction(AfterExecuteOperationTransaction e) { var mirrorField = this.BusinessInfo.GetField("FMirrorId").AsType <BaseDataField>(); var orgMetadata = FormMetaDataCache.GetCachedFormMetaData(this.Context, mirrorField.LookUpObject.FormId); var orgFieldKeys = mirrorField.GetRefPropertyKeys(); if (orgFieldKeys.Any(key => !key.EqualsIgnoreCase("FPHMXContactId"))) { orgFieldKeys.Add("FPHMXContactId"); } var orgBusinessInfo = orgMetadata.BusinessInfo.GetSubBusinessInfo(orgFieldKeys); var orgField = orgBusinessInfo.GetField("FPHMXContactId").AsType <BaseDataField>(); //获取物料数据包。 var dataEntities = e.SelectedRows.Select(data => data.DataEntity) .Where(data => data.FieldProperty <DynamicObject>(mirrorField) != null) .Where(data => !data.PkId <string>().IsNullOrEmptyOrWhiteSpace()) .Where(data => !data.PkId <string>().EqualsIgnoreCase(data.FieldProperty <DynamicObject>(mirrorField).FieldRefProperty <DynamicObject>(mirrorField, "FPHMXContactId").PkId <string>())) .Select(data => { var org = data.FieldProperty <DynamicObject>(mirrorField); orgField.RefIDDynamicProperty.SetValue(org, data.PkId <string>()); //先把对应的主键赋值过去。 return(org); }).ToArray(); //再补充里面字段数据包并无事务保存。 if (dataEntities.Any()) { var viewService = ServiceHelper.GetService <IViewService>(); dataEntities.Mend(orgField, ids => viewService.LoadFromCache(this.Context, ids, this.BusinessInfo.GetSubBusinessInfo(orgField.GetRefPropertyKeys()).GetDynamicObjectType())); var saveSevice = ServiceHelper.GetService <ISaveService>(); saveSevice.Save(this.Context, dataEntities); } base.AfterExecuteOperationTransaction(e); } //end method
/// <summary> /// 在检验单的保存或审核时,会把酶活相关数据反写到收料单,导致收料单上的酶活量跟批次号主档资料里面的跟踪信息对不上,这里重新保存一下收料单以便刷新批号主档资料 /// </summary> /// <param name="e"></param> public override void AfterExecuteOperationTransaction(AfterExecuteOperationTransaction e) { base.AfterExecuteOperationTransaction(e); if (e.DataEntitys.IsEmpty()) { return; } string sql = @"/*dialect*/ update t set t.FSECQTY =x.FACTRECEIVEQTY * x.FJNUnitEnzymes from T_QM_INSPECTBILL a inner join T_QM_INSPECTBILLENTRY b on a.fid=b.fid inner join T_QM_INSPECTBILLENTRY_LK c on b.FENTRYID =c.FENTRYID and c.FRULEID ='QM_PURReceive2Inspect' inner join T_PUR_ReceiveEntry x on x.FENTRYID =c.fsid and x.fid =c.FSBILLID inner join T_PUR_Receive y on x.FID =y.fid inner join T_BD_LOTMASTERBILLTRACE t on FBILLFORMID ='PUR_ReceiveBill' and t.fbillid=x.FID and t.FBILLENTRYID =x.FENTRYID inner join T_BD_LOTMASTER tt on t.FLOTID =tt.FLOTID where a.fid ={0} ;" ; List <string> sqlLst = new List <string>(); FormMetadata billTypeFormMeta = FormMetaDataCache.GetCachedFormMetaData(this.Context, "PUR_ReceiveBill"); var dyType = billTypeFormMeta.BusinessInfo.GetDynamicObjectType(); foreach (var item in e.DataEntitys) { sqlLst.Add(string.Format(sql, item["Id"])); } if (sqlLst.Count > 0) { DBUtils.ExecuteBatch(this.Context, sqlLst, 50); } CacheUtil.ClearCache(this.Context.DBId, "PUR_ReceiveBill"); CacheUtil.ClearCache(this.Context.DBId, "BD_BatchMainFile"); }
}//end method /// <summary> /// 执行上查删除目标单据。 /// </summary> /// <param name="ctx">上下文对象。</param> /// <param name="genArgs">生成目标单据参数。</param> /// <param name="filter">过滤条件。</param> /// <param name="sqlParam">SQL参数。</param> /// <returns>返回操作结果。</returns> public IOperationResult Pull(Context ctx, GenTargetArgs[] genArgs) { var operationResult = new OperationResult(); if (!genArgs.Any()) { return(operationResult); } var viewService = ServiceHelper.GetService <IViewService>(); var saveService = ServiceHelper.GetService <ISaveService>(); var doNothingService = ServiceHelper.GetService <IDoNothingService>(); var unloadOption = default(OperateOption); var group = genArgs.GroupBy(g => new { g.ObjectTypeId, g.TargetFormId }).Select(g => new { Key = g.Key, BillIds = g.Select(b => b.BillId).Distinct().ToArray() }).ToArray(); foreach (var g in group) { var metadata = FormMetaDataCache.GetCachedFormMetaData(ctx, g.Key.TargetFormId); var businessInfo = metadata.BusinessInfo; var dataEntities = viewService.Load(ctx, businessInfo.GetDynamicObjectType(), new QueryBuilderParemeter().Adaptive(para => { para.FormId = g.Key.TargetFormId; para.FilterClauseWihtKey = "FPHMXWMSFormId <> '' AND FPHMXWMSFormId = @FormId AND FPHMXWMSBillId IN (SELECT FID FROM TABLE(fn_StrSplit(@BillIds,',',1)))"; para.SqlParams.Add(new SqlParam("@FormId", KDDbType.String, g.Key.ObjectTypeId)); para.SqlParams.Add(new SqlParam("@BillIds", KDDbType.udt_inttable, g.BillIds)); })); if (!dataEntities.Any()) { continue; } //在回撤之前,把仓网单据类型设为空, //如果不设置,单据无法删除。 foreach (var data in dataEntities) { businessInfo.GetField("FPHMXWMSFormId").AsType <BaseDataField>().Adaptive(field => { field.RefIDDynamicProperty.SetValue(data, string.Empty); field.DynamicProperty.SetValue(data, null); }); }//end foreach saveService.Save(ctx, dataEntities); //调用回撤操作完成反审核、撤销、删除一系列操作。 var uploadOperation = metadata.BusinessInfo.GetForm().FormOperations.Where(operation => operation.Operation.Contains("Unload")).FirstOrDefault(); if (uploadOperation == null) { throw new KDBusinessException(string.Empty, "未配置有效的回撤操作!"); }//end if unloadOption = OperateOption.Create(); unloadOption.SetIgnoreWarning(true); unloadOption.SetIgnoreInteractionFlag(true); unloadOption.SetThrowWhenUnSuccess(false); try { var unloadResult = doNothingService.DoNothingWithDataEntity(ctx, metadata.BusinessInfo, dataEntities, uploadOperation.Operation, unloadOption); operationResult.MergeResult(unloadResult); } catch { var inner = unloadOption.GetVariableValue <IOperationResult>(BOSConst.CST_KEY_OperationResultKey); if (inner != null) { operationResult.MergeResult(inner); } else { throw; } } }//end foreach return(operationResult); }//end method
public override void AfterCreateTargetData(AfterCreateTargetDataEventArgs e) { if (!e.Rule.TargetFormId.EqualsIgnoreCase("SP_PickMtrl")) { return; } var billService = this.View.AsDynamicFormViewService(); var businessInfo = this.View.Model.BillBusinessInfo; //匹配源数据。 var entryKey = e.Rule.Policies.Where(p => p is DefaultConvertPolicyElement) .Select(p => p.ToType <DefaultConvertPolicyElement>()) .FirstOrDefault().TargetEntryKey; entryKey = entryKey.IsNullOrEmptyOrWhiteSpace() ? "FBillHead" : entryKey; var entryLinkKey = businessInfo.GetForm().LinkSet.LinkEntitys.FirstOrDefault().Key; var entryCollection = this.View.Model.GetEntityDataObject(businessInfo.GetEntity(entryKey)); var entryArray = entryCollection.ToArray(); var materialField = businessInfo.GetField("FMaterialId").AsType <BaseDataField>(); var stockField = businessInfo.GetField("FStockId").AsType <BaseDataField>(); var rows = e.Rows.ToList(); foreach (var entry in entryArray) { var sources = rows.Join(entry.Property <DynamicObjectCollection>(entryLinkKey), left => new { SourceEntryId = left.SId, SourceBillId = left.SBillId }, right => new { SourceEntryId = right.Property <long>("SId"), SourceBillId = right.Property <long>("SBillId") }, (left, right) => left).ToArray(); if (!sources.Any()) { entryCollection.Remove(entry); continue; }//end if for (int i = 0; i < sources.Count(); i++) { var entryIndex = entryCollection.IndexOf(entry); var rowIndex = entryIndex + i; if (i > 0) { this.View.Model.CopyEntryRow(entryKey, entryIndex, rowIndex, true); }//end if var item = sources.ElementAt(i); //库存单位。 if (this.View.Model.GetValue("FUnitID", rowIndex).AsType <DynamicObject>().PkId <int>() != this.View.Model.GetValue("FBaseUnitId", rowIndex).AsType <DynamicObject>().PkId <int>()) { billService.SetItemValueByID("FUnitID", this.View.Model.GetValue("FBaseUnitId", rowIndex).AsType <DynamicObject>().PkId <int>(), rowIndex); }//end if //实发数量。 billService.UpdateValue("FActualQty", rowIndex, item.Cty > 0 ? item.Cty : item.Qty); //库存辅单位。 if (materialField.Adaptive(field => this.View.Model.GetValue(field, rowIndex).AsType <DynamicObject>().FieldRefProperty <DynamicObject>(field, "FAuxUnitId")) != null && materialField.Adaptive(field => this.View.Model.GetValue(field, rowIndex).AsType <DynamicObject>().FieldRefProperty <DynamicObject>(field, "FAuxUnitId")).PkId <int>() != this.View.Model.GetValue("FSecUnitId", rowIndex).AsType <DynamicObject>().PkId <int>()) { billService.SetItemValueByID("FSecUnitId", materialField.Adaptive(field => this.View.Model.GetValue(field, rowIndex).AsType <DynamicObject>().FieldRefProperty <DynamicObject>(field, "FAuxUnitId")), rowIndex); }//end if //库存辅单位数量 if (materialField.Adaptive(field => this.View.Model.GetValue(field, rowIndex).AsType <DynamicObject>().FieldRefProperty <DynamicObject>(field, "FAuxUnitId")) != null) { billService.UpdateValue("FSecActualQty", rowIndex, item.Qty); }//end if //仓库 if (this.View.Model.GetValue("FStockId", rowIndex) == null) { billService.SetItemValueByID("FStockId", this.View.Model.GetValue(materialField, rowIndex).AsType <DynamicObject>().FieldRefProperty <DynamicObject>(materialField, "FStockId").PkId <int>(), rowIndex); }//end if //仓位 if (stockField.Adaptive(field => this.View.Model.GetValue(field, rowIndex).AsType <DynamicObject>().FieldRefProperty <bool>(field, "FIsOpenLocation")) && this.View.Model.GetValue("FStockLocId", rowIndex) == null) { billService.SetItemValueByID("FStockLocId", this.View.Model.GetValue(materialField, rowIndex).AsType <DynamicObject>().FieldRefProperty <DynamicObject>(materialField, "FStockPlaceId").PkId <int>(), rowIndex); }//end if //批号 if (materialField.Adaptive(field => this.View.Model.GetValue(field, rowIndex).AsType <DynamicObject>().FieldRefProperty <bool>(field, "FIsBatchManage"))) { billService.UpdateValue("FLot", rowIndex, item.LotNo); }//end if //生产日期+有效期至 if (materialField.Adaptive(field => this.View.Model.GetValue(field, rowIndex).AsType <DynamicObject>().FieldRefProperty <bool>(field, "FIsKFPeriod"))) { billService.UpdateValue("FProduceDate", rowIndex, item.ProduceDate.Value); billService.UpdateValue("FExpiryDate", rowIndex, item.ExpiryDate.Value); }//end if //匹配完成后,从待处理列表中移除。 rows.Remove(item); } //end for } //end foreach //如果匹配结束后,列表里仍有数据,说明只下推了部分行,必须抛出异常进行阻止。 if (rows.Any()) { if (e.Rule.SourceFormMetadata == null) { e.Rule.SourceFormMetadata = FormMetaDataCache.GetCachedFormMetaData(this.Context, e.Rule.SourceFormId); } if (e.Rule.TargetFormMetadata == null) { e.Rule.TargetFormMetadata = FormMetaDataCache.GetCachedFormMetaData(this.Context, e.Rule.TargetFormId); } var attention = e.Rows.Select(row => new { FormId = row.Parent.ObjectTypeId, BillNo = row.Parent.BillNo }) .Distinct() .Select(a => new { FormName = FormMetaDataCache.GetCachedFormMetaData(this.Context, a.FormId).Name, a.BillNo }) .Select(a => string.Concat(a.FormName, a.BillNo)) .ToArray() .Adaptive(array => string.Join("、", array)); //准备反馈的抱错信息。 var message = string.Format("从{0}下推{1}出现未完全下推的现象,请检查{2}上游单据的状态。", e.Rule.SourceFormMetadata.Name.Value(this.Context), e.Rule.TargetFormMetadata.Name.Value(this.Context), attention); throw new KDBusinessException(string.Empty, message); } //end if } //end method
///// <summary> ///// 关联到货通知新增收货明细。 ///// </summary> ///// <param name="ctx">上下文对象。</param> ///// <param name="data">收货明细关联到货通知数据实体。</param> ///// <returns>返回新建保存事务结果。</returns>s //public IOperationResult CreateNewBillFromInNoticeEntry(Context ctx, PutDetailLinkInDetailDto.InDetailEntryLinkInNotice data) //{ // return this.CreateNewBillsFromInNoticeEntities(ctx, new PutDetailLinkInDetailDto.InDetailEntryLinkInNotice[] { data }); //}//end method /// <summary> /// 关联收货明细批量新增上架明细。 /// </summary> /// <param name="ctx">上下文对象。</param> /// <param name="dataArray">上架明细关联收货通知数据实体数组。</param> /// <returns>返回新建保存事务结果。</returns> public IOperationResult CreateNewBillsFromInNoticeEntities(Context ctx, IEnumerable <PutDetailLinkInDetailDto.PutDetailEntryLinkInNotice> dataArray) { //取默认转换规则。 var rule = ConvertServiceHelper.GetConvertRules(ctx, "BAH_WMS_Inbound", "BAH_WMS_Putaway") .Where(element => element.IsDefault) .FirstOrDefault(); if (rule == null) { throw new KDBusinessException("RuleNotFound", "未找到收货明细至上架明细之间,启用的转换规则,无法自动下推!"); } ListSelectedRowCollection listSelectedRowCollection = new ListSelectedRowCollection(); foreach (var data in dataArray) { var row = new ListSelectedRow(data.SourceBillId.ToString(), data.SourceEntryId.ToString(), 0, rule.SourceFormId) { EntryEntityKey = "FEntity" }; listSelectedRowCollection.Add(row); }//end foreach //将需要传入的数量作为参数传递进下推操作,并执行下推操作。 PushArgs args = new PushArgs(rule, listSelectedRowCollection.ToArray()); var inDetailDataObjects = ConvertServiceHelper.Push(ctx, args) .Adaptive(result => result.ThrowWhenUnSuccess(op => op.GetResultMessage())) .Adaptive(result => result.TargetDataEntities.Select(entity => entity.DataEntity).ToArray()); //修改明细行数据包。 var inDetailMetadata = FormMetaDataCache.GetCachedFormMetaData(ctx, rule.TargetFormId); var inDetailBillView = inDetailMetadata.CreateBillView(ctx); var inDetailDynamicFormView = inDetailBillView as IDynamicFormViewService; var inDetailBusinessInfo = inDetailMetadata.BusinessInfo; var inDetailEntryEntity = inDetailBusinessInfo.GetEntity("FEntity"); var inDetailEntryLink = inDetailBusinessInfo.GetForm().LinkSet.LinkEntitys.FirstOrDefault(); foreach (var data in inDetailDataObjects) { //新建并加载已有数据包。 inDetailBillView.AddNew(data); //逐行检索,并关联复制行。 var entryCollection = inDetailBillView.Model.GetEntityDataObject(inDetailEntryEntity); var entryMirrorArray = entryCollection.ToArray(); foreach (var entry in entryMirrorArray) { var sources = dataArray.Join(entry.Property <DynamicObjectCollection>(inDetailEntryLink.Key), left => new { SourceEntryId = left.SourceEntryId, SourceBillId = left.SourceBillId }, right => new { SourceEntryId = right.Property <long>("SId"), SourceBillId = right.Property <long>("SBillId") }, (left, right) => left).ToArray(); for (int i = 0; i < sources.Count(); i++) { var entryIndex = entryCollection.IndexOf(entry); var rowIndex = entryIndex + i; if (i > 0) { inDetailBillView.Model.CopyEntryRow("FEntity", entryIndex, rowIndex, true); }//end if var item = sources.ElementAt(i); inDetailDynamicFormView.UpdateValue("FFromTrackNo", rowIndex, item.FromTrackNo); inDetailDynamicFormView.UpdateValue("FToTrackNo", rowIndex, item.ToTrackNo); inDetailDynamicFormView.SetItemValueByID("FToLocId", item.ToLocId, rowIndex); if (item.ToAvgCty == 0) { inDetailDynamicFormView.UpdateValue("FFromCty", rowIndex, item.ToCty); inDetailDynamicFormView.SetItemValueByID("FFromUnitId", item.ToUnitId, rowIndex); inDetailDynamicFormView.UpdateValue("FFromQty", rowIndex, item.ToQty); } else { inDetailDynamicFormView.UpdateValue("FFromAvgCty", rowIndex, item.ToAvgCty); inDetailDynamicFormView.SetItemValueByID("FFromUnitId", item.ToUnitId, rowIndex); inDetailDynamicFormView.UpdateValue("FFromQty", rowIndex, item.ToQty); } //inDetailDynamicFormView.SetItemValueByID("FStockId", item.StockId, rowIndex); //inDetailDynamicFormView.SetItemValueByID("FStockPlaceId", item.StockPlaceId, rowIndex); //inDetailDynamicFormView.UpdateValue("FLotNo", rowIndex, item.BatchNo); //inDetailDynamicFormView.UpdateValue("FProduceDate", rowIndex, item.KFDate); //inDetailDynamicFormView.UpdateValue("FExpPeriod", rowIndex, item.ExpPeriod); //inDetailDynamicFormView.UpdateValue("FSerialNo", rowIndex, item.SerialNo); //inDetailDynamicFormView.UpdateValue("FTrayNo", rowIndex, item.TrayNo); //inDetailDynamicFormView.UpdateValue("FEntryRemark", rowIndex, item.Remark); } //end for } //end foreach } //end foreach //调用上传操作,将暂存、保存、提交、审核操作放置在同一事务中执行。 return(inDetailDataObjects.DoNothing(ctx, inDetailBusinessInfo, "Upload")); }//end method
public override void AfterExecuteOperationTransaction(AfterExecuteOperationTransaction e) { //(列表中批量审核场景下)取出所有数据包 var queryService = ServiceHelper.GetService <IQueryService>(); var viewService = ServiceHelper.GetService <IViewService>(); var dataEntites = e.SelectedRows .Select(data => data.DataEntity) .ToArray(); if (!dataEntites.Any()) { return; } //取出所有的MasterId var OrgIds = dataEntites.Select(data => data.PkId <int>()).ToArray(); string targetFormId = "BAH_BD_Organization"; //找到对应普华物料的主键 QueryBuilderParemeter para = new QueryBuilderParemeter(); para.FormId = targetFormId; para.SelectItems = SelectorItemInfo.CreateItems("FID", "FMIRRORID"); para.FilterClauseWihtKey = "FMirrorId in (Select FID From TABLE(fn_StrSplit(@OrgIds,',',1)))"; para.SqlParams.Add(new SqlParam("@OrgIds", KDDbType.udt_inttable, OrgIds)); var ids = queryService.GetDynamicObjectCollection(this.Context, para).Select(data => data.Property <object>("FID")).ToArray(); var mirrorids = queryService.GetDynamicObjectCollection(this.Context, para).Select(data => data.Property <int>("FMIRRORID")).ToArray(); //用得到的主键去获取普华物料数据包 var targetMetadata = FormMetaDataCache.GetCachedFormMetaData(this.Context, targetFormId); var targetBillView = targetMetadata.CreateBillView(this.Context); var targetBillService = targetBillView.AsDynamicFormViewService(); var targetDataObjects = viewService.LoadFromCache(this.Context, ids, targetMetadata.BusinessInfo.GetDynamicObjectType()).ToList(); //如果两边的数据包可以被关联,那么直接对应修改。 dataEntites.Join(targetDataObjects, left => left.PkId <int>(), right => right.FieldProperty <DynamicObject>(targetMetadata.BusinessInfo.GetField("FMirrorId")).PkId <int>(), (left, right) => { targetBillView.Edit(right); targetBillService.UpdateValue("FNumber", -1, left.BDNumber()); targetBillService.UpdateValue("FName", -1, new LocaleValue(left.BDName(this.Context))); return(right); }).ToArray(); //如果数据包没有关联,则新增 var unmatchDataEntities = dataEntites.Where(data => (mirrorids.Contains(data.PkId <int>()) == false)) .ToArray(); var addDataObjects = new List <DynamicObject>(); foreach (var data in unmatchDataEntities) { targetBillView.AddNew(); targetBillService.UpdateValue("FNumber", -1, data.BDNumber()); targetBillService.UpdateValue("FName", -1, new LocaleValue(data.BDName(this.Context))); targetBillService.SetItemValueByID("FMirrorId", data.PkId <int>(), -1); addDataObjects.Add(targetBillView.Model.DataObject); } //合并待操作数据 targetDataObjects.AddRange(addDataObjects); if (targetDataObjects.Any()) { targetDataObjects.DoNothing(this.Context, targetMetadata.BusinessInfo, "Upload").Adaptive(op => this.OperationResult.MergeResult(op)); } base.AfterExecuteOperationTransaction(e); }
private string GetOrgFldKey(Context ctx, string formKey) { FormMetadata md = FormMetaDataCache.GetCachedFormMetaData(ctx, formKey); return(md.BusinessInfo.MainOrgField.Key); }
/// <summary> /// 获取收货通知数据 /// </summary> /// <param name="billno">收货通知单编号</param> /// <returns>返回服务结果。</returns> public ServiceResult ExecuteService(string billno) { var result = new ServiceResult <JSONObject>(); var ctx = this.KDContext.Session.AppContext; // 检查上下文对象 if (this.IsContextExpired(result)) { return(result); } // 检查传入参数 if (string.IsNullOrWhiteSpace(billno)) { result.Code = (int)ResultCode.Fail; result.Message = "收货通知单编号不能为空!"; return(result); } //获取相关信息 try { //TODO:通过平台动态引擎获取数据 var metadata = FormMetaDataCache.GetCachedFormMetaData(ctx, "BAH_WMS_InNotice"); var businessInfo = metadata.BusinessInfo; var queryParameter = new QueryBuilderParemeter(); queryParameter.FormId = businessInfo.GetForm().Id; queryParameter.FilterClauseWihtKey = "FDOCUMENTSTATUS = @FDOCUMENTSTATUS"; queryParameter.SqlParams.Add(new SqlParam("@FDOCUMENTSTATUS", KDDbType.String, "C")); queryParameter.FilterClauseWihtKey = "FBillNo = @BillNo"; queryParameter.SqlParams.Add(new SqlParam("@BillNo", KDDbType.String, billno)); var dataObject = BusinessDataServiceHelper.Load(ctx, businessInfo.GetDynamicObjectType(), queryParameter).FirstOrDefault(); JSONObject return_data = new JSONObject(); //表头单据号信息 return_data.Add("FBillNo", billno); //表头仓库信息 return_data.Add("FBatchWHId", dataObject.FieldProperty <DynamicObject>(businessInfo.GetField("FBatchWHId")).PkId <String>()); return_data.Add("FBatchWHNumber", businessInfo.GetField("FBatchWHId").AsType <BaseDataField>().Adaptive(field => dataObject.FieldProperty <DynamicObject>(field).FieldRefProperty <string>(field, "Number"))); return_data.Add("FBatchWHName", dataObject.FieldProperty <DynamicObject>(businessInfo.GetField("FBatchWHId")).BDName(ctx)); //表头货主信息 return_data.Add("FBatchOwnerId", dataObject.FieldProperty <DynamicObject>(businessInfo.GetField("FBatchOwnerId")).PkId <String>()); return_data.Add("FBatchOwnerNumber", businessInfo.GetField("FBatchOwnerId").AsType <BaseDataField>().Adaptive(field => dataObject.FieldProperty <DynamicObject>(field).FieldRefProperty <string>(field, "Number"))); return_data.Add("FBatchOwnerName", dataObject.FieldProperty <DynamicObject>(businessInfo.GetField("FBatchOwnerId")).BDName(ctx)); //表头供应商信息 return_data.Add("FContactId", dataObject.FieldProperty <DynamicObject>(businessInfo.GetField("FContactId")).PkId <String>()); return_data.Add("FContactNumber", businessInfo.GetField("FContactId").AsType <BaseDataField>().Adaptive(field => dataObject.FieldProperty <DynamicObject>(field).FieldRefProperty <string>(field, "Number"))); return_data.Add("FContactName", dataObject.FieldProperty <DynamicObject>(businessInfo.GetField("FContactId")).BDName(ctx)); return_data.Add("FContactFormName", businessInfo.GetField("FContactId").AsType <BaseDataField>().Adaptive(field => dataObject.FieldProperty <DynamicObject>(field).FieldRefProperty <DynamicObject>(field, "FFormId")).BDName(ctx)); DynamicObjectCollection mat_objc = dataObject.EntryProperty(businessInfo.GetEntity("FEntity")); List <JSONObject> detail_list = new List <JSONObject>(); //获取明细信息数据 foreach (DynamicObject data in mat_objc) { JSONObject each_detail = new JSONObject(); //each_detail.Add("FCUSTMATNUMBER", businessInfo.GetField("FCUSTMATID").AsType<BaseDataField>().Adaptive(field => data.FieldProperty<DynamicObject>(field).FieldRefProperty<string>(field, "Number"))); each_detail.Add("FTrackNo", data["TrackNo"].ToString()); each_detail.Add("FWrapNo", data["WrapNo"].ToString()); each_detail.Add("FOwnerId", data.FieldProperty <DynamicObject>(businessInfo.GetField("FOwnerId")).BDName(ctx)); each_detail.Add("FWHId", data.FieldProperty <DynamicObject>(businessInfo.GetField("FWHId")).BDName(ctx)); each_detail.Add("FAreaId", businessInfo.GetField("FLocId").AsType <BaseDataField>().Adaptive(field => data.FieldProperty <DynamicObject>(field).FieldRefProperty <DynamicObject>(field, "FAreaId")).BDName(ctx)); each_detail.Add("FLocId", data.FieldProperty <DynamicObject>(businessInfo.GetField("FLocId")).BDName(ctx)); //each_detail.Add("FMATERIALID", data.FieldProperty<DynamicObject>(businessInfo.GetField("FMATERIALID")).PkId<int>()); //each_detail.Add("FMATERIALNUMBER", businessInfo.GetField("FMATERIALID").AsType<BaseDataField>().Adaptive(field => data.FieldProperty<DynamicObject>(field).FieldRefProperty<String>(field, "Number"))); //each_detail.Add("FMATERIALNAME", data.FieldProperty<DynamicObject>(businessInfo.GetField("FMATERIALID")).BDName(ctx)); //each_detail .Add("FSPECIFICATION", businessInfo.GetField("FMATERIALID").AsType<BaseDataField>().Adaptive(field => data.FieldProperty<DynamicObject>(field).FieldRefProperty<LocaleValue>(field, "Specification").Value(ctx))); detail_list.Add(each_detail); } return_data.Add("DetailList", detail_list); //返回数据 result.Code = (int)ResultCode.Success; result.Data = return_data; result.Message = "成功返回数据!"; } catch (Exception ex) { result.Code = (int)ResultCode.Fail; result.Message = ex.Message; } return(result); }
public static IRptParams CreateFromSysReportFilterScheme(this IRptParams rpt, Context ctx, FormMetadata reportMetadata, Func <ICommonFilterModelService, string> schemeSelector) { //字段比较条件元数据。 var filterMetadata = FormMetaDataCache.GetCachedFilterMetaData(ctx); //账表元数据。 var reportFormId = reportMetadata.BusinessInfo.GetForm().Id; //过滤条件元数据。 var reportFilterFormId = reportMetadata.BusinessInfo.GetForm().FilterObject; var reportFilterMetadata = FormMetaDataCache.GetCachedFormMetaData(ctx, reportFilterFormId); var reportFilterServiceProvider = reportFilterMetadata.BusinessInfo.GetForm().GetFormServiceProvider(); //过滤方案元数据。 var schemeFormId = FormIdConst.BOS_FilterScheme; var schemeMetadata = FormMetaDataCache.GetCachedFormMetaData(ctx, schemeFormId); //用户参数元数据。 var parameterDataFormId = reportMetadata.BusinessInfo.GetForm().ParameterObjectId; var parameterDataMetadata = FormMetaDataCache.GetCachedFormMetaData(ctx, parameterDataFormId); var model = new SysReportFilterModel(); model.SetContext(ctx, reportFilterMetadata.BusinessInfo, reportFilterServiceProvider); model.FormId = reportFilterFormId; model.FilterObject.FilterMetaData = filterMetadata; model.InitFieldList(reportMetadata, reportFilterMetadata); model.GetSchemeList(); //方案加载,返回选中的过滤方案主键。 schemeSelector = schemeSelector != null ? schemeSelector : s => { model.LoadDefaultScheme(); return(string.Empty); }; var schemeId = schemeSelector(model); //打开参数,暂时不指定任何项。 var openParameter = new Dictionary <string, object>(); //如果指定了过滤方案,则根据过滤方案查找创建用户。 long userId = -1L; if (!string.IsNullOrWhiteSpace(schemeId)) { var schemeBusinessInfo = schemeMetadata.BusinessInfo.GetSubBusinessInfo(new List <string> { "FUserID" }); userId = BusinessDataServiceHelper.LoadSingle(ctx, schemeId, schemeBusinessInfo.GetDynamicObjectType()) .FieldProperty <long>(schemeBusinessInfo.GetField("FUserID")); }//end if //加载用户参数数据包。 var parameterData = UserParamterServiceHelper.Load(ctx, parameterDataMetadata.BusinessInfo, userId, reportFormId, KeyConst.USERPARAMETER_KEY); IRptParams p = new RptParams(); p.CustomParams.Add(KeyConst.OPENPARAMETER_KEY, openParameter); p.FormId = reportFilterFormId; p.StartRow = 1; p.EndRow = int.MaxValue;//StartRow和EndRow是报表数据分页的起始行数和截至行数,一般取所有数据,所以EndRow取int最大值。 p.FilterParameter = model.GetFilterParameter(); p.FilterFieldInfo = model.FilterFieldInfo; p.BaseDataTempTable.AddRange(PermissionServiceHelper.GetBaseDataTempTable(ctx, reportFormId)); p.ParameterData = parameterData; return(p); }//end static method
public override void AfterExecuteOperationTransaction(AfterExecuteOperationTransaction e) { base.AfterExecuteOperationTransaction(e); //TODO: //0.泛亚场景,当Id和MasterId相同时,才触发同步事件。 //1.准备物料的数据包,e.DataEntities,取物料MasterId。 //2.用MasterId关联查询普华智造里物料MirrorId,通过这个步骤知道,哪些需要修改(调用Save方法),哪些需要新增(调用Draft方法)。 //3.需要修改的,直接关联同步修改。 //4.需要新增的,通过表单代理直接创建新数据包。 //5.统一调用上传操作。 //(列表中批量审核场景下)取出所有数据包 var queryService = ServiceHelper.GetService <IQueryService>(); var viewService = ServiceHelper.GetService <IViewService>(); var dataEntites = e.SelectedRows .Select(data => data.DataEntity) .Where(data => data.FieldProperty <bool>(this.BusinessInfo.GetField("FPHMXEnablePHManagement"))) .Where(data => data.PkId <int>() == data.MasterId <int>()) .ToArray(); if (!dataEntites.Any()) { return; } //取出所有的MasterId var masterIds = dataEntites.Select(data => data.PkId <int>()).ToArray(); string targetFormId = PIBDFormPrimaryKey.Instance.Material(); //找到对应普华物料的主键 QueryBuilderParemeter para = new QueryBuilderParemeter(); para.FormId = targetFormId; para.SelectItems = SelectorItemInfo.CreateItems("FID", "FMIRRORID"); para.FilterClauseWihtKey = "FMirrorId in (Select FID From TABLE(fn_StrSplit(@MasterIds,',',1)))"; para.SqlParams.Add(new SqlParam("@MasterIds", KDDbType.udt_inttable, masterIds)); var ids = queryService.GetDynamicObjectCollection(this.Context, para).Select(data => data.Property <object>("FID")).ToArray(); var mirrorids = queryService.GetDynamicObjectCollection(this.Context, para).Select(data => data.Property <int>("FMIRRORID")).ToArray(); //用得到的主键去获取普华物料数据包 var targetMetadata = FormMetaDataCache.GetCachedFormMetaData(this.Context, targetFormId); var targetBusinessInfo = targetMetadata.BusinessInfo; var targetBillView = targetMetadata.CreateBillView(this.Context); var targetBillService = targetBillView.AsDynamicFormViewService(); var targetDataObjects = viewService.LoadFromCache(this.Context, ids, targetBusinessInfo.GetDynamicObjectType()).ToList(); //如果两边的数据包可以被关联,那么直接对应修改。 dataEntites.Join(targetDataObjects, left => left.MasterId <int>(), right => right.FieldProperty <DynamicObject>(targetMetadata.BusinessInfo.GetField("FMirrorId")).MasterId <int>(), (left, right) => { targetBillView.Edit(right); targetBillService.UpdateValue("FNumber", -1, left.BDNumber()); targetBillService.UpdateValue("FName", -1, new LocaleValue(left.BDName(this.Context))); targetBillService.UpdateValue("FSpecification", -1, new LocaleValue(left.FieldProperty <LocaleValue>(this.BusinessInfo.GetField("FSpecification")).Value(this.Context))); //基本 left.SubHeadProperty(this.BusinessInfo.GetEntity("SubHeadEntity")) .Adaptive(sub => { this.BusinessInfo.GetField("FBaseUnitId").AsType <BaseDataField>() .Adaptive(field => { if (!sub.FieldProperty <DynamicObject>(field).FieldRefProperty <bool>(field, "FPHMXEA") || left.SubHeadProperty(this.BusinessInfo.GetEntity("SubHeadEntity1")).FieldProperty <decimal>(this.BusinessInfo.GetField("FPHMXStdCty")) > 0M) { targetBillService.UpdateValue("FEnableCapacity", -1, true); targetBillService.UpdateValue("FCapacityUnit", -1, new LocaleValue(sub.FieldProperty <DynamicObject>(field).BDName(this.Context))); targetBillService.UpdateValue("FCapacityScale", -1, sub.FieldProperty <DynamicObject>(field).FieldRefProperty <int>(field, "FPrecision")); } //end if }); }); //库存 var pkgId = left.SubHeadProperty(this.BusinessInfo.GetEntity("SubHeadEntity1")).FieldProperty <DynamicObject>(this.BusinessInfo.GetField("FPHMXPkgId")).PkId <string>(); if (!pkgId.IsNullOrEmptyOrWhiteSpace()) { var entries = targetBillView.Model.GetEntityDataObject(targetBusinessInfo.GetEntity("FPackageEntry")); if (entries.Any(entry => entry.FieldProperty <DynamicObject>(targetBusinessInfo.GetField("FEntryPackageId")).PkId <string>().EqualsIgnoreCase(pkgId)) == false) { targetBillView.Model.InsertEntryRow("FPackageEntry", 0); targetBillService.SetItemValueByID("FEntryPackageId", pkgId, 0); } //end if //设置标准容量。 entries.Where(entry => targetBillView.Model.GetValue("FEnableCapacity").ToType <bool>() && entry.FieldProperty <DynamicObject>(targetBusinessInfo.GetField("FEntryPackageId")).PkId <string>().EqualsIgnoreCase(pkgId)) .FirstOrDefault() .Adaptive(pkg => { if (pkg != null) { var index = entries.IndexOf(pkg); targetBillService.UpdateValue("FStdCty", index, left.SubHeadProperty(this.BusinessInfo.GetEntity("SubHeadEntity1")).FieldProperty <decimal>(this.BusinessInfo.GetField("FPHMXStdCty"))); } //end if }); //设置默认包装。 targetBillService.SetItemValueByID("FPackageId", pkgId, -1); } //end if //设置有效期。 if (targetBillView.Model.GetValue("FEnableExpiry").ToType <bool>()) { targetBillService.UpdateValue("FExpPeriod", -1, left.SubHeadProperty(this.BusinessInfo.GetEntity("SubHeadEntity1")).FieldProperty <int>(this.BusinessInfo.GetField("FExpPeriod"))); targetBillService.UpdateValue("FExpUnit", -1, left.SubHeadProperty(this.BusinessInfo.GetEntity("SubHeadEntity1")).FieldProperty <string>(this.BusinessInfo.GetField("FExpUnit"))); } //end if return(right); }).ToArray(); //如果数据包没有关联,则新增 var unmatchDataEntities = dataEntites.Where(data => (mirrorids.Contains(data.MasterId <int>()) == false)) .ToArray(); foreach (var data in unmatchDataEntities) { targetBillView.AddNew(); targetBillService.UpdateValue("FNumber", -1, data.BDNumber()); targetBillService.UpdateValue("FName", -1, new LocaleValue(data.BDName(this.Context))); targetBillService.UpdateValue("FSpecification", -1, new LocaleValue(data.FieldProperty <LocaleValue>(this.BusinessInfo.GetField("FSpecification")).Value(this.Context))); //基本 data.SubHeadProperty(this.BusinessInfo.GetEntity("SubHeadEntity")) .Adaptive(sub => { this.BusinessInfo.GetField("FBaseUnitId").AsType <BaseDataField>() .Adaptive(field => { if (!sub.FieldProperty <DynamicObject>(field).FieldRefProperty <bool>(field, "FPHMXEA")) { targetBillService.UpdateValue("FEnableCapacity", -1, true); targetBillService.UpdateValue("FCapacityUnit", -1, new LocaleValue(sub.FieldProperty <DynamicObject>(field).BDName(this.Context))); targetBillService.UpdateValue("FCapacityScale", -1, sub.FieldProperty <DynamicObject>(field).FieldRefProperty <int>(field, "FPrecision")); } //end if }); }); //库存 data.SubHeadProperty(this.BusinessInfo.GetEntity("SubHeadEntity1")) .Adaptive(sub => { //设置分录包装。 var pkgId = sub.FieldProperty <DynamicObject>(this.BusinessInfo.GetField("FPHMXPkgId")).PkId <string>(); if (targetBusinessInfo.GetEntity("FPackageEntry").DefaultRows < 1) { targetBillView.Model.InsertEntryRow("FPackageEntry", 0); } targetBillService.SetItemValueByID("FEntryPackageId", pkgId, 0); if (targetBillView.Model.GetValue("FEnableCapacity").ToType <bool>()) { targetBillService.UpdateValue("FStdCty", 0, sub.FieldProperty <decimal>(this.BusinessInfo.GetField("FPHMXStdCty"))); } //end if //设置默认包装。 targetBillService.SetItemValueByID("FPackageId", pkgId, -1); }); targetBillService.UpdateValue("FEnableLot", -1, data.SubHeadProperty(this.BusinessInfo.GetEntity("SubHeadEntity1")).FieldProperty <bool>(this.BusinessInfo.GetField("FIsBatchManage"))); targetBillService.UpdateValue("FEnableExpiry", -1, data.SubHeadProperty(this.BusinessInfo.GetEntity("SubHeadEntity1")).FieldProperty <bool>(this.BusinessInfo.GetField("FIsKFPeriod"))); targetBillService.UpdateValue("FExpPeriod", -1, data.SubHeadProperty(this.BusinessInfo.GetEntity("SubHeadEntity1")).FieldProperty <int>(this.BusinessInfo.GetField("FExpPeriod"))); targetBillService.UpdateValue("FExpUnit", -1, data.SubHeadProperty(this.BusinessInfo.GetEntity("SubHeadEntity1")).FieldProperty <string>(this.BusinessInfo.GetField("FExpUnit"))); targetBillService.UpdateValue("FLotExpiryUnique", -1, data.SubHeadProperty(this.BusinessInfo.GetEntity("SubHeadEntity1")).FieldProperty <bool>(this.BusinessInfo.GetField("FIsExpParToFlot"))); targetBillService.SetItemValueByID("FMirrorId", data.PkId <int>(), -1); targetDataObjects.Add(targetBillView.Model.DataObject); }//end foreach //统一调用上传操作。 if (targetDataObjects.Any()) { var op = targetDataObjects.DoNothing(this.Context, targetBusinessInfo, "Upload"); this.OperationResult.MergeResult(op); } //end if } //end method
}//end method /// <summary> /// 执行下推生成目标单据。 /// </summary> /// <param name="ctx">上下文对象。</param> /// <param name="args">生成目标单据参数。</param> /// <returns>返回操作结果。</returns> public IOperationResult Push(Context ctx, GenTargetArgs[] genArgs) { var operationResult = new OperationResult(); if (!genArgs.Any()) { return(operationResult); } var convertService = ServiceHelper.GetService <IConvertService>(); var doNothingService = ServiceHelper.GetService <IDoNothingService>(); var uploadOption = default(OperateOption); var proxy = new BillBenchPlugInProxy(); foreach (var arg in genArgs) { //初始化单据工作台代理。 var metadata = FormMetaDataCache.GetCachedFormMetaData(ctx, arg.TargetFormId); var billView = metadata.CreateBillView(ctx); var executeContext = new BOSActionExecuteContext(billView); proxy.Initialize(ctx, billView); var rule = convertService.GetConvertRule(ctx, arg.ConvertRuleId, true).Adaptive(item => item == null ? default(ConvertRuleElement) : item.Rule); if (rule == null) { throw new KDBusinessException(string.Empty, "未配置有效的单据转换规则!"); } var sourceEntryKey = rule.Policies.Where(p => p is DefaultConvertPolicyElement) .Select(p => p.ToType <DefaultConvertPolicyElement>()) .FirstOrDefault().SourceEntryKey; var selectedRows = arg.DataRows.Select(row => new ListSelectedRow(row.SBillId.ToString(), row.SId.ToString(), 0, arg.SourceFormId) { EntryEntityKey = sourceEntryKey }).ToArray(); PushArgs pushArgs = new PushArgs(rule, selectedRows); proxy.FireAfterCreatePushArgs(new AfterCreatePushArgsEventArgs(rule, pushArgs)); var pushResult = convertService.Push(ctx, pushArgs); operationResult.MergeResult(pushResult); //整理下推生成的数据包。 var dataEntities = pushResult.TargetDataEntities.Select(data => data.DataEntity).ToArray(); //逐行赋值。 foreach (var data in dataEntities) { billView.Edit(data); billView.RuleContainer.Suspend(); billView.Model.SetValue("FDate", arg.Date); billView.Model.SetItemValueByID("FPHMXWMSFormId", arg.ObjectTypeId, -1); billView.Model.SetValue("FPHMXWMSBillId", arg.BillId.ToString()); billView.Model.SetValue("FPHMXWMSBillNo", arg.BillNo); proxy.FireAfterCreateTargetData(new AfterCreateTargetDataEventArgs(rule, operationResult, arg.DataRows)); billView.RuleContainer.Resume(executeContext); }//end foreach //调用上传操作完成暂存、保存、提交、审核一系列操作。 var uploadOperation = metadata.BusinessInfo.GetForm().FormOperations.Where(operation => operation.Operation.Contains("Upload")).FirstOrDefault(); if (uploadOperation == null) { throw new KDBusinessException(string.Empty, "未配置有效的上传操作!"); }//end if uploadOption = OperateOption.Create(); uploadOption.SetIgnoreWarning(true); uploadOption.SetIgnoreInteractionFlag(true); uploadOption.SetThrowWhenUnSuccess(false); proxy.FireBeforeUploadTargetData(new BeforeUploadTargetDataEventArgs(rule, dataEntities, arg, uploadOption)); try { var uploadResult = doNothingService.DoNothingWithDataEntity(ctx, metadata.BusinessInfo, dataEntities, uploadOperation.Operation, uploadOption); operationResult.MergeResult(uploadResult); } catch { var inner = uploadOption.GetVariableValue <IOperationResult>(BOSConst.CST_KEY_OperationResultKey); if (inner != null) { operationResult.MergeResult(inner); } else { throw; } } //end catch } //end foreach return(operationResult); }//end method
public ServiceResult ExecuteService(string data) { ServiceResult result = new ServiceResult(); if (data.IsNullOrEmptyOrWhiteSpace()) { return(result); } String EnableCapacity; var ctx = this.KDContext.Session.AppContext; // 检查传入字符串数据 if (this.IsContextExpired(result)) { return(result); } // 检查传入参数 if (string.IsNullOrWhiteSpace(data)) { result.Code = (int)ResultCode.Fail; result.Message = "传入表单数据不能为空!"; return(result); } try { //序列化 JavaScriptSerializer Serializer = new JavaScriptSerializer(); //List<InputData> input = JsonConvert.DeserializeObject<List<InputData>>(data); List <FinalInputData> FinalInput = new List <FinalInputData>(); List <InputData> Input = Serializer.Deserialize <List <InputData> >(data); FinalInput = Input.GroupBy(x => x.FCONTACTID).Select(x => new FinalInputData { FCONTACTID = x.Key, FinalInputDataGroupByContactId = x.ToList() }).ToList(); foreach (var items in FinalInput) { var formId = "BAH_WMS_OutNotice"; var metadata = FormMetaDataCache.GetCachedFormMetaData(ctx, formId); var billView = metadata.CreateBillView(ctx); var billService = billView.AsDynamicFormViewService(); billView.AddNew(); billService.SetItemValueByNumber("FBillTypeId", items.FinalInputDataGroupByContactId.FirstOrDefault().FBillTypeNumber, -1); billService.SetItemValueByID("FPHMXTargetFormId", items.FinalInputDataGroupByContactId.FirstOrDefault().FPHMXTargetFormId, -1); // billService.SetItemValueByNumber("FPHMXConvertRuleId", items.FinalInputDataGroupByContactId.FirstOrDefault().FPHMXConvertRuleNumber, -1); billService.SetItemValueByID("FBatchWHId", items.FinalInputDataGroupByContactId.FirstOrDefault().FWHID, -1); billService.SetItemValueByID("FBatchOwnerId", items.FinalInputDataGroupByContactId.FirstOrDefault().FOWNERID, -1); billService.SetItemValueByID("FContactId", items.FCONTACTID, -1); billService.SetItemValueByNumber("FPHMXProduceId", items.FinalInputDataGroupByContactId.FirstOrDefault().FPHMXProduceId, -1); billView.Model.BatchCreateNewEntryRow("FEntity", items.FinalInputDataGroupByContactId.Count()); for (int i = 0; i < items.FinalInputDataGroupByContactId.Count(); i++) { JSONObject datas = new JSONObject(); billView.Model.SetItemValueByID("FMaterialId", items.FinalInputDataGroupByContactId[i].FMaterialId, i); billView.Model.SetItemValueByID("FLocId", items.FinalInputDataGroupByContactId[i].FFromLocId, i); billView.Model.SetItemValueByID("FTrackNo", items.FinalInputDataGroupByContactId[i].FTrackNo, i); DynamicObject FMaterialId = billView.Model.GetValue("FMaterialId", i) as DynamicObject; DynamicObjectCollection WarehouseSub = FMaterialId["WarehouseSub"] as DynamicObjectCollection; EnableCapacity = WarehouseSub.FirstOrDefault()["EnableCapacity"].ToString(); billView.Model.SetItemValueByID("FPackageId", items.FinalInputDataGroupByContactId[i].FPackageId, i); //billView.Model.SetValue("FDirectionForQty", input[i].FDirectionForQty, i); if (EnableCapacity == "False") { billView.Model.SetValue("FQty", items.FinalInputDataGroupByContactId[i].FQty, i); billView.Model.SetItemValueByID("FUnitId", items.FinalInputDataGroupByContactId[i].FUnitId, i); } else { if (items.FinalInputDataGroupByContactId[i].FAvgCty == 0) { billView.Model.SetValue("FAvgCty", items.FinalInputDataGroupByContactId[i].FAvgCty, i); billView.Model.SetValue("FCty", items.FinalInputDataGroupByContactId[i].FCty, i); } else { billView.Model.SetValue("FAvgCty", items.FinalInputDataGroupByContactId[i].FAvgCty, i); billView.Model.SetValue("FQty", items.FinalInputDataGroupByContactId[i].FQty, i); billView.Model.SetItemValueByID("FUnitId", items.FinalInputDataGroupByContactId[i].FUnitId, i); } } } // billView.Model.ClearNoDataRow(); //var op = billView.Model.DataObject.DoNothing(ctx, billView.BillBusinessInfo, "Upload"); bool op = billView.InvokeFormOperation("Save"); bool op1 = billView.InvokeFormOperation("Submit"); bool op2 = billView.InvokeFormOperation("Audit"); List <OutboundDetailLinkInDetailDto.OutboundDetailEntryLinkInNotice> pushdatas = new List <OutboundDetailLinkInDetailDto.OutboundDetailEntryLinkInNotice>(); for (int i = 0; i < items.FinalInputDataGroupByContactId.Count(); i++) { OutboundDetailLinkInDetailDto.OutboundDetailEntryLinkInNotice pushdata = new OutboundDetailLinkInDetailDto.OutboundDetailEntryLinkInNotice(); pushdata.SourceEntryId = (long)billView.Model.GetEntryPKValue("FEntity", i); pushdata.PHMXWgt = items.FinalInputDataGroupByContactId[i].FPHMXWgt; pushdatas.Add(pushdata); } var back = CreateNewBillsFromInNoticeEntities(ctx, pushdatas); //foreach (var entry in billView.Model.) //{ //} result.Code = op2 == true ? 1 : 0; result.Message = op2 == true ? "成功生成" : "生成失败"; billView.Close(); } } catch (Exception ex) { result.Code = (int)ResultCode.Fail; result.Message = ex.Message; Logger.Error(this.GetType().AssemblyQualifiedName, ex.Message, ex); } return(result); }
public ServiceResult ExecuteService(string data) { ServiceResult result = new ServiceResult(); String EnableCapacity; if (data.IsNullOrEmptyOrWhiteSpace()) { return(result); } var ctx = this.KDContext.Session.AppContext; // 检查传入字符串数据 if (this.IsContextExpired(result)) { return(result); } // 检查传入参数 if (string.IsNullOrWhiteSpace(data)) { result.Code = (int)ResultCode.Fail; result.Message = "传入表单数据不能为空!"; return(result); } try { //序列化 JavaScriptSerializer Serializer = new JavaScriptSerializer(); List <Ajust> input = Serializer.Deserialize <List <Ajust> >(data); // var formId = "BAH_WMS_Move"; var metadata = FormMetaDataCache.GetCachedFormMetaData(ctx, formId); var billView = metadata.CreateBillView(ctx); var billService = billView.AsDynamicFormViewService(); billView.AddNew(); var items = input[0]; billService.SetItemValueByID("FBatchFromWHId", items.FFROMWHID, -1); billService.SetItemValueByID("FBatchFromOwnerId", items.FFROMOWNERID, -1); // billView.Model.ClearNoDataRow(); billView.Model.BatchCreateNewEntryRow("FEntity", input.Count()); for (int i = 0; i < input.Count(); i++) { billView.Model.SetItemValueByID("FMaterialId", input[i].FMaterialId, i); DynamicObject FMaterialId = billView.Model.GetValue("FMaterialId", i) as DynamicObject; if (FMaterialId == null) { result.Code = (int)ResultCode.Fail; result.Message = "该物料不存在或已禁用!"; return(result); } else { DynamicObjectCollection WarehouseSub = FMaterialId["WarehouseSub"] as DynamicObjectCollection; EnableCapacity = WarehouseSub.FirstOrDefault()["EnableCapacity"].ToString(); } billView.Model.SetValue("FFromTrackNo", input[i].FFROMTrackNo, i); billView.Model.SetItemValueByID("FFromLocId", input[i].FFROMLocId, i); billView.Model.SetItemValueByID("FToLocId", input[i].FTOLocId, i); billView.Model.SetValue("FToTrackNo", input[i].FTOTrackNo, i); //billView.Model.SetItemValueByID("FPackageId",input[i].FPackageId, i); billView.Model.SetItemValueByID("FFromPackageId", input[i].FFromPackageId, i); billView.Model.SetValue("FExpPeriod", input[i].FExpPeriod, i); billView.Model.SetValue("FExpUnit", input[i].FExpUnit, i); if (EnableCapacity == "False") { billView.Model.SetValue("FFromQty", input[i].FFromQty, i); billView.Model.SetItemValueByID("FFromUnitId", input[i].FFromUnitId, i); } else { if (input[i].FFromAvgCty > 0) { billView.Model.SetValue("FFromAvgCty", input[i].FFromAvgCty, i); billView.Model.SetValue("FFromQty", input[i].FFromQty, i); billView.Model.SetItemValueByID("FFromUnitId", input[i].FFromUnitId, i); } else { billView.Model.SetValue("FFromAvgCty", input[i].FFromAvgCty, i); billView.Model.SetValue("FFromQty", input[i].FFromQty, i); billView.Model.SetValue("FFromCty", input[i].FFromCty, i); } } billView.Model.SetValue("FLotNo", input[i].FLotNo, i); if (input[i].FProduceDate != null) { billView.Model.SetValue("FProduceDate", input[i].FProduceDate, i); } } billView.Model.ClearNoDataRow(); var op = billView.Model.DataObject.DoNothing(ctx, billView.BillBusinessInfo, "Upload"); result.Code = op.IsSuccess ? (int)ResultCode.Success : (int)ResultCode.Fail; result.Message = op.GetResultMessage(); } catch (Exception ex) { result.Code = (int)ResultCode.Fail; result.Message = ex.Message; Logger.Error(this.GetType().AssemblyQualifiedName, ex.Message, ex); } return(result); }