修正并充订单数据工具

This commit is contained in:
Guoqs
2024-11-15 10:34:23 +08:00
parent a59dc883c1
commit a345976137

View File

@@ -34,6 +34,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.util.List;
@@ -84,6 +85,9 @@ public class TempService {
@Autowired
private PileMsgRecordMapper pileMsgRecordMapper;
@Autowired
private OrderDetailService orderDetailService;
@Autowired
private OrderMonitorDataService orderMonitorDataService;
@@ -624,28 +628,66 @@ public class TempService {
* 修正并充订单数据
* @param dto
*/
@Transactional(rollbackFor = Exception.class)
public void correctCombinedChargingOrder(QueryOrderDTO dto) {
List<String> orderCodeList = dto.getOrderCodeList();
logger.info("修正并充订单数据,订单号:{}", JSON.toJSONString(orderCodeList));
logger.info("修正并充订单数据工具,订单号:{}", JSON.toJSONString(orderCodeList));
// 查询临时表,不要重复修正
String redisKey = "correct_combined_charging_order";
List<String> redisResult = redisCache.getCacheList(redisKey);
if (CollectionUtils.isNotEmpty(redisResult)) {
logger.info("已修正订单:{}", JSON.toJSONString(redisResult));
logger.info("修正并充订单数据工具, 已修正订单:{}", JSON.toJSONString(redisResult));
// 过滤掉已修正的订单
orderCodeList.removeAll(redisResult);
logger.info("过滤掉已修正的订单剩余:{}", JSON.toJSONString(orderCodeList));
logger.info("修正并充订单数据工具. 过滤掉已修正的订单剩余:{}", JSON.toJSONString(orderCodeList));
}
if (CollectionUtils.isEmpty(orderCodeList)) {
logger.info("无需要修正的订单");
logger.info("修正并充订单数据工具, 无需要修正的订单");
return;
}
BigDecimal multiple = new BigDecimal("2");
// 查询订单主表数据
List<OrderBasicInfo> orderBasicInfos = orderBasicInfoService.queryOrderList(orderCodeList);
for (OrderBasicInfo orderBasicInfo : orderBasicInfos) {
orderBasicInfo.setOrderAmount(orderBasicInfo.getOrderAmount().multiply(multiple));
}
// 查询订单详情数据
List<OrderDetail> orderDetailList = orderBasicInfoService.getOrderDetailList(orderCodeList);
for (OrderDetail orderDetail : orderDetailList) {
// 订单总用电量
orderDetail.setTotalUsedElectricity(orderDetail.getTotalUsedElectricity().multiply(multiple));
// 订单总电费金额
orderDetail.setTotalElectricityAmount(orderDetail.getTotalElectricityAmount().multiply(multiple));
// 订单总服务费金额
orderDetail.setTotalServiceAmount(orderDetail.getTotalServiceAmount().multiply(multiple));
// 订单总金额
orderDetail.setTotalOrderAmount(orderDetail.getTotalOrderAmount().multiply(multiple));
// 尖时段
if (orderDetail.getSharpUsedElectricity() != null && orderDetail.getSharpUsedElectricity().compareTo(BigDecimal.ZERO) > 0) {
orderDetail.setSharpUsedElectricity(orderDetail.getSharpUsedElectricity().multiply(multiple));
orderDetail.setSharpAmount(orderDetail.getSharpAmount().multiply(multiple));
}
// 峰时段
if (orderDetail.getPeakUsedElectricity() != null && orderDetail.getPeakUsedElectricity().compareTo(BigDecimal.ZERO) > 0) {
orderDetail.setPeakUsedElectricity(orderDetail.getPeakUsedElectricity().multiply(multiple));
orderDetail.setPeakAmount(orderDetail.getPeakAmount().multiply(multiple));
}
// 平时段
if (orderDetail.getFlatUsedElectricity() != null && orderDetail.getFlatUsedElectricity().compareTo(BigDecimal.ZERO) > 0) {
orderDetail.setFlatUsedElectricity(orderDetail.getFlatUsedElectricity().multiply(multiple));
orderDetail.setFlatAmount(orderDetail.getFlatAmount().multiply(multiple));
}
// 谷时段
if (orderDetail.getValleyUsedElectricity() != null && orderDetail.getValleyUsedElectricity().compareTo(BigDecimal.ZERO) > 0) {
orderDetail.setValleyUsedElectricity(orderDetail.getValleyUsedElectricity().multiply(multiple));
orderDetail.setValleyAmount(orderDetail.getValleyAmount().multiply(multiple));
}
}
// 更新数据库
orderBasicInfoService.updateBatch(orderBasicInfos);
orderDetailService.updateBatch(orderDetailList);
Map<String, List<String>> redisMap = Maps.newHashMap();
redisMap.put(redisKey, orderCodeList);
redisCache.batchSetCacheList(redisMap, 300, TimeUnit.DAYS);