Commit 11e5250e25cdbe49b069106b8c27eca6a0542a7b
1 parent
8cfa8abd
fix:1.修改在保存扣款信息时,扣款部门没有保存的情况。
2.编写一个定时任务,用来补上之前填了扣款部门但是没有保存的问题。
Showing
2 changed files
with
67 additions
and
0 deletions
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<Produce | @@ -916,6 +916,7 @@ public class ProducePaymentCheckBillOrderServiceImpl extends ServiceImpl<Produce | ||
916 | checkCommitDeductionUrlApply(checkBillOrderDO.getId()); | 916 | checkCommitDeductionUrlApply(checkBillOrderDO.getId()); |
917 | OrderLockFieldVO orderLockFieldVO = new OrderLockFieldVO(); | 917 | OrderLockFieldVO orderLockFieldVO = new OrderLockFieldVO(); |
918 | DeductionUrlFieldVO deductionUrlFieldVO = new DeductionUrlFieldVO(); | 918 | DeductionUrlFieldVO deductionUrlFieldVO = new DeductionUrlFieldVO(); |
919 | + checkBillOrderDO.setDeductDept(deductInfoVO.getDeductDept()); | ||
919 | checkBillOrderDO.setDeductAmount((deductInfoVO.getDeductAmount()==null? BigDecimal.ZERO:deductInfoVO.getDeductAmount()).setScale(2, BigDecimal.ROUND_HALF_UP)); | 920 | checkBillOrderDO.setDeductAmount((deductInfoVO.getDeductAmount()==null? BigDecimal.ZERO:deductInfoVO.getDeductAmount()).setScale(2, BigDecimal.ROUND_HALF_UP)); |
920 | checkBillOrderDO.setActualPayedAmount((checkBillOrderDO.getTotalProductionAmount().subtract(deductInfoVO.getDeductAmount()==null? BigDecimal.ZERO:deductInfoVO.getDeductAmount())).setScale(2, BigDecimal.ROUND_HALF_UP)); | 921 | checkBillOrderDO.setActualPayedAmount((checkBillOrderDO.getTotalProductionAmount().subtract(deductInfoVO.getDeductAmount()==null? BigDecimal.ZERO:deductInfoVO.getDeductAmount())).setScale(2, BigDecimal.ROUND_HALF_UP)); |
921 | checkBillOrderDO.setUnPayedAmount((checkBillOrderDO.getTotalProductionAmount().subtract(checkBillOrderDO.getDeductAmount()).subtract(checkBillOrderDO.getTotalActualPayedAmount())).setScale(2, BigDecimal.ROUND_HALF_UP)); | 922 | checkBillOrderDO.setUnPayedAmount((checkBillOrderDO.getTotalProductionAmount().subtract(checkBillOrderDO.getDeductAmount()).subtract(checkBillOrderDO.getTotalActualPayedAmount())).setScale(2, BigDecimal.ROUND_HALF_UP)); |