Explorar o código

u_archives_auto数据同步到sqlite

qianxb %!s(int64=2) %!d(string=hai) anos
pai
achega
5193b3ac54

+ 2 - 0
blade-service-api/blade-archive-api/src/main/java/org/springblade/archive/dto/ArchivesAutoDTO.java

@@ -31,4 +31,6 @@ import lombok.EqualsAndHashCode;
 public class ArchivesAutoDTO extends ArchivesAuto {
 	private static final long serialVersionUID = 1L;
 
+	//拼接档案下所有文件的pdf
+	private String allFilePdf;
 }

+ 6 - 0
blade-service/blade-archive/pom.xml

@@ -23,6 +23,12 @@
     </repositories>
 
     <dependencies>
+        <!--sqlite-->
+        <dependency>
+            <groupId>org.xerial</groupId>
+            <artifactId>sqlite-jdbc</artifactId>
+            <version>3.41.2.0</version>
+        </dependency>
         <dependency>
             <groupId>org.springblade</groupId>
             <artifactId>blade-core-boot</artifactId>

+ 22 - 0
blade-service/blade-archive/src/main/java/org/springblade/archive/config/sqliteConfig.java

@@ -0,0 +1,22 @@
+package org.springblade.archive.config;
+
+import com.alibaba.druid.pool.DruidDataSource;
+import org.springframework.stereotype.Component;
+
+import javax.sql.DataSource;
+
+/**
+ * @Param
+ * @Author wangwl
+ * @Date 2023/3/30 10:57
+ **/
+@Component
+public class sqliteConfig {
+    public DataSource dataSource(){
+        DruidDataSource ds = new DruidDataSource();
+        ds.setUrl("jdbc:sqlite:D:\\develop\\test\\test330.db");
+        ds.setDriverClassName("org.sqlite.JDBC");
+        return ds;
+    }
+
+}

+ 2 - 0
blade-service/blade-archive/src/main/java/org/springblade/archive/controller/ArchiveOfflineVersionInfoController.java

@@ -29,6 +29,7 @@ import java.text.DecimalFormat;
 public class ArchiveOfflineVersionInfoController {
 
     private final ArchiveOfflineVersionInfoMapper mapper;
+    private final IArchiveOfflineVersionInfoService offlineVersionInfoService;
 
     /**
      * 打包数据
@@ -37,6 +38,7 @@ public class ArchiveOfflineVersionInfoController {
     @GetMapping("/packData")
     public R<String> packData(Long projectId){
         //异步调用自动打包上传,完成后修改数据库信息
+        offlineVersionInfoService.packData(projectId);
         return R.data("最新数据后台自动打包中,打包完成后会更新打包日期");
     }
     /**

+ 5 - 0
blade-service/blade-archive/src/main/java/org/springblade/archive/mapper/ArchivesAutoMapper.java

@@ -17,6 +17,7 @@
 package org.springblade.archive.mapper;
 
 import org.apache.ibatis.annotations.Param;
+import org.springblade.archive.dto.ArchivesAutoDTO;
 import org.springblade.archive.entity.ArchivesAuto;
 import org.springblade.archive.vo.ArchivesAutoVO;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
@@ -51,4 +52,8 @@ public interface ArchivesAutoMapper extends BaseMapper<ArchivesAuto> {
 	 * @param projectId
 	 */
     Integer splitArchvies(@Param("projectId") Long projectId);
+	/**
+	 *  根据项目id获取所有档案
+	 */
+	List<ArchivesAutoDTO> getListByProjectId(@Param("projectId") Long projectId);
 }

+ 6 - 0
blade-service/blade-archive/src/main/java/org/springblade/archive/mapper/ArchivesAutoMapper.xml

@@ -119,5 +119,11 @@
             and is_lock=0;
     </update>
 
+    <select id="getListByProjectId" resultType="org.springblade.archive.dto.ArchivesAutoDTO">
+        select id,project_id as projectId,name,unit,storage_time as storageTime,node_id as nodeId,tree_sort as treeSort,status,is_deleted as isDeleted,is_lock as isLock,create_time as createTime
+        from u_archives_auto
+        where project_id=#{projectId};
+    </select>
+
 
 </mapper>

+ 1 - 0
blade-service/blade-archive/src/main/java/org/springblade/archive/service/IArchiveOfflineVersionInfoService.java

@@ -9,4 +9,5 @@ import org.springblade.core.mp.base.BaseService;
  * @Date 2023/3/31 10:09
  **/
 public interface IArchiveOfflineVersionInfoService extends BaseService<ArchiveOfflineVersionInfo> {
+    void packData(Long projectId);
 }

+ 85 - 0
blade-service/blade-archive/src/main/java/org/springblade/archive/service/impl/ArchiveOfflineVersionInfoServiceImpl.java

@@ -1,16 +1,101 @@
 package org.springblade.archive.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import lombok.AllArgsConstructor;
+import org.springblade.archive.config.sqliteConfig;
+import org.springblade.archive.dto.ArchivesAutoDTO;
 import org.springblade.archive.entity.ArchiveOfflineVersionInfo;
+import org.springblade.archive.entity.ArchivesAuto;
 import org.springblade.archive.mapper.ArchiveOfflineVersionInfoMapper;
+import org.springblade.archive.mapper.ArchivesAutoMapper;
 import org.springblade.archive.service.IArchiveOfflineVersionInfoService;
+import org.springblade.archive.service.IArchivesAutoService;
+import org.springblade.archive.utils.FileUtils;
+import org.springblade.business.entity.ArchiveFile;
+import org.springblade.business.feign.ArchiveFileClient;
+import org.springblade.common.utils.SnowFlakeUtil;
 import org.springblade.core.mp.base.BaseServiceImpl;
+import org.springblade.core.tool.utils.StringUtil;
+import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.List;
+
 /**
  * @Param
  * @Author wangwl
  * @Date 2023/3/31 10:09
  **/
 @Service
+@AllArgsConstructor
 public class ArchiveOfflineVersionInfoServiceImpl extends BaseServiceImpl<ArchiveOfflineVersionInfoMapper, ArchiveOfflineVersionInfo> implements IArchiveOfflineVersionInfoService {
+    private final sqliteConfig data;
+    private final ArchivesAutoMapper autoMapper;
+    private final ArchiveFileClient fileClient;
+
+    @Override
+    public void packData(Long projectId) {
+        List<ArchivesAutoDTO> list = autoMapper.getListByProjectId(projectId);
+        String localUrl = "D:\\develop\\aliyun\\";
+        //拼接档案里文件的pdf设置allPdf
+        for (ArchivesAutoDTO dto : list) {
+            List<ArchiveFile> files = fileClient.getArchiveFileByArchivesId(dto.getId()+"","");
+            if (files != null && files.size() >0){
+                List<String> urlList = new ArrayList<>();
+                for (ArchiveFile file : files) {
+                    if (StringUtil.isNotBlank(file.getPdfFileUrl())){
+                        urlList.add(file.getPdfFileUrl());
+                    }
+                }
+                if (urlList.size() > 0){
+                    Long id = SnowFlakeUtil.getId();
+                    FileUtils.mergePdfPublicMethods(urlList,localUrl+id+".pdf");
+                    dto.setAllFilePdf(localUrl+id+".pdf");
+                }
+            }
+
+        }
+        try  {
+            Connection conn = data.dataSource().getConnection();
+            //获取执行对象
+            String sql = "INSERT INTO u_archives_auto (id, project_id, name, file_number, unit,storage_time, is_archive,node_id, status, is_deleted,create_time,all_file_pdf)" +
+                    "VALUES(?,?,?,?,?,?,?,?,?,?,?,?)";
+            PreparedStatement pstm = conn.prepareStatement(sql);
+            //pstm 绑定数据
+            int i=0;
+            for (ArchivesAutoDTO auto : list) {
+                i++;
+                pstm.setLong(1,auto.getId());
+                pstm.setLong(2,auto.getProjectId());
+                pstm.setString(3,auto.getName());
+                pstm.setString(4,auto.getFileNumber());
+                pstm.setString(5,auto.getUnit());
+                pstm.setString(6,auto.getStorageTime());
+                pstm.setInt(7,auto.getIsArchive()==null?0:1);
+                pstm.setLong(8,auto.getNodeId());
+                pstm.setInt(9,auto.getStatus());
+                pstm.setInt(10,auto.getIsDeleted());
+                pstm.setString(11,  new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(auto.getCreateTime()));
+                pstm.setString(12,auto.getAllFilePdf()==null?"":auto.getAllFilePdf());
+
+                //添加批处理
+                pstm.addBatch();
+                if (i % 1000 == 0) {
+                    pstm.executeBatch();
+                    pstm.clearBatch();
+                }
+            }
+            //将批处理余下的语句执行完毕
+            pstm.executeBatch();
+            //释放资源
+            pstm.close();
+            conn.close();
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+    }
 }