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
+
+ from t_return_detail
+ where del_flag='0'
+ and product_id = #{returnSalePageQuery.productId}
+
+ and ts.create_time BETWEEN #{returnSalePageQuery.startDate} AND #{returnSalePageQuery.endDate}
+
+
+
+
+ select
+
+ from t_return_detail
+ where sale_id in
+
+ #{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
+ select
from t_return_sale
where id = #{id,jdbcType=VARCHAR}
@@ -125,21 +125,21 @@
- insert into t_return_sale (id, sale_id, create_by,
- create_time, del_flag, update_by,
+ insert into t_return_sale (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, status, transport_type,
- share_address, receive_address, province,
+ 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)
- values (#{id,jdbcType=VARCHAR}, #{saleId,jdbcType=VARCHAR}, #{createBy,jdbcType=VARCHAR},
- #{createTime,jdbcType=TIMESTAMP}, #{delFlag,jdbcType=INTEGER}, #{updateBy,jdbcType=VARCHAR},
+ values (#{id,jdbcType=VARCHAR}, #{saleId,jdbcType=VARCHAR}, #{createBy,jdbcType=VARCHAR},
+ #{createTime,jdbcType=TIMESTAMP}, #{delFlag,jdbcType=INTEGER}, #{updateBy,jdbcType=VARCHAR},
#{updateTime,jdbcType=TIMESTAMP}, #{userId,jdbcType=VARCHAR},#{userName,jdbcType=VARCHAR}, #{shopId,jdbcType=VARCHAR},
- #{totalAmount,jdbcType=DECIMAL}, #{discount,jdbcType=DECIMAL}, #{discountAmount,jdbcType=DECIMAL},
- #{realAmount,jdbcType=DECIMAL}, #{alreadyEarn,jdbcType=DECIMAL}, #{noEarn,jdbcType=DECIMAL},
- #{payStatus,jdbcType=VARCHAR}, #{status,jdbcType=VARCHAR}, #{transportType,jdbcType=VARCHAR},
- #{shareAddress,jdbcType=VARCHAR}, #{receiveAddress,jdbcType=VARCHAR}, #{province,jdbcType=VARCHAR},
+ #{totalAmount,jdbcType=DECIMAL}, #{discount,jdbcType=DECIMAL}, #{discountAmount,jdbcType=DECIMAL},
+ #{realAmount,jdbcType=DECIMAL}, #{alreadyEarn,jdbcType=DECIMAL}, #{noEarn,jdbcType=DECIMAL},
+ #{payStatus,jdbcType=VARCHAR}, #{status,jdbcType=VARCHAR}, #{transportType,jdbcType=VARCHAR},
+ #{shareAddress,jdbcType=VARCHAR}, #{receiveAddress,jdbcType=VARCHAR}, #{province,jdbcType=VARCHAR},
#{city,jdbcType=VARCHAR}, #{area,jdbcType=VARCHAR},#{transCompany,jdbcType=VARCHAR}, #{transCompanyName,jdbcType=VARCHAR}, #{productCount,jdbcType=INTEGER})
@@ -582,7 +582,9 @@
from
t_return_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 ( '02' )
@@ -591,32 +593,83 @@
order by ts.create_time asc
-
+
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
+
+
+
+ select
+ id as return_sale_id,
+ create_by,
+ create_by_name,
+ user_id,
+ user_name,
+ create_time as return_sale_date,
+ product_count,
+ total_amount,
+ cb.total_cost
+ from
+ t_return_sale trs
+ left join
+ (select trd.return_sale_id,trd.sale_id, IFNULL(sum(trd.purchase_price * trd.product_count),0.00) as total_cost from t_return_detail trd where trd.shop_id = #{returnSalePageQuery.shopId} group by trd.sale_id,trd.return_sale_id) cb
+ on trs.id = cb.return_sale_id
+ WHERE
+ trs.del_flag ='0'
+
+ and trs.shop_id = #{returnSalePageQuery.shopId}
+ and trs.status not in ( '02' )
+
+ and trs.create_by_name like concat('%',#{returnSalePageQuery.createByName},'%')
+
+
+
+ and trs.create_by = #{returnSalePageQuery.createBy}
+
+
+
+ and trs.product_id = #{returnSalePageQuery.productId}
+
+
+ and trs.user_name like concat('%',#{returnSalePageQuery.userName},'%')
+
+
+ and trs.create_time BETWEEN #{returnSalePageQuery.startDate} AND #{returnSalePageQuery.endDate}
+
+ order by trs.create_time desc
+
+
+
+ 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.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.trans_company_name, trs.product_count
+ from
+ t_return_sale trs
+ where
+ trs.del_flag ='0'
+ and trs.shop_id = #{returnSalePageQuery.shopId}
+ and trs.user_id = #{returnSalePageQuery.userId}
+ and trs.status not in ('02')
+
+ and trs.create_time BETWEEN #{returnSalePageQuery.startDate} AND #{returnSalePageQuery.endDate}
+
order by
- ts.create_time desc
+ 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
+
+
+
+ select
+ id as sale_id,
+ create_by,
+ create_by_name,
+ user_id,
+ user_name,
+ create_time as sale_date,
+ total_amount,
+ cb.total_cost,
+ total_amount -cb.total_cost as profit
+ from
+ t_sale ts
+ left join
+ (select tsd.sale_id, IFNULL(sum(tsd.purchase_price * tsd.product_count),0.00) as total_cost from t_sale_detail tsd where tsd.shop_id = #{salePageQuery.shopId} group by tsd.sale_id) cb
+ on ts.id = cb.sale_id
+ WHERE
+ ts.del_flag ='0'
+
+ and ts.shop_id = #{salePageQuery.shopId}
+ and ts.status not in ( '2', '6', '7' )
+
+ and ts.create_by_name like concat('%',#{salePageQuery.createByName},'%')
+
+
+
+ and ts.create_by = #{salePageQuery.createBy}
+
+
+
+ and ts.product_id = #{salePageQuery.productId}
+
+
+ and ts.user_name like concat('%',#{salePageQuery.userName},'%')
+
+
+ and ts.create_time BETWEEN #{salePageQuery.startDate} AND #{salePageQuery.endDate}
+
+ order by ts.create_time desc
+
+
+
+ select
+ 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 = '1' then real_amount else 0 end) as weixin,
+ sum(case when pay_type = '2' then real_amount else 0 end) as zhifubao,
+ sum(case when pay_type = '3' then real_amount else 0 end) as yihangzhuanzhang,
+ sum(case when pay_type = '4' then real_amount 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 = '6' then real_amount else 0 end) as yuliu_two,
+ sum(case when pay_type = '7' then real_amount else 0 end) as yuliu_three
+ from
+ t_sale
+ WHERE
+ del_flag ='0'
+
+ and shop_id = #{salePageQuery.shopId}
+ and status not in ( '2', '6', '7' )
+
+ and create_by_name like concat('%',#{salePageQuery.createByName},'%')
+
+
+ and user_name like concat('%',#{salePageQuery.userName},'%')
+
+
+ and create_time BETWEEN #{salePageQuery.startDate} AND #{salePageQuery.endDate}
+
+ group by payment_day
+ order by payment_day desc
+
+
+
+ SELECT
+ ts.user_id,
+ ts.user_name,
+ sum(ts.product_count) as product_count,
+ sum(ts.real_amount) as real_amount,
+ sum(cb.total_cost) as total_cost,
+ sum(ts.real_amount - cb.total_cost) as profit
+ FROM
+ t_sale ts
+ left join
+ (select tsd.sale_id, IFNULL(sum(tsd.purchase_price * tsd.product_count),0.00) as total_cost from t_sale_detail tsd where tsd.shop_id = #{salePageQuery.shopId} group by tsd.sale_id) cb
+ on ts.id = cb.sale_id
+ WHERE
+ ts.del_flag ='0'
+
+ and ts.shop_id = #{salePageQuery.shopId}
+ and ts.status not in ( '2', '6', '7' )
+
+ and ts.create_by_name like concat('%',#{salePageQuery.createByName},'%')
+
+
+
+ and ts.create_by = #{salePageQuery.createBy}
+
+
+
+ and ts.product_id = #{salePageQuery.productId}
+
+
+ and ts.user_name like concat('%',#{salePageQuery.userName},'%')
+
+
+ and ts.create_time BETWEEN #{salePageQuery.startDate} AND #{salePageQuery.endDate}
+
+ group by user_id,user_name
+ order by real_amount desc
\ No newline at end of file