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

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

上级 40cc31a3
......@@ -24,8 +24,8 @@ public class FinanceOrderDetailSyncController extends BaseController {
@Autowired
private FinanceOrderSyncService syncService;
@GetMapping("/syncWandiantongOrderDeatail")
public FinanceSyncOrderDetailDto syncWandiantongOrderDeatail(Date startTime, Date endTime) {
@GetMapping("/syncWangdiantongOrderDetail")
public FinanceSyncOrderDetailDto syncWangdiantongOrderDetail(Date startTime, Date endTime) {
log.info("接口开始同步-旺店通订单明细api接口数据");
// 可以传参开始时间和结束时间,用于补充特定时间的数据采集
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 java.util.Map;
public interface FinanceBaseProductService extends IService<FinanceBaseProduct> {
public interface FinianceBaseProductDao {
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.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.mapper.FinanceBaseProductMapper;
import com.sfa.job.service.order.FinanceBaseProductService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@DS("Bi")
@Repository
public class FinianceBaseProductDaoImpl implements FinianceBaseProductDao {
/**
* 旺店通订单Service业务层处理
*
* @author lvbencai
* @date 2025年01月07日17:00:16
*/
@DS("bi")
@Slf4j
@Service
public class FinanceBaseProductServiceImpl extends ServiceImpl<FinanceBaseProductMapper, FinanceBaseProduct> implements FinanceBaseProductService {
@Autowired
FinanceBaseProductMapper mapper;
@Override
public Map<String, FinanceBaseProduct> selectBaseProduct() {
// 查询所有商品
List<FinanceBaseProduct> list = list();
List<FinanceBaseProduct> list = mapper.selectList(new LambdaQueryWrapper<>()) ;
// 以料号为key,商品对象为value,放入map中
Map<String, FinanceBaseProduct> map = list.stream()
.collect(HashMap::new, (k, v) -> k.put(v.getPrdCode(), v), HashMap::putAll);
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;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.sfa.job.domain.order.entity.FinanceOrderDetail;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@Mapper
public interface FinanceOrderDetailMapper extends BaseMapper<FinanceOrderDetail> {
void saveOrUpdateBatch(@Param(value = "list") List<FinanceOrderDetail> mergeList);
}
......@@ -19,5 +19,6 @@ public class FinanceSyncOrderDetailDto {
private String batchNo;
private Integer pageNo;
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;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.sfa.common.core.exception.ServiceException;
import com.sfa.common.core.utils.DateUtils;
import com.sfa.job.domain.order.dao.CollectErrorInfoDao;
import com.sfa.job.domain.order.dao.CollectOrderLogInfoDao;
import com.sfa.job.domain.order.dao.IProductDao;
import com.sfa.job.domain.order.dao.*;
import com.sfa.job.domain.order.entity.*;
import com.sfa.job.domain.order.mapper.FinanceOrderMapper;
import com.sfa.job.pojo.request.WangdiantongQueryVO;
import com.sfa.job.pojo.response.FinanceSyncOrderDetailDto;
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.util.WangdiantongUtil;
import lombok.extern.slf4j.Slf4j;
......@@ -45,11 +40,12 @@ public class FinanceOrderSyncServiceImpl extends ServiceImpl<FinanceOrderMapper,
WangdiantongUtil wangdiantongUtil;
@Autowired
FinanceOrderDetailService detailService;
// FinanceOrderDetailService detailService;
FinanceOrderDetailDao detailDao;
@Autowired
FinanceBaseProductService baseProductService;
FinianceBaseProductDao baseProductDao;
@Autowired
FinanceBaseZbjTypeService baseZbjTypeService;
FinanceBaseZbjTypeDao baseZbjTypeDao;
@Autowired
CollectOrderLogInfoDao orderLogInfoDao;
@Autowired
......@@ -95,10 +91,12 @@ public class FinanceOrderSyncServiceImpl extends ServiceImpl<FinanceOrderMapper,
}
}
// 调用查询旺店通接口api 获取最新日期前的一个小时
// 调用查询旺店通接口api 获取最新日期前的2小时
Date currentLatest = DateUtils.addHours(new Date(), -2);
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)) {
......@@ -121,9 +119,9 @@ public class FinanceOrderSyncServiceImpl extends ServiceImpl<FinanceOrderMapper,
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();
// 转换成map
......@@ -177,6 +175,9 @@ public class FinanceOrderSyncServiceImpl extends ServiceImpl<FinanceOrderMapper,
orderDetail.setZbjId(orderDetail.getZbjId(orderDetail.getRemark(), sameDetail));
orderDetail.setZbjZbId(orderDetail.getZbjZbId(orderDetail.getFenxiaoId(), 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));
if (ObjectUtils.isNotEmpty(orderDetail.getZbjName())) {
......@@ -192,6 +193,14 @@ public class FinanceOrderSyncServiceImpl extends ServiceImpl<FinanceOrderMapper,
orderDetail.setStandardCost(ObjectUtils.isNotEmpty(baseProductMap.get(orderDetail.getGoodsNo())) ?
baseProductMap.get(orderDetail.getGoodsNo()).getStandardCost() :
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))
);
}
......@@ -200,7 +209,7 @@ public class FinanceOrderSyncServiceImpl extends ServiceImpl<FinanceOrderMapper,
log.info("开始插入订单详情数据,数量:{}", mergeList.size());
// 批量插入
detailService.saveOrUpdateBatch(mergeList);
detailDao.saveOrUpdateBatch(mergeList);
log.info("插入订单和订单详情完成,批次{}开始时间{},结束时间{},订单数量:{},详情数量:{}", batchNo, DateUtil.formatDateTime(startTime), DateUtil.formatDateTime(endTime), orders.size(), mergeList.size());
......
......@@ -34,6 +34,8 @@ public class WangdiantongUtil {
int maxDealCount = 500;
int size = 0;
int pageNo = beginPageNo.get();
// 出现了查询的分页数量不足的情况
int maxPage = 0;
do {
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论