From 23855599412c4d61b38d78f0f3abd3430a48b5b1 Mon Sep 17 00:00:00 2001
From: zhangherong <571457620@qq.com>
Date: 星期三, 25 六月 2025 11:51:38 +0800
Subject: [PATCH] Merge branch 'mdc_hyjs_master'

---
 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/DocFileServiceImpl.java |  113 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 113 insertions(+), 0 deletions(-)

diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/DocFileServiceImpl.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/DocFileServiceImpl.java
new file mode 100644
index 0000000..920cf7a
--- /dev/null
+++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/DocFileServiceImpl.java
@@ -0,0 +1,113 @@
+package org.jeecg.modules.dnc.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 org.jeecg.modules.dnc.entity.DeviceInfo;
+import org.jeecg.modules.dnc.entity.DocFile;
+import org.jeecg.modules.dnc.entity.DocInfo;
+import org.jeecg.modules.dnc.exception.ExceptionCast;
+import org.jeecg.modules.dnc.mapper.DocFileMapper;
+import org.jeecg.modules.dnc.mapper.DocInfoMapper;
+import org.jeecg.modules.dnc.response.CommonCode;
+import org.jeecg.modules.dnc.utils.ValidateUtil;
+import org.jeecg.modules.dnc.utils.file.DocVersionUtil;
+import org.jeecg.modules.dnc.response.DocumentCode;
+import org.jeecg.modules.dnc.service.IDocFileService;
+import org.jeecg.modules.dnc.service.IDocInfoService;
+import org.jeecg.modules.dnc.service.IDocRelativeService;
+import org.jeecg.modules.mdc.entity.MdcEquipment;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Lazy;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+
+@Service
+public class DocFileServiceImpl extends ServiceImpl<DocFileMapper, DocFile> implements IDocFileService {
+    @Autowired
+    private DocInfoMapper docInfoMapper;
+    @Autowired
+    @Lazy
+    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<DocFile> lambdaQueryWrapper = Wrappers.lambdaQuery();
+        lambdaQueryWrapper.eq(DocFile::getDocId, docId).orderByDesc(DocFile::getCreateTime).orderByDesc(DocFile::getFileId);
+        return super.getOne(lambdaQueryWrapper, false);
+    }
+
+    @Override
+    public List<DocFile> findListByDocId(String docId) {
+        DocInfo docInfo = docInfoMapper.selectById(docId);
+        if(!ValidateUtil.validateString(docId))
+            return null;
+        List<DocFile> fileList=super.lambdaQuery().eq(DocFile::getDocId, docId).orderByDesc(DocFile::getFileId).list();
+        fileList.forEach(item->{
+            //瀵规瘮鐗堟湰
+            item.setPublishFlag(docInfo.getPublishVersion().equals(item.getDocVersion()));
+        });
+        return fileList;
+    }
+
+    @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<MdcEquipment> 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 docInfoMapper.updateById(docInfo) >= 0;
+    }
+
+    @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<DocFile> lambdaQueryWrapper = Wrappers.lambdaQuery();
+        lambdaQueryWrapper.eq(DocFile::getDocId, docId);
+        return super.remove(lambdaQueryWrapper);
+    }
+}

--
Gitblit v1.9.3