记得上下班打卡 | git大法好,push需谨慎

Commit 960f032e authored by 胡佳晨's avatar 胡佳晨

erp 相关测试接口提交

parent 055950d7
...@@ -85,18 +85,27 @@ public class ErpWdtClient { ...@@ -85,18 +85,27 @@ public class ErpWdtClient {
map.put("appkey", "mdtk2-test"); map.put("appkey", "mdtk2-test");
map.put("sid", "apidevnew2"); map.put("sid", "apidevnew2");
map.put("timestamp", Long.toString(System.currentTimeMillis() / 1000)); map.put("timestamp", Long.toString(System.currentTimeMillis() / 1000));
// map.put("start_time", "2022-11-30 11:30:00");
// map.put("end_time", "2022-11-30 11:35:00");
// map.put("spec_no", "mdsk001");
// map.put("warehouse_no", "mdtk2-test");
map.put("shop_no","mdtk2-test");
map.put("limit","100");
//增量库存查询
map.put("start_time", "2022-11-30 13:46:00");
map.put("end_time", "2022-12-01 11:00:00");
map.put("warehouse_no", "mdtk2-test");
map.put("spec_no", "mdsk01");
//同步库存查询
// map.put("shop_no","mdtk2-test");
// map.put("limit","100");
//创建原始单
// map.put("shop_no", "mdtk2-test");
// List<Map<String, Object>> tradeList = new ArrayList<Map<String, Object>>();
// tradeList.add(new TradeListVo().test());
// map.put("trade_list", JSON.toJSONString(tradeList));
// System.out.println("trade_list = " + map.get("trade_list"));
//
map.put("sign", new ErpWdtClient().getErpSign(map, "09335107b")); map.put("sign", new ErpWdtClient().getErpSign(map, "09335107b"));
System.out.println("sign = "+map.toString()); System.out.println("sign = " + map.get("sign"));
System.out.println("timestamp = " + map.get("timestamp"));
} }
......
...@@ -25,28 +25,28 @@ public class ErpEnum { ...@@ -25,28 +25,28 @@ public class ErpEnum {
* 查询后需要调用 logistics_sync_ack 应答 * 查询后需要调用 logistics_sync_ack 应答
*/ */
LOGISTICS_SYNC_ACK("logistics_sync_ack.php"), LOGISTICS_SYNC_ACK("logistics_sync_ack.php"),
/** // /**
* 查询库存同步 // * 查询库存同步
* 建议间隔时间3~5分钟查询一次,集中获取待同步数据,注意上一次回写完成以后,再从数据池获取待同步的数据。 查询后需要调用 api_goods_stock_change_ack 应答 // * 建议间隔时间3~5分钟查询一次,集中获取待同步数据,注意上一次回写完成以后,再从数据池获取待同步的数据。 查询后需要调用 api_goods_stock_change_ack 应答
*/ // */
API_GOODS_STOCK_CHANGE_QUERY("api_goods_stock_change_query.php"), // API_GOODS_STOCK_CHANGE_QUERY("api_goods_stock_change_query.php"),
/** // /**
* 库存同步回写 // * 库存同步回写
* 查询后需要调用 api_goods_stock_change_ack 应答 // * 查询后需要调用 api_goods_stock_change_ack 应答
*/ // */
API_GOODS_STOCK_CHANGE_ACK("api_goods_stock_change_ack.php"), // API_GOODS_STOCK_CHANGE_ACK("api_goods_stock_change_ack.php"),
/** /**
* 创建原始退款单 * 创建原始退款单
* 销售订单(包括发货前和发货后)退款或退货单据推送至ERP。注:销售订单的售后换货订单此接口推送“退货类型”退款单,换出订单“trade_push.php”推送 * 销售订单(包括发货前和发货后)退款或退货单据推送至ERP。注:销售订单的售后换货订单此接口推送“退货类型”退款单,换出订单“trade_push.php”推送
* 批量推送的退款单据,每次不超过10单 * 批量推送的退款单据,每次不超过10单
*/ */
API_SALES_REFUND_PUSH("sales_refund_push.php"), // API_SALES_REFUND_PUSH("sales_refund_push.php"),
/** /**
* 查询退换管理 * 查询退换管理
* 获取ERP销售退货(换货)订单信息 * 获取ERP销售退货(换货)订单信息
* 按照旺店通ERP订单的最后修改时间增量获取数据,请求时输入start_time和end_time作为时间跨度的筛选条件。 * 按照旺店通ERP订单的最后修改时间增量获取数据,请求时输入start_time和end_time作为时间跨度的筛选条件。
*/ */
API_REFUND_QUERY("refund_query.php"); // API_REFUND_QUERY("refund_query.php");
; ;
private final String uri; private final String uri;
...@@ -58,4 +58,35 @@ public class ErpEnum { ...@@ -58,4 +58,35 @@ public class ErpEnum {
return uri; return uri;
} }
} }
public enum WdtStatus {
/**
* 增量查询库存
*/
//未确认,客户只拍单未未付款(等待付款的订单,货到付款(COD)订单不需要等付款,直接进行待发货)
STATUS_UN_PAY(10),
// STATUS_(20),
//已付款待发货(包含货到付款),30只可以直接变更为70/ 80这2种状态
STATUS_UN_SEND(30),
// STATUS_(40),
//已发货(平台销售订单已经发货时推送此状态),如果已发货在自建商城代表订单完结状态,无后续状态变更,直接推送状态值70
STATUS_SEND(50),
//已完成(已签收),平台订单完成(客户确认收货)后,推送此状态;
//订单为自动流转模式时,初次推送的平台订单状态直接就是已完成状态70
STATUS_FINISH(70),
//已退款(付款后又全部退款推送此状态)
STATUS_REFUND(80),
//已关闭(未付款直接取消的订单推送此状态)
STATUS_CLOSE(90);
private final int status;
WdtStatus(int status) {
this.status = status;
}
public int WdtStatus() {
return status;
}
}
} }
package com.liquidnet.service.erp.param;
import com.liquidnet.service.erp.constant.ErpEnum;
import lombok.Data;
import java.math.BigDecimal;
import java.util.HashMap;
@Data
public class LogisticsListParam implements Cloneable {
// 回写的记录id,见logistics_sync_query中rec_id
private int rec_id;
// 回写状态: 0成功 1失败
private int status;
// 相关描述信息,可在erp的物流同步界面看到
private BigDecimal message;
private static final LogisticsListParam obj = new LogisticsListParam();
public static LogisticsListParam getNew() {
try {
return (LogisticsListParam) obj.clone();
} catch (CloneNotSupportedException e) {
return new LogisticsListParam();
}
}
public HashMap<String, Object> test(int recId, int status) {
HashMap<String, Object> map = new HashMap<>();
map.put("rec_id", recId);
map.put("status", status);
map.put("message", "test");
return map;
}
}
package com.liquidnet.service.erp.vo; package com.liquidnet.service.erp.param;
import com.liquidnet.service.erp.constant.ErpEnum;
import lombok.Data; import lombok.Data;
import java.math.BigDecimal;
import java.util.HashMap;
@Data @Data
public class OrderListVo { public class OrderListParam implements Cloneable{
// [必填]平台订单货品表主键,子订单唯一标识,同一个sid下通过本接口新增订单的oid(子订单编号)要保证唯一;如果oid重复,ERP生成系统单(递交)时会提示“订单货品数量不一致xxxxxx” // [必填]平台订单货品表主键,子订单唯一标识,同一个sid下通过本接口新增订单的oid(子订单编号)要保证唯一;如果oid重复,ERP生成系统单(递交)时会提示“订单货品数量不一致xxxxxx”
private String oid; private String oid;
// [必填]货品数量,订单推送成功以后本字段值不能更改 // [必填]货品数量,订单推送成功以后本字段值不能更改
private String num; private BigDecimal num;
// [必填]标价,折扣前的价格,可以推送价格为0的商品。订单推送成功以后本字段值不能更改 // [必填]标价,折扣前的价格,可以推送价格为0的商品。订单推送成功以后本字段值不能更改
private String price; private BigDecimal price;
// [必填]平台子订单状态,子订单状态可以和主订单不一样,比如其中一个子订单退款完成,其状态是80,但主订单仍然是待发货,可选值同trade_status // [必填]平台子订单状态,子订单状态可以和主订单不一样,比如其中一个子订单退款完成,其状态是80,但主订单仍然是待发货,可选值同trade_status
private String status; private int status;
// [必填]0:无退款,1:取消退款,2:已申请退款,3:等待退货,4:等待收货,5:退款成功。本字段在售前退款的时候,根据不同的场景填写不同的值,eg:申请退款值为2,取消退款值为1…… // [必填]0:无退款,1:取消退款,2:已申请退款,3:等待退货,4:等待收货,5:退款成功。本字段在售前退款的时候,根据不同的场景填写不同的值,eg:申请退款值为2,取消退款值为1……
private String refund_status; private int refund_status;
// [必填]平台系统货品(SPU)的唯一标识。goods_id不能为空,SPU和SKU概念介绍 // [必填]平台系统货品(SPU)的唯一标识。goods_id不能为空,SPU和SKU概念介绍
private String goods_id; private String goods_id;
// 平台系统单品(SKU)的的唯一标识,尽量不为空,SPU和SKU概念介绍 // 平台系统单品(SKU)的的唯一标识,尽量不为空,SPU和SKU概念介绍
...@@ -28,15 +32,41 @@ public class OrderListVo { ...@@ -28,15 +32,41 @@ public class OrderListVo {
// 平台货品规格名称 // 平台货品规格名称
// private String spec_name; // private String spec_name;
// [必填]客服调整总金额(大于0加价,小于0减价,是折扣来源的一部分,没有传0) // [必填]客服调整总金额(大于0加价,小于0减价,是折扣来源的一部分,没有传0)
private String adjust_amount; private BigDecimal adjust_amount;
// [必填]下单总折扣,客户下单时折扣(比如促销打折,不包含客服调整、分摊折扣,没有传0) // [必填]下单总折扣,客户下单时折扣(比如促销打折,不包含客服调整、分摊折扣,没有传0)
private String discount; private BigDecimal discount;
// [必填]分摊总折扣,由总订单分摊而来,一般是付款时产生,如使用优惠券,没有传0。分摊优惠传值注意:例如三个商品,优惠10,分摊优惠可以是:3/3/4,或者3.33/3.33/3.34.即最后一个商品的分摊优惠使用减法计算 // [必填]分摊总折扣,由总订单分摊而来,一般是付款时产生,如使用优惠券,没有传0。分摊优惠传值注意:例如三个商品,优惠10,分摊优惠可以是:3/3/4,或者3.33/3.33/3.34.即最后一个商品的分摊优惠使用减法计算
private String share_discount; private BigDecimal share_discount;
// 货品明细备注推送此字段ERP客户端需升级至V2.3.9.2及以上 // 货品明细备注推送此字段ERP客户端需升级至V2.3.9.2及以上
// private String remark; // private String remark;
// 平台货品所属类目 // 平台货品所属类目
// private String cid; // private String cid;
private static final OrderListParam obj = new OrderListParam();
public static OrderListParam getNew() {
try {
return (OrderListParam) obj.clone();
} catch (CloneNotSupportedException e) {
return new OrderListParam();
}
}
public HashMap<String ,Object> test(String id) {
HashMap<String,Object> map = new HashMap<>();
map.put("oid","testOrderSku"+id);
map.put("num",BigDecimal.ONE);
map.put("price",BigDecimal.ZERO);
map.put("status",ErpEnum.WdtStatus.STATUS_UN_SEND.WdtStatus());
map.put("refund_status",0);
map.put("goods_id","testSpu001");
map.put("spec_id","testSku001");
map.put("goods_no","mdsk01");
map.put("spec_no","mdsk01");
map.put("goods_name","01测试");
map.put("adjust_amount",BigDecimal.ZERO);
map.put("discount",BigDecimal.ZERO);
map.put("share_discount",BigDecimal.ZERO);
return map;
}
} }
package com.liquidnet.service.erp.vo; package com.liquidnet.service.erp.param;
import com.liquidnet.service.erp.constant.ErpEnum;
import lombok.Data; import lombok.Data;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
@Data @Data
public class TradeListVo { public class TradeListParam implements Cloneable {
// [必填] 指商城、官网等平台的订单编号,ERP称之为原始单号,同一个sid下通过本接口新增订单的tid保证唯一。 // [必填] 指商城、官网等平台的订单编号,ERP称之为原始单号,同一个sid下通过本接口新增订单的tid保证唯一。
private String tid; private String tid;
// [必填] 平台订单状态较多且涉及变更 // [必填] 平台订单状态较多且涉及变更
private String trade_status; private int trade_status;
// // 平台订单付款状态:0:未付款,1:部分付款,2:已付款 // 平台订单付款状态:0:未付款,1:部分付款,2:已付款
// private String pay_status; private int pay_status;
public int getPay_status() {
return 2;
}
// [必填] 1:款到发货,2:货到付款(包含部分货到付款),3:分期付款,4:挂账 // [必填] 1:款到发货,2:货到付款(包含部分货到付款),3:分期付款,4:挂账
private String delivery_term; private int delivery_term;
// 平台订单创建时间,时间格式:yyyy-MM-dd HH:mm:ss // 平台订单创建时间,时间格式:yyyy-MM-dd HH:mm:ss
private String trade_time; private String trade_time;
// [必填] 平台订单付款时间,时间格式:yyyy-MM-dd HH:mm:ss,未付款订单为:0000-00-00 00:00:00 // [必填] 平台订单付款时间,时间格式:yyyy-MM-dd HH:mm:ss,未付款订单为:0000-00-00 00:00:00
...@@ -67,15 +77,15 @@ public class TradeListVo { ...@@ -67,15 +77,15 @@ public class TradeListVo {
// [客服标旗,取值0至5对应的标旗颜色依次为灰(无标旗)、红、黄、绿、蓝、紫,不传默认0 // [客服标旗,取值0至5对应的标旗颜色依次为灰(无标旗)、红、黄、绿、蓝、紫,不传默认0
// private String seller_flag; // private String seller_flag;
// [必填]商家收取买家的物流或者快递费用 // [必填]商家收取买家的物流或者快递费用
private String post_amount; private BigDecimal post_amount;
// 货到付款金额 // 货到付款金额
// private String cod_amount; // private String cod_amount;
// [必填]货到付款买家费用,扣除货到付款订单金额后,卖家仍需支付的货到付款其他金额。这个钱卖家收不回来,是快递公司直接收走,但在快递单里是要打印出来,否则快递收款就错了 // [必填]货到付款买家费用,扣除货到付款订单金额后,卖家仍需支付的货到付款其他金额。这个钱卖家收不回来,是快递公司直接收走,但在快递单里是要打印出来,否则快递收款就错了
private String ext_cod_fee; private BigDecimal ext_cod_fee;
// [必填] 其它应从买家收取的服务费,其他费用 // [必填] 其它应从买家收取的服务费,其他费用
private String other_amount; private BigDecimal other_amount;
// [必填]订单已付金额,paid计算公式:paid = Σ(price * num + adjust_amount -discount – share_discount)+ post_amount+other_amount,所有金额相关字段推送处理办法,单击这里 // [必填]订单已付金额,paid计算公式:paid",Σ(price * num + adjust_amount -discount – share_discount)+ post_amount+other_amount,所有金额相关字段推送处理办法,单击这里
private String paid; private BigDecimal paid;
// 1:身份证(不传默认为0,为0时将证件号码置空) // 1:身份证(不传默认为0,为0时将证件号码置空)
// private String id_card_type; // private String id_card_type;
// 证件号码 // 证件号码
...@@ -87,6 +97,42 @@ public class TradeListVo { ...@@ -87,6 +97,42 @@ public class TradeListVo {
// ERP内自定义的仓库编号,查看路径ERP→设置→基本设置→仓库→仓库列表,测试环境仓库编号查看测试环境分配邮件。平台订单需指定ERP内仓库时,传哪个仓库的编号,ERP将为订单选择哪个仓库。 // ERP内自定义的仓库编号,查看路径ERP→设置→基本设置→仓库→仓库列表,测试环境仓库编号查看测试环境分配邮件。平台订单需指定ERP内仓库时,传哪个仓库的编号,ERP将为订单选择哪个仓库。
private String warehouse_no; private String warehouse_no;
// [必填]货品明细列表(子订单列表)节点 // [必填]货品明细列表(子订单列表)节点
private List<OrderListVo> order_list; private List<OrderListParam> order_list;
private static final TradeListParam obj = new TradeListParam();
public static TradeListParam getNew() {
try {
return (TradeListParam) obj.clone();
} catch (CloneNotSupportedException e) {
return new TradeListParam();
}
}
public HashMap<String, Object> test(String id) {
HashMap<String, Object> map = new HashMap<>();
map.put("tid", "testOrderSpu"+id);
map.put("trade_status", ErpEnum.WdtStatus.STATUS_UN_SEND.WdtStatus());
map.put("delivery_term", 1);
map.put("trade_time", "2022-11-30 12:00:00");
map.put("pay_time", "2022-11-30 12:00:00");
map.put("buyer_nick", "大美测试");
map.put("pay_id", "testSku001");
map.put("receiver_name", "大美");
map.put("receiver_province", "mdsk01");
map.put("receiver_city", "01测试");
map.put("receiver_district", "");
map.put("receiver_address", "北京市海淀区3-12");
map.put("receiver_mobile", "15901093014");
map.put("post_amount", BigDecimal.TEN);
map.put("ext_cod_fee", BigDecimal.ZERO);
map.put("other_amount", BigDecimal.ZERO);
map.put("paid", BigDecimal.TEN);
map.put("warehouse_no", "mdtk2-test");
List<Map<String, Object>> orderList = new ArrayList<Map<String, Object>>();
orderList.add(new OrderListParam().test(id));
map.put("order_list", orderList);
return map;
}
} }
package com.liquidnet.service.erp.vo;
import lombok.Data;
import java.math.BigDecimal;
@Data
public class LogisticsSyncAckVo implements Cloneable {
// 回写的记录id
private int rec_id;
// 错误信息的描述
private int error;
}
package com.liquidnet.service.erp.vo;
import lombok.Data;
@Data
public class LogisticsSyncVo implements Cloneable {
// 主键,用于logistics_sync_ack回写状态
private int rec_id;
// 代表店铺所有属性的唯一编码,用于店铺区分,ERP内支持自定义(ERP店铺界面设置)
private int shop_no;
// 原始订单编号,商城或平台订单号
private int tid;
// 物流或者快递面单对应的编号
private int logistics_no;
// 响应值为代表物流方式的数字,数字对应的物流方式名称单击这里
private int logistics_type;
// 发货时间 时间格式:yyyy-MM-dd HH:mm:ss
private int consign_time;
// 是否拆分发货,1:拆单发货,0:不进行拆单发货
private int is_part_sync;
// 子订单编号串,以逗号(,) 分隔,并且长度不固定(is_part_sync非0时才有效)
private int oids;
// 平台ID,固定值127
private int platform_id;
// 订单ID
private int trade_id;
// 代表物流所有属性的唯一编码,用于物流区分,ERP内支持自定义(ERP物流界面设置)
private int logistics_code_erp;
// ERP内自定义的物流名称,(对应ERP设置-基本设置-物流界面的物流名称)
private int logistics_name_erp;
// 物流方式类型名称,(ERP设置-基本设置-物流界面的物流类型中文名称)
private int logistics_name;
// 出库单id
private int stockout_id;
// 1:需要同步,0:不需要同步
private int is_need_sync;
// 0:等待同步2:同步失败,3:同步成功4:手动设置为同步成功,5:手动取消同步
private int sync_status;
// 一个订单要多次同步时,最后一个为1,用于同步回写状态
private int is_last;
// 默认为0
private int shop_id;
// 默认为0
private int logistics_id;
// 同步说明
private int description;
// 默认为'0000-00-00 00:00:00',成功同步时间
private int sync_time;
// 默认为0,是否使用淘宝在线发货
private int is_online;
// 默认为 '',平台返回的错误码
private int error_code;
// 默认为 '',平台返回的错误描述
private int error_msg;
// 默认为0,重试计数(有些同步失败可重试)
private int try_times;
// 最后修改时间, 时间格式:yyyy-MM-dd HH:mm:ss
private int modified;
// 创建时间,时间格式:yyyy-MM-dd HH:mm:ss
private int created;
// 序列号(存在序列号时返回序列号,无序列号时返回 flag)
private int sn_list;
}
package com.liquidnet.service.erp.vo;
import lombok.Data;
import java.util.List;
@Data
public class StockQueryBaseVo {
// 回写的记录id
private int code;
// 回写的记录id
private String message;
// 回写的记录id
private int total_count;
// 回写的记录id
private List<StockQueryVo> stocks;
}
package com.liquidnet.service.erp.vo;
import lombok.Data;
import java.math.BigDecimal;
@Data
public class StockQueryVo implements Cloneable {
// 单品主键id
private int spec_id;
// 代表SPU所有属性的唯一编号,用于系统货品的区分,SPU概念介绍
private String goods_no;
// 品牌编号
private String brand_no;
// 品牌名称,ERP版本V2.3.8.4及以上才可返回
private String brand_name;
// 货品名称
private String goods_name;
// 代表单品(SKU)所有属性的唯一编号,用于系统单品的区分,SKU概念介绍
private String spec_no;
// 规格码
private String spec_code;
// 条形码
private String barcode;
// 仓库主键id
private int warehouse_id;
// 代表仓库所有属性的唯一编码,用于仓库区分,ERP内支持自定义(ERP仓库界面设置)
private String warehouse_no;
// 仓库名称
private String warehouse_name;
// (0不限 1普通仓库 2自动流传外部 3京东仓储 4科捷 5百世物流 6SKU360 7通天晓 8中联网仓 9顺丰仓储 10网仓2号 11奇门仓储 12旺店通仓储 13心怡仓储 14力威仓储 15京东沧海 16云集仓储 17POS 18虎符 20外部链路型 22抖店云仓 126分销委外仓 127其它)
private int warehouse_type;
// 库存量
private BigDecimal stock_num;
// 锁定量
private BigDecimal lock_num;
// 主键
private long rec_id;
// 创建时间
private String created;
// 单品在仓库中编码,一般为空
private String spec_wh_no2;
// 委外出库库存占用量
private BigDecimal wms_reserve_num;
// 0 未启用 1 启用 2停用
private int status;
// 今日销量
private BigDecimal stock_today_num;
// 0 未启用 1 启用 2停用
private BigDecimal stock_diff;
// 辅助单位
private int unit;
// 依据最大警戒天数计算出的最大警戒库存
private BigDecimal safe_stock1;
// 最小警戒库存
private BigDecimal safe_stock2;
// 最大警戒库存
private BigDecimal safe_stock3;
// 警戒库存类型
private int alarm_type;
// 警戒库存计算天数
private int alarm_days;
// 最大警戒天数
private int alarm_days1;
// 销售增长率类型
private int sales_rate_type;
// 销售增长率
private BigDecimal sales_rate;
// 销售周期
private BigDecimal sales_rate_cycle;
// 固定月销售增长率
private BigDecimal sales_fixrate;
// 颜色标记
private int flag_id;
// 默认入库货位
private int default_position_id;
// 最后一次入库货位
private int last_position_id;
// 上次盘点时间
private String last_pd_time;
// 上次出入库时间
private String last_inout_time;
// 最后销售时间
private String last_sales_time;
// 备注
private String remark;
// 未付款量
private BigDecimal unpay_num;
// 预订单量
private BigDecimal subscribe_num;
// 待审核量
private BigDecimal order_num;
// 待发货量
private BigDecimal sending_num;
// 采在途量
private BigDecimal purchase_num;
// 调拨在途量
private BigDecimal transfer_num;
// 待调拨量
private BigDecimal to_transfer_num;
// 待采购量
private BigDecimal to_purchase_num;
// 采购到货量
private BigDecimal purchase_arrive_num;
// 采购退货量
private BigDecimal return_num;
// 委外出库占用量
private BigDecimal return_exch_num;
// 委外在途量
private BigDecimal return_onway_num;
// 销售退货量
private BigDecimal refund_num;
// 生产在途量
private BigDecimal process_onway_num;
// 销售退货在途量
private BigDecimal refund_onway_num;
// 部分付款库存
private BigDecimal part_paid_num;
// 负库存出库量
private BigDecimal neg_stockout_num;
// 今日销量
private BigDecimal today_num;
// 警戒库存
private BigDecimal safe_stock;
// 单品在外部WMS中的编码,如在物流宝仓库中主键
private String spec_wh_no;
// 外部WMS同步时库存
private BigDecimal wms_sync_stock;
// 外部WMS同步时占用库存
private BigDecimal wms_preempty_stock;
// 外部WMS同步时,与系统库存的差
private BigDecimal wms_stock_diff;
// 与外部WMS同步时间wms_sync_stock-stock_num 格式:yyyy-MM-dd HH:mm:ss
private String wms_sync_time;
// 成本价
private BigDecimal cost_price;
// 重量
private BigDecimal weight;
// 商品图片url
private String img_url;
// 最后修改时间,格式:yyyy-MM-dd HH:mm:ss
private String modified;
// 可发库存
private BigDecimal avaliable_num;
}
package com.liquidnet.service.platform.controller;
import com.alibaba.fastjson.JSON;
import com.liquidnet.commons.lang.util.CollectionUtil;
import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.erp.config.ErpWdtClient;
import com.liquidnet.service.erp.constant.ErpEnum;
import com.liquidnet.service.erp.param.LogisticsListParam;
import com.liquidnet.service.erp.param.TradeListParam;
import com.liquidnet.service.erp.vo.StockQueryBaseVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@Api(tags = "erp测试接口")
@Slf4j
@RestController
@RequestMapping("test/erp")
public class ErpTestController {
@Autowired
private ErpWdtClient erpWdtClient;
@PostMapping("stockQuery")
@ApiOperation("增量库存查询")
public ResponseDto<StockQueryBaseVo> stockQuery(@RequestParam("st") String st, @RequestParam("et") String et) {
Map<String, String> param = CollectionUtil.linkMapStringString();
param.put("start_time", st);
param.put("end_time", et);
param.put("warehouse_no", "mdtk2-test");
param.put("spec_no", "mdsk01");
String json = erpWdtClient.execute(ErpEnum.WdtAPI.STOCK_QUERY.getUri(), param);
StockQueryBaseVo data = JsonUtils.fromJson(json, StockQueryBaseVo.class);
return ResponseDto.success(data);
}
@PostMapping("tradePush")
@ApiOperation("创建原始单")
public ResponseDto<String> tradePush(@RequestParam("num") String num) {
Map<String, String> param = CollectionUtil.linkMapStringString();
param.put("shop_no", "mdtk2-test");
List<Map<String, Object>> tradeList = new ArrayList<>();
tradeList.add(TradeListParam.getNew().test(num));
param.put("trade_list", JSON.toJSONString(tradeList));
String json = erpWdtClient.execute(ErpEnum.WdtAPI.TRADE_PUSH.getUri(), param);
return ResponseDto.success(json);
}
@PostMapping("syncQuery")
@ApiOperation("查询物流同步")
public ResponseDto<String> syncQuery() {
Map<String, String> param = CollectionUtil.linkMapStringString();
param.put("shop_no", "mdtk2-test");
param.put("limit", "100");
param.put("is_part_sync_able","1");
String json = erpWdtClient.execute(ErpEnum.WdtAPI.LOGISTICS_SYNC_QUERY.getUri(), param);
return ResponseDto.success(json);
}
@PostMapping("syncAck")
@ApiOperation("物流同步回写")
public ResponseDto<String> syncAck(@RequestParam("recId") int recId,@RequestParam("status") int status) {
Map<String, String> param = CollectionUtil.linkMapStringString();
param.put("shop_no", "mdtk2-test");
param.put("limit", "100");
param.put("is_part_sync_able","1");
List<Map<String, Object>> logisticsList = new ArrayList<>();
logisticsList.add(LogisticsListParam.getNew().test(recId,status));
param.put("logistics_list", JSON.toJSONString(logisticsList));
String json = erpWdtClient.execute(ErpEnum.WdtAPI.LOGISTICS_SYNC_ACK.getUri(), param);
return ResponseDto.success(json);
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment