From 2a673472c17db55fc35ffd4fe697e95f15cdaaff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?LI-CCONG=5C=E6=9D=8E=E8=81=AA=E8=81=AA?= <1441652193@qq.com> Date: Fri, 8 Mar 2024 17:45:14 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9B=9E=E6=94=B6=E7=AB=99=E7=B1=BB=E7=9B=AE?= =?UTF-8?q?=E4=BB=B7=E6=A0=BC=E5=8A=9F=E8=83=BD=E5=BC=80=E5=8F=91v2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/RecycleStationController.java | 2 +- .../domain/query/RecycleStationQuery.java | 3 ++ .../ProductRespVO.java | 12 +----- .../java/cc/yunxi/mapper/ProductMapper.java | 11 +++++ .../mapper/RecycleStationPriceMapper.java | 16 +++++++ ...Service.java => IPriceProductService.java} | 0 .../yunxi/service/IRecycleStationService.java | 3 +- ...Impl.java => PriceProductServiceImpl.java} | 0 .../impl/RecycleStationServiceImpl.java | 42 +++++++++++-------- .../resources/mapper/PriceRecycleMapper.xml | 5 --- .../main/resources/mapper/ProductMapper.xml | 15 +++++++ .../mapper/RecycleStationPriceMapper.xml | 19 +++++++++ 12 files changed, 91 insertions(+), 37 deletions(-) rename nxhs-service/src/main/java/cc/yunxi/domain/vo/{recyclestation => priceproduct}/ProductRespVO.java (79%) rename nxhs-service/src/main/java/cc/yunxi/service/{IPriceService.java => IPriceProductService.java} (100%) rename nxhs-service/src/main/java/cc/yunxi/service/impl/{PriceServiceImpl.java => PriceProductServiceImpl.java} (100%) delete mode 100644 nxhs-service/src/main/resources/mapper/PriceRecycleMapper.xml create mode 100644 nxhs-service/src/main/resources/mapper/RecycleStationPriceMapper.xml diff --git a/nxhs-service/src/main/java/cc/yunxi/controller/RecycleStationController.java b/nxhs-service/src/main/java/cc/yunxi/controller/RecycleStationController.java index df1dcbb..633a801 100644 --- a/nxhs-service/src/main/java/cc/yunxi/controller/RecycleStationController.java +++ b/nxhs-service/src/main/java/cc/yunxi/controller/RecycleStationController.java @@ -8,7 +8,7 @@ import cc.yunxi.common.utils.BeanUtils; import cc.yunxi.domain.dto.LocationDTO; import cc.yunxi.domain.po.RecycleStation; import cc.yunxi.domain.query.RecycleStationQuery; -import cc.yunxi.domain.vo.recyclestation.ProductRespVO; +import cc.yunxi.domain.vo.priceproduct.ProductRespVO; import cc.yunxi.domain.vo.recyclestation.RecycleStationRespVO; import cc.yunxi.service.IRecycleStationService; import cn.hutool.core.util.ObjectUtil; diff --git a/nxhs-service/src/main/java/cc/yunxi/domain/query/RecycleStationQuery.java b/nxhs-service/src/main/java/cc/yunxi/domain/query/RecycleStationQuery.java index 483eeed..aba056f 100644 --- a/nxhs-service/src/main/java/cc/yunxi/domain/query/RecycleStationQuery.java +++ b/nxhs-service/src/main/java/cc/yunxi/domain/query/RecycleStationQuery.java @@ -21,6 +21,9 @@ public class RecycleStationQuery extends PageQuery { private String stationName; + @ApiModelProperty(value = "废品类目", required = false, example = "SPHS2024030500001") + private String productCode; + @ApiModelProperty(value = "散户当前位置", required = true) private LocationDTO location; diff --git a/nxhs-service/src/main/java/cc/yunxi/domain/vo/recyclestation/ProductRespVO.java b/nxhs-service/src/main/java/cc/yunxi/domain/vo/priceproduct/ProductRespVO.java similarity index 79% rename from nxhs-service/src/main/java/cc/yunxi/domain/vo/recyclestation/ProductRespVO.java rename to nxhs-service/src/main/java/cc/yunxi/domain/vo/priceproduct/ProductRespVO.java index 7eefca7..411f496 100644 --- a/nxhs-service/src/main/java/cc/yunxi/domain/vo/recyclestation/ProductRespVO.java +++ b/nxhs-service/src/main/java/cc/yunxi/domain/vo/priceproduct/ProductRespVO.java @@ -1,4 +1,4 @@ -package cc.yunxi.domain.vo.recyclestation; +package cc.yunxi.domain.vo.priceproduct; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; @@ -26,42 +26,32 @@ import java.util.Date; public class ProductRespVO { @ApiModelProperty("价格id") - @TableField("price_id") private String priceId; @ApiModelProperty("废品id") - @TableField("product_id") private String productId; @ApiModelProperty("回收价") - @TableField("recovery_price") private BigDecimal recoveryPrice; @ApiModelProperty("赠送积分") - @TableField("reward_points") private String rewardPoints; @ApiModelProperty("废品编码") - @TableField("code") private String code; @ApiModelProperty("废品名称") - @TableField("name") private String name; @ApiModelProperty("废品规格") - @TableField("spec") private String spec; @ApiModelProperty("废品单位") - @TableField("unit") private String unit; @ApiModelProperty("备注") - @TableField("remak") private String remark; @ApiModelProperty("废品定价时间") - @TableField("f_creator_time") private LocalDateTime fCreatorTime; } diff --git a/nxhs-service/src/main/java/cc/yunxi/mapper/ProductMapper.java b/nxhs-service/src/main/java/cc/yunxi/mapper/ProductMapper.java index c331a94..f123d74 100644 --- a/nxhs-service/src/main/java/cc/yunxi/mapper/ProductMapper.java +++ b/nxhs-service/src/main/java/cc/yunxi/mapper/ProductMapper.java @@ -1,8 +1,12 @@ package cc.yunxi.mapper; +import cc.yunxi.domain.po.Price; import cc.yunxi.domain.po.Product; +import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.toolkit.Constants; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; /** *

@@ -15,4 +19,11 @@ import org.apache.ibatis.annotations.Mapper; @Mapper public interface ProductMapper extends BaseMapper { + /** + * 根据废品code 查询最新一条的有效的价目id + * @param productCode + * @return Price + */ + String getLatestPriceByProductCode(@Param("productCode") String productCode); + } diff --git a/nxhs-service/src/main/java/cc/yunxi/mapper/RecycleStationPriceMapper.java b/nxhs-service/src/main/java/cc/yunxi/mapper/RecycleStationPriceMapper.java index 06cef6c..4a3b747 100644 --- a/nxhs-service/src/main/java/cc/yunxi/mapper/RecycleStationPriceMapper.java +++ b/nxhs-service/src/main/java/cc/yunxi/mapper/RecycleStationPriceMapper.java @@ -1,8 +1,15 @@ package cc.yunxi.mapper; +import cc.yunxi.domain.po.Price; +import cc.yunxi.domain.po.RecycleStation; import cc.yunxi.domain.po.RecycleStationPrice; +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.toolkit.Constants; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; /** *

@@ -15,4 +22,13 @@ import org.apache.ibatis.annotations.Mapper; @Mapper public interface RecycleStationPriceMapper extends BaseMapper { + /** + * 根据回收站id 查询最新一条的有效的价目id + * @param stationId + * @return Price + */ + String getLatestPriceByStationId( + @Param("stationId") String stationId, + @Param(Constants.WRAPPER) Wrapper wrapper); + } diff --git a/nxhs-service/src/main/java/cc/yunxi/service/IPriceService.java b/nxhs-service/src/main/java/cc/yunxi/service/IPriceProductService.java similarity index 100% rename from nxhs-service/src/main/java/cc/yunxi/service/IPriceService.java rename to nxhs-service/src/main/java/cc/yunxi/service/IPriceProductService.java diff --git a/nxhs-service/src/main/java/cc/yunxi/service/IRecycleStationService.java b/nxhs-service/src/main/java/cc/yunxi/service/IRecycleStationService.java index b6ac010..9cf5f95 100644 --- a/nxhs-service/src/main/java/cc/yunxi/service/IRecycleStationService.java +++ b/nxhs-service/src/main/java/cc/yunxi/service/IRecycleStationService.java @@ -1,9 +1,8 @@ package cc.yunxi.service; -import cc.yunxi.domain.po.RecycleOrder; import cc.yunxi.domain.po.RecycleStation; import cc.yunxi.domain.query.RecycleStationQuery; -import cc.yunxi.domain.vo.recyclestation.ProductRespVO; +import cc.yunxi.domain.vo.priceproduct.ProductRespVO; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; diff --git a/nxhs-service/src/main/java/cc/yunxi/service/impl/PriceServiceImpl.java b/nxhs-service/src/main/java/cc/yunxi/service/impl/PriceProductServiceImpl.java similarity index 100% rename from nxhs-service/src/main/java/cc/yunxi/service/impl/PriceServiceImpl.java rename to nxhs-service/src/main/java/cc/yunxi/service/impl/PriceProductServiceImpl.java diff --git a/nxhs-service/src/main/java/cc/yunxi/service/impl/RecycleStationServiceImpl.java b/nxhs-service/src/main/java/cc/yunxi/service/impl/RecycleStationServiceImpl.java index 08cd091..8989f3a 100644 --- a/nxhs-service/src/main/java/cc/yunxi/service/impl/RecycleStationServiceImpl.java +++ b/nxhs-service/src/main/java/cc/yunxi/service/impl/RecycleStationServiceImpl.java @@ -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; /** *

@@ -43,12 +39,9 @@ public class RecycleStationServiceImpl extends ServiceImpl queryStationByPage(RecycleStationQuery recycleStationQuery) { LambdaQueryWrapperX 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 stationPriceList = new LambdaQueryChainWrapper<>(recycleStationPriceMapper) + .eq(RecycleStationPrice::getPriceId, priceId).select(RecycleStationPrice::getRecycleStationId).list(); + List 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 pageDO = recycleStationQuery.addOrderItem(RecycleStation::getCreatorTime, false).buildPage(); return recycleStationMapper.queryStationByPage(recycleStationQuery.getLocation(), pageDO, wrapperX); @@ -78,18 +88,14 @@ public class RecycleStationServiceImpl extends ServiceImpl 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 wrapper = new QueryWrapper().eq("a.status", GlobalStatusEnum.VALID); + String priceId = recycleStationPriceMapper.getLatestPriceByStationId(stationId,wrapper); + if (ObjectUtil.isEmpty(priceId)) { + throw new BizIllegalException("回收站点未配置有效价目信息"); } List productRespVOList = new ArrayList<>(20); List priceProductList = new LambdaQueryChainWrapper<>(priceProductMapper) - .eq(PriceProduct::getPriceId, price.getId()).list(); + .eq(PriceProduct::getPriceId, priceId).list(); if (CollectionUtil.isNotEmpty(priceProductList)) { // 获取废品价格信息 Map priceProductMap = priceProductList.stream() diff --git a/nxhs-service/src/main/resources/mapper/PriceRecycleMapper.xml b/nxhs-service/src/main/resources/mapper/PriceRecycleMapper.xml deleted file mode 100644 index 56a2f5f..0000000 --- a/nxhs-service/src/main/resources/mapper/PriceRecycleMapper.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/nxhs-service/src/main/resources/mapper/ProductMapper.xml b/nxhs-service/src/main/resources/mapper/ProductMapper.xml index d8e17fd..c2ae604 100644 --- a/nxhs-service/src/main/resources/mapper/ProductMapper.xml +++ b/nxhs-service/src/main/resources/mapper/ProductMapper.xml @@ -2,4 +2,19 @@ + + + diff --git a/nxhs-service/src/main/resources/mapper/RecycleStationPriceMapper.xml b/nxhs-service/src/main/resources/mapper/RecycleStationPriceMapper.xml new file mode 100644 index 0000000..2193b11 --- /dev/null +++ b/nxhs-service/src/main/resources/mapper/RecycleStationPriceMapper.xml @@ -0,0 +1,19 @@ + + + + + + + +