master:档口客户、档口产品列表数据完善;

pull/1121/head
liujiang 2025-03-30 20:45:24 +08:00
parent dc5d51a40c
commit 19ac11d9e2
18 changed files with 330 additions and 141 deletions

View File

@ -102,8 +102,8 @@ public class StoreCustomerController extends XktBaseController {
@PreAuthorize("@ss.hasPermi('system:customer:list')")
@ApiOperation(value = "查询档口客户列表", httpMethod = "GET", response = R.class)
@PostMapping("/page")
public Page<StoreCusPageResDTO> selectPage(@Validated @RequestBody StoreCusPageVO pageVO) {
return storeCusService.selectPage(ObjectUtils.isEmpty(pageVO) ? null : BeanUtil.toBean(pageVO, StoreCusPageDTO.class));
public Page selectPage(@Validated @RequestBody StoreCusPageVO pageVO) {
return storeCusService.selectPage(BeanUtil.toBean(pageVO, StoreCusPageDTO.class));
}

View File

@ -55,8 +55,8 @@ public class StoreProductController extends XktBaseController {
@PreAuthorize("@ss.hasPermi('system:product:list')")
@ApiOperation(value = "查询档口商品列表", httpMethod = "POST", response = R.class)
@PostMapping("/page")
public Page<StoreProdPageDTO> page(@Validated @RequestBody StoreProdPageVO pageVO) {
return storeProdService.page(ObjectUtils.isEmpty(pageVO) ? null : BeanUtil.toBean(pageVO, StoreProdPageDTO.class));
public Page page(@Validated @RequestBody StoreProdPageVO pageVO) {
return storeProdService.page(BeanUtil.toBean(pageVO, StoreProdPageDTO.class));
}
/**

View File

@ -4,13 +4,15 @@ import cn.hutool.core.bean.BeanUtil;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.XktBaseController;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.core.page.Page;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.web.controller.xkt.vo.storeCustomer.StoreCusGeneralSaleVO;
import com.ruoyi.web.controller.xkt.vo.storeSale.StoreSalePageVO;
import com.ruoyi.web.controller.xkt.vo.storeSale.StoreSaleVO;
import com.ruoyi.xkt.domain.StoreSale;
import com.ruoyi.xkt.dto.storeSale.StoreSaleDTO;
import com.ruoyi.xkt.dto.storeSale.StoreSalePageDTO;
import com.ruoyi.xkt.service.IStoreSaleService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@ -47,6 +49,17 @@ public class StoreSaleController extends XktBaseController {
return success(BeanUtil.toBean(storeSaleService.getCusGeneralSale(days, storeId, storeCusId), StoreCusGeneralSaleVO.class));
}
/**
*
*/
@PreAuthorize("@ss.hasPermi('system:sale:list')")
@ApiOperation(value = "查询档口销售出库列表", httpMethod = "POST", response = R.class)
@PostMapping("/page")
public Page page(@Validated @RequestBody StoreSalePageVO salePageVO) {
return storeSaleService.page(BeanUtil.toBean(salePageVO, StoreSalePageDTO.class));
}
/**
*
*/
@ -58,32 +71,35 @@ public class StoreSaleController extends XktBaseController {
return success(storeSaleService.insertStoreSale(BeanUtil.toBean(storeSaleVO, StoreSaleDTO.class)));
}
/**
*
*
*/
@PreAuthorize("@ss.hasPermi('system:sale:list')")
@GetMapping("/list")
public TableDataInfo list(StoreSale storeSale) {
startPage();
List<StoreSale> list = storeSaleService.selectStoreSaleList(storeSale);
return getDataTable(list);
@PreAuthorize("@ss.hasPermi('system:sale:edit')")
@Log(title = "修改档口销售出库", businessType = BusinessType.UPDATE)
@ApiOperation(value = "修改档口销售出库", httpMethod = "PUT", response = R.class)
@PutMapping
public R edit(@Validated @RequestBody StoreSaleVO storeSaleVO) {
return success(storeSaleService.updateStoreSale(BeanUtil.toBean(storeSaleVO, StoreSaleDTO.class)));
}
/**
*
*/
@ -106,16 +122,6 @@ public class StoreSaleController extends XktBaseController {
}
/**
*
*/
@PreAuthorize("@ss.hasPermi('system:sale:edit')")
@Log(title = "档口销售出库", businessType = BusinessType.UPDATE)
@PutMapping
public R edit(@RequestBody StoreSale storeSale) {
return success(storeSaleService.updateStoreSale(storeSale));
}
/**
*
*/

View File

@ -4,6 +4,8 @@ import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotNull;
/**
* @author liujiang
* @version v1.0
@ -13,8 +15,10 @@ import lombok.Data;
@Data
public class BasePageVO {
@NotNull(message = "pageNum不能为空")
@ApiModelProperty(name = "pageNum")
private int pageNum;
@NotNull(message = "pageSize不能为空")
@ApiModelProperty(name = "pageSize")
private int pageSize;

View File

@ -0,0 +1,43 @@
package com.ruoyi.web.controller.xkt.vo.storeSale;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.web.controller.xkt.vo.BasePageVO;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.NotNull;
import java.util.Date;
/**
* @author liujiang
* @version v1.0
* @date 2025/3/27 15:12
*/
@EqualsAndHashCode(callSuper = true)
@ApiModel("档口销售出库单分页查询入参")
@Data
public class StoreSalePageVO extends BasePageVO {
@NotNull(message = "档口ID不能为空")
@ApiModelProperty(name = "档口ID")
private Long storeId;
@ApiModelProperty(name = "商品货号")
private String prodArtNum;
@ApiModelProperty(name = "客户名称")
private String cusName;
@ApiModelProperty(name = "销售类型", notes = "普通销售、销售退货、普通销售/销售退货 GENERAL_SALE SALE_REFUND SALE_AND_REFUND")
private String saleType;
@ApiModelProperty(name = "结款状态")
private String paymentStatus;
@ApiModelProperty(name = "支付方式")
private String payWay;
@ApiModelProperty(name = "销售开始时间")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date createTimeStart;
@ApiModelProperty(name = "销售结束时间")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date createTimeEnd;
}

View File

@ -21,6 +21,11 @@ import java.util.List;
@JsonInclude(JsonInclude.Include.NON_NULL)
public class StoreSaleVO {
@NotNull(message = "是否为返单不能为空!")
@ApiModelProperty(name = "是否为返单", notes = "true 是返单 false 不是返单")
private Boolean refund;
@ApiModelProperty(name = "storeSaleId", notes = "新增为空,编辑必传")
private Long storeSaleId;
@ApiModelProperty(name = "档口ID")
@NotNull(message = "档口ID不能为空!")
private Long storeId;
@ -53,6 +58,9 @@ public class StoreSaleVO {
@NotNull(message = "档口商品颜色尺码ID不能为空!")
@ApiModelProperty(name = "档口商品颜色尺码ID")
private Long storeProdColorSizeId;
@ApiModelProperty(name = "商品货号")
@NotBlank(message = "商品货号不能为空!")
private String prodArtNum;
@ApiModelProperty(name = "销售条码")
private String sns;
@NotNull(message = "销售单价不能为空!")

View File

@ -58,18 +58,23 @@ public class Page<T> implements Serializable {
*/
private String msg = "操作成功";
public static <T> Page<T> convert(PageInfo<?> pageInfo) {
return BeanUtil.toBean(pageInfo, Page.class);
}
public static <T> Page<T> convert(PageInfo<?> pageInfo, List<T> list) {
Page<T> page = BeanUtil.toBean(pageInfo, Page.class);
page.setList(CollectionUtils.isEmpty(list) ? new ArrayList<>() : list);
return page;
}
public static <T> Page<T> empty() {
public static <T> Page<T> empty(int pageSize, int pageNum) {
Page<T> page = new Page<>();
page.setList(new ArrayList<>());
page.setTotal(0);
page.setPageNum(1);
page.setPageSize(10);
page.setPageNum(pageNum);
page.setPageSize(pageSize);
return page;
}

View File

@ -30,56 +30,67 @@ public class StoreSale extends XktBaseEntity {
*/
@TableId
private Long id;
/**
* ID
*/
@Excel(name = "档口ID")
private Long storeId;
/**
* ID
*/
@Excel(name = "档口客户ID")
private Long storeCusId;
/**
* 退/退
*
*/
private String storeCusName;
/**
* 退/退GENERAL_SALE SALE_REFUND SALE_AND_REFUND
*/
@Excel(name = "销售类型")
private String saleType;
/**
*
*/
@Excel(name = "单据编号")
private String code;
/**
*
*/
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "单据日期", width = 30, dateFormat = "yyyy-MM-dd")
private Date voucherDate;
/**
*
*/
@Excel(name = "数量")
private Integer quantity;
/**
*
*/
@Excel(name = "总金额")
private BigDecimal amount;
/**
*
*/
@Excel(name = "支付方式", readConverterExp = "支=付宝、微信、现金、欠款")
private String payWay;
/**
* SETTLEDDEBT
*/
private String paymentStatus;
/**
* ID
*/
private Long operatorId;
/**
*
*/
private String operatorName;
/**
*
*/
private String remark;
@Override
public String toString() {

View File

@ -53,6 +53,12 @@ public class StoreSaleDetail extends XktBaseEntity {
@Excel(name = "销售类型", readConverterExp = "普=通销售、销售退货")
private String saleType;
/**
*
*/
@Excel(name = "商品货号")
private String prodArtNum;
/**
*
*/

View File

@ -1,6 +1,7 @@
package com.ruoyi.xkt.domain;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.XktBaseEntity;
import lombok.Data;
@ -9,6 +10,7 @@ import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import java.math.BigDecimal;
import java.util.Date;
/**
* store_sale_refund_record
@ -32,55 +34,67 @@ public class StoreSaleRefundRecord extends XktBaseEntity {
*/
@Excel(name = "档口销售出库ID")
private Long storeSaleId;
/**
* ID
*/
@Excel(name = "档口ID")
private Long storeId;
/**
* ID
*/
@Excel(name = "档口销售客户ID")
private Long storeCusId;
/**
* ID
*
*/
@Excel(name = "档口销售商品ID")
private Long storeProdId;
private String storeCusName;
/**
* 退/退
* 退/退GENERAL_SALE SALE_REFUND SALE_AND_REFUND
*/
@Excel(name = "销售类型", readConverterExp = "销=售、退货、销售/退货")
private Long saleType;
@Excel(name = "销售类型")
private String saleType;
/**
*
*/
@Excel(name = "单据编号")
private String code;
/**
*
*/
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "单据日期", width = 30, dateFormat = "yyyy-MM-dd")
private Date voucherDate;
/**
*
*/
@Excel(name = "数量")
private Integer quantity;
/**
*
*/
@Excel(name = "总金额")
private BigDecimal amount;
/**
*
*
*/
@Excel(name = "支付方式")
private Long payWay;
@Excel(name = "支付方式", readConverterExp = "支=付宝、微信、现金、欠款")
private String payWay;
/**
* SETTLEDDEBT
*/
private String paymentStatus;
/**
* ID
*/
private Long operatorId;
/**
*
*/
private String operatorName;
/**
*
*/
private String remark;
@Override
public String toString() {
@ -89,7 +103,6 @@ public class StoreSaleRefundRecord extends XktBaseEntity {
.append("storeSaleId", getStoreSaleId())
.append("storeId", getStoreId())
.append("storeCusId", getStoreCusId())
.append("storeProdId", getStoreProdId())
.append("saleType", getSaleType())
.append("code", getCode())
.append("quantity", getQuantity())

View File

@ -5,9 +5,6 @@ import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.List;
@ -21,49 +18,43 @@ import java.util.List;
@JsonInclude(JsonInclude.Include.NON_NULL)
public class StoreSaleDTO {
@ApiModelProperty(name = "是否为返单", notes = "true 是返单 false 不是返单")
private Boolean refund;
@ApiModelProperty("档口销售ID")
private Long storeSaleId;
@ApiModelProperty(name = "档口ID")
@NotNull(message = "档口ID不能为空!")
private Long storeId;
@ApiModelProperty(name = "档口客户ID")
@NotNull(message = "档口客户ID不能为空!")
private Long storeCusId;
@ApiModelProperty(name = "销售类型(普通销售 GENERAL_SALE、销售退货 SALE_REFUND、普通销售/销售退货 SALE_AND_REFUND")
@NotBlank(message = "销售类型不能为空!")
private String saleType;
@ApiModelProperty(name = "数量")
@NotNull(message = "数量不能为空!")
private Integer quantity;
@ApiModelProperty(name = "总金额")
@NotNull(message = "总金额不能为空!")
private BigDecimal amount;
@NotBlank(message = "支付方式不能为空!")
@ApiModelProperty(name = "支付方式支付宝、微信、现金、欠款ALIPAY WECHAT_PAY CASH DEBT")
private String payWay;
@NotNull(message = "销售详情列表不能为空!")
@Valid
@ApiModelProperty(name = "结款状态(已结清、欠款) SETTLED、DEBT")
private String paymentStatus;
@ApiModelProperty(name = "销售详情列表")
private List<SaleDetailVO> detailList;
@Data
public static class SaleDetailVO {
@NotNull(message = "档口商品ID不能为空!")
@ApiModelProperty(name = "档口商品ID")
private Long storeProdId;
@NotNull(message = "档口商品颜色尺码ID不能为空!")
@ApiModelProperty(name = "档口商品颜色尺码ID")
private Long storeProdColorSizeId;
@ApiModelProperty(name = "商品货号")
private String prodArtNum;
@ApiModelProperty(name = "销售条码")
private String sns;
@NotNull(message = "销售单价不能为空!")
@ApiModelProperty(name = "销售单价")
private BigDecimal price;
@ApiModelProperty(name = "给客户优惠后单价")
private BigDecimal discountedPrice;
@ApiModelProperty(name = "数量")
@NotNull(message = "数量不能为空!")
private Integer quantity;
@NotNull(message = "总金额不能为空!")
@ApiModelProperty(name = "总金额")
private BigDecimal amount;
@ApiModelProperty(name = "其它优惠")

View File

@ -0,0 +1,43 @@
package com.ruoyi.xkt.dto.storeSale;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.xkt.dto.BasePageDTO;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.NotNull;
import java.util.Date;
/**
* @author liujiang
* @version v1.0
* @date 2025/3/27 15:12
*/
@EqualsAndHashCode(callSuper = true)
@ApiModel("档口销售出库单分页查询入参")
@Data
public class StoreSalePageDTO extends BasePageDTO {
@NotNull(message = "档口ID不能为空")
@ApiModelProperty(name = "档口ID")
private Long storeId;
@ApiModelProperty(name = "商品货号")
private String prodArtNum;
@ApiModelProperty(name = "客户名称")
private String cusName;
@ApiModelProperty(name = "销售类型", notes = "普通销售、销售退货、普通销售/销售退货 GENERAL_SALE SALE_REFUND SALE_AND_REFUND")
private String saleType;
@ApiModelProperty(name = "结款状态")
private String paymentStatus;
@ApiModelProperty(name = "支付方式")
private String payWay;
@ApiModelProperty(name = "销售开始时间")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date createTimeStart;
@ApiModelProperty(name = "销售结束时间")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date createTimeEnd;
}

View File

@ -0,0 +1,46 @@
package com.ruoyi.xkt.dto.storeSale;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
/**
* @author liujiang
* @version v1.0
* @date 2025/3/27 15:12
*/
@ApiModel("档口销售出库列表数据")
@Data
public class StoreSalePageResDTO {
@ApiModelProperty(name = "档口销售ID")
private Long storeSaleId;
@ApiModelProperty(name = "档口ID")
private Long storeId;
@ApiModelProperty("code")
private String code;
@ApiModelProperty(name = "客户名称")
private String cusName;
@ApiModelProperty(name = "销售时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date createTime;
@ApiModelProperty(name = "销售类型(普通销售、销售退货、普通销售/销售退货GENERAL_SALE SALE_REFUND SALE_AND_REFUND")
private String saleType;
@ApiModelProperty(name = "销售数量")
private Integer quantity;
@ApiModelProperty(name = "总金额")
private BigDecimal amount;
@ApiModelProperty(name = "结款状态")
private String paymentStatus;
@ApiModelProperty(name = "支付方式")
private String payWay;
@ApiModelProperty(name = "操作人")
private String operatorName;
@ApiModelProperty(name = "备注")
private String remark;
}

View File

@ -2,6 +2,8 @@ package com.ruoyi.xkt.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.xkt.domain.StoreSale;
import com.ruoyi.xkt.dto.storeSale.StoreSalePageDTO;
import com.ruoyi.xkt.dto.storeSale.StoreSalePageResDTO;
import java.util.List;
@ -59,4 +61,7 @@ public interface StoreSaleMapper extends BaseMapper<StoreSale> {
* @return
*/
public int deleteStoreSaleByStoreSaleIds(Long[] storeSaleIds);
List<StoreSalePageResDTO> selectPage(StoreSalePageDTO pageDTO);
}

View File

@ -1,8 +1,11 @@
package com.ruoyi.xkt.service;
import com.ruoyi.common.core.page.Page;
import com.ruoyi.xkt.domain.StoreSale;
import com.ruoyi.xkt.dto.storeCustomer.StoreCusGeneralSaleDTO;
import com.ruoyi.xkt.dto.storeSale.StoreSaleDTO;
import com.ruoyi.xkt.dto.storeSale.StoreSalePageDTO;
import com.ruoyi.xkt.dto.storeSale.StoreSalePageResDTO;
import java.util.List;
@ -40,10 +43,10 @@ public interface IStoreSaleService {
/**
*
*
* @param storeSale
* @param storeSaleDTO
* @return
*/
public int updateStoreSale(StoreSale storeSale);
public int updateStoreSale(StoreSaleDTO storeSaleDTO);
/**
*
@ -70,4 +73,11 @@ public interface IStoreSaleService {
*/
StoreCusGeneralSaleDTO getCusGeneralSale(Integer days, Long storeId, Long storeCusId);
/**
*
* @param pageDTO
* @return Page
*/
Page<StoreSalePageResDTO> page(StoreSalePageDTO pageDTO);
}

View File

@ -132,7 +132,7 @@ public class StoreProductServiceImpl implements IStoreProductService {
List<StoreProdPageResDTO> prodList = storeProdColorMapper.selectStoreProdColorPage(pageDTO);
// 如果查询结果为空,则直接返回空列表
if (CollectionUtils.isEmpty(prodList)) {
return Page.empty();
return Page.empty(pageDTO.getPageSize(), pageDTO.getPageNum());
}
// 提取查询结果中的商店产品ID列表
List<Long> storeProdIdList = prodList.stream().map(StoreProdPageResDTO::getStoreProdId).collect(Collectors.toList());

View File

@ -2,7 +2,10 @@ package com.ruoyi.xkt.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.ruoyi.common.constant.HttpStatus;
import com.ruoyi.common.core.page.Page;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.xkt.domain.StoreCustomer;
@ -10,6 +13,8 @@ import com.ruoyi.xkt.domain.StoreSale;
import com.ruoyi.xkt.domain.StoreSaleDetail;
import com.ruoyi.xkt.dto.storeCustomer.StoreCusGeneralSaleDTO;
import com.ruoyi.xkt.dto.storeSale.StoreSaleDTO;
import com.ruoyi.xkt.dto.storeSale.StoreSalePageDTO;
import com.ruoyi.xkt.dto.storeSale.StoreSalePageResDTO;
import com.ruoyi.xkt.mapper.StoreCustomerMapper;
import com.ruoyi.xkt.mapper.StoreSaleDetailMapper;
import com.ruoyi.xkt.mapper.StoreSaleMapper;
@ -48,8 +53,8 @@ public class StoreSaleServiceImpl implements IStoreSaleService {
/**
*
*
* @param days diff
* @param storeId ID
* @param days diff
* @param storeId ID
* @param storeCusId ID
* @return StoreCusGeneralSaleDTO
*/
@ -85,6 +90,20 @@ public class StoreSaleServiceImpl implements IStoreSaleService {
return generalSaleDTO.setSaleAmount(saleAmount).setSaleCount(saleCount).setDebtAmount(debtAmount);
}
/**
*
*
* @param pageDTO
* @return Page<StoreSalePageResDTO>
*/
@Override
@Transactional(readOnly = true)
public Page<StoreSalePageResDTO> page(StoreSalePageDTO pageDTO) {
PageHelper.startPage(pageDTO.getPageNum(), pageDTO.getPageSize());
List<StoreSalePageResDTO> list = storeSaleMapper.selectPage(pageDTO);
return Page.convert(new PageInfo<>(list));
}
/**
*
*
@ -107,54 +126,6 @@ public class StoreSaleServiceImpl implements IStoreSaleService {
}
/**
*
*
@ -181,12 +152,19 @@ public class StoreSaleServiceImpl implements IStoreSaleService {
/**
*
*
* @param storeSale
* @param storeSaleDTO
* @return
*/
@Override
@Transactional
public int updateStoreSale(StoreSale storeSale) {
public int updateStoreSale(StoreSaleDTO storeSaleDTO) {
StoreSale storeSale = Optional.ofNullable(this.storeSaleMapper.selectOne(new LambdaQueryWrapper<StoreSale>()
.eq(StoreSale::getId, storeSaleDTO.getStoreSaleId()).eq(StoreSale::getDelFlag, "0")))
.orElseThrow(() -> new ServiceException("档口销售出库订单不存在!", HttpStatus.ERROR));
// 若为返单,则将之前数据记录到返单记录表中
if (Objects.equals(storeSaleDTO.getRefund(), Boolean.TRUE)) {
}
storeSale.setUpdateTime(DateUtils.getNowDate());
return storeSaleMapper.updateStoreSale(storeSale);
}

View File

@ -117,4 +117,24 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
#{id}
</foreach>
</delete>
<select id="selectPage" parameterType="com.ruoyi.xkt.dto.storeSale.StoreSalePageDTO" resultType="com.ruoyi.xkt.dto.storeSale.StoreSalePageResDTO">
SELECT
ss.id AS storeSaleId, ss.store_id, ss.`code`, ss.store_cus_name AS cusName, ss.create_time, ss.sale_type, ss.quantity, ss.amount, ss.payment_status,
ss.pay_way, ss.operator_name, ss.remark
FROM
store_sale ss
<if test="prodArtNum != null and prodArtNum != ''"> join store_sale_detail ssd on ss.id = ssd.store_sale_id</if>
WHERE
ss.del_flag = 0 AND ss.store_id = #{storeId}
<if test="prodArtNum != null and prodArtNum != ''"> and ssd.prod_art_num like concat('%', #{prodArtNum}, '%')</if>
<if test="cusName != null and cusName != ''"> and ss.store_cus_name like concat('%', #{cusName}, '%')</if>
<if test="saleType != null and saleType != ''"> and ss.sale_type = #{saleType}</if>
<if test="paymentStatus != null and paymentStatus != ''"> and ss.payment_status = #{paymentStatus}</if>
<if test="payWay != null and payWay != ''"> and ss.pay_way = #{payWay}</if>
<if test="createTimeStart != null"> and ss.voucher_date &gt;= #{createTimeStart}</if>
<if test="createTimeEnd != null"> and ss.voucher_date &lt;= #{createTimeEnd}</if>
</select>
</mapper>