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.sql.SQLIntegrityConstraintViolationException; 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) { System.out.println("8008888//"+zfClan.getClanId()); LambdaQueryWrapper lambdaQueryWrapper = buildCondition(zfClan); lambdaQueryWrapper.eq(zfClan.getClanId()!=null,ZfClan::getClanId,zfClan.getClanId()); return list(lambdaQueryWrapper); } @Override public List selectByIds(Long[] ids) { List list = new ArrayList<>(); if(ids.length!=0) list = listByIds(Arrays.asList(ids)); else list = list(); return list; } @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); LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); lqw.orderByDesc(ZfClan::getClanId); lqw.eq(StringUtils.isNotEmpty(zfClan.getClanName()), ZfClan::getClanName, zfClan.getClanName()); List lis = this.list(lqw); // System.out.println("===================================="+meeting); if(lis.size()>0) { return AjaxResult.success("家族名称不能重复!"); } else { boolean res = updateById(zfClan); return AjaxResult.success(); } // if(res){ // }else { // return AjaxResult.success("家族名称不能重复!"); // } // return AjaxResult.success("家族名称不能重复!"); // //到数据库中查询对应的数据 // 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); // } } @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(); } }}