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.ZInfoUser; import com.ruoyi.domain.ZfContact; import com.ruoyi.domain.ZfDownload; import com.ruoyi.domain.ZfPetNote; 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 ZfPetNoteDownServiceImpl extends ServiceImpl implements ZfPetNoteDownlService { @Resource EsService esService; @Resource ZfPetNoteSharService zfPetNoteSharService; @Resource ZfPetNoteService zfPetNoteService; @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(zfPetNoteSharService.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); return AjaxResult.success(); } else { return AjaxResult.error(); } } @Override public AjaxResult deleteData(Long[] ids) { List zfDownloads = listByIds(Arrays.asList(ids)); if (zfPetNoteService.removeByIds(Arrays.asList(ids))) { //删除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 AjaxResult.success(); } else { return AjaxResult.error(); } } @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 (zfPetNoteService.getById(a.getDownloadContent()) != null) { ZfPetNote ds = zfPetNoteService.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 zfPetNotePage = new Page<>(pageNo, pageSize,totalPage); HashMap data = MapUtils.getShareResult(zfPetNotePage, record,bs.size()); return AjaxResult.success(data); } }