Pu Zhibing
2024-12-12 7c0967daf92243b86f2c0a2435b127287358d9c4
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
@@ -60,6 +60,8 @@
import com.ruoyi.payment.api.model.RefundResp;
import com.ruoyi.payment.api.model.WxPaymentRefundModel;
import com.ruoyi.payment.api.vo.*;
import com.ruoyi.system.api.domain.SysUser;
import com.ruoyi.system.api.feignClient.SysUserClient;
import io.seata.spring.annotation.GlobalTransactional;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -100,7 +102,8 @@
   private ChargingGunClient chargingGunClient;
   @Resource
   private TSettlementConfirmMapper tSettlementConfirmMapper;
   @Resource
   private PartnerClient partnerClient;
   @Resource
   private SiteClient siteClient;
   
@@ -884,8 +887,7 @@
            dto.setRefundReason("充电失败,取消充电订单");
            RefundResp resp = aliPaymentClient.refund(dto).getData();
            if(null != resp){
               SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-DDTHH:mm:ss+TIMEZONE");
               AjaxResult success = chargingOrderStartupFailureWxRefund(resp.getOutTradeNo(), resp.getTradeNo(), "SUCCESS", sdf1.format(new Date()));
               AjaxResult success = chargingOrderStartupFailureWxRefund(resp.getOutTradeNo(), resp.getTradeNo(), "SUCCESS", null);
               if(success.isSuccess()){
                  chargingOrderRefundService.save(chargingOrderRefund);
               }
@@ -935,7 +937,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){
      if(null == one || !one.getAppUserId().equals(userId)){
         return null;
      }
      ChargingDetails chargingDetails = new ChargingDetails();
@@ -959,12 +961,12 @@
         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 != data && null != one.getAppUserCarId()){
         TAppUserCar appUserCar = appUserCarClient.getCarByIds(Arrays.asList(one.getAppUserCarId())).getData().get(0);
         //   续航 = 续航里程 * soc
         BigDecimal multiply = new BigDecimal(data.getSoc() / 100).multiply(new BigDecimal(appUserCar.getEndurance()));
         chargingDetails.setEndurance(multiply);
         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()));
            chargingDetails.setEndurance(multiply.setScale(2, RoundingMode.HALF_EVEN));
         }
      }
      return chargingDetails;
   }
@@ -985,6 +987,10 @@
      }
      if(status == 4 || status == 5){
         return AjaxResult.error("不能重复操作");
      }
      Long userId = tokenService.getLoginUserApplet().getUserId();
      if(!order.getAppUserId().equals(userId)){
         return AjaxResult.error("权限不足");
      }
      TChargingOrder chargingOrder = new TChargingOrder();
      chargingOrder.setId(Long.valueOf(id));
@@ -1208,7 +1214,7 @@
         }
         dto.setUserIds(data);
      }
      Long userId = SecurityUtils.getUserId();
      Long userId = tokenService.getLoginUser().getUserid();
      //如果没传siteId,获取当前登陆人所有的siteIds
      List<Integer> siteIds = new ArrayList<>();
      if (dto.getSiteId()==null){
@@ -1221,6 +1227,9 @@
      }else {
         siteIds.add(dto.getSiteId());
      }
      if (siteIds.isEmpty()){
         siteIds.add(-1);
      }
      dto.setSiteIds(siteIds);
      List<ChargingOrderVO> list = this.baseMapper.chargingOrder(pageInfo,dto,startTime1,startTime2,endTime1,endTime2);
      List<ChargingOrderVO> list1 = this.baseMapper.chargingOrder(pageInfo1,dto,startTime1,startTime2,endTime1,endTime2);
@@ -1232,7 +1241,15 @@
       BigDecimal commissionMoney = new BigDecimal("0");
       BigDecimal refundMoney = new BigDecimal("0");
       BigDecimal paymentMoney = new BigDecimal("0");
      // 查询当前登陆人按钮权限
      SysUser sysUser = sysUserClient.getSysUser(tokenService.getLoginUser().getUserid()).getData();
      Integer roleType = sysUser.getRoleType();
      for (ChargingOrderVO chargingOrderVO : list) {
         if (roleType == 2){
            // 校验有没有这个站点的权限
            Boolean t1= partnerClient.getChargingOrderMenu(sysUser.getObjectId(),chargingOrderVO.getSiteId()).getData();
            chargingOrderVO.setAuthRecord(t1);
         }
         chargingOrderVO.setCommissionAmount(chargingOrderVO.getOrderAmount()!=null?chargingOrderVO.getOrderAmount().multiply(new BigDecimal("0.006")):new BigDecimal("0"));
         chargingOrderVO.setPlatFormMoney(chargingOrderVO.getOrderAmount()!=null?chargingOrderVO.getOrderAmount().multiply(new BigDecimal("0.006")).setScale(2,BigDecimal.ROUND_DOWN):new BigDecimal("0"));
         chargingOrderVO.setUid(chargingOrderVO.getId()+"");
@@ -1251,7 +1268,7 @@
         List<TChargingOrderAccountingStrategy> chargingOrderId = chargingOrderAccountingStrategyService.list(new QueryWrapper<TChargingOrderAccountingStrategy>()
               .eq("charging_order_id", chargingOrderVO.getId()));
         UploadRealTimeMonitoringData data5 = uploadRealTimeMonitoringDataClient.chargingOrderInfo(chargingOrderVO.getCode()).getData();
         if (data5!=null){
         if (data5!=null && data5.getCumulative_charging_time()!=null){
            long l = data5.getCumulative_charging_time() * 60L;
            chargingOrderVO.setChargingSecond(l);
         }
@@ -1278,13 +1295,13 @@
         paymentMoney= paymentMoney.add(chargingOrderVO.getPaymentAmount()!=null?chargingOrderVO.getPaymentAmount():new BigDecimal("0"));
         commissionMoney = commissionMoney.add(chargingOrderVO.getOrderAmount()!=null?chargingOrderVO.getOrderAmount().multiply(new BigDecimal("0.006")):new BigDecimal("0"));
         if (chargingOrderVO.getChargingCapacity()!=null){
            total = total.add(chargingOrderVO.getElectricity());
            total = total.add(chargingOrderVO.getElectricity()!=null?chargingOrderVO.getElectricity():new BigDecimal("0"));
         }
         // 充电订单 明细记录
         List<TChargingOrderAccountingStrategy> chargingOrderId = chargingOrderAccountingStrategyService.list(new QueryWrapper<TChargingOrderAccountingStrategy>()
               .eq("charging_order_id", chargingOrderVO.getId()));
         UploadRealTimeMonitoringData data5 = uploadRealTimeMonitoringDataClient.chargingOrderInfo(chargingOrderVO.getCode()).getData();
         if (data5!=null){
         if (data5!=null && data5.getCumulative_charging_time()!=null){
            long l = data5.getCumulative_charging_time() * 60L;
            chargingOrderVO.setChargingSecond(l);
            time+=l;
@@ -1382,7 +1399,8 @@
      return this.baseMapper.getYearData(chargingOrderIds);
   }
   @Resource
   private SysUserClient sysUserClient;
   @Override
   public ChargingOrderTimeVO chargingList(ChargingListQuery dto) {
      String startTime1 = null;
@@ -1426,7 +1444,7 @@
            dto.setCarIds(carIds);
         }
      }
      Long userId = SecurityUtils.getUserId();
      Long userId = tokenService.getLoginUser().getUserid();
      //如果没传siteId,获取当前登陆人所有的siteIds
      List<Integer> siteIds = new ArrayList<>();
      if (dto.getSiteId()==null){
@@ -1439,10 +1457,21 @@
      }else {
         siteIds.add(dto.getSiteId());
      }
      if (siteIds.isEmpty()){
         siteIds.add(-1);
      }
      dto.setSiteIds(siteIds);
      PageInfo<ChargingOrderListVO> pageInfo = new PageInfo<>(dto.getPageCurr(),dto.getPageSize());
      List<ChargingOrderListVO> list = this.baseMapper.chargingList(pageInfo,dto,startTime1,startTime2,endTime1,endTime2);
      // 查询当前登陆人按钮权限
      SysUser sysUser = sysUserClient.getSysUser(tokenService.getLoginUser().getUserid()).getData();
      Integer roleType = sysUser.getRoleType();
      for (ChargingOrderListVO chargingOrderListVO : list) {
         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){
@@ -2210,8 +2239,7 @@
            dto.setRefundReason("充电完成退款");
            RefundResp resp = aliPaymentClient.refund(dto).getData();
            if(null != resp){
               SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-DDTHH:mm:ss+TIMEZONE");
               AjaxResult success = chargingOrderStartupFailureWxRefund(resp.getOutTradeNo(), resp.getTradeNo(), "SUCCESS", sdf1.format(new Date()));
               AjaxResult success = chargingOrderStartupFailureWxRefund(resp.getOutTradeNo(), resp.getTradeNo(), "SUCCESS", null);
               if(success.isSuccess()){
                  chargingOrderRefundService.save(chargingOrderRefund);
               }
@@ -2242,8 +2270,8 @@
   }
   @Override
   public List<Map<String, Object>> usersDay() {
      return this.baseMapper.usersDay();
   public List<Map<String, Object>> usersDay(ChargingStatisticsQueryDto statisticsQueryDto) {
      return this.baseMapper.usersDay(statisticsQueryDto);
   }
   @Override
@@ -2709,7 +2737,7 @@
      }
      dto.setStartTime(startTime);
      dto.setEndTime(endTime);
      Long userId = SecurityUtils.getUserId();
      Long userId = tokenService.getLoginUser().getUserid();
      //如果没传siteId,获取当前登陆人所有的siteIds
      List<Integer> siteIds = new ArrayList<>();
      if (dto.getSiteIds()==null){
@@ -2722,10 +2750,21 @@
      }else {
         siteIds.add(dto.getSiteIds());
      }
      if (siteIds.isEmpty()){
         siteIds.add(-1);
      }
      dto.setSiteIdss(siteIds);
      PageInfo<TSettlementConfirm> pageInfo = new PageInfo<>(dto.getPageCurr(),dto.getPageSize());
      List<TSettlementConfirm> list = tSettlementConfirmMapper.settlementList(pageInfo,dto);
      // 查询当前登陆人按钮权限
      SysUser sysUser = sysUserClient.getSysUser(tokenService.getLoginUser().getUserid()).getData();
      Integer roleType = sysUser.getRoleType();
      for (TSettlementConfirm tSettlementConfirm : list) {
         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()){
@@ -2748,7 +2787,7 @@
   @Override
   public SettlementTotalVO settlementTotal(String time) {
      Long userId = SecurityUtils.getUserId();
      Long userId = tokenService.getLoginUser().getUserid();
      //如果没传siteId,获取当前登陆人所有的siteIds
      List<Integer> siteIds = new ArrayList<>();
      if (userId != null){
@@ -2756,6 +2795,9 @@
            for (GetSiteListDTO datum : data) {
               siteIds.add(datum.getId());
            }
      }
      if (siteIds.isEmpty()){
         siteIds.add(-1);
      }
      SettlementTotalVO res = new SettlementTotalVO();
      List<TSettlementConfirm> list1 = tSettlementConfirmMapper.settlementTotal(time,siteIds);
@@ -2994,6 +3036,9 @@
            for (GetSiteListDTO datum : data) {
               siteIds.add(datum.getId());
            }
      }
      if (siteIds.isEmpty()){
         siteIds.add(-1);
      }
      SettlementTotalVO res = new SettlementTotalVO();
      List<TSettlementConfirm> list1 = tSettlementConfirmMapper.settlementTotal(time,siteIds);
@@ -3303,6 +3348,10 @@
   public EndOfChargePageInfo getEndOfChargePageInfo(String id) {
      EndOfChargePageInfo info = new EndOfChargePageInfo();
      TChargingOrder chargingOrder = this.getById(id);
      Long userId = tokenService.getLoginUserApplet().getUserId();
      if(!chargingOrder.getAppUserId().equals(userId)){
         throw new RuntimeException("权限不足");
      }
      info.setId(id);
      info.setCode(chargingOrder.getCode());
      info.setPaymentAmount(chargingOrder.getPaymentAmount());