Browse Source

物流优化

dev
wangfukang 1 year ago
parent
commit
65643f2285
  1. 14
      hiver-admin/test-output/test-report.html
  2. 4
      hiver-core/src/main/java/cc/hiver/core/common/constant/DealingsRecordConstant.java
  3. 14
      hiver-core/src/main/java/cc/hiver/core/logisticsaddressbook/service/impl/LogisticsAddressBookServiceImpl.java
  4. 23
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/debt/controller/DebtController.java
  5. 2
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/debt/mapper/DebtMapper.java
  6. 8
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/debt/service/DebtService.java
  7. 62
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/debt/service/impl/DebtServiceImpl.java
  8. 2
      hiver-modules/hiver-mall/src/main/resources/mapper/DealingsRecordMapper.xml

14
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">十一月 18, 2024 20:21:08</span></a>
<a href="#"><span class="badge badge-primary">十一月 21, 2024 21:56:37</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>20:21:09 下午</span> / <span>0.016 secs</span></p>
<p class="text-sm"><span>21:56:37 下午</span> / <span>0.016 secs</span></p>
</div>
<div class="test-contents d-none">
<div class="detail-head">
@ -92,8 +92,8 @@
<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'>11.18.2024 20:21:09</span>
<span class='badge badge-danger'>11.18.2024 20:21:09</span>
<span class='badge badge-success'>11.21.2024 21:56:37</span>
<span class='badge badge-danger'>11.21.2024 21:56:37</span>
<span class='badge badge-default'>0.016 secs</span>
</div>
<div class="m-t-10 m-l-5"></div>
@ -104,7 +104,7 @@
<tbody>
<tr class="event-row">
<td><span class="badge log pass-bg">Pass</span></td>
<td>20:21:09</td>
<td>21:56:37</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>十一月 18, 2024 20:21:08</h3>
<h3>十一月 21, 2024 21:56:37</h3>
</div></div>
</div>
<div class="col-md-3">
<div class="card"><div class="card-body">
<p class="m-b-0">Ended</p>
<h3>十一月 18, 2024 20:21:09</h3>
<h3>十一月 21, 2024 21:56:37</h3>
</div></div>
</div>
<div class="col-md-3">

4
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回款3新增客户/供应商欠款4充值5追加欠款;6:撤销订单;7:入库8删除交易记录; 9:入库退货10撤销入库退货
* 交易类型0:开单1退货(应该是没用到)2回款3新增客户/供应商欠款4充值5追加欠款;6:撤销订单;7:入库8删除交易记录; 9:入库退货10撤销入库退货;99:撤销欠款记录
*/
Integer[] DEALINGS_TYPE = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
Integer[] DEALINGS_TYPE = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,99};
}

14
hiver-core/src/main/java/cc/hiver/core/logisticsaddressbook/service/impl/LogisticsAddressBookServiceImpl.java

@ -46,6 +46,7 @@ public class LogisticsAddressBookServiceImpl extends ServiceImpl<LogisticsAddres
//根据名称、电话、地址查询看是不是存在,如果不存在则新建一条
if (StringUtils.isEmpty(logisticsOrder.getShipperId())) {
if (StringUtils.isNotEmpty(logisticsOrder.getShipperName()) || StringUtils.isNotEmpty(logisticsOrder.getShipperAddress()) || StringUtils.isNotEmpty(logisticsOrder.getShipperMobile())) {
// 创建发货人地址簿
final LogisticsAddressBook shipperAddressBook = new LogisticsAddressBook();
// 设置发货人名称,从物流订单的发货人名称中获取
@ -65,6 +66,7 @@ public class LogisticsAddressBookServiceImpl extends ServiceImpl<LogisticsAddres
list.add(shipperAddressBook);
// 回填新增的发货人id
logisticsOrder.setShipperId(shipperAddressBook.getId());
}
} else {
// 有id,查询,并更新名称
final LogisticsAddressBook oldLogisticsAddressBook = logisticsAddressBookMapper.selectById(logisticsOrder.getShipperId());
@ -77,6 +79,7 @@ public class LogisticsAddressBookServiceImpl extends ServiceImpl<LogisticsAddres
}
if (StringUtils.isEmpty(logisticsOrder.getReceiverId())) {
if (StringUtils.isNotEmpty(logisticsOrder.getReceiverName()) || StringUtils.isNotEmpty(logisticsOrder.getReceiverAddress()) || StringUtils.isNotEmpty(logisticsOrder.getReceiverMobile())) {
// 创建收货人地址簿
final LogisticsAddressBook reciverAddressBook = new LogisticsAddressBook();
// 设置收货人名称,从物流订单的收货人名称中获取
@ -97,6 +100,8 @@ public class LogisticsAddressBookServiceImpl extends ServiceImpl<LogisticsAddres
// 回填新增的收货人id
logisticsOrder.setReceiverId(reciverAddressBook.getId());
}
} else {
// 有id,查询,并更新名称
final LogisticsAddressBook oldLogisticsAddressBook = logisticsAddressBookMapper.selectById(logisticsOrder.getReceiverId());
@ -122,16 +127,17 @@ public class LogisticsAddressBookServiceImpl extends ServiceImpl<LogisticsAddres
public IPage<LogisticsAddressBook> getLogisticsAddressBookPageList(LogisticsAddressBookQueryVo logisticsAddressBookQueryVo) {
final Page<LogisticsAddressBook> page = new Page<>();
final LambdaQueryWrapper<LogisticsAddressBook> wrapper = new LambdaQueryWrapper<>();
if (logisticsAddressBookQueryVo != null && StringUtils.isNotEmpty(logisticsAddressBookQueryVo.getKeyWord())) {
wrapper.like(LogisticsAddressBook::getShipperOrReceiverName, logisticsAddressBookQueryVo.getKeyWord()).or()
.like(LogisticsAddressBook::getMobile, logisticsAddressBookQueryVo.getKeyWord());
}
if (logisticsAddressBookQueryVo != null && logisticsAddressBookQueryVo.getAddressType() != null) {
wrapper.eq(LogisticsAddressBook::getAddressType, logisticsAddressBookQueryVo.getAddressType());
}
if (logisticsAddressBookQueryVo != null && logisticsAddressBookQueryVo.getCompanyId() != null) {
wrapper.eq(LogisticsAddressBook::getCompanyId, logisticsAddressBookQueryVo.getCompanyId());
}
if (logisticsAddressBookQueryVo != null && StringUtils.isNotEmpty(logisticsAddressBookQueryVo.getKeyWord())) {
wrapper.like(LogisticsAddressBook::getShipperOrReceiverName, logisticsAddressBookQueryVo.getKeyWord()).or()
.like(LogisticsAddressBook::getMobile, logisticsAddressBookQueryVo.getKeyWord());
}
page.setCurrent(logisticsAddressBookQueryVo.getPageNum());
page.setSize(logisticsAddressBookQueryVo.getPageSize());
return logisticsAddressBookMapper.selectPage(page, wrapper);

23
hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/debt/controller/DebtController.java

@ -130,4 +130,27 @@ public class DebtController {
final DebtOfShopVo debtOfShopVo = debtService.getAllBalanceByShopId(queryDebtVo);
return new ResultUtil<>().setData(debtOfShopVo);
}
/**
* 撤销充值
*
* @param id
* @return Result
* @author 王富康
* @date 2024/11/20
*/
@RequestMapping(value = "/revokeDebt", method = RequestMethod.POST)
@ApiOperation("撤销充值")
public Result revokeDebt(String id, String remark) {
if (StringUtils.isEmpty(id)) {
return ResultUtil.error("欠款id不能为空");
}
try {
debtService.revokeDebt(id, remark);
return ResultUtil.success("撤销成功!");
} catch (Exception e) {
log.error(e.getMessage(), e);
return ResultUtil.error("撤销失败!");
}
}
}

2
hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/debt/mapper/DebtMapper.java

@ -6,9 +6,11 @@ import cc.hiver.mall.debt.vo.QueryDebtVo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public interface DebtMapper extends BaseMapper<Debt> {
Page<Debt> getDebtByShopId(Page<QueryDebtVo> page, @Param("queryDebtVo") QueryDebtVo queryDebtVo);

8
hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/debt/service/DebtService.java

@ -94,4 +94,12 @@ public interface DebtService extends IService<Debt> {
* @date 2024/10/11
*/
DebtOfShopVo getAllBalanceByShopId(QueryDebtVo queryDebtVo);
/**
* 撤销充值
* @author 王富康
* @date 2024/11/20
* @param id
*/
void revokeDebt(String id, String remark);
}

62
hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/debt/service/impl/DebtServiceImpl.java

@ -1,5 +1,6 @@
package cc.hiver.mall.debt.service.impl;
import cc.hiver.core.common.constant.CommonConstant;
import cc.hiver.core.common.constant.DealingsRecordConstant;
import cc.hiver.core.common.exception.HiverException;
import cc.hiver.core.common.utils.SecurityUtil;
@ -443,4 +444,65 @@ public class DebtServiceImpl extends ServiceImpl<DebtMapper, Debt> implements De
public DebtOfShopVo getAllBalanceByShopId(QueryDebtVo queryDebtVo) {
return debtMapper.getAllBalanceByShopId(queryDebtVo);
}
/**
* 撤销欠款记录
*
* @param id
* @param remark
* @author 王富康
* @date 2024/11/20
*/
@Override
public void revokeDebt(String id, String remark) {
final DealingsRecord oldDealingsRecord = dealingsRecordService.getById(id);
if (oldDealingsRecord == null) {
throw new HiverException("未查询到欠款记录信息!");
}
// 获取当前欠款
final String shopId = securityUtil.getShopId();
final User user = securityUtil.getCurrUser();
final Debt oldDebt = debtMapper.selectByUserId(shopId, oldDealingsRecord.getDealingsUserId());
// 回退金额
// 需要回退的金额
final BigDecimal needRevokeAmount = oldDealingsRecord.getAmount();
BigDecimal lastDebtAmount = BigDecimal.ZERO;
BigDecimal newDebtAmount = BigDecimal.ZERO;
lastDebtAmount = oldDebt.getAmountOwed() == null ? BigDecimal.ZERO : oldDebt.getAmountOwed();
// 计算欠款
if (oldDebt.getAmountOwed() != null) {
newDebtAmount = oldDebt.getAmountOwed().add(needRevokeAmount);
}
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.setDelFlag(CommonConstant.DEL_FLAG_FALSE);
dealingsRecord.setDealingsUserId(oldDebt.getUserId());
dealingsRecord.setDealingsUserName(oldDebt.getUserName());
dealingsRecord.setDealingsWay("撤销欠款记录");
dealingsRecord.setShopId(shopId);
// 上次欠款
dealingsRecord.setLastDebtAmount(lastDebtAmount);
// 最新欠款
dealingsRecord.setBalanceDue(newDebtAmount);
// 金额
dealingsRecord.setAmount(needRevokeAmount);
// 充值
dealingsRecord.setDealingsType(DealingsRecordConstant.DEALINGS_TYPE[11]);
dealingsRecord.setDealingsTime(new Date());
dealingsRecord.setRemark(remark);
dealingsRecord.setUserType(DealingsRecordConstant.TYPE[1]);
dealingsRecordService.save(dealingsRecord);
// 原来的交易记录变为已撤销
oldDealingsRecord.setDelFlag(CommonConstant.DEL_FLAG_TRUE);
dealingsRecordService.updateById(oldDealingsRecord);
}
}

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

@ -203,7 +203,7 @@
WHERE
<!--20240802 排除掉删除的交易记录-->
tdr.del_flag != 2
and tdr.dealings_type in ( '2','3','4','5','6','7' )
and tdr.dealings_type in ( '2','3','4','5','6','7','99' )
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')

Loading…
Cancel
Save