Procházet zdrojové kódy

Merge branch 'refs/heads/feature-log-lihb-20250820' into dev

LHB před 1 měsícem
rodič
revize
88f2491ea5
16 změnil soubory, kde provedl 492 přidání a 11 odebrání
  1. 20 0
      blade-service-api/blade-business-api/src/main/java/org/springblade/business/dto/StartTimeAndEndTime.java
  2. 97 0
      blade-service-api/blade-business-api/src/main/java/org/springblade/business/entity/ContractLogMonthPack.java
  3. 9 0
      blade-service-api/blade-business-api/src/main/java/org/springblade/business/vo/ContractLogVO.java
  4. 42 0
      blade-service/blade-business/src/main/java/org/springblade/business/controller/ContractLogController.java
  5. 18 0
      blade-service/blade-business/src/main/java/org/springblade/business/mapper/ContractLogMonthPackMapper.java
  6. 28 0
      blade-service/blade-business/src/main/java/org/springblade/business/mapper/ContractLogMonthPackMapper.xml
  7. 13 0
      blade-service/blade-business/src/main/java/org/springblade/business/service/ContractLogMonthPackService.java
  8. 20 0
      blade-service/blade-business/src/main/java/org/springblade/business/service/IContractLogService.java
  9. 22 0
      blade-service/blade-business/src/main/java/org/springblade/business/service/impl/ContractLogMonthPackServiceImpl.java
  10. 164 1
      blade-service/blade-business/src/main/java/org/springblade/business/service/impl/ContractLogServiceImpl.java
  11. 4 4
      blade-service/blade-business/src/main/java/org/springblade/business/utils/FileUtils.java
  12. 2 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreePrivateMapper.java
  13. 41 5
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreePrivateMapper.xml
  14. 2 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/IWbsTreePrivateService.java
  15. 5 1
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ArchiveTreeContractSyncImpl.java
  16. 5 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreePrivateServiceImpl.java

+ 20 - 0
blade-service-api/blade-business-api/src/main/java/org/springblade/business/dto/StartTimeAndEndTime.java

@@ -0,0 +1,20 @@
+package org.springblade.business.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+
+/**
+ * @author LHB
+ */
+@Data
+public class StartTimeAndEndTime {
+    @ApiModelProperty("开始时间")
+    @NotBlank(message = "开始时间不能为空")
+    private String startTime;
+    @ApiModelProperty("结束时间")
+    @NotBlank(message = "结束时间不能为空")
+    private String endTime;
+}

+ 97 - 0
blade-service-api/blade-business-api/src/main/java/org/springblade/business/entity/ContractLogMonthPack.java

@@ -0,0 +1,97 @@
+package org.springblade.business.entity;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.util.Date;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 日志按月封装表
+ * @TableName u_contract_log_month_pack
+ */
+@TableName(value ="u_contract_log_month_pack")
+@Data
+public class ContractLogMonthPack {
+    /**
+     * 
+     */
+    @TableId
+    @ApiModelProperty("id")
+    private Long id;
+
+    /**
+     * 项目id
+     */
+    @ApiModelProperty("项目id")
+    private Long projectId;
+
+    /**
+     * 合同段id
+     */
+    @ApiModelProperty("合同段id")
+    private Long contractId;
+
+    /**
+     * 私有WBS树p_key_id
+     */
+    @ApiModelProperty("私有WBS树p_key_id")
+    private Long wbsNodeId;
+
+    /**
+     *  日志类型
+     */
+    @ApiModelProperty("日志类型")
+    private Integer wbsNodeType;
+
+    /**
+     * 文件名称
+     */
+    @ApiModelProperty("文件名称")
+    private String fileName;
+
+    /**
+     * 上当月中最后一份文件的日期
+     */
+    @ApiModelProperty("上当月中最后一份文件的日期")
+    private String recordTime;
+
+    /**
+     * 合同段名称
+     */
+    @ApiModelProperty("合同段名称(责任者)")
+    private String contractName;
+
+    /**
+     *  页数
+     */
+    @ApiModelProperty("页数")
+    private Integer page;
+
+    /**
+     * pdf路径
+     */
+    @ApiModelProperty("pdf路径")
+    private String pdfUrl;
+
+    /**
+     *  创建时间
+     */
+    private Date createTime;
+
+    /**
+     *  创建人
+     */
+    private Long createUser;
+
+    /**
+     *  修改时间
+     */
+    private Date updateTime;
+
+    /**
+     *  修改人
+     */
+    private Long updateUser;
+}

+ 9 - 0
blade-service-api/blade-business-api/src/main/java/org/springblade/business/vo/ContractLogVO.java

@@ -1,10 +1,13 @@
 package org.springblade.business.vo;
 
 import io.swagger.annotations.ApiModelProperty;
+import org.springblade.business.dto.StartTimeAndEndTime;
 import org.springblade.business.entity.ContractLog;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
+import javax.validation.Valid;
+import javax.validation.constraints.NotEmpty;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -49,6 +52,12 @@ public class ContractLogVO extends ContractLog {
     @ApiModelProperty(value = "签字人员集合")
     private List<Object> taskApproveUserNamesList;
 
+
+    @ApiModelProperty(value = "按月封装时间范围")
+    @NotEmpty(message = "请选择时间范围")
+    @Valid
+    private List<StartTimeAndEndTime> startTimeAndEndTimes;
+
     public void setSelectNodeList(String primaryKeyId, String title) {
         if (this.selectNodeList == null) {
             this.selectNodeList = new ArrayList<>();

+ 42 - 0
blade-service/blade-business/src/main/java/org/springblade/business/controller/ContractLogController.java

@@ -5,6 +5,7 @@ import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
@@ -44,6 +45,7 @@ import org.springframework.beans.BeanUtils;
 import org.springframework.jdbc.core.BeanPropertyRowMapper;
 import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
 import java.io.IOException;
@@ -664,4 +666,44 @@ public class ContractLogController extends BladeController {
         return R.data(this.wbsTreeContractClient.queryCurrentContractLogList(contractId));
     }
 
+
+    /**
+     * 按月打包
+     *
+     * @param logVo 查询条件
+     * @return 结果
+     */
+    @PostMapping("/byMonthPack")
+    @ApiOperationSupport(order = 2)
+    @ApiOperation(value = "按月打包")
+    public R<Boolean> byMonthPack(@RequestBody @Validated ContractLogVO logVo) {
+        return R.data(this.contractLogService.byMonthPack(logVo));
+    }
+
+    /**
+     * 查询按月打包
+     *
+     * @param logVo 查询条件
+     * @return 结果
+     */
+    @PostMapping("/selectByMonthPack")
+    @ApiOperationSupport(order = 2)
+    @ApiOperation(value = "查询按月打包")
+    public R<Page<ContractLogMonthPack>> selectByMonthPack(@RequestBody ContractLogVO logVo) {
+        return R.data(this.contractLogService.selectByMonthPack(logVo));
+    }
+
+    /**
+     * 删除按月打包
+     *
+     * @param id id
+     * @return 结果
+     */
+    @GetMapping("/deleteByMonthPack")
+    @ApiOperationSupport(order = 1)
+    @ApiOperation(value = "删除按月打包")
+    @ApiImplicitParam(name = "id", value = "id", required = true)
+    public R<Boolean> deleteByMonthPack(@RequestParam Long id) {
+        return R.data(this.contractLogService.deleteByMonthPack(id));
+    }
 }

+ 18 - 0
blade-service/blade-business/src/main/java/org/springblade/business/mapper/ContractLogMonthPackMapper.java

@@ -0,0 +1,18 @@
+package org.springblade.business.mapper;
+
+import org.springblade.business.entity.ContractLogMonthPack;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+* @author LHB
+* @description 针对表【u_contract_log_month_pack(日志按月封装表)】的数据库操作Mapper
+* @createDate 2025-08-20 14:35:00
+* @Entity generator.domain.UContractLogMonthPack
+*/
+public interface ContractLogMonthPackMapper extends BaseMapper<ContractLogMonthPack> {
+
+}
+
+
+
+

+ 28 - 0
blade-service/blade-business/src/main/java/org/springblade/business/mapper/ContractLogMonthPackMapper.xml

@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.springblade.business.mapper.ContractLogMonthPackMapper">
+
+    <resultMap id="BaseResultMap" type="org.springblade.business.entity.ContractLogMonthPack">
+            <id property="id" column="id" />
+            <result property="projectId" column="project_id" />
+            <result property="contractId" column="contract_id" />
+            <result property="wbsNodeId" column="wbs_node_id" />
+            <result property="wbsNodeType" column="wbs_node_type" />
+            <result property="fileName" column="file_name" />
+            <result property="recordTime" column="record_time" />
+            <result property="contractName" column="contract_name" />
+            <result property="page" column="page" />
+            <result property="createTime" column="create_time" />
+            <result property="createUser" column="create_user" />
+            <result property="updateTime" column="update_time" />
+            <result property="updateUser" column="update_user" />
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        id,project_id,contract_id,wbs_node_id,wbs_node_type,file_name,
+        record_time,contract_name,page,create_time,create_user,
+        update_time,update_user
+    </sql>
+</mapper>

+ 13 - 0
blade-service/blade-business/src/main/java/org/springblade/business/service/ContractLogMonthPackService.java

@@ -0,0 +1,13 @@
+package org.springblade.business.service;
+
+import org.springblade.business.entity.ContractLogMonthPack;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+* @author LHB
+* @description 针对表【u_contract_log_month_pack(日志按月封装表)】的数据库操作Service
+* @createDate 2025-08-20 14:35:00
+*/
+public interface ContractLogMonthPackService extends IService<ContractLogMonthPack> {
+
+}

+ 20 - 0
blade-service/blade-business/src/main/java/org/springblade/business/service/IContractLogService.java

@@ -16,7 +16,9 @@
  */
 package org.springblade.business.service;
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import org.springblade.business.entity.ContractLog;
+import org.springblade.business.entity.ContractLogMonthPack;
 import org.springblade.business.vo.ContractLogVO;
 import org.springblade.business.vo.FileUserVO;
 import org.springblade.core.mp.base.BaseService;
@@ -46,4 +48,22 @@ public interface IContractLogService extends BaseService<ContractLog> {
      */
     IPage<ContractLogVO> constructionLogPage(ContractLogVO logVO);
 
+    /**
+     * 日志按月封装
+     * @param logVo
+     * @return
+     */
+    Boolean byMonthPack(ContractLogVO logVo);
+    /**
+     * 查询按月封装
+     * @param logVo
+     * @return
+     */
+    Page<ContractLogMonthPack> selectByMonthPack(ContractLogVO logVo);
+    /**
+     * 删除按月打包
+     * @param logVo
+     * @return
+     */
+    Boolean deleteByMonthPack(Long id);
 }

+ 22 - 0
blade-service/blade-business/src/main/java/org/springblade/business/service/impl/ContractLogMonthPackServiceImpl.java

@@ -0,0 +1,22 @@
+package org.springblade.business.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springblade.business.entity.ContractLogMonthPack;
+import org.springblade.business.service.ContractLogMonthPackService;
+import org.springblade.business.mapper.ContractLogMonthPackMapper;
+import org.springframework.stereotype.Service;
+
+/**
+* @author LHB
+* @description 针对表【u_contract_log_month_pack(日志按月封装表)】的数据库操作Service实现
+* @createDate 2025-08-20 14:35:00
+*/
+@Service
+public class ContractLogMonthPackServiceImpl extends ServiceImpl<ContractLogMonthPackMapper, ContractLogMonthPack>
+    implements ContractLogMonthPackService {
+
+}
+
+
+
+

+ 164 - 1
blade-service/blade-business/src/main/java/org/springblade/business/service/impl/ContractLogServiceImpl.java

@@ -16,29 +16,49 @@
  */
 package org.springblade.business.service.impl;
 
+import cn.hutool.core.date.DateField;
+import cn.hutool.core.date.DateTime;
+import cn.hutool.core.date.DateUtil;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.nacos.shaded.org.checkerframework.checker.units.qual.A;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.spire.pdf.PdfPageBase;
 import org.apache.commons.lang.StringUtils;
+import org.springblade.business.dto.StartTimeAndEndTime;
 import org.springblade.business.entity.ContractLog;
+import org.springblade.business.entity.ContractLogMonthPack;
 import org.springblade.business.entity.Task;
 import org.springblade.business.entity.TaskParallel;
 import org.springblade.business.mapper.ContractLogMapper;
+import org.springblade.business.service.ContractLogMonthPackService;
 import org.springblade.business.service.IContractLogService;
+import org.springblade.business.utils.FileUtils;
 import org.springblade.business.vo.ContractLogVO;
 import org.springblade.business.vo.FileUserVO;
+import org.springblade.common.utils.SnowFlakeUtil;
+import org.springblade.core.log.exception.ServiceException;
 import org.springblade.core.mp.base.BaseServiceImpl;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
+import org.springblade.core.oss.model.BladeFile;
 import org.springblade.core.secure.utils.AuthUtil;
-import org.springblade.core.tool.utils.ObjectUtil;
+import org.springblade.core.secure.utils.SecureUtil;
+import org.springblade.core.tool.utils.*;
 import org.springblade.manager.feign.ExcelTabClient;
+import org.springblade.resource.feign.NewIOSSClient;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.dao.DataAccessException;
 import org.springframework.jdbc.core.BeanPropertyRowMapper;
 import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
+import java.io.File;
+import java.io.FileNotFoundException;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -55,6 +75,14 @@ public class ContractLogServiceImpl extends BaseServiceImpl<ContractLogMapper, C
 
     @Autowired
     private  ExcelTabClient excelTabClient;
+    /**
+     * 按月封装对象
+     */
+    @Autowired
+    private ContractLogMonthPackService contractLogMonthPackService;
+
+    @Autowired
+    private NewIOSSClient newIOSSClient;
 
 
     public ContractLogServiceImpl(JdbcTemplate jdbcTemplate) {
@@ -207,4 +235,139 @@ public class ContractLogServiceImpl extends BaseServiceImpl<ContractLogMapper, C
         return iPage.setRecords(deduplicatedList);
     }
 
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Boolean byMonthPack(ContractLogVO logVo) {
+        //获取当前用户id
+        Long userId = SecureUtil.getUserId();
+
+        //所有月份
+        List<DateTime> monthAll = new ArrayList<>();
+
+        logVo.getStartTimeAndEndTimes().forEach(f -> {
+            List<DateTime> dateTimes = DateUtil.rangeToList(DateUtil.parse(f.getStartTime(),"yyyy-MM"), DateUtil.parse(f.getEndTime(),"yyyy-MM"), DateField.MONTH);
+            monthAll.addAll(dateTimes);
+        });
+
+        //查询所有数据
+        List<ContractLog> contractLogs = baseMapper.selectList(Wrappers.<ContractLog>lambdaQuery()
+                .eq(ContractLog::getContractId, logVo.getContractId())
+                .eq(ContractLog::getWbsNodeId, logVo.getWbsNodeId())
+                .isNotNull(ContractLog::getPdfUrl)
+                .orderByAsc(ContractLog::getRecordTime)
+        );
+        if(CollectionUtil.isEmpty(contractLogs)){
+            return false;
+        }
+
+        //按月分组
+        Map<String, List<ContractLog>> collect = contractLogs.stream().filter(f -> StringUtil.isNotBlank(f.getRecordTime())).collect(Collectors.groupingBy(log -> {
+            String dateStr = log.getRecordTime();
+            // 提取年月部分
+            return dateStr.substring(0, 7);
+        }));
+        //对分组中的数据按时间排序
+        List<ContractLogMonthPack> contractLogMonthPacks = new ArrayList<>();
+
+        monthAll.forEach(f -> {
+
+            //根据月份获取数据
+            List<ContractLog> monthLogs = collect.get(DateUtil.format(f, "yyyy-MM"));
+
+            if(CollectionUtil.isNotEmpty(monthLogs)){
+                ContractLog contractLog = monthLogs.get(0);
+
+                String nodeName = null;
+                String contractName = null;
+                try {
+                    //查询节点名称
+                    nodeName = jdbcTemplate.queryForObject("select node_name from m_wbs_tree_private where p_key_id = " + contractLog.getWbsNodeId(), String.class);
+                    contractName = jdbcTemplate.queryForObject("select case when contract_type = 1 then construction_unit_name else supervision_unit_name end from m_contract_info where id = " + contractLog.getContractId(), String.class);
+                } catch (DataAccessException e) {}
+                if(nodeName != null && contractName != null){
+                    ContractLogMonthPack contractLogMonthPack = new ContractLogMonthPack();
+                    contractLogMonthPack.setId(SnowFlakeUtil.getId());
+                    contractLogMonthPack.setContractId(contractLog.getContractId());
+                    contractLogMonthPack.setProjectId(contractLog.getProjectId());
+                    contractLogMonthPack.setWbsNodeId(contractLog.getWbsNodeId());
+                    contractLogMonthPack.setWbsNodeType(contractLog.getWbsNodeType());
+                    contractLogMonthPack.setFileName(DateUtil.format(f, "yyyy年MM月") + nodeName);
+                    contractLogMonthPack.setRecordTime(monthLogs.get(monthLogs.size()-1).getRecordTime().replaceAll("-",""));
+                    contractLogMonthPack.setContractName(contractName);
+                    contractLogMonthPack.setCreateUser(userId);
+
+                    //排序
+                    monthLogs.sort(Comparator.comparing(ContractLog::getRecordTime));
+                    List<String> pdfFiles = monthLogs.stream().map(m -> {
+                        if(StringUtil.isNotBlank(m.getEVisaPdfUrl())){
+                            return m.getEVisaPdfUrl();
+                        }
+                        return m.getPdfUrl();
+                    }).collect(Collectors.toList());
+
+                    try {
+                        String filePath = FileUtils.getSysLocalFileUrl();
+                        Long id = SnowFlakeUtil.getId();
+                        String trialPdf = filePath + "pdf/" + id + ".pdf";
+                        File trialPdf2 = ResourceUtil.getFile(trialPdf);
+                        if (trialPdf2.exists()) {
+                            trialPdf2.delete();
+                        }
+                        //合并日志pdf
+                        int page = FileUtils.mergePdfPublicMethods(pdfFiles, trialPdf);
+                        contractLogMonthPack.setPage(page);
+                        BladeFile bladeFile = this.newIOSSClient.uploadFile(id + ".pdf", trialPdf);
+                        if (bladeFile != null && ObjectUtils.isNotEmpty(bladeFile.getLink())) {
+                            contractLogMonthPack.setPdfUrl(bladeFile.getLink());
+                        }
+                    } catch (Exception e) {
+                        e.printStackTrace();
+                        throw new ServiceException("文件加载错误,请检查文件是否正常");
+                    }
+                    contractLogMonthPacks.add(contractLogMonthPack);
+                }
+            }
+        });
+        if(CollectionUtil.isNotEmpty(contractLogMonthPacks)){
+            List<String> collect1 = contractLogMonthPacks.stream().map(ContractLogMonthPack::getRecordTime).collect(Collectors.toList());
+            //删除文件
+            List<ContractLogMonthPack> list = contractLogMonthPackService.list(Wrappers.<ContractLogMonthPack>lambdaQuery()
+                    .eq(ContractLogMonthPack::getContractId, logVo.getContractId())
+                    .eq(ContractLogMonthPack::getWbsNodeId, logVo.getWbsNodeId())
+                    .in(ContractLogMonthPack::getRecordTime, collect1));
+
+            if(CollectionUtil.isNotEmpty(list)){
+                //删除文件
+                list.forEach(f -> {
+                    if(StringUtil.isNotBlank(f.getPdfUrl())){
+                        String pdfName = f.getPdfUrl().split("upload")[1];
+                        this.newIOSSClient.removeFile("upload" + pdfName);
+                    }
+                });
+                //删除数据
+                contractLogMonthPackService.removeBatchByIds(list);
+            }
+            return contractLogMonthPackService.saveBatch(contractLogMonthPacks);
+        }
+        return false;
+
+    }
+
+    @Override
+    public Page<ContractLogMonthPack> selectByMonthPack(ContractLogVO logVo) {
+        return contractLogMonthPackService.page(new Page<>(logVo.getCurrent(), logVo.getSize()), Wrappers.<ContractLogMonthPack>lambdaQuery()
+                .eq(ContractLogMonthPack::getContractId, logVo.getContractId())
+                .eq(ContractLogMonthPack::getWbsNodeId, logVo.getWbsNodeId())
+                .orderByDesc(ContractLogMonthPack::getRecordTime));
+    }
+
+    @Override
+    public Boolean deleteByMonthPack(Long id) {
+        ContractLogMonthPack byId = contractLogMonthPackService.getById(id);
+        if(byId != null && StringUtil.isNotBlank(byId.getPdfUrl())){
+            String pdfName = byId.getPdfUrl().split("upload")[1];
+            this.newIOSSClient.removeFile("upload" + pdfName);
+        }
+        return contractLogMonthPackService.removeById(id);
+    }
 }

+ 4 - 4
blade-service/blade-business/src/main/java/org/springblade/business/utils/FileUtils.java

@@ -517,9 +517,9 @@ public class FileUtils {
     /**
      * 合并方法
      */
-    public static void mergePdfPublicMethods(List<String> urlList, String localImgUrl) {
+    public static int mergePdfPublicMethods(List<String> urlList, String localImgUrl) {
         PdfReader reader = null;
-
+        int count = 0;
         Document doc = new Document();
         PdfCopy pdfCopy = null;
         try {
@@ -533,7 +533,7 @@ public class FileUtils {
                     reader = new PdfReader(CommonUtil.getOSSInputStream(urlStr));
 
                     pageCount = reader.getNumberOfPages();
-
+                    count += pageCount;
                     for (int i = 0; i < pageCount; ++i) {
                         int is = i + 1;
                         pdfCopy.addPage(pdfCopy.getImportedPage(reader, is));
@@ -546,7 +546,6 @@ public class FileUtils {
                     }
                 }
             }
-
         } catch (Exception e) {
             e.printStackTrace();
         } finally {
@@ -556,6 +555,7 @@ public class FileUtils {
             }
             doc.close();
         }
+        return count;
     }
 
     public static String getSysLocalFileUrl() {

+ 2 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreePrivateMapper.java

@@ -150,4 +150,6 @@ public interface WbsTreePrivateMapper extends EasyBaseMapper<WbsTreePrivate> {
                          @Param("sort") Integer sort);
 
     void updateSortBatchByPKeyId(List<WbsTreePrivate> resourceData);
+
+    List<ArchiveSyncLogVO> getContractAllLogMonthPack(@Param("contractId") Long contractId);
 }

+ 41 - 5
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreePrivateMapper.xml

@@ -959,11 +959,27 @@
         </if>
     </select>
     <select id="getContractAllLog" resultType="org.springblade.manager.vo.ArchiveSyncLogVO">
-        select id,create_user_name,record_time,file_name,pdf_url,e_visa_pdf_url,create_user,create_time,
-               (select node_type from m_wbs_tree_private where p_key_id = ucl.wbs_node_id) as logType,
-               (select node_name from m_wbs_tree_private where p_key_id = ucl.wbs_node_id) as logName
-        from u_contract_log ucl
-        where contract_id = #{contractId} and is_deleted = 0 and pdf_url IS NOT NULL order by record_time
+
+        SELECT
+            ucl.id,
+            case when b.contract_type = 1 then b.construction_unit_name else b.supervision_unit_name end  create_user_name,
+            ucl.record_time,
+            ucl.file_name,
+            ucl.pdf_url,
+            ucl.e_visa_pdf_url,
+            ucl.create_user,
+            ucl.create_time,
+            ( SELECT node_type FROM m_wbs_tree_private WHERE p_key_id = ucl.wbs_node_id ) AS logType,
+            ( SELECT node_name FROM m_wbs_tree_private WHERE p_key_id = ucl.wbs_node_id ) AS logName
+        FROM
+            u_contract_log ucl
+                left join m_contract_info b on ucl.contract_id = b.id
+        WHERE
+            contract_id = #{contractId}
+          AND ucl.is_deleted = 0
+          AND pdf_url IS NOT NULL
+        ORDER BY
+            record_time
     </select>
 
 
@@ -1014,4 +1030,24 @@
         /*排序*/
         -- order by sort,title
     </select>
+    <select id="getContractAllLogMonthPack" resultType="org.springblade.manager.vo.ArchiveSyncLogVO">
+        SELECT
+            id,
+            contract_name create_user_name,
+            record_time,
+            file_name,
+            pdf_url,
+            pdf_url e_visa_pdf_url,
+            create_user,
+            create_time,
+            ( SELECT node_type FROM m_wbs_tree_private WHERE p_key_id = ucl.wbs_node_id ) AS logType,
+            ( SELECT node_name FROM m_wbs_tree_private WHERE p_key_id = ucl.wbs_node_id ) AS logName
+        FROM
+            u_contract_log_month_pack ucl
+        WHERE
+            contract_id = #{contractId}
+          AND pdf_url IS NOT NULL
+        ORDER BY
+            record_time;
+    </select>
 </mapper>

+ 2 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/service/IWbsTreePrivateService.java

@@ -111,4 +111,6 @@ public interface IWbsTreePrivateService extends BaseService<WbsTreePrivate> {
     void diGuiWbs(int i);
 
     WbsTreePrivateVO tree3(String wbsId, String projectId);
+
+    List<ArchiveSyncLogVO> getContractAllLogMonthPack(Long contractId);
 }

+ 5 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ArchiveTreeContractSyncImpl.java

@@ -1166,7 +1166,11 @@ public class ArchiveTreeContractSyncImpl {
         List<ArchiveTreeContract> addNode = new ArrayList<>();
         List<ArchiveFile> addFile = new ArrayList<>();
         //获取合同段所有的日志,并且附带类型
-        List<ArchiveSyncLogVO> logs = wbsTreePrivateService.getContractAllLog(contractId);
+        List<ArchiveSyncLogVO> logs = wbsTreePrivateService.getContractAllLogMonthPack(contractId);
+        //先查按月封装 没有再查日志
+        if(CollectionUtil.isEmpty(logs)){
+            logs = wbsTreePrivateService.getContractAllLog(contractId);
+        }
         if (CollectionUtil.isEmpty(logs)){
             throw new ServiceException("当前合同段下没有日志资料");
         }

+ 5 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreePrivateServiceImpl.java

@@ -3208,6 +3208,11 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
         return baseMapper.getContractAllLog(contractId);
     }
 
+    @Override
+    public List<ArchiveSyncLogVO> getContractAllLogMonthPack(Long contractId) {
+        return baseMapper.getContractAllLogMonthPack(contractId);
+    }
+
     public void diGuiWbs(int i) {
         QueryWrapper<WbsTreePrivate> wbsTreePrivateQueryWrapper = new QueryWrapper<>();
         wbsTreePrivateQueryWrapper.select("p_key_id", "id", "p_id", "wbs_id", "project_id", "parent_id", "ancestors");