ソースを参照

Merge branch 'dev' of http://219.151.181.73:3000/zhuwei/bladex into dev

lvy 3 日 前
コミット
d34fc3b600

+ 5 - 1
blade-service/blade-archive/src/main/java/org/springblade/archive/service/impl/ArchivesAutoServiceImpl.java

@@ -5408,6 +5408,10 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 									LocalDateTime[] localDateTimes = convertDateRange(time, "-");
 									auto.setStartDate(localDateTimes[0]);
 									auto.setEndDate(localDateTimes[1]);
+								} else if (result.contains("~")) {
+									LocalDateTime[] localDateTimes = convertDateRange(time, "~");
+									auto.setStartDate(localDateTimes[0]);
+									auto.setEndDate(localDateTimes[1]);
 								}
 							} else if (result.contains("保管期限")||result.contains("保管限期")) {
 								String storageTime=result.replace("保管期限","").replace("保管限期","").replace(":","").replace(":","").replaceAll("_","");
@@ -5432,7 +5436,7 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 							}
 						}
 						if(StringUtils.isNotEmpty(fileName.toString())){
-							auto.setName(fileName.toString().replace("密级",""));
+							auto.setName(fileName.toString().replace("密级","").replace("级密",""));
 						}
 					}
 				}

+ 12 - 0
blade-service/blade-business/src/main/java/org/springblade/business/controller/TrialSystemDockingController.java

@@ -16,6 +16,8 @@
  */
 package org.springblade.business.controller;
 
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
@@ -33,6 +35,7 @@ import org.springblade.core.mp.support.Query;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.BeanUtil;
 import org.springblade.core.tool.utils.Func;
+import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.RequestParam;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -126,6 +129,15 @@ public class TrialSystemDockingController extends BladeController {
 		return R.data(map);
 	}
 
+	//@Scheduled(cron = "0 10 16 * * ?")
+	//刷新OSS没上传成功的文件
+	public void updateOSSUrl(){
+		List<TrialSystemDocking> trialSystemDockings = trialSystemDockingService.getBaseMapper().selectList(new LambdaQueryWrapper<>(TrialSystemDocking.class).eq(TrialSystemDocking::getIsUpdateOss, 0).eq(TrialSystemDocking::getIsDeleted, 0));
+		if(!trialSystemDockings.isEmpty()){
+			trialSystemDockingService.syncUpdateFile(trialSystemDockings);
+		}
+	}
+
 	/**
 	 * 修改 德飞试验系统对接表
 	 */

+ 33 - 10
blade-service/blade-manager/src/main/java/org/springblade/manager/formula/impl/SubTable.java

@@ -180,7 +180,7 @@ public class SubTable {
     /*获取最终输出的项目信息*/
     public List<Item> getPutOutList(){
         /*初始化group,保留原先内容,只做同KEY覆盖*/
-        //initOriginal();
+        initOriginal();
         List<Item> itemList = new ArrayList<>(group.values());
         if(this.mainList!=null){
             List<String> itemNameIndex = this.mainList.stream().map(e->FormulaUtils.parseItemName(e.getEName()).trim()).collect(Collectors.toList());
@@ -204,20 +204,43 @@ public class SubTable {
         String name = itemName.get(0);
         if(StringUtils.isNotEmpty(name)) {
             int head = 0;
+            //计算 最后一行之前的数据
             for (int i = 1; i < itemName.size(); i++) {
                 String x = itemName.get(i);
                 /*如果非空且与当前的不一样则视为新项目*/
-                if (StringUtils.isNotEmpty(x) && !x.equals(name) || (i == itemName.size() - 1)) {
-                   /* String des =designs.subList(head, i).stream().filter(StringUtils::isNotEmpty).distinct().collect(Collectors.joining("/"));*/
-                    Item item = new Item(name);
+                if (StringUtils.isNotEmpty(x) && !x.equals(name) || (i == itemName.size() - 1)) { //主要计算项 与 数据的关系
+                    if(!original.containsKey(name)){
+                        Item item = new Item(name);
+                        if(designs!=null&&designs.size()>0) {
+                            item.setDesign(designs.subList(head, i).stream().filter(StringUtils::isNotEmpty).distinct().collect(Collectors.toList()));
+                        }
+                        item.setData(new ArrayList<>(data.subList(head*15,  i*ROW_SIZE)));
+                        original.put(name,item);
+                        head = i;
+                        name = x;
+                    }else{
+                        Item item = original.get(name);
+                        item.getData().addAll(new ArrayList<>(data.subList(head*15,  i*ROW_SIZE)));
+                        original.put(name,item);
+                        head = i;
+                        name = x;
+                    }
+                }
+            }
+            // 添加最后一行的数据
+            String keyName = itemName.get(itemName.size()-1);
+            if(StringUtils.isNotEmpty(keyName)) {
+                if(!original.containsKey(keyName)){
+                    Item item = new Item(keyName);
                     if(designs!=null&&designs.size()>0) {
-                        item.setDesign(designs.subList(head, i).stream().filter(StringUtils::isNotEmpty).distinct().collect(Collectors.toList()));
+                        item.setDesign(designs.subList(itemName.size()-1, itemName.size()).stream().filter(StringUtils::isNotEmpty).distinct().collect(Collectors.toList()));
                     }
-                   /* original.put(name + StringPool.AT + des, new ArrayList<>(data.subList(head*15,  i*ROW_SIZE)));*/
-                    item.setData(new ArrayList<>(data.subList(head*15,  i*ROW_SIZE)));
-                    original.put(name,item);
-                    head = i;
-                    name = x;
+                    item.setData(new ArrayList<>(data.subList((itemName.size()-1)*15,  itemName.size()*ROW_SIZE)));
+                    original.put(keyName,item);
+                }else{
+                    Item item = original.get(keyName);
+                    item.getData().addAll(new ArrayList<>(data.subList((itemName.size()-1)*15,  itemName.size()*ROW_SIZE)));
+                    original.put(keyName,item);
                 }
             }
             merge();

+ 1 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/service/IFormulaService.java

@@ -21,6 +21,7 @@ import java.util.Map;
 public interface IFormulaService extends BaseService<Formula> {
 
     void execute(TableElementConverter tec);
+
     void execute2(TableElementConverter tec);
 
 

+ 3 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ExcelTabServiceImpl.java

@@ -2383,6 +2383,9 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
 
         //获取excel流 和 html流
         InputStream exceInp = CommonUtil.getOSSInputStream(newFileUrl);
+        if(exceInp==null){
+            return R.fail(wbsTreeContract.getNodeName()+"excel为找到");
+        }
 
         Workbook workbook = null;
         int index = newFileUrl.lastIndexOf(".");

+ 22 - 15
blade-service/blade-meter/src/main/java/org/springblade/meter/controller/TaskController.java

@@ -29,6 +29,7 @@ import lombok.Data;
 import net.logstash.logback.encoder.org.apache.commons.lang3.ObjectUtils;
 import org.apache.commons.lang.StringUtils;
 import org.apache.commons.lang.time.DateUtils;
+import org.apache.pdfbox.io.MemoryUsageSetting;
 import org.apache.pdfbox.pdmodel.PDDocument;
 import org.apache.pdfbox.pdmodel.PDPage;
 import org.apache.poi.ss.usermodel.*;
@@ -4992,7 +4993,7 @@ public class TaskController extends BladeController {
                                  pageStart = 300 * i;
                                  pageEnd = pageNum;
                              }
-                             int pdfByPage = this.getPdfByPage(pageStart, pageEnd, pdfUrl, localPdf);
+                             int pdfByPage = this.getPdfByPage(pageStart, pageEnd, lasPdf, localPdf);
                              if(pdfByPage==0){
                                  BladeFile bladeFile1 = newIOSSClient.uploadFile( SnowFlakeUtil.get() + ".pdf", localPdf);
                                  String pagePdfUrl=bladeFile1.getLink();
@@ -5008,29 +5009,35 @@ public class TaskController extends BladeController {
             return this.pdfUrl;
         }
         public int getPdfByPage(int startPage, int endPage, String filePath, String savePath) {
-            try {
-                InputStream inputStreamByUrl = CommonUtil.getOSSInputStream3(filePath);
-                // 加载PDF文件
-                PDDocument document = PDDocument.load(inputStreamByUrl);
-                // 创建新文档
-                PDDocument newDocument = new PDDocument();
+            // 使用try-with-resources自动关闭资源
+            try (InputStream inputStream = new FileInputStream(filePath);
+                 PDDocument document = PDDocument.load(inputStream, MemoryUsageSetting.setupMixed(100 * 1024 * 1024));
+                 PDDocument newDocument = new PDDocument()) {
+
+                int totalPages = document.getNumberOfPages();
+                int actualStart = Math.max(0, startPage - 1);
+                int actualEnd = Math.min(totalPages - 1, endPage - 1);
 
-                // 注意:PDFBox中的页面索引从0开始
-                int actualStart = Math.max(0, startPage - 1); // 将用户输入的1转换为0
-                int actualEnd = Math.min(document.getNumberOfPages() - 1, endPage - 1); // 将用户输入的10转换为9
+                // 参数校验
+                if (actualStart > actualEnd) {
+                    throw new IllegalArgumentException("起始页不能大于结束页");
+                }
+                if (actualStart >= totalPages) {
+                    throw new IllegalArgumentException("起始页超出文档范围");
+                }
 
-                // 添加指定范围的页面
+                // 使用importPage替代addPage(关键优化)
                 for (int i = actualStart; i <= actualEnd; i++) {
                     PDPage page = document.getPage(i);
-                    newDocument.addPage(page);
+                    PDPage importedPage = newDocument.importPage(page);
+                    // 复制页面资源以确保格式正确
+                    importedPage.setResources(page.getResources());
                 }
 
-                // 保存为新文件
                 newDocument.save(savePath);
-                newDocument.close();
-                document.close();
                 return 0;
             } catch (Exception e) {
+                e.printStackTrace(); // 至少打印异常信息
                 return 1;
             }
         }