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/cmd/chargeMachine/StartChargeCmd.java |   77 ++++++++++++++++++++++++--------------
 1 files changed, 48 insertions(+), 29 deletions(-)

diff --git a/service-common/src/main/java/com/java110/common/cmd/chargeMachine/StartChargeCmd.java b/service-common/src/main/java/com/java110/common/cmd/chargeMachine/StartChargeCmd.java
index 7678784..7856d40 100644
--- a/service-common/src/main/java/com/java110/common/cmd/chargeMachine/StartChargeCmd.java
+++ b/service-common/src/main/java/com/java110/common/cmd/chargeMachine/StartChargeCmd.java
@@ -27,6 +27,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.po.couponPropertyUser.CouponPropertyUserPo;
 import com.java110.utils.exception.CmdException;
@@ -82,6 +83,9 @@
     @Autowired
     private IChargeRuleFeeV1InnerServiceSMO chargeRuleFeeV1InnerServiceSMOImpl;
 
+    @Autowired
+    private IChargeMachineOrderCouponV1InnerServiceSMO chargeMachineOrderCouponV1InnerServiceSMOImpl;
+
     @Override
     public void validate(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException, ParseException {
         Assert.hasKeyAndValue(reqJson, "communityId", "鏈寘鍚皬鍖轰俊鎭�");
@@ -124,9 +128,9 @@
         if (chargeRuleFeeDtos == null || chargeRuleFeeDtos.size() < 1) {
             throw new CmdException("鏈缃厖鍊兼敹璐�");
         }
-        reqJson.put("durationPrice",chargeRuleFeeDtos.get(chargeRuleFeeDtos.size()-1).getDurationPrice());
+        reqJson.put("durationPrice", chargeRuleFeeDtos.get(chargeRuleFeeDtos.size() - 1).getDurationPrice());
 
-        BigDecimal payMoneyDec = new BigDecimal(Double.parseDouble(chargeRuleFeeDtos.get(chargeRuleFeeDtos.size()-1).getDurationPrice()));
+        BigDecimal payMoneyDec = new BigDecimal(Double.parseDouble(chargeRuleFeeDtos.get(chargeRuleFeeDtos.size() - 1).getDurationPrice()));
 
         double payMoney = payMoneyDec.multiply(new BigDecimal(duration)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
 
@@ -253,11 +257,11 @@
         resultVo.setData(orderId);
 
         double couponDurationHours = 0.0;
-        //鎵f
-        if (reqJson.containsKey("couponIds") && !StringUtil.isEmpty(reqJson.getString("couponIds"))) {
-            //todo 浼樻儬鍒告姷鎵�
-            couponDurationHours = withholdCoupon(reqJson, chargeMachineDtos, orderId);
-        }
+
+
+        //todo 浼樻儬鍒告姷鎵�
+        withholdCoupon(reqJson, chargeMachineDtos, orderId);
+
 
         if (durationHours - couponDurationHours > 0) {
             // todo 3.0 璐︽埛鎵f
@@ -274,10 +278,14 @@
      * @param chargeMachineDtos
      * @param orderId
      */
-    private double withholdCoupon(JSONObject reqJson, List<ChargeMachineDto> chargeMachineDtos, String orderId) {
+    private void withholdCoupon(JSONObject reqJson, List<ChargeMachineDto> chargeMachineDtos, String orderId) {
+        if (!reqJson.containsKey("couponIds") || StringUtil.isEmpty(reqJson.getString("couponIds"))) {
+            return;
+        }
         int flag;
-        double hours = 0;
-        String couponNames = "";
+//        double hours = 0;
+//        String couponNames = "";
+        ChargeMachineOrderCouponPo chargeMachineOrderCouponPo = null;
         for (String couponId : reqJson.getString("couponIds").split(",")) {
             String requestId = DistributedLock.getLockUUID();
             String key = this.getClass().getSimpleName() + reqJson.getString("couponId");
@@ -301,8 +309,6 @@
                     throw new CmdException("鏍搁攢澶辫触");
                 }
 
-                couponNames += ("浼樻儬鍒稿悕绉帮細" + couponPropertyUserDtos.get(0).getCouponName() + ",浼樻儬鍒哥紪鍙凤細" + couponId + ";");
-
                 CouponPropertyPoolConfigDto couponPropertyPoolConfigDto = new CouponPropertyPoolConfigDto();
                 couponPropertyPoolConfigDto.setCouponId(couponPropertyUserDtos.get(0).getCppId());
                 couponPropertyPoolConfigDto.setColumnKey("hours");
@@ -311,30 +317,43 @@
                 Assert.listOnlyOne(couponPropertyPoolConfigDtos, "鏈寘鍚紭鎯犲埜閰嶇疆淇℃伅");
 
                 double value = Double.parseDouble(couponPropertyPoolConfigDtos.get(0).getColumnValue());
-                hours += value;
+
+                chargeMachineOrderCouponPo = new ChargeMachineOrderCouponPo();
+                chargeMachineOrderCouponPo.setCouponId(couponId);
+                chargeMachineOrderCouponPo.setCouponName(couponPropertyUserDtos.get(0).getCouponName());
+                chargeMachineOrderCouponPo.setOrderId(orderId);
+                chargeMachineOrderCouponPo.setCommunityId(chargeMachineDtos.get(0).getCommunityId());
+                chargeMachineOrderCouponPo.setState("W");
+                chargeMachineOrderCouponPo.setCmocId(GenerateCodeFactory.getGeneratorId("11"));
+                chargeMachineOrderCouponPo.setHours(value + "");
+                chargeMachineOrderCouponV1InnerServiceSMOImpl.saveChargeMachineOrderCoupon(chargeMachineOrderCouponPo);
+
+//                couponNames += ("浼樻儬鍒稿悕绉帮細" + couponPropertyUserDtos.get(0).getCouponName() + "(" + couponId + "),灏忔椂锛�"+value+";");
+//
+//                hours += value;
             } finally {
                 DistributedLock.releaseDistributedLock(requestId, key);
             }
         }
 
-        hours = Math.ceil(hours);
+//        hours = Math.ceil(hours);
 
-        ChargeMachineOrderAcctPo chargeMachineOrderAcctPo = new ChargeMachineOrderAcctPo();
-        chargeMachineOrderAcctPo.setAcctDetailId("-1");
-        chargeMachineOrderAcctPo.setAmount("0");
-        chargeMachineOrderAcctPo.setCmoaId(GenerateCodeFactory.getGeneratorId("11"));
-        chargeMachineOrderAcctPo.setOrderId(orderId);
-        chargeMachineOrderAcctPo.setAcctId(reqJson.getString("acctId"));
-        chargeMachineOrderAcctPo.setStartTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A));
-        chargeMachineOrderAcctPo.setEndTime(DateUtil.getAddHoursStringA(DateUtil.getCurrentDate(), new Double(hours).intValue()));
-        chargeMachineOrderAcctPo.setRemark("浼樻儬鍒告姷鎵�," + couponNames);
-        chargeMachineOrderAcctPo.setCommunityId(chargeMachineDtos.get(0).getCommunityId());
-        chargeMachineOrderAcctPo.setEnergy("0");
-        chargeMachineOrderAcctPo.setDurationPrice(reqJson.getString("durationPrice"));
+//        ChargeMachineOrderAcctPo chargeMachineOrderAcctPo = new ChargeMachineOrderAcctPo();
+//        chargeMachineOrderAcctPo.setAcctDetailId("-1");
+//        chargeMachineOrderAcctPo.setAmount("0");
+//        chargeMachineOrderAcctPo.setCmoaId(GenerateCodeFactory.getGeneratorId("11"));
+//        chargeMachineOrderAcctPo.setOrderId(orderId);
+//        chargeMachineOrderAcctPo.setAcctId(reqJson.getString("acctId"));
+//        chargeMachineOrderAcctPo.setStartTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A));
+//        chargeMachineOrderAcctPo.setEndTime(DateUtil.getAddHoursStringA(DateUtil.getCurrentDate(), new Double(hours).intValue()));
+//        chargeMachineOrderAcctPo.setRemark("浼樻儬鍒告姷鎵�," + couponNames);
+//        chargeMachineOrderAcctPo.setCommunityId(chargeMachineDtos.get(0).getCommunityId());
+//        chargeMachineOrderAcctPo.setEnergy("0");
+//        chargeMachineOrderAcctPo.setDurationPrice(reqJson.getString("durationPrice"));
+//
+//        chargeMachineOrderAcctV1InnerServiceSMOImpl.saveChargeMachineOrderAcct(chargeMachineOrderAcctPo);
 
-        chargeMachineOrderAcctV1InnerServiceSMOImpl.saveChargeMachineOrderAcct(chargeMachineOrderAcctPo);
-
-        return hours;
+//        return hours;
     }
 
     /**

--
Gitblit v1.8.0