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

优化代码,job业务直接查询dao层,job中去掉service

上级 40cc31a3
...@@ -24,8 +24,8 @@ public class FinanceOrderDetailSyncController extends BaseController { ...@@ -24,8 +24,8 @@ public class FinanceOrderDetailSyncController extends BaseController {
@Autowired @Autowired
private FinanceOrderSyncService syncService; private FinanceOrderSyncService syncService;
@GetMapping("/syncWandiantongOrderDeatail") @GetMapping("/syncWangdiantongOrderDetail")
public FinanceSyncOrderDetailDto syncWandiantongOrderDeatail(Date startTime, Date endTime) { public FinanceSyncOrderDetailDto syncWangdiantongOrderDetail(Date startTime, Date endTime) {
log.info("接口开始同步-旺店通订单明细api接口数据"); log.info("接口开始同步-旺店通订单明细api接口数据");
// 可以传参开始时间和结束时间,用于补充特定时间的数据采集 // 可以传参开始时间和结束时间,用于补充特定时间的数据采集
FinanceSyncOrderDetailDto detailDto = syncService.syncWangdiantongOrder(startTime, endTime, 1); FinanceSyncOrderDetailDto detailDto = syncService.syncWangdiantongOrder(startTime, endTime, 1);
......
package com.sfa.job.domain.order.dao;
import java.util.Map;
public interface FinanceBaseZbjTypeDao {
Map<String, String> selectBaseZbjType();
}
package com.sfa.job.domain.order.dao;
import com.sfa.job.domain.order.entity.FinanceOrderDetail;
import java.util.List;
public interface FinanceOrderDetailDao {
void saveOrUpdateBatch(List<FinanceOrderDetail> mergeList);
}
package com.sfa.job.service.order; package com.sfa.job.domain.order.dao;
import com.baomidou.mybatisplus.extension.service.IService;
import com.sfa.job.domain.order.entity.FinanceBaseProduct; import com.sfa.job.domain.order.entity.FinanceBaseProduct;
import java.util.Map; import java.util.Map;
public interface FinianceBaseProductDao {
public interface FinanceBaseProductService extends IService<FinanceBaseProduct> {
Map<String, FinanceBaseProduct> selectBaseProduct(); Map<String, FinanceBaseProduct> selectBaseProduct();
} }
package com.sfa.job.service.order.impl; package com.sfa.job.domain.order.dao.impl;
import com.baomidou.dynamic.datasource.annotation.DS; import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.sfa.job.domain.order.dao.FinianceBaseProductDao;
import com.sfa.job.domain.order.entity.FinanceBaseProduct; import com.sfa.job.domain.order.entity.FinanceBaseProduct;
import com.sfa.job.domain.order.mapper.FinanceBaseProductMapper; import com.sfa.job.domain.order.mapper.FinanceBaseProductMapper;
import com.sfa.job.service.order.FinanceBaseProductService; import org.springframework.beans.factory.annotation.Autowired;
import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Repository;
import org.springframework.stereotype.Service;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@DS("Bi")
@Repository
public class FinianceBaseProductDaoImpl implements FinianceBaseProductDao {
/** @Autowired
* 旺店通订单Service业务层处理 FinanceBaseProductMapper mapper;
*
* @author lvbencai
* @date 2025年01月07日17:00:16
*/
@DS("bi")
@Slf4j
@Service
public class FinanceBaseProductServiceImpl extends ServiceImpl<FinanceBaseProductMapper, FinanceBaseProduct> implements FinanceBaseProductService {
@Override @Override
public Map<String, FinanceBaseProduct> selectBaseProduct() { public Map<String, FinanceBaseProduct> selectBaseProduct() {
// 查询所有商品 // 查询所有商品
List<FinanceBaseProduct> list = list(); List<FinanceBaseProduct> list = mapper.selectList(new LambdaQueryWrapper<>()) ;
// 以料号为key,商品对象为value,放入map中 // 以料号为key,商品对象为value,放入map中
Map<String, FinanceBaseProduct> map = list.stream() Map<String, FinanceBaseProduct> map = list.stream()
.collect(HashMap::new, (k, v) -> k.put(v.getPrdCode(), v), HashMap::putAll); .collect(HashMap::new, (k, v) -> k.put(v.getPrdCode(), v), HashMap::putAll);
return map; return map;
} }
} }
package com.sfa.job.domain.order.dao.impl;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.sfa.job.domain.order.dao.FinanceOrderDetailDao;
import com.sfa.job.domain.order.entity.FinanceOrderDetail;
import com.sfa.job.domain.order.mapper.FinanceOrderDetailMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import java.util.List;
@DS("Bi")
@Repository
public class FinianceOrderDetailDaoImpl implements FinanceOrderDetailDao {
private static final int BATCH_SIZE = 1000;
@Autowired
private FinanceOrderDetailMapper financeOrderDetailMapper;
@Override
public void saveOrUpdateBatch(List<FinanceOrderDetail> mergeList) {
for (int i = 0; i < mergeList.size(); i += BATCH_SIZE) {
int toIndex = Math.min(i + BATCH_SIZE, mergeList.size());
List<FinanceOrderDetail> batchLists = mergeList.subList(i, toIndex);
financeOrderDetailMapper.saveOrUpdateBatch(batchLists);
}
}
}
...@@ -4,8 +4,12 @@ package com.sfa.job.domain.order.mapper; ...@@ -4,8 +4,12 @@ package com.sfa.job.domain.order.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.sfa.job.domain.order.entity.FinanceOrderDetail; import com.sfa.job.domain.order.entity.FinanceOrderDetail;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@Mapper @Mapper
public interface FinanceOrderDetailMapper extends BaseMapper<FinanceOrderDetail> { public interface FinanceOrderDetailMapper extends BaseMapper<FinanceOrderDetail> {
void saveOrUpdateBatch(@Param(value = "list") List<FinanceOrderDetail> mergeList);
} }
...@@ -19,5 +19,6 @@ public class FinanceSyncOrderDetailDto { ...@@ -19,5 +19,6 @@ public class FinanceSyncOrderDetailDto {
private String batchNo; private String batchNo;
private Integer pageNo; private Integer pageNo;
private Integer totalCount; private Integer totalCount;
private String message;
} }
package com.sfa.job.service.order;
import com.baomidou.mybatisplus.extension.service.IService;
import com.sfa.job.domain.order.entity.FinanceBaseZbjType;
import java.util.Map;
public interface FinanceBaseZbjTypeService extends IService<FinanceBaseZbjType> {
Map<String,String> selectBaseZbjType();
}
package com.sfa.job.service.order;
import com.baomidou.mybatisplus.extension.service.IService;
import com.sfa.job.domain.order.entity.FinanceOrderDetail;
public interface FinanceOrderDetailService extends IService<FinanceOrderDetail> {
}
package com.sfa.job.service.order.impl;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.sfa.job.domain.order.entity.FinanceBaseZbjType;
import com.sfa.job.domain.order.mapper.FinanceBaseZbjTypeMapper;
import com.sfa.job.service.order.FinanceBaseZbjTypeService;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 旺店通订单Service业务层处理
*
* @author lvbencai
* @date 2025年01月07日17:00:16
*/
@DS("bi")
@Service
public class FinanceBaseZbjTypeServiceImpl extends ServiceImpl<FinanceBaseZbjTypeMapper, FinanceBaseZbjType> implements FinanceBaseZbjTypeService {
@Override
public Map<String, String> selectBaseZbjType() {
List<FinanceBaseZbjType> list = list();
// 以fenxiaoName为key,直播间渠道类型为value,放入map中
Map<String, String> map = list.stream()
.collect(HashMap::new, (k, v) -> k.put(v.getFenxiaoName(), v.getZbjQdType()), HashMap::putAll);
return map;
}
}
package com.sfa.job.service.order.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.sfa.job.domain.order.entity.FinanceOrderDetail;
import com.sfa.job.domain.order.mapper.FinanceOrderDetailMapper;
import com.sfa.job.service.order.FinanceOrderDetailService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
/**
* 旺店通订单明细Service业务层处理
*
* @author lvbencai
* @date 2025年01月07日17:00:16
*/
// 指定不同的数据源
//@DS("bi")
@Slf4j
@Service
public class FinanceOrderDetailServiceImpl extends ServiceImpl<FinanceOrderDetailMapper, FinanceOrderDetail> implements FinanceOrderDetailService {
}
...@@ -8,17 +8,12 @@ import com.baomidou.dynamic.datasource.annotation.DS; ...@@ -8,17 +8,12 @@ import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.sfa.common.core.exception.ServiceException; import com.sfa.common.core.exception.ServiceException;
import com.sfa.common.core.utils.DateUtils; import com.sfa.common.core.utils.DateUtils;
import com.sfa.job.domain.order.dao.CollectErrorInfoDao; import com.sfa.job.domain.order.dao.*;
import com.sfa.job.domain.order.dao.CollectOrderLogInfoDao;
import com.sfa.job.domain.order.dao.IProductDao;
import com.sfa.job.domain.order.entity.*; import com.sfa.job.domain.order.entity.*;
import com.sfa.job.domain.order.mapper.FinanceOrderMapper; import com.sfa.job.domain.order.mapper.FinanceOrderMapper;
import com.sfa.job.pojo.request.WangdiantongQueryVO; import com.sfa.job.pojo.request.WangdiantongQueryVO;
import com.sfa.job.pojo.response.FinanceSyncOrderDetailDto; import com.sfa.job.pojo.response.FinanceSyncOrderDetailDto;
import com.sfa.job.pojo.response.WangdiantongQueryDto; import com.sfa.job.pojo.response.WangdiantongQueryDto;
import com.sfa.job.service.order.FinanceBaseProductService;
import com.sfa.job.service.order.FinanceBaseZbjTypeService;
import com.sfa.job.service.order.FinanceOrderDetailService;
import com.sfa.job.service.order.FinanceOrderSyncService; import com.sfa.job.service.order.FinanceOrderSyncService;
import com.sfa.job.util.WangdiantongUtil; import com.sfa.job.util.WangdiantongUtil;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
...@@ -45,11 +40,12 @@ public class FinanceOrderSyncServiceImpl extends ServiceImpl<FinanceOrderMapper, ...@@ -45,11 +40,12 @@ public class FinanceOrderSyncServiceImpl extends ServiceImpl<FinanceOrderMapper,
WangdiantongUtil wangdiantongUtil; WangdiantongUtil wangdiantongUtil;
@Autowired @Autowired
FinanceOrderDetailService detailService; // FinanceOrderDetailService detailService;
FinanceOrderDetailDao detailDao;
@Autowired @Autowired
FinanceBaseProductService baseProductService; FinianceBaseProductDao baseProductDao;
@Autowired @Autowired
FinanceBaseZbjTypeService baseZbjTypeService; FinanceBaseZbjTypeDao baseZbjTypeDao;
@Autowired @Autowired
CollectOrderLogInfoDao orderLogInfoDao; CollectOrderLogInfoDao orderLogInfoDao;
@Autowired @Autowired
...@@ -95,10 +91,12 @@ public class FinanceOrderSyncServiceImpl extends ServiceImpl<FinanceOrderMapper, ...@@ -95,10 +91,12 @@ public class FinanceOrderSyncServiceImpl extends ServiceImpl<FinanceOrderMapper,
} }
} }
// 调用查询旺店通接口api 获取最新日期前的一个小时 // 调用查询旺店通接口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) {
throw new ServiceException("开始时间不能大于当前时间"); detailDto.setMessage(String.format("开始时间%s不能大于当前时间%s",startTime,currentLatest));
log.warn(detailDto.getMessage());
return detailDto;
} }
if (ObjectUtils.isEmpty(endTime)) { if (ObjectUtils.isEmpty(endTime)) {
...@@ -121,9 +119,9 @@ public class FinanceOrderSyncServiceImpl extends ServiceImpl<FinanceOrderMapper, ...@@ -121,9 +119,9 @@ public class FinanceOrderSyncServiceImpl extends ServiceImpl<FinanceOrderMapper,
List<FinanceOrder> orders = JSONArray.parseArray(orderAllArray.toString(), FinanceOrder.class, JSONReader.Feature.SupportSmartMatch); List<FinanceOrder> orders = JSONArray.parseArray(orderAllArray.toString(), FinanceOrder.class, JSONReader.Feature.SupportSmartMatch);
// 基础数据 直播间分类数据+成本、规格、口味 // 基础数据 直播间分类数据+成本、规格、口味
Map<String, FinanceBaseProduct> baseProductMap = baseProductService.selectBaseProduct(); Map<String, FinanceBaseProduct> baseProductMap = baseProductDao.selectBaseProduct();
Map<String, String> baseZbjType = baseZbjTypeService.selectBaseZbjType(); Map<String, String> baseZbjType = baseZbjTypeDao.selectBaseZbjType();
// 系列 // 系列
List<PrdInfo> prdInfos = productDao.selectProdSeries(); List<PrdInfo> prdInfos = productDao.selectProdSeries();
// 转换成map // 转换成map
...@@ -177,6 +175,9 @@ public class FinanceOrderSyncServiceImpl extends ServiceImpl<FinanceOrderMapper, ...@@ -177,6 +175,9 @@ public class FinanceOrderSyncServiceImpl extends ServiceImpl<FinanceOrderMapper,
orderDetail.setZbjId(orderDetail.getZbjId(orderDetail.getRemark(), sameDetail)); orderDetail.setZbjId(orderDetail.getZbjId(orderDetail.getRemark(), sameDetail));
orderDetail.setZbjZbId(orderDetail.getZbjZbId(orderDetail.getFenxiaoId(), orderDetail.getRemark(), sameDetail)); orderDetail.setZbjZbId(orderDetail.getZbjZbId(orderDetail.getFenxiaoId(), orderDetail.getRemark(), sameDetail));
orderDetail.setZbjSaleType(orderDetail.getZbjSaleType(orderDetail.getRemark(), sameDetail)); orderDetail.setZbjSaleType(orderDetail.getZbjSaleType(orderDetail.getRemark(), sameDetail));
orderDetail.setFenxiaoId(orderDetail.getZbjZbId());
orderDetail.setFenxiaoName(orderDetail.getZbjName());
// 确定分销商类型 // 确定分销商类型
orderDetail.setZbjQdType(orderDetail.getZbjQdType(orderDetail.getFenxiaoId(), orderDetail.getZbjZbId(), baseZbjType)); orderDetail.setZbjQdType(orderDetail.getZbjQdType(orderDetail.getFenxiaoId(), orderDetail.getZbjZbId(), baseZbjType));
if (ObjectUtils.isNotEmpty(orderDetail.getZbjName())) { if (ObjectUtils.isNotEmpty(orderDetail.getZbjName())) {
...@@ -192,6 +193,14 @@ public class FinanceOrderSyncServiceImpl extends ServiceImpl<FinanceOrderMapper, ...@@ -192,6 +193,14 @@ public class FinanceOrderSyncServiceImpl extends ServiceImpl<FinanceOrderMapper,
orderDetail.setStandardCost(ObjectUtils.isNotEmpty(baseProductMap.get(orderDetail.getGoodsNo())) ? orderDetail.setStandardCost(ObjectUtils.isNotEmpty(baseProductMap.get(orderDetail.getGoodsNo())) ?
baseProductMap.get(orderDetail.getGoodsNo()).getStandardCost() : baseProductMap.get(orderDetail.getGoodsNo()).getStandardCost() :
new BigDecimal(0) new BigDecimal(0)
// (ObjectUtils.isNotEmpty(order.getGoodsTypeCount()) && (order.getGoodsTypeCount().signum()!= 0) ? order.getGoodsCost().divide(order.getGoodsTypeCount()).setScale(4, BigDecimal.ROUND_HALF_UP) : new BigDecimal(0))
);
orderDetail.setSumActualCost(ObjectUtils.isNotEmpty(baseProductMap.get(orderDetail.getGoodsNo())) ?
baseProductMap.get(orderDetail.getGoodsNo()).getActualCost().multiply(orderDetail.getNum()) :
new BigDecimal(0));
orderDetail.setSumStandardCost(ObjectUtils.isNotEmpty(baseProductMap.get(orderDetail.getGoodsNo())) ?
baseProductMap.get(orderDetail.getGoodsNo()).getStandardCost().multiply(orderDetail.getNum()) :
new BigDecimal(0)
// (ObjectUtils.isNotEmpty(order.getGoodsTypeCount()) && (order.getGoodsTypeCount().signum()!= 0) ? order.getGoodsCost().divide(order.getGoodsTypeCount()).setScale(4, BigDecimal.ROUND_HALF_UP) : new BigDecimal(0)) // (ObjectUtils.isNotEmpty(order.getGoodsTypeCount()) && (order.getGoodsTypeCount().signum()!= 0) ? order.getGoodsCost().divide(order.getGoodsTypeCount()).setScale(4, BigDecimal.ROUND_HALF_UP) : new BigDecimal(0))
); );
} }
...@@ -200,7 +209,7 @@ public class FinanceOrderSyncServiceImpl extends ServiceImpl<FinanceOrderMapper, ...@@ -200,7 +209,7 @@ public class FinanceOrderSyncServiceImpl extends ServiceImpl<FinanceOrderMapper,
log.info("开始插入订单详情数据,数量:{}", mergeList.size()); log.info("开始插入订单详情数据,数量:{}", mergeList.size());
// 批量插入 // 批量插入
detailService.saveOrUpdateBatch(mergeList); detailDao.saveOrUpdateBatch(mergeList);
log.info("插入订单和订单详情完成,批次{}开始时间{},结束时间{},订单数量:{},详情数量:{}", batchNo, DateUtil.formatDateTime(startTime), DateUtil.formatDateTime(endTime), orders.size(), mergeList.size()); log.info("插入订单和订单详情完成,批次{}开始时间{},结束时间{},订单数量:{},详情数量:{}", batchNo, DateUtil.formatDateTime(startTime), DateUtil.formatDateTime(endTime), orders.size(), mergeList.size());
......
...@@ -34,6 +34,8 @@ public class WangdiantongUtil { ...@@ -34,6 +34,8 @@ public class WangdiantongUtil {
int maxDealCount = 500; int maxDealCount = 500;
int size = 0; int size = 0;
int pageNo = beginPageNo.get(); int pageNo = beginPageNo.get();
// 出现了查询的分页数量不足的情况
int maxPage = 0; int maxPage = 0;
do { do {
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论