fei
2025-11-17 131cd265f4711691fe22ff50c44f523c65cd7022
archiveManager/src/main/java/com/ruoyi/service/impl/DocumentMaterialsServiceImpl.java
@@ -11,10 +11,7 @@
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.domain.ArchiveCategory;
import com.ruoyi.domain.DocumentMaterials;
import com.ruoyi.domain.vo.DocumentMaterialFileSmallVo;
import com.ruoyi.domain.vo.DocumentMaterialFileStyle;
import com.ruoyi.domain.vo.DocumentMaterialsVo;
import com.ruoyi.domain.vo.DocumentMaterialsVoLarge;
import com.ruoyi.domain.vo.*;
import com.ruoyi.mapper.DocumentMaterialsMapper;
import com.ruoyi.service.IDocumentMaterialsService;
import com.ruoyi.util.ErrorcodeExceptionextends;
@@ -24,7 +21,12 @@
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.*;
/**
 * 【文件材料综合信息】Service业务层处理
 *
 * @author ruoyi
 * @date 2025-07-26
 */
@Service
public class DocumentMaterialsServiceImpl  extends ServiceImpl<DocumentMaterialsMapper, DocumentMaterials> implements IDocumentMaterialsService {
    private LambdaQueryWrapper<DocumentMaterials> buildCondition(DocumentMaterials documentMaterials){
@@ -39,8 +41,10 @@
                .like(!StringUtils.isEmpty(documentMaterials.getRetentionPeriod()), DocumentMaterials::getRetentionPeriod, documentMaterials.getRetentionPeriod())
                .like(!StringUtils.isEmpty(documentMaterials.getSecurityLevel()), DocumentMaterials::getSecurityLevel, documentMaterials.getSecurityLevel())
                .eq(documentMaterials.getDate()!=null, DocumentMaterials::getDate, documentMaterials.getDate())
                .eq(documentMaterials.getRecordId()!=null, DocumentMaterials::getRecordId, documentMaterials.getRecordId());
//                .like(!StringUtils.isEmpty(archiveRecords.getFilingNumber()), ArchiveRecords::getFilingNumber, archiveRecords.getFilingNumber())
                .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())
@@ -113,6 +117,11 @@
    }
    @Override
    public List<DocumentMaterialsFileList> selectDocumentMaterialsFileList(Long id) {
        return this.baseMapper.getDocumentMaterialsFileList(Math.toIntExact(id));
    }
    @Override
    public int insertDocumentMaterials(DocumentMaterials documentMaterials) {
        LocalDateTime time = LocalDateTime.now();
@@ -140,8 +149,64 @@
    @Override
    public int updateDocumentMaterials(DocumentMaterials documentMaterials) {
        boolean result = false;
        try {
        boolean result = updateById(documentMaterials);
            //修改页号成功之后,要重新生成文件材料序号,页次
            //根据pageNumber拿到title,然后计算pageOrder
            LambdaQueryWrapper<DocumentMaterials> lqw = new LambdaQueryWrapper<>();
            lqw.eq(documentMaterials.getRecordId()!=null, DocumentMaterials::getRecordId, documentMaterials.getRecordId());
            lqw.eq(documentMaterials.getPageNumber()!=null, DocumentMaterials::getPageNumber, documentMaterials.getPageNumber());
            List<DocumentMaterials> 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<DocumentMaterials> lqw1 = new LambdaQueryWrapper<>();
            lqw.eq(documentMaterials.getRecordId()!=null, DocumentMaterials::getRecordId, documentMaterials.getRecordId());
          //  lqw.eq(documentMaterials.getPageNumber()!=null, DocumentMaterials::getPageNumber, documentMaterials.getPageNumber());
            List<DocumentMaterials> 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
@@ -163,22 +228,25 @@
    }
    @Override
    public Long getFiNum(Long pageNumber) {
        return this.baseMapper.getFileNumber(pageNumber);
    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<DocumentMaterials> lqw = new LambdaQueryWrapper<>();
        lqw.eq(recordId!=null, DocumentMaterials::getRecordId, recordId);
        lqw.eq(pageNumber!=null, DocumentMaterials::getPageNumber, pageNumber);
        List<DocumentMaterials> 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());
            Long maxPOrder = this.baseMapper.getMaxPageOrder(records.get(0).getTitle(), pageNumber, records.get(0).getStage(), recordId);
            if (maxPOrder != null)
                pageOrder = maxPOrder + 1;
        }
@@ -219,4 +287,16 @@
        }
        return AjaxResult.success();    }
    @Override
    public DocumentMaterials selectByPageNumber(Long pageNumber, Integer recordId) {
        LambdaQueryWrapper<DocumentMaterials> lqw = new LambdaQueryWrapper<>();
        lqw.eq(pageNumber!=null, DocumentMaterials::getPageNumber, pageNumber);
        lqw.eq(recordId!=null, DocumentMaterials::getRecordId, recordId);
        List<DocumentMaterials> ls = list(lqw);
        if(!ls.isEmpty())
            return ls.get(0);
        else
            return null;
    }
}