订单金额>300 电量>250 开始时间结束相比本地时间之差大于2天 结束时间小于开始时间 皆为异常

This commit is contained in:
yuyang 2022-07-20 17:43:27 +08:00
parent 1f652d2a1a
commit 01ffa57d16
6 changed files with 84 additions and 29 deletions

View File

@ -1,6 +1,7 @@
package com.xhpc.order.api; package com.xhpc.order.api;
import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUnit;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.xhpc.common.api.UserTypeService; import com.xhpc.common.api.UserTypeService;
@ -29,6 +30,7 @@ import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import static cn.hutool.core.date.DateUnit.*;
import static com.xhpc.common.data.redis.StaticBeanUtil.REDIS; import static com.xhpc.common.data.redis.StaticBeanUtil.REDIS;
@RestController @RestController
@ -356,6 +358,15 @@ public class XhpcPileOrderController extends BaseController {
} }
BigDecimal bigDecimal = new BigDecimal(10000); BigDecimal bigDecimal = new BigDecimal(10000);
BigDecimal totalPowerQuantity = new BigDecimal(cacheOrderData.getTotalPowerQuantity()).divide(bigDecimal,2,BigDecimal.ROUND_HALF_UP); 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); 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){ if(cacheOrderData.getTotalPowerQuantity()==0 || totalPowerQuantity.compareTo(new BigDecimal(0.1))<1 || money.compareTo(new BigDecimal(0.1))<1){
xhpcChargeOrder.setStatus(3); xhpcChargeOrder.setStatus(3);
@ -472,10 +483,11 @@ public class XhpcPileOrderController extends BaseController {
}else{ }else{
money = powerPrice.add(servicePrice); money = powerPrice.add(servicePrice);
} }
if(money.compareTo(new BigDecimal(500)) > -1){ if(money.compareTo(new BigDecimal(300)) > -1){
logger.info("结算金额大于500>>"+money+">>>orderNo" + orderNo); logger.info("结算金额大于300>>"+money+">>>orderNo" + orderNo);
xhpcChargeOrder.setStatus(2); xhpcChargeOrder.setStatus(2);
xhpcChargeOrder.setUpdateTime(new Date()); xhpcChargeOrder.setUpdateTime(new Date());
xhpcChargeOrder.setErroRemark("充电金额大于300元");
xhpcChargeOrderService.updateXhpcChargeOrder(xhpcChargeOrder); xhpcChargeOrderService.updateXhpcChargeOrder(xhpcChargeOrder);
return R.fail(500,"无效订单号:"+orderNo); return R.fail(500,"无效订单号:"+orderNo);
} }
@ -496,6 +508,37 @@ public class XhpcPileOrderController extends BaseController {
DateTime endTime = DateUtil.parse(cacheOrderData.getEndTime()); DateTime endTime = DateUtil.parse(cacheOrderData.getEndTime());
xhpcChargeOrder.setStartTime(startTime); xhpcChargeOrder.setStartTime(startTime);
xhpcChargeOrder.setEndTime(endTime); 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; Long tiem = (endTime.getTime() - startTime.getTime()) / 1000;
if (tiem > 3600) { if (tiem > 3600) {

View File

@ -104,7 +104,7 @@ public class XhpcRealTimeOrderController extends BaseController {
* @return * @return
*/ */
@GetMapping("/getExamine") @GetMapping("/getExamine")
public AjaxResult getExamine(@RequestParam Long chargingOrderId,@RequestParam BigDecimal powerPrice,@RequestParam BigDecimal 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); return xhpcRealTimeOrderService.getExamine(chargingOrderId,powerPrice,servicePrice,chargingDegree,startTime,endTime);
} }
} }

View File

@ -100,7 +100,7 @@ public interface IXhpcRealTimeOrderService {
* @param chargingOrderId * @param chargingOrderId
* @return * @return
*/ */
AjaxResult getExamine(Long chargingOrderId, BigDecimal powerPrice,BigDecimal servicePrice); AjaxResult getExamine(Long chargingOrderId, BigDecimal powerPrice,BigDecimal servicePrice,BigDecimal chargingDegree,String startTime,String endTime);
/** /**

View File

@ -504,7 +504,7 @@ public class XhpcHistoryOrderServiceImpl extends BaseService implements IXhpcHis
if(map !=null){ if(map !=null){
BigDecimal powerPriceTotal = new BigDecimal(map.get("powerPriceTotal").toString()); BigDecimal powerPriceTotal = new BigDecimal(map.get("powerPriceTotal").toString());
BigDecimal servicePriceTotal = new BigDecimal(map.get("servicePriceTotal").toString()); BigDecimal servicePriceTotal = new BigDecimal(map.get("servicePriceTotal").toString());
xhpcRealTimeOrderService.getExamine(chargeOrderId,powerPriceTotal,servicePriceTotal); xhpcRealTimeOrderService.getExamine(chargeOrderId,powerPriceTotal,servicePriceTotal,null,null,null);
} }
} }

View File

@ -326,7 +326,7 @@ public class XhpcRealTimeOrderServiceImpl extends BaseService implements IXhpcRe
@Override @Override
@Transactional @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); XhpcChargeOrder xhpcChargeOrder = xhpcChargeOrderService.getChargingOrderId(chargingOrderId);
//查询是否已存在结算信息 //查询是否已存在结算信息
XhpcHistoryOrder historyOrderById = xhpcHistoryOrderService.getHistoryOrderById(null, xhpcChargeOrder.getSerialNumber()); XhpcHistoryOrder historyOrderById = xhpcHistoryOrderService.getHistoryOrderById(null, xhpcChargeOrder.getSerialNumber());
@ -335,7 +335,6 @@ public class XhpcRealTimeOrderServiceImpl extends BaseService implements IXhpcRe
xhpcChargeOrderService.updateXhpcChargeOrder(xhpcChargeOrder); xhpcChargeOrderService.updateXhpcChargeOrder(xhpcChargeOrder);
return AjaxResult.success(); return AjaxResult.success();
} }
//总金额 //总金额
BigDecimal money = powerPrice.add(servicePrice); BigDecimal money = powerPrice.add(servicePrice);
//总服务费 servicePrice //总服务费 servicePrice
@ -345,7 +344,6 @@ public class XhpcRealTimeOrderServiceImpl extends BaseService implements IXhpcRe
//剩余的服务费 //剩余的服务费
BigDecimal surplusServicePrice = servicePrice; BigDecimal surplusServicePrice = servicePrice;
if(xhpcChargeOrder.getStatus()==1 || xhpcChargeOrder.getStatus()==3){ if(xhpcChargeOrder.getStatus()==1 || xhpcChargeOrder.getStatus()==3){
return AjaxResult.error("订单已结算,请联系技术人员解决"); return AjaxResult.error("订单已结算,请联系技术人员解决");
} }
@ -365,6 +363,12 @@ public class XhpcRealTimeOrderServiceImpl extends BaseService implements IXhpcRe
Integer source = xhpcChargeOrder.getSource(); Integer source = xhpcChargeOrder.getSource();
String tenantId = xhpcChargeOrder.getTenantId(); String tenantId = xhpcChargeOrder.getTenantId();
Map<String, Object> userMessage =new HashMap<>(); Map<String, Object> 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(); XhpcHistoryOrder xhpcHistoryOrder = new XhpcHistoryOrder();
if(xhpcChargeOrder.getStartTime() ==null || xhpcChargeOrder.getEndTime()==null || xhpcChargeOrder.getChargingDegree()==null){ if(xhpcChargeOrder.getStartTime() ==null || xhpcChargeOrder.getEndTime()==null || xhpcChargeOrder.getChargingDegree()==null){
@ -376,17 +380,20 @@ public class XhpcRealTimeOrderServiceImpl extends BaseService implements IXhpcRe
//获取 //获取
xhpcChargeOrder.setStartSoc(cacheOrderData.getStartSoc()+""); xhpcChargeOrder.setStartSoc(cacheOrderData.getStartSoc()+"");
xhpcChargeOrder.setEndSoc(cacheOrderData.getEndSoc()+""); xhpcChargeOrder.setEndSoc(cacheOrderData.getEndSoc()+"");
DateTime startTime = DateUtil.parse(cacheOrderData.getStartTime()); if(startTime==null || endTime==null || null==chargingDegree){
DateTime endTime = DateUtil.parse(cacheOrderData.getEndTime()); DateTime startTime1 = DateUtil.parse(cacheOrderData.getStartTime());
xhpcChargeOrder.setStartTime(startTime); DateTime endTime1 = DateUtil.parse(cacheOrderData.getEndTime());
xhpcChargeOrder.setEndTime(endTime); xhpcChargeOrder.setStartTime(startTime1);
if(cacheOrderData.getStopReason() !=null && !"".equals(cacheOrderData.getStopReason())){ xhpcChargeOrder.setEndTime(endTime1);
xhpcChargeOrder.setType(cacheOrderData.getStopReason());
}
BigDecimal bigDecimal = new BigDecimal(10000); BigDecimal bigDecimal = new BigDecimal(10000);
BigDecimal divide = new BigDecimal(cacheOrderData.getTotalPowerQuantity()).divide(bigDecimal,2, BigDecimal.ROUND_HALF_UP); BigDecimal divide = new BigDecimal(cacheOrderData.getTotalPowerQuantity()).divide(bigDecimal,2, BigDecimal.ROUND_HALF_UP);
xhpcChargeOrder.setChargingDegree(divide); xhpcChargeOrder.setChargingDegree(divide);
}
if(cacheOrderData.getStopReason() !=null && !"".equals(cacheOrderData.getStopReason())){
xhpcChargeOrder.setType(cacheOrderData.getStopReason());
}
}else{ }else{
if(startTime==null || endTime==null || null==chargingDegree){
if(cacheMap.get("realtimeDataList") !=null){ if(cacheMap.get("realtimeDataList") !=null){
List<CacheRealtimeData> list = (List<CacheRealtimeData>) cacheMap.get("realtimeDataList"); List<CacheRealtimeData> list = (List<CacheRealtimeData>) cacheMap.get("realtimeDataList");
if(list !=null && list.size()>0){ if(list !=null && list.size()>0){
@ -398,7 +405,8 @@ public class XhpcRealTimeOrderServiceImpl extends BaseService implements IXhpcRe
} }
}else{ }else{
if(cacheMap.get("startTime") !=null) { if(cacheMap.get("startTime") !=null) {
xhpcChargeOrder.setStartTime(DateUtil.parse(cacheMap.get("startTime").toString(), "yyyy-MM-dd HH:mm:ss")); xhpcChargeOrder.setEndTime(DateUtil.parse(cacheMap.get("startTime").toString(), "yyyy-MM-dd HH:mm:ss"));
}
} }
} }
} }

View File

@ -531,6 +531,8 @@
co.erro_remark as erroRemark, co.erro_remark as erroRemark,
ro.amount_charged as amountCharged, ro.amount_charged as amountCharged,
co.Plate_num as plateNum, 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_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 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, (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, concat(0) as electricCurrent,
co.status as status, co.status as status,
co.create_time as createTime, 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, concat(0) as chargingTime,
co.source as source, co.source as source,
co.internet_serial_number as internetSerialNumber, co.internet_serial_number as internetSerialNumber,