|
@@ -2,12 +2,15 @@ package com.sckw.freight.service.freight.impl;
|
|
|
|
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
|
|
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.sckw.freight.entity.freight.KwpLedgerLogistics;
|
|
import com.sckw.freight.entity.freight.KwpLedgerLogistics;
|
|
|
import com.sckw.freight.entity.freight.KwpLedgerLogisticsOrder;
|
|
import com.sckw.freight.entity.freight.KwpLedgerLogisticsOrder;
|
|
|
import com.sckw.freight.entity.freight.KwpLedgerLogisticsTrack;
|
|
import com.sckw.freight.entity.freight.KwpLedgerLogisticsTrack;
|
|
|
|
|
+import com.sckw.freight.entity.freight.KwpSettlementLogistics;
|
|
|
import com.sckw.freight.entity.kll.KllOrder;
|
|
import com.sckw.freight.entity.kll.KllOrder;
|
|
|
import com.sckw.freight.entity.kll.KllOrderTask;
|
|
import com.sckw.freight.entity.kll.KllOrderTask;
|
|
|
import com.sckw.freight.mapper.freight.KwpLedgerLogisticsMapper;
|
|
import com.sckw.freight.mapper.freight.KwpLedgerLogisticsMapper;
|
|
|
|
|
+import com.sckw.freight.mapper.freight.KwpSettlementLogisticsMapper;
|
|
|
import com.sckw.freight.mapper.kll.KllOrderTaskMapper;
|
|
import com.sckw.freight.mapper.kll.KllOrderTaskMapper;
|
|
|
import com.sckw.freight.model.enums.*;
|
|
import com.sckw.freight.model.enums.*;
|
|
|
import com.sckw.freight.model.vo.request.RequestLedgerLogisticsPageInfo;
|
|
import com.sckw.freight.model.vo.request.RequestLedgerLogisticsPageInfo;
|
|
@@ -17,16 +20,15 @@ import com.sckw.freight.model.vo.response.ResponseLedgerLogistics;
|
|
|
import com.sckw.freight.model.vo.response.ResponsePageData;
|
|
import com.sckw.freight.model.vo.response.ResponsePageData;
|
|
|
import com.sckw.freight.service.freight.IKwpLedgerLogisticsOrderService;
|
|
import com.sckw.freight.service.freight.IKwpLedgerLogisticsOrderService;
|
|
|
import com.sckw.freight.service.freight.IKwpLedgerLogisticsService;
|
|
import com.sckw.freight.service.freight.IKwpLedgerLogisticsService;
|
|
|
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
|
|
import com.sckw.freight.service.freight.IKwpLedgerLogisticsTrackService;
|
|
import com.sckw.freight.service.freight.IKwpLedgerLogisticsTrackService;
|
|
|
import com.sckw.freight.service.kll.IKllOrderService;
|
|
import com.sckw.freight.service.kll.IKllOrderService;
|
|
|
import com.sckw.freight.util.DateTimeUtil;
|
|
import com.sckw.freight.util.DateTimeUtil;
|
|
|
import com.sckw.freight.util.R;
|
|
import com.sckw.freight.util.R;
|
|
|
import com.sckw.freight.util.SnowflakeIdUtil;
|
|
import com.sckw.freight.util.SnowflakeIdUtil;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
-import org.jetbrains.annotations.NotNull;
|
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
import java.math.BigDecimal;
|
|
|
import java.time.LocalDateTime;
|
|
import java.time.LocalDateTime;
|
|
@@ -52,10 +54,56 @@ public class KwpLedgerLogisticsServiceImpl extends ServiceImpl<KwpLedgerLogistic
|
|
|
@Autowired
|
|
@Autowired
|
|
|
IKwpLedgerLogisticsTrackService iKwpLedgerLogisticsTrackService;
|
|
IKwpLedgerLogisticsTrackService iKwpLedgerLogisticsTrackService;
|
|
|
@Autowired
|
|
@Autowired
|
|
|
|
|
+ KwpSettlementLogisticsMapper kwpSettlementLogisticsMapper;
|
|
|
|
|
+ @Autowired
|
|
|
KwpLedgerLogisticsMapper kwpLedgerLogisticsMapper;
|
|
KwpLedgerLogisticsMapper kwpLedgerLogisticsMapper;
|
|
|
@Autowired
|
|
@Autowired
|
|
|
KllOrderTaskMapper kllOrderTaskMapper;
|
|
KllOrderTaskMapper kllOrderTaskMapper;
|
|
|
|
|
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * @description:更改物流对账单状态(每一次收款后调用)
|
|
|
|
|
+ * @author: xj
|
|
|
|
|
+ * @date: 2025/1/12 星期日 11:20
|
|
|
|
|
+ * @param: ledgerLogisticsId 物流对账单id
|
|
|
|
|
+ * @return: null
|
|
|
|
|
+ **/
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public void updateLedgerLogisticsStatus(KwpLedgerLogistics ledgerLogistics, Long userId) {
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 1:查询 对账单单下的 所有结算单(收款记录)
|
|
|
|
|
+ * 2:如果全部收款,则对账单状态为已收款
|
|
|
|
|
+ * 3:如果部分收款,则对账单状态为部分收款
|
|
|
|
|
+ * 4:添加状态变更记录
|
|
|
|
|
+ */
|
|
|
|
|
+ KwpLedgerLogistics newLedgerLogistics = new KwpLedgerLogistics();
|
|
|
|
|
+ newLedgerLogistics.setId(ledgerLogistics.getId());
|
|
|
|
|
+
|
|
|
|
|
+ LambdaQueryWrapper<KwpSettlementLogistics> wrapper = new LambdaQueryWrapper<>();
|
|
|
|
|
+ wrapper.eq(KwpSettlementLogistics::getLLedgerId, ledgerLogistics.getId());
|
|
|
|
|
+ wrapper.eq(KwpSettlementLogistics::getStatus, SettlementLogisticsStatusEnum.FullSettlement.getCode());
|
|
|
|
|
+ List<KwpSettlementLogistics> kwpSettlementLogistics = kwpSettlementLogisticsMapper.selectList(wrapper);
|
|
|
|
|
+ if (kwpSettlementLogistics == null) kwpSettlementLogistics = new ArrayList<>();
|
|
|
|
|
+ BigDecimal totalPrice = kwpSettlementLogistics.stream().map(KwpSettlementLogistics::getActualPrice).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
|
|
+ newLedgerLogistics.setActualPrice(totalPrice);
|
|
|
|
|
+ KwpLedgerLogisticsStatusEnum status = KwpLedgerLogisticsStatusEnum.Unpaid;
|
|
|
|
|
+ if (totalPrice.compareTo(ledgerLogistics.getSettlePrice()) < 0) {
|
|
|
|
|
+ status = KwpLedgerLogisticsStatusEnum.PartialPaid;
|
|
|
|
|
+ } else {
|
|
|
|
|
+ status = KwpLedgerLogisticsStatusEnum.Paid;
|
|
|
|
|
+ }
|
|
|
|
|
+ newLedgerLogistics.setStatus(status.getCode());
|
|
|
|
|
+ newLedgerLogistics.setUpdateBy(userId);
|
|
|
|
|
+ newLedgerLogistics.setUpdateTime(LocalDateTime.now());
|
|
|
|
|
+ newLedgerLogistics.setId(ledgerLogistics.getId());
|
|
|
|
|
+ boolean update = updateById(newLedgerLogistics);
|
|
|
|
|
+ if (!update) throw new RuntimeException("更新对账单状态失败");
|
|
|
|
|
+ //添加状态变更记录
|
|
|
|
|
+ this.savaKwpLedgerLogisticsTrack(ledgerLogistics, status);
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
/**
|
|
/**
|
|
|
* 根骨对账单id查询运单
|
|
* 根骨对账单id查询运单
|
|
|
*
|
|
*
|
|
@@ -95,9 +143,9 @@ public class KwpLedgerLogisticsServiceImpl extends ServiceImpl<KwpLedgerLogistic
|
|
|
orderTask.setId(task.getId().intValue());
|
|
orderTask.setId(task.getId().intValue());
|
|
|
orderTask.setTaskNo(task.getTaskNo());
|
|
orderTask.setTaskNo(task.getTaskNo());
|
|
|
orderTask.setOrderId(task.getOrderId().intValue());
|
|
orderTask.setOrderId(task.getOrderId().intValue());
|
|
|
- orderTask.setLogisticId(task.getLogisticId().intValue());
|
|
|
|
|
|
|
+ //orderTask.setLogisticId(task.getLogisticId().intValue());
|
|
|
orderTask.setTruckLicensePlate(task.getTruckLicensePlate());
|
|
orderTask.setTruckLicensePlate(task.getTruckLicensePlate());
|
|
|
- orderTask.setDriverId(task.getDriverId().intValue());
|
|
|
|
|
|
|
+ //orderTask.setDriverId(task.getDriverId().intValue());
|
|
|
orderTask.setDriverName(task.getDriverName());
|
|
orderTask.setDriverName(task.getDriverName());
|
|
|
orderTask.setDriverPhone(task.getDriverPhone());
|
|
orderTask.setDriverPhone(task.getDriverPhone());
|
|
|
orderTask.setFirstWeight(task.getFirstWeight());
|
|
orderTask.setFirstWeight(task.getFirstWeight());
|
|
@@ -108,6 +156,7 @@ public class KwpLedgerLogisticsServiceImpl extends ServiceImpl<KwpLedgerLogistic
|
|
|
return R.ok(responseKllOrderTasks);
|
|
return R.ok(responseKllOrderTasks);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+
|
|
|
/**
|
|
/**
|
|
|
* 查询对账-物流订单
|
|
* 查询对账-物流订单
|
|
|
*
|
|
*
|
|
@@ -190,6 +239,7 @@ public class KwpLedgerLogisticsServiceImpl extends ServiceImpl<KwpLedgerLogistic
|
|
|
* @since 2025-01-09
|
|
* @since 2025-01-09
|
|
|
*/
|
|
*/
|
|
|
@Override
|
|
@Override
|
|
|
|
|
+ @Transactional
|
|
|
public R<String> saveLedgerLogistics(RequestSaveLedgerLogisticsInfo requestSaveLedgerSettlementInfo) {
|
|
public R<String> saveLedgerLogistics(RequestSaveLedgerLogisticsInfo requestSaveLedgerSettlementInfo) {
|
|
|
/**
|
|
/**
|
|
|
* 1:数据验证
|
|
* 1:数据验证
|
|
@@ -206,7 +256,7 @@ public class KwpLedgerLogisticsServiceImpl extends ServiceImpl<KwpLedgerLogistic
|
|
|
//3:保存对账订单
|
|
//3:保存对账订单
|
|
|
List<KwpLedgerLogisticsOrder> kwpLedgerLogisticsOrders = savaKwpLedgerLogisticsOrder(kwpLedgerLogistics, kllOrders);
|
|
List<KwpLedgerLogisticsOrder> kwpLedgerLogisticsOrders = savaKwpLedgerLogisticsOrder(kwpLedgerLogistics, kllOrders);
|
|
|
//4:保存对账状态
|
|
//4:保存对账状态
|
|
|
- savaKwpLedgerLogisticsTrack(kwpLedgerLogistics);
|
|
|
|
|
|
|
+ savaKwpLedgerLogisticsTrack(kwpLedgerLogistics, KwpLedgerLogisticsStatusEnum.Unpaid);
|
|
|
//5:改订单状态
|
|
//5:改订单状态
|
|
|
updateKllOrderStatus(kllOrders);
|
|
updateKllOrderStatus(kllOrders);
|
|
|
return R.ok(kwpLedgerLogistics.getLLedgerNo());
|
|
return R.ok(kwpLedgerLogistics.getLLedgerNo());
|
|
@@ -289,6 +339,7 @@ public class KwpLedgerLogisticsServiceImpl extends ServiceImpl<KwpLedgerLogistic
|
|
|
//创建人
|
|
//创建人
|
|
|
kwpLedgerLogistics.setCreateBy(requestSaveLedgerSettlementInfo.getUserId());
|
|
kwpLedgerLogistics.setCreateBy(requestSaveLedgerSettlementInfo.getUserId());
|
|
|
kwpLedgerLogistics.setUpdateBy(requestSaveLedgerSettlementInfo.getUserId());
|
|
kwpLedgerLogistics.setUpdateBy(requestSaveLedgerSettlementInfo.getUserId());
|
|
|
|
|
+ kwpLedgerLogistics.setGenerateTime(LocalDateTime.now());
|
|
|
kwpLedgerLogistics.setCreateTime(LocalDateTime.now());
|
|
kwpLedgerLogistics.setCreateTime(LocalDateTime.now());
|
|
|
kwpLedgerLogistics.setUpdateTime(LocalDateTime.now());
|
|
kwpLedgerLogistics.setUpdateTime(LocalDateTime.now());
|
|
|
kwpLedgerLogistics.setDelFlag(DelFlagEnum.NotDelete.getCode());
|
|
kwpLedgerLogistics.setDelFlag(DelFlagEnum.NotDelete.getCode());
|
|
@@ -337,11 +388,11 @@ public class KwpLedgerLogisticsServiceImpl extends ServiceImpl<KwpLedgerLogistic
|
|
|
* @author xj
|
|
* @author xj
|
|
|
* @since 2025-01-09
|
|
* @since 2025-01-09
|
|
|
*/
|
|
*/
|
|
|
- private KwpLedgerLogisticsTrack savaKwpLedgerLogisticsTrack(KwpLedgerLogistics kwpLedgerLogistics) {
|
|
|
|
|
|
|
+ private KwpLedgerLogisticsTrack savaKwpLedgerLogisticsTrack(KwpLedgerLogistics kwpLedgerLogistics, KwpLedgerLogisticsStatusEnum ledgerLogisticsStatusEnum) {
|
|
|
KwpLedgerLogisticsTrack kwpLedgerLogisticsTrack = new KwpLedgerLogisticsTrack();
|
|
KwpLedgerLogisticsTrack kwpLedgerLogisticsTrack = new KwpLedgerLogisticsTrack();
|
|
|
kwpLedgerLogisticsTrack.setId(SnowflakeIdUtil.getInstance().nextId());
|
|
kwpLedgerLogisticsTrack.setId(SnowflakeIdUtil.getInstance().nextId());
|
|
|
kwpLedgerLogisticsTrack.setLLedgerId(kwpLedgerLogistics.getId());
|
|
kwpLedgerLogisticsTrack.setLLedgerId(kwpLedgerLogistics.getId());
|
|
|
- kwpLedgerLogisticsTrack.setStatus(0);
|
|
|
|
|
|
|
+ kwpLedgerLogisticsTrack.setStatus(ledgerLogisticsStatusEnum.getCode());
|
|
|
kwpLedgerLogisticsTrack.setCreateBy(kwpLedgerLogistics.getCreateBy());
|
|
kwpLedgerLogisticsTrack.setCreateBy(kwpLedgerLogistics.getCreateBy());
|
|
|
kwpLedgerLogisticsTrack.setUpdateBy(kwpLedgerLogistics.getUpdateBy());
|
|
kwpLedgerLogisticsTrack.setUpdateBy(kwpLedgerLogistics.getUpdateBy());
|
|
|
kwpLedgerLogisticsTrack.setCreateTime(kwpLedgerLogistics.getCreateTime());
|
|
kwpLedgerLogisticsTrack.setCreateTime(kwpLedgerLogistics.getCreateTime());
|