示例#1
0
        public async Task <ApiResult> GetLogisticsList(PageQueryInputBase input)
        {
            var query = from order in dbContext.Order.Where(x => x.OrderState != Domain.Enums.OrderState.Cancel && x.OrderState != Domain.Enums.OrderState.Create)
                        join logisticstmp in dbContext.Logistics.DefaultIfEmpty() on order.Id equals logisticstmp.OrderId into tmp
                        from logistics in tmp.DefaultIfEmpty()
                        orderby logistics.DeliveTime descending
                        select new GetLogisticsListResponse()
            {
                OrderId         = order.Id,
                Id              = logistics == null ? null : logistics.Id,
                OrderNo         = order.OrderNo,
                LogisticsType   = logistics == null ? null : (int)logistics.LogisticsType,
                LogisticsNo     = logistics.LogisticsNo,
                DeliverName     = logistics.DeliverName,
                DeliverAddress  = logistics.DeliverAddress,
                ReceiverName    = logistics.ReceiverName,
                ReceiverAddress = logistics.ReceiverAddress,
                DeliveTime      = logistics.DeliveTime,
                ReceiveTime     = logistics.ReceiveTime,
                LogisticsState  = logistics == null ? null : (int)logistics.LogisticsState,
            };

            var(Data, Total) = await QueryServiceHelper.PageQuery(query, input.Page, input.Limit);

            return(ApiResult.Ok(new PageQueryResonseBase <GetLogisticsListResponse>(Data, Total)));
        }
示例#2
0
        public async Task <ApiResult> GetLimitedTimeActivitieList(PageQueryInputBase input)
        {
            var query = from activitie in dbContext.LimitedTimeActivitie
                        join goods in dbContext.Goods on activitie.GoodsId equals goods.Id
                        select new GetLimitedTimeActivitieListResponse()
            {
                Id             = activitie.Id,
                GoodsId        = activitie.GoodsId,
                ActivitieName  = activitie.ActivitieName,
                GoodsName      = goods.GoodsName,
                Price          = goods.Price,
                ActivitiePrice = activitie.ActivitiePrice,
                StartTime      = activitie.StartTime,
                EndTime        = activitie.EndTime,
                ShelfState     = activitie.ShelfState,
            };

            var(Data, Total) = await QueryServiceHelper.PageQuery(query.OrderByDescending(x => x.EndTime), input.Page, input.Limit);

            Data.ForEach(x =>
            {
                x.ActivitieState     = DateTime.Now < x.StartTime ? 0 : x.StartTime <DateTime.Now && x.EndTime> DateTime.Now ? 1 : 2;
                x.ActivitieStateInfo = "";
            });
            return(ApiResult.Ok(new PageQueryResonseBase <GetLimitedTimeActivitieListResponse>(Data, Total)));
        }
示例#3
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);
        }
        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);
        }
示例#5
0
        public async Task <ApiResult> GetAccountList(PageQueryInputBase input)
        {
            var query = (from account in efDbContext.Account
                         join user in efDbContext.User on account.Id equals user.AccountId
                         select new GetAccountListResponse
            {
                Id = account.Id,
                LoginName = account.LoginName,
                NickName = account.NickName,
                State = (int)account.State,
                Gender = (int)user.Gender,
                BirthDay = user.BirthDay,
                Address = user.Address,
                Tel = user.Tel,
                UserName = user.UserName
            }).OrderBy(x => x.LoginName);

            var(Data, Total) = await QueryServiceHelper.PageQuery(query, input.Page, input.Limit);

            var accoundIds = Data.Select(x => x.Id).ToList();
            var roles      = await(from role in efDbContext.Role
                                   join userrole in efDbContext.UserRole.Where(ur => accoundIds.Contains(ur.AccountId)) on role.Id equals userrole.RoleId
                                   select new { userrole.AccountId, role.Id, role.RoleName, role.SuperAdmin }).AsNoTracking().ToListAsync();

            Data.ForEach(account =>
            {
                account.Roles = roles.Where(role => role.AccountId == account.Id).Select(role => new GetAccountListResponse.RoleItem()
                {
                    RoleId = role.Id, RoleName = role.RoleName, SuperAdmin = role.SuperAdmin
                });
            });
            return(ApiResult.Ok(new PageQueryResonseBase <GetAccountListResponse>(Data, Total)));
        }
示例#6
0
        public async Task <ApiResult> GetCategoryList(PageQueryInputBase input)
        {
            var query = from category in dbContext.GoodsCategory orderby category.Sort select category;

            var(Data, Total) = await QueryServiceHelper.PageQuery(query, input.Page, input.Limit);

            return(ApiResult.Ok(new PageQueryResonseBase <GoodsCategory>(Data, Total)));
        }
        public async Task <ApiResult> GetEventHandleErrorInfoList(PageQueryInputBase input)
        {
            var query = from eventHandleErrorInfo in dbContext.EventHandleErrorInfo.OrderByDescending(x => x.LogDate) select eventHandleErrorInfo;

            var(Data, Total) = await QueryServiceHelper.PageQuery(query, input.Page, input.Limit);

            return(ApiResult.Ok(new PageQueryResonseBase <Infrastructure.PersistenceObject.EventHandleErrorInfo>(Data, Total)));
        }
示例#8
0
        public async Task <ApiResult> GetFoodsList(PageQueryInputBase input)
        {
            var query = from Foods in dbContext.Foods select new GetFoodsListResponse()
            {
            };

            var(Data, Total) = await QueryServiceHelper.PageQuery(query, input.Page, input.Limit);

            return(ApiResult.Ok(new PageQueryResonseBase <GetFoodsListResponse>(Data, Total)));
        }
示例#9
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);
        }
示例#10
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);
        }
        public async Task <ApiResult> GetGoodsList(PageQueryInputBase input)
        {
            var query = (from goods in efDbContext.Goods.OrderBy(x => x.GoodsName)
                         join category in efDbContext.GoodsCategory on goods.CategoryId equals category.Id
                         select new GetGoodsListResponse()
            {
                Id = goods.Id, CategoryId = category.Id, CategoryName = category.CategoryName, GoodsImage = goods.GoodsImage, GoodsName = goods.GoodsName, ShelfState = goods.ShelfState, Stock = goods.Stock, Price = goods.Price
            }).OrderBy(x => x.GoodsName);

            var(Data, Total) = await QueryServiceHelper.PageQuery(query, input.Page, input.Limit);

            return(ApiResult.Ok(new PageQueryResonseBase <GetGoodsListResponse>(Data, Total)));
        }
示例#12
0
        public async Task <ApiResult> GetPermissionList(PageQueryInputBase input)
        {
            var query = (from permission in dbContext.Permission
                         where permission.FatherId != Guid.Empty
                         join father in dbContext.Permission on permission.FatherId equals father.Id
                         select new GetPermissionListResponse()
            {
                Id = permission.Id,
                ServerName = father.PermissionName,
                PermissionName = permission.PermissionName,
                Path = permission.Path
            }).OrderBy(x => x.ServerName);

            var(Data, Total) = await QueryServiceHelper.PageQuery(query, input.Page, input.Limit);

            return(ApiResult.Ok(new PageQueryResonseBase <GetPermissionListResponse>(Data, Total)));
        }
        public async Task <ApiResult> GetOrderList(PageQueryInputBase input)
        {
            var query = from order in dbContext.Order
                        select new
            {
                UserId     = order.UserId,
                OrderId    = order.Id,
                OrderNo    = order.OrderNo,
                OrderState = order.OrderState,
                TotalPrice = order.TotalPrice,
                CreateTime = order.CreateTime
            };

            var(Data, Total) = await QueryServiceHelper.PageQuery(query.OrderByDescending(x => x.CreateTime), input.Page, input.Limit);

            var orderIds   = Data.Select(x => x.OrderId).ToList();
            var orderItems = dbContext.OrderItem.Where(x => orderIds.Contains(x.OrderId)).Select(item => new
            {
                OrderId   = item.OrderId,
                GoodsName = item.GoodsSnapshot.GoodsName,
                Price     = item.TotalPrice,
                Count     = item.Count
            }).ToList();
            var usernames = (await accountQuery.GetAccountUserNameByIds(new GetAccountUserNameByIdsDto()
            {
                Ids = Data.Select(x => x.UserId).ToList()
            })).GetData <List <GetAccountUserNameByIdsResponse> >();
            var result    = Data.Select(x => new GetOrderListResponse()
            {
                OrderId    = x.OrderId,
                OrderNo    = x.OrderNo,
                UserName   = usernames.FirstOrDefault(y => x.UserId == y.AccountId).Name,
                OrderState = Convert.ToInt32(x.OrderState),
                TotalPrice = x.TotalPrice,
                OrderItems = orderItems.Where(y => y.OrderId == x.OrderId).Select(item => new GetOrderListItemResponse
                {
                    GoodsName = item.GoodsName,
                    Price     = item.Price,
                    Count     = item.Count
                }),
                CreateTime = x.CreateTime
            }).ToList();

            return(ApiResult.Ok(new PageQueryResonseBase <GetOrderListResponse>(result, Total)));
        }
        /// <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));
        }
        public async Task <ApiResult> GetRoleList(PageQueryInputBase input)
        {
            var query = (from role in dbContext.Role
                         select new GetRoleListResponse()
            {
                RoleId = role.Id,
                RoleName = role.RoleName,
                SuperAdmin = role.SuperAdmin
            }).OrderBy(x => x.RoleName);

            var(Data, Total) = await QueryServiceHelper.PageQuery(query, input.Page, input.Limit);

            var roleIds     = Data.Select(x => x.RoleId);
            var permissions = await(from rolepermission in dbContext.RolePermission
                                    where roleIds.Contains(rolepermission.RoleId)
                                    join permission in dbContext.Permission on rolepermission.PermissionId equals permission.Id
                                    select new { permission.Id, rolepermission.RoleId }).ToListAsync();

            Data.ForEach(x => x.Permissions = permissions.Where(y => y.RoleId == x.RoleId).Select(y => y.Id).ToList());
            return(ApiResult.Ok(new PageQueryResonseBase <GetRoleListResponse>(Data, Total)));
        }
示例#16
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);
        }
 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("所选单据存在没有勾选支持银企付款参数,不允许通过银企进行付款!");
         }
     }
 }
示例#18
0
        public override void CreateNewData(BizDataEventArgs e)
        {
            DynamicObjectType dynamicObjectType = this.Model.BillBusinessInfo.GetDynamicObjectType();
            Entity            entity            = this.View.BusinessInfo.Entrys[1];
            DynamicObjectType dt         = entity.DynamicObjectType;
            DynamicObject     dataEntity = new DynamicObject(dynamicObjectType)
            {
                ["CloseDate"] = DateTime.Now.Date
            };
            DynamicObjectCollection objects   = entity.DynamicProperty.GetValue <DynamicObjectCollection>(dataEntity);
            BusinessObject          bizObject = new BusinessObject
            {
                Id = "STK_Account",
                PermissionControl = 1,
                SubSystemId       = "STK"
            };
            List <long> valList = PermissionServiceHelper.GetPermissionOrg(base.Context, bizObject, this.isOpenAccount ? "4cc4dea42de6441ebeb21c509358d73d" : "1046d14017fd45dbaff9b1fe4affe0c6");

            if ((valList == null) || (valList.Count < 1))
            {
                e.BizDataObject = dataEntity;
            }
            else
            {
                Dictionary <string, object> batchStockDate = StockServiceHelper.GetBatchStockDate(base.Context, valList);
                if ((batchStockDate == null) || (batchStockDate.Keys.Count < 1))
                {
                    e.BizDataObject = dataEntity;
                }
                else
                {
                    valList.Clear();
                    foreach (string str in batchStockDate.Keys)
                    {
                        valList.Add(Convert.ToInt64(str));
                    }
                    List <SelectorItemInfo> list2 = new List <SelectorItemInfo> {
                        new SelectorItemInfo("FORGID"),
                        new SelectorItemInfo("FName"),
                        new SelectorItemInfo("FNumber"),
                        new SelectorItemInfo("FDescription")
                    };
                    string str2 = this.GetInFilter(" FORGID", valList) + $" AND FDOCUMENTSTATUS = 'C' AND FFORBIDSTATUS = 'A' AND (FORGFUNCTIONS like'%103%') AND EXISTS(SELECT 1 FROM T_BAS_SYSTEMPROFILE BSP WHERE BSP.FCATEGORY = 'STK' AND BSP.FORGID = FORGID AND BSP.FACCOUNTBOOKID = 0 AND BSP.FKEY = 'IsInvEndInitial' AND BSP.FVALUE = '1') {(this.isOpenAccount ? "AND EXISTS(SELECT 1 FROM T_STK_CLOSEPROFILE SCP WHERE SCP.FCATEGORY = 'STK' AND SCP.FORGID = FORGID )" : "")} ";
                    QueryBuilderParemeter para = new QueryBuilderParemeter
                    {
                        FormId                 = "ORG_Organizations",
                        SelectItems            = list2,
                        FilterClauseWihtKey    = str2,
                        OrderByClauseWihtKey   = "",
                        IsolationOrgList       = null,
                        RequiresDataPermission = true
                    };
                    DynamicObjectCollection source          = QueryServiceHelper.GetDynamicObjectCollection(base.Context, para, null);
                    DataTable stockOrgAcctLastCloseDate     = CommonServiceHelper.GetStockOrgAcctLastCloseDate(base.Context, "");
                    Dictionary <long, DateTime> dictionary2 = new Dictionary <long, DateTime>();
                    foreach (DataRow row in stockOrgAcctLastCloseDate.Rows)
                    {
                        if (!(row["FCLOSEDATE"] is DBNull) && !string.IsNullOrWhiteSpace(row["FCLOSEDATE"].ToString()))
                        {
                            dictionary2[Convert.ToInt64(row["FORGID"])] = Convert.ToDateTime(row["FCLOSEDATE"]);
                        }
                    }
                    int num = 0;
                    if ((source != null) && (source.Count <DynamicObject>() > 0))
                    {
                        foreach (DynamicObject obj4 in source)
                        {
                            long          key  = Convert.ToInt64(obj4["FORGID"]);
                            DynamicObject item = new DynamicObject(dt)
                            {
                                ["Check"]        = true,
                                ["StockOrgNo"]   = obj4["FNumber"].ToString(),
                                ["StockOrgName"] = ((obj4["FName"] == null) || string.IsNullOrEmpty(obj4["FName"].ToString())) ? "" : obj4["FName"].ToString(),
                                ["StockOrgDesc"] = ((obj4["FDescription"] == null) || string.IsNullOrEmpty(obj4["FDescription"].ToString())) ? "" : obj4["FDescription"].ToString(),
                                ["StockOrgID"]   = obj4["FORGID"].ToString(),
                                ["Result"]       = "",
                                ["RetFlag"]      = false,
                                ["Seq"]          = num++
                            };
                            if (dictionary2.ContainsKey(key))
                            {
                                item["LastCloseDate"] = dictionary2[key];
                            }
                            objects.Add(item);
                        }
                    }
                    e.BizDataObject = dataEntity;
                }
            }
        }
        /// <summary>
        /// 目标单单据构建完毕,且已经创建好与源单的关联关系之后,触发此事件
        /// </summary>
        /// <param name="e"></param>
        /// <remarks>
        /// 本事件的时机,刚好能够符合需求,
        /// 而AfterConvert事件,则在执行表单服务策略之后
        /// </remarks>
        public override void OnAfterCreateLink(CreateLinkEventArgs e)
        {
            // 目标单单据体元数据
            Entity entity = e.TargetBusinessInfo.GetEntity("FRefundBillSrcEntity");
            Entity es     = e.SourceBusinessInfo.GetEntity("FEntity");

            // 读取已经生成的付款退款单
            ExtendedDataEntity[] bills = e.TargetExtendedDataEntities.FindByEntityKey("FBillHead");

            // 定义一个集合,存储新拆分出来的单据体行
            List <ExtendedDataEntity> newRows = new List <ExtendedDataEntity>();

            // 对目标单据进行循环
            foreach (var bill in bills)
            {
                // 取单据体集合
                DynamicObjectCollection rowObjs = entity.DynamicProperty.GetValue(bill.DataEntity)
                                                  as DynamicObjectCollection;



                // 对单据体进行循环:从后往前循环,新拆分的行,避开循环
                int rowCount    = rowObjs.Count;
                int newRowCount = 1;
                for (int i = rowCount - 1; i >= 0; i--)
                {
                    DynamicObject rowObj = rowObjs[i];

                    double        F_JNRoadAmount    = Convert.ToDouble(rowObj["F_JNRoadAmount"]);
                    double        PLANPAYAMOUNT     = Convert.ToDouble(rowObj["PLANREFUNDAMOUNT"]);
                    double        AFTTAXTOTALAMOUNT = Convert.ToDouble(rowObj["AFTTAXTOTALAMOUNT"]);
                    double        F_JNTAXAmount     = Convert.ToDouble(rowObj["F_JNTAXAmount"]);
                    DynamicObject newRowObj         = null;


                    rowObj["PLANREFUNDAMOUNT"]  = PLANPAYAMOUNT - F_JNRoadAmount - F_JNTAXAmount;
                    rowObj["AFTTAXTOTALAMOUNT"] = AFTTAXTOTALAMOUNT - F_JNRoadAmount - F_JNTAXAmount;
                    rowObj["REALREFUNDAMOUNT"]  = rowObj["PLANREFUNDAMOUNT"];
                    rowObj["F_JNRoadAmount"]    = 0;
                    // 根据规则进行拆分:
                    // 示例代码略过拆分规则,强制对每行进行拆分
                    // 通过复制的方式,产生新行:确保字段值、关联关系与原行一致
                    if (F_JNRoadAmount > 0)
                    {
                        var           SRCCOSTID = rowObj["FSRCCOSTID"] as DynamicObject;
                        DynamicObject SRCCOST   = (DynamicObject)SRCCOSTID.Clone(true, false);
                        newRowObj = (DynamicObject)rowObj.Clone(false, true);
                        //DynamicObject newRowObj = rowObj.Clone(;
                        //DynamicObject newRowObj = (DynamicObject)rowObj.Clone(true, true);
                        newRowObj["PLANREFUNDAMOUNT"]  = F_JNRoadAmount;
                        newRowObj["AFTTAXTOTALAMOUNT"] = F_JNRoadAmount;
                        newRowObj["F_JNRoadAmount"]    = 0;
                        newRowObj["REALREFUNDAMOUNT"]  = F_JNRoadAmount;
                        //newRowObj["Seq"] = i + 1;

                        QueryBuilderParemeter queryParam = new QueryBuilderParemeter();
                        queryParam.FormId = "BD_Expense";

                        queryParam.SelectItems.Add(new SelectorItemInfo("FMasterId"));
                        queryParam.SelectItems.Add(new SelectorItemInfo("FNumber"));
                        queryParam.SelectItems.Add(new SelectorItemInfo("FName"));
                        queryParam.FilterClauseWihtKey = string.Format(" FNumber = '{0}' ", "FYXM23");
                        var expense = QueryServiceHelper.GetDynamicObjectCollection(this.Context, queryParam);
                        newRowObj["FSRCCOSTID_Id"] = expense[0]["FMasterId"];
                        SRCCOST["Id"]           = expense[0]["FMasterId"];
                        SRCCOST["msterId"]      = expense[0]["FMasterId"];
                        SRCCOST["Name"]         = expense[0]["FName"];
                        SRCCOST["Number"]       = expense[0]["FNumber"];
                        newRowObj["FSRCCOSTID"] = SRCCOST;


                        // 把新行,插入到单据中,排在当前行之后
                        rowObjs.Insert(i + 1, newRowObj);

                        //newRowObj["SRCCOSTID_Id"] = 131120;
                    }

                    if (F_JNTAXAmount > 0)
                    {
                        var           SRCCOSTID = rowObj["FSRCCOSTID"] as DynamicObject;
                        DynamicObject SRCCOST   = (DynamicObject)SRCCOSTID.Clone(true, false);

                        newRowObj = (DynamicObject)rowObj.Clone(false, true);
                        //DynamicObject newRowObj = rowObj.Clone(;
                        //DynamicObject newRowObj = (DynamicObject)rowObj.Clone(true, true);
                        newRowObj["PLANREFUNDAMOUNT"]  = F_JNTAXAmount;
                        newRowObj["AFTTAXTOTALAMOUNT"] = F_JNTAXAmount;
                        newRowObj["F_JNRoadAmount"]    = 0;
                        newRowObj["REALREFUNDAMOUNT"]  = F_JNTAXAmount;
                        //newRowObj["Seq"] = i + 1;

                        QueryBuilderParemeter queryParam = new QueryBuilderParemeter();
                        queryParam.FormId = "BD_Expense";

                        queryParam.SelectItems.Add(new SelectorItemInfo("FMasterId"));
                        queryParam.SelectItems.Add(new SelectorItemInfo("FNumber"));
                        queryParam.SelectItems.Add(new SelectorItemInfo("FName"));
                        queryParam.FilterClauseWihtKey = string.Format(" FNumber = '{0}' ", "FYXM98");
                        var expense = QueryServiceHelper.GetDynamicObjectCollection(this.Context, queryParam);
                        newRowObj["FSRCCOSTID_Id"] = expense[0]["FMasterId"];
                        SRCCOST["Id"]           = expense[0]["FMasterId"];
                        SRCCOST["msterId"]      = expense[0]["FMasterId"];
                        SRCCOST["Name"]         = expense[0]["FName"];
                        SRCCOST["Number"]       = expense[0]["FNumber"];
                        newRowObj["FSRCCOSTID"] = SRCCOST;


                        // 把新行,插入到单据中,排在当前行之后
                        rowObjs.Insert(i + 1, newRowObj);

                        //newRowObj["SRCCOSTID_Id"] = 131120;
                    }
                    if (newRowObj != null)
                    {
                        // 为新行创建一个ExtendedDataEntity对象,表单服务策略需要此对象
                        ExtendedDataEntity newRow = new ExtendedDataEntity(
                            newRowObj, bill.DataEntityIndex, rowCount + newRowCount);
                        newRows.Add(newRow);

                        newRowCount++;
                    }
                }
            }

            // 把新拆分出来的单据体行,加入到下推结果中
            // 特别说明:如果去掉此语句,新拆分的行,不会执行表单服务策略
            e.TargetExtendedDataEntities.AddExtendedDataEntities("FEntity", newRows.ToArray());
        }