erp同步数据

develop-QA
sugy 3 months ago
parent dd8172de62
commit 963fd52fb5
  1. 197
      blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/pojo/dto/table/Prtbasdef.java
  2. 1
      blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/pojo/dto/table/Prtmsg.java
  3. 11
      blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/pojo/dto/table/Rrbwoerptomes.java
  4. 32
      blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/pojo/dto/view/MesRbPk.java
  5. 26
      blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/pojo/dto/view/MesRbSjso.java
  6. 32
      blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/pojo/dto/view/MesRbSodelrecwx.java
  7. 32
      blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/pojo/dto/view/MesRbSodelreczg.java
  8. 32
      blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/pojo/dto/view/MesRbWxpromotion.java
  9. 21
      blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpMesRbSjsoMapper.java
  10. 9
      blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpMesRbSjsoMapper.xml
  11. 21
      blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpMesRbSodelrecwxMapper.java
  12. 9
      blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpMesRbSodelrecwxMapper.xml
  13. 22
      blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpMesRbWxpromotionMapper.java
  14. 9
      blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpMesRbWxpromotionMapper.xml
  15. 14
      blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/IErpMesRbSjsoService.java
  16. 14
      blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/IErpMesRbSodelrecwxService.java
  17. 14
      blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/IErpMesRbWxpromotionService.java
  18. 28
      blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/impl/ErpMesRbSjsoServiceImpl.java
  19. 26
      blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/impl/ErpMesRbSodelrecwxServiceImpl.java
  20. 28
      blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/impl/ErpMesRbWxpromotionServiceImpl.java

@ -1,10 +1,207 @@
package org.springblade.erpdata.pojo.dto.table;
import lombok.Data;
/**
* 对应ERP中表 t_prtbasdef
*
* @author lqk
* @date 2026-01-16 17:32
*/
@Data
public class Prtbasdef {
private String prtno; //物料号
private String prteflag; //工程数据标记
private String prtchgrsn; //更改原因
private String prttype; //物料类型
private String prtreqtype; //需求类型
private String prtorplc; //订货策略码
private String prtlzplc; //批量方针
private String prtabc; //库存管理abc码
private String prtinvprtct; //物料保管特征码
private String prtsoflag; //物料加工路线通过车间数的标记
private String prtcotype; //自制/外协类型
private String prtchkflag; //物料检验标记
private String prtageflag; //物料老化筛选标记
private String gtroutflag; //采用成组工艺标记
private String prtlottype; //批次合并标记
private String prtcsttype; //限制发货标记
private String prtum; //erp度量单位
private String prtwtum; //重量计量单位
private String prtui; //pdm度量单位
private String prtpurity; //表面积
private String prtwt; //重量(毛重), 图纸标明该件的重量
private String prturat; //存储单位折算系数
private String prtrevedit; //版本号
private String prodline; //产品大类(产品系列)
private String prtclass; //1 :线簧孔 0:无标识 2针孔 3 连帽线 4 花键线 5 ym线 6方盘线 7 异型壳体线 8 针孔线 9 复合线 10 压铸件 (3200) 11~18精益生产线a~h(3100) 20 注射件 21 橡胶件 22 热固件 23 jy 24 y50 25 xc 及派生 26 民品大批量 27 ct杂项 28 f/yf 29 装爪类 30 装针类 31 装孔类 32 灌胶粘结类 33 绞针类 34 铆接 35 同轴产品 36 滤波产品 37 绞针产品 38 线缆产品 39 普通跳线 40 多芯缆 41 圆形粘接部件 42
private String prtdesc; //物料名称
private String mtltmrk; //物料型号/材料牌号
private String mtlspcf; //腔数
private String prtstd; //技术条件
private String mtlstat; //交货状态
private String prtgtcc; //存储华为用户型号
private String prtmdept; //主制车间
private String splytype; //供应商认证类型
private String splycode; //首选供应商码
private String mtldmsw; //毛料宽度(内径)
private String mtldmst; //毛料厚(高)度,外径
private String mtldmsl; //毛料长度
private String mtlsgrt; //材料密度(比重)
private String prtqtyraw; //毛料物料数
private String prtmaxtim; //最长存储时间
private String prtovertim; //物料准许的积压期限
private String prtrechktim; //物资复验间隔期或工模具复检周期
private String prtoiltim; //油封间隔期
private String mtlrcdchgdat; //材料数据更改日期
private String rcdchgdatd; //设计数据记录更改日期
private String rcdchgdatm; //物料存储数据记录更改日期
private String rcdchgdatp; //设置发货限制时间
private String rcdchgdatc; //取消发货限制时间
private String rcdchgctrlerd; //设计数据更改人
private String rcdchgctrlerm; //物料存储数据更改人
private String mtlctrler; //材料数据更改人
private String rcdchgctrlerp; //计划数据更改人
private String rcdchgctrlerc; //限制发货更改人
private String scheduler; //采购计划员
private String planner; //生产调度员
private String designer; //产品数据设计员
private String prtmengr; //主管工艺员,十五车间作为调度员使用
private String prtmint; //mps、mrp或pur计划重复投入的最小合并周期
private String pkmaxcount; //配套允许最大批次数
private String makespeed; //验证类型-材料部件
private String prtlt; //提前期
private String prtsflt; //安全提前期
private String prtaclt; //备料提前期
private String prtcmlt; //累计提前期
private String bas_prtcmlt; //理论累计提前期
private String prtscprt; //物料废品系数
private String prtssqty; //安全库存
private String prtavelz; //平均批量
private String prtopnt; //订货点
private String prtlz; //批量
private String prtupqty; //最高库存量
private String prtfalt; //总装配提前提
private String invqyqty; //入检取样消耗量
private String checkhgl; //平均入检合格率
private String selecthgl; //平均筛选合格率
private String invshl; //平均库存损耗率
private String invpyl; //排料利用率
private String mtllyl; //平均材料下料利用率
private String prtlprc; //计划价
private String prtstdcst; //标准成本
private String prtphlcst; //永续成本价
private String prtothcst; //其它费用
private String invttlavqty; //二级库总可用数量
private String invttlqtqty; //总合格数量
private String invttlresqty; //总限用数量
private String invttlwcqty; //总待检数量
private String invttlwsqty; //总报废数量
private String invttlalqty; //已分配数量
private String invttlelqty; //二级库已分配数量
private String invttlbaqty; //缺件数量
private String invttleaqty; //二级库缺件数量
private String bas_prtlt; //装配周期
private String prdpercent; //未用
private String delaynum; //未用
private String aimstock; //未用
private String product; //生产商
private String prtbaslt; //固定提前期
private String prtlotlt; //可变提前期
private String bas_prtbaslt; //计划固定提前期
private String bas_prtlotlt; //计划可变提前期
private String prtllc; //低位码
private String calprtlt; //重新记算提前期标记
private String prtcode; //图纸号
private String prttech; //文档说明书编号
private String releaseno; //版本号
private String bomchksign; //bom审核标记
private String sjflag; //散件标记:0-成批件,1-散件
private String invttlchgqty; //工模具使用,总修理数量
private String shflag; //''1''-涂色环
private String prtdescr; //对零件的描述,十五车间用
private String schemer; //生产计划员
private String prtprodtim; //生产周期
private String bomchkman; //bom审核人
private String bomchkdate; //bom审核日期
private String mdmchksign; //基础数据审核标记
private String mdmchkman; //基础数据审核人
private String mdmchkdate; //基础数据审核日期
private String prtlotno; //物资质量等级
private String noprtpqty; //是否取消材料定额,0-否,1-是 2007年2月28日lixin增加,mrpplang中用
private String prtljclass; //零件分类
private String cplb; //产品类别
private String purcode; //物资采购员,2008/05/07
private String jmaterfee; //军品材料费,十五车间用
private String mmaterfee; //民品材料费,十五车间用
private String zpcoef; //折批系数,十五车间用
private String oldprtno; //erp旧物料号
private String vmiflag; //vmi物料标记
private String vmiprtssqty; //vmi安全库存
private String vmiprtlz; //vmi采购批量
private String processline; //pdm工艺路线
private String drwpartno; //pdm图纸编码
private String warctlr; //物资保管员
private String wzbomchksign; //bom材料定额审核标记
private String chgstrucflg; //结构调整标记:0-否,1-是
private String mtnman; //线黄孔维护人 15a用
private String mtndate; //线黄孔维护日期 15a用
private String guke; //顾客(审签军代表姓名)
private String fddate; //首次订货日期(计算新品统计)
private String routremark; //工艺规程号
private String priority; //优先等级
private String confcode1; //第一配置码
private String maxusetime; //工装最大使用次数
private String parametera; //pdm参数a2010/09/24
private String volume; //pdm体积2010/09/24
private String routruledat; //工艺规程维护日期
private String reroutruleno; //工艺规程变更单号
private String reroutruledat; //工艺规程变更单维护日期
private String typeflag; //打子件标识 0 :非打字件 1:打字件
private String wzprttype; //物资物料标记a,b,c,d....
private String chkcycle; //检验周期
private String plndept; //计划部门
private String part_link; //超级链接
private String partview; //视图名称
private String classpath; //分类路径名
private String classpathid; //分类路径id
private String matsmallclassify; //小类(材料部件)
private String currentflag; //通用属性
private String remark; //注释
private String producedept; //制造部门
private String groupcode; //集团公司编码
private String cgzmark; //关重件标识
private String checkreport; //是否出验收报告标记 0 :否 1:是
private String simparts; //相似零件
private String patternlev; //模具等级--分类属性
private String rcdchgrsn; //发货限制原因备注
private String prtlev; //零件分级,外协用
private String color; //颜色
private String length; //长度
private String cladfilm; //镀层的最终镀种
private String xdflag; //暂停下计划标记
private String xddat; //暂停下计划时间
private String xdopendat; //暂停下计划解限时间
private String xdrsn; //暂停下计划原因
private String xddoccode; //暂停下计划相关技术单号
private String xdman; //暂停下计划人员
private String newestpro; //全新产品
private String yfitemno; //研发项目编号(零部件、工装部件)
private String dataflag; //pdm数据标记:0-erp,1-pdm
private String matbigclassify; //材料大类,从pdm发布
private String materialtype; //材料类别
private String standtype; //标准类型
private String sparemodel; //备料型号
private String projectlevel; //项目级别
private String firstuserpp; //首用工艺号-材料部件
private String prioritytype; //优选类型-材料部件
private String metacognition; //对称件-零部件
private String orignofmaterial; //材料原产地-材料部件
private String modelremark; //模具备注(零部件)
private String moulddemand; //模具需求(零部件)
private String productapparea; //产品应用领域(零部件)
private String etlid; //guid,etl使用的唯一性索引列
private String maturitygrade; //成熟度(零部件)
}

@ -7,4 +7,5 @@ package org.springblade.erpdata.pojo.dto.table;
* @date 2026-01-16 17:32
*/
public class Prtmsg {
}

@ -1,10 +1,21 @@
package org.springblade.erpdata.pojo.dto.table;
import lombok.Data;
/**
* 对应ERP中表 t_rbwoerptomes
*
* @author lqk
* @date 2026-01-16 17:32
*/
@Data
public class Rrbwoerptomes {
private String wono; //工作订单号
private String process_line_desc; //工艺路线明细
private String readtime; //读取时间
private String read_content; //读取内容
}

@ -1,10 +1,42 @@
package org.springblade.erpdata.pojo.dto.view;
import lombok.Data;
/**
* 对应ERP中视图 v_mes_rb_pk
*
* @author lqk
* @date 2026-01-16 17:34
*/
@Data
public class MesRbPk {
private String wono; //车间订单号(外协订单号)
private String splcode; //批次号
private String liverkey; //路线卡号(外协交件单号)
private String prtno; //物料号
private String prtlotno; //质量等级
private String mtltmrk; //型号
private String woporqty; //需求数量
private String wopordat; //下达时间
private String yzdd; //工作订单
private String yjgx; //一级工序(B号)
private String rtudept; //接收部门
private String updatetime; //转出时间(检验状态改为合格的时间)
private String wdavlqty; //转出数量(实收数量)
private String plndept; //计划部门代码
private String usedept; //使用部门代码
private String hbm; //计划部门
private String ybm; //使用部门
private String WOREQDAT; //需求日期
private String jhy; //计划员
private String bgy; //保管员
private String processlinedesc; //一级工艺路线
private String kdofplat; //镀种
private String prtmeterial; //材料
private String rigidity; //硬度
}

@ -1,10 +1,36 @@
package org.springblade.erpdata.pojo.dto.view;
import lombok.Data;
/**
* 对应ERP中视图 v_mes_rb_sjso
*
* @author lqk
* @date 2026-01-16 17:34
*/
@Data
public class MesRbSjso {
private String sono; //车间订单号
private String fj_splcode; //批次号
private String barcodeno; //路线卡号(配套单号)
private String prtno; //零件号
private String prtlotno; //生产标识
private String mtltmrk; //型号
private String woporqty; //需求数量
private String wopordat; //下达时间
private String wono; //工作订单号
private String prtmdept; //接收部门(主制部门)
private String fj_pkavqty; //转出数量(父件配套数量)
private String lewdeptcode; //转出部门代码
private String plndept; //计划部门代码
private String usedept; //使用部门代码
private String woreqdat; //需求日期
private String processlinedesc; //一级工艺路线
private String kdofplat; //镀种
private String prtmeterial; //材料
private String rigidity; //硬度
private String warctlr;
private String planner;
private String username;
}

@ -1,10 +1,42 @@
package org.springblade.erpdata.pojo.dto.view;
import lombok.Data;
/**
* 对应ERP中视图 v_mes_rb_sodelrecwx
*
* @author lqk
* @date 2026-01-16 17:34
*/
@Data
public class MesRbSodelrecwx {
private String wono; //车间订单号(外协订单号)
private String splcode; //批次号
private String liverkey; //路线卡号(外协交件单号)
private String prtno; //物料号
private String prtlotno; //质量等级
private String mtltmrk; //型号
private String woporqty; //需求数量
private String wopordat; //下达时间
private String zdd; //工作订单
private String jgx; //一级工序(B号)
private String rtudept; //接收部门
private String updatetime; //转出时间(检验状态改为合格的时间)
private String wdavlqty; //转出数量(实收数量)
private String plndept; //计划部门代码
private String usedept; //使用部门代码
private String hbm; //计划部门
private String ybm; //使用部门
private String WOREQDAT; //需求日期
private String hy; //计划员
private String gy; //保管员
private String processlinedesc; //一级工艺路线
private String kdofplat; //镀种
private String prtmeterial; //材料
private String rigidity; //硬度
}

@ -1,10 +1,42 @@
package org.springblade.erpdata.pojo.dto.view;
import lombok.Data;
/**
* 对应ERP中视图 v_mes_rb_sodelreczg
*
* @author lqk
* @date 2026-01-16 17:34
*/
@Data
public class MesRbSodelreczg {
private String wono; //车间订单号(外协订单号)
private String splcode; //批次号
private String liverkey; //路线卡号(外协交件单号)
private String prtno; //物料号
private String prtlotno; //质量等级
private String mtltmrk; //型号
private String woporqty; //需求数量
private String wopordat; //下达时间
private String zdd; //工作订单
private String jgx; //一级工序(B号)
private String rtudept; //接收部门
private String updatetime; //转出时间(检验状态改为合格的时间)
private String wdavlqty; //转出数量(实收数量)
private String plndept; //计划部门代码
private String usedept; //使用部门代码
private String hbm; //计划部门
private String ybm; //使用部门
private String WOREQDAT; //需求日期
private String hy; //计划员
private String gy; //保管员
private String processlinedesc; //一级工艺路线
private String kdofplat; //镀种
private String prtmeterial; //材料
private String rigidity; //硬度
}

@ -1,10 +1,42 @@
package org.springblade.erpdata.pojo.dto.view;
import lombok.Data;
/**
* 对应ERP中视图 v_mes_rb_wxpromotion
*
* @author lqk
* @date 2026-01-16 17:34
*/
@Data
public class MesRbWxpromotion {
private String wono; //车间订单号(外协订单号)
private String splcode; //批次号
private String liverkey; //路线卡号(外协交件单号)
private String prtno; //物料号
private String prtlotno; //质量等级
private String mtltmrk; //型号
private String woporqty; //需求数量
private String wopordat; //下达时间
private String zdd; //工作订单
private String jgx; //一级工序(B号)
private String rtudept; //接收部门
private String updatetime; //转出时间(检验状态改为合格的时间)
private String wdavlqty; //转出数量(实收数量)
private String plndept; //计划部门代码
private String usedept; //使用部门代码
private String hbm; //计划部门
private String ybm; //使用部门
private String WOREQDAT; //需求日期
private String hy; //计划员
private String gy; //保管员
private String processlinedesc; //一级工艺路线
private String kdofplat; //镀种
private String prtmeterial; //材料
private String rigidity; //硬度
}

@ -0,0 +1,21 @@
package org.springblade.erpdata.mapper;
import com.baomidou.mybatisplus.core.mapper.Mapper;
import org.springblade.erpdata.pojo.dto.view.MesRbSjso;
import java.util.List;
/**
* Mapper 接口
*
* @author lqk
*/
public interface ErpMesRbSjsoMapper extends Mapper {
/**
* 从ERP视图中获取要同步的推进计划转工单
*
* @return
*/
List<MesRbSjso> getMesRbSjsoErpList();
}

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace = "org.springblade.erpdata.mapper.ErpMesRbSjsoMapper">
<select id = "getMesRbSjsoErpList" resultType = "org.springblade.erpdata.pojo.dto.view.MesRbSjso">
SELECT * FROM v_mes_rb_sjso WHERE is_deleted = 0
</select>
</mapper>

@ -0,0 +1,21 @@
package org.springblade.erpdata.mapper;
import com.baomidou.mybatisplus.core.mapper.Mapper;
import org.springblade.erpdata.pojo.dto.view.MesRbSodelrecwx;
import java.util.List;
/**
* Mapper 接口
*
* @author lqk
*/
public interface ErpMesRbSodelrecwxMapper extends Mapper {
/**
* 从ERP视图中获取要同步的推进计划转工单
*
* @return
*/
List<MesRbSodelrecwx> getMesRbSodelrecwxErpList();
}

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace = "org.springblade.erpdata.mapper.ErpMesRbSodelrecwxMapper">
<select id = "getMesRbSodelrecwxErpList" resultType = "org.springblade.erpdata.pojo.dto.view.MesRbSodelrecwx">
SELECT * FROM v_mes_rb_sodelrecwx WHERE is_deleted = 0
</select>
</mapper>

@ -0,0 +1,22 @@
package org.springblade.erpdata.mapper;
import com.baomidou.mybatisplus.core.mapper.Mapper;
import org.springblade.erpdata.pojo.dto.view.MesRbSjso;
import org.springblade.erpdata.pojo.dto.view.MesRbWxpromotion;
import java.util.List;
/**
* Mapper 接口
*
* @author lqk
*/
public interface ErpMesRbWxpromotionMapper extends Mapper {
/**
* 从ERP视图中获取要同步的推进计划转工单
*
* @return
*/
List<MesRbWxpromotion> getMesRbWxpromotionErpList();
}

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace = "org.springblade.erpdata.mapper.ErpMesRbWxpromotionMapper">
<select id = "getMesRbWxpromotionErpList" resultType = "org.springblade.erpdata.pojo.dto.view.MesRbWxpromotion">
SELECT * FROM v_mes_rb_wxpromotion WHERE is_deleted = 0
</select>
</mapper>

@ -0,0 +1,14 @@
package org.springblade.erpdata.service;
/**
* ERP数据查询service
*
* @author lqk
*/
public interface IErpMesRbSjsoService {
/**
* 同步推进计划转工单
*/
void synMesRbSjso();
}

@ -0,0 +1,14 @@
package org.springblade.erpdata.service;
/**
* ERP数据查询service
*
* @author lqk
*/
public interface IErpMesRbSodelrecwxService {
/**
* 同步数据
*/
void synMesRbSodelrecwx();
}

@ -0,0 +1,14 @@
package org.springblade.erpdata.service;
/**
* ERP数据查询service
*
* @author lqk
*/
public interface IErpMesRbWxpromotionService {
/**
* 同步数据
*/
void synMesRbWxpromotion();
}

@ -0,0 +1,28 @@
package org.springblade.erpdata.service.impl;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springblade.desk.order.feign.IApsClient;
import org.springblade.erpdata.mapper.ErpMesRbSjsoMapper;
import org.springblade.erpdata.service.IErpMesRbSjsoService;
import org.springframework.stereotype.Service;
/**
* @author lqk
* @date 2025-11-26 9:39
*/
@Slf4j
@RequiredArgsConstructor
@Service
public class ErpMesRbSjsoServiceImpl implements IErpMesRbSjsoService {
private final ErpMesRbSjsoMapper mesRbSjsoMapper;
private final IApsClient apsClient;
@Override
public void synMesRbSjso() {
}
}

@ -0,0 +1,26 @@
package org.springblade.erpdata.service.impl;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springblade.desk.order.feign.IApsClient;
import org.springblade.erpdata.mapper.ErpMesRbSodelrecwxMapper;
import org.springblade.erpdata.service.IErpMesRbSodelrecwxService;
import org.springframework.stereotype.Service;
/**
* @author lqk
* @date 2025-11-26 9:39
*/
@Slf4j
@RequiredArgsConstructor
@Service
public class ErpMesRbSodelrecwxServiceImpl implements IErpMesRbSodelrecwxService {
private final ErpMesRbSodelrecwxMapper mesRbSodelrecwxMapper;
private final IApsClient apsClient;
@Override
public void synMesRbSodelrecwx() {
}
}

@ -0,0 +1,28 @@
package org.springblade.erpdata.service.impl;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springblade.desk.order.feign.IApsClient;
import org.springblade.erpdata.mapper.ErpMesRbWxpromotionMapper;
import org.springblade.erpdata.service.IErpMesRbWxpromotionService;
import org.springframework.stereotype.Service;
/**
* @author lqk
* @date 2025-11-26 9:39
*/
@Slf4j
@RequiredArgsConstructor
@Service
public class ErpMesRbWxpromotionServiceImpl implements IErpMesRbWxpromotionService {
private final ErpMesRbWxpromotionMapper mesRbWxpromotionMapper;
private final IApsClient apsClient;
@Override
public void synMesRbWxpromotion() {
}
}
Loading…
Cancel
Save