コード例 #1
0
        public DynamicObject GetSimpleExtensionByNumber(String number)
        {
            FormMetadata meta = MetaDataServiceHelper.Load(context, Constant.FormID.WJ_Extension) as FormMetadata;

            // 构建查询参数,设置过滤条件
            QueryBuilderParemeter queryParam = new QueryBuilderParemeter
            {
                FormId       = Constant.FormID.WJ_Extension,
                BusinessInfo = meta.BusinessInfo,

                FilterClauseWihtKey = string.Format(" {0} = '{1}' ",
                                                    meta.BusinessInfo.GetForm().NumberFieldKey,
                                                    number)
            };

            var bdObjs = BusinessDataServiceHelper.Load(context,
                                                        meta.BusinessInfo.GetDynamicObjectType(),
                                                        queryParam);

            if (bdObjs.Length == 1)
            {
                return(bdObjs.FirstOrDefault());
            }
            else if (bdObjs.Length == 0)
            {
                return(null);
            }
            else
            {
                throw new Exception("编码 " + number + " formId " + Constant.FormID.WJ_Extension + "找到多个数据");
            }
        }
コード例 #2
0
        private bool Check(CheckPara para, string formKey, string formCaption, string tableName, string entryFormKey, out string errInfor)
        {
            errInfor = "";
            QueryBuilderParemeter qbPara = GetQBPara(para, formKey, tableName, entryFormKey);

            try
            {
                DynamicObjectCollection datas = QueryServiceHelper.GetDynamicObjectCollection(para.ctx, qbPara);
                if (datas != null && datas.Count > 0)
                {
                    errInfor = string.Format("{4} 单号 {1} 物料编码 {2} 物料名称 {3}  单位酶活量{0} ", datas[0]["FJNUnitEnzymes"],
                                             datas[0]["FBillNo"],
                                             datas[0]["FMatNumber"],
                                             datas[0]["FMatName"], formCaption);

                    return(true);
                }
            }
            catch (Exception ex)
            {
                return(false);
            }

            return(false);
        }
コード例 #3
0
        /// <summary>
        /// 根据编码获取客户信息
        /// </summary>
        /// <param name="ctx"></param>
        /// <param name="fNumber"></param>
        /// <returns></returns>
        private K3CustomerInfo GetCustomerByNo(Context ctx, string fNumber)
        {
            if (GetCustomerByNo(fNumber) != null)
            {
                return(GetCustomerByNo(fNumber));
            }

            QueryBuilderParemeter para = new QueryBuilderParemeter();

            para.FormId      = "BD_Customer";
            para.SelectItems = SelectorItemInfo.CreateItems("FCreateOrgId,FUseOrgId,FNumber,FShortName,FName,FCOUNTRY,FAddress,FZIP,FTEL,FSELLER,FSALDEPTID,FCustTypeId,FTRADINGCURRID,FTaxType,FTaxRate,FPriority,FIsTrade,F_HS_CustomerRegisteredMail,F_HS_Grade,F_HS_SpecialDemand,F_HS_TaxNum,FPRICELISTID,F_HS_CustomerPurchaseMail");

            if (!string.IsNullOrEmpty(fNumber))
            {
                para.FilterClauseWihtKey = " FNumber ='" + fNumber + "' and  FUseOrgId = 1";
                var k3Data = Kingdee.BOS.App.ServiceHelper.GetService <IQueryService>().GetDynamicObjectCollection(ctx, para);

                if (k3Data != null && k3Data.Count > 0)
                {
                    List <K3CustomerInfo> custs = BuildSynObjByCollection(ctx, k3Data);

                    if (custs != null && custs.Count > 0)
                    {
                        return(custs[0]);
                    }
                }
            }
            return(null);
        }
コード例 #4
0
        private string GetMultiOrgnNameValues(string orgIdStrings)
        {
            List <string> list   = new List <string>();
            string        result = string.Empty;

            if (orgIdStrings.Trim().Length > 0)
            {
                IQueryService         service = Kingdee.BOS.Contracts.ServiceFactory.GetService <IQueryService>(base.Context);
                QueryBuilderParemeter para    = new QueryBuilderParemeter
                {
                    FormId              = "ORG_Organizations",
                    SelectItems         = SelectorItemInfo.CreateItems("FNAME"),
                    FilterClauseWihtKey = string.Format(" FORGID IN ({0}) AND FLOCALEID={1}", orgIdStrings, base.Context.UserLocale.LCID)
                };
                DynamicObjectCollection dynamicObjectCollection = service.GetDynamicObjectCollection(base.Context, para, null);
                foreach (DynamicObject current in dynamicObjectCollection)
                {
                    list.Add(current["FNAME"].ToString());
                }
                if (list.Count > 0)
                {
                    result = string.Join(",", list.ToArray());
                }
            }
            return(result);
        }
コード例 #5
0
        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);
        }
コード例 #6
0
        public override void BeforeExecuteOperationTransaction(BeforeExecuteOperationTransaction e)
        {
            base.BeforeExecuteOperationTransaction(e);

            if (e.DataEntitys.Count() < 1)
            {
                return;
            }
            var dataEntities = e.DataEntitys.ToArray();

            foreach (DynamicObject dataEntry in dataEntities)
            {
                DynamicObject BillEntry = dataEntry["BillEntry"].AsType <DynamicObjectCollection>().First();
                //获取收货通知数据
                string OrginBillNo  = BillEntry["OriginBillNo"].ToString();
                string OriginFormId = "BAH_WMS_InNotice";

                FormMetadata          meta       = MetaDataServiceHelper.Load(this.Context, OriginFormId) as FormMetadata;
                QueryBuilderParemeter queryParam = new QueryBuilderParemeter();
                queryParam.FormId       = OriginFormId;
                queryParam.BusinessInfo = meta.BusinessInfo;

                queryParam.FilterClauseWihtKey = string.Format(" {0} = '{1}' ", meta.BusinessInfo.GetBillNoField().Key, OrginBillNo);

                var objs = BusinessDataServiceHelper.Load(this.Context, meta.BusinessInfo.GetDynamicObjectType(), queryParam);

                if (objs[0]["FBAHGenTargetStatus"].ToString().Equals('B') == true)
                {
                    throw new Exception(string.Format("编号为{0}的收货通知已生成目标单据,不允许反审核!", OrginBillNo));
                }
            }
        }
コード例 #7
0
        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
コード例 #8
0
ファイル: YDLCommService.cs プロジェクト: gordonjie/VTRERP
        /// <summary>
        /// 来源单获取日期
        /// </summary>
        /// <param name="ctx"></param>
        /// <param name="billData"></param>
        /// <param name="para"></param>
        /// <returns></returns>
        public DynamicObjectCollection GetBillDataEntryDate(Kingdee.BOS.Context ctx,
                                                            DynamicObject billData,
                                                            JNQTYRatePara para)
        {
            var formKey   = billData["FBILLFORMID"].ToString();
            var lotFldKey = billData["FLOTFIELDKEY"].ToString();
            var billId    = billData["FBILLID"].ToString();
            var matFldKey = "FMaterialId";
            var lotid     = billData["flotid"].ToString();
            var matid     = billData["FMaterialId"].ToString();
            QueryBuilderParemeter qbPara = new QueryBuilderParemeter();

            qbPara.FormId = formKey;
            qbPara.FilterClauseWihtKey = string.Format(" fid ={0} And {1} ={2} And {3}.FNumber ='{4}' And FAuxPropId={5} ",
                                                       billId, lotFldKey, lotid, matFldKey, para.MaterialNumber, para.AuxPropId);
            qbPara.SelectItems = SelectorItemInfo.CreateItems("FPRODUCEDATE,FEXPIRYDATE");
            DynamicObjectCollection datas = null;

            try
            {
                datas = Kingdee.BOS.ServiceHelper.QueryServiceHelper.GetDynamicObjectCollection(ctx, qbPara);
            }
            catch (Exception ex)
            {
                return(datas);
            }
            return(datas);
        }
コード例 #9
0
        protected List <EnumItem> GetOrganization(Context ctx)
        {
            List <EnumItem>         list  = new List <EnumItem>();
            List <SelectorItemInfo> list2 = new List <SelectorItemInfo>();

            list2.Add(new SelectorItemInfo("FORGID"));
            list2.Add(new SelectorItemInfo("FNUMBER"));
            list2.Add(new SelectorItemInfo("FNAME"));
            string text = this.GetInFilter("FORGID", this.lstSalOrg);

            text += string.Format(" AND FORGFUNCTIONS LIKE '%{0}%' ", 101L.ToString());
            QueryBuilderParemeter para = new QueryBuilderParemeter
            {
                FormId              = "ORG_Organizations",
                SelectItems         = list2,
                FilterClauseWihtKey = text
            };
            DynamicObjectCollection dynamicObjectCollection = QueryServiceHelper.GetDynamicObjectCollection(base.Context, para, null);

            foreach (DynamicObject current in dynamicObjectCollection)
            {
                list.Add(new EnumItem(new DynamicObject(EnumItem.EnumItemType))
                {
                    EnumId  = current["FORGID"].ToString(),
                    Value   = current["FORGID"].ToString(),
                    Caption = new LocaleValue(Convert.ToString(current["FName"]), base.Context.UserLocale.LCID)
                });
            }
            return(list);
        }
コード例 #10
0
        /// <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);
        }
コード例 #11
0
        /// <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);
        }
コード例 #12
0
        /// <summary>
        /// queryservice取数方案,通过业务对象来获取数据,推荐使用
        /// </summary>
        /// <returns></returns>
        public DynamicObjectCollection GetQueryDatas()
        {
            QueryBuilderParemeter paramCatalog = new QueryBuilderParemeter()
            {
                FormId = "",                                                    //取数的业务对象
                FilterClauseWihtKey = "",                                       //过滤条件,通过业务对象的字段Key拼装过滤条件
                SelectItems         = SelectorItemInfo.CreateItems("", "", ""), //要筛选的字段【业务对象的字段Key】,可以多个,如果要取主键,使用主键名
            };

            DynamicObjectCollection dyDatas = Kingdee.BOS.ServiceHelper.QueryServiceHelper.GetDynamicObjectCollection(this.Context, paramCatalog);

            return(dyDatas);
        }
コード例 #13
0
        /// <summary>
        /// queryservice取数方案,通过业务对象来获取数据,推荐使用
        /// </summary>
        /// <returns></returns>
        public DynamicObjectCollection GetQueryDatas(string filter)
        {
            QueryBuilderParemeter paramCatalog = new QueryBuilderParemeter()
            {
                FormId = this.View.GetFormId(),                                                          //取数的业务对象
                FilterClauseWihtKey = filter,                                                            //过滤条件,通过业务对象的字段Key拼装过滤条件
                SelectItems         = SelectorItemInfo.CreateItems("FID", "FBILLNO", "FDOCUMENTSTATUS"), //要筛选的字段【业务对象的字段Key】,可以多个,如果要取主键,使用主键名
            };

            DynamicObjectCollection dyDatas = QueryServiceHelper.GetDynamicObjectCollection(this.Context, paramCatalog);

            return(dyDatas);
        }
コード例 #14
0
        /// <summary>
        /// 根据单据体内码,加载单据内码
        /// </summary>
        /// <param name="targetBusinessInfo"></param>
        /// <param name="entityKey"></param>
        /// <param name="entityIds"></param>
        /// <returns></returns>
        private HashSet <long> LoadTargetBillIds(
            BusinessInfo targetBusinessInfo,
            string entityKey,
            HashSet <long> entityIds)
        {
            // 根据单据体内码,读取取下游单据的单据内码
            HashSet <long> billIds = new HashSet <long>();
            Entity         entity  = targetBusinessInfo.GetEntity(entityKey);

            if (entity is HeadEntity)
            {
                foreach (var billId in entityIds)
                {
                    billIds.Add(billId);
                }
            }
            else
            {
                string entityPKFieldNameAs       = string.Concat(entity.Key, "_", entity.EntryPkFieldName);
                QueryBuilderParemeter queryParem = new QueryBuilderParemeter()
                {
                    FormId       = targetBusinessInfo.GetForm().Id,
                    BusinessInfo = targetBusinessInfo,
                };
                queryParem.SelectItems.Add(new SelectorItemInfo(targetBusinessInfo.GetForm().PkFieldName));
                queryParem.SelectItems.Add(new SelectorItemInfo(entityPKFieldNameAs));
                queryParem.ExtJoinTables.Add(
                    new ExtJoinTableDescription()
                {
                    TableName   = "table(fn_StrSplit(@EntryPKValue,',',1))",
                    TableNameAs = "sp",
                    FieldName   = "FID",
                    ScourceKey  = entityPKFieldNameAs,
                });
                queryParem.SqlParams.Add(new SqlParam("@EntryPKValue", KDDbType.udt_inttable, entityIds.ToArray()));

                IQueryService           queryService = ServiceHelper.GetService <IQueryService>();
                DynamicObjectCollection rows         = queryService.GetDynamicObjectCollection(this.Context, queryParem);
                foreach (var row in rows)
                {
                    long billId = Convert.ToInt64(row[0]);
                    if (billIds.Contains(billId) == false)
                    {
                        billIds.Add(billId);
                    }
                }
            }
            return(billIds);
        }
コード例 #15
0
        private string BillNo(string id, string listName, string selectColumn, string idColumn)
        {
            string result = string.Empty;

            if (id.Trim().Length > 0)
            {
                IQueryService         service = ServiceFactory.GetService <IQueryService>(base.Context);
                QueryBuilderParemeter para    = new QueryBuilderParemeter
                {
                    FormId              = listName,
                    SelectItems         = SelectorItemInfo.CreateItems(string.Format("{0},FID", selectColumn)),
                    FilterClauseWihtKey = string.Format(" FID = {0} ", id)
                };
                DynamicObjectCollection dynamicObjectCollection = service.GetDynamicObjectCollection(base.Context, para, null);
                result = dynamicObjectCollection[0][selectColumn].ToString();
            }
            return(result);
        }
コード例 #16
0
        private string BillNo(string id)
        {
            string result = string.Empty;

            if (id.Trim().Length > 0)
            {
                IQueryService         service = ServiceFactory.GetService <IQueryService>(base.Context);
                QueryBuilderParemeter para    = new QueryBuilderParemeter
                {
                    FormId              = "SAL_SaleOrder",
                    SelectItems         = SelectorItemInfo.CreateItems("FBILLNO,FID"),
                    FilterClauseWihtKey = string.Format(" FID = {0} ", id)
                };
                DynamicObjectCollection dynamicObjectCollection = service.GetDynamicObjectCollection(base.Context, para, null);
                result = dynamicObjectCollection[0]["FBILLNO"].ToString();
            }
            return(result);
        }
コード例 #17
0
        public void GetDefualtOrgNumber()
        {
            QueryBuilderParemeter para = new QueryBuilderParemeter();

            para.FormId               = "ORG_Organizations";
            para.SelectItems          = SelectorItemInfo.CreateItems("FNumber,FName");
            para.OrderByClauseWihtKey = "FOrgID";

            var k3Data = Kingdee.BOS.App.ServiceHelper.GetService <IQueryService>().GetDynamicObjectCollection(this.K3CloudContext, para);

            if (k3Data == null || k3Data.Count == 0)
            {
                DefaultOrgNumber = "100";
                return;
            }

            DefaultOrgNumber = k3Data[0]["FNumber"].ToString();
        }
コード例 #18
0
        /// <summary>
        /// 获取所有勾选行单据编号
        /// </summary>
        /// <returns></returns>
        private DynamicObjectCollection CZ_GetSelectedRowsBillNo()
        {
            string filter = "FID in (";

            string[] fids = CZ_GetSelectedRowsFID();
            foreach (var fid in fids)
            {
                filter += fid + ",";
            }
            filter = filter.TrimEnd(',') + ")";
            QueryBuilderParemeter param = new QueryBuilderParemeter()
            {
                FormId = this.View.GetFormId(),
                FilterClauseWihtKey = filter,
                SelectItems         = SelectorItemInfo.CreateItems("FBILLNO"),
            };

            return(QueryServiceHelper.GetDynamicObjectCollection(this.Context, param));
        }
コード例 #19
0
ファイル: SQLUtils.cs プロジェクト: abbottCheer/K3Cloud
        public static DynamicObject[] GetDynamicObjects(Context ctx, string formId, string filterClauseWihtKey)
        {
            if (!string.IsNullOrEmpty(formId))
            {
                FormMetadata          metaData       = MetaDataServiceHelper.Load(ctx, formId) as FormMetadata;
                DynamicObjectType     type           = metaData.BusinessInfo.GetDynamicObjectType();
                QueryBuilderParemeter queryParemeter = new QueryBuilderParemeter();
                queryParemeter.FormId = formId;

                if (!string.IsNullOrEmpty(filterClauseWihtKey))
                {
                    queryParemeter.FilterClauseWihtKey = filterClauseWihtKey;
                }

                DynamicObject[] objects = BusinessDataServiceHelper.Load(ctx, type, queryParemeter);
                return(objects);
            }

            return(null);
        }
コード例 #20
0
        public override AbsSynchroDataInfo BuildSynchroData(Context ctx, string fNumber, AbsSynchroDataInfo data = null)
        {
            QueryBuilderParemeter para = new QueryBuilderParemeter();

            para.FormId      = "BD_Customer";
            para.SelectItems = SelectorItemInfo.CreateItems("FCreateOrgId,FUseOrgId,FNumber,FShortName,FName,FCOUNTRY,FAddress,FZIP,FTEL,FSELLER,FSALDEPTID,FCustTypeId,FTRADINGCURRID,FPriority,FIsTrade,F_HS_CustomerRegisteredMail");

            if (!string.IsNullOrEmpty(fNumber))
            {
                para.FilterClauseWihtKey = " FNumber ='" + fNumber + "' and  FUseOrgId = 1";
                var k3Data = Kingdee.BOS.App.ServiceHelper.GetService <IQueryService>().GetDynamicObjectCollection(ctx, para);

                if (k3Data != null && k3Data.Count > 0)
                {
                    List <K3CustomerInfo> custs = BuildSynObjByCollection(ctx, k3Data);
                    return(custs[0]);
                }
            }
            return(null);
        }
コード例 #21
0
        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);
        }
コード例 #22
0
        public static DynamicObjectCollection QueryData(Context ctx, string formId, string strSelect, string strFilter)
        {
            DynamicObjectCollection objects;
            QueryBuilderParemeter   paremeter2 = new QueryBuilderParemeter {
                FormId              = formId,
                SelectItems         = SelectorItemInfo.CreateItems(strSelect),
                FilterClauseWihtKey = strFilter
            };
            QueryBuilderParemeter para    = paremeter2;
            IQueryService         service = Kingdee.BOS.Contracts.ServiceFactory.GetService <IQueryService>(ctx);

            try
            {
                objects = service.GetDynamicObjectCollection(ctx, para, null);
            }
            finally
            {
                Kingdee.BOS.Contracts.ServiceFactory.CloseService(service);
            }
            return(objects);
        }
コード例 #23
0
        public static string GetSchemeId(Context ctx, string filterSchemeFormId)
        {
            QueryBuilderParemeter paremeter2 = new QueryBuilderParemeter {
                FormId      = "BOS_FilterScheme",
                SelectItems = SelectorItemInfo.CreateItems("FSCHEMEID")
            };
            QueryBuilderParemeter para = paremeter2;

            para.FilterClauseWihtKey = string.Format("FFormID=@FFormID and FIsDefault='1' and FUserId = -1", new object[0]);
            List <SqlParam> paramList = new List <SqlParam> {
                new SqlParam("@FFormID", 0x10, filterSchemeFormId)
            };
            DynamicObjectCollection objects = QueryServiceHelper.GetDynamicObjectCollection(ctx, para, paramList);
            string str = string.Empty;

            if ((objects != null) && (objects.Count != 0))
            {
                return(objects[0]["FSCHEMEID"].ToString());
            }
            return(str);
        }
コード例 #24
0
 public override void BarItemClick(BarItemClickEventArgs e)
 {
     base.BarItemClick(e);
     if (e.BarItemKey.Equals("tbSubmitBank"))
     {
         QueryBuilderParemeter queryParam = new QueryBuilderParemeter();
         queryParam.FormId       = this.View.BillBusinessInfo.GetForm().Id;
         queryParam.BusinessInfo = this.View.BillBusinessInfo;
         queryParam.SelectItems.Add(new SelectorItemInfo("F_PAEZ_SFYQZF"));
         List <long> billIds = (from p in this.ListView.SelectedRowsInfo
                                select Convert.ToInt64(p.PrimaryKeyValue)).ToList();
         queryParam.FilterClauseWihtKey = string.Format(" {0} IN ( {1} ) ",
                                                        this.ListView.BillBusinessInfo.GetForm().PkFieldName,
                                                        string.Join(",", billIds));
         var            rows   = QueryServiceHelper.GetDynamicObjectCollection(this.Context, queryParam);
         List <Boolean> result = (from z in rows.Where(z => !Convert.ToBoolean(z["F_PAEZ_SFYQZF"]))
                                  select Convert.ToBoolean(z["F_PAEZ_SFYQZF"])).ToList();
         if (result.Count() > 0)
         {
             throw new Exception("所选单据存在没有勾选支持银企付款参数,不允许通过银企进行付款!");
         }
     }
 }
コード例 #25
0
ファイル: YDLCommService.cs プロジェクト: gordonjie/VTRERP
        /// <summary>
        /// 来源单获取单位酶活
        /// </summary>
        /// <param name="ctx"></param>
        /// <param name="billData"></param>
        /// <param name="para"></param>
        /// <returns></returns>
        private decimal GetBillDataEntryRate(Kingdee.BOS.Context ctx,
                                             DynamicObject billData,
                                             JNQTYRatePara para)
        {
            var formKey   = billData["FBILLFORMID"].ToString();
            var lotFldKey = billData["FLOTFIELDKEY"].ToString();
            var billId    = billData["FBILLID"].ToString();
            var matFldKey = "FMaterialId";
            var lotid     = billData["flotid"].ToString();
            var matid     = billData["FMaterialId"].ToString();

            QueryBuilderParemeter qbPara = new QueryBuilderParemeter();

            qbPara.FormId = formKey;
            qbPara.FilterClauseWihtKey = string.Format(" fid ={0} And {1} ={2} And {3}.FNumber ='{4}' And FAuxPropId={5} ",
                                                       billId, lotFldKey, lotid, matFldKey, para.MaterialNumber, para.AuxPropId);
            //放到批号主档里过滤
            //if (para.OrgId > 0)
            //{
            //    qbPara.FilterClauseWihtKey +=string.Format ( " And {0}={1} ", GetOrgFldKey( ctx,formKey),para.OrgId );
            //}
            qbPara.SelectItems = SelectorItemInfo.CreateItems("FJNUnitEnzymes");
            try
            {
                DynamicObjectCollection datas = Kingdee.BOS.ServiceHelper.QueryServiceHelper.GetDynamicObjectCollection(ctx, qbPara);
                if (datas != null && datas.Count > 0)
                {
                    return(Convert.ToDecimal(datas[0]["FJNUnitEnzymes"]));
                }
            }
            catch (Exception ex)
            {
                return(0);
            }

            return(0);
        }
コード例 #26
0
        /// <summary>
        /// 是否取消同步操作
        /// </summary>
        /// <param name="srcData"></param>
        /// <returns></returns>
        public override bool IsCancelSynchro(AbsSynchroDataInfo srcData)
        {
            K3CustomerInfo cust = srcData as K3CustomerInfo;

            if (SynSuccList != default(List <string>))
            {
                if (SynSuccList.Count > 0)
                {
                    foreach (var item in SynSuccList)
                    {
                        if (item.CompareTo(cust.FNumber) == 0)
                        {
                            return(false);
                        }
                    }
                }
            }
            QueryBuilderParemeter para = new QueryBuilderParemeter();

            para.FormId      = this.FormKey;
            para.SelectItems = SelectorItemInfo.CreateItems("FNumber");
            if (cust != null)
            {
                para.FilterClauseWihtKey = " FNumber='" + cust.FNumber + "' ";
            }


            var k3Data = Kingdee.BOS.App.ServiceHelper.GetService <IQueryService>().GetDynamicObjectCollection(this.K3CloudContext, para);

            if (k3Data == null || k3Data.Count == 0)
            {
                return(false);
            }

            return(true);
        }
コード例 #27
0
        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);
        }
コード例 #28
0
ファイル: ReturnInventory.cs プロジェクト: chuandongwang/Star
        /// <summary>
        /// 获取库存明细
        /// </summary>
        ///参数为跟踪号或库位编码
        /// <returns>返回服务结果。</returns>
        public ServiceResult ExecuteService(string materialid, string ownerid, string whid)
        {
            var result = new ServiceResult <List <JSONObject> >();
            var ctx    = this.KDContext.Session.AppContext;

            // 检查上下文对象
            if (this.IsContextExpired(result))
            {
                return(result);
            }


            //获取相关信息
            try
            {
                JSONObject        Finaldata   = new JSONObject();
                List <JSONObject> return_data = new List <JSONObject>();
                // TODO: 通过平台动态引擎获取数据
                string sqlSelect = string.Format(@"/*dialect*/
                 SELECT DISTINCT t.FMATERIALID,T3.FNAME AS FMATERIALNAME,T2.FNUMBER AS FMATERIALNUMBER ,t3.FSPECIFICATION,
      CASE T10.FIGNOREINVENTORYTRACKNO WHEN 1 then 'True' ELSE 'False' END AS FIGNOREINVENTORYTRACKNO,
      CASE T11.FENABLELOT WHEN 1 then 'True' ELSE 'False' END AS FENABLELOT ,
	            CASE T11.FENABLEEXPIRY WHEN 1 then 'True' ELSE 'False' END AS FENABLEEXPIRY,
	            CASE T11.FENABLECAPACITY WHEN 1 then 'True' ELSE 'False' END AS FENABLECAPACITY,
	            t11.FCAPACITYSCALE,t12.FCAPACITYUNIT,
      t.FBILLNO AS FTrackNo,T.FLOTNO,FPRODUCEDATE,FEXPIRYDATE,FMQTY,FMAINUNITID, t8.FNAME AS FMainUnitNAME,
      t.FEXPPERIOD, 'D' AS FEXPUNIT,T.FAVGCTY,T.FCTY,
      FLOCID,t6.FNUMBER AS FLocNumber,t5.FNAME AS FLocName, t.FPACKAGEID,t4.FNUMBER AS FPackageNumber ,t7.FNAME AS FPackageName
                FROM dbo.BAH_V_WMS_INVENTORY t
                LEFT JOIN dbo.BAH_T_BD_MATERIAL t2 ON t.FMATERIALID = t2.FID
	            LEFT JOIN dbo.BAH_T_BD_MATERIAL_L t3 ON t.FMATERIALID = t3.FID
	            LEFT JOIN dbo.BAH_T_BD_PACKAGE T4 ON T.FPACKAGEID = T4.FID
	            LEFT JOIN dbo.BAH_T_BD_LOCATION_L t5 ON t.FLOCID = t5.FID
	            LEFT JOIN dbo.BAH_T_BD_LOCATION t6 ON t.FLOCID = t6.FID
	            LEFT JOIN dbo.BAH_T_BD_PACKAGE_L T7 ON T.FPACKAGEID = T7.FID
	            LEFT JOIN dbo.BAH_T_BD_PKGUOM_L T8 ON T4.FMAINUNITID = t8.FENTRYID
	            LEFT JOIN dbo.BAH_T_BD_LOCBASE T9 ON T6.FID = T9.FID
                INNER JOIN BAH_T_BD_LOCCONTROL T10 ON T6.FID = T10.FID
               INNER JOIN dbo.BAH_T_BD_MATWAREHOUSE T11 ON T2.FID = T11.FID
               LEFT JOIN dbo.BAH_T_BD_MATWAREHOUSE_L T12 ON T11.FENTRYID = T12.FENTRYID
	            where  (t2.FNUMBER = '{0}' or t.FBILLNO = '{0}' or t6.FNUMBER = '{0}' ) AND (t9.FUSE = 'Storage' or t9.FUSE = 'Pick') AND T.FOWNERID = '{1}' AND t.fwhid = '{2}'
                 ;", materialid, ownerid, whid);// or a.num is null

                DynamicObjectCollection dataObjectCollection = DBUtils.ExecuteDynamicObject(ctx, sqlSelect, null, null);
                if (dataObjectCollection.Count == 0)
                {
                    result.Code    = (int)ResultCode.Fail;
                    result.Message = "未检索到对应信息!";
                }
                else
                {
                    foreach (DynamicObject dataObject in dataObjectCollection)
                    {
                        JSONObject      data       = new JSONObject();
                        IPackageService pkgService = null;
                        String          FMQtyForShow;
                        try
                        {
                            FormMetadata          meta       = MetaDataServiceHelper.Load(ctx, "BAH_BD_Package") as FormMetadata;
                            QueryBuilderParemeter queryParam = new QueryBuilderParemeter();
                            queryParam.FormId              = "BAH_BD_Package";
                            queryParam.BusinessInfo        = meta.BusinessInfo;
                            queryParam.FilterClauseWihtKey = " FID ='" + dataObject["FPackageId"].ToString() + "' ";
                            var objs = BusinessDataServiceHelper.Load(ctx,
                                                                      meta.BusinessInfo.GetDynamicObjectType(),
                                                                      queryParam).FirstOrDefault();

                            pkgService = PIBDServiceFactory.Instance.GetService <IPackageService>(ctx);
                            var Marray = pkgService.Expand(ctx, objs, decimal.Parse(dataObject["FMQty"].ToString()));
                            FMQtyForShow = string.Join("", Marray.Select(item => string.Concat(item.Qty.ToTrimEndZeroString(), item.Name.Value(ctx))).ToArray());
                        }
                        finally
                        {
                            PIBDServiceFactory.Instance.CloseService(pkgService);
                        }
                        data.Add("FMATERIALID", dataObject["FMATERIALID"].ToString());
                        data.Add("FMATERIALNAME", dataObject["FMATERIALNAME"]);
                        data.Add("FMATERIALNUMBER", dataObject["FMATERIALNUMBER"]);
                        data.Add("FSPECIFICATION", dataObject["FSPECIFICATION"]);

                        data.Add("FIGNOREINVENTORYTRACKNO", dataObject["FIGNOREINVENTORYTRACKNO"]);
                        data.Add("FENABLELOT", dataObject["FENABLELOT"]);
                        data.Add("FENABLEEXPIRY", dataObject["FENABLEEXPIRY"]);
                        data.Add("FENABLECAPACITY", dataObject["FENABLECAPACITY"]);

                        data.Add("FCAPACITYSCALE", dataObject["FCAPACITYSCALE"]);
                        data.Add("FCAPACITYUNIT", dataObject["FCAPACITYUNIT"]);

                        data.Add("FTrackNo", dataObject["FTrackNo"]);
                        data.Add("FLotNo", dataObject["FLotNo"].ToString());

                        if (dataObject["FProduceDate"].ToString() == "0001-01-01 00:00:00")
                        {
                            data.Add("FProduceDate", "");
                        }
                        else
                        {
                            data.Add("FProduceDate", Convert.ToDateTime(dataObject["FProduceDate"].ToString()).ToString("yyyy-MM-dd"));
                        }

                        if (dataObject["FExpiryDate"].ToString() == "0001-01-01 00:00:00")
                        {
                            data.Add("FExpiryDate", "");
                        }
                        else
                        {
                            data.Add("FExpiryDate", Convert.ToDateTime(dataObject["FExpiryDate"].ToString()).ToString("yyyy-MM-dd HH:mm:ss.fff"));
                        }

                        data.Add("FMQty", dataObject["FMQty"].ToString());
                        data.Add("FMainUnitId", dataObject["FMainUnitId"]);
                        data.Add("FMainUnitNAME", dataObject["FMainUnitNAME"]);

                        data.Add("FAVGCTY", dataObject["FAVGCTY"]);
                        data.Add("FCTY", dataObject["FCTY"]);
                        data.Add("FEXPPERIOD", dataObject["FEXPPERIOD"]);
                        data.Add("FEXPUNIT", dataObject["FEXPUNIT"]);

                        data.Add("FLocId", dataObject["FLocId"]);
                        data.Add("FLocNumber", dataObject["FLocNumber"]);
                        data.Add("FLocName", dataObject["FLocName"]);

                        data.Add("FPackageId", dataObject["FPackageId"]);
                        data.Add("FPackageNumber", dataObject["FPackageNumber"]);
                        data.Add("FPackageName", dataObject["FPackageName"]);
                        data.Add("FMQtyForShow", FMQtyForShow);
                        return_data.Add(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);
        }
コード例 #29
0
        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
コード例 #30
0
        /// <summary>
        /// 输入收货明细fid,entryid,输出收货明细详情
        /// </summary>
        /// <param name="billno">收货明细编号</param>
        /// <returns>返回服务结果。</returns>
        public ServiceResult ExecuteService(string SourceBillId, string SourceEntryId)
        {
            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:通过平台动态引擎获取数据


                JSONObject return_data = new JSONObject();

                //客户编码和物料编码

                string sqlSelect = string.Format(@"/*dialect*/
               
               SELECT t.FQty, t.FUnitId,  t4.FNAME AS FUnitName,t.FMQty,T.FMUNITID,t9.FNAME AS FMUnitName, t.FPackageId,
	            t5.FHasJoinMQty,(t.FMQTY - t5.FHasJoinMQty) AS FNeedINBOUNDMQTY,
	            t.FAVGCTY,t.FCTY
                FROM dbo.BAH_T_WMS_INBOUNDENTRY t
	            LEFT JOIN dbo.BAH_V_BD_UNIT_L t4 ON t.FUNITID = t4.fid
	            LEFT JOIN dbo.BAH_T_WMS_INBOUNDENTRY_W t5 ON t.FENTRYID = t5.FENTRYID
                LEFT JOIN dbo.BAH_V_BD_UNIT_L t9 ON t.FMUNITID = t9.fid
                WHERE  t5.FJOINSTATUS = 'A'
	            AND t.FID =  '{0}' 
	            AND T.FENTRYID =  '{1}'
                order by t.FSEQ
                   
                 ;", SourceBillId, SourceEntryId);// or a.num is null

                DynamicObjectCollection mat_objc = DBUtils.ExecuteDynamicObject(ctx, sqlSelect, null, null);
                if (mat_objc.Count == 0)
                {
                    result.Code    = (int)ResultCode.Fail;
                    result.Message = "未检索到对应信息!";
                }
                else
                {
                    List <JSONObject> detail_list = new List <JSONObject>(); //明细信息
                    foreach (DynamicObject data in mat_objc)
                    {
                        JSONObject      each_detail = new JSONObject();
                        IPackageService pkgService  = null;
                        String          FMQtyForShow;
                        String          FHASMQTYForShow;
                        String          FNeedMQTYForShow;
                        try
                        {
                            FormMetadata          meta       = MetaDataServiceHelper.Load(ctx, "BAH_BD_Package") as FormMetadata;
                            QueryBuilderParemeter queryParam = new QueryBuilderParemeter();
                            queryParam.FormId       = "BAH_BD_Package";
                            queryParam.BusinessInfo = meta.BusinessInfo;

                            queryParam.FilterClauseWihtKey = " FID ='" + data["FPackageId"].ToString() + "' ";

                            var objs = BusinessDataServiceHelper.Load(ctx,
                                                                      meta.BusinessInfo.GetDynamicObjectType(),
                                                                      queryParam).FirstOrDefault();

                            pkgService = PIBDServiceFactory.Instance.GetService <IPackageService>(ctx);
                            var Marray = pkgService.Expand(ctx, objs, decimal.Parse(data["FMQty"].ToString()));
                            var Harray = pkgService.Expand(ctx, objs, decimal.Parse(data["FHasJoinMQty"].ToString()));
                            var Narray = pkgService.Expand(ctx, objs, decimal.Parse(data["FNeedINBOUNDMQTY"].ToString()));
                            FMQtyForShow     = string.Join("", Marray.Select(item => string.Concat(item.Qty.ToTrimEndZeroString(), item.Name.Value(ctx))).ToArray());
                            FHASMQTYForShow  = string.Join("", Harray.Select(item => string.Concat(item.Qty.ToTrimEndZeroString(), item.Name.Value(ctx))).ToArray());
                            FNeedMQTYForShow = string.Join("", Narray.Select(item => string.Concat(item.Qty.ToTrimEndZeroString(), item.Name.Value(ctx))).ToArray());
                        }
                        finally
                        {
                            PIBDServiceFactory.Instance.CloseService(pkgService);
                        }

                        each_detail.Add("FQty", data["FQty"]);
                        each_detail.Add("FUnitId", data["FUnitId"]);
                        each_detail.Add("FUnitName", data["FUnitName"]);
                        each_detail.Add("FMQty", data["FMQty"]);
                        each_detail.Add("FMUNITID", data["FMUNITID"]);
                        each_detail.Add("FMUnitName", data["FMUnitName"]);
                        each_detail.Add("FMQtyForShow", FMQtyForShow);
                        each_detail.Add("FHASMQTYForShow", FHASMQTYForShow);
                        each_detail.Add("FNeedMQTYForShow", FNeedMQTYForShow);
                        each_detail.Add("FHASPutMQTY", data["FHasJoinMQty"]);
                        each_detail.Add("FNeedPutMQTY", data["FNeedINBOUNDMQTY"]);
                        each_detail.Add("FAVGCTY", data["FAVGCTY"]);
                        each_detail.Add("FCTY", data["FCTY"]);


                        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);
        }