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.*; import com.ruoyi.mapper.ZfClanMapper; import com.ruoyi.service.*; import org.elasticsearch.action.delete.DeleteRequest; import org.elasticsearch.action.update.UpdateRequest; 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.time.LocalDateTime; import java.util.*; @Service public class ZfClanServiceImpl extends ServiceImpl implements ZfClanService { @Resource private EsService esSer; @Resource ZfLogService zfLogService; @Resource ZInfoUserService zInfoUserService; @Resource private RestHighLevelClient restHighLevelClient; @Resource private ZfClanService zfClanService; @Resource private ZfAncestorService zfAncestorService; private LambdaQueryWrapper buildCondition(ZfClan zfClan) { LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); lqw.orderByDesc(ZfClan::getClanId); lqw.like(StringUtils.isNotEmpty(zfClan.getClanName()), ZfClan::getClanName, zfClan.getClanName()); return lqw; } private LambdaQueryWrapper uniqueCondition(ZfClan zfClan){ LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); lqw.eq(!StringUtils.isEmpty(zfClan.getClanName()), ZfClan::getClanName, zfClan.getClanName()); return lqw; } /** * * 获取当前用户的sysUserId * @return */ public Long getUserId(){ ZInfoUser myself = zInfoUserService.getMyself(); return myself.getUserId(); } @Override public AjaxResult selectDataList(ZfClan zfClan, Integer pageNum, Integer pageSize) { LambdaQueryWrapper lqw = buildCondition(zfClan); Page zfClanPage = new Page<>(pageNum, pageSize); Page pageResult = page(zfClanPage, lqw); List beanRecords = pageResult.getRecords();//得到查询出来的数据 HashMap data = MapUtils.getResult(pageResult, beanRecords); return AjaxResult.success(data); } @Override public AjaxResult selectData() { List lis = this.list(); return AjaxResult.success(lis); } @Override public AjaxResult selectDataList(ZfClan zfClan){ LambdaQueryWrapper lqw = buildCondition(zfClan); List zfClans = list(lqw); List satisfyList = new ArrayList<>(); for (ZfClan zfClan1: zfClans) { if (zfAncestorService.count(zfClan1.getClanId())){ satisfyList.add(zfClan1);} } return AjaxResult.success(satisfyList); } @Override public List selectByCondition(ZfClan zfClan) { LambdaQueryWrapper lambdaQueryWrapper = buildCondition(zfClan); List beanRecords = list(lambdaQueryWrapper); return beanRecords; } @Override public AjaxResult addData(ZfClan zfClan) { LambdaQueryWrapper lqw = uniqueCondition(zfClan); List list = list(lqw); if(list.size()>0){ throw new RuntimeException("请勿新增重复家族"); } if (save(zfClan)) { EsModel esModel = new EsModel(); Integer inte =zfClan.getClanId(); String uuid = UUID.randomUUID().toString().replace("-",""); esModel.setId(uuid); esModel.setCtId(Long.valueOf(inte)); esModel.setCtTableName("家族"); esModel.setBy1(zfClan.getClanName()); esModel.setBy5("/zfClan"); // esModel.setFid(familyId); esSer.insertTable(esModel); // System.out.println(esModel); return AjaxResult.success(); } else { return AjaxResult.error(); } } @Override public AjaxResult updateData(ZfClan zfClan) { // if (!Long.valueOf(zfClanService.getById(zfClan.getClanId()).getAdminId()).equals(getUserId())) { // throw new RuntimeException("您不是管理员,没有权力修改该家族信息"); // // } ZfLog zfLog = new ZfLog(); zfLog.setUpdateTime(LocalDateTime.now()); zfLog.setModule("家族"); // zfLog.setUpdater(zInfoUserService.getMyself().getNickName()); zfLogService.save(zfLog); // System.out.println("===================================="+meeting); if(updateById(zfClan)){ //到数据库中查询对应的数据 ZfClan dataById = getById(zfClan.getClanId()); //先到es中查询到对应那条数据在es的id EsModel esResult = esSer.findByCtId(dataById.getClanId(), "家族"); // System.out.println("===================================="+meeting); if (esResult == null){ return AjaxResult.success(); } //操作es修改数据 EsModel newModel = new EsModel(); if(zfClan.getClanName()!=null){ newModel.setBy1(zfClan.getClanName()); }else { newModel.setBy1(dataById.getClanName()); } // UpdateRequest updateRequest = new UpdateRequest("allsearchdata", esResult.getId()); updateRequest.doc( "by1",newModel.getBy1() ); try { restHighLevelClient.update(updateRequest, RequestOptions.DEFAULT); } catch (IOException e) { throw new RuntimeException(e); } return AjaxResult.success(); }else { return AjaxResult.error(); } } @Override public AjaxResult deleteData(Long ids) { List zfClans = listByIds(Arrays.asList(ids)); zfAncestorService.deleteMember(ids); if (zfClanService.removeByIds(Arrays.asList(ids))) { //删除es中的数据 zfClans.stream().forEach(zfClan -> { EsModel esModel = esSer.findByCtId((zfClan.getClanId().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(); } }}