Commit 11e5250e25cdbe49b069106b8c27eca6a0542a7b

Authored by chenhang4442024
1 parent 8cfa8abd

fix:1.修改在保存扣款信息时,扣款部门没有保存的情况。

2.编写一个定时任务,用来补上之前填了扣款部门但是没有保存的问题。
src/main/java/com/order/erp/job/DeductDeptJob.java 0 → 100644
  1 +package com.order.erp.job;
  2 +
  3 +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  4 +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
  5 +import com.order.erp.common.constant.Constant;
  6 +import com.order.erp.domain.ApplyStatusEnum;
  7 +import com.order.erp.domain.FinanceEnum;
  8 +import com.order.erp.domain.dto.BaseDO;
  9 +import com.order.erp.domain.dto.order.OrderBaseInfoDO;
  10 +import com.order.erp.domain.dto.order.ProducePaymentCheckBillOrderDO;
  11 +import com.order.erp.service.order.OrderBaseInfoService;
  12 +import com.order.erp.service.order.ProducePaymentCheckBillOrderService;
  13 +import lombok.extern.slf4j.Slf4j;
  14 +import org.springframework.beans.factory.annotation.Autowired;
  15 +import org.springframework.scheduling.annotation.Scheduled;
  16 +import org.springframework.stereotype.Component;
  17 +
  18 +import java.math.BigDecimal;
  19 +import java.util.List;
  20 +import java.util.Map;
  21 +import java.util.Objects;
  22 +import java.util.Set;
  23 +import java.util.stream.Collectors;
  24 +
  25 +@Slf4j
  26 +@Component
  27 +public class DeductDeptJob {
  28 + //扫描所有扣款单状态为已通过的订单,查询所有扣款单未已审核通过的订单
  29 + @Autowired
  30 + private ProducePaymentCheckBillOrderService producePaymentCheckBillOrderService;
  31 + @Autowired
  32 + private OrderBaseInfoService orderBaseInfoService;
  33 + @Scheduled(cron = "0 0 1 * * ?", zone = "Asia/Shanghai")
  34 + public void deductDeptJob() {
  35 + log.info("开始执行扣款单部门任务");
  36 + List<ProducePaymentCheckBillOrderDO> producePaymentCheckBillOrderDOList = producePaymentCheckBillOrderService.list(
  37 + new LambdaQueryWrapper<ProducePaymentCheckBillOrderDO>()
  38 + .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN)
  39 + .and(wrapper -> wrapper
  40 + .in(ProducePaymentCheckBillOrderDO::getCheckDeductUrlStatus, ApplyStatusEnum.AUDIT_PASS.getStatus(),ApplyStatusEnum.WAIT_AUDIT.getStatus())
  41 + .or()
  42 + .in(ProducePaymentCheckBillOrderDO::getStatus,
  43 + FinanceEnum.RECEIVED_PAYMENT.getStatus(),
  44 + FinanceEnum.OK_PAYMENT.getStatus())
  45 + )
  46 + );
  47 + //过滤掉,扣款部门有值的情况。
  48 + List<ProducePaymentCheckBillOrderDO> producePaymentCheckBillOrderDOS = producePaymentCheckBillOrderDOList.stream()
  49 + .filter(producePaymentCheckBillOrderDO -> producePaymentCheckBillOrderDO.getDeductDept() == null)
  50 + .collect(Collectors.toList());
  51 + Set<Long> orderIds = producePaymentCheckBillOrderDOS.stream().filter(Objects::nonNull).map(producePaymentCheckBillOrderDO -> producePaymentCheckBillOrderDO.getOrderId()).collect(Collectors.toSet());
  52 + List<OrderBaseInfoDO> orderBaseInfoDOList = orderBaseInfoService.listByIds(orderIds);
  53 + Map<Long, OrderBaseInfoDO> orderBaseInfoDOMap = orderBaseInfoDOList.stream().collect(Collectors.toMap(OrderBaseInfoDO::getId, order -> order, (existing, duplicate) -> existing));
  54 + producePaymentCheckBillOrderDOS.forEach(producePaymentCheckBillOrderDO -> {
  55 + if(orderBaseInfoDOMap.containsKey(producePaymentCheckBillOrderDO.getOrderId())){
  56 + if (producePaymentCheckBillOrderDO.getDeductAmount().compareTo(BigDecimal.ZERO) > 0){
  57 + producePaymentCheckBillOrderDO.setDeductDept(orderBaseInfoDOMap.get(producePaymentCheckBillOrderDO.getOrderId()).getProductionDepartment());
  58 + }
  59 + }
  60 + });
  61 + if (CollectionUtils.isNotEmpty(producePaymentCheckBillOrderDOS)) {
  62 + producePaymentCheckBillOrderService.updateBatchById(producePaymentCheckBillOrderDOS);
  63 + }
  64 +
  65 + }
  66 +}
... ...
src/main/java/com/order/erp/service/order/impl/ProducePaymentCheckBillOrderServiceImpl.java
... ... @@ -916,6 +916,7 @@ public class ProducePaymentCheckBillOrderServiceImpl extends ServiceImpl&lt;Produce
916 916 checkCommitDeductionUrlApply(checkBillOrderDO.getId());
917 917 OrderLockFieldVO orderLockFieldVO = new OrderLockFieldVO();
918 918 DeductionUrlFieldVO deductionUrlFieldVO = new DeductionUrlFieldVO();
  919 + checkBillOrderDO.setDeductDept(deductInfoVO.getDeductDept());
919 920 checkBillOrderDO.setDeductAmount((deductInfoVO.getDeductAmount()==null? BigDecimal.ZERO:deductInfoVO.getDeductAmount()).setScale(2, BigDecimal.ROUND_HALF_UP));
920 921 checkBillOrderDO.setActualPayedAmount((checkBillOrderDO.getTotalProductionAmount().subtract(deductInfoVO.getDeductAmount()==null? BigDecimal.ZERO:deductInfoVO.getDeductAmount())).setScale(2, BigDecimal.ROUND_HALF_UP));
921 922 checkBillOrderDO.setUnPayedAmount((checkBillOrderDO.getTotalProductionAmount().subtract(checkBillOrderDO.getDeductAmount()).subtract(checkBillOrderDO.getTotalActualPayedAmount())).setScale(2, BigDecimal.ROUND_HALF_UP));
... ...