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.utils.MapUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.domain.TravelCount; import com.ruoyi.domain.TravelDetail; import com.ruoyi.domain.ZInfoUser; import com.ruoyi.domain.ZfDownload; import com.ruoyi.mapper.ZfDownloadMapper; 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.*; import java.util.stream.Collectors; @Service @Slf4j public class TravelCountDownServiceImpl extends ServiceImpl implements TravelCountDownlService { @Resource EsService esService; @Resource TravelCountSharService travelCountSharService; @Resource TravelCountService travelCountService; @Resource TravelDetailService travelDetailService; @Resource ZInfoUserService zInfoUserService; @Resource private RestHighLevelClient restHighLevelClient; private LambdaQueryWrapper buildCondition(ZfDownload zfDownload, Long userId) { LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); lqw.in(ZfDownload::getDownloadId,userId); lqw.orderByDesc(ZfDownload::getDownloadId); lqw.like(zfDownload.getDownloadId() != null, ZfDownload::getDownloadId, zfDownload.getDownloadId()) .like(zfDownload.getDownloadContent() != null, ZfDownload::getDownloadContent, zfDownload.getDownloadContent()) .eq( ZfDownload::getSysMenuId, zfDownload.getSysMenuId()); return lqw; } private LambdaQueryWrapper uniqueCondition(ZfDownload zfDownload) { LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); lqw.eq(StringUtils.isNotEmpty(String.valueOf(zfDownload.getDownloadId())), ZfDownload::getDownloadId, zfDownload.getDownloadId()) .eq(StringUtils.isNotEmpty(String.valueOf(zfDownload.getDownloadContent())), ZfDownload::getDownloadContent, zfDownload.getDownloadContent()) .eq(ZfDownload::getSysMenuId, zfDownload.getSysMenuId()); return lqw; } public Long getUserId() { ZInfoUser myself = zInfoUserService.getMyself(); return myself.getUserId(); } @Override public AjaxResult addData(ZfDownload zfDownload) { zfDownload.setDownloadId(getUserId()); LambdaQueryWrapper lqw = uniqueCondition(zfDownload); List list = list(lqw); if (list.size() > 0) { throw new RuntimeException("请勿重复下载数据"); } zfDownload.setDownloadId(getUserId()); zfDownload.setShareId(travelCountSharService.getShareId(zfDownload)); if (save(zfDownload)) { EsModel esModel = new EsModel(); Integer inte = zfDownload.getId().intValue(); String uuid = UUID.randomUUID().toString().replace("-", ""); esModel.setId(uuid); esModel.setCtId(Long.valueOf(inte)); esModel.setCtTableName("旅游"); esModel.setBy1(String.valueOf(zfDownload.getDownloadId())); esModel.setBy2(String.valueOf(zfDownload.getDownloadContent())); esModel.setBy3(String.valueOf(zfDownload.getShareId())); //这里存储查询详情的路径 esService.insertTable(esModel); TravelDetail travelDetail = new TravelDetail(); travelDetail.setCid(zfDownload.getDownloadContent()); List travelDetails = travelDetailService.getDataByCid(zfDownload.getDownloadContent(),travelDetail); System.out.println("cgftfygmjh267/"+travelDetails.size()); if (travelDetails.size() != 0){ for (TravelDetail travelDetail1:travelDetails) { zfDownload.setId(zfDownload.getId()+1); zfDownload.setSysMenuId(2055L); zfDownload.setDownloadContent(travelDetail1.getId()); System.out.println(zfDownload); save(zfDownload); }} return AjaxResult.success(); } else { return AjaxResult.error(); } } @Override public Boolean deleteData(Long[] ids) { List id = new ArrayList<>(); LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); lqw.in(ids != null, ZfDownload::getDownloadContent, ids) .eq(ZfDownload::getSysMenuId, 2056L); List zfDownloads = list(lqw); System.out.println(zfDownloads); if (zfDownloads.size() == 0){ return true; } for (ZfDownload zfDownload: zfDownloads) { id.add(zfDownload.getId()); } System.out.println(id); if (removeByIds(id)) { //删除es中的数据 zfDownloads.stream().forEach(zfDoctorDownload -> { EsModel esModel = esService.findByCtId(zfDoctorDownload.getId().intValue(), "旅游统计表下载删除"); if (esModel != null) { DeleteRequest deleteRequest = new DeleteRequest("allsearchdata", esModel.getId()); try { restHighLevelClient.delete(deleteRequest, RequestOptions.DEFAULT); } catch (IOException e) { throw new RuntimeException(e); } } }); return true; } else { return false; } } @Override public AjaxResult selectDoctorList(ZfDownload zfDownload, Integer pageNo, Integer pageSize) { ZInfoUser myself = zInfoUserService.getMyself(); LambdaQueryWrapper lqw = buildCondition(zfDownload,myself.getUserId()); List beanRecords = list(lqw); List bs = new ArrayList<>(); for (ZfDownload a: beanRecords) { if (travelCountService.getById(a.getDownloadContent()) != null) { TravelCount ds = travelCountService.getById(a.getDownloadContent()); ds.setShareId(a.getShareId().intValue()); bs.add(ds); } } 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); } }