From b7bd409b7df74c4cd028e234b9f4b57921fb9e47 Mon Sep 17 00:00:00 2001 From: wangfukang <15630117759@163.com> Date: Mon, 1 Jul 2024 09:10:23 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BB=9F=E8=AE=A1=E9=A1=B5=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/application.yml | 9 +- hiver-admin/test-output/test-report.html | 16 +- .../constant/DealingsRecordConstant.java | 4 +- .../mall/bill/controller/BillController.java | 7 + .../mall/bill/vo/CustomerBillQueryVo.java | 3 + .../controller/LogiticsCompanyController.java | 2 +- .../mall/controller/PurchaseController.java | 23 ++- .../ReturnCommissionController.java | 4 +- .../mall/controller/ReturnSaleController.java | 62 ++++++- .../hiver/mall/controller/SaleController.java | 60 ++++++- .../hiver/mall/controller/ShopController.java | 2 +- .../mall/controller/SupplierControlller.java | 58 +++++- .../hiver/mall/dao/mapper/PurchaseMapper.java | 3 + .../mall/dao/mapper/ReturnDetailMapper.java | 13 ++ .../mall/dao/mapper/ReturnSaleMapper.java | 38 +++- .../cc/hiver/mall/dao/mapper/SaleMapper.java | 22 +++ .../mall/debt/controller/DebtController.java | 17 ++ .../hiver/mall/debt/service/DebtService.java | 5 +- .../debt/service/impl/DebtServiceImpl.java | 91 +++++++--- .../service/impl/DeductLogServiceImpl.java | 38 ++-- .../cc/hiver/mall/entity/ReturnDetail.java | 2 + .../java/cc/hiver/mall/entity/Supplier.java | 10 +- .../service/impl/InviteLogServiceImpl.java | 6 +- .../mall/pojo/query/PurchasePageQuery.java | 2 + .../mall/pojo/query/ReturnSalePageQuery.java | 15 ++ .../hiver/mall/pojo/query/SalePageQuery.java | 12 ++ .../pojo/query/SupplierQueryCriteria.java | 5 - .../mall/pojo/vo/CustomerSaleDetailVo.java | 28 +++ .../mall/pojo/vo/PurchasingCostDetailVo.java | 41 +++++ .../cc/hiver/mall/pojo/vo/ReturnSaleVo.java | 5 + .../pojo/vo/ReturnTotalAmountDetailVo.java | 39 ++++ .../pojo/vo/TotalAlreadyEarnDetailDayVo.java | 42 +++++ .../mall/pojo/vo/TotalAmountDetailVo.java | 39 ++++ .../impl/PurchaseOcrPictureServiceImpl.java | 2 +- .../hiver/mall/service/SupplierService.java | 3 +- .../mall/service/mybatis/PurchaseService.java | 10 ++ .../service/mybatis/ReturnDetailService.java | 12 ++ .../service/mybatis/ReturnSaleService.java | 32 +++- .../mall/service/mybatis/SaleService.java | 28 +++ .../SalesAndDetailsServiceImpl.java | 2 + .../SalesCalculateServiceImpl.java | 2 +- .../mall/serviceimpl/SupplierServiceImpl.java | 60 +++++-- .../mybatis/CustomerServiceImpl.java | 61 +++++-- .../mybatis/ProductCategoryServiceImpl.java | 31 ++-- .../mybatis/PurchaseServiceImpl.java | 10 ++ .../mybatis/ReturnDetailServiceImpl.java | 19 ++ .../mybatis/ReturnSaleServiceImpl.java | 168 +++++++++++++++++- .../serviceimpl/mybatis/SaleServiceImpl.java | 80 ++++++++- .../main/resources/mapper/PurchaseMapper.xml | 49 ++++- .../resources/mapper/ReturnDetailMapper.xml | 42 ++++- .../resources/mapper/ReturnSaleMapper.xml | 129 ++++++++++---- .../src/main/resources/mapper/SaleMapper.xml | 120 ++++++++++++- 52 files changed, 1380 insertions(+), 203 deletions(-) create mode 100644 hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/pojo/vo/CustomerSaleDetailVo.java create mode 100644 hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/pojo/vo/PurchasingCostDetailVo.java create mode 100644 hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/pojo/vo/ReturnTotalAmountDetailVo.java create mode 100644 hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/pojo/vo/TotalAlreadyEarnDetailDayVo.java create mode 100644 hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/pojo/vo/TotalAmountDetailVo.java diff --git a/hiver-admin/src/main/resources/application.yml b/hiver-admin/src/main/resources/application.yml index b3c3db9e..6db9ef34 100644 --- a/hiver-admin/src/main/resources/application.yml +++ b/hiver-admin/src/main/resources/application.yml @@ -317,11 +317,16 @@ ignored: - /hiver/app/stock/productCount # 选择物流公司 - /hiver/app/logitics/chooseCompany - # 下游客户查询商品购买记录 + # 根据客户id分页获取销售历史(按商品) - /hiver/app/sale/getCustomerBuyProductLog + # 客户对账单 + - /hiver/app/bill/getCustomerBill + # 根据客户id分页获取退货历史 + - /hiver/app/return/getReturnSaleListByUserId + # 根据客户id分页获取销售历史(按销售单) + - /hiver/app/sale/listPages # # 临时增加 - - /hiver/app/bill/getCustomerBill # 限流及黑名单不拦截的路径 limitUrls: - /**/*.js diff --git a/hiver-admin/test-output/test-report.html b/hiver-admin/test-output/test-report.html index 7f30c493..2943aacd 100644 --- a/hiver-admin/test-output/test-report.html +++ b/hiver-admin/test-output/test-report.html @@ -35,7 +35,7 @@ Hiver
  • - 28, 2024 09:09:27 + 01, 2024 00:15:38
  • @@ -84,7 +84,7 @@

    passTest

    -

    09:09:28 / 0.019 secs

    +

    00:15:38 / 0.018 secs

    @@ -92,9 +92,9 @@
    #test-id=1
    passTest
    -06.28.2024 09:09:28 -06.28.2024 09:09:28 -0.019 secs +07.01.2024 00:15:38 +07.01.2024 00:15:38 +0.018 secs
    @@ -104,7 +104,7 @@ Pass - 9:09:28 + 0:15:38 Test passed @@ -128,13 +128,13 @@

    Started

    -

    28, 2024 09:09:27

    +

    01, 2024 00:15:38

    Ended

    -

    28, 2024 09:09:28

    +

    01, 2024 00:15:38

    diff --git a/hiver-core/src/main/java/cc/hiver/core/common/constant/DealingsRecordConstant.java b/hiver-core/src/main/java/cc/hiver/core/common/constant/DealingsRecordConstant.java index 5b4ff79d..e6fd2343 100644 --- a/hiver-core/src/main/java/cc/hiver/core/common/constant/DealingsRecordConstant.java +++ b/hiver-core/src/main/java/cc/hiver/core/common/constant/DealingsRecordConstant.java @@ -13,8 +13,8 @@ public interface DealingsRecordConstant { Integer[] TYPE = {0, 1}; /** - * 交易类型:0:开单;1:退货;2:回款 + * 交易类型:0:开单;1:退货(应该是没用到);2:回款,3:新增客户/供应商欠款,4:充值;5:追加欠款;6:撤销订单; */ - Integer[] DEALINGS_TYPE = {0, 1, 2}; + Integer[] DEALINGS_TYPE = {0, 1, 2, 3, 4, 5, 6}; } diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/bill/controller/BillController.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/bill/controller/BillController.java index b306aeab..89d33d9d 100644 --- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/bill/controller/BillController.java +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/bill/controller/BillController.java @@ -8,6 +8,7 @@ import cc.hiver.mall.bill.vo.CustomerBillQueryVo; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @@ -40,6 +41,12 @@ public class BillController { @PostMapping("/getCustomerBill") @ApiOperation("获取客户对账单") public Result getCustomerBill(@RequestBody CustomerBillQueryVo customerBillQueryVo) { + if(StringUtils.isEmpty(customerBillQueryVo.getCustomerId())){ + return ResultUtil.error("客户id不能为空"); + } + if(StringUtils.isEmpty(customerBillQueryVo.getShopId())){ + return ResultUtil.error("店铺id不能为空"); + } try { final CustomerBillDataVo customerBill = billService.getCustomerBill(customerBillQueryVo); return new ResultUtil<>().setData(customerBill); diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/bill/vo/CustomerBillQueryVo.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/bill/vo/CustomerBillQueryVo.java index 96e5ebdc..0e189bef 100644 --- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/bill/vo/CustomerBillQueryVo.java +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/bill/vo/CustomerBillQueryVo.java @@ -15,6 +15,9 @@ public class CustomerBillQueryVo extends HiverBasePageQuery { @ApiModelProperty(value = "客户id") private String customerId; + @ApiModelProperty(value = "店铺id") + private String shopId; + @ApiModelProperty(value = "开始时间") private String startDate; diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/LogiticsCompanyController.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/LogiticsCompanyController.java index 80f4da57..c42ced08 100644 --- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/LogiticsCompanyController.java +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/LogiticsCompanyController.java @@ -148,7 +148,7 @@ public class LogiticsCompanyController { rechargeService.save(recharge); final LogiticsCompany oldLogiticsCompany = companyService.findById(company.getId()); - final BigDecimal oldCompanyDepoBal = oldLogiticsCompany.getDepoBal() == null ? BigDecimal.valueOf(0) : oldLogiticsCompany.getDepoBal(); + final BigDecimal oldCompanyDepoBal = oldLogiticsCompany.getDepoBal() == null ? BigDecimal.ZERO : oldLogiticsCompany.getDepoBal(); company.setDepoBal(oldCompanyDepoBal.add(company.getDepoNum())); company.setDepoNum(new BigDecimal(0)); } diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/PurchaseController.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/PurchaseController.java index 02796cf2..4bc74fac 100644 --- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/PurchaseController.java +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/PurchaseController.java @@ -11,6 +11,7 @@ import cc.hiver.mall.entity.PurchaseDetail; import cc.hiver.mall.pojo.dto.DebtSupplier; import cc.hiver.mall.pojo.query.PurchasePageQuery; import cc.hiver.mall.pojo.vo.PurchaseVo; +import cc.hiver.mall.pojo.vo.PurchasingCostDetailVo; import cc.hiver.mall.service.mybatis.PurchaseDetailService; import cc.hiver.mall.service.mybatis.PurchaseService; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -21,10 +22,7 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.ObjectUtils; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import java.math.BigDecimal; import java.util.List; @@ -275,4 +273,21 @@ public class PurchaseController { final PurchaseVo purchaseVo = purchaseService.getPurchaseAllDataOfAi(id); return new ResultUtil().setData(purchaseVo); } + /** + * 进货金额可查明细 + * @author 王富康 + * @date 2024/6/29 + * @param purchasePageQuery + * @return Result + */ + @PostMapping("/purchasingCostDetail") + public Result purchasingCostDetail(@RequestBody PurchasePageQuery purchasePageQuery) { + try { + final Page purchasingCostDetail = purchaseService.purchasingCostDetail(purchasePageQuery); + return new ResultUtil<>().setData(purchasingCostDetail); + } catch (Exception e) { + log.info(e.getMessage(),e); + return ResultUtil.error("查询失败"); + } + } } diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/ReturnCommissionController.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/ReturnCommissionController.java index 9fdf9612..243edbd5 100644 --- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/ReturnCommissionController.java +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/ReturnCommissionController.java @@ -103,7 +103,7 @@ public class ReturnCommissionController { if(returnCommission.getCommission() == null ){ return ResultUtil.error("提现金额不能为空!"); } - if(returnCommission.getCommission().compareTo(BigDecimal.valueOf(0)) == 0){ + if(returnCommission.getCommission().compareTo(BigDecimal.ZERO) == 0){ return ResultUtil.error("提现金额不能为0!"); } if(StringUtils.isEmpty(returnCommission.getAliName())){ @@ -116,7 +116,7 @@ public class ReturnCommissionController { boolean result = false; String aliResult = ""; final Shop shop = shopService.findById(shopId); - if(shop.getYearFee() == null || shop.getYearFee().compareTo(BigDecimal.valueOf(0)) == 0){ + if(shop.getYearFee() == null || shop.getYearFee().compareTo(BigDecimal.ZERO) == 0){ return ResultUtil.error("店铺处于试用期,不能提现!"); } //支付宝户名(姓名) diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/ReturnSaleController.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/ReturnSaleController.java index 9497ba7e..129000ca 100644 --- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/ReturnSaleController.java +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/ReturnSaleController.java @@ -16,10 +16,7 @@ import cc.hiver.mall.pojo.dto.SaleDetailDTO; import cc.hiver.mall.pojo.dto.SaleDetailQueryDTO; import cc.hiver.mall.pojo.dto.SaleReturnDTO; import cc.hiver.mall.pojo.query.ReturnSalePageQuery; -import cc.hiver.mall.pojo.vo.ReturnSaleVo; -import cc.hiver.mall.pojo.vo.SaleComVO; -import cc.hiver.mall.pojo.vo.SaleQueryVO; -import cc.hiver.mall.pojo.vo.SaleReturnVO; +import cc.hiver.mall.pojo.vo.*; import cc.hiver.mall.service.*; import cc.hiver.mall.service.mybatis.*; import cn.hutool.core.text.CharSequenceUtil; @@ -465,11 +462,64 @@ public class ReturnSaleController { return new ResultUtil>().setData(result); } + /** + * 根据商品id分页获取退货历史 + * + * @param returnSalePageQuery + * @return Result + * @author 王富康 + * @date 2024/6/29 + */ @RequestMapping(value = "/getReturnSaleListByProductId", method = RequestMethod.POST) @ApiOperation("根据商品id分页获取退货历史") - public Result getReturnSaleListByProductId(ReturnSalePageQuery returnSalePageQuery) { + public Result getReturnSaleListByProductId(@RequestBody ReturnSalePageQuery returnSalePageQuery) { + if(StringUtils.isEmpty(returnSalePageQuery.getProductId())){ + return ResultUtil.error("商品id不能为空"); + } + // 分页获取销售单历史 + final Page salePage = returnSaleService.getReturnSaleListByProductId(returnSalePageQuery); + return ResultUtil.data(salePage); + } + + /** + * 根据客户id分页获取退货历史 + * + * @param returnSalePageQuery + * @return Result + * @author 王富康 + * @date 2024/6/29 + */ + @RequestMapping(value = "/getReturnSaleListByUserId", method = RequestMethod.POST) + @ApiOperation("根据客户id分页获取退货历史") + public Result getReturnSaleListByUserId(@RequestBody ReturnSalePageQuery returnSalePageQuery) { + if(StringUtils.isEmpty(returnSalePageQuery.getUserId())){ + return ResultUtil.error("客户id不能为空"); + } + + if(StringUtils.isEmpty(returnSalePageQuery.getShopId())){ + return ResultUtil.error("店铺id不能为空"); + } // 分页获取销售单历史 - final Page salePage = returnSaleService.getReturnSaleListByProductId(returnSalePageQuery); + final Page salePage = returnSaleService.getReturnSaleListByUserId(returnSalePageQuery); return ResultUtil.data(salePage); } + + /** + * 退货金额明细 + * + * @param returnSalePageQuery + * @return Result + * @author 王富康 + * @date 2024/6/29 + */ + @PostMapping("/returnTotalAmountDetail") + public Result returnTotalAmountDetail(@RequestBody ReturnSalePageQuery returnSalePageQuery) { + try { + final Page returnTotalAmountDetail = returnSaleService.returnTotalAmountDetail(returnSalePageQuery); + return new ResultUtil<>().setData(returnTotalAmountDetail); + } catch (Exception e) { + log.info(e.getMessage(), e); + return ResultUtil.error("查询失败"); + } + } } diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/SaleController.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/SaleController.java index 4914ce63..d2c4bdbc 100644 --- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/SaleController.java +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/SaleController.java @@ -226,7 +226,7 @@ public class SaleController { final BigDecimal debtDeductionAmount = saleQueryDTO.getSale().getDebtDeductionAmount(); // 余额抵扣金额 final BigDecimal balanceDeductionAmount = saleQueryDTO.getSale().getBalanceDeductionAmount(); - if (noEarn.compareTo(BigDecimal.valueOf(0)) != 0 || debtDeductionAmount.compareTo(BigDecimal.valueOf(0)) != 0 || balanceDeductionAmount.compareTo(BigDecimal.valueOf(0)) != 0) { + if (noEarn.compareTo(BigDecimal.ZERO) != 0 || debtDeductionAmount.compareTo(BigDecimal.ZERO) != 0 || balanceDeductionAmount.compareTo(BigDecimal.ZERO) != 0) { debtService.saleToDebt(saleQueryDTO); } return new ResultUtil<>().setData(sale.getId(), "下单成功"); @@ -979,6 +979,9 @@ public class SaleController { @RequestMapping(value = "/getCustomerBuyProductLog", method = RequestMethod.POST) @ApiOperation("下游客户查询商品购买记录") public Result getCustomerBuyProductLog(@RequestBody SalePageQuery salePageQuery) { + if(StringUtils.isEmpty(salePageQuery.getShopId())){ + return ResultUtil.error("店铺id不能为空"); + } final Page salePage = saleService.getCustomerBuyProductLog(salePageQuery); return ResultUtil.data(salePage); } @@ -1099,4 +1102,59 @@ public class SaleController { return ResultUtil.error("撤销失败!"); } } + + /** + * 点击销售金额,查询销售明细 + * + * @param salePageQuery + * @return Result + * @author 王富康 + * @date 2024/6/29 + */ + @PostMapping("/totalAmountDetail") + public Result totalAmountDetail(@RequestBody SalePageQuery salePageQuery) { + try { + final Page totalAmountDetail = saleService.totalAmountDetail(salePageQuery); + return new ResultUtil<>().setData(totalAmountDetail); + } catch (Exception e) { + log.info(e.getMessage(),e); + return ResultUtil.error("查询失败"); + } + } + + /** + * 实收金额明细 + * @author 王富康 + * @date 2024/6/29 + * @param salePageQuery + * @return Result + */ + @PostMapping("/totalAlreadyEarnDetail") + public Result totalAlreadyEarnDetail(@RequestBody SalePageQuery salePageQuery) { + try { + final Page totalAlreadyEarnDetail = saleService.totalAlreadyEarnDetail(salePageQuery); + return new ResultUtil<>().setData(totalAlreadyEarnDetail); + } catch (Exception e) { + log.info(e.getMessage(),e); + return ResultUtil.error("查询失败"); + } + } + + /** + * 客户拿货统计 + * @author 王富康 + * @date 2024/6/29 + * @param salePageQuery + * @return Result + */ + @PostMapping("/customerSaleDetail") + public Result customerSaleDetail(@RequestBody SalePageQuery salePageQuery) { + try { + final Page customerSaleDetail = saleService.customerSaleDetail(salePageQuery); + return new ResultUtil<>().setData(customerSaleDetail); + } catch (Exception e) { + log.info(e.getMessage(),e); + return ResultUtil.error("查询失败"); + } + } } diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/ShopController.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/ShopController.java index 9152a901..31a3806a 100644 --- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/ShopController.java +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/ShopController.java @@ -171,7 +171,7 @@ public class ShopController { } // 设置返佣 - if (shop.getYearFee() != null && shop.getYearFee().compareTo(BigDecimal.valueOf(0)) > 0) { + if (shop.getYearFee() != null && shop.getYearFee().compareTo(BigDecimal.ZERO) > 0) { inviteLogService.updateInviteLogIsOpen(shop.getId()); } return ResultUtil.success("编辑成功"); diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/SupplierControlller.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/SupplierControlller.java index 9dda7388..addab516 100644 --- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/SupplierControlller.java +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/SupplierControlller.java @@ -1,14 +1,20 @@ package cc.hiver.mall.controller; import cc.hiver.core.common.constant.CommonConstant; +import cc.hiver.core.common.constant.DealingsRecordConstant; import cc.hiver.core.common.utils.PageUtil; import cc.hiver.core.common.utils.ResultUtil; import cc.hiver.core.common.utils.SecurityUtil; import cc.hiver.core.common.vo.PageVo; import cc.hiver.core.common.vo.Result; +import cc.hiver.core.entity.User; +import cc.hiver.mall.debt.constant.DebtConstant; +import cc.hiver.mall.debt.entity.Debt; +import cc.hiver.mall.debt.service.DebtService; +import cc.hiver.mall.entity.DealingsRecord; import cc.hiver.mall.entity.Supplier; -import cc.hiver.mall.pojo.query.SupplierQueryCriteria; import cc.hiver.mall.service.SupplierService; +import cc.hiver.mall.service.mybatis.DealingsRecordService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; @@ -17,6 +23,8 @@ import org.springframework.data.domain.Page; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; +import java.math.BigDecimal; +import java.util.Date; import java.util.List; @Slf4j @@ -31,13 +39,19 @@ public class SupplierControlller { @Autowired private SecurityUtil securityUtil; + @Autowired + private DebtService debtService; + + @Autowired + private DealingsRecordService dealingsRecordService; + @RequestMapping(value = "/getByCondition", method = RequestMethod.POST) @ApiOperation(value = "根据条件获得分页") - public Result> queryAll(SupplierQueryCriteria criteria, PageVo pageVo) { + public Result> queryAll(Supplier supplierOfquery, PageVo pageVo) { // 从缓存中拿到店铺id final String shopId = securityUtil.getShopId(); - criteria.setShopId(shopId); - Page users = supplierService.queryAll(criteria, PageUtil.initPage(pageVo)); + supplierOfquery.setShopId(shopId); + Page users = supplierService.queryAll(supplierOfquery, PageUtil.initPage(pageVo)); return new ResultUtil>().setData(users); } @@ -70,8 +84,40 @@ public class SupplierControlller { final String shopId = securityUtil.getShopId(); entity.setShopId(shopId); entity.setDelFlag(CommonConstant.DEL_FLAG_FALSE); - Supplier address = supplierService.save(entity); - return new ResultUtil().setData(address); + Supplier supplier = supplierService.save(entity); + // 新增供应商欠款 + // 客户欠款信息 + final BigDecimal noEarn = entity.getNoEarn() == null ? BigDecimal.ZERO : entity.getNoEarn(); + final Debt debt = new Debt(); + debt.setUserId(supplier.getId()); + debt.setUserName(supplier.getConsigneeName()); + debt.setAmountOwed(noEarn); + debt.setUserType(DebtConstant.USER_TYPE[1]); + debtService.save(debt); + // 新增交易记录 + // 2. 新增欠款记录 + final User user = securityUtil.getCurrUser(); + final DealingsRecord dealingsRecord = new DealingsRecord(); + dealingsRecord.setCreateBy(user.getId()); + dealingsRecord.setCreateByName(user.getNickname()); + dealingsRecord.setCreateTime(new Date()); + dealingsRecord.setDealingsUserId(supplier.getId()); + dealingsRecord.setDealingsUserName(supplier.getConsigneeName()); + dealingsRecord.setUserType(DealingsRecordConstant.TYPE[1]); + dealingsRecord.setDealingsWay("新增供应商欠款"); + dealingsRecord.setShopId(shopId); + // 销售金额 + dealingsRecord.setSaleAmount(BigDecimal.ZERO); + // 退货金额 + dealingsRecord.setReturnAmount(BigDecimal.ZERO); + // 上次欠款 + dealingsRecord.setLastDebtAmount(BigDecimal.ZERO); + // 最新欠款 + dealingsRecord.setBalanceDue(noEarn); + dealingsRecord.setAmount(noEarn); + dealingsRecord.setDealingsType(DealingsRecordConstant.DEALINGS_TYPE[3]); + dealingsRecordService.save(dealingsRecord); + return new ResultUtil().setData(supplier); } @RequestMapping(value = "/edit", method = RequestMethod.POST) diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/dao/mapper/PurchaseMapper.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/dao/mapper/PurchaseMapper.java index b7638639..5eed1d5c 100644 --- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/dao/mapper/PurchaseMapper.java +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/dao/mapper/PurchaseMapper.java @@ -4,6 +4,7 @@ import cc.hiver.mall.entity.Purchase; import cc.hiver.mall.entity.PurchaseExample; import cc.hiver.mall.pojo.dto.DebtSupplier; import cc.hiver.mall.pojo.query.PurchasePageQuery; +import cc.hiver.mall.pojo.vo.PurchasingCostDetailVo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.apache.ibatis.annotations.Param; @@ -46,4 +47,6 @@ public interface PurchaseMapper extends BaseMapper { void updateInStorageStatus(@Param("id")String id,@Param("inStorageStatus") int inStorageStatus); void deleteByPurchaseId(@Param("id") String id); + + Page purchasingCostDetail(Page page,@Param("purchasePageQuery") PurchasePageQuery purchasePageQuery); } \ No newline at end of file diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/dao/mapper/ReturnDetailMapper.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/dao/mapper/ReturnDetailMapper.java index ec8e0aee..ce723d3b 100644 --- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/dao/mapper/ReturnDetailMapper.java +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/dao/mapper/ReturnDetailMapper.java @@ -2,6 +2,7 @@ package cc.hiver.mall.dao.mapper; import cc.hiver.mall.entity.ReturnDetail; import cc.hiver.mall.entity.ReturnDetailExample; +import cc.hiver.mall.pojo.query.ReturnSalePageQuery; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Repository; @@ -33,4 +34,16 @@ public interface ReturnDetailMapper extends BaseMapper { int updateByPrimaryKey(ReturnDetail record); List getReturnDetails(@Param("saleIdList") List saleIdList); + + /** + * 根据商品id分页获取退货历史 + * + * @param returnSalePageQuery + * @return List + * @author 王富康 + * @date 2024/6/29 + */ + List getReturnDetailsByProductId(@Param("returnSalePageQuery") ReturnSalePageQuery returnSalePageQuery); + + List getReturnDetailsByReturnId(@Param("returnSaleIdList") List returnSaleIdList); } \ No newline at end of file diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/dao/mapper/ReturnSaleMapper.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/dao/mapper/ReturnSaleMapper.java index 1395edd8..75c9a4e5 100644 --- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/dao/mapper/ReturnSaleMapper.java +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/dao/mapper/ReturnSaleMapper.java @@ -4,8 +4,9 @@ import cc.hiver.mall.bill.vo.ArrearsVo; import cc.hiver.mall.bill.vo.CustomerBillQueryVo; import cc.hiver.mall.entity.ReturnSale; import cc.hiver.mall.entity.ReturnSaleExample; -import cc.hiver.mall.pojo.dto.SaleReturnDTO; +import cc.hiver.mall.pojo.query.ReturnSalePageQuery; import cc.hiver.mall.pojo.vo.ReturnSaleVo; +import cc.hiver.mall.pojo.vo.ReturnTotalAmountDetailVo; import cc.hiver.mall.pojo.vo.SaleAllVO; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -13,6 +14,7 @@ import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Repository; import java.util.List; + @Repository public interface ReturnSaleMapper extends BaseMapper { long countByExample(ReturnSaleExample example); @@ -43,9 +45,39 @@ public interface ReturnSaleMapper extends BaseMapper { ReturnSale getBySaleId(String id); - List getReturnSaleList(Page page,@Param("queryParams") ReturnSaleVo returnSaleVo); + List getReturnSaleList(Page page, @Param("queryParams") ReturnSaleVo returnSaleVo); ArrearsVo getTotalReturn(@Param("customerBillQueryVo") CustomerBillQueryVo customerBillQueryVo); - Page getReturnSaleListByProductId(Page page,@Param("productId") String productId); + /** + * 根据商品id分页获取退货历史 + * + * @param page + * @return Page + * @author 王富康 + * @date 2024/6/29 + */ + Page getReturnSaleListByProductId(Page page, @Param("returnSalePageQuery") ReturnSalePageQuery returnSalePageQuery); + + /** + * 退货金额明细 + * + * @param page + * @param returnSalePageQuery + * @return Page + * @author 王富康 + * @date 2024/6/29 + */ + Page returnTotalAmountDetail(Page page, @Param("returnSalePageQuery") ReturnSalePageQuery returnSalePageQuery); + + /** + * 根据客户id分页获取退货历史 + * + * @param page + * @param returnSalePageQuery + * @return Page + * @author 王富康 + * @date 2024/6/30 + */ + Page getReturnSaleListByUserId(Page page, @Param("returnSalePageQuery") ReturnSalePageQuery returnSalePageQuery); } \ No newline at end of file diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/dao/mapper/SaleMapper.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/dao/mapper/SaleMapper.java index 85ac29c6..4974cbd0 100644 --- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/dao/mapper/SaleMapper.java +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/dao/mapper/SaleMapper.java @@ -91,4 +91,26 @@ public interface SaleMapper extends BaseMapper { Page getCustomerBill(Page page,@Param("customerBillQueryVo") CustomerBillQueryVo customerBillQueryVo); ArrearsVo getArrearsAndTotalSale( @Param("customerBillQueryVo") CustomerBillQueryVo customerBillQueryVo); + + Page totalAmountDetail(Page page, @Param("salePageQuery") SalePageQuery salePageQuery); + + /** + * 实收金额明细 + * @author 王富康 + * @date 2024/6/29 + * @param page + * @param salePageQuery + * @return List + */ + Page totalAlreadyEarnDetail(Page page,@Param("salePageQuery") SalePageQuery salePageQuery); + + /** + * 客户拿货统计 + * @author 王富康 + * @date 2024/6/29 + * @param page + * @param salePageQuery + * @return Page + */ + Page customerSaleDetail(Page page,@Param("salePageQuery") SalePageQuery salePageQuery); } \ No newline at end of file diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/debt/controller/DebtController.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/debt/controller/DebtController.java index 7100fa79..7916cbe9 100644 --- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/debt/controller/DebtController.java +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/debt/controller/DebtController.java @@ -60,4 +60,21 @@ public class DebtController { } return new ResultUtil<>().setData(saveOrUpdateDebt); } + + /** + * 充值;正数是减少欠款,负数是追加欠款 + * @author 王富康 + * @date 2024/6/30 + * @param debt + * @return Result + */ + @RequestMapping(value = "/recharge", method = RequestMethod.POST) + @ApiOperation("充值") + public Result recharge(@RequestBody Debt debt) { + final Debt saveOrUpdateDebt = debtService.recharge(debt); + if(saveOrUpdateDebt == null){ + return new ResultUtil<>().setErrorMsg("查询欠款用户信息失败!"); + } + return new ResultUtil<>().setData(saveOrUpdateDebt); + } } diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/debt/service/DebtService.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/debt/service/DebtService.java index dcfd5b4d..00954e76 100644 --- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/debt/service/DebtService.java +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/debt/service/DebtService.java @@ -4,10 +4,11 @@ import cc.hiver.mall.debt.entity.Debt; import cc.hiver.mall.debt.vo.QueryDebtVo; import cc.hiver.mall.pojo.dto.SaleQueryDTO; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; import java.util.List; -public interface DebtService { +public interface DebtService extends IService { /** * 根据店铺id查询欠款列表 @@ -60,4 +61,6 @@ public interface DebtService { * @return Debt */ Debt selectByUserId(String userId); + + Debt recharge(Debt debt); } diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/debt/service/impl/DebtServiceImpl.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/debt/service/impl/DebtServiceImpl.java index c0b4e9df..76a5681b 100644 --- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/debt/service/impl/DebtServiceImpl.java +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/debt/service/impl/DebtServiceImpl.java @@ -77,10 +77,10 @@ public class DebtServiceImpl extends ServiceImpl implements De String userType = debt.getUserType(); String dealingsUserId = ""; String dealingsUserName = ""; - if(DebtConstant.USER_TYPE[0].equals(userType)){ + if (DebtConstant.USER_TYPE[0].equals(userType)) { //客户欠款 final Customer customer = customerService.getById(userId); - if(customer == null){ + if (customer == null) { return null; } dealingsUserId = customer.getId(); @@ -89,10 +89,10 @@ public class DebtServiceImpl extends ServiceImpl implements De debt.setUserName(customer.getName()); debt.setUserPhone(customer.getPhone()); debt.setUserAdress(customer.getAddress()); - }else{ + } else { // 供应商信息 final Supplier supplier = supplierService.findById(userId); - if(supplier == null){ + if (supplier == null) { return null; } dealingsUserId = supplier.getId(); @@ -105,8 +105,8 @@ public class DebtServiceImpl extends ServiceImpl implements De final Debt oldDebt = debtMapper.selectByUserId(shopId, userId); String dealingsWay = ""; - BigDecimal lastDebtAmount = BigDecimal.valueOf(0); - BigDecimal newDebtAmount = BigDecimal.valueOf(0); + BigDecimal lastDebtAmount = BigDecimal.ZERO; + BigDecimal newDebtAmount = BigDecimal.ZERO; if (oldDebt == null) { dealingsWay = "新增欠款"; // 新增 @@ -114,7 +114,7 @@ public class DebtServiceImpl extends ServiceImpl implements De newDebtAmount = debt.getAmountOwed(); } else { dealingsWay = "回款"; - lastDebtAmount = oldDebt.getAmountOwed(); + lastDebtAmount = oldDebt.getAmountOwed() == null ? BigDecimal.ZERO : oldDebt.getAmountOwed(); // 计算欠款 newDebtAmount = oldDebt.getAmountOwed().subtract(debt.getAmountOwed()); oldDebt.setAmountOwed(newDebtAmount); @@ -165,26 +165,26 @@ public class DebtServiceImpl extends ServiceImpl implements De debt.setUserPhone(customer.getPhone()); debt.setUserAdress(customer.getAddress()); // 本单欠款 - BigDecimal noEarn = saleQueryDTO.getSale().getNoEarn() == null ? BigDecimal.valueOf(0) : saleQueryDTO.getSale().getNoEarn(); + BigDecimal noEarn = saleQueryDTO.getSale().getNoEarn() == null ? BigDecimal.ZERO : saleQueryDTO.getSale().getNoEarn(); debt.setAmountOwed(noEarn); debt.setUserType(DebtConstant.USER_TYPE[0]); final String shopId = securityUtil.getShopId(); debt.setShopId(shopId); final String userId = saleQueryDTO.getSale().getUserId(); final Debt oldDebt = debtMapper.selectByUserId(shopId, userId); - BigDecimal lastDebtAmount = BigDecimal.valueOf(0); + BigDecimal lastDebtAmount = BigDecimal.ZERO; BigDecimal newDebtAmount; // 欠款抵扣,需要单独从欠款中减掉 - final BigDecimal debtDeductionAmount = saleQueryDTO.getSale().getDebtDeductionAmount() == null ? BigDecimal.valueOf(0) : saleQueryDTO.getSale().getDebtDeductionAmount(); + final BigDecimal debtDeductionAmount = saleQueryDTO.getSale().getDebtDeductionAmount() == null ? BigDecimal.ZERO : saleQueryDTO.getSale().getDebtDeductionAmount(); // 余额抵扣,需要从欠款中减掉 - final BigDecimal balanceDeductionAmount = saleQueryDTO.getSale().getBalanceDeductionAmount() == null ? BigDecimal.valueOf(0) : saleQueryDTO.getSale().getBalanceDeductionAmount(); + final BigDecimal balanceDeductionAmount = saleQueryDTO.getSale().getBalanceDeductionAmount() == null ? BigDecimal.ZERO : saleQueryDTO.getSale().getBalanceDeductionAmount(); if (oldDebt == null) { // 新增 debtMapper.insert(debt); newDebtAmount = debt.getAmountOwed(); } else { - lastDebtAmount = oldDebt.getAmountOwed(); + lastDebtAmount = oldDebt.getAmountOwed() == null ? BigDecimal.ZERO : oldDebt.getAmountOwed(); // 计算欠款 newDebtAmount = oldDebt.getAmountOwed().add(debt.getAmountOwed()).subtract(debtDeductionAmount).add(balanceDeductionAmount); oldDebt.setAmountOwed(newDebtAmount); @@ -202,17 +202,17 @@ public class DebtServiceImpl extends ServiceImpl implements De dealingsRecord.setDealingsWay("开单"); dealingsRecord.setShopId(shopId); // 销售金额 - if(!saleQueryDTO.getSaleDetailList().isEmpty()){ + if (!saleQueryDTO.getSaleDetailList().isEmpty()) { dealingsRecord.setSaleAmount(saleQueryDTO.getSale().getTotalAmount()); - }else{ - dealingsRecord.setSaleAmount(BigDecimal.valueOf(0)); + } else { + dealingsRecord.setSaleAmount(BigDecimal.ZERO); } // 退货金额 - if(saleQueryDTO.getSaleReturnDTO() != null){ + if (saleQueryDTO.getSaleReturnDTO() != null) { dealingsRecord.setReturnAmount(saleQueryDTO.getSaleReturnDTO().getReturnSale().getTotalAmount()); - }else{ - dealingsRecord.setReturnAmount(BigDecimal.valueOf(0)); + } else { + dealingsRecord.setReturnAmount(BigDecimal.ZERO); } // 上次欠款 dealingsRecord.setLastDebtAmount(lastDebtAmount); @@ -227,7 +227,58 @@ public class DebtServiceImpl extends ServiceImpl implements De public List getDebtByUserIds(List userIds) { return debtMapper.getDebtByUserIds(userIds); } - public Debt selectByUserId(String userId){ - return debtMapper.selectByUserId(securityUtil.getShopId(),userId); + + public Debt selectByUserId(String userId) { + return debtMapper.selectByUserId(securityUtil.getShopId(), userId); + } + + @Override + public Debt recharge(Debt debt) { + final String shopId = securityUtil.getShopId(); + debt.setShopId(shopId); + final String userId = debt.getUserId(); + final User user = securityUtil.getCurrUser(); + Integer dealingsType = DealingsRecordConstant.DEALINGS_TYPE[4]; + String dealingsWay = ""; + if (debt.getAmountOwed().compareTo(BigDecimal.ZERO) > 0) { + dealingsWay = "充值"; + dealingsType = DealingsRecordConstant.DEALINGS_TYPE[4]; + + } else { + dealingsWay = "追加欠款"; + dealingsType = DealingsRecordConstant.DEALINGS_TYPE[5]; + } + + final Debt oldDebt = debtMapper.selectByUserId(shopId, userId); + + BigDecimal lastDebtAmount = BigDecimal.ZERO; + BigDecimal newDebtAmount = BigDecimal.ZERO; + lastDebtAmount = oldDebt.getAmountOwed() == null ? BigDecimal.ZERO : oldDebt.getAmountOwed(); + // 计算欠款 + newDebtAmount = oldDebt.getAmountOwed().subtract(debt.getAmountOwed()); + oldDebt.setAmountOwed(newDebtAmount); + debtMapper.updateById(oldDebt); + // 2. 新增欠款记录 + // 创建人 + final DealingsRecord dealingsRecord = new DealingsRecord(); + dealingsRecord.setCreateBy(user.getId()); + dealingsRecord.setCreateByName(user.getNickname()); + dealingsRecord.setCreateTime(new Date()); + dealingsRecord.setDealingsUserId(oldDebt.getUserId()); + dealingsRecord.setDealingsUserName(oldDebt.getUserName()); + dealingsRecord.setDealingsWay(dealingsWay); + dealingsRecord.setShopId(shopId); + // 上次欠款 + dealingsRecord.setLastDebtAmount(lastDebtAmount); + // 最新欠款 + dealingsRecord.setBalanceDue(newDebtAmount); + // 金额 + dealingsRecord.setAmount(debt.getAmountOwed()); + // 充值 + dealingsRecord.setDealingsType(dealingsType); + + dealingsRecord.setUserType(DealingsRecordConstant.TYPE[1]); + dealingsRecordService.save(dealingsRecord); + return debt; } } diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/deductlog/service/impl/DeductLogServiceImpl.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/deductlog/service/impl/DeductLogServiceImpl.java index 4d34cac4..22f62d7c 100644 --- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/deductlog/service/impl/DeductLogServiceImpl.java +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/deductlog/service/impl/DeductLogServiceImpl.java @@ -111,26 +111,26 @@ public class DeductLogServiceImpl extends ServiceImpl0){ + if(workerFixedAmount.compareTo(BigDecimal.ZERO)>0){ // 固定扣减金额大于0,才去更新,否则,没变化不用更新 workerService.update(worker); } @@ -138,10 +138,10 @@ public class DeductLogServiceImpl extends ServiceImpl0){ + if(companyFixedAmount.compareTo(BigDecimal.ZERO)>0){ companyService.update(logiticsCompany); } } } // 如果拉包工的返佣金额或者物流公司的返佣金额任意之一大于0,才去更新,店铺返佣金额,及更新记录 - if(companyRebateAmount.compareTo(BigDecimal.valueOf(0))>0 ||workerRebateAmount.compareTo(BigDecimal.valueOf(0))>0){ + if(companyRebateAmount.compareTo(BigDecimal.ZERO)>0 ||workerRebateAmount.compareTo(BigDecimal.ZERO)>0){ // 获取店铺信息 final Shop shop = shopService.findById(shopId); final String shopName = shop.getShopName(); // 返佣金额 - final BigDecimal shopBefRebateAmount = shop.getRebateAmount() == null ? BigDecimal.valueOf(0) : shop.getRebateAmount(); + final BigDecimal shopBefRebateAmount = shop.getRebateAmount() == null ? BigDecimal.ZERO : shop.getRebateAmount(); // 本次返佣金额 final BigDecimal shopRebateAmount = companyRebateAmount.add(workerRebateAmount); // 返佣后金额 @@ -204,7 +204,7 @@ public class DeductLogServiceImpl extends ServiceImpl 0) { + if (shopBefRebateAmount.compareTo(BigDecimal.ZERO) > 0) { // 返佣金额大于0的时候再保存返佣记录 saveDeductLog(deductLog); } diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/entity/ReturnDetail.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/entity/ReturnDetail.java index a9f4398b..732128f8 100644 --- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/entity/ReturnDetail.java +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/entity/ReturnDetail.java @@ -17,6 +17,8 @@ public class ReturnDetail implements Serializable { private String createBy; + private String createByName; + private Date createTime; private Integer delFlag; diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/entity/Supplier.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/entity/Supplier.java index f7ca020e..54a70624 100644 --- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/entity/Supplier.java +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/entity/Supplier.java @@ -11,6 +11,8 @@ import org.hibernate.annotations.DynamicUpdate; import javax.persistence.Entity; import javax.persistence.Table; +import javax.persistence.Transient; +import java.math.BigDecimal; @Data @Entity @@ -43,8 +45,14 @@ public class Supplier extends HiverBaseEntity { @ApiModelProperty(value = "供应商联系方式") private String consigneeMobile; + @Transient @TableField(exist = false) @ApiModelProperty(value = "欠款") - private String noEarn; + private BigDecimal noEarn; + + @Transient + @TableField(exist = false) + @ApiModelProperty(value = "搜索关键字") + private String searchStr; } diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/invitelog/service/impl/InviteLogServiceImpl.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/invitelog/service/impl/InviteLogServiceImpl.java index 042ef623..83aa8316 100644 --- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/invitelog/service/impl/InviteLogServiceImpl.java +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/invitelog/service/impl/InviteLogServiceImpl.java @@ -50,8 +50,8 @@ public class InviteLogServiceImpl extends ServiceImpl returnSaleDetailList; + private static final long serialVersionUID = 1L; } \ No newline at end of file diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/pojo/vo/ReturnTotalAmountDetailVo.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/pojo/vo/ReturnTotalAmountDetailVo.java new file mode 100644 index 00000000..acd228a2 --- /dev/null +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/pojo/vo/ReturnTotalAmountDetailVo.java @@ -0,0 +1,39 @@ +package cc.hiver.mall.pojo.vo; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class ReturnTotalAmountDetailVo { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = " 操作人") + private String createBy; + + @ApiModelProperty(value = " 操作人") + private String createByName; + + @ApiModelProperty(value = " 退货单id") + private String returnSaleId; + + @ApiModelProperty(value = " 客户id") + private String userId; + + @ApiModelProperty(value = " 客户名称") + private String userName; + + @ApiModelProperty(value = " 退货单日期") + private String returnSaleDate; + + @ApiModelProperty(value = " 退货单金额") + private BigDecimal totalAmount; + + @ApiModelProperty(value = "数量") + private Integer productCount; + + @ApiModelProperty(value = "总成本") + private BigDecimal totalCost; +} diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/pojo/vo/TotalAlreadyEarnDetailDayVo.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/pojo/vo/TotalAlreadyEarnDetailDayVo.java new file mode 100644 index 00000000..a5971689 --- /dev/null +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/pojo/vo/TotalAlreadyEarnDetailDayVo.java @@ -0,0 +1,42 @@ +package cc.hiver.mall.pojo.vo; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 请详细描述方法 + * @author 王富康 + * @date 2024/6/29 + */ +@Data +public class TotalAlreadyEarnDetailDayVo { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = " 日期") + private String paymentDay; + + @ApiModelProperty(value = " 现金支付金额") + private String xianjin; + + @ApiModelProperty(value = " 微信支付金额") + private String weixin; + + @ApiModelProperty(value = " 支付宝支付金额") + private String zhifubao; + + @ApiModelProperty(value = " 银行转账支付金额") + private String yihangzhuanzhang; + + @ApiModelProperty(value = " 收款码支付金额") + private String shouhuanma; + + @ApiModelProperty(value = " 预留支付方式1") + private String yuliuOne; + + @ApiModelProperty(value = " 预留支付方式2") + private String yuliuTwo; + + @ApiModelProperty(value = " 预留支付方式3") + private String yuliuThree; +} diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/pojo/vo/TotalAmountDetailVo.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/pojo/vo/TotalAmountDetailVo.java new file mode 100644 index 00000000..f8bd5aa4 --- /dev/null +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/pojo/vo/TotalAmountDetailVo.java @@ -0,0 +1,39 @@ +package cc.hiver.mall.pojo.vo; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class TotalAmountDetailVo { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = " 操作人") + private String createBy; + + @ApiModelProperty(value = " 操作人") + private String createByName; + + @ApiModelProperty(value = " 销售单id") + private String saleId; + + @ApiModelProperty(value = " 客户id") + private String userId; + + @ApiModelProperty(value = " 客户名称") + private String userName; + + @ApiModelProperty(value = " 销售单日期") + private String saleDate; + + @ApiModelProperty(value = " 销售单金额") + private BigDecimal totalAmount; + + @ApiModelProperty(value = "利润") + private BigDecimal profit; + + @ApiModelProperty(value = "总成本") + private BigDecimal totalCost; + +} diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/purchaseocr/service/impl/PurchaseOcrPictureServiceImpl.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/purchaseocr/service/impl/PurchaseOcrPictureServiceImpl.java index 2a383be7..ea690a6e 100644 --- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/purchaseocr/service/impl/PurchaseOcrPictureServiceImpl.java +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/purchaseocr/service/impl/PurchaseOcrPictureServiceImpl.java @@ -220,7 +220,7 @@ public class PurchaseOcrPictureServiceImpl implements PurchaseOcrPictureService productSn = CommonUtil.getProductSn(productSn); final String productName = object.getString("productName"); final String priceStr = object.getString("price"); - BigDecimal price = BigDecimal.valueOf(0); + BigDecimal price = BigDecimal.ZERO; // 使用正则表达式提取数字部分 final Pattern pattern = Pattern.compile("-?\\d+(\\.\\d+)?"); final Matcher matcher = pattern.matcher(priceStr); diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/service/SupplierService.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/service/SupplierService.java index 41238ab9..ead1077e 100644 --- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/service/SupplierService.java +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/service/SupplierService.java @@ -2,14 +2,13 @@ package cc.hiver.mall.service; import cc.hiver.core.base.HiverBaseService; import cc.hiver.mall.entity.Supplier; -import cc.hiver.mall.pojo.query.SupplierQueryCriteria; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import java.util.List; public interface SupplierService extends HiverBaseService { - Page queryAll(SupplierQueryCriteria criteria, Pageable pageable); + Page queryAll(Supplier supplierOfquery, Pageable pageable); List getbyShopId(String shopId,String searchStr); diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/service/mybatis/PurchaseService.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/service/mybatis/PurchaseService.java index a658f59a..3105642f 100644 --- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/service/mybatis/PurchaseService.java +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/service/mybatis/PurchaseService.java @@ -4,6 +4,7 @@ import cc.hiver.mall.entity.Purchase; import cc.hiver.mall.pojo.dto.DebtSupplier; import cc.hiver.mall.pojo.query.PurchasePageQuery; import cc.hiver.mall.pojo.vo.PurchaseVo; +import cc.hiver.mall.pojo.vo.PurchasingCostDetailVo; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; @@ -43,4 +44,13 @@ public interface PurchaseService extends IService { void updateInStorageStatus(String id,int inStorageStatus); void deleteById(String id); + + /** + * 进货金额可查明细 + * @author 王富康 + * @date 2024/6/29 + * @param purchasePageQuery + * @return List + */ + Page purchasingCostDetail(PurchasePageQuery purchasePageQuery); } diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/service/mybatis/ReturnDetailService.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/service/mybatis/ReturnDetailService.java index fa02feed..6dcd896c 100644 --- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/service/mybatis/ReturnDetailService.java +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/service/mybatis/ReturnDetailService.java @@ -1,6 +1,7 @@ package cc.hiver.mall.service.mybatis; import cc.hiver.mall.entity.ReturnDetail; +import cc.hiver.mall.pojo.query.ReturnSalePageQuery; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.IService; @@ -12,5 +13,16 @@ public interface ReturnDetailService extends IService { public List selectByCondition1(QueryWrapper queryWrapper); List getReturnDetails(List saleIdList); + List getReturnDetailsByReturnId(List returnSaleIdList); + + /** + * 根据商品id分页获取退货历史 + * + * @param returnSalePageQuery + * @return List + * @author 王富康 + * @date 2024/6/29 + */ + List getReturnDetailsByProductId(ReturnSalePageQuery returnSalePageQuery); } diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/service/mybatis/ReturnSaleService.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/service/mybatis/ReturnSaleService.java index 2e54b21e..377d9bbf 100644 --- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/service/mybatis/ReturnSaleService.java +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/service/mybatis/ReturnSaleService.java @@ -3,9 +3,9 @@ package cc.hiver.mall.service.mybatis; import cc.hiver.mall.bill.vo.ArrearsVo; import cc.hiver.mall.bill.vo.CustomerBillQueryVo; import cc.hiver.mall.entity.ReturnSale; -import cc.hiver.mall.pojo.dto.SaleReturnDTO; import cc.hiver.mall.pojo.query.ReturnSalePageQuery; import cc.hiver.mall.pojo.vo.ReturnSaleVo; +import cc.hiver.mall.pojo.vo.ReturnTotalAmountDetailVo; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; @@ -19,5 +19,33 @@ public interface ReturnSaleService extends IService { ArrearsVo getTotalReturn(CustomerBillQueryVo customerBillQueryVo); - Page getReturnSaleListByProductId(ReturnSalePageQuery returnSalePageQuery); + /** + * 根据商品id分页获取退货历史 + * + * @param returnSalePageQuery + * @return Page + * @author 王富康 + * @date 2024/6/29 + */ + Page getReturnSaleListByProductId(ReturnSalePageQuery returnSalePageQuery); + + /** + * 退货金额明细 + * + * @param returnSalePageQuery + * @return Page + * @author 王富康 + * @date 2024/6/29 + */ + Page returnTotalAmountDetail(ReturnSalePageQuery returnSalePageQuery); + + /** + * 根据客户id分页获取退货历史 + * + * @param returnSalePageQuery + * @return Page + * @author 王富康 + * @date 2024/6/30 + */ + Page getReturnSaleListByUserId(ReturnSalePageQuery returnSalePageQuery); } diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/service/mybatis/SaleService.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/service/mybatis/SaleService.java index 525362a2..b885c024 100644 --- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/service/mybatis/SaleService.java +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/service/mybatis/SaleService.java @@ -88,4 +88,32 @@ public interface SaleService extends IService { Page getCustomerBill(CustomerBillQueryVo customerBillQueryVo); ArrearsVo getArrearsAndTotalSale(CustomerBillQueryVo customerBillQueryVo); + + /** + * 点击销售金额,查询销售明细 + * + * @param salePageQuery + * @return List + * @author 王富康 + * @date 2024/6/29 + */ + Page totalAmountDetail(SalePageQuery salePageQuery); + + /** + * 实收金额明细 + * @author 王富康 + * @date 2024/6/29 + * @param salePageQuery + * @return List + */ + Page totalAlreadyEarnDetail(SalePageQuery salePageQuery); + + /** + * 客户拿货统计 + * @author 王富康 + * @date 2024/6/29 + * @param salePageQuery + * @return Page + */ + Page customerSaleDetail(SalePageQuery salePageQuery); } diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/SalesAndDetailsServiceImpl.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/SalesAndDetailsServiceImpl.java index 302a517a..b1049e8b 100644 --- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/SalesAndDetailsServiceImpl.java +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/SalesAndDetailsServiceImpl.java @@ -389,6 +389,8 @@ public class SalesAndDetailsServiceImpl implements SalesAndDetailsService { BeanUtils.copyBeanProp(returnDetail,returnSaleDetailDTO); returnDetail.setCreateTime(returnSale.getCreateTime()); returnDetail.setCreateBy(returnSale.getCreateBy()); + returnDetail.setDelFlag(CommonConstant.DEL_FLAG_FALSE); + returnDetail.setCreateByName(user.getNickname()); saleDetailList2.add(returnDetail); } } diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/SalesCalculateServiceImpl.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/SalesCalculateServiceImpl.java index e46b8f7c..aafd4faf 100644 --- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/SalesCalculateServiceImpl.java +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/SalesCalculateServiceImpl.java @@ -136,7 +136,7 @@ public class SalesCalculateServiceImpl implements SalesCalculateService { BigDecimal totalPurchasePrice = new BigDecimal("0.0"); final List list = saleDetailService.listOfShopAll(shopId,startTime,endTime); for (SaleDetail saleDetail : list) { - final BigDecimal purchasePrice = saleDetail.getPurchasePrice() == null ? BigDecimal.valueOf(0) :saleDetail.getPurchasePrice(); + final BigDecimal purchasePrice = saleDetail.getPurchasePrice() == null ? BigDecimal.ZERO :saleDetail.getPurchasePrice(); final int productCount = saleDetail.getProductCount() == null ? 0 : saleDetail.getProductCount(); totalPurchasePrice = totalPurchasePrice.add(purchasePrice.multiply(new BigDecimal(productCount))); } diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/SupplierServiceImpl.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/SupplierServiceImpl.java index 06998525..7b5dfede 100644 --- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/SupplierServiceImpl.java +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/SupplierServiceImpl.java @@ -2,20 +2,22 @@ package cc.hiver.mall.serviceimpl; import cc.hiver.core.base.HiverBaseDao; import cc.hiver.core.common.constant.CommonConstant; -import cc.hiver.core.common.utils.QueryHelp; import cc.hiver.mall.dao.SupplierDao; import cc.hiver.mall.debt.entity.Debt; import cc.hiver.mall.debt.service.DebtService; import cc.hiver.mall.entity.Supplier; -import cc.hiver.mall.pojo.query.SupplierQueryCriteria; import cc.hiver.mall.service.SupplierService; +import cn.hutool.core.text.CharSequenceUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; +import org.springframework.data.jpa.domain.Specification; +import org.springframework.lang.Nullable; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import javax.persistence.criteria.*; import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -38,10 +40,33 @@ public class SupplierServiceImpl implements SupplierService { } @Override - public Page queryAll(SupplierQueryCriteria criteria, Pageable pageable) { + public Page queryAll(Supplier supplierOfquery, Pageable pageable) { // 添加未删除标记 - criteria.setDelFlag(CommonConstant.DEL_FLAG_FALSE); - final Page list = supplierDao.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root, criteria, criteriaBuilder), pageable); + supplierOfquery.setDelFlag(CommonConstant.DEL_FLAG_FALSE); + final Page list = supplierDao.findAll(new Specification() { + @Nullable + @Override + public Predicate toPredicate(Root root, CriteriaQuery cq, CriteriaBuilder cb) { + final Path shopIdField = root.get("shopId"); + final Path delFlagField = root.get("delFlag"); + final Path consigneeNameField = root.get("consigneeName"); + final Path consigneeMobileField = root.get("consigneeMobile"); + + final List list = new ArrayList<>(); + list.add(cb.equal(shopIdField, supplierOfquery.getShopId())); + list.add(cb.equal(delFlagField, supplierOfquery.getDelFlag())); + if (CharSequenceUtil.isNotBlank(supplierOfquery.getSearchStr())) { + Predicate p = cb.or(cb.like(consigneeNameField, "%" + supplierOfquery.getSearchStr() + "%")); + p = cb.or(p, cb.like(consigneeMobileField, "%" + supplierOfquery.getSearchStr() + "%")); + list.add(p); + } + + + final Predicate[] arr = new Predicate[list.size()]; + cq.where(list.toArray(arr)); + return null; + } + }, pageable); // 添加欠款信息 // 获取供应商的id final List idList = new ArrayList<>(); @@ -51,17 +76,20 @@ public class SupplierServiceImpl implements SupplierService { // 添加到id列表中 idList.add(id); }); - // 获取供应商的欠款信息 - final List debtByUserIds = debtService.getDebtByUserIds(idList); - // 变为map,key为userid, - final Map debtMap = debtByUserIds.stream().collect(Collectors.toMap(Debt::getUserId, Function.identity())); - list.forEach(supplier -> { - final String id = supplier.getId(); - final Debt debt = debtMap.get(id); - if (debt != null) { - supplier.setNoEarn(debt.getAmountOwed().toString()); - } - }); + if(!idList.isEmpty()){ + // 获取供应商的欠款信息 + final List debtByUserIds = debtService.getDebtByUserIds(idList); + // 变为map,key为userid, + final Map debtMap = debtByUserIds.stream().collect(Collectors.toMap(Debt::getUserId, Function.identity())); + list.forEach(supplier -> { + final String id = supplier.getId(); + final Debt debt = debtMap.get(id); + if (debt != null) { + supplier.setNoEarn(debt.getAmountOwed()); + } + }); + } + return list; } diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/mybatis/CustomerServiceImpl.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/mybatis/CustomerServiceImpl.java index 6156b44f..15503c9d 100644 --- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/mybatis/CustomerServiceImpl.java +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/mybatis/CustomerServiceImpl.java @@ -1,6 +1,7 @@ package cc.hiver.mall.serviceimpl.mybatis; import cc.hiver.core.common.constant.CommonConstant; +import cc.hiver.core.common.constant.DealingsRecordConstant; import cc.hiver.core.common.constant.UserConstant; import cc.hiver.core.common.utils.PageUtil; import cc.hiver.core.common.utils.SecurityUtil; @@ -17,9 +18,11 @@ import cc.hiver.mall.debt.constant.DebtConstant; import cc.hiver.mall.debt.entity.Debt; import cc.hiver.mall.debt.service.DebtService; import cc.hiver.mall.entity.Customer; +import cc.hiver.mall.entity.DealingsRecord; import cc.hiver.mall.pojo.dto.DebtCustomer; import cc.hiver.mall.pojo.query.CustomerPageQuery; import cc.hiver.mall.service.mybatis.CustomerService; +import cc.hiver.mall.service.mybatis.DealingsRecordService; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.beans.factory.annotation.Autowired; @@ -28,6 +31,7 @@ import org.springframework.stereotype.Service; import org.springframework.util.ObjectUtils; import java.math.BigDecimal; +import java.util.Date; import java.util.List; @Service @@ -51,6 +55,9 @@ public class CustomerServiceImpl extends ServiceImpl i @Autowired private DebtService debtService; + @Autowired + private DealingsRecordService dealingsRecordService; + @Override public Page debt(CustomerPageQuery customerPageQuery) { final Page page = new Page<>(customerPageQuery.getPageNum(), customerPageQuery.getPageSize()); @@ -120,27 +127,51 @@ public class CustomerServiceImpl extends ServiceImpl i userRole.setUserId(saveUser.getId()); userRoleService.save(userRole); } - + // shopId从缓存中设置 + final String shopId = securityUtil.getShopId(); // 这里是后台管理系统启用时增加散客增加的这个操作 - if(StringUtils.isEmpty(customer.getShopId())){ + if (StringUtils.isEmpty(customer.getShopId())) { // 如果没有传shopId,那么就去缓存中拿 - // shopId从缓存中设置 - final String shopId = securityUtil.getShopId(); customer.setShopId(shopId); } customer.setDelFlag(CommonConstant.DEL_FLAG_FALSE); final int insert = customerMapper.insert(customer); - BigDecimal amountOwed = customer.getAmountOwed(); - if(amountOwed != null){ - // 新增客户欠款及记录 - Debt debt = new Debt(); - debt.setUserId(customer.getId()); - debt.setAmountOwed(amountOwed); - debt.setUserType(DebtConstant.USER_TYPE[0]); - debtService.saveOrUpdateDebt(debt); - } - if(insert>0){ + // 客户欠款信息 + final BigDecimal amountOwed = customer.getAmountOwed() == null ? BigDecimal.ZERO : customer.getAmountOwed(); + final Debt debt = new Debt(); + debt.setUserId(customer.getId()); + debt.setShopId(shopId); + debt.setUserPhone(customer.getPhone()); + debt.setUserAdress(customer.getAddress()); + debt.setUserName(customer.getName()); + debt.setAmountOwed(amountOwed); + debt.setUserType(DebtConstant.USER_TYPE[0]); + debtService.save(debt); + // 新增交易记录 + // 2. 新增欠款记录 + final User user = securityUtil.getCurrUser(); + final DealingsRecord dealingsRecord = new DealingsRecord(); + dealingsRecord.setCreateBy(user.getId()); + dealingsRecord.setCreateByName(user.getNickname()); + dealingsRecord.setCreateTime(new Date()); + dealingsRecord.setDealingsUserId(customer.getUserId()); + dealingsRecord.setDealingsUserName(customer.getUserName()); + dealingsRecord.setUserType(DealingsRecordConstant.TYPE[1]); + dealingsRecord.setDealingsWay("开单"); + dealingsRecord.setShopId(shopId); + // 销售金额 + dealingsRecord.setSaleAmount(BigDecimal.ZERO); + // 退货金额 + dealingsRecord.setReturnAmount(BigDecimal.ZERO); + // 上次欠款 + dealingsRecord.setLastDebtAmount(BigDecimal.ZERO); + // 最新欠款 + dealingsRecord.setBalanceDue(amountOwed); + dealingsRecord.setAmount(amountOwed); + dealingsRecord.setDealingsType(DealingsRecordConstant.DEALINGS_TYPE[3]); + dealingsRecordService.save(dealingsRecord); + if (insert > 0) { result = true; } return result; @@ -154,7 +185,7 @@ public class CustomerServiceImpl extends ServiceImpl i customerPageQuery.setShopId(shopId); customerPageQuery.setDelFlag(delFlag); final Page page = new Page<>(customerPageQuery.getPageNum(), customerPageQuery.getPageSize()); - return customerMapper.getCustomerList(page,customerPageQuery); + return customerMapper.getCustomerList(page, customerPageQuery); } @Override diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/mybatis/ProductCategoryServiceImpl.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/mybatis/ProductCategoryServiceImpl.java index b5c804de..f7870830 100644 --- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/mybatis/ProductCategoryServiceImpl.java +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/mybatis/ProductCategoryServiceImpl.java @@ -411,11 +411,24 @@ public class ProductCategoryServiceImpl extends ServiceImpl addAttributeNameList = new ArrayList<>(); final CopyOnWriteArrayList attributeOfAddVos = newProductCategoryVo.getProductAttributeOfAddVos(); for (ProductAttributeOfAddVo attributeOfAddVo : attributeOfAddVos) { final String attributeName = attributeOfAddVo.getAttributeName(); final CopyOnWriteArrayList attributeValueVoList = attributeOfAddVo.getProductAttributeValueVoList(); + // 拿到旧的规格 + ProductAttributeOfAddVo oldProductAttributeOfAddVo = new ProductAttributeOfAddVo(); + for (ProductAttributeOfAddVo productAttributeOfAddVo : productAttributeOfAddVos) { + if (productAttributeOfAddVo.getAttributeName().equals(attributeName)) { + oldProductAttributeOfAddVo = productAttributeOfAddVo; + } + } + final List productAttributeValueVoList = oldProductAttributeOfAddVo.getProductAttributeValueVoList(); + final List stockAttributeValueList = new ArrayList<>(); + for (ProductAttributeValueVo productAttributeValueVo : productAttributeValueVoList) { + stockAttributeValueList.add(productAttributeValueVo.getValue()); + } // 首先判断是否需要新增规格 if (!stockAttributeNameList.contains(attributeName)) { final ProductAttribute productAttribute = new ProductAttribute(); @@ -434,27 +447,17 @@ public class ProductCategoryServiceImpl extends ServiceImpl productAttributeValueVoList = oldProductAttributeOfAddVo.getProductAttributeValueVoList(); - final List stockAttributeValueList = new ArrayList<>(); - for (ProductAttributeValueVo productAttributeValueVo : productAttributeValueVoList) { - stockAttributeValueList.add(productAttributeValueVo.getValue()); - } // 判断旧的值中是否包含新的值,如果不包含就新增 for (ProductAttributeValueVo productAttributeValueVo : attributeValueVoList) { final String value = productAttributeValueVo.getValue(); - if (!stockAttributeValueList.contains(value)) { + if (!stockAttributeValueList.contains(value) && !addAttributeNameList.contains(value)) { final ProductAttributeValue productAttributeValue = new ProductAttributeValue(); productAttributeValue.setCreateTime(new Date()); productAttributeValue.setAttributeId(oldProductAttributeOfAddVo.getAttributeId()); productAttributeValue.setValue(value); addProductAttributeValues.add(productAttributeValue); + // 入库选两款商品同样的颜色,会重复新增,这里王判重的list中添加一下 + addAttributeNameList.add(value); } } } diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/mybatis/PurchaseServiceImpl.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/mybatis/PurchaseServiceImpl.java index a49a14a6..0b6075ec 100644 --- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/mybatis/PurchaseServiceImpl.java +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/mybatis/PurchaseServiceImpl.java @@ -10,6 +10,7 @@ import cc.hiver.mall.pojo.dto.DebtSupplier; import cc.hiver.mall.pojo.query.PurchasePageQuery; import cc.hiver.mall.pojo.vo.ProductCategoryVo; import cc.hiver.mall.pojo.vo.PurchaseVo; +import cc.hiver.mall.pojo.vo.PurchasingCostDetailVo; import cc.hiver.mall.purchaseocr.entity.PurchaseOcrPicture; import cc.hiver.mall.purchaseocr.service.PurchaseOcrPictureService; import cc.hiver.mall.purchaseocr.vo.PurchaseOcrCountVo; @@ -475,4 +476,13 @@ public class PurchaseServiceImpl extends ServiceImpl i public void deleteById(String id) { purchaseMapper.deleteByPurchaseId(id); } + + @Override + public Page purchasingCostDetail(PurchasePageQuery purchasePageQuery) { + final Page page = new Page<>(purchasePageQuery.getPageNum(), purchasePageQuery.getPageSize()); + // shopId从缓存中设置 + final String shopId = securityUtil.getShopId(); + purchasePageQuery.setShopId(shopId); + return purchaseMapper.purchasingCostDetail(page, purchasePageQuery); + } } diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/mybatis/ReturnDetailServiceImpl.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/mybatis/ReturnDetailServiceImpl.java index 832de0b0..e58ff4d8 100644 --- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/mybatis/ReturnDetailServiceImpl.java +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/mybatis/ReturnDetailServiceImpl.java @@ -2,6 +2,7 @@ package cc.hiver.mall.serviceimpl.mybatis; import cc.hiver.mall.dao.mapper.ReturnDetailMapper; import cc.hiver.mall.entity.ReturnDetail; +import cc.hiver.mall.pojo.query.ReturnSalePageQuery; import cc.hiver.mall.service.mybatis.ReturnDetailService; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -27,4 +28,22 @@ public class ReturnDetailServiceImpl extends ServiceImpl getReturnDetails(List saleIdList) { return returnDetailMapper.getReturnDetails(saleIdList); } + + @Override + public List getReturnDetailsByReturnId(List returnSaleIdList) { + return returnDetailMapper.getReturnDetailsByReturnId(returnSaleIdList); + } + + /** + * 根据商品id分页获取退货历史 + * + * @param returnSalePageQuery + * @return List + * @author 王富康 + * @date 2024/6/29 + */ + @Override + public List getReturnDetailsByProductId(ReturnSalePageQuery returnSalePageQuery) { + return returnDetailMapper.getReturnDetailsByProductId(returnSalePageQuery); + } } diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/mybatis/ReturnSaleServiceImpl.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/mybatis/ReturnSaleServiceImpl.java index 2e45d84c..a312dd18 100644 --- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/mybatis/ReturnSaleServiceImpl.java +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/mybatis/ReturnSaleServiceImpl.java @@ -1,12 +1,17 @@ package cc.hiver.mall.serviceimpl.mybatis; +import cc.hiver.core.common.utils.SecurityUtil; import cc.hiver.mall.bill.vo.ArrearsVo; import cc.hiver.mall.bill.vo.CustomerBillQueryVo; import cc.hiver.mall.dao.mapper.ReturnSaleMapper; +import cc.hiver.mall.entity.ReturnDetail; import cc.hiver.mall.entity.ReturnSale; -import cc.hiver.mall.pojo.dto.SaleReturnDTO; +import cc.hiver.mall.pojo.dto.ReturnSaleDetailDTO; +import cc.hiver.mall.pojo.dto.SaleDetailQueryDTO; import cc.hiver.mall.pojo.query.ReturnSalePageQuery; import cc.hiver.mall.pojo.vo.ReturnSaleVo; +import cc.hiver.mall.pojo.vo.ReturnTotalAmountDetailVo; +import cc.hiver.mall.service.mybatis.ReturnDetailService; import cc.hiver.mall.service.mybatis.ReturnSaleService; import cc.hiver.mall.utils.DateUtil; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -16,7 +21,10 @@ import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; @Service public class ReturnSaleServiceImpl extends ServiceImpl implements ReturnSaleService { @@ -24,6 +32,12 @@ public class ReturnSaleServiceImpl extends ServiceImpl getReturnSaleList(ReturnSaleVo returnSaleVo) { final Page page = new Page<>(returnSaleVo.getPageNum(), returnSaleVo.getPageSize()); - if(StringUtils.isNotEmpty(returnSaleVo.getEndTime())){ + if (StringUtils.isNotEmpty(returnSaleVo.getEndTime())) { // 日期加一天 returnSaleVo.setEndTime(DateUtil.addDay(returnSaleVo.getEndTime(), 1)); } @@ -46,13 +60,153 @@ public class ReturnSaleServiceImpl extends ServiceImpl + * @author 王富康 + * @date 2024/6/29 + */ @Override - public Page getReturnSaleListByProductId(ReturnSalePageQuery returnSalePageQuery) { + public Page getReturnSaleListByProductId(ReturnSalePageQuery returnSalePageQuery) { + if (StringUtils.isNotEmpty(returnSalePageQuery.getEndDate())) { + returnSalePageQuery.setEndDate(DateUtil.addDay(returnSalePageQuery.getEndDate(), 1)); + } + final Page page = new Page<>(returnSalePageQuery.getPageNum(), returnSalePageQuery.getPageSize()); + final Page returnSalePage = returnSaleMapper.getReturnSaleListByProductId(page, returnSalePageQuery); + final List returnSaleList = returnSalePage.getRecords(); + // 根据商品id获取退货详细信息 + // 获取退货单明细 + final List returnDetails = returnDetailService.getReturnDetailsByProductId(returnSalePageQuery); + // 将returnDetails 放到以return_sale_id 为key ReturnDetail为value的map中去 + final Map> returnSaleMap = new HashMap<>(); + for (ReturnDetail returnDetail : returnDetails) { + final String returnSaleId = returnDetail.getReturnSaleId(); + if (returnSaleMap.containsKey(returnSaleId)) { + final List returnDetailList = returnSaleMap.get(returnSaleId); + returnDetailList.add(returnDetail); + returnSaleMap.put(returnSaleId, returnDetailList); + } else { + final List returnDetailList = new ArrayList<>(); + returnDetailList.add(returnDetail); + returnSaleMap.put(returnSaleId, returnDetailList); + } + } + // 将详细信息封装到返回结果中去 + for (ReturnSaleVo returnSaleVo : returnSaleList) { + final String id = returnSaleVo.getId(); + // 从returnSaleMap获取,并封装 + if (returnSaleMap.containsKey(id)) { + // 这是是根据退商品id查询的,所以肯定是同一件商品,并且在同一个订单中采购价等也是一样 + // 所以商品信息循环覆盖即可,每一个详情相当于一种规格 + final List returnSaleDetailList = new ArrayList<>(); + final ReturnSaleDetailDTO returnSaleDetailDTO = new ReturnSaleDetailDTO(); + final List returnDetailList = returnSaleMap.get(id); + final List stockLogList1 = new ArrayList<>(); + for (ReturnDetail returnDetail : returnDetailList) { + returnSaleDetailDTO.setProductId(returnDetail.getProductId()); + returnSaleDetailDTO.setProductName(returnDetail.getProductName()); + returnSaleDetailDTO.setProductCount(returnDetail.getProductCount()); + returnSaleDetailDTO.setRealPrice(returnDetail.getRealPrice()); + // 详细规格 + final SaleDetailQueryDTO saleDetailQueryDTO = new SaleDetailQueryDTO(); + saleDetailQueryDTO.setAttributeList(returnDetail.getAttributeList()); + saleDetailQueryDTO.setProductCount(returnDetail.getProductCount()); + stockLogList1.add(saleDetailQueryDTO); + } + returnSaleDetailDTO.setStockLogList1(stockLogList1); + returnSaleDetailList.add(returnSaleDetailDTO); + returnSaleVo.setReturnSaleDetailList(returnSaleDetailList); + } + } + return returnSalePage; + } - final Page page = new Page<>(returnSalePageQuery.getPageNum(), returnSalePageQuery.getPageSize()); - final Page salePage = returnSaleMapper.getReturnSaleListByProductId(page, returnSalePageQuery.getProductId()); - final List saleList = salePage.getRecords(); + /** + * 退货金额明细 + * + * @param returnSalePageQuery + * @return Page + * @author 王富康 + * @date 2024/6/29 + */ + @Override + public Page returnTotalAmountDetail(ReturnSalePageQuery returnSalePageQuery) { + final Page page = new Page<>(returnSalePageQuery.getPageNum(), returnSalePageQuery.getPageSize()); + // shopId从缓存中设置 + final String shopId = securityUtil.getShopId(); + returnSalePageQuery.setShopId(shopId); + return returnSaleMapper.returnTotalAmountDetail(page, returnSalePageQuery); + } + + /** + * 根据客户id分页获取退货历史 + * + * @param returnSalePageQuery + * @return Page + * @author 王富康 + * @date 2024/6/30 + */ + @Override + public Page getReturnSaleListByUserId(ReturnSalePageQuery returnSalePageQuery) { + if (StringUtils.isNotEmpty(returnSalePageQuery.getEndDate())) { + returnSalePageQuery.setEndDate(DateUtil.addDay(returnSalePageQuery.getEndDate(), 1)); + } + final Page page = new Page<>(returnSalePageQuery.getPageNum(), returnSalePageQuery.getPageSize()); + final Page returnSalePage = returnSaleMapper.getReturnSaleListByUserId(page, returnSalePageQuery); + final List returnSaleList = returnSalePage.getRecords(); + // 根据商品id获取退货详细信息 + List returnSaleIdList = new ArrayList<>(); + for (ReturnSaleVo returnSaleVo : returnSaleList) { + returnSaleIdList.add(returnSaleVo.getId()); + } + if(!returnSaleIdList.isEmpty()){ + // 获取退货单明细 + final List returnDetails = returnDetailService.getReturnDetailsByReturnId(returnSaleIdList); + // 将returnDetails 放到以return_sale_id 为key ReturnDetail为value的map中去 + final Map> returnSaleMap = new HashMap<>(); + for (ReturnDetail returnDetail : returnDetails) { + final String returnSaleId = returnDetail.getReturnSaleId(); + if (returnSaleMap.containsKey(returnSaleId)) { + final List returnDetailList = returnSaleMap.get(returnSaleId); + returnDetailList.add(returnDetail); + returnSaleMap.put(returnSaleId, returnDetailList); + } else { + final List returnDetailList = new ArrayList<>(); + returnDetailList.add(returnDetail); + returnSaleMap.put(returnSaleId, returnDetailList); + } + } + // 将详细信息封装到返回结果中去 + for (ReturnSaleVo returnSaleVo : returnSaleList) { + final String id = returnSaleVo.getId(); + // 从returnSaleMap获取,并封装 + if (returnSaleMap.containsKey(id)) { + // 这是是根据退商品id查询的,所以肯定是同一件商品,并且在同一个订单中采购价等也是一样 + // 所以商品信息循环覆盖即可,每一个详情相当于一种规格 + final List returnSaleDetailList = new ArrayList<>(); + final ReturnSaleDetailDTO returnSaleDetailDTO = new ReturnSaleDetailDTO(); + final List returnDetailList = returnSaleMap.get(id); + final List stockLogList1 = new ArrayList<>(); + for (ReturnDetail returnDetail : returnDetailList) { + returnSaleDetailDTO.setProductId(returnDetail.getProductId()); + returnSaleDetailDTO.setProductName(returnDetail.getProductName()); + returnSaleDetailDTO.setProductCount(returnDetail.getProductCount()); + returnSaleDetailDTO.setRealPrice(returnDetail.getRealPrice()); + // 详细规格 + final SaleDetailQueryDTO saleDetailQueryDTO = new SaleDetailQueryDTO(); + saleDetailQueryDTO.setAttributeList(returnDetail.getAttributeList()); + saleDetailQueryDTO.setProductCount(returnDetail.getProductCount()); + stockLogList1.add(saleDetailQueryDTO); + } + returnSaleDetailDTO.setStockLogList1(stockLogList1); + returnSaleDetailList.add(returnSaleDetailDTO); + returnSaleVo.setReturnSaleDetailList(returnSaleDetailList); + } + } + } - return null; + return returnSalePage; } } diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/mybatis/SaleServiceImpl.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/mybatis/SaleServiceImpl.java index f4c4d558..0e62947d 100644 --- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/mybatis/SaleServiceImpl.java +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/mybatis/SaleServiceImpl.java @@ -366,11 +366,10 @@ public class SaleServiceImpl extends ServiceImpl implements Sa @Override public Page getCustomerBuyProductLog(SalePageQuery salePageQuery) { - final String shopId = securityUtil.getShopId(); // 先拿到该客户购买的所有商品信息 final Page page = new Page<>(salePageQuery.getPageNum(), salePageQuery.getPageSize()); final String userId = salePageQuery.getUserId(); - final Page salePage = saleMapper.getCustomerBuyProductLog(page, userId, shopId); + final Page salePage = saleMapper.getCustomerBuyProductLog(page, userId, salePageQuery.getShopId()); final List records = salePage.getRecords(); final List productIds = new ArrayList<>(); // 商品id集合 @@ -385,7 +384,7 @@ public class SaleServiceImpl extends ServiceImpl implements Sa } if (!productIds.isEmpty()) { // 获取商品各规格售卖的数量 - final List customerBuyProductDetailLogVos = saleMapper.getCustomerBuyProductLogDetailLog(userId, shopId, productIds); + final List customerBuyProductDetailLogVos = saleMapper.getCustomerBuyProductLogDetailLog(userId, salePageQuery.getShopId(), productIds); // 进行数据封装Map<商品id,Map<销售单id,商品明细>> final Map>> allMap = new HashMap<>(); @@ -914,19 +913,41 @@ public class SaleServiceImpl extends ServiceImpl implements Sa // 根据订单获取交易记录 final String userId = sale.getUserId(); final Debt oldDebt = debtService.selectByUserId(userId); - if(oldDebt != null){ + if (oldDebt != null) { final BigDecimal newDebtAmount; - + final BigDecimal lastDebtAmount = oldDebt.getAmountOwed(); // 欠款抵扣,需要单独从欠款中减掉 - final BigDecimal debtDeductionAmount = sale.getDebtDeductionAmount() == null ? BigDecimal.valueOf(0) : sale.getDebtDeductionAmount(); + final BigDecimal debtDeductionAmount = sale.getDebtDeductionAmount() == null ? BigDecimal.ZERO : sale.getDebtDeductionAmount(); // 余额抵扣,需要从欠款中减掉 - final BigDecimal balanceDeductionAmount = sale.getBalanceDeductionAmount() == null ? BigDecimal.valueOf(0) : sale.getBalanceDeductionAmount(); + final BigDecimal balanceDeductionAmount = sale.getBalanceDeductionAmount() == null ? BigDecimal.ZERO : sale.getBalanceDeductionAmount(); // 本单欠款 - final BigDecimal noEarn = sale.getNoEarn() == null ? BigDecimal.valueOf(0) : sale.getNoEarn(); + final BigDecimal noEarn = sale.getNoEarn() == null ? BigDecimal.ZERO : sale.getNoEarn(); // 计算欠款 + final BigDecimal amount = debtDeductionAmount.subtract(noEarn).subtract(balanceDeductionAmount); newDebtAmount = oldDebt.getAmountOwed().subtract(noEarn).add(debtDeductionAmount).subtract(balanceDeductionAmount); oldDebt.setAmountOwed(newDebtAmount); - debtService.saveOrUpdateDebt(oldDebt); + debtService.updateById(oldDebt); + + // 2. 新增欠款记录 + // 创建人 + final User user = securityUtil.getCurrUser(); + final DealingsRecord dealingsRecord = new DealingsRecord(); + dealingsRecord.setCreateBy(user.getId()); + dealingsRecord.setCreateByName(user.getNickname()); + dealingsRecord.setCreateTime(new Date()); + dealingsRecord.setDealingsUserId(sale.getUserId()); + dealingsRecord.setDealingsUserName(sale.getUserName()); + dealingsRecord.setDealingsWay("订单撤销"); + dealingsRecord.setShopId(sale.getShopId()); + // 上次欠款 + dealingsRecord.setLastDebtAmount(lastDebtAmount); + // 最新欠款 + dealingsRecord.setBalanceDue(newDebtAmount); + // 金额 + dealingsRecord.setAmount(amount); + dealingsRecord.setDealingsType(DealingsRecordConstant.DEALINGS_TYPE[6]); + dealingsRecord.setUserType(DealingsRecordConstant.TYPE[1]); + dealingsRecordService.save(dealingsRecord); } // 作废当前订单的欠款记录 dealingsRecordService.cancelRecord(id); @@ -949,6 +970,47 @@ public class SaleServiceImpl extends ServiceImpl implements Sa return saleMapper.getArrearsAndTotalSale(customerBillQueryVo); } + @Override + public Page totalAmountDetail(SalePageQuery salePageQuery) { + final Page page = new Page<>(salePageQuery.getPageNum(), salePageQuery.getPageSize()); + // shopId从缓存中设置 + final String shopId = securityUtil.getShopId(); + salePageQuery.setShopId(shopId); + return saleMapper.totalAmountDetail(page, salePageQuery); + } + + /** + * 实收金额明细 + * @author 王富康 + * @date 2024/6/29 + * @param salePageQuery + * @return List + */ + @Override + public Page totalAlreadyEarnDetail(SalePageQuery salePageQuery) { + final Page page = new Page<>(salePageQuery.getPageNum(), salePageQuery.getPageSize()); + // shopId从缓存中设置 + final String shopId = securityUtil.getShopId(); + salePageQuery.setShopId(shopId); + return saleMapper.totalAlreadyEarnDetail(page, salePageQuery); + } + + /** + * 客户拿货统计 + * @author 王富康 + * @date 2024/6/29 + * @param salePageQuery + * @return Page + */ + @Override + public Page customerSaleDetail(SalePageQuery salePageQuery) { + final Page page = new Page<>(salePageQuery.getPageNum(), salePageQuery.getPageSize()); + // shopId从缓存中设置 + final String shopId = securityUtil.getShopId(); + salePageQuery.setShopId(shopId); + return saleMapper.customerSaleDetail(page, salePageQuery); + } + /** * 使用正则表达式替换输入字符串中连续的“叉”字符为相应数量的“X”字符。 * diff --git a/hiver-modules/hiver-mall/src/main/resources/mapper/PurchaseMapper.xml b/hiver-modules/hiver-mall/src/main/resources/mapper/PurchaseMapper.xml index 2429f6d8..eab52242 100644 --- a/hiver-modules/hiver-mall/src/main/resources/mapper/PurchaseMapper.xml +++ b/hiver-modules/hiver-mall/src/main/resources/mapper/PurchaseMapper.xml @@ -396,13 +396,17 @@ + select + tp.id as purchase_id, + tp.create_by, + tp.create_by_name, + tp.supplier_id, + tp.supplier_name, + tp.create_time as purchase_date, + cb.total_cost, + cb.product_count, + cb.product_num + from + t_purchase tp + 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 + on tp.id = cb.purchase_id + WHERE + del_flag ='0' + and in_storage_status = '1' + and shop_id = #{purchasePageQuery.shopId} + + and create_by_name like concat('%',#{purchasePageQuery.createByName},'%') + + + and supplier_name like concat('%',#{purchasePageQuery.supplierName},'%') + + + and create_time BETWEEN #{purchasePageQuery.startDate} AND #{purchasePageQuery.endDate} + + order by purchase_date desc + \ No newline at end of file diff --git a/hiver-modules/hiver-mall/src/main/resources/mapper/ReturnDetailMapper.xml b/hiver-modules/hiver-mall/src/main/resources/mapper/ReturnDetailMapper.xml index f7e06397..0f0cb4cc 100644 --- a/hiver-modules/hiver-mall/src/main/resources/mapper/ReturnDetailMapper.xml +++ b/hiver-modules/hiver-mall/src/main/resources/mapper/ReturnDetailMapper.xml @@ -4,6 +4,7 @@ + @@ -85,7 +86,7 @@ - id, create_by, create_time, del_flag, update_by, update_time, sale_id, product_id, + id, create_by, create_by_name, create_time, del_flag, update_by, update_time, sale_id, product_id, product_name, unit, shop_id, category_id, attribute_list, price, purchase_price, wholesale_price, product_count, discount, discount_amount, real_price, return_sale_id, product_picture, product_sn @@ -121,14 +122,14 @@ - insert into t_return_detail (id, create_by, create_time, + insert into t_return_detail (id, create_by,create_by_name, create_time, del_flag, update_by, update_time, sale_id, product_id, product_name, unit, shop_id, category_id, attribute_list, price, purchase_price, wholesale_price, product_count, discount, discount_amount, real_price,return_sale_id,product_picture,product_sn) - values (#{id,jdbcType=VARCHAR}, #{createBy,jdbcType=VARCHAR}, #{createTime,jdbcType=TIMESTAMP}, + values (#{id,jdbcType=VARCHAR}, #{createBy,jdbcType=VARCHAR},#{createByName,jdbcType=VARCHAR}, #{createTime,jdbcType=TIMESTAMP}, #{delFlag,jdbcType=INTEGER}, #{updateBy,jdbcType=VARCHAR}, #{updateTime,jdbcType=TIMESTAMP}, #{saleId,jdbcType=VARCHAR}, #{productId,jdbcType=VARCHAR}, #{productName,jdbcType=VARCHAR}, #{unit,jdbcType=VARCHAR}, #{shopId,jdbcType=VARCHAR}, #{categoryId,jdbcType=VARCHAR}, @@ -145,6 +146,9 @@ create_by, + + + create_by_name, create_time, @@ -216,6 +220,9 @@ #{createBy,jdbcType=VARCHAR}, + + + #{createByName,jdbcType=VARCHAR}, #{createTime,jdbcType=TIMESTAMP}, @@ -296,6 +303,9 @@ create_by = #{record.createBy,jdbcType=VARCHAR}, + + + create_by_name = #{record.createByName,jdbcType=VARCHAR}, create_time = #{record.createTime,jdbcType=TIMESTAMP}, @@ -369,6 +379,7 @@ update t_return_detail set id = #{record.id,jdbcType=VARCHAR}, create_by = #{record.createBy,jdbcType=VARCHAR}, + create_by_name = #{record.createByName,jdbcType=VARCHAR}, create_time = #{record.createTime,jdbcType=TIMESTAMP}, del_flag = #{record.delFlag,jdbcType=INTEGER}, update_by = #{record.updateBy,jdbcType=VARCHAR}, @@ -399,6 +410,9 @@ create_by = #{createBy,jdbcType=VARCHAR}, + + + create_by_name = #{createByName,jdbcType=VARCHAR}, create_time = #{createTime,jdbcType=TIMESTAMP}, @@ -469,6 +483,7 @@ update t_return_detail set create_by = #{createBy,jdbcType=VARCHAR}, + create_by_name = #{createByName,jdbcType=VARCHAR}, create_time = #{createTime,jdbcType=TIMESTAMP}, del_flag = #{delFlag,jdbcType=INTEGER}, update_by = #{updateBy,jdbcType=VARCHAR}, @@ -502,4 +517,25 @@ #{listItem} + + + + \ No newline at end of file diff --git a/hiver-modules/hiver-mall/src/main/resources/mapper/ReturnSaleMapper.xml b/hiver-modules/hiver-mall/src/main/resources/mapper/ReturnSaleMapper.xml index ffeb6e5e..f9ab3003 100644 --- a/hiver-modules/hiver-mall/src/main/resources/mapper/ReturnSaleMapper.xml +++ b/hiver-modules/hiver-mall/src/main/resources/mapper/ReturnSaleMapper.xml @@ -90,7 +90,7 @@ id, sale_id, create_by, 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, trans_company_name, product_count @@ -109,7 +109,7 @@ - select - ts.id,ts.create_by,ts.create_by_name,ts.create_time,ts.del_flag,ts.update_by,ts.update_by_name,ts.update_time,ts.user_id,ts.user_name, - ts.shop_id,ts.shop_name,ts.total_amount,ts.discount,ts.discount_amount,ts.real_amount,ts.debt_deduction_amount,ts.sale_deduction_amount,ts.balance_deduction_amount ,ts.already_earn,ts.no_earn,ts.pay_status, - ts.pay_type,ts.status,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.ai_flag,ts.ai_result,ts.ai_not_recognition, - ss.return_sale_product_count,ss.return_sale_amount + 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, + 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, + trans_company_name, trs.product_count from - t_sale ts - left join ( - select - sale_id, - sum( trs.product_count ) as return_sale_product_count, - sum( trs.total_amount ) as return_sale_amount - from - t_return_sale trs - where - trs.sale_id in ( select sale_id from t_sale_detail where product_id = #{productId} ) - group by - trs.sale_id - ) ss on ts.id = ss.sale_id + t_return_sale trs where - ts.id in ( select sale_id from t_sale_detail where product_id = #{productId} ) - and ts.status not in ( '2', '6', '7' ) + del_flag ='0' + and trs.id in ( select trd.return_sale_id from t_return_detail trd where trd.product_id = #{returnSalePageQuery.productId} ) + and trs.status not in ('02') + + and ts.create_time BETWEEN #{returnSalePageQuery.startDate} AND #{returnSalePageQuery.endDate} + + order by + trs.create_time desc + + + + + \ No newline at end of file diff --git a/hiver-modules/hiver-mall/src/main/resources/mapper/SaleMapper.xml b/hiver-modules/hiver-mall/src/main/resources/mapper/SaleMapper.xml index c5d3840c..d0713228 100644 --- a/hiver-modules/hiver-mall/src/main/resources/mapper/SaleMapper.xml +++ b/hiver-modules/hiver-mall/src/main/resources/mapper/SaleMapper.xml @@ -1030,9 +1030,10 @@ trans_company, company_name, product_count, remark, sale_name, company_phone, cr group by n.sale_id ) trs on ts.id = trs.sale_id - left join t_dealings_record tdr on ts.id = tdr.sale_id + left join t_dealings_record tdr on ts.id = tdr.sale_id and tdr.shop_id = #{customerBillQueryVo.shopId} WHERE ts.user_id = #{customerBillQueryVo.customerId} + and ts.shop_id = #{customerBillQueryVo.shopId} and ts.status not in ( '2', '6', '7' ) @@ -1048,12 +1049,125 @@ trans_company, company_name, product_count, remark, sale_name, company_phone, cr from t_sale ts WHERE - ts.user_id = #{customerBillQueryVo.customerId} + ts.del_flag = '0' + and ts.user_id = #{customerBillQueryVo.customerId} + and ts.shop_id = #{customerBillQueryVo.shopId} and ts.status not in ( '2', '6', '7' ) and ts.create_time BETWEEN #{customerBillQueryVo.startDate} AND #{customerBillQueryVo.endDate} - order by ts.create_time asc + order by ts.create_time desc + + + + + + + \ No newline at end of file