ImageVerifierCode 换一换
格式:DOCX , 页数:49 ,大小:473.66KB ,
资源ID:8938985      下载积分:10 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/8938985.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(账表服务取数插件示例代码.docx)为本站上传会员【pc****0】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

账表服务取数插件示例代码.docx

1、账表(服务取数)插件示例代码 修订记录 Ver. No 日期 编制\修订 校对 批准 修改的章节号 V1.0 20150415 杨兵 张晋博 刘兵 赖碧云 初始版本 问题和意见 如果你对文档有任何意见、问题或想法,或者你的问题未在此文档中找到答案,请通过电子邮件联系我们 jinbo_zhang@ 目录

2、账表(服务取数)插件示例代码 1 账表(服务取数)插件概要说明 4 如何创建账表服务插件 6 如何启用账表服务插件 8 公共属性 9 BusinessInfo 9 Context 10 DctSpecialTempSumTable 10 DynamicHeader 10 ReportHeader 10 ReportId 10 ReportProperty 10 ReportTitles 10 SummarySpecialFields 11 TempTableNameList 11 分页账表特有属性 11 CurrentListPosition 11 Cache

3、MapTempTableNameList 11 CacheDataList 11 树形账表特有属性 11 CurrentGroupID 11 事件 12 Initialize 12 案例 – 销售订单执行汇总表账表取数插件初始化 12 GetData 17 GetTableName 17 BuilderReportSqlAndTempTable 17 案例 – 销售订单执行汇总表账表取数 17 BuilderSelectFieldSQL 19 案例 – 核算错误记录账表取数 20 BuilderTempTableOrderBySQL 21 BuilderFromWh

4、ereSQL 21 案例 – 核算错误记录账表取数 22 GetIdentityFieldIndexSQL 24 ExecuteBatch 25 GetReportHeaders 25 案例 – 应付款账龄分析表构建列头信息 25 GetReportTitles 29 案例 – 销售订单执行汇总表账表表头信息 30 AnalyzeDspCloumn 35 AfterCreateTempTable 35 GetReportData 35 案例 – 供应商供货汇总表取数 36 GetRowsCount 37 案例 – 库存台账分页账表获取当前页数据行数 38 GetSu

5、mmaryData 40 GetSummaryColumnInfo 40 案例 – 销售订单执行汇总表分组汇总字段信息 40 GetSummaryColumsSQL 43 案例 – 销售订单执行汇总表分组汇总SQL指令 43 CloseReport 45 案例 – 供货商供货汇总表关闭时,清除临时表 46 GetList 47 GetTreeNodes 49 账表(服务取数)插件概要说明 账表的服务端取数插件,是通过插件组装账表取数Sql指令,把取

6、数结果返回给平台账表引擎,平台将取数结果绑定到账表页面的过程,简单说,平台在账表开发过程中,只负责把插件取到的账表数据绑定到设计好的账表模型上,取数逻辑由账表服务端插件完成 开发过程中,有几个重要模型 1、 设计账表模型 a) 账表表头字段 b) 账表表体字段(也说成账表列头字段) 2、 设计账表过滤模型 a) 自定义快捷过滤面板 b) 高级过滤条件面板 c) 排序面板 d) 分组汇总面板 e) 显示隐藏列面板 账表根据使用场景,分为简单账表、树形账表、分页账表、简单Sql账表 简单Sql账表没有服务取数插件 所有账表都须实现的重要事件 1、 Initi

7、alize 2、 BuilderSelectFieldSQL 3、 BuilderFromWhereSQL 4、 BuilderReportSqlAndTempTable 5、 GetReportTitles 6、 GetReportHeaders 7、 GetSummaryColumnInfo 分页账表特点: 与简单账表区别在于,分页账表通过导航按钮切换帐表内容 分页账表基本原理说明: Ø 需要提供用于导航的结果集,如下图中以语言标识为导航结果集(实现GetList方法) Ø 显示数据需要按照导航结果过滤(实现BuilderReportSqlAndTempTab

8、le方法) 树形账表特点: Ø 树形账表通过树节点切换账表内容 树形账表基本原理说明: Ø 需要提供用于导航树形结果集(List),如下图中以语言标识为树形结果集(实现GetTreeNodes方法) Ø 显示数据需要按照树节点结果过滤(实现BuilderReportSqlAndTempTable方法,使用CurrentGroupID重要属性作过滤条件) 如何创建账表服务插件 Ø 创建插件类库工程 Ø 插件类库引用BOS平台组件(被引用组件在Cloud网站website\bin目录下) Ø 修改插件类库编译输出路径为website\b

9、in(右键插件类库,选择属性) Ø 修改类文件继承基类,并引用基类所在命名空间 如何启用账表服务插件 插件编写完毕,类库编译通过后 进入BOS设计器,打开对应账表模型,配置账表服务插件: 公共属性 BusinessInfo 账表模型的元数据描述信息 Context 当前登录系统的上下文信息,如数据库连接信息,当前登录操作员信息等 DctSpecialTempSumTable 临时汇总数据表格 DynamicHeader 动态列头 ReportHeader 账表列头 ReportId 当前账表模型唯一标示 ReportProperty

10、 Ø 账表属性,包含账表开发过程中的全局信息 Ø 其重要属性说明: 属性名 描述 ReportType 账表类型(默认是简单账表、如果开发的是分页或树形帐表,请在账表插件初始化事件中,对此属性进行正确赋值,否则账表引擎会默认按简单账表处理页面) IsGroupSummary 是否支持分组汇总 IsUIDesignerColumns 账表列头是否是通过BOSIDE设计 SimpleAllCols 是否锁定账表表格列 DecimalControlFieldList 精度控制字段信息 DspInsteadColumnsInfo 列表格式化列,指示Key列被Value列内

11、容替代 GroupSummaryInfoData 分组汇总信息 ReportTitles 账表表头字段信息 SummarySpecialFields 汇总字段信息 TempTableNameList 临时表列表 分页账表特有属性 CurrentListPosition 分页账表属性 分页账表当前页账表数据对象的位置信息,此属性与CacheMapTempTableNameList属性一起使用 CacheMapTempTableNameList 分页账表属性 记录分页账表每页账表数据对象信息,此属性与CurrentListPosition属性一起使用 CacheDa

12、taList 分页账表属性 根据账表当前页位置,获取DataRow对象 树形账表特有属性 CurrentGroupID 树形账表属性 树形账表分组标识,点击树形账表左边树时,由平台账表引擎为其赋值,其数据来源于账表插件GetTreeNodes方法返回的树节点id属性的值,对应树形账表插件在BuilderReportSqlAndTempTable方法拼接账表取数sql时,需要以CurrentGroupID作为过滤条件拼接到Sql指令的Where部分 事件 Initialize 触发时机 账表View初始化,开始初始化账表服务取数插件代理对象时 应用场景 此时账表插件基

13、类已完成账表属性对象(ReportProperty)的创建工作 关键字 初始化 备注 一般账表插件在此事件中,对刚创建的ReportProperty做进一步初始化 案例 – 销售订单执行汇总表账表取数插件初始化 代码来源 Kingdee.K3.SCM.App.Sal.Report.SalCollectRpt 需求背景 销售订单执行汇总表初始化时,进一步初始化账表属性对象 1、 账表属性的报表类型、报表名称 2、 由于是汇总表,配置其明细表模型唯一标示和唯一标示一张明显表的字段信息(双击汇总表一行记录时,根据以上信息定位到明细表) 3、 账表属性的列替代显示信

14、息(key:被替代显示的列,value:替代显示的列) 4、 字段精度控制描述信息(即哪个字段的精度被哪个字段所控制) 实现方案 账表服务取数插件初始化时,修改账表属性中的报表名称、明细表属性、替代显示列信息、字段精度控制信息等 示例代码 C#   using System; using System.Collections.Generic; using System.Linq; using System.Text; using Kingdee.BOS.Contracts.Report; using Kingdee.BOS.Core.Report; using

15、 Kingdee.BOS; using Kingdee.BOS.Core.List; using Kingdee.BOS.Orm.DataEntity; using Kingdee.BOS.Contracts; using Kingdee.K3.SCM.Sal.Report.PlugIn; using System.Collections; using Kingdee.BOS.App.Data; using Kingdee.BOS.Core.SqlBuilder; using Kingdee.BOS.Core; using Kingdee.BOS.Core.Util; us

16、ing Kingdee.BOS.Util; using Kingdee.BOS.Core.Metadata; using Kingdee.BOS.Core.Permission; using Kingdee.BOS.App.Core.BusinessFlow; using Kingdee.K3.Core; using Kingdee.BOS.Core.BusinessFlow.ServiceArgs; using Kingdee.BOS.BusinessEntity.BusinessFlow; using System.Data; using Kingdee.BOS.Core.

17、Permission.Objects; using Kingdee.BOS.Core.CommonFilter; namespace Kingdee.K3.SCM.App.Sal.Report { ///

/// 销售汇总表数据源插件 /// public class SalCollectRpt : SysReportBaseService { public override void Initialize() { base.Initialize(

18、); this.ReportProperty.ReportType = ReportType.REPORTTYPE_NORMAL; this.ReportProperty.ReportName = "销售订单执行汇总表"; this.ReportProperty.DetailReportId = "SAL_DetailReport"; this.ReportProperty.PrimaryKeyFieldName = "FBILLNO"; this.ReportPr

19、operty.IsGroupSummary = true; this.ReportProperty.IsUIDesignerColumns = true; //显示替代列this.ReportProperty.DspInsteadColumnsInfo.DefaultDspInsteadColumns.Add("FSALEORGID", "FSALEORGNAME"); this.ReportProperty.DspInsteadColumnsInfo.DefaultDspInsteadColumns.Add("FSAL

20、EDEPTID", "FSALEDEPT"); this.ReportProperty.DspInsteadColumnsInfo.DefaultDspInsteadColumns.Add("FSALEGROUPID", "FSALEGROUP"); this.ReportProperty.DspInsteadColumnsInfo.DefaultDspInsteadColumns.Add("FSALERID", "FSALES"); this.ReportProperty.DspInsteadColumnsInfo.Defau

21、ltDspInsteadColumns.Add("FMATERIALID", "FMATERIALNUMBER"); this.ReportProperty.DspInsteadColumnsInfo.DefaultDspInsteadColumns.Add("FCURRENCYID", "FMONEYTYPE"); this.ReportProperty.DspInsteadColumnsInfo.DefaultDspInsteadColumns.Add("FCUSTID", "FCUSTOMERNUMBER");

22、 this.ReportProperty.DspInsteadColumnsInfo.DefaultDspInsteadColumns.Add("FMATERIALGROUP", "FMATERIALGROUPNAME"); this.ReportProperty.DspInsteadColumnsInfo.DefaultDspInsteadColumns.Add("FAUXPROPID", "FAUXPROP"); this.ReportProperty.DspInsteadColumnsInfo.DefaultDspInsteadCo

23、lumns.Add("FUNITID", "FUNITNAME"); //精度控制 List lstDcf = new List(); DecimalControlField dcf = new DecimalControlField(); //单价 dcf.ByDecimalControlFieldName = "FPRICE";//

24、 dcf.DecimalControlFieldName = "FPRICEDIGITS"; lstDcf.Add(dcf); dcf = new DecimalControlField(); //订单 dcf.ByDecimalControlFieldName = "FSOQTY"; dcf.DecimalControlFieldName = "FPRECISION"; lstDcf.Add(dcf); dcf

25、 = new DecimalControlField(); dcf.ByDecimalControlFieldName = "FSOAMOUNT"; dcf.DecimalControlFieldName = "FAMOUNTDIGITS"; lstDcf.Add(dcf); //发货单 dcf = new DecimalControlField(); dcf.ByDecimalControlFieldName = "FSQTY";

26、 dcf.DecimalControlFieldName = "FPRECISION"; lstDcf.Add(dcf); dcf = new DecimalControlField(); dcf.ByDecimalControlFieldName = "FSAMOUNT"; dcf.DecimalControlFieldName = "FAMOUNTDIGITS"; lstDcf.Add(dcf); //出库

27、 dcf = new DecimalControlField(); dcf.ByDecimalControlFieldName = "FALREADYQTY"; dcf.DecimalControlFieldName = "FPRECISION"; lstDcf.Add(dcf); dcf = new DecimalControlField(); dcf.ByDecimalControlFieldName = "FALREADYAMOUNT";

28、 dcf.DecimalControlFieldName = "FAMOUNTDIGITS"; lstDcf.Add(dcf); dcf = new DecimalControlField(); dcf.ByDecimalControlFieldName = "FNOTQTY"; dcf.DecimalControlFieldName = "FPRECISION"; lstDcf.Add(dcf); dcf = new D

29、ecimalControlField(); dcf.ByDecimalControlFieldName = "FNOTAMOUNT"; dcf.DecimalControlFieldName = "FAMOUNTDIGITS"; lstDcf.Add(dcf); //退货 dcf = new DecimalControlField(); dcf.ByDecimalControlFieldName = "FRETURNPQTY";

30、 dcf.DecimalControlFieldName = "FPRECISION"; lstDcf.Add(dcf); dcf = new DecimalControlField(); dcf.ByDecimalControlFieldName = "FRETURNPAMOUNT"; dcf.DecimalControlFieldName = "FAMOUNTDIGITS"; lstDcf.Add(dcf); //退库

31、 dcf = new DecimalControlField(); dcf.ByDecimalControlFieldName = "FRETURNSQTY"; dcf.DecimalControlFieldName = "FPRECISION"; lstDcf.Add(dcf); dcf = new DecimalControlField(); dcf.ByDecimalControlFieldName = "FRETURNSAMOUNT";

32、 dcf.DecimalControlFieldName = "FAMOUNTDIGITS"; lstDcf.Add(dcf); //开票 dcf = new DecimalControlField(); dcf.ByDecimalControlFieldName = "FINVOECEQTY"; dcf.DecimalControlFieldName = "FPRECISION"; lstDcf.Add(dcf)

33、 dcf = new DecimalControlField(); dcf.ByDecimalControlFieldName = "FNVOECEAMOUNT"; dcf.DecimalControlFieldName = "FAMOUNTDIGITS"; lstDcf.Add(dcf); dcf = new DecimalControlField(); dcf.ByDecimalControlFieldName = "FNINVOEC

34、EQTY"; dcf.DecimalControlFieldName = "FPRECISION"; lstDcf.Add(dcf); dcf = new DecimalControlField(); dcf.ByDecimalControlFieldName = "FNNVOECEAMOUNT"; dcf.DecimalControlFieldName = "FAMOUNTDIGITS"; lstDcf.Add(dcf);

35、 //收款 dcf = new DecimalControlField(); dcf.ByDecimalControlFieldName = "FRECEIPTAMOUNT"; dcf.DecimalControlFieldName = "FAMOUNTDIGITS"; lstDcf.Add(dcf); dcf = new DecimalControlField(); dcf.ByDecimalControlFieldName =

36、 "FNRECEIPTAMOUNT"; dcf.DecimalControlFieldName = "FAMOUNTDIGITS"; lstDcf.Add(dcf); //核销金额可能是尾差过小,就不按金额精度处理 dcf = new DecimalControlField(); dcf.ByDecimalControlFieldName = "FCHARGEOFFAMOUNT"; dcf.DecimalControlFieldName =

37、 "FAMOUNTDIGITS"; lstDcf.Add(dcf); //应收 dcf = new DecimalControlField(); dcf.ByDecimalControlFieldName = "FRECQTY"; dcf.DecimalControlFieldName = "FPRECISION"; lstDcf.Add(dcf); dcf = new DecimalControlField();

38、 dcf.ByDecimalControlFieldName = "FRECAMOUNT"; dcf.DecimalControlFieldName = "FAMOUNTDIGITS"; lstDcf.Add(dcf); dcf = new DecimalControlField(); dcf.ByDecimalControlFieldName = "FRECNQTY"; dcf.DecimalControlFieldName = "FPR

39、ECISION"; lstDcf.Add(dcf); dcf = new DecimalControlField(); dcf.ByDecimalControlFieldName = "FRECNAMOUNT"; dcf.DecimalControlFieldName = "FAMOUNTDIGITS"; lstDcf.Add(dcf); dcf = new DecimalControlField(); dcf.B

40、yDecimalControlFieldName = "FWRITEOFFAMOUNT"; dcf.DecimalControlFieldName = "FAMOUNTDIGITS"; lstDcf.Add(dcf); this.ReportProperty.DecimalControlFieldList = lstDcf; } } } GetData 备注 此方法由插件平台报表基类实现,插件不用关注 示例代码 无 GetTableName 备注 此方法由插件平台报表基类实现

41、插件不用关注 用于创建一张临时表,完成插件账表数据逻辑后,用此表承载账表数据 示例代码 无 BuilderReportSqlAndTempTable 触发时机 正式进入账表取数sql拼接并取数,把账表取数结果放到上一步创建的临时表中 应用场景 开始进行账表sql拼接取数,并把账表取数结果放到上一步创建的临时表中 关键字 账表取数 备注 如果此账表插件设置sql数据逻辑由插件完成(this.IsCreateTempTableByPlugin),即调用BuilderReportSqlAndTempTable接口,否则调用以下3个接口,完成账表取数逻辑的sq

42、l指令即:BuilderSelectFieldSQL、BuilderTempTableOrderBySQL、BuilderFormWhereSQL 案例 – 销售订单执行汇总表账表取数 代码来源 Kingdee.K3.SCM.App.Sal.Report.SalCollectRpt 需求背景 销售订单执行汇总表根据账表过滤条件取数 实现方案 账表插件在BuilderReportSqlAndTempTable方法中,完成账表取数并把数据填充到临时表中 示例代码 C#   using System; using System.Collections.Generi

43、c; using System.Linq; using System.Text; using Kingdee.BOS.Contracts.Report; using Kingdee.BOS.Core.Report; using Kingdee.BOS; using Kingdee.BOS.Core.List; using Kingdee.BOS.Orm.DataEntity; using Kingdee.BOS.Contracts; using Kingdee.K3.SCM.Sal.Report.PlugIn; using System.Collections; usin

44、g Kingdee.BOS.App.Data; using Kingdee.BOS.Core.SqlBuilder; using Kingdee.BOS.Core; using Kingdee.BOS.Core.Util; using Kingdee.BOS.Util; using Kingdee.BOS.Core.Metadata; using Kingdee.BOS.Core.Permission; using Kingdee.BOS.App.Core.BusinessFlow; using Kingdee.K3.Core; using Kingdee.BOS.Core.

45、BusinessFlow.ServiceArgs; using Kingdee.BOS.BusinessEntity.BusinessFlow; using System.Data; using Kingdee.BOS.Core.Permission.Objects; using Kingdee.BOS.Core.CommonFilter; namespace Kingdee.K3.SCM.App.Sal.Report { ///

/// 销售汇总表数据源插件 /// public class S

46、alCollectRpt : SysReportBaseService { public override void BuilderReportSqlAndTempTable(IRptParams filter, string tableName) { ModifyShowHideColumns(ref filter); InitTables();//初始化报表使用的临时表,使用一次即删除 moreFilter = filter.FilterParameter.FilterString.

47、Trim();//高级过滤 this.SetFilter(filter);//设置快捷页签过滤条件 DynamicObject userParameter = filter.ParameterData; if (userParameter != null) { this.onTime = Convert.ToBoolean(userParameter["onTime"]); } DynamicObject

48、dyFilter = filter.FilterParameter.CustomFilter;//快捷页签过滤 if (dyFilter["SaleOrgList"] == null || string.IsNullOrWhiteSpace(dyFilter["SaleOrgList"].ToString())) { SetRptBosTable(tableName); return; } else

49、 { this.GetSQLWhere(); //进行过滤快捷页签汇总 List listBaseDataTempTable = filter.BaseDataTempTable; // 如果设置了基础资料数据权限,则获取基础资料数据权限隔离的临时表集合 SalRptCommon.GetFilterOrder(this.Context,rptFilterTable, !string.IsNullOrWhiteSpace(moreFilter), creatWhereFirst.ToString(), this.filterOrgList, listBaseDataTempTable, "SAL_CollectReport"); // 添加基础资料数据权限隔离的临时表到待删除临时表集合 foreach (BaseDataTempTable item in listBaseDataTempTable) { deleteTables.Add(item.TempTable);

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服