From 3b5a01855446cd19d143a75fdea52c92d4ed1f16 Mon Sep 17 00:00:00 2001 From: liujiang <569804566@qq.com> Date: Thu, 23 Oct 2025 22:28:38 +0800 Subject: [PATCH] =?UTF-8?q?master=EF=BC=9A=E9=94=80=E5=94=AE/=E5=87=BA?= =?UTF-8?q?=E5=BA=93=20=E6=89=AB=E7=A0=81BUG=E4=BF=AE=E5=A4=8D=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../storeProdColorSize/StoreSaleSnDTO.java | 2 + .../xkt/mapper/StoreSaleDetailMapper.java | 18 +++++++-- .../StoreProductColorSizeServiceImpl.java | 21 ++++++---- .../mapper/StoreSaleDetailMapper.xml | 38 +++++++++++++++++-- 4 files changed, 64 insertions(+), 15 deletions(-) diff --git a/xkt/src/main/java/com/ruoyi/xkt/dto/storeProdColorSize/StoreSaleSnDTO.java b/xkt/src/main/java/com/ruoyi/xkt/dto/storeProdColorSize/StoreSaleSnDTO.java index 15439f810..3228dd853 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/dto/storeProdColorSize/StoreSaleSnDTO.java +++ b/xkt/src/main/java/com/ruoyi/xkt/dto/storeProdColorSize/StoreSaleSnDTO.java @@ -20,5 +20,7 @@ public class StoreSaleSnDTO { private Boolean refund; @ApiModelProperty(value = "条码") private String sn; + @ApiModelProperty(value = "条码前缀") + private String snPrefix; } diff --git a/xkt/src/main/java/com/ruoyi/xkt/mapper/StoreSaleDetailMapper.java b/xkt/src/main/java/com/ruoyi/xkt/mapper/StoreSaleDetailMapper.java index 940b3c102..9ea4acf4d 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/mapper/StoreSaleDetailMapper.java +++ b/xkt/src/main/java/com/ruoyi/xkt/mapper/StoreSaleDetailMapper.java @@ -14,9 +14,19 @@ import com.ruoyi.xkt.dto.storeProdColorSize.StoreSaleSnResDTO; public interface StoreSaleDetailMapper extends BaseMapper { /** - * 根据条码查询档口销售明细销售记录 - * @param barcodeDTO 条码信息 - * @return + * 根据 步橘条码 客户ID 查询最近的一条 普通销售的数据 + * + * @param barcodeDTO 查询入参 + * @return StoreSaleSnResDTO */ - StoreSaleSnResDTO selectBySn(StoreSaleSnDTO barcodeDTO); + StoreSaleSnResDTO selectRefundByBuJuSnSale(StoreSaleSnDTO barcodeDTO); + + /** + * 根据 其它系统条码 客户ID 查询最近的一条 普通销售的数据 + * + * @param barcodeDTO 查询入参 + * @return StoreSaleSnResDTO + */ + StoreSaleSnResDTO selectRefundByOtherSnSale(StoreSaleSnDTO barcodeDTO); + } diff --git a/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreProductColorSizeServiceImpl.java b/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreProductColorSizeServiceImpl.java index 0841ff9a8..4a034d72d 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreProductColorSizeServiceImpl.java +++ b/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreProductColorSizeServiceImpl.java @@ -90,14 +90,19 @@ public class StoreProductColorSizeServiceImpl implements IStoreProductColorSizeS } // 销售出库[退货] if (snDTO.getRefund()) { - // 先查storeSaleDetail中的sns条码是否存在[可能同一个条码,被一个客户多次销售、退货,则取最近的一条] - StoreSaleSnResDTO barcodeResDTO = this.saleDetailMapper.selectBySn(snDTO); - if (ObjectUtils.isNotEmpty(barcodeResDTO)) { - return barcodeResDTO.setSuccess(Boolean.TRUE).setSn(snDTO.getSn()); - } else { - // 若是没查询到数据,则走正常条码查询流程 - return this.getSnInfo(snDTO, stockSys); - } + // 先查storeSaleDetail中的sns条码是否存在[可能同一个条码,被一个客户多次销售、退货,则取最近销售的那条] + final boolean isBuJu = snDTO.getSn().startsWith(snDTO.getStoreId().toString()); + // 获取条码前缀 + final String snPrefix = isBuJu ? snDTO.getSn().substring(0, STOCK_PREFIX_LENGTH_MAP.get(StockSysType.BU_JU.getValue())) + // 从系统设置中获取,根据系统迁移时的配置 + : snDTO.getSn().substring(0, STOCK_PREFIX_LENGTH_MAP.get(stockSys)); + // 设置查询的条码前缀 + snDTO.setSnPrefix(snPrefix); + StoreSaleSnResDTO barcodeResDTO = isBuJu ? this.saleDetailMapper.selectRefundByBuJuSnSale(snDTO) + : this.saleDetailMapper.selectRefundByOtherSnSale(snDTO); + return ObjectUtils.isNotEmpty(barcodeResDTO) ? barcodeResDTO.setSuccess(Boolean.TRUE).setSn(snDTO.getSn()) + // 若是没查询到数据,则走正常条码查询流程 + : this.getSnInfo(snDTO, stockSys); // 销售出库[销售] 正常条码查询流程 } else { return this.getSnInfo(snDTO, stockSys); diff --git a/xkt/src/main/resources/mapper/StoreSaleDetailMapper.xml b/xkt/src/main/resources/mapper/StoreSaleDetailMapper.xml index 505c28437..862ff4bde 100644 --- a/xkt/src/main/resources/mapper/StoreSaleDetailMapper.xml +++ b/xkt/src/main/resources/mapper/StoreSaleDetailMapper.xml @@ -4,7 +4,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - SELECT ssd.store_prod_id, ssd.store_prod_color_id, @@ -13,13 +13,45 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ssd.prod_art_num, ssd.price, ssd.discounted_price, - ssd.quantity, - ssd.amount, + spcs.standard, + -(ssd.quantity) AS quantity, + -(ssd.amount) AS amount, DATE_FORMAT(ssd.create_time, '(%m.%e出)') AS soldTime FROM store_sale_detail ssd + JOIN store_product_color_size spcs ON spcs.del_flag = 0 AND spcs.store_prod_id = ssd.store_prod_id + AND spcs.size = ssd.size AND spcs.sn_prefix = #{snPrefix} WHERE ssd.del_flag = 0 + AND ssd.sale_type = 1 + AND ssd.sn = #{sn} + AND ssd.store_id = #{storeId} + AND ssd.store_cus_id = #{storeCusId} + ORDER BY + ssd.update_time DESC + LIMIT 1 + + +