package com.ruoyi.chargingPile.service.impl; import com.alibaba.fastjson2.JSON; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.account.api.feignClient.AppUserClient; import com.ruoyi.account.api.feignClient.AppUserVipDetailClient; import com.ruoyi.account.api.model.TAppUser; import com.ruoyi.account.api.model.TAppUserVipDetail; import com.ruoyi.account.api.vo.GetAppUserVipDetail; import com.ruoyi.chargingPile.api.dto.GetSiteListDTO; import com.ruoyi.chargingPile.api.model.*; import com.ruoyi.chargingPile.api.query.GetSiteList; import com.ruoyi.chargingPile.api.query.SiteDetailQuery; import com.ruoyi.chargingPile.api.query.SiteQuery; import com.ruoyi.chargingPile.api.vo.SiteDetailVO; import com.ruoyi.chargingPile.api.vo.SiteVO; import com.ruoyi.chargingPile.api.domain.SiteMenu; import com.ruoyi.chargingPile.mapper.SiteMapper; import com.ruoyi.chargingPile.service.*; import com.ruoyi.chargingPile.util.UUIDUtil; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.common.security.service.TokenService; import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.integration.api.elutong.model.*; import com.ruoyi.integration.api.feignClient.*; import com.ruoyi.other.api.domain.TVip; import com.ruoyi.other.api.feignClient.RoleSiteClient; import com.ruoyi.other.api.feignClient.UserSiteClient; import com.ruoyi.other.api.feignClient.VipClient; import com.ruoyi.system.api.domain.SysUser; import com.ruoyi.system.api.feignClient.SysUserClient; import com.ruoyi.system.api.feignClient.SysUserRoleClient; import com.ruoyi.system.api.model.SysUserRoleVo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import javax.annotation.Resource; import java.math.BigDecimal; import java.time.format.DateTimeFormatter; import java.util.*; import java.util.concurrent.LinkedBlockingDeque; import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; /** * @author zhibing.pu * @Date 2024/8/7 19:54 */ @Service public class SiteServiceImpl extends ServiceImpl implements ISiteService { @Resource private TChargingGunService chargingGunService; @Resource private TChargingPileService chargingPileService; @Resource private SysUserClient sysUserClient; @Resource private IPartnerService partnerService; @Resource private UserSiteClient userSiteClient; @Resource private RoleSiteClient roleSiteClient; @Resource private TokenService tokenService; @Resource private AppUserClient appUserClient; @Resource private SysUserRoleClient sysUserRoleClient; @Resource private TParkingLotService parkingLotService; @Resource private IntegrationClient integrationClient; @Resource private AppUserVipDetailClient vipDetailClient; @Resource private TAccountingStrategyDetailService accountingStrategyDetailService; @Resource private TPartnerSiteService partnerSiteService; @Resource private TCECClient tcecClient; @Resource ELuTongClient eLuTongClient; @Resource private ChengDuJianGuanClient chengDuJianGuanClient; @Resource private DongFuStationClient dongFuStationClient; ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(10, 50, 1, TimeUnit.MINUTES, new LinkedBlockingDeque<>()); /** * 获取站点管理列表数据 * @param siteList * @return */ @Override public PageInfo getSiteList(GetSiteList siteList) { Set ids = null; //校验合作商权限 SysUser sysUser = sysUserClient.getSysUser(tokenService.getLoginUser().getUserid()).getData(); Integer roleType = sysUser.getRoleType(); Integer objectId = sysUser.getObjectId(); R admin = sysUserClient.isAdmin(tokenService.getLoginUser().getUserid()); //合作商 if(roleType == 2){ ids = partnerService.authSite(objectId, SiteMenu.SITE_LIST); }else{ //非管理员需要根据角色和用户配置查询允许的站点数据 //改用roleId=1来判断 if(admin.getData()!=1){ List data = userSiteClient.getSiteIds(sysUser.getUserId()).getData(); List data2 = sysUserRoleClient.getRoleByUserId(sysUser.getUserId()).getData(); if(data2.size() > 0){ List data1 = roleSiteClient.getSiteIds(data2.get(0).getRoleId()).getData(); data.addAll(data1); } ids = new HashSet<>(data); } } PageInfo pageInfo = new PageInfo<>(siteList.getPageCurr(), siteList.getPageSize()); List list = this.baseMapper.getSiteList(pageInfo, siteList, ids); list.forEach(s->{ Integer siteId = s.getId(); s.setAuthAccountingStrategy(roleType == 1 ? true : partnerService.authMenu(objectId, siteId, SiteMenu.SITE_ACCOUNTING_STRATEGY)); //平台账号才有此权限 s.setAuthPartner(roleType == 1 ? true : false); s.setAuthUpdate(roleType == 1 ? true : partnerService.authMenu(objectId, siteId, SiteMenu.SITE_UPDATE)); s.setAuthDelete(roleType == 1 ? true : partnerService.authMenu(objectId, siteId, SiteMenu.SITE_DELETE)); }); return pageInfo.setRecords(list); } @Override public PageInfo getSiteList1(Long userId) { GetSiteList siteList = new GetSiteList(); siteList.setPageCurr(1); siteList.setPageSize(9999); Set ids = null; //校验合作商权限 SysUser sysUser = sysUserClient.getSysUser(userId).getData(); Integer roleType = sysUser.getRoleType(); Integer objectId = sysUser.getObjectId(); R admin = sysUserClient.isAdmin(tokenService.getLoginUser().getUserid()); //合作商 if(roleType == 2){ ids = partnerService.authSite(objectId, SiteMenu.SITE_LIST); }else{ //非管理员需要根据角色和用户配置查询允许的站点数据 if(admin.getData()!=1){ List data = userSiteClient.getSiteIds(sysUser.getUserId()).getData(); List data2 = sysUserRoleClient.getRoleByUserId(sysUser.getUserId()).getData(); List data1 = roleSiteClient.getSiteIds(data2.get(0).getRoleId()).getData(); data.addAll(data1); ids = new HashSet<>(data); } } PageInfo pageInfo = new PageInfo<>(siteList.getPageCurr(), siteList.getPageSize()); List list = this.baseMapper.getSiteList(pageInfo, siteList, ids); for (GetSiteListDTO getSiteListDTO : list) { Integer siteId = getSiteListDTO.getId(); getSiteListDTO.setAuthAccountingStrategy(roleType == 1 ? true : partnerService.authMenu(objectId, siteId, SiteMenu.SITE_ACCOUNTING_STRATEGY)); //平台账号才有此权限 getSiteListDTO.setAuthPartner(roleType == 1 ? true : false); getSiteListDTO.setAuthUpdate(roleType == 1 ? true : partnerService.authMenu(objectId, siteId, SiteMenu.SITE_UPDATE)); getSiteListDTO.setAuthDelete(roleType == 1 ? true : partnerService.authMenu(objectId, siteId, SiteMenu.SITE_DELETE)); } return pageInfo.setRecords(list); } /** * 添加站点信息 * @param site * @return */ @Override public AjaxResult addSite(Site site) { AjaxResult ajaxResult = addSiteVerify(site); if(ajaxResult.isError()){ return ajaxResult; } Site one = this.getOne(new LambdaQueryWrapper().eq(Site::getCode, site.getCode()).eq(Site::getDelFlag, 0)); if(null != one){ return AjaxResult.error("站点编号重复"); } site.setMark(0); this.save(site); //推送成都监管 chengDuJianGuanClient.notificationStationInfo(site.getId()); if(StringUtils.isNotEmpty(site.getSerAreaCode())){ threadPoolExecutor.execute(()->{ StationInfoReq stationInfoReq = new StationInfoReq(); stationInfoReq.setOperatorId("91510903906171535D"); stationInfoReq.setStationId(site.getCode()); OperatorInfo operatorInfo = new OperatorInfo(); operatorInfo.setOperatorId("91510903906171535D"); operatorInfo.setOperatorName("四川明星新能源科技有限公司"); operatorInfo.setOperatorTel1("18683346252"); operatorInfo.setOperatorTel2("13982508784"); operatorInfo.setOperatorRegAddress("遂宁市船山区渠河南路18号"); operatorInfo.setOperatorNote(""); stationInfoReq.setOperatorInfo(operatorInfo); List stationInfos = new ArrayList<>(); stationInfos.add(buildStationInfo(site)); stationInfoReq.setItemSize(stationInfos.size()); stationInfoReq.setStationInfos(stationInfos); R r = eLuTongClient.pushStationInfo(stationInfoReq); if(200 != r.getCode()){ System.out.println(r.getMsg()); } // TODO 东涪推送 dongFuStationClient.pushChargingStation(); }); } return AjaxResult.success(); } private StationInfo buildStationInfo(Site site){ StationInfo stationInfo = new StationInfo(); stationInfo.setSerAreaCode(site.getSerAreaCode()); stationInfo.setOperatorId("91510903906171535D"); stationInfo.setStationId(site.getCode()); stationInfo.setStationName(site.getName()); stationInfo.setStationMode("CD"); stationInfo.setAreaCode(site.getDistrictsCode()); stationInfo.setServiceTel(site.getServicePhone()); switch (site.getSiteType()){ case 0: stationInfo.setStationType(255); break; case 1: stationInfo.setStationType(1); break; case 2: stationInfo.setStationType(50); break; case 3: stationInfo.setStationType(100); break; case 4: stationInfo.setStationType(101); break; case 5: stationInfo.setStationType(102); break; case 6: stationInfo.setStationType(103); break; } switch (site.getStatus()){ case 3: stationInfo.setStationStatus(5); break; case 2: stationInfo.setStationStatus(6); break; case 1: stationInfo.setStationStatus(50); break; } stationInfo.setParkNums(site.getParkingSpace()); stationInfo.setStationLng(Double.parseDouble(site.getLon())); stationInfo.setStationLat(Double.parseDouble(site.getLat())); stationInfo.setSiteGuide(site.getGuide()); switch (site.getConstructionSite()){ case 1: stationInfo.setConstruction(1); break; case 2: stationInfo.setConstruction(2); break; case 3: stationInfo.setConstruction(3); break; case 4: stationInfo.setConstruction(4); break; case 5: stationInfo.setConstruction(5); break; case 6: stationInfo.setConstruction(6); break; case 7: stationInfo.setConstruction(7); break; case 8: stationInfo.setConstruction(8); break; case 9: stationInfo.setConstruction(9); break; case 10: stationInfo.setConstruction(10); break; case 11: stationInfo.setConstruction(11); break; case 0: stationInfo.setConstruction(255); break; } if(StringUtils.isNotEmpty(site.getImgUrl())){ stationInfo.setPictures(Arrays.asList(site.getImgUrl().split(","))); } stationInfo.setMatchCars(site.getVehicleDescription()); stationInfo.setBusinessHours(site.getStartServiceTime() + " - " + site.getEndServiceTime()); stationInfo.setSiteGuide(""); stationInfo.setPictures(new ArrayList<>()); stationInfo.setMatchCars(""); stationInfo.setElectricityFee(BigDecimal.ZERO); stationInfo.setServiceFee(BigDecimal.ZERO); stationInfo.setParkFee(BigDecimal.ZERO); stationInfo.setPayment("2"); stationInfo.setSupportOrder(0); stationInfo.setEquipmentInfos(buildEquipmentInfo(site)); return stationInfo; } private List buildEquipmentInfo(Site site){ List list = chargingPileService.list(new LambdaQueryWrapper() .eq(TChargingPile::getSiteId, site.getId()).eq(TChargingPile::getDelFlag, 0)); return new ArrayList(){{ for (TChargingPile chargingPile : list) { EquipmentInfo equipmentInfo = new EquipmentInfo(); equipmentInfo.setEquipmentId(chargingPile.getCode()); equipmentInfo.setEquipmentName(chargingPile.getName()); equipmentInfo.setManufacturerId(StringUtils.isNotEmpty(chargingPile.getManufacturerCode()) ? chargingPile.getManufacturerCode() : "91510900MACPB4NJ4E"); equipmentInfo.setManufacturerName(StringUtils.isNotEmpty(chargingPile.getManufacturer()) ? chargingPile.getManufacturer() : ""); equipmentInfo.setEquipmentModel(StringUtils.isNotEmpty(chargingPile.getEquipmentType()) ? chargingPile.getEquipmentType() : ""); if(null != chargingPile.getProductionDate()){ equipmentInfo.setProductionDate(chargingPile.getProductionDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))); }else{ equipmentInfo.setProductionDate(""); } equipmentInfo.setEquipmentType(0 == chargingPile.getType() ? 5 : chargingPile.getType()); if(StringUtils.isNotEmpty(chargingPile.getEquipmentLng())){ equipmentInfo.setEquipmentLng(Double.parseDouble(chargingPile.getEquipmentLng())); } if(StringUtils.isNotEmpty(chargingPile.getEquipmentLat())){ equipmentInfo.setEquipmentLat(Double.parseDouble(chargingPile.getEquipmentLat())); } equipmentInfo.setPower(chargingPile.getRatedPower().doubleValue()); equipmentInfo.setConnectorInfos(buildConnectorInfo(chargingPile)); add(equipmentInfo); } }}; } private List buildConnectorInfo(TChargingPile chargingPile){ List list = chargingGunService.list(new LambdaQueryWrapper() .eq(TChargingGun::getChargingPileId, chargingPile.getId()).eq(TChargingGun::getDelFlag, 0)); return new ArrayList(){{ for (TChargingGun chargingGun : list) { ConnectorInfo connectorInfo = new ConnectorInfo(); connectorInfo.setConnectorId(chargingGun.getFullNumber()); connectorInfo.setConnectorName(chargingGun.getName()); connectorInfo.setConnectorType(0 == chargingGun.getType() ? 6 : chargingGun.getType()); connectorInfo.setVoltageUpperLimits(chargingGun.getUpperRatedVoltage().intValue()); connectorInfo.setVoltageLowerLimits(chargingGun.getLowerLimitOfRatedVoltage().intValue()); connectorInfo.setCurrent(chargingGun.getRatedCurrent().intValue()); connectorInfo.setPower(chargingGun.getRatedPower().doubleValue()); connectorInfo.setParkNo(chargingGun.getParkingNumber()); connectorInfo.setNationalStandard(Integer.parseInt(chargingGun.getNationalStandard())); connectorInfo.setParkNo(""); add(connectorInfo); } }}; } /** * 编辑站点 * @param site * @return */ @Override public AjaxResult editSite(Site site) { AjaxResult ajaxResult = addSiteVerify(site); if(ajaxResult.isError()){ return ajaxResult; } Site one = this.getOne(new LambdaQueryWrapper().eq(Site::getCode, site.getCode()).eq(Site::getDelFlag, 0)); if(null != one && !one.getCode().equals(site.getCode())){ return AjaxResult.error("站点编号重复"); } Site site1 = this.getById(site.getId()); if(!site1.getPartnerId().equals(site.getPartnerId())){ List list = partnerSiteService.list(new LambdaQueryWrapper().eq(TPartnerSite::getPartnerId, site1.getPartnerId()).eq(TPartnerSite::getSiteId, site.getId())); for (TPartnerSite partnerSite : list) { partnerSite.setPartnerId(site.getPartnerId()); partnerSiteService.updateById(partnerSite); } } this.updateById(site); tcecClient.superviseNotificationStationInfo(site.getId()); //推送成都监管 chengDuJianGuanClient.notificationStationInfo(site.getId()); if(StringUtils.isNotEmpty(site.getSerAreaCode())){ threadPoolExecutor.execute(()->{ StationInfoReq stationInfoReq = new StationInfoReq(); stationInfoReq.setOperatorId("91510903906171535D"); stationInfoReq.setStationId(site.getCode()); OperatorInfo operatorInfo = new OperatorInfo(); operatorInfo.setOperatorId("91510903906171535D"); operatorInfo.setOperatorName("四川明星新能源科技有限公司"); operatorInfo.setOperatorTel1("18683346252"); operatorInfo.setOperatorTel2("13982508784"); operatorInfo.setOperatorRegAddress("遂宁市船山区渠河南路18号"); operatorInfo.setOperatorNote(""); stationInfoReq.setOperatorInfo(operatorInfo); List stationInfos = new ArrayList<>(); stationInfos.add(buildStationInfo(site)); stationInfoReq.setItemSize(stationInfos.size()); stationInfoReq.setStationInfos(stationInfos); R r = eLuTongClient.pushStationInfo(stationInfoReq); if(200 != r.getCode()){ System.out.println(r.getMsg()); } // TODO 东涪推送 dongFuStationClient.pushChargingStation(); }); } return AjaxResult.success(); } /** * 校验必填项 * @param site * @return */ AjaxResult addSiteVerify(Site site){ if(null == site.getPartnerId()){ return AjaxResult.error("合作商不能为空"); } if(StringUtils.isEmpty(site.getCode())){ return AjaxResult.error("站点编号不能为空"); } if(StringUtils.isEmpty(site.getName())){ return AjaxResult.error("站点名称不能为空"); } if(null == site.getSiteType()){ return AjaxResult.error("站点类型不能为空"); } if(null == site.getBusinessCategory()){ return AjaxResult.error("经营类别不能为空"); } if(null == site.getStatus()){ return AjaxResult.error("站点状态不能为空"); } if(null == site.getConstructionSite()){ return AjaxResult.error("建设场所不能为空"); } if(StringUtils.isEmpty(site.getProvince()) || StringUtils.isEmpty(site.getProvinceCode()) || StringUtils.isEmpty(site.getCity()) || StringUtils.isEmpty(site.getCityCode()) || StringUtils.isEmpty(site.getDistricts()) || StringUtils.isEmpty(site.getDistrictsCode())){ return AjaxResult.error("所在区域不能为空"); } if(StringUtils.isEmpty(site.getAddress())){ return AjaxResult.error("详细地址不能为空"); } // if(StringUtils.isEmpty(site.getLon()) || StringUtils.isEmpty(site.getLat())){ // return AjaxResult.error("地图位置不能为空"); // } // if(StringUtils.isEmpty(site.getPhone())){ // return AjaxResult.error("站点电话不能为空"); // } if(StringUtils.isEmpty(site.getServicePhone())){ return AjaxResult.error("服务电话不能为空"); } if(null == site.getParkingSpace()){ return AjaxResult.error("车位数量不能为空"); } if(null == site.getSort()){ return AjaxResult.error("排序不能为空"); } // if(StringUtils.isEmpty(site.getAreaCodeCountryside())){ // return AjaxResult.error("充换电站所在县以下行政区划代码不能为空"); // } // if(null == site.getStationClassification()){ // return AjaxResult.error("请选择站点分类"); // } // if(null == site.getGeneralApplicationType()){ // return AjaxResult.error("请选择通用类型"); // } // if(null == site.getParkType()){ // return AjaxResult.error("请选择停车费类型"); // } // if(null == site.getRoundTheClock()){ // return AjaxResult.error("请选择是否7*24h营业"); // } // if (site.getStationClassification()!=1&& (!org.springframework.util.StringUtils.hasLength(site.getSwapMatchCars()))){ // return AjaxResult.error("服务车型描述不能为空"); // } // if(null == site.getElectricityType()){ // return AjaxResult.error("请选择电费类型"); // } // if(null == site.getBusinessExpandType()){ // return AjaxResult.error("请选择报装类型"); // } // if(null == site.getCapacity()){ // return AjaxResult.error("报装电源容量不能为空"); // } // if(null == site.getRatedPower()){ // return AjaxResult.error("站点额定总功率不能为空"); // } // if(StringUtils.isEmpty(site.getOfficialRunTime())){ // return AjaxResult.error("请选择正式投运时间"); // } // if(null == site.getPeriodFee()){ // return AjaxResult.error("请选择峰谷时分"); // } // if(null == site.getVideoMonitor()){ // return AjaxResult.error("请选择视频监控配套情况"); // } // if(StringUtils.isEmpty(site.getEquipmentOwnerName())){ // return AjaxResult.error("设备所属方名称不能为空"); // } // if(null == site.getSupplyType()){ // return AjaxResult.error("请选择供电类型"); // } // if(site.getSupplyType()==1){ // if (StringUtils.isEmpty(site.getResidentNo())){ // return AjaxResult.error("供电局用户编号不能为空"); // } // } return AjaxResult.success(); } /** * 删除站点 * @param ids 站点id * @return */ @Override public AjaxResult delSite(Integer[] ids) { //查询是否有关联数据 //充电桩 long count1 = chargingPileService.count(new LambdaQueryWrapper().in(TChargingPile::getSiteId, Arrays.asList(ids)) .eq(TChargingPile::getDelFlag, 0)); if(count1 > 0){ return AjaxResult.error("该站点已添加充电桩,不可删除。"); } for (Integer id : ids) { Site site = this.getById(id); this.removeById(site); } return AjaxResult.success(); } @Override public PageInfo pageList(SiteQuery query,Integer isLogin) { TAppUser appUser = null; // 获取当前登录用户id TAppUserVipDetail data1 = null; if(isLogin == 1){ Long userId = tokenService.getLoginUserApplet().getUserId(); // 根据id查询用户信息 appUser = appUserClient.getUserById(userId).getData(); GetAppUserVipDetail getAppUserVipDetail = new GetAppUserVipDetail(); getAppUserVipDetail.setAppUserId(userId); getAppUserVipDetail.setVipId(appUser.getVipId()); R appUserVipDetail = vipDetailClient.getAppUserVipDetail(getAppUserVipDetail); data1 = appUserVipDetail.getData(); } PageInfo pageInfo = new PageInfo<>(query.getPageCurr(),query.getPageSize()); List list = this.baseMapper.pageList(query,pageInfo); if(Objects.nonNull(appUser) && Objects.nonNull(appUser.getVipId())){ // 查询会员信息 // TVip vip = vipClient.getInfo1(appUser.getVipId()).getData(); if(Objects.nonNull(data1)){ String vipJson = data1.getVipJson(); TVip vip = JSON.parseObject(vipJson, TVip.class); if(Objects.nonNull(vip) && vip.getType() == 2){ list.forEach(item -> { if(Objects.nonNull(vip.getDiscount())){ item.setVipElectrovalence(vip.getDiscount().divide(new BigDecimal(10)).multiply(item.getServiceCharge()).add(item.getElectrovalenceOriginal())); } }); } } } pageInfo.setRecords(list); return pageInfo; } @Override public SiteDetailVO getDetailById(SiteDetailQuery query) { return this.baseMapper.getDetailById(query); } @Override public List getSiteListParkLot() { Set ids = null; //校验合作商权限 SysUser sysUser = sysUserClient.getSysUser(tokenService.getLoginUser().getUserid()).getData(); Integer roleType = sysUser.getRoleType(); Integer objectId = sysUser.getObjectId(); //合作商 if(roleType == 2){ ids = partnerService.authSite(objectId, SiteMenu.SITE_LIST); }else{ //非管理员需要根据角色和用户配置查询允许的站点数据 if(!SecurityUtils.isAdmin(tokenService.getLoginUser().getUserid())){ List data = userSiteClient.getSiteIds(sysUser.getUserId()).getData(); List data2 = sysUserRoleClient.getRoleByUserId(sysUser.getUserId()).getData(); List data1 = roleSiteClient.getSiteIds(data2.get(0).getRoleId()).getData(); data.addAll(data1); ids = new HashSet<>(data); } } // 查询所有的停车场的站点id List list = parkingLotService.list(); List siteIds = list.stream().map(TParkingLot::getSiteId).distinct().collect(Collectors.toList()); if(!CollectionUtils.isEmpty(ids) && !CollectionUtils.isEmpty(siteIds)){ Iterator iterator = ids.iterator(); while (iterator.hasNext()){ Integer next = iterator.next(); if(siteIds.contains(next)){ iterator.remove(); } } } return this.baseMapper.getSiteListParkLot(ids); } @Override public List getSiteListGun() { Set ids = null; //校验合作商权限 SysUser sysUser = sysUserClient.getSysUser(tokenService.getLoginUser().getUserid()).getData(); Integer roleType = sysUser.getRoleType(); Integer objectId = sysUser.getObjectId(); //合作商 if(roleType == 2){ ids = partnerService.authSite(objectId, SiteMenu.SITE_LIST); }else{ //非管理员需要根据角色和用户配置查询允许的站点数据 if(!SecurityUtils.isAdmin(tokenService.getLoginUser().getUserid())){ List data = userSiteClient.getSiteIds(sysUser.getUserId()).getData(); List data2 = sysUserRoleClient.getRoleByUserId(sysUser.getUserId()).getData(); List data1 = roleSiteClient.getSiteIds(data2.get(0).getRoleId()).getData(); data.addAll(data1); ids = new HashSet<>(data); } } return this.baseMapper.getSiteListGun(ids); } @Override public List getMapSiteList(SiteQuery query,Integer isLogin) { if(StringUtils.isEmpty(query.getLon()) || StringUtils.isEmpty(query.getLat())){ return new ArrayList<>(); } TAppUser appUser = null; // 获取当前登录用户id TAppUserVipDetail data1 = null; if(isLogin == 1){ Long userId = tokenService.getLoginUserApplet().getUserId(); // 根据id查询用户信息 appUser = appUserClient.getUserById(userId).getData(); GetAppUserVipDetail getAppUserVipDetail = new GetAppUserVipDetail(); getAppUserVipDetail.setAppUserId(userId); getAppUserVipDetail.setVipId(appUser.getVipId()); R appUserVipDetail = vipDetailClient.getAppUserVipDetail(getAppUserVipDetail); data1 = appUserVipDetail.getData(); } List list = this.baseMapper.getMapSiteList(query); if(Objects.nonNull(appUser) && Objects.nonNull(appUser.getVipId())){ // 查询会员信息 // TVip vip = vipClient.getInfo1(appUser.getVipId()).getData(); if(Objects.nonNull(data1)){ String vipJson = data1.getVipJson(); TVip vip = JSON.parseObject(vipJson, TVip.class); if(Objects.nonNull(vip) && vip.getType() == 2){ list.forEach(item -> { item.setVipElectrovalence(vip.getDiscount().divide(new BigDecimal(10)).multiply(item.getServiceCharge()).add(item.getElectrovalenceOriginal())); }); } } } return list; } /** * 设置站点计费策略 * @param id 站点id * @param accountingStrategyId 计费策略id */ @Override @Transactional(rollbackFor = Exception.class) public void setAccountingStrategy(Integer id, Integer accountingStrategyId) { Site site = this.getById(id); site.setAccountingStrategyId(accountingStrategyId); this.updateById(site); List list = chargingGunService.list(new LambdaQueryWrapper().in(TChargingGun::getSiteId, id).eq(TChargingGun::getDelFlag, 0)); for (TChargingGun tChargingGun : list) { TChargingGun tChargingGun1 = new TChargingGun(); tChargingGun1.setId(tChargingGun.getId()); tChargingGun1.setAccountingStrategyId(accountingStrategyId); chargingGunService.updateById(tChargingGun1); } //下发硬件数据 List accountingStrategyDetails = accountingStrategyDetailService.list(new LambdaQueryWrapper().eq(TAccountingStrategyDetail::getAccountingStrategyId, accountingStrategyId)); List list1 = chargingPileService.lambdaQuery().eq(TChargingPile::getSiteId, id).eq(TChargingPile::getDelFlag, 0).list(); for (TChargingPile tChargingPile : list1) { integrationClient.setupBillingModel1(tChargingPile.getCode(), JSON.toJSONString(accountingStrategyDetails)); chengDuJianGuanClient.notificationStationFee(tChargingPile.getId()); } if(1 == site.getIsOpenSynchronization()){ //推送三方平台 tcecClient.notificationStationChange(Arrays.asList(id)); } } }