package com.qianwen.smartman.modules.dnc.service.impl; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Map; import java.util.function.Function; import java.util.stream.Collectors; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.qianwen.core.log.exception.ServiceException; import com.qianwen.core.mp.base.BaseServiceImpl; import com.qianwen.core.mp.support.Condition; import com.qianwen.core.mp.support.Query; import com.qianwen.core.oss.model.OssFile; import com.qianwen.core.secure.utils.AuthUtil; import com.qianwen.core.tool.utils.Func; import com.qianwen.smartman.common.constant.CommonConstant; import com.qianwen.smartman.common.utils.MessageUtils; import com.qianwen.smartman.modules.dnc.convert.DncFactoryFileConvert; import com.qianwen.smartman.modules.dnc.dto.DncOperationLogDto; import com.qianwen.smartman.modules.dnc.entity.DncFactoryFile; import com.qianwen.smartman.modules.dnc.enums.DncEnums; import com.qianwen.smartman.modules.dnc.mapper.DncFactoryFileMapper; import com.qianwen.smartman.modules.dnc.service.IDncFactoryFileService; import com.qianwen.smartman.modules.dnc.service.IDncOperationLogService; import com.qianwen.smartman.modules.dnc.service.IObsFileService; import com.qianwen.smartman.modules.dnc.vo.DncFactoryFileVO; import com.qianwen.smartman.modules.dnc.vo.FileHistoryVO; import com.qianwen.smartman.modules.dnc.vo.FileVersionSwitchVO; import com.qianwen.smartman.modules.resource.builder.oss.OssBuilder; import com.qianwen.smartman.modules.system.entity.User; import com.qianwen.smartman.modules.system.service.IUserService; @Service /* loaded from: blade-api.jar:BOOT-INF/classes/org/springblade/modules/dnc/service/impl/DncFactoryFileServiceImpl.class */ public class DncFactoryFileServiceImpl extends BaseServiceImpl implements IDncFactoryFileService { private final IUserService userService; private final IDncOperationLogService dncOperationLogService; private final IObsFileService obsFileService; private final OssBuilder ossBuilder; public DncFactoryFileServiceImpl(final IUserService userService, final IDncOperationLogService dncOperationLogService, final IObsFileService obsFileService, final OssBuilder ossBuilder) { this.userService = userService; this.dncOperationLogService = dncOperationLogService; this.obsFileService = obsFileService; this.ossBuilder = ossBuilder; } @Override // org.springblade.modules.dnc.service.IDncFactoryFileService public DncFactoryFileVO addFactoryFile(DncFactoryFileVO dncFactoryFileVO) { DncFactoryFile dncFactoryFile = DncFactoryFileConvert.INSTANCE.convert(dncFactoryFileVO); String filename = dncFactoryFileVO.getFilename(); DncFactoryFile oldFile = getOne(Wrappers.lambdaQuery() .eq(DncFactoryFile::getFilename, filename) .eq(DncFactoryFile::getIsCurrent, DncEnums.CurrentVersion.YES.getCode())); /* DncFactoryFile oldFile = (DncFactoryFile) getOne((Wrapper) ((LambdaQueryWrapper) Wrappers.lambdaQuery().eq((v0) -> { return v0.getFilename(); }, filename)).eq((v0) -> { return v0.getIsCurrent(); }, DncEnums.CurrentVersion.YES.getCode()));*/ OssFile ossFile = this.ossBuilder.template().statFile(dncFactoryFile.getObjectKey()); String hash = ossFile.getHash(); if (Func.isNull(oldFile)) { dncFactoryFile.setContentMd5(hash); dncFactoryFile.setVersion(CommonConstant.VERSION_NUM); saveFactoryFile(dncFactoryFileVO, dncFactoryFile, filename); } else if (!hash.equals(oldFile.getContentMd5())) { update(Wrappers.lambdaUpdate() .eq(DncFactoryFile::getFilename, filename) .set(DncFactoryFile::getIsCurrent, DncEnums.CurrentVersion.NO.getCode())); /* update((Wrapper) ((LambdaUpdateWrapper) Wrappers.lambdaUpdate().eq((v0) -> { return v0.getFilename(); }, filename)).set((v0) -> { return v0.getIsCurrent(); }, DncEnums.CurrentVersion.NO.getCode()));*/ dncFactoryFile.setContentMd5(hash); dncFactoryFile.setVersion(Integer.valueOf((oldFile.getVersion() != null ? oldFile.getVersion() : CommonConstant.VERSION_NUM).intValue() + CommonConstant.VERSION_NUM.intValue())); saveFactoryFile(dncFactoryFileVO, dncFactoryFile, filename); } return dncFactoryFileVO; } private void saveFactoryFile(DncFactoryFileVO dncFactoryFileVO, DncFactoryFile dncFactoryFile, String filename) { dncFactoryFile.setIsCurrent(DncEnums.CurrentVersion.YES.getCode()); save(dncFactoryFile); DncOperationLogDto dncOperationLogDto = new DncOperationLogDto(); dncOperationLogDto.setFileId(dncFactoryFile.getId()).setFileName(filename).setObjectKey(dncFactoryFileVO.getObjectKey()).setSuffix(dncFactoryFileVO.getSuffix()).setOperatorId(AuthUtil.getUserId()).setOperatorName(AuthUtil.getUserAccount()).setOperationType(DncEnums.LogOperationType.UPLOAD.getCode()).setOperationResponse(CommonConstant.VERSION_NUM).setOperationTime(new Date()).setSourceType(DncEnums.LogFileSourceType.LOCAL_FILE.getCode()).setTargetType(DncEnums.LogFileSourceType.STATION_FILE.getCode()).setLink(dncFactoryFileVO.getLink()).setFileLocation(DncEnums.FileLocation.ETHERNET.getCode()).setVersion(dncFactoryFile.getVersion()); this.dncOperationLogService.insertLog(dncOperationLogDto); } @Override // org.springblade.modules.dnc.service.IDncFactoryFileService public void writeFileLog(DncFactoryFile dncFactoryFile) { DncOperationLogDto dncOperationLogDto = new DncOperationLogDto(); dncOperationLogDto.setFileId(dncFactoryFile.getId()).setFileName(dncFactoryFile.getFilename()).setObjectKey(dncFactoryFile.getObjectKey()).setSuffix(dncFactoryFile.getSuffix()).setOperatorId(AuthUtil.getUserId()).setOperatorName(AuthUtil.getUserAccount()).setOperationType(DncEnums.LogOperationType.DELETE.getCode()).setOperationResponse(CommonConstant.VERSION_NUM).setOperationTime(new Date()).setSourceType(DncEnums.LogFileSourceType.STATION_FILE.getCode()).setTargetType(DncEnums.LogFileSourceType.STATION_FILE.getCode()).setLink(dncFactoryFile.getLink()).setFileLocation(DncEnums.FileLocation.ETHERNET.getCode()).setVersion(dncFactoryFile.getVersion()); this.dncOperationLogService.insertLog(dncOperationLogDto); } @Override // org.springblade.modules.dnc.service.IDncFactoryFileService public Boolean verifyFileName(String fileName, String objectKey) { DncFactoryFile one = getOne(Wrappers.lambdaQuery().eq(DncFactoryFile::getFilename, fileName) .eq(DncFactoryFile::getIsCurrent, DncEnums.CurrentVersion.YES.getCode())); /* DncFactoryFile one = (DncFactoryFile) getOne((Wrapper) ((LambdaQueryWrapper) Wrappers.lambdaQuery().eq((v0) -> { return v0.getFilename(); }, fileName)).eq((v0) -> { return v0.getIsCurrent(); }, DncEnums.CurrentVersion.YES.getCode()));*/ if (one != null) { boolean result = this.obsFileService.verifyFileContent(objectKey, one.getContentMd5()); if (result) { return true; } } return false; } @Override // org.springblade.modules.dnc.service.IDncFactoryFileService public IPage listPages(String keywords, Query query) { Map userMap = this.userService.list().stream().collect(Collectors.toMap((v0) -> { return v0.getId(); }, Function.identity())); IPage pages = page(Condition.getPage(query), Wrappers.lambdaQuery() .eq(DncFactoryFile::getIsCurrent, DncEnums.CurrentVersion.YES.getCode()) .and(Func.isNotEmpty(keywords), i -> i.likeRight(DncFactoryFile::getFilename, keywords).or().likeRight(DncFactoryFile::getSuffix, keywords)) .orderByDesc(DncFactoryFile::getCreateTime)); /* IPage pages = page(Condition.getPage(query), (Wrapper) ((LambdaQueryWrapper) Wrappers.lambdaQuery().eq((v0) -> { return v0.getIsCurrent(); }, DncEnums.CurrentVersion.YES.getCode())).and(Func.isNotEmpty(keywords), i -> { LambdaQueryWrapper lambdaQueryWrapper = (LambdaQueryWrapper) ((LambdaQueryWrapper) ((LambdaQueryWrapper) i.likeRight((v0) -> { return v0.getFilename(); }, keywords)).or()).likeRight((v0) -> { return v0.getSuffix(); }, keywords); }).orderByDesc((v0) -> { return v0.getCreateTime(); }));*/ IPage convert = DncFactoryFileConvert.INSTANCE.convert(pages); convert.getRecords().forEach(s -> { User upUser = (User) userMap.get(s.getUpdateUser()); User crUser = (User) userMap.get(s.getCreateUser()); s.setUpdateUserName(upUser != null ? upUser.getAccount() : ""); s.setCreateUserName(crUser != null ? crUser.getAccount() : ""); s.setVersionDesc(Func.isNotEmpty(s.getVersion()) ? s.getVersion() + CommonConstant.FILE_SUFFIX : ""); }); return convert; } @Override // org.springblade.modules.dnc.service.IDncFactoryFileService public List getFactoryFileHistory(String fileId) { Map userMap = this.userService.list().stream().collect(Collectors.toMap((v0) -> { return v0.getId(); }, Function.identity())); DncFactoryFile dncFactoryFile = (DncFactoryFile) getById(fileId); if (dncFactoryFile == null) { throw new ServiceException(MessageUtils.message("dnc.file.is.not.exists", new Object[0])); } List list = list(Wrappers.lambdaQuery() .eq(DncFactoryFile::getFilename, dncFactoryFile.getFilename()) .orderByDesc(DncFactoryFile::getVersion)); /* List list = list((Wrapper) ((LambdaQueryWrapper) Wrappers.lambdaQuery().eq((v0) -> { return v0.getFilename(); }, dncFactoryFile.getFilename())).orderByDesc((v0) -> { return v0.getVersion(); }));*/ if (Func.isNotEmpty(list)) { return list.stream().map(s -> { return FileHistoryVO.builder().id(s.getId()).createTime(s.getCreateTime()).filename(s.getFilename()).objectKey(s.getObjectKey()).isCurrent(s.getIsCurrent()).link(s.getLink()).contentMd5(s.getContentMd5()).contentLength(s.getContentLength()).contentType(s.getContentType()).suffix(s.getSuffix()).createUser(((User) userMap.get(s.getCreateUser())).getAccount()).updateUser(((User) userMap.get(s.getUpdateUser())).getAccount()).updateTime(s.getUpdateTime()).version(s.getVersion() != null ? String.valueOf(s.getVersion()) : "1").versionDesc(s.getVersion() != null ? s.getVersion() + CommonConstant.FILE_SUFFIX : CommonConstant.VERSION_NUM + CommonConstant.FILE_SUFFIX).build(); }).collect(Collectors.toList()); } return new ArrayList<>(); } @Override // org.springblade.modules.dnc.service.IDncFactoryFileService @Transactional(rollbackFor = {Exception.class}) public Boolean switchVersion(FileVersionSwitchVO fileVersionSwitchVO) { boolean result = false; if (Func.isNotBlank(fileVersionSwitchVO.getSwitchFileId()) && Func.isNotBlank(fileVersionSwitchVO.getCurrentFileId())) { DncFactoryFile file = (DncFactoryFile) getById(fileVersionSwitchVO.getCurrentFileId()); if (file == null || !DncEnums.CurrentVersion.YES.getCode().equals(file.getIsCurrent())) { throw new ServiceException(MessageUtils.message("dnc.workstation.file.is.not.exist.or.is.not.current.version", new Object[0])); } boolean updateSwitch = update(Wrappers.lambdaUpdate().set(DncFactoryFile::getIsCurrent, DncEnums.CurrentVersion.YES.getCode()).eq(DncFactoryFile::getId, fileVersionSwitchVO.getSwitchFileId())); boolean updateCurrent = update(Wrappers.lambdaUpdate().set(DncFactoryFile::getIsCurrent, DncEnums.CurrentVersion.NO.getCode()).eq(DncFactoryFile::getId, fileVersionSwitchVO.getCurrentFileId())); /* boolean updateSwitch = update((Wrapper) ((LambdaUpdateWrapper) Wrappers.lambdaUpdate().set((v0) -> { return v0.getIsCurrent(); }, DncEnums.CurrentVersion.YES.getCode())).eq((v0) -> { return v0.getId(); }, fileVersionSwitchVO.getSwitchFileId())); boolean updateCurrent = update((Wrapper) ((LambdaUpdateWrapper) Wrappers.lambdaUpdate().set((v0) -> { return v0.getIsCurrent(); }, DncEnums.CurrentVersion.NO.getCode())).eq((v0) -> { return v0.getId(); }, fileVersionSwitchVO.getCurrentFileId()));*/ if (updateSwitch && updateCurrent) { result = true; } } return Boolean.valueOf(result); } }