From f1eb8b84e943ea9c3e56572855c5f63bbe9273d8 Mon Sep 17 00:00:00 2001
From: Your Name <you@example.com>
Date: 星期六, 11 三月 2023 00:09:59 +0800
Subject: [PATCH] 充电桩功能优化代码
---
service-common/src/main/java/com/java110/common/charge/ChargeCoreImpl.java | 112 +++++++++++++++++++++++++++++++++++++++++++++++++++++---
1 files changed, 106 insertions(+), 6 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 6465686..a5d29d0 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,17 +1,20 @@
package com.java110.common.charge;
import com.java110.common.smartMeter.ISmartMeterFactoryAdapt;
+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.chargeMachineOrder.NotifyChargePortDto;
+import com.java110.dto.chargeMachineOrderAcct.ChargeMachineOrderAcctDto;
import com.java110.dto.chargeMachinePort.ChargeMachinePortDto;
-import com.java110.intf.common.IChargeMachineFactoryV1InnerServiceSMO;
-import com.java110.intf.common.IChargeMachineOrderV1InnerServiceSMO;
-import com.java110.intf.common.IChargeMachinePortV1InnerServiceSMO;
-import com.java110.intf.common.IChargeMachineV1InnerServiceSMO;
+import com.java110.intf.acct.IAccountInnerServiceSMO;
+import com.java110.intf.common.*;
+import com.java110.po.accountDetail.AccountDetailPo;
import com.java110.po.chargeMachineOrder.ChargeMachineOrderPo;
+import com.java110.po.chargeMachineOrderAcct.ChargeMachineOrderAcctPo;
import com.java110.po.chargeMachinePort.ChargeMachinePortPo;
import com.java110.utils.exception.CmdException;
import com.java110.utils.factory.ApplicationContextFactory;
@@ -23,6 +26,7 @@
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
+import java.math.BigDecimal;
import java.util.List;
/**
@@ -30,6 +34,9 @@
*/
@Service
public class ChargeCoreImpl implements IChargeCore {
+
+ @Autowired
+ private IAccountInnerServiceSMO accountInnerServiceSMOImpl;
@Autowired
private IChargeMachineFactoryV1InnerServiceSMO chargeMachineFactoryV1InnerServiceSMOImpl;
@@ -42,6 +49,10 @@
@Autowired
private IChargeMachinePortV1InnerServiceSMO chargeMachinePortV1InnerServiceSMOImpl;
+
+
+ @Autowired
+ private IChargeMachineOrderAcctV1InnerServiceSMO chargeMachineOrderAcctV1InnerServiceSMOImpl;
@Override
public ResultVo startCharge(ChargeMachineDto chargeMachineDto, ChargeMachinePortDto chargeMachinePortDto, String chargeType, double duration, String orderId) {
@@ -164,7 +175,7 @@
List<NotifyChargePortDto> portDtos = chargeFactoryAdapt.getChargeHeartBeatParam(notifyChargeOrderDto);
for (NotifyChargePortDto notifyChargePortDto : portDtos) {
- doDealChargePort(notifyChargePortDto, notifyChargeOrderDto, chargeMachineDtos.get(0));
+ doDealChargePort(notifyChargePortDto, notifyChargeOrderDto, chargeMachineDtos.get(0), chargeFactoryAdapt);
}
return new ResponseEntity<>("{\n" +
@@ -179,14 +190,103 @@
* @param notifyChargePortDto
* @param notifyChargeOrderDto
*/
- private void doDealChargePort(NotifyChargePortDto notifyChargePortDto, NotifyChargeOrderDto notifyChargeOrderDto, ChargeMachineDto chargeMachineDto) {
+ 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 鏌ヨ涓婃姤鏃堕棿鏄惁宸茬粡 鎵f锛屽鏋滄墸娆捐繃锛岄偅涔堟洿鏂� 鍏呯數鐢甸噺 鍚庤繑鍥�
+ 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 璐︽埛鎵f
+ 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("涓�灏忔椂瀹氭椂鎵f");
+ 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));
+ }
}
}
--
Gitblit v1.8.0