|
|
|
@ -4,18 +4,15 @@ import cc.yunxi.common.domain.LambdaQueryWrapperX;
|
|
|
|
|
import cc.yunxi.common.exception.BizIllegalException;
|
|
|
|
|
import cc.yunxi.common.utils.BeanUtils;
|
|
|
|
|
import cc.yunxi.domain.po.*;
|
|
|
|
|
import cc.yunxi.domain.query.RecycleOrderQuery;
|
|
|
|
|
import cc.yunxi.domain.query.RecycleStationQuery;
|
|
|
|
|
import cc.yunxi.domain.vo.recyclestation.ProductRespVO;
|
|
|
|
|
import cc.yunxi.domain.vo.priceproduct.ProductRespVO;
|
|
|
|
|
import cc.yunxi.enums.GlobalStatusEnum;
|
|
|
|
|
import cc.yunxi.mapper.*;
|
|
|
|
|
import cc.yunxi.service.IRecycleStationService;
|
|
|
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
|
|
|
import cn.hutool.core.collection.CollectionUtil;
|
|
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
|
|
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
|
|
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
|
@ -27,7 +24,6 @@ import java.util.ArrayList;
|
|
|
|
|
import java.util.List;
|
|
|
|
|
import java.util.Map;
|
|
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
import java.util.stream.Stream;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* <p>
|
|
|
|
@ -43,12 +39,9 @@ public class RecycleStationServiceImpl extends ServiceImpl<RecycleStationMapper,
|
|
|
|
|
|
|
|
|
|
@Resource
|
|
|
|
|
private RecycleStationMapper recycleStationMapper;
|
|
|
|
|
|
|
|
|
|
@Resource
|
|
|
|
|
private RecycleStationPriceMapper recycleStationPriceMapper;
|
|
|
|
|
@Resource
|
|
|
|
|
private PriceMapper priceMapper;
|
|
|
|
|
@Resource
|
|
|
|
|
private PriceProductMapper priceProductMapper;
|
|
|
|
|
@Resource
|
|
|
|
|
private ProductMapper productMapper;
|
|
|
|
@ -57,6 +50,23 @@ public class RecycleStationServiceImpl extends ServiceImpl<RecycleStationMapper,
|
|
|
|
|
@Override
|
|
|
|
|
public Page<RecycleStation> queryStationByPage(RecycleStationQuery recycleStationQuery) {
|
|
|
|
|
LambdaQueryWrapperX<RecycleStation> wrapperX = new LambdaQueryWrapperX<>();
|
|
|
|
|
// 根据废品类目过滤站点
|
|
|
|
|
String productCode = recycleStationQuery.getProductCode();
|
|
|
|
|
if (StrUtil.isNotEmpty(productCode)) {
|
|
|
|
|
String priceId = productMapper.getLatestPriceByProductCode(productCode);
|
|
|
|
|
if (ObjectUtil.isEmpty(priceId)) {
|
|
|
|
|
return new Page<>();
|
|
|
|
|
} else {
|
|
|
|
|
List<RecycleStationPrice> stationPriceList = new LambdaQueryChainWrapper<>(recycleStationPriceMapper)
|
|
|
|
|
.eq(RecycleStationPrice::getPriceId, priceId).select(RecycleStationPrice::getRecycleStationId).list();
|
|
|
|
|
List<String> stationIds = new ArrayList<>();
|
|
|
|
|
for (RecycleStationPrice recycleStationPrice : stationPriceList) {
|
|
|
|
|
String recycleStationId = recycleStationPrice.getRecycleStationId();
|
|
|
|
|
stationIds.add(recycleStationId);
|
|
|
|
|
}
|
|
|
|
|
wrapperX.inIfPresent(RecycleStation::getId, stationIds);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
wrapperX.eqIfPresent(RecycleStation::getStationName, recycleStationQuery.getStationName());
|
|
|
|
|
Page<RecycleStation> pageDO = recycleStationQuery.addOrderItem(RecycleStation::getCreatorTime, false).buildPage();
|
|
|
|
|
return recycleStationMapper.queryStationByPage(recycleStationQuery.getLocation(), pageDO, wrapperX);
|
|
|
|
@ -78,18 +88,14 @@ public class RecycleStationServiceImpl extends ServiceImpl<RecycleStationMapper,
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public List<ProductRespVO> getStationProduct(String stationId) {
|
|
|
|
|
RecycleStationPrice recycleStationPrice = new LambdaQueryChainWrapper<>(recycleStationPriceMapper)
|
|
|
|
|
.eq(RecycleStationPrice::getRecycleStationId, stationId).one();
|
|
|
|
|
if (ObjectUtil.isEmpty(recycleStationPrice)) {
|
|
|
|
|
throw new BizIllegalException("回收站点价目信息未配置");
|
|
|
|
|
}
|
|
|
|
|
Price price = new LambdaQueryChainWrapper<>(priceMapper).eq(Price::getId, recycleStationPrice.getPriceId()).one();
|
|
|
|
|
if (ObjectUtil.isEmpty(price) || GlobalStatusEnum.INVALID.equals(price.getStatus())) {
|
|
|
|
|
throw new BizIllegalException("价目配置不存在或被禁用");
|
|
|
|
|
QueryWrapper<Price> wrapper = new QueryWrapper<Price>().eq("a.status", GlobalStatusEnum.VALID);
|
|
|
|
|
String priceId = recycleStationPriceMapper.getLatestPriceByStationId(stationId,wrapper);
|
|
|
|
|
if (ObjectUtil.isEmpty(priceId)) {
|
|
|
|
|
throw new BizIllegalException("回收站点未配置有效价目信息");
|
|
|
|
|
}
|
|
|
|
|
List<ProductRespVO> productRespVOList = new ArrayList<>(20);
|
|
|
|
|
List<PriceProduct> priceProductList = new LambdaQueryChainWrapper<>(priceProductMapper)
|
|
|
|
|
.eq(PriceProduct::getPriceId, price.getId()).list();
|
|
|
|
|
.eq(PriceProduct::getPriceId, priceId).list();
|
|
|
|
|
if (CollectionUtil.isNotEmpty(priceProductList)) {
|
|
|
|
|
// 获取废品价格信息
|
|
|
|
|
Map<String, PriceProduct> priceProductMap = priceProductList.stream()
|
|
|
|
|