Explorar el Código

加入充电规则功能

Your Name hace 3 años
padre
commit
6a27ce8fec

+ 10 - 0
java110-bean/src/main/java/com/java110/dto/chargeMachineOrder/NotifyChargeOrderDto.java

@@ -17,6 +17,8 @@ public class NotifyChargeOrderDto implements Serializable {
 
     private String reason;
 
+    private String energy;
+
 
     public String getOrderId() {
         return orderId;
@@ -65,4 +67,12 @@ public class NotifyChargeOrderDto implements Serializable {
     public void setReason(String reason) {
         this.reason = reason;
     }
+
+    public String getEnergy() {
+        return energy;
+    }
+
+    public void setEnergy(String energy) {
+        this.energy = energy;
+    }
 }

+ 10 - 0
java110-bean/src/main/java/com/java110/dto/chargeMachineOrderAcct/ChargeMachineOrderAcctDto.java

@@ -33,6 +33,8 @@ public class ChargeMachineOrderAcctDto extends PageDto implements Serializable {
 
     private String statusCd = "0";
 
+    private String durationPrice;
+
 
     public String getAmount() {
         return amount;
@@ -138,4 +140,12 @@ public class ChargeMachineOrderAcctDto extends PageDto implements Serializable {
     public void setPowerTime(String powerTime) {
         this.powerTime = powerTime;
     }
+
+    public String getDurationPrice() {
+        return durationPrice;
+    }
+
+    public void setDurationPrice(String durationPrice) {
+        this.durationPrice = durationPrice;
+    }
 }

+ 43 - 19
java110-bean/src/main/java/com/java110/dto/chargeRuleFee/ChargeRuleFeeDto.java

@@ -1,6 +1,7 @@
 package com.java110.dto.chargeRuleFee;
 
 import com.java110.dto.PageDto;
+
 import java.io.Serializable;
 import java.util.Date;
 
@@ -15,12 +16,14 @@ import java.util.Date;
 public class ChargeRuleFeeDto extends PageDto implements Serializable {
 
     private String maxEnergyPrice;
-private String durationPrice;
-private String crfId;
-private String remark;
-private String ruleId;
-private String minEnergyPrice;
-private String communityId;
+    private String durationPrice;
+    private String crfId;
+    private String remark;
+    private String ruleId;
+    private String minEnergyPrice;
+    private String communityId;
+
+    private String energy;
 
 
     private Date createTime;
@@ -31,43 +34,56 @@ private String communityId;
     public String getMaxEnergyPrice() {
         return maxEnergyPrice;
     }
-public void setMaxEnergyPrice(String maxEnergyPrice) {
+
+    public void setMaxEnergyPrice(String maxEnergyPrice) {
         this.maxEnergyPrice = maxEnergyPrice;
     }
-public String getDurationPrice() {
+
+    public String getDurationPrice() {
         return durationPrice;
     }
-public void setDurationPrice(String durationPrice) {
+
+    public void setDurationPrice(String durationPrice) {
         this.durationPrice = durationPrice;
     }
-public String getCrfId() {
+
+    public String getCrfId() {
         return crfId;
     }
-public void setCrfId(String crfId) {
+
+    public void setCrfId(String crfId) {
         this.crfId = crfId;
     }
-public String getRemark() {
+
+    public String getRemark() {
         return remark;
     }
-public void setRemark(String remark) {
+
+    public void setRemark(String remark) {
         this.remark = remark;
     }
-public String getRuleId() {
+
+    public String getRuleId() {
         return ruleId;
     }
-public void setRuleId(String ruleId) {
+
+    public void setRuleId(String ruleId) {
         this.ruleId = ruleId;
     }
-public String getMinEnergyPrice() {
+
+    public String getMinEnergyPrice() {
         return minEnergyPrice;
     }
-public void setMinEnergyPrice(String minEnergyPrice) {
+
+    public void setMinEnergyPrice(String minEnergyPrice) {
         this.minEnergyPrice = minEnergyPrice;
     }
-public String getCommunityId() {
+
+    public String getCommunityId() {
         return communityId;
     }
-public void setCommunityId(String communityId) {
+
+    public void setCommunityId(String communityId) {
         this.communityId = communityId;
     }
 
@@ -87,4 +103,12 @@ public void setCommunityId(String communityId) {
     public void setStatusCd(String statusCd) {
         this.statusCd = statusCd;
     }
+
+    public String getEnergy() {
+        return energy;
+    }
+
+    public void setEnergy(String energy) {
+        this.energy = energy;
+    }
 }

+ 8 - 0
java110-bean/src/main/java/com/java110/po/chargeMachineOrder/ChargeMachineOrderPo.java

@@ -45,6 +45,8 @@ public class ChargeMachineOrderPo implements Serializable {
     private String communityId;
     private String energy;
 
+    private String durationPrice;
+
     public String getAmount() {
         return amount;
     }
@@ -173,5 +175,11 @@ public class ChargeMachineOrderPo implements Serializable {
         this.energy = energy;
     }
 
+    public String getDurationPrice() {
+        return durationPrice;
+    }
 
+    public void setDurationPrice(String durationPrice) {
+        this.durationPrice = durationPrice;
+    }
 }

+ 8 - 0
java110-bean/src/main/java/com/java110/po/chargeMachineOrderAcct/ChargeMachineOrderAcctPo.java

@@ -40,6 +40,8 @@ public class ChargeMachineOrderAcctPo implements Serializable {
     private String communityId;
     private String energy;
 
+    private String durationPrice;
+
     public String getAmount() {
         return amount;
     }
@@ -128,5 +130,11 @@ public class ChargeMachineOrderAcctPo implements Serializable {
         this.energy = energy;
     }
 
+    public String getDurationPrice() {
+        return durationPrice;
+    }
 
+    public void setDurationPrice(String durationPrice) {
+        this.durationPrice = durationPrice;
+    }
 }

+ 8 - 3
java110-db/src/main/resources/mapper/common/ChargeMachineOrderAcctV1ServiceDaoImplMapper.xml

@@ -8,9 +8,9 @@
     <!-- 保存充电扣款信息 add by wuxw 2018-07-03 -->
     <insert id="saveChargeMachineOrderAcctInfo" parameterType="Map">
         insert into charge_machine_order_acct(
-        amount,cmoa_id,order_id,acct_detail_id,acct_id,start_time,remark,end_time,community_id,energy
+        amount,cmoa_id,order_id,acct_detail_id,acct_id,start_time,remark,end_time,community_id,energy,duration_price
         ) values (
-        #{amount},#{cmoaId},#{orderId},#{acctDetailId},#{acctId},#{startTime},#{remark},#{endTime},#{communityId},#{energy}
+        #{amount},#{cmoaId},#{orderId},#{acctDetailId},#{acctId},#{startTime},#{remark},#{endTime},#{communityId},#{energy},#{durationPrice}
         )
     </insert>
 
@@ -19,7 +19,8 @@
     <select id="getChargeMachineOrderAcctInfo" parameterType="Map" resultType="Map">
         select t.amount,t.cmoa_id,t.cmoa_id cmoaId,t.order_id,t.order_id orderId,t.acct_detail_id,t.acct_detail_id
         acctDetailId,t.acct_id,t.acct_id acctId,t.start_time,t.start_time startTime,t.remark,t.status_cd,t.status_cd
-        statusCd,t.end_time,t.end_time endTime,t.community_id,t.community_id communityId,t.energy,t.create_time createTime
+        statusCd,t.end_time,t.end_time endTime,t.community_id,t.community_id communityId,t.energy,t.duration_price durationPrice,
+        t.create_time createTime
         from charge_machine_order_acct t
         where 1 =1
         <if test="amount !=null and amount != ''">
@@ -55,6 +56,7 @@
         <if test="energy !=null and energy != ''">
             and t.energy= #{energy}
         </if>
+
         <if test="powerTime !=null and powerTime != ''">
             and t.start_time &lt; #{powerTime}
             and t.end_time &gt; #{powerTime}
@@ -97,6 +99,9 @@
         <if test="energy !=null and energy != ''">
             , t.energy= #{energy}
         </if>
+        <if test="durationPrice !=null and durationPrice != ''">
+            , t.duration_price= #{durationPrice}
+        </if>
         where 1=1
         <if test="cmoaId !=null and cmoaId != ''">
             and t.cmoa_id= #{cmoaId}

+ 9 - 4
java110-db/src/main/resources/mapper/common/ChargeMachineOrderV1ServiceDaoImplMapper.xml

@@ -8,9 +8,11 @@
     <!-- 保存充电桩订单信息 add by wuxw 2018-07-03 -->
     <insert id="saveChargeMachineOrderInfo" parameterType="Map">
         insert into charge_machine_order(
-        amount,order_id,remark,port_id,person_name,machine_id,acct_detail_id,person_id,charge_hours,start_time,end_time,state,person_tel,community_id,energy
+        amount,order_id,remark,port_id,person_name,machine_id,acct_detail_id,person_id,charge_hours,
+        start_time,end_time,state,person_tel,community_id,energy,duration_price
         ) values (
-        #{amount},#{orderId},#{remark},#{portId},#{personName},#{machineId},#{acctDetailId},#{personId},#{chargeHours},#{startTime},#{endTime},#{state},#{personTel},#{communityId},#{energy}
+        #{amount},#{orderId},#{remark},#{portId},#{personName},#{machineId},#{acctDetailId},#{personId},#{chargeHours},
+        #{startTime},#{endTime},#{state},#{personTel},#{communityId},#{energy},#{durationPrice}
         )
     </insert>
 
@@ -21,7 +23,7 @@
         portId,t.person_name,t.person_name personName,t.machine_id,t.machine_id
         machineId,t.acct_detail_id,t.acct_detail_id acctDetailId,t.person_id,t.person_id
         personId,t.charge_hours,t.charge_hours chargeHours,t.start_time,t.start_time startTime,t.end_time,t.end_time
-        endTime,t.state,t.person_tel,t.person_tel personTel,t.community_id,t.community_id communityId,t.energy,
+        endTime,t.state,t.person_tel,t.person_tel personTel,t.community_id,t.community_id communityId,t.energy,t.duration_price durationPrice,
         cm.machine_name machineName,cm.machine_code machineCode,cm.duration_price durationPrice,
         cmp.port_code portCode,cmp.port_name portName,td.`name` stateName,SUM(cmoa.amount) amount
         from charge_machine_order t
@@ -79,7 +81,7 @@
             and t.energy= #{energy}
         </if>
         GROUP BY t.order_id,t.remark,t.port_id,t.person_name,t.machine_id,t.acct_detail_id,t.person_id,
-        t.charge_hours,t.start_time,t.end_time,t.state,t.person_tel,t.community_id,t.energy,
+        t.charge_hours,t.start_time,t.end_time,t.state,t.person_tel,t.community_id,t.energy,t.duration_price,
         cm.machine_name ,cm.machine_code ,cm.duration_price ,
         cmp.port_code ,cmp.port_name ,td.`name`
         order by t.create_time desc
@@ -132,6 +134,9 @@
         <if test="energy !=null and energy != ''">
             , t.energy= #{energy}
         </if>
+        <if test="durationPrice !=null and durationPrice != ''">
+            , t.duration_price= #{durationPrice}
+        </if>
         where 1=1
         <if test="orderId !=null and orderId != ''">
             and t.order_id= #{orderId}

+ 4 - 0
java110-db/src/main/resources/mapper/common/ChargeRuleFeeV1ServiceDaoImplMapper.xml

@@ -43,6 +43,10 @@
         <if test="minEnergyPrice !=null and minEnergyPrice != ''">
             and t.min_energy_price= #{minEnergyPrice}
         </if>
+        <if test="energy !=null and energy != ''">
+            and t.min_energy_price &lt;= #{energy}
+            and t.max_energy_price &gt; #{energy}
+        </if>
         <if test="communityId !=null and communityId != ''">
             and t.community_id= #{communityId}
         </if>

+ 1 - 0
service-api/src/main/java/com/java110/api/controller/app/charge/NotifyDingDingChargeController.java

@@ -61,6 +61,7 @@ public class NotifyDingDingChargeController extends BaseController {
         notifyChargeOrderDto.setPortCode(port);
         notifyChargeOrderDto.setBodyParam(postInfo);
         notifyChargeOrderDto.setReason(param.getString("typeName"));
+        notifyChargeOrderDto.setEnergy(param.getString("energy"));
 
         ResultVo resultVo = null;
         resultVo = notifyChargeV1InnerServiceSMOImpl.finishCharge(notifyChargeOrderDto);

+ 39 - 10
service-common/src/main/java/com/java110/common/charge/ChargeCoreImpl.java

@@ -7,6 +7,7 @@ import com.java110.dto.chargeMachineFactory.ChargeMachineFactoryDto;
 import com.java110.dto.chargeMachineOrder.ChargeMachineOrderDto;
 import com.java110.dto.chargeMachineOrder.NotifyChargeOrderDto;
 import com.java110.dto.chargeMachinePort.ChargeMachinePortDto;
+import com.java110.dto.chargeRuleFee.ChargeRuleFeeDto;
 import com.java110.intf.acct.IAccountInnerServiceSMO;
 import com.java110.intf.common.*;
 import com.java110.po.accountDetail.AccountDetailPo;
@@ -53,6 +54,9 @@ public class ChargeCoreImpl implements IChargeCore {
     @Autowired
     private IChargeMachineOrderAcctV1InnerServiceSMO chargeMachineOrderAcctV1InnerServiceSMOImpl;
 
+    @Autowired
+    private IChargeRuleFeeV1InnerServiceSMO chargeRuleFeeV1InnerServiceSMOImpl;
+
 
     @Override
     public ResultVo startCharge(ChargeMachineDto chargeMachineDto, ChargeMachinePortDto chargeMachinePortDto, String chargeType, double duration, String orderId) {
@@ -96,8 +100,8 @@ public class ChargeCoreImpl implements IChargeCore {
         }
 
 
-        //订单退款
-        returnOrderMoney(chargeMachineDto, chargeMachinePortDto, "用户手工结束");
+        //订单退款 这里不操作,以设备 通知为主
+        // returnOrderMoney(chargeMachineDto, chargeMachinePortDto, "用户手工结束");
 
 
         return resultVo;
@@ -109,7 +113,7 @@ public class ChargeCoreImpl implements IChargeCore {
      * @param chargeMachineDto
      * @param chargeMachinePortDto
      */
-    private void returnOrderMoney(ChargeMachineDto chargeMachineDto, ChargeMachinePortDto chargeMachinePortDto, String remark) {
+    private void returnOrderMoney(ChargeMachineDto chargeMachineDto, ChargeMachinePortDto chargeMachinePortDto, String remark, String energy) {
         // 退款
         ChargeMachineOrderDto chargeMachineOrderDto = new ChargeMachineOrderDto();
         chargeMachineOrderDto.setMachineId(chargeMachineDto.getMachineId());
@@ -137,9 +141,31 @@ public class ChargeCoreImpl implements IChargeCore {
             usedHours = 0;
         }
 
-        BigDecimal freeHours = new BigDecimal(cHours).subtract(new BigDecimal(usedHours));
+        ChargeRuleFeeDto chargeRuleFeeDto = new ChargeRuleFeeDto();
+        chargeRuleFeeDto.setRuleId(chargeMachineDto.getRuleId());
+        chargeRuleFeeDto.setCommunityId(chargeMachineDto.getCommunityId());
+        chargeRuleFeeDto.setEnergy(energy);
+        List<ChargeRuleFeeDto> chargeRuleFeeDtos = chargeRuleFeeV1InnerServiceSMOImpl.queryChargeRuleFees(chargeRuleFeeDto);
+
+        if (chargeRuleFeeDtos == null || chargeRuleFeeDtos.size() < 1) {
+            chargeRuleFeeDto = new ChargeRuleFeeDto();
+            chargeRuleFeeDto.setRuleId(chargeMachineDto.getRuleId());
+            chargeRuleFeeDto.setCommunityId(chargeMachineDto.getCommunityId());
+            chargeRuleFeeDtos = chargeRuleFeeV1InnerServiceSMOImpl.queryChargeRuleFees(chargeRuleFeeDto);
+
+        }
+
+        if (chargeRuleFeeDtos == null || chargeRuleFeeDtos.size() < 1) {
+            return;
+        }
+
+        String durationPrice = chargeRuleFeeDtos.get(chargeRuleFeeDtos.size() - 1).getDurationPrice();
 
-        double returnMoney = freeHours.multiply(new BigDecimal(Double.parseDouble(chargeMachineDto.getDurationPrice()))).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
+        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);
+
+        double returnMoney = returnMoneyDec.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
 
 
         ChargeMachineOrderPo chargeMachineOrderPo = new ChargeMachineOrderPo();
@@ -150,6 +176,8 @@ public class ChargeCoreImpl implements IChargeCore {
         chargeMachineOrderPo.setAmount(amount.doubleValue() + "");
         chargeMachineOrderPo.setEndTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A));
         chargeMachineOrderPo.setCommunityId(chargeMachineOrderDtos.get(0).getCommunityId());
+        chargeMachineOrderPo.setDurationPrice(durationPrice);
+
         int flag = chargeMachineOrderV1InnerServiceSMOImpl.updateChargeMachineOrder(chargeMachineOrderPo);
         if (flag < 1) {
             throw new IllegalArgumentException("修改订单失败");
@@ -165,11 +193,11 @@ public class ChargeCoreImpl implements IChargeCore {
         accountDetailPo.setObjId(accountDtos.get(0).getObjId());
         accountDetailPo.setObjType(accountDtos.get(0).getObjType());
         accountDetailPo.setDetailId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_detailId));
-        if(returnMoney < 0) {
+        if (returnMoney < 0) {
             accountDetailPo.setAmount((-1 * returnMoney) + "");
             accountDetailPo.setRemark("充电扣款金额-" + chargeMachineOrderDtos.get(0).getOrderId());
             accountInnerServiceSMOImpl.withholdAccount(accountDetailPo);
-        }else{
+        } else {
             accountDetailPo.setAmount(returnMoney + "");
             accountDetailPo.setRemark("充电退回金额-" + chargeMachineOrderDtos.get(0).getOrderId());
             accountInnerServiceSMOImpl.prestoreAccount(accountDetailPo);
@@ -188,13 +216,14 @@ public class ChargeCoreImpl implements IChargeCore {
         chargeMachineOrderAcctPo.setStartTime(chargeMachineOrderDtos.get(0).getStartTime());
 
         chargeMachineOrderAcctPo.setEndTime(chargeMachineOrderDtos.get(0).getEndTime());
-        if(returnMoney < 0) {
+        if (returnMoney < 0) {
             chargeMachineOrderAcctPo.setRemark("账户扣款-" + remark);
-        }else{
+        } else {
             chargeMachineOrderAcctPo.setRemark("账户退款-" + remark);
         }
         chargeMachineOrderAcctPo.setCommunityId(chargeMachineOrderDtos.get(0).getCommunityId());
         chargeMachineOrderAcctPo.setEnergy("0");
+        chargeMachineOrderAcctPo.setDurationPrice(durationPrice);
 
         chargeMachineOrderAcctV1InnerServiceSMOImpl.saveChargeMachineOrderAcct(chargeMachineOrderAcctPo);
     }
@@ -258,7 +287,7 @@ public class ChargeCoreImpl implements IChargeCore {
         chargeMachinePortPo.setState(ChargeMachinePortDto.STATE_FREE);
         chargeMachinePortV1InnerServiceSMOImpl.updateChargeMachinePort(chargeMachinePortPo);
 
-        returnOrderMoney(chargeMachineDtos.get(0), chargeMachinePortDtos.get(0), notifyChargeOrderDto.getReason());
+        returnOrderMoney(chargeMachineDtos.get(0), chargeMachinePortDtos.get(0), notifyChargeOrderDto.getReason(), notifyChargeOrderDto.getEnergy());
 
         return new ResultVo(ResultVo.CODE_OK, "成功");
     }

+ 33 - 18
service-common/src/main/java/com/java110/common/cmd/chargeMachine/StartChargeCmd.java

@@ -14,6 +14,7 @@ import com.java110.dto.accountDetail.AccountDetailDto;
 import com.java110.dto.chargeMachine.ChargeMachineDto;
 import com.java110.dto.chargeMachineOrder.ChargeMachineOrderDto;
 import com.java110.dto.chargeMachinePort.ChargeMachinePortDto;
+import com.java110.dto.chargeRuleFee.ChargeRuleFeeDto;
 import com.java110.dto.couponPropertyPoolConfig.CouponPropertyPoolConfigDto;
 import com.java110.dto.couponPropertyUser.CouponPropertyUserDto;
 import com.java110.dto.user.UserDto;
@@ -21,10 +22,7 @@ import com.java110.intf.acct.IAccountInnerServiceSMO;
 import com.java110.intf.acct.ICouponPropertyPoolConfigV1InnerServiceSMO;
 import com.java110.intf.acct.ICouponPropertyUserDetailV1InnerServiceSMO;
 import com.java110.intf.acct.ICouponPropertyUserV1InnerServiceSMO;
-import com.java110.intf.common.IChargeMachineOrderAcctV1InnerServiceSMO;
-import com.java110.intf.common.IChargeMachineOrderV1InnerServiceSMO;
-import com.java110.intf.common.IChargeMachinePortV1InnerServiceSMO;
-import com.java110.intf.common.IChargeMachineV1InnerServiceSMO;
+import com.java110.intf.common.*;
 import com.java110.intf.user.IUserV1InnerServiceSMO;
 import com.java110.po.accountDetail.AccountDetailPo;
 import com.java110.po.chargeMachineOrder.ChargeMachineOrderPo;
@@ -81,6 +79,9 @@ public class StartChargeCmd extends Cmd {
     @Autowired
     private ICouponPropertyPoolConfigV1InnerServiceSMO couponPropertyPoolConfigV1InnerServiceSMOImpl;
 
+    @Autowired
+    private IChargeRuleFeeV1InnerServiceSMO chargeRuleFeeV1InnerServiceSMOImpl;
+
     @Override
     public void validate(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException, ParseException {
         Assert.hasKeyAndValue(reqJson, "communityId", "未包含小区信息");
@@ -115,7 +116,17 @@ public class StartChargeCmd extends Cmd {
             duration = 10;
         }
 
-        BigDecimal payMoneyDec = new BigDecimal(Double.parseDouble(chargeMachineDtos.get(0).getDurationPrice()));
+        ChargeRuleFeeDto chargeRuleFeeDto = new ChargeRuleFeeDto();
+        chargeRuleFeeDto.setRuleId(chargeMachineDtos.get(0).getRuleId());
+        chargeRuleFeeDto.setCommunityId(chargeMachineDtos.get(0).getCommunityId());
+        List<ChargeRuleFeeDto> chargeRuleFeeDtos = chargeRuleFeeV1InnerServiceSMOImpl.queryChargeRuleFees(chargeRuleFeeDto);
+
+        if (chargeRuleFeeDtos == null || chargeRuleFeeDtos.size() < 1) {
+            throw new CmdException("未设置充值收费");
+        }
+        reqJson.put("durationPrice",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();
 
@@ -186,6 +197,7 @@ public class StartChargeCmd extends Cmd {
             durationHours = 10;
         }
 
+
         ChargeMachinePortDto chargeMachinePortDto = new ChargeMachinePortDto();
         chargeMachinePortDto.setMachineId(reqJson.getString("machineId"));
         chargeMachinePortDto.setPortId(reqJson.getString("portId"));
@@ -219,6 +231,7 @@ public class StartChargeCmd extends Cmd {
         chargeMachineOrderPo.setPersonId(userId);
         chargeMachineOrderPo.setChargeHours(reqJson.getString("duration"));
         chargeMachineOrderPo.setStartTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A));
+        chargeMachineOrderPo.setDurationPrice(reqJson.getString("durationPrice"));
         Calendar calendar = Calendar.getInstance();
         if (duration == 999) {
             calendar.add(Calendar.HOUR, 10);
@@ -246,9 +259,9 @@ public class StartChargeCmd extends Cmd {
             couponDurationHours = withholdCoupon(reqJson, chargeMachineDtos, orderId);
         }
 
-        if(durationHours - couponDurationHours >0) {
+        if (durationHours - couponDurationHours > 0) {
             // todo 3.0 账户扣款
-            withholdAccount(reqJson, chargeMachineDtos, orderId,durationHours,couponDurationHours);
+            withholdAccount(reqJson, chargeMachineDtos, orderId, durationHours, couponDurationHours);
         }
 
         context.setResponseEntity(ResultVo.createResponseEntity(resultVo));
@@ -308,7 +321,7 @@ public class StartChargeCmd extends Cmd {
 
         ChargeMachineOrderAcctPo chargeMachineOrderAcctPo = new ChargeMachineOrderAcctPo();
         chargeMachineOrderAcctPo.setAcctDetailId("-1");
-        chargeMachineOrderAcctPo.setAmount(chargeMachineDtos.get(0).getDurationPrice());
+        chargeMachineOrderAcctPo.setAmount(reqJson.getString("durationPrice"));
         chargeMachineOrderAcctPo.setCmoaId(GenerateCodeFactory.getGeneratorId("11"));
         chargeMachineOrderAcctPo.setOrderId(orderId);
         chargeMachineOrderAcctPo.setAcctId(reqJson.getString("acctId"));
@@ -330,18 +343,18 @@ public class StartChargeCmd extends Cmd {
      * @param chargeMachineDtos
      * @param orderId
      */
-    private void withholdAccount(JSONObject reqJson, List<ChargeMachineDto> chargeMachineDtos, String orderId ,double durationHours,double couponDurationHours) {
+    private void withholdAccount(JSONObject reqJson, List<ChargeMachineDto> chargeMachineDtos, String orderId, double durationHours, double couponDurationHours) {
         AccountDto accountDto = new AccountDto();
         accountDto.setAcctId(reqJson.getString("acctId"));
         List<AccountDto> accountDtos = accountInnerServiceSMOImpl.queryAccounts(accountDto);
 
         double amount = 0.0;
-        BigDecimal durationPrice = new BigDecimal(Double.parseDouble(chargeMachineDtos.get(0).getDurationPrice()));
-        if(couponDurationHours >0) {
-            durationPrice = durationPrice.multiply(new BigDecimal(durationHours - couponDurationHours)).setScale(2,BigDecimal.ROUND_HALF_UP);
+        BigDecimal durationPrice = new BigDecimal(Double.parseDouble(reqJson.getString("durationPrice")));
+        if (couponDurationHours > 0) {
+            durationPrice = durationPrice.multiply(new BigDecimal(durationHours - couponDurationHours)).setScale(2, BigDecimal.ROUND_HALF_UP);
             amount = durationPrice.doubleValue();
-        }else{
-            durationPrice = durationPrice.multiply(new BigDecimal(durationHours)).setScale(2,BigDecimal.ROUND_HALF_UP);
+        } else {
+            durationPrice = durationPrice.multiply(new BigDecimal(durationHours)).setScale(2, BigDecimal.ROUND_HALF_UP);
             amount = durationPrice.doubleValue();
         }
 
@@ -349,25 +362,27 @@ public class StartChargeCmd extends Cmd {
         accountDetailPo.setAcctId(accountDtos.get(0).getAcctId());
         accountDetailPo.setObjId(accountDtos.get(0).getObjId());
         accountDetailPo.setObjType(accountDtos.get(0).getObjType());
-        accountDetailPo.setAmount(amount+"");
+        accountDetailPo.setAmount(amount + "");
         accountDetailPo.setDetailId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_detailId));
         accountInnerServiceSMOImpl.withholdAccount(accountDetailPo);
         ChargeMachineOrderAcctPo chargeMachineOrderAcctPo = new ChargeMachineOrderAcctPo();
         chargeMachineOrderAcctPo.setAcctDetailId(accountDetailPo.getDetailId());
-        chargeMachineOrderAcctPo.setAmount(amount+"");
+        chargeMachineOrderAcctPo.setAmount(amount + "");
 
         chargeMachineOrderAcctPo.setCmoaId(GenerateCodeFactory.getGeneratorId("11"));
         chargeMachineOrderAcctPo.setOrderId(orderId);
         chargeMachineOrderAcctPo.setAcctId(accountDtos.get(0).getAcctId());
-        if(couponDurationHours >0) {
+        if (couponDurationHours > 0) {
             chargeMachineOrderAcctPo.setStartTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A));
-        }else{
+        } else {
             chargeMachineOrderAcctPo.setStartTime(DateUtil.getAddHoursStringA(DateUtil.getCurrentDate(), new Double(Math.ceil(couponDurationHours)).intValue()));
         }
         chargeMachineOrderAcctPo.setEndTime(DateUtil.getAddHoursStringA(DateUtil.getCurrentDate(), new Double(Math.ceil(durationHours)).intValue()));
         chargeMachineOrderAcctPo.setRemark("账户扣款");
         chargeMachineOrderAcctPo.setCommunityId(chargeMachineDtos.get(0).getCommunityId());
         chargeMachineOrderAcctPo.setEnergy("0");
+        chargeMachineOrderAcctPo.setDurationPrice(reqJson.getString("durationPrice"));
+
 
         chargeMachineOrderAcctV1InnerServiceSMOImpl.saveChargeMachineOrderAcct(chargeMachineOrderAcctPo);
     }

+ 5 - 4
service-common/src/main/java/com/java110/common/cmd/chargeMachine/StopChargeCmd.java

@@ -113,10 +113,11 @@ public class StopChargeCmd extends Cmd {
 //        chargeMachineOrderPo.setOrderId(orderId);
 //        chargeMachineOrderV1InnerServiceSMOImpl.updateChargeMachineOrder(chargeMachineOrderPo);
 
-        ChargeMachinePortPo chargeMachinePortPo = new ChargeMachinePortPo();
-        chargeMachinePortPo.setPortId(reqJson.getString("portId"));
-        chargeMachinePortPo.setState(ChargeMachinePortDto.STATE_FREE);
-        chargeMachinePortV1InnerServiceSMOImpl.updateChargeMachinePort(chargeMachinePortPo);
+        //todo  这里不操作 以设备通知为主
+//        ChargeMachinePortPo chargeMachinePortPo = new ChargeMachinePortPo();
+//        chargeMachinePortPo.setPortId(reqJson.getString("portId"));
+//        chargeMachinePortPo.setState(ChargeMachinePortDto.STATE_FREE);
+//        chargeMachinePortV1InnerServiceSMOImpl.updateChargeMachinePort(chargeMachinePortPo);
 
         context.setResponseEntity(ResultVo.createResponseEntity(resultVo));
     }

+ 1 - 0
springboot/src/main/java/com/java110/boot/controller/app/charge/NotifyDingDingChargeController.java

@@ -67,6 +67,7 @@ public class NotifyDingDingChargeController extends BaseController {
         notifyChargeOrderDto.setPortCode(port);
         notifyChargeOrderDto.setBodyParam(postInfo);
         notifyChargeOrderDto.setReason(param.getString("typeName"));
+        notifyChargeOrderDto.setEnergy(param.getString("energy"));
 
         ResultVo resultVo = null;
         resultVo = notifyChargeV1InnerServiceSMOImpl.finishCharge(notifyChargeOrderDto);