Compare commits

..

No commits in common. "3bdb6185b6237b107ec62254ccd73153fc59e0f1" and "12754a7015ed92c04732aaba5b404e7015d031ca" have entirely different histories.

34 changed files with 281 additions and 476 deletions

View File

@ -1,229 +0,0 @@
package com.njzscloud.dispose.cst.order.helper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.njzscloud.dispose.cst.customer.constant.SettlementWay;
import com.njzscloud.dispose.cst.order.constant.PaymentStatus;
import com.njzscloud.dispose.cst.order.pojo.entity.OrderExpenseItemsEntity;
import com.njzscloud.dispose.cst.order.pojo.entity.OrderPaymentRecordEntity;
import com.njzscloud.dispose.cst.order.service.OrderExpenseItemsService;
import com.njzscloud.dispose.cst.order.service.OrderPaymentRecordService;
import com.njzscloud.dispose.finance.constant.ExpenseStrategy;
import com.njzscloud.dispose.finance.constant.MoneyChangeCategory;
import com.njzscloud.dispose.finance.constant.Unit;
import com.njzscloud.dispose.finance.pojo.entity.MoneyAccountEntity;
import com.njzscloud.dispose.finance.pojo.entity.MoneyFlowEntity;
import com.njzscloud.dispose.finance.service.MoneyAccountService;
import com.njzscloud.dispose.finance.service.MoneyFlowService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.time.LocalDateTime;
import java.util.List;
/**
*
*
* @author ljw
*/
@Slf4j
@Component
@RequiredArgsConstructor
public class PaymentRecordHelper {
private final OrderPaymentRecordService orderPaymentRecordService;
private final OrderExpenseItemsService orderExpenseItemsService;
private final MoneyAccountService moneyAccountService;
private final MoneyFlowService moneyFlowService;
/**
* ,
*
* @param transId ID
* @param settleWeight
* @param transDistance
* @param orderSn
* @param trainNum
* @return
*/
@Transactional(rollbackFor = Exception.class)
public boolean updatePaymentRecordQuantity(Long transId, Integer settleWeight, Integer transDistance, String orderSn, Integer trainNum) {
// 1. 通过运输信息ID查询付费记录
List<OrderPaymentRecordEntity> paymentRecords = orderPaymentRecordService.list(
Wrappers.<OrderPaymentRecordEntity>lambdaQuery()
.eq(OrderPaymentRecordEntity::getTransId, transId));
if (paymentRecords.isEmpty()) {
return true;
}
// 2. 遍历更新每条付费记录的量
for (OrderPaymentRecordEntity record : paymentRecords) {
// 通过付费记录的订单收费项 Id 查询付费项
OrderExpenseItemsEntity expenseItem = orderExpenseItemsService.getById(record.getExpenseItemId());
Unit unit = expenseItem.getUnit();
ExpenseStrategy expenseStrategy = expenseItem.getExpenseStrategy();
// 3. 根据单位计算量
BigDecimal quantity = calculateQuantity(unit, settleWeight, transDistance);
if (quantity == null) {
// 单位为方,暂不处理
continue;
}
// 4. 计算总金额
BigDecimal totalMoney = calculateTotalMoney(expenseStrategy, expenseItem, quantity);
// 5. 计算结算金额discountMoney、reviseMoney 可为正负,直接做加法)
BigDecimal discountMoney = record.getDiscountMoney() != null ? record.getDiscountMoney() : BigDecimal.ZERO;
BigDecimal reviseMoney = record.getReviseMoney() != null ? record.getReviseMoney() : BigDecimal.ZERO;
BigDecimal settleMoney = totalMoney.add(discountMoney).add(reviseMoney);
// 6. 更新付费记录
OrderPaymentRecordEntity updateRecord = new OrderPaymentRecordEntity();
updateRecord.setId(record.getId());
updateRecord.setQuantity(quantity);
updateRecord.setTotalMoney(totalMoney);
updateRecord.setSettleMoney(settleMoney);
orderPaymentRecordService.updateById(updateRecord);
// 7. 处理支付完成
if (ExpenseStrategy.MianFei.equals(expenseStrategy)) {
// 免费
OrderPaymentRecordEntity payRecord = new OrderPaymentRecordEntity();
payRecord.setId(record.getId());
payRecord.setPaymentStatus(PaymentStatus.MianFei);
payRecord.setPayTime(LocalDateTime.now());
orderPaymentRecordService.updateById(payRecord);
} else {
// 非免费,需要处理支付
SettlementWay settlementWay = record.getSettlementWay();
if (SettlementWay.YueJie.equals(settlementWay) || SettlementWay.YuE.equals(settlementWay)) {
// 月结/余额结算
this.deductPayment(record, settleMoney, orderSn, trainNum);
OrderPaymentRecordEntity payRecord = new OrderPaymentRecordEntity();
payRecord.setId(record.getId());
payRecord.setPaymentStatus(PaymentStatus.YiZhiFu);
payRecord.setPayTime(LocalDateTime.now());
orderPaymentRecordService.updateById(payRecord);
}
}
}
// 8. 检查该运输记录下所有付费记录是否都已完成
List<OrderPaymentRecordEntity> updatedRecords = orderPaymentRecordService.list(
Wrappers.<OrderPaymentRecordEntity>lambdaQuery()
.eq(OrderPaymentRecordEntity::getTransId, transId));
boolean allCompleted = updatedRecords.stream()
.allMatch(r -> PaymentStatus.MianFei.equals(r.getPaymentStatus()) || PaymentStatus.YiZhiFu.equals(r.getPaymentStatus()));
log.info("运输记录 {} 的付费记录量更新完成,所有记录已完成: {}", transId, allCompleted);
return allCompleted;
}
/**
*
*
* @param record
* @param settleMoney
* @param orderSn
* @param trainNum
*/
private void deductPayment(OrderPaymentRecordEntity record, BigDecimal settleMoney, String orderSn, Integer trainNum) {
Long moneyAccountId = record.getPayerMoneyAccountId();
if (moneyAccountId == null) {
log.warn("付费记录 {} 缺少资金账户ID无法扣款", record.getId());
return;
}
MoneyAccountEntity accountEntity = moneyAccountService.getById(moneyAccountId);
if (accountEntity == null) {
log.warn("资金账户 {} 不存在,无法扣款", moneyAccountId);
return;
}
BigDecimal beforeBalance = accountEntity.getRecharge();
BigDecimal afterBalance = beforeBalance.subtract(settleMoney);
// 更新资金账户余额
accountEntity.setRecharge(afterBalance);
moneyAccountService.updateById(accountEntity);
// 记录资金流水
MoneyFlowEntity flowEntity = new MoneyFlowEntity()
.setOrderId(record.getOrderId())
.setOrderSn(orderSn)
.setTrainNum(trainNum)
.setMoneyAccountId(moneyAccountId)
.setBeforeBalance(beforeBalance)
.setDelta(settleMoney.negate()) // 支出为负
.setAfterBalance(afterBalance)
.setMoneyChangeCategory(MoneyChangeCategory.ZhiFu)
.setMemo("订单支付");
moneyFlowService.save(flowEntity);
log.info("资金账户 {} 扣款成功,扣款前余额:{},扣款金额:{},扣款后余额:{}",
moneyAccountId, beforeBalance, settleMoney, afterBalance);
}
/**
*
*
* @param expenseStrategy
* @param expenseItem
* @param quantity
* @return
*/
private BigDecimal calculateTotalMoney(ExpenseStrategy expenseStrategy, OrderExpenseItemsEntity expenseItem, BigDecimal quantity) {
return switch (expenseStrategy) {
case MianFei -> BigDecimal.ZERO; // 免费
case TanXing -> { // 弹性计费
BigDecimal initialPrice = expenseItem.getInitialPrice();
Integer initialQuantity = expenseItem.getInitialQuantity();
Integer everyQuantity = expenseItem.getEveryQuantity();
BigDecimal unitPrice = expenseItem.getUnitPrice();
if (quantity.compareTo(BigDecimal.valueOf(initialQuantity)) <= 0) {
// 净重 <= 起步量,总价 = 起步价
yield initialPrice;
} else {
// 净重 > 起步量,计算超出部分的档次
BigDecimal exceededQuantity = quantity.subtract(BigDecimal.valueOf(initialQuantity));
int tiers = (int) Math.ceil(exceededQuantity.doubleValue() / everyQuantity);
yield initialPrice.add(unitPrice.multiply(BigDecimal.valueOf(tiers)));
}
}
case GuDing -> expenseItem.getUnitPrice(); // 固定价格
case DanJia -> expenseItem.getUnitPrice().multiply(quantity); // 单价计费
};
}
/**
*
*
* @param unit
* @param settleWeight
* @param transDistance
* @return BigDecimalnull
*/
private BigDecimal calculateQuantity(Unit unit, Integer settleWeight, Integer transDistance) {
if (unit == null) {
return null;
}
return switch (unit) {
case Che -> BigDecimal.ONE; // 车量为1
case Fang -> null; // 方:暂不处理
case GongLi -> transDistance != null
? BigDecimal.valueOf(transDistance).divide(BigDecimal.valueOf(1000), 2, RoundingMode.HALF_UP) // 公里:米转公里
: null;
case Dun -> settleWeight != null
? BigDecimal.valueOf(settleWeight).divide(BigDecimal.valueOf(1000), 2, RoundingMode.HALF_UP) // 吨:千克转吨
: null;
};
}
}

View File

@ -3,7 +3,6 @@ package com.njzscloud.dispose.cst.order.pojo.entity;
import com.baomidou.mybatisplus.annotation.*; import com.baomidou.mybatisplus.annotation.*;
import com.njzscloud.dispose.cst.order.constant.OrderCategory; import com.njzscloud.dispose.cst.order.constant.OrderCategory;
import com.njzscloud.dispose.cst.order.constant.OrderStatus; import com.njzscloud.dispose.cst.order.constant.OrderStatus;
import com.njzscloud.dispose.finance.constant.Unit;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import lombok.ToString; import lombok.ToString;
@ -132,7 +131,7 @@ public class OrderEntity {
/** /**
* unit * unit
*/ */
private Unit unit; private String unit;
/** /**
* *

View File

@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import com.njzscloud.dispose.finance.constant.ExpenseItemCategory; import com.njzscloud.dispose.finance.constant.ExpenseItemCategory;
import com.njzscloud.dispose.finance.constant.ExpenseStrategy; import com.njzscloud.dispose.finance.constant.ExpenseStrategy;
import com.njzscloud.dispose.finance.constant.Unit;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import lombok.ToString; import lombok.ToString;
@ -70,7 +69,7 @@ public class OrderExpenseItemsEntity {
/** /**
* unit * unit
*/ */
private Unit unit; private String unit;
/** /**
* --> * -->

View File

@ -55,7 +55,7 @@ public class OrderPaymentRecordEntity {
/** /**
* *
*/ */
private BigDecimal quantity; private Integer quantity;
/** /**
* MianFei-->WeiZhiFu-->YiZhiFu-->YiTuiKuan-->退 * MianFei-->WeiZhiFu-->YiZhiFu-->YiTuiKuan-->退

View File

@ -2,7 +2,6 @@ package com.njzscloud.dispose.cst.order.pojo.param;
import com.njzscloud.dispose.cst.order.constant.OrderCategory; import com.njzscloud.dispose.cst.order.constant.OrderCategory;
import com.njzscloud.dispose.cst.order.constant.OrderStatus; import com.njzscloud.dispose.cst.order.constant.OrderStatus;
import com.njzscloud.dispose.finance.constant.Unit;
import lombok.Data; import lombok.Data;
import java.time.LocalDateTime; import java.time.LocalDateTime;
@ -99,7 +98,7 @@ public class CreateOrderParam {
/** /**
* unit * unit
*/ */
private Unit unit; private String unit;
/** /**
* *

View File

@ -6,7 +6,6 @@ import com.njzscloud.dispose.cst.order.constant.CheckStatus;
import com.njzscloud.dispose.cst.order.constant.OrderCategory; import com.njzscloud.dispose.cst.order.constant.OrderCategory;
import com.njzscloud.dispose.cst.order.constant.OrderStatus; import com.njzscloud.dispose.cst.order.constant.OrderStatus;
import com.njzscloud.dispose.cst.order.constant.TransStatus; import com.njzscloud.dispose.cst.order.constant.TransStatus;
import com.njzscloud.dispose.finance.constant.Unit;
import lombok.Data; import lombok.Data;
import java.time.LocalDateTime; import java.time.LocalDateTime;
@ -178,11 +177,6 @@ public class OrderTransResult {
*/ */
private LocalDateTime outTime; private LocalDateTime outTime;
/**
*
*/
private String sn;
/** /**
* Idcst_org.id * Idcst_org.id
*/ */
@ -251,7 +245,7 @@ public class OrderTransResult {
/** /**
* *
*/ */
private Unit unit; private String unit;
} }

View File

@ -9,28 +9,22 @@ import com.njzscloud.common.mp.support.PageParam;
import com.njzscloud.common.mp.support.PageResult; import com.njzscloud.common.mp.support.PageResult;
import com.njzscloud.common.security.util.SecurityUtil; import com.njzscloud.common.security.util.SecurityUtil;
import com.njzscloud.common.sn.support.SnUtil; import com.njzscloud.common.sn.support.SnUtil;
import com.njzscloud.dispose.cst.customer.constant.IdentityCategory;
import com.njzscloud.dispose.cst.customer.constant.SettlementWay;
import com.njzscloud.dispose.cst.customer.mapper.CustomerMapper; import com.njzscloud.dispose.cst.customer.mapper.CustomerMapper;
import com.njzscloud.dispose.cst.customer.pojo.entity.CustomerEntity; import com.njzscloud.dispose.cst.customer.pojo.entity.CustomerEntity;
import com.njzscloud.dispose.cst.driver.mapper.DriverMapper; import com.njzscloud.dispose.cst.driver.mapper.DriverMapper;
import com.njzscloud.dispose.cst.driver.pojo.entity.DriverEntity; import com.njzscloud.dispose.cst.driver.pojo.entity.DriverEntity;
import com.njzscloud.dispose.cst.order.constant.*; import com.njzscloud.dispose.cst.order.constant.*;
import com.njzscloud.dispose.cst.order.helper.PaymentRecordHelper;
import com.njzscloud.dispose.cst.order.mapper.OrderMapper; import com.njzscloud.dispose.cst.order.mapper.OrderMapper;
import com.njzscloud.dispose.cst.order.mapper.OrderTransMapper; import com.njzscloud.dispose.cst.order.mapper.OrderTransMapper;
import com.njzscloud.dispose.cst.order.pojo.entity.*; import com.njzscloud.dispose.cst.order.pojo.entity.*;
import com.njzscloud.dispose.cst.order.pojo.param.*; import com.njzscloud.dispose.cst.order.pojo.param.*;
import com.njzscloud.dispose.cst.order.pojo.result.OrderTransResult; import com.njzscloud.dispose.cst.order.pojo.result.OrderTransResult;
import com.njzscloud.dispose.cst.station.mapper.StationMapper;
import com.njzscloud.dispose.cst.station.pojo.entity.StationEntity;
import com.njzscloud.dispose.cst.truck.mapper.TruckMapper; import com.njzscloud.dispose.cst.truck.mapper.TruckMapper;
import com.njzscloud.dispose.cst.truck.pojo.entity.TruckEntity; import com.njzscloud.dispose.cst.truck.pojo.entity.TruckEntity;
import com.njzscloud.dispose.finance.constant.ExpenseItemCategory; import com.njzscloud.dispose.finance.constant.ExpenseStrategy;
import com.njzscloud.dispose.finance.mapper.MoneyAccountMapper; import com.njzscloud.dispose.finance.mapper.MoneyAccountMapper;
import com.njzscloud.dispose.finance.pojo.entity.ExpenseItemEntity; import com.njzscloud.dispose.finance.pojo.entity.ExpenseItemEntity;
import com.njzscloud.dispose.finance.pojo.entity.MoneyAccountEntity; import com.njzscloud.dispose.finance.pojo.entity.MoneyAccountEntity;
import com.njzscloud.dispose.finance.pojo.result.MoneyAccountResult;
import com.njzscloud.dispose.finance.service.ExpenseItemService; import com.njzscloud.dispose.finance.service.ExpenseItemService;
import com.njzscloud.dispose.sys.auth.pojo.result.MyResult; import com.njzscloud.dispose.sys.auth.pojo.result.MyResult;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
@ -39,13 +33,10 @@ import org.apache.commons.compress.utils.Lists;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
import java.util.stream.Collectors;
import static com.njzscloud.dispose.event.SysMittEvent.PURCHASE_ORDER;
import static com.njzscloud.dispose.event.SysMittEvent.SALES_ORDER;
/** /**
* / * /
@ -66,8 +57,6 @@ public class OrderService extends ServiceImpl<OrderMapper, OrderEntity> {
private final OrderExpenseItemsService orderExpenseItemsService; private final OrderExpenseItemsService orderExpenseItemsService;
private final OrderPaymentRecordService orderPaymentRecordService; private final OrderPaymentRecordService orderPaymentRecordService;
private final MoneyAccountMapper moneyAccountMapper; private final MoneyAccountMapper moneyAccountMapper;
private final StationMapper stationMapper;
private final PaymentRecordHelper paymentRecordHelper;
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void add(CreateOrderParam param) { public void add(CreateOrderParam param) {
@ -178,21 +167,6 @@ public class OrderService extends ServiceImpl<OrderMapper, OrderEntity> {
Assert.isNull(result.getDriverId(), () -> Exceptions.clierr("当前订单已分配司机,无需重复分配")); Assert.isNull(result.getDriverId(), () -> Exceptions.clierr("当前订单已分配司机,无需重复分配"));
Assert.isTrue(TransStatus.DaiPaiDan.equals(result.getTransStatus()), () -> Exceptions.clierr("当前订单状态,无法分配司机")); Assert.isTrue(TransStatus.DaiPaiDan.equals(result.getTransStatus()), () -> Exceptions.clierr("当前订单状态,无法分配司机"));
// 获取订单的所有运输记录
List<OrderPaymentRecordEntity> recordList = orderPaymentRecordService.list(Wrappers.<OrderPaymentRecordEntity>lambdaQuery()
.eq(OrderPaymentRecordEntity::getTransId, result.getId()));
for (OrderPaymentRecordEntity record : recordList) {
if (SettlementWay.YuE.equals(record.getSettlementWay())) {
MoneyAccountResult accountResult = moneyAccountMapper.detail(record.getPayerMoneyAccountId());
// 如果该笔订单支付方式为余额支付,需在分配之前查询当前付款账户余额是否充足,
// 不足则提示余额不足,不允许在派司机
if (accountResult.getRecharge().compareTo(BigDecimal.ZERO) < 0) {
// 已经是负数,禁止再次支付
throw Exceptions.clierr(accountResult.getAccountName() + "账户余额不足");
}
}
}
DriverEntity driver = driverMapper.selectById(driverParam.getDriverId()); DriverEntity driver = driverMapper.selectById(driverParam.getDriverId());
Assert.notNull(driver, () -> Exceptions.clierr("司机不存在")); Assert.notNull(driver, () -> Exceptions.clierr("司机不存在"));
@ -365,27 +339,36 @@ public class OrderService extends ServiceImpl<OrderMapper, OrderEntity> {
transEntity.setOutTime(LocalDateTime.now()); transEntity.setOutTime(LocalDateTime.now());
orderTransMapper.updateById(transEntity); orderTransMapper.updateById(transEntity);
// 更新付费记录的量,计算结算金额并支付 // 更新付费记录的量
boolean allCompleted = paymentRecordHelper.updatePaymentRecordQuantity( this.updatePaymentRecordQuantity(transEntity.getId(), transEntity.getSettleWeight());
transEntity.getId(), transEntity.getSettleWeight(), transEntity.getTransDistance(), }
result.getSn(), result.getTrainNum());
// 如果该运输记录下所有付费记录都已完成,更新运输状态为已完成 /**
if (allCompleted) { *
OrderTransEntity updateTrans = new OrderTransEntity(); *
updateTrans.setId(transEntity.getId()); * @param transId ID
updateTrans.setTransStatus(TransStatus.YiWanCheng); */
updateTrans.setFinishTime(LocalDateTime.now()); private void updatePaymentRecordQuantity(Long transId, Integer settleWeight) {
orderTransMapper.updateById(updateTrans); // 1. 通过运输信息ID查询付费记录
// 添加采购单或销售单 List<OrderPaymentRecordEntity> paymentRecords = orderPaymentRecordService.list(Wrappers.<OrderPaymentRecordEntity>lambdaQuery()
if (OrderCategory.HuiShouYuYue.equals(result.getOrderCategory())) { .eq(OrderPaymentRecordEntity::getTransId, transId));
PURCHASE_ORDER.emit(updateTrans.getId());
} else if (OrderCategory.XiaoShouYuYue.equals(result.getOrderCategory())) {
SALES_ORDER.emit(updateTrans.getId());
}
// 检查订单下所有运输记录是否都完成 if (paymentRecords.isEmpty()) {
this.checkAndUpdateOrderStatus(result.getId()); return;
}
// 2. 遍历更新每条付费记录的量
for (OrderPaymentRecordEntity record : paymentRecords) {
// 通过付费记录的订单收费项 Id 查询付费项
OrderExpenseItemsEntity expenseItem = orderExpenseItemsService.getById(record.getExpenseItemId());
// 3. 如果计费策略为Che则量为1否则为净重
Integer quantity = ExpenseStrategy.Che.equals(expenseItem.getExpenseStrategy()) ? 1 : settleWeight;
OrderPaymentRecordEntity updateRecord = new OrderPaymentRecordEntity();
updateRecord.setId(record.getId());
updateRecord.setQuantity(quantity);
orderPaymentRecordService.updateById(updateRecord);
} }
} }
@ -399,30 +382,6 @@ public class OrderService extends ServiceImpl<OrderMapper, OrderEntity> {
truckMapper.updateById(truck); truckMapper.updateById(truck);
} }
/**
*
*
* @param orderId ID
*/
private void checkAndUpdateOrderStatus(Long orderId) {
List<OrderTransEntity> transList = orderTransMapper.selectList(
Wrappers.<OrderTransEntity>lambdaQuery()
.eq(OrderTransEntity::getOrderId, orderId)
.ne(OrderTransEntity::getTransStatus, TransStatus.YiQuXiao));
boolean allCompleted = transList.stream()
.allMatch(t -> TransStatus.YiWanCheng.equals(t.getTransStatus()));
if (allCompleted) {
OrderEntity updateOrder = new OrderEntity();
updateOrder.setId(orderId);
updateOrder.setOrderStatus(OrderStatus.YiWanCheng);
updateOrder.setFinishTime(LocalDateTime.now());
this.updateById(updateOrder);
log.info("订单 {} 所有运输记录已完成,更新订单状态为已完成", orderId);
}
}
/** /**
* *
* *
@ -442,71 +401,61 @@ public class OrderService extends ServiceImpl<OrderMapper, OrderEntity> {
* @param orderEntity * @param orderEntity
*/ */
public void createOrderExpenseItems(OrderEntity orderEntity) { public void createOrderExpenseItems(OrderEntity orderEntity) {
// 组织ids集合
List<Long> orgIds = Lists.newArrayList();
Long transOrgId = orderEntity.getTransOrgId();
orgIds.add(transOrgId);
CustomerEntity customerEntity = customerMapper.selectOne(Wrappers.<CustomerEntity>lambdaQuery()
.eq(CustomerEntity::getIdentityCategory, IdentityCategory.PingTai)
.eq(CustomerEntity::getManager, Boolean.TRUE)
.eq(CustomerEntity::getDeleted, Boolean.FALSE));
orgIds.add(customerEntity.getOrgId());
StationEntity station = stationMapper.selectById(orderEntity.getStationId());
orgIds.add(station.getOrgId());
// 读取启用的付费项配置,并按过滤 // 读取启用的付费项配置,并按过滤
List<ExpenseItemEntity> itemEntityList = expenseItemService.list(Wrappers.<ExpenseItemEntity>lambdaQuery() List<ExpenseItemEntity> itemEntityList = expenseItemService.list(Wrappers.<ExpenseItemEntity>lambdaQuery()
.in(ExpenseItemEntity::getOrgId, orgIds)
.eq(ExpenseItemEntity::getCanuse, Boolean.TRUE) .eq(ExpenseItemEntity::getCanuse, Boolean.TRUE)
.eq(ExpenseItemEntity::getDeleted, Boolean.FALSE)); .eq(ExpenseItemEntity::getDeleted, Boolean.FALSE));
Long transOrgId = orderEntity.getTransOrgId();
Long goodsId = orderEntity.getGoodsId(); Long goodsId = orderEntity.getGoodsId();
// 1. 查找产品付费项goodsId + station.getOrgId() + ChanPin只会匹配到一个 Long stationId = orderEntity.getStationId();
ExpenseItemEntity firstGoodsItem = itemEntityList.stream() List<ExpenseItemEntity> goodsItems = itemEntityList.stream().filter(item ->
.filter(item -> goodsId.equals(item.getGoodsId()) item.getGoodsId().equals(goodsId)).toList();
&& station.getOrgId().equals(item.getOrgId())
&& ExpenseItemCategory.ChanPin.equals(item.getExpenseItemCategory()))
.findFirst()
.orElse(null);
// 2. 查找运费付费项YunFei + transOrgId可能有多条 OrderExpenseItemsEntity goodsOrderItem = null;
List<ExpenseItemEntity> freightItems = itemEntityList.stream() if (!goodsItems.isEmpty()) {
.filter(item -> transOrgId.equals(item.getOrgId()) goodsOrderItem = BeanUtil.copyProperties(goodsItems.getFirst(), OrderExpenseItemsEntity.class)
&& ExpenseItemCategory.YunFei.equals(item.getExpenseItemCategory())) .setOrderId(orderEntity.getId())
.toList(); .setOriginExpenseItemsId(goodsItems.getFirst().getId());
}
// 3. 过滤其他付费项(排除产品、运费)
List<OrderExpenseItemsEntity> extraItems = itemEntityList.stream() List<OrderExpenseItemsEntity> extraItems = itemEntityList.stream()
.filter(cfg -> !ExpenseItemCategory.ChanPin.equals(cfg.getExpenseItemCategory()) .filter(cfg -> {
&& !ExpenseItemCategory.YunFei.equals(cfg.getExpenseItemCategory())) Long userId = cfg.getUserId();
// 复制配置为订单付费项 Long customerId = cfg.getCustomerId();
Long orgId = cfg.getOrgId();
// 判断用户归属范围
boolean isUserTrue = userId == null || userId.equals(orderEntity.getUserId());
// 判断客户归属范围
boolean isCustomerTrue = customerId == null || customerId.equals(orderEntity.getCustomerId());
// 判断组织归属范围
boolean isOrgTrue = orgId == null || orgId.equals(orderEntity.getTransOrgId());
// 只有当三个条件都为true时才返回true
return isUserTrue && isCustomerTrue && isOrgTrue;
})
// 复制配置为订单付费项(数量口径与产品一致:按车=1否则=settleWeight
.map(cfg -> { .map(cfg -> {
OrderExpenseItemsEntity entity = BeanUtil.copyProperties(cfg, OrderExpenseItemsEntity.class); OrderExpenseItemsEntity entity = BeanUtil.copyProperties(cfg, OrderExpenseItemsEntity.class);
entity.setOrderId(orderEntity.getId()); entity.setOrderId(orderEntity.getId());
entity.setOriginExpenseItemsId(cfg.getId()); entity.setOriginExpenseItemsId(cfg.getId());
return entity; return entity;
}) })
.toList(); .collect(Collectors.toList());
// 第四步:合并集合并计算金额,然后批量落库 // 第三步:合并集合并计算金额,然后批量落库
List<OrderExpenseItemsEntity> allItems = Lists.newArrayList(); if (goodsOrderItem != null) {
if (firstGoodsItem != null) { extraItems.addFirst(goodsOrderItem);
allItems.add(BeanUtil.copyProperties(firstGoodsItem, OrderExpenseItemsEntity.class)
.setOrderId(orderEntity.getId())
.setOriginExpenseItemsId(firstGoodsItem.getId()));
} }
// 添加所有运费付费项
freightItems.forEach(item -> allItems.add(
BeanUtil.copyProperties(item, OrderExpenseItemsEntity.class)
.setOrderId(orderEntity.getId())
.setOriginExpenseItemsId(item.getId())));
allItems.addAll(extraItems);
if (allItems.isEmpty()) { if (extraItems.isEmpty()) {
return; return;
} }
// 批量保存付费项 // 批量保存付费项
orderExpenseItemsService.saveBatch(allItems); orderExpenseItemsService.saveBatch(extraItems);
// 获取订单的所有运输记录 // 获取订单的所有运输记录
List<OrderTransEntity> transList = orderTransMapper.selectList(Wrappers.<OrderTransEntity>lambdaQuery() List<OrderTransEntity> transList = orderTransMapper.selectList(Wrappers.<OrderTransEntity>lambdaQuery()
@ -514,7 +463,7 @@ public class OrderService extends ServiceImpl<OrderMapper, OrderEntity> {
List<OrderPaymentRecordEntity> recordList = Lists.newArrayList(); List<OrderPaymentRecordEntity> recordList = Lists.newArrayList();
for (OrderTransEntity transEntity : transList) { for (OrderTransEntity transEntity : transList) {
List<OrderPaymentRecordEntity> paymentRecords = allItems.stream() List<OrderPaymentRecordEntity> paymentRecords = extraItems.stream()
.map(item -> { .map(item -> {
OrderPaymentRecordEntity record = new OrderPaymentRecordEntity() OrderPaymentRecordEntity record = new OrderPaymentRecordEntity()
.setOrderId(orderEntity.getId()) .setOrderId(orderEntity.getId())
@ -524,6 +473,11 @@ public class OrderService extends ServiceImpl<OrderMapper, OrderEntity> {
// 根据归属字段获取结算方式和账户信息 // 根据归属字段获取结算方式和账户信息
Long customerId = item.getCustomerId(); Long customerId = item.getCustomerId();
if (customerId == null) {
// 如果没有归属客户,尝试从订单获取
customerId = orderEntity.getCustomerId();
}
CustomerEntity customer = customerMapper.selectOne(Wrappers.<CustomerEntity>lambdaQuery() CustomerEntity customer = customerMapper.selectOne(Wrappers.<CustomerEntity>lambdaQuery()
.eq(CustomerEntity::getId, customerId)); .eq(CustomerEntity::getId, customerId));
if (customer != null && customer.getSettlementWay() != null) { if (customer != null && customer.getSettlementWay() != null) {
@ -543,6 +497,7 @@ public class OrderService extends ServiceImpl<OrderMapper, OrderEntity> {
} else { } else {
throw Exceptions.clierr("付款人资金账户不存在"); throw Exceptions.clierr("付款人资金账户不存在");
} }
return record; return record;
}) })
.toList(); .toList();

View File

@ -4,15 +4,16 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.njzscloud.common.core.tuple.Tuple2; import com.njzscloud.common.core.tuple.Tuple2;
import com.njzscloud.common.oss.util.AliOSS; import com.njzscloud.common.oss.util.AliOSS;
import com.njzscloud.dispose.cst.order.constant.*; import com.njzscloud.dispose.cst.order.constant.*;
import com.njzscloud.dispose.cst.order.helper.PaymentRecordHelper;
import com.njzscloud.dispose.cst.order.mapper.OrderMapper;
import com.njzscloud.dispose.cst.order.mapper.OrderTransMapper; import com.njzscloud.dispose.cst.order.mapper.OrderTransMapper;
import com.njzscloud.dispose.cst.order.pojo.entity.OrderEntity; import com.njzscloud.dispose.cst.order.pojo.entity.OrderEntity;
import com.njzscloud.dispose.cst.order.pojo.entity.OrderExpenseItemsEntity;
import com.njzscloud.dispose.cst.order.pojo.entity.OrderPaymentRecordEntity;
import com.njzscloud.dispose.cst.order.pojo.entity.OrderTransEntity; import com.njzscloud.dispose.cst.order.pojo.entity.OrderTransEntity;
import com.njzscloud.dispose.cst.order.pojo.result.OrderTransResult; import com.njzscloud.dispose.cst.order.pojo.result.OrderTransResult;
import com.njzscloud.dispose.dev.DiscoverTruckMsg; import com.njzscloud.dispose.dev.DiscoverTruckMsg;
import com.njzscloud.dispose.dev.ObtainTruckDataResultMsg; import com.njzscloud.dispose.dev.ObtainTruckDataResultMsg;
import com.njzscloud.dispose.dev.WbsHandle; import com.njzscloud.dispose.dev.WbsHandle;
import com.njzscloud.dispose.finance.constant.ExpenseStrategy;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -36,9 +37,9 @@ import java.util.List;
public class TruckWeighingBusinessService { public class TruckWeighingBusinessService {
private final OrderService orderService; private final OrderService orderService;
private final OrderMapper orderMapper;
private final OrderTransMapper orderTransMapper; private final OrderTransMapper orderTransMapper;
private final PaymentRecordHelper paymentRecordHelper; private final OrderPaymentRecordService orderPaymentRecordService;
private final OrderExpenseItemsService orderExpenseItemsService;
/** /**
* - * -
@ -172,9 +173,11 @@ public class TruckWeighingBusinessService {
wbsHandle.playVoice(VoiceConstants.VOICE_PLEASE_PASS); wbsHandle.playVoice(VoiceConstants.VOICE_PLEASE_PASS);
wbsHandle.open(); wbsHandle.open();
} else if (TransStatus.YiJinChang.equals(orderTrans.getTransStatus())) { } else if (TransStatus.YiJinChang.equals(orderTrans.getTransStatus())) {
// 出场:设置相应重量并计算净重、账目,支付完成后开门 // 出场:设置相应重量并计算净重、账目,等待支付完成后开门
handleTruckLeavingData(orderTrans, weight, image, wbsHandle); handleTruckLeavingData(orderTrans, weight, image);
wbsHandle.playVoice(VoiceConstants.VOICE_WEIGH_COMPLETE); wbsHandle.playVoice(VoiceConstants.VOICE_WEIGH_COMPLETE);
// TODO: 触发算账流程,支付完成后调用 completePaymentAndOpenGate 方法开门
processSettlementAndWaitForPayment(orderTrans, wbsHandle);
} else { } else {
log.warn("运输订单 {} 状态 {} 不支持称重操作", orderTrans.getId(), orderTrans.getTransStatus()); log.warn("运输订单 {} 状态 {} 不支持称重操作", orderTrans.getId(), orderTrans.getTransStatus());
wbsHandle.playVoice(VoiceConstants.VOICE_STATUS_ERROR); wbsHandle.playVoice(VoiceConstants.VOICE_STATUS_ERROR);
@ -206,7 +209,7 @@ public class TruckWeighingBusinessService {
/** /**
* *
*/ */
private void handleTruckLeavingData(OrderTransResult orderTrans, Integer weight, String bodyPhoto, WbsHandle wbsHandle) { private void handleTruckLeavingData(OrderTransResult orderTrans, Integer weight, String bodyPhoto) {
OrderTransEntity transEntity = new OrderTransEntity(); OrderTransEntity transEntity = new OrderTransEntity();
transEntity.setId(orderTrans.getId()); transEntity.setId(orderTrans.getId());
transEntity.setTransStatus(TransStatus.YiChuChang); transEntity.setTransStatus(TransStatus.YiChuChang);
@ -229,28 +232,42 @@ public class TruckWeighingBusinessService {
log.info("车辆出场称重完成订单ID: {}, 重量: {}kg, 净重: {}kg", log.info("车辆出场称重完成订单ID: {}, 重量: {}kg, 净重: {}kg",
orderTrans.getId(), weight, settleWeight); orderTrans.getId(), weight, settleWeight);
// 更新付费记录的量,计算结算金额并支付 // 更新付费记录的量
String orderSn = orderMapper.selectById(orderTrans.getOrderId()).getSn(); this.updatePaymentRecordQuantity(orderTrans.getId(), settleWeight);
boolean allCompleted = paymentRecordHelper.updatePaymentRecordQuantity( }
orderTrans.getId(), settleWeight, orderTrans.getTransDistance(),
orderSn, orderTrans.getTrainNum());
// 如果该运输记录下所有付费记录都已完成,更新运输状态为已完成并开门 /**
if (allCompleted) { *
OrderTransEntity updateTrans = new OrderTransEntity(); *
updateTrans.setId(orderTrans.getId()); * @param transId ID
updateTrans.setTransStatus(TransStatus.YiWanCheng); * @param settleWeight
updateTrans.setFinishTime(LocalDateTime.now()); */
orderTransMapper.updateById(updateTrans); private void updatePaymentRecordQuantity(Long transId, Integer settleWeight) {
// 1. 通过运输信息ID查询付费记录
List<OrderPaymentRecordEntity> paymentRecords = orderPaymentRecordService.list(Wrappers.<OrderPaymentRecordEntity>lambdaQuery()
.eq(OrderPaymentRecordEntity::getTransId, transId));
// 检查订单下所有运输记录是否都完成 if (paymentRecords.isEmpty()) {
this.checkAndUpdateOrderStatus(orderTrans.getOrderId()); return;
// 开门放行
wbsHandle.playVoice(VoiceConstants.VOICE_PLEASE_PASS);
wbsHandle.open();
log.info("运输记录 {} 支付完成,开门放行", orderTrans.getId());
} }
// 2. 遍历更新每条付费记录的量
for (OrderPaymentRecordEntity record : paymentRecords) {
// 通过付费记录的订单收费项 Id 查询付费项
OrderExpenseItemsEntity expenseItem = orderExpenseItemsService.getById(record.getExpenseItemId());
if (expenseItem == null) {
continue;
}
// 3. 如果计费策略为Che则量为1否则为净重
Integer quantity = ExpenseStrategy.Che.equals(expenseItem.getExpenseStrategy()) ? 1 : settleWeight;
OrderPaymentRecordEntity updateRecord = new OrderPaymentRecordEntity();
updateRecord.setId(record.getId());
updateRecord.setQuantity(quantity);
orderPaymentRecordService.updateById(updateRecord);
}
log.info("运输记录 {} 的付费记录量更新完成", transId);
} }
/** /**
@ -378,26 +395,141 @@ public class TruckWeighingBusinessService {
} }
/** /**
* *
*
* @param orderId ID
*/ */
private void checkAndUpdateOrderStatus(Long orderId) { private boolean checkAllTransCompleted(Long orderId) {
List<OrderTransEntity> transList = orderTransMapper.selectList( try {
Wrappers.<OrderTransEntity>lambdaQuery() // 查询该订单下的所有运输记录
.eq(OrderTransEntity::getOrderId, orderId) List<OrderTransEntity> transList = orderTransMapper.selectList(
.ne(OrderTransEntity::getTransStatus, TransStatus.YiQuXiao)); Wrappers.<OrderTransEntity>lambdaQuery()
.eq(OrderTransEntity::getOrderId, orderId)
);
boolean allCompleted = transList.stream() if (transList.isEmpty()) {
.allMatch(t -> TransStatus.YiWanCheng.equals(t.getTransStatus())); log.warn("订单 {} 下没有找到运输记录", orderId);
return false;
}
if (allCompleted) { // 检查所有运输记录的状态是否都为已完成
OrderEntity updateOrder = new OrderEntity(); boolean allCompleted = transList.stream()
updateOrder.setId(orderId); .allMatch(trans -> TransStatus.YiWanCheng.equals(trans.getTransStatus()));
updateOrder.setOrderStatus(OrderStatus.YiWanCheng);
updateOrder.setFinishTime(LocalDateTime.now()); if (allCompleted) {
orderService.updateById(updateOrder); log.info("订单 {} 下所有 {} 条运输记录都已完成", orderId, transList.size());
log.info("订单 {} 所有运输记录已完成,更新订单状态为已完成", orderId); } else {
long completedCount = transList.stream()
.filter(trans -> TransStatus.YiWanCheng.equals(trans.getTransStatus()))
.count();
log.info("订单 {} 下 {}/{} 条运输记录已完成", orderId, completedCount, transList.size());
}
return allCompleted;
} catch (Exception e) {
log.error("检查订单 {} 运输完成状态异常", orderId, e);
// 出现异常时保守处理返回false
return false;
}
}
/**
*
*/
private void processSettlementAndWaitForPayment(OrderTransResult orderTrans, WbsHandle wbsHandle) {
try {
log.info("开始处理订单 {} 的结算流程", orderTrans.getId());
// TODO: 执行算账逻辑
// 这里应该调用财务结算服务,计算费用并生成支付订单
// calculateSettlement(orderTrans);
// 模拟支付完成通知(实际应该通过支付回调或消息队列处理)
// 在实际生产环境中,应该:
// 1. 调用财务服务计算费用
// 2. 生成支付订单
// 3. 等待支付完成的通知(通过消息队列或回调)
// 4. 支付完成后调用 completePaymentAndOpenGate 方法
log.info("订单 {} 结算流程启动,等待支付完成", orderTrans.getId());
// TODO: 在实际支付完成后调用以下方法
// completePaymentAndOpenGate(orderTrans, wbsHandle);
// 临时实现:直接完成(用于测试)
simulatePaymentCompletion(orderTrans, wbsHandle);
} catch (Exception e) {
log.error("处理订单 {} 结算异常", orderTrans.getId(), e);
handleBusinessException(wbsHandle, "结算处理失败", e);
}
}
/**
*
*/
private void simulatePaymentCompletion(OrderTransResult orderTrans, WbsHandle wbsHandle) {
// 在实际应用中,这里应该通过消息队列或定时任务等待支付完成
// 这里只是为了演示流程,实际应该移除
try {
// 模拟支付处理时间
Thread.sleep(2000);
completePaymentAndOpenGate(orderTrans, wbsHandle);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
log.error("模拟支付完成被中断", e);
}
}
/**
*
*/
@Transactional(rollbackFor = Exception.class)
public void completePaymentAndOpenGate(OrderTransResult orderTrans, WbsHandle wbsHandle) {
synchronized (this) {
try {
// 更新运输状态为已完成
OrderTransEntity transEntity = new OrderTransEntity();
transEntity.setId(orderTrans.getId());
transEntity.setTransStatus(TransStatus.YiWanCheng);
transEntity.setFinishTime(LocalDateTime.now());
orderTransMapper.updateById(transEntity);
// 检查该订单下所有运输记录是否都已完成
boolean allTransCompleted = checkAllTransCompleted(orderTrans.getOrderId());
if (allTransCompleted) {
// 更新订单状态为已完成
OrderEntity orderEntity = new OrderEntity();
orderEntity.setId(orderTrans.getOrderId());
orderEntity.setOrderStatus(OrderStatus.YiWanCheng);
orderEntity.setFinishTime(LocalDateTime.now());
orderService.updateById(orderEntity);
log.info("订单 {} 所有运输记录已完成,订单状态更新为已完成", orderTrans.getOrderId());
} else {
log.info("订单 {} 还有未完成的运输记录,暂不更新订单状态", orderTrans.getOrderId());
}
// 开门放行
wbsHandle.playVoice(VoiceConstants.VOICE_PLEASE_PASS);
wbsHandle.open();
log.info("运输记录 {} 支付完成,开门放行", orderTrans.getId());
} catch (Exception e) {
handleBusinessException(wbsHandle, "完成订单 " + orderTrans.getId() + " 支付并开门异常", e);
}
}
}
/**
*
*/
private void handleBusinessException(WbsHandle wbsHandle, String message, Exception e) {
log.error("业务处理异常: {}", message, e);
try {
wbsHandle.playVoice(VoiceConstants.VOICE_SYSTEM_ERROR);
} catch (Exception voiceException) {
log.error("播放语音失败", voiceException);
} }
} }
} }

View File

@ -17,8 +17,13 @@ public enum ExpenseStrategy implements DictStr {
GuDing("GuDing", "固定"), GuDing("GuDing", "固定"),
DanJia("DanJia", "单价"); Che("Che", "车"),
Fang("Fang", "方"),
JuLi("JuLi", "距离"),
;
private final String val; private final String val;
private final String txt; private final String txt;

View File

@ -1,26 +0,0 @@
package com.njzscloud.dispose.finance.constant;
import com.njzscloud.common.core.ienum.DictStr;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
/**
* expense_strategy
*
* @author ljw
*/
@Getter
@RequiredArgsConstructor
public enum Unit implements DictStr {
Che("Che", "车"),
Fang("Fang", "方"),
GongLi("GongLi", "公里"),
Dun("Dun", "吨");
private final String val;
private final String txt;
}

View File

@ -8,7 +8,6 @@ import com.njzscloud.common.mp.support.handler.j.JsonTypeHandler;
import com.njzscloud.dispose.common.pojo.entity.BaseEntity; import com.njzscloud.dispose.common.pojo.entity.BaseEntity;
import com.njzscloud.dispose.finance.constant.ExpenseItemCategory; import com.njzscloud.dispose.finance.constant.ExpenseItemCategory;
import com.njzscloud.dispose.finance.constant.ExpenseStrategy; import com.njzscloud.dispose.finance.constant.ExpenseStrategy;
import com.njzscloud.dispose.finance.constant.Unit;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import lombok.ToString; import lombok.ToString;
@ -52,7 +51,7 @@ public class ExpenseItemEntity extends BaseEntity {
/** /**
* unit * unit
*/ */
private Unit unit; private String unit;
/** /**
* *

View File

@ -2,7 +2,6 @@ package com.njzscloud.dispose.finance.pojo.param;
import com.njzscloud.dispose.finance.constant.ExpenseItemCategory; import com.njzscloud.dispose.finance.constant.ExpenseItemCategory;
import com.njzscloud.dispose.finance.constant.ExpenseStrategy; import com.njzscloud.dispose.finance.constant.ExpenseStrategy;
import com.njzscloud.dispose.finance.constant.Unit;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import lombok.ToString; import lombok.ToString;
@ -34,7 +33,7 @@ public class AddExpenseItemParam {
/** /**
* unit * unit
*/ */
private Unit unit; private String unit;
/** /**
* *

View File

@ -2,7 +2,6 @@ package com.njzscloud.dispose.finance.pojo.param;
import com.njzscloud.dispose.finance.constant.ExpenseItemCategory; import com.njzscloud.dispose.finance.constant.ExpenseItemCategory;
import com.njzscloud.dispose.finance.constant.ExpenseStrategy; import com.njzscloud.dispose.finance.constant.ExpenseStrategy;
import com.njzscloud.dispose.finance.constant.Unit;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import lombok.ToString; import lombok.ToString;
@ -38,7 +37,7 @@ public class ModifyExpenseItemParam {
/** /**
* unit * unit
*/ */
private Unit unit; private String unit;
/** /**
* *

View File

@ -2,7 +2,6 @@ package com.njzscloud.dispose.finance.pojo.result;
import com.njzscloud.dispose.finance.constant.ExpenseItemCategory; import com.njzscloud.dispose.finance.constant.ExpenseItemCategory;
import com.njzscloud.dispose.finance.constant.ExpenseStrategy; import com.njzscloud.dispose.finance.constant.ExpenseStrategy;
import com.njzscloud.dispose.finance.constant.Unit;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import lombok.ToString; import lombok.ToString;
@ -44,7 +43,7 @@ public class SearchExpenseItemResult {
/** /**
* unit * unit
*/ */
private Unit unit; private String unit;
/** /**
* *

View File

@ -5,7 +5,6 @@ import com.njzscloud.common.core.ienum.DictKey;
import com.njzscloud.dispose.finance.constant.ExpenseItemCategory; import com.njzscloud.dispose.finance.constant.ExpenseItemCategory;
import com.njzscloud.dispose.finance.constant.ExpenseStrategy; import com.njzscloud.dispose.finance.constant.ExpenseStrategy;
import com.njzscloud.dispose.finance.constant.Payer; import com.njzscloud.dispose.finance.constant.Payer;
import com.njzscloud.dispose.finance.constant.Unit;
import com.njzscloud.dispose.finance.pojo.entity.ScopeStrategyConfig; import com.njzscloud.dispose.finance.pojo.entity.ScopeStrategyConfig;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
@ -95,7 +94,7 @@ public class AddGoodsParam {
/** /**
* unit * unit
*/ */
private Unit unit; private String unit;
/** /**
* *

View File

@ -3,7 +3,6 @@ package com.njzscloud.dispose.goods.pojo.param;
import com.njzscloud.dispose.finance.constant.ExpenseItemCategory; import com.njzscloud.dispose.finance.constant.ExpenseItemCategory;
import com.njzscloud.dispose.finance.constant.ExpenseStrategy; import com.njzscloud.dispose.finance.constant.ExpenseStrategy;
import com.njzscloud.dispose.finance.constant.Payer; import com.njzscloud.dispose.finance.constant.Payer;
import com.njzscloud.dispose.finance.constant.Unit;
import com.njzscloud.dispose.finance.pojo.entity.ScopeStrategyConfig; import com.njzscloud.dispose.finance.pojo.entity.ScopeStrategyConfig;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
@ -55,7 +54,7 @@ public class ModifyGoodsParam {
/** /**
* unit * unit
*/ */
private Unit unit; private String unit;
/** /**
* *
@ -101,7 +100,7 @@ public class ModifyGoodsParam {
/** /**
* unit * unit
*/ */
private Unit unit; private String unit;
/** /**
* *

View File

@ -1,7 +1,6 @@
package com.njzscloud.dispose.wh.pojo.entity; package com.njzscloud.dispose.wh.pojo.entity;
import com.baomidou.mybatisplus.annotation.*; import com.baomidou.mybatisplus.annotation.*;
import com.njzscloud.dispose.finance.constant.Unit;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import lombok.ToString; import lombok.ToString;
@ -94,7 +93,7 @@ public class InOrderEntity {
/** /**
* unit * unit
*/ */
private Unit unit; private String unit;
/** /**
* *

View File

@ -1,7 +1,6 @@
package com.njzscloud.dispose.wh.pojo.entity; package com.njzscloud.dispose.wh.pojo.entity;
import com.baomidou.mybatisplus.annotation.*; import com.baomidou.mybatisplus.annotation.*;
import com.njzscloud.dispose.finance.constant.Unit;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import lombok.ToString; import lombok.ToString;
@ -63,7 +62,7 @@ public class InventoryEntity {
/** /**
* unit * unit
*/ */
private Unit unit; private String unit;
/** /**
* Idsys_user.id * Idsys_user.id

View File

@ -1,7 +1,6 @@
package com.njzscloud.dispose.wh.pojo.entity; package com.njzscloud.dispose.wh.pojo.entity;
import com.baomidou.mybatisplus.annotation.*; import com.baomidou.mybatisplus.annotation.*;
import com.njzscloud.dispose.finance.constant.Unit;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import lombok.ToString; import lombok.ToString;
@ -94,7 +93,7 @@ public class OutOrderEntity {
/** /**
* unit * unit
*/ */
private Unit unit; private String unit;
/** /**
* *

View File

@ -1,7 +1,6 @@
package com.njzscloud.dispose.wh.pojo.entity; package com.njzscloud.dispose.wh.pojo.entity;
import com.baomidou.mybatisplus.annotation.*; import com.baomidou.mybatisplus.annotation.*;
import com.njzscloud.dispose.finance.constant.Unit;
import com.njzscloud.dispose.wh.constant.PurchaseOrderStatus; import com.njzscloud.dispose.wh.constant.PurchaseOrderStatus;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
@ -97,7 +96,7 @@ public class PurchaseOrderEntity {
/** /**
* unit * unit
*/ */
private Unit unit; private String unit;
/** /**
* *

View File

@ -1,7 +1,6 @@
package com.njzscloud.dispose.wh.pojo.entity; package com.njzscloud.dispose.wh.pojo.entity;
import com.baomidou.mybatisplus.annotation.*; import com.baomidou.mybatisplus.annotation.*;
import com.njzscloud.dispose.finance.constant.Unit;
import com.njzscloud.dispose.wh.constant.SalesOrderStatus; import com.njzscloud.dispose.wh.constant.SalesOrderStatus;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
@ -97,7 +96,7 @@ public class SalesOrderEntity {
/** /**
* unit * unit
*/ */
private Unit unit; private String unit;
/** /**
* *

View File

@ -1,7 +1,6 @@
package com.njzscloud.dispose.wh.pojo.entity; package com.njzscloud.dispose.wh.pojo.entity;
import com.baomidou.mybatisplus.annotation.*; import com.baomidou.mybatisplus.annotation.*;
import com.njzscloud.dispose.finance.constant.Unit;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import lombok.ToString; import lombok.ToString;
@ -73,7 +72,7 @@ public class WarehouseCheckDetailEntity {
/** /**
* unit * unit
*/ */
private Unit unit; private String unit;
/** /**
* *

View File

@ -1,6 +1,5 @@
package com.njzscloud.dispose.wh.pojo.param; package com.njzscloud.dispose.wh.pojo.param;
import com.njzscloud.dispose.finance.constant.Unit;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import lombok.ToString; import lombok.ToString;
@ -75,7 +74,7 @@ public class AddInOrderParam {
/** /**
* unit * unit
*/ */
private Unit unit; private String unit;
/** /**
* *

View File

@ -1,6 +1,5 @@
package com.njzscloud.dispose.wh.pojo.param; package com.njzscloud.dispose.wh.pojo.param;
import com.njzscloud.dispose.finance.constant.Unit;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import lombok.ToString; import lombok.ToString;
@ -52,5 +51,5 @@ public class AddInventoryParam {
/** /**
* unit * unit
*/ */
private Unit unit; private String unit;
} }

View File

@ -1,6 +1,5 @@
package com.njzscloud.dispose.wh.pojo.param; package com.njzscloud.dispose.wh.pojo.param;
import com.njzscloud.dispose.finance.constant.Unit;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import lombok.ToString; import lombok.ToString;
@ -74,7 +73,7 @@ public class AddOutOrderParam {
/** /**
* unit * unit
*/ */
private Unit unit; private String unit;
/** /**
* *

View File

@ -1,6 +1,5 @@
package com.njzscloud.dispose.wh.pojo.param; package com.njzscloud.dispose.wh.pojo.param;
import com.njzscloud.dispose.finance.constant.Unit;
import com.njzscloud.dispose.wh.constant.SalesOrderStatus; import com.njzscloud.dispose.wh.constant.SalesOrderStatus;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
@ -88,7 +87,7 @@ public class AddSalesOrderParam {
/** /**
* unit * unit
*/ */
private Unit unit; private String unit;
/** /**
* *

View File

@ -1,6 +1,5 @@
package com.njzscloud.dispose.wh.pojo.param; package com.njzscloud.dispose.wh.pojo.param;
import com.njzscloud.dispose.finance.constant.Unit;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import lombok.ToString; import lombok.ToString;
@ -64,7 +63,7 @@ public class AddWarehouseCheckDetailParam {
/** /**
* unit * unit
*/ */
private Unit unit; private String unit;
/** /**
* *

View File

@ -2,7 +2,6 @@ package com.njzscloud.dispose.wh.pojo.result;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.njzscloud.dispose.finance.constant.Unit;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import lombok.ToString; import lombok.ToString;
@ -105,7 +104,7 @@ public class SearchInOrderResult {
/** /**
* unit * unit
*/ */
private Unit unit; private String unit;
/** /**
* *

View File

@ -2,7 +2,6 @@ package com.njzscloud.dispose.wh.pojo.result;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.njzscloud.dispose.finance.constant.Unit;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import lombok.ToString; import lombok.ToString;
@ -64,7 +63,7 @@ public class SearchInventoryResult {
/** /**
* unit * unit
*/ */
private Unit unit; private String unit;
/** /**
* Idsys_user.id * Idsys_user.id

View File

@ -2,7 +2,6 @@ package com.njzscloud.dispose.wh.pojo.result;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.njzscloud.dispose.finance.constant.Unit;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import lombok.ToString; import lombok.ToString;
@ -104,7 +103,7 @@ public class SearchOutOrderResult {
/** /**
* unit * unit
*/ */
private Unit unit; private String unit;
/** /**
* *

View File

@ -2,7 +2,6 @@ package com.njzscloud.dispose.wh.pojo.result;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.njzscloud.dispose.finance.constant.Unit;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import lombok.ToString; import lombok.ToString;
@ -73,7 +72,7 @@ public class SearchWarehouseCheckDetailResult {
/** /**
* unit * unit
*/ */
private Unit unit; private String unit;
/** /**
* *

View File

@ -66,7 +66,7 @@ public class PurchaseOrderService extends ServiceImpl<PurchaseOrderMapper, Purch
.setArrivalDate(LocalDate.now()) .setArrivalDate(LocalDate.now())
.setQuantity(orderTrans.getEstimatedQuantity()) .setQuantity(orderTrans.getEstimatedQuantity())
.setTotalMoney(totalMoney) .setTotalMoney(totalMoney)
.setMemo("回收预约单自动添加")); .setMemo(""));
} }
/** /**

View File

@ -68,7 +68,7 @@ public class SalesOrderService extends ServiceImpl<SalesOrderMapper, SalesOrderE
.setShipmentDate(LocalDate.now()) .setShipmentDate(LocalDate.now())
.setQuantity(orderTrans.getEstimatedQuantity()) .setQuantity(orderTrans.getEstimatedQuantity())
.setTotalMoney(totalMoney) .setTotalMoney(totalMoney)
.setMemo("销售预约单自动添加")); .setMemo(""));
} }
/** /**

View File

@ -34,7 +34,6 @@
<result column="out_body_photo" property="outBodyPhoto"/> <result column="out_body_photo" property="outBodyPhoto"/>
<result column="in_time" property="inTime"/> <result column="in_time" property="inTime"/>
<result column="out_time" property="outTime"/> <result column="out_time" property="outTime"/>
<result column="sn" property="sn"/>
<result column="trans_org_id" property="transOrgId"/> <result column="trans_org_id" property="transOrgId"/>
<result column="trans_customer_id" property="transCustomerId"/> <result column="trans_customer_id" property="transCustomerId"/>
<result column="assignment_trans_time" property="assignmentTransTime"/> <result column="assignment_trans_time" property="assignmentTransTime"/>
@ -83,7 +82,6 @@
cot.out_body_photo AS out_body_photo, cot.out_body_photo AS out_body_photo,
cot.in_time AS in_time, cot.in_time AS in_time,
cot.out_time AS out_time, cot.out_time AS out_time,
co.sn,
co.trans_org_id AS trans_org_id, co.trans_org_id AS trans_org_id,
co.trans_customer_id AS trans_customer_id, co.trans_customer_id AS trans_customer_id,
co.assignment_trans_time AS assignment_trans_time, co.assignment_trans_time AS assignment_trans_time,