Your Name лет назад: 3
Родитель
Сommit
590949a01d
15 измененных файлов с 479 добавлено и 256 удалено
  1. 8 0
      java110-bean/src/main/java/com/java110/dto/chargeMachineOrder/NotifyChargeOrderDto.java
  2. 3 9
      java110-interface/src/main/java/com/java110/intf/common/INotifyChargeV1InnerServiceSMO.java
  3. 1 0
      service-api/src/main/java/com/java110/api/configuration/ServiceConfiguration.java
  4. 8 29
      service-api/src/main/java/com/java110/api/controller/app/charge/NotifyDingDingChargeController.java
  5. 65 0
      service-api/src/main/java/com/java110/api/controller/app/charge/NotifyKeHangChargeController.java
  6. 78 144
      service-common/src/main/java/com/java110/common/charge/ChargeCoreImpl.java
  7. 2 2
      service-common/src/main/java/com/java110/common/charge/IChargeCore.java
  8. 106 0
      service-common/src/main/java/com/java110/common/charge/factory/kehang/KeHangChargeMachineFactoryAdapt.java
  9. 105 0
      service-common/src/main/java/com/java110/common/charge/factory/kehang/KeHangChargeUtils.java
  10. 19 13
      service-common/src/main/java/com/java110/common/cmd/chargeMachine/StartChargeCmd.java
  11. 2 5
      service-common/src/main/java/com/java110/common/smo/impl/NotifyChargeV1InnerServiceSMOImpl.java
  12. 2 0
      springboot/src/main/java/com/java110/boot/configuration/ServiceConfiguration.java
  13. 3 25
      springboot/src/main/java/com/java110/boot/controller/app/charge/NotifyCommonChargeController.java
  14. 10 29
      springboot/src/main/java/com/java110/boot/controller/app/charge/NotifyDingDingChargeController.java
  15. 67 0
      springboot/src/main/java/com/java110/boot/controller/app/charge/NotifyKeHangChargeController.java

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

@@ -15,6 +15,8 @@ public class NotifyChargeOrderDto implements Serializable {
 
     private String bodyParam;
 
+    private String reason;
+
 
     public String getOrderId() {
         return orderId;
@@ -56,5 +58,11 @@ public class NotifyChargeOrderDto implements Serializable {
         this.bodyParam = bodyParam;
     }
 
+    public String getReason() {
+        return reason;
+    }
 
+    public void setReason(String reason) {
+        this.reason = reason;
+    }
 }

+ 3 - 9
java110-interface/src/main/java/com/java110/intf/common/INotifyChargeV1InnerServiceSMO.java

@@ -18,6 +18,7 @@ package com.java110.intf.common;
 import com.java110.config.feign.FeignConfiguration;
 import com.java110.dto.chargeMachineOrder.NotifyChargeOrderDto;
 import com.java110.dto.meterWater.NotifyMeterWaterOrderDto;
+import com.java110.vo.ResultVo;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -44,7 +45,7 @@ public interface INotifyChargeV1InnerServiceSMO {
      * @return 小区下的小区楼记录数
      */
     @RequestMapping(value = "/finishCharge", method = RequestMethod.POST)
-    ResponseEntity<String> finishCharge(@RequestBody NotifyChargeOrderDto notifyChargeOrderDto);
+    ResultVo finishCharge(@RequestBody NotifyChargeOrderDto notifyChargeOrderDto);
 
     /**
      * 设备心跳
@@ -55,12 +56,5 @@ public interface INotifyChargeV1InnerServiceSMO {
     @RequestMapping(value = "/heartbeat", method = RequestMethod.POST)
     ResponseEntity<String> heartbeat(@RequestBody NotifyChargeOrderDto notifyChargeOrderDto);
 
-    /**
-     * 充电心跳
-     *
-     * @param notifyChargeOrderDto 数据对象分享
-     * @return 小区下的小区楼记录数
-     */
-    @RequestMapping(value = "/chargeHeartBeat", method = RequestMethod.POST)
-    ResponseEntity<String> chargeHeartBeat(@RequestBody NotifyChargeOrderDto notifyChargeOrderDto);
+
 }

+ 1 - 0
service-api/src/main/java/com/java110/api/configuration/ServiceConfiguration.java

@@ -103,6 +103,7 @@ public class ServiceConfiguration {
         exclusions.append("/app/chargeMachine.listChargeMachinePort,");//查询充电桩
         exclusions.append("/app/smartMeter/notify/*,");// 智能水电表通知放开
         exclusions.append("/equipments/*,");// 叮叮充电桩通知放开
+        exclusions.append("/app/charge/*,");// 通用充电桩通知放开
         exclusions.append("/app/reportInfoAnswer/queryReportInfoAnswerByOpenId");
 
 

+ 8 - 29
service-api/src/main/java/com/java110/api/controller/app/charge/NotifyDingDingChargeController.java

@@ -7,6 +7,7 @@ import com.java110.dto.chargeMachineOrder.NotifyChargeOrderDto;
 import com.java110.dto.meterWater.NotifyMeterWaterOrderDto;
 import com.java110.intf.common.INotifyChargeV1InnerServiceSMO;
 import com.java110.utils.cache.MappingCache;
+import com.java110.vo.ResultVo;
 import org.slf4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
@@ -60,8 +61,14 @@ public class NotifyDingDingChargeController extends BaseController {
         notifyChargeOrderDto.setPortCode(port);
         notifyChargeOrderDto.setBodyParam(postInfo);
 
-        return notifyChargeV1InnerServiceSMOImpl.finishCharge(notifyChargeOrderDto);
+        ResultVo resultVo = notifyChargeV1InnerServiceSMOImpl.finishCharge(notifyChargeOrderDto);
 
+        if (resultVo.getCode() == ResultVo.CODE_OK) {
+            resultVo.setCode(200);
+            resultVo.setMsg("success");
+        }
+
+        return ResultVo.createResponseEntity(resultVo);
     }
 
     /**
@@ -91,34 +98,6 @@ public class NotifyDingDingChargeController extends BaseController {
 
     }
 
-    /**
-     * <p>支付回调Api</p>
-     *
-     * @param request
-     * @throws Exception
-     */
-    @RequestMapping(path = "/{id}/{port}/event", method = RequestMethod.POST)
-    public ResponseEntity<String> chargeHeartbeat(
-            @PathVariable String id,
-            @PathVariable String port,
-            @RequestBody String postInfo,
-            HttpServletRequest request) {
-        if (!validateSign(request)) {
-            return new ResponseEntity<>("{\n" +
-                    "\"code\" : -1,\n" +
-                    "\"msg\" : \"鉴权失败\"\n" +
-                    "}", HttpStatus.OK);
-        }
-
-        NotifyChargeOrderDto notifyChargeOrderDto = new NotifyChargeOrderDto();
-        notifyChargeOrderDto.setMachineCode(id);
-        notifyChargeOrderDto.setPortCode(port);
-        notifyChargeOrderDto.setBodyParam(postInfo);
-
-        return notifyChargeV1InnerServiceSMOImpl.chargeHeartBeat(notifyChargeOrderDto);
-
-    }
-
     private boolean validateSign(HttpServletRequest request) {
         String appId = request.getParameter("appid");
         String timestamp = request.getParameter("timestamp");

+ 65 - 0
service-api/src/main/java/com/java110/api/controller/app/charge/NotifyKeHangChargeController.java

@@ -0,0 +1,65 @@
+package com.java110.api.controller.app.charge;
+
+import com.alibaba.fastjson.JSONObject;
+import com.java110.core.base.controller.BaseController;
+import com.java110.core.log.LoggerFactory;
+import com.java110.dto.chargeMachineOrder.NotifyChargeOrderDto;
+import com.java110.intf.common.INotifyChargeV1InnerServiceSMO;
+import com.java110.vo.ResultVo;
+import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.servlet.http.HttpServletRequest;
+
+@RestController
+@RequestMapping(path = "/app/charge/kehang")
+public class NotifyKeHangChargeController extends BaseController {
+
+    private final static Logger logger = LoggerFactory.getLogger(NotifyKeHangChargeController.class);
+
+
+    private static final String FINISH_CHARGE = "net.equip.charge.slow.async.notice.finish";
+
+    @Autowired
+    private INotifyChargeV1InnerServiceSMO notifyChargeV1InnerServiceSMOImpl;
+
+    /**
+     * <p>支付回调Api</p>
+     *
+     * @param request
+     * @throws Exception
+     */
+    @RequestMapping(path = "/notice", method = RequestMethod.POST)
+    public ResponseEntity<String> notice(
+            @RequestBody String postInfo,
+            HttpServletRequest request) {
+
+        String api = request.getHeader("api");
+
+        JSONObject reqJson = JSONObject.parseObject(postInfo);
+        if(FINISH_CHARGE.equals(api)){
+            NotifyChargeOrderDto notifyChargeOrderDto = new NotifyChargeOrderDto();
+            notifyChargeOrderDto.setMachineCode(reqJson.getString("equipCd"));
+            notifyChargeOrderDto.setPortCode(reqJson.getString("port"));
+            notifyChargeOrderDto.setBodyParam(postInfo);
+            notifyChargeOrderDto.setReason(reqJson.getString("reason"));
+            ResultVo resultVo = notifyChargeV1InnerServiceSMOImpl.finishCharge(notifyChargeOrderDto);
+
+            if (resultVo.getCode() != ResultVo.CODE_OK) {
+               return new ResponseEntity<>("FAIL",HttpStatus.OK);
+            }
+
+        }
+
+        return new ResponseEntity<>("SUCCESS",HttpStatus.OK);
+    }
+
+
+
+}

+ 78 - 144
service-common/src/main/java/com/java110/common/charge/ChargeCoreImpl.java

@@ -27,6 +27,7 @@ import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -54,6 +55,7 @@ public class ChargeCoreImpl implements IChargeCore {
     @Autowired
     private IChargeMachineOrderAcctV1InnerServiceSMO chargeMachineOrderAcctV1InnerServiceSMOImpl;
 
+
     @Override
     public ResultVo startCharge(ChargeMachineDto chargeMachineDto, ChargeMachinePortDto chargeMachinePortDto, String chargeType, double duration, String orderId) {
 
@@ -90,7 +92,71 @@ public class ChargeCoreImpl implements IChargeCore {
             throw new CmdException("厂家接口未实现");
         }
 
-        return chargeFactoryAdapt.stopCharge(chargeMachineDto, chargeMachinePortDto);
+        ResultVo resultVo = chargeFactoryAdapt.stopCharge(chargeMachineDto, chargeMachinePortDto);
+        if (resultVo.getCode() != ResultVo.CODE_OK) {
+            return resultVo;
+        }
+
+        //订单退款
+        returnOrderMoney(chargeMachineDto, chargeMachinePortDto, "用户手工结束");
+
+
+        return resultVo;
+    }
+
+    /**
+     * 订单退款
+     *
+     * @param chargeMachineDto
+     * @param chargeMachinePortDto
+     */
+    private void returnOrderMoney(ChargeMachineDto chargeMachineDto, ChargeMachinePortDto chargeMachinePortDto, String remark) {
+        // 退款
+        ChargeMachineOrderDto chargeMachineOrderDto = new ChargeMachineOrderDto();
+        chargeMachineOrderDto.setMachineId(chargeMachineDto.getMachineId());
+        chargeMachineOrderDto.setPortId(chargeMachinePortDto.getPortId());
+        chargeMachineOrderDto.setState(ChargeMachineOrderDto.STATE_DOING);
+        List<ChargeMachineOrderDto> chargeMachineOrderDtos = chargeMachineOrderV1InnerServiceSMOImpl.queryChargeMachineOrders(chargeMachineOrderDto);
+
+        if (chargeMachineOrderDtos == null || chargeMachineOrderDtos.size() < 1) {
+            return;
+        }
+
+        ChargeMachineOrderPo chargeMachineOrderPo = new ChargeMachineOrderPo();
+        chargeMachineOrderPo.setOrderId(chargeMachineOrderDtos.get(0).getOrderId());
+        chargeMachineOrderPo.setRemark(remark);
+        chargeMachineOrderPo.setState(ChargeMachineOrderDto.STATE_FINISH);
+        chargeMachineOrderPo.setCommunityId(chargeMachineOrderDtos.get(0).getCommunityId());
+        int flag = chargeMachineOrderV1InnerServiceSMOImpl.updateChargeMachineOrder(chargeMachineOrderPo);
+        if (flag < 1) {
+            throw new IllegalArgumentException("修改订单失败");
+        }
+        String chargeHours = chargeMachineOrderDtos.get(0).getChargeHours();
+        if ("999".equals(chargeHours)) {
+            chargeHours = "10";
+        }
+
+        double cHours = Double.parseDouble(chargeHours);
+
+        Date startTime = DateUtil.getDateFromStringA(chargeMachineOrderDtos.get(0).getStartTime());
+
+        double usedHours = Math.ceil((DateUtil.getCurrentDate().getTime() - startTime.getTime()) / (60 * 60 * 1000));
+
+        BigDecimal freeHours = new BigDecimal(cHours).subtract(new BigDecimal(usedHours));
+
+        double returnMoney = freeHours.multiply(new BigDecimal(Double.parseDouble(chargeMachineDto.getDurationPrice()))).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
+
+        AccountDto accountDto = new AccountDto();
+        accountDto.setAcctId(chargeMachineOrderDtos.get(0).getAcctDetailId());
+        List<AccountDto> accountDtos = accountInnerServiceSMOImpl.queryAccounts(accountDto);
+
+        AccountDetailPo accountDetailPo = new AccountDetailPo();
+        accountDetailPo.setAcctId(accountDtos.get(0).getAcctId());
+        accountDetailPo.setObjId(accountDtos.get(0).getObjId());
+        accountDetailPo.setObjType(accountDtos.get(0).getObjType());
+        accountDetailPo.setAmount(returnMoney + "");
+        accountDetailPo.setDetailId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_detailId));
+        accountInnerServiceSMOImpl.prestoreAccount(accountDetailPo);
     }
 
     @Override
@@ -109,8 +175,14 @@ public class ChargeCoreImpl implements IChargeCore {
         return chargeFactoryAdapt.getChargePortState(chargeMachineDto, chargeMachinePortDto);
     }
 
+    /**
+     * 完成充电
+     *
+     * @param notifyChargeOrderDto
+     * @return
+     */
     @Override
-    public ResponseEntity<String> finishCharge(NotifyChargeOrderDto notifyChargeOrderDto) {
+    public ResultVo finishCharge(NotifyChargeOrderDto notifyChargeOrderDto) {
 
         // todo 生成 充电订单
         ChargeMachineOrderPo chargeMachineOrderPo = new ChargeMachineOrderPo();
@@ -130,7 +202,7 @@ public class ChargeCoreImpl implements IChargeCore {
         ChargeMachinePortDto chargeMachinePortDto = new ChargeMachinePortDto();
         chargeMachinePortDto.setMachineId(chargeMachineDtos.get(0).getMachineId());
         chargeMachinePortDto.setPortCode(notifyChargeOrderDto.getPortCode());
-        chargeMachinePortDto.setState(ChargeMachinePortDto.STATE_FREE);
+        chargeMachinePortDto.setState(ChargeMachinePortDto.STATE_WORKING);
         List<ChargeMachinePortDto> chargeMachinePortDtos = chargeMachinePortV1InnerServiceSMOImpl.queryChargeMachinePorts(chargeMachinePortDto);
         Assert.listOnlyOne(chargeMachinePortDtos, "插槽忙线");
 
@@ -139,154 +211,16 @@ public class ChargeCoreImpl implements IChargeCore {
         chargeMachinePortPo.setState(ChargeMachinePortDto.STATE_FREE);
         chargeMachinePortV1InnerServiceSMOImpl.updateChargeMachinePort(chargeMachinePortPo);
 
-        return new ResponseEntity<>("{\n" +
-                "\"code\" : 200,\n" +
-                "\"msg\" : \"success\"\n" +
-                "}", HttpStatus.OK);
-    }
+        returnOrderMoney(chargeMachineDtos.get(0), chargeMachinePortDtos.get(0), notifyChargeOrderDto.getReason());
 
-    @Override
-    public ResponseEntity<String> heartbeat(NotifyChargeOrderDto notifyChargeOrderDto) {
-        return new ResponseEntity<>("{\n" +
-                "\"code\" : 200,\n" +
-                "\"msg\" : \"success\"\n" +
-                "}", HttpStatus.OK);
+        return new ResultVo(ResultVo.CODE_OK, "成功");
     }
 
     @Override
-    public ResponseEntity<String> chargeHeartBeat(NotifyChargeOrderDto notifyChargeOrderDto) {
-        ChargeMachineDto chargeMachineDto = new ChargeMachineDto();
-        chargeMachineDto.setMachineCode(notifyChargeOrderDto.getMachineCode());
-        List<ChargeMachineDto> chargeMachineDtos = chargeMachineV1InnerServiceSMOImpl.queryChargeMachines(chargeMachineDto);
-
-        Assert.listOnlyOne(chargeMachineDtos, "充电桩 不存在");
-
-        ChargeMachineFactoryDto chargeMachineFactoryDto = new ChargeMachineFactoryDto();
-        chargeMachineFactoryDto.setFactoryId(chargeMachineDtos.get(0).getImplBean());
-        List<ChargeMachineFactoryDto> chargeMachineFactoryDtos = chargeMachineFactoryV1InnerServiceSMOImpl.queryChargeMachineFactorys(chargeMachineFactoryDto);
-
-        Assert.listOnlyOne(chargeMachineFactoryDtos, "充电桩厂家不存在");
-
-        IChargeFactoryAdapt chargeFactoryAdapt = ApplicationContextFactory.getBean(chargeMachineFactoryDtos.get(0).getBeanImpl(), IChargeFactoryAdapt.class);
-        if (chargeFactoryAdapt == null) {
-            throw new CmdException("厂家接口未实现");
-        }
-
-        List<NotifyChargePortDto> portDtos = chargeFactoryAdapt.getChargeHeartBeatParam(notifyChargeOrderDto);
-
-        for (NotifyChargePortDto notifyChargePortDto : portDtos) {
-            doDealChargePort(notifyChargePortDto, notifyChargeOrderDto, chargeMachineDtos.get(0), chargeFactoryAdapt);
-        }
-
+    public ResponseEntity<String> heartbeat(NotifyChargeOrderDto notifyChargeOrderDto) {
         return new ResponseEntity<>("{\n" +
                 "\"code\" : 200,\n" +
                 "\"msg\" : \"success\"\n" +
                 "}", HttpStatus.OK);
     }
-
-    /**
-     * 处理充电 扣款问题
-     *
-     * @param notifyChargePortDto
-     * @param notifyChargeOrderDto
-     */
-    private void doDealChargePort(NotifyChargePortDto notifyChargePortDto,
-                                  NotifyChargeOrderDto notifyChargeOrderDto,
-                                  ChargeMachineDto chargeMachineDto,
-                                  IChargeFactoryAdapt chargeFactoryAdapt) {
-
-        String preEnergy = "0";
-        ChargeMachineOrderDto chargeMachineOrderDto = new ChargeMachineOrderDto();
-        chargeMachineOrderDto.setOrderId(notifyChargePortDto.getOrderId());
-        List<ChargeMachineOrderDto> orderDtos = chargeMachineOrderV1InnerServiceSMOImpl.queryChargeMachineOrders(chargeMachineOrderDto);
-
-        Assert.listOnlyOne(orderDtos, "订单不存在");
-        String state = ChargeMachineOrderDto.STATE_DOING;
-        if (preEnergy.equals(notifyChargePortDto.getEnergy())) {
-            state = ChargeMachineOrderDto.STATE_FINISH;
-        }
-        updateOrderState(notifyChargePortDto, state);
-
-        //todo 主动调用关闭
-        if (preEnergy.equals(notifyChargePortDto.getEnergy())) {
-            customStopCharge(notifyChargePortDto, chargeMachineDto, chargeFactoryAdapt, orderDtos);
-        }
-
-        // todo 1.0 查询上报时间是否已经 扣款,如果扣款过,那么更新 充电电量 后返回
-
-        String powerTime = DateUtil.getFormatTimeString(notifyChargePortDto.getPowerTime(), DateUtil.DATE_FORMATE_STRING_A);
-
-        ChargeMachineOrderAcctDto chargeMachineOrderAcctDto = new ChargeMachineOrderAcctDto();
-        chargeMachineOrderAcctDto.setOrderId(notifyChargeOrderDto.getOrderId());
-        chargeMachineOrderAcctDto.setPowerTime(powerTime);
-        List<ChargeMachineOrderAcctDto> chargeMachineOrderAcctDtos = chargeMachineOrderAcctV1InnerServiceSMOImpl.queryChargeMachineOrderAccts(chargeMachineOrderAcctDto);
-
-        if (chargeMachineOrderAcctDtos != null && chargeMachineOrderAcctDtos.size() > 0) {
-            return;
-        }
-
-        // todo 2.0 检查账户是否余额充足,如果余额不足,则 调用停止充电 将充电订单 修改成充电完成,并且修改备注
-
-        double price = Double.parseDouble(chargeMachineDto.getDurationPrice());
-
-        AccountDto accountDto = new AccountDto();
-        accountDto.setAcctId(orderDtos.get(0).getAcctDetailId());
-        accountDto.setAcctType(AccountDto.ACCT_TYPE_CASH);
-        List<AccountDto> accountDtos = accountInnerServiceSMOImpl.queryAccounts(accountDto);
-
-        if (accountDtos == null || accountDtos.size() < 1) {
-            throw new CmdException("请先充值,账户金额不足");
-        }
-
-        //todo 账户金额不足,无法支付小时费用,停止充电
-        if (Double.parseDouble(accountDtos.get(0).getAmount()) < price) {
-            customStopCharge(notifyChargePortDto, chargeMachineDto, chargeFactoryAdapt, orderDtos);
-            updateOrderState(notifyChargePortDto, ChargeMachineOrderDto.STATE_FINISH);
-            return;
-        }
-
-
-        // todo 3.0 账户扣款
-        AccountDetailPo accountDetailPo = new AccountDetailPo();
-        accountDetailPo.setAcctId(accountDtos.get(0).getAcctId());
-        accountDetailPo.setObjId(accountDtos.get(0).getObjId());
-        accountDetailPo.setObjType(accountDtos.get(0).getObjType());
-        accountDetailPo.setAmount(price + "");
-        accountDetailPo.setDetailId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_detailId));
-        accountInnerServiceSMOImpl.withholdAccount(accountDetailPo);
-
-        ChargeMachineOrderAcctPo chargeMachineOrderAcctPo = new ChargeMachineOrderAcctPo();
-        chargeMachineOrderAcctPo.setAcctDetailId(accountDetailPo.getDetailId());
-        chargeMachineOrderAcctPo.setAmount(price + "");
-        chargeMachineOrderAcctPo.setCmoaId(GenerateCodeFactory.getGeneratorId("11"));
-        chargeMachineOrderAcctPo.setOrderId(notifyChargePortDto.getOrderId());
-        chargeMachineOrderAcctPo.setAcctId(accountDtos.get(0).getAcctId());
-        chargeMachineOrderAcctPo.setStartTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A));
-        chargeMachineOrderAcctPo.setEndTime(DateUtil.getAddHoursStringA(DateUtil.getCurrentDate(), 1));
-        chargeMachineOrderAcctPo.setRemark("一小时定时扣款");
-        chargeMachineOrderAcctPo.setCommunityId(orderDtos.get(0).getCommunityId());
-        chargeMachineOrderAcctPo.setEnergy(notifyChargePortDto.getEnergy());
-
-        chargeMachineOrderAcctV1InnerServiceSMOImpl.saveChargeMachineOrderAcct(chargeMachineOrderAcctPo);
-
-    }
-
-    private void updateOrderState(NotifyChargePortDto notifyChargePortDto, String state) {
-        ChargeMachineOrderPo chargeMachineOrderPo = new ChargeMachineOrderPo();
-        chargeMachineOrderPo.setOrderId(notifyChargePortDto.getOrderId());
-        chargeMachineOrderPo.setEnergy(notifyChargePortDto.getEnergy());
-        chargeMachineOrderPo.setState(state);
-
-        chargeMachineOrderV1InnerServiceSMOImpl.updateChargeMachineOrder(chargeMachineOrderPo);
-    }
-
-    private void customStopCharge(NotifyChargePortDto notifyChargePortDto, ChargeMachineDto chargeMachineDto, IChargeFactoryAdapt chargeFactoryAdapt, List<ChargeMachineOrderDto> orderDtos) {
-        ChargeMachinePortDto chargeMachinePortDto = new ChargeMachinePortDto();
-        chargeMachinePortDto.setMachineId(orderDtos.get(0).getMachineId());
-        chargeMachinePortDto.setPortCode(notifyChargePortDto.getPortCode());
-        List<ChargeMachinePortDto> chargeMachinePortDtos = chargeMachinePortV1InnerServiceSMOImpl.queryChargeMachinePorts(chargeMachinePortDto);
-        if (chargeMachinePortDtos != null && chargeMachinePortDtos.size() > 0) {
-            chargeFactoryAdapt.stopCharge(chargeMachineDto, chargeMachinePortDtos.get(0));
-        }
-    }
 }

+ 2 - 2
service-common/src/main/java/com/java110/common/charge/IChargeCore.java

@@ -39,9 +39,9 @@ public interface IChargeCore {
      */
     ChargeMachinePortDto getChargePortState(ChargeMachineDto chargeMachineDto, ChargeMachinePortDto chargeMachinePortDto);
 
-    ResponseEntity<String> finishCharge(NotifyChargeOrderDto notifyChargeOrderDto);
+    ResultVo finishCharge(NotifyChargeOrderDto notifyChargeOrderDto);
 
     ResponseEntity<String> heartbeat(NotifyChargeOrderDto notifyChargeOrderDto);
 
-    ResponseEntity<String> chargeHeartBeat(NotifyChargeOrderDto notifyChargeOrderDto);
+
 }

+ 106 - 0
service-common/src/main/java/com/java110/common/charge/factory/kehang/KeHangChargeMachineFactoryAdapt.java

@@ -0,0 +1,106 @@
+package com.java110.common.charge.factory.kehang;
+
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.java110.common.charge.IChargeFactoryAdapt;
+import com.java110.common.charge.factory.dingding.DingdingChargeUtils;
+import com.java110.dto.chargeMachine.ChargeMachineDto;
+import com.java110.dto.chargeMachineOrder.NotifyChargeOrderDto;
+import com.java110.dto.chargeMachineOrder.NotifyChargePortDto;
+import com.java110.dto.chargeMachinePort.ChargeMachinePortDto;
+import com.java110.vo.ResultVo;
+import org.springframework.http.HttpMethod;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 科航充电桩
+ */
+@Service("keHangChargeMachineFactory")
+public class KeHangChargeMachineFactoryAdapt implements IChargeFactoryAdapt {
+    @Override
+    public ResultVo startCharge(ChargeMachineDto chargeMachineDto, ChargeMachinePortDto chargeMachinePortDto, String chargeType, double duration, String orderId) {
+        JSONObject body = new JSONObject();
+        body.put("version", "2.0");
+        body.put("time", duration * 60);
+        body.put("equipCd", chargeMachineDto.getMachineCode());
+        body.put("port", chargeMachinePortDto.getPortCode());
+        body.put("chargeId", orderId);
+        String paramOut = null;
+        try {
+            paramOut = DingdingChargeUtils.execute("net.equip.charge.slow.ru", body.toJSONString(), HttpMethod.GET);
+        } catch (Exception e) {
+            throw new IllegalArgumentException(e.getMessage());
+        }
+
+        JSONObject paramObj = JSONObject.parseObject(paramOut);
+        if (paramObj.getIntValue("code") != 1) {
+            throw new IllegalArgumentException(paramObj.getString("msg"));
+        }
+
+        return new ResultVo(ResultVo.CODE_OK, paramObj.getString("msg"));
+    }
+
+    @Override
+    public ResultVo stopCharge(ChargeMachineDto chargeMachineDto, ChargeMachinePortDto chargeMachinePortDto) {
+        JSONObject body = new JSONObject();
+        body.put("equipCd", chargeMachineDto.getMachineCode());
+        body.put("port", chargeMachinePortDto.getPortCode());
+        String paramOut = null;
+        try {
+            paramOut = DingdingChargeUtils.execute("net.equip.charge.slow.run.stop", body.toJSONString(), HttpMethod.GET);
+        } catch (Exception e) {
+            throw new IllegalArgumentException(e.getMessage());
+        }
+
+        JSONObject paramObj = JSONObject.parseObject(paramOut);
+        if (paramObj.getIntValue("code") != 1) {
+            throw new IllegalArgumentException(paramObj.getString("msg"));
+        }
+
+        return new ResultVo(ResultVo.CODE_OK, paramObj.getString("msg"));
+    }
+
+    @Override
+    public ChargeMachinePortDto getChargePortState(ChargeMachineDto chargeMachineDto, ChargeMachinePortDto chargeMachinePortDto) {
+        JSONObject body = new JSONObject();
+        body.put("equipCd", chargeMachineDto.getMachineCode());
+        String paramOut = null;
+        try {
+            paramOut = DingdingChargeUtils.execute("net.equip.charge.slow.port.query", body.toJSONString(), HttpMethod.GET);
+        } catch (Exception e) {
+            throw new IllegalArgumentException(e.getMessage());
+        }
+
+        JSONObject paramObj = JSONObject.parseObject(paramOut);
+        if (paramObj.getIntValue("code") != 1) {
+            throw new IllegalArgumentException(paramObj.getString("msg"));
+        }
+
+        JSONArray ports = paramObj.getJSONArray("ports");
+        String state = ChargeMachinePortDto.STATE_BREAKDOWN;
+        JSONObject port = null;
+        for(int portIndex = 0;portIndex < ports.size() ;portIndex++){
+            port = ports.getJSONObject(portIndex);
+            if(chargeMachinePortDto.getPortCode().equals(port.getString("port"))){
+                if("1".equals(port.getString("status"))){
+                    state = ChargeMachinePortDto.STATE_FREE;
+                } else if ("2".equals(port.getString("status"))) {
+                    state = ChargeMachinePortDto.STATE_WORKING;
+                }else{
+                    state = ChargeMachinePortDto.STATE_BREAKDOWN;
+                }
+            }
+        }
+
+        chargeMachinePortDto.setState(state);
+        return chargeMachinePortDto;
+    }
+
+    @Override
+    public List<NotifyChargePortDto> getChargeHeartBeatParam(NotifyChargeOrderDto notifyChargeOrderDto) {
+        return null;
+    }
+}

+ 105 - 0
service-common/src/main/java/com/java110/common/charge/factory/kehang/KeHangChargeUtils.java

@@ -0,0 +1,105 @@
+package com.java110.common.charge.factory.kehang;
+
+import com.alibaba.fastjson.JSONObject;
+import com.java110.core.annotation.Java110Synchronized;
+import com.java110.core.factory.AuthenticationFactory;
+import com.java110.core.log.LoggerFactory;
+import com.java110.utils.cache.JWTCache;
+import com.java110.utils.cache.MappingCache;
+import com.java110.utils.factory.ApplicationContextFactory;
+import com.java110.utils.util.DateUtil;
+import com.java110.utils.util.PayUtil;
+import com.java110.utils.util.StringUtil;
+import org.slf4j.Logger;
+import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.client.HttpStatusCodeException;
+import org.springframework.web.client.RestTemplate;
+
+import javax.crypto.Mac;
+import javax.crypto.SecretKey;
+import javax.crypto.spec.SecretKeySpec;
+import java.util.*;
+
+public class KeHangChargeUtils {
+
+    private static Logger logger = LoggerFactory.getLogger(KeHangChargeUtils.class);
+
+
+    public static final String KE_HANG_DOMAIN = "KE_HANG_CHARGE";
+
+
+    public static final String KE_HANG_APP_ID = "APP_ID";
+    public static final String KE_HANG_APP_SECURE = "APP_SECURE";
+
+    public static final String URL = "https://api.poseidong.com/api/gateway";
+
+
+
+    /**
+     * 请求充电桩 接口
+     * <p>
+     * MappingCache.getValue(DING_DING_DOMAIN, DING_DING_APP_ID),
+     * MappingCache.getValue(DING_DING_DOMAIN, DING_DING_APP_SECURE
+     *
+     * @param api
+     * @param body
+     * @param httpMethod
+     * @return
+     * @throws Exception
+     */
+    public static String execute(String api, String body, HttpMethod httpMethod) throws Exception {
+        RestTemplate outRestTemplate = ApplicationContextFactory.getBean("outRestTemplate", RestTemplate.class);
+        HttpHeaders httpHeaders = new HttpHeaders();
+        httpHeaders.add("app_id", MappingCache.getValue(KE_HANG_DOMAIN, KE_HANG_APP_ID));
+        httpHeaders.add("psd_entry", DateUtil.getCurrentDate().getTime() + "");
+
+        JSONObject bodyObj = JSONObject.parseObject(body);
+        bodyObj.put("api",api);
+        bodyObj.put("nonce", PayUtil.makeUUID(16));
+        bodyObj.put("sign",getSign(bodyObj));
+
+        HttpEntity httpEntity = new HttpEntity(body, httpHeaders);
+        ResponseEntity<String> response = null;
+        try {
+            response = outRestTemplate.exchange(URL, httpMethod, httpEntity, String.class);
+        } catch (HttpStatusCodeException e) {
+            logger.error("请求异常", e.getResponseBodyAsString());
+            throw new IllegalArgumentException(e.getResponseBodyAsString());
+        }
+
+        return response.getBody();
+    }
+
+
+
+
+    private static String getSign(JSONObject bodyObj) throws Exception {
+
+        SortedMap map = new TreeMap();
+
+        for (String key: bodyObj.keySet()) {
+            String vlaue = bodyObj.getString("key");
+            map.put(key, vlaue);
+        }
+
+        StringBuffer sb = new StringBuffer();
+        Set es = map.entrySet();
+        Iterator<?> it = es.iterator();
+        while (it.hasNext()) {
+            Map.Entry entry = (Map.Entry) it.next();
+            String k = (String) entry.getKey();
+            if (entry.getValue() != null || !"".equals(entry.getValue())) {
+                String v = String.valueOf(entry.getValue());
+                if (null != v && !"".equals(v) && !"sign".equals(k) && !"key".equals(k)) {
+                    sb.append(k + "=" + v + "&");
+                }
+            }
+        }
+        sb.append("key=" + MappingCache.getValue(KE_HANG_DOMAIN, KE_HANG_APP_SECURE));
+        String sign = AuthenticationFactory.md5(sb.toString()).toUpperCase();
+        return sign;
+    }
+}

+ 19 - 13
service-common/src/main/java/com/java110/common/cmd/chargeMachine/StartChargeCmd.java

@@ -238,16 +238,17 @@ public class StartChargeCmd extends Cmd {
         }
         resultVo.setData(orderId);
 
+        double couponDurationHours = 0.0;
         //扣款
-        if (!reqJson.containsKey("couponIds") || StringUtil.isEmpty(reqJson.getString("couponIds"))) {
-            // todo 3.0 账户扣款
-            withholdAccount(reqJson, chargeMachineDtos, orderId);
-            context.setResponseEntity(ResultVo.createResponseEntity(resultVo));
-            return;
+        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 账户扣款
+            withholdAccount(reqJson, chargeMachineDtos, orderId,durationHours,couponDurationHours);
+        }
 
         context.setResponseEntity(ResultVo.createResponseEntity(resultVo));
     }
@@ -259,7 +260,7 @@ public class StartChargeCmd extends Cmd {
      * @param chargeMachineDtos
      * @param orderId
      */
-    private void withholdCoupon(JSONObject reqJson, List<ChargeMachineDto> chargeMachineDtos, String orderId) {
+    private double withholdCoupon(JSONObject reqJson, List<ChargeMachineDto> chargeMachineDtos, String orderId) {
         int flag;
         double hours = 0;
         String couponNames = "";
@@ -317,6 +318,8 @@ public class StartChargeCmd extends Cmd {
         chargeMachineOrderAcctPo.setEnergy("0");
 
         chargeMachineOrderAcctV1InnerServiceSMOImpl.saveChargeMachineOrderAcct(chargeMachineOrderAcctPo);
+
+        return hours;
     }
 
     /**
@@ -326,7 +329,7 @@ public class StartChargeCmd extends Cmd {
      * @param chargeMachineDtos
      * @param orderId
      */
-    private void withholdAccount(JSONObject reqJson, List<ChargeMachineDto> chargeMachineDtos, String orderId) {
+    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);
@@ -338,16 +341,19 @@ public class StartChargeCmd extends Cmd {
         accountDetailPo.setAmount(chargeMachineDtos.get(0).getDurationPrice());
         accountDetailPo.setDetailId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_detailId));
         accountInnerServiceSMOImpl.withholdAccount(accountDetailPo);
-
         ChargeMachineOrderAcctPo chargeMachineOrderAcctPo = new ChargeMachineOrderAcctPo();
         chargeMachineOrderAcctPo.setAcctDetailId(accountDetailPo.getDetailId());
         chargeMachineOrderAcctPo.setAmount(chargeMachineDtos.get(0).getDurationPrice());
         chargeMachineOrderAcctPo.setCmoaId(GenerateCodeFactory.getGeneratorId("11"));
         chargeMachineOrderAcctPo.setOrderId(orderId);
         chargeMachineOrderAcctPo.setAcctId(accountDtos.get(0).getAcctId());
-        chargeMachineOrderAcctPo.setStartTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A));
-        chargeMachineOrderAcctPo.setEndTime(DateUtil.getAddHoursStringA(DateUtil.getCurrentDate(), 1));
-        chargeMachineOrderAcctPo.setRemark("一小时定时扣款");
+        if(couponDurationHours >0) {
+            chargeMachineOrderAcctPo.setStartTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A));
+        }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");
 

+ 2 - 5
service-common/src/main/java/com/java110/common/smo/impl/NotifyChargeV1InnerServiceSMOImpl.java

@@ -57,7 +57,7 @@ public class NotifyChargeV1InnerServiceSMOImpl extends BaseServiceSMO implements
 
 
     @Override
-    public ResponseEntity<String> finishCharge(@RequestBody NotifyChargeOrderDto notifyChargeOrderDto) {
+    public ResultVo finishCharge(@RequestBody NotifyChargeOrderDto notifyChargeOrderDto) {
 
        return chargeCoreImpl.finishCharge(notifyChargeOrderDto);
 
@@ -68,8 +68,5 @@ public class NotifyChargeV1InnerServiceSMOImpl extends BaseServiceSMO implements
         return chargeCoreImpl.heartbeat(notifyChargeOrderDto);
     }
 
-    @Override
-    public ResponseEntity<String> chargeHeartBeat(@RequestBody NotifyChargeOrderDto notifyChargeOrderDto) {
-        return chargeCoreImpl.chargeHeartBeat(notifyChargeOrderDto);
-    }
+
 }

+ 2 - 0
springboot/src/main/java/com/java110/boot/configuration/ServiceConfiguration.java

@@ -102,6 +102,8 @@ public class ServiceConfiguration {
 
         exclusions.append("/app/smartMeter/notify/*,");// 智能水电表通知放开
         exclusions.append("/equipments/*,");// 叮叮充电桩通知放开
+        exclusions.append("/app/charge/*,");// 通用充电桩通知放开
+
 
         exclusions.append("/app/reportInfoAnswer/queryReportInfoAnswerByOpenId");
 

+ 3 - 25
springboot/src/main/java/com/java110/boot/controller/app/charge/NotifyCommonChargeController.java

@@ -6,6 +6,7 @@ import com.java110.core.log.LoggerFactory;
 import com.java110.dto.chargeMachineOrder.NotifyChargeOrderDto;
 import com.java110.intf.common.INotifyChargeV1InnerServiceSMO;
 import com.java110.utils.cache.MappingCache;
+import com.java110.vo.ResultVo;
 import org.slf4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
@@ -52,8 +53,8 @@ public class NotifyCommonChargeController extends BaseController {
         notifyChargeOrderDto.setPortCode(port);
         notifyChargeOrderDto.setBodyParam(postInfo);
 
-        return notifyChargeV1InnerServiceSMOImpl.finishCharge(notifyChargeOrderDto);
-
+        ResultVo resultVo = notifyChargeV1InnerServiceSMOImpl.finishCharge(notifyChargeOrderDto);
+        return ResultVo.createResponseEntity(resultVo);
     }
 
     /**
@@ -75,27 +76,4 @@ public class NotifyCommonChargeController extends BaseController {
 
     }
 
-    /**
-     * <p>支付回调Api</p>
-     *
-     * @param request
-     * @throws Exception
-     */
-    @RequestMapping(path = "/{id}/{port}/event", method = RequestMethod.POST)
-    public ResponseEntity<String> chargeHeartbeat(
-            @PathVariable String id,
-            @PathVariable String port,
-            @RequestBody String postInfo,
-            HttpServletRequest request) {
-
-        NotifyChargeOrderDto notifyChargeOrderDto = new NotifyChargeOrderDto();
-        notifyChargeOrderDto.setMachineCode(id);
-        notifyChargeOrderDto.setPortCode(port);
-        notifyChargeOrderDto.setBodyParam(postInfo);
-
-        return notifyChargeV1InnerServiceSMOImpl.chargeHeartBeat(notifyChargeOrderDto);
-
-    }
-
-
 }

+ 10 - 29
springboot/src/main/java/com/java110/boot/controller/app/charge/NotifyDingDingChargeController.java

@@ -6,6 +6,7 @@ import com.java110.core.log.LoggerFactory;
 import com.java110.dto.chargeMachineOrder.NotifyChargeOrderDto;
 import com.java110.intf.common.INotifyChargeV1InnerServiceSMO;
 import com.java110.utils.cache.MappingCache;
+import com.java110.vo.ResultVo;
 import org.slf4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
@@ -57,9 +58,17 @@ public class NotifyDingDingChargeController extends BaseController {
         notifyChargeOrderDto.setMachineCode(id);
         notifyChargeOrderDto.setPortCode(port);
         notifyChargeOrderDto.setBodyParam(postInfo);
+        notifyChargeOrderDto.setReason(param.getString("typeName"));
 
-        return notifyChargeV1InnerServiceSMOImpl.finishCharge(notifyChargeOrderDto);
 
+        ResultVo resultVo = notifyChargeV1InnerServiceSMOImpl.finishCharge(notifyChargeOrderDto);
+
+        if (resultVo.getCode() == ResultVo.CODE_OK) {
+            resultVo.setCode(200);
+            resultVo.setMsg("success");
+        }
+
+        return ResultVo.createResponseEntity(resultVo);
     }
 
     /**
@@ -89,34 +98,6 @@ public class NotifyDingDingChargeController extends BaseController {
 
     }
 
-    /**
-     * <p>支付回调Api</p>
-     *
-     * @param request
-     * @throws Exception
-     */
-    @RequestMapping(path = "/{id}/{port}/event", method = RequestMethod.POST)
-    public ResponseEntity<String> chargeHeartbeat(
-            @PathVariable String id,
-            @PathVariable String port,
-            @RequestBody String postInfo,
-            HttpServletRequest request) {
-        if (!validateSign(request)) {
-            return new ResponseEntity<>("{\n" +
-                    "\"code\" : -1,\n" +
-                    "\"msg\" : \"鉴权失败\"\n" +
-                    "}", HttpStatus.OK);
-        }
-
-        NotifyChargeOrderDto notifyChargeOrderDto = new NotifyChargeOrderDto();
-        notifyChargeOrderDto.setMachineCode(id);
-        notifyChargeOrderDto.setPortCode(port);
-        notifyChargeOrderDto.setBodyParam(postInfo);
-
-        return notifyChargeV1InnerServiceSMOImpl.chargeHeartBeat(notifyChargeOrderDto);
-
-    }
-
     private boolean validateSign(HttpServletRequest request) {
         String appId = request.getParameter("appid");
         String timestamp = request.getParameter("timestamp");

+ 67 - 0
springboot/src/main/java/com/java110/boot/controller/app/charge/NotifyKeHangChargeController.java

@@ -0,0 +1,67 @@
+package com.java110.boot.controller.app.charge;
+
+import com.alibaba.fastjson.JSONObject;
+import com.java110.core.base.controller.BaseController;
+import com.java110.core.log.LoggerFactory;
+import com.java110.dto.chargeMachineOrder.NotifyChargeOrderDto;
+import com.java110.intf.common.INotifyChargeV1InnerServiceSMO;
+import com.java110.utils.cache.MappingCache;
+import com.java110.vo.ResultVo;
+import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+
+import javax.crypto.Mac;
+import javax.crypto.SecretKey;
+import javax.crypto.spec.SecretKeySpec;
+import javax.servlet.http.HttpServletRequest;
+import java.util.Base64;
+
+@RestController
+@RequestMapping(path = "/app/charge/kehang")
+public class NotifyKeHangChargeController extends BaseController {
+
+    private final static Logger logger = LoggerFactory.getLogger(NotifyKeHangChargeController.class);
+
+
+    private static final String FINISH_CHARGE = "net.equip.charge.slow.async.notice.finish";
+
+    @Autowired
+    private INotifyChargeV1InnerServiceSMO notifyChargeV1InnerServiceSMOImpl;
+
+    /**
+     * <p>支付回调Api</p>
+     *
+     * @param request
+     * @throws Exception
+     */
+    @RequestMapping(path = "/notice", method = RequestMethod.POST)
+    public ResponseEntity<String> notice(
+            @RequestBody String postInfo,
+            HttpServletRequest request) {
+
+        String api = request.getHeader("api");
+
+        JSONObject reqJson = JSONObject.parseObject(postInfo);
+        if(FINISH_CHARGE.equals(api)){
+            NotifyChargeOrderDto notifyChargeOrderDto = new NotifyChargeOrderDto();
+            notifyChargeOrderDto.setMachineCode(reqJson.getString("equipCd"));
+            notifyChargeOrderDto.setPortCode(reqJson.getString("port"));
+            notifyChargeOrderDto.setBodyParam(postInfo);
+            notifyChargeOrderDto.setReason(reqJson.getString("reason"));
+            ResultVo resultVo = notifyChargeV1InnerServiceSMOImpl.finishCharge(notifyChargeOrderDto);
+
+            if (resultVo.getCode() != ResultVo.CODE_OK) {
+               return new ResponseEntity<>("FAIL",HttpStatus.OK);
+            }
+
+        }
+
+        return new ResponseEntity<>("SUCCESS",HttpStatus.OK);
+    }
+
+
+
+}