package com.ruoyi.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.entity.EsModel; import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.utils.MapUtils; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.domain.*; import com.ruoyi.mapper.ZfShareMapper; import com.ruoyi.service.*; import lombok.extern.slf4j.Slf4j; import org.elasticsearch.action.delete.DeleteRequest; import org.elasticsearch.client.RequestOptions; import org.elasticsearch.client.RestHighLevelClient; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.stream.Collectors; @Service @Slf4j public class TravelCountSharServiceImpl extends ServiceImpl implements TravelCountSharService { @Resource TravelCountService travelCountService; @Resource TravelDetailSharService travelDetailSharService; @Resource private ZInfoUserService zInfoUserService; @Resource TravelDetailService travelDetailService; @Resource private RestHighLevelClient restHighLevelClient; @Resource EsService esService; private LambdaQueryWrapper uniqueCondition(ZfShare zfShare) { LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); lqw.eq(StringUtils.isNotEmpty(String.valueOf(zfShare.getShareId())), ZfShare::getShareId, zfShare.getShareId()); lqw.eq(StringUtils.isNotEmpty(String.valueOf(zfShare.getShareContent())), ZfShare::getShareContent, zfShare.getShareContent()); lqw.eq(StringUtils.isNotEmpty(String.valueOf(zfShare.getSysMenuId())), ZfShare::getSysMenuId, zfShare.getSysMenuId()); return lqw; } private LambdaQueryWrapper uniqueCondition2(ZfShare zfShare) { LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); lqw.eq(StringUtils.isNotEmpty(String.valueOf(zfShare.getShareId())), ZfShare::getShareId, zfShare.getShareId()); lqw.eq(StringUtils.isNotEmpty(String.valueOf(getUserId())), ZfShare::getUserId, getUserId()); lqw.eq(StringUtils.isNotEmpty(String.valueOf(zfShare.getSysMenuId())), ZfShare::getSysMenuId, zfShare.getSysMenuId()); return lqw; } @Override public List getAuthority() { SysUser user = SecurityUtils.getLoginUser().getUser(); Long userId = user.getUserId(); LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); lqw.eq(ZfShare::getShareId,userId); return list(lqw); } public Long getUserId(){ ZInfoUser myself = zInfoUserService.getMyself(); return myself.getUserId(); } public void addData(ZfShare za) { LambdaQueryWrapper lqw = uniqueCondition(za); List list = list(lqw); if(list.size()>0){ throw new RuntimeException("请勿分享重复数据"); } else { save(za); } } @Override public AjaxResult saveZa(ShareMore shareMore) { Long [] shareIds = shareMore.getShareIds(); Long [] shareContents = shareMore.getShareContents(); for (Long shareId : shareIds) { for (Long shareContent : shareContents) { ZfShare za = new ZfShare(); za.setUserId(getUserId()); za.setShareContent(shareContent); za.setShareId(shareId); za.setSysMenuId(2056L); addData(za); TravelDetail travelDetail = new TravelDetail(); travelDetail.setCid(za.getShareContent()); List travelDetails = travelDetailService.getDataByCid(za.getShareContent(),travelDetail); if (travelDetails.size() != 0) { for (TravelDetail travelDetail1 : travelDetails) { za.setId(za.getId() + 1); za.setSysMenuId(2055L); za.setShareContent(travelDetail1.getId()); System.out.println(za); save(za); } } } } // Long [] // if(bl) return AjaxResult.success("分享成功!"); } @Override public AjaxResult listByFidAid(ShareMore shareMore, Integer pageNo, Integer pageSize) { Long [] shareIds = shareMore.getShareIds(); List beanRecord3 = new ArrayList<>(); for (Long shareId : shareIds) { { LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); lqw.eq(ZfShare::getShareId,shareId) .eq(ZfShare::getSysMenuId,shareMore.getSysMenuId()) .eq(ZfShare::getUserId, getUserId()); List beanRecords = list(lqw); for (ZfShare beanRecord : beanRecords ) { beanRecord3.add(travelCountService.getById(beanRecord.getShareContent())); } } } List record = beanRecord3.stream().skip((pageNo-1)*pageSize).limit(pageSize).collect(Collectors.toList()); int totalPage = (beanRecord3.size() -1) / pageSize +1; Page travelCountPage = new Page<>(pageNo, pageSize,totalPage); HashMap data = MapUtils.getShareResult(travelCountPage, record,beanRecord3.size()); return AjaxResult.success(data); } @Override public AjaxResult deleteZa(ShareMore shareMore) { Long [] shareIds = shareMore.getShareIds(); Long [] shareContents = shareMore.getShareContents(); for(Long shareId : shareIds) for(Long shareContent: shareContents) { LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); lqw.eq(ZfShare::getShareId,shareId) .eq(ZfShare::getShareContent, shareContent) .eq(ZfShare::getSysMenuId, shareMore.getSysMenuId()) .eq(ZfShare::getUserId, getUserId()); remove(lqw); ZfShare zfShare = new ZfShare(); zfShare.setShareId(shareId); zfShare.setSysMenuId(2055L); zfShare.setUserId(getUserId()); List travelDetails = list(uniqueCondition2(zfShare)); for (ZfShare zfShare1:travelDetails){ TravelDetail travelDetail = travelDetailService.getById(zfShare1.getShareContent()); if (travelDetail != null && travelDetail.getCid().equals(shareContent)){ Long[] deleteDetailId = new Long[1]; ShareMore shareMore1 = new ShareMore(); shareMore1.setShareIds(shareIds); deleteDetailId[0] = travelDetail.getId(); shareMore1.setShareContents(deleteDetailId); shareMore1.setSysMenuId(2055L); travelDetailSharService.deleteZa(shareMore1); } } // addData(za); } return AjaxResult.success("数据收回成功!"); } @Override public AjaxResult listByUserId() { HashMap> bs = new HashMap<>(); LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); lqw.eq(ZfShare::getShareId,getUserId()); lqw.eq(ZfShare::getSysMenuId,2056L); List beanRecords = list(lqw); List b1 = new ArrayList<>(); for (ZfShare beanRecord : beanRecords ) { b1.add(travelCountService.getById(beanRecord.getShareContent())); bs.put(beanRecord.getUserId(),b1); } log.info("从数据库中查到的为:{}", bs); return AjaxResult.success(bs); } @Override public AjaxResult listUserId(Integer pageNo, Integer pageSize) { List bs = new ArrayList<>(); LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); lqw.eq(ZfShare::getShareId,getUserId()); lqw.eq(ZfShare::getSysMenuId,2056L); List beanRecords = list(lqw); for (ZfShare beanRecord : beanRecords ) { TravelCount bs2 = travelCountService.getById(beanRecord.getShareContent()); bs2.setShareId(beanRecord.getUserId().intValue()); bs.add(bs2); } log.info("从数据库中查到的为:{}", bs); List record = bs.stream().skip((pageNo-1)*pageSize).limit(pageSize).collect(Collectors.toList()); int totalPage = (bs.size() -1) / pageSize +1; Page travelCountPage = new Page<>(pageNo, pageSize,totalPage); HashMap data = MapUtils.getShareResult(travelCountPage, record,bs.size()); return AjaxResult.success(data); } @Override public Long getShareId(ZfDownload zfDownload) { LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); lqw.eq(ZfShare::getShareId, zfDownload.getDownloadId()) .eq(ZfShare::getShareContent, zfDownload.getDownloadContent()) .eq(ZfShare::getSysMenuId, zfDownload.getSysMenuId()); List beanRecords = list(lqw); if (beanRecords.size() != 0){ return beanRecords.get(0).getUserId(); } else { return null; } } @Override public Boolean deleteByContentId(Long[] ids) { List id = new ArrayList<>(); LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); lqw.in(ids != null, ZfShare::getShareContent, ids) .eq(ZfShare::getSysMenuId, 2056L); List zfShares = list(lqw); if (zfShares.size() == 0) { return true; } for (ZfShare zfShare : zfShares) { id.add(zfShare.getId()); } System.out.println(id); if (removeByIds(id)) { //删除es中的数据 zfShares.forEach(zfDoctorDownload -> { EsModel esModel = esService.findByCtId(zfDoctorDownload.getId().intValue(), "旅游统计表分享删除"); if (esModel != null) { DeleteRequest deleteRequest = new DeleteRequest("allsearchdata", esModel.getId()); System.out.println(deleteRequest); try { restHighLevelClient.delete(deleteRequest, RequestOptions.DEFAULT); } catch (IOException e) { throw new RuntimeException(e); } } }); return true; } else { return false; } } }