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

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

将同步接口参数封装为SyncStockoutRequest对象,新增状态和状态类型筛选功能 优化请求参数处理逻辑,支持更灵活的查询条件
上级 65794adf
package com.sfa.job.controller.order; 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.order.response.WdtStockoutSalesQueryWithDetailDto;
import com.sfa.job.pojo.response.SyncOrderDetailDto; import com.sfa.job.pojo.response.SyncOrderDetailDto;
import com.sfa.job.service.order.IWdtQimenStockoutOrderSyncService; import com.sfa.job.service.order.IWdtQimenStockoutOrderSyncService;
...@@ -25,9 +26,10 @@ public class WdtQimenStockoutOrderController { ...@@ -25,9 +26,10 @@ public class WdtQimenStockoutOrderController {
/** /**
* 同步销售出库单 * 同步销售出库单
*
* @param startTime 开始时间(格式:yyyy-MM-dd HH:mm:ss) * @param startTime 开始时间(格式:yyyy-MM-dd HH:mm:ss)
* @param endTime 结束时间(格式:yyyy-MM-dd HH:mm:ss) * @param endTime 结束时间(格式:yyyy-MM-dd HH:mm:ss)
* @param shopNo 店铺编号 * @param shopNo 店铺编号
* @return 同步结果 * @return 同步结果
*/ */
@GetMapping("/sync") @GetMapping("/sync")
...@@ -35,11 +37,16 @@ public class WdtQimenStockoutOrderController { ...@@ -35,11 +37,16 @@ public class WdtQimenStockoutOrderController {
@RequestParam(value = "startTime", required = false) @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date startTime, @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 = "endTime", required = false) @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date endTime,
@RequestParam(value = "pageSize", required = false, defaultValue = "200") Integer pageSize) { @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 出库单编号 * @param stockoutNo 出库单编号
* @return 同步结果 * @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; package com.sfa.job.pojo.order.request;
import com.qimencloud.api.scene3ldsmu02o9.response.WdtWmsStockoutSalesQuerywithdetailResponse; import com.qimencloud.api.scene3ldsmu02o9.response.WdtWmsStockoutSalesQuerywithdetailResponse;
import com.sfa.job.pojo.order.response.WdtStockoutSalesQueryWithDetailDto; import com.sfa.job.pojo.order.response.WdtStockoutSalesQueryWithDetailDto;
import com.taobao.api.ApiRuleException; import com.taobao.api.ApiRuleException;
...@@ -11,7 +10,8 @@ import com.taobao.api.internal.util.json.JSONWriter; ...@@ -11,7 +10,8 @@ import com.taobao.api.internal.util.json.JSONWriter;
import java.util.Map; import java.util.Map;
public class WdtStockoutSalesQueryWithDetailRequest extends BaseTaobaoRequest<WdtWmsStockoutSalesQuerywithdetailResponse> { public class WdtStockoutSalesQueryWithDetailRequest
extends BaseTaobaoRequest<WdtWmsStockoutSalesQuerywithdetailResponse> {
private String datetime; private String datetime;
private String pager; private String pager;
private String params; private String params;
...@@ -58,6 +58,7 @@ public class WdtStockoutSalesQueryWithDetailRequest extends BaseTaobaoRequest<Wd ...@@ -58,6 +58,7 @@ public class WdtStockoutSalesQueryWithDetailRequest extends BaseTaobaoRequest<Wd
public String getParams() { public String getParams() {
return this.params; return this.params;
} }
public void setWdtAppkey(String wdtAppkey) { public void setWdtAppkey(String wdtAppkey) {
this.wdtAppkey = wdtAppkey; this.wdtAppkey = wdtAppkey;
} }
...@@ -173,34 +174,49 @@ public class WdtStockoutSalesQueryWithDetailRequest extends BaseTaobaoRequest<Wd ...@@ -173,34 +174,49 @@ public class WdtStockoutSalesQueryWithDetailRequest extends BaseTaobaoRequest<Wd
@ApiField("end_time") @ApiField("end_time")
private String endime; 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") @ApiField("status_type")
private Integer status_type=0; private Integer statusType = 0;
// public String getStatus() { public void setStatusType(Integer statusType) {
// return status; this.statusType = statusType;
// } }
// public void setStatus(String status) { public Integer getStatusType() {
// this.status = status; return statusType;
// } }
public Integer getStatus_type() { public String getStatus() {
return status_type; return status;
} }
public void setStatus_type(Integer status_type) { public void setStatus(String status) {
this.status_type = status_type; this.status = status;
} }
@ApiField("stockout_no") @ApiField("stockout_no")
private String stockoutNo; private String stockoutNo;
public String getStockoutNo() { public String getStockoutNo() {
return stockoutNo; return stockoutNo;
} }
...@@ -225,8 +241,6 @@ public class WdtStockoutSalesQueryWithDetailRequest extends BaseTaobaoRequest<Wd ...@@ -225,8 +241,6 @@ public class WdtStockoutSalesQueryWithDetailRequest extends BaseTaobaoRequest<Wd
this.endime = endime; this.endime = endime;
} }
} }
} }
...@@ -2,6 +2,7 @@ package com.sfa.job.service.order; ...@@ -2,6 +2,7 @@ package com.sfa.job.service.order;
import java.util.Date; 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.order.response.WdtStockoutSalesQueryWithDetailDto;
import com.sfa.job.pojo.response.SyncOrderDetailDto; import com.sfa.job.pojo.response.SyncOrderDetailDto;
...@@ -17,7 +18,7 @@ public interface IWdtQimenStockoutOrderSyncService { ...@@ -17,7 +18,7 @@ public interface IWdtQimenStockoutOrderSyncService {
* @param shopNo 店铺编号 * @param shopNo 店铺编号
* @return 同步结果 * @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; ...@@ -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.WdtQimenStockoutLogisticsDetail;
import com.sfa.job.domain.order.entity.WdtQimenStockOutPickPositionDetail; import com.sfa.job.domain.order.entity.WdtQimenStockOutPickPositionDetail;
import com.sfa.job.domain.order.entity.WdtQimenStockoutGovSubsidy; 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.request.WdtStockoutSalesQueryWithDetailRequest;
import com.sfa.job.pojo.order.response.WdtQimenStockoutBodyDto; import com.sfa.job.pojo.order.response.WdtQimenStockoutBodyDto;
import com.sfa.job.pojo.order.response.WdtQimenStockoutDataDto; import com.sfa.job.pojo.order.response.WdtQimenStockoutDataDto;
...@@ -77,7 +78,7 @@ public class WdtQimenStockoutOrderSyncServiceImpl implements IWdtQimenStockoutOr ...@@ -77,7 +78,7 @@ public class WdtQimenStockoutOrderSyncServiceImpl implements IWdtQimenStockoutOr
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@Override @Override
public SyncOrderDetailDto syncStockoutOrder(Date startTime, Date endTime, Integer syncType, Integer pageSize) { public SyncOrderDetailDto syncStockoutOrder(SyncStockoutRequest syncStockoutRequest,Integer pageSize) {
WdtStockoutSalesQueryWithDetailRequest request = new WdtStockoutSalesQueryWithDetailRequest(); WdtStockoutSalesQueryWithDetailRequest request = new WdtStockoutSalesQueryWithDetailRequest();
String serverUrl = wdtQimenConfig.getServerUrl(); String serverUrl = wdtQimenConfig.getServerUrl();
String appKey = wdtQimenConfig.getAppKey(); String appKey = wdtQimenConfig.getAppKey();
...@@ -101,6 +102,11 @@ public class WdtQimenStockoutOrderSyncServiceImpl implements IWdtQimenStockoutOr ...@@ -101,6 +102,11 @@ public class WdtQimenStockoutOrderSyncServiceImpl implements IWdtQimenStockoutOr
SyncOrderDetailDto detailDto = new SyncOrderDetailDto(); SyncOrderDetailDto detailDto = new SyncOrderDetailDto();
String batchNo = 1 + DateUtils.dateTimeNow() + Thread.currentThread().getId(); String batchNo = 1 + DateUtils.dateTimeNow() + Thread.currentThread().getId();
String method = request.getApiMethodName(); 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 { try {
// 初始化 detailDto 基本信息 // 初始化 detailDto 基本信息
...@@ -121,8 +127,10 @@ public class WdtQimenStockoutOrderSyncServiceImpl implements IWdtQimenStockoutOr ...@@ -121,8 +127,10 @@ public class WdtQimenStockoutOrderSyncServiceImpl implements IWdtQimenStockoutOr
// 验证时间范围 // 验证时间范围
Date currentLatest = DateUtils.addHours(new Date(), -2); Date currentLatest = DateUtils.addHours(new Date(), -2);
if (currentLatest.compareTo(startTime) < 0) { if (currentLatest.compareTo(startTime) < 0) {
detailDto.setMessage(String.format("开始时间%s不能大于当前时间%s", DateUtil.formatDateTime(startTime), DateUtil.formatDateTime(currentLatest))); detailDto.setMessage(String.format("开始时间%s不能大于当前时间%s", DateUtil.formatDateTime(startTime),
log.debug(String.format("开始时间%s不能大于当前时间%s", DateUtil.formatDateTime(startTime), DateUtil.formatDateTime(currentLatest))); DateUtil.formatDateTime(currentLatest)));
log.debug(String.format("开始时间%s不能大于当前时间%s", DateUtil.formatDateTime(startTime),
DateUtil.formatDateTime(currentLatest)));
return detailDto; return detailDto;
} }
if (!detailDto.validateStartTime()) { if (!detailDto.validateStartTime()) {
...@@ -136,6 +144,12 @@ public class WdtQimenStockoutOrderSyncServiceImpl implements IWdtQimenStockoutOr ...@@ -136,6 +144,12 @@ public class WdtQimenStockoutOrderSyncServiceImpl implements IWdtQimenStockoutOr
WdtStockoutSalesQueryWithDetailRequest.Params params = new WdtStockoutSalesQueryWithDetailRequest.Params(); WdtStockoutSalesQueryWithDetailRequest.Params params = new WdtStockoutSalesQueryWithDetailRequest.Params();
params.setStartTime(DateUtil.formatDateTime(startTime)); params.setStartTime(DateUtil.formatDateTime(startTime));
params.setEndime(DateUtil.formatDateTime(endTime)); params.setEndime(DateUtil.formatDateTime(endTime));
if (ObjectUtils.isNotEmpty(statusType)) {
params.setStatusType(3);
}
if (ObjectUtils.isNotEmpty(status)) {
params.setStatus(status);
}
request.setParams(params); request.setParams(params);
WdtStockoutSalesQueryWithDetailRequest.Pager pager = new WdtStockoutSalesQueryWithDetailRequest.Pager(); WdtStockoutSalesQueryWithDetailRequest.Pager pager = new WdtStockoutSalesQueryWithDetailRequest.Pager();
...@@ -161,7 +175,7 @@ public class WdtQimenStockoutOrderSyncServiceImpl implements IWdtQimenStockoutOr ...@@ -161,7 +175,7 @@ public class WdtQimenStockoutOrderSyncServiceImpl implements IWdtQimenStockoutOr
if (ObjectUtils.isNotEmpty(response) && response.getFlag().equals("failure")) { if (ObjectUtils.isNotEmpty(response) && response.getFlag().equals("failure")) {
log.error("奇门加载数据异常 - 消息: {}, 子消息: {}, 耗时: {}ms", log.error("奇门加载数据异常 - 消息: {}, 子消息: {}, 耗时: {}ms",
response.getMessage(), response.getSubMessage(), duration); response.getMessage(), response.getSubMessage(), duration);
throw new ServiceException("奇门加载数据异常:" + response.getMessage() + response.getSubMessage()); throw new ServiceException("奇门加载数据异常:" + response.getMessage() + response.getSubMessage());
} }
log.debug("奇门API请求成功,耗时: {}ms", duration); log.debug("奇门API请求成功,耗时: {}ms", duration);
...@@ -279,8 +293,9 @@ public class WdtQimenStockoutOrderSyncServiceImpl implements IWdtQimenStockoutOr ...@@ -279,8 +293,9 @@ public class WdtQimenStockoutOrderSyncServiceImpl implements IWdtQimenStockoutOr
stockoutGovSubsidyDao.insertOrUpdateBatch(pageGovSubsidyList); stockoutGovSubsidyDao.insertOrUpdateBatch(pageGovSubsidyList);
} }
log.info("第 {} 页处理完成 - 订单: {}, 明细: {}, 货位: {}, 拣货位: {}, 物流: {}, 国补: {}", log.info("第 {} 页处理完成 - 订单: {}, 明细: {}, 货位: {}, 拣货位: {}, 物流: {}, 国补: {}",
pageNo, pageOrderList.size(), pageDetailList.size(), pagePositionDetailList.size(), pageNo, pageOrderList.size(), pageDetailList.size(), pagePositionDetailList.size(),
pagePickPositionDetailList.size(), pageLogisticsDetailList.size(), pageGovSubsidyList.size()); pagePickPositionDetailList.size(), pageLogisticsDetailList.size(),
pageGovSubsidyList.size());
} }
detailDto.setPageNo(pageNo); detailDto.setPageNo(pageNo);
pageNo++; pageNo++;
...@@ -298,8 +313,8 @@ public class WdtQimenStockoutOrderSyncServiceImpl implements IWdtQimenStockoutOr ...@@ -298,8 +313,8 @@ public class WdtQimenStockoutOrderSyncServiceImpl implements IWdtQimenStockoutOr
detailDto.setRemark(remark); detailDto.setRemark(remark);
detailDto.setLatestTime(endTime); detailDto.setLatestTime(endTime);
// detailDto.setDetailInfo(method, remark, // detailDto.setDetailInfo(method, remark,
// syncType, totalCount, totalDetailCount,Integer.parseInt(totalPage+""), // syncType, totalCount, totalDetailCount,Integer.parseInt(totalPage+""),
// batchNo,endTime, startTime); // batchNo,endTime, startTime);
// 保存同步日志到数据库 // 保存同步日志到数据库
orderLogInfoDao.insert(detailDto); orderLogInfoDao.insert(detailDto);
} catch (ApiException e) { } catch (ApiException e) {
...@@ -356,7 +371,7 @@ public class WdtQimenStockoutOrderSyncServiceImpl implements IWdtQimenStockoutOr ...@@ -356,7 +371,7 @@ public class WdtQimenStockoutOrderSyncServiceImpl implements IWdtQimenStockoutOr
if (ObjectUtils.isNotEmpty(response) && response.getFlag().equals("failure")) { if (ObjectUtils.isNotEmpty(response) && response.getFlag().equals("failure")) {
log.error("奇门加载数据异常 - 消息: {}, 子消息: {}, 耗时: {}ms", log.error("奇门加载数据异常 - 消息: {}, 子消息: {}, 耗时: {}ms",
response.getMessage(), response.getSubMessage(), duration); response.getMessage(), response.getSubMessage(), duration);
throw new ServiceException("奇门加载数据异常:" + response.getMessage() + response.getSubMessage()); throw new ServiceException("奇门加载数据异常:" + response.getMessage() + response.getSubMessage());
} }
log.debug("奇门API请求成功,耗时: {}ms", duration); log.debug("奇门API请求成功,耗时: {}ms", duration);
...@@ -438,7 +453,7 @@ public class WdtQimenStockoutOrderSyncServiceImpl implements IWdtQimenStockoutOr ...@@ -438,7 +453,7 @@ public class WdtQimenStockoutOrderSyncServiceImpl implements IWdtQimenStockoutOr
stockoutPickPositionDetailDao.insertOrUpdateBatch(allPickPositionDetails); stockoutPickPositionDetailDao.insertOrUpdateBatch(allPickPositionDetails);
} }
log.debug("单个订单明细保存完成 - 明细: {}, 货位: {}, 拣货位: {}", log.debug("单个订单明细保存完成 - 明细: {}, 货位: {}, 拣货位: {}",
detailList.size(), allPositionDetails.size(), allPickPositionDetails.size()); detailList.size(), allPositionDetails.size(), allPickPositionDetails.size());
} }
// 保存物流明细 // 保存物流明细
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论