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

1、优化同步采集代码

2、退换货采集完善
上级 88e3aa04
...@@ -35,14 +35,25 @@ public class FinanceOrderDetailSyncController extends BaseController { ...@@ -35,14 +35,25 @@ public class FinanceOrderDetailSyncController extends BaseController {
return detailDto; return detailDto;
} }
@GetMapping("/updateZbjType")
public SyncOrderDetailDto updateZbjType(Date startTime, Date endTime) {
log.info("接口开始同步-旺店通订单明细api接口数据");
// 可以传参开始时间和结束时间,用于补充特定时间的数据采集
SyncOrderDetailDto detailDto = syncService.updateZbjType(startTime, endTime);
log.info("接口结束同步-旺店通订单明细api接口数据, 共同步订单{}条数据,订单明细{}条,订单批次号:{},订单的开始时间{}和结束时间{}",
detailDto.getOrderCount(),detailDto.getOrderDetailCount(),detailDto.getBatchNo(),
DateUtil.formatDateTime(detailDto.getStartTime()),DateUtil.formatDateTime(detailDto.getEndTime()) );
return detailDto;
}
@GetMapping("/syncWdtRefundOrder") @GetMapping("/syncWdtRefundOrder")
public SyncOrderDetailDto syncWdtRefundOrder(Date startTime, Date endTime) { public SyncOrderDetailDto syncWdtRefundOrder(Date startTime, Date endTime) {
log.info("接口开始同步-旺店通退换订单明细api接口数据"); log.info("开始接口同步-旺店通退换订单明细api接口数据");
// 可以传参开始时间和结束时间,用于补充特定时间的数据采集 // 可以传参开始时间和结束时间,用于补充特定时间的数据采集
SyncOrderDetailDto detailDto = syncService.syncWdtRefundOrder(startTime, endTime, 1); SyncOrderDetailDto detailDto = syncService.syncWdtRefundOrder(startTime, endTime, 1);
log.info("接口结束同步-旺店通退换订单明细api接口数据, 共同步订单{}条数据,订单明细{}条,订单批次号:{},订单的开始时间{}和结束时间{}", log.info("结束接口同步-旺店通退换订单明细api接口数据, 共同步退换货订单{}条数据,退换货订单明细{}条,退换货同步批次号:{},订单的开始时间{}和结束时间{},数量:{}",
detailDto.getOrderCount(),detailDto.getOrderDetailCount(),detailDto.getBatchNo(), detailDto.getOrderCount(),detailDto.getOrderDetailCount(),detailDto.getBatchNo(),
DateUtil.formatDateTime(detailDto.getStartTime()),DateUtil.formatDateTime(detailDto.getEndTime()) ); DateUtil.formatDateTime(detailDto.getStartTime()),DateUtil.formatDateTime(detailDto.getEndTime()),detailDto.getRemark() );
return detailDto; return detailDto;
} }
......
...@@ -7,5 +7,5 @@ public interface CollectOrderLogDao { ...@@ -7,5 +7,5 @@ public interface CollectOrderLogDao {
// 插入一条记录 // 插入一条记录
void insert(SyncOrderDetailDto collectOrderLog); void insert(SyncOrderDetailDto collectOrderLog);
CollectOrderLogDto selectOrderSyncLatest(Integer syncType); CollectOrderLogDto selectOrderSyncLatest(Integer syncType, String method);
} }
package com.sfa.job.domain.order.dao;
import com.sfa.job.domain.order.entity.WdtRefundAmountDetail;
import java.util.List;
public interface WdtRefundAmountDetailDao {
void saveOrUpdateBatch(List<WdtRefundAmountDetail> mergeList);
}
...@@ -24,24 +24,27 @@ public class CollectOrderLogDaoImpl implements CollectOrderLogDao { ...@@ -24,24 +24,27 @@ public class CollectOrderLogDaoImpl implements CollectOrderLogDao {
@Override @Override
public void insert(SyncOrderDetailDto detailDto) { public void insert(SyncOrderDetailDto detailDto) {
CollectOrderLog collectOrderLog = new CollectOrderLog(); CollectOrderLog collectOrderLog = new CollectOrderLog();
BeanUtils.copyProperties(detailDto,collectOrderLog);
collectOrderLog.setSyncType(detailDto.getSyncType()); collectOrderLog.setSyncType(detailDto.getSyncType());
collectOrderLog.setMethod(detailDto.getMethod()); collectOrderLog.setMethod(detailDto.getMethod());
collectOrderLog.setOrderCount(detailDto.getOrderCount()); collectOrderLog.setStartTime(detailDto.getStartTime());
collectOrderLog.setOrderDetailCount(detailDto.getOrderDetailCount()); collectOrderLog.setEndTime(detailDto.getEndTime());
collectOrderLog.setBatchNo(detailDto.getBatchNo()); collectOrderLog.setBatchNo(detailDto.getBatchNo());
collectOrderLog.setLatestTime(detailDto.getLatestTime() ); collectOrderLog.setLatestTime(detailDto.getLatestTime() );
collectOrderLog.setPageNo(detailDto.getPageNo()); collectOrderLog.setPageNo(detailDto.getPageNo());
collectOrderLog.setTotalCount(detailDto.getTotalCount()); collectOrderLog.setTotalCount(detailDto.getTotalCount());
collectOrderLog.setRemark(detailDto.getRemark());
logInfoMapper.insert(collectOrderLog); logInfoMapper.insert(collectOrderLog);
} }
@Override @Override
public CollectOrderLogDto selectOrderSyncLatest(Integer syncType) { public CollectOrderLogDto selectOrderSyncLatest(Integer syncType, String method) {
// 查询最新发货日期 // 查询最新发货日期
List<CollectOrderLog> orderList = logInfoMapper.selectList( List<CollectOrderLog> orderList = logInfoMapper.selectList(
new LambdaQueryWrapper<CollectOrderLog>() new LambdaQueryWrapper<CollectOrderLog>()
// 默认查询xxljob自动同步时间 // 默认查询xxljob自动同步时间
.eq(CollectOrderLog::getSyncType,syncType) .eq(CollectOrderLog::getSyncType,syncType)
.eq(CollectOrderLog::getMethod,method)
.eq(CollectOrderLog::getDelFlag,0) .eq(CollectOrderLog::getDelFlag,0)
.orderByDesc(CollectOrderLog::getUpdateTime) .orderByDesc(CollectOrderLog::getUpdateTime)
.last("LIMIT 1")); .last("LIMIT 1"));
......
package com.sfa.job.domain.order.dao.impl;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.sfa.job.domain.order.dao.WdtRefundAmountDetailDao;
import com.sfa.job.domain.order.entity.WdtRefundAmountDetail;
import com.sfa.job.domain.order.mapper.WdtRefundAmountDetailMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import java.util.List;
@DS("bi")
@Repository
public class WdtRefundAmountDetailDaoImpl implements WdtRefundAmountDetailDao {
private static final int BATCH_SIZE = 1000;
@Autowired
private WdtRefundAmountDetailMapper amountDetailMapper;
@Override
public void saveOrUpdateBatch(List<WdtRefundAmountDetail> mergeList) {
for (int i = 0; i < mergeList.size(); i += BATCH_SIZE) {
int toIndex = Math.min(i + BATCH_SIZE, mergeList.size());
List<WdtRefundAmountDetail> batchLists = mergeList.subList(i, toIndex);
amountDetailMapper.saveOrUpdateBatch(batchLists);
}
}
}
...@@ -25,17 +25,28 @@ public class CollectOrderLog implements Serializable { ...@@ -25,17 +25,28 @@ public class CollectOrderLog implements Serializable {
*/ */
@TableId(value = "cli_id",type= IdType.AUTO) @TableId(value = "cli_id",type= IdType.AUTO)
private Long cliId; private Long cliId;
/**
* 方法,用于区分不同类别的同步
*/
private String method; private String method;
/**
* 备注,记录数量
*/
private String remark;
private Integer totalCount;
/** /**
* 采集订单的数量,存储为字符串,长度不超过 20 个字符 * 采集订单的数量,存储为字符串,长度不超过 20 个字符
*/ */
private Integer orderCount; private Date startTime;
/** /**
* 采集订单的详细数量,存储为字符串,长度不超过 20 个字符 * 采集订单的详细数量,存储为字符串,长度不超过 20 个字符
*/ */
private Integer orderDetailCount; private Date endTime;
/**
* 采集订单的详细数量,存储为字符串,长度不超过 20 个字符
*/;
/** /**
* 采集批次信息,可存储长度不超过 30 个字符,使用 utf8mb4 字符集和 utf8mb4_0900_ai_ci 校对规则 * 采集批次信息,可存储长度不超过 30 个字符,使用 utf8mb4 字符集和 utf8mb4_0900_ai_ci 校对规则
...@@ -86,6 +97,5 @@ public class CollectOrderLog implements Serializable { ...@@ -86,6 +97,5 @@ public class CollectOrderLog implements Serializable {
private Integer syncType; private Integer syncType;
private Integer totalCount;
} }
...@@ -13,19 +13,68 @@ import java.math.BigDecimal; ...@@ -13,19 +13,68 @@ import java.math.BigDecimal;
@Data @Data
@TableName(value = "wdt_refund_amount_detail") @TableName(value = "wdt_refund_amount_detail")
public class WdtRefundAmountDetail { public class WdtRefundAmountDetail {
private Integer recId; // 金额明细记录id /**
private Integer refundId; // 退换单id * 金额明细记录id
private Integer refundType; // 退换类型 1:货款 2:邮费 99:返现 */
private Integer isReturn; // 金额流向 0:商家->买家 1:买家->商家 private Integer recId;
private BigDecimal refundAmount; // 退款金额
private BigDecimal receiveAmount; // 收款金额 /**
private Boolean isGuarantee; // 是否担保支付 * 退换单id
private Integer accountId; // 支付账户 */
private String payAccount; // 买家账号(仅自有平台及线下平台返回) private Integer refundId;
private String accountName; // 买家开户人姓名
private String accountBank; // 开户银行 /**
private Boolean isAuto; // 是否系统自动生成 * 退换类型 1:货款 2:邮费 99:返现
private String remark; // 备注 */
private Integer refundType;
// getters & setters
/**
* 金额流向 0:商家->买家 1:买家->商家
*/
private Integer isReturn;
/**
* 退款金额
*/
private BigDecimal refundAmount;
/**
* 收款金额
*/
private BigDecimal receiveAmount;
/**
* 是否担保支付
*/
private Boolean isGuarantee;
/**
* 支付账户
*/
private Integer accountId;
/**
* 买家账号(仅自有平台及线下平台返回)
*/
private String payAccount;
/**
* 买家开户人姓名
*/
private String accountName;
/**
* 开户银行
*/
private String accountBank;
/**
* 是否系统自动生成
*/
private Boolean isAuto;
/**
* 备注
*/
private String remark;
} }
...@@ -14,67 +14,318 @@ import java.util.List; ...@@ -14,67 +14,318 @@ import java.util.List;
@Data @Data
@TableName(value = "wdt_refund_order") @TableName(value = "wdt_refund_order")
public class WdtRefundOrder { public class WdtRefundOrder {
private Integer refundId; // 退换单id /**
private String srcTids; // 原始单号(关联的销售单平台订单号) * 退换单id
private String refundNo; // 退换单号 */
private String remark; // 备注 private Integer refundId;
private Integer type; // 退换单类型 1:售前退款;2:退货;3:换货;4:退款不退货;6:保价退款
private Integer stockinStatus; // 入库状态 0:无需入库;1:待入库;2:部分入库;3:全部入库;4:终止入库 /**
private String flagName; // 标记名称 * 原始单号(关联的销售单平台订单号)
private BigDecimal returnGoodsCount; // 退回货品数量 */
private String receiverTelno; // 退款订单中收件人电话(仅自有平台及线下平台返回) private String srcTids;
private String receiverName; // 退款订单中收件人姓名(仅自有平台及线下平台返回)
private String modified; // 修改时间 /**
private Integer noteCount; // 便签数量 * 退换单号
private String shopNo; // 店铺编号 */
private Integer fromType; // 建单方式 0:API抓单;1:手工建单;2:Excel导入;3:分销商推送 private String refundNo;
private String created; // 建单时间
private String settleTime; // 结算时间 /**
private String checkTime; // 审核时间 * 备注
private String returnLogisticsNo; // 退货物流单号 */
private String tradeNoList; // 系统订单号列表 private String remark;
private BigDecimal guaranteeRefundAmount; // 平台退款金额(担保退款金额)
private BigDecimal returnGoodsAmount; // 退货金额 /**
private String returnLogisticsName; // 物流公司名称 * 退换单类型 1:售前退款;2:退货;3:换货;4:退款不退货;6:保价退款
private String reasonName; // 退换说明 */
private String refundReason; // 退款原因 private Integer type;
private String buyerNick; // 客户网名(仅自有平台及线下平台返回)
private String operatorName; // 建单者 /**
private BigDecimal actualRefundAmount; // 实际退款金额 * 入库状态 0:无需入库;1:待入库;2:部分入库;3:全部入库;4:终止入库
private String revertReasonName; // 驳回原因 */
private String returnWarehouseNo; // 退回仓库编号 private Integer stockinStatus;
private BigDecimal directRefundAmount; // 线下退款金额(非担保退款金额)
private BigDecimal receiveAmount; // 收款金额 /**
private String customerName; // 客户姓名(仅自有平台及线下平台返回) * 标记名称
private String fenxiaoNickName; // 分销商昵称 */
private Integer status; // 退换单状态 10:已取消;20:待审核;30:已审核... private String flagName;
private Integer shopId; // 店铺id
private Integer tradeId; // 订单id /**
private String rawRefundNos; // 原始退换单号 * 退回货品数量
private String payId; // 支付订单号 */
private String providerRefundNo; // 分销退换单号 private BigDecimal returnGoodsCount;
private Integer shopPlatformId; // 店铺平台id
private String tidList; // 原始单号 /**
private Integer subPlatformId; // 子平台id * 退款订单中收件人电话(仅自有平台及线下平台返回)
private Integer returnWarehouseId; // 退回仓库id */
private Integer platformId; // 平台id private String receiverTelno;
private String wmsOwnerNo; // 奇门货主编号
private Integer warehouseType; // 退回仓库类型 /**
private Integer badReason; // 拦截原因 * 退款订单中收件人姓名(仅自有平台及线下平台返回)
private String modifiedDate; // 最后修改时间 */
private String returnMaskInfo; // 退换信息 private String receiverName;
private Integer processStatus; // 处理状态
private Integer reasonId; // 退款原因id /**
private Integer revertReason; // 驳回原因id * 修改时间
private Integer customerId; // 客户id */
private Integer consignMode; // 发货方式 private String modified;
private String refundTime; // 退款创建时间
private String fenxiaoTid; // 分销原始单号 /**
private String fenxiaoNickNo; // 分销商编码 * 便签数量
private String wmsCode; // wms单号 */
private Integer rrStatus; // 平台状态 private Integer noteCount;
private String currentPhaseTimeout; // 退款成功时间
private List<WdtRefundOrderDetail> detailList; // 退换单详情 /**
private List<WdtRefundAmountDetail> amountDetailList; // 金额明细 * 店铺编号
private WdtSwapOrder swapOrder; // 换出订单 */
private String shopNo;
/**
* 建单方式 0:API抓单;1:手工建单;2:Excel导入;3:分销商推送
*/
private Integer fromType;
/**
* 建单时间
*/
private String created;
/**
* 结算时间
*/
private String settleTime;
/**
* 审核时间
*/
private String checkTime;
/**
* 退货物流单号
*/
private String returnLogisticsNo;
/**
* 系统订单号列表
*/
private String tradeNoList;
/**
* 平台退款金额(担保退款金额)
*/
private BigDecimal guaranteeRefundAmount;
/**
* 退货金额
*/
private BigDecimal returnGoodsAmount;
/**
* 物流公司名称
*/
private String returnLogisticsName;
/**
* 退换说明
*/
private String reasonName;
/**
* 退款原因
*/
private String refundReason;
/**
* 客户网名(仅自有平台及线下平台返回)
*/
private String buyerNick;
/**
* 建单者
*/
private String operatorName;
/**
* 实际退款金额
*/
private BigDecimal actualRefundAmount;
/**
* 驳回原因
*/
private String revertReasonName;
/**
* 退回仓库编号
*/
private String returnWarehouseNo;
/**
* 线下退款金额(非担保退款金额)
*/
private BigDecimal directRefundAmount;
/**
* 收款金额
*/
private BigDecimal receiveAmount;
/**
* 客户姓名(仅自有平台及线下平台返回)
*/
private String customerName;
/**
* 分销商昵称
*/
private String fenxiaoNickName;
/**
* 退换单状态 10:已取消;20:待审核;30:已审核...
*/
private Integer status;
/**
* 店铺id
*/
private Integer shopId;
/**
* 订单id
*/
private Integer tradeId;
/**
* 原始退换单号
*/
private String rawRefundNos;
/**
* 支付订单号
*/
private String payId;
/**
* 分销退换单号
*/
private String providerRefundNo;
/**
* 店铺平台id
*/
private Integer shopPlatformId;
/**
* 原始单号
*/
private String tidList;
/**
* 子平台id
*/
private Integer subPlatformId;
/**
* 退回仓库id
*/
private Integer returnWarehouseId;
/**
* 平台id
*/
private Integer platformId;
/**
* 奇门货主编号
*/
private String wmsOwnerNo;
/**
* 退回仓库类型
*/
private Integer warehouseType;
/**
* 拦截原因
*/
private Integer badReason;
/**
* 最后修改时间
*/
private String modifiedDate;
/**
* 退换信息
*/
private String returnMaskInfo;
/**
* 处理状态
*/
private Integer processStatus;
/**
* 退款原因id
*/
private Integer reasonId;
/**
* 驳回原因id
*/
private Integer revertReason;
/**
* 客户id
*/
private Integer customerId;
/**
* 发货方式
*/
private Integer consignMode;
/**
* 退款创建时间
*/
private String refundTime;
/**
* 分销原始单号
*/
private String fenxiaoTid;
/**
* 分销商编码
*/
private String fenxiaoNickNo;
/**
* wms单号
*/
private String wmsCode;
/**
* 平台状态
*/
private Integer rrStatus;
/**
* 退款成功时间
*/
private String currentPhaseTimeout;
/**
* 退换单详情
*/
private List<WdtRefundOrderDetail> detailList;
/**
* 金额明细
*/
private List<WdtRefundAmountDetail> amountDetailList;
/**
* 换出订单
*/
private WdtSwapOrder swapOrder;
} }
...@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.TableName; ...@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data; import lombok.Data;
import java.math.BigDecimal; import java.math.BigDecimal;
/** /**
* 退换货订单明细数据 * 退换货订单明细数据
* @author lvbencai * @author lvbencai
...@@ -12,46 +13,213 @@ import java.math.BigDecimal; ...@@ -12,46 +13,213 @@ import java.math.BigDecimal;
@Data @Data
@TableName(value = "wdt_refund_order_detail") @TableName(value = "wdt_refund_order_detail")
public class WdtRefundOrderDetail { public class WdtRefundOrderDetail {
private Integer recId; // 退换单明细Id /**
private Integer refundId; // 退换单id * 退换单明细Id
private String oid; // 原始子单号 */
private Integer tradeOrderId; // 订单明细id private Integer recId;
private Integer platformId; // 平台id
private String tid; // 原始单号 /**
private String tradeNo; // 系统订单编号 * 退换单id
private BigDecimal num; // 数量 */
private BigDecimal price; // 价格 private Integer refundId;
private BigDecimal originalPrice; // 原价
private BigDecimal checkedCostPrice; // 成本价 /**
private BigDecimal refundNum; // 退款数量 * 原始子单号
private BigDecimal totalAmount; // 退款总额 */
private BigDecimal refundAmount; // 已退款金额 private String oid;
private Boolean isGuarantee; // 是否担保退款
private String goodsNo; // 货品编号 /**
private String goodsName; // 货品名称 * 订单明细id
private String specName; // 规格名 */
private String specNo; // 商家编码 private Integer tradeOrderId;
private String goodsId; // 平台货品id
private String specId; // 平台规格id /**
private Integer sysGoodsId; // 系统货品id * 平台id
private Integer sysSpecId; // 系统规格id */
private String specCode; // 规格码 private Integer platformId;
private String barcode; // 条码
private BigDecimal stockinNum; // 入库数量 /**
private String remark; // 备注 * 原始单号
private String apiSpecName; // 平台规格名称 */
private String apiGoodsName; // 平台货品名称 private String tid;
private String modified; // 最后修改时间
private String suiteNo; // 组合装编号 /**
private String suiteName; // 组合装名称 * 系统订单编号
private String rawRefundNos; // 原始退款单号 */
private String rawRefundNo; // 原始退款单号 private String tradeNo;
private Integer salesTradeId; // 订单id
private BigDecimal discount; // 总折扣金额 /**
private BigDecimal paid; // 已支付金额 * 数量
private Integer suiteId; // 组合装id */
private BigDecimal suiteNum; // 组合装数量 private BigDecimal num;
private String created; // 创建时间
private String modifiedDate; // 最后修改时间 /**
private Integer giftType; // 赠品类型 * 价格
*/
private BigDecimal price;
/**
* 原价
*/
private BigDecimal originalPrice;
/**
* 成本价
*/
private BigDecimal checkedCostPrice;
/**
* 退款数量
*/
private BigDecimal refundNum;
/**
* 退款总额
*/
private BigDecimal totalAmount;
/**
* 已退款金额
*/
private BigDecimal refundAmount;
/**
* 是否担保退款
*/
private Boolean isGuarantee;
/**
* 货品编号
*/
private String goodsNo;
/**
* 货品名称
*/
private String goodsName;
/**
* 规格名
*/
private String specName;
/**
* 商家编码
*/
private String specNo;
/**
* 平台货品id
*/
private String goodsId;
/**
* 平台规格id
*/
private String specId;
/**
* 系统货品id
*/
private Integer sysGoodsId;
/**
* 系统规格id
*/
private Integer sysSpecId;
/**
* 规格码
*/
private String specCode;
/**
* 条码
*/
private String barcode;
/**
* 入库数量
*/
private BigDecimal stockinNum;
/**
* 备注
*/
private String remark;
/**
* 平台规格名称
*/
private String apiSpecName;
/**
* 平台货品名称
*/
private String apiGoodsName;
/**
* 最后修改时间
*/
private String modified;
/**
* 组合装编号
*/
private String suiteNo;
/**
* 组合装名称
*/
private String suiteName;
/**
* 原始退款单号
*/
private String rawRefundNos;
/**
* 原始退款单号
*/
private String rawRefundNo;
/**
* 订单id
*/
private Integer salesTradeId;
/**
* 总折扣金额
*/
private BigDecimal discount;
/**
* 已支付金额
*/
private BigDecimal paid;
/**
* 组合装id
*/
private Integer suiteId;
/**
* 组合装数量
*/
private BigDecimal suiteNum;
/**
* 创建时间
*/
private String created;
/**
* 最后修改时间
*/
private String modifiedDate;
/**
* 赠品类型
*/
private Integer giftType;
} }
...@@ -6,8 +6,6 @@ import lombok.Data; ...@@ -6,8 +6,6 @@ import lombok.Data;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.List; import java.util.List;
/** /**
* 退换货订单数据 * 退换货订单数据
* @author lvbencai * @author lvbencai
...@@ -16,20 +14,73 @@ import java.util.List; ...@@ -16,20 +14,73 @@ import java.util.List;
@Data @Data
@TableName(value = "wdt_swap_order") @TableName(value = "wdt_swap_order")
public class WdtSwapOrder { public class WdtSwapOrder {
private String tid; // 换出订单原始单号 /**
private String shopNo; // 店铺编号 * 换出订单原始单号
private String shopName; // 店铺名称 */
private String warehouseNo; // 仓库名称 private String tid;
private Integer shopId; // 店铺id
private Integer warehouseId; // 仓库id /**
private Integer swapProvince; // 省份id * 店铺编号
private Integer swapCity; // 城市id */
private String swapArea; // 地区 private String shopNo;
private Integer swapDistrict; // 地区id
private Integer swapLogisticsId; // 换货新订单物流公司id /**
private BigDecimal postAmount; // 换货邮费 * 店铺名称
private BigDecimal otherAmount; // 其他金额 */
private List<WdtSwapOrderDetail> swapOrderDetailList; // 换出订单明细 private String shopName;
// getters & setters /**
* 仓库名称
*/
private String warehouseNo;
/**
* 店铺id
*/
private Integer shopId;
/**
* 仓库id
*/
private Integer warehouseId;
/**
* 省份id
*/
private Integer swapProvince;
/**
* 城市id
*/
private Integer swapCity;
/**
* 地区
*/
private String swapArea;
/**
* 地区id
*/
private Integer swapDistrict;
/**
* 换货新订单物流公司id
*/
private Integer swapLogisticsId;
/**
* 换货邮费
*/
private BigDecimal postAmount;
/**
* 其他金额
*/
private BigDecimal otherAmount;
/**
* 换出订单明细
*/
private List<WdtSwapOrderDetail> swapOrderDetailList;
} }
...@@ -13,19 +13,68 @@ import java.math.BigDecimal; ...@@ -13,19 +13,68 @@ import java.math.BigDecimal;
@Data @Data
@TableName(value = "wdt_swap_order_detail") @TableName(value = "wdt_swap_order_detail")
public class WdtSwapOrderDetail { public class WdtSwapOrderDetail {
private String oid; // 原始子单号 /**
private Byte targetType; // 货品类型(1 单品,2 组合装) * 原始子单号
private Integer targetId; // 换出货品id */
private Boolean defect; // 是否残次品 private String oid;
private String goodsName; // 货品名称
private String goodsNo; // 货品编号 /**
private String specName; // 规格名称 * 货品类型(1 单品,2 组合装)
private String specCode; // 规格码 */
private String merchantNo; // 商家编码 private Byte targetType;
private BigDecimal price; // 零售价
private BigDecimal totalAmount; // 总价 /**
private BigDecimal num; // 数量 * 换出货品id
private String remark; // 备注 */
private Integer targetId;
// getters & setters
/**
* 是否残次品
*/
private Boolean defect;
/**
* 货品名称
*/
private String goodsName;
/**
* 货品编号
*/
private String goodsNo;
/**
* 规格名称
*/
private String specName;
/**
* 规格码
*/
private String specCode;
/**
* 商家编码
*/
private String merchantNo;
/**
* 零售价
*/
private BigDecimal price;
/**
* 总价
*/
private BigDecimal totalAmount;
/**
* 数量
*/
private BigDecimal num;
/**
* 备注
*/
private String remark;
} }
package com.sfa.job.domain.order.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.sfa.job.domain.order.entity.WdtRefundAmountDetail;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@Mapper
public interface WdtRefundAmountDetailMapper extends BaseMapper<WdtRefundAmountDetail> {
void saveOrUpdateBatch(List<WdtRefundAmountDetail> batchLists);
}
...@@ -26,12 +26,12 @@ public class CollectOrderLogDto implements Serializable { ...@@ -26,12 +26,12 @@ public class CollectOrderLogDto implements Serializable {
/** /**
* 采集订单的数量,存储为字符串,长度不超过 20 个字符 * 采集订单的数量,存储为字符串,长度不超过 20 个字符
*/ */
private Integer orderCount; private Date endTime;
/** /**
* 采集订单的详细数量,存储为字符串,长度不超过 20 个字符 * 采集订单的详细数量,存储为字符串,长度不超过 20 个字符
*/ */
private Integer orderDetailCount; private Date startTime;
/** /**
* 采集批次信息,可存储长度不超过 30 个字符,使用 utf8mb4 字符集和 utf8mb4_0900_ai_ci 校对规则 * 采集批次信息,可存储长度不超过 30 个字符,使用 utf8mb4 字符集和 utf8mb4_0900_ai_ci 校对规则
......
...@@ -11,6 +11,7 @@ import java.util.Date; ...@@ -11,6 +11,7 @@ import java.util.Date;
@Data @Data
public class SyncOrderDetailDto { public class SyncOrderDetailDto {
private String method; private String method;
private String remark;
/** /**
* 订单数量 * 订单数量
*/ */
...@@ -32,15 +33,18 @@ public class SyncOrderDetailDto { ...@@ -32,15 +33,18 @@ public class SyncOrderDetailDto {
private String message; private String message;
private Integer code = 200; private Integer code = 200;
public SyncOrderDetailDto setDetailInfo(int size, int mergerListSize, int beginPageNo, Integer totalCount, String batchNo, Date endTime, Date startTime) { public SyncOrderDetailDto setDetailInfo(String method, String remark, int syncType, int size, int mergerListSize, Integer totalCount, String batchNo, Date endTime, Date startTime) {
// 接口测试使用 // 接口测试使用
this.setOrderCount(size); this.setOrderCount(size);
this.setOrderDetailCount(mergerListSize); this.setOrderDetailCount(mergerListSize);
this.setStartTime(startTime); this.setStartTime(startTime);
this.setPageNo(beginPageNo);
this.setEndTime(endTime); this.setEndTime(endTime);
this.setLatestTime(endTime);
this.setTotalCount(totalCount); this.setTotalCount(totalCount);
this.setBatchNo(batchNo); this.setBatchNo(batchNo);
this.setMethod(method);
this.setSyncType(syncType);
this.setRemark(remark);
return this; return this;
} }
} }
...@@ -9,4 +9,6 @@ public interface FinanceOrderSyncService { ...@@ -9,4 +9,6 @@ public interface FinanceOrderSyncService {
SyncOrderDetailDto syncWdtOrder(Date startTime, Date endTime, Integer syncType); SyncOrderDetailDto syncWdtOrder(Date startTime, Date endTime, Integer syncType);
SyncOrderDetailDto syncWdtRefundOrder(Date startTime, Date endTime, Integer syncType); SyncOrderDetailDto syncWdtRefundOrder(Date startTime, Date endTime, Integer syncType);
SyncOrderDetailDto updateZbjType(Date startTime, Date endTime);
} }
...@@ -26,7 +26,6 @@ import org.springframework.transaction.annotation.Transactional; ...@@ -26,7 +26,6 @@ import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.*; import java.util.*;
import java.util.concurrent.atomic.AtomicInteger;
/** /**
* 旺店通订单Service业务层处理 * 旺店通订单Service业务层处理
...@@ -49,6 +48,14 @@ public class FinanceOrderSyncServiceImpl implements FinanceOrderSyncService { ...@@ -49,6 +48,14 @@ public class FinanceOrderSyncServiceImpl implements FinanceOrderSyncService {
WdtRefundOrderDao wdtRefundOrderDao; WdtRefundOrderDao wdtRefundOrderDao;
@Autowired @Autowired
WdtRefundOrderDetailDao wdtRefundOrderDetailDao; WdtRefundOrderDetailDao wdtRefundOrderDetailDao;
@Autowired
WdtSwapOrderDao wdtSwapOrderDao;
@Autowired
WdtSwapOrderDetailDao wdtSwapOrderDetailDao;
@Autowired
WdtRefundAmountDetailDao amountDetailDao;
@Autowired @Autowired
FinianceBaseProductDao baseProductDao; FinianceBaseProductDao baseProductDao;
@Autowired @Autowired
...@@ -71,32 +78,31 @@ public class FinanceOrderSyncServiceImpl implements FinanceOrderSyncService { ...@@ -71,32 +78,31 @@ public class FinanceOrderSyncServiceImpl implements FinanceOrderSyncService {
public SyncOrderDetailDto syncWdtOrder(Date startTime, Date endTime, Integer syncType) { public SyncOrderDetailDto syncWdtOrder(Date startTime, Date endTime, Integer syncType) {
SyncOrderDetailDto detailDto = new SyncOrderDetailDto(); SyncOrderDetailDto detailDto = new SyncOrderDetailDto();
String batchNo = syncType + DateUtils.dateTimeNow() + Thread.currentThread().getId(); String batchNo = syncType + DateUtils.dateTimeNow() + Thread.currentThread().getId();
AtomicInteger beginPageNo = new AtomicInteger(0); String method = "sales.TradeQuery.queryWithDetail";
try { try {
detailDto.setBatchNo(batchNo);
detailDto.setStartTime(startTime);
detailDto.setEndTime(endTime);
detailDto.setPageNo(0);
// 调用新方法设置时间范围 // 调用新方法设置时间范围
Date[] startTimeArray = {startTime}; setupTimeRange(detailDto, syncType,60, method);
Date[] endTimeArray = {endTime}; startTime = detailDto.getStartTime();
setupTimeRange(startTimeArray, endTimeArray, syncType, beginPageNo); endTime = detailDto.getEndTime();
startTime = startTimeArray[0];
endTime = endTimeArray[0];
// 调用查询旺店通接口api 获取最新日期前的2小时 // 调用查询旺店通接口api 获取最新日期前的2小时
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.setTotalCount(0);
detailDto.setBatchNo(batchNo);
detailDto.setStartTime(startTime);
detailDto.setEndTime(endTime);
detailDto.setMessage(String.format("开始时间%s不能大于当前时间%s", DateUtil.formatDateTime(startTime), DateUtil.formatDateTime(currentLatest))); detailDto.setMessage(String.format("开始时间%s不能大于当前时间%s", DateUtil.formatDateTime(startTime), DateUtil.formatDateTime(currentLatest)));
log.warn(String.format("开始时间%s不能大于当前时间%s", DateUtil.formatDateTime(startTime), DateUtil.formatDateTime(currentLatest))); log.warn(String.format("开始时间%s不能大于当前时间%s", DateUtil.formatDateTime(startTime), DateUtil.formatDateTime(currentLatest)));
return detailDto; return detailDto;
} }
if (!validateStartTime(startTime,endTime,batchNo)) { if (!validateStartTime(detailDto )) {
return detailDto; return detailDto;
} }
log.info("查询订单参数:开始时间{},结束时间{},当前页:{}", DateUtil.formatDateTime(startTime), DateUtil.formatDateTime(endTime), beginPageNo.get()); log.info("查询订单参数:开始时间{},结束时间{},当前页:{}", DateUtil.formatDateTime(startTime), DateUtil.formatDateTime(endTime), detailDto.getPageNo());
WdtOrderQueryVO wdtOrderQueryVO = new WdtOrderQueryVO(); WdtOrderQueryVO wdtOrderQueryVO = new WdtOrderQueryVO();
wdtOrderQueryVO.setStart_time(com.alibaba.fastjson2.util.DateUtils.format(startTime)); wdtOrderQueryVO.setStart_time(com.alibaba.fastjson2.util.DateUtils.format(startTime));
...@@ -105,13 +111,12 @@ public class FinanceOrderSyncServiceImpl implements FinanceOrderSyncService { ...@@ -105,13 +111,12 @@ public class FinanceOrderSyncServiceImpl implements FinanceOrderSyncService {
params.putAll(BeanUtil.beanToMap(wdtOrderQueryVO)); params.putAll(BeanUtil.beanToMap(wdtOrderQueryVO));
// 旺店通入参 和其他入参分开传入 旺店通入参bean转map // 旺店通入参 和其他入参分开传入 旺店通入参bean转map
String method = "sales.TradeQuery.queryWithDetail"; WangdiantongQueryDto wangdiantongQueryDto = wangdiantongUtil.queryWithDetail(params,detailDto.getPageNo(), method);
WangdiantongQueryDto wangdiantongQueryDto = wangdiantongUtil.queryWithDetail(params, beginPageNo, method);
JSONArray orderAllArray = wangdiantongQueryDto.getResult(); JSONArray orderAllArray = wangdiantongQueryDto.getResult();
if (ObjectUtils.isEmpty(orderAllArray)) { if (ObjectUtils.isEmpty(orderAllArray)) {
throw new ServiceException("旺店通没有查询到订单数据"); throw new ServiceException("旺店通没有查询到订单数据");
} }
detailDto.setPageNo(wangdiantongQueryDto.getNextBeginPageNo());
//转化成orderList //转化成orderList
List<FinanceOrder> orders = JSONArray.parseArray(orderAllArray.toString(), FinanceOrder.class, JSONReader.Feature.SupportSmartMatch); List<FinanceOrder> orders = JSONArray.parseArray(orderAllArray.toString(), FinanceOrder.class, JSONReader.Feature.SupportSmartMatch);
...@@ -185,7 +190,7 @@ public class FinanceOrderSyncServiceImpl implements FinanceOrderSyncService { ...@@ -185,7 +190,7 @@ public class FinanceOrderSyncServiceImpl implements FinanceOrderSyncService {
orderDetail.setStandardCost(new BigDecimal(0)); orderDetail.setStandardCost(new BigDecimal(0));
orderDetail.setSumActualCost(new BigDecimal(0)); orderDetail.setSumActualCost(new BigDecimal(0));
orderDetail.setSumStandardCost(new BigDecimal(0)); orderDetail.setSumStandardCost(new BigDecimal(0));
}else{ } else {
orderDetail.setActualCost(ObjectUtils.isNotEmpty(baseProductMap.get(orderDetail.getGoodsNo())) ? orderDetail.setActualCost(ObjectUtils.isNotEmpty(baseProductMap.get(orderDetail.getGoodsNo())) ?
baseProductMap.get(orderDetail.getGoodsNo()).getActualCost() : baseProductMap.get(orderDetail.getGoodsNo()).getActualCost() :
new BigDecimal(0) new BigDecimal(0)
...@@ -206,23 +211,11 @@ public class FinanceOrderSyncServiceImpl implements FinanceOrderSyncService { ...@@ -206,23 +211,11 @@ public class FinanceOrderSyncServiceImpl implements FinanceOrderSyncService {
// 批量插入 // 批量插入
orderDetailDao.saveOrUpdateBatch(mergeList); orderDetailDao.saveOrUpdateBatch(mergeList);
String remark = String.format("订单数量:%s,详情数量:%s", orders.size(), mergeList.size());
log.info("插入订单和订单详情完成,批次{}开始时间{},结束时间{},订单数量:{},详情数量:{},下一次开始页数:{}", batchNo, DateUtil.formatDateTime(startTime), log.info("插入订单和订单详情完成,批次{}开始时间{},结束时间{},订单数量:{},详情数量:{},下一次开始页数:{}", batchNo, DateUtil.formatDateTime(startTime),
DateUtil.formatDateTime(endTime), orders.size(), mergeList.size(), beginPageNo.get()); DateUtil.formatDateTime(endTime), orders.size(), mergeList.size(), detailDto.getPageNo());
// dealCollectOrderLog(syncType, method, orders.size(), mergeList.size(), batchNo, endTime, beginPageNo, wangdiantongQueryDto);
// 接口测试使用 detailDto.setDetailInfo(method, remark,syncType, orders.size(), mergeList.size(), wangdiantongQueryDto.getTotalCount(), batchNo, endTime, startTime);
// detailDto.setOrderCount(orders.size());
// detailDto.setOrderDetailCount(mergeList.size());
// detailDto.setStartTime(finalStartTime);
// detailDto.setPageNo(beginPageNo.get());
// detailDto.setEndTime(finalEndTime);
// detailDto.setTotalCount(wangdiantongQueryDto.getTotalCount());
// detailDto.setBatchNo(batchNo);
detailDto.setDetailInfo(orders.size(), mergeList.size(), beginPageNo.get(), wangdiantongQueryDto.getTotalCount(), batchNo, endTime, startTime);
orderLogInfoDao.insert(detailDto); orderLogInfoDao.insert(detailDto);
} catch (Exception e) { } catch (Exception e) {
detailDto.setCode(HttpStatus.HTTP_INTERNAL_ERROR); detailDto.setCode(HttpStatus.HTTP_INTERNAL_ERROR);
...@@ -235,8 +228,10 @@ public class FinanceOrderSyncServiceImpl implements FinanceOrderSyncService { ...@@ -235,8 +228,10 @@ public class FinanceOrderSyncServiceImpl implements FinanceOrderSyncService {
return detailDto; return detailDto;
} }
/** /**
* 同步退换货数据 * 同步退换货数据
*
* @param startTime * @param startTime
* @param endTime * @param endTime
* @param syncType * @param syncType
...@@ -246,20 +241,23 @@ public class FinanceOrderSyncServiceImpl implements FinanceOrderSyncService { ...@@ -246,20 +241,23 @@ public class FinanceOrderSyncServiceImpl implements FinanceOrderSyncService {
public SyncOrderDetailDto syncWdtRefundOrder(Date startTime, Date endTime, Integer syncType) { public SyncOrderDetailDto syncWdtRefundOrder(Date startTime, Date endTime, Integer syncType) {
SyncOrderDetailDto detailDto = new SyncOrderDetailDto(); SyncOrderDetailDto detailDto = new SyncOrderDetailDto();
String batchNo = syncType + DateUtils.dateTimeNow() + Thread.currentThread().getId(); String batchNo = syncType + DateUtils.dateTimeNow() + Thread.currentThread().getId();
AtomicInteger beginPageNo = new AtomicInteger(0); String method = "aftersales.refund.Refund.search";
try { try {
detailDto.setBatchNo(batchNo);
detailDto.setStartTime(startTime);
detailDto.setEndTime(endTime);
detailDto.setPageNo(0);
// 调用新方法设置时间范围 // 调用新方法设置时间范围
Date[] startTimeArray = {startTime}; setupTimeRange(detailDto, syncType, 60*24*1, method);
Date[] endTimeArray = {endTime}; startTime = detailDto.getStartTime();
setupTimeRange(startTimeArray, endTimeArray, syncType, beginPageNo); endTime = detailDto.getEndTime();
startTime = startTimeArray[0]; if (!validateStartTime(detailDto)) {
endTime = endTimeArray[0];
if (!validateStartTime(startTime,endTime,batchNo)) {
return detailDto; return detailDto;
} }
log.info("查询订单参数:开始时间{},结束时间{},当前页:{}", DateUtil.formatDateTime(startTime), DateUtil.formatDateTime(endTime), beginPageNo.get()); log.info("查询订单参数:开始时间{},结束时间{},当前页:{}", DateUtil.formatDateTime(startTime), DateUtil.formatDateTime(endTime), detailDto.getPageNo());
// 旺店通入参 和其他入参分开传入 旺店通入参bean转map // 旺店通入参 和其他入参分开传入 旺店通入参bean转map
WdtRefundQueryVO wdtOrderQueryVO = new WdtRefundQueryVO(); WdtRefundQueryVO wdtOrderQueryVO = new WdtRefundQueryVO();
...@@ -269,29 +267,49 @@ public class FinanceOrderSyncServiceImpl implements FinanceOrderSyncService { ...@@ -269,29 +267,49 @@ public class FinanceOrderSyncServiceImpl implements FinanceOrderSyncService {
Map<String, Object> stringObjectMap = BeanUtil.beanToMap(wdtOrderQueryVO); Map<String, Object> stringObjectMap = BeanUtil.beanToMap(wdtOrderQueryVO);
params.putAll(stringObjectMap); params.putAll(stringObjectMap);
// 退换单查询 // 退换单查询
String method = "aftersales.refund.Refund.search"; WangdiantongQueryDto wangdiantongQueryDto = wangdiantongUtil.queryWithDetail(params, detailDto.getPageNo(), method);
WangdiantongQueryDto wangdiantongQueryDto = wangdiantongUtil.queryWithDetail(params, beginPageNo, method);
JSONArray orderAllArray = wangdiantongQueryDto.getResult(); JSONArray orderAllArray = wangdiantongQueryDto.getResult();
if (ObjectUtils.isEmpty(orderAllArray)) { if (ObjectUtils.isEmpty(orderAllArray)) {
throw new ServiceException("旺店通没有查询到订单数据"); throw new ServiceException("旺店通没有查询到订单数据");
} }
detailDto.setPageNo(wangdiantongQueryDto.getNextBeginPageNo());
// 保存数据 // 保存数据
List<WdtRefundOrder> orders = JSONArray.parseArray(orderAllArray.toString(), WdtRefundOrder.class, JSONReader.Feature.SupportSmartMatch); List<WdtRefundOrder> refundOrders = JSONArray.parseArray(orderAllArray.toString(), WdtRefundOrder.class, JSONReader.Feature.SupportSmartMatch);
wdtRefundOrderDao.saveOrUpdateBatch(orders); wdtRefundOrderDao.saveOrUpdateBatch(refundOrders);
List<WdtRefundOrderDetail> mergeList = new ArrayList<>(); List<WdtRefundOrderDetail> refundOrderDetails = new ArrayList<>();
orders.forEach(order -> { refundOrders.forEach(order -> {
mergeList.addAll(order.getDetailList()); refundOrderDetails.addAll(order.getDetailList());
}); });
wdtRefundOrderDetailDao.saveOrUpdateBatch(mergeList); wdtRefundOrderDetailDao.saveOrUpdateBatch(refundOrderDetails);
log.info("插入订单和订单详情完成,批次{}开始时间{},结束时间{},订单数量:{},详情数量:{},下一次开始页数:{}", batchNo, DateUtil.formatDateTime(startTime), // 换货信息
DateUtil.formatDateTime(endTime), orders.size(), mergeList.size(), beginPageNo.get()); List<WdtSwapOrder> swapOrders = new ArrayList<>();
List<WdtSwapOrderDetail> swapOrderDetail = new ArrayList<>();
refundOrders.forEach(order -> {
detailDto.setDetailInfo(orders.size(), mergeList.size(), beginPageNo.get(), wangdiantongQueryDto.getTotalCount(), batchNo, endTime, startTime); if (ObjectUtils.isNotEmpty(order.getSwapOrder())) {
swapOrders.add(order.getSwapOrder());
swapOrderDetail.addAll(order.getSwapOrder().getSwapOrderDetailList());
}
});
wdtSwapOrderDao.saveOrUpdateBatch(swapOrders);
wdtSwapOrderDetailDao.saveOrUpdateBatch(swapOrderDetail);
// 金额明细
List<WdtRefundAmountDetail> amountDetailList = new ArrayList<>();
refundOrders.forEach(order -> {
if (ObjectUtils.isNotEmpty(order.getAmountDetailList())) {
amountDetailList.addAll(order.getAmountDetailList());
}
});
amountDetailDao.saveOrUpdateBatch(amountDetailList);
log.info("插入订单和订单详情完成,批次{}开始时间{},结束时间{},退货订单数量:{},详情数量:{},下一次开始页数:{}", batchNo, DateUtil.formatDateTime(startTime),
DateUtil.formatDateTime(endTime), refundOrders.size(), refundOrderDetails.size(), detailDto.getPageNo());
String remark = String.format("退货订单数量:%s,详情数量:%s,换货订单数量%s,换货详情数量%s,金额明细数量%s",
refundOrders.size(), refundOrderDetails.size(), swapOrders.size(), swapOrderDetail.size(), amountDetailList.size());
detailDto.setDetailInfo(method, remark, syncType,refundOrders.size(), refundOrderDetails.size(), wangdiantongQueryDto.getTotalCount(), batchNo, endTime, startTime);
orderLogInfoDao.insert(detailDto); orderLogInfoDao.insert(detailDto);
}catch (Exception e){ } catch (Exception e) {
detailDto.setCode(HttpStatus.HTTP_INTERNAL_ERROR); detailDto.setCode(HttpStatus.HTTP_INTERNAL_ERROR);
detailDto.setMessage(e.toString()); detailDto.setMessage(e.toString());
log.error(e.getMessage(), e); log.error(e.getMessage(), e);
...@@ -300,48 +318,71 @@ public class FinanceOrderSyncServiceImpl implements FinanceOrderSyncService { ...@@ -300,48 +318,71 @@ public class FinanceOrderSyncServiceImpl implements FinanceOrderSyncService {
return detailDto; return detailDto;
} }
/**
* 修改直播间类型
*
* @param startTime
* @param endTime
* @return
*/
@Override
public SyncOrderDetailDto updateZbjType(Date startTime, Date endTime) {
// 循环查询订单
return null;
}
private void setupTimeRange(Date[] startTime, Date[] endTime, Integer syncType, AtomicInteger beginPageNo) { /**
* 设置开始时间和结束时间
* @param detailDto
* @param syncType
* @param interval
* @param method
*/
private void setupTimeRange(SyncOrderDetailDto detailDto, Integer syncType, Integer interval, String method) {
Date latestTime = null;
// startTime 为空,默认是定时任务调用 // startTime 为空,默认是定时任务调用
if (ObjectUtils.isEmpty(startTime[0])) { if (ObjectUtils.isEmpty(detailDto.getStartTime())) {
// 继续下一页的标识 pageNo =-1 标识终止分页 pageNo >0 标识继续分页 // 继续下一页的标识 pageNo =-1 标识终止分页 pageNo >0 标识继续分页
boolean nextPageFlag = true; boolean nextPageFlag = true;
Date latestTime = null;
// 查询最新的采集时间 // 查询最新的采集时间
CollectOrderLogDto collectOrderLog = orderLogInfoDao.selectOrderSyncLatest(syncType); CollectOrderLogDto collectOrderLog = orderLogInfoDao.selectOrderSyncLatest(syncType, method);
if (ObjectUtils.isNotEmpty(collectOrderLog)) { if (ObjectUtils.isNotEmpty(collectOrderLog)) {
latestTime = collectOrderLog.getLatestTime(); latestTime = collectOrderLog.getLatestTime();
Integer pageNoExist = collectOrderLog.getPageNo(); Integer pageNoExist = collectOrderLog.getPageNo();
beginPageNo.set(ObjectUtil.isNotEmpty(pageNoExist) && pageNoExist > 0 ? collectOrderLog.getPageNo() : 0);
nextPageFlag = beginPageNo.get() > 0;
} else {
// 默认上个月的第一天 00:00:00
startTime[0] = DateUtil.beginOfDay(DateUtil.beginOfMonth(DateUtil.lastMonth()));
}
if (nextPageFlag) { detailDto.setPageNo(ObjectUtil.isNotEmpty(pageNoExist) && pageNoExist > 0 ? collectOrderLog.getPageNo() : 0);
startTime[0] = DateUtils.addMinutes(latestTime, -60); nextPageFlag = detailDto.getPageNo() > 0;
if (nextPageFlag) {
detailDto.setStartTime(collectOrderLog.getStartTime());
detailDto.setEndTime(collectOrderLog.getEndTime());
} else {
// 调用查询旺店通接口api 获取最新日期前的一个小时
detailDto.setStartTime(DateUtils.addMinutes(latestTime, -5));
detailDto.setEndTime(DateUtils.addMinutes(detailDto.getStartTime(), interval));
}
} else { } else {
// 调用查询旺店通接口api 获取最新日期前的一个小时 // 默认上个月的第一天 00:00:00
startTime[0] = DateUtils.addMinutes(latestTime, -3); detailDto.setStartTime(DateUtil.beginOfDay(DateUtil.beginOfMonth(DateUtil.lastMonth())));
detailDto.setEndTime(DateUtils.addMinutes(detailDto.getStartTime(), interval));
} }
} }
if (ObjectUtils.isEmpty(endTime[0])) { latestTime = detailDto.getEndTime();
endTime[0] = DateUtils.addMinutes(startTime[0], 60); detailDto.setLatestTime(latestTime);
}
} }
private boolean validateStartTime(Date startTime, Date endTime, String batchNo) { private boolean validateStartTime(SyncOrderDetailDto detailDto) {
Date currentLatest = DateUtils.addHours(new Date(), -2); Date currentLatest = DateUtils.addHours(new Date(), -2);
if (currentLatest.compareTo(startTime) < 0) { if (currentLatest.compareTo(detailDto.getEndTime()) < 0) {
SyncOrderDetailDto detailDto = new SyncOrderDetailDto(); // SyncOrderDetailDto detailDto = new SyncOrderDetailDto();
detailDto.setTotalCount(0); detailDto.setTotalCount(0);
detailDto.setBatchNo(batchNo); // detailDto.setBatchNo(batchNo);
detailDto.setStartTime(startTime); // detailDto.setStartTime(startTime);
detailDto.setEndTime(endTime); // detailDto.setEndTime(endTime);
String message = String.format("开始时间%s不能大于当前时间%s", DateUtil.formatDateTime(startTime), DateUtil.formatDateTime(currentLatest)); String message = String.format("结束时间%s不能大于当前时间%s", DateUtil.formatDateTime(detailDto.getEndTime()), DateUtil.formatDateTime(currentLatest));
detailDto.setMessage(message); detailDto.setMessage(message);
log.warn(message); log.warn(message);
return false; return false;
......
...@@ -15,7 +15,6 @@ import org.springframework.util.DigestUtils; ...@@ -15,7 +15,6 @@ import org.springframework.util.DigestUtils;
import java.util.Arrays; import java.util.Arrays;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;
@Slf4j @Slf4j
@Component @Component
...@@ -38,10 +37,11 @@ public class WangdiantongUtil { ...@@ -38,10 +37,11 @@ public class WangdiantongUtil {
public WangdiantongUtil(WangdiantongConfig wangdiantongConfig) { public WangdiantongUtil(WangdiantongConfig wangdiantongConfig) {
this.wangdiantongConfig = wangdiantongConfig; this.wangdiantongConfig = wangdiantongConfig;
} }
/** /**
* 卖家账号/接口账号/盐/接口名称 * 卖家账号/接口账号/盐/接口名称
*/ */
public WangdiantongQueryDto queryWithDetail(HashMap<String, Object> params, AtomicInteger beginPageNo,String method) { public WangdiantongQueryDto queryWithDetail(HashMap<String, Object> params, Integer beginPageNo, String method) {
WangdiantongQueryDto wangdiantongQueryDto = new WangdiantongQueryDto(); WangdiantongQueryDto wangdiantongQueryDto = new WangdiantongQueryDto();
JSONArray allArray = new JSONArray(); JSONArray allArray = new JSONArray();
Integer totalCount = 0; Integer totalCount = 0;
...@@ -49,7 +49,7 @@ public class WangdiantongUtil { ...@@ -49,7 +49,7 @@ public class WangdiantongUtil {
// 最大处理量,超过了,不再查询 // 最大处理量,超过了,不再查询
int maxDealCount = 1000; int maxDealCount = 1000;
int size = 0; int size = 0;
int pageNo = beginPageNo.get(); int pageNo = beginPageNo.intValue();
// 出现了查询的分页数量不足的情况 // 出现了查询的分页数量不足的情况
int maxPage = 0; int maxPage = 0;
do { do {
...@@ -106,11 +106,11 @@ public class WangdiantongUtil { ...@@ -106,11 +106,11 @@ public class WangdiantongUtil {
} while (size < maxDealCount && pageNo <= maxPage); } while (size < maxDealCount && pageNo <= maxPage);
if (pageNo >= maxPage) { if (pageNo >= maxPage) {
// 已经到最后一页了,设置成-1,表示已经处理完了,不再查询 // 已经到最后一页了,设置成-1,表示已经处理完了,不再查询
beginPageNo.set(-1); beginPageNo = -1;
} else { } else {
beginPageNo.set(pageNo); beginPageNo = pageNo;
} }
wangdiantongQueryDto.setNextBeginPageNo(pageNo); wangdiantongQueryDto.setNextBeginPageNo(beginPageNo);
wangdiantongQueryDto.setResult(allArray); wangdiantongQueryDto.setResult(allArray);
wangdiantongQueryDto.setTotalCount(totalCount); wangdiantongQueryDto.setTotalCount(totalCount);
} catch (Exception e) { } catch (Exception e) {
......
<?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="com.sfa.job.domain.order.mapper.WdtRefundAmountDetailMapper">
<insert id="saveOrUpdateBatch" parameterType="java.util.List">
INSERT INTO wdt_refund_amount_detail (
rec_id,
refund_id,
refund_type,
is_return,
refund_amount,
receive_amount,
is_guarantee,
account_id,
pay_account,
account_name,
account_bank,
is_auto,
remark
)
VALUES
<foreach collection="list" item="item" separator=",">
(
#{item.recId},
#{item.refundId},
#{item.refundType},
#{item.isReturn},
#{item.refundAmount},
#{item.receiveAmount},
#{item.isGuarantee},
#{item.accountId},
#{item.payAccount},
#{item.accountName},
#{item.accountBank},
#{item.isAuto},
#{item.remark}
)
</foreach>
ON DUPLICATE KEY UPDATE
refund_id = VALUES(refund_id),
refund_type = VALUES(refund_type),
is_return = VALUES(is_return),
refund_amount = VALUES(refund_amount),
receive_amount = VALUES(receive_amount),
is_guarantee = VALUES(is_guarantee),
account_id = VALUES(account_id),
pay_account = VALUES(pay_account),
account_name = VALUES(account_name),
account_bank = VALUES(account_bank),
is_auto = VALUES(is_auto),
remark = VALUES(remark)
</insert>
</mapper>
<!DOCTYPE mapper <!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.sfa.job.domain.order.mapper.WdtSwapOrderDetailMapper">
<mapper namespace="com.sfa.job.domain.order.mapper.WdtRefundOrderDetailMapper">
<insert id="saveOrUpdateBatch" parameterType="java.util.List"> <insert id="saveOrUpdateBatch" parameterType="java.util.List">
INSERT INTO wdt_swap_order_detail ( INSERT INTO wdt_swap_order_detail (
oid, swap_order_tid, target_type, target_id, defect, goods_name, goods_no, oid,
spec_name, spec_code, merchant_no, price, total_amount, num, remark target_type,
target_id,
defect,
goods_name,
goods_no,
spec_name,
spec_code,
merchant_no,
price,
total_amount,
num,
remark
) )
VALUES VALUES
<foreach collection="list" item="item" separator=","> <foreach collection="list" item="item" separator=",">
( (
#{item.oid}, #{item.oid},
#{item.swapOrderTid},
#{item.targetType}, #{item.targetType},
#{item.targetId}, #{item.targetId},
#{item.defect}, #{item.defect},
...@@ -28,6 +37,7 @@ ...@@ -28,6 +37,7 @@
) )
</foreach> </foreach>
ON DUPLICATE KEY UPDATE ON DUPLICATE KEY UPDATE
oid = VALUES(oid),
target_type = VALUES(target_type), target_type = VALUES(target_type),
target_id = VALUES(target_id), target_id = VALUES(target_id),
defect = VALUES(defect), defect = VALUES(defect),
......
...@@ -4,15 +4,24 @@ ...@@ -4,15 +4,24 @@
<insert id="saveOrUpdateBatch" parameterType="java.util.List"> <insert id="saveOrUpdateBatch" parameterType="java.util.List">
INSERT INTO wdt_swap_order ( INSERT INTO wdt_swap_order (
tid, refund_id, shop_no, shop_name, warehouse_no, shop_id, warehouse_id, tid,
swap_province, swap_city, swap_area, swap_district, swap_logistics_id, shop_no,
post_amount, other_amount shop_name,
warehouse_no,
shop_id,
warehouse_id,
swap_province,
swap_city,
swap_area,
swap_district,
swap_logistics_id,
post_amount,
other_amount
) )
VALUES VALUES
<foreach collection="list" item="item" separator=","> <foreach collection="list" item="item" separator=",">
( (
#{item.tid}, #{item.tid},
#{item.refundId},
#{item.shopNo}, #{item.shopNo},
#{item.shopName}, #{item.shopName},
#{item.warehouseNo}, #{item.warehouseNo},
...@@ -28,6 +37,7 @@ ...@@ -28,6 +37,7 @@
) )
</foreach> </foreach>
ON DUPLICATE KEY UPDATE ON DUPLICATE KEY UPDATE
tid = VALUES(tid),
shop_no = VALUES(shop_no), shop_no = VALUES(shop_no),
shop_name = VALUES(shop_name), shop_name = VALUES(shop_name),
warehouse_no = VALUES(warehouse_no), warehouse_no = VALUES(warehouse_no),
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论