Browse Source

BUG修改。从此部署的正式。

cangku
wangfukang 2 years ago
parent
commit
4b715b1969
  1. 11
      hiver-admin/src/main/resources/application.yml
  2. 16
      hiver-admin/test-output/test-report.html
  3. 27
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/bill/service/impl/BillServiceImpl.java
  4. 4
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/bill/vo/CustomerBillDataVo.java
  5. 2
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/common/constant/StockLogConstant.java
  6. 3
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/ProductAttributeController.java
  7. 1
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/ReturnSaleController.java
  8. 43
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/SaleController.java
  9. 3
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/SupplierControlller.java
  10. 8
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/dao/mapper/DealingsRecordMapper.java
  11. 3
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/dao/mapper/ReturnDetailMapper.java
  12. 1
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/dao/mapper/ReturnSaleMapper.java
  13. 6
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/dao/mapper/SaleMapper.java
  14. 2
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/dao/mapper/StockMapper.java
  15. 3
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/entity/ReturnSale.java
  16. 5
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/entity/Sale.java
  17. 3
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/pojo/dto/ReturnSaleDetailDTO.java
  18. 5
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/pojo/vo/ReturnSaleVo.java
  19. 3
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/pojo/vo/ReturnTotalAmountDetailVo.java
  20. 25
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/pojo/vo/SaleVO.java
  21. 8
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/purchaseocr/service/impl/PurchaseOcrPictureServiceImpl.java
  22. 16
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/service/mybatis/DealingsRecordService.java
  23. 3
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/service/mybatis/ProductAttributeService.java
  24. 2
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/service/mybatis/SaleService.java
  25. 9
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/service/mybatis/StockService.java
  26. 1
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/SalesAndDetailsServiceImpl.java
  27. 3
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/StockAndLogServiceImpl.java
  28. 18
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/mybatis/CustomerServiceImpl.java
  29. 9
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/mybatis/DealingsRecordServiceImpl.java
  30. 16
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/mybatis/ProductAttributeServiceImpl.java
  31. 5
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/mybatis/PurchaseServiceImpl.java
  32. 9
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/mybatis/ReturnSaleServiceImpl.java
  33. 5
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/mybatis/SaleDetailServiceImpl.java
  34. 34
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/mybatis/SaleServiceImpl.java
  35. 18
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/mybatis/StockServiceImpl.java
  36. 38
      hiver-modules/hiver-mall/src/main/resources/mapper/DealingsRecordMapper.xml
  37. 33
      hiver-modules/hiver-mall/src/main/resources/mapper/PurchaseMapper.xml
  38. 8
      hiver-modules/hiver-mall/src/main/resources/mapper/ReturnDetailMapper.xml
  39. 44
      hiver-modules/hiver-mall/src/main/resources/mapper/ReturnSaleMapper.xml
  40. 66
      hiver-modules/hiver-mall/src/main/resources/mapper/SaleMapper.xml
  41. 8
      hiver-modules/hiver-mall/src/main/resources/mapper/StockMapper.xml

11
hiver-admin/src/main/resources/application.yml

@ -25,8 +25,8 @@ spring:
timeout-per-shutdown-phase: 10S timeout-per-shutdown-phase: 10S
# 数据源 # 数据源
datasource: datasource:
url: jdbc:mysql://154.8.162.157:3306/hiver_shop?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8&allowPublicKeyRetrieval=true&allowMultiQueries=true # url: jdbc:mysql://154.8.162.157:3306/hiver_shop?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8&allowPublicKeyRetrieval=true&allowMultiQueries=true
# url: jdbc:mysql://8.140.198.243:3306/hiver_shop?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8&allowPublicKeyRetrieval=true&allowMultiQueries=true url: jdbc:mysql://8.140.198.243:3306/hiver_shop?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8&allowPublicKeyRetrieval=true&allowMultiQueries=true
username: reddoor username: reddoor
# Jasypt加密 可到common-utils中找到JasyptUtil加解密工具类生成加密结果 格式为ENC(加密结果) 以下解密结果为123456 # Jasypt加密 可到common-utils中找到JasyptUtil加解密工具类生成加密结果 格式为ENC(加密结果) 以下解密结果为123456
password: ENC(Zla4U4+yRLPhicvuX2TmiEgxEpzP4dk8BHzFDEtiEhwLQIIaftZrrEUJZce6efoe) password: ENC(Zla4U4+yRLPhicvuX2TmiEgxEpzP4dk8BHzFDEtiEhwLQIIaftZrrEUJZce6efoe)
@ -67,8 +67,8 @@ spring:
ddl-auto: update ddl-auto: update
# Redis 若设有密码自行添加配置password # Redis 若设有密码自行添加配置password
redis: redis:
host: 154.8.162.157 # host: 154.8.162.157
# host: 8.140.198.243 host: 8.140.198.243
password: reddoor168 password: reddoor168
# 数据库索引 默认0 # 数据库索引 默认0
database: 1 database: 1
@ -325,6 +325,9 @@ ignored:
- /hiver/app/return/getReturnSaleListByUserId - /hiver/app/return/getReturnSaleListByUserId
# 根据客户id分页获取销售历史(按销售单) # 根据客户id分页获取销售历史(按销售单)
- /hiver/app/sale/listPages - /hiver/app/sale/listPages
- /hiver/app/sale/get/**
- /hiver/app/return/list
- /hiver/app/return/get/**
# # 临时增加 # # 临时增加
# 限流及黑名单不拦截的路径 # 限流及黑名单不拦截的路径

16
hiver-admin/test-output/test-report.html

@ -35,7 +35,7 @@
<a href="#"><span class="badge badge-primary">Hiver</span></a> <a href="#"><span class="badge badge-primary">Hiver</span></a>
</li> </li>
<li class="m-r-10"> <li class="m-r-10">
<a href="#"><span class="badge badge-primary">七月 01, 2024 00:15:38</span></a> <a href="#"><span class="badge badge-primary">七月 07, 2024 14:20:12</span></a>
</li> </li>
</ul> </ul>
</div> </div>
@ -84,7 +84,7 @@
<div class="test-detail"> <div class="test-detail">
<span class="meta text-white badge badge-sm"></span> <span class="meta text-white badge badge-sm"></span>
<p class="name">passTest</p> <p class="name">passTest</p>
<p class="text-sm"><span>00:15:38 上</span> / <span>0.018 secs</span></p> <p class="text-sm"><span>14:20:12 下</span> / <span>0.015 secs</span></p>
</div> </div>
<div class="test-contents d-none"> <div class="test-contents d-none">
<div class="detail-head"> <div class="detail-head">
@ -92,9 +92,9 @@
<div class="info"> <div class="info">
<div class='float-right'><span class='badge badge-default'>#test-id=1</span></div> <div class='float-right'><span class='badge badge-default'>#test-id=1</span></div>
<h5 class="test-status text-pass">passTest</h5> <h5 class="test-status text-pass">passTest</h5>
<span class='badge badge-success'>07.01.2024 00:15:38</span> <span class='badge badge-success'>07.07.2024 14:20:12</span>
<span class='badge badge-danger'>07.01.2024 00:15:38</span> <span class='badge badge-danger'>07.07.2024 14:20:13</span>
<span class='badge badge-default'>0.018 secs</span> <span class='badge badge-default'>0.015 secs</span>
</div> </div>
<div class="m-t-10 m-l-5"></div> <div class="m-t-10 m-l-5"></div>
</div> </div>
@ -104,7 +104,7 @@
<tbody> <tbody>
<tr class="event-row"> <tr class="event-row">
<td><span class="badge log pass-bg">Pass</span></td> <td><span class="badge log pass-bg">Pass</span></td>
<td>0:15:38</td> <td>14:20:13</td>
<td> <td>
Test passed Test passed
</td> </td>
@ -128,13 +128,13 @@
<div class="col-md-3"> <div class="col-md-3">
<div class="card"><div class="card-body"> <div class="card"><div class="card-body">
<p class="m-b-0">Started</p> <p class="m-b-0">Started</p>
<h3>七月 01, 2024 00:15:38</h3> <h3>七月 07, 2024 14:20:12</h3>
</div></div> </div></div>
</div> </div>
<div class="col-md-3"> <div class="col-md-3">
<div class="card"><div class="card-body"> <div class="card"><div class="card-body">
<p class="m-b-0">Ended</p> <p class="m-b-0">Ended</p>
<h3>七月 01, 2024 00:15:38</h3> <h3>七月 07, 2024 14:20:13</h3>
</div></div> </div></div>
</div> </div>
<div class="col-md-3"> <div class="col-md-3">

27
hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/bill/service/impl/BillServiceImpl.java

@ -1,5 +1,6 @@
package cc.hiver.mall.bill.service.impl; package cc.hiver.mall.bill.service.impl;
import cc.hiver.core.common.utils.StringUtils;
import cc.hiver.mall.bill.service.BillService; import cc.hiver.mall.bill.service.BillService;
import cc.hiver.mall.bill.vo.*; import cc.hiver.mall.bill.vo.*;
import cc.hiver.mall.entity.Customer; import cc.hiver.mall.entity.Customer;
@ -32,6 +33,9 @@ public class BillServiceImpl implements BillService {
@Autowired @Autowired
private ReturnDetailService returnDetailService; private ReturnDetailService returnDetailService;
@Autowired
private DealingsRecordService dealingsRecordService;
/** /**
* 获取客户对账单 * 获取客户对账单
* *
@ -42,6 +46,13 @@ public class BillServiceImpl implements BillService {
*/ */
@Override @Override
public CustomerBillDataVo getCustomerBill(CustomerBillQueryVo customerBillQueryVo) { public CustomerBillDataVo getCustomerBill(CustomerBillQueryVo customerBillQueryVo) {
//结束时间+1天
if (StringUtils.isNotEmpty(customerBillQueryVo.getEndDate())) {
final String endDate = DateUtil.addDay(customerBillQueryVo.getEndDate(), 1);
customerBillQueryVo.setEndDate(endDate);
}
final CustomerBillDataVo customerBillDataVo = new CustomerBillDataVo(); final CustomerBillDataVo customerBillDataVo = new CustomerBillDataVo();
customerBillDataVo.setUserId(customerBillQueryVo.getCustomerId()); customerBillDataVo.setUserId(customerBillQueryVo.getCustomerId());
// 获取客户信息 // 获取客户信息
@ -60,15 +71,17 @@ public class BillServiceImpl implements BillService {
if (returnSaleArrearsVo != null) { if (returnSaleArrearsVo != null) {
customerBillDataVo.setTotalReturn(returnSaleArrearsVo.getTotalReturn()); customerBillDataVo.setTotalReturn(returnSaleArrearsVo.getTotalReturn());
} }
// 获取退货总金额 // 根据客户id及日期范围对账单明细
final Page<CustomerBillSaleVo> dealingRecordPage = dealingsRecordService.getDealingsRecordPageByUserId(customerBillQueryVo);
final List<CustomerBillSaleVo> records = dealingRecordPage.getRecords();
// 根据客户id及日期范围分页查询订单
final Page<CustomerBillSaleVo> salePage = saleService.getCustomerBill(customerBillQueryVo);
final List<CustomerBillSaleVo> records = salePage.getRecords();
// 获取saleId,去查询销售单的商品明细,及退货单的商品明细 // 获取saleId,去查询销售单的商品明细,及退货单的商品明细
final List<String> saleIdList = new ArrayList<>(); final List<String> saleIdList = new ArrayList<>();
for (int i = 0; i < records.size(); i++) { for (int i = 0; i < records.size(); i++) {
saleIdList.add(records.get(i).getSaleId()); if(StringUtils.isNotEmpty(records.get(i).getSaleId())){
saleIdList.add(records.get(i).getSaleId());
}
// 根据时间升序查询的,这里获取第一个的初期欠款当做本次查询的初期欠款 // 根据时间升序查询的,这里获取第一个的初期欠款当做本次查询的初期欠款
if (i == 0) { if (i == 0) {
final BigDecimal lastDebtAmount = records.get(0).getLastDebtAmount(); final BigDecimal lastDebtAmount = records.get(0).getLastDebtAmount();
@ -203,8 +216,8 @@ public class BillServiceImpl implements BillService {
} }
} }
} }
// 将销售信息存放到对账单中
customerBillDataVo.setCustomerBillSaleVos(records); customerBillDataVo.setCustomerBillSaleVos(dealingRecordPage);
return customerBillDataVo; return customerBillDataVo;
} }
} }

4
hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/bill/vo/CustomerBillDataVo.java

@ -1,10 +1,10 @@
package cc.hiver.mall.bill.vo; package cc.hiver.mall.bill.vo;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.List;
/** /**
* 对账单信息 * 对账单信息
@ -39,6 +39,6 @@ public class CustomerBillDataVo {
private BigDecimal totalReturn; private BigDecimal totalReturn;
@ApiModelProperty(value = "销售单明细") @ApiModelProperty(value = "销售单明细")
private List<CustomerBillSaleVo> customerBillSaleVos; private Page<CustomerBillSaleVo> customerBillSaleVos;
} }

2
hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/common/constant/StockLogConstant.java

@ -10,6 +10,6 @@ public interface StockLogConstant {
/** /**
* 出入库类型0-入库1-出库 * 出入库类型0-入库1-出库
*/ */
Integer[] CHANGE_TYPE = {0,1}; String[] CHANGE_TYPE = {"0","1"};
} }

3
hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/ProductAttributeController.java

@ -5,6 +5,7 @@ import cc.hiver.core.common.utils.ResultUtil;
import cc.hiver.core.common.vo.Result; import cc.hiver.core.common.vo.Result;
import cc.hiver.mall.entity.ProductAttribute; import cc.hiver.mall.entity.ProductAttribute;
import cc.hiver.mall.service.mybatis.ProductAttributeService; import cc.hiver.mall.service.mybatis.ProductAttributeService;
import cn.hutool.json.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
@ -90,7 +91,7 @@ public class ProductAttributeController {
@ApiOperation(value = "根据分类id查询货品属性列表") @ApiOperation(value = "根据分类id查询货品属性列表")
@RateLimiter(name = "selectAttributeAndValueByCategoryId", ipLimit = true) @RateLimiter(name = "selectAttributeAndValueByCategoryId", ipLimit = true)
public Result selectAttributeAndValueByCategoryId(String categoryId) { public Result selectAttributeAndValueByCategoryId(String categoryId) {
String attributeList = productAttributeService.selectAttributeAndValueByCategoryId(categoryId); JSONObject attributeList = productAttributeService.selectAttributeAndValueByCategoryId(categoryId);
return ResultUtil.data(attributeList); return ResultUtil.data(attributeList);
} }
} }

1
hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/ReturnSaleController.java

@ -267,6 +267,7 @@ public class ReturnSaleController {
returnSaleDetailDTO.setDiscount(returnDetail.getDiscount()); returnSaleDetailDTO.setDiscount(returnDetail.getDiscount());
returnSaleDetailDTO.setDiscountAmount(returnDetail.getDiscountAmount()); returnSaleDetailDTO.setDiscountAmount(returnDetail.getDiscountAmount());
returnSaleDetailDTO.setRealPrice(returnDetail.getRealPrice()); returnSaleDetailDTO.setRealPrice(returnDetail.getRealPrice());
returnSaleDetailDTO.setDetailId(returnDetail.getId());
final List<SaleDetailQueryDTO> saleDetailQueryDTOS = new ArrayList<>(); final List<SaleDetailQueryDTO> saleDetailQueryDTOS = new ArrayList<>();
final SaleDetailQueryDTO saleDetailQueryDTO = new SaleDetailQueryDTO(); final SaleDetailQueryDTO saleDetailQueryDTO = new SaleDetailQueryDTO();
saleDetailQueryDTO.setAttributeList(returnDetail.getAttributeList()); saleDetailQueryDTO.setAttributeList(returnDetail.getAttributeList());

43
hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/SaleController.java

@ -16,6 +16,7 @@ import cc.hiver.core.service.LogiticsCompanyService;
import cc.hiver.core.service.WorkerService; import cc.hiver.core.service.WorkerService;
import cc.hiver.core.vo.WorkerQueryVO; import cc.hiver.core.vo.WorkerQueryVO;
import cc.hiver.mall.common.constant.OrderConstant; import cc.hiver.mall.common.constant.OrderConstant;
import cc.hiver.mall.debt.entity.Debt;
import cc.hiver.mall.debt.service.DebtService; import cc.hiver.mall.debt.service.DebtService;
import cc.hiver.mall.entity.*; import cc.hiver.mall.entity.*;
import cc.hiver.mall.pojo.dto.*; import cc.hiver.mall.pojo.dto.*;
@ -144,8 +145,13 @@ public class SaleController {
final Shop shop = shopService.get(shopId); final Shop shop = shopService.get(shopId);
saleQueryDTO.getSale().setShopId(shopId); saleQueryDTO.getSale().setShopId(shopId);
saleQueryDTO.getSale().setShopName(shop.getShopName()); saleQueryDTO.getSale().setShopName(shop.getShopName());
// 根据该客户的欠款信息
String userId = saleQueryDTO.getSale().getUserId();
Debt debt = debtService.selectByUserId(userId);
BigDecimal amountOwed = debt.getAmountOwed();
// 20240616 开单可能值包含退货单 // 20240616 开单可能值包含退货单
Sale sale = saleQueryDTO.getSale(); Sale sale = saleQueryDTO.getSale();
sale.setLastDebtAmount(amountOwed);
// 处理销售商品信息 // 处理销售商品信息
if (saleQueryDTO.getSaleDetailList() != null && !saleQueryDTO.getSaleDetailList().isEmpty()) { if (saleQueryDTO.getSaleDetailList() != null && !saleQueryDTO.getSaleDetailList().isEmpty()) {
// 1. 处理商品信息,新商品进行新商品的新增,分类及规格的新增,分类库的新增,子图的新增 // 1. 处理商品信息,新商品进行新商品的新增,分类及规格的新增,分类库的新增,子图的新增
@ -213,7 +219,37 @@ public class SaleController {
final ReturnSale returnSale = salesAndDetailsService.handleBackSalesDetails(saleReturnDTO); final ReturnSale returnSale = salesAndDetailsService.handleBackSalesDetails(saleReturnDTO);
// 如确认退货 // 如确认退货
//扣减库存 //扣减库存
stockAndLogService.handleRetIncStockLog(saleReturnDTO.getReturnSaleDetailList()); final List<String> returnSaleId = new ArrayList<>();
returnSaleId.add(returnSale.getId());
final List<ReturnDetail> returnDetails = returnDetailService.getReturnDetailsByReturnId(returnSaleId);
final List<ReturnSaleDetailDTO> returnSaleDetailDTOList = new ArrayList<>();
for (ReturnDetail returnDetail : returnDetails) {
final ReturnSaleDetailDTO returnSaleDetailDTO = new ReturnSaleDetailDTO();
returnSaleDetailDTO.setSaleId(returnDetail.getSaleId());
returnSaleDetailDTO.setReturnSaleId(returnDetail.getReturnSaleId());
returnSaleDetailDTO.setProductId(returnDetail.getProductId());
returnSaleDetailDTO.setProductName(returnDetail.getProductName());
returnSaleDetailDTO.setUnit(returnDetail.getUnit());
returnSaleDetailDTO.setShopId(returnDetail.getShopId());
returnSaleDetailDTO.setCategoryId(returnDetail.getCategoryId());
returnSaleDetailDTO.setAttributeList(returnDetail.getAttributeList());
returnSaleDetailDTO.setPrice(returnDetail.getPrice());
returnSaleDetailDTO.setPurchasePrice(returnDetail.getPurchasePrice());
returnSaleDetailDTO.setWholesalePrice(returnDetail.getWholesalePrice());
returnSaleDetailDTO.setProductCount(returnDetail.getProductCount());
returnSaleDetailDTO.setDiscount(returnDetail.getDiscount());
returnSaleDetailDTO.setDiscountAmount(returnDetail.getDiscountAmount());
returnSaleDetailDTO.setRealPrice(returnDetail.getRealPrice());
returnSaleDetailDTO.setDetailId(returnDetail.getId());
final List<SaleDetailQueryDTO> saleDetailQueryDTOS = new ArrayList<>();
final SaleDetailQueryDTO saleDetailQueryDTO = new SaleDetailQueryDTO();
saleDetailQueryDTO.setAttributeList(returnDetail.getAttributeList());
saleDetailQueryDTO.setProductCount(returnDetail.getProductCount());
saleDetailQueryDTOS.add(saleDetailQueryDTO);
returnSaleDetailDTO.setStockLogList1(saleDetailQueryDTOS);
returnSaleDetailDTOList.add(returnSaleDetailDTO);
}
stockAndLogService.handleRetIncStockLog(returnSaleDetailDTOList);
// 更新退货单机销售单的状态为已完成 // 更新退货单机销售单的状态为已完成
returnSale.setUpdateTime(new Date()); returnSale.setUpdateTime(new Date());
returnSale.setStatus(SaleConstant.SALE_STATUS[4]); returnSale.setStatus(SaleConstant.SALE_STATUS[4]);
@ -226,9 +262,9 @@ public class SaleController {
final BigDecimal debtDeductionAmount = saleQueryDTO.getSale().getDebtDeductionAmount(); final BigDecimal debtDeductionAmount = saleQueryDTO.getSale().getDebtDeductionAmount();
// 余额抵扣金额 // 余额抵扣金额
final BigDecimal balanceDeductionAmount = saleQueryDTO.getSale().getBalanceDeductionAmount(); final BigDecimal balanceDeductionAmount = saleQueryDTO.getSale().getBalanceDeductionAmount();
if (noEarn.compareTo(BigDecimal.ZERO) != 0 || debtDeductionAmount.compareTo(BigDecimal.ZERO) != 0 || balanceDeductionAmount.compareTo(BigDecimal.ZERO) != 0) { // if (noEarn.compareTo(BigDecimal.ZERO) != 0 || debtDeductionAmount.compareTo(BigDecimal.ZERO) != 0 || balanceDeductionAmount.compareTo(BigDecimal.ZERO) != 0) {
debtService.saleToDebt(saleQueryDTO); debtService.saleToDebt(saleQueryDTO);
} // }
return new ResultUtil<>().setData(sale.getId(), "下单成功"); return new ResultUtil<>().setData(sale.getId(), "下单成功");
} catch (Exception e) { } catch (Exception e) {
log.error(e.getMessage(), e); log.error(e.getMessage(), e);
@ -903,6 +939,7 @@ public class SaleController {
returnSaleDetailDTO.setDiscount(saleDetail.getDiscount()); returnSaleDetailDTO.setDiscount(saleDetail.getDiscount());
returnSaleDetailDTO.setDiscountAmount(saleDetail.getDiscountAmount()); returnSaleDetailDTO.setDiscountAmount(saleDetail.getDiscountAmount());
returnSaleDetailDTO.setRealPrice(saleDetail.getRealPrice()); returnSaleDetailDTO.setRealPrice(saleDetail.getRealPrice());
returnSaleDetailDTO.setDetailId(saleDetail.getId());
final SaleDetailQueryDTO saleDetailQueryDTO = new SaleDetailQueryDTO(); final SaleDetailQueryDTO saleDetailQueryDTO = new SaleDetailQueryDTO();
saleDetailQueryDTO.setAttributeList(saleDetail.getAttributeList()); saleDetailQueryDTO.setAttributeList(saleDetail.getAttributeList());
saleDetailQueryDTO.setProductCount(saleDetail.getProductCount()); saleDetailQueryDTO.setProductCount(saleDetail.getProductCount());

3
hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/SupplierControlller.java

@ -90,6 +90,9 @@ public class SupplierControlller {
final BigDecimal noEarn = entity.getNoEarn() == null ? BigDecimal.ZERO : entity.getNoEarn(); final BigDecimal noEarn = entity.getNoEarn() == null ? BigDecimal.ZERO : entity.getNoEarn();
final Debt debt = new Debt(); final Debt debt = new Debt();
debt.setUserId(supplier.getId()); debt.setUserId(supplier.getId());
debt.setShopId(shopId);
debt.setUserPhone(supplier.getConsigneeMobile());
debt.setUserAdress(supplier.getAddress());
debt.setUserName(supplier.getConsigneeName()); debt.setUserName(supplier.getConsigneeName());
debt.setAmountOwed(noEarn); debt.setAmountOwed(noEarn);
debt.setUserType(DebtConstant.USER_TYPE[1]); debt.setUserType(DebtConstant.USER_TYPE[1]);

8
hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/dao/mapper/DealingsRecordMapper.java

@ -1,7 +1,10 @@
package cc.hiver.mall.dao.mapper; package cc.hiver.mall.dao.mapper;
import cc.hiver.mall.bill.vo.CustomerBillQueryVo;
import cc.hiver.mall.bill.vo.CustomerBillSaleVo;
import cc.hiver.mall.entity.DealingsRecord; import cc.hiver.mall.entity.DealingsRecord;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
@ -27,9 +30,12 @@ public interface DealingsRecordMapper extends BaseMapper<DealingsRecord> {
/** /**
* 作废交易记录 * 作废交易记录
*
* @param saleId
* @author 王富康 * @author 王富康
* @date 2024/6/26 * @date 2024/6/26
* @param saleId
*/ */
void cancelRecord(@Param("saleId") String saleId); void cancelRecord(@Param("saleId") String saleId);
Page<CustomerBillSaleVo> getDealingsRecordPageByUserId(Page<CustomerBillSaleVo> page, @Param("customerBillQueryVo") CustomerBillQueryVo customerBillQueryVo);
} }

3
hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/dao/mapper/ReturnDetailMapper.java

@ -1,5 +1,6 @@
package cc.hiver.mall.dao.mapper; package cc.hiver.mall.dao.mapper;
import cc.hiver.mall.entity.PurchaseDetail;
import cc.hiver.mall.entity.ReturnDetail; import cc.hiver.mall.entity.ReturnDetail;
import cc.hiver.mall.entity.ReturnDetailExample; import cc.hiver.mall.entity.ReturnDetailExample;
import cc.hiver.mall.pojo.query.ReturnSalePageQuery; import cc.hiver.mall.pojo.query.ReturnSalePageQuery;
@ -46,4 +47,6 @@ public interface ReturnDetailMapper extends BaseMapper<ReturnDetail> {
List<ReturnDetail> getReturnDetailsByProductId(@Param("returnSalePageQuery") ReturnSalePageQuery returnSalePageQuery); List<ReturnDetail> getReturnDetailsByProductId(@Param("returnSalePageQuery") ReturnSalePageQuery returnSalePageQuery);
List<ReturnDetail> getReturnDetailsByReturnId(@Param("returnSaleIdList") List<String> returnSaleIdList); List<ReturnDetail> getReturnDetailsByReturnId(@Param("returnSaleIdList") List<String> returnSaleIdList);
void putInUpdatePurchasePrice(@Param("purchaseDetails") List<PurchaseDetail> purchaseDetails);
} }

1
hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/dao/mapper/ReturnSaleMapper.java

@ -80,4 +80,5 @@ public interface ReturnSaleMapper extends BaseMapper<ReturnSale> {
* @date 2024/6/30 * @date 2024/6/30
*/ */
Page<ReturnSaleVo> getReturnSaleListByUserId(Page<ReturnSaleVo> page, @Param("returnSalePageQuery") ReturnSalePageQuery returnSalePageQuery); Page<ReturnSaleVo> getReturnSaleListByUserId(Page<ReturnSaleVo> page, @Param("returnSalePageQuery") ReturnSalePageQuery returnSalePageQuery);
} }

6
hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/dao/mapper/SaleMapper.java

@ -63,9 +63,9 @@ public interface SaleMapper extends BaseMapper<Sale> {
Page<Sale> queryPage(Page<Sale> page, @Param("saleVO") SaleVO saleVO); Page<Sale> queryPage(Page<Sale> page, @Param("saleVO") SaleVO saleVO);
Page<CustomerBuyProductLogVo> getCustomerBuyProductLog(Page<CustomerBuyProductLogVo> page, @Param("userId") String userId, @Param("shopId") String shopId); Page<CustomerBuyProductLogVo> getCustomerBuyProductLog(Page<CustomerBuyProductLogVo> page, @Param("salePageQuery") SalePageQuery salePageQuery);
List<CustomerBuyProductDetailLogVo> getCustomerBuyProductLogDetailLog(@Param("userId") String userId, @Param("shopId") String shopId, @Param("productIds") List<String> productIds); List<CustomerBuyProductDetailLogVo> getCustomerBuyProductLogDetailLog(@Param("userId") String userId, @Param("shopId") String shopId, @Param("productIds") List<String> productIds,@Param("startTime") String startTime, @Param("endTime") String endTime);
BigDecimal queryTotalAlreadyEarn(@Param("shopId") String shopId, @Param("startTime") String startTime, @Param("endTime") String endTime); BigDecimal queryTotalAlreadyEarn(@Param("shopId") String shopId, @Param("startTime") String startTime, @Param("endTime") String endTime);
@ -88,7 +88,7 @@ public interface SaleMapper extends BaseMapper<Sale> {
List<TotalAlreadyEarnDetailVo> queryTotalAlreadyEarnDetail(@Param("shopId") String shopId,@Param("startTime") String startTime,@Param("endTime") String endTime); List<TotalAlreadyEarnDetailVo> queryTotalAlreadyEarnDetail(@Param("shopId") String shopId,@Param("startTime") String startTime,@Param("endTime") String endTime);
Page<CustomerBillSaleVo> getCustomerBill(Page<CustomerBillSaleVo> page,@Param("customerBillQueryVo") CustomerBillQueryVo customerBillQueryVo); List<CustomerBillSaleVo> getCustomerBill(@Param("customerBillQueryVo") CustomerBillQueryVo customerBillQueryVo);
ArrearsVo getArrearsAndTotalSale( @Param("customerBillQueryVo") CustomerBillQueryVo customerBillQueryVo); ArrearsVo getArrearsAndTotalSale( @Param("customerBillQueryVo") CustomerBillQueryVo customerBillQueryVo);

2
hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/dao/mapper/StockMapper.java

@ -49,4 +49,6 @@ public interface StockMapper extends BaseMapper<Stock> {
void putInUpdatePurchasePrice(@Param("purchaseDetails") List<PurchaseDetail> purchaseDetails); void putInUpdatePurchasePrice(@Param("purchaseDetails") List<PurchaseDetail> purchaseDetails);
Stock getByProductIdAndAttributeList(@Param("productId") String productId, @Param("attributeList") String attributeList); Stock getByProductIdAndAttributeList(@Param("productId") String productId, @Param("attributeList") String attributeList);
List<Stock> getProductStockByAttrId(@Param("attrId") String attrId);
} }

3
hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/entity/ReturnSale.java

@ -24,6 +24,9 @@ public class ReturnSale extends HiverBaseEntity {
private String saleId; private String saleId;
@ApiModelProperty(value = "操作人姓名")
private String createByName;
@ApiModelProperty(value = "客户ID") @ApiModelProperty(value = "客户ID")
private String userId; private String userId;

5
hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/entity/Sale.java

@ -177,6 +177,11 @@ public class Sale implements Serializable {
@ApiModelProperty(value="余额抵扣金额") @ApiModelProperty(value="余额抵扣金额")
private BigDecimal balanceDeductionAmount; private BigDecimal balanceDeductionAmount;
@Transient
@TableField(exist = false)
@ApiModelProperty(value = "上次欠款")
private BigDecimal lastDebtAmount;
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;

3
hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/pojo/dto/ReturnSaleDetailDTO.java

@ -12,6 +12,9 @@ import java.util.List;
@Data @Data
public class ReturnSaleDetailDTO implements Serializable { public class ReturnSaleDetailDTO implements Serializable {
@ApiModelProperty(value = "详情id")
private String detailId;
@ApiModelProperty(value = "原销售单ID") @ApiModelProperty(value = "原销售单ID")
private String saleId; private String saleId;

5
hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/pojo/vo/ReturnSaleVo.java

@ -21,6 +21,8 @@ public class ReturnSaleVo extends HiverBasePageQuery implements Serializable {
private String createBy; private String createBy;
private String createByName;
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
private Date createTime; private Date createTime;
@ -34,6 +36,9 @@ public class ReturnSaleVo extends HiverBasePageQuery implements Serializable {
@ApiModelProperty(value = "客户ID") @ApiModelProperty(value = "客户ID")
private String userId; private String userId;
@ApiModelProperty(value = "客户名称")
private String userName;
@ApiModelProperty(value = "店铺ID") @ApiModelProperty(value = "店铺ID")
private String shopId; private String shopId;

3
hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/pojo/vo/ReturnTotalAmountDetailVo.java

@ -13,6 +13,9 @@ public class ReturnTotalAmountDetailVo {
@ApiModelProperty(value = " 操作人") @ApiModelProperty(value = " 操作人")
private String createBy; private String createBy;
@ApiModelProperty(value = " 订单id")
private String saleId;
@ApiModelProperty(value = " 操作人") @ApiModelProperty(value = " 操作人")
private String createByName; private String createByName;

25
hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/pojo/vo/SaleVO.java

@ -47,4 +47,29 @@ public class SaleVO implements Serializable {
@ApiModelProperty(value = "查询条件") @ApiModelProperty(value = "查询条件")
String searchStr; String searchStr;
/**
* 订单状态开单
* 0待抢单
* 1待取货
* 2已作废
* 3待送达
* 4已完成
* 退货
* 5下游客户待退货
* 00退货待抢单
* 01退货待取货
* 02退货已作废
* 03退货待送达
* 04待确认退货
* 4已完成
*
* 分享页提交订单6待配货
* 挂单页提交订单7挂单
*/
@ApiModelProperty(value = "哪个列表:" +
"0:销售单:查询不是6待配货、7挂单的;" +
"1:统计、客户拿货:查询不是2已作废、6待配货、7挂单的;" +
"2:需要根据前台传递的status查询列表:6:待配货列表;7挂单列表")
private String fromWhere;
} }

8
hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/purchaseocr/service/impl/PurchaseOcrPictureServiceImpl.java

@ -252,12 +252,18 @@ public class PurchaseOcrPictureServiceImpl implements PurchaseOcrPictureService
purchaseDetail.setShopId(product.getShopId()); purchaseDetail.setShopId(product.getShopId());
purchaseDetail.setCategoryId(categoryId); purchaseDetail.setCategoryId(categoryId);
purchaseDetail.setPrice(product.getPrice()); purchaseDetail.setPrice(product.getPrice());
purchaseDetail.setPurchasePrice(price);
purchaseDetail.setWholesalePrice(product.getWholesalePrice()); purchaseDetail.setWholesalePrice(product.getWholesalePrice());
purchaseDetail.setProductPicture(product.getProductPicture()); purchaseDetail.setProductPicture(product.getProductPicture());
purchaseDetail.setProductSn(product.getProductSn()); purchaseDetail.setProductSn(product.getProductSn());
purchaseDetail.setProductCount(0); purchaseDetail.setProductCount(0);
purchaseDetail.setSupplierName(product.getSupplierName()); purchaseDetail.setSupplierName(product.getSupplierName());
// ai语音入库旧商品 如果通义千问返回的价格为0,返回当前采购价 ,采购价:purchasePrice
if (price.compareTo(BigDecimal.ZERO) == 0) {
purchaseDetail.setPurchasePrice(product.getPurchasePrice());
}else{
purchaseDetail.setPurchasePrice(price);
}
purchaseDetail.setAttrId(product.getAttrId());
final List<StockLog> stockLogList = new ArrayList<>(); final List<StockLog> stockLogList = new ArrayList<>();
// 获取商品分类及规格信息 // 获取商品分类及规格信息

16
hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/service/mybatis/DealingsRecordService.java

@ -1,6 +1,9 @@
package cc.hiver.mall.service.mybatis; package cc.hiver.mall.service.mybatis;
import cc.hiver.mall.bill.vo.CustomerBillQueryVo;
import cc.hiver.mall.bill.vo.CustomerBillSaleVo;
import cc.hiver.mall.entity.DealingsRecord; import cc.hiver.mall.entity.DealingsRecord;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import java.math.BigDecimal; import java.math.BigDecimal;
@ -23,9 +26,20 @@ public interface DealingsRecordService extends IService<DealingsRecord> {
/** /**
* 作废交易记录 * 作废交易记录
*
* @param saleId
* @author 王富康 * @author 王富康
* @date 2024/6/26 * @date 2024/6/26
* @param saleId
*/ */
void cancelRecord(String saleId); void cancelRecord(String saleId);
/**
* 对账单分页获取
*
* @param customerBillQueryVo
* @return Page<BillDealingsRecordVo>
* @author 王富康
* @date 2024/7/6
*/
Page<CustomerBillSaleVo> getDealingsRecordPageByUserId(CustomerBillQueryVo customerBillQueryVo);
} }

3
hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/service/mybatis/ProductAttributeService.java

@ -2,12 +2,13 @@ package cc.hiver.mall.service.mybatis;
import cc.hiver.mall.entity.ProductAttribute; import cc.hiver.mall.entity.ProductAttribute;
import cc.hiver.mall.pojo.vo.ProductAttributeOfAddVo; import cc.hiver.mall.pojo.vo.ProductAttributeOfAddVo;
import cn.hutool.json.JSONObject;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List; import java.util.List;
public interface ProductAttributeService extends IService<ProductAttribute> { public interface ProductAttributeService extends IService<ProductAttribute> {
String selectAttributeAndValueByCategoryId(String categoryId); JSONObject selectAttributeAndValueByCategoryId(String categoryId);
List<ProductAttributeOfAddVo> selectAttributeListByCategoryId(List<String> categoryId); List<ProductAttributeOfAddVo> selectAttributeListByCategoryId(List<String> categoryId);
void deleteByCategoryId(String attrId); void deleteByCategoryId(String attrId);

2
hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/service/mybatis/SaleService.java

@ -85,7 +85,7 @@ public interface SaleService extends IService<Sale> {
*/ */
void cancelSale(String id); void cancelSale(String id);
Page<CustomerBillSaleVo> getCustomerBill(CustomerBillQueryVo customerBillQueryVo); List<CustomerBillSaleVo> getCustomerBill(CustomerBillQueryVo customerBillQueryVo);
ArrearsVo getArrearsAndTotalSale(CustomerBillQueryVo customerBillQueryVo); ArrearsVo getArrearsAndTotalSale(CustomerBillQueryVo customerBillQueryVo);

9
hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/service/mybatis/StockService.java

@ -61,4 +61,13 @@ public interface StockService extends IService<Stock> {
List<Stock> getProductStock(List<String> productIds); List<Stock> getProductStock(List<String> productIds);
Stock getByProductIdAndAttributeList(String productId, String attributeList); Stock getByProductIdAndAttributeList(String productId, String attributeList);
/**
* 根据商品属性id获取商品的库存数
* @author 王富康
* @date 2024/7/6
* @param attrId
* @return List<Stock>
*/
List<Stock> getProductStockByAttrId(String attrId);
} }

1
hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/SalesAndDetailsServiceImpl.java

@ -318,6 +318,7 @@ public class SalesAndDetailsServiceImpl implements SalesAndDetailsService {
// 创建人 // 创建人
final User user = securityUtil.getCurrUser(); final User user = securityUtil.getCurrUser();
returnSale.setCreateBy(user.getId()); returnSale.setCreateBy(user.getId());
returnSale.setCreateByName(user.getNickname());
returnSale.setCreateTime(new Date()); returnSale.setCreateTime(new Date());
// 下游客户信息 // 下游客户信息
returnSale.setUserId(sale.getUserId()); returnSale.setUserId(sale.getUserId());

3
hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/StockAndLogServiceImpl.java

@ -160,6 +160,7 @@ public class StockAndLogServiceImpl implements StockAndLogService {
//出库 //出库
stockLog.setChangeType("1"); stockLog.setChangeType("1");
stockLog.setOrderId(saleId); stockLog.setOrderId(saleId);
stockLog.setDetailId(saleDetailDTO.getDetailId());
stockLog.setProductId(productId); stockLog.setProductId(productId);
stockLog.setAttributeList(saleDetailQueryDTO.getAttributeList()); stockLog.setAttributeList(saleDetailQueryDTO.getAttributeList());
stockLog.setStock(stockCount);//出库前数量 stockLog.setStock(stockCount);//出库前数量
@ -229,6 +230,7 @@ public class StockAndLogServiceImpl implements StockAndLogService {
stockLog.setPurchasePrice(saleDetailDTO.getPurchasePrice()); stockLog.setPurchasePrice(saleDetailDTO.getPurchasePrice());
stockLog.setWholesalePrice(saleDetailDTO.getWholesalePrice()); stockLog.setWholesalePrice(saleDetailDTO.getWholesalePrice());
stockLog.setShopId(shopId); stockLog.setShopId(shopId);
stockLog.setDetailId(saleDetailDTO.getDetailId());
stockLogService.save(stockLog); stockLogService.save(stockLog);
} else { } else {
final Integer stockCount = origin.getStockCount(); final Integer stockCount = origin.getStockCount();
@ -247,6 +249,7 @@ public class StockAndLogServiceImpl implements StockAndLogService {
stockLog.setPurchasePrice(saleDetailDTO.getPurchasePrice()); stockLog.setPurchasePrice(saleDetailDTO.getPurchasePrice());
stockLog.setWholesalePrice(saleDetailDTO.getWholesalePrice()); stockLog.setWholesalePrice(saleDetailDTO.getWholesalePrice());
stockLog.setShopId(shopId); stockLog.setShopId(shopId);
stockLog.setDetailId(saleDetailDTO.getDetailId());
stockLogService.save(stockLog); stockLogService.save(stockLog);
} }
} }

18
hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/mybatis/CustomerServiceImpl.java

@ -127,8 +127,13 @@ public class CustomerServiceImpl extends ServiceImpl<CustomerMapper, Customer> i
userRole.setUserId(saveUser.getId()); userRole.setUserId(saveUser.getId());
userRoleService.save(userRole); userRoleService.save(userRole);
} }
String shopId = securityUtil.getShopId();
// shopId从缓存中设置 // shopId从缓存中设置
final String shopId = securityUtil.getShopId(); if(StringUtils.isEmpty(customer.getShopId())){
shopId = securityUtil.getShopId();
}else{
shopId = customer.getShopId();
}
// 这里是后台管理系统启用时增加散客增加的这个操作 // 这里是后台管理系统启用时增加散客增加的这个操作
if (StringUtils.isEmpty(customer.getShopId())) { if (StringUtils.isEmpty(customer.getShopId())) {
// 如果没有传shopId,那么就去缓存中拿 // 如果没有传shopId,那么就去缓存中拿
@ -136,10 +141,12 @@ public class CustomerServiceImpl extends ServiceImpl<CustomerMapper, Customer> i
} }
customer.setDelFlag(CommonConstant.DEL_FLAG_FALSE); customer.setDelFlag(CommonConstant.DEL_FLAG_FALSE);
final int insert = customerMapper.insert(customer); final int insert = customerMapper.insert(customer);
final User user = securityUtil.getCurrUser();
// 客户欠款信息 // 客户欠款信息
final BigDecimal amountOwed = customer.getAmountOwed() == null ? BigDecimal.ZERO : customer.getAmountOwed(); final BigDecimal amountOwed = customer.getAmountOwed() == null ? BigDecimal.ZERO : customer.getAmountOwed();
final Debt debt = new Debt(); final Debt debt = new Debt();
debt.setCreateBy(user.getId());
debt.setCreateTime(new Date());
debt.setUserId(customer.getId()); debt.setUserId(customer.getId());
debt.setShopId(shopId); debt.setShopId(shopId);
debt.setUserPhone(customer.getPhone()); debt.setUserPhone(customer.getPhone());
@ -150,15 +157,14 @@ public class CustomerServiceImpl extends ServiceImpl<CustomerMapper, Customer> i
debtService.save(debt); debtService.save(debt);
// 新增交易记录 // 新增交易记录
// 2. 新增欠款记录 // 2. 新增欠款记录
final User user = securityUtil.getCurrUser();
final DealingsRecord dealingsRecord = new DealingsRecord(); final DealingsRecord dealingsRecord = new DealingsRecord();
dealingsRecord.setCreateBy(user.getId()); dealingsRecord.setCreateBy(user.getId());
dealingsRecord.setCreateByName(user.getNickname()); dealingsRecord.setCreateByName(user.getNickname());
dealingsRecord.setCreateTime(new Date()); dealingsRecord.setCreateTime(new Date());
dealingsRecord.setDealingsUserId(customer.getUserId()); dealingsRecord.setDealingsUserId(customer.getId());
dealingsRecord.setDealingsUserName(customer.getUserName()); dealingsRecord.setDealingsUserName(customer.getName());
dealingsRecord.setUserType(DealingsRecordConstant.TYPE[1]); dealingsRecord.setUserType(DealingsRecordConstant.TYPE[1]);
dealingsRecord.setDealingsWay("开单"); dealingsRecord.setDealingsWay("新增客户");
dealingsRecord.setShopId(shopId); dealingsRecord.setShopId(shopId);
// 销售金额 // 销售金额
dealingsRecord.setSaleAmount(BigDecimal.ZERO); dealingsRecord.setSaleAmount(BigDecimal.ZERO);

9
hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/mybatis/DealingsRecordServiceImpl.java

@ -2,10 +2,13 @@ package cc.hiver.mall.serviceimpl.mybatis;
import cc.hiver.core.common.utils.SecurityUtil; import cc.hiver.core.common.utils.SecurityUtil;
import cc.hiver.core.common.utils.StringUtils; import cc.hiver.core.common.utils.StringUtils;
import cc.hiver.mall.bill.vo.CustomerBillQueryVo;
import cc.hiver.mall.bill.vo.CustomerBillSaleVo;
import cc.hiver.mall.dao.mapper.DealingsRecordMapper; import cc.hiver.mall.dao.mapper.DealingsRecordMapper;
import cc.hiver.mall.entity.DealingsRecord; import cc.hiver.mall.entity.DealingsRecord;
import cc.hiver.mall.service.mybatis.DealingsRecordService; import cc.hiver.mall.service.mybatis.DealingsRecordService;
import cc.hiver.mall.utils.DateUtil; import cc.hiver.mall.utils.DateUtil;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -60,4 +63,10 @@ public class DealingsRecordServiceImpl extends ServiceImpl<DealingsRecordMapper,
dealingsRecordMapper.cancelRecord(saleId); dealingsRecordMapper.cancelRecord(saleId);
} }
@Override
public Page<CustomerBillSaleVo> getDealingsRecordPageByUserId(CustomerBillQueryVo customerBillQueryVo) {
final Page<CustomerBillSaleVo> page = new Page<>(customerBillQueryVo.getPageNum(), customerBillQueryVo.getPageSize());
return dealingsRecordMapper.getDealingsRecordPageByUserId(page,customerBillQueryVo);
}
} }

16
hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/mybatis/ProductAttributeServiceImpl.java

@ -2,9 +2,12 @@ package cc.hiver.mall.serviceimpl.mybatis;
import cc.hiver.mall.dao.mapper.ProductAttributeMapper; import cc.hiver.mall.dao.mapper.ProductAttributeMapper;
import cc.hiver.mall.entity.ProductAttribute; import cc.hiver.mall.entity.ProductAttribute;
import cc.hiver.mall.entity.Stock;
import cc.hiver.mall.pojo.vo.ProductAttributeOfAddVo; import cc.hiver.mall.pojo.vo.ProductAttributeOfAddVo;
import cc.hiver.mall.pojo.vo.ProductAttributeVO; import cc.hiver.mall.pojo.vo.ProductAttributeVO;
import cc.hiver.mall.service.mybatis.ProductAttributeService; import cc.hiver.mall.service.mybatis.ProductAttributeService;
import cc.hiver.mall.service.mybatis.StockService;
import cn.hutool.json.JSONObject;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -17,8 +20,12 @@ public class ProductAttributeServiceImpl extends ServiceImpl<ProductAttributeMap
@Autowired @Autowired
private ProductAttributeMapper productAttributeMapper; private ProductAttributeMapper productAttributeMapper;
@Autowired
private StockService stockService;
@Override @Override
public String selectAttributeAndValueByCategoryId(String categoryId) { public JSONObject selectAttributeAndValueByCategoryId(String categoryId) {
JSONObject jsonObject = new JSONObject();
final List<ProductAttributeVO> productAttributeVOList = productAttributeMapper.selectAttributeAndValueByCategoryId(categoryId); final List<ProductAttributeVO> productAttributeVOList = productAttributeMapper.selectAttributeAndValueByCategoryId(categoryId);
// {"颜色":["黑色","绿色"],"尺码":["S码","M码"],"类别":["童装","女装","男装"]} // {"颜色":["黑色","绿色"],"尺码":["S码","M码"],"类别":["童装","女装","男装"]}
// 20240408,因为颜色要在尺码上边,所以这里使用LinkedHashMap,防止乱序。 // 20240408,因为颜色要在尺码上边,所以这里使用LinkedHashMap,防止乱序。
@ -47,7 +54,12 @@ public class ProductAttributeServiceImpl extends ServiceImpl<ProductAttributeMap
endStr.add(attributeStr); endStr.add(attributeStr);
} }
endAttributeStr.append(endStr).append('}'); endAttributeStr.append(endStr).append('}');
return endAttributeStr.toString();
// 供应商名称
final List<Stock> list = stockService.getProductStockByAttrId(categoryId);
jsonObject.set("attributeAndValue",endAttributeStr.toString());
jsonObject.set("stock",list);
return jsonObject;
} }
@Override @Override

5
hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/mybatis/PurchaseServiceImpl.java

@ -479,6 +479,11 @@ public class PurchaseServiceImpl extends ServiceImpl<PurchaseMapper, Purchase> i
@Override @Override
public Page<PurchasingCostDetailVo> purchasingCostDetail(PurchasePageQuery purchasePageQuery) { public Page<PurchasingCostDetailVo> purchasingCostDetail(PurchasePageQuery purchasePageQuery) {
//结束时间+1天
if (StringUtils.isNotEmpty(purchasePageQuery.getEndDate())) {
final String endDate = DateUtil.addDay(purchasePageQuery.getEndDate(), 1);
purchasePageQuery.setEndDate(endDate);
}
final Page<PurchasingCostDetailVo> page = new Page<>(purchasePageQuery.getPageNum(), purchasePageQuery.getPageSize()); final Page<PurchasingCostDetailVo> page = new Page<>(purchasePageQuery.getPageNum(), purchasePageQuery.getPageSize());
// shopId从缓存中设置 // shopId从缓存中设置
final String shopId = securityUtil.getShopId(); final String shopId = securityUtil.getShopId();

9
hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/mybatis/ReturnSaleServiceImpl.java

@ -109,6 +109,7 @@ public class ReturnSaleServiceImpl extends ServiceImpl<ReturnSaleMapper, ReturnS
returnSaleDetailDTO.setProductName(returnDetail.getProductName()); returnSaleDetailDTO.setProductName(returnDetail.getProductName());
returnSaleDetailDTO.setProductCount(returnDetail.getProductCount()); returnSaleDetailDTO.setProductCount(returnDetail.getProductCount());
returnSaleDetailDTO.setRealPrice(returnDetail.getRealPrice()); returnSaleDetailDTO.setRealPrice(returnDetail.getRealPrice());
returnSaleDetailDTO.setPurchasePrice(returnDetail.getPurchasePrice());
// 详细规格 // 详细规格
final SaleDetailQueryDTO saleDetailQueryDTO = new SaleDetailQueryDTO(); final SaleDetailQueryDTO saleDetailQueryDTO = new SaleDetailQueryDTO();
saleDetailQueryDTO.setAttributeList(returnDetail.getAttributeList()); saleDetailQueryDTO.setAttributeList(returnDetail.getAttributeList());
@ -133,6 +134,11 @@ public class ReturnSaleServiceImpl extends ServiceImpl<ReturnSaleMapper, ReturnS
*/ */
@Override @Override
public Page<ReturnTotalAmountDetailVo> returnTotalAmountDetail(ReturnSalePageQuery returnSalePageQuery) { public Page<ReturnTotalAmountDetailVo> returnTotalAmountDetail(ReturnSalePageQuery returnSalePageQuery) {
//结束时间+1天
if (cc.hiver.core.common.utils.StringUtils.isNotEmpty(returnSalePageQuery.getEndDate())) {
final String endDate = DateUtil.addDay(returnSalePageQuery.getEndDate(), 1);
returnSalePageQuery.setEndDate(endDate);
}
final Page<ReturnTotalAmountDetailVo> page = new Page<>(returnSalePageQuery.getPageNum(), returnSalePageQuery.getPageSize()); final Page<ReturnTotalAmountDetailVo> page = new Page<>(returnSalePageQuery.getPageNum(), returnSalePageQuery.getPageSize());
// shopId从缓存中设置 // shopId从缓存中设置
final String shopId = securityUtil.getShopId(); final String shopId = securityUtil.getShopId();
@ -194,6 +200,9 @@ public class ReturnSaleServiceImpl extends ServiceImpl<ReturnSaleMapper, ReturnS
returnSaleDetailDTO.setProductName(returnDetail.getProductName()); returnSaleDetailDTO.setProductName(returnDetail.getProductName());
returnSaleDetailDTO.setProductCount(returnDetail.getProductCount()); returnSaleDetailDTO.setProductCount(returnDetail.getProductCount());
returnSaleDetailDTO.setRealPrice(returnDetail.getRealPrice()); returnSaleDetailDTO.setRealPrice(returnDetail.getRealPrice());
returnSaleDetailDTO.setProductSn(returnDetail.getProductSn());
returnSaleDetailDTO.setPurchasePrice(returnDetail.getPurchasePrice());
returnSaleDetailDTO.setDiscountAmount(returnDetail.getDiscountAmount());
// 详细规格 // 详细规格
final SaleDetailQueryDTO saleDetailQueryDTO = new SaleDetailQueryDTO(); final SaleDetailQueryDTO saleDetailQueryDTO = new SaleDetailQueryDTO();
saleDetailQueryDTO.setAttributeList(returnDetail.getAttributeList()); saleDetailQueryDTO.setAttributeList(returnDetail.getAttributeList());

5
hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/mybatis/SaleDetailServiceImpl.java

@ -1,5 +1,6 @@
package cc.hiver.mall.serviceimpl.mybatis; package cc.hiver.mall.serviceimpl.mybatis;
import cc.hiver.mall.dao.mapper.ReturnDetailMapper;
import cc.hiver.mall.dao.mapper.SaleDetailMapper; import cc.hiver.mall.dao.mapper.SaleDetailMapper;
import cc.hiver.mall.dao.mapper.StockLogMapper; import cc.hiver.mall.dao.mapper.StockLogMapper;
import cc.hiver.mall.dao.mapper.StockMapper; import cc.hiver.mall.dao.mapper.StockMapper;
@ -26,6 +27,9 @@ public class SaleDetailServiceImpl extends ServiceImpl<SaleDetailMapper, SaleDet
@Autowired @Autowired
private StockLogMapper stockLogMapper; private StockLogMapper stockLogMapper;
@Autowired
private ReturnDetailMapper returnDetailMapper;
@Override @Override
public List<String> selectByCondition(SaleDetailExample saleDetailExample) { public List<String> selectByCondition(SaleDetailExample saleDetailExample) {
List<String> list = saleDetailMapper.selectByCondition(saleDetailExample); List<String> list = saleDetailMapper.selectByCondition(saleDetailExample);
@ -65,6 +69,7 @@ public class SaleDetailServiceImpl extends ServiceImpl<SaleDetailMapper, SaleDet
saleDetailMapper.putInUpdatePurchasePrice(purchaseDetails); saleDetailMapper.putInUpdatePurchasePrice(purchaseDetails);
stockMapper.putInUpdatePurchasePrice(purchaseDetails); stockMapper.putInUpdatePurchasePrice(purchaseDetails);
stockLogMapper.putInUpdatePurchasePrice(purchaseDetails); stockLogMapper.putInUpdatePurchasePrice(purchaseDetails);
returnDetailMapper.putInUpdatePurchasePrice(purchaseDetails);
} }
@Override @Override

34
hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/mybatis/SaleServiceImpl.java

@ -366,10 +366,14 @@ public class SaleServiceImpl extends ServiceImpl<SaleMapper, Sale> implements Sa
@Override @Override
public Page<CustomerBuyProductLogVo> getCustomerBuyProductLog(SalePageQuery salePageQuery) { public Page<CustomerBuyProductLogVo> getCustomerBuyProductLog(SalePageQuery salePageQuery) {
if (StringUtils.isNotEmpty(salePageQuery.getEndDate())) {
final String newEndDate = DateUtil.addDay(salePageQuery.getEndDate(), 1);
salePageQuery.setEndDate(newEndDate);
}
// 先拿到该客户购买的所有商品信息 // 先拿到该客户购买的所有商品信息
final Page<CustomerBuyProductLogVo> page = new Page<>(salePageQuery.getPageNum(), salePageQuery.getPageSize()); final Page<CustomerBuyProductLogVo> page = new Page<>(salePageQuery.getPageNum(), salePageQuery.getPageSize());
final String userId = salePageQuery.getUserId(); final String userId = salePageQuery.getUserId();
final Page<CustomerBuyProductLogVo> salePage = saleMapper.getCustomerBuyProductLog(page, userId, salePageQuery.getShopId()); final Page<CustomerBuyProductLogVo> salePage = saleMapper.getCustomerBuyProductLog(page, salePageQuery);
final List<CustomerBuyProductLogVo> records = salePage.getRecords(); final List<CustomerBuyProductLogVo> records = salePage.getRecords();
final List<String> productIds = new ArrayList<>(); final List<String> productIds = new ArrayList<>();
// 商品id集合 // 商品id集合
@ -384,7 +388,7 @@ public class SaleServiceImpl extends ServiceImpl<SaleMapper, Sale> implements Sa
} }
if (!productIds.isEmpty()) { if (!productIds.isEmpty()) {
// 获取商品各规格售卖的数量 // 获取商品各规格售卖的数量
final List<CustomerBuyProductDetailLogVo> customerBuyProductDetailLogVos = saleMapper.getCustomerBuyProductLogDetailLog(userId, salePageQuery.getShopId(), productIds); final List<CustomerBuyProductDetailLogVo> customerBuyProductDetailLogVos = saleMapper.getCustomerBuyProductLogDetailLog(userId, salePageQuery.getShopId(), productIds,salePageQuery.getStartDate(),salePageQuery.getEndDate());
// 进行数据封装Map<商品id,Map<销售单id,商品明细>> // 进行数据封装Map<商品id,Map<销售单id,商品明细>>
final Map<String, Map<String, List<CustomerBuyProductDetailLogVo>>> allMap = new HashMap<>(); final Map<String, Map<String, List<CustomerBuyProductDetailLogVo>>> allMap = new HashMap<>();
@ -900,7 +904,6 @@ public class SaleServiceImpl extends ServiceImpl<SaleMapper, Sale> implements Sa
// 出库 // 出库
stock.setStockCount(stockCount + productCount); stock.setStockCount(stockCount + productCount);
} }
stock.setStockCount(stockCount + productCount);
changeStockList.add(stock); changeStockList.add(stock);
} }
} }
@ -954,14 +957,8 @@ public class SaleServiceImpl extends ServiceImpl<SaleMapper, Sale> implements Sa
} }
@Override @Override
public Page<CustomerBillSaleVo> getCustomerBill(CustomerBillQueryVo customerBillQueryVo) { public List<CustomerBillSaleVo> getCustomerBill(CustomerBillQueryVo customerBillQueryVo) {
final Page<CustomerBillSaleVo> page = new Page<>(customerBillQueryVo.getPageNum(), customerBillQueryVo.getPageSize()); final List<CustomerBillSaleVo> customerBillSaleVoPage = saleMapper.getCustomerBill(customerBillQueryVo);
//结束时间-1天
if (StringUtils.isNotEmpty(customerBillQueryVo.getEndDate())) {
final String endDate = DateUtil.addDay(customerBillQueryVo.getEndDate(), 1);
customerBillQueryVo.setEndDate(endDate);
}
final Page<CustomerBillSaleVo> customerBillSaleVoPage = saleMapper.getCustomerBill(page, customerBillQueryVo);
return customerBillSaleVoPage; return customerBillSaleVoPage;
} }
@ -972,6 +969,11 @@ public class SaleServiceImpl extends ServiceImpl<SaleMapper, Sale> implements Sa
@Override @Override
public Page<TotalAmountDetailVo> totalAmountDetail(SalePageQuery salePageQuery) { public Page<TotalAmountDetailVo> totalAmountDetail(SalePageQuery salePageQuery) {
//结束时间+1天
if (StringUtils.isNotEmpty(salePageQuery.getEndDate())) {
final String endDate = DateUtil.addDay(salePageQuery.getEndDate(), 1);
salePageQuery.setEndDate(endDate);
}
final Page<TotalAmountDetailVo> page = new Page<>(salePageQuery.getPageNum(), salePageQuery.getPageSize()); final Page<TotalAmountDetailVo> page = new Page<>(salePageQuery.getPageNum(), salePageQuery.getPageSize());
// shopId从缓存中设置 // shopId从缓存中设置
final String shopId = securityUtil.getShopId(); final String shopId = securityUtil.getShopId();
@ -988,6 +990,11 @@ public class SaleServiceImpl extends ServiceImpl<SaleMapper, Sale> implements Sa
*/ */
@Override @Override
public Page<TotalAlreadyEarnDetailDayVo> totalAlreadyEarnDetail(SalePageQuery salePageQuery) { public Page<TotalAlreadyEarnDetailDayVo> totalAlreadyEarnDetail(SalePageQuery salePageQuery) {
//结束时间+1天
if (StringUtils.isNotEmpty(salePageQuery.getEndDate())) {
final String endDate = DateUtil.addDay(salePageQuery.getEndDate(), 1);
salePageQuery.setEndDate(endDate);
}
final Page<TotalAlreadyEarnDetailDayVo> page = new Page<>(salePageQuery.getPageNum(), salePageQuery.getPageSize()); final Page<TotalAlreadyEarnDetailDayVo> page = new Page<>(salePageQuery.getPageNum(), salePageQuery.getPageSize());
// shopId从缓存中设置 // shopId从缓存中设置
final String shopId = securityUtil.getShopId(); final String shopId = securityUtil.getShopId();
@ -1004,6 +1011,11 @@ public class SaleServiceImpl extends ServiceImpl<SaleMapper, Sale> implements Sa
*/ */
@Override @Override
public Page<CustomerSaleDetailVo> customerSaleDetail(SalePageQuery salePageQuery) { public Page<CustomerSaleDetailVo> customerSaleDetail(SalePageQuery salePageQuery) {
//结束时间+1天
if (StringUtils.isNotEmpty(salePageQuery.getEndDate())) {
final String endDate = DateUtil.addDay(salePageQuery.getEndDate(), 1);
salePageQuery.setEndDate(endDate);
}
final Page<CustomerSaleDetailVo> page = new Page<>(salePageQuery.getPageNum(), salePageQuery.getPageSize()); final Page<CustomerSaleDetailVo> page = new Page<>(salePageQuery.getPageNum(), salePageQuery.getPageSize());
// shopId从缓存中设置 // shopId从缓存中设置
final String shopId = securityUtil.getShopId(); final String shopId = securityUtil.getShopId();

18
hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/mybatis/StockServiceImpl.java

@ -3,6 +3,7 @@ package cc.hiver.mall.serviceimpl.mybatis;
import cc.hiver.core.common.constant.ProductConstant; import cc.hiver.core.common.constant.ProductConstant;
import cc.hiver.core.common.utils.ResultUtil; import cc.hiver.core.common.utils.ResultUtil;
import cc.hiver.core.common.utils.SecurityUtil; import cc.hiver.core.common.utils.SecurityUtil;
import cc.hiver.core.common.utils.SnowFlakeUtil;
import cc.hiver.core.common.utils.StringUtils; import cc.hiver.core.common.utils.StringUtils;
import cc.hiver.core.common.vo.Result; import cc.hiver.core.common.vo.Result;
import cc.hiver.core.entity.User; import cc.hiver.core.entity.User;
@ -676,10 +677,17 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
final User user = securityUtil.getCurrUser(); final User user = securityUtil.getCurrUser();
// Ai已经生成了入库单主表信息 // Ai已经生成了入库单主表信息
final Purchase purchase = purchaseVo.getPurchase(); final Purchase purchase = purchaseVo.getPurchase();
purchase.setCreateByName(user.getNickname()); purchase.setCreateByName(user.getNickname());
purchase.setShopId(shopId); purchase.setShopId(shopId);
final String purchaseId = purchase.getId(); // 语音入库没有入库id
String purchaseId = purchase.getId();
if (StringUtils.isEmpty(purchaseId)){
purchaseId = SnowFlakeUtil.nextId().toString();
purchase.setId(purchaseId);
}
// 先根据入库单id 删除详情及库存履历表信息 // 先根据入库单id 删除详情及库存履历表信息
purchaseDetailService.deleteByPurchaseId(purchaseId); purchaseDetailService.deleteByPurchaseId(purchaseId);
stockLogService.deleteByPurchaseId(purchaseId); stockLogService.deleteByPurchaseId(purchaseId);
@ -832,6 +840,8 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
purchaseDetail.setUnit(product.getUnit()); purchaseDetail.setUnit(product.getUnit());
purchaseDetail.setCategoryId(product.getCategoryId()); purchaseDetail.setCategoryId(product.getCategoryId());
purchaseDetail.setAttrId(product.getAttrId()); purchaseDetail.setAttrId(product.getAttrId());
purchaseDetail.setSupplierId(purchase.getSupplierId());
purchaseDetail.setSupplierName(purchase.getSupplierName());
// 供应商可能更新,这里保存本次前台选择的供应商信息 // 供应商可能更新,这里保存本次前台选择的供应商信息
purchaseDetail.setProductSn(product.getProductSn()); purchaseDetail.setProductSn(product.getProductSn());
// 条码去掉了,真实的条形码内容为商品的id // 条码去掉了,真实的条形码内容为商品的id
@ -957,6 +967,7 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
// 记录库存履历 // 记录库存履历
stockLog.setProductId(purchaseDetail.getProductId()); stockLog.setProductId(purchaseDetail.getProductId());
stockLog.setOrderId(purchaseId); stockLog.setOrderId(purchaseId);
stockLog.setDetailId(purchaseDetail.getId());
//入库 //入库
stockLog.setChangeType("0"); stockLog.setChangeType("0");
//入库前数量 //入库前数量
@ -1089,4 +1100,9 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
public Stock getByProductIdAndAttributeList(String productId, String attributeList) { public Stock getByProductIdAndAttributeList(String productId, String attributeList) {
return stockMapper.getByProductIdAndAttributeList(productId,attributeList); return stockMapper.getByProductIdAndAttributeList(productId,attributeList);
} }
@Override
public List<Stock> getProductStockByAttrId(String attrId) {
return stockMapper.getProductStockByAttrId(attrId);
}
} }

38
hiver-modules/hiver-mall/src/main/resources/mapper/DealingsRecordMapper.xml

@ -124,4 +124,42 @@
set del_flag = 1 set del_flag = 1
where sale_id = #{saleId} where sale_id = #{saleId}
</update> </update>
<select id="getDealingsRecordPageByUserId" resultType="cc.hiver.mall.bill.vo.CustomerBillSaleVo">
select
tdr.sale_id,
tdr.create_by_name,
tdr.create_time,
tdr.last_debt_amount,
tdr.amount,
tdr.balance_due,
tdr.dealings_type,
ts.total_amount,
ts.debt_deduction_amount,
ts.sale_deduction_amount,
ts.balance_deduction_amount,
ts.real_amount,
ts.already_earn,
trs.return_sale_total_amount
from
t_dealings_record tdr
left join t_sale ts on ts.id = tdr.sale_id and ts.shop_id = #{customerBillQueryVo.shopId} and ts.status not in ( '2', '6', '7' )
left join (
select
n.sale_id,
sum( n.total_amount ) as return_sale_total_amount
from
t_sale m
left join t_return_sale n on m.id = n.sale_id
group by
n.sale_id
) trs on ts.id = trs.sale_id
WHERE
tdr.dealings_user_id = #{customerBillQueryVo.customerId}
and tdr.shop_id = #{customerBillQueryVo.shopId}
<if test='customerBillQueryVo.startDate !=null and customerBillQueryVo.endDate !=null'>
and tdr.create_time BETWEEN #{customerBillQueryVo.startDate} AND #{customerBillQueryVo.endDate}
</if>
order by tdr.create_time asc
</select>
</mapper> </mapper>

33
hiver-modules/hiver-mall/src/main/resources/mapper/PurchaseMapper.xml

@ -471,25 +471,36 @@
</update> </update>
<select id="purchasingCostDetail" resultType="cc.hiver.mall.pojo.vo.PurchasingCostDetailVo"> <select id="purchasingCostDetail" resultType="cc.hiver.mall.pojo.vo.PurchasingCostDetailVo">
select SELECT
tp.id as purchase_id, tp.id AS purchase_id,
tp.create_by, tp.create_by,
tp.create_by_name, tp.create_by_name,
tp.supplier_id, tp.supplier_id,
tp.supplier_name, tp.supplier_name,
tp.create_time as purchase_date, tp.create_time AS purchase_date,
cb.total_cost, tp.should_pay AS total_cost,
cb.product_count, cb.product_count,
cb.product_num cb.product_num
from FROM
t_purchase tp t_purchase tp
left join LEFT JOIN (
(select purchase_id, sum(price) as total_cost,count(product_id) as product_num,sum(product_count) as product_count from t_purchase_detail tpd where shop_id = #{purchasePageQuery.shopId} group by tpd.purchase_id) cb SELECT
on tp.id = cb.purchase_id purchase_id,
del_flag,
count( product_id ) AS product_num,
sum( product_count ) AS product_count
FROM
t_purchase_detail tpd
WHERE
shop_id = #{purchasePageQuery.shopId}
GROUP BY
tpd.purchase_id,
del_flag
) cb ON tp.id = cb.purchase_id
WHERE WHERE
del_flag ='0' cb.del_flag = '0'
and in_storage_status = '1' AND in_storage_status = '1'
and shop_id = #{purchasePageQuery.shopId} AND shop_id = #{purchasePageQuery.shopId}
<if test='purchasePageQuery.createByName !=null and purchasePageQuery.createByName !=""'> <if test='purchasePageQuery.createByName !=null and purchasePageQuery.createByName !=""'>
and create_by_name like concat('%',#{purchasePageQuery.createByName},'%') and create_by_name like concat('%',#{purchasePageQuery.createByName},'%')
</if> </if>

8
hiver-modules/hiver-mall/src/main/resources/mapper/ReturnDetailMapper.xml

@ -533,9 +533,15 @@
select select
<include refid="Base_Column_List"/> <include refid="Base_Column_List"/>
from t_return_detail from t_return_detail
where sale_id in where return_sale_id in
<foreach close=")" collection="returnSaleIdList" item="listItem" open="(" separator=","> <foreach close=")" collection="returnSaleIdList" item="listItem" open="(" separator=",">
#{listItem} #{listItem}
</foreach> </foreach>
</select> </select>
<update id="putInUpdatePurchasePrice">
<foreach collection="purchaseDetails" item="item" separator=";" open="" close="">
update t_return_detail set purchase_price = #{item.purchasePrice} WHERE product_id = #{item.productId} and purchase_price is null
</foreach>
</update>
</mapper> </mapper>

44
hiver-modules/hiver-mall/src/main/resources/mapper/ReturnSaleMapper.xml

@ -5,6 +5,7 @@
<id column="id" jdbcType="VARCHAR" property="id" /> <id column="id" jdbcType="VARCHAR" property="id" />
<result column="sale_id" jdbcType="VARCHAR" property="saleId" /> <result column="sale_id" jdbcType="VARCHAR" property="saleId" />
<result column="create_by" jdbcType="VARCHAR" property="createBy" /> <result column="create_by" jdbcType="VARCHAR" property="createBy" />
<result column="create_by_name" jdbcType="VARCHAR" property="createByName" />
<result column="create_time" jdbcType="TIMESTAMP" property="createTime" /> <result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
<result column="del_flag" jdbcType="INTEGER" property="delFlag" /> <result column="del_flag" jdbcType="INTEGER" property="delFlag" />
<result column="update_by" jdbcType="VARCHAR" property="updateBy" /> <result column="update_by" jdbcType="VARCHAR" property="updateBy" />
@ -89,7 +90,7 @@
</where> </where>
</sql> </sql>
<sql id="Base_Column_List"> <sql id="Base_Column_List">
id, sale_id, create_by, create_time, del_flag, update_by, update_time, user_id,user_name, shop_id, id, sale_id, create_by, create_by_name, create_time, del_flag, update_by, update_time, user_id,user_name, shop_id,
total_amount, discount, discount_amount, real_amount, already_earn, no_earn, pay_status, total_amount, discount, discount_amount, real_amount, already_earn, no_earn, pay_status,
status, transport_type, share_address, receive_address, province, city, area, trans_company, status, transport_type, share_address, receive_address, province, city, area, trans_company,
trans_company_name, product_count trans_company_name, product_count
@ -125,7 +126,7 @@
</if> </if>
</delete> </delete>
<insert id="insert" parameterType="cc.hiver.mall.entity.ReturnSale"> <insert id="insert" parameterType="cc.hiver.mall.entity.ReturnSale">
insert into t_return_sale (id, sale_id, create_by, insert into t_return_sale (id, sale_id, create_by,create_by_name,
create_time, del_flag, update_by, create_time, del_flag, update_by,
update_time, user_id,user_name, shop_id, update_time, user_id,user_name, shop_id,
total_amount, discount, discount_amount, total_amount, discount, discount_amount,
@ -133,7 +134,7 @@
pay_status, status, transport_type, pay_status, status, transport_type,
share_address, receive_address, province, share_address, receive_address, province,
city, area,trans_company, trans_company_name, product_count) city, area,trans_company, trans_company_name, product_count)
values (#{id,jdbcType=VARCHAR}, #{saleId,jdbcType=VARCHAR}, #{createBy,jdbcType=VARCHAR}, values (#{id,jdbcType=VARCHAR}, #{saleId,jdbcType=VARCHAR}, #{createBy,jdbcType=VARCHAR},#{createByName,jdbcType=VARCHAR},
#{createTime,jdbcType=TIMESTAMP}, #{delFlag,jdbcType=INTEGER}, #{updateBy,jdbcType=VARCHAR}, #{createTime,jdbcType=TIMESTAMP}, #{delFlag,jdbcType=INTEGER}, #{updateBy,jdbcType=VARCHAR},
#{updateTime,jdbcType=TIMESTAMP}, #{userId,jdbcType=VARCHAR},#{userName,jdbcType=VARCHAR}, #{shopId,jdbcType=VARCHAR}, #{updateTime,jdbcType=TIMESTAMP}, #{userId,jdbcType=VARCHAR},#{userName,jdbcType=VARCHAR}, #{shopId,jdbcType=VARCHAR},
#{totalAmount,jdbcType=DECIMAL}, #{discount,jdbcType=DECIMAL}, #{discountAmount,jdbcType=DECIMAL}, #{totalAmount,jdbcType=DECIMAL}, #{discount,jdbcType=DECIMAL}, #{discountAmount,jdbcType=DECIMAL},
@ -153,6 +154,9 @@
</if> </if>
<if test="createBy != null"> <if test="createBy != null">
create_by, create_by,
</if>
<if test="createByName != null">
create_by_name,
</if> </if>
<if test="createTime != null"> <if test="createTime != null">
create_time, create_time,
@ -227,6 +231,9 @@
</if> </if>
<if test="createBy != null"> <if test="createBy != null">
#{createBy,jdbcType=VARCHAR}, #{createBy,jdbcType=VARCHAR},
</if>
<if test="createByName != null">
#{createByName,jdbcType=VARCHAR},
</if> </if>
<if test="createTime != null"> <if test="createTime != null">
#{createTime,jdbcType=TIMESTAMP}, #{createTime,jdbcType=TIMESTAMP},
@ -307,6 +314,9 @@
</if> </if>
<if test="record.createBy != null"> <if test="record.createBy != null">
create_by = #{record.createBy,jdbcType=VARCHAR}, create_by = #{record.createBy,jdbcType=VARCHAR},
</if>
<if test="record.createByName != null">
create_by_name = #{record.createByName,jdbcType=VARCHAR},
</if> </if>
<if test="record.createTime != null"> <if test="record.createTime != null">
create_time = #{record.createTime,jdbcType=TIMESTAMP}, create_time = #{record.createTime,jdbcType=TIMESTAMP},
@ -381,6 +391,7 @@
set id = #{record.id,jdbcType=VARCHAR}, set id = #{record.id,jdbcType=VARCHAR},
sale_id = #{record.saleId,jdbcType=VARCHAR}, sale_id = #{record.saleId,jdbcType=VARCHAR},
create_by = #{record.createBy,jdbcType=VARCHAR}, create_by = #{record.createBy,jdbcType=VARCHAR},
create_by_name = #{record.createByName,jdbcType=VARCHAR},
create_time = #{record.createTime,jdbcType=TIMESTAMP}, create_time = #{record.createTime,jdbcType=TIMESTAMP},
del_flag = #{record.delFlag,jdbcType=INTEGER}, del_flag = #{record.delFlag,jdbcType=INTEGER},
update_by = #{record.updateBy,jdbcType=VARCHAR}, update_by = #{record.updateBy,jdbcType=VARCHAR},
@ -417,6 +428,9 @@
</if> </if>
<if test="createBy != null"> <if test="createBy != null">
create_by = #{createBy,jdbcType=VARCHAR}, create_by = #{createBy,jdbcType=VARCHAR},
</if>
<if test="createByName != null">
create_by_name = #{createByName,jdbcType=VARCHAR},
</if> </if>
<if test="createTime != null"> <if test="createTime != null">
create_time = #{createTime,jdbcType=TIMESTAMP}, create_time = #{createTime,jdbcType=TIMESTAMP},
@ -488,6 +502,7 @@
update t_return_sale update t_return_sale
set sale_id = #{saleId,jdbcType=VARCHAR}, set sale_id = #{saleId,jdbcType=VARCHAR},
create_by = #{createBy,jdbcType=VARCHAR}, create_by = #{createBy,jdbcType=VARCHAR},
create_by_name = #{createByName,jdbcType=VARCHAR},
create_time = #{createTime,jdbcType=TIMESTAMP}, create_time = #{createTime,jdbcType=TIMESTAMP},
del_flag = #{delFlag,jdbcType=INTEGER}, del_flag = #{delFlag,jdbcType=INTEGER},
update_by = #{updateBy,jdbcType=VARCHAR}, update_by = #{updateBy,jdbcType=VARCHAR},
@ -534,9 +549,9 @@
where sale_id = #{id,jdbcType=VARCHAR} where sale_id = #{id,jdbcType=VARCHAR}
</select> </select>
<select id="getReturnSaleList" parameterType="cc.hiver.mall.pojo.vo.ReturnSaleVo" resultType="cc.hiver.mall.pojo.vo.ReturnSaleVo"> <select id="getReturnSaleList" resultType="cc.hiver.mall.pojo.vo.ReturnSaleVo">
select select
trs.id,trs.sale_id,trs.create_by,trs.create_time,trs.del_flag,trs.update_by,trs.update_time,trs.user_id,user_name,trs.shop_id, trs.id,trs.sale_id,trs.create_by,trs.create_by_name,trs.create_time,trs.del_flag,trs.update_by,trs.update_time,trs.user_id,trs.user_name,trs.shop_id,
trs.total_amount,trs.discount,trs.discount_amount,trs.real_amount,trs.already_earn,trs.no_earn,trs.pay_status, trs.total_amount,trs.discount,trs.discount_amount,trs.real_amount,trs.already_earn,trs.no_earn,trs.pay_status,
trs.status,trs.transport_type,trs.share_address,trs.receive_address,trs.province,trs.city,trs.area, trs.status,trs.transport_type,trs.share_address,trs.receive_address,trs.province,trs.city,trs.area,
tdr.return_amount, tdr.return_amount,
@ -551,6 +566,7 @@
<where> <where>
<!--已上架的--> <!--已上架的-->
and trs.del_flag = '0' and trs.del_flag = '0'
and trs.status != '02'
<!-- 店铺ID--> <!-- 店铺ID-->
and trs.shop_id = #{queryParams.shopId,jdbcType=VARCHAR} and trs.shop_id = #{queryParams.shopId,jdbcType=VARCHAR}
<if test="queryParams != null"> <if test="queryParams != null">
@ -559,16 +575,16 @@
and trs.create_time BETWEEN #{queryParams.startTime,jdbcType=VARCHAR} AND #{queryParams.endTime,jdbcType=VARCHAR} and trs.create_time BETWEEN #{queryParams.startTime,jdbcType=VARCHAR} AND #{queryParams.endTime,jdbcType=VARCHAR}
</if> </if>
<!--操作人--> <!--操作人-->
<if test="queryParams.createByName != null"> <if test='queryParams.createByName != null and queryParams.createByName neq ""'>
and create_by_name like concat('%',#{queryParams.createByName,jdbcType=VARCHAR},'%') and trs.create_by_name like concat('%',#{queryParams.createByName,jdbcType=VARCHAR},'%')
</if> </if>
<!--客户名称模糊匹配--> <!--客户名称模糊匹配-->
<if test="queryParams.userName != null"> <if test='queryParams.userName != null and queryParams.userName neq ""'>
and user_name like concat('%',#{queryParams.userName,jdbcType=VARCHAR},'%') and trs.user_name like concat('%',#{queryParams.userName,jdbcType=VARCHAR},'%')
</if> </if>
<!--客户id精准匹配--> <!--客户id精准匹配-->
<if test="queryParams.userId != null"> <if test='queryParams.userId != null and queryParams.userId neq ""'>
and user_id = #{queryParams.userId,jdbcType=VARCHAR} and trs.user_id = #{queryParams.userId,jdbcType=VARCHAR}
</if> </if>
</if> </if>
</where> </where>
@ -595,7 +611,7 @@
<select id="getReturnSaleListByProductId" resultType="cc.hiver.mall.pojo.vo.ReturnSaleVo"> <select id="getReturnSaleListByProductId" resultType="cc.hiver.mall.pojo.vo.ReturnSaleVo">
select select
id, trs.sale_id, trs.create_by, trs.create_time, trs.del_flag, trs.update_by, trs.update_time, trs.user_id,user_name, trs.shop_id, id, trs.sale_id, trs.create_by,trs.create_by_name, trs.create_time, trs.del_flag, trs.update_by, trs.update_time, trs.user_id,trs.user_name, trs.shop_id,
total_amount, trs.discount, trs.discount_amount, trs.real_amount, trs.already_earn, trs.no_earn, trs.pay_status, total_amount, trs.discount, trs.discount_amount, trs.real_amount, trs.already_earn, trs.no_earn, trs.pay_status,
status, trs.transport_type, trs.share_address, trs.receive_address, trs.province, trs.city, trs.area, trs.trans_company, status, trs.transport_type, trs.share_address, trs.receive_address, trs.province, trs.city, trs.area, trs.trans_company,
trans_company_name, trs.product_count trans_company_name, trs.product_count
@ -615,6 +631,7 @@
<select id="returnTotalAmountDetail" resultType="cc.hiver.mall.pojo.vo.ReturnTotalAmountDetailVo"> <select id="returnTotalAmountDetail" resultType="cc.hiver.mall.pojo.vo.ReturnTotalAmountDetailVo">
select select
id as return_sale_id, id as return_sale_id,
sale_id
create_by, create_by,
create_by_name, create_by_name,
user_id, user_id,
@ -655,7 +672,7 @@
<select id="getReturnSaleListByUserId" resultType="cc.hiver.mall.pojo.vo.ReturnSaleVo"> <select id="getReturnSaleListByUserId" resultType="cc.hiver.mall.pojo.vo.ReturnSaleVo">
select select
trs.id, trs.sale_id, trs.create_by, trs.create_time, trs.del_flag, trs.update_by, trs.update_time, trs.user_id,user_name, trs.shop_id, trs.id, trs.sale_id, trs.create_by, trs.create_by_name, trs.create_time, trs.del_flag, trs.update_by, trs.update_time, trs.user_id,user_name, trs.shop_id,
trs.total_amount, trs.discount, trs.discount_amount, trs.real_amount, trs.already_earn, trs.no_earn, trs.pay_status, trs.total_amount, trs.discount, trs.discount_amount, trs.real_amount, trs.already_earn, trs.no_earn, trs.pay_status,
trs.status, trs.transport_type, trs.share_address, trs.receive_address, trs.province, trs.city, trs.area, trs.trans_company, trs.status, trs.transport_type, trs.share_address, trs.receive_address, trs.province, trs.city, trs.area, trs.trans_company,
trs.trans_company_name, trs.product_count trs.trans_company_name, trs.product_count
@ -672,4 +689,5 @@
order by order by
trs.create_time desc trs.create_time desc
</select> </select>
</mapper> </mapper>

66
hiver-modules/hiver-mall/src/main/resources/mapper/SaleMapper.xml

@ -823,12 +823,14 @@ trans_company, company_name, product_count, remark, sale_name, company_phone, cr
ts.other_expense,ts.transport_type,ts.share_address,ts.receive_address,ts.province,ts.city,ts.area, ts.other_expense,ts.transport_type,ts.share_address,ts.receive_address,ts.province,ts.city,ts.area,
ts.trans_company,ts.company_name,ts.product_count,ts.remark,ts.sale_name,ts.company_phone,ts.create_by_phone,ts.mode_of_service, ts.trans_company,ts.company_name,ts.product_count,ts.remark,ts.sale_name,ts.company_phone,ts.create_by_phone,ts.mode_of_service,
ts.ai_flag,ts.ai_result,ts.ai_not_recognition, ts.ai_flag,ts.ai_result,ts.ai_not_recognition,
trs.return_sale_total_amount ,trs.return_sale_product_count trs.return_sale_total_amount ,trs.return_sale_product_count,
tdr.last_debt_amount
FROM FROM
t_sale ts t_sale ts
left join ( left join (
select n.sale_id,sum(n.total_amount) as return_sale_total_amount ,sum(n.product_count) as return_sale_product_count from t_sale m left join t_return_sale n on m.id = n.sale_id group by n.sale_id select n.sale_id,sum(n.total_amount) as return_sale_total_amount ,sum(n.product_count) as return_sale_product_count from t_sale m left join t_return_sale n on m.id = n.sale_id group by n.sale_id
) trs on ts.id = trs.sale_id ) trs on ts.id = trs.sale_id
left join t_dealings_record tdr ON ts.id = tdr.sale_id
<where> <where>
and ts.shop_id = #{saleVO.shopId} and ts.shop_id = #{saleVO.shopId}
<if test='saleVO.payStatus!=null'> <if test='saleVO.payStatus!=null'>
@ -837,6 +839,33 @@ trans_company, company_name, product_count, remark, sale_name, company_phone, cr
<if test='saleVO.payType!=null'> <if test='saleVO.payType!=null'>
and ts.pay_type = #{saleVO.payType} and ts.pay_type = #{saleVO.payType}
</if> </if>
<if test='saleVO.fromWhere!=null and saleVO.fromWhere.trim() neq ""'>
<!--哪个列表:
0:销售单:查询不是6待配货、7挂单的;
1:统计、客户拿货:查询不是2已作废、6待配货、7挂单的;
2:需要根据前台传递的status查询列表:6:待配货列表;7挂单列表-->
<if test='saleVO.fromWhere=="0"'>
and ts.status not in ('6','7')
</if>
<if test='saleVO.fromWhere=="1"'>
and ts.status not in ('2','6','7')
<!--开单仅退货的销售单,不记入查询-->
and ts.id in (select sale_id from t_sale_detail tsd
where tsd.shop_id = #{saleVO.shopId}
<if test='saleVO.startTime!=null'>
and tsd.create_time BETWEEN #{saleVO.startTime} AND #{saleVO.endTime}
</if>
)
</if>
<if test='saleVO.fromWhere=="2"'>
and ts.status = #{saleVO.status}
</if>
</if>
<if test='saleVO.fromWhere == null or saleVO.fromWhere.trim() eq ""'>
and ts.status not in ('6','7')
</if>
<if test='saleVO.status!=null'> <if test='saleVO.status!=null'>
and ts.status = #{saleVO.status} and ts.status = #{saleVO.status}
</if> </if>
@ -859,15 +888,19 @@ trans_company, company_name, product_count, remark, sale_name, company_phone, cr
<select id="getCustomerBuyProductLog" resultType="cc.hiver.mall.pojo.vo.CustomerBuyProductLogVo"> <select id="getCustomerBuyProductLog" resultType="cc.hiver.mall.pojo.vo.CustomerBuyProductLogVo">
SELECT SELECT
product_id,product_name,product_sn product_id,product_name,product_sn,
MAX(ts.create_time) AS latest_create_time
FROM FROM
t_sale_detail t_sale_detail
WHERE WHERE
shop_id = #{shopId} shop_id = #{salePageQuery.shopId}
and sale_id IN ( SELECT id FROM t_sale WHERE user_id = #{userId} and status not in ('2','6','7')) and sale_id IN ( SELECT id FROM t_sale WHERE user_id = #{salePageQuery.userId} and status not in ('2','6','7'))
<if test='salePageQuery.startDate !=null and salePageQuery.endDate !=null'>
and create_time BETWEEN #{salePageQuery.startDate} AND #{salePageQuery.endDate}
</if>
GROUP BY GROUP BY
product_id, product_name,product_sn product_id, product_name,product_sn
order by product_name desc order by latest_create_time desc
</select> </select>
<select id="getCustomerBuyProductLogDetailLog" resultType="cc.hiver.mall.pojo.vo.CustomerBuyProductDetailLogVo"> <select id="getCustomerBuyProductLogDetailLog" resultType="cc.hiver.mall.pojo.vo.CustomerBuyProductDetailLogVo">
@ -1078,6 +1111,13 @@ trans_company, company_name, product_count, remark, sale_name, company_phone, cr
on ts.id = cb.sale_id on ts.id = cb.sale_id
WHERE WHERE
ts.del_flag ='0' ts.del_flag ='0'
<!--开单仅退货的销售单,不记入查询-->
and ts.id in (select sale_id from t_sale_detail tsd
where tsd.shop_id = #{salePageQuery.shopId}
<if test='salePageQuery.startDate !=null and salePageQuery.endDate !=null'>
and tsd.create_time BETWEEN #{salePageQuery.startDate} AND #{salePageQuery.endDate}
</if>
)
<!--订单状态不为:2:已作废;分享页提交订单:6:待配货;挂单页提交订单:7:挂单--> <!--订单状态不为:2:已作废;分享页提交订单:6:待配货;挂单页提交订单:7:挂单-->
and ts.shop_id = #{salePageQuery.shopId} and ts.shop_id = #{salePageQuery.shopId}
and ts.status not in ( '2', '6', '7' ) and ts.status not in ( '2', '6', '7' )
@ -1104,14 +1144,14 @@ trans_company, company_name, product_count, remark, sale_name, company_phone, cr
<select id="totalAlreadyEarnDetail" resultType="cc.hiver.mall.pojo.vo.TotalAlreadyEarnDetailDayVo"> <select id="totalAlreadyEarnDetail" resultType="cc.hiver.mall.pojo.vo.TotalAlreadyEarnDetailDayVo">
select select
date(create_time) as payment_day, date(create_time) as payment_day,
sum(case when pay_type = '0' then real_amount else 0 end) as xianjin, sum(case when pay_type = '0' then already_earn else 0 end) as xianjin,
sum(case when pay_type = '1' then real_amount else 0 end) as weixin, sum(case when pay_type = '1' then already_earn else 0 end) as weixin,
sum(case when pay_type = '2' then real_amount else 0 end) as zhifubao, sum(case when pay_type = '2' then already_earn else 0 end) as zhifubao,
sum(case when pay_type = '3' then real_amount else 0 end) as yihangzhuanzhang, sum(case when pay_type = '3' then already_earn else 0 end) as yihangzhuanzhang,
sum(case when pay_type = '4' then real_amount else 0 end) as shouhuanma, sum(case when pay_type = '4' then already_earn else 0 end) as shouhuanma,
sum(case when pay_type = '5' then real_amount else 0 end) as yuliu_one, sum(case when pay_type = '5' then already_earn else 0 end) as yuliu_one,
sum(case when pay_type = '6' then real_amount else 0 end) as yuliu_two, sum(case when pay_type = '6' then already_earn else 0 end) as yuliu_two,
sum(case when pay_type = '7' then real_amount else 0 end) as yuliu_three sum(case when pay_type = '7' then already_earn else 0 end) as yuliu_three
from from
t_sale t_sale
WHERE WHERE

8
hiver-modules/hiver-mall/src/main/resources/mapper/StockMapper.xml

@ -663,4 +663,12 @@
and attribute_list = #{attributeList,jdbcType=VARCHAR} and attribute_list = #{attributeList,jdbcType=VARCHAR}
</where> </where>
</select> </select>
<select id="getProductStockByAttrId" resultMap="BaseResultMap">
SELECT
<include refid="Base_Column_List" />
FROM
t_stock s
where s.product_id = (select id from t_product where attr_id = #{attrId})
</select>
</mapper> </mapper>
Loading…
Cancel
Save