package com.lxzn.nc.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.lxzn.framework.domain.nc.DeviceInfo; import com.lxzn.framework.domain.nc.DocFile; import com.lxzn.framework.domain.nc.DocInfo; import com.lxzn.framework.domain.nc.response.DocumentCode; import com.lxzn.framework.exception.ExceptionCast; import com.lxzn.framework.model.response.CommonCode; import com.lxzn.framework.utils.ValidateUtil; import com.lxzn.framework.utils.file.DocVersionUtil; import com.lxzn.nc.dao.DocFileMapper; import com.lxzn.nc.service.IDocFileService; import com.lxzn.nc.service.IDocInfoService; import com.lxzn.nc.service.IDocRelativeService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.List; @Service public class DocFileServiceImpl extends ServiceImpl implements IDocFileService { @Autowired private IDocInfoService docInfoService; @Autowired private IDocRelativeService docRelativeService; @Override @Transactional(rollbackFor = {Exception.class}) public boolean addDocFile(DocFile docFile) { if(docFile == null) ExceptionCast.cast(CommonCode.INVALID_PARAM); if(!ValidateUtil.validateString(docFile.getDocId())) ExceptionCast.cast(DocumentCode.DOC_FILE_DOC_ID_NONE); if(!ValidateUtil.validateString(docFile.getFileName()) || !ValidateUtil.validateString(docFile.getFileEncodeName())) ExceptionCast.cast(DocumentCode.DOCUMENT_NAME_NONE); if(!ValidateUtil.validateLong(docFile.getFileSize())) ExceptionCast.cast(DocumentCode.DOC_FILE_SIZE_NONE); /*if(!ValidateUtil.validateString(docFile.getFileSuffix())) ExceptionCast.cast(DocumentCode.DOC_SUFFIX_ERROR);*/ if(!ValidateUtil.validateString(docFile.getFilePath())) ExceptionCast.cast(DocumentCode.DOC_FILE_PATH_NONE); DocFile nearestFile = getDocFileNearest(docFile.getDocId()); if(nearestFile == null) { docFile.setDocVersion(DocVersionUtil.generateNewVersion(null)); }else { docFile.setDocVersion(DocVersionUtil.generateNewVersion(nearestFile.getDocVersion())); } return super.save(docFile); } @Override public DocFile getDocFileNearest(String docId) { if(!ValidateUtil.validateString(docId)) return null; LambdaQueryWrapper lambdaQueryWrapper = Wrappers.lambdaQuery(); lambdaQueryWrapper.eq(DocFile::getDocId, docId).orderByDesc(DocFile::getCreateTime).orderByDesc(DocFile::getFileId); return super.getOne(lambdaQueryWrapper, false); } @Override public List findListByDocId(String docId) { if(!ValidateUtil.validateString(docId)) return null; return super.lambdaQuery().eq(DocFile::getDocId, docId).orderByDesc(DocFile::getFileId).list(); } @Override @Transactional(rollbackFor = {Exception.class}) public boolean assignFileVersion(String fileId) { if(!ValidateUtil.validateString(fileId)) ExceptionCast.cast(CommonCode.INVALID_PARAM); DocFile docFile = super.getById(fileId); if(docFile == null) { ExceptionCast.cast(DocumentCode.DOC_FILE_ERROR); } List deviceList = docRelativeService.findDeviceByDocId(docFile.getDocId()); if(deviceList != null && !deviceList.isEmpty()) ExceptionCast.cast(DocumentCode.DOC_DEVICE_EXIST); DocInfo docInfo = new DocInfo(); docInfo.setDocId(docFile.getDocId()); docInfo.setPublishFileId(docFile.getFileId()); docInfo.setPublishVersion(docFile.getDocVersion()); return docInfoService.updateById(docInfo); } @Override @Transactional(rollbackFor = {Exception.class}) public boolean deleteByDocAttr(Integer type, String id) { return super.getBaseMapper().deleteByDocAttr(type, id) >= 0; } @Override @Transactional(rollbackFor = {Exception.class}) public boolean deleteByDocId(String docId) { LambdaQueryWrapper lambdaQueryWrapper = Wrappers.lambdaQuery(); lambdaQueryWrapper.eq(DocFile::getDocId, docId); return super.remove(lambdaQueryWrapper); } }