Commit d4e21abebdc7828f91fe0063f5acd0ff6320387a
1 parent
5dd2ab6b
feat: 问题修复项
1、修改订单数量更新总价等信息
Showing
1 changed file
with
70 additions
and
3 deletions
src/main/java/com/order/erp/job/OrderJob.java
... | ... | @@ -5,11 +5,13 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; |
5 | 5 | import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; |
6 | 6 | import com.order.erp.common.constant.Constant; |
7 | 7 | import com.order.erp.common.utils.DateUtils; |
8 | +import com.order.erp.common.utils.ProfitUtils; | |
8 | 9 | import com.order.erp.common.utils.TransactionHelper; |
9 | 10 | import com.order.erp.domain.OrderStatusEnum; |
10 | 11 | import com.order.erp.domain.dto.BaseDO; |
11 | 12 | import com.order.erp.domain.dto.order.*; |
12 | 13 | import com.order.erp.domain.vo.order.OrderInfoResultVO; |
14 | +import com.order.erp.domain.vo.order.ProfitCalculateVO; | |
13 | 15 | import com.order.erp.service.order.*; |
14 | 16 | import lombok.extern.slf4j.Slf4j; |
15 | 17 | import org.joda.time.DateTime; |
... | ... | @@ -17,9 +19,10 @@ import org.springframework.scheduling.annotation.Scheduled; |
17 | 19 | import org.springframework.stereotype.Component; |
18 | 20 | |
19 | 21 | import javax.annotation.Resource; |
20 | -import java.util.List; | |
21 | -import java.util.Objects; | |
22 | -import java.util.Set; | |
22 | +import java.math.BigDecimal; | |
23 | +import java.math.RoundingMode; | |
24 | +import java.util.*; | |
25 | +import java.util.function.Function; | |
23 | 26 | import java.util.stream.Collectors; |
24 | 27 | |
25 | 28 | /** |
... | ... | @@ -95,4 +98,68 @@ public class OrderJob { |
95 | 98 | log.info("执行结束时间:{}", DateTime.now().toString("yyyy-MM-dd HH:mm:ss")); |
96 | 99 | } |
97 | 100 | |
101 | + /** | |
102 | + * 每隔5分执行一次 | |
103 | + */ | |
104 | + @Scheduled(cron = "0 */1 * * * ?") | |
105 | +// @Scheduled(cron = "*/5 * * * * ?") | |
106 | + public void checkChargeOrderCount() { | |
107 | + log.info("执行开始时间:{}", DateTime.now().toString("yyyy-MM-dd HH:mm:ss")); | |
108 | + LambdaQueryWrapper<OrderBaseInfoDO> queryWrapper = new LambdaQueryWrapper<OrderBaseInfoDO>() | |
109 | + .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN) | |
110 | + .ge(OrderBaseInfoDO::getCreateTime, DateUtils.format(DateTime.now().minusMonths(Constant.ONE).toDate(), DateUtils.DATE_TIME)) | |
111 | + .le(OrderBaseInfoDO::getCreateTime, DateUtils.format(DateTime.now().toDate(), DateUtils.DATE_TIME)) | |
112 | + .ne(OrderBaseInfoDO::getOrderStatus, OrderStatusEnum.ORDER_FINISH.getStatus()); | |
113 | + List<OrderBaseInfoDO> ordersDOS = orderBaseInfoService.list(queryWrapper); | |
114 | + | |
115 | + List<OrderInfoResultVO> orderInfoResultVOS = orderBaseInfoService.wrapperOrderResultList(false, ordersDOS); | |
116 | + if (CollectionUtils.isNotEmpty(orderInfoResultVOS)) { | |
117 | + Set<Long> orderIds = orderInfoResultVOS.stream().map(OrderInfoResultVO::getId).collect(Collectors.toSet()); | |
118 | + if (CollectionUtils.isNotEmpty(orderIds)) { | |
119 | + List<OrderProfitAnalysisDO> profitAnalysisDOS = profitAnalysisService.list(new LambdaQueryWrapper<OrderProfitAnalysisDO>() | |
120 | + .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN) | |
121 | + .in(OrderProfitAnalysisDO::getOrderId, orderIds)); | |
122 | + | |
123 | + Map<Long, OrderProfitAnalysisDO> profitAnalysisDOMap = new HashMap<>(); | |
124 | + if (CollectionUtils.isNotEmpty(profitAnalysisDOS)) { | |
125 | + profitAnalysisDOMap = profitAnalysisDOS.stream().collect(Collectors.toMap(OrderProfitAnalysisDO::getOrderId, Function.identity(), (x, y) -> y)); | |
126 | + } | |
127 | + | |
128 | + for (OrderInfoResultVO resultVO : orderInfoResultVOS) { | |
129 | + if (profitAnalysisDOMap.containsKey(resultVO.getId())) { | |
130 | + OrderProfitAnalysisDO profitAnalysisDO = profitAnalysisDOMap.get(resultVO.getId()); | |
131 | + Integer orderCount = resultVO.getOrderCount(); | |
132 | + BigDecimal customerTotalPrice = new BigDecimal(profitAnalysisDO.getCustomerTotalPrice()).setScale(Constant.TWO, RoundingMode.HALF_UP); | |
133 | + BigDecimal customerPrice = new BigDecimal(profitAnalysisDO.getCustomerPrice()).setScale(Constant.TWO, RoundingMode.HALF_UP); | |
134 | + | |
135 | + BigDecimal calculateTotalPrice = new BigDecimal(orderCount).multiply(customerPrice).setScale(Constant.TWO, RoundingMode.HALF_UP); | |
136 | + if (customerTotalPrice.compareTo(calculateTotalPrice) != Constant.ZERO) { | |
137 | + BigDecimal customerRmbPrice = new BigDecimal(profitAnalysisDO.getCustomerRmbPrice()); | |
138 | + BigDecimal customerRmbTotalPrice = new BigDecimal(orderCount).multiply(customerRmbPrice).setScale(Constant.TWO, RoundingMode.HALF_UP); | |
139 | + BigDecimal productionDepartmentPrice = new BigDecimal(profitAnalysisDO.getProductionDepartmentPrice()); | |
140 | + BigDecimal productionDepartmentTotalPrice = new BigDecimal(orderCount).multiply(productionDepartmentPrice).setScale(Constant.TWO, RoundingMode.HALF_UP); | |
141 | + BigDecimal packetPrice = new BigDecimal(profitAnalysisDO.getPacketPrice()); | |
142 | + BigDecimal packetTotalPrice = new BigDecimal(orderCount).multiply(packetPrice).setScale(Constant.TWO, RoundingMode.HALF_UP); | |
143 | + Double profitRate = ProfitUtils.calculateProfitRate(ProfitCalculateVO.builder() | |
144 | + .exchangeRate(profitAnalysisDO.getExchangeRate()) | |
145 | + .profitType(profitAnalysisDO.getProfitType()) | |
146 | + .customerTotalPrice(calculateTotalPrice.doubleValue()) | |
147 | + .productionDepartmentTotalPrice(productionDepartmentTotalPrice.doubleValue()) | |
148 | + .packetTotalPrice(packetTotalPrice.doubleValue()).build()); | |
149 | + | |
150 | + profitAnalysisDO.setCustomerTotalPrice(calculateTotalPrice.doubleValue()); | |
151 | + profitAnalysisDO.setCustomerRmbTotalPrice(customerRmbTotalPrice.doubleValue()); | |
152 | + profitAnalysisDO.setProductionDepartmentTotalPrice(productionDepartmentTotalPrice.doubleValue()); | |
153 | + profitAnalysisDO.setPacketTotalPrice(packetTotalPrice.doubleValue()); | |
154 | + profitAnalysisDO.setProfitRate(profitRate); | |
155 | + profitAnalysisService.updateById(profitAnalysisDO); | |
156 | + } | |
157 | + } | |
158 | + } | |
159 | + } | |
160 | + } | |
161 | + log.info("执行结束时间:{}", DateTime.now().toString("yyyy-MM-dd HH:mm:ss")); | |
162 | + } | |
163 | + | |
164 | + | |
98 | 165 | } | ... | ... |