Pu Zhibing
2025-05-19 3244b550596e0330031b3f4547356927df83b0ad
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyController.java
@@ -1,9 +1,13 @@
package com.ruoyi.chargingPile.controller;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.ruoyi.account.api.model.TAppUser;
import com.ruoyi.chargingPile.api.dto.TAccountingStrategyDTO;
import com.ruoyi.chargingPile.api.model.*;
import com.ruoyi.chargingPile.api.query.BatchSetAccountingStrategy;
import com.ruoyi.chargingPile.api.query.TAccountingStrategyQuery;
import com.ruoyi.chargingPile.api.vo.TAccountingStrategyDetailVO;
import com.ruoyi.chargingPile.api.vo.TAccountingStrategyVO;
@@ -13,12 +17,19 @@
import com.ruoyi.chargingPile.service.TChargingPileService;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.dto.SteategyPassDto;
import com.ruoyi.common.core.enums.status.AppUserStatusEnum;
import com.ruoyi.common.core.web.domain.AjaxResult;
import com.ruoyi.common.core.web.page.PageInfo;
import com.ruoyi.common.log.annotation.Log;
import com.ruoyi.common.log.enums.BusinessType;
import com.ruoyi.common.log.enums.OperatorType;
import com.ruoyi.common.security.annotation.Logical;
import com.ruoyi.common.security.annotation.RequiresPermissions;
import com.ruoyi.common.security.service.TokenService;
import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.integration.api.feignClient.IntegrationClient;
import com.ruoyi.integration.api.feignClient.TCECClient;
import com.ruoyi.system.api.domain.SysUser;
import com.ruoyi.system.api.feignClient.SysUserClient;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.BeanUtils;
@@ -34,6 +45,7 @@
import java.util.Arrays;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
import static com.ruoyi.common.core.context.SecurityContextHolder.getUserId;
@@ -58,6 +70,13 @@
    private ISiteService siteService;
    @Resource
    private SysUserClient sysUserClient;
    @Resource
    private IntegrationClient integrationClient;
    @Resource
    private TCECClient tcecClient;
    @Autowired
    public TAccountingStrategyController(TAccountingStrategyService accountingStrategyService, TAccountingStrategyDetailService accountingStrategyDetailService) {
@@ -68,6 +87,8 @@
    /**
     * 查询计费策略列表
     */
    @RequiresPermissions(value = {"/site/add", "/site/update", "/site/accounting_strategy", "/chargingPile/add_charging_gun", "/chargingPile/accountingStrategy",
            "/chargingGun/update", "/accountingStrategy"}, logical = Logical.OR)
    @ApiOperation(tags = {"后台-计费策略"},value = "查询计费策略分页列表")
    @PostMapping(value = "/pageList")
    public AjaxResult<PageInfo<TAccountingStrategyVO>> pageList(@RequestBody TAccountingStrategyQuery query) {
@@ -77,10 +98,12 @@
    /**
     * 查询计费策略明细列表
     */
    @RequiresPermissions(value = {"/billingTemplateAudit/info", "/site/accounting_strategy", "/chargingGun/select_rate", "/accountingStrategy",
            "/accountingStrategy/select", "/accountingStrategy/update"}, logical = Logical.OR)
    @ApiOperation(tags = {"后台-计费策略", "管理后台-站点管理", "管理后台-充电桩信息"},value = "查询计费策略明细列表")
    @GetMapping(value = "/queryAccountingStrategyDetailByStrategyId")
    public AjaxResult<List<TAccountingStrategyDetailVO>> queryAccountingStrategyDetailByStrategyId(@RequestParam("strategyId") Integer strategyId) {
        List<TAccountingStrategyDetailVO> list = accountingStrategyDetailService.queryAccountingStrategyDetailByStrategyId(strategyId);
        List<TAccountingStrategyDetailVO> list = accountingStrategyDetailService.queryMangementAccountingStrategyDetailByStrategyId(strategyId);
        list.forEach(detail -> {
            detail.setTotalPrice(detail.getElectrovalence().add(detail.getServiceCharge()));
        });
@@ -112,12 +135,20 @@
        // 添加明细
        dto.getAccountingStrategyDetails().forEach(detail -> detail.setAccountingStrategyId(dto.getId()));
        accountingStrategyDetailService.saveBatch(dto.getAccountingStrategyDetails());
        if(null != dto.getSiteId()){
            //下发硬件数据
            List<TChargingPile> list = chargingPileService.lambdaQuery().eq(TChargingPile::getSiteId, dto.getSiteId()).eq(TChargingPile::getDelFlag, 0).list();
            for (TChargingPile tChargingPile : list) {
                integrationClient.setupBillingModel1(tChargingPile.getCode(), JSON.toJSONString(dto.getAccountingStrategyDetails()));
            }
        }
        return AjaxResult.ok(dto.getId());
    }
    /**
     * 修改计费策略
     */
    @RequiresPermissions(value = {"/accountingStrategy/update"}, logical = Logical.OR)
    @Log(title = "【计费策略】修改计费策略", businessType = BusinessType.UPDATE,operatorType = OperatorType.MANAGE)
    @ApiOperation(tags = {"后台-计费策略", "管理后台-站点管理"},value = "修改计费策略")
    @PostMapping(value = "/update")
@@ -130,6 +161,9 @@
        Boolean flag1 = accountingStrategyDetailService.isStrategyPriceConsistent(dto.getAccountingStrategyDetails());
        if(!flag1){
            return AjaxResult.error("同阶段费率值需一致");
        }
        if(Objects.isNull(dto.getDiscount())){
            accountingStrategyService.update(Wrappers.<TAccountingStrategy>lambdaUpdate().set(TAccountingStrategy::getDiscount, null).eq(TAccountingStrategy::getId, dto.getId()));
        }
        // 判断修改的计费策略是否为已通过
        if(null != dto.getAuditStatus() && (dto.getAuditStatus() == 3 || dto.getAuditStatus() == 4)){
@@ -144,14 +178,17 @@
                dto.setAuditStatus(1);
                accountingStrategyService.updateById(dto);
                // 添加明细
                dto.getAccountingStrategyDetails().forEach(detail -> detail.setAccountingStrategyId(dto.getId()));
                dto.getAccountingStrategyDetails().forEach(detail -> {
                    detail.setAccountingStrategyId(dto.getId());
                    detail.setId(null);
                });
                accountingStrategyDetailService.saveBatch(dto.getAccountingStrategyDetails());
            }else {
                Long userId = SecurityUtils.getLoginUser().getUserid();
                dto.setUserId(userId);
                dto.setAuditStatus(1);
                dto.setId(null);
                dto.setParentId(dto.getId());
                dto.setId(null);
                accountingStrategyService.save(dto);
                // 添加明细
                List<TAccountingStrategyDetail> accountingStrategyDetails = dto.getAccountingStrategyDetails();
@@ -168,8 +205,19 @@
            dto.setAuditStatus(1);
            accountingStrategyService.updateById(dto);
            // 添加明细
            dto.getAccountingStrategyDetails().forEach(detail -> detail.setAccountingStrategyId(dto.getId()));
            dto.getAccountingStrategyDetails().forEach(detail -> {
                detail.setAccountingStrategyId(dto.getId());
                detail.setId(null);
            });
            accountingStrategyDetailService.saveBatch(dto.getAccountingStrategyDetails());
        }
        if(null != dto.getSiteId()){
            //下发硬件数据
            List<TChargingPile> list = chargingPileService.lambdaQuery().eq(TChargingPile::getSiteId, dto.getSiteId()).eq(TChargingPile::getDelFlag, 0).list();
            for (TChargingPile tChargingPile : list) {
                integrationClient.setupBillingModel1(tChargingPile.getCode(), JSON.toJSONString(dto.getAccountingStrategyDetails()));
            }
        }
        return AjaxResult.success();
    }
@@ -177,6 +225,7 @@
    /**
     * 查看计费策略详情
     */
    @RequiresPermissions(value = {"/site/accounting_strategy", "/accountingStrategy/select", "/accountingStrategy/update"}, logical = Logical.OR)
    @ApiOperation(tags = {"后台-计费策略", "管理后台-站点管理"},value = "查看计费策略详情")
    @GetMapping(value = "/getDetailById")
    public AjaxResult<TAccountingStrategyVO> getDetailById(@RequestParam("id") Integer id) {
@@ -218,6 +267,10 @@
                String twoUserName = sysUserClient.getSysUser(children.getTwoUserId()).getData().getNickName();
                accountingStrategyVO.setTwoUserName(twoUserName);
            }
            if(null != children.getUserId()){
                String userName = sysUserClient.getSysUser(children.getUserId()).getData().getNickName();
                accountingStrategyVO.setUserName(userName);
            }
            accountingStrategyVO.setAccountingStrategyDetailList(accountingStrategyDetailService.list(Wrappers.lambdaQuery(TAccountingStrategyDetail.class)
                    .eq(TAccountingStrategyDetail::getAccountingStrategyId, children.getId())));
        }else {
@@ -232,6 +285,11 @@
                String twoUserName = sysUserClient.getSysUser(accountingStrategy.getTwoUserId()).getData().getNickName();
                accountingStrategyVO.setTwoUserName(twoUserName);
            }
            TAccountingStrategy accountingStrategy1 = accountingStrategyService.getById(id);
            if(null != accountingStrategy1.getUserId()){
                String userName = sysUserClient.getSysUser(accountingStrategy1.getUserId()).getData().getNickName();
                accountingStrategyVO.setUserName(userName);
            }
            accountingStrategyVO.setAccountingStrategyDetailList(accountingStrategyDetailService.list(Wrappers.lambdaQuery(TAccountingStrategyDetail.class)
                    .eq(TAccountingStrategyDetail::getAccountingStrategyId, id)));
        }
@@ -241,6 +299,7 @@
    /**
     * 删除计费策略
     */
    @RequiresPermissions(value = {"/accountingStrategy/del"}, logical = Logical.OR)
    @Log(title = "【计费策略】删除计费策略", businessType = BusinessType.DELETE,operatorType = OperatorType.MANAGE)
    @ApiOperation(tags = {"后台-计费策略"},value = "删除计费策略")
    @DeleteMapping(value = "/deleteById")
@@ -260,6 +319,7 @@
    /**
     * 批量删除计费策略
     */
    @RequiresPermissions(value = {"/accountingStrategy/del"}, logical = Logical.OR)
    @Log(title = "【计费策略】批量删除计费策略", businessType = BusinessType.DELETE,operatorType = OperatorType.MANAGE)
    @ApiOperation(tags = {"后台-计费策略"},value = "批量删除计费策略")
    @DeleteMapping(value = "/deleteByIds")
@@ -284,16 +344,19 @@
        List<TAccountingStrategyVO> list = accountingStrategyService.getPlatformAccountingStrategy();
        return AjaxResult.success(list);
    }
    @RequiresPermissions(value = {"/billingTemplateAudit"}, logical = Logical.OR)
    @ApiOperation(tags = {"后台-申请表单-计费模板审核"},value = "查询计费审核分页列表")
    @PostMapping(value = "/auth/pageList")
    public AjaxResult<PageInfo<TAccountingStrategyVO>> authPageList(@RequestBody TAccountingStrategyQuery query) {
        return AjaxResult.ok(accountingStrategyService.pageList(query));
        return AjaxResult.ok(accountingStrategyService.pageList1(query));
    }
    @RequiresPermissions(value = {"/billingTemplateAudit/audit"}, logical = Logical.OR)
    @ApiOperation(tags = {"后台-申请表单-计费模板审核"},value = "审核")
    @PostMapping(value = "/auth/pass")
    @Log(title = "【计费模板审核】审核计费模板", businessType = BusinessType.OTHER,operatorType = OperatorType.MANAGE)
@@ -323,14 +386,25 @@
                    TAccountingStrategy one = accountingStrategyService.lambdaQuery().eq(TAccountingStrategy::getId, byId.getParentId()).one();
                    byId.setSiteId(one.getSiteId());
                    //将site表对应的模板id修改为新的这个
                    Site byId1 = siteService.getById(one.getSiteId());
                    byId1.setAccountingStrategyId(byId.getId());
                    siteService.updateById(byId1);
                    List<Site> list = siteService.lambdaQuery().eq(Site::getAccountingStrategyId, one.getId()).list();
                    for (Site site : list) {
                        site.setAccountingStrategyId(byId.getId());
                    }
                    siteService.updateBatchById(list);
                    accountingStrategyService.removeById(one.getId());
                    //推送三方平台
                    List<Integer> siteIds = list.stream().map(Site::getId).collect(Collectors.toList());
                    tcecClient.notificationStationChange(siteIds);
                }
                //硬件
                List<TAccountingStrategyDetail> accountingStrategyDetails = accountingStrategyDetailService.list(new LambdaQueryWrapper<TAccountingStrategyDetail>().eq(TAccountingStrategyDetail::getAccountingStrategyId, byId.getId()));
                List<TChargingPile> list = chargingPileService.lambdaQuery().eq(TChargingPile::getSiteId, byId.getSiteId()).list();
                for (TChargingPile tChargingPile : list) {
                    integrationClient.setupBillingModel1(tChargingPile.getCode(), JSON.toJSONString(accountingStrategyDetails));
                }
            }
        }else {
            if (byId.getAuditStatus()==1){
@@ -339,6 +413,7 @@
            }else if (byId.getAuditStatus()==2){
                byId.setTwoRemark(steategyPassDto.getRemark());
                byId.setTwoAuditTime(LocalDateTime.now());
            }
            byId.setAuditStatus(4);