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.MeetingStatisticMapper; import com.ruoyi.service.*; import lombok.extern.slf4j.Slf4j; 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.*; @Slf4j @Service public class MeetingStatisticServiceImpl extends ServiceImpl implements MeetingStatisticService { @Resource ZInfoUserService zInfoUserService; @Resource ZfLogService zfLogService; @Resource private RestHighLevelClient restHighLevelClient; @Resource private EsService esSer; @Resource ZAuthorityService zAuthorityService; @Resource private MeetingStatisticService meetingStatisticService; private LambdaQueryWrapper uniqueCondition(MeetingStatistic meetingStatistic){ LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); lqw.eq(!StringUtils.isEmpty(meetingStatistic.getUseTime()), MeetingStatistic::getUseTime, meetingStatistic.getUseTime()); lqw.eq(!StringUtils.isEmpty(meetingStatistic.getConferenceRoom()), MeetingStatistic::getConferenceRoom, meetingStatistic.getConferenceRoom()); lqw.eq(!StringUtils.isEmpty(meetingStatistic.getTitle()), MeetingStatistic::getTitle, meetingStatistic.getTitle()); // lqw.eq(meetingStatistic.getFamilyId()!=null,MeetingStatistic::getFamilyId,meeting.getFamilyId()); lqw.eq(!StringUtils.isEmpty(meetingStatistic.getApplyPerson()), MeetingStatistic::getApplyPerson, meetingStatistic.getApplyPerson()); lqw.eq(!StringUtils.isEmpty(String.valueOf(meetingStatistic.getRatifyPerson())), MeetingStatistic::getRatifyPerson, meetingStatistic.getRatifyPerson()); lqw.eq(!StringUtils.isEmpty(String.valueOf(meetingStatistic.getStatus())), MeetingStatistic::getStatus, meetingStatistic.getStatus()); lqw.eq(!StringUtils.isEmpty(String.valueOf(meetingStatistic.getFamilyId())), MeetingStatistic::getFamilyId, meetingStatistic.getFamilyId()); return lqw; } public static void getDatePoor(Date endDate, Date nowDate, MeetingStatistic meetingStatistic) { long nd = 1000 * 24 * 60 * 60; long nh = 1000 * 60 * 60; long nm = 1000 * 60; long ns = 1000; // 获得两个时间的毫秒时间差异 long diff = endDate.getTime() - nowDate.getTime(); // 计算差多少天 // long day = diff / nd; // 计算差多少小时 long hour = diff % nd / nh; // 计算差多少分钟 long min = diff % nd % nh / nm; // 计算差多少秒//输出结果 long sec = diff % nd % nh % nm / ns; System.out.println(hour + "小时" + min + "分钟"+ sec + "秒"); meetingStatistic.setUseTime(hour + "小时" + min + "分钟" + sec + "秒"); } private LambdaQueryWrapper buildCondition(MeetingStatistic meetingStatistic) { LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); lqw.select(MeetingStatistic::getFamilyId,MeetingStatistic::getCreateTime); return lqw; } @Override public AjaxResult selectDataList(MeetingStatistic meetingStatistic, Integer pageNum, Integer pageSize) { //要查自己家庭的 ZInfoUser myself = zInfoUserService.getMyself(); if(myself==null) { // System.out.println("ssssss"); return AjaxResult.success("您没加入到对应的家庭,请联系管理员"); } Long familyId = myself.getFamilyId(); // //也要查别人授权的 // List authority = zAuthorityService.getAuthority(); // List idList = authority.stream().filter(auth -> auth.getAuthority().toString().equals(DOCTOR_LIST)).map(ZAuthority::getFid).collect(Collectors.toList()); // //加上自己家庭的id // idList.add(familyId); // String familyIds = listFamilyIds(); // String secondFamilyAuthority = listSecondFamilyIds(); LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); // LambdaQueryWrapper lqw = buildCondition(meetingStatistic); Page meetingStatisticPage = new Page<>(pageNum, pageSize); Page pageResult = page(meetingStatisticPage, lqw); List beanRecords = pageResult.getRecords();//得到查询出来的数据 System.out.println("-----------数据库-----------"+beanRecords); HashMap data = MapUtils.getResult(pageResult, beanRecords); return AjaxResult.success(data); } @Override public AjaxResult DataList(MeetingStatistic meetingStatistic) { LambdaQueryWrapper lambdaQueryWrapper = buildCondition(meetingStatistic); List beanRecords = list(lambdaQueryWrapper); log.info("从数据库中查到的为:{}", beanRecords); return AjaxResult.success(beanRecords); } @Override public AjaxResult updateData(MeetingStatistic meetingStatistic) { ZfLog zfLog = new ZfLog(); zfLog.setUpdateTime(LocalDateTime.now()); zfLog.setModule("会议统计"); zfLog.setUpdater(zInfoUserService.getMyself().getNickName()); zfLogService.save(zfLog); System.out.println("===================================="+meetingStatistic); if(updateById(meetingStatistic)){ //到数据库中查询对应的数据 MeetingStatistic dataById = getById(meetingStatistic.getId()); //先到es中查询到对应那条数据在es的id EsModel esResult = esSer.findByCtId(dataById.getId().intValue(), "会议统计"); System.out.println("===================================="+meetingStatistic); if (esResult == null){ return AjaxResult.success(); } //操作es修改数据 EsModel newModel = new EsModel(); // System.out.println(meeting); // System.out.println("=============="+meetingStatistic.getConnPhone()); // if (meetingStatistic.getUseTime()==null){ // if(meetingStatistic.getHappenEndTime()!=null && meetingStatistic.getHappenStartTime() !=null){ // getDatePoor(meetingStatistic.getHappenEndTime(),meetingStatistic.getHappenStartTime(),meetingStatistic); // System.out.println("===============使用时间====================="+meetingStatistic.getUseTime()); // newModel.setBy2(meetingStatistic.getUseTime()); // }else { // newModel.setBy2(dataById.getUseTime()); // } // } if (meetingStatistic.getUseTime()==null){ if(meetingStatistic.getHappenEndTime()!=null && meetingStatistic.getHappenStartTime() !=null){ getDatePoor(meetingStatistic.getHappenEndTime(),meetingStatistic.getHappenStartTime(),meetingStatistic); newModel.setBy1(meetingStatistic.getUseTime()); } else { newModel.setBy1(dataById.getUseTime()); } }else { newModel.setBy1(dataById.getUseTime()); } // if(meetingStatistic.getConferenceRoom()!=null){ // newModel.setBy3(meetingStatistic.getConferenceRoom()); // }else { // newModel.setBy3(dataById.getConferenceRoom()); // } if(meetingStatistic.getTitle()!=null){ newModel.setBy2(meetingStatistic.getTitle()); }else { newModel.setBy2(dataById.getTitle()); } // if(meetingStatistic.getApplyPerson()!=null){ // newModel.setBy5(meetingStatistic.getApplyPerson()); // }else { // newModel.setBy5(dataById.getApplyPerson()); // } // if(meetingStatistic.getRatifyPerson() == 0){ // newModel.setBy10(meetingStatistic.getRatifyPerson()); // }else { // newModel.setBy10(dataById.getRatifyPerson()); // } // if(meetingStatistic.getStatus() == 0){ // newModel.setBy11(meetingStatistic.getStatus()); // }else { // newModel.setBy11(dataById.getStatus()); // } UpdateRequest updateRequest = new UpdateRequest("allsearchdata", esResult.getId()); updateRequest.doc( "by1",newModel.getBy1(), "by2",newModel.getBy2() ); LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); List beanRecords = list(lqw); log.info("sss从数据库中查到的为:{}", beanRecords); 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 meetings = listByIds(Arrays.asList(ids)); if (meetingStatisticService.removeByIds(Arrays.asList(ids))) { //删除es中的数据 meetings.stream().forEach(meeting -> { EsModel esModel = esSer.findByCtId((meeting.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 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(MeetingStatistic meetingStatistic) { ZInfoUser myself = zInfoUserService.getMyself(); Long familyId = myself.getFamilyId(); // if(familyId == null){ // throw new RuntimeException("您还未加入任何家庭"); // } // // List authority = zAuthorityService.getAuthority(); // List familyIdList = authority.stream().filter(auth -> auth.getAuthority().toString().equals(EVENT_LIST_ADD)).map(ZAuthority::getFid).collect(Collectors.toList()); // familyIdList.add(familyId); // // if (meetingStatistic.getFamilyId()!=null && !familyIdList.contains(meetingStatistic.getFamilyId())) { // throw new RuntimeException("你没有权限操作此家庭的数据"); // } // // // if(meetingStatistic.getFamilyId() == null){ // //默认添加自己家庭的数据 // meetingStatistic.setFamilyId(familyId); // } //判断是否有重复数据 LambdaQueryWrapper lqw = uniqueCondition(meetingStatistic); List list = list(lqw); if(list.size()>0){ throw new RuntimeException("请勿新增重复数据"); } if (save(meetingStatistic)) { EsModel esModel = new EsModel(); Long inte = meetingStatistic.getId(); String uuid = UUID.randomUUID().toString().replace("-",""); esModel.setId(uuid); esModel.setCtId(inte); esModel.setCtTableName("会议统计"); getDatePoor(meetingStatistic.getHappenEndTime(),meetingStatistic.getHappenStartTime(),meetingStatistic); System.out.println("===============使用时间2====================="+meetingStatistic.getUseTime()); esModel.setBy1(meetingStatistic.getUseTime()); esModel.setBy2(meetingStatistic.getTitle()); // esModel.setBy5(meetingStatistic.getApplyPerson()); //这里存储查询详情的路径 esModel.setBy5("/zMeetingStatistic"); esModel.setFid(familyId); esSer.insertTable(esModel); return AjaxResult.success(); } else { return AjaxResult.error(); } } }