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<ZfDoctorDownloadMapper, ZfDoctorDownload> implements ZfDoctorDownloadService {
|
|
@Resource
|
EsService esService;
|
|
@Resource
|
ZfDoctorShareService zfDoctorShareService;
|
|
@Resource
|
ZfDoctorService zfDoctorService;
|
|
|
@Resource
|
ZInfoUserService zInfoUserService;
|
|
@Resource
|
private RestHighLevelClient restHighLevelClient;
|
|
private LambdaQueryWrapper<ZfDoctorDownload> buildCondition(ZfDoctorDownload zfDoctorDownload,Long userId) {
|
LambdaQueryWrapper<ZfDoctorDownload> 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<ZfDoctorDownload> uniqueCondition(ZfDoctorDownload zfDoctorDownload) {
|
LambdaQueryWrapper<ZfDoctorDownload> 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<ZfDoctorDownload> lqw = buildCondition(zfDoctorDownload,myself.getUserId());
|
List<ZfDoctorDownload> beanRecords = list(lqw);
|
List<ZfDoctor> 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<ZfDoctor> record = bs.stream().skip((pageNo-1)*pageSize).limit(pageSize).collect(Collectors.toList());
|
|
int totalPage = (bs.size() -1) / pageSize +1;
|
|
Page<ZfDoctor> zfDoctorPage = new Page<>(pageNo, pageSize,totalPage);
|
HashMap<String, Object> data = MapUtils.getShareResult(zfDoctorPage, record);
|
return AjaxResult.success(data);
|
}
|
|
|
@Override
|
public AjaxResult addData(ZfDoctorDownload zfDoctorDownload) {
|
zfDoctorDownload.setDownloadId(getUserId());
|
LambdaQueryWrapper<ZfDoctorDownload> lqw = uniqueCondition(zfDoctorDownload);
|
List<ZfDoctorDownload> 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<ZfDoctorDownload> 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();
|
}
|
}
|