无关风月
2025-03-21 954cb72e6d5e7a082f4f0a8940fa8f42f01a7d76
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java
@@ -54,6 +54,7 @@
import com.ruoyi.order.service.*;
import com.ruoyi.order.util.PreviousSixMonths;
import com.ruoyi.order.vo.EndOfChargePageInfo;
import com.ruoyi.order.vo.WatchChargingOrderVo;
import com.ruoyi.other.api.feignClient.RoleSiteClient;
import com.ruoyi.other.api.feignClient.UserSiteClient;
import com.ruoyi.payment.api.feignClient.AliPaymentClient;
@@ -63,14 +64,11 @@
import com.ruoyi.system.api.feignClient.SysUserClient;
import com.ruoyi.system.api.feignClient.SysUserRoleClient;
import com.ruoyi.system.api.model.SysUserRoleVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
@@ -1111,9 +1109,9 @@
            BigDecimal periodElectricPrice = collect.stream().map(TChargingOrderAccountingStrategy::getPeriodElectricPrice).reduce(BigDecimal.ZERO, BigDecimal::add);
            BigDecimal periodServicePrice = collect.stream().map(TChargingOrderAccountingStrategy::getPeriodServicePrice).reduce(BigDecimal.ZERO, BigDecimal::add);
            totalElectrovalence = totalElectrovalence.add(periodElectricPrice);
            commissionAmount = commissionAmount.add(order.getRechargeAmount().multiply(new BigDecimal("0.006")));
            if(2 != order.getOrderSource()){
                totalServiceCharge = totalServiceCharge.add(periodServicePrice);
                commissionAmount = commissionAmount.add((periodElectricPrice.add(periodServicePrice)).multiply(new BigDecimal("0.006")));
            }else{
                totalServiceCharge = totalServiceCharge.add(periodServicePrice.multiply(new BigDecimal("0.8")));
                sharingAmount = sharingAmount.add(periodServicePrice.multiply(new BigDecimal("0.2")));
@@ -1131,7 +1129,7 @@
    @ResponseBody
    @PostMapping(value = "/watch/chargingOrder")
    @ApiOperation(value = "监控订单", tags = {"管理后台-订单管理"})
    public R watchChargingOrder(@RequestBody MongoChargingOrderQuery mongoChargingOrderQuery) {
    public R watchChargingOrder(@RequestBody MongoChargingOrderQuery query) {
        Set<Integer> ids = null;
        //校验合作商权限
        SysUser sysUser = sysUserClient.getSysUser(tokenService.getLoginUser().getUserid()).getData();
@@ -1152,66 +1150,60 @@
                    data.addAll(data1);
                }
                ids = new HashSet<>(data);
            }else{
                ids = new HashSet<>();
                ids.add(-1);
            }
        }
        mongoChargingOrderQuery.setSiteIds(ids);
        mongoChargingOrderQuery.setPageSize(10);
        R<UploadRealTimeMonitoringPageData> all = uploadRealTimeMonitoringDataClient.getAll(mongoChargingOrderQuery);
        UploadRealTimeMonitoringPageData data1 = all.getData();
        List<ChargingOrderAndUploadRealTimeMonitoringDataDto> dtos = new ArrayList<>();
        Map<String,ChargingOrderVO> map  = new HashMap<>();
        for (UploadRealTimeMonitoringData uploadRealTimeMonitoringData : data1.getRecords()) {
            if (roleType==2){
                List<Boolean> data = partnerClient.watchChargingOrder(sysUser.getObjectId(), uploadRealTimeMonitoringData.getSiteId()).getData();
                uploadRealTimeMonitoringData.setAuthInfo(data.get(0));
                uploadRealTimeMonitoringData.setAuthDelete(data.get(1));
            }
            ChargingOrderAndUploadRealTimeMonitoringDataDto dataDto = new ChargingOrderAndUploadRealTimeMonitoringDataDto();
            ChargingOrderQuery dto = new ChargingOrderQuery();
            dto.setCode(uploadRealTimeMonitoringData.getTransaction_serial_number());
            if (map.get(uploadRealTimeMonitoringData.getTransaction_serial_number())==null) {
                TCharingOrderVO vo = chargingOrderService.chargingOrder(dto);
                map.put(uploadRealTimeMonitoringData.getTransaction_serial_number(),vo.getList().getRecords().get(0));
                if (!vo.getList().getRecords().isEmpty()) {
                    ChargingOrderVO chargingOrderVO = vo.getList().getRecords().get(0);
                    if (chargingOrderVO != null) {
                        BeanUtils.copyProperties(chargingOrderVO, dataDto);
                    }
                    BeanUtils.copyProperties(uploadRealTimeMonitoringData, dataDto);
                    if (chargingOrderVO != null && chargingOrderVO.getOrderSource()==2){
                        dataDto.setPeriod_service_price(uploadRealTimeMonitoringData.getPeriod_service_price().multiply(new BigDecimal("0.2").setScale(2,BigDecimal.ROUND_DOWN)));
                    }
                    dataDto.setStartTime(uploadRealTimeMonitoringData.getStartTime());
                    dataDto.setEndTime(uploadRealTimeMonitoringData.getEndTime() == null ? null : uploadRealTimeMonitoringData.getEndTime());
                    dataDto.setStatus(uploadRealTimeMonitoringData.getStatus());
                    dtos.add(dataDto);
                }
            }else {
                ChargingOrderVO vo = map.get(uploadRealTimeMonitoringData.getTransaction_serial_number());
                BeanUtils.copyProperties(vo, dataDto);
                BeanUtils.copyProperties(uploadRealTimeMonitoringData, dataDto);
                dataDto.setStartTime(uploadRealTimeMonitoringData.getStartTime());
                dataDto.setEndTime(uploadRealTimeMonitoringData.getEndTime() == null ? null : uploadRealTimeMonitoringData.getEndTime());
                dataDto.setStatus(uploadRealTimeMonitoringData.getStatus());
                dtos.add(dataDto);
            }
        LambdaQueryWrapper<TChargingOrder> queryWrapper = new LambdaQueryWrapper<TChargingOrder>().like(StringUtils.isNotEmpty(query.getCode()), TChargingOrder::getCode, query.getCode())
                .eq(null != query.getOrderType(), TChargingOrder::getOrderType, query.getOrderType())
                .eq(null != query.getSiteId(), TChargingOrder::getSiteId, query.getSiteId())
                .eq(null != query.getPileId(), TChargingOrder::getChargingPileId, query.getPileId())
                .eq(null != query.getGunId(), TChargingOrder::getChargingGunId, query.getGunId())
                .eq(null != query.getStatus(), TChargingOrder::getStatus, query.getStatus())
                .eq(TChargingOrder::getDelFlag, 0).eq(TChargingOrder::getRechargePaymentStatus, 2)
                .in(null != ids && ids.size() > 0, TChargingOrder::getSiteId, ids);
        if(StringUtils.isNotEmpty(query.getCreateTime())){
            String[] split = query.getCreateTime().split(" - ");
            queryWrapper.between(TChargingOrder::getStartTime, split[0], split[1]);
        }
        for (int i = 0; i < dtos.size(); i++) {
            dtos.get(i).setIndex(i);
        if(StringUtils.isNotEmpty(query.getLastTime())){
            String[] split = query.getLastTime().split(" - ");
            queryWrapper.between(TChargingOrder::getEndTime, split[0], split[1]);
        }
        PageChargingOrderAndUploadRealTimeMonitoringDataDto page = new PageChargingOrderAndUploadRealTimeMonitoringDataDto();
        page.setTotal(data1.getCount());
        page.setRecords(dtos);
        return R.ok(page);
        PageInfo<TChargingOrder> pageInfo = new PageInfo<>(query.getPageCurr(), query.getPageSize());
        PageInfo<TChargingOrder> orderPageInfo = chargingOrderService.page(pageInfo, queryWrapper.orderByDesc(TChargingOrder::getCreateTime));
        List<Site> siteList = siteClient.getSiteAll().getData();
        List<WatchChargingOrderVo> list = new ArrayList<>();
        for (TChargingOrder record : orderPageInfo.getRecords()) {
            WatchChargingOrderVo vo = new WatchChargingOrderVo();
            BeanUtils.copyProperties(record, vo);
            vo.setIdStr(record.getId().toString());
            Site site = siteList.stream().filter(s->s.getId().equals(record.getSiteId())).findFirst().get();
            vo.setSiteName(site.getName());
            TChargingPile chargingPile = chargingPileClient.getChargingPileById(record.getChargingPileId()).getData();
            vo.setTerminalName(chargingPile.getName());
            TChargingGun chargingGun = chargingGunClient.getChargingGunById(record.getChargingGunId()).getData();
            vo.setTerminalCode(chargingGun.getName());
            if(null != record.getStartTime() && null != record.getEndTime()){
                long time = record.getEndTime().toEpochSecond(ZoneOffset.UTC) - record.getStartTime().toEpochSecond(ZoneOffset.UTC);
                vo.setChargingTime(time + "");
            }
            long count = chargingOrderAccountingStrategyService.count(new LambdaQueryWrapper<TChargingOrderAccountingStrategy>().eq(TChargingOrderAccountingStrategy::getChargingOrderId, record.getId()));
            vo.setTimeFrame(count);
            vo.setAuthInfo(roleType == 1 ? true : partnerClient.authMenu(objectId, record.getSiteId(), SiteMenu.CHARGING_PILE_ORDER_MONITORING_RECORD_INFO.getValue()));
            vo.setAuthDelete(roleType == 1 ? true : partnerClient.authMenu(objectId, record.getSiteId(), SiteMenu.CHARGING_PILE_ORDER_MONITORING_RECORD_DEL.getValue()));
            list.add(vo);
        }
        PageInfo<WatchChargingOrderVo> pageInfos = new PageInfo<>(query.getPageCurr(), query.getPageSize());
        pageInfos.setRecords(list);
        pageInfos.setCurrent(pageInfo.getCurrent());
        pageInfos.setPages(pageInfo.getPages());
        pageInfos.setSize(pageInfo.getSize());
        pageInfos.setStartIndex(pageInfo.getStartIndex());
        pageInfos.setTotal(pageInfo.getTotal());
        return R.ok(pageInfos);
    }