From af551e9df1e59ef94f57007e1f4e8960ba2f8778 Mon Sep 17 00:00:00 2001
From: java110 <928255095@qq.com>
Date: 星期二, 04 四月 2023 11:15:40 +0800
Subject: [PATCH] optimize charge coupon
---
service-common/src/main/java/com/java110/common/charge/ChargeCoreImpl.java | 80 ++++++++++++++++++++++++++++++++++-----
1 files changed, 69 insertions(+), 11 deletions(-)
diff --git a/service-common/src/main/java/com/java110/common/charge/ChargeCoreImpl.java b/service-common/src/main/java/com/java110/common/charge/ChargeCoreImpl.java
index 88b95da..96959e5 100644
--- a/service-common/src/main/java/com/java110/common/charge/ChargeCoreImpl.java
+++ b/service-common/src/main/java/com/java110/common/charge/ChargeCoreImpl.java
@@ -1,11 +1,13 @@
package com.java110.common.charge;
+import com.alibaba.fastjson.JSONObject;
import com.java110.core.factory.GenerateCodeFactory;
import com.java110.dto.account.AccountDto;
import com.java110.dto.chargeMachine.ChargeMachineDto;
import com.java110.dto.chargeMachineFactory.ChargeMachineFactoryDto;
import com.java110.dto.chargeMachineOrder.ChargeMachineOrderDto;
import com.java110.dto.chargeMachineOrder.NotifyChargeOrderDto;
+import com.java110.dto.chargeMachineOrderCoupon.ChargeMachineOrderCouponDto;
import com.java110.dto.chargeMachinePort.ChargeMachinePortDto;
import com.java110.dto.chargeRuleFee.ChargeRuleFeeDto;
import com.java110.intf.acct.IAccountInnerServiceSMO;
@@ -13,6 +15,7 @@
import com.java110.po.accountDetail.AccountDetailPo;
import com.java110.po.chargeMachineOrder.ChargeMachineOrderPo;
import com.java110.po.chargeMachineOrderAcct.ChargeMachineOrderAcctPo;
+import com.java110.po.chargeMachineOrderCoupon.ChargeMachineOrderCouponPo;
import com.java110.po.chargeMachinePort.ChargeMachinePortPo;
import com.java110.utils.exception.CmdException;
import com.java110.utils.factory.ApplicationContextFactory;
@@ -25,9 +28,7 @@
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.List;
+import java.util.*;
/**
* 鍏呯數鏍稿績绫�
@@ -56,6 +57,9 @@
@Autowired
private IChargeRuleFeeV1InnerServiceSMO chargeRuleFeeV1InnerServiceSMOImpl;
+
+ @Autowired
+ private IChargeMachineOrderCouponV1InnerServiceSMO chargeMachineOrderCouponV1InnerServiceSMOImpl;
@Override
@@ -125,11 +129,11 @@
return;
}
- String chargeHours = chargeMachineOrderDtos.get(0).getChargeHours();
- double cHours = Double.parseDouble(chargeHours);
- if (999 == cHours) {
- cHours = 10;
- }
+// String chargeHours = chargeMachineOrderDtos.get(0).getChargeHours();
+// double cHours = Double.parseDouble(chargeHours);
+// if (999 == cHours) {
+// cHours = 10;
+// }
Date startTime = DateUtil.getDateFromStringA(chargeMachineOrderDtos.get(0).getStartTime());
@@ -140,6 +144,11 @@
if (usedHours < 0) {
usedHours = 0;
}
+
+ // todo 浼樻儬鍒告姷鎵�
+ JSONObject result = useCoupon(usedHours, chargeMachineOrderDtos);
+ usedHours = result.getDoubleValue("usedHours");
+ remark += result.getString("remark");
ChargeRuleFeeDto chargeRuleFeeDto = new ChargeRuleFeeDto();
chargeRuleFeeDto.setRuleId(chargeMachineDto.getRuleId());
@@ -161,7 +170,7 @@
String durationPrice = chargeRuleFeeDtos.get(chargeRuleFeeDtos.size() - 1).getDurationPrice();
- BigDecimal usedHoursDec = new BigDecimal(usedHours).multiply(new BigDecimal(Double.parseDouble(durationPrice))).setScale(2, BigDecimal.ROUND_HALF_UP);
+ BigDecimal usedHoursDec = new BigDecimal(usedHours).multiply(new BigDecimal(Double.parseDouble(durationPrice))).setScale(2, BigDecimal.ROUND_HALF_UP);
BigDecimal returnMoneyDec = new BigDecimal(Double.parseDouble(chargeMachineOrderDtos.get(0).getAmount())).subtract(usedHoursDec);
@@ -206,7 +215,6 @@
//鍏呯數琛ㄤ腑鍔犲叆閫�娆鹃噾棰�
-
ChargeMachineOrderAcctPo chargeMachineOrderAcctPo = new ChargeMachineOrderAcctPo();
chargeMachineOrderAcctPo.setAcctDetailId(accountDetailPo.getDetailId());
chargeMachineOrderAcctPo.setAmount((-1 * returnMoney) + "");
@@ -227,6 +235,56 @@
chargeMachineOrderAcctPo.setDurationPrice(durationPrice);
chargeMachineOrderAcctV1InnerServiceSMOImpl.saveChargeMachineOrderAcct(chargeMachineOrderAcctPo);
+ }
+
+ /**
+ * 浼樻儬鍒告姷鎵� 灏忔椂
+ *
+ * @param usedHours
+ * @param chargeMachineOrderDtos
+ * @return {
+ * usedHours:'',
+ * remark:''
+ * }
+ */
+ private JSONObject useCoupon(double usedHours, List<ChargeMachineOrderDto> chargeMachineOrderDtos) {
+ double hours = 0;
+ JSONObject useHoursInfo = new JSONObject();
+ ChargeMachineOrderCouponDto chargeMachineOrderCouponDto = new ChargeMachineOrderCouponDto();
+ chargeMachineOrderCouponDto.setOrderId(chargeMachineOrderDtos.get(0).getOrderId());
+ chargeMachineOrderCouponDto.setCommunityId(chargeMachineOrderDtos.get(0).getCommunityId());
+ chargeMachineOrderCouponDto.setState("W");
+ List<ChargeMachineOrderCouponDto> chargeMachineOrderCouponDtos
+ = chargeMachineOrderCouponV1InnerServiceSMOImpl.queryChargeMachineOrderCoupons(chargeMachineOrderCouponDto);
+ if (chargeMachineOrderCouponDtos == null || chargeMachineOrderCouponDtos.size() < 1) {
+ useHoursInfo.put("usedHours", usedHours);
+ useHoursInfo.put("remark", "");
+ return useHoursInfo;
+ }
+ String couponNames = "";
+ for (ChargeMachineOrderCouponDto tmpChargeMachineOrderCouponDto : chargeMachineOrderCouponDtos) {
+ couponNames += ("浼樻儬鍒稿悕绉帮細" + tmpChargeMachineOrderCouponDto.getCouponName() + "(" + tmpChargeMachineOrderCouponDto.getCouponId() + "),灏忔椂锛�" + tmpChargeMachineOrderCouponDto.getHours() + ";");
+
+ hours += Double.parseDouble(tmpChargeMachineOrderCouponDto.getHours());
+ }
+
+ //灏嗕紭鎯犲埜淇敼涓哄凡浣跨敤鐘舵��
+ ChargeMachineOrderCouponPo chargeMachineOrderCouponPo = new ChargeMachineOrderCouponPo();
+ chargeMachineOrderCouponPo.setOrderId(chargeMachineOrderDtos.get(0).getOrderId());
+ chargeMachineOrderCouponPo.setCommunityId(chargeMachineOrderDtos.get(0).getCommunityId());
+ chargeMachineOrderCouponPo.setState("C");
+ chargeMachineOrderCouponV1InnerServiceSMOImpl.updateChargeMachineOrderCoupon(chargeMachineOrderCouponPo);
+
+ BigDecimal useDec = new BigDecimal(usedHours).subtract(new BigDecimal(hours)).setScale(2, BigDecimal.ROUND_HALF_UP);
+ usedHours = useDec.doubleValue();
+ if (usedHours < 0) {
+ useHoursInfo.put("usedHours", 0);
+ useHoursInfo.put("remark", couponNames);
+ return useHoursInfo;
+ }
+ useHoursInfo.put("usedHours", usedHours);
+ useHoursInfo.put("remark", couponNames);
+ return useHoursInfo;
}
@Override
@@ -316,7 +374,7 @@
throw new CmdException("鍘傚鎺ュ彛鏈疄鐜�");
}
- chargeFactoryAdapt.workHeartbeat(chargeMachineDtos.get(0),notifyChargeOrderDto.getBodyParam());
+ chargeFactoryAdapt.workHeartbeat(chargeMachineDtos.get(0), notifyChargeOrderDto.getBodyParam());
return new ResultVo(ResultVo.CODE_OK, "鎴愬姛");
--
Gitblit v1.8.0