提交 f5a2a4ea authored 作者: 吕本才's avatar 吕本才

feat(订单同步): 重构销售出库单同步接口,支持状态筛选

将同步接口参数封装为SyncStockoutRequest对象,新增状态和状态类型筛选功能 优化请求参数处理逻辑,支持更灵活的查询条件
上级 65794adf
package com.sfa.job.controller.order;
import com.sfa.job.pojo.order.request.SyncStockoutRequest;
import com.sfa.job.pojo.order.response.WdtStockoutSalesQueryWithDetailDto;
import com.sfa.job.pojo.response.SyncOrderDetailDto;
import com.sfa.job.service.order.IWdtQimenStockoutOrderSyncService;
......@@ -25,6 +26,7 @@ public class WdtQimenStockoutOrderController {
/**
* 同步销售出库单
*
* @param startTime 开始时间(格式:yyyy-MM-dd HH:mm:ss)
* @param endTime 结束时间(格式:yyyy-MM-dd HH:mm:ss)
* @param shopNo 店铺编号
......@@ -35,11 +37,16 @@ public class WdtQimenStockoutOrderController {
@RequestParam(value = "startTime", required = false) @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date startTime,
@RequestParam(value = "endTime", required = false) @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date endTime,
@RequestParam(value = "pageSize", required = false, defaultValue = "200") Integer pageSize) {
return stockoutOrderSyncService.syncStockoutOrder(startTime, endTime, 1, pageSize);
SyncStockoutRequest syncStockoutRequest = new SyncStockoutRequest();
syncStockoutRequest.setStartTime(startTime);
syncStockoutRequest.setEndTime(endTime);
syncStockoutRequest.setSyncType(1);
return stockoutOrderSyncService.syncStockoutOrder(syncStockoutRequest, pageSize);
}
/**
* 同步单个销售出库单
*
* @param stockoutNo 出库单编号
* @return 同步结果
*/
......
package com.sfa.job.pojo.order.request;
import java.util.Date;
import lombok.Data;
@Data
public class SyncStockoutRequest {
private String stockoutNo;
// 出库单状态:5已取消, 10待放回(拣货待放回)小于该值的都是已取消的单子, 50待审核, 51缺货, 52缺货待入库,
// 53 WMS已接单, 54 获取电子面单, 58 档口锁定, 60 待分配, 61 排队中, 63 待补货, 65 待处理,
// 70 待发货, 73 爆款锁定, 74 预打包, 75 待拣货, 77 拣货中,PDA拣货后, 79 已拣货, 90 延时发货, 110已完成
private String status = "50,51,52,53,54,58,60,61,63,65,70,73,74,75,77,79,90,110";
private Integer statusType = 3;
private Date startTime;
private Date endTime;
private Integer syncType;
}
package com.sfa.job.pojo.order.request;
import com.qimencloud.api.scene3ldsmu02o9.response.WdtWmsStockoutSalesQuerywithdetailResponse;
import com.sfa.job.pojo.order.response.WdtStockoutSalesQueryWithDetailDto;
import com.taobao.api.ApiRuleException;
......@@ -11,7 +10,8 @@ import com.taobao.api.internal.util.json.JSONWriter;
import java.util.Map;
public class WdtStockoutSalesQueryWithDetailRequest extends BaseTaobaoRequest<WdtWmsStockoutSalesQuerywithdetailResponse> {
public class WdtStockoutSalesQueryWithDetailRequest
extends BaseTaobaoRequest<WdtWmsStockoutSalesQuerywithdetailResponse> {
private String datetime;
private String pager;
private String params;
......@@ -58,6 +58,7 @@ public class WdtStockoutSalesQueryWithDetailRequest extends BaseTaobaoRequest<Wd
public String getParams() {
return this.params;
}
public void setWdtAppkey(String wdtAppkey) {
this.wdtAppkey = wdtAppkey;
}
......@@ -173,34 +174,49 @@ public class WdtStockoutSalesQueryWithDetailRequest extends BaseTaobaoRequest<Wd
@ApiField("end_time")
private String endime;
// @ApiField("status")
// private String status;
/**
* 出库单状态: 默认值为0
* 1.已取消
* 2.在企业版状态中对应status=55(已确认),这里为 待分配~延时发货(此条件会返回延时发货状态的订单)
* 3.按照指定的status状态字段查询
* 0.延时发货&已完成
*/
@ApiField("status")
private String status;
/**
* 传status_type=3情况下,按照修改时间和status查询
* (status_type=3的情况下,若不传status字段,按照发货时间查询)
* 出库单状态(若多个状态则以“,”隔开):
* 5已取消、10待放回(拣货待放回), 小于该值的都是已取消的单子
* 50待审核、 51缺货、52缺货待入库、53 WMS已接单
* 54 获取电子面单、58 档口锁定、60 待分配
* 61 排队中、63 待补货、65 待处理、 70 待发货、73 爆款锁定、74 预打包
* 75 待拣货、77 拣货中,PDA拣货后、 79 已拣货
* 90 延时发货、110已完成
*/
@ApiField("status_type")
private Integer status_type=0;
private Integer statusType = 0;
public void setStatusType(Integer statusType) {
this.statusType = statusType;
}
// public String getStatus() {
// return status;
// }
// public void setStatus(String status) {
// this.status = status;
// }
public Integer getStatusType() {
return statusType;
}
public Integer getStatus_type() {
return status_type;
public String getStatus() {
return status;
}
public void setStatus_type(Integer status_type) {
this.status_type = status_type;
public void setStatus(String status) {
this.status = status;
}
@ApiField("stockout_no")
private String stockoutNo;
public String getStockoutNo() {
return stockoutNo;
}
......@@ -225,8 +241,6 @@ public class WdtStockoutSalesQueryWithDetailRequest extends BaseTaobaoRequest<Wd
this.endime = endime;
}
}
}
......@@ -2,6 +2,7 @@ package com.sfa.job.service.order;
import java.util.Date;
import com.sfa.job.pojo.order.request.SyncStockoutRequest;
import com.sfa.job.pojo.order.response.WdtStockoutSalesQueryWithDetailDto;
import com.sfa.job.pojo.response.SyncOrderDetailDto;
......@@ -17,7 +18,7 @@ public interface IWdtQimenStockoutOrderSyncService {
* @param shopNo 店铺编号
* @return 同步结果
*/
SyncOrderDetailDto syncStockoutOrder(Date startTime, Date endTime, Integer syncType, Integer pageSize);
SyncOrderDetailDto syncStockoutOrder(SyncStockoutRequest syncStockoutRequest,Integer pageSize);
/**
* 同步单个销售出库单
......
......@@ -22,6 +22,7 @@ import com.sfa.job.domain.order.entity.WdtQimenStockoutPositionDetail;
import com.sfa.job.domain.order.entity.WdtQimenStockoutLogisticsDetail;
import com.sfa.job.domain.order.entity.WdtQimenStockOutPickPositionDetail;
import com.sfa.job.domain.order.entity.WdtQimenStockoutGovSubsidy;
import com.sfa.job.pojo.order.request.SyncStockoutRequest;
import com.sfa.job.pojo.order.request.WdtStockoutSalesQueryWithDetailRequest;
import com.sfa.job.pojo.order.response.WdtQimenStockoutBodyDto;
import com.sfa.job.pojo.order.response.WdtQimenStockoutDataDto;
......@@ -77,7 +78,7 @@ public class WdtQimenStockoutOrderSyncServiceImpl implements IWdtQimenStockoutOr
@Transactional(rollbackFor = Exception.class)
@Override
public SyncOrderDetailDto syncStockoutOrder(Date startTime, Date endTime, Integer syncType, Integer pageSize) {
public SyncOrderDetailDto syncStockoutOrder(SyncStockoutRequest syncStockoutRequest,Integer pageSize) {
WdtStockoutSalesQueryWithDetailRequest request = new WdtStockoutSalesQueryWithDetailRequest();
String serverUrl = wdtQimenConfig.getServerUrl();
String appKey = wdtQimenConfig.getAppKey();
......@@ -101,6 +102,11 @@ public class WdtQimenStockoutOrderSyncServiceImpl implements IWdtQimenStockoutOr
SyncOrderDetailDto detailDto = new SyncOrderDetailDto();
String batchNo = 1 + DateUtils.dateTimeNow() + Thread.currentThread().getId();
String method = request.getApiMethodName();
Date startTime = syncStockoutRequest.getStartTime();
Date endTime = syncStockoutRequest.getEndTime();
Integer syncType = syncStockoutRequest.getSyncType();
Integer statusType = syncStockoutRequest.getStatusType();
String status = syncStockoutRequest.getStatus();
try {
// 初始化 detailDto 基本信息
......@@ -121,8 +127,10 @@ public class WdtQimenStockoutOrderSyncServiceImpl implements IWdtQimenStockoutOr
// 验证时间范围
Date currentLatest = DateUtils.addHours(new Date(), -2);
if (currentLatest.compareTo(startTime) < 0) {
detailDto.setMessage(String.format("开始时间%s不能大于当前时间%s", DateUtil.formatDateTime(startTime), DateUtil.formatDateTime(currentLatest)));
log.debug(String.format("开始时间%s不能大于当前时间%s", DateUtil.formatDateTime(startTime), DateUtil.formatDateTime(currentLatest)));
detailDto.setMessage(String.format("开始时间%s不能大于当前时间%s", DateUtil.formatDateTime(startTime),
DateUtil.formatDateTime(currentLatest)));
log.debug(String.format("开始时间%s不能大于当前时间%s", DateUtil.formatDateTime(startTime),
DateUtil.formatDateTime(currentLatest)));
return detailDto;
}
if (!detailDto.validateStartTime()) {
......@@ -136,6 +144,12 @@ public class WdtQimenStockoutOrderSyncServiceImpl implements IWdtQimenStockoutOr
WdtStockoutSalesQueryWithDetailRequest.Params params = new WdtStockoutSalesQueryWithDetailRequest.Params();
params.setStartTime(DateUtil.formatDateTime(startTime));
params.setEndime(DateUtil.formatDateTime(endTime));
if (ObjectUtils.isNotEmpty(statusType)) {
params.setStatusType(3);
}
if (ObjectUtils.isNotEmpty(status)) {
params.setStatus(status);
}
request.setParams(params);
WdtStockoutSalesQueryWithDetailRequest.Pager pager = new WdtStockoutSalesQueryWithDetailRequest.Pager();
......@@ -280,7 +294,8 @@ public class WdtQimenStockoutOrderSyncServiceImpl implements IWdtQimenStockoutOr
}
log.info("第 {} 页处理完成 - 订单: {}, 明细: {}, 货位: {}, 拣货位: {}, 物流: {}, 国补: {}",
pageNo, pageOrderList.size(), pageDetailList.size(), pagePositionDetailList.size(),
pagePickPositionDetailList.size(), pageLogisticsDetailList.size(), pageGovSubsidyList.size());
pagePickPositionDetailList.size(), pageLogisticsDetailList.size(),
pageGovSubsidyList.size());
}
detailDto.setPageNo(pageNo);
pageNo++;
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论