diff --git a/xhpc-modules/xhpc-charging-station/src/main/java/com/xhpc/charging/station/service/XhpcChargingStationServiceImpl.java b/xhpc-modules/xhpc-charging-station/src/main/java/com/xhpc/charging/station/service/XhpcChargingStationServiceImpl.java index 7fa66b65..7efb6f15 100644 --- a/xhpc-modules/xhpc-charging-station/src/main/java/com/xhpc/charging/station/service/XhpcChargingStationServiceImpl.java +++ b/xhpc-modules/xhpc-charging-station/src/main/java/com/xhpc/charging/station/service/XhpcChargingStationServiceImpl.java @@ -564,8 +564,7 @@ public class XhpcChargingStationServiceImpl implements IXhpcChargingStationServi xhpcRateTime.setType(type); xhpcRateTime.setRateValue(rateValue); xhpcChargingStationMapper.addXhpcRateTime(xhpcRateTime); - sort = sort + 1; - return sort; + return sort++; } @Override diff --git a/xhpc-modules/xhpc-charging-station/src/main/resources/mapper/XhpcChargingStationMapper.xml b/xhpc-modules/xhpc-charging-station/src/main/resources/mapper/XhpcChargingStationMapper.xml index 857d5f56..3cea0236 100644 --- a/xhpc-modules/xhpc-charging-station/src/main/resources/mapper/XhpcChargingStationMapper.xml +++ b/xhpc-modules/xhpc-charging-station/src/main/resources/mapper/XhpcChargingStationMapper.xml @@ -621,7 +621,10 @@ remark, - rate_value + rate_value, + + + rate_model_id @@ -659,8 +662,12 @@ #{remark}, - #{rateValue} + #{rateValue}, + + #{rateModelId} + + diff --git a/xhpc-modules/xhpc-general/src/main/java/com/xhpc/general/service/XhpcSmsServiceImpl.java b/xhpc-modules/xhpc-general/src/main/java/com/xhpc/general/service/XhpcSmsServiceImpl.java index 2d96c6d0..3c9539bc 100644 --- a/xhpc-modules/xhpc-general/src/main/java/com/xhpc/general/service/XhpcSmsServiceImpl.java +++ b/xhpc-modules/xhpc-general/src/main/java/com/xhpc/general/service/XhpcSmsServiceImpl.java @@ -141,11 +141,10 @@ public class XhpcSmsServiceImpl implements IXhpcSmsService{ }else { xhpcSms.setStatus(1); } - xhpcSmsMapper.addXhpcSms(xhpcSms); } catch (Exception e) { xhpcSms.setStatus(3); - xhpcSmsMapper.addXhpcSms(xhpcSms); } + xhpcSmsMapper.addXhpcSms(xhpcSms); } public static void main(String[] args) { diff --git a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/api/HxpcPileOrderController.java b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/api/HxpcPileOrderController.java index 1acd925a..52176fad 100644 --- a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/api/HxpcPileOrderController.java +++ b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/api/HxpcPileOrderController.java @@ -5,6 +5,7 @@ import cn.hutool.core.date.DateUtil; import com.alibaba.fastjson.JSONObject; import com.rabbitmq.client.Channel; import com.rabbitmq.client.Connection; +import com.xhpc.common.api.SmsService; import com.xhpc.common.core.domain.R; import com.xhpc.common.core.web.controller.BaseController; import com.xhpc.common.data.redis.CacheOrderData; @@ -45,6 +46,9 @@ public class HxpcPileOrderController extends BaseController { @Autowired private IXhpcRealTimeOrderService xhpcRealTimeOrderService; + @Autowired + private SmsService smsService; + private static final Logger logger = LoggerFactory.getLogger(HxpcPileOrderController.class); /** @@ -186,13 +190,14 @@ public class HxpcPileOrderController extends BaseController { //解析订单编号 Date date = new Date(); //总金额 - BigDecimal money = new BigDecimal((cacheOrderData.getCost()/10000)); + BigDecimal bigDecimal = new BigDecimal(10000); + BigDecimal money = new BigDecimal(cacheOrderData.getCost()).divide(bigDecimal); int sumCost =cacheOrderData.getT1Cost()+cacheOrderData.getT2Cost()+cacheOrderData.getT3Cost()+cacheOrderData.getT4Cost(); int sumService = cacheOrderData.getCost()-sumCost; //总电费 - BigDecimal powerPrice = new BigDecimal((sumCost/10000)); + BigDecimal powerPrice = new BigDecimal(sumCost).divide(bigDecimal); //总服务费 - BigDecimal servicePrice = new BigDecimal((sumService/10000)); + BigDecimal servicePrice = new BigDecimal(sumService).divide(bigDecimal); //剩余的电费 BigDecimal surplusPowerPrice = powerPrice; //剩余的服务费 @@ -212,17 +217,18 @@ public class HxpcPileOrderController extends BaseController { hxpcChargeOrder.setEndTime(endTime); //充电时长 - Long tiem = endTime.getTime()-startTime.getTime(); + Long tiem = (endTime.getTime()-startTime.getTime())%1000; - if(tiem>60000){ - long mins = tiem % 60000; - long hours = tiem / 60000; + if(tiem>60){ + long mins = tiem % 60; + long hours = tiem / 60; hxpcChargeOrder.setChargingTime(hours+"时"+mins+"分"); }else{ - long mins = tiem % 60000; + long mins = tiem % 60; hxpcChargeOrder.setChargingTime(mins+"分"); } - hxpcChargeOrder.setChargingDegree(cacheOrderData.getTotalPowerQuantity().toString()); + BigDecimal divide = new BigDecimal(cacheOrderData.getTotalPowerQuantity()).divide(bigDecimal); + hxpcChargeOrder.setChargingDegree(divide.toString()); hxpcChargeOrder.setAmountCharged(money.toString()); String stopReason = cacheOrderData.getStopReason(); hxpcChargeOrder.setErroRemark(stopReason); @@ -381,9 +387,34 @@ public class HxpcPileOrderController extends BaseController { xhpcHistoryOrder.setReconciliationStatus(0); xhpcHistoryOrder.setCreateTime(date); - xhpcHistoryOrderService.insert(xhpcHistoryOrder); + + //扣除用户实际消费金额,添加消费记录 + Map user = hxpcChargeOrderService.getUserMessage(userId); + //剩余的钱 + BigDecimal balance1 =(BigDecimal) user.get("balance"); + BigDecimal subtract = balance1.subtract(actPrice); + int i = hxpcChargeOrderService.updateUserBalance(userId, subtract); + if(i==0){ + //扣钱失败 + xhpcHistoryOrder.setStatus(2); + xhpcHistoryOrder.setRemark("扣钱失败"); + }else{ + xhpcHistoryOrderService.insert(xhpcHistoryOrder); + addPileEndOrder(xhpcHistoryOrder,hxpcChargeOrder,cacheMap,orderNo); + //添加流水 + hxpcChargeOrderService.addUserAccountStatement(userId,actPrice.negate(),subtract,hxpcChargeOrder.getChargeOrderId(),3,date); + try{ + //发送短信 + if(user.get("phone") !=null){ + String content="【小华停止充电】尊敬的用户,你的爱车已停止充电,电量为:"+hxpcChargeOrder.getChargingDegree()+",总费用为:"+actPrice+"元,充电费用明细,请查询小华充电小程序,谢谢。"; + smsService.sendNotice(user.get("phone").toString(),content); + } + }catch (Exception e){ + logger.info("<<<<<<<<<<<<<<<<发送短信失败>>>>>>>>>>>>>>>>>"); + } + + } hxpcChargeOrderService.updateXhpcChargeOrder(hxpcChargeOrder); - addPileEndOrder(xhpcHistoryOrder,hxpcChargeOrder,cacheMap,orderNo); Map map = new HashMap<>(); map.put("code", 500); map.put("userId", userId); @@ -442,6 +473,12 @@ public class HxpcPileOrderController extends BaseController { if(cacheMap.get("rateModelId") !=null){ xhpcOrderRedisRecord.setRateModelId(cacheMap.get("rateModelId").toString()); } + if(cacheMap.get("lt5alerted") !=null){ + xhpcOrderRedisRecord.setLt5alerted(cacheMap.get("lt5alerted").toString()); + } + if(cacheMap.get("orderData") !=null){ + xhpcOrderRedisRecord.setOrderData(cacheMap.get("orderData").toString()); + } xhpcOrderRedisRecord.setCreateTime(date); hxpcChargeOrderService.addXhpcOrderRedisRecord(xhpcOrderRedisRecord); @@ -512,7 +549,8 @@ public class HxpcPileOrderController extends BaseController { BigDecimal chargingDegree = new BigDecimal(cacheRealtimeData.getChargingDegree()).divide(decimal); xhpcRealTimeOrder.setChargingDegree(chargingDegree); xhpcRealTimeOrder.setLossChargingDegree(divide); - xhpcRealTimeOrder.setAmountCharged(divide); + BigDecimal amountCharged = new BigDecimal(cacheRealtimeData.getAmountCharged()).divide(decimal); + xhpcRealTimeOrder.setAmountCharged(amountCharged); xhpcRealTimeOrder.setHardwareFault(cacheRealtimeData.getHardwareFault()); if("00".equals(cacheRealtimeData.getStatus())){ xhpcRealTimeOrder.setStatus(0); @@ -623,18 +661,26 @@ public class HxpcPileOrderController extends BaseController { public static void main(String[] args) { - long time = DateUtil.parse("2021-08-18 12:12:12").getTime(); +// long time = DateUtil.parse("2021-08-18 12:12:12").getTime(); +// +// long time1 = DateUtil.parse("2021-08-19 12:12:12").getTime(); +// String orderNo="order:69852145896547022108191121220010"; +// //解析订单编号 +// String s = orderNo.split("\\.")[0]; +// String s1 = s.split(":")[1]; +// String s2 = orderNo.substring(6); +// +// String s3 = s2.substring(0,16); +// System.out.println(s); +// System.out.println("<<<<"+s2); +// System.out.println("<<<<"+s3); - long time1 = DateUtil.parse("2021-08-19 12:12:12").getTime(); - String orderNo="order:69852145896547022108191121220010"; - //解析订单编号 - String s = orderNo.split("\\.")[0]; - String s1 = s.split(":")[1]; - String s2 = orderNo.substring(6); + int cacheRealtimeData =3000; + int mins = cacheRealtimeData % 60; + int hours = cacheRealtimeData / 60; + + System.out.println("<<<<"+mins); + System.out.println("<<<<"+hours); - String s3 = s2.substring(0,16); - System.out.println(s); - System.out.println("<<<<"+s2); - System.out.println("<<<<"+s3); } } diff --git a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/domain/XhpcOrderRedisRecord.java b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/domain/XhpcOrderRedisRecord.java index f6c1e98c..7038824f 100644 --- a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/domain/XhpcOrderRedisRecord.java +++ b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/domain/XhpcOrderRedisRecord.java @@ -44,7 +44,7 @@ public class XhpcOrderRedisRecord extends BaseEntity { */ private String startResult; /** - * 实时数据 + * 实时数据集合 */ private String realtimeDataList; /** @@ -60,6 +60,16 @@ public class XhpcOrderRedisRecord extends BaseEntity { */ private String delFlag; + /** + * + */ + private String lt5alerted; + + /** + * 实时数据 + */ + private String orderData; + public Long getOrderRedisRecordId() { return orderRedisRecordId; @@ -190,4 +200,24 @@ public class XhpcOrderRedisRecord extends BaseEntity { this.delFlag = delFlag; } + public String getLt5alerted() { + + return lt5alerted; + } + + public void setLt5alerted(String lt5alerted) { + + this.lt5alerted = lt5alerted; + } + + public String getOrderData() { + + return orderData; + } + + public void setOrderData(String orderData) { + + this.orderData = orderData; + } + } diff --git a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/mapper/HxpcChargeOrderMapper.java b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/mapper/HxpcChargeOrderMapper.java index c55e4d18..3555c608 100644 --- a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/mapper/HxpcChargeOrderMapper.java +++ b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/mapper/HxpcChargeOrderMapper.java @@ -6,6 +6,8 @@ import com.xhpc.order.domain.HxpcChargeOrder; import com.xhpc.order.domain.XhpcOrderRedisRecord; import org.apache.ibatis.annotations.Param; +import java.math.BigDecimal; +import java.util.Date; import java.util.List; import java.util.Map; @@ -39,6 +41,13 @@ public interface HxpcChargeOrderMapper { */ Map getUserMessage(@Param("userId")Long userId); + /** + * 修改余额 + * @param userId + * @param balance + * @return + */ + int updateUserBalance(@Param("userId")Long userId, @Param("balance")BigDecimal balance); /** * 判断用户是否在充电中 @@ -111,4 +120,17 @@ public interface HxpcChargeOrderMapper { */ void addXhpcOrderRedisRecord(XhpcOrderRedisRecord xhpcOrderRedisRecord); + + /** + * 添加流水 + * @param userId 用户id + * @param amount 流水金额 + * @param remainingSum 余额 + * @param chargeOrderId 充电订单id + * @param type 类型(1充值 2退款 3充电) + * @param date 时间 + * @return + */ + int addUserAccountStatement(@Param("userId") Long userId,@Param("amount") BigDecimal amount,@Param("remainingSum") BigDecimal remainingSum,@Param("chargeOrderId") Long chargeOrderId,@Param("type") Integer type,@Param("date") Date date); + } diff --git a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/mapper/XhpcRealTimeOrderMapper.java b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/mapper/XhpcRealTimeOrderMapper.java index eaa21653..3eca64ee 100644 --- a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/mapper/XhpcRealTimeOrderMapper.java +++ b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/mapper/XhpcRealTimeOrderMapper.java @@ -100,11 +100,11 @@ public interface XhpcRealTimeOrderMapper { /** * 删除之前的实时订单数据 */ - void deleteRealTimeOrder(@Param("chargingStationId")Long chargingOrderId); + void deleteRealTimeOrder(@Param("chargingOrderId")Long chargingOrderId); - void deleteChargeVoltage(@Param("chargingStationId")Long chargingOrderId); + void deleteChargeVoltage(@Param("chargingOrderId")Long chargingOrderId); - void deleteChargeOrderSoc(@Param("chargingStationId")Long chargingOrderId); + void deleteChargeOrderSoc(@Param("chargingOrderId")Long chargingOrderId); - void deleteChargeOrderCurrent(@Param("chargingStationId")Long chargingOrderId); + void deleteChargeOrderCurrent(@Param("chargingOrderId")Long chargingOrderId); } diff --git a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/IHxpcChargeOrderService.java b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/IHxpcChargeOrderService.java index 01729618..a38b5b22 100644 --- a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/IHxpcChargeOrderService.java +++ b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/IHxpcChargeOrderService.java @@ -6,6 +6,8 @@ import com.xhpc.order.domain.HxpcChargeOrder; import com.xhpc.order.domain.XhpcOrderRedisRecord; import org.apache.ibatis.annotations.Param; +import java.math.BigDecimal; +import java.util.Date; import java.util.List; import java.util.Map; @@ -82,6 +84,14 @@ public interface IHxpcChargeOrderService { */ Map getUserMessage(Long userId); + /** + * 修改余额 + * @param userId + * @param balance + * @return + */ + int updateUserBalance(Long userId, BigDecimal balance); + /** * 获取运营商信息 * @param chargingStationId @@ -95,4 +105,15 @@ public interface IHxpcChargeOrderService { */ void addXhpcOrderRedisRecord(XhpcOrderRedisRecord xhpcOrderRedisRecord); + /** + * 添加流水 + * @param userId 用户id + * @param amount 流水金额 + * @param remainingSum 余额 + * @param chargeOrderId 充电订单id + * @param type 类型(1充值 2退款 3充电) + * @param date 时间 + * @return + */ + int addUserAccountStatement(Long userId, BigDecimal amount, BigDecimal remainingSum, Long chargeOrderId, Integer type, Date date); } diff --git a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/impl/HxpcChargeOrderServiceImpl.java b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/impl/HxpcChargeOrderServiceImpl.java index 8857b716..bb41a06a 100644 --- a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/impl/HxpcChargeOrderServiceImpl.java +++ b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/impl/HxpcChargeOrderServiceImpl.java @@ -229,6 +229,11 @@ public class HxpcChargeOrderServiceImpl implements IHxpcChargeOrderService { return hxpcChargeOrderMapper.getUserMessage(userId); } + @Override + public int updateUserBalance(Long userId, BigDecimal balance) { + return hxpcChargeOrderMapper.updateUserBalance(userId,balance); + } + @Override public Map getOperatorMessage(Long chargingStationId) { return hxpcChargeOrderMapper.getOperatorMessage(chargingStationId); @@ -239,5 +244,10 @@ public class HxpcChargeOrderServiceImpl implements IHxpcChargeOrderService { hxpcChargeOrderMapper.addXhpcOrderRedisRecord(xhpcOrderRedisRecord); } + @Override + public int addUserAccountStatement(Long userId, BigDecimal amount, BigDecimal remainingSum, Long chargeOrderId, Integer type, Date date) { + return hxpcChargeOrderMapper.addUserAccountStatement(userId, amount, remainingSum, chargeOrderId, type, date); + } + } diff --git a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/impl/XhpcHistoryOrderServiceImpl.java b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/impl/XhpcHistoryOrderServiceImpl.java index 03117b52..97a83160 100644 --- a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/impl/XhpcHistoryOrderServiceImpl.java +++ b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/impl/XhpcHistoryOrderServiceImpl.java @@ -1,14 +1,17 @@ package com.xhpc.order.service.impl; import com.xhpc.common.core.web.domain.AjaxResult; +import com.xhpc.order.domain.HxpcChargeOrder; import com.xhpc.order.domain.XhpcHistoryOrder; import com.xhpc.order.mapper.XhpcHistoryOrderMapper; +import com.xhpc.order.service.IHxpcChargeOrderService; import com.xhpc.order.service.IXhpcHistoryOrderService; import org.apache.poi.ss.formula.functions.T; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.ArrayList; +import java.util.Date; import java.util.List; import java.util.Map; @@ -21,6 +24,10 @@ public class XhpcHistoryOrderServiceImpl implements IXhpcHistoryOrderService { @Autowired private XhpcHistoryOrderMapper xhpcHistoryOrderMapper; + + @Autowired + private IHxpcChargeOrderService xhpcChargeOrderService; + @Override public List> list(Long userId) { return xhpcHistoryOrderMapper.list(userId); @@ -49,5 +56,28 @@ public class XhpcHistoryOrderServiceImpl implements IXhpcHistoryOrderService { return xhpcHistoryOrderMapper.getListPage(phone,transactionNumber,status,chargingStationName,operatorId,source,startTime,endTime,userId,type,number); } + /** + * 历史信息费率时段 + */ + private void getRateTime(){ + String serialNumber=""; + //充电订单信息 + HxpcChargeOrder chargeOrder = xhpcChargeOrderService.getSerialNumberMessage(serialNumber); + + //累计充电时间、计费模型、开始时间、结束时间、已充金额 + int i = Integer.valueOf(chargeOrder.getChargingTime()).intValue(); + Long rateModelId = chargeOrder.getRateModelId(); + Date startTime = chargeOrder.getStartTime(); + Date endTime = chargeOrder.getEndTime(); + String amountCharged = chargeOrder.getAmountCharged(); + + //每分钟充电度数=累计时间/60 + //Double rate =(Double) i%60; + //获取费率时段集合 + + + } + + } diff --git a/xhpc-modules/xhpc-order/src/main/resources/mapper/XhpcChargeOrderMapper.xml b/xhpc-modules/xhpc-order/src/main/resources/mapper/XhpcChargeOrderMapper.xml index 9ebe7dc0..32cd40fe 100644 --- a/xhpc-modules/xhpc-order/src/main/resources/mapper/XhpcChargeOrderMapper.xml +++ b/xhpc-modules/xhpc-order/src/main/resources/mapper/XhpcChargeOrderMapper.xml @@ -90,6 +90,10 @@ from xhpc_app_user where del_flag=0 and app_user_id=#{userId} + + + update xhpc_app_user set balance=#{balance} where app_user_id=#{userId} + @@ -412,4 +416,8 @@ + + + INSERT INTO xhpc_user_account_statement(user_id,amount,remaining_sum,charge_order_id,type,create_time) values(#{userId},#{amount},#{remainingSum},#{chargeOrderId},#{type},#{date}) + \ No newline at end of file diff --git a/xhpc-modules/xhpc-order/src/main/resources/mapper/XhpcHistoryOrderMapper.xml b/xhpc-modules/xhpc-order/src/main/resources/mapper/XhpcHistoryOrderMapper.xml index e020914a..27d515d7 100644 --- a/xhpc-modules/xhpc-order/src/main/resources/mapper/XhpcHistoryOrderMapper.xml +++ b/xhpc-modules/xhpc-order/src/main/resources/mapper/XhpcHistoryOrderMapper.xml @@ -383,16 +383,16 @@ and ho.type=#{type} - and ho.start_time >= #{startTime} + and co.start_time >= #{startTime} - and ho.start_time <= #{startTime} + and co.start_time <= #{startTime} and ho.serial_number like concat('%', #{transactionNumber}, '%') - and co.serial_number like concat('%', #{transactionNumber}, '%') + and ct.name like concat('%', #{transactionNumber}, '%') and op.operator_id =#{operatorId}