From be1b85c9319b43392628d708c9e8b47a175b097e Mon Sep 17 00:00:00 2001 From: "autumn.g@foxmail.com" Date: Fri, 14 Apr 2023 11:17:44 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=A1=E7=AE=97=E4=BF=9D=E5=AD=98=E8=AE=A2?= =?UTF-8?q?=E5=8D=95=E8=AF=A6=E6=83=85=E7=9A=84=E6=80=BB=E7=94=B5=E8=B4=B9?= =?UTF-8?q?=E9=87=91=E9=A2=9D=EF=BC=8C=E6=80=BB=E6=9C=8D=E5=8A=A1=E8=B4=B9?= =?UTF-8?q?=E9=87=91=E9=A2=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jsowell/api/uniapp/OrderController.java | 24 +++++ .../com/jsowell/service/OrderService.java | 14 +++ .../pile/domain/OrderInvoiceRecord.java | 8 ++ .../pile/dto/ApplyOrderInvoiceDTO.java | 23 ++++ .../impl/OrderBasicInfoServiceImpl.java | 102 +++++++++++------- 5 files changed, 135 insertions(+), 36 deletions(-) create mode 100644 jsowell-pile/src/main/java/com/jsowell/pile/dto/ApplyOrderInvoiceDTO.java diff --git a/jsowell-admin/src/main/java/com/jsowell/api/uniapp/OrderController.java b/jsowell-admin/src/main/java/com/jsowell/api/uniapp/OrderController.java index 3e8c10f58..9b2f07d50 100644 --- a/jsowell-admin/src/main/java/com/jsowell/api/uniapp/OrderController.java +++ b/jsowell-admin/src/main/java/com/jsowell/api/uniapp/OrderController.java @@ -10,6 +10,7 @@ import com.jsowell.common.enums.ykc.ReturnCodeEnum; import com.jsowell.common.exception.BusinessException; import com.jsowell.common.response.RestApiResponse; import com.jsowell.common.util.StringUtils; +import com.jsowell.pile.dto.ApplyOrderInvoiceDTO; import com.jsowell.pile.dto.GenerateOrderDTO; import com.jsowell.pile.dto.QueryOrderDTO; import com.jsowell.pile.dto.SettleOrderDTO; @@ -270,4 +271,27 @@ public class OrderController extends BaseController { } return response; } + + /** + * 申请开票接口 + */ + public RestApiResponse applyOrderInvoice(HttpServletRequest request, @RequestBody ApplyOrderInvoiceDTO dto) { + RestApiResponse response; + try { + String memberId = getMemberIdByAuthorization(request); + if (StringUtils.isBlank(memberId)) { + throw new BusinessException(ReturnCodeEnum.CODE_PARAM_NOT_NULL_ERROR); + } + dto.setMemberId(memberId); + orderService.applyOrderInvoice(dto); + response = new RestApiResponse<>(); + } catch (BusinessException e) { + logger.error("查询未开发票订单 warn", e); + response = new RestApiResponse<>(e.getCode(), e.getMessage()); + } catch (Exception e){ + logger.error("查询未开发票订单 error", e); + response = new RestApiResponse<>("00300003", "查询未开发票订单异常"); + } + return response; + } } diff --git a/jsowell-admin/src/main/java/com/jsowell/service/OrderService.java b/jsowell-admin/src/main/java/com/jsowell/service/OrderService.java index 2bb3e8345..88435eeb3 100644 --- a/jsowell-admin/src/main/java/com/jsowell/service/OrderService.java +++ b/jsowell-admin/src/main/java/com/jsowell/service/OrderService.java @@ -33,6 +33,7 @@ import com.jsowell.pile.domain.OrderDetail; import com.jsowell.pile.domain.OrderInvoiceRecord; import com.jsowell.pile.domain.OrderPayRecord; import com.jsowell.pile.domain.WxpayCallbackRecord; +import com.jsowell.pile.dto.ApplyOrderInvoiceDTO; import com.jsowell.pile.dto.BasicPileDTO; import com.jsowell.pile.dto.GenerateOrderDTO; import com.jsowell.pile.dto.GetPayModeDTO; @@ -1022,4 +1023,17 @@ public class OrderService { return orderList; } + + /** + * 申请开票 + * @param dto + */ + public void applyOrderInvoice(ApplyOrderInvoiceDTO dto) { + // 校验订单是否已经开票 + // 入库 + OrderInvoiceRecord orderInvoiceRecord = new OrderInvoiceRecord(); + orderInvoiceRecord.setMemberId(dto.getMemberId()); + orderInvoiceRecord.setTitleId(dto.getTitleId()); + orderInvoiceRecordService.insertOrderInvoiceRecord(orderInvoiceRecord); + } } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/domain/OrderInvoiceRecord.java b/jsowell-pile/src/main/java/com/jsowell/pile/domain/OrderInvoiceRecord.java index 60428740a..decb9e4c9 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/domain/OrderInvoiceRecord.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/domain/OrderInvoiceRecord.java @@ -2,6 +2,7 @@ package com.jsowell.pile.domain; import com.jsowell.common.annotation.Excel; import com.jsowell.common.core.domain.BaseEntity; +import lombok.Data; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; @@ -13,6 +14,7 @@ import java.math.BigDecimal; * @author jsowell * @date 2023-04-10 */ +@Data public class OrderInvoiceRecord extends BaseEntity { private static final long serialVersionUID = 1L; @@ -27,6 +29,12 @@ public class OrderInvoiceRecord extends BaseEntity { @Excel(name = "会员id") private String memberId; + /** + * 发票抬头id + */ + @Excel(name = "发票抬头id") + private String titleId; + /** * 申请订单编号(逗号分割) */ diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/dto/ApplyOrderInvoiceDTO.java b/jsowell-pile/src/main/java/com/jsowell/pile/dto/ApplyOrderInvoiceDTO.java new file mode 100644 index 000000000..a9c701ab8 --- /dev/null +++ b/jsowell-pile/src/main/java/com/jsowell/pile/dto/ApplyOrderInvoiceDTO.java @@ -0,0 +1,23 @@ +package com.jsowell.pile.dto; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +public class ApplyOrderInvoiceDTO { + // 订单编号列表 + private List orderCodes; + + // 会员id + private String memberId; + + // 抬头id + private String titleId; +} 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 08ccb15a3..176909ab8 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 @@ -597,44 +597,74 @@ public class OrderBasicInfoServiceImpl implements IOrderBasicInfoService { // 更新订单详情 try { + // 总电费金额,总服务费金额 + BigDecimal totalElectricityAmount = BigDecimal.ZERO; + BigDecimal totalServiceAmount = BigDecimal.ZERO; + + // 尖时段用电量 + String sharpUsedElectricity = data.getSharpUsedElectricity(); + if (sharpUsedElectricity != null) { + orderDetail.setSharpUsedElectricity(new BigDecimal(sharpUsedElectricity)); + if (data.getSharpPrice() != null) { + orderDetail.setSharpPrice(new BigDecimal(data.getSharpPrice())); + } + if (data.getSharpAmount() != null) { + orderDetail.setSharpAmount(new BigDecimal(data.getSharpAmount())); + } + // 计算该时段电费 + BigDecimal multiply = orderDetail.getSharpElectricityPrice().multiply(new BigDecimal(sharpUsedElectricity)).setScale(2,BigDecimal.ROUND_DOWN); + totalElectricityAmount = totalElectricityAmount.add(multiply); + } + + // 峰时段用电量 + String peakUsedElectricity = data.getPeakUsedElectricity(); + if (peakUsedElectricity != null) { + orderDetail.setPeakUsedElectricity(new BigDecimal(peakUsedElectricity)); + if (data.getPeakPrice() != null) { + orderDetail.setPeakPrice(new BigDecimal(data.getPeakPrice())); + } + if (data.getPeakAmount() != null) { + orderDetail.setPeakAmount(new BigDecimal(data.getPeakAmount())); + } + // 计算该时段电费 + BigDecimal multiply = orderDetail.getPeakElectricityPrice().multiply(new BigDecimal(peakUsedElectricity)).setScale(2,BigDecimal.ROUND_DOWN); + totalElectricityAmount = totalElectricityAmount.add(multiply); + } + + // 平时段用电量 + String flatUsedElectricity = data.getFlatUsedElectricity(); + if (flatUsedElectricity != null) { + orderDetail.setFlatUsedElectricity(new BigDecimal(flatUsedElectricity)); + if (data.getFlatPrice() != null) { + orderDetail.setFlatPrice(new BigDecimal(data.getFlatPrice())); + } + if (data.getFlatAmount() != null) { + orderDetail.setFlatAmount(new BigDecimal(data.getFlatAmount())); + } + // 计算该时段电费 + BigDecimal multiply = orderDetail.getFlatElectricityPrice().multiply(new BigDecimal(flatUsedElectricity)).setScale(2,BigDecimal.ROUND_DOWN); + totalElectricityAmount = totalElectricityAmount.add(multiply); + } + + // 谷时段用电量 + String valleyUsedElectricity = data.getValleyUsedElectricity(); + if (valleyUsedElectricity != null) { + orderDetail.setValleyUsedElectricity(new BigDecimal(valleyUsedElectricity)); + if (data.getValleyPrice() != null) { + orderDetail.setValleyPrice(new BigDecimal(data.getValleyPrice())); + } + if (data.getValleyAmount() != null) { + orderDetail.setValleyAmount(new BigDecimal(data.getValleyAmount())); + } + // 计算该时段电费 + BigDecimal multiply = orderDetail.getValleyElectricityPrice().multiply(new BigDecimal(valleyUsedElectricity)).setScale(2,BigDecimal.ROUND_DOWN); + totalElectricityAmount = totalElectricityAmount.add(multiply); + } + + orderDetail.setTotalElectricityAmount(totalElectricityAmount); + orderDetail.setTotalServiceAmount(orderAmount.subtract(totalElectricityAmount)); orderDetail.setTotalUsedElectricity(new BigDecimal(data.getTotalElectricity())); // 总用电量 orderDetail.setTotalOrderAmount(orderAmount); // 订单总金额 - if (data.getSharpUsedElectricity() != null) { - orderDetail.setSharpUsedElectricity(new BigDecimal(data.getSharpUsedElectricity())); // 尖时段用电量 - } - if (data.getSharpPrice() != null) { - orderDetail.setSharpPrice(new BigDecimal(data.getSharpPrice())); - } - if (data.getSharpAmount() != null) { - orderDetail.setSharpAmount(new BigDecimal(data.getSharpAmount())); - } - if (data.getPeakUsedElectricity() != null) { - orderDetail.setPeakUsedElectricity(new BigDecimal(data.getPeakUsedElectricity())); // 峰时段用电量 - } - if (data.getPeakPrice() != null) { - orderDetail.setPeakPrice(new BigDecimal(data.getPeakPrice())); - } - if (data.getPeakAmount() != null) { - orderDetail.setPeakAmount(new BigDecimal(data.getPeakAmount())); - } - if (data.getFlatUsedElectricity() != null) { - orderDetail.setFlatUsedElectricity(new BigDecimal(data.getFlatUsedElectricity())); // 平时段用电量 - } - if (data.getFlatPrice() != null) { - orderDetail.setFlatPrice(new BigDecimal(data.getFlatPrice())); - } - if (data.getFlatAmount() != null) { - orderDetail.setFlatAmount(new BigDecimal(data.getFlatAmount())); - } - if (data.getValleyUsedElectricity() != null) { - orderDetail.setValleyUsedElectricity(new BigDecimal(data.getValleyUsedElectricity())); // 谷时段用电量 - } - if (data.getValleyPrice() != null) { - orderDetail.setValleyPrice(new BigDecimal(data.getValleyPrice())); - } - if (data.getValleyAmount() != null) { - orderDetail.setValleyAmount(new BigDecimal(data.getValleyAmount())); - } } catch (Exception e) { logger.error("设置订单详情参数发生异常", e); }