From 073790a8e3f2aaa352ead3157b23b6ce4b5d1ae0 Mon Sep 17 00:00:00 2001 From: Pu Zhibing <393733352@qq.com> Date: 星期二, 15 七月 2025 15:54:38 +0800 Subject: [PATCH] 修改bug --- ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java | 1804 +++++++++++++++++++++++++++++---------------------------- 1 files changed, 909 insertions(+), 895 deletions(-) diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java index 5d21287..d956b76 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java @@ -103,7 +103,7 @@ /** * <p> - * 服务实现类 + * 服务实现类 * </p> * * @author xiaochen @@ -113,7 +113,7 @@ public class TChargingOrderServiceImpl extends ServiceImpl<TChargingOrderMapper, TChargingOrder> implements TChargingOrderService { private Logger log = LoggerFactory.getLogger(TChargingOrderServiceImpl.class); - + @Resource private ChargingGunClient chargingGunClient; @Resource @@ -127,10 +127,10 @@ private AppUserCarClient appUserCarClient; @Resource private AppUserClient appUserClient; - + @Resource private ChargingPileClient chargingPileClient; - + @Resource private TChargingOrderAccountingStrategyService chargingOrderAccountingStrategyService; @@ -144,10 +144,10 @@ private AliPaymentClient aliPaymentClient; @Resource private H5AliPaymentClient h5AliPaymentClient; - + @Resource private AppCouponClient appCouponClient; - + @Resource private AppUserVipDetailClient appUserVipDetailClient; @@ -159,43 +159,43 @@ @Resource private TCECClient tcecClient; - + @Resource private SendMessageClient sendMessageClient; - + @Resource private TOrderEvaluateService orderEvaluateService; @Resource private AccountingStrategyDetailClient accountingStrategyDetailClient; - + @Resource private AccountingStrategyDetailOrderClient accountingStrategyDetailOrderClient; - + @Resource private AccountingStrategyClient accountingStrategyClient; - + @Resource private PlatformStartChargingReplyService platformStartChargingReplyService; - + @Resource private TChargingOrderRefundService chargingOrderRefundService; - + @Resource private PlatformStopChargingReplyClient platformStopChargingReplyClient; - + @Resource private AccountingStrategyOrderService accountingStrategyOrderService; - + @Resource private AccountingStrategyDetailOrderService accountingStrategyDetailOrderService; - + @Resource private InviteUserClient inviteUserClient; - + @Resource private AppUserIntegralChangeClient appUserIntegralChangeClient; - + @Resource private IntegralRuleClient integralRuleClient; @@ -233,12 +233,11 @@ @Resource private ChargingMessageClient chargingMessageClient; - - - - + + /** * 获取小程序充电记录列表数据 + * * @param query * @return */ @@ -279,6 +278,7 @@ /** * 获取充电订单明细 + * * @param id 订单id * @return */ @@ -297,20 +297,20 @@ myChargingOrderInfo.setChargeMode(chargingGun.getChargeMode()); String name = chargingGunClient.getAllName(chargingOrder.getChargingGunId()).getData(); myChargingOrderInfo.setName(name); - if(Objects.nonNull(chargingOrder.getAppUserCarId())){ + if (Objects.nonNull(chargingOrder.getAppUserCarId())) { TAppUserCar tAppUserCar = appUserCarClient.getCarById(chargingOrder.getAppUserCarId().toString()).getData(); - if(null != tAppUserCar){ + if (null != tAppUserCar) { myChargingOrderInfo.setLicensePlate(tAppUserCar.getLicensePlate()); - }else{ + } else { myChargingOrderInfo.setLicensePlate("无"); } - }else{ + } else { myChargingOrderInfo.setLicensePlate(chargingOrder.getPlateNum()); } - if(null != chargingOrder.getStartTime()){ + if (null != chargingOrder.getStartTime()) { myChargingOrderInfo.setStartTime(chargingOrder.getStartTime().atZone(ZoneId.systemDefault()).toInstant().getEpochSecond() * 1000); } - if(null != chargingOrder.getEndTime()){ + if (null != chargingOrder.getEndTime()) { myChargingOrderInfo.setEndTime(chargingOrder.getEndTime().atZone(ZoneId.systemDefault()).toInstant().getEpochSecond() * 1000); } myChargingOrderInfo.setOrderAmount(chargingOrder.getOrderAmount()); @@ -325,13 +325,13 @@ ); myChargingOrderInfo.setStageCost(stageCost); List<UploadRealTimeMonitoringData> dataList = uploadRealTimeMonitoringDataService.getDataByOrderCode(chargingOrder.getCode()); - if(null != dataList){ + if (null != dataList) { //在MongoDB中获取数据 SimpleDateFormat sdf = new SimpleDateFormat("HH:mm"); List<UploadRealTimeMonitoringData> dataLists = new ArrayList<>(); String t = ""; for (UploadRealTimeMonitoringData uploadRealTimeMonitoringData : dataList) { - if(!sdf.format(uploadRealTimeMonitoringData.getCreate_time()).equals(t)){ + if (!sdf.format(uploadRealTimeMonitoringData.getCreate_time()).equals(t)) { dataLists.add(uploadRealTimeMonitoringData); t = sdf.format(uploadRealTimeMonitoringData.getCreate_time()); } @@ -353,7 +353,7 @@ myChargingOrderInfo.setCurrentAndVoltage(currentAndVoltage); //在MongoDB中获取数据 List<Integer> soc = dataLists.stream().map(UploadRealTimeMonitoringData::getSoc).collect(Collectors.toList()); - List<BigDecimal> po = dataLists.stream().map(s -> s.getOutput_current().multiply(s.getOutput_voltage()).divide(new BigDecimal(1000),2, RoundingMode.HALF_DOWN)).collect(Collectors.toList()); + List<BigDecimal> po = dataLists.stream().map(s -> s.getOutput_current().multiply(s.getOutput_voltage()).divide(new BigDecimal(1000), 2, RoundingMode.HALF_DOWN)).collect(Collectors.toList()); List<Map<String, Object>> power = new ArrayList<>(); for (int i = 0; i < time.size(); i++) { Map<String, Object> map = new HashMap<>(); @@ -369,13 +369,14 @@ myChargingOrderInfo.setActionable(myChargingOrderInfo.getEndTime() + 604800000L < System.currentTimeMillis() ? 0 : 1); long count = orderAppealService.count(Wrappers.lambdaQuery(TOrderAppeal.class) .eq(TOrderAppeal::getOrderId, id)); - myChargingOrderInfo.setIsAppeal(count>0?0:1); + myChargingOrderInfo.setIsAppeal(count > 0 ? 0 : 1); return myChargingOrderInfo; } /** * 获取待开票订单列表 + * * @param query * @return */ @@ -409,6 +410,7 @@ /** * 充电支付 + * * @param addChargingOrder * @return */ @@ -421,32 +423,32 @@ .eq(TChargingOrder::getRechargePaymentStatus, 1).eq(TChargingOrder::getDelFlag, 0)); for (TChargingOrder tChargingOrder : list) { Integer rechargePaymentType = tChargingOrder.getRechargePaymentType(); - if(1 == rechargePaymentType){ + if (1 == rechargePaymentType) { NotifyV3PayDecodeRespBody data = wxPaymentClient.queryOrderInfo(tChargingOrder.getCode()).getData(); - if(null != data){ + if (null != data) { String trade_state = data.getTrade_state(); //支付失败,删除无效的订单 - if(trade_state.equals("REFUND") || trade_state.equals("NOTPAY") || trade_state.equals("REVOKED") || trade_state.equals("PAYERROR")){ + if (trade_state.equals("REFUND") || trade_state.equals("NOTPAY") || trade_state.equals("REVOKED") || trade_state.equals("PAYERROR")) { this.removeById(tChargingOrder.getId()); } } } - if(2 == rechargePaymentType){ + if (2 == rechargePaymentType) { AliQueryOrder data = aliPaymentClient.query(tChargingOrder.getCode()).getData(); - if(null != data){ + if (null != data) { //支付失败,删除无效的订单 String tradeStatus = data.getTradeStatus(); - if(null != tradeStatus && tradeStatus.equals("TRADE_CLOSED")){ + if (null != tradeStatus && tradeStatus.equals("TRADE_CLOSED")) { this.removeById(tChargingOrder.getId()); } } } - if(3 == rechargePaymentType){ + if (3 == rechargePaymentType) { AliQueryOrder data = h5AliPaymentClient.query(tChargingOrder.getCode()).getData(); - if(null != data){ + if (null != data) { //支付失败,删除无效的订单 String tradeStatus = data.getTradeStatus(); - if(null != tradeStatus && tradeStatus.equals("TRADE_CLOSED")){ + if (null != tradeStatus && tradeStatus.equals("TRADE_CLOSED")) { this.removeById(tChargingOrder.getId()); } } @@ -456,52 +458,52 @@ //检查当前枪是否是正在使用中 TChargingOrder one = this.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getChargingGunId, addChargingOrder.getId()) .in(TChargingOrder::getStatus, Arrays.asList(3)).eq(TChargingOrder::getDelFlag, 0)); - if(null != one){ + if (null != one) { return AjaxResult.error("充电枪正在充电中,启动失败"); } //查询当前充电枪是否有正在支付的订单 one = this.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getChargingGunId, addChargingOrder.getId()) .eq(TChargingOrder::getAppUserCarId, userId).eq(TChargingOrder::getRechargePaymentStatus, 1).eq(TChargingOrder::getDelFlag, 0)); - if(null != one){ + if (null != one) { //查询三方支付数据,支付中直接结束三方订单 - if(1 == one.getRechargePaymentType()){ + if (1 == one.getRechargePaymentType()) { NotifyV3PayDecodeRespBody data = wxPaymentClient.queryOrderInfo(one.getCode()).getData(); - if(null != data){ + if (null != data) { String trade_state = data.getTrade_state(); //支付失败,删除无效的订单 - if(trade_state.equals("REFUND") || trade_state.equals("NOTPAY") || trade_state.equals("REVOKED") || trade_state.equals("PAYERROR")){ + if (trade_state.equals("REFUND") || trade_state.equals("NOTPAY") || trade_state.equals("REVOKED") || trade_state.equals("PAYERROR")) { this.removeById(one.getId()); - }else{ + } else { //结束第三方支付,删除订单 wxPaymentClient.close(one.getCode()); this.removeById(one.getId()); } } } - if(2 == one.getRechargePaymentType()){ + if (2 == one.getRechargePaymentType()) { AliQueryOrder data = aliPaymentClient.query(one.getCode()).getData(); - if(null != data){ + if (null != data) { String trade_state = data.getTradeStatus(); //支付失败,删除无效的订单 - if(trade_state.equals("TRADE_CLOSED")){ + if (trade_state.equals("TRADE_CLOSED")) { this.removeById(one.getId()); } - if(trade_state.equals("WAIT_BUYER_PAY")){ + if (trade_state.equals("WAIT_BUYER_PAY")) { //结束第三方支付,删除订单 aliPaymentClient.close(one.getCode()); this.removeById(one.getId()); } } } - if(3 == one.getRechargePaymentType()){ + if (3 == one.getRechargePaymentType()) { AliQueryOrder data = h5AliPaymentClient.query(one.getCode()).getData(); - if(null != data){ + if (null != data) { String trade_state = data.getTradeStatus(); //支付失败,删除无效的订单 - if(trade_state.equals("TRADE_CLOSED")){ + if (trade_state.equals("TRADE_CLOSED")) { this.removeById(one.getId()); } - if(trade_state.equals("WAIT_BUYER_PAY")){ + if (trade_state.equals("WAIT_BUYER_PAY")) { //结束第三方支付,删除订单 h5AliPaymentClient.close(one.getCode()); this.removeById(one.getId()); @@ -520,9 +522,9 @@ chargingOrder.setOrderClassification(1); chargingOrder.setAppUserId(userId); chargingOrder.setAppUserCarId(addChargingOrder.getAppUserCarId()); - if(null != addChargingOrder.getAppUserCarId()){ + if (null != addChargingOrder.getAppUserCarId()) { TAppUserCar userCar = appUserCarClient.getCarById(addChargingOrder.getAppUserCarId().toString()).getData(); - if(null != userCar){ + if (null != userCar) { chargingOrder.setPlateNum(userCar.getLicensePlate()); } } @@ -541,20 +543,20 @@ Site site = siteClient.getSiteByIds(Arrays.asList(tChargingGun.getSiteId())).getData().get(0); Integer accountingStrategyId = tChargingGun.getAccountingStrategyId(); - if(null == accountingStrategyId){ + if (null == accountingStrategyId) { //查询站点上面的计费策略 accountingStrategyId = site.getAccountingStrategyId(); } TAccountingStrategy accountingStrategy = accountingStrategyClient.getAccountingStrategyById(accountingStrategyId).getData(); //直营站点才可以享受会员折扣 - if(null != appUser.getVipId() && 1 == site.getBusinessCategory()){ + if (null != appUser.getVipId() && 1 == site.getBusinessCategory()) { TVip vip = vipClient.getInfo1(appUser.getVipId()).getData(); BigDecimal discount = null; - if(1 == vip.getType()){ + if (1 == vip.getType()) { //普通会员折扣使用积分策略上的折扣,且有最高优惠金额 discount = accountingStrategy.getDiscount(); - }else{ + } else { //内部会员使用会员信息设置的折扣,没有最高优惠金额 discount = vip.getDiscount(); } @@ -562,15 +564,15 @@ getAppUserVipDetail.setAppUserId(appUser.getId()); getAppUserVipDetail.setVipId(appUser.getVipId()); TAppUserVipDetail vipDetail = appUserVipDetailClient.getAppUserVipDetail(getAppUserVipDetail).getData(); - if(null != vipDetail){ + if (null != vipDetail) { Integer chargeNum = vipDetail.getChargeNum(); - if(0 < chargeNum){ + if (0 < chargeNum) { chargingOrder.setVipDiscount(discount); } } } this.save(chargingOrder); - + //添加订单的计费策略 List<TAccountingStrategyDetail> strategyDetailList = accountingStrategyDetailClient.getListByAccountingStrategyId(accountingStrategyId).getData(); AccountingStrategyOrder accountingStrategyOrder = new AccountingStrategyOrder(); @@ -585,10 +587,10 @@ list1.add(accountingStrategyDetailOrder); } accountingStrategyDetailOrderService.saveBatch(list1); - + //会员优惠折扣将其计入增加充电时长(增加总充电金额) //如果充电总金额未使用完,则需要退回费用=(原金额/总金额)*(总金额-实际充电金额) - if(1 == addChargingOrder.getPaymentType()){ + if (1 == addChargingOrder.getPaymentType()) { PaymentOrder paymentOrder = new PaymentOrder(); paymentOrder.setCode(chargingOrder.getCode()); paymentOrder.setAmount(addChargingOrder.getPaymentAmount()); @@ -598,7 +600,7 @@ Map<String, Object> data = wxPaymentClient.orderPay(paymentOrder).getData(); return AjaxResult.success(data); } - if(2 == addChargingOrder.getPaymentType()){ + if (2 == addChargingOrder.getPaymentType()) { AliPaymentReq req = new AliPaymentReq(); req.setOutTradeNo(chargingOrder.getCode()); req.setTotalAmount(addChargingOrder.getPaymentAmount().toString()); @@ -607,11 +609,11 @@ req.setBody("充电充值"); req.setNotifyUrl("/payment/ali/callBack"); AliPaymentResp data = aliPaymentClient.payment(req).getData(); - if(null != data){ + if (null != data) { return AjaxResult.success(data); } } - if(3 == addChargingOrder.getPaymentType()){ + if (3 == addChargingOrder.getPaymentType()) { AliPaymentReq req = new AliPaymentReq(); req.setOutTradeNo(chargingOrder.getCode()); req.setTotalAmount(addChargingOrder.getPaymentAmount().toString()); @@ -621,8 +623,8 @@ req.setNotifyUrl("/payment/aliH5/callBack"); req.setReturnUrl(addChargingOrder.getReturnUrl()); String data = h5AliPaymentClient.payment(req).getData(); - if(StringUtils.hasLength(data)){ - return AjaxResult.success("操作成功",data); + if (StringUtils.hasLength(data)) { + return AjaxResult.success("操作成功", data); } } throw new RuntimeException("无效的支付方式"); @@ -631,23 +633,24 @@ /** * 支付成功后的回调处理逻辑 - * @param paymentType 支付方式:1=微信,2=支付宝 - * @param out_trade_no 业务流水号 + * + * @param paymentType 支付方式:1=微信,2=支付宝 + * @param out_trade_no 业务流水号 * @param transaction_id 三方支付流水号 - * @param attach 附加数据 + * @param attach 附加数据 * @return */ @Override public AjaxResult chargingOrderCallback(Integer paymentType, String out_trade_no, String transaction_id, String attach) { TChargingOrder chargingOrder = this.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getCode, out_trade_no)); - if(chargingOrder.getRechargePaymentStatus() == 2){ + if (chargingOrder.getRechargePaymentStatus() == 2) { return AjaxResult.success(); } chargingOrder.setRechargePaymentStatus(2); chargingOrder.setRechargeSerialNumber(transaction_id); chargingOrder.setStatus(2); chargingOrder.setPayTime(LocalDateTime.now()); - + //添加安全检测数据到缓存中,每步安全检测完成后需要更新缓存数据 PreChargeCheck preChargeCheck = new PreChargeCheck(); preChargeCheck.setElectronicLockLock(false); @@ -675,12 +678,12 @@ TAppUser appUser = appUserClient.getUserById(chargingOrder.getAppUserId()).getData(); //判断会员是否还有充电优惠次数,计算会员优惠的折扣金额 - if(null != appUser.getVipId()){ + if (null != appUser.getVipId()) { GetAppUserVipDetail getAppUserVipDetail = new GetAppUserVipDetail(); getAppUserVipDetail.setAppUserId(chargingOrder.getAppUserId()); getAppUserVipDetail.setVipId(appUser.getVipId()); TAppUserVipDetail data = appUserVipDetailClient.getAppUserVipDetail(getAppUserVipDetail).getData(); - if(null != data && data.getChargeNum() > 0){ + if (null != data && data.getChargeNum() > 0) { //计算折扣 List<AccountingStrategyDetailOrder> list = accountingStrategyDetailOrderClient.getAllAccountingStrategyDetailOrder(chargingOrder.getId()).getData(); list.get(list.size() - 1).setEndTime("23:59"); @@ -691,14 +694,14 @@ Integer start = Integer.valueOf(accountingStrategyDetailOrder.getStartTime().replaceAll(":", "")); Integer end = Integer.valueOf(accountingStrategyDetailOrder.getEndTime().replaceAll(":", "")); String[] split = accountingStrategyDetailOrder.getEndTime().split(":"); - if(sta || (now >= start && now < end)){ + if (sta || (now >= start && now < end)) { sta = true; Calendar end_calendar = Calendar.getInstance(); end_calendar.set(Calendar.HOUR_OF_DAY, Integer.valueOf(split[0])); end_calendar.set(Calendar.MINUTE, Integer.valueOf(split[1])); //到此策略结束的秒数 - if(null == nowTimeMillis){ + if (null == nowTimeMillis) { String[] split1 = accountingStrategyDetailOrder.getStartTime().split(":"); Calendar start_calendar = Calendar.getInstance(); start_calendar.set(Calendar.HOUR_OF_DAY, Integer.valueOf(split1[0])); @@ -714,32 +717,32 @@ BigDecimal s_server_amount = s_degrees.multiply(accountingStrategyDetailOrder.getServiceCharge()); //计算剩余金额能充多长时间的电 long times = rechargeAmount1.divide(s_total_amount, 0, RoundingMode.DOWN).longValue(); - if(times > m){ + if (times > m) { //充电时间跨度两个计费策略,需要继续对下一个策略进行计算 serviceCharge = serviceCharge.add(s_server_amount.multiply(new BigDecimal(m))); rechargeAmount1 = rechargeAmount1.subtract(s_total_amount.multiply(new BigDecimal(m))); nowTimeMillis = null; - }else{ + } else { serviceCharge = serviceCharge.add(s_server_amount.multiply(new BigDecimal(times))); break; } } } - if(null != discount){ + if (null != discount) { discountAmount = serviceCharge.multiply(new BigDecimal(1).subtract(discount)); } - if(discountAmount.compareTo(BigDecimal.ZERO) >= 0){ + if (discountAmount.compareTo(BigDecimal.ZERO) >= 0) { //计算会员最大优惠金额 TVip vip = vipClient.getInfo1(appUser.getVipId()).getData(); BigDecimal maximumDeduction = vip.getMaximumDeduction(); //普通会员有最高优惠限制 - if(vip.getType() == 1 && discountAmount.compareTo(maximumDeduction) > 0){ + if (vip.getType() == 1 && discountAmount.compareTo(maximumDeduction) > 0) { discountAmount = maximumDeduction; } } discountAmount = discountAmount.setScale(4, RoundingMode.HALF_EVEN); - if(discountAmount.compareTo(BigDecimal.ZERO) >= 0){ + if (discountAmount.compareTo(BigDecimal.ZERO) >= 0) { data.setChargeNum(data.getChargeNum() - 1); appUserVipDetailClient.updateAppUserVipDetail(data); } @@ -751,8 +754,8 @@ chargingOrder.setChargeAmount(account_balance); chargingOrder.setVipDiscountAmount(discountAmount); this.updateById(chargingOrder); - - + + TChargingPile chargingPile = chargingPileClient.getChargingPileById(tChargingGun.getChargingPileId()).getData(); //调用远程启动充电消息 PlatformStartCharging platformStartCharging = new PlatformStartCharging(); @@ -780,26 +783,27 @@ /** * 定时检测mongodb数据库数据 + * * @param id * @return */ - public boolean timingDetection(Long id){ + public boolean timingDetection(Long id) { TChargingOrder chargingOrder = this.getById(id); - if(chargingOrder.getStatus() != 2){ + if (chargingOrder.getStatus() != 2) { return true; } String code = chargingOrder.getCode(); String key = "AQJC_" + chargingOrder.getChargingGunId(); List<PlatformStartChargingReply> data = platformStartChargingReplyService.getPlatformStartChargingReply(code); log.info(code + ":-------------------开始检查调起充电结果-------------------" + data.toString()); - if(data.size() != 0){ + if (data.size() != 0) { PlatformStartChargingReply platformStartChargingReply = data.get(1); Integer startup_result = platformStartChargingReply.getStartup_result(); Integer failure_cause = platformStartChargingReply.getFailure_cause(); Integer counter = counter_map.get(code); PreChargeCheck preChargeCheck1 = redisService.getCacheObject(key); //5分钟内还未插枪则取消充电,退回金额。 - if(failure_cause == 5 && (null == counter || counter < 1800)){ + if (failure_cause == 5 && (null == counter || counter < 1800)) { counter = (null == counter ? 0 : counter) + 1; counter_map.put(code, counter); //启动失败 @@ -811,7 +815,7 @@ //清除计时器中的无效数据 counter_map.remove(code); - if(0 == startup_result){ + if (0 == startup_result) { //启动失败 preChargeCheck1.setStartupSuccess(3); preChargeCheck1.setFailureCause(failure_cause); @@ -819,16 +823,16 @@ refund(code); chargingOrder.setStatus(-1); chargingOrder.setEndMode(0); - }else{ + } else { //启动成功 preChargeCheck1.setStartupSuccess(2); chargingOrder.setStatus(3); chargingOrder.setStartTime(LocalDateTime.now()); } this.updateById(chargingOrder); - if(chargingOrder.getStatus() == 3){ + if (chargingOrder.getStatus() == 3) { //推送监管平台订单状态 - new Thread(()->{ + new Thread(() -> { ChargingOrderVo chargingOrderVo = new ChargingOrderVo(); BeanUtils.copyProperties(chargingOrder, chargingOrderVo); chargingMessageClient.pushOrderStatus(chargingOrderVo); @@ -837,16 +841,16 @@ redisService.setCacheObject(key, preChargeCheck1, 24L, TimeUnit.HOURS); //推送三方平台订单状态 - if(2 == chargingOrder.getOrderSource()){ + if (2 == chargingOrder.getOrderSource()) { tcecClient.notificationEquipChargeStatus(chargingOrder.getStartChargeSeq(), chargingOrder.getOperatorId()); } return true; - }else{ + } else { Integer counter = boot_failed_map.get(code); log.info(code + ":-------------------未上传开启充电结果-------------------" + counter); PreChargeCheck preChargeCheck1 = redisService.getCacheObject(key); //5分钟内未启动成功,退回金额。 - if(null == counter || counter < 1800){ + if (null == counter || counter < 1800) { counter = (null == counter ? 0 : counter) + 1; boot_failed_map.put(code, counter); //启动失败 @@ -871,7 +875,7 @@ this.updateById(order); redisService.setCacheObject(key, preChargeCheck1, 24L, TimeUnit.HOURS); //推送三方平台订单状态 - if(2 == chargingOrder.getOrderSource()){ + if (2 == chargingOrder.getOrderSource()) { tcecClient.notificationEquipChargeStatus(chargingOrder.getStartChargeSeq(), chargingOrder.getOperatorId()); } return true; @@ -881,16 +885,17 @@ /** * 修改安全检测数据 + * * @param securityDetection */ @Override - public void securityDetection(SecurityDetectionVO securityDetection){ + public void securityDetection(SecurityDetectionVO securityDetection) { GetChargingGunByCode code = new GetChargingGunByCode(); code.setCharging_pile_code(securityDetection.getCharging_pile_code()); code.setCharging_gun_code(securityDetection.getCharging_gun_code()); TChargingGun chargingGun = chargingGunClient.getChargingGunByCode(code).getData(); PreChargeCheck preChargeCheck1 = redisService.getCacheObject("AQJC_" + chargingGun.getId()); - if(null != preChargeCheck1){ + if (null != preChargeCheck1) { preChargeCheck1.setElectronicLockLock(true); preChargeCheck1.setInsulationTesting(true); preChargeCheck1.setSecureConnectionDetection(securityDetection.getSecure_connection() == 1); @@ -900,6 +905,7 @@ /** * 启动充电应答 + * * @param message */ @Override @@ -907,17 +913,17 @@ Integer startup_result = message.getStartup_result(); Integer failure_cause = message.getFailure_cause(); TChargingOrder order = this.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getCode, message.getTransaction_serial_number())); - if(order.getStatus() != 2){ + if (order.getStatus() != 2) { return; } String code = order.getCode(); - PreChargeCheck preChargeCheck1 = redisService.getCacheObject("AQJC_" + order.getChargingGunId()); - if(null != preChargeCheck1){ + PreChargeCheck preChargeCheck1 = redisService.getCacheObject("AQJC_" + order.getChargingGunId()); + if (null != preChargeCheck1) { preChargeCheck1.setElectronicLockLock(true); preChargeCheck1.setInsulationTesting(true); preChargeCheck1.setStartupSuccess(1); } - if(0 == startup_result){ + if (0 == startup_result) { //启动失败 preChargeCheck1.setStartupSuccess(3); preChargeCheck1.setFailureCause(failure_cause); @@ -925,7 +931,7 @@ refund(code); order.setStatus(-1); order.setEndMode(0); - }else{ + } else { //启动成功 preChargeCheck1.setStartupSuccess(2); order.setStatus(3); @@ -939,16 +945,16 @@ redisService.setCacheObject("AQJC_" + order.getChargingGunId(), preChargeCheck1, 24L, TimeUnit.HOURS); this.updateById(order); - if(3 == order.getStatus()){ + if (3 == order.getStatus()) { //推送监管平台订单状态 - new Thread(()->{ + new Thread(() -> { ChargingOrderVo chargingOrderVo = new ChargingOrderVo(); BeanUtils.copyProperties(order, chargingOrderVo); chargingMessageClient.pushOrderStatus(chargingOrderVo); }).start(); } //推送三方平台启动充电结果 - if(2 == order.getOrderSource()){ + if (2 == order.getOrderSource()) { StartChargeResult result = new StartChargeResult(); result.setStartChargeSeq(order.getStartChargeSeq()); result.setStartChargeSeqStat(3 == order.getStatus() ? 2 : 4); @@ -964,12 +970,13 @@ /** * 启动失败后的退款,取消订单 + * * @param code */ - public void refund(String code){ + public void refund(String code) { log.info(code + ":-------------------充电启动失败,执行退款-------------------"); TChargingOrder chargingOrder = this.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getCode, code)); - if(chargingOrder.getOrderSource() == 1 && chargingOrder.getStatus() == 2){ + if (chargingOrder.getOrderSource() == 1 && chargingOrder.getStatus() == 2) { Integer rechargePaymentType = chargingOrder.getRechargePaymentType(); BigDecimal rechargeAmount = chargingOrder.getRechargeAmount(); //构建退款明细 @@ -988,7 +995,7 @@ chargingOrderRefund.setRefundRemark("全额退款"); chargingOrderRefund.setRefundTotalAmount(rechargeAmount); chargingOrderRefund.setPayAmount(rechargeAmount); - if(1 == rechargePaymentType){ + if (1 == rechargePaymentType) { WxPaymentRefundModel model = new WxPaymentRefundModel(); model.setOut_trade_no(chargingOrder.getCode()); model.setOut_refund_no(chargingOrderRefund.getRefundCode()); @@ -1000,7 +1007,7 @@ amount.setCurrency("CNY"); model.setAmount(amount); R<Map<String, Object>> orderR = wxPaymentClient.refundOrderR(model); - if(200 == orderR.getCode()){ + if (200 == orderR.getCode()) { chargingOrderRefundService.save(chargingOrderRefund); //手续费 Map<String, Object> amount1 = (Map<String, Object>) orderR.getData().get("amount"); @@ -1009,36 +1016,36 @@ chargingOrderRefund.setRefundFee(refund_fee); chargingOrderRefundService.updateById(chargingOrderRefund); //回退会员折扣次数 - if(chargingOrder.getVipDiscountAmount().compareTo(BigDecimal.ZERO) > 0){ + if (chargingOrder.getVipDiscountAmount().compareTo(BigDecimal.ZERO) > 0) { TAppUser appUser = appUserClient.getUserById(chargingOrder.getAppUserId()).getData(); GetAppUserVipDetail getAppUserVipDetail = new GetAppUserVipDetail(); getAppUserVipDetail.setAppUserId(chargingOrder.getAppUserId()); getAppUserVipDetail.setVipId(appUser.getVipId()); TAppUserVipDetail data = appUserVipDetailClient.getAppUserVipDetail(getAppUserVipDetail).getData(); - if(null != data){ + if (null != data) { data.setChargeNum(data.getChargeNum() + 1); appUserVipDetailClient.updateAppUserVipDetail(data); } } } } - if(2 == rechargePaymentType){ + if (2 == rechargePaymentType) { RefundReq dto = new RefundReq(); dto.setOutTradeNo(chargingOrder.getCode()); dto.setOutRequestNo(chargingOrderRefund.getCode()); dto.setRefundAmount(rechargeAmount.toString()); dto.setRefundReason("充电失败,取消充电订单"); RefundResp resp = aliPaymentClient.refund(dto).getData(); - if(null != resp){ + if (null != resp) { chargingOrderRefundService.save(chargingOrderRefund); //回退会员折扣次数 - if(chargingOrder.getVipDiscountAmount().compareTo(BigDecimal.ZERO) > 0){ + if (chargingOrder.getVipDiscountAmount().compareTo(BigDecimal.ZERO) > 0) { TAppUser appUser = appUserClient.getUserById(chargingOrder.getAppUserId()).getData(); GetAppUserVipDetail getAppUserVipDetail = new GetAppUserVipDetail(); getAppUserVipDetail.setAppUserId(chargingOrder.getAppUserId()); getAppUserVipDetail.setVipId(appUser.getVipId()); TAppUserVipDetail data = appUserVipDetailClient.getAppUserVipDetail(getAppUserVipDetail).getData(); - if(null != data){ + if (null != data) { data.setChargeNum(data.getChargeNum() + 1); appUserVipDetailClient.updateAppUserVipDetail(data); } @@ -1052,28 +1059,28 @@ chargingOrderStartupFailureWxRefund(chargingOrderRefund.getRefundCode(), resp.getTradeNo(), "SUCCESS", null); } } - if(3 == rechargePaymentType){ + if (3 == rechargePaymentType) { RefundReq dto = new RefundReq(); dto.setOutTradeNo(chargingOrder.getRechargeSerialNumber()); dto.setOutRequestNo(chargingOrderRefund.getCode()); dto.setRefundAmount(rechargeAmount.toString()); dto.setRefundReason("充电失败,取消充电订单"); RefundResp resp = h5AliPaymentClient.refund(dto).getData(); - if(null != resp && "10000".equals(resp.getCode())){ + if (null != resp && "10000".equals(resp.getCode())) { chargingOrderRefundService.save(chargingOrderRefund); //回退会员折扣次数 - if(chargingOrder.getVipDiscountAmount().compareTo(BigDecimal.ZERO) > 0){ + if (chargingOrder.getVipDiscountAmount().compareTo(BigDecimal.ZERO) > 0) { TAppUser appUser = appUserClient.getUserById(chargingOrder.getAppUserId()).getData(); GetAppUserVipDetail getAppUserVipDetail = new GetAppUserVipDetail(); getAppUserVipDetail.setAppUserId(chargingOrder.getAppUserId()); getAppUserVipDetail.setVipId(appUser.getVipId()); TAppUserVipDetail data = appUserVipDetailClient.getAppUserVipDetail(getAppUserVipDetail).getData(); - if(null != data){ + if (null != data) { data.setChargeNum(data.getChargeNum() + 1); appUserVipDetailClient.updateAppUserVipDetail(data); } } - + try { Thread.sleep(1000); } catch (InterruptedException e) { @@ -1082,16 +1089,15 @@ chargingOrderStartupFailureWxRefund(chargingOrderRefund.getRefundCode(), resp.getTradeNo(), "SUCCESS", null); } } - + } } - - public void refund1(String code, BigDecimal money){ + public void refund1(String code, BigDecimal money) { log.info(code + ":-------------------充电成功,执行手动退款-------------------"); TChargingOrder chargingOrder = this.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getCode, code)); - if(chargingOrder.getOrderSource() == 1){ + if (chargingOrder.getOrderSource() == 1) { BigDecimal rechargeAmount = chargingOrder.getRechargeAmount(); Integer rechargePaymentType = chargingOrder.getRechargePaymentType(); //构建退款明细 @@ -1110,7 +1116,7 @@ chargingOrderRefund.setRefundRemark("充电完成退款,手动退款"); chargingOrderRefund.setRefundTotalAmount(money); chargingOrderRefund.setPayAmount(money); - if(1 == rechargePaymentType){ + if (1 == rechargePaymentType) { WxPaymentRefundModel model = new WxPaymentRefundModel(); model.setOut_trade_no(chargingOrder.getCode()); model.setOut_refund_no(chargingOrderRefund.getRefundCode()); @@ -1122,7 +1128,7 @@ amount.setCurrency("CNY"); model.setAmount(amount); R<Map<String, Object>> orderR = wxPaymentClient.refundOrderR(model); - if(200 == orderR.getCode()){ + if (200 == orderR.getCode()) { chargingOrderRefundService.save(chargingOrderRefund); //手续费 Map<String, Object> amount1 = (Map<String, Object>) orderR.getData().get("amount"); @@ -1132,14 +1138,14 @@ chargingOrderRefundService.updateById(chargingOrderRefund); } } - if(2 == rechargePaymentType){ + if (2 == rechargePaymentType) { RefundReq dto = new RefundReq(); dto.setOutTradeNo(chargingOrder.getCode()); dto.setOutRequestNo(chargingOrderRefund.getCode()); dto.setRefundAmount(money.toString()); dto.setRefundReason("充电完成退款"); RefundResp resp = aliPaymentClient.refund(dto).getData(); - if(null != resp){ + if (null != resp) { chargingOrderRefundService.save(chargingOrderRefund); try { Thread.sleep(1000); @@ -1149,14 +1155,14 @@ chargingOrderStartupFailureWxRefund(chargingOrderRefund.getRefundCode(), resp.getTradeNo(), "SUCCESS", null); } } - if(3 == rechargePaymentType){ + if (3 == rechargePaymentType) { RefundReq dto = new RefundReq(); dto.setOutTradeNo(chargingOrder.getRechargeSerialNumber()); dto.setOutRequestNo(chargingOrderRefund.getCode()); dto.setRefundAmount(money.toString()); dto.setRefundReason("充电完成退款"); RefundResp resp = h5AliPaymentClient.refund(dto).getData(); - if(null != resp && "10000".equals(resp.getCode())){ + if (null != resp && "10000".equals(resp.getCode())) { chargingOrderRefundService.save(chargingOrderRefund); try { Thread.sleep(1000); @@ -1166,20 +1172,21 @@ chargingOrderStartupFailureWxRefund(chargingOrderRefund.getRefundCode(), resp.getTradeNo(), "SUCCESS", null); } } - + } } - - + + /** * 启动失败后微信退款的回调处理 + * * @param out_refund_no * @param refund_id * @param tradeState * @param success_time * @return */ - public AjaxResult chargingOrderStartupFailureWxRefund(String out_refund_no, String refund_id, String tradeState, String success_time){ + public AjaxResult chargingOrderStartupFailureWxRefund(String out_refund_no, String refund_id, String tradeState, String success_time) { TChargingOrderRefund one = chargingOrderRefundService.getOne(new LambdaQueryWrapper<TChargingOrderRefund>().eq(TChargingOrderRefund::getRefundCode, out_refund_no)); one.setRefundSerialNumber(refund_id); one.setRefundStatus(2); @@ -1196,12 +1203,11 @@ this.updateById(chargingOrder); return AjaxResult.success(); } - - - - + + /** * 获取充电中的详情 + * * @param id * @return */ @@ -1210,7 +1216,7 @@ Long userId = tokenService.getLoginUserApplet().getUserId(); TChargingOrder one = this.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getAppUserId, userId).eq(TChargingOrder::getChargingGunId, id) .eq(TChargingOrder::getRechargePaymentStatus, 2).eq(TChargingOrder::getDelFlag, 0).orderByDesc(TChargingOrder::getStartTime).last(" limit 0, 1")); - if(null == one || !one.getAppUserId().equals(userId)){ + if (null == one || !one.getAppUserId().equals(userId)) { return null; } ChargingDetails chargingDetails = new ChargingDetails(); @@ -1223,7 +1229,7 @@ chargingDetails.setStatus(one.getStatus()); chargingDetails.setChargingCost(one.getResidualAmount()); UploadRealTimeMonitoringData data = uploadRealTimeMonitoringDataService.getLastDataById(one.getCode()); - if(null != data){ + if (null != data) { chargingDetails.setChargeCurrent(data.getOutput_current()); chargingDetails.setChargeVoltage(data.getOutput_voltage()); BigDecimal power = data.getOutput_current().multiply(data.getOutput_voltage()).divide(new BigDecimal(1000), new MathContext(4, RoundingMode.HALF_EVEN)); @@ -1234,7 +1240,7 @@ Integer h = Integer.valueOf(data.getCumulative_charging_time() / 60); Integer m = Integer.valueOf(data.getCumulative_charging_time() % 60); chargingDetails.setChargedTime(String.format("%02d", h) + ":" + String.format("%02d", m)); - if(null != one.getAppUserCarId()){ + if (null != one.getAppUserCarId()) { TAppUserCar appUserCar = appUserCarClient.getCarById(one.getAppUserCarId().toString()).getData(); // 续航 = 续航里程 * soc BigDecimal multiply = new BigDecimal(data.getSoc()).divide(new BigDecimal(100)).multiply(new BigDecimal(appUserCar.getEndurance())); @@ -1247,6 +1253,7 @@ /** * 停止充电操作 + * * @param id 订单id * @return */ @@ -1254,14 +1261,14 @@ public AjaxResult stopCharging(String id) { TChargingOrder order = this.getById(id); Integer status = order.getStatus(); - if(status != 3){ + if (status != 3) { return AjaxResult.error("还未开始充电"); } - if(status == 4 || status == 5){ + if (status == 4 || status == 5) { return AjaxResult.error("不能重复操作"); } Long userId = tokenService.getLoginUserApplet().getUserId(); - if(!order.getAppUserId().equals(userId)){ + if (!order.getAppUserId().equals(userId)) { return AjaxResult.error("权限不足"); } order.setEndTime(LocalDateTime.now()); @@ -1273,7 +1280,7 @@ TChargingGun chargingGun = chargingGunClient.getChargingGunById(order.getChargingGunId()).getData(); //异步线程处理停机 ExecutorService cachedThreadPool = Executors.newFixedThreadPool(1); - cachedThreadPool.execute(()->{ + cachedThreadPool.execute(() -> { //调用硬件停止充电,停止成功后开始计算费用退款 TChargingPile chargingPile = chargingPileClient.getChargingPileById(order.getChargingPileId()).getData(); PlatformStopCharging platformStopCharging = new PlatformStopCharging(); @@ -1290,7 +1297,7 @@ chargingMessageClient.pushOrderStatus(chargingOrderVo); }); //推送三方平台 - if(2 == order.getOrderSource()){ + if (2 == order.getOrderSource()) { tcecClient.notificationEquipChargeStatus(order.getStartChargeSeq(), order.getOperatorId()); } @@ -1300,9 +1307,10 @@ /** * 结束充电后处理用户标签数据 + * * @param chargingOrder */ - public void editUserTag(TChargingOrder chargingOrder){ + public void editUserTag(TChargingOrder chargingOrder) { //处理用户标签数据 List<TUserTag> data = userTagClient.getAllUserTag().getData(); //累计充电次数 @@ -1318,7 +1326,7 @@ String end = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); long count1 = this.count(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getAppUserId, chargingOrder.getAppUserId()) .eq(TChargingOrder::getRechargePaymentStatus, 2).between(TChargingOrder::getStartTime, start, end).eq(TChargingOrder::getDelFlag, 0)); - if(null == data1 && count1 >= times){ + if (null == data1 && count1 >= times) { data1 = new TAppUserTag(); data1.setAppUserId(chargingOrder.getAppUserId()); data1.setUserTagId(tUserTag.getId()); @@ -1342,7 +1350,7 @@ String end = endTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); long count1 = this.count(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getAppUserId, chargingOrder.getAppUserId()) .eq(TChargingOrder::getRechargePaymentStatus, 2).between(TChargingOrder::getStartTime, start, end).eq(TChargingOrder::getDelFlag, 0)); - if(null == data1 && count1 >= times){ + if (null == data1 && count1 >= times) { data1 = new TAppUserTag(); data1.setAppUserId(chargingOrder.getAppUserId()); data1.setUserTagId(tUserTag.getId()); @@ -1355,46 +1363,47 @@ /** * 推荐奖励(被推荐首单奖励) + * * @param chargingOrder */ - public void referralReward(TChargingOrder chargingOrder){ + public void referralReward(TChargingOrder chargingOrder) { //处理推荐奖励(被推荐首单奖励) TAppUser appUser = appUserClient.getUserById(chargingOrder.getAppUserId()).getData(); long count = this.count(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getAppUserId, chargingOrder.getAppUserId()) .in(TChargingOrder::getStatus, Arrays.asList(4, 5)).eq(TChargingOrder::getDelFlag, 0)); - if(null != appUser.getInviteUserId() && 1 == count){ + if (null != appUser.getInviteUserId() && 1 == count) { TIntegralRule integralRule = integralRuleClient.getSet().getData(); String inviteUsersToEarnPoints = integralRule.getInviteUsersToEarnPoints(); JSONObject jsonObject = JSON.parseObject(inviteUsersToEarnPoints); Integer num1 = jsonObject.getInteger("num1"); TAppUser appUser1 = appUserClient.getUserById(appUser.getInviteUserId()).getData(); - if(null != appUser1.getVipId()){ + if (null != appUser1.getVipId()) { TVip vip = vipClient.getInfo1(appUser1.getVipId()).getData(); Integer doubleIntegration = vip.getDoubleIntegration(); //双倍积分 - if(1 == doubleIntegration){ + if (1 == doubleIntegration) { num1 *= 2; } - + } GetInviteUser query = new GetInviteUser(); query.setAppUserId(appUser1.getId()); query.setBeInvitedAppUserId(chargingOrder.getAppUserId()); TInviteUser inviteUser = inviteUserClient.getInviteUser(query).getData(); - if(null == inviteUser){ + if (null == inviteUser) { inviteUser = new TInviteUser(); inviteUser.setAppUserId(appUser1.getId()); inviteUser.setBeInvitedAppUserId(chargingOrder.getAppUserId()); inviteUser.setAward(num1); inviteUser.setCreateTime(LocalDateTime.now()); inviteUserClient.saveInviteUser(inviteUser); - }else{ + } else { inviteUser.setAward(num1); inviteUserClient.updateInviteUser(inviteUser); } - if(num1 > 0){ + if (num1 > 0) { TAppUserIntegralChange appUserIntegralChange = new TAppUserIntegralChange(); String code = Double.valueOf(Math.random() * 1000).intValue() + LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS")); appUserIntegralChange.setCode(code); @@ -1414,27 +1423,27 @@ } - /** * 停止充电应答结果处理 + * * @param platformStopChargingReply */ @Override - public void terminateSuccessfulResponse(PlatformStopChargingReplyVO platformStopChargingReply){ + public void terminateSuccessfulResponse(PlatformStopChargingReplyVO platformStopChargingReply) { GetChargingGunByCode code = new GetChargingGunByCode(); code.setCharging_gun_code(platformStopChargingReply.getCharging_gun_code()); code.setCharging_pile_code(platformStopChargingReply.getCharging_pile_code()); TChargingGun chargingGun = chargingGunClient.getChargingGunByCode(code).getData(); TChargingOrder order = this.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getChargingGunId, chargingGun.getId()) .orderByDesc(TChargingOrder::getEndTime).eq(TChargingOrder::getRechargePaymentStatus, 2).last(" limit 0, 1")); - if(null != order && order.getStatus() != 4){ + if (null != order && order.getStatus() != 4) { return; } String code1 = order.getCode(); - if(0 == platformStopChargingReply.getStop_result()){ + if (0 == platformStopChargingReply.getStop_result()) { String failure_cause = ""; - switch (platformStopChargingReply.getFailure_cause()){ + switch (platformStopChargingReply.getFailure_cause()) { case 0: failure_cause = "无"; break; @@ -1449,7 +1458,7 @@ break; } log.info(code1 + ":停机失败:订单号:{},失败原因:{}", order.getCode(), failure_cause); - }else{ + } else { TChargingOrder chargingOrder = new TChargingOrder(); chargingOrder.setId(order.getId()); chargingOrder.setAppUserId(order.getAppUserId()); @@ -1459,12 +1468,8 @@ } - - - - - @Override - public TCharingOrderVO chargingOrder(ChargingOrderQuery dto) { + @Override + public TCharingOrderVO chargingOrder(ChargingOrderQuery dto) { TCharingOrderVO tCharingOrderVO = new TCharingOrderVO(); List<TChargingGun> allGun = chargingGunClient.getAllGun().getData(); List<TChargingPile> allPile = chargingGunClient.getAllPile().getData(); @@ -1475,22 +1480,22 @@ String startTime2 = null; String endTime1 = null; String endTime2 = null; - - if (StringUtils.hasLength(dto.getStartTime())){ + + if (StringUtils.hasLength(dto.getStartTime())) { String[] split = dto.getStartTime().split(" - "); startTime1 = split[0]; startTime2 = split[1]; } - if (StringUtils.hasLength(dto.getEndTime())){ + if (StringUtils.hasLength(dto.getEndTime())) { String[] split = dto.getEndTime().split(" - "); endTime1 = split[0]; endTime2 = split[1]; } - PageInfo<ChargingOrderVO> pageInfo = new PageInfo<>(dto.getPageCurr(),dto.getPageSize()); - - if (StringUtils.hasLength(dto.getPhone())){ + PageInfo<ChargingOrderVO> pageInfo = new PageInfo<>(dto.getPageCurr(), dto.getPageSize()); + + if (StringUtils.hasLength(dto.getPhone())) { List<Long> data = appUserClient.getUserIdsByPhone(dto.getPhone()).getData(); - if (data.isEmpty()){ + if (data.isEmpty()) { tCharingOrderVO.setList(pageInfo); return tCharingOrderVO; } @@ -1502,70 +1507,70 @@ Integer roleType = sysUser.getRoleType(); //如果没传siteId,获取当前登陆人所有的siteIds List<Integer> siteIds = new ArrayList<>(); - if (dto.getSiteId()==null){ - if (userId != null){ + if (dto.getSiteId() == null) { + if (userId != null) { List<GetSiteListDTO> data = siteClient.getSiteListByUserId(userId).getData(); for (GetSiteListDTO datum : data) { siteIds.add(datum.getId()); } } - }else { + } else { siteIds.add(dto.getSiteId()); } - if (siteIds.isEmpty()){ + if (siteIds.isEmpty()) { siteIds.add(-1); - }else{ - if (roleType == 2){ + } else { + if (roleType == 2) { List<Integer> integers = new ArrayList<>(); for (Integer siteId : siteIds) { // 校验有没有这个站点的权限 - List<Boolean> t1= partnerClient.getChargingOrderMenu(sysUser.getObjectId(),siteId).getData(); - + List<Boolean> t1 = partnerClient.getChargingOrderMenu(sysUser.getObjectId(), siteId).getData(); + Boolean b = t1.get(1); - if (b){ + if (b) { integers.add(siteId); } } siteIds = integers; } } - if (siteIds.isEmpty())siteIds.add(-1); + if (siteIds.isEmpty()) siteIds.add(-1); dto.setSiteIds(siteIds); - List<ChargingOrderVO> list = this.baseMapper.chargingOrder(pageInfo,dto,startTime1,startTime2,endTime1,endTime2); - BigDecimal total = new BigDecimal("0"); - long time = 0L; - BigDecimal electronicMoney = new BigDecimal("0"); - BigDecimal serviceMoney = new BigDecimal("0"); - BigDecimal commissionMoney = new BigDecimal("0"); + List<ChargingOrderVO> list = this.baseMapper.chargingOrder(pageInfo, dto, startTime1, startTime2, endTime1, endTime2); + BigDecimal total = new BigDecimal("0"); + long time = 0L; + BigDecimal electronicMoney = new BigDecimal("0"); + BigDecimal serviceMoney = new BigDecimal("0"); + BigDecimal commissionMoney = new BigDecimal("0"); // BigDecimal refundMoney = new BigDecimal("0"); - BigDecimal paymentMoney = new BigDecimal("0"); + BigDecimal paymentMoney = new BigDecimal("0"); List<TChargingOrderAccountingStrategy> list3 = chargingOrderAccountingStrategyService.list(); - + for (ChargingOrderVO chargingOrderVO : list) { - if (roleType == 2){ + if (roleType == 2) { for (Integer siteId : siteIds) { // 校验有没有这个站点的权限 - List<Boolean> t1= partnerClient.getChargingOrderMenu(sysUser.getObjectId(),siteId).getData(); + List<Boolean> t1 = partnerClient.getChargingOrderMenu(sysUser.getObjectId(), siteId).getData(); chargingOrderVO.setAuthRecord(t1.get(0)); } } - chargingOrderVO.setCommissionAmount(chargingOrderVO.getRechargeAmount()!=null?chargingOrderVO.getRechargeAmount().multiply(new BigDecimal("0.006")):new BigDecimal("0")); - chargingOrderVO.setPlatFormMoney(chargingOrderVO.getRechargeAmount()!=null?chargingOrderVO.getRechargeAmount().multiply(new BigDecimal("0.006")).setScale(2,BigDecimal.ROUND_DOWN):new BigDecimal("0")); - chargingOrderVO.setUid(chargingOrderVO.getId()+""); - TChargingGun data3 = allGun.stream().filter(e->e.getId().equals(chargingOrderVO.getChargingGunId())).findFirst().orElse(null); - TChargingPile data2 = allPile.stream().filter(e->e.getId().equals(chargingOrderVO.getChargingPileId())).findFirst().orElse(null); - if (chargingOrderVO.getSiteId()!=null){ + chargingOrderVO.setCommissionAmount(chargingOrderVO.getRechargeAmount() != null ? chargingOrderVO.getRechargeAmount().multiply(new BigDecimal("0.006")) : new BigDecimal("0")); + chargingOrderVO.setPlatFormMoney(chargingOrderVO.getRechargeAmount() != null ? chargingOrderVO.getRechargeAmount().multiply(new BigDecimal("0.006")).setScale(2, BigDecimal.ROUND_DOWN) : new BigDecimal("0")); + chargingOrderVO.setUid(chargingOrderVO.getId() + ""); + TChargingGun data3 = allGun.stream().filter(e -> e.getId().equals(chargingOrderVO.getChargingGunId())).findFirst().orElse(null); + TChargingPile data2 = allPile.stream().filter(e -> e.getId().equals(chargingOrderVO.getChargingPileId())).findFirst().orElse(null); + if (chargingOrderVO.getSiteId() != null) { List<Integer> integers = new ArrayList<>(); integers.add(chargingOrderVO.getSiteId()); Site site = data9.stream().filter(e -> e.getId().equals(chargingOrderVO.getSiteId())).findFirst().orElse(null); - if (site!=null)chargingOrderVO.setSiteName(site.getName()); + if (site != null) chargingOrderVO.setSiteName(site.getName()); } - if (data2!=null && data3!=null){ - chargingOrderVO.setTerminalName(data2.getName()+"-"+data3.getName()); + if (data2 != null && data3 != null) { + chargingOrderVO.setTerminalName(data2.getName() + "-" + data3.getName()); } // 充电订单 明细记录 List<TChargingOrderAccountingStrategy> chargingOrderId = list3.stream().filter(e -> e.getChargingOrderId().equals(chargingOrderVO.getId())).collect(Collectors.toList()); - if (chargingOrderVO.getStartTime()!=null && chargingOrderVO.getEndTime()!=null){ + if (chargingOrderVO.getStartTime() != null && chargingOrderVO.getEndTime() != null) { LocalDateTime startTime = chargingOrderVO.getStartTime(); LocalDateTime endTime = chargingOrderVO.getEndTime(); // 计算时间差 单位秒 @@ -1575,10 +1580,10 @@ BigDecimal electronic_reduce = chargingOrderId.stream().map(TChargingOrderAccountingStrategy::getPeriodElectricPrice).reduce(BigDecimal.ZERO, BigDecimal::add); chargingOrderVO.setElectrovalence(electronic_reduce); BigDecimal service_reduce = chargingOrderId.stream().map(TChargingOrderAccountingStrategy::getPeriodServicePrice).reduce(BigDecimal.ZERO, BigDecimal::add); - if (!chargingOrderVO.getOrderSource().equals(2)){ + if (!chargingOrderVO.getOrderSource().equals(2)) { chargingOrderVO.setServiceCharge(service_reduce); chargingOrderVO.setSharingAmount(BigDecimal.ZERO); - }else{ + } else { chargingOrderVO.setServiceCharge(service_reduce.multiply(new BigDecimal("0.8"))); chargingOrderVO.setSharingAmount(service_reduce.multiply(new BigDecimal("0.2"))); } @@ -1588,28 +1593,28 @@ chargingOrderVO.setCount(size); // 用户手机号 TAppUser data = data6.stream().filter(e -> e.getId().equals(chargingOrderVO.getAppUserId())).findFirst().orElse(null); - if (data!=null){ + if (data != null) { // 车牌号 chargingOrderVO.setPhone(data.getPhone()); List<Long> longs = new ArrayList<>(); - if (chargingOrderVO.getAppUserCarId()!=null){ + if (chargingOrderVO.getAppUserCarId() != null) { longs.add(chargingOrderVO.getAppUserCarId()); TAppUserCar tAppUserCar = data4.stream().filter(e -> e.getId().equals(chargingOrderVO.getAppUserCarId())).findFirst().orElse(null); - if (tAppUserCar!=null){ + if (tAppUserCar != null) { chargingOrderVO.setLicensePlate(tAppUserCar.getLicensePlate()); } - }else{ + } else { chargingOrderVO.setLicensePlate(chargingOrderVO.getPlateNum()); } - + } } // List<TChargingOrderRefund> chargingOrderRefunds = chargingOrderRefundService.lambdaQuery() // .eq(TChargingOrderRefund::getRefundStatus,2).list(); - - - Map<String, Object> map = this.baseMapper.chargingOrderNolimit(dto,startTime1,startTime2,endTime1,endTime2); + + + Map<String, Object> map = this.baseMapper.chargingOrderNolimit(dto, startTime1, startTime2, endTime1, endTime2); // for (ChargingOrderVO chargingOrderVO : list1) { // if(null == chargingOrderVO.getStatus() || 5 != chargingOrderVO.getStatus()){ // continue; @@ -1640,13 +1645,13 @@ //// refundMoney = refundMoney.add(tChargingOrderRefund.getRefundTotalAmount()); //// } // } - if(null != map){ - tCharingOrderVO.setTotal(map.get("total")==null?BigDecimal.ZERO:(BigDecimal) map.get("total")); - tCharingOrderVO.setTime(map.get("time")==null?0L:(Long) map.get("time")); - tCharingOrderVO.setIncome((map.get("paymentMoney")==null?BigDecimal.ZERO:(BigDecimal) map.get("paymentMoney")).setScale(2, BigDecimal.ROUND_HALF_EVEN)); - tCharingOrderVO.setElectronicMoney((map.get("electronicMoney")==null?BigDecimal.ZERO:(BigDecimal) map.get("electronicMoney")).setScale(2, BigDecimal.ROUND_HALF_EVEN)); - tCharingOrderVO.setServiceMoney((map.get("serviceMoney")==null?BigDecimal.ZERO:(BigDecimal) map.get("serviceMoney")).setScale(2, BigDecimal.ROUND_HALF_EVEN)); - }else{ + if (null != map) { + tCharingOrderVO.setTotal(map.get("total") == null ? BigDecimal.ZERO : (BigDecimal) map.get("total")); + tCharingOrderVO.setTime(map.get("time") == null ? 0L : (Long) map.get("time")); + tCharingOrderVO.setIncome((map.get("paymentMoney") == null ? BigDecimal.ZERO : (BigDecimal) map.get("paymentMoney")).setScale(2, BigDecimal.ROUND_HALF_EVEN)); + tCharingOrderVO.setElectronicMoney((map.get("electronicMoney") == null ? BigDecimal.ZERO : (BigDecimal) map.get("electronicMoney")).setScale(2, BigDecimal.ROUND_HALF_EVEN)); + tCharingOrderVO.setServiceMoney((map.get("serviceMoney") == null ? BigDecimal.ZERO : (BigDecimal) map.get("serviceMoney")).setScale(2, BigDecimal.ROUND_HALF_EVEN)); + } else { tCharingOrderVO.setTotal(BigDecimal.ZERO); tCharingOrderVO.setTime(0L); tCharingOrderVO.setIncome(BigDecimal.ZERO); @@ -1655,18 +1660,18 @@ } pageInfo.setRecords(list); tCharingOrderVO.setList(pageInfo); - return tCharingOrderVO; - } - + return tCharingOrderVO; + } + @Override public R<PageInfo<PayOrderDto>> payOrderQuery(PayOrderQueryDto payOrderQueryDto) { - PageInfo<PayOrderDto> pageInfo = new PageInfo<>(payOrderQueryDto.getPageCurr(),payOrderQueryDto.getPageSize()); - List<PayOrderDto> list = this.baseMapper.payOrderQuery(pageInfo,payOrderQueryDto); + PageInfo<PayOrderDto> pageInfo = new PageInfo<>(payOrderQueryDto.getPageCurr(), payOrderQueryDto.getPageSize()); + List<PayOrderDto> list = this.baseMapper.payOrderQuery(pageInfo, payOrderQueryDto); for (PayOrderDto payOrderDto : list) { - if (payOrderDto.getType()==2||payOrderDto.getType()==3){ + if (payOrderDto.getType() == 2 || payOrderDto.getType() == 3) { payOrderDto.setFinalAmount(payOrderDto.getOrderAmount()); } - if (payOrderDto.getType()==1&&payOrderDto.getStatus()==3){ + if (payOrderDto.getType() == 1 && payOrderDto.getStatus() == 3) { payOrderDto.setFinalAmount(payOrderDto.getOrderAmount()); payOrderDto.setOrderAmount(payOrderDto.getOrderAmount()); payOrderDto.setPaymentAmount(payOrderDto.getOrderAmount()); @@ -1675,117 +1680,117 @@ pageInfo.setRecords(list); return R.ok(pageInfo); } - + @Override public R<PageInfo<TChargingOrderRefund>> getRefundList(ChargingRefundDto chargingRefundDto) { - PageInfo<TChargingOrderRefund> pageInfo = new PageInfo<>(chargingRefundDto.getPageCurr(),chargingRefundDto.getPageSize()); - List<TChargingOrderRefund> list = this.baseMapper.getRefundList(pageInfo,chargingRefundDto); + PageInfo<TChargingOrderRefund> pageInfo = new PageInfo<>(chargingRefundDto.getPageCurr(), chargingRefundDto.getPageSize()); + List<TChargingOrderRefund> list = this.baseMapper.getRefundList(pageInfo, chargingRefundDto); pageInfo.setRecords(list); - + return R.ok(pageInfo); } - + @Override public List<ChargingOrderGroup> chargingOrderGroup(ChargingPercentProvinceDto chargingPercentProvinceDto) { - + return this.baseMapper.chargingOrderGroup(chargingPercentProvinceDto); } - + @Override public List<SixChargingDto> charge(LocalDate sixBefore, List<Integer> siteIds) { - return this.baseMapper.charge(sixBefore,siteIds); + return this.baseMapper.charge(sixBefore, siteIds); } - + @Override - public List<SixCircleDto> circle(List<Integer> siteIds,LocalDate sixBefore) { - return this.baseMapper.circle(siteIds,sixBefore); + public List<SixCircleDto> circle(List<Integer> siteIds, LocalDate sixBefore) { + return this.baseMapper.circle(siteIds, sixBefore); } - + @Override public Map<String, Object> countAll(List<Integer> siteIds) { return this.baseMapper.countAll(siteIds); } - + @Override - public List<Map<String, Object>> getSumByType(LocalDate start,LocalDate end,List<Integer> siteIds) { + public List<Map<String, Object>> getSumByType(LocalDate start, LocalDate end, List<Integer> siteIds) { LocalDateTime start1 = start.atStartOfDay(); LocalDateTime end1 = end.atTime(LocalTime.MAX); - return this.baseMapper.getSumByType(start1,end1, siteIds); + return this.baseMapper.getSumByType(start1, end1, siteIds); } - + @Override - public List<Map<String, Object>> getDateData(LocalDate start,LocalDate end,List<Integer> siteIds) { + public List<Map<String, Object>> getDateData(LocalDate start, LocalDate end, List<Integer> siteIds) { LocalDateTime start1 = start.atStartOfDay(); LocalDateTime end1 = end.atTime(LocalTime.MAX); - return this.baseMapper.getDateData(start1,end1, siteIds); + return this.baseMapper.getDateData(start1, end1, siteIds); } - + @Override - public List<Map<String, Object>> getWeekData(LocalDate start,LocalDate end,List<Integer> siteIds) { + public List<Map<String, Object>> getWeekData(LocalDate start, LocalDate end, List<Integer> siteIds) { LocalDateTime start1 = start.atStartOfDay(); LocalDateTime end1 = end.atTime(LocalTime.MAX); - return this.baseMapper.getWeekData(start1,end1,siteIds); + return this.baseMapper.getWeekData(start1, end1, siteIds); } - + @Override - public List<Map<String, Object>> getMonthData(LocalDate start,LocalDate end,List<Integer> siteIds) { + public List<Map<String, Object>> getMonthData(LocalDate start, LocalDate end, List<Integer> siteIds) { LocalDateTime start1 = start.atStartOfDay(); LocalDateTime end1 = end.atTime(LocalTime.MAX); - return this.baseMapper.getMonthData(start1,end1,siteIds); + return this.baseMapper.getMonthData(start1, end1, siteIds); } - + @Override - public List<Map<String, Object>> getYearData(LocalDate start,LocalDate end,List<Integer> siteIds) { + public List<Map<String, Object>> getYearData(LocalDate start, LocalDate end, List<Integer> siteIds) { LocalDateTime start1 = start.atStartOfDay(); LocalDateTime end1 = end.atTime(LocalTime.MAX); - return this.baseMapper.getYearData(start1,end1,siteIds); + return this.baseMapper.getYearData(start1, end1, siteIds); } - + @Resource private SysUserClient sysUserClient; - - + + @Override public ChargingOrderTimeVO chargingList(ChargingListQuery dto) { String startTime1 = null; String startTime2 = null; String endTime1 = null; String endTime2 = null; - + List<TChargingGun> allGun = chargingGunClient.getAllGun().getData(); List<TChargingPile> allPile = chargingGunClient.getAllPile().getData(); - - if (StringUtils.hasLength(dto.getStartTime())){ + + if (StringUtils.hasLength(dto.getStartTime())) { String[] split = dto.getStartTime().split(" - "); startTime1 = split[0]; startTime2 = split[1]; } ChargingOrderTimeVO chargingOrderTimeVO = new ChargingOrderTimeVO(); - if (StringUtils.hasLength(dto.getPhone())){ + if (StringUtils.hasLength(dto.getPhone())) { List<Long> data = appUserClient.getUserIdsByPhone(dto.getPhone()).getData(); - if(data!=null){ - if (!data.isEmpty()){ + if (data != null) { + if (!data.isEmpty()) { dto.setUserIds(data); } - }else{ + } else { dto.setUserIds(new ArrayList<Long>()); } - if (dto.getUserIds().isEmpty()){ + if (dto.getUserIds().isEmpty()) { List<Long> carIds = dto.getUserIds(); carIds.add(-1L); dto.setUserIds(carIds); } } - if (StringUtils.hasLength(dto.getLicensePlate())){ + if (StringUtils.hasLength(dto.getLicensePlate())) { List<Long> data = appUserCarClient.getAppUserCarByLicensePlates(dto.getLicensePlate()).getData(); - if(data!=null){ - if (!data.isEmpty()){ + if (data != null) { + if (!data.isEmpty()) { dto.setCarIds(data); } - }else{ + } else { dto.setCarIds(new ArrayList<Long>()); } - if (dto.getCarIds().isEmpty()){ + if (dto.getCarIds().isEmpty()) { List<Long> carIds = dto.getCarIds(); carIds.add(-1L); dto.setCarIds(carIds); @@ -1797,27 +1802,27 @@ Integer roleType = sysUser.getRoleType(); //如果没传siteId,获取当前登陆人所有的siteIds List<Integer> siteIds = new ArrayList<>(); - if (dto.getSiteId()==null){ - if (userId != null){ + if (dto.getSiteId() == null) { + if (userId != null) { List<GetSiteListDTO> data = siteClient.getSiteListByUserId(userId).getData(); for (GetSiteListDTO datum : data) { siteIds.add(datum.getId()); } } - }else { + } else { siteIds.add(dto.getSiteId()); } - if (siteIds.isEmpty()){ + if (siteIds.isEmpty()) { siteIds.add(-1); - }else{ - if (roleType == 2){ + } else { + if (roleType == 2) { List<Integer> integers = new ArrayList<>(); for (Integer siteId : siteIds) { // 校验有没有这个站点的权限 - List<Boolean> t1= partnerClient.getChargingOrderMenu(sysUser.getObjectId(),siteId).getData(); - + List<Boolean> t1 = partnerClient.getChargingOrderMenu(sysUser.getObjectId(), siteId).getData(); + Boolean b = t1.get(1); - if (b){ + if (b) { integers.add(siteId); } } @@ -1825,39 +1830,39 @@ } } dto.setSiteIds(siteIds); - PageInfo<ChargingOrderListVO> pageInfo = new PageInfo<>(dto.getPageCurr(),dto.getPageSize()); - List<ChargingOrderListVO> list = this.baseMapper.chargingList(pageInfo,dto,startTime1,startTime2,endTime1,endTime2); + PageInfo<ChargingOrderListVO> pageInfo = new PageInfo<>(dto.getPageCurr(), dto.getPageSize()); + List<ChargingOrderListVO> list = this.baseMapper.chargingList(pageInfo, dto, startTime1, startTime2, endTime1, endTime2); List<Integer> siteIdsList = list.stream().map(ChargingOrderListVO::getSiteId).collect(Collectors.toList()); - if (siteIdsList.isEmpty())siteIdsList.add(-1); + if (siteIdsList.isEmpty()) siteIdsList.add(-1); List<Site> sites = siteClient.getSiteByIds(siteIdsList).getData(); - + for (ChargingOrderListVO chargingOrderListVO : list) { - if (roleType==2){ + if (roleType == 2) { List<Boolean> data = partnerClient.getChargingListMenu(sysUser.getObjectId(), chargingOrderListVO.getSiteId()).getData(); chargingOrderListVO.setAuthInfo(data.get(0)); chargingOrderListVO.setAuthCurve(data.get(1)); } chargingOrderListVO.setChargingCapacity(chargingOrderListVO.getElectricity()); BigDecimal bigDecimal = new BigDecimal("0.006"); - if (chargingOrderListVO.getOrderAmount()!=null){ + if (chargingOrderListVO.getOrderAmount() != null) { chargingOrderListVO.setCommissionAmount(chargingOrderListVO.getRechargeAmount().multiply(bigDecimal)); } chargingOrderListVO.setPaymentAmount(chargingOrderListVO.getPaymentAmount()); - chargingOrderListVO.setUid(chargingOrderListVO.getId()+""); + chargingOrderListVO.setUid(chargingOrderListVO.getId() + ""); List<Integer> integers = new ArrayList<>(); integers.add(chargingOrderListVO.getSiteId()); Site site = sites.stream().filter(e -> e.getId().equals(chargingOrderListVO.getSiteId())).findFirst().orElse(null); - if (site!=null){ + if (site != null) { chargingOrderListVO.setSiteName(site.getName()); } - if (chargingOrderListVO.getChargingGunId()!=null && chargingOrderListVO.getChargingPileId()!=null){ - TChargingGun data1 = allGun.stream().filter(e->e.getId().equals(chargingOrderListVO.getChargingGunId())).findFirst().orElse(null); - TChargingPile data2 = allPile.stream().filter(e->e.getId().equals(chargingOrderListVO.getChargingPileId())).findFirst().orElse(null); + if (chargingOrderListVO.getChargingGunId() != null && chargingOrderListVO.getChargingPileId() != null) { + TChargingGun data1 = allGun.stream().filter(e -> e.getId().equals(chargingOrderListVO.getChargingGunId())).findFirst().orElse(null); + TChargingPile data2 = allPile.stream().filter(e -> e.getId().equals(chargingOrderListVO.getChargingPileId())).findFirst().orElse(null); if (data2 != null && data1 != null) { chargingOrderListVO.setTerminalName(data2.getName() + "-" + data1.getName()); } } - if (chargingOrderListVO.getStartTime()!=null && chargingOrderListVO.getEndTime()!=null){ + if (chargingOrderListVO.getStartTime() != null && chargingOrderListVO.getEndTime() != null) { LocalDateTime startTime = chargingOrderListVO.getStartTime(); LocalDateTime endTime = chargingOrderListVO.getEndTime(); // 计算时间差 单位秒 @@ -1865,38 +1870,38 @@ chargingOrderListVO.setChargingSecond(between); } // 获取开始SOC 结束soc - if (chargingOrderListVO.getCode()!=null){ + if (chargingOrderListVO.getCode() != null) { List<UploadRealTimeMonitoringData> data6 = uploadRealTimeMonitoringDataService.getDataByOrderCode(chargingOrderListVO.getCode()); - - if (data6!=null && !data6.isEmpty()){ - int min = 100; - int max = 0; - for (UploadRealTimeMonitoringData uploadRealTimeMonitoringData : data6) { - if (uploadRealTimeMonitoringData.getSoc()>max){ - max = uploadRealTimeMonitoringData.getSoc(); + + if (data6 != null && !data6.isEmpty()) { + int min = 100; + int max = 0; + for (UploadRealTimeMonitoringData uploadRealTimeMonitoringData : data6) { + if (uploadRealTimeMonitoringData.getSoc() > max) { + max = uploadRealTimeMonitoringData.getSoc(); + } + if (uploadRealTimeMonitoringData.getSoc() != 0 && uploadRealTimeMonitoringData.getSoc() < min) { + min = uploadRealTimeMonitoringData.getSoc(); + } } - if (uploadRealTimeMonitoringData.getSoc()!=0 &&uploadRealTimeMonitoringData.getSoc()<min){ - min = uploadRealTimeMonitoringData.getSoc(); - } - } - chargingOrderListVO.setEndSoc(max+""); - chargingOrderListVO.setStartSoc(min+""); + chargingOrderListVO.setEndSoc(max + ""); + chargingOrderListVO.setStartSoc(min + ""); } } - - if (chargingOrderListVO.getAppUserId()!=null){ + + if (chargingOrderListVO.getAppUserId() != null) { TAppUser data3 = appUserClient.getUserById(chargingOrderListVO.getAppUserId()).getData(); List<Long> carId = new ArrayList<>(); - if (data3!=null){ + if (data3 != null) { if (chargingOrderListVO.getAppUserCarId() != null) { carId.add(chargingOrderListVO.getAppUserCarId()); - if (!carId.isEmpty()){ + if (!carId.isEmpty()) { List<TAppUserCar> data4 = appUserCarClient.getCarByIds(carId).getData(); - if (data4!=null && !data4.isEmpty()) { + if (data4 != null && !data4.isEmpty()) { chargingOrderListVO.setLicensePlate(data4.get(0).getLicensePlate()); } } - }else{ + } else { chargingOrderListVO.setLicensePlate(chargingOrderListVO.getPlateNum()); } chargingOrderListVO.setPhone(data3.getPhone()); @@ -1911,7 +1916,7 @@ BigDecimal gu = new BigDecimal("0"); BigDecimal total = new BigDecimal("0"); for (TChargingOrderAccountingStrategy temp : list2) { - if (temp.getChargingCapacity() == null){ + if (temp.getChargingCapacity() == null) { temp.setChargingCapacity(BigDecimal.ZERO); } switch (temp.getType()) { @@ -1930,47 +1935,47 @@ } } total = total.add(jian).add(feng).add(ping).add(gu); - if (total.compareTo(new BigDecimal("0")) != 0){ + if (total.compareTo(new BigDecimal("0")) != 0) { chargingOrderListVO.setElectronicProportion( - jian.divide(total,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%(尖)/" - +feng.divide(total,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%(峰)/" - +ping.divide(total,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%(平)/" - +gu.divide(total,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%(谷)"); - }else{ + jian.divide(total, 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100")) + "%(尖)/" + + feng.divide(total, 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100")) + "%(峰)/" + + ping.divide(total, 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100")) + "%(平)/" + + gu.divide(total, 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100")) + "%(谷)"); + } else { chargingOrderListVO.setElectronicProportion( - "0"+"%(尖)/"+ - "0"+"%(峰)/"+ - "0"+"%(平)/"+ - "0"+"%(谷)"); + "0" + "%(尖)/" + + "0" + "%(峰)/" + + "0" + "%(平)/" + + "0" + "%(谷)"); } - if (chargingOrderListVO.getOrderSource().equals(2)){ - chargingOrderListVO.setSharingAmount(chargingOrderListVO.getServiceCharge()!=null? - chargingOrderListVO.getServiceCharge().multiply(new BigDecimal("0.2")).setScale(2,BigDecimal.ROUND_HALF_UP) - :new BigDecimal("0")); - }else{ + if (chargingOrderListVO.getOrderSource().equals(2)) { + chargingOrderListVO.setSharingAmount(chargingOrderListVO.getServiceCharge() != null ? + chargingOrderListVO.getServiceCharge().multiply(new BigDecimal("0.2")).setScale(2, BigDecimal.ROUND_HALF_UP) + : new BigDecimal("0")); + } else { chargingOrderListVO.setSharingAmount(new BigDecimal("0")); } } // 不分页 - PageInfo<ChargingOrderListVO> pageInfo1 = new PageInfo<>(1,999999999); - List<ChargingOrderListVO> list1 = this.baseMapper.chargingList(pageInfo1,dto,startTime1,startTime2,endTime1,endTime2); + PageInfo<ChargingOrderListVO> pageInfo1 = new PageInfo<>(1, 999999999); + List<ChargingOrderListVO> list1 = this.baseMapper.chargingList(pageInfo1, dto, startTime1, startTime2, endTime1, endTime2); for (ChargingOrderListVO chargingOrderListVO : list1) { List<Integer> integers = new ArrayList<>(); integers.add(chargingOrderListVO.getSiteId()); Site site = sites.stream().filter(e -> e.getId().equals(chargingOrderListVO.getSiteId())).findFirst().orElse(null); - if (site!=null){ + if (site != null) { chargingOrderListVO.setSiteName(site.getName()); } - if (chargingOrderListVO.getStartTime()!=null && chargingOrderListVO.getEndTime()!=null){ + if (chargingOrderListVO.getStartTime() != null && chargingOrderListVO.getEndTime() != null) { LocalDateTime startTime = chargingOrderListVO.getStartTime(); LocalDateTime endTime = chargingOrderListVO.getEndTime(); // 计算时间差 单位秒 long between = ChronoUnit.SECONDS.between(startTime, endTime); chargingOrderListVO.setChargingSecond(between); } - if (chargingOrderListVO.getChargingGunId()!=null && chargingOrderListVO.getChargingPileId()!=null){ - TChargingGun data1 = allGun.stream().filter(e->e.getId().equals(chargingOrderListVO.getChargingGunId())).findFirst().orElse(null); - TChargingPile data2 = allPile.stream().filter(e->e.getId().equals(chargingOrderListVO.getChargingPileId())).findFirst().orElse(null); + if (chargingOrderListVO.getChargingGunId() != null && chargingOrderListVO.getChargingPileId() != null) { + TChargingGun data1 = allGun.stream().filter(e -> e.getId().equals(chargingOrderListVO.getChargingGunId())).findFirst().orElse(null); + TChargingPile data2 = allPile.stream().filter(e -> e.getId().equals(chargingOrderListVO.getChargingPileId())).findFirst().orElse(null); if (data2 != null && data1 != null) { chargingOrderListVO.setTerminalName(data2.getName() + "-" + data1.getName()); } @@ -1990,7 +1995,7 @@ BigDecimal jianElectronic = new BigDecimal("0"); BigDecimal fengElectronic = new BigDecimal("0"); BigDecimal pingElectronic = new BigDecimal("0"); - BigDecimal guElectronic = new BigDecimal("0"); + BigDecimal guElectronic = new BigDecimal("0"); // 尖峰平谷服务费 BigDecimal jianService = new BigDecimal("0"); BigDecimal fengService = new BigDecimal("0"); @@ -2009,18 +2014,18 @@ BigDecimal chargingCapacity = collect.stream().map(TChargingOrderAccountingStrategy::getChargingCapacity).reduce(BigDecimal.ZERO, BigDecimal::add); electronic = electronic.add(chargingCapacity); electrovalence = electrovalence.add(periodElectricPrice); - if (chargingOrderListVO.getOrderSource().equals(2)){ + if (chargingOrderListVO.getOrderSource().equals(2)) { serviceCharge = serviceCharge.add(periodServicePrice.multiply(new BigDecimal("0.8"))); paymentAmount = paymentAmount.add(periodElectricPrice).add(periodServicePrice.multiply(new BigDecimal("0.8"))); - }else{ + } else { serviceCharge = serviceCharge.add(periodServicePrice); paymentAmount = paymentAmount.add(periodElectricPrice).add(periodServicePrice); } - if (!chargingOrderListVO.getOrderSource().equals(2)){ + if (!chargingOrderListVO.getOrderSource().equals(2)) { List<TChargingOrderAccountingStrategy> list2 = chargingOrderAccountingStrategies.stream().filter(e -> e.getChargingOrderId().equals(chargingOrderListVO.getId())) .collect(Collectors.toList()); for (TChargingOrderAccountingStrategy temp : list2) { - switch (temp.getType()){ + switch (temp.getType()) { case 1: jian = jian.add(temp.getChargingCapacity()); jianElectronic = jianElectronic.add(temp.getPeriodElectricPrice()).add(temp.getPeriodServicePrice()); @@ -2043,12 +2048,12 @@ break; } } - }else{ + } else { List<TChargingOrderAccountingStrategy> list2 = chargingOrderAccountingStrategies.stream().filter(e -> e.getChargingOrderId().equals(chargingOrderListVO.getId())) .collect(Collectors.toList()); for (TChargingOrderAccountingStrategy temp : list2) { BigDecimal multiply = temp.getPeriodServicePrice().multiply(new BigDecimal("0.8")); - switch (temp.getType()){ + switch (temp.getType()) { case 1: jian = jian.add(temp.getChargingCapacity()); jianElectronic = jianElectronic.add(temp.getPeriodElectricPrice()).add(multiply); @@ -2073,7 +2078,7 @@ } } } - + chargingOrderTimeVO.setChargingCapacity(electronic.setScale(2, BigDecimal.ROUND_HALF_EVEN)); chargingOrderTimeVO.setPaymentAmount(paymentAmount.setScale(2, BigDecimal.ROUND_HALF_EVEN)); chargingOrderTimeVO.setElectrovalence(electrovalence.setScale(2, BigDecimal.ROUND_HALF_EVEN)); @@ -2084,143 +2089,141 @@ BigDecimal add1 = jianService.add(fengService).add(pingService).add(guService); // 计算尖峰平谷充电量占比 BigDecimal add2 = jian.add(feng).add(ping).add(gu); - if (add.compareTo(new BigDecimal("0"))!=0){ - chargingOrderTimeVO.setCapacityProportion(jian+"度/"+feng+"度/"+ping+"度/"+gu+"度-" - +jian.divide(add2,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%/" - +feng.divide(add2,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%/" - +ping.divide(add2,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%/" - +gu.divide(add2,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%"); - chargingOrderTimeVO.setServiceProportion(jianService+"元/"+fengService+"元/"+pingService+"元/"+guService+"元-" - +jianService.divide(add1,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%/" - +fengService.divide(add1,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%/" - +pingService.divide(add1,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%/" - +guService.divide(add1,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%"); - chargingOrderTimeVO.setElectronicProportion(jianElectronic+"元/"+fengElectronic+"元/"+pingElectronic+"元/"+guElectronic+"元-" - +jianElectronic.divide(add,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%/" - +fengElectronic.divide(add,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%/" - +pingElectronic.divide(add,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%/" - +guElectronic.divide(add,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%"); - }else{ - chargingOrderTimeVO.setCapacityProportion(jianElectronic+"度/"+fengElectronic+"度/"+pingElectronic+"度/"+guElectronic+"度-" - +"0"+"%/" - +"0"+"%/" - +"0"+"%/" - +"0"+"%"); - chargingOrderTimeVO.setServiceProportion(jianService+"元/"+fengService+"元/"+pingService+"元/"+guService+"元-" - +"0"+"%/" - +"0"+"%/" - +"0"+"%/" - +"0"+"%"); - chargingOrderTimeVO.setElectronicProportion(jian+"元/"+feng+"元/"+ping+"元/"+gu+"元-" - +"0"+"%/" - +"0"+"%/" - +"0"+"%/" - +"0"+"%"); + if (add.compareTo(new BigDecimal("0")) != 0) { + chargingOrderTimeVO.setCapacityProportion(jian + "度/" + feng + "度/" + ping + "度/" + gu + "度-" + + jian.divide(add2, 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100")) + "%/" + + feng.divide(add2, 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100")) + "%/" + + ping.divide(add2, 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100")) + "%/" + + gu.divide(add2, 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100")) + "%"); + chargingOrderTimeVO.setServiceProportion(jianService + "元/" + fengService + "元/" + pingService + "元/" + guService + "元-" + + jianService.divide(add1, 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100")) + "%/" + + fengService.divide(add1, 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100")) + "%/" + + pingService.divide(add1, 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100")) + "%/" + + guService.divide(add1, 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100")) + "%"); + chargingOrderTimeVO.setElectronicProportion(jianElectronic + "元/" + fengElectronic + "元/" + pingElectronic + "元/" + guElectronic + "元-" + + jianElectronic.divide(add, 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100")) + "%/" + + fengElectronic.divide(add, 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100")) + "%/" + + pingElectronic.divide(add, 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100")) + "%/" + + guElectronic.divide(add, 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100")) + "%"); + } else { + chargingOrderTimeVO.setCapacityProportion(jianElectronic + "度/" + fengElectronic + "度/" + pingElectronic + "度/" + guElectronic + "度-" + + "0" + "%/" + + "0" + "%/" + + "0" + "%/" + + "0" + "%"); + chargingOrderTimeVO.setServiceProportion(jianService + "元/" + fengService + "元/" + pingService + "元/" + guService + "元-" + + "0" + "%/" + + "0" + "%/" + + "0" + "%/" + + "0" + "%"); + chargingOrderTimeVO.setElectronicProportion(jian + "元/" + feng + "元/" + ping + "元/" + gu + "元-" + + "0" + "%/" + + "0" + "%/" + + "0" + "%/" + + "0" + "%"); } pageInfo.setRecords(list); chargingOrderTimeVO.setList(pageInfo); return chargingOrderTimeVO; } - - - + @Override public ChargingOrderListInfoVO chargingInfo(String uid) { - TChargingOrder chargingOrder= this.getById(uid); + TChargingOrder chargingOrder = this.getById(uid); ChargingOrderListInfoVO chargingOrderListInfoVO = new ChargingOrderListInfoVO(); chargingOrderListInfoVO.setStartTime(chargingOrder.getStartTime()); chargingOrderListInfoVO.setEndTime(chargingOrder.getEndTime()); chargingOrderListInfoVO.setStatus(chargingOrder.getStatus()); BigDecimal bigDecimal = new BigDecimal("0.006"); - if (chargingOrder.getOrderAmount()!=null){ + if (chargingOrder.getOrderAmount() != null) { BigDecimal multiply = chargingOrder.getPaymentAmount().multiply(bigDecimal); chargingOrderListInfoVO.setCommissionAmount(multiply.setScale(2, BigDecimal.ROUND_HALF_UP)); } chargingOrderListInfoVO.setElectrovalence(chargingOrder.getElectrovalence()); chargingOrderListInfoVO.setServiceCharge(chargingOrder.getServiceCharge()); - if (chargingOrder.getElectrovalence()!=null && chargingOrder.getServiceCharge()!=null){ + if (chargingOrder.getElectrovalence() != null && chargingOrder.getServiceCharge() != null) { chargingOrderListInfoVO.setTotal(chargingOrder.getElectrovalence().add(chargingOrder.getServiceCharge())); - }else{ + } else { chargingOrderListInfoVO.setTotal(new BigDecimal("0")); } - if (chargingOrderListInfoVO.getTotal().compareTo(new BigDecimal("0"))>0){ - if (chargingOrder.getCouponDiscountAmount()!=null&& chargingOrder.getVipDiscountAmount()!=null&& chargingOrder.getSharingAmount()!=null&& chargingOrder.getCommissionAmount()!=null){ + if (chargingOrderListInfoVO.getTotal().compareTo(new BigDecimal("0")) > 0) { + if (chargingOrder.getCouponDiscountAmount() != null && chargingOrder.getVipDiscountAmount() != null && chargingOrder.getSharingAmount() != null && chargingOrder.getCommissionAmount() != null) { chargingOrderListInfoVO.setRealTotal(chargingOrderListInfoVO.getTotal().subtract(chargingOrder.getCouponDiscountAmount()).subtract(chargingOrder.getVipDiscountAmount()).subtract(chargingOrder.getSharingAmount()).subtract(chargingOrder.getCommissionAmount())); - }else{ + } else { chargingOrderListInfoVO.setRealTotal(chargingOrderListInfoVO.getTotal()); } - }else{ + } else { chargingOrderListInfoVO.setRealTotal(new BigDecimal("0")); } chargingOrderListInfoVO.setCode(chargingOrder.getCode()); List<Site> data = siteClient.getSiteByIds(Arrays.asList(chargingOrder.getSiteId())).getData(); - if (!data.isEmpty()){ + if (!data.isEmpty()) { chargingOrderListInfoVO.setSiteName(data.get(0).getName()); chargingOrderListInfoVO.setSiteAddress(data.get(0).getAddress()); } - if (chargingOrder.getChargingGunId()!=null){ + if (chargingOrder.getChargingGunId() != null) { TChargingGun data1 = chargingGunClient.getChargingGunById(chargingOrder.getChargingGunId()).getData(); - if (data1!=null){ + if (data1 != null) { TChargingPile data2 = chargingPileClient.getChargingPileById(data1.getChargingPileId()).getData(); - if (data2!=null){ + if (data2 != null) { chargingOrderListInfoVO.setGunCode(data1.getCode()); - chargingOrderListInfoVO.setTerminalName(data2.getName()+data1.getName()); + chargingOrderListInfoVO.setTerminalName(data2.getName() + data1.getName()); } } } chargingOrderListInfoVO.setChargingCapacity(chargingOrder.getChargingCapacity()); - + chargingOrderListInfoVO.setEndMode(chargingOrder.getEndMode()); - + // 获取开始SOC 结束soc - if (chargingOrder.getCode()!=null){ + if (chargingOrder.getCode() != null) { List<UploadRealTimeMonitoringData> data6 = uploadRealTimeMonitoringDataService.getDataByOrderCode(chargingOrder.getCode()); - if (data6!=null){ + if (data6 != null) { for (UploadRealTimeMonitoringData uploadRealTimeMonitoringData : data6) { - if (uploadRealTimeMonitoringData.getOutput_current()!=null&& - uploadRealTimeMonitoringData.getOutput_voltage()!=null){ + if (uploadRealTimeMonitoringData.getOutput_current() != null && + uploadRealTimeMonitoringData.getOutput_voltage() != null) { uploadRealTimeMonitoringData.setPower(uploadRealTimeMonitoringData.getOutput_voltage() - .multiply(uploadRealTimeMonitoringData.getOutput_current()).divide(new BigDecimal(1000),2, BigDecimal.ROUND_HALF_UP)); + .multiply(uploadRealTimeMonitoringData.getOutput_current()).divide(new BigDecimal(1000), 2, BigDecimal.ROUND_HALF_UP)); } } - if (!data6.isEmpty()){ - int min = 100; - int max = 0; - for (UploadRealTimeMonitoringData uploadRealTimeMonitoringData : data6) { - if (uploadRealTimeMonitoringData.getSoc()>max){ - max = uploadRealTimeMonitoringData.getSoc(); - } - if (uploadRealTimeMonitoringData.getSoc()!=0 &&uploadRealTimeMonitoringData.getSoc()<min){ - min = uploadRealTimeMonitoringData.getSoc(); - } + if (!data6.isEmpty()) { + int min = 100; + int max = 0; + for (UploadRealTimeMonitoringData uploadRealTimeMonitoringData : data6) { + if (uploadRealTimeMonitoringData.getSoc() > max) { + max = uploadRealTimeMonitoringData.getSoc(); } - chargingOrderListInfoVO.setEndSoc(max+""); - chargingOrderListInfoVO.setStartSoc(min+""); - + if (uploadRealTimeMonitoringData.getSoc() != 0 && uploadRealTimeMonitoringData.getSoc() < min) { + min = uploadRealTimeMonitoringData.getSoc(); + } + } + chargingOrderListInfoVO.setEndSoc(max + ""); + chargingOrderListInfoVO.setStartSoc(min + ""); + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); for (UploadRealTimeMonitoringData uploadRealTimeMonitoringData : data6) { uploadRealTimeMonitoringData.setCreateTime(simpleDateFormat.format(uploadRealTimeMonitoringData.getCreate_time())); } } } - + chargingOrderListInfoVO.setList(data6); } - if (chargingOrderListInfoVO.getStartTime()!=null && chargingOrderListInfoVO.getEndTime()!=null){ + if (chargingOrderListInfoVO.getStartTime() != null && chargingOrderListInfoVO.getEndTime() != null) { LocalDateTime startTime = chargingOrderListInfoVO.getStartTime(); LocalDateTime endTime = chargingOrderListInfoVO.getEndTime(); // 计算时间差 单位秒 long between = ChronoUnit.SECONDS.between(startTime, endTime); - chargingOrderListInfoVO.setChargingSecond(between+""); + chargingOrderListInfoVO.setChargingSecond(between + ""); } - - if (chargingOrder.getAppUserCarId()!=null){ + + if (chargingOrder.getAppUserCarId() != null) { List<TAppUserCar> data3 = appUserCarClient.getCarByIds(Collections.singletonList(chargingOrder.getAppUserCarId())).getData(); - if (data3!=null && !data3.isEmpty()) { + if (data3 != null && !data3.isEmpty()) { chargingOrderListInfoVO.setLicensePlate(data3.get(0).getLicensePlate()); } - }else{ + } else { chargingOrderListInfoVO.setLicensePlate(chargingOrder.getPlateNum()); } chargingOrderListInfoVO.setStartTime(chargingOrder.getStartTime()); @@ -2229,11 +2232,11 @@ chargingOrderListInfoVO.setUid(chargingOrder.getId().toString()); chargingOrderListInfoVO.setCouponDiscountAmount(chargingOrder.getCouponDiscountAmount()); chargingOrderListInfoVO.setVipDiscountAmount(chargingOrder.getVipDiscountAmount()); - if (chargingOrder.getOrderSource().equals(2)){ + if (chargingOrder.getOrderSource().equals(2)) { chargingOrderListInfoVO.setSharingAmount(chargingOrder.getServiceCharge().multiply(new BigDecimal("0.2")).setScale(2, BigDecimal.ROUND_HALF_UP)); - }else{ + } else { chargingOrderListInfoVO.setSharingAmount(chargingOrder.getSharingAmount()); - + } // 查询费用明细列表 List<TChargingOrderAccountingStrategy> list = chargingOrderAccountingStrategyService.lambdaQuery() @@ -2242,15 +2245,16 @@ chargingOrderListInfoVO.setList1(list); return chargingOrderListInfoVO; } - - + + /** * 处理充电订单实时监控数据相关的业务逻辑 + * * @param query */ @Override public void chargeMonitoring(UploadRealTimeMonitoringDataQuery query) { - if(com.ruoyi.common.core.utils.StringUtils.isNotEmpty(query.getTransaction_serial_number())){ + if (com.ruoyi.common.core.utils.StringUtils.isNotEmpty(query.getTransaction_serial_number())) { //获取当前的计费策略 TChargingOrder chargingOrder1 = this.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getCode, query.getTransaction_serial_number())); BigDecimal residualAmount = chargingOrder1.getRechargeAmount().add(chargingOrder1.getVipDiscountAmount()).subtract(query.getPaid_amount()); @@ -2258,7 +2262,7 @@ chargingOrder.setId(chargingOrder1.getId()); chargingOrder.setAppUserId(chargingOrder1.getAppUserId()); chargingOrder.setResidualAmount(residualAmount); - if(query.getOutput_current().compareTo(BigDecimal.ZERO) != 0){ + if (query.getOutput_current().compareTo(BigDecimal.ZERO) != 0) { BigDecimal divide = (query.getOutput_current().multiply(query.getOutput_voltage())).divide(new BigDecimal(1000)); chargingOrder.setChargingPower(divide); chargingOrder.setCurrent(query.getOutput_current()); @@ -2277,10 +2281,11 @@ this.updateById(chargingOrder); } } - - + + /** * 自动结束充电后的处理逻辑 + * * @param orderCode */ @Override @@ -2292,9 +2297,10 @@ chargingOrder.setEndMode(endMode); this.updateById(chargingOrder); } - + /** * 异常结束充电处理逻辑 + * * @param orderCode */ @Override @@ -2305,6 +2311,7 @@ /** * 停止充电返回账单后计算费用 + * * @param vo */ @Override @@ -2318,16 +2325,16 @@ lock.unlock(); return R.ok(); } - if(!tryLock){ + if (!tryLock) { return R.ok(); } try { TChargingOrder chargingOrder = this.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getCode, vo.getTransaction_serial_number())); - if(null == chargingOrder){ + if (null == chargingOrder) { return R.ok(); } Integer status = chargingOrder.getStatus(); - if(status == 5){ + if (status == 5) { return R.ok(); } @@ -2341,7 +2348,7 @@ //获取订单的计费策略 List<AccountingStrategyDetailOrder> accountingStrategyDetailOrderList = accountingStrategyDetailOrderClient.getAllAccountingStrategyDetailOrder(chargingOrder.getId()).getData(); - if(accountingStrategyDetailOrderList.isEmpty()){ + if (accountingStrategyDetailOrderList.isEmpty()) { return R.fail("计费策略为空,无法计算费用"); } accountingStrategyDetailOrderList.get(accountingStrategyDetailOrderList.size() - 1).setEndTime("23:59"); @@ -2350,7 +2357,7 @@ SimpleDateFormat sdfs = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); List<AccountingStrategyDetailOrderVo> lists = new ArrayList<>(); //跨天 - if(!vo.getStart_time().split(" ")[0].equals(vo.getEnd_time().split(" ")[0])){ + if (!vo.getStart_time().split(" ")[0].equals(vo.getEnd_time().split(" ")[0])) { //当天的 //开始通过计费策略遍历解析每个时段的费用明细 String start_time = vo.getStart_time(); @@ -2365,12 +2372,12 @@ for (int i = accountingStrategyDetailOrderList.size(); i > 0; i--) { AccountingStrategyDetailOrder strategyDetail = accountingStrategyDetailOrderList.get(i - 1); long time = sdfs.parse(start_time.split(" ")[0] + " " + strategyDetail.getEndTime() + ":00").getTime(); - if(time < start){ + if (time < start) { break; } //阶段(1=尖阶段,2=峰阶段,3=平阶段,4=谷阶段) Object invoke = null; - switch (strategyDetail.getType()){ + switch (strategyDetail.getType()) { case 1: //充电度数 invoke = clazz.getMethod("getSpike_charge" + (i)).invoke(vo); @@ -2388,7 +2395,7 @@ invoke = clazz.getMethod("getValley_charge" + (i)).invoke(vo); break; } - if(null == invoke || Double.valueOf(invoke.toString()) == 0){ + if (null == invoke || Double.valueOf(invoke.toString()) == 0) { continue; } BigDecimal sharp_peak_charge = new BigDecimal(invoke.toString()); @@ -2403,12 +2410,12 @@ for (int i = 0; i < accountingStrategyDetailOrderList.size(); i++) { AccountingStrategyDetailOrder strategyDetail = accountingStrategyDetailOrderList.get(i); long time = sdfs.parse(end_time.split(" ")[0] + " " + strategyDetail.getStartTime() + ":00").getTime(); - if(time > end){ + if (time > end) { break; } //阶段(1=尖阶段,2=峰阶段,3=平阶段,4=谷阶段) Object invoke = null; - switch (strategyDetail.getType()){ + switch (strategyDetail.getType()) { case 1: //充电度数 invoke = clazz.getMethod("getSpike_charge" + (i + 1)).invoke(vo); @@ -2426,7 +2433,7 @@ invoke = clazz.getMethod("getValley_charge" + (i + 1)).invoke(vo); break; } - if(null == invoke || Double.valueOf(invoke.toString()) == 0){ + if (null == invoke || Double.valueOf(invoke.toString()) == 0) { continue; } BigDecimal sharp_peak_charge = new BigDecimal(invoke.toString()); @@ -2435,13 +2442,13 @@ vo1.setChargingCapacity(sharp_peak_charge); lists.add(vo1); } - }else{ + } else { for (int i = 0; i < accountingStrategyDetailOrderList.size(); i++) { Class<? extends TransactionRecordMessageVO> clazz = vo.getClass(); AccountingStrategyDetailOrder strategyDetail = accountingStrategyDetailOrderList.get(i); //阶段(1=尖阶段,2=峰阶段,3=平阶段,4=谷阶段) Object invoke = null; - switch (strategyDetail.getType()){ + switch (strategyDetail.getType()) { case 1: //充电度数 invoke = clazz.getMethod("getSpike_charge" + (i + 1)).invoke(vo); @@ -2459,7 +2466,7 @@ invoke = clazz.getMethod("getValley_charge" + (i + 1)).invoke(vo); break; } - if(null == invoke || Double.valueOf(invoke.toString()) == 0){ + if (null == invoke || Double.valueOf(invoke.toString()) == 0) { continue; } BigDecimal sharp_peak_charge = new BigDecimal(invoke.toString()); @@ -2481,16 +2488,16 @@ chargingOrderAccountingStrategy.setElectrovalence(strategyDetail.getElectrovalence()); chargingOrderAccountingStrategy.setServiceCharge(strategyDetail.getServiceCharge()); chargingOrderAccountingStrategy.setCostServiceCharge(strategyDetail.getCostServiceCharge()); - if(i == 0){ + if (i == 0) { String time = vo.getStart_time().split(" ")[1]; chargingOrderAccountingStrategy.setStartTime(time.substring(0, time.lastIndexOf(":"))); - }else{ + } else { chargingOrderAccountingStrategy.setStartTime(strategyDetail.getStartTime()); } - if(i == lists.size() - 1){ + if (i == lists.size() - 1) { String time = vo.getEnd_time().split(" ")[1]; chargingOrderAccountingStrategy.setEndTime(time.substring(0, time.lastIndexOf(":"))); - }else{ + } else { chargingOrderAccountingStrategy.setEndTime(strategyDetail.getEndTime()); } @@ -2500,7 +2507,7 @@ BigDecimal serviceCharge = originalServicePrice; BigDecimal vipDiscountAmount = BigDecimal.ZERO; //计算优惠金额 - if(null != chargingOrder.getVipDiscount()){ + if (null != chargingOrder.getVipDiscount()) { //0.58折 vipDiscountAmount = serviceCharge.multiply(new BigDecimal(1).subtract(chargingOrder.getVipDiscount())); serviceCharge = serviceCharge.multiply(chargingOrder.getVipDiscount()); @@ -2536,13 +2543,13 @@ order.setId(chargingOrder.getId()); order.setAppUserId(chargingOrder.getAppUserId()); UploadRealTimeMonitoringData uploadRealTimeMonitoringData = uploadRealTimeMonitoringDataService.getLastDataById(chargingOrder.getCode()); - if(null != uploadRealTimeMonitoringData && null == chargingOrder.getEndMode()){ + if (null != uploadRealTimeMonitoringData && null == chargingOrder.getEndMode()) { Integer soc = uploadRealTimeMonitoringData.getSoc(); - if(soc >= 98){ + if (soc >= 98) { order.setEndMode(2); - }else if(chargingOrder.getResidualAmount().compareTo(new BigDecimal(1)) <= 0){ + } else if (chargingOrder.getResidualAmount().compareTo(new BigDecimal(1)) <= 0) { order.setEndMode(3); - }else{ + } else { order.setEndMode(0); } } @@ -2555,54 +2562,54 @@ order.setChargingCapacity(vo.getTotal_electricity()); order.setElectricity(vo.getTotal_electricity()); order.setVipDiscountAmount(vipDiscountAmount_total); - if(vipDiscountAmount_total.compareTo(BigDecimal.ZERO) == 0){ + if (vipDiscountAmount_total.compareTo(BigDecimal.ZERO) == 0) { order.setVipDiscount(BigDecimal.valueOf(1)); } //计算优惠券 BigDecimal couponDiscount = BigDecimal.ZERO; - if(null != chargingOrder.getAppCouponId()){ + if (null != chargingOrder.getAppCouponId()) { //判断实际充电金额是否满足优惠券使用条件,如果不满足则不适用优惠券。 TAppCoupon appCoupon = appCouponClient.getAppCouponById(chargingOrder.getAppCouponId()).getData(); String couponJson = appCoupon.getCouponJson(); TCoupon tCoupon = JSON.parseObject(couponJson, TCoupon.class); Integer preferentialMode = tCoupon.getPreferentialMode(); - if(1 == preferentialMode){ + if (1 == preferentialMode) { //满减 - if(payAmount.compareTo(tCoupon.getMeetTheConditions()) >= 0){ + if (payAmount.compareTo(tCoupon.getMeetTheConditions()) >= 0) { BigDecimal couponDiscountAmount = tCoupon.getDiscountAmount(); //如果优惠金额大于服务费金额,以服务费作为最大限制 - if(serviceCharge_total.compareTo(couponDiscountAmount) < 0){ + if (serviceCharge_total.compareTo(couponDiscountAmount) < 0) { couponDiscount = serviceCharge_total; serviceCharge_total = BigDecimal.ZERO; - }else{ + } else { couponDiscount = couponDiscountAmount; } appCoupon.setStatus(2); appCouponClient.updateAppCoupon(appCoupon); - }else{ + } else { order.setAppCouponId(null); order.setCouponDiscountAmount(BigDecimal.ZERO); appCouponClient.refund(chargingOrder.getAppCouponId().toString()); } } - if(2 == preferentialMode){ + if (2 == preferentialMode) { //抵扣 - if(payAmount.compareTo(tCoupon.getMeetTheConditions()) >= 0){ + if (payAmount.compareTo(tCoupon.getMeetTheConditions()) >= 0) { //折扣金额 BigDecimal divide = payAmount.multiply(new BigDecimal(10).subtract(tCoupon.getDiscount())).divide(new BigDecimal(10)); divide = divide.compareTo(tCoupon.getMaximumDiscountAmount()) > 0 ? tCoupon.getMaximumDiscountAmount() : divide; //如果优惠金额大于服务费金额,以服务费作为最大限制 - if(serviceCharge_total.compareTo(divide) < 0){ + if (serviceCharge_total.compareTo(divide) < 0) { couponDiscount = serviceCharge_total; serviceCharge_total = BigDecimal.ZERO; - }else{ + } else { couponDiscount = divide; } appCoupon.setStatus(2); appCouponClient.updateAppCoupon(appCoupon); - }else{ + } else { order.setAppCouponId(null); order.setCouponDiscountAmount(BigDecimal.ZERO); appCouponClient.refund(chargingOrder.getAppCouponId().toString()); @@ -2615,7 +2622,7 @@ refundAmount = refundAmount.add(couponDiscount); //实际支付金额-优惠券 payAmount = payAmount.subtract(couponDiscount); - if(serviceCharge_total.compareTo(BigDecimal.ZERO) > 0){ + if (serviceCharge_total.compareTo(BigDecimal.ZERO) > 0) { serviceCharge_total = serviceCharge_total.subtract(couponDiscount); } order.setCouponDiscountAmount(couponDiscount.setScale(2, RoundingMode.HALF_EVEN)); @@ -2627,7 +2634,7 @@ chargingOrder = this.getById(order.getId()); //推送三方平台 - if(2 == chargingOrder.getOrderSource()){ + if (2 == chargingOrder.getOrderSource()) { TChargingOrder finalChargingOrder = chargingOrder; new Thread(new Runnable() { @Override @@ -2642,7 +2649,7 @@ //开始将优惠券优惠的金额添加到明细中 BigDecimal couponDiscountAmount = order.getCouponDiscountAmount(); - if(null != couponDiscountAmount && couponDiscountAmount.compareTo(BigDecimal.ZERO) > 0){ + if (null != couponDiscountAmount && couponDiscountAmount.compareTo(BigDecimal.ZERO) > 0) { List<TChargingOrderAccountingStrategy> list = chargingOrderAccountingStrategyService.list(new LambdaQueryWrapper<TChargingOrderAccountingStrategy>().eq(TChargingOrderAccountingStrategy::getChargingOrderId, order.getId())); BigDecimal reduce = list.stream().map(TChargingOrderAccountingStrategy::getPeriodServicePrice).reduce(BigDecimal.ZERO, BigDecimal::add); for (TChargingOrderAccountingStrategy chargingOrderAccountingStrategy : list) { @@ -2662,27 +2669,27 @@ chargingGun.setChargingPower(BigDecimal.ZERO); chargingGunClient.updateChargingGunById(chargingGun); //推送状态给三方平台 - if(2 == chargingOrder.getOrderSource()){ + if (2 == chargingOrder.getOrderSource()) { tcecClient.pushChargingGunStatus(chargingGun.getFullNumber(), chargingGun.getStatus()); } //添加积分 - if(1 == chargingOrder.getOrderSource()){ + if (1 == chargingOrder.getOrderSource()) { TIntegralRule integralRule = integralRuleClient.getSet().getData(); - if(null != integralRule){ + if (null != integralRule) { TAppUser appUser = appUserClient.getUserById(chargingOrder.getAppUserId()).getData(); Integer num1 = JSON.parseObject(integralRule.getChargeCredit()).getInteger("num1"); Integer integral = chargingOrder.getServiceCharge().intValue() * num1; - if(null != appUser.getVipId()){ + if (null != appUser.getVipId()) { TVip vip = vipClient.getInfo1(appUser.getVipId()).getData(); Integer doubleIntegration = vip.getDoubleIntegration(); //双倍积分 - if(1 == doubleIntegration){ + if (1 == doubleIntegration) { integral *= 2; } } - if(integral > 0){ + if (integral > 0) { TAppUserIntegralChange appUserIntegralChange = new TAppUserIntegralChange(); appUserIntegralChange.setAppUserId(appUser.getId()); appUserIntegralChange.setChangeType(2); @@ -2704,7 +2711,7 @@ //开始构建退款费用 refundAmount = refundAmount.setScale(2, RoundingMode.HALF_EVEN); - if(refundAmount.compareTo(BigDecimal.ZERO) > 0){ + if (refundAmount.compareTo(BigDecimal.ZERO) > 0) { Integer rechargePaymentType = chargingOrder.getRechargePaymentType(); //构建退款明细 TChargingOrderRefund chargingOrderRefund = new TChargingOrderRefund(); @@ -2722,7 +2729,7 @@ chargingOrderRefund.setRefundRemark("实际充电消费金额:" + chargingOrder.getPaymentAmount()); chargingOrderRefund.setRefundTotalAmount(refundAmount); chargingOrderRefund.setPayAmount(rechargeAmount); - if(1 == rechargePaymentType){ + if (1 == rechargePaymentType) { WxPaymentRefundModel model = new WxPaymentRefundModel(); model.setOut_trade_no(chargingOrder.getCode()); model.setOut_refund_no(chargingOrderRefund.getRefundCode()); @@ -2734,7 +2741,7 @@ amount.setCurrency("CNY"); model.setAmount(amount); R<Map<String, Object>> result = wxPaymentClient.refundOrderR(model); - if(200 == result.getCode()){ + if (200 == result.getCode()) { chargingOrderRefundService.save(chargingOrderRefund); //手续费 Map<String, Object> amount1 = (Map<String, Object>) result.getData().get("amount"); @@ -2744,26 +2751,26 @@ chargingOrderRefundService.updateById(chargingOrderRefund); } } - if(2 == rechargePaymentType){ + if (2 == rechargePaymentType) { RefundReq dto = new RefundReq(); dto.setOutTradeNo(chargingOrder.getCode()); dto.setOutRequestNo(chargingOrderRefund.getRefundCode()); dto.setRefundAmount(refundAmount.toString()); dto.setRefundReason("充电完成退款"); RefundResp resp = aliPaymentClient.refund(dto).getData(); - if(null != resp){ + if (null != resp) { chargingOrderRefundService.save(chargingOrderRefund); this.chargingOrderStartupFailureWxRefund(chargingOrderRefund.getRefundCode(), resp.getTradeNo(), "SUCCESS", null); } } - if(3 == rechargePaymentType){ + if (3 == rechargePaymentType) { RefundReq dto = new RefundReq(); dto.setOutTradeNo(chargingOrder.getRechargeSerialNumber()); dto.setOutRequestNo(chargingOrderRefund.getRefundCode()); dto.setRefundAmount(refundAmount.toString()); dto.setRefundReason("充电完成退款"); RefundResp resp = h5AliPaymentClient.refund(dto).getData(); - if(null != resp && "10000".equals(resp.getCode())){ + if (null != resp && "10000".equals(resp.getCode())) { chargingOrderRefundService.save(chargingOrderRefund); this.chargingOrderStartupFailureWxRefund(chargingOrderRefund.getRefundCode(), resp.getTradeNo(), "SUCCESS", null); } @@ -2782,11 +2789,11 @@ if (!chargingOrder.getOrderSource().equals(2)) { serviceMoney = serviceMoney.add(service_reduce); paymentMoney = paymentMoney.add(electronic_reduce).add(service_reduce); - }else{ + } else { serviceMoney = serviceMoney.add(service_reduce.multiply(new BigDecimal("0.8"))); paymentMoney = paymentMoney.add(electronic_reduce).add(service_reduce.multiply(new BigDecimal("0.8"))); } - if (chargingOrder.getStartTime()!=null && chargingOrder.getEndTime()!=null){ + if (chargingOrder.getStartTime() != null && chargingOrder.getEndTime() != null) { LocalDateTime startTime = chargingOrder.getStartTime(); LocalDateTime endTime = chargingOrder.getEndTime(); // 计算时间差 单位秒 @@ -2800,97 +2807,95 @@ summaryData.setElectricPrice(electronic_reduce.setScale(2, BigDecimal.ROUND_HALF_EVEN)); summaryData.setServicePrice(serviceMoney.setScale(2, BigDecimal.ROUND_HALF_EVEN)); chargingOrderSummaryDataService.save(summaryData); - }catch (Exception e) { + } catch (Exception e) { e.printStackTrace(); - }finally { + } finally { lock.unlock(); } return R.ok(); } - - @Override - public List<Map<String, Object>> getByDate(LocalDate start,LocalDate end,List<Integer> siteIds) { - - LocalDateTime start1 = start.atStartOfDay(); - LocalDateTime end1 = end.atTime(LocalTime.MAX); - return this.baseMapper.getByDate(start1,end1,siteIds); + public List<Map<String, Object>> getByDate(LocalDate start, LocalDate end, List<Integer> siteIds) { + + LocalDateTime start1 = start.atStartOfDay(); + LocalDateTime end1 = end.atTime(LocalTime.MAX); + return this.baseMapper.getByDate(start1, end1, siteIds); } - + @Override public List<Map<String, Object>> queryPower(List<Integer> siteIds) { return this.baseMapper.queryPower(siteIds); } - + @Override public Map<String, Object> qureryPowerLevel(List<Integer> siteIds, ChargingStatisticsQueryDto statisticsQueryDto) { - return this.baseMapper.queryPowerLevel(siteIds,statisticsQueryDto); + return this.baseMapper.queryPowerLevel(siteIds, statisticsQueryDto); } - - - + + @Override public List<Map<String, Object>> usersDay(ChargingStatisticsQueryDto statisticsQueryDto) { return this.baseMapper.usersDay(statisticsQueryDto); } - + @Override public List<Map<String, Object>> usersDay1() { return this.baseMapper.usersDay1(); } - + @Override public List<Map<String, Object>> usersByQuery(ChargingStatisticsQueryDto statisticsQueryDto) { return this.baseMapper.usersByQuery(statisticsQueryDto); } + @Override public List<Map<String, Object>> usersByQuery1(ChargingStatisticsQueryDto statisticsQueryDto) { return this.baseMapper.usersByQuery1(statisticsQueryDto); } - + @Override public List<Map<String, Object>> getUserTagCount() { return this.baseMapper.getUserTagCount(); } - + @Override public List<Map<String, Object>> getVipCount() { return this.baseMapper.getVipCount(); } - + @Override public List<Map<String, Object>> unitConsumption(ChargingStatisticsQueryDto statisticsQueryDto) { return this.baseMapper.unitConsumption(statisticsQueryDto); } - + @Override public List<Map<String, Object>> carUserMethod() { return this.baseMapper.carUserMethod(); } - + @Override public List<Map<String, Object>> carUserBrand() { return this.baseMapper.carUserBrand(); } - + @Override public Map<String, Object> countLocalCar() { return this.baseMapper.countLocalCar(); } - + @Override public Double getAver(List<Integer> siteIds) { return this.baseMapper.getAver(siteIds); } - + @Override public List<Map<String, Object>> getLevelEvaluate(List<Integer> siteIds) { return this.baseMapper.getLevelEvaluate(siteIds); } - - + + @Resource private TShoppingOrderService shoppingOrderService; @Resource @@ -2901,160 +2906,158 @@ private TVipOrderRefundService vipOrderRefundService; - - @Override public R payRefund(PayOrderRefundDto payOrderQueryDto) { - if (payOrderQueryDto.getType()==1){ - TChargingOrder tChargingOrder = this.baseMapper.selectById(payOrderQueryDto.getOrderId()); - if (tChargingOrder.getPaymentAmount().compareTo(payOrderQueryDto.getRefundAmount())==-1){ - return R.fail("退款金额需小于支付金额"); - } - if ((tChargingOrder.getRechargeAmount().subtract(tChargingOrder.getRefundAmount()).compareTo(payOrderQueryDto.getRefundAmount()))==0){ - tChargingOrder.setStatus(5); - } - - - TChargingOrderRefund chargingOrderRefund = new TChargingOrderRefund(); - chargingOrderRefund.setChargingOrderId(tChargingOrder.getId()); - chargingOrderRefund.setRefundAmount(payOrderQueryDto.getRefundAmount()); - chargingOrderRefund.setRefundStatus(1); - chargingOrderRefund.setPayType(tChargingOrder.getRechargePaymentType()); - chargingOrderRefund.setRefundTime(LocalDateTime.now()); - chargingOrderRefund.setCode(tChargingOrder.getCode()); - SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS"); - chargingOrderRefund.setRefundCode("GDF" + sdf.format(new Date()) + (Double.valueOf(Math.random() * 1000).intValue())); - chargingOrderRefund.setRefundTitle("后台退款"); - chargingOrderRefund.setRefundContent("后台退款"); - chargingOrderRefund.setRefundReason("后台退款"); - chargingOrderRefund.setRefundRemark(payOrderQueryDto.getRemark()); - chargingOrderRefund.setRefundTotalAmount(tChargingOrder.getRefundAmount().add(payOrderQueryDto.getRefundAmount())); - chargingOrderRefund.setPayAmount(tChargingOrder.getPaymentAmount()); - - if(1 == tChargingOrder.getRechargePaymentType()){ - WxPaymentRefundModel model = new WxPaymentRefundModel(); - model.setOut_trade_no(tChargingOrder.getCode()); - model.setOut_refund_no(chargingOrderRefund.getRefundCode()); - model.setTransaction_id(tChargingOrder.getRechargeSerialNumber()); - model.setReason("取消订单"); - model.setNotify_url("/order/t-shopping-order/cancelShoppingOrderWxRefund"); - WxPaymentRefundModel.RefundAmount amount = new WxPaymentRefundModel.RefundAmount(); - amount.setRefund(payOrderQueryDto.getRefundAmount().multiply(new BigDecimal(100)).intValue()); - amount.setTotal(tChargingOrder.getRechargeAmount().multiply(new BigDecimal(100)).intValue()); - amount.setCurrency("CNY"); - model.setAmount(amount); - R<Map<String, Object>> orderR = wxPaymentClient.refundOrderR(model); - if(200 == orderR.getCode()){ - tChargingOrder.setRefundStatus(2); - tChargingOrder.setRefundAmount((tChargingOrder.getRefundAmount()==null? BigDecimal.valueOf(0) :tChargingOrder.getRefundAmount()).add(payOrderQueryDto.getRefundAmount())); - this.baseMapper.updateById(tChargingOrder); - chargingOrderRefundService.save(chargingOrderRefund); - //手续费 - Map<String, Object> amount1 = (Map<String, Object>) orderR.getData().get("amount"); - Object refund_fee1 = amount1.get("refund_fee"); - BigDecimal refund_fee = new BigDecimal(null == refund_fee1 ? "0" : refund_fee1.toString()).divide(new BigDecimal(100)); - chargingOrderRefund.setRefundFee(refund_fee); - chargingOrderRefundService.updateById(chargingOrderRefund); - } - } - - if(2 == tChargingOrder.getRechargePaymentType()){ - RefundReq dto = new RefundReq(); - dto.setOutTradeNo(tChargingOrder.getCode()); - dto.setOutRequestNo(tChargingOrder.getCode()); - dto.setRefundAmount(payOrderQueryDto.getRefundAmount().toString()); - dto.setRefundReason("取消订单"); - RefundResp resp = aliPaymentClient.refund(dto).getData(); - if(null != resp){ - chargingOrderRefund.setRefundStatus(2); - chargingOrderRefund.setRefundAmount((tChargingOrder.getRefundAmount()==null? BigDecimal.valueOf(0) :tChargingOrder.getRefundAmount()).add(payOrderQueryDto.getRefundAmount())); - this.baseMapper.updateById(tChargingOrder); - chargingOrderRefundService.save(chargingOrderRefund); - - } - } - if(3 == tChargingOrder.getRechargePaymentType()){ - RefundReq dto = new RefundReq(); - dto.setOutTradeNo(tChargingOrder.getRechargeSerialNumber()); - dto.setOutRequestNo(tChargingOrder.getCode()); - dto.setRefundAmount(payOrderQueryDto.getRefundAmount().toString()); - dto.setRefundReason("取消订单"); - RefundResp resp = h5AliPaymentClient.refund(dto).getData(); - if(null != resp && "10000".equals(resp.getCode())){ - chargingOrderRefund.setRefundStatus(2); - chargingOrderRefund.setRefundAmount((tChargingOrder.getRefundAmount()==null? BigDecimal.valueOf(0) :tChargingOrder.getRefundAmount()).add(payOrderQueryDto.getRefundAmount())); - this.baseMapper.updateById(tChargingOrder); - chargingOrderRefundService.save(chargingOrderRefund); - - } + if (payOrderQueryDto.getType() == 1) { + TChargingOrder tChargingOrder = this.baseMapper.selectById(payOrderQueryDto.getOrderId()); + if (tChargingOrder.getPaymentAmount().compareTo(payOrderQueryDto.getRefundAmount()) == -1) { + return R.fail("退款金额需小于支付金额"); + } + if ((tChargingOrder.getRechargeAmount().subtract(tChargingOrder.getRefundAmount()).compareTo(payOrderQueryDto.getRefundAmount())) == 0) { + tChargingOrder.setStatus(5); + } + + + TChargingOrderRefund chargingOrderRefund = new TChargingOrderRefund(); + chargingOrderRefund.setChargingOrderId(tChargingOrder.getId()); + chargingOrderRefund.setRefundAmount(payOrderQueryDto.getRefundAmount()); + chargingOrderRefund.setRefundStatus(1); + chargingOrderRefund.setPayType(tChargingOrder.getRechargePaymentType()); + chargingOrderRefund.setRefundTime(LocalDateTime.now()); + chargingOrderRefund.setCode(tChargingOrder.getCode()); + SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS"); + chargingOrderRefund.setRefundCode("GDF" + sdf.format(new Date()) + (Double.valueOf(Math.random() * 1000).intValue())); + chargingOrderRefund.setRefundTitle("后台退款"); + chargingOrderRefund.setRefundContent("后台退款"); + chargingOrderRefund.setRefundReason("后台退款"); + chargingOrderRefund.setRefundRemark(payOrderQueryDto.getRemark()); + chargingOrderRefund.setRefundTotalAmount(tChargingOrder.getRefundAmount().add(payOrderQueryDto.getRefundAmount())); + chargingOrderRefund.setPayAmount(tChargingOrder.getPaymentAmount()); + + if (1 == tChargingOrder.getRechargePaymentType()) { + WxPaymentRefundModel model = new WxPaymentRefundModel(); + model.setOut_trade_no(tChargingOrder.getCode()); + model.setOut_refund_no(chargingOrderRefund.getRefundCode()); + model.setTransaction_id(tChargingOrder.getRechargeSerialNumber()); + model.setReason("取消订单"); + model.setNotify_url("/order/t-shopping-order/cancelShoppingOrderWxRefund"); + WxPaymentRefundModel.RefundAmount amount = new WxPaymentRefundModel.RefundAmount(); + amount.setRefund(payOrderQueryDto.getRefundAmount().multiply(new BigDecimal(100)).intValue()); + amount.setTotal(tChargingOrder.getRechargeAmount().multiply(new BigDecimal(100)).intValue()); + amount.setCurrency("CNY"); + model.setAmount(amount); + R<Map<String, Object>> orderR = wxPaymentClient.refundOrderR(model); + if (200 == orderR.getCode()) { + tChargingOrder.setRefundStatus(2); + tChargingOrder.setRefundAmount((tChargingOrder.getRefundAmount() == null ? BigDecimal.valueOf(0) : tChargingOrder.getRefundAmount()).add(payOrderQueryDto.getRefundAmount())); + this.baseMapper.updateById(tChargingOrder); + chargingOrderRefundService.save(chargingOrderRefund); + //手续费 + Map<String, Object> amount1 = (Map<String, Object>) orderR.getData().get("amount"); + Object refund_fee1 = amount1.get("refund_fee"); + BigDecimal refund_fee = new BigDecimal(null == refund_fee1 ? "0" : refund_fee1.toString()).divide(new BigDecimal(100)); + chargingOrderRefund.setRefundFee(refund_fee); + chargingOrderRefundService.updateById(chargingOrderRefund); } } - if (payOrderQueryDto.getType()==2){ - TShoppingOrder tChargingOrder = shoppingOrderService.getById(payOrderQueryDto.getOrderId()); - if (tChargingOrder.getPaymentAmount().compareTo(payOrderQueryDto.getRefundAmount())==-1){ - return R.fail("退款金额需小于支付金额"); + + if (2 == tChargingOrder.getRechargePaymentType()) { + RefundReq dto = new RefundReq(); + dto.setOutTradeNo(tChargingOrder.getCode()); + dto.setOutRequestNo(tChargingOrder.getCode()); + dto.setRefundAmount(payOrderQueryDto.getRefundAmount().toString()); + dto.setRefundReason("取消订单"); + RefundResp resp = aliPaymentClient.refund(dto).getData(); + if (null != resp) { + chargingOrderRefund.setRefundStatus(2); + chargingOrderRefund.setRefundAmount((tChargingOrder.getRefundAmount() == null ? BigDecimal.valueOf(0) : tChargingOrder.getRefundAmount()).add(payOrderQueryDto.getRefundAmount())); + this.baseMapper.updateById(tChargingOrder); + chargingOrderRefundService.save(chargingOrderRefund); + } - if ((tChargingOrder.getPaymentAmount().subtract(tChargingOrder.getRefundAmount()).compareTo(payOrderQueryDto.getRefundAmount()))==0){ - tChargingOrder.setStatus(5); + } + if (3 == tChargingOrder.getRechargePaymentType()) { + RefundReq dto = new RefundReq(); + dto.setOutTradeNo(tChargingOrder.getRechargeSerialNumber()); + dto.setOutRequestNo(tChargingOrder.getCode()); + dto.setRefundAmount(payOrderQueryDto.getRefundAmount().toString()); + dto.setRefundReason("取消订单"); + RefundResp resp = h5AliPaymentClient.refund(dto).getData(); + if (null != resp && "10000".equals(resp.getCode())) { + chargingOrderRefund.setRefundStatus(2); + chargingOrderRefund.setRefundAmount((tChargingOrder.getRefundAmount() == null ? BigDecimal.valueOf(0) : tChargingOrder.getRefundAmount()).add(payOrderQueryDto.getRefundAmount())); + this.baseMapper.updateById(tChargingOrder); + chargingOrderRefundService.save(chargingOrderRefund); + } - - TShoppingOrderRefund chargingOrderRefund = new TShoppingOrderRefund(); - chargingOrderRefund.setShoppingOrderId(tChargingOrder.getId()); - chargingOrderRefund.setRefundAmount(payOrderQueryDto.getRefundAmount()); - chargingOrderRefund.setRefundStatus(1); - chargingOrderRefund.setPayType(tChargingOrder.getPaymentType()); - chargingOrderRefund.setRefundTime(LocalDateTime.now()); - chargingOrderRefund.setCode(tChargingOrder.getCode()); - SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS"); - chargingOrderRefund.setRefundCode("GDF" + sdf.format(new Date()) + (Double.valueOf(Math.random() * 1000).intValue())); - chargingOrderRefund.setRefundTitle("后台退款"); - chargingOrderRefund.setRefundContent("后台退款"); - chargingOrderRefund.setRefundReason("后台退款"); - chargingOrderRefund.setRefundRemark(payOrderQueryDto.getRemark()); - chargingOrderRefund.setRefundTotalAmount(tChargingOrder.getRefundAmount().add(payOrderQueryDto.getRefundAmount())); - chargingOrderRefund.setPayAmount(tChargingOrder.getPaymentAmount()); - - if(1 == tChargingOrder.getPaymentType()){ - WxPaymentRefundModel model = new WxPaymentRefundModel(); - model.setOut_trade_no(tChargingOrder.getCode()); - model.setOut_refund_no(chargingOrderRefund.getRefundCode()); - model.setTransaction_id(tChargingOrder.getSerialNumber()); - model.setReason("取消订单"); - model.setNotify_url("/order/t-shopping-order/cancelShoppingOrderWxRefund"); - WxPaymentRefundModel.RefundAmount amount = new WxPaymentRefundModel.RefundAmount(); - amount.setRefund(payOrderQueryDto.getRefundAmount().multiply(new BigDecimal(100)).intValue()); - amount.setTotal(tChargingOrder.getPaymentAmount().multiply(new BigDecimal(100)).intValue()); - amount.setCurrency("CNY"); - model.setAmount(amount); - R<Map<String, Object>> orderR = wxPaymentClient.refundOrderR(model); - if(200 == orderR.getCode()){ - tChargingOrder.setRefundStatus(2); - tChargingOrder.setRefundAmount((tChargingOrder.getRefundAmount()==null? BigDecimal.valueOf(0) :tChargingOrder.getRefundAmount()).add(payOrderQueryDto.getRefundAmount())); - shoppingOrderService.updateById(tChargingOrder); - shoppingOrderRefundService.save(chargingOrderRefund); - //手续费 - Map<String, Object> amount1 = (Map<String, Object>) orderR.getData().get("amount"); - Object refund_fee1 = amount1.get("refund_fee"); - BigDecimal refund_fee = new BigDecimal(null == refund_fee1 ? "0" : refund_fee1.toString()).divide(new BigDecimal(100)); - chargingOrderRefund.setRefundFee(refund_fee); - shoppingOrderRefundService.updateById(chargingOrderRefund); - } + } + } + if (payOrderQueryDto.getType() == 2) { + TShoppingOrder tChargingOrder = shoppingOrderService.getById(payOrderQueryDto.getOrderId()); + if (tChargingOrder.getPaymentAmount().compareTo(payOrderQueryDto.getRefundAmount()) == -1) { + return R.fail("退款金额需小于支付金额"); + } + if ((tChargingOrder.getPaymentAmount().subtract(tChargingOrder.getRefundAmount()).compareTo(payOrderQueryDto.getRefundAmount())) == 0) { + tChargingOrder.setStatus(5); + } + + TShoppingOrderRefund chargingOrderRefund = new TShoppingOrderRefund(); + chargingOrderRefund.setShoppingOrderId(tChargingOrder.getId()); + chargingOrderRefund.setRefundAmount(payOrderQueryDto.getRefundAmount()); + chargingOrderRefund.setRefundStatus(1); + chargingOrderRefund.setPayType(tChargingOrder.getPaymentType()); + chargingOrderRefund.setRefundTime(LocalDateTime.now()); + chargingOrderRefund.setCode(tChargingOrder.getCode()); + SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS"); + chargingOrderRefund.setRefundCode("GDF" + sdf.format(new Date()) + (Double.valueOf(Math.random() * 1000).intValue())); + chargingOrderRefund.setRefundTitle("后台退款"); + chargingOrderRefund.setRefundContent("后台退款"); + chargingOrderRefund.setRefundReason("后台退款"); + chargingOrderRefund.setRefundRemark(payOrderQueryDto.getRemark()); + chargingOrderRefund.setRefundTotalAmount(tChargingOrder.getRefundAmount().add(payOrderQueryDto.getRefundAmount())); + chargingOrderRefund.setPayAmount(tChargingOrder.getPaymentAmount()); + + if (1 == tChargingOrder.getPaymentType()) { + WxPaymentRefundModel model = new WxPaymentRefundModel(); + model.setOut_trade_no(tChargingOrder.getCode()); + model.setOut_refund_no(chargingOrderRefund.getRefundCode()); + model.setTransaction_id(tChargingOrder.getSerialNumber()); + model.setReason("取消订单"); + model.setNotify_url("/order/t-shopping-order/cancelShoppingOrderWxRefund"); + WxPaymentRefundModel.RefundAmount amount = new WxPaymentRefundModel.RefundAmount(); + amount.setRefund(payOrderQueryDto.getRefundAmount().multiply(new BigDecimal(100)).intValue()); + amount.setTotal(tChargingOrder.getPaymentAmount().multiply(new BigDecimal(100)).intValue()); + amount.setCurrency("CNY"); + model.setAmount(amount); + R<Map<String, Object>> orderR = wxPaymentClient.refundOrderR(model); + if (200 == orderR.getCode()) { + tChargingOrder.setRefundStatus(2); + tChargingOrder.setRefundAmount((tChargingOrder.getRefundAmount() == null ? BigDecimal.valueOf(0) : tChargingOrder.getRefundAmount()).add(payOrderQueryDto.getRefundAmount())); + shoppingOrderService.updateById(tChargingOrder); + shoppingOrderRefundService.save(chargingOrderRefund); + //手续费 + Map<String, Object> amount1 = (Map<String, Object>) orderR.getData().get("amount"); + Object refund_fee1 = amount1.get("refund_fee"); + BigDecimal refund_fee = new BigDecimal(null == refund_fee1 ? "0" : refund_fee1.toString()).divide(new BigDecimal(100)); + chargingOrderRefund.setRefundFee(refund_fee); + shoppingOrderRefundService.updateById(chargingOrderRefund); } - - if(2 == tChargingOrder.getPaymentType()){ - RefundReq dto = new RefundReq(); - dto.setOutTradeNo(tChargingOrder.getCode()); - dto.setOutRequestNo(tChargingOrder.getCode()); - dto.setRefundAmount(payOrderQueryDto.getRefundAmount().toString()); - dto.setRefundReason("取消订单"); - RefundResp resp = aliPaymentClient.refund(dto).getData(); - if(null != resp){ - tChargingOrder.setRefundStatus(2); - tChargingOrder.setRefundAmount((tChargingOrder.getRefundAmount()==null? BigDecimal.valueOf(0) :tChargingOrder.getRefundAmount()).add(payOrderQueryDto.getRefundAmount())); - shoppingOrderService.updateById(tChargingOrder); - shoppingOrderRefundService.save(chargingOrderRefund); - } + } + + if (2 == tChargingOrder.getPaymentType()) { + RefundReq dto = new RefundReq(); + dto.setOutTradeNo(tChargingOrder.getCode()); + dto.setOutRequestNo(tChargingOrder.getCode()); + dto.setRefundAmount(payOrderQueryDto.getRefundAmount().toString()); + dto.setRefundReason("取消订单"); + RefundResp resp = aliPaymentClient.refund(dto).getData(); + if (null != resp) { + tChargingOrder.setRefundStatus(2); + tChargingOrder.setRefundAmount((tChargingOrder.getRefundAmount() == null ? BigDecimal.valueOf(0) : tChargingOrder.getRefundAmount()).add(payOrderQueryDto.getRefundAmount())); + shoppingOrderService.updateById(tChargingOrder); + shoppingOrderRefundService.save(chargingOrderRefund); } + } // if(3 == tChargingOrder.getPaymentType()){ // RefundReq dto = new RefundReq(); // dto.setOutTradeNo(tChargingOrder.getCode()); @@ -3069,12 +3072,12 @@ // shoppingOrderRefundService.save(chargingOrderRefund); // } // } - - } - - if (payOrderQueryDto.getType()==3){ + + } + + if (payOrderQueryDto.getType() == 3) { TVipOrder tChargingOrder = vipOrderService.getById(payOrderQueryDto.getOrderId()); - if (tChargingOrder.getPaymentAmount().compareTo(payOrderQueryDto.getRefundAmount())==-1){ + if (tChargingOrder.getPaymentAmount().compareTo(payOrderQueryDto.getRefundAmount()) == -1) { return R.fail("退款金额需小于支付金额"); } TVipOrderRefund chargingOrderRefund = new TVipOrderRefund(); @@ -3092,8 +3095,8 @@ chargingOrderRefund.setRefundRemark(payOrderQueryDto.getRemark()); chargingOrderRefund.setRefundTotalAmount(tChargingOrder.getRefundAmount().add(payOrderQueryDto.getRefundAmount())); chargingOrderRefund.setPayAmount(tChargingOrder.getPaymentAmount()); - - if(1 == tChargingOrder.getPaymentType()){ + + if (1 == tChargingOrder.getPaymentType()) { WxPaymentRefundModel model = new WxPaymentRefundModel(); model.setOut_trade_no(tChargingOrder.getCode()); model.setOut_refund_no(chargingOrderRefund.getRefundCode()); @@ -3106,9 +3109,9 @@ amount.setCurrency("CNY"); model.setAmount(amount); R<Map<String, Object>> orderR = wxPaymentClient.refundOrderR(model); - if(200 == orderR.getCode()){ + if (200 == orderR.getCode()) { tChargingOrder.setRefundStatus(2); - tChargingOrder.setRefundAmount((tChargingOrder.getRefundAmount()==null? BigDecimal.valueOf(0) :tChargingOrder.getRefundAmount()).add(payOrderQueryDto.getRefundAmount())); + tChargingOrder.setRefundAmount((tChargingOrder.getRefundAmount() == null ? BigDecimal.valueOf(0) : tChargingOrder.getRefundAmount()).add(payOrderQueryDto.getRefundAmount())); vipOrderService.updateById(tChargingOrder); vipOrderRefundService.save(chargingOrderRefund); //手续费 @@ -3119,17 +3122,17 @@ vipOrderRefundService.updateById(chargingOrderRefund); } } - - if(2 == tChargingOrder.getPaymentType()){ + + if (2 == tChargingOrder.getPaymentType()) { RefundReq dto = new RefundReq(); dto.setOutTradeNo(tChargingOrder.getCode()); dto.setOutRequestNo(tChargingOrder.getCode()); dto.setRefundAmount(payOrderQueryDto.getRefundAmount().toString()); dto.setRefundReason("取消订单"); RefundResp resp = aliPaymentClient.refund(dto).getData(); - if(null != resp){ + if (null != resp) { tChargingOrder.setRefundStatus(2); - tChargingOrder.setRefundAmount((tChargingOrder.getRefundAmount()==null? BigDecimal.valueOf(0) :tChargingOrder.getRefundAmount()).add(payOrderQueryDto.getRefundAmount())); + tChargingOrder.setRefundAmount((tChargingOrder.getRefundAmount() == null ? BigDecimal.valueOf(0) : tChargingOrder.getRefundAmount()).add(payOrderQueryDto.getRefundAmount())); vipOrderService.updateById(tChargingOrder); vipOrderRefundService.save(chargingOrderRefund); } @@ -3151,10 +3154,11 @@ } return R.ok(); } - - + + /** * 根据车牌号和开始时间查询充电数据 + * * @param query * @return */ @@ -3165,19 +3169,19 @@ .eq(TChargingOrder::getRechargePaymentStatus, 2).in(TChargingOrder::getStatus, Arrays.asList(4, 5))); return one; } - + @Override public TSettlementConfirm settlementAdd(SettlementConfirmAdd dto) { List<Site> data = siteClient.getSiteByIds(Arrays.asList(dto.getSiteId())).getData(); List<TChargingOrderAccountingStrategy> list3 = chargingOrderAccountingStrategyService.list(); - + TSettlementConfirm tSettlementConfirm = new TSettlementConfirm(); - if (!data.isEmpty()){ + if (!data.isEmpty()) { tSettlementConfirm.setSiteName(data.get(0).getName()); tSettlementConfirm.setPartnerId(data.get(0).getPartnerId()); - if (data.get(0).getPartnerId()!=null){ + if (data.get(0).getPartnerId() != null) { Partner data1 = siteClient.getPartnerR(data.get(0).getPartnerId()).getData(); - if (data1!=null){ + if (data1 != null) { tSettlementConfirm.setPartnerName(data1.getName()); tSettlementConfirm.setPartnerId(data1.getId()); } @@ -3188,17 +3192,17 @@ // 将这两个时间转化为localDateTime // 创建 DateTimeFormatter 对象,指定格式 DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss"); - + // 将字符串解析为 LocalDateTime 对象 LocalDateTime localDateTime = LocalDateTime.parse(startTime, formatter); LocalDateTime localDateTime1 = LocalDateTime.parse(endTime, formatter); tSettlementConfirm.setEndTime(localDateTime1); tSettlementConfirm.setStartTime(localDateTime); - + // 根据站点id和开始时间和结束时间和归属日期 查询充电订单列表 QueryWrapper<TChargingOrder> eq = new QueryWrapper<TChargingOrder>() .eq("site_id", dto.getSiteId()); - switch (dto.getType()){ + switch (dto.getType()) { case 1: eq.between("pay_time", localDateTime, localDateTime1); break; @@ -3226,7 +3230,7 @@ // 支付订单金额 需要减去退款金额 BigDecimal paymentAmount = new BigDecimal("0"); for (TChargingOrder tChargingOrder : tChargingOrders) { - if(null == tChargingOrder.getStatus() || 5 != tChargingOrder.getStatus()){ + if (null == tChargingOrder.getStatus() || 5 != tChargingOrder.getStatus()) { continue; } List<TChargingOrderAccountingStrategy> list4 = list3.stream().filter(e -> e.getChargingOrderId().equals(tChargingOrder.getId())).collect(Collectors.toList()); @@ -3236,41 +3240,41 @@ // 累加充电总度数 chargingElectronic = chargingElectronic.add(chargingCapacity); // 累加分佣 - if (tChargingOrder.getOrderSource()==2) { - sharingAmount = sharingAmount.add(service_reduce.multiply(new BigDecimal("0.2")).setScale(2,BigDecimal.ROUND_DOWN)); + if (tChargingOrder.getOrderSource() == 2) { + sharingAmount = sharingAmount.add(service_reduce.multiply(new BigDecimal("0.2")).setScale(2, BigDecimal.ROUND_DOWN)); } // 累加电费 electrovalence = electrovalence.add(electronic_reduce); - if (tChargingOrder.getPaymentAmount()!=null && tChargingOrder.getOrderSource()!=2){ + if (tChargingOrder.getPaymentAmount() != null && tChargingOrder.getOrderSource() != 2) { paymentAmount = paymentAmount.add(tChargingOrder.getPaymentAmount()); - + } - if (tChargingOrder.getRechargeAmount()!=null){ + if (tChargingOrder.getRechargeAmount() != null) { orderCommission = orderCommission.add(tChargingOrder.getRechargeAmount().multiply(new BigDecimal("0.006")) - .setScale(2,BigDecimal.ROUND_DOWN)); + .setScale(2, BigDecimal.ROUND_DOWN)); } - + // 累加服务费 - if (tChargingOrder.getServiceCharge()!=null){ - if (tChargingOrder.getOrderSource()==2) { - serviceCharge = serviceCharge.add(service_reduce.multiply(new BigDecimal("0.8")).setScale(2,BigDecimal.ROUND_DOWN)); + if (tChargingOrder.getServiceCharge() != null) { + if (tChargingOrder.getOrderSource() == 2) { + serviceCharge = serviceCharge.add(service_reduce.multiply(new BigDecimal("0.8")).setScale(2, BigDecimal.ROUND_DOWN)); paymentAmount = paymentAmount.add(electronic_reduce).add(service_reduce.multiply(new BigDecimal("0.8"))); - }else{ + } else { serviceCharge = serviceCharge.add(service_reduce); } } // 累加会员折扣 - if (tChargingOrder.getVipDiscountAmount()!=null){ + if (tChargingOrder.getVipDiscountAmount() != null) { vipDiscount = vipDiscount.add(tChargingOrder.getVipDiscountAmount()); } // 累加优惠券折扣 - if (tChargingOrder.getCouponDiscountAmount()!=null){ + if (tChargingOrder.getCouponDiscountAmount() != null) { couponDiscount = couponDiscount.add(tChargingOrder.getCouponDiscountAmount()); } - - + + } - + // 三方交易手续费 三方收费*0.6% commissionAmount = sharingAmount.multiply(new BigDecimal("0.006")); tSettlementConfirm.setSharingAmount(sharingAmount.setScale(2, RoundingMode.HALF_DOWN)); @@ -3286,8 +3290,8 @@ tSettlementConfirm.setVipDiscount(vipDiscount); tSettlementConfirm.setCouponDiscount(couponDiscount); tSettlementConfirm.setType(dto.getType()); - - if (dto.getState() == 2){ + + if (dto.getState() == 2) { tSettlementConfirm.setServiceMoney(dto.getServiceCharge().subtract(dto.getVenue()).subtract(dto.getClean()) .subtract(dto.getMaintain()).multiply(dto.getServicePartner())); tSettlementConfirm.setSupplyElectronic(dto.getSupplyElectronic()); @@ -3296,7 +3300,7 @@ tSettlementConfirm.setClean(dto.getClean()); tSettlementConfirm.setLossElectronic(dto.getMeteringElectronic().subtract(dto.getChargingElectronic())); tSettlementConfirm.setMaintain(dto.getMaintain()); - + tSettlementConfirm.setMeteringElectronic(dto.getMeteringElectronic()); tSettlementConfirm.setProportionPartner(dto.getProportionPartner()); tSettlementConfirm.setProportionMoney(dto.getProportionMoney()); @@ -3314,7 +3318,7 @@ BigDecimal subtract2 = multiply.subtract(subtract1); tSettlementConfirm.setNewMoney(dto.getServiceCharge().subtract(dto.getVenue()).subtract(dto.getClean()) .subtract(dto.getMaintain()).multiply(subtract9).subtract(subtract1)); - + tSettlementConfirm.setTotalService(dto.getTotalService()); tSettlementConfirm.setServiceRemark(dto.getServiceRemark()); tSettlementConfirm.setDistribution(dto.getDistribution()); @@ -3328,18 +3332,18 @@ } return tSettlementConfirm; } - + @Override public PageInfo<TSettlementConfirm> settlementList(SettlementListQuery dto) { String startTime = null; String endTime = null; - if (StringUtils.hasLength(dto.getStartTime())){ + if (StringUtils.hasLength(dto.getStartTime())) { dto.setType(1); String[] split = dto.getStartTime().split(" - "); startTime = split[0]; endTime = split[1]; } - if (StringUtils.hasLength(dto.getEndTime())){ + if (StringUtils.hasLength(dto.getEndTime())) { dto.setType(2); String[] split = dto.getEndTime().split(" - "); startTime = split[0]; @@ -3353,27 +3357,27 @@ Integer roleType = sysUser.getRoleType(); //如果没传siteId,获取当前登陆人所有的siteIds List<Integer> siteIds = new ArrayList<>(); - if (dto.getSiteIds()==null){ - if (userId != null){ + if (dto.getSiteIds() == null) { + if (userId != null) { List<GetSiteListDTO> data = siteClient.getSiteListByUserId(userId).getData(); for (GetSiteListDTO datum : data) { siteIds.add(datum.getId()); } } - }else { + } else { siteIds.add(dto.getSiteIds()); } - if (siteIds.isEmpty()){ + if (siteIds.isEmpty()) { siteIds.add(-1); - }else{ - if (roleType == 2){ + } else { + if (roleType == 2) { List<Integer> integers = new ArrayList<>(); for (Integer siteId : siteIds) { // 校验有没有这个站点的权限 - List<Boolean> t1= partnerClient.getSettlementListMenu(sysUser.getObjectId(),siteId).getData(); - + List<Boolean> t1 = partnerClient.getSettlementListMenu(sysUser.getObjectId(), siteId).getData(); + Boolean b = t1.get(2); - if (b){ + if (b) { integers.add(siteId); } } @@ -3381,49 +3385,50 @@ } } dto.setSiteIdss(siteIds); - PageInfo<TSettlementConfirm> pageInfo = new PageInfo<>(dto.getPageCurr(),dto.getPageSize()); - List<TSettlementConfirm> list = tSettlementConfirmMapper.settlementList(pageInfo,dto); - + PageInfo<TSettlementConfirm> pageInfo = new PageInfo<>(dto.getPageCurr(), dto.getPageSize()); + List<TSettlementConfirm> list = tSettlementConfirmMapper.settlementList(pageInfo, dto); + for (TSettlementConfirm tSettlementConfirm : list) { - if (roleType==2){ + if (roleType == 2) { List<Boolean> data = partnerClient.getSettlementListMenu(sysUser.getObjectId(), tSettlementConfirm.getSiteId()).getData(); tSettlementConfirm.setAuthDownLoad(data.get(0)); tSettlementConfirm.setAuthDelete(data.get(1)); } tSettlementConfirm.setUid(tSettlementConfirm.getId().toString()); List<Site> data1 = siteClient.getSiteByIds(Arrays.asList(tSettlementConfirm.getSiteId())).getData(); - if (!data1.isEmpty()){ + if (!data1.isEmpty()) { tSettlementConfirm.setSiteName(data1.get(0).getName()); Partner data = siteClient.getPartnerR(data1.get(0).getPartnerId()).getData(); - if (data!=null){ + if (data != null) { tSettlementConfirm.setPartnerName(data.getName()); } } - + String format = tSettlementConfirm.getStartTime().format(DateTimeFormatter.ofPattern("yyyy年MM月dd日HH:mm:ss")); String format1 = tSettlementConfirm.getEndTime().format(DateTimeFormatter.ofPattern("yyyy年MM月dd日HH:mm:ss")); - tSettlementConfirm.setTime(format+"至"+format1); - - + tSettlementConfirm.setTime(format + "至" + format1); + + } pageInfo.setRecords(list); return pageInfo; } - + @Autowired private TChargingOrderService chargingOrderService; + @Override public SettlementTotalVO settlementTotal(String time) { Long userId = tokenService.getLoginUser().getUserid(); //如果没传siteId,获取当前登陆人所有的siteIds List<Integer> siteIds = new ArrayList<>(); - if (userId != null){ - List<GetSiteListDTO> data = siteClient.getSiteListByUserId(userId).getData(); - for (GetSiteListDTO datum : data) { - siteIds.add(datum.getId()); - } + if (userId != null) { + List<GetSiteListDTO> data = siteClient.getSiteListByUserId(userId).getData(); + for (GetSiteListDTO datum : data) { + siteIds.add(datum.getId()); + } } - if (siteIds.isEmpty()){ + if (siteIds.isEmpty()) { siteIds.add(-1); } List<Site> siteList = siteClient.getSiteAll().getData(); @@ -3431,14 +3436,14 @@ List<TChargingOrder> totalOrder = chargingOrderService.list(new LambdaQueryWrapper<>(TChargingOrder.class) .eq(TChargingOrder::getRechargePaymentStatus, 2).eq(TChargingOrder::getStatus, 5)); SettlementTotalVO res = new SettlementTotalVO(); - List<TSettlementConfirm> list1 = tSettlementConfirmMapper.settlementTotal(time,siteIds); + List<TSettlementConfirm> list1 = tSettlementConfirmMapper.settlementTotal(time, siteIds); LocalDateTime parse = LocalDateTime.parse(time, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); // 减少一个月 LocalDateTime minus = parse.minusMonths(1); - List<TSettlementConfirm> list2 = tSettlementConfirmMapper.settlementTotal(time,siteIds); + List<TSettlementConfirm> list2 = tSettlementConfirmMapper.settlementTotal(time, siteIds); // 合计 List<TSettlementConfirm> total = new ArrayList<>(); - + TSettlementConfirm tSettlementConfirm1 = new TSettlementConfirm(); BigDecimal meteringElectronic = new BigDecimal("0"); BigDecimal chargingElectronic = new BigDecimal("0"); @@ -3468,22 +3473,22 @@ BigDecimal couponDiscount = new BigDecimal("0"); tSettlementConfirm1.setElectronicRefund(0); // 上月成本合计 - BigDecimal beforeCost= new BigDecimal("0"); + BigDecimal beforeCost = new BigDecimal("0"); // 上月利润合计 - BigDecimal beforeIncome= new BigDecimal("0"); + BigDecimal beforeIncome = new BigDecimal("0"); int i = 1; for (TSettlementConfirm tSettlementConfirm : list1) { tSettlementConfirm.setXuhao(i); tSettlementConfirm.setMetering(tSettlementConfirm.getSupplyElectronic()); Site site = siteList.stream().filter(e -> e.getId().equals(tSettlementConfirm.getSiteId())).findFirst().orElse(null); - if (site!=null){ + if (site != null) { tSettlementConfirm.setSiteName(site.getName()); } - if (tSettlementConfirm.getMeteringElectronic()!=null){ + if (tSettlementConfirm.getMeteringElectronic() != null) { meteringElectronic = meteringElectronic.add(tSettlementConfirm.getMeteringElectronic()); chargingElectronic = chargingElectronic.add(tSettlementConfirm.getChargingElectronic()); } - if (tSettlementConfirm.getLossElectronic()!=null){ + if (tSettlementConfirm.getLossElectronic() != null) { lossElectronic = lossElectronic.add(tSettlementConfirm.getLossElectronic()); } income = income.add(tSettlementConfirm.getIncome()); @@ -3509,12 +3514,12 @@ orderCommission = orderCommission.add(tSettlementConfirm.getOrderCommission()); vipDiscount = vipDiscount.add(tSettlementConfirm.getVipDiscount()); couponDiscount = couponDiscount.add(tSettlementConfirm.getCouponDiscount()); - + // 查询结算确认单开始时间和结束时间的单子 QueryWrapper<TChargingOrder> eq = new QueryWrapper<TChargingOrder>() .eq("site_id", tSettlementConfirm.getSiteId()) - .eq("recharge_payment_status",2); - switch (tSettlementConfirm.getType()){ + .eq("recharge_payment_status", 2); + switch (tSettlementConfirm.getType()) { case 1: eq.between("start_time", tSettlementConfirm.getStartTime(), tSettlementConfirm.getEndTime()); break; @@ -3522,9 +3527,9 @@ eq.between("end_time", tSettlementConfirm.getStartTime(), tSettlementConfirm.getEndTime()); break; } - List<TChargingOrder> tChargingOrders = totalOrder.stream().filter(e-> e.getPayTime() + List<TChargingOrder> tChargingOrders = totalOrder.stream().filter(e -> e.getPayTime() .isBefore(tSettlementConfirm.getEndTime()) - && e.getPayTime().isAfter(tSettlementConfirm.getStartTime())&&e.getSiteId().equals(tSettlementConfirm.getSiteId())).collect(Collectors.toList()); + && e.getPayTime().isAfter(tSettlementConfirm.getStartTime()) && e.getSiteId().equals(tSettlementConfirm.getSiteId())).collect(Collectors.toList()); // 充电总时长 Long temp = 0L; for (TChargingOrder tChargingOrder : tChargingOrders) { @@ -3532,7 +3537,7 @@ LocalDateTime endTime = tChargingOrder.getEndTime(); // 计算时间差 单位秒 long between = ChronoUnit.SECONDS.between(startTime, endTime); - temp+=between; + temp += between; } List<TChargingPile> data = siteClient.getPileListBySiteId(tSettlementConfirm.getSiteId()).getData(); // 计算充电桩的功率平均值 @@ -3540,17 +3545,17 @@ for (TChargingPile datum : data) { bigDecimal = bigDecimal.add(datum.getRatedPower()); } - + tSettlementConfirm.setIncome(tSettlementConfirm.getElectrovalence().add(tSettlementConfirm.getServiceCharge())); //利用率=充电量/(桩数量*功率*时间) List<TChargingPile> data2 = pileList.stream().filter(e -> e.getSiteId().equals(tSettlementConfirm.getSiteId())).collect(Collectors.toList()); BigDecimal bigDecimal2 = new BigDecimal("0"); - - if (data2!=null && (!data2.isEmpty())){ + + if (data2 != null && (!data2.isEmpty())) { for (TChargingPile tChargingPile : data2) { bigDecimal2 = bigDecimal2.add(tChargingPile.getRatedPower()); } - BigDecimal bigDecimal1 = new BigDecimal(data2.size()+""); + BigDecimal bigDecimal1 = new BigDecimal(data2.size() + ""); // 平均功率 BigDecimal divide = bigDecimal2.divide(bigDecimal1, 2, RoundingMode.HALF_DOWN); // 充电量 @@ -3559,27 +3564,27 @@ BigDecimal bigDecimal3 = new BigDecimal(data2.size()); BigDecimal multiply = chargingElectronic1.multiply(new BigDecimal("24")); BigDecimal multiply1 = bigDecimal3.multiply(divide).multiply(new BigDecimal(temp)); - tSettlementConfirm.setRate(chargingElectronic1.divide(multiply1,2,RoundingMode.HALF_DOWN)+""); - }else{ + tSettlementConfirm.setRate(chargingElectronic1.divide(multiply1, 2, RoundingMode.HALF_DOWN) + ""); + } else { tSettlementConfirm.setRate(""); } - - + + for (TSettlementConfirm settlementConfirm : list2) { int value = parse.getMonth().getValue(); settlementConfirm.setMonth(value); settlementConfirm.setIncome(settlementConfirm.getElectrovalence().add(settlementConfirm.getServiceCharge())); tSettlementConfirm.setMetering(tSettlementConfirm.getSupplyElectronic()); - if (tSettlementConfirm.getSiteId().equals(settlementConfirm.getSiteId())){ + if (tSettlementConfirm.getSiteId().equals(settlementConfirm.getSiteId())) { // 电站相同比较收入涨幅跌幅 - if (tSettlementConfirm.getIncome().compareTo(BigDecimal.ZERO)>0){ - BigDecimal subtract = tSettlementConfirm.getIncome().subtract(settlementConfirm.getIncome()).divide(tSettlementConfirm.getIncome(),2, RoundingMode.HALF_DOWN).multiply(new BigDecimal("100")); - tSettlementConfirm.setIncomePercentage(subtract+"%"); - }else { - tSettlementConfirm.setIncomePercentage("100"+"%"); - + if (tSettlementConfirm.getIncome().compareTo(BigDecimal.ZERO) > 0) { + BigDecimal subtract = tSettlementConfirm.getIncome().subtract(settlementConfirm.getIncome()).divide(tSettlementConfirm.getIncome(), 2, RoundingMode.HALF_DOWN).multiply(new BigDecimal("100")); + tSettlementConfirm.setIncomePercentage(subtract + "%"); + } else { + tSettlementConfirm.setIncomePercentage("100" + "%"); + } - + // 比较总利润 收入合计-成本合计 BigDecimal subtract1 = tSettlementConfirm.getIncome().subtract(tSettlementConfirm.getCost()); BigDecimal subtract2 = settlementConfirm.getIncome().subtract(settlementConfirm.getCost()); @@ -3587,7 +3592,8 @@ .divide(subtract2, 2, RoundingMode.HALF_DOWN) .multiply(new BigDecimal("100")) .setScale(2, RoundingMode.HALF_DOWN); - tSettlementConfirm.setTotalPercentage(bigDecimal1+"%"); } + tSettlementConfirm.setTotalPercentage(bigDecimal1 + "%"); + } beforeCost = beforeCost.add(settlementConfirm.getCost()); beforeIncome = beforeIncome.add(settlementConfirm.getIncome()); } @@ -3622,21 +3628,21 @@ tSettlementConfirm.setVipDiscount(vipDiscount); tSettlementConfirm.setCouponDiscount(couponDiscount); // 本月 - if (beforeIncome.compareTo(new BigDecimal("0")) == 0){ - tSettlementConfirm.setIncomePercentage(0+"%"); - tSettlementConfirm.setIncomePercentage(0+"%"); - }else{ - BigDecimal subtract = income.subtract(beforeIncome).divide(beforeIncome,2,RoundingMode.HALF_DOWN).multiply(new BigDecimal("100")); - tSettlementConfirm.setIncomePercentage(subtract+"%"); - tSettlementConfirm.setIncomePercentage(subtract+"%"); + if (beforeIncome.compareTo(new BigDecimal("0")) == 0) { + tSettlementConfirm.setIncomePercentage(0 + "%"); + tSettlementConfirm.setIncomePercentage(0 + "%"); + } else { + BigDecimal subtract = income.subtract(beforeIncome).divide(beforeIncome, 2, RoundingMode.HALF_DOWN).multiply(new BigDecimal("100")); + tSettlementConfirm.setIncomePercentage(subtract + "%"); + tSettlementConfirm.setIncomePercentage(subtract + "%"); } // 比较总利润 收入合计-成本合计 BigDecimal subtract1 = income.subtract(cost); BigDecimal subtract2 = beforeIncome.subtract(beforeCost); - if (subtract2.compareTo(new BigDecimal("0")) == 0){ - tSettlementConfirm.setTotalPercentage(0+"%"); - }else{ - tSettlementConfirm.setTotalPercentage(subtract1.subtract(subtract2).divide(subtract2,2, RoundingMode.HALF_DOWN).setScale(2, RoundingMode.HALF_DOWN).multiply(new BigDecimal("100"))+"%"); + if (subtract2.compareTo(new BigDecimal("0")) == 0) { + tSettlementConfirm.setTotalPercentage(0 + "%"); + } else { + tSettlementConfirm.setTotalPercentage(subtract1.subtract(subtract2).divide(subtract2, 2, RoundingMode.HALF_DOWN).setScale(2, RoundingMode.HALF_DOWN).multiply(new BigDecimal("100")) + "%"); } tSettlementConfirm.setElectronicRefund(0); // 查询上次汇报数据 进行比对涨幅跌幅 @@ -3645,17 +3651,18 @@ res.setList2(total); return res; } + @Override - public SettlementTotalVO settlementTotalR(String time,Long userId) { + public SettlementTotalVO settlementTotalR(String time, Long userId) { //如果没传siteId,获取当前登陆人所有的siteIds List<Integer> siteIds = new ArrayList<>(); - if (userId != null){ - List<GetSiteListDTO> data = siteClient.getSiteListByUserId(userId).getData(); - for (GetSiteListDTO datum : data) { - siteIds.add(datum.getId()); - } + if (userId != null) { + List<GetSiteListDTO> data = siteClient.getSiteListByUserId(userId).getData(); + for (GetSiteListDTO datum : data) { + siteIds.add(datum.getId()); + } } - if (siteIds.isEmpty()){ + if (siteIds.isEmpty()) { siteIds.add(-1); } List<Site> siteList = siteClient.getSiteAll().getData(); @@ -3666,12 +3673,12 @@ List<TChargingOrder> totalOrder = chargingOrderService.list(new LambdaQueryWrapper<>(TChargingOrder.class) .eq(TChargingOrder::getRechargePaymentStatus, 2)); SettlementTotalVO res = new SettlementTotalVO(); - List<TSettlementConfirm> list1 = tSettlementConfirmMapper.settlementTotal(time,siteIds); + List<TSettlementConfirm> list1 = tSettlementConfirmMapper.settlementTotal(time, siteIds); LocalDateTime parse = LocalDateTime.parse(time, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); - List<TSettlementConfirm> list2 = tSettlementConfirmMapper.settlementTotal(time,siteIds); + List<TSettlementConfirm> list2 = tSettlementConfirmMapper.settlementTotal(time, siteIds); // 合计 List<TSettlementConfirm> total = new ArrayList<>(); - + TSettlementConfirm tSettlementConfirm1 = new TSettlementConfirm(); BigDecimal meteringElectronic = new BigDecimal("0"); BigDecimal chargingElectronic = new BigDecimal("0"); @@ -3703,22 +3710,22 @@ // tSettlementConfirm1.setTotalPercentage(); tSettlementConfirm1.setElectronicRefund(0); // 上月成本合计 - BigDecimal beforeCost= new BigDecimal("0"); + BigDecimal beforeCost = new BigDecimal("0"); // 上月利润合计 - BigDecimal beforeIncome= new BigDecimal("0"); + BigDecimal beforeIncome = new BigDecimal("0"); int i = 1; for (TSettlementConfirm tSettlementConfirm : list1) { tSettlementConfirm.setXuhao(i); tSettlementConfirm.setMetering(tSettlementConfirm.getSupplyElectronic()); List<Site> data1 = siteList.stream().filter(e -> e.getId().equals(tSettlementConfirm.getSiteId())).collect(Collectors.toList()); - if (!data1.isEmpty()){ + if (!data1.isEmpty()) { tSettlementConfirm.setSiteName(data1.get(0).getName()); } - if (tSettlementConfirm.getMeteringElectronic()!=null){ + if (tSettlementConfirm.getMeteringElectronic() != null) { meteringElectronic = meteringElectronic.add(tSettlementConfirm.getMeteringElectronic()); chargingElectronic = chargingElectronic.add(tSettlementConfirm.getChargingElectronic()); } - if (tSettlementConfirm.getLossElectronic()!=null){ + if (tSettlementConfirm.getLossElectronic() != null) { lossElectronic = lossElectronic.add(tSettlementConfirm.getLossElectronic()); } income = income.add(tSettlementConfirm.getIncome()); @@ -3744,12 +3751,12 @@ orderCommission = orderCommission.add(tSettlementConfirm.getOrderCommission()); vipDiscount = vipDiscount.add(tSettlementConfirm.getVipDiscount()); couponDiscount = couponDiscount.add(tSettlementConfirm.getCouponDiscount()); - + // 查询结算确认单开始时间和结束时间的单子 QueryWrapper<TChargingOrder> eq = new QueryWrapper<TChargingOrder>() .eq("site_id", tSettlementConfirm.getSiteId()) - .eq("recharge_payment_status",2); - switch (tSettlementConfirm.getType()){ + .eq("recharge_payment_status", 2); + switch (tSettlementConfirm.getType()) { case 1: eq.between("start_time", tSettlementConfirm.getStartTime(), tSettlementConfirm.getEndTime()); break; @@ -3757,10 +3764,10 @@ eq.between("end_time", tSettlementConfirm.getStartTime(), tSettlementConfirm.getEndTime()); break; } - - List<TChargingOrder> tChargingOrders = totalOrder.stream().filter(e-> e.getPayTime() + + List<TChargingOrder> tChargingOrders = totalOrder.stream().filter(e -> e.getPayTime() .isBefore(tSettlementConfirm.getEndTime()) - && e.getPayTime().isAfter(tSettlementConfirm.getStartTime())&&e.getSiteId().equals(tSettlementConfirm.getSiteId())).collect(Collectors.toList()); + && e.getPayTime().isAfter(tSettlementConfirm.getStartTime()) && e.getSiteId().equals(tSettlementConfirm.getSiteId())).collect(Collectors.toList()); // 充电总时长 Long temp = 0L; for (TChargingOrder tChargingOrder : tChargingOrders) { @@ -3768,7 +3775,7 @@ LocalDateTime endTime = tChargingOrder.getEndTime(); // 计算时间差 单位秒 long between = ChronoUnit.SECONDS.between(startTime, endTime); - temp+=between; + temp += between; } List<TChargingPile> data = siteClient.getPileListBySiteId(tSettlementConfirm.getSiteId()).getData(); // 计算充电桩的功率平均值 @@ -3776,18 +3783,18 @@ for (TChargingPile datum : data) { bigDecimal = bigDecimal.add(datum.getRatedPower()); } - - + + tSettlementConfirm.setIncome(tSettlementConfirm.getElectrovalence().add(tSettlementConfirm.getServiceCharge())); //利用率=充电量/(桩数量*功率*时间) List<TChargingPile> data2 = chargingPileClient.getChargingPileBySiteId(tSettlementConfirm.getSiteId()).getData(); BigDecimal bigDecimal2 = new BigDecimal("0"); - - if (data2!=null && (!data2.isEmpty())){ + + if (data2 != null && (!data2.isEmpty())) { for (TChargingPile tChargingPile : data2) { bigDecimal2 = bigDecimal2.add(tChargingPile.getRatedPower()); } - BigDecimal bigDecimal1 = new BigDecimal(data2.size()+""); + BigDecimal bigDecimal1 = new BigDecimal(data2.size() + ""); // 平均功率 BigDecimal divide = bigDecimal2.divide(bigDecimal1, 2, RoundingMode.HALF_DOWN); // 充电量 @@ -3796,27 +3803,27 @@ BigDecimal bigDecimal3 = new BigDecimal(data2.size()); BigDecimal multiply = chargingElectronic1.multiply(new BigDecimal("24")); BigDecimal multiply1 = bigDecimal3.multiply(divide).multiply(new BigDecimal(temp)); - tSettlementConfirm.setRate(chargingElectronic1.divide(multiply1,2,RoundingMode.HALF_DOWN)+""); - }else{ + tSettlementConfirm.setRate(chargingElectronic1.divide(multiply1, 2, RoundingMode.HALF_DOWN) + ""); + } else { tSettlementConfirm.setRate(""); } - - + + for (TSettlementConfirm settlementConfirm : list2) { int value = parse.getMonth().getValue(); settlementConfirm.setMonth(value); settlementConfirm.setIncome(settlementConfirm.getElectrovalence().add(settlementConfirm.getServiceCharge())); tSettlementConfirm.setMetering(tSettlementConfirm.getSupplyElectronic()); - if (tSettlementConfirm.getSiteId().equals(settlementConfirm.getSiteId())){ + if (tSettlementConfirm.getSiteId().equals(settlementConfirm.getSiteId())) { // 电站相同比较收入涨幅跌幅 - if (tSettlementConfirm.getIncome().compareTo(BigDecimal.ZERO)>0){ - BigDecimal subtract = tSettlementConfirm.getIncome().subtract(settlementConfirm.getIncome()).divide(tSettlementConfirm.getIncome(),2, RoundingMode.HALF_DOWN).multiply(new BigDecimal("100")); - tSettlementConfirm.setIncomePercentage(subtract+"%"); - }else { - tSettlementConfirm.setIncomePercentage("100"+"%"); - + if (tSettlementConfirm.getIncome().compareTo(BigDecimal.ZERO) > 0) { + BigDecimal subtract = tSettlementConfirm.getIncome().subtract(settlementConfirm.getIncome()).divide(tSettlementConfirm.getIncome(), 2, RoundingMode.HALF_DOWN).multiply(new BigDecimal("100")); + tSettlementConfirm.setIncomePercentage(subtract + "%"); + } else { + tSettlementConfirm.setIncomePercentage("100" + "%"); + } - + // 比较总利润 收入合计-成本合计 BigDecimal subtract1 = tSettlementConfirm.getIncome().subtract(tSettlementConfirm.getCost()); BigDecimal subtract2 = settlementConfirm.getIncome().subtract(settlementConfirm.getCost()); @@ -3824,7 +3831,8 @@ .divide(subtract2, 2, RoundingMode.HALF_DOWN) .multiply(new BigDecimal("100")) .setScale(2, RoundingMode.HALF_DOWN); - tSettlementConfirm.setTotalPercentage(bigDecimal1+"%"); } + tSettlementConfirm.setTotalPercentage(bigDecimal1 + "%"); + } beforeCost = beforeCost.add(settlementConfirm.getCost()); beforeIncome = beforeIncome.add(settlementConfirm.getIncome()); } @@ -3859,22 +3867,22 @@ tSettlementConfirm.setVipDiscount(vipDiscount); tSettlementConfirm.setCouponDiscount(couponDiscount); // 本月 - if (beforeIncome.compareTo(new BigDecimal("0")) == 0){ - tSettlementConfirm.setIncomePercentage(0+"%"); - tSettlementConfirm.setIncomePercentage(0+"%"); - }else{ - BigDecimal subtract = income.subtract(beforeIncome).divide(beforeIncome,2,RoundingMode.HALF_DOWN).multiply(new BigDecimal("100")); - tSettlementConfirm.setIncomePercentage(subtract+"%"); - tSettlementConfirm.setIncomePercentage(subtract+"%"); - + if (beforeIncome.compareTo(new BigDecimal("0")) == 0) { + tSettlementConfirm.setIncomePercentage(0 + "%"); + tSettlementConfirm.setIncomePercentage(0 + "%"); + } else { + BigDecimal subtract = income.subtract(beforeIncome).divide(beforeIncome, 2, RoundingMode.HALF_DOWN).multiply(new BigDecimal("100")); + tSettlementConfirm.setIncomePercentage(subtract + "%"); + tSettlementConfirm.setIncomePercentage(subtract + "%"); + } // 比较总利润 收入合计-成本合计 BigDecimal subtract1 = income.subtract(cost); BigDecimal subtract2 = beforeIncome.subtract(beforeCost); - if (subtract2.compareTo(new BigDecimal("0")) == 0){ - tSettlementConfirm.setTotalPercentage(0+"%"); - }else{ - tSettlementConfirm.setTotalPercentage(subtract1.subtract(subtract2).divide(subtract2,2, RoundingMode.HALF_DOWN).setScale(2, RoundingMode.HALF_DOWN).multiply(new BigDecimal("100"))+"%"); + if (subtract2.compareTo(new BigDecimal("0")) == 0) { + tSettlementConfirm.setTotalPercentage(0 + "%"); + } else { + tSettlementConfirm.setTotalPercentage(subtract1.subtract(subtract2).divide(subtract2, 2, RoundingMode.HALF_DOWN).setScale(2, RoundingMode.HALF_DOWN).multiply(new BigDecimal("100")) + "%"); } tSettlementConfirm.setElectronicRefund(0); // 查询上次汇报数据 进行比对涨幅跌幅 @@ -3883,79 +3891,80 @@ res.setList2(total); return res; } - + @Override public List<Map<String, Object>> countBySource(List<Integer> siteIds, ChargingStatisticsQueryDto statisticsQueryDto) { - return this.baseMapper.countBySource(siteIds,statisticsQueryDto); + return this.baseMapper.countBySource(siteIds, statisticsQueryDto); } - + @Override public List<Map<String, Object>> equipmentUserType1(List<Integer> siteIds, ChargingStatisticsQueryDto statisticsQueryDto) { - return this.baseMapper.equipmentUserType1(siteIds,statisticsQueryDto); + return this.baseMapper.equipmentUserType1(siteIds, statisticsQueryDto); } - + @Override public List<Map<String, Object>> equipmentUserType2(List<Integer> siteIds, ChargingStatisticsQueryDto statisticsQueryDto) { - return this.baseMapper.equipmentUserType2(siteIds,statisticsQueryDto); + return this.baseMapper.equipmentUserType2(siteIds, statisticsQueryDto); } - + @Override public List<Map<String, Object>> equipmentMapbroke1(List<Integer> siteIds, ChargingStatisticsQueryDto statisticsQueryDto) { - return this.baseMapper.equipmentMapbroke1(siteIds,statisticsQueryDto); + return this.baseMapper.equipmentMapbroke1(siteIds, statisticsQueryDto); } - + @Override public List<Map<String, Object>> equipmentMapbroke2(List<Integer> siteIds, ChargingStatisticsQueryDto statisticsQueryDto) { - return this.baseMapper.equipmentMapbroke2(siteIds,statisticsQueryDto); + return this.baseMapper.equipmentMapbroke2(siteIds, statisticsQueryDto); } - + @Override public List<Map<String, Object>> equipmentMapOut1(List<Integer> siteIds, ChargingStatisticsQueryDto statisticsQueryDto) { - return this.baseMapper.equipmentMapOut1(siteIds,statisticsQueryDto); + return this.baseMapper.equipmentMapOut1(siteIds, statisticsQueryDto); } - + @Override public List<Map<String, Object>> equipmentMapOut2(List<Integer> siteIds, ChargingStatisticsQueryDto statisticsQueryDto) { - return this.baseMapper.equipmentMapOut2(siteIds,statisticsQueryDto); + return this.baseMapper.equipmentMapOut2(siteIds, statisticsQueryDto); } - + @Override public List<Map<String, Object>> needElec(List<Integer> siteIds, ChargingStatisticsQueryDto statisticsQueryDto) { - return this.baseMapper.needElec(siteIds,statisticsQueryDto); + return this.baseMapper.needElec(siteIds, statisticsQueryDto); } - + @Override public List<Map<String, Object>> getHourType(List<Integer> siteIds, ChargingDetailQueryDto statisticsQueryDto) { - return this.baseMapper.getHourType(siteIds,statisticsQueryDto); + return this.baseMapper.getHourType(siteIds, statisticsQueryDto); } - + @Override public List<Map<String, Object>> getDateType(List<Integer> siteIds, ChargingDetailQueryDto statisticsQueryDto) { - return this.baseMapper.getDateType(siteIds,statisticsQueryDto); + return this.baseMapper.getDateType(siteIds, statisticsQueryDto); } - + @Override public List<Map<String, Object>> getMonthType(List<Integer> siteIds, ChargingDetailQueryDto statisticsQueryDto) { - return this.baseMapper.getMonthType(siteIds,statisticsQueryDto); + return this.baseMapper.getMonthType(siteIds, statisticsQueryDto); } - + @Override public List<Map<String, Object>> getchargingCapacity(List<Integer> siteIds, ChargingDetailQueryDto statisticsQueryDto) { - return this.baseMapper.getchargingCapacity(siteIds,statisticsQueryDto); + return this.baseMapper.getchargingCapacity(siteIds, statisticsQueryDto); } - + @Override public List<Map<String, Object>> countAllUserData() { return this.baseMapper.countAllUserData(); } - + @Override public List<Map<String, Object>> needElec1(List<Integer> siteIds, ChargingStatisticsQueryDto statisticsQueryDto) { - return this.baseMapper.needElec1(siteIds,statisticsQueryDto); + return this.baseMapper.needElec1(siteIds, statisticsQueryDto); } /** * 获取充电结束页面详情 + * * @param id * @return */ @@ -3964,7 +3973,7 @@ EndOfChargePageInfo info = new EndOfChargePageInfo(); TChargingOrder chargingOrder = this.getById(id); Long userId = tokenService.getLoginUserApplet().getUserId(); - if(!chargingOrder.getAppUserId().equals(userId)){ + if (!chargingOrder.getAppUserId().equals(userId)) { throw new RuntimeException("权限不足"); } info.setId(id); @@ -3987,7 +3996,7 @@ info.setDuration(0 == hour ? String.format("%s分钟", second) : String.format("%s小时%s分钟", hour, second)); return info; } - + @Override public Long countNoTag() { return this.baseMapper.countNoTag(); @@ -3997,27 +4006,27 @@ @Override public List<TChargingOrder> getChargingOrder(TChargingOrderVo order) { LambdaQueryWrapper<TChargingOrder> queryWrapper = new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getDelFlag, 0); - if(null != order.getChargingPileId()){ + if (null != order.getChargingPileId()) { queryWrapper.eq(TChargingOrder::getChargingPileId, order.getChargingPileId()); } - if(null != order.getChargingGunId()){ + if (null != order.getChargingGunId()) { queryWrapper.eq(TChargingOrder::getChargingGunId, order.getChargingGunId()); } - if(null != order.getStatus()){ + if (null != order.getStatus()) { queryWrapper.eq(TChargingOrder::getStatus, order.getStatus()); } - if(null != order.getAppUserId()){ + if (null != order.getAppUserId()) { queryWrapper.eq(TChargingOrder::getAppUserId, order.getAppUserId()); } - if(null != order.getStatusList()){ + if (null != order.getStatusList()) { queryWrapper.in(TChargingOrder::getStatus, order.getStatusList()); } - if(null != order.getEndMode()){ + if (null != order.getEndMode()) { queryWrapper.eq(TChargingOrder::getEndMode, order.getEndMode()); } return this.list(queryWrapper.orderByDesc(TChargingOrder::getCreateTime)); } - + @Override public Long countCar(List<String> brands) { return this.baseMapper.countCar(brands); @@ -4026,6 +4035,7 @@ /** * 添加三方平台充电订单数据 + * * @param query */ @Override @@ -4033,7 +4043,7 @@ //检查当前枪是否是正在使用中 TChargingOrder one = this.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getChargingGunId, query.getChargingGunId()) .in(TChargingOrder::getStatus, Arrays.asList(1, 2, 3)).eq(TChargingOrder::getDelFlag, 0)); - if(null != one){ + if (null != one) { return R.fail("充电枪正在充电中,启动失败"); } @@ -4060,9 +4070,9 @@ chargingOrder.setTripartitePlatformName(operator.getName()); chargingOrder.setStartChargeSeq(query.getStartChargeSeq()); //车辆信息 - if(StringUtils.hasLength(query.getPlateNum())){ + if (StringUtils.hasLength(query.getPlateNum())) { TAppUserCar appUserCar = appUserCarClient.getAppUserCarByLicensePlate(query.getPlateNum()).getData(); - if(null != appUserCar){ + if (null != appUserCar) { chargingOrder.setAppUserCarId(appUserCar.getId()); } chargingOrder.setPlateNum(query.getPlateNum()); @@ -4076,7 +4086,7 @@ this.save(chargingOrder); Integer accountingStrategyId = tChargingGun.getAccountingStrategyId(); - if(null == accountingStrategyId){ + if (null == accountingStrategyId) { Site site = siteClient.getSiteByIds(Arrays.asList(tChargingGun.getSiteId())).getData().get(0); //查询站点上面的计费策略 accountingStrategyId = site.getAccountingStrategyId(); @@ -4137,6 +4147,7 @@ /** * 三方平台停止充电操作 + * * @param startChargeSeq * @return */ @@ -4144,10 +4155,10 @@ public R tripartitePlatformStopCharge(String startChargeSeq) { TChargingOrder order = this.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getStartChargeSeq, startChargeSeq)); Integer status = order.getStatus(); - if(status != 3){ + if (status != 3) { return R.fail("还未开始充电"); } - if(status == 4 || status == 5){ + if (status == 4 || status == 5) { return R.fail("不能重复操作"); } TChargingOrder chargingOrder = new TChargingOrder(); @@ -4163,7 +4174,7 @@ TChargingGun chargingGun = chargingGunClient.getChargingGunById(order.getChargingGunId()).getData(); //异步线程处理停机 ExecutorService cachedThreadPool = Executors.newFixedThreadPool(1); - cachedThreadPool.execute(()->{ + cachedThreadPool.execute(() -> { //调用硬件停止充电,停止成功后开始计算费用退款 TChargingPile chargingPile = chargingPileClient.getChargingPileById(order.getChargingPileId()).getData(); PlatformStopCharging platformStopCharging = new PlatformStopCharging(); @@ -4185,6 +4196,7 @@ /** * 获取充电后没有扣除费用的数据 + * * @return */ @Override @@ -4204,8 +4216,8 @@ /** - * * 手动推送订单给第三方平台 + * * @param code * @return */ @@ -4220,13 +4232,11 @@ } - - - public R addChargingOrderSummaryData(){ + public R addChargingOrderSummaryData() { List<TChargingOrderAccountingStrategy> list3 = chargingOrderAccountingStrategyService.list(); List<TChargingOrder> list1 = this.list(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getDelFlag, 0)); for (TChargingOrder chargingOrderVO : list1) { - if(null == chargingOrderVO.getStatus() || 5 != chargingOrderVO.getStatus()){ + if (null == chargingOrderVO.getStatus() || 5 != chargingOrderVO.getStatus()) { continue; } List<TChargingOrderAccountingStrategy> list4 = list3.stream().filter(e -> e.getChargingOrderId().equals(chargingOrderVO.getId())).collect(Collectors.toList()); @@ -4238,17 +4248,17 @@ if (!chargingOrderVO.getOrderSource().equals(2)) { serviceMoney = serviceMoney.add(service_reduce); paymentMoney = paymentMoney.add(electronic_reduce).add(service_reduce); - }else{ + } else { serviceMoney = serviceMoney.add(service_reduce.multiply(new BigDecimal("0.8"))); paymentMoney = paymentMoney.add(electronic_reduce).add(service_reduce.multiply(new BigDecimal("0.8"))); } Long time = 0L; - if (chargingOrderVO.getStartTime()!=null && chargingOrderVO.getEndTime()!=null){ + if (chargingOrderVO.getStartTime() != null && chargingOrderVO.getEndTime() != null) { LocalDateTime startTime = chargingOrderVO.getStartTime(); LocalDateTime endTime = chargingOrderVO.getEndTime(); // 计算时间差 单位秒 long between = ChronoUnit.SECONDS.between(startTime, endTime); - time+=between; + time += between; } TChargingOrderSummaryData summaryData = new TChargingOrderSummaryData(); @@ -4262,7 +4272,7 @@ } return R.ok(); } - + /** * 大屏-新能源汽车电池安全检测次数统计 */ @@ -4271,14 +4281,14 @@ StatisticsOfBatteryVO vo = new StatisticsOfBatteryVO(); //1.计算累计次数 //查询该俩站点的快充和超充的充电枪id集合 site_id 25 26 charge_model 1 2 - R<List<Integer>> r = chargingGunClient.getGunIdsBySiteIdsAndChargeModels(Arrays.asList(25,26),Arrays.asList(1,2)); - if (r.getCode()!=200){ + R<List<Integer>> r = chargingGunClient.getGunIdsBySiteIdsAndChargeModels(Arrays.asList(25, 26), Arrays.asList(1, 2)); + if (r.getCode() != 200) { return R.ok(vo); } - List<Integer> gunIds=r.getData(); + List<Integer> gunIds = r.getData(); //统计 - Long total= 0L; - if(gunIds!=null && !gunIds.isEmpty()) { + Long total = 0L; + if (gunIds != null && !gunIds.isEmpty()) { total = this.baseMapper.selectCount(new LambdaQueryWrapper<TChargingOrder>() .eq(TChargingOrder::getDelFlag, 0)//未删除 .in(TChargingOrder::getStatus, Arrays.asList(3, 5))//充电中、已结束 @@ -4292,8 +4302,8 @@ LocalDateTime endDate = today.minusDays(1).atTime(LocalTime.MAX); // 查询数据库 List<OrderCountByDate> orderCounts = this.baseMapper.countOrdersByDate(startDate, endDate, gunIds);*/ - - + + List<LocalDate> dates = new ArrayList<>(); List<Integer> counts = new ArrayList<>(); LocalDate today = LocalDate.now(); @@ -4303,13 +4313,13 @@ LocalDateTime startOfDay = day.atStartOfDay(); LocalDateTime endOfDay = day.atTime(LocalTime.MAX); //统计 - Long count=0L; - if(gunIds!=null && !gunIds.isEmpty()){ + Long count = 0L; + if (gunIds != null && !gunIds.isEmpty()) { count = this.baseMapper.selectCount(new LambdaQueryWrapper<TChargingOrder>() - .eq(TChargingOrder::getDelFlag,0)//未删除 - .in(TChargingOrder::getStatus,Arrays.asList(3,5))//充电中、已结束 - .in(TChargingOrder::getChargingGunId,gunIds)//符合条件的充电枪 站点 超充快充 - .between(TChargingOrder::getCreateTime,startOfDay,endOfDay));//每天 + .eq(TChargingOrder::getDelFlag, 0)//未删除 + .in(TChargingOrder::getStatus, Arrays.asList(3, 5))//充电中、已结束 + .in(TChargingOrder::getChargingGunId, gunIds)//符合条件的充电枪 站点 超充快充 + .between(TChargingOrder::getCreateTime, startOfDay, endOfDay));//每天 } dates.add(day); counts.add(count.intValue()); @@ -4318,16 +4328,18 @@ vo.setCounts(counts); return R.ok(vo); } + @Override public BigDecimal getSumDegreeBySiteIds(List<Integer> siteIds) { - + return this.baseMapper.getSumDegreeBySiteIds(siteIds); - + } /** * 获取启动失败且时间超过1小时的订单 + * * @return */ @Override @@ -4338,6 +4350,7 @@ /** * 获取停止中的数据 + * * @return */ @Override @@ -4348,6 +4361,7 @@ /** * 获取充电中的数据 + * * @return */ @Override -- Gitblit v1.7.1