From 01ffa57d161ab4029f5a39bd2e293bccc374abf7 Mon Sep 17 00:00:00 2001 From: yuyang Date: Wed, 20 Jul 2022 17:43:27 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E9=87=91=E9=A2=9D>300=20?= =?UTF-8?q?=E7=94=B5=E9=87=8F>250=20=E5=BC=80=E5=A7=8B=E6=97=B6=E9=97=B4?= =?UTF-8?q?=E7=BB=93=E6=9D=9F=E7=9B=B8=E6=AF=94=E6=9C=AC=E5=9C=B0=E6=97=B6?= =?UTF-8?q?=E9=97=B4=E4=B9=8B=E5=B7=AE=E5=A4=A7=E4=BA=8E2=E5=A4=A9=20?= =?UTF-8?q?=E7=BB=93=E6=9D=9F=E6=97=B6=E9=97=B4=E5=B0=8F=E4=BA=8E=E5=BC=80?= =?UTF-8?q?=E5=A7=8B=E6=97=B6=E9=97=B4=20=E7=9A=86=E4=B8=BA=E5=BC=82?= =?UTF-8?q?=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../order/api/XhpcPileOrderController.java | 47 ++++++++++++++++- .../XhpcRealTimeOrderController.java | 4 +- .../service/IXhpcRealTimeOrderService.java | 2 +- .../impl/XhpcHistoryOrderServiceImpl.java | 2 +- .../impl/XhpcRealTimeOrderServiceImpl.java | 52 +++++++++++-------- .../mapper/XhpcRealTimeOrderMapper.xml | 6 ++- 6 files changed, 84 insertions(+), 29 deletions(-) diff --git a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/api/XhpcPileOrderController.java b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/api/XhpcPileOrderController.java index 7baa94a3..9a993943 100644 --- a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/api/XhpcPileOrderController.java +++ b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/api/XhpcPileOrderController.java @@ -1,6 +1,7 @@ package com.xhpc.order.api; import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUnit; import cn.hutool.core.date.DateUtil; import com.alibaba.fastjson.JSONObject; import com.xhpc.common.api.UserTypeService; @@ -29,6 +30,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import static cn.hutool.core.date.DateUnit.*; import static com.xhpc.common.data.redis.StaticBeanUtil.REDIS; @RestController @@ -356,6 +358,15 @@ public class XhpcPileOrderController extends BaseController { } BigDecimal bigDecimal = new BigDecimal(10000); BigDecimal totalPowerQuantity = new BigDecimal(cacheOrderData.getTotalPowerQuantity()).divide(bigDecimal,2,BigDecimal.ROUND_HALF_UP); + if(totalPowerQuantity.compareTo(new BigDecimal(250)) > -1){ + logger.info("结算电量大于250度>>"+totalPowerQuantity+">>>orderNo:" + orderNo); + xhpcChargeOrder.setStatus(2); + xhpcChargeOrder.setChargingDegree(totalPowerQuantity); + xhpcChargeOrder.setUpdateTime(new Date()); + xhpcChargeOrder.setErroRemark("结算电量大于250度"); + xhpcChargeOrderService.updateXhpcChargeOrder(xhpcChargeOrder); + return R.fail(500,"无效订单号:"+orderNo); + } BigDecimal money = new BigDecimal(cacheOrderData.getCost()).divide(bigDecimal,2,BigDecimal.ROUND_HALF_UP); if(cacheOrderData.getTotalPowerQuantity()==0 || totalPowerQuantity.compareTo(new BigDecimal(0.1))<1 || money.compareTo(new BigDecimal(0.1))<1){ xhpcChargeOrder.setStatus(3); @@ -472,10 +483,11 @@ public class XhpcPileOrderController extends BaseController { }else{ money = powerPrice.add(servicePrice); } - if(money.compareTo(new BigDecimal(500)) > -1){ - logger.info("结算金额大于500>>"+money+">>>orderNo:" + orderNo); + if(money.compareTo(new BigDecimal(300)) > -1){ + logger.info("结算金额大于300>>"+money+">>>orderNo:" + orderNo); xhpcChargeOrder.setStatus(2); xhpcChargeOrder.setUpdateTime(new Date()); + xhpcChargeOrder.setErroRemark("充电金额大于300元"); xhpcChargeOrderService.updateXhpcChargeOrder(xhpcChargeOrder); return R.fail(500,"无效订单号:"+orderNo); } @@ -496,6 +508,37 @@ public class XhpcPileOrderController extends BaseController { DateTime endTime = DateUtil.parse(cacheOrderData.getEndTime()); xhpcChargeOrder.setStartTime(startTime); xhpcChargeOrder.setEndTime(endTime); + //开始时间不能小于今天2天 结束时间不能大于今天两天 + Date dateUtil = DateUtil.date(); + long betweenStart = DateUtil.between(startTime, dateUtil, DateUnit.DAY); + if(betweenStart>2){ + logger.info("开始时间大于本地时间2天>>>>>orderNo:" + orderNo); + xhpcChargeOrder.setStatus(2); + xhpcChargeOrder.setUpdateTime(new Date()); + xhpcChargeOrder.setErroRemark("开始时间大于本地时间2天"); + xhpcChargeOrderService.updateXhpcChargeOrder(xhpcChargeOrder); + return R.fail(500,"无效订单号:"+orderNo); + } + long betweenEnd = DateUtil.between(endTime, dateUtil, DateUnit.DAY); + if(betweenEnd>2){ + logger.info("结束时间大于本地时间2天>>>>>orderNo:" + orderNo); + xhpcChargeOrder.setStatus(2); + xhpcChargeOrder.setUpdateTime(new Date()); + xhpcChargeOrder.setErroRemark("结束时间大于本地时间2天"); + xhpcChargeOrderService.updateXhpcChargeOrder(xhpcChargeOrder); + return R.fail(500,"无效订单号:"+orderNo); + } + //结束时间小于开始时间 + if(startTime.getTime()-endTime.getTime()>0){ + logger.info("开始时间大于结束时间>>>>>orderNo:" + orderNo); + xhpcChargeOrder.setStatus(2); + xhpcChargeOrder.setUpdateTime(new Date()); + xhpcChargeOrder.setErroRemark("开始时间大于结束时间"); + xhpcChargeOrderService.updateXhpcChargeOrder(xhpcChargeOrder); + return R.fail(500,"无效订单号:"+orderNo); + } + + //充电时长 Long tiem = (endTime.getTime() - startTime.getTime()) / 1000; if (tiem > 3600) { diff --git a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/controller/XhpcRealTimeOrderController.java b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/controller/XhpcRealTimeOrderController.java index e31ad3b6..9894d06d 100644 --- a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/controller/XhpcRealTimeOrderController.java +++ b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/controller/XhpcRealTimeOrderController.java @@ -104,7 +104,7 @@ public class XhpcRealTimeOrderController extends BaseController { * @return */ @GetMapping("/getExamine") - public AjaxResult getExamine(@RequestParam Long chargingOrderId,@RequestParam BigDecimal powerPrice,@RequestParam BigDecimal servicePrice){ - return xhpcRealTimeOrderService.getExamine(chargingOrderId,powerPrice,servicePrice); + public AjaxResult getExamine(@RequestParam Long chargingOrderId,@RequestParam BigDecimal powerPrice,@RequestParam BigDecimal servicePrice,@RequestParam BigDecimal chargingDegree,@RequestParam String startTime ,@RequestParam String endTime){ + return xhpcRealTimeOrderService.getExamine(chargingOrderId,powerPrice,servicePrice,chargingDegree,startTime,endTime); } } diff --git a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/IXhpcRealTimeOrderService.java b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/IXhpcRealTimeOrderService.java index 67a6644c..7a53ab86 100644 --- a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/IXhpcRealTimeOrderService.java +++ b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/IXhpcRealTimeOrderService.java @@ -100,7 +100,7 @@ public interface IXhpcRealTimeOrderService { * @param chargingOrderId * @return */ - AjaxResult getExamine(Long chargingOrderId, BigDecimal powerPrice,BigDecimal servicePrice); + AjaxResult getExamine(Long chargingOrderId, BigDecimal powerPrice,BigDecimal servicePrice,BigDecimal chargingDegree,String startTime,String endTime); /** 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 a6a617f7..995e3f79 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 @@ -504,7 +504,7 @@ public class XhpcHistoryOrderServiceImpl extends BaseService implements IXhpcHis if(map !=null){ BigDecimal powerPriceTotal = new BigDecimal(map.get("powerPriceTotal").toString()); BigDecimal servicePriceTotal = new BigDecimal(map.get("servicePriceTotal").toString()); - xhpcRealTimeOrderService.getExamine(chargeOrderId,powerPriceTotal,servicePriceTotal); + xhpcRealTimeOrderService.getExamine(chargeOrderId,powerPriceTotal,servicePriceTotal,null,null,null); } } diff --git a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/impl/XhpcRealTimeOrderServiceImpl.java b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/impl/XhpcRealTimeOrderServiceImpl.java index ecb18af7..2a565cad 100644 --- a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/impl/XhpcRealTimeOrderServiceImpl.java +++ b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/impl/XhpcRealTimeOrderServiceImpl.java @@ -326,7 +326,7 @@ public class XhpcRealTimeOrderServiceImpl extends BaseService implements IXhpcRe @Override @Transactional - public AjaxResult getExamine(Long chargingOrderId, BigDecimal powerPrice, BigDecimal servicePrice) { + public AjaxResult getExamine(Long chargingOrderId, BigDecimal powerPrice, BigDecimal servicePrice,BigDecimal chargingDegree,String startTime,String endTime) { XhpcChargeOrder xhpcChargeOrder = xhpcChargeOrderService.getChargingOrderId(chargingOrderId); //查询是否已存在结算信息 XhpcHistoryOrder historyOrderById = xhpcHistoryOrderService.getHistoryOrderById(null, xhpcChargeOrder.getSerialNumber()); @@ -335,7 +335,6 @@ public class XhpcRealTimeOrderServiceImpl extends BaseService implements IXhpcRe xhpcChargeOrderService.updateXhpcChargeOrder(xhpcChargeOrder); return AjaxResult.success(); } - //总金额 BigDecimal money = powerPrice.add(servicePrice); //总服务费 servicePrice @@ -345,7 +344,6 @@ public class XhpcRealTimeOrderServiceImpl extends BaseService implements IXhpcRe //剩余的服务费 BigDecimal surplusServicePrice = servicePrice; - if(xhpcChargeOrder.getStatus()==1 || xhpcChargeOrder.getStatus()==3){ return AjaxResult.error("订单已结算,请联系技术人员解决"); } @@ -365,6 +363,12 @@ public class XhpcRealTimeOrderServiceImpl extends BaseService implements IXhpcRe Integer source = xhpcChargeOrder.getSource(); String tenantId = xhpcChargeOrder.getTenantId(); Map userMessage =new HashMap<>(); + if(startTime !=null && endTime!=null && null!=chargingDegree){ + xhpcChargeOrder.setStartTime(DateUtil.parse(startTime, "yyyy-MM-dd HH:mm:ss")); + xhpcChargeOrder.setEndTime(DateUtil.parse(endTime, "yyyy-MM-dd HH:mm:ss")); + xhpcChargeOrder.setChargingDegree(chargingDegree); + } + XhpcHistoryOrder xhpcHistoryOrder = new XhpcHistoryOrder(); if(xhpcChargeOrder.getStartTime() ==null || xhpcChargeOrder.getEndTime()==null || xhpcChargeOrder.getChargingDegree()==null){ @@ -376,29 +380,33 @@ public class XhpcRealTimeOrderServiceImpl extends BaseService implements IXhpcRe //获取 xhpcChargeOrder.setStartSoc(cacheOrderData.getStartSoc()+""); xhpcChargeOrder.setEndSoc(cacheOrderData.getEndSoc()+""); - DateTime startTime = DateUtil.parse(cacheOrderData.getStartTime()); - DateTime endTime = DateUtil.parse(cacheOrderData.getEndTime()); - xhpcChargeOrder.setStartTime(startTime); - xhpcChargeOrder.setEndTime(endTime); + if(startTime==null || endTime==null || null==chargingDegree){ + DateTime startTime1 = DateUtil.parse(cacheOrderData.getStartTime()); + DateTime endTime1 = DateUtil.parse(cacheOrderData.getEndTime()); + xhpcChargeOrder.setStartTime(startTime1); + xhpcChargeOrder.setEndTime(endTime1); + BigDecimal bigDecimal = new BigDecimal(10000); + BigDecimal divide = new BigDecimal(cacheOrderData.getTotalPowerQuantity()).divide(bigDecimal,2, BigDecimal.ROUND_HALF_UP); + xhpcChargeOrder.setChargingDegree(divide); + } if(cacheOrderData.getStopReason() !=null && !"".equals(cacheOrderData.getStopReason())){ xhpcChargeOrder.setType(cacheOrderData.getStopReason()); } - BigDecimal bigDecimal = new BigDecimal(10000); - BigDecimal divide = new BigDecimal(cacheOrderData.getTotalPowerQuantity()).divide(bigDecimal,2, BigDecimal.ROUND_HALF_UP); - xhpcChargeOrder.setChargingDegree(divide); }else{ - if(cacheMap.get("realtimeDataList") !=null){ - List list = (List) cacheMap.get("realtimeDataList"); - if(list !=null && list.size()>0){ - xhpcChargeOrder.setEndTime(DateUtil.parse(list.get(list.size()-1).getCreateTime(),"yyyy-MM-dd HH:mm:ss")); - xhpcChargeOrder.setStartTime(DateUtil.parse(list.get(0).getCreateTime(),"yyyy-MM-dd HH:mm:ss")); - BigDecimal bigDecimal = new BigDecimal(10000); - BigDecimal divide = new BigDecimal(list.get(list.size()-1).getChargingDegree()).divide(bigDecimal,2, BigDecimal.ROUND_HALF_UP); - xhpcChargeOrder.setChargingDegree(divide); - } - }else{ - if(cacheMap.get("startTime") !=null) { - xhpcChargeOrder.setStartTime(DateUtil.parse(cacheMap.get("startTime").toString(), "yyyy-MM-dd HH:mm:ss")); + if(startTime==null || endTime==null || null==chargingDegree){ + if(cacheMap.get("realtimeDataList") !=null){ + List list = (List) cacheMap.get("realtimeDataList"); + if(list !=null && list.size()>0){ + xhpcChargeOrder.setEndTime(DateUtil.parse(list.get(list.size()-1).getCreateTime(),"yyyy-MM-dd HH:mm:ss")); + xhpcChargeOrder.setStartTime(DateUtil.parse(list.get(0).getCreateTime(),"yyyy-MM-dd HH:mm:ss")); + BigDecimal bigDecimal = new BigDecimal(10000); + BigDecimal divide = new BigDecimal(list.get(list.size()-1).getChargingDegree()).divide(bigDecimal,2, BigDecimal.ROUND_HALF_UP); + xhpcChargeOrder.setChargingDegree(divide); + } + }else{ + if(cacheMap.get("startTime") !=null) { + xhpcChargeOrder.setEndTime(DateUtil.parse(cacheMap.get("startTime").toString(), "yyyy-MM-dd HH:mm:ss")); + } } } } diff --git a/xhpc-modules/xhpc-order/src/main/resources/mapper/XhpcRealTimeOrderMapper.xml b/xhpc-modules/xhpc-order/src/main/resources/mapper/XhpcRealTimeOrderMapper.xml index 0d06ec99..bf4de915 100644 --- a/xhpc-modules/xhpc-order/src/main/resources/mapper/XhpcRealTimeOrderMapper.xml +++ b/xhpc-modules/xhpc-order/src/main/resources/mapper/XhpcRealTimeOrderMapper.xml @@ -531,6 +531,8 @@ co.erro_remark as erroRemark, ro.amount_charged as amountCharged, co.Plate_num as plateNum, + co.start_time as startTime, + co.end_time as endTime, (SELECT phone FROM xhpc_app_user where app_user_id = co.user_id) as appUserPhone, (SELECT phone from xhpc_internet_user where internet_user_id = co.user_id) as internetUserPhone, (SELECT name from xhpc_internet_user where internet_user_id = co.user_id and co.source=1) as internetName, @@ -562,7 +564,9 @@ concat(0) as electricCurrent, co.status as status, co.create_time as createTime, - concat(0) as chargingDegree, + co.start_time as startTime, + co.end_time as endTime, + co.charging_degree as chargingDegree, concat(0) as chargingTime, co.source as source, co.internet_serial_number as internetSerialNumber,