Browse Source

客户、供应商期末欠款优化;

dev
wangfukang 2 years ago
parent
commit
8e52e4d51d
  1. 16
      hiver-admin/test-output/test-report.html
  2. 58
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/bill/service/impl/BillServiceImpl.java
  3. 4
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/dao/mapper/DealingsRecordMapper.java
  4. 20
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/service/mybatis/DealingsRecordService.java
  5. 10
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/mybatis/DealingsRecordServiceImpl.java
  6. 47
      hiver-modules/hiver-mall/src/main/resources/mapper/DealingsRecordMapper.xml
  7. 1
      hiver-modules/hiver-mall/src/main/resources/mapper/PurchaseMapper.xml

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

@ -35,7 +35,7 @@
<a href="#"><span class="badge badge-primary">Hiver</span></a>
</li>
<li class="m-r-10">
<a href="#"><span class="badge badge-primary">八月 04, 2024 16:50:15</span></a>
<a href="#"><span class="badge badge-primary">八月 04, 2024 18:32:59</span></a>
</li>
</ul>
</div>
@ -84,7 +84,7 @@
<div class="test-detail">
<span class="meta text-white badge badge-sm"></span>
<p class="name">passTest</p>
<p class="text-sm"><span>16:50:16 下午</span> / <span>0.016 secs</span></p>
<p class="text-sm"><span>18:32:59 下午</span> / <span>0.026 secs</span></p>
</div>
<div class="test-contents d-none">
<div class="detail-head">
@ -92,9 +92,9 @@
<div class="info">
<div class='float-right'><span class='badge badge-default'>#test-id=1</span></div>
<h5 class="test-status text-pass">passTest</h5>
<span class='badge badge-success'>08.04.2024 16:50:16</span>
<span class='badge badge-danger'>08.04.2024 16:50:16</span>
<span class='badge badge-default'>0.016 secs</span>
<span class='badge badge-success'>08.04.2024 18:32:59</span>
<span class='badge badge-danger'>08.04.2024 18:32:59</span>
<span class='badge badge-default'>0.026 secs</span>
</div>
<div class="m-t-10 m-l-5"></div>
</div>
@ -104,7 +104,7 @@
<tbody>
<tr class="event-row">
<td><span class="badge log pass-bg">Pass</span></td>
<td>16:50:16</td>
<td>18:32:59</td>
<td>
Test passed
</td>
@ -128,13 +128,13 @@
<div class="col-md-3">
<div class="card"><div class="card-body">
<p class="m-b-0">Started</p>
<h3>八月 04, 2024 16:50:15</h3>
<h3>八月 04, 2024 18:32:59</h3>
</div></div>
</div>
<div class="col-md-3">
<div class="card"><div class="card-body">
<p class="m-b-0">Ended</p>
<h3>八月 04, 2024 16:50:16</h3>
<h3>八月 04, 2024 18:32:59</h3>
</div></div>
</div>
<div class="col-md-3">

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

@ -81,7 +81,7 @@ public class BillServiceImpl implements BillService {
if (saleArrearsVo != null) {
customerBillDataVo.setArrears(saleArrearsVo.getArrears());
customerBillDataVo.setTotalSale(saleArrearsVo.getTotalSale());
}else{
} else {
customerBillDataVo.setArrears(BigDecimal.ZERO);
customerBillDataVo.setTotalSale(BigDecimal.ZERO);
}
@ -90,7 +90,7 @@ public class BillServiceImpl implements BillService {
final ArrearsVo returnSaleArrearsVo = returnSaleService.getTotalReturn(customerBillQueryVo);
if (returnSaleArrearsVo != null) {
customerBillDataVo.setTotalReturn(returnSaleArrearsVo.getTotalReturn());
}else{
} else {
customerBillDataVo.setTotalReturn(BigDecimal.ZERO);
}
// 根据客户id及日期范围对账单明细
@ -99,13 +99,13 @@ public class BillServiceImpl implements BillService {
// 获取saleId,去查询销售单的商品明细,及退货单的商品明细
final List<String> saleIdList = new ArrayList<>();
if(records.isEmpty()){
if (records.isEmpty()) {
//未开单,查询客户欠款,作为初期欠款和期末欠款
final Debt debt = debtService.selectByUserId(customerBillQueryVo.getShopId(),customerBillQueryVo.getCustomerId());
final Debt debt = debtService.selectByUserId(customerBillQueryVo.getShopId(), customerBillQueryVo.getCustomerId());
// 要查新客户的创建时间,根据用户的创建时间来判断;
// 如果查询时间小于创建时间,那么初期欠款和期末欠款应该为0
// 如果查询的时间大于创建时间,那么初期欠款和期末欠款应该为客户欠款
if(debt != null){
if (debt != null) {
final Date createTime = debt.getCreateTime();
final String endDate = customerBillQueryVo.getEndDate();
final Date enddate;
@ -115,18 +115,18 @@ public class BillServiceImpl implements BillService {
throw new RuntimeException(e);
}
// 以为现在创建客户就创建了欠款信息,那么就按照欠款信息的创建时间作为标识
if(createTime.after(enddate)){
if (createTime.after(enddate)) {
customerBillDataVo.setInitialArrears(BigDecimal.ZERO);
customerBillDataVo.setEndArrears(BigDecimal.ZERO);
}else{
} else {
customerBillDataVo.setInitialArrears(debt.getAmountOwed());
customerBillDataVo.setEndArrears(debt.getAmountOwed());
}
}
}else{
} else {
for (int i = 0; i < records.size(); i++) {
if(StringUtils.isNotEmpty(records.get(i).getSaleId())){
if (StringUtils.isNotEmpty(records.get(i).getSaleId())) {
saleIdList.add(records.get(i).getSaleId());
}
// 根据时间升序查询的,这里获取第一个的初期欠款当做本次查询的初期欠款
@ -134,11 +134,10 @@ public class BillServiceImpl implements BillService {
final BigDecimal lastDebtAmount = records.get(0).getLastDebtAmount();
customerBillDataVo.setInitialArrears(lastDebtAmount);
}
// 获取最后一个的剩余欠款当做本次查询的剩余欠款
if (i == records.size() - 1) {
customerBillDataVo.setEndArrears(records.get(i).getBalanceDue());
}
}
// 因为记录分页了,所以这里不能获取最后一条数据作为获期末欠款,应该单独查询一下
final BigDecimal arrearsByUserId = dealingsRecordService.getArrearsByUserId(customerBillQueryVo);
customerBillDataVo.setEndArrears(arrearsByUserId);
}
if (!saleIdList.isEmpty()) {
@ -272,10 +271,11 @@ public class BillServiceImpl implements BillService {
/**
* 获取供应商对账单
* @author 王富康
* @date 2024/7/23
*
* @param supplierBillQueryVo
* @return SupplierBillDataVo
* @author 王富康
* @date 2024/7/23
*/
@Override
public SupplierBillDataVo getPurchaseBill(SupplierBillQueryVo supplierBillQueryVo) {
@ -295,8 +295,10 @@ public class BillServiceImpl implements BillService {
// 获取本期全部拿货总金额
final ArrearsVo saleArrearsVo = purchaseService.getArrearsAndTotalSale(supplierBillQueryVo);
if (saleArrearsVo != null) {
supplierBillDataVo.setArrears(saleArrearsVo.getArrears());
supplierBillDataVo.setTotalSale(saleArrearsVo.getTotalSale());
}else{
} else {
supplierBillDataVo.setArrears(BigDecimal.ZERO);
supplierBillDataVo.setTotalSale(BigDecimal.ZERO);
}
@ -306,13 +308,13 @@ public class BillServiceImpl implements BillService {
// 获取saleId,去查询销售单的商品明细,及退货单的商品明细
final List<String> purchaseIdList = new ArrayList<>();
if(records.isEmpty()){
if (records.isEmpty()) {
//未开单,查询客户欠款,作为初期欠款和期末欠款
final Debt debt = debtService.selectByUserId(supplierBillQueryVo.getShopId(),supplierBillQueryVo.getSupplierId());
final Debt debt = debtService.selectByUserId(supplierBillQueryVo.getShopId(), supplierBillQueryVo.getSupplierId());
// 要查新客户的创建时间,根据用户的创建时间来判断;
// 如果查询时间小于创建时间,那么初期欠款和期末欠款应该为0
// 如果查询的时间大于创建时间,那么初期欠款和期末欠款应该为客户欠款
if(debt != null){
if (debt != null) {
final Date createTime = debt.getCreateTime();
final String endDate = supplierBillQueryVo.getEndDate();
Date enddate = new Date();
@ -324,18 +326,18 @@ public class BillServiceImpl implements BillService {
throw new RuntimeException(e);
}
// 以为现在创建客户就创建了欠款信息,那么就按照欠款信息的创建时间作为标识
if(createTime.after(enddate)){
if (createTime.after(enddate)) {
supplierBillDataVo.setInitialArrears(BigDecimal.ZERO);
supplierBillDataVo.setEndArrears(BigDecimal.ZERO);
}else{
} else {
supplierBillDataVo.setInitialArrears(debt.getAmountOwed());
supplierBillDataVo.setEndArrears(debt.getAmountOwed());
}
}
}else{
} else {
for (int i = 0; i < records.size(); i++) {
if(StringUtils.isNotEmpty(records.get(i).getPurchaseId())){
if (StringUtils.isNotEmpty(records.get(i).getPurchaseId())) {
purchaseIdList.add(records.get(i).getPurchaseId());
}
// 根据时间升序查询的,这里获取第一个的初期欠款当做本次查询的初期欠款
@ -343,11 +345,11 @@ public class BillServiceImpl implements BillService {
final BigDecimal lastDebtAmount = records.get(0).getLastDebtAmount();
supplierBillDataVo.setInitialArrears(lastDebtAmount);
}
// 获取最后一个的剩余欠款当做本次查询的剩余欠款
if (i == records.size() - 1) {
supplierBillDataVo.setEndArrears(records.get(i).getBalanceDue());
}
}
// 因为记录分页了,所以这里不能获取最后一条数据作为获期末欠款,应该单独查询一下
final BigDecimal arrearsBySupplierId = dealingsRecordService.getArrearsBySupplierId(supplierBillQueryVo);
supplierBillDataVo.setEndArrears(arrearsBySupplierId);
}
if (!purchaseIdList.isEmpty()) {
@ -368,7 +370,7 @@ public class BillServiceImpl implements BillService {
}
// 获取入库单规格明细
final List<StockLog> stockLogList = stockLogService.getPurchaseDetails(purchaseIdList);
final Map<String,List<StockLog>> stockLogMap = new HashMap<>();
final Map<String, List<StockLog>> stockLogMap = new HashMap<>();
for (StockLog stockLog : stockLogList) {
final String detailId = stockLog.getDetailId();
if (stockLogMap.containsKey(detailId)) {

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

@ -69,4 +69,8 @@ public interface DealingsRecordMapper extends BaseMapper<DealingsRecord> {
* @date 2024/8/2
*/
void deleteDealingsRecord(@Param("id") String id);
BigDecimal getArrearsByUserId(@Param("customerBillQueryVo") CustomerBillQueryVo customerBillQueryVo);
BigDecimal getArrearsBySupplierId(@Param("supplierBillQueryVo") SupplierBillQueryVo supplierBillQueryVo);
}

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

@ -63,4 +63,24 @@ public interface DealingsRecordService extends IService<DealingsRecord> {
* @date 2024/8/2
*/
void deleteDealingsRecord(String id);
/**
* 获取客户期末欠款
*
* @param customerBillQueryVo
* @return Page<BillDealingsRecordVo>
* @author 王富康
* @date 2024/7/6
*/
BigDecimal getArrearsByUserId(CustomerBillQueryVo customerBillQueryVo);
/**
* 获取供应商期末欠款
*
* @param supplierBillQueryVo
* @return Page<BillDealingsRecordVo>
* @author 王富康
* @date 2024/7/6
*/
BigDecimal getArrearsBySupplierId(SupplierBillQueryVo supplierBillQueryVo);
}

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

@ -85,4 +85,14 @@ public class DealingsRecordServiceImpl extends ServiceImpl<DealingsRecordMapper,
dealingsRecordMapper.deleteDealingsRecord(id);
}
@Override
public BigDecimal getArrearsByUserId(CustomerBillQueryVo customerBillQueryVo) {
return dealingsRecordMapper.getArrearsByUserId(customerBillQueryVo);
}
@Override
public BigDecimal getArrearsBySupplierId(SupplierBillQueryVo supplierBillQueryVo) {
return dealingsRecordMapper.getArrearsBySupplierId(supplierBillQueryVo);
}
}

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

@ -209,4 +209,51 @@
set del_flag = 2
where id = #{id}
</update>
<select id="getArrearsByUserId" resultType="java.math.BigDecimal">
select
tdr.balance_due
from
t_dealings_record tdr
left join t_sale ts on ts.id = tdr.sale_id and ts.shop_id = #{customerBillQueryVo.shopId} and ts.status not in ('6', '7' )
left join (
select
n.sale_id,
sum( n.total_amount ) as return_sale_total_amount
from
t_sale m
left join t_return_sale n on m.id = n.sale_id
group by
n.sale_id
) trs on ts.id = trs.sale_id
WHERE
<!--20240802 排除掉删除的交易记录-->
tdr.del_flag != 2
and tdr.dealings_user_id = #{customerBillQueryVo.customerId}
and tdr.shop_id = #{customerBillQueryVo.shopId}
<if test='customerBillQueryVo.startDate !=null and customerBillQueryVo.endDate !=null'>
and tdr.create_time BETWEEN #{customerBillQueryVo.startDate} AND #{customerBillQueryVo.endDate}
</if>
order by tdr.create_time desc
limit 1
</select>
<select id="getArrearsBySupplierId" resultType="java.math.BigDecimal">
select
tdr.balance_due
from
t_dealings_record tdr
left join t_purchase ts on ts.id = tdr.sale_id and ts.shop_id = #{supplierBillQueryVo.shopId}
WHERE
<!--20240802 排除掉删除的交易记录-->
tdr.del_flag != 2
and tdr.dealings_user_id = #{supplierBillQueryVo.supplierId}
and tdr.shop_id = #{supplierBillQueryVo.shopId}
and (tdr.sale_id is null or ts.in_storage_status = '1')
<if test='supplierBillQueryVo.startDate !=null and supplierBillQueryVo.endDate !=null'>
and tdr.create_time BETWEEN #{supplierBillQueryVo.startDate} AND #{supplierBillQueryVo.endDate}
</if>
order by tdr.create_time desc
limit 1
</select>
</mapper>

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

@ -550,6 +550,7 @@
<select id="getArrearsAndTotalSale" resultType="cc.hiver.mall.bill.vo.ArrearsVo">
select
sum(tp.no_pay) as arrears,
sum(tp.should_pay) as total_sale
from
t_purchase tp

Loading…
Cancel
Save