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.ZfDoctor; import com.ruoyi.domain.ZfDoctorDownload; import com.ruoyi.mapper.ZfDoctorDownloadMapper; import com.ruoyi.service.*; 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 public class ZfDoctorDownloadServiceImpl extends ServiceImpl implements ZfDoctorDownloadService { @Resource EsService esService; @Resource ZfDoctorShareService zfDoctorShareService; @Resource ZfDoctorService zfDoctorService; @Resource ZInfoUserService zInfoUserService; @Resource private RestHighLevelClient restHighLevelClient; private LambdaQueryWrapper buildCondition(ZfDoctorDownload zfDoctorDownload,Long userId) { LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); lqw.in(ZfDoctorDownload::getDownloadId,userId); lqw.orderByDesc(ZfDoctorDownload::getDownloadId); lqw.like(zfDoctorDownload.getDownloadId() != null, ZfDoctorDownload::getDownloadId, zfDoctorDownload.getDownloadId()) .like(zfDoctorDownload.getDownloadContent() != null, ZfDoctorDownload::getDownloadContent, zfDoctorDownload.getDownloadContent()); return lqw; } private LambdaQueryWrapper uniqueCondition(ZfDoctorDownload zfDoctorDownload) { LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); lqw.eq(StringUtils.isNotEmpty(String.valueOf(zfDoctorDownload.getDownloadId())), ZfDoctorDownload::getDownloadId, zfDoctorDownload.getDownloadId()) .eq(StringUtils.isNotEmpty(String.valueOf(zfDoctorDownload.getDownloadContent())), ZfDoctorDownload::getDownloadContent, zfDoctorDownload.getDownloadContent()); return lqw; } @Override public AjaxResult selectDoctorList(ZfDoctorDownload zfDoctorDownload,Integer pageNo ,Integer pageSize ) { ZInfoUser myself = zInfoUserService.getMyself(); LambdaQueryWrapper lqw = buildCondition(zfDoctorDownload,myself.getUserId()); List beanRecords = list(lqw); List bs = new ArrayList<>(); for (ZfDoctorDownload a: beanRecords) { if (zfDoctorService.getById(a.getDownloadContent()) != null) { ZfDoctor ds = zfDoctorService.getById(a.getDownloadContent()); ds.setShareId(a.getShareId()); bs.add(ds); } } List record = bs.stream().skip((pageNo-1)*pageSize).limit(pageSize).collect(Collectors.toList()); int totalPage = (bs.size() -1) / pageSize +1; Page zfDoctorPage = new Page<>(pageNo, pageSize,totalPage); HashMap data = MapUtils.getResult(zfDoctorPage, record); return AjaxResult.success(data); } @Override public AjaxResult addData(ZfDoctorDownload zfDoctorDownload) { zfDoctorDownload.setDownloadId(getUserId()); LambdaQueryWrapper lqw = uniqueCondition(zfDoctorDownload); List list = list(lqw); if (list.size() > 0) { throw new RuntimeException("请勿新增重复数据"); } zfDoctorDownload.setDownloadId(getUserId()); zfDoctorDownload.setShareId(zfDoctorShareService.getShareId(zfDoctorDownload)); if (save(zfDoctorDownload)) { EsModel esModel = new EsModel(); Integer inte = zfDoctorDownload.getId().intValue(); String uuid = UUID.randomUUID().toString().replace("-", ""); esModel.setId(uuid); esModel.setCtId(Long.valueOf(inte)); esModel.setCtTableName("家庭小医生"); esModel.setBy1(String.valueOf(zfDoctorDownload.getDownloadId())); esModel.setBy2(String.valueOf(zfDoctorDownload.getDownloadContent())); esModel.setBy3(String.valueOf(zfDoctorDownload.getShareId())); //这里存储查询详情的路径 esService.insertTable(esModel); return AjaxResult.success(); } else { return AjaxResult.error(); } } @Override public AjaxResult deleteData(Long[] ids) { List zfDoctorDownloads = listByIds(Arrays.asList(ids)); if (zfDoctorShareService.removeByIds(Arrays.asList(ids))) { //删除es中的数据 zfDoctorDownloads.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(); } } public Long getUserId() { ZInfoUser myself = zInfoUserService.getMyself(); return myself.getUserId(); } }