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.utils.MapUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.domain.*; import com.ruoyi.mapper.ZfPetMapper; import com.ruoyi.service.*; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; import java.time.LocalDateTime; import java.util.*; import java.util.stream.Collectors; import static com.ruoyi.constant.MenuAuthority.*; /** *

* 魅宠基本信息 服务实现类 *

* * @author ojq * @since 2023-03-12 */ @Service @Slf4j public class ZfPetServiceImpl extends ServiceImpl implements ZfPetService { @Autowired ZInfoUserService zInfoUserService; @Autowired ZfMasterService zfMasterService; @Autowired ZfPetService zfPetService; @Resource ZAuthorityService zAuthorityService; @Resource ZfPetNoteService zfPetNoteService; @Resource ZfPetSharService zfPetSharService; @Resource ZfPetDownlService zfPetDownlService; @Override public AjaxResult selectDataList(ZfPet zfPet, Integer pageNum, Integer pageSize) { // LambdaQueryWrapper lqw = buildCondition(zfPet); // lqw.orderByDesc(ZfPet::getCreateTime); // Page ZfPetPage = new Page<>(pageNum,pageSize); // Page pageResult = page(ZfPetPage, lqw); // HashMap data = MapUtils.getResult(pageResult); // return AjaxResult.success(data); //要查自己家庭的 ZInfoUser myself = zInfoUserService.getMyself(); if(myself==null) { // System.out.println("ssssss"); return AjaxResult.success("您没加入到对应的家庭,请联系管理员"); } Long familyId = myself.getFamilyId(); //查看父母的数据: Long fatherFaId = 0L; if(myself.getFatherId()!=null) fatherFaId = zInfoUserService.getInfoById(myself.getFatherId()).getFamilyId(); Long motherFaId = 0L; if(myself.getMomId()!=null) motherFaId = zInfoUserService.getInfoById(myself.getMomId()).getFamilyId(); //也要查别人授权的 List authority = zAuthorityService.getAuthority(); List idList = authority.stream().filter(auth -> auth.getAuthority().toString().equals(FAMILY_PET_LIST)).map(ZAuthority::getFid).collect(Collectors.toList()); //加上自己家庭的id idList.add(familyId); //加上父母家族id idList.add(fatherFaId); idList.add(motherFaId); List fms = zInfoUserService.findByUaidToFaid(myself.getUaid()).stream().map(ZInfoUser::getFamilyId).collect(Collectors.toList()); if(!fms.isEmpty()) { idList.addAll(fms); } // String familyIds = listFamilyIds(); // String secondFamilyAuthority = listSecondFamilyIds(); LambdaQueryWrapper lqw = buildCondition(zfPet, idList); Page zfPetPage = new Page<>(pageNum, pageSize); Page pageResult = page(zfPetPage, lqw); List beanRecords = pageResult.getRecords();//得到查询出来的数据 List dtoResult = markOwnData(familyId,fatherFaId, motherFaId, beanRecords); HashMap data = MapUtils.getResult(pageResult, dtoResult); return AjaxResult.success(data); } public List markOwnData(Long familyId,Long fatherFamilyId, Long motherFamilyId,List beanRecords){ return beanRecords.stream().peek( bean -> { if (Objects.equals(bean.getFamilyId(), familyId) ||(fatherFamilyId!=0L && fatherFamilyId.equals(familyId))||(motherFamilyId!=0L && motherFamilyId.equals(familyId))) { bean.setOwnData(1); } else { bean.setOwnData(0); } } ).sorted((a,b)-> b.getOwnData()-a.getOwnData()).collect(Collectors.toList()); } @Override public List selectByCondition(ZfPet zfPet) { // LambdaQueryWrapper lambdaQueryWrapper = buildCondition(zfPet); // lambdaQueryWrapper.orderByDesc(ZfPet::getCreateTime); // List list = list(lambdaQueryWrapper); // log.info("返回的数据为:{}",list); // return list; //要查自己家庭的 ZInfoUser myself = zInfoUserService.getMyself(); Long familyId = myself.getFamilyId(); //查看父母的数据: Long fatherFaId = 0L; if(myself.getFatherId()!=null) fatherFaId = zInfoUserService.getInfoById(myself.getFatherId()).getFamilyId(); Long motherFaId = 0L; if(myself.getMomId()!=null) motherFaId = zInfoUserService.getInfoBysysId(myself.getMomId()).getFamilyId(); //也要查别人授权的 List authority = zAuthorityService.getAuthority(); List idList = authority.stream().filter(auth -> auth.getAuthority().toString().equals(FAMILY_PET_LIST)).map(ZAuthority::getFid).collect(Collectors.toList()); //加上自己家庭的id idList.add(familyId); //加上父母家族id idList.add(fatherFaId); idList.add(motherFaId); List fms = zInfoUserService.findByUaidToFaid(myself.getUaid()).stream().map(ZInfoUser::getFamilyId).collect(Collectors.toList()); if(!fms.isEmpty()) { idList.addAll(fms); } LambdaQueryWrapper lambdaQueryWrapper = buildCondition(zfPet, idList); List beanRecords = list(lambdaQueryWrapper); log.info("从数据库中查到的为:{}", beanRecords); return markOwnData(familyId,fatherFaId, motherFaId, beanRecords); } @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 importExcel(MultipartFile file) { ExcelUtil util = new ExcelUtil<>(ZfPet.class); List dataList = null; try { dataList = util.importExcel(file.getInputStream()); } catch (Exception e) { throw new RuntimeException(e); } log.info("数据列表为:{}", dataList); for (ZfPet zfPet : dataList) { zfPetService.addData(zfPet); } return AjaxResult.success("导入数据成功"); } @Override public AjaxResult addData(ZfPet zfPet) { 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(FAMILY_PET_ADD)).map(ZAuthority::getFid).collect(Collectors.toList()); familyIdList.add(familyId); if (zfPet.getFamilyId()!=null && !familyIdList.contains(zfPet.getFamilyId())) { throw new RuntimeException("你没有权限操作此家庭的数据"); } if(zfPet.getFamilyId() == null){ //默认添加自己家庭的数据 zfPet.setFamilyId(familyId); } //判断是否有重复数据 LambdaQueryWrapper lqw = uniqueCondition(zfPet); List list = list(lqw); if(list.size()>0){ throw new RuntimeException("请勿新增重复数据"); } if (save(zfPet)) { return AjaxResult.success(); } else { return AjaxResult.error(); } } @Resource ZfLogService zfLogService; @Override public AjaxResult updateData(ZfPet zfPet) { ZInfoUser myself = zInfoUserService.getMyself(); Long familyId = myself.getFamilyId(); //先根据id查询出数据的familyId,看看有没有权限操作 Long dataFamilyId = getById(zfPet.getId()).getFamilyId(); List authority = zAuthorityService.getAuthority(); List familyIdList = authority.stream().filter(auth -> auth.getAuthority().toString().equals(FAMILY_PET_UPDATE)).map(ZAuthority::getFid).collect(Collectors.toList()); familyIdList.add(familyId); if (dataFamilyId!=null && !familyIdList.contains(dataFamilyId)) { throw new RuntimeException("你没有权限操作此家庭的数据"); } //操作后加入日志 ZfLog zfLog = new ZfLog(); zfLog.setUpdateTime(LocalDateTime.now()); zfLog.setModule("魅宠"); zfLog.setUpdater(zInfoUserService.getMyself().getNickName()); zfLogService.save(zfLog); if(updateById(zfPet)){ return AjaxResult.success(); }else { return AjaxResult.error(); } } @Override public AjaxResult deleteData(Long[] ids) { List dataList = zfPetService.listByIds(Arrays.asList(ids)); ZInfoUser myself = zInfoUserService.getMyself(); Long familyId = myself.getFamilyId(); List authority = zAuthorityService.getAuthority(); List familyIdList = authority.stream().filter(auth -> auth.getAuthority().toString().equals(FAMILY_PET_REMOVE)).map(ZAuthority::getFid).collect(Collectors.toList()); familyIdList.add(familyId); for (ZfPet data : dataList) { if (!familyIdList.contains(data.getFamilyId())){ throw new RuntimeException("你没有权限操作此家庭的数据"); } List petNoteByPetId = zfPetNoteService.getPetNoteByPetId(data.getId()); if(petNoteByPetId.size() != 0) if (!zfPetNoteService.removeBatchByIds(petNoteByPetId)) return AjaxResult.error(); } if (! (zfPetDownlService.deleteData(ids) && zfPetSharService.deleteByContentId(ids) ) ){ return AjaxResult.error(); } if (zfPetService.removeByIds(Arrays.asList(ids))) { return AjaxResult.success(); }else { return AjaxResult.error(); } } // @Override // @Transactional // public AjaxResult mySave(ZfPet zfPet) { // SysUser user = SecurityUtils.getLoginUser().getUser(); // Long userId = user.getUserId(); // // String pid = IdUtils.fastSimpleUUID(); // zfPet.setId(pid); // // //判断是否有重复数据 // LambdaQueryWrapper lqw = uniqueCondition(zfPet); // List list = list(lqw); // if(list.size()>0){ // throw new RuntimeException("请勿新增重复数据"); // } // // //先查找本人的数据 // LambdaQueryWrapper zInfoLqw = new LambdaQueryWrapper<>(); // zInfoLqw.eq(ZInfoUser::getUserId,userId); // ZInfoUser master = zInfoUserService.getOne(zInfoLqw); // // ZfMaster zfMaster = new ZfMaster(); // zfMaster.setPetId(zfPet.getId()); // zfMaster.setName(master.getNickName()); // zfMaster.setCertificateType("身份证"); // zfMaster.setCertificateNo(master.getIdNo()); // zfMaster.setPhoneNo(master.getPhoneNumber()); // zfMaster.setAddress(master.getAlwaysAddress()); // // zfMasterService.save(zfMaster); // // zfPetService.save(zfPet); // // return AjaxResult.success(); // // } private LambdaQueryWrapper uniqueCondition(ZfPet zfPet) { LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); lqw.eq(zfPet.getFamilyId()!=null,ZfPet::getFamilyId,zfPet.getFamilyId()); lqw.eq(StringUtils.isNotEmpty(zfPet.getIdNum()),ZfPet::getIdNum,zfPet.getIdNum()); lqw.eq(StringUtils.isNotEmpty(zfPet.getSecurityCode()),ZfPet::getSecurityCode,zfPet.getSecurityCode()); lqw.eq(StringUtils.isNotEmpty(zfPet.getType()),ZfPet::getType,zfPet.getType()); lqw.eq(StringUtils.isNotEmpty(zfPet.getName()),ZfPet::getName,zfPet.getName()); lqw.eq(zfPet.getBirth()!=null,ZfPet::getBirth,zfPet.getBirth()); lqw.eq(zfPet.getSex()!=null,ZfPet::getSex,zfPet.getSex()); lqw.eq(StringUtils.isNotEmpty(zfPet.getColor()),ZfPet::getColor,zfPet.getColor()); lqw.eq(StringUtils.isNotEmpty(zfPet.getProperties()),ZfPet::getProperties,zfPet.getProperties()); lqw.eq(StringUtils.isNotEmpty(zfPet.getEatHabit()),ZfPet::getEatHabit,zfPet.getEatHabit()); lqw.eq(StringUtils.isNotEmpty(zfPet.getLifeHabit()),ZfPet::getLifeHabit,zfPet.getLifeHabit()); lqw.eq(StringUtils.isNotEmpty(zfPet.getAddress()),ZfPet::getAddress,zfPet.getAddress()); lqw.eq(StringUtils.isNotEmpty(zfPet.getDialect()),ZfPet::getDialect,zfPet.getDialect()); lqw.eq(StringUtils.isNotEmpty(zfPet.getDisEatHabit()),ZfPet::getDisEatHabit,zfPet.getDisEatHabit()); lqw.eq(StringUtils.isNotEmpty(zfPet.getDisLifeHabit()),ZfPet::getDisLifeHabit,zfPet.getDisLifeHabit()); return lqw; } private LambdaQueryWrapper buildCondition(ZfPet zfPet,List familyIdList) { LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); lqw.orderByDesc(ZfPet::getCreateTime); lqw.in(ZfPet::getFamilyId,familyIdList); lqw.eq(zfPet.getId()!=null,ZfPet::getId,zfPet.getId()); lqw.like(StringUtils.isNotEmpty(zfPet.getIdNum()),ZfPet::getIdNum,zfPet.getIdNum()); lqw.like(StringUtils.isNotEmpty(zfPet.getSecurityCode()),ZfPet::getSecurityCode,zfPet.getSecurityCode()); lqw.like(StringUtils.isNotEmpty(zfPet.getType()),ZfPet::getType,zfPet.getType()); lqw.like(StringUtils.isNotEmpty(zfPet.getName()),ZfPet::getName,zfPet.getName()); // lqw.like(zfPet.getBirth()!=null,ZfPet::getBirth,zfPet.getBirth()); lqw.between(zfPet.getBirthStart()!=null && zfPet.getBirthEnd()!=null,ZfPet::getBirth,zfPet.getBirthStart(),zfPet.getBirthEnd()); lqw.like(zfPet.getSex()!=null,ZfPet::getSex,zfPet.getSex()); lqw.like(StringUtils.isNotEmpty(zfPet.getColor()),ZfPet::getColor,zfPet.getColor()); lqw.like(StringUtils.isNotEmpty(zfPet.getProperties()),ZfPet::getProperties,zfPet.getProperties()); lqw.like(StringUtils.isNotEmpty(zfPet.getEatHabit()),ZfPet::getEatHabit,zfPet.getEatHabit()); lqw.like(StringUtils.isNotEmpty(zfPet.getLifeHabit()),ZfPet::getLifeHabit,zfPet.getLifeHabit()); lqw.like(StringUtils.isNotEmpty(zfPet.getAddress()),ZfPet::getAddress,zfPet.getAddress()); lqw.like(StringUtils.isNotEmpty(zfPet.getDialect()),ZfPet::getDialect,zfPet.getDialect()); lqw.like(StringUtils.isNotEmpty(zfPet.getDisEatHabit()),ZfPet::getDisEatHabit,zfPet.getDisEatHabit()); lqw.like(StringUtils.isNotEmpty(zfPet.getDisLifeHabit()),ZfPet::getDisLifeHabit,zfPet.getDisLifeHabit()); return lqw; } }