From 1ea8a909380dadf975561b59c3ca4e29f4981f3a Mon Sep 17 00:00:00 2001 From: "autumn.g@foxmail.com" Date: Tue, 18 Apr 2023 15:44:13 +0800 Subject: [PATCH] =?UTF-8?q?update=20=E6=9B=B4=E6=96=B0=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../test/java/SpringBootTestController.java | 5 ++ .../pile/mapper/OrderBasicInfoMapper.java | 4 + .../pile/service/IOrderBasicInfoService.java | 2 + .../impl/OrderBasicInfoServiceImpl.java | 73 ++++++++++++++++++- .../mapper/pile/OrderBasicInfoMapper.xml | 34 +++++++++ 5 files changed, 116 insertions(+), 2 deletions(-) diff --git a/jsowell-admin/src/test/java/SpringBootTestController.java b/jsowell-admin/src/test/java/SpringBootTestController.java index 2a40c2d3b..b2a2df73b 100644 --- a/jsowell-admin/src/test/java/SpringBootTestController.java +++ b/jsowell-admin/src/test/java/SpringBootTestController.java @@ -154,6 +154,11 @@ public class SpringBootTestController { @Autowired private IPileAuthCardService pileAuthCardService; + @Test + public void testupdateElecAmount() { + orderBasicInfoService.updateElecAmount(); + } + @Test public void testSelectSomeStatusCardInfo() { PileAuthCard pileAuthCard = pileAuthCardService.selectCardInfoByLogicCard("1111111111111111"); diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/mapper/OrderBasicInfoMapper.java b/jsowell-pile/src/main/java/com/jsowell/pile/mapper/OrderBasicInfoMapper.java index 5a6d72335..3b93c9d53 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/mapper/OrderBasicInfoMapper.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/mapper/OrderBasicInfoMapper.java @@ -201,4 +201,8 @@ public interface OrderBasicInfoMapper { * @return */ List getAccumulativeInfoForLianLian(QueryStationInfoDTO dto); + + List queryElecAmountNullList(); + + int batchUpdateOrderDetail(@Param("list") List orderDetailList); } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/IOrderBasicInfoService.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/IOrderBasicInfoService.java index e1fac3631..7b542976c 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/IOrderBasicInfoService.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/IOrderBasicInfoService.java @@ -126,6 +126,8 @@ public interface IOrderBasicInfoService { List getListByMemberIdAndOrderStatus(String memberId, List orderStatusList, LocalDateTime dateTime); + void updateElecAmount(); + /** * 结算订单退款和用户余额退款调这个方法 */ diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java index 1998c9195..c704f078b 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java @@ -3,6 +3,8 @@ package com.jsowell.pile.service.impl; import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSONObject; import com.fasterxml.jackson.core.JsonProcessingException; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; import com.google.common.collect.Lists; import com.google.common.collect.Maps; import com.jsowell.common.constant.CacheConstants; @@ -605,9 +607,8 @@ public class OrderBasicInfoServiceImpl implements IOrderBasicInfoService { // 更新订单详情 try { - // 总电费金额,总服务费金额 + // 总电费金额 BigDecimal totalElectricityAmount = BigDecimal.ZERO; - BigDecimal totalServiceAmount = BigDecimal.ZERO; // 尖时段用电量 String sharpUsedElectricity = data.getSharpUsedElectricity(); @@ -694,6 +695,74 @@ public class OrderBasicInfoServiceImpl implements IOrderBasicInfoService { } } + @Override + public void updateElecAmount() { + // 查询 elecAmount为空的订单数据 + int pageNum = 1; + int pageSize = 10; + + while (true) { + // 分页处理 + PageHelper.startPage(pageNum, pageSize); + List list = orderBasicInfoMapper.queryElecAmountNullList(); + PageInfo pageInfo = new PageInfo<>(list); + if (CollectionUtils.isEmpty(pageInfo.getList())) { + break; + } + + // 计算电量总金额 + List orderDetailList = calculateData(pageInfo.getList()); + + // 更新数据库 + orderBasicInfoMapper.batchUpdateOrderDetail(orderDetailList); + } + } + + // 计算数据 + private List calculateData(List list) { + for (OrderDetail orderDetail : list) { + // 总电费金额 + BigDecimal totalElectricityAmount = BigDecimal.ZERO; + + // 尖时段用电量 + BigDecimal sharpUsedElectricity = orderDetail.getSharpUsedElectricity(); + if (sharpUsedElectricity != null) { + // 计算该时段电费 + BigDecimal multiply = orderDetail.getSharpElectricityPrice().multiply(sharpUsedElectricity).setScale(2,BigDecimal.ROUND_DOWN); + totalElectricityAmount = totalElectricityAmount.add(multiply); + } + + // 峰时段用电量 + BigDecimal peakUsedElectricity = orderDetail.getPeakUsedElectricity(); + if (peakUsedElectricity != null) { + // 计算该时段电费 + BigDecimal multiply = orderDetail.getPeakElectricityPrice().multiply(peakUsedElectricity).setScale(2,BigDecimal.ROUND_DOWN); + totalElectricityAmount = totalElectricityAmount.add(multiply); + } + + + // 平时段用电量 + BigDecimal flatUsedElectricity = orderDetail.getFlatUsedElectricity(); + if (flatUsedElectricity != null) { + // 计算该时段电费 + BigDecimal multiply = orderDetail.getFlatElectricityPrice().multiply(flatUsedElectricity).setScale(2,BigDecimal.ROUND_DOWN); + totalElectricityAmount = totalElectricityAmount.add(multiply); + } + + // 谷时段用电量 + BigDecimal valleyUsedElectricity = orderDetail.getValleyUsedElectricity(); + if (valleyUsedElectricity != null) { + // 计算该时段电费 + BigDecimal multiply = orderDetail.getValleyElectricityPrice().multiply(valleyUsedElectricity).setScale(2,BigDecimal.ROUND_DOWN); + totalElectricityAmount = totalElectricityAmount.add(multiply); + } + + orderDetail.setTotalElectricityAmount(totalElectricityAmount); + orderDetail.setTotalServiceAmount(orderDetail.getTotalOrderAmount().subtract(totalElectricityAmount)); + } + return list; + } + /** * 余额支付 计算需要退回的金额 * diff --git a/jsowell-pile/src/main/resources/mapper/pile/OrderBasicInfoMapper.xml b/jsowell-pile/src/main/resources/mapper/pile/OrderBasicInfoMapper.xml index eabb8881a..1f5c08795 100644 --- a/jsowell-pile/src/main/resources/mapper/pile/OrderBasicInfoMapper.xml +++ b/jsowell-pile/src/main/resources/mapper/pile/OrderBasicInfoMapper.xml @@ -940,4 +940,38 @@ AND t1.create_time #{endTime,jdbcType=VARCHAR} + + + + + update order_detail + + + + + when id=#{item.id} then #{item.totalElectricityAmount} + + + + + + + when id=#{item.id} then #{item.totalServiceAmount} + + + + + where + + id=#{i.id} + + \ No newline at end of file