From c95150946acef0c5ba4c86987e978dc95b52f02a Mon Sep 17 00:00:00 2001 From: yuyang Date: Thu, 5 May 2022 14:12:56 +0800 Subject: [PATCH] =?UTF-8?q?=E9=80=82=E9=85=8D=E5=B0=8F=E6=A1=94=E8=AE=A2?= =?UTF-8?q?=E5=8D=95=E7=BB=93=E7=AE=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../order/api/XhpcPileOrderController.java | 106 ++++++--- .../XhpcHistoryOrderController.java | 9 +- .../controller/XhpcStatisticsController.java | 17 +- .../mapper/XhpcStatisticsServiceMapper.java | 2 +- .../order/service/IXhpcStatisticsService.java | 5 +- .../impl/XhpcChargeOrderServiceImpl.java | 11 +- .../impl/XhpcHistoryOrderServiceImpl.java | 25 ++- .../impl/XhpcRealTimeOrderServiceImpl.java | 202 +++--------------- .../impl/XhpcStatisticsServiceImpl.java | 63 ++++-- .../mapper/XhpcHistoryOrderMapper.xml | 3 +- .../mapper/XhpcRealTimeOrderMapper.xml | 9 +- .../resources/mapper/XhpcStatisticsMapper.xml | 36 +++- .../controller/XhpcMechanismController.java | 2 +- .../controller/XhpcOperatorController.java | 2 + .../com/xhpc/user/domain/XhpcOperator.java | 12 +- .../com/xhpc/user/mapper/MechanismMapper.java | 12 +- .../service/impl/IMechanismServiceImpl.java | 101 +++++++-- .../service/impl/XhpcInvoiceServiceImpl.java | 49 +++++ .../main/resources/mapper/MechanismMapper.xml | 24 ++- .../resources/mapper/XhpcOperatorMapper.xml | 2 +- 20 files changed, 404 insertions(+), 288 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 8dcfbf6d..006ccf44 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 @@ -378,56 +378,108 @@ public class XhpcPileOrderController extends BaseController { BigDecimal t2powerFee =new BigDecimal(0); BigDecimal t3powerFee =new BigDecimal(0); BigDecimal t4powerFee =new BigDecimal(0); + BigDecimal t1serviceFee =new BigDecimal(0); + BigDecimal t2serviceFee =new BigDecimal(0); + BigDecimal t3serviceFee =new BigDecimal(0); + BigDecimal t4serviceFee =new BigDecimal(0); //费率计费模型 List rateModelList = xhpcChargeOrderService.getRateModelId(xhpcChargeOrder.getRateModelId()); logger.info("&&&&&&&&&&&&&&&&&&&&&&&&&&&&订单号:"+xhpcChargeOrder.getSerialNumber()+"&&&&&&&&&&&&&&费率模型id:"+xhpcChargeOrder.getRateModelId()); - for (XhpcRate xhpcRate:rateModelList) { if("00".equals(xhpcRate.getRateValue())){ t1powerFee = xhpcRate.getPowerFee(); + t1serviceFee =xhpcRate.getServiceFee(); } if("01".equals(xhpcRate.getRateValue())){ t2powerFee = xhpcRate.getPowerFee(); + t2serviceFee =xhpcRate.getServiceFee(); } if("02".equals(xhpcRate.getRateValue())){ t3powerFee = xhpcRate.getPowerFee(); + t3serviceFee = xhpcRate.getServiceFee(); } if("03".equals(xhpcRate.getRateValue())){ t4powerFee = xhpcRate.getPowerFee(); + t4serviceFee =xhpcRate.getServiceFee(); } } //总电费 BigDecimal powerPrice =new BigDecimal(0); Integer totalPower =0; - if(!"0".equals(cacheOrderData.getT1PowerQuantity().toString())){ - BigDecimal multiply = new BigDecimal(cacheOrderData.getT1PowerQuantity()).divide(bigDecimal).multiply(t1powerFee).setScale(2, BigDecimal.ROUND_HALF_UP); - totalPower =totalPower+cacheOrderData.getT1PowerQuantity(); - powerPrice=powerPrice.add(multiply); - } - if(!"0".equals(cacheOrderData.getT2PowerQuantity().toString())){ - BigDecimal multiply = new BigDecimal(cacheOrderData.getT2PowerQuantity()).divide(bigDecimal).multiply(t2powerFee).setScale(2, BigDecimal.ROUND_HALF_UP); - totalPower =totalPower+cacheOrderData.getT2PowerQuantity(); - powerPrice=powerPrice.add(multiply); - } - if(!"0".equals(cacheOrderData.getT3PowerQuantity().toString())){ - BigDecimal multiply = new BigDecimal(cacheOrderData.getT3PowerQuantity()).divide(bigDecimal).multiply(t3powerFee).setScale(2, BigDecimal.ROUND_HALF_UP); - totalPower =totalPower+cacheOrderData.getT3PowerQuantity(); - powerPrice=powerPrice.add(multiply); - } - if(!"0".equals(cacheOrderData.getT4PowerQuantity().toString())){ - BigDecimal multiply = new BigDecimal(cacheOrderData.getT4PowerQuantity()).divide(bigDecimal).multiply(t4powerFee).setScale(2, BigDecimal.ROUND_HALF_UP); - totalPower =totalPower+cacheOrderData.getT4PowerQuantity(); - powerPrice=powerPrice.add(multiply); - } - powerPrice =powerPrice.setScale(2,BigDecimal.ROUND_HALF_UP); + BigDecimal servicePrice =new BigDecimal(0); - //总服务费 - BigDecimal servicePrice = money.subtract(powerPrice); - //防止出现负数 - if(powerPrice.compareTo(money)>0){ - powerPrice =money; + if(xhpcChargeOrder.getUserId()==4 && xhpcChargeOrder.getSource()==1){ + //因桩有误差,电费和服务费重新计算 + if(!"0".equals(cacheOrderData.getT1PowerQuantity().toString())){ + totalPower =totalPower+cacheOrderData.getT1PowerQuantity(); + BigDecimal multiply1 = new BigDecimal(cacheOrderData.getT1PowerQuantity()).divide(bigDecimal).multiply(t1powerFee).setScale(2, BigDecimal.ROUND_HALF_UP); + BigDecimal multiply2 = new BigDecimal(cacheOrderData.getT1PowerQuantity()).divide(bigDecimal).multiply(t1serviceFee).setScale(2, BigDecimal.ROUND_HALF_UP); + powerPrice=powerPrice.add(multiply1); + servicePrice=servicePrice.add(multiply2); + } + if(!"0".equals(cacheOrderData.getT2PowerQuantity().toString())){ + totalPower =totalPower+cacheOrderData.getT2PowerQuantity(); + BigDecimal multiply1 = new BigDecimal(cacheOrderData.getT2PowerQuantity()).divide(bigDecimal).multiply(t2powerFee).setScale(2, BigDecimal.ROUND_HALF_UP); + BigDecimal multiply2 = new BigDecimal(cacheOrderData.getT2PowerQuantity()).divide(bigDecimal).multiply(t2serviceFee).setScale(2, BigDecimal.ROUND_HALF_UP); + powerPrice=powerPrice.add(multiply1); + servicePrice=servicePrice.add(multiply2); + } + if(!"0".equals(cacheOrderData.getT3PowerQuantity().toString())){ + totalPower =totalPower+cacheOrderData.getT3PowerQuantity(); + BigDecimal multiply1 = new BigDecimal(cacheOrderData.getT3PowerQuantity()).divide(bigDecimal).multiply(t3powerFee).setScale(2, BigDecimal.ROUND_HALF_UP); + BigDecimal multiply2 = new BigDecimal(cacheOrderData.getT3PowerQuantity()).divide(bigDecimal).multiply(t3serviceFee).setScale(2, BigDecimal.ROUND_HALF_UP); + powerPrice=powerPrice.add(multiply1); + servicePrice=servicePrice.add(multiply2); + } + if(!"0".equals(cacheOrderData.getT4PowerQuantity().toString())){ + totalPower =totalPower+cacheOrderData.getT4PowerQuantity(); + BigDecimal multiply1 = new BigDecimal(cacheOrderData.getT4PowerQuantity()).divide(bigDecimal).multiply(t4powerFee).setScale(2, BigDecimal.ROUND_HALF_UP); + BigDecimal multiply2 = new BigDecimal(cacheOrderData.getT4PowerQuantity()).divide(bigDecimal).multiply(t4serviceFee).setScale(2, BigDecimal.ROUND_HALF_UP); + powerPrice=powerPrice.add(multiply1); + servicePrice=servicePrice.add(multiply2); + } + powerPrice =powerPrice.setScale(2,BigDecimal.ROUND_HALF_UP); + //总服务费 + servicePrice =servicePrice.setScale(2,BigDecimal.ROUND_HALF_UP); + //防止出现负数 + if(powerPrice.add(servicePrice).compareTo(money)==-1){ + if(powerPrice.compareTo(money)==1){ + powerPrice =money; + servicePrice = money.subtract(powerPrice); + }else{ + servicePrice = money.subtract(powerPrice); + } + } + }else{ + if(!"0".equals(cacheOrderData.getT1PowerQuantity().toString())){ + BigDecimal multiply = new BigDecimal(cacheOrderData.getT1PowerQuantity()).divide(bigDecimal).multiply(t1powerFee).setScale(2, BigDecimal.ROUND_HALF_UP); + totalPower =totalPower+cacheOrderData.getT1PowerQuantity(); + powerPrice=powerPrice.add(multiply); + } + if(!"0".equals(cacheOrderData.getT2PowerQuantity().toString())){ + BigDecimal multiply = new BigDecimal(cacheOrderData.getT2PowerQuantity()).divide(bigDecimal).multiply(t2powerFee).setScale(2, BigDecimal.ROUND_HALF_UP); + totalPower =totalPower+cacheOrderData.getT2PowerQuantity(); + powerPrice=powerPrice.add(multiply); + } + if(!"0".equals(cacheOrderData.getT3PowerQuantity().toString())){ + BigDecimal multiply = new BigDecimal(cacheOrderData.getT3PowerQuantity()).divide(bigDecimal).multiply(t3powerFee).setScale(2, BigDecimal.ROUND_HALF_UP); + totalPower =totalPower+cacheOrderData.getT3PowerQuantity(); + powerPrice=powerPrice.add(multiply); + } + if(!"0".equals(cacheOrderData.getT4PowerQuantity().toString())){ + BigDecimal multiply = new BigDecimal(cacheOrderData.getT4PowerQuantity()).divide(bigDecimal).multiply(t4powerFee).setScale(2, BigDecimal.ROUND_HALF_UP); + totalPower =totalPower+cacheOrderData.getT4PowerQuantity(); + powerPrice=powerPrice.add(multiply); + } + powerPrice =powerPrice.setScale(2,BigDecimal.ROUND_HALF_UP); + //总服务费 servicePrice = money.subtract(powerPrice); + //防止出现负数 + if(powerPrice.compareTo(money)==1){ + powerPrice =money; + servicePrice = money.subtract(powerPrice); + } } //剩余的电费 BigDecimal surplusPowerPrice = powerPrice; diff --git a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/controller/XhpcHistoryOrderController.java b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/controller/XhpcHistoryOrderController.java index cbf54302..bc6d189b 100644 --- a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/controller/XhpcHistoryOrderController.java +++ b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/controller/XhpcHistoryOrderController.java @@ -577,7 +577,11 @@ public class XhpcHistoryOrderController extends BaseController { if(xhpc.getSource()==1){ xhpcSt.setInternetUserId(xhpc.getUserId()); } - List> reatTimeList = xhpcHistoryOrderService.getReatTimeList(DateUtil.formatTime(startTime), DateUtil.formatTime(endTime), rateModelId); + String endTime1 = DateUtil.formatTime(endTime); + if("00:00:00".equals(endTime1)){ + endTime1="23:59:59"; + } + List> reatTimeList = xhpcHistoryOrderService.getReatTimeList(DateUtil.formatTime(startTime), endTime1, rateModelId); Map map = reatTimeList.get(0); xhpcSt.setElecPriceEvcs(new BigDecimal(map.get("powerFee").toString())); xhpcSt.setServicePriceEvcs(new BigDecimal(map.get("serviceFee").toString())); @@ -858,6 +862,9 @@ public class XhpcHistoryOrderController extends BaseController { private Map getReatTimeList(String startTime,String endTime,Long rateModelId) { Map map =new HashMap<>(); + if("00:00:00".equals(endTime)){ + endTime="23:59:59"; + } List> reatTimeList = xhpcHistoryOrderService.getReatTimeList(startTime,endTime, rateModelId); for (int j = 0; j < reatTimeList.size(); j++) { Map map1 = reatTimeList.get(j); diff --git a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/controller/XhpcStatisticsController.java b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/controller/XhpcStatisticsController.java index 7e0b7beb..35bdccfa 100644 --- a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/controller/XhpcStatisticsController.java +++ b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/controller/XhpcStatisticsController.java @@ -173,14 +173,25 @@ public class XhpcStatisticsController extends BaseController { * @return */ @GetMapping("/getOperatorList") - public AjaxResult getOperatorList(HttpServletRequest request,Long operatorId, @RequestParam("userId") Long userId, @RequestParam("type")Integer type) + public AjaxResult getOperatorList(HttpServletRequest request,Long operatorId, @RequestParam("userId") Long userId, @RequestParam("type")Integer type,String tenantId) { if (type == null || type==3) { return AjaxResult.success(); } - return xhpcStatisticsService.getOperatorList(request,operatorId, userId, type); + return xhpcStatisticsService.getOperatorList(request,operatorId, userId, type,tenantId); } + /** + * 租户列表 + * @return + */ + @GetMapping("/getTenantList") + public AjaxResult getTenantList() + { + return xhpcStatisticsService.getTenantList(); + } + + /** * 流量方列表 * @param internetUserId 流量方id @@ -226,8 +237,6 @@ public class XhpcStatisticsController extends BaseController { /** * 订单来源(第三方、支付宝、微信、运营商),权限划分 * @param internetUserIds 订单来源集合 - * @param userId 用户id - * @param type 1 平台 2 运营商 3流量方 * @return */ @GetMapping("/getSumSourceList") diff --git a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/mapper/XhpcStatisticsServiceMapper.java b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/mapper/XhpcStatisticsServiceMapper.java index 74dab2ad..6e881192 100644 --- a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/mapper/XhpcStatisticsServiceMapper.java +++ b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/mapper/XhpcStatisticsServiceMapper.java @@ -117,7 +117,7 @@ public interface XhpcStatisticsServiceMapper { */ List> getOperatorList(@Param("operatorId")Long operatorId,@Param("userId")Long userId,@Param("type")Integer type,@Param("tenantId")String tenantId); - + List> getTenantList(@Param("userId")Long userId,@Param("type")Integer type); /** * 流量方列表 * @param internetUserId 流量方id diff --git a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/IXhpcStatisticsService.java b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/IXhpcStatisticsService.java index ee164156..37f3a906 100644 --- a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/IXhpcStatisticsService.java +++ b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/IXhpcStatisticsService.java @@ -124,7 +124,10 @@ public interface IXhpcStatisticsService { * @param type 1 平台 2 运营商 3流量方 * @return */ - AjaxResult getOperatorList(HttpServletRequest request,Long operatorId,Long userId,Integer type); + AjaxResult getOperatorList(HttpServletRequest request,Long operatorId,Long userId,Integer type,String tenantId); + + + AjaxResult getTenantList(); /** * 流量方列表 diff --git a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/impl/XhpcChargeOrderServiceImpl.java b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/impl/XhpcChargeOrderServiceImpl.java index 19c31d54..37248c98 100644 --- a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/impl/XhpcChargeOrderServiceImpl.java +++ b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/impl/XhpcChargeOrderServiceImpl.java @@ -652,7 +652,16 @@ public class XhpcChargeOrderServiceImpl extends BaseService implements IXhpcChar xhpcChargeOrderMapper.updateStatus(2,chargeOrderId); } }else{ - xhpcChargeOrderMapper.updateStatus(2,chargeOrderId); + + if(cacheRealtimeData.getCreateTime() !=null){ + long l = System.currentTimeMillis();//秒 + Date date = DateUtil.parse(cacheRealtimeData.getCreateTime(), "yyyy-MM-dd HH:mm:ss"); + if(l-date.getTime()>360000){ + xhpcChargeOrderMapper.updateStatus(2,chargeOrderId); + } + }else{ + xhpcChargeOrderMapper.updateStatus(2,chargeOrderId); + } } } } 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 0434da5d..b7cea1eb 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 @@ -445,12 +445,12 @@ public class XhpcHistoryOrderServiceImpl extends BaseService implements IXhpcHis Date updateTime = DateUtil.endOfDay(startTime2); Map map1 = getBigDecimal(totalPrice, powerPriceTotal, servicePriceTotal, chargeOrder, rateModelId, startTime2, updateTime, chargingDegree, list); //获取 - BigDecimal powerPriceTotal1 = new BigDecimal(map1.get("powerPriceTotal").toString()); - BigDecimal servicePriceTotal1 = new BigDecimal(map1.get("servicePriceTotal").toString()); + // BigDecimal powerPriceTotal1 = new BigDecimal(map1.get("powerPriceTotal").toString()); + // BigDecimal servicePriceTotal1 = new BigDecimal(map1.get("servicePriceTotal").toString()); //明天 DateTime tomorrow = DateUtil.offsetDay(startTime2, 1); Date startTime3 = DateUtil.beginOfDay(tomorrow); - Map map2 = getBigDecimal(totalPrice, powerPriceTotal1, servicePriceTotal1, chargeOrder, rateModelId, startTime3, updateTime2, chargingDegree, list); + Map map2 = getBigDecimal(totalPrice, powerPriceTotal, servicePriceTotal, chargeOrder, rateModelId, startTime3, updateTime2, chargingDegree, list); return map2; } } @@ -466,6 +466,8 @@ public class XhpcHistoryOrderServiceImpl extends BaseService implements IXhpcHis map1.put("chargingDegree", chargeOrder.getChargingDegree()); map1.put("actPrice", totalPrice); list.add(map1); + map.put("powerPriceTotal", 0); + map.put("servicePriceTotal", 0); map.put("list", list);//数据列表 return map; } @@ -482,13 +484,19 @@ public class XhpcHistoryOrderServiceImpl extends BaseService implements IXhpcHis map1.put("actPrice", totalPrice); list.add(map1); map.put("list", list);//数据列表 + map.put("powerPriceTotal", 0); + map.put("servicePriceTotal", 0); return map; } //每分钟多少度 BigDecimal degree = chargingDegree.divide(decimal, 2, BigDecimal.ROUND_HALF_UP); + //获取费率时间段 String startTime = DateUtil.formatTime(startTime2); String endTime = DateUtil.formatTime(updateTime2); + if("00:00:00".equals(endTime)){ + endTime="23:59:59"; + } List> reatTimeList = getReatTimeList(startTime, endTime, rateModelId); if (reatTimeList != null && reatTimeList.size() > 0) { Map map1 = new HashMap<>(); @@ -504,6 +512,8 @@ public class XhpcHistoryOrderServiceImpl extends BaseService implements IXhpcHis map1.put("chargingDegree", chargeOrder.getChargingDegree()); map1.put("actPrice", totalPrice); list.add(map1); + powerPriceTotal =powerPriceTotal.add(powerFee.multiply(degree).setScale(2, BigDecimal.ROUND_HALF_UP)); + servicePriceTotal =servicePriceTotal.add(servicePrice.multiply(chargingDegree).setScale(2, BigDecimal.ROUND_HALF_UP)); } else { for (int i = 0; i < reatTimeList.size(); i++) { Map objectMap = reatTimeList.get(i); @@ -528,7 +538,8 @@ public class XhpcHistoryOrderServiceImpl extends BaseService implements IXhpcHis } } } - + map.put("powerPriceTotal", powerPriceTotal); + map.put("servicePriceTotal", servicePriceTotal); map.put("list", list);//数据列表 //map.put("chargingTimeTotal",chargeOrder.getChargingTime());//总时长 //map.put("powerPriceTotal",powerPriceTotal);//总电费单价(元/度) @@ -567,6 +578,9 @@ public class XhpcHistoryOrderServiceImpl extends BaseService implements IXhpcHis //获取费率时间段 String startTime = DateUtil.formatTime(startTime2); String endTime = DateUtil.formatTime(updateTime2); + if("00:00:00".equals(endTime)){ + endTime="23:59:59"; + } List> reatTimeList = getReatTimeList(startTime, endTime, rateModelId); if (reatTimeList != null && reatTimeList.size() > 0) { int size = reatTimeList.size(); @@ -602,6 +616,9 @@ public class XhpcHistoryOrderServiceImpl extends BaseService implements IXhpcHis private BigDecimal getBigDecimal(Long rateModelId, String startTime, String updateTime, BigDecimal powerPriceTotal, BigDecimal divide) { + if("00:00:00".equals(updateTime)){ + updateTime="23:59:59"; + } List> reatTimeList = getReatTimeList(startTime,updateTime, rateModelId); for (int i = 0; i time1){ List activityStationTime = xhpcRealTimeOrderMapper.getActivityStationTime(internetUserId, DateUtil.formatDateTime(startTime), DateUtil.formatDateTime(endTime), xhpcChargeOrder.getChargingStationId(), xhpcChargeOrder.getTenantId()); - //activityInternetTime 用户充电时间大于活动时间:快电、恒大不做活动计算 - boolean activityInternetTime =true; - // activityTime 用户充电开始时间是否活动时间 - boolean activityStartTime =false; - // activityTime 用户充电结束时间是否活动时间 - boolean activityEndTime =true; + //1时间没有跨天 + DateTime parse = DateUtil.parse(DateUtil.format(startTime, "yyyy-MM-dd"), "yyyy-MM-dd"); + DateTime parse1 = DateUtil.parse(DateUtil.format(endTime, "yyyy-MM-dd"), "yyyy-MM-dd"); + long betweenDay = DateUtil.between(parse,parse1, DateUnit.DAY); - if(activityStationTime !=null && activityStationTime.size()>0){ - XhpcActivityInternetDomainDto activityInternet1 =activityStationTime.get(0); - if(activityInternet1.getStartTime().getTime()-time1>0){ - activityStartTime =true; - if(xhpcChargeOrder.getUserId()==1L || xhpcChargeOrder.getUserId()==2L){ - activityInternetTime =false; - } - } - int size = activityStationTime.size(); - if(size==1){ - if(time2-activityInternet1.getEndTime().getTime()>0){ - activityEndTime =false; - } - }else{ - if(time2-activityStationTime.get(1).getEndTime().getTime()>0){ - activityEndTime =false; - } - } - } - if(activityStationTime !=null && activityStationTime.size()>0 && activityStationTime.size()<=2 && activityInternetTime){ + if(activityStationTime !=null && activityStationTime.size()==1){ logger.info("<<<<<<<<<<<<<<<有流量方活动>>>>>>>>>>>>>>>>>"+xhpcChargeOrder.getSerialNumber()); judge =true; - int number = activityStationTime.size(); + String start = DateUtil.formatTime(startTime); String end = DateUtil.formatTime(endTime); String activityId =""; @@ -510,98 +489,17 @@ public class XhpcRealTimeOrderServiceImpl extends BaseService implements IXhpcRe List activityFormulaTime1 =new ArrayList<>(); List activityFormulaTime2 =new ArrayList<>(); XhpcActivityInternetDomainDto activityInternet1 =new XhpcActivityInternetDomainDto(); - XhpcActivityInternetDomainDto activityInternet2 =new XhpcActivityInternetDomainDto(); Long rateModelId = xhpcChargeOrder.getRateModelId(); - if(number==2){ + if(betweenDay>0){ activityInternet1 = activityStationTime.get(0); - activityInternet2 = activityStationTime.get(1); - if(activityStartTime){ - activityFormulaTime1 = xhpcRealTimeOrderMapper.getActivityFormulaTime(activityInternet1.getActivityId(), "00:00:00", "24:00:00"); - activityFormulaTime2 = xhpcRealTimeOrderMapper.getActivityFormulaTime(activityInternet2.getActivityId(), "00:00:00", end); - }else{ - activityFormulaTime1 = xhpcRealTimeOrderMapper.getActivityFormulaTime(activityInternet1.getActivityId(), start, "24:00:00"); - activityFormulaTime2 = xhpcRealTimeOrderMapper.getActivityFormulaTime(activityInternet2.getActivityId(), "00:00:00", end); - } - activityId =activityInternet1.getActivityId()+","+activityInternet2.getActivityId(); + activityFormulaTime1 = xhpcRealTimeOrderMapper.getActivityFormulaTime(activityInternet1.getActivityId(), start, "24:00:00"); + activityFormulaTime2 = xhpcRealTimeOrderMapper.getActivityFormulaTime(activityInternet1.getActivityId(), "00:00:00", start); + activityId =activityInternet1.getActivityId()+""; }else{ activityInternet1 = activityStationTime.get(0); - if(activityStartTime){ - activityFormulaTime1 = xhpcRealTimeOrderMapper.getActivityFormulaTime(activityInternet1.getActivityId(), "00:00:00", end); - }else{ - activityFormulaTime1 = xhpcRealTimeOrderMapper.getActivityFormulaTime(activityInternet1.getActivityId(), start, end); - } + activityFormulaTime1 = xhpcRealTimeOrderMapper.getActivityFormulaTime(activityInternet1.getActivityId(), start, end); activityId =activityInternet1.getActivityId()+""; } - if(activityStartTime){ - List> reatTimeList = xhpcHistoryOrderService.getReatTimeList(start, "00:00:00", rateModelId); - if(reatTimeList.size()>0){ - String substring = internetSerialNumber.substring(0, 9); - Map operatorIdEvcs = xhpcRealTimeOrderMapper.getOperatorIdEvcs(substring); - if(operatorIdEvcs !=null){ - if(operatorIdEvcs.get("operatorIdEvcs")!=null && operatorIdEvcs.get("commissionType")!=null && operatorIdEvcs.get("commissionRate")!=null){ - BigDecimal commissionRate = new BigDecimal(operatorIdEvcs.get("commissionRate").toString()).divide(new BigDecimal(100)); - String commissionType = operatorIdEvcs.get("commissionType").toString(); - for (int i = 0; i < reatTimeList.size(); i++) { - Map map = reatTimeList.get(i); - BigDecimal powerFee =new BigDecimal(map.get("powerFee").toString()); - BigDecimal serviceFee =new BigDecimal(map.get("serviceFee").toString()); - String startTime1 =map.get("startTime").toString(); - String endTime1 =map.get("endTime").toString(); - BigDecimal degree =new BigDecimal(0); - if(DateUtil.parse(start).getTime() - DateUtil.parse(startTime1).getTime()>=0){ - if(DateUtil.parse(end).getTime() - DateUtil.parse(endTime1).getTime()>=0){ - degree =new BigDecimal(xhpcRealTimeOrderMapper.getRealTimeOrderTime(chargeOrderId, parse2+" "+start, parse2+" "+endTime1)).setScale(2,BigDecimal.ROUND_HALF_UP); - }else{ - degree =new BigDecimal(xhpcRealTimeOrderMapper.getRealTimeOrderTime(chargeOrderId, parse2+" "+start, parse2+" "+end)).setScale(2,BigDecimal.ROUND_HALF_UP); - } - }else{ - if(DateUtil.parse(end).getTime() - DateUtil.parse(endTime1).getTime()>=0){ - degree =new BigDecimal(xhpcRealTimeOrderMapper.getRealTimeOrderTime(chargeOrderId, parse2+" "+startTime1, parse2+" "+endTime1)).setScale(2,BigDecimal.ROUND_HALF_UP); - }else{ - degree =new BigDecimal(xhpcRealTimeOrderMapper.getRealTimeOrderTime(chargeOrderId, parse2+" "+startTime1, parse2+" "+end)).setScale(2,BigDecimal.ROUND_HALF_UP); - } - } - //挡前服务费 - BigDecimal activityServicePrice1 = serviceFee.multiply(degree); - //活动总服务费 - activityServicePriceTotal = activityServicePriceTotal.add(activityServicePrice1); - //挡前电费 - BigDecimal activityPowerPrice1 = powerFee.multiply(degree); - //活动总电费 - activityPowerPriceTotal = activityPowerPriceTotal.add(activityPowerPrice1); - //活动总金额 - activityTotalPriceTotal = activityTotalPriceTotal.add(activityServicePrice1.add(activityPowerPrice1)); - if(new BigDecimal(0).compareTo(commissionRate)==-1){ - if("0".equals(commissionType) || "1".equals(commissionType)|| "2".equals(commissionType)){ - //流量方的钱 - if("0".equals(commissionType)){ - BigDecimal decimal1 = activityPowerPrice1.multiply(commissionRate).setScale(2, BigDecimal.ROUND_HALF_UP); - BigDecimal decimal2 = activityServicePrice1.multiply(commissionRate).setScale(2, BigDecimal.ROUND_HALF_UP); - internetCommission = internetCommission.add(decimal1.add(decimal2)); - activityPowerPrice =activityPowerPrice.add(activityPowerPrice1.subtract(decimal1)); - activityServicePrice =activityServicePrice.add(activityServicePrice1.subtract(decimal2)); - }else if("1".equals(commissionType)){ - BigDecimal decimal2 = activityServicePrice1.multiply(commissionRate).setScale(2, BigDecimal.ROUND_HALF_UP); - internetSvcCommission = internetSvcCommission.add(decimal2); - activityServicePrice =activityServicePrice.add(activityServicePrice1.subtract(decimal2)); - activityPowerPrice =activityPowerPrice.add(activityPowerPriceTotal); - }else{ - //电量抽成 - BigDecimal commissionRate1 = degree.multiply(new BigDecimal(operatorIdEvcs.get("commissionRate").toString())).setScale(2, BigDecimal.ROUND_HALF_UP); - internetDegreeCommission = internetDegreeCommission.add(commissionRate1); - //减服务费 - activityServicePrice =activityServicePrice.add(activityServicePrice1.subtract(internetDegreeCommission)); - activityPowerPrice =activityPowerPrice.add(activityPowerPriceTotal); - } - } - } - chargingDegree = chargingDegree.add(degree); - } - } - } - } - } - for (int j = 0; j < activityFormulaTime1.size(); j++) { XhpcActivityFormulaDomainDto activityFormula = activityFormulaTime1.get(j); //计费类型 @@ -611,7 +509,7 @@ public class XhpcRealTimeOrderServiceImpl extends BaseService implements IXhpcRe //计算公式 String computeFormula = activityFormula.getComputeFormula(); BigDecimal degree =new BigDecimal(0); - if (activityFormulaTime2.size()==0 && activityFormulaTime1.size()-1==j && activityEndTime) { + if (activityFormulaTime2.size()==0 && activityFormulaTime1.size()-1==j) { degree = new BigDecimal(totalPower).subtract(chargingDegree).setScale(2, BigDecimal.ROUND_HALF_UP); }else{ degree =getRealOrderTime(chargeOrderId, parse2+" "+activityFormula.getStartTime(), parse2+" "+activityFormula.getEndTime()).setScale(2,BigDecimal.ROUND_HALF_UP);; @@ -653,14 +551,14 @@ public class XhpcRealTimeOrderServiceImpl extends BaseService implements IXhpcRe if(activityFormulaTime2.size()>0){ for (int j = 0; j < activityFormulaTime2.size(); j++) { //计费类型 - int computeType = activityInternet2.getComputeType(); + int computeType = activityInternet1.getComputeType(); XhpcActivityFormulaDomainDto activityFormula = activityFormulaTime1.get(j); BigDecimal activityServicePriceFormula = activityFormula.getServicePrice(); BigDecimal activityPowerPriceFormula = activityFormula.getPowerPrice(); //计算公式 String computeFormula = activityFormula.getComputeFormula(); BigDecimal degree =new BigDecimal(0); - if (activityFormulaTime2.size()-1==j && activityEndTime) { + if (activityFormulaTime2.size()-1==j) { degree = new BigDecimal(totalPower).subtract(chargingDegree).setScale(2, BigDecimal.ROUND_HALF_UP); }else{ degree =getRealOrderTime(chargeOrderId, parse2+" "+activityFormula.getStartTime(), parse2+" "+activityFormula.getEndTime()).setScale(2,BigDecimal.ROUND_HALF_UP);; @@ -700,67 +598,11 @@ public class XhpcRealTimeOrderServiceImpl extends BaseService implements IXhpcRe chargingDegree = chargingDegree.add(degree); } } - if(!activityEndTime){ - List> reatTimeList = xhpcHistoryOrderService.getReatTimeList("00:00:00", end, rateModelId); - if(reatTimeList.size()>0){ - String substring = internetSerialNumber.substring(0, 9); - Map operatorIdEvcs = xhpcRealTimeOrderMapper.getOperatorIdEvcs(substring); - if(operatorIdEvcs !=null){ - if(operatorIdEvcs.get("operatorIdEvcs")!=null && operatorIdEvcs.get("commissionType")!=null && operatorIdEvcs.get("commissionRate")!=null){ - BigDecimal commissionRate = new BigDecimal(operatorIdEvcs.get("commissionRate").toString()).divide(new BigDecimal(100)); - String commissionType = operatorIdEvcs.get("commissionType").toString(); - for (int i = 0; i < reatTimeList.size(); i++) { - Map map = reatTimeList.get(i); - BigDecimal powerFee =new BigDecimal(map.get("powerFee").toString()); - BigDecimal serviceFee =new BigDecimal(map.get("serviceFee").toString()); - String startTime1 =map.get("startTime").toString(); - String endTime1 =map.get("endTime").toString(); - BigDecimal degree =new BigDecimal(xhpcRealTimeOrderMapper.getRealTimeOrderTime(chargeOrderId, startTime1, endTime1)); - //挡前服务费 - BigDecimal activityServicePrice1 = serviceFee.multiply(degree); - //活动总服务费 - activityServicePriceTotal = activityServicePriceTotal.add(activityServicePrice1); - //挡前电费 - BigDecimal activityPowerPrice1 = powerFee.multiply(degree); - //活动总电费 - activityPowerPriceTotal = activityPowerPriceTotal.add(activityPowerPrice1); - //活动总金额 - activityTotalPriceTotal = activityTotalPriceTotal.add(activityServicePrice1.add(activityPowerPrice1)); - if(new BigDecimal(0).compareTo(commissionRate)==-1){ - if("0".equals(commissionType) || "1".equals(commissionType)|| "2".equals(commissionType)){ - //流量方的钱 - if("0".equals(commissionType)){ - BigDecimal decimal1 = activityPowerPrice1.multiply(commissionRate).setScale(2, BigDecimal.ROUND_HALF_UP); - BigDecimal decimal2 = activityServicePrice1.multiply(commissionRate).setScale(2, BigDecimal.ROUND_HALF_UP); - internetCommission = internetCommission.add(decimal1.add(decimal2)); - activityPowerPrice =activityPowerPrice.add(activityPowerPrice1.subtract(decimal1)); - activityServicePrice =activityServicePrice.add(activityServicePrice1.subtract(decimal2)); - }else if("1".equals(commissionType)){ - BigDecimal decimal2 = activityServicePrice1.multiply(commissionRate).setScale(2, BigDecimal.ROUND_HALF_UP); - internetSvcCommission = internetSvcCommission.add(decimal2); - activityServicePrice =activityServicePrice.add(activityServicePrice1.subtract(decimal2)); - activityPowerPrice =activityPowerPrice.add(activityPowerPriceTotal); - }else{ - //电量抽成 - BigDecimal commissionRate1 = degree.multiply(new BigDecimal(operatorIdEvcs.get("commissionRate").toString())).setScale(2, BigDecimal.ROUND_HALF_UP); - internetDegreeCommission = internetDegreeCommission.add(commissionRate1); - //减服务费 - activityServicePrice =activityServicePrice.add(activityServicePrice1.subtract(internetDegreeCommission)); - activityPowerPrice =activityPowerPrice.add(activityPowerPriceTotal); - } - } - } - chargingDegree = chargingDegree.add(degree); - } - } - } - } - } promotionDiscount = money.subtract(activityTotalPriceTotal); xhpcHistoryOrder.setActivityId(activityId); }else{ - if(activityStationTime.size()>2){ - xhpcHistoryOrder.setActivityId("活动有问题"); + if(activityStationTime.size()>1){ + xhpcHistoryOrder.setActivityId("同一时间活动有2个"); }else{ xhpcHistoryOrder.setActivityId("无活动"); } @@ -838,7 +680,8 @@ public class XhpcRealTimeOrderServiceImpl extends BaseService implements IXhpcRe } } }else{ - List> reatTimeList = xhpcHistoryOrderService.getReatTimeList(start, "00:00:00", xhpcChargeOrder.getRateModelId()); + + List> reatTimeList = xhpcHistoryOrderService.getReatTimeList(start, "23:59:59", xhpcChargeOrder.getRateModelId()); for (int j = 0; j < reatTimeList.size(); j++) { BigDecimal powerFee = new BigDecimal(0); BigDecimal serviceFee = new BigDecimal(0); @@ -1531,6 +1374,9 @@ public class XhpcRealTimeOrderServiceImpl extends BaseService implements IXhpcRe } private BigDecimal getBigDecimal(Long rateModelId, String startTime, String updateTime, BigDecimal powerPriceTotal, BigDecimal divide) { + if("00:00:00".equals(updateTime)){ + updateTime="23:59:59"; + } List> reatTimeList = xhpcHistoryOrderService.getReatTimeList(startTime,updateTime, rateModelId); for (int i = 0; i @@ -775,10 +775,7 @@ and find_in_set(#{chargingStationId}, station_list) and internet_name = (select name from xhpc_internet_user where internet_user_id =#{internetUserId} and del_flag =0) and status =3 and del_flag=0 - and activity_id in ( - SELECT activity_id FROM xhpc_activity_internet WHERE start_time <= #{startTime} AND end_time >= #{startTime} and status =3 and del_flag=0) - and activity_id in ( - SELECT activity_id FROM xhpc_activity_internet WHERE start_time <= #{endTime} AND end_time >= #{endTime} and status =3 and del_flag=0) + and start_time <= #{startTime} AND end_time >= #{startTime} order by end_time diff --git a/xhpc-modules/xhpc-order/src/main/resources/mapper/XhpcStatisticsMapper.xml b/xhpc-modules/xhpc-order/src/main/resources/mapper/XhpcStatisticsMapper.xml index af532b09..961c8c41 100644 --- a/xhpc-modules/xhpc-order/src/main/resources/mapper/XhpcStatisticsMapper.xml +++ b/xhpc-modules/xhpc-order/src/main/resources/mapper/XhpcStatisticsMapper.xml @@ -47,7 +47,7 @@ format(ifnull(sum(activity_total_price),0), 2) activityTotalPrice, format(ifnull(sum(charging_degree),0), 2) chargingDegree, format(ifnull(sum(charging_time),0), 2) chargingTime, - format(ifnull(sum(charging_number),0), 2) chargingNumber, + ifnull(sum(charging_number),0) chargingNumber, format(ifnull(sum(power_price),0), 2) powerPrice, format(ifnull(sum(service_price),0), 2) servicePrice, format(ifnull(sum(total_price),0), 2) totalPrice, @@ -116,7 +116,7 @@ select format(ifnull(sum(charging_degree),0), 2) chargingDegree, format(ifnull(sum(charging_time),0), 2) chargingTime, - format(ifnull(sum(charging_number),0), 2) chargingNumber, + ifnull(sum(charging_number),0) chargingNumber, format(ifnull(sum(power_price),0), 2) powerPrice, format(ifnull(sum(service_price),0), 2) servicePrice, format(ifnull(sum(total_price),0), 2) totalPrice, @@ -167,7 +167,7 @@ select format(ifnull(sum(ss.charging_degree),0), 2) chargingDegree, format(ifnull(sum(ss.charging_time),0), 2) chargingTime, - format(ifnull(sum(ss.charging_number),0), 2) chargingNumber, + ifnull(sum(ss.charging_number),0) chargingNumber, format(ifnull(sum(ss.power_price),0), 2) powerPrice, format(ifnull(sum(ss.service_price),0), 2) servicePrice, format(ifnull(sum(ss.total_price),0), 2) totalPrice, @@ -227,7 +227,7 @@ select format(ifnull(sum(ss.charging_degree),0), 2) chargingDegree, format(ifnull(sum(ss.charging_time),0), 2) chargingTime, - format(ifnull(sum(ss.charging_number),0), 2) chargingNumber, + ifnull(sum(ss.charging_number),0) chargingNumber, format(ifnull(sum(ss.power_price),0), 2) powerPrice, format(ifnull(sum(ss.service_price),0), 2) servicePrice, format(ifnull(sum(ss.total_price),0), 2) totalPrice, @@ -279,7 +279,7 @@ select format(ifnull(sum(ss.charging_degree),0), 2) chargingDegree, format(ifnull(sum(ss.charging_time),0), 2) chargingTime, - format(ifnull(sum(ss.charging_number),0), 2) chargingNumber, + ifnull(sum(ss.charging_number),0) chargingNumber, format(ifnull(sum(ss.power_price),0), 2) powerPrice, format(ifnull(sum(ss.service_price),0), 2) servicePrice, format(ifnull(sum(ss.total_price),0), 2) totalPrice, @@ -327,7 +327,7 @@ select format(ifnull(sum(ss.charging_degree),0), 2) chargingDegree, format(ifnull(sum(ss.charging_time),0), 2) chargingTime, - format(ifnull(sum(ss.charging_number),0), 2) chargingNumber, + ifnull(sum(ss.charging_number),0) chargingNumber, format(ifnull(sum(ss.power_price),0), 2) powerPrice, format(ifnull(sum(ss.service_price),0), 2) servicePrice, format(ifnull(sum(ss.total_price),0), 2) totalPrice, @@ -392,6 +392,9 @@ and tenant_id = #{tenantId} + + and operator_id =#{operatorId} + + + + + select + xt.tenant_id as tenantId, + xt.tenant_name as tenantName + from xhpc_charging_station as xcs + join xhpc_tenant as xt on xcs.tenant_id = xt.tenant_id and xcs.del_flag=0 + where xcs.del_flag=0 + + and xcs.charging_station_id in (select charging_station_id from xhpc_charging_station where operator_id=#{userId}) + + + and xcs.charging_station_id in (select charging_station_id from xhpc_user_privilege where user_id=#{userId}) + + GROUP BY xt.tenant_id + diff --git a/xhpc-modules/xhpc-user/src/main/resources/mapper/XhpcOperatorMapper.xml b/xhpc-modules/xhpc-user/src/main/resources/mapper/XhpcOperatorMapper.xml index b8f4a81c..741e3e9a 100644 --- a/xhpc-modules/xhpc-user/src/main/resources/mapper/XhpcOperatorMapper.xml +++ b/xhpc-modules/xhpc-user/src/main/resources/mapper/XhpcOperatorMapper.xml @@ -106,7 +106,7 @@ business_license_id, - + withdrawal_time,