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.SecurityUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.bean.BeanUtils; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.domain.ArchiveCategory; import com.ruoyi.domain.ArchiveRecords; import com.ruoyi.domain.DocumentMaterials; import com.ruoyi.domain.vo.*; import com.ruoyi.mapper.DocumentMaterialsMapper; import com.ruoyi.service.IDocumentMaterialsService; import com.ruoyi.util.ErrorcodeExceptionextends; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; import java.time.LocalDateTime; import java.time.ZoneId; import java.util.*; /** * 【文件材料综合信息】Service业务层处理 * * @author ruoyi * @date 2025-07-26 */ @Service public class DocumentMaterialsServiceImpl extends ServiceImpl implements IDocumentMaterialsService { private LambdaQueryWrapper buildCondition(DocumentMaterials documentMaterials){ LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); lqw.like(!StringUtils.isEmpty(documentMaterials.getCreator()), DocumentMaterials::getCreator, documentMaterials.getCreator()) .like(!StringUtils.isEmpty(documentMaterials.getStage()), DocumentMaterials::getStage, documentMaterials.getStage()) .like(!StringUtils.isEmpty(documentMaterials.getIsCanceled()), DocumentMaterials::getIsCanceled, documentMaterials.getIsCanceled()) .like(!StringUtils.isEmpty(documentMaterials.getIsAttachment()), DocumentMaterials::getIsAttachment, documentMaterials.getIsAttachment()) .like(!StringUtils.isEmpty(documentMaterials.getIsSensitive()), DocumentMaterials::getIsSensitive, documentMaterials.getIsSensitive()) .like(!StringUtils.isEmpty(documentMaterials.getPublicity()), DocumentMaterials::getPublicity, documentMaterials.getPublicity()) .like(!StringUtils.isEmpty(documentMaterials.getRetentionPeriod()), DocumentMaterials::getRetentionPeriod, documentMaterials.getRetentionPeriod()) .like(!StringUtils.isEmpty(documentMaterials.getSecurityLevel()), DocumentMaterials::getSecurityLevel, documentMaterials.getSecurityLevel()) .like(!StringUtils.isEmpty(documentMaterials.getTitle()), DocumentMaterials::getTitle, documentMaterials.getTitle()) .eq(documentMaterials.getDate()!=null, DocumentMaterials::getDate, documentMaterials.getDate()) .eq(documentMaterials.getRecordId()!=null, DocumentMaterials::getRecordId, documentMaterials.getRecordId()) .eq(documentMaterials.getPageNumber()!=null, DocumentMaterials::getPageNumber, documentMaterials.getPageNumber()); // .like(!StringUtils.isEmpty(archiveRecords.getFilingNumber()), ArchiveRecords::getFilingNumber, archiveRecords.getFilingNumber()) // .like(!StringUtils.isEmpty(archiveRecords.getArchiveRoomNumber()), ArchiveRecords::getArchiveRoomNumber, archiveRecords.getArchiveRoomNumber()) // .like(!StringUtils.isEmpty(archiveRecords.getRecordId()), ArchiveRecords::getRecordId, archiveRecords.getRecordId()); // // .like(!StringUtils.isEmpty(zfProperty.getLocation()), ZfProperty::getLocation, zfProperty.getLocation()) // .like(!StringUtils.isEmpty(zfProperty.getHolder()), ZfProperty::getHolder, zfProperty.getHolder()) // .like(!StringUtils.isEmpty(zfProperty.getAddress()), ZfProperty::getAddress, zfProperty.getAddress()) // .like(!StringUtils.isEmpty(zfProperty.getRemark()), ZfProperty::getRemark, zfProperty.getRemark()) // .eq(zfProperty.getFamilyId()!=null,ZfProperty::getFamilyId,zfProperty.getFamilyId()) // .in(ZfProperty::getFamilyId,familyIdList) // .eq(zfProperty.getHappenTime()!=null,ZfProperty::getHappenTime,zfProperty.getHappenTime()) // .between(zfProperty.getHappenStartTime() != null && zfProperty.getHappenEndTime() != null, ZfProperty::getHappenTime, zfProperty.getHappenStartTime(), zfProperty.getHappenEndTime()); // lqw.orderByDesc(ZfProperty::getCreateTime); // lqw.orderByDesc(ArchiveRecords::isOwnData) lqw.orderByAsc(DocumentMaterials::getPageNumber); System.out.println("ssssssssssssddd0000000000000000"); return lqw; } @Override public AjaxResult selectDataList(DocumentMaterials documentMaterials, Integer pageNum, Integer pageSize) { LambdaQueryWrapper lqw = buildCondition(documentMaterials); Page zfClanPage = new Page<>(pageNum, pageSize); Page pageResult = page(zfClanPage, lqw); List beanRecords = pageResult.getRecords();//得到查询出来的数据 System.out.println(beanRecords); // beanRecords.forEach(record -> { // if (record.getUserId() != null) { // SysUser user = userMapper.selectUserById(record.getUserId()); // record.setSysUser(user); // 假设Archiverecordstouser中有setUser方法 // } // }); // List beanRecords = list(lqw); // log.info("从数据库中查到的为:{}", beanRecords); // return markOwnData(familyId, fatherFaId, motherFaId, beanRecords); HashMap data = MapUtils.getResult(pageResult, beanRecords); return AjaxResult.success(data); } @Override public DocumentMaterials selectDocumentMaterialsByMaterialId(String materialId) { LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); lqw.eq(materialId!=null, DocumentMaterials::getMaterialId, materialId); List records = list(lqw); if(!records.isEmpty()) return records.get(0); else return null; } @Override public List selectDocumentMaterialsList(DocumentMaterials documentMaterials) { LambdaQueryWrapper lambdaQueryWrapper = buildCondition(documentMaterials); List beanRecords = list(lambdaQueryWrapper); return beanRecords; } @Override public List selectDocumentMaterialsAllByRecordId(Long id) { return this.baseMapper.getDocumentMaterialsvoLarge(Math.toIntExact(id)); } @Override public List selectDocumentMaterialsFileList(Long id) { return this.baseMapper.getDocumentMaterialsFileList(Math.toIntExact(id)); } @Override public int insertDocumentMaterials(DocumentMaterials documentMaterials) { LocalDateTime time = LocalDateTime.now(); Date date = Date.from(time.atZone(ZoneId.systemDefault()).toInstant()); documentMaterials.setCreatedAt(date); System.out.println(documentMaterials.getFileStyle()); System.out.println(documentMaterials.getPageNumber()); // if(documentMaterials.getPageNumber()==null) // { // documentMaterials.setPageNumber(-1L); // } boolean res = false; try { res = this.save(documentMaterials); } catch (Exception e) { System.out.println(e); throw new ErrorcodeExceptionextends(500, "同一个案卷内,不允许页码重复!"); } if(res) return 1; else return 0; } @Override public List selectDocumentMaterialsByIds(Long[] ids) { // 获取当前用户ID Long userid = SecurityUtils.getUserId(); // 创建查询条件 LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); // 根据ids查询 lambdaQueryWrapper.in(DocumentMaterials::getMaterialId, Arrays.asList(ids)); lambdaQueryWrapper.orderByAsc(DocumentMaterials::getPageNumber); // 如果不是管理员,需要考虑权限过滤(可根据实际权限需求调整) if (userid != 1) { // 这里可以添加权限相关的过滤条件 } List beanRecords = list(lambdaQueryWrapper); return beanRecords; } @Override public int updateDocumentMaterials(DocumentMaterials documentMaterials) { boolean result = false; try { // //修改页号成功之后,要重新生成文件材料序号,页次 // //根据pageNumber拿到title,然后计算pageOrder // LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); // lqw.eq(documentMaterials.getRecordId()!=null, DocumentMaterials::getRecordId, documentMaterials.getRecordId()); // lqw.eq(documentMaterials.getPageNumber()!=null, DocumentMaterials::getPageNumber, documentMaterials.getPageNumber()); // List records = list(lqw); // // //计算pageOrder // Long pageOrder = 1L; // if(documentMaterials.getPageNumber().equals(1)) // pageOrder = 1L; // else { // Long maxPOrder = this.baseMapper.getMaxPageOrder(records.get(0).getTitle(), documentMaterials.getPageNumber(), records.get(0).getStage(), documentMaterials.getRecordId()); // if (maxPOrder != null) // pageOrder = maxPOrder + 1; // } // //设置pageOrder // documentMaterials.setPageOrder(pageOrder); // //计算fileNumber // Long fileNumber = this.getFiNum(documentMaterials.getPageNumber(), documentMaterials.getRecordId()); // documentMaterials.setFileNumber(fileNumber); //修改页号 result = updateById(documentMaterials); // //把剩下所有的的fileNumber和pageOrder都更新一遍 // LambdaQueryWrapper lqw1 = new LambdaQueryWrapper<>(); // lqw.eq(documentMaterials.getRecordId()!=null, DocumentMaterials::getRecordId, documentMaterials.getRecordId()); // // lqw.eq(documentMaterials.getPageNumber()!=null, DocumentMaterials::getPageNumber, documentMaterials.getPageNumber()); // List recordss = list(lqw1); // for(DocumentMaterials dt: recordss) // { // //计算pageOrder // Long pageOrder1 = 1L; // if(dt.getPageNumber().equals(1)) // pageOrder1 = 1L; // else { // Long maxPOrder1 = this.baseMapper.getMaxPageOrder(dt.getTitle(), dt.getPageNumber(), dt.getStage(), dt.getRecordId()); // if (maxPOrder1 != null) // pageOrder1 = maxPOrder1 + 1; // } // //设置pageOrder // dt.setPageOrder(pageOrder1); // //计算fileNumber // Long fileNumber1 = this.getFiNum(dt.getPageNumber(), dt.getRecordId()); // dt.setFileNumber(fileNumber1); // //修改页号 // updateById(dt); // } } catch (Exception e) { System.out.println(e); throw new ErrorcodeExceptionextends(500, "同一个案卷内,不允许页码重复!"); } if(result) return 1; else return 0; } @Override public int deleteDocumentMaterialsByMaterialIds(String[] materialIds) { if (this.removeByIds(Arrays.asList(materialIds))) { return 1; } else return 0; } @Override public int deleteDocumentMaterialsByMaterialId(String materialId) { return 0; } @Override public Long getFiNum(Long pageNumber, Long recordId) { return this.baseMapper.getFileNumber(pageNumber, recordId); } @Override public int updateByPageNumber(Long pageNumber, String sizeType, Long fileNumber, int width, int height, int horizontalResolution, int verticalResolution, double fileSize, String url, String format, Long recordId) { //根据pageNumber拿到title,然后计算pageOrder LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); lqw.eq(recordId!=null, DocumentMaterials::getRecordId, recordId); lqw.eq(pageNumber!=null, DocumentMaterials::getPageNumber, pageNumber); List records = list(lqw); //计算pageOrder Long pageOrder = 1L; if(pageNumber.equals(1)) pageOrder = 1L; else { Long maxPOrder = this.baseMapper.getMaxPageOrder(records.get(0).getTitle(), pageNumber, records.get(0).getStage(), recordId); if (maxPOrder != null) pageOrder = maxPOrder + 1; } this.baseMapper.updateInfoByPageNumber(pageNumber, sizeType,fileNumber,pageOrder, width, height, horizontalResolution, verticalResolution, fileSize, url,format, recordId); return 0; } @Override public List findArchMInfo(String recordId) { return this.baseMapper.getArchiveMatInfo(Integer.parseInt(recordId)); } @Override public List findFileStyleInfo(int recordId) { return this.baseMapper.getFileStyleInfo(recordId); } @Override public AjaxResult importExcel(MultipartFile file, String recordId) { ExcelUtil util = new ExcelUtil<>(DocumentMaterialFileSmallVo.class); List dataList = null; try { dataList = util.importExcel(file.getInputStream()); } catch (Exception e) { throw new RuntimeException("没有按照规则导入数据"); } assert dataList != null; for (DocumentMaterialFileSmallVo archiveCategory : dataList) { // physcialService.mySave(physcial); DocumentMaterials documentMaterials = new DocumentMaterials(); BeanUtils.copyProperties(archiveCategory, documentMaterials); documentMaterials.setRecordId(Long.parseLong(recordId)); this.insertDocumentMaterials(documentMaterials); } return AjaxResult.success(); } @Override public DocumentMaterials selectByPageNumber(Long pageNumber, Integer recordId) { LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); lqw.eq(pageNumber!=null, DocumentMaterials::getPageNumber, pageNumber); lqw.eq(recordId!=null, DocumentMaterials::getRecordId, recordId); List ls = list(lqw); if(!ls.isEmpty()) return ls.get(0); else return null; } @Override public boolean isPageNumberIslegal(Integer recordId) { return this.baseMapper.isPageNumberLegal(recordId); } @Override public int getFileCount(Integer recordId) { return this.baseMapper.getCount(recordId); } }