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

修改定时任务调用问题:不同dao区分不同的数据源,暂时将没有找到分区的数据放在2021数据表中

上级 a8339062
package com.sfa.job.config; package com.sfa.job.config;
import lombok.extern.slf4j.Slf4j;
import org.apache.shardingsphere.sharding.api.sharding.standard.PreciseShardingValue; import org.apache.shardingsphere.sharding.api.sharding.standard.PreciseShardingValue;
import org.apache.shardingsphere.sharding.api.sharding.standard.RangeShardingValue; import org.apache.shardingsphere.sharding.api.sharding.standard.RangeShardingValue;
import org.apache.shardingsphere.sharding.api.sharding.standard.StandardShardingAlgorithm; import org.apache.shardingsphere.sharding.api.sharding.standard.StandardShardingAlgorithm;
...@@ -10,20 +11,9 @@ import java.util.*; ...@@ -10,20 +11,9 @@ import java.util.*;
/** /**
* ShardingSphere 5.4.1 按 pay_time 年份分表算法 * ShardingSphere 5.4.1 按 pay_time 年份分表算法
*/ */
@Slf4j
public class PayTimeYearShardingAlgorithm implements StandardShardingAlgorithm<LocalDateTime> { public class PayTimeYearShardingAlgorithm implements StandardShardingAlgorithm<LocalDateTime> {
/**
* 精确分片(处理 = 条件)
* 例:pay_time = '2023-05-01 10:00:00' → 路由到 t_order_2023
*/
/**
* 范围分片(处理 >、<、BETWEEN 等条件)
* 例:pay_time BETWEEN '2023-01-01' AND '2024-12-31' → 路由到 t_order_2023、t_order_2024
*/
// 初始化方法(可留空) // 初始化方法(可留空)
@Override @Override
public void init(Properties props) { public void init(Properties props) {
...@@ -46,10 +36,17 @@ public class PayTimeYearShardingAlgorithm implements StandardShardingAlgorithm<L ...@@ -46,10 +36,17 @@ public class PayTimeYearShardingAlgorithm implements StandardShardingAlgorithm<L
return StandardShardingAlgorithm.super.isDefault(); return StandardShardingAlgorithm.super.isDefault();
} }
/**
* 精确分片(处理 = 条件)
* 例:pay_time = '2023-05-01 10:00:00' → 路由到 t_order_2023
*/
@Override @Override
public String doSharding(Collection<String> collection, PreciseShardingValue<LocalDateTime> preciseShardingValue) { public String doSharding(Collection<String> collection, PreciseShardingValue<LocalDateTime> preciseShardingValue) {
// 获取精确查询的时间值 // 获取精确查询的时间值
LocalDateTime payTime = preciseShardingValue.getValue(); LocalDateTime payTime = preciseShardingValue.getValue();
if(payTime == null){
return preciseShardingValue.getLogicTableName()+ "_2021" ;
}
int year = payTime.getYear(); int year = payTime.getYear();
// 生成目标表名(逻辑表名_年份) // 生成目标表名(逻辑表名_年份)
String targetTable = preciseShardingValue.getLogicTableName() + "_" + year; String targetTable = preciseShardingValue.getLogicTableName() + "_" + year;
...@@ -60,6 +57,10 @@ public class PayTimeYearShardingAlgorithm implements StandardShardingAlgorithm<L ...@@ -60,6 +57,10 @@ public class PayTimeYearShardingAlgorithm implements StandardShardingAlgorithm<L
throw new IllegalArgumentException("未找到匹配的表:" + targetTable); throw new IllegalArgumentException("未找到匹配的表:" + targetTable);
} }
/**
* 范围分片(处理 >、<、BETWEEN 等条件)
* 例:pay_time BETWEEN '2023-01-01' AND '2024-12-31' → 路由到 t_order_2023、t_order_2024
*/
@Override @Override
public Collection<String> doSharding(Collection<String> collection, RangeShardingValue<LocalDateTime> shardingValue) { public Collection<String> doSharding(Collection<String> collection, RangeShardingValue<LocalDateTime> shardingValue) {
Set<String> result = new HashSet<>(); Set<String> result = new HashSet<>();
......
...@@ -37,6 +37,7 @@ public class CollectOrderLogDaoImpl implements CollectOrderLogDao { ...@@ -37,6 +37,7 @@ public class CollectOrderLogDaoImpl implements CollectOrderLogDao {
logInfoMapper.insert(collectOrderLog); logInfoMapper.insert(collectOrderLog);
} }
@DS("bi")
@Override @Override
public CollectOrderLogDto selectOrderSyncLatest(Integer syncType, String method) { public CollectOrderLogDto selectOrderSyncLatest(Integer syncType, String method) {
// 查询最新发货日期 // 查询最新发货日期
......
package com.sfa.job.domain.order.dao.impl; package com.sfa.job.domain.order.dao.impl;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.sfa.job.domain.order.dao.IProductDao; import com.sfa.job.domain.order.dao.IProductDao;
import com.sfa.job.domain.order.entity.PrdInfo; import com.sfa.job.domain.order.entity.PrdInfo;
...@@ -18,6 +19,7 @@ import java.util.Map; ...@@ -18,6 +19,7 @@ import java.util.Map;
* @describe : * @describe :
*/ */
@DS("bi")
@Service @Service
public class ProductDaoImpl implements IProductDao { public class ProductDaoImpl implements IProductDao {
@Autowired @Autowired
......
...@@ -8,6 +8,7 @@ import lombok.Data; ...@@ -8,6 +8,7 @@ import lombok.Data;
import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.ObjectUtils;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.Date; import java.util.Date;
import java.util.Map; import java.util.Map;
import java.util.regex.Matcher; import java.util.regex.Matcher;
...@@ -209,9 +210,9 @@ public class WdtQimenOrderDetailPayTime extends BaseDo { ...@@ -209,9 +210,9 @@ public class WdtQimenOrderDetailPayTime extends BaseDo {
// 发票内容 // 发票内容
private String invoiceContent; private String invoiceContent;
// 支付时间,DateTime格式,取自原始订单支付时间 // 支付时间,DateTime格式,取自原始订单支付时间
private Date payTime; private LocalDateTime payTime;
// 订单支付时间,DateTime格式,取自原始订单支付时间 // 订单支付时间,DateTime格式,取自原始订单支付时间
private Date orderPayTime; private LocalDateTime orderPayTime;
// 货品简称 // 货品简称
private String shortName; private String shortName;
......
...@@ -37,7 +37,6 @@ import java.util.*; ...@@ -37,7 +37,6 @@ import java.util.*;
* @author lvbencai * @author lvbencai
* @date 2025年01月07日17:00:16 * @date 2025年01月07日17:00:16
*/ */
@DS("sharding")
@Slf4j @Slf4j
@Service @Service
public class WdtQimenOrderPayTimeSyncServiceImpl implements IWdtQimenOrderPayTimeSyncService { public class WdtQimenOrderPayTimeSyncServiceImpl implements IWdtQimenOrderPayTimeSyncService {
...@@ -60,7 +59,7 @@ public class WdtQimenOrderPayTimeSyncServiceImpl implements IWdtQimenOrderPayTim ...@@ -60,7 +59,7 @@ public class WdtQimenOrderPayTimeSyncServiceImpl implements IWdtQimenOrderPayTim
@Autowired @Autowired
WdtQimenConfig wdtQimenConfig; WdtQimenConfig wdtQimenConfig;
@Transactional(rollbackFor = Exception.class) // @Transactional(rollbackFor = Exception.class)
@Override @Override
public SyncOrderDetailDto syncWdtQimenOrderByTradeNo(Date startTime, Date endTime, Integer syncType, String tradeNo, Long pageNo, Long pageSize) { public SyncOrderDetailDto syncWdtQimenOrderByTradeNo(Date startTime, Date endTime, Integer syncType, String tradeNo, Long pageNo, Long pageSize) {
WdtSalesTradeQueryQueryWithDetailVo request = new WdtSalesTradeQueryQueryWithDetailVo(); WdtSalesTradeQueryQueryWithDetailVo request = new WdtSalesTradeQueryQueryWithDetailVo();
...@@ -126,12 +125,12 @@ public class WdtQimenOrderPayTimeSyncServiceImpl implements IWdtQimenOrderPayTim ...@@ -126,12 +125,12 @@ public class WdtQimenOrderPayTimeSyncServiceImpl implements IWdtQimenOrderPayTim
} }
/** /**
* 多线程调用此方法 * 按照付款时间来同步旺店通订单
* *
* @param startTime * @param startTime
* @param endTime * @param endTime
*/ */
@Transactional(rollbackFor = Exception.class) // @Transactional(rollbackFor = Exception.class)
@Override @Override
public SyncOrderDetailDto syncWdtQimenOrder(Date startTime, Date endTime, Integer syncType, Long pageSize) { public SyncOrderDetailDto syncWdtQimenOrder(Date startTime, Date endTime, Integer syncType, Long pageSize) {
SyncOrderDetailDto detailDto = new SyncOrderDetailDto(); SyncOrderDetailDto detailDto = new SyncOrderDetailDto();
...@@ -185,8 +184,8 @@ public class WdtQimenOrderPayTimeSyncServiceImpl implements IWdtQimenOrderPayTim ...@@ -185,8 +184,8 @@ public class WdtQimenOrderPayTimeSyncServiceImpl implements IWdtQimenOrderPayTim
WdtSalesTradeQueryQueryWithDetailVo.Params params = new WdtSalesTradeQueryQueryWithDetailVo.Params(); WdtSalesTradeQueryQueryWithDetailVo.Params params = new WdtSalesTradeQueryQueryWithDetailVo.Params();
params.setStartTime(DateUtil.formatDateTime(startTime)); params.setStartTime(DateUtil.formatDateTime(startTime));
params.setEndime(DateUtil.formatDateTime(endTime)); params.setEndime(DateUtil.formatDateTime(endTime));
// 旺店通的页码从0开始,奇门从1开始 // 旺店通的页码从0开始,奇门从1开始 时间类型 1:修改时间 2:付款时间 默认1
params.setTimeType(1); params.setTimeType(2);
request.setParams(params); request.setParams(params);
WdtSalesTradeQueryQueryWithDetailVo.Pager pager = new WdtSalesTradeQueryQueryWithDetailVo.Pager(); WdtSalesTradeQueryQueryWithDetailVo.Pager pager = new WdtSalesTradeQueryQueryWithDetailVo.Pager();
...@@ -270,9 +269,12 @@ public class WdtQimenOrderPayTimeSyncServiceImpl implements IWdtQimenOrderPayTim ...@@ -270,9 +269,12 @@ public class WdtQimenOrderPayTimeSyncServiceImpl implements IWdtQimenOrderPayTim
orderDetail.setBatchNo(batchNo); orderDetail.setBatchNo(batchNo);
orderDetail.setTradeNo(order.getTradeNo()); orderDetail.setTradeNo(order.getTradeNo());
if (ObjectUtils.isEmpty(orderDetail.getPayTime())) { if (ObjectUtils.isEmpty(orderDetail.getPayTime())) {
// orderDetail.setPayTime(order.getPayTime()); orderDetail.setPayTime(order.getPayTime());
} }
// orderDetail.setOrderPayTime(order.getPayTime()); if(ObjectUtils.isEmpty(order.getPayTime())){
log.info("订单号:{},订单明细支付时间为空,使用订单支付时间", orderDetail.getTradeNo());
}
orderDetail.setOrderPayTime(order.getPayTime());
// 计算分销信息 // 计算分销信息
orderDetail.setFenxiaoNick(order.getFenxiaoNick()); orderDetail.setFenxiaoNick(order.getFenxiaoNick());
......
...@@ -20,7 +20,7 @@ ...@@ -20,7 +20,7 @@
#{item.weight}, #{item.imgUrl}, #{item.actualNum}, #{item.barcode}, #{item.paid}, #{item.weight}, #{item.imgUrl}, #{item.actualNum}, #{item.barcode}, #{item.paid},
#{item.suiteId}, #{item.bindOid}, #{item.printSuiteMode}, #{item.flag}, #{item.stockState}, #{item.suiteId}, #{item.bindOid}, #{item.printSuiteMode}, #{item.flag}, #{item.stockState},
#{item.isConsigned}, #{item.isReceived}, #{item.cid}, #{item.modifiedDate}, #{item.createdDate}, #{item.isConsigned}, #{item.isReceived}, #{item.cid}, #{item.modifiedDate}, #{item.createdDate},
#{item.sharePostPrice}, #{item.invoiceContent}, #{item.payTime}, #{item.shortName}, #{item.sharePostPrice}, #{item.invoiceContent}, #{item.payTime}, #{item.orderPayTime}, #{item.shortName},
#{item.fenxiaoNick}, #{item.fenxiaoId}, #{item.fenxiaoName}, #{item.batchNo}, #{item.fenxiaoNick}, #{item.fenxiaoId}, #{item.fenxiaoName}, #{item.batchNo},
#{item.startTime}, #{item.endTime}, #{item.tradeNo}, #{item.shopNo}, #{item.shopName}, #{item.startTime}, #{item.endTime}, #{item.tradeNo}, #{item.shopNo}, #{item.shopName},
#{item.shopRemark}, #{item.tradeStatus}, #{item.tradeTime}, #{item.consignTime}, #{item.shopRemark}, #{item.tradeStatus}, #{item.tradeTime}, #{item.consignTime},
...@@ -92,6 +92,7 @@ ...@@ -92,6 +92,7 @@
share_post_price = VALUES(share_post_price), share_post_price = VALUES(share_post_price),
invoice_content = VALUES(invoice_content), invoice_content = VALUES(invoice_content),
pay_time = VALUES(pay_time), pay_time = VALUES(pay_time),
order_pay_time = VALUES(order_pay_time),
short_name = VALUES(short_name), short_name = VALUES(short_name),
fenxiao_nick = VALUES(fenxiao_nick), fenxiao_nick = VALUES(fenxiao_nick),
fenxiao_id = VALUES(fenxiao_id), fenxiao_id = VALUES(fenxiao_id),
...@@ -150,7 +151,7 @@ ...@@ -150,7 +151,7 @@
suite_discount, api_goods_name, api_spec_name, api_goods_id, api_spec_id, goods_id, spec_id, suite_discount, api_goods_name, api_spec_name, api_goods_id, api_spec_id, goods_id, spec_id,
commission, goods_type, from_mask, remark, modified, created, prop1, prop2, weight, img_url, commission, goods_type, from_mask, remark, modified, created, prop1, prop2, weight, img_url,
actual_num, barcode, paid, suite_id, bind_oid, print_suite_mode, flag, stock_state, is_consigned, actual_num, barcode, paid, suite_id, bind_oid, print_suite_mode, flag, stock_state, is_consigned,
is_received, cid, modified_date, created_date, share_post_price, invoice_content, pay_time, short_name, is_received, cid, modified_date, created_date, share_post_price, invoice_content, pay_time,order_pay_time, short_name,
fenxiao_nick, fenxiao_id, fenxiao_name, batch_no, start_time, end_time, trade_no, shop_no, shop_name, fenxiao_nick, fenxiao_id, fenxiao_name, batch_no, start_time, end_time, trade_no, shop_no, shop_name,
shop_remark, trade_status, trade_time, consign_time, receiver_area, zbj_name, zbj_id, zbj_zb_id, shop_remark, trade_status, trade_time, consign_time, receiver_area, zbj_name, zbj_id, zbj_zb_id,
zbj_sale_type, zbj_qd_type, receivable, spec_name_erp, flavor_erp, sync_type, actual_cost, zbj_sale_type, zbj_qd_type, receivable, spec_name_erp, flavor_erp, sync_type, actual_cost,
...@@ -219,6 +220,7 @@ ...@@ -219,6 +220,7 @@
<result column="share_post_price" property="sharePostPrice" jdbcType="DECIMAL"/> <result column="share_post_price" property="sharePostPrice" jdbcType="DECIMAL"/>
<result column="invoice_content" property="invoiceContent" jdbcType="VARCHAR"/> <result column="invoice_content" property="invoiceContent" jdbcType="VARCHAR"/>
<result column="pay_time" property="payTime" jdbcType="VARCHAR"/> <result column="pay_time" property="payTime" jdbcType="VARCHAR"/>
<result column="order_pay_time" property="orderPayTime" jdbcType="VARCHAR"/>
<result column="short_name" property="shortName" jdbcType="VARCHAR"/> <result column="short_name" property="shortName" jdbcType="VARCHAR"/>
<result column="fenxiao_nick" property="fenxiaoNick" jdbcType="VARCHAR"/> <result column="fenxiao_nick" property="fenxiaoNick" jdbcType="VARCHAR"/>
<result column="fenxiao_id" property="fenxiaoId" jdbcType="VARCHAR"/> <result column="fenxiao_id" property="fenxiaoId" jdbcType="VARCHAR"/>
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论