blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/task/cure/CureFinishOperateTask.java
@@ -2,6 +2,7 @@ import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.io.IOUtils; import org.checkerframework.checker.units.qual.N; import org.flowable.engine.delegate.DelegateExecution; import org.springblade.core.oss.OssTemplate; @@ -25,6 +26,7 @@ import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; import java.time.LocalDate; @@ -154,14 +156,18 @@ String ossName = flowProgramFile.getOssName(); // try(InputStream ins = ossTemplate.statFileStream(ossName);){ byte[] bytes = IOUtils.toByteArray(ins); ByteArrayInputStream byteInputStream = new ByteArrayInputStream(bytes); String annoTxt = programAnnotationService.generateAnnotation("GH",machineGroup,annoDicts); int statusLineIndex = 2; String line2 = FileContentUtil.readLineAt(ins,statusLineIndex);//第三行应该是状态注释 String line2 = FileContentUtil.readLineAt(byteInputStream,statusLineIndex);//第三行应该是状态注释 byteInputStream.reset(); InputStream finishedStream; if(programAnnotationService.isAnnotation(line2,machineGroup,annoDicts)){ finishedStream = FileContentUtil.replaceAtLine(ins,statusLineIndex,annoTxt); finishedStream = FileContentUtil.replaceAtLine(byteInputStream,statusLineIndex,annoTxt); }else{ finishedStream = FileContentUtil.insertLine(ins,statusLineIndex,annoTxt); finishedStream = FileContentUtil.insertLine(byteInputStream,statusLineIndex,annoTxt); } try(finishedStream) { finishedStream.reset(); blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/ProgramAnnotationService.java
@@ -2,13 +2,20 @@ package org.springblade.mdm.program.service; import lombok.extern.slf4j.Slf4j; import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.StringUtils; import org.springblade.core.oss.model.BladeFile; import org.springblade.core.tool.api.R; import org.springblade.mdm.flow.entity.FlowProgramFile; import org.springblade.mdm.utils.FileContentUtil; import org.springblade.system.feign.IDictClient; import org.springblade.system.pojo.entity.Dict; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; import java.util.Collections; import java.util.List; import java.util.Optional; @@ -125,5 +132,38 @@ String temp = StringUtils.removeEnd(StringUtils.removeStart(text,begin),end); return temp; } /** * 为程序文件增加注释 * @param oriText 原始文本 * @param lineIndex 行索引 0 based * @param inputStream 文件的输入流 * @param machineGroup 机床组 生成注释用 * @return 加注释后的流 * @throws IOException */ public InputStream setAnnotation(String oriText,int lineIndex,InputStream inputStream, String machineGroup) throws IOException { List<Dict> annoDicts = getAnnotionList(); // InputStream finishedStream; try(inputStream){ ByteArrayInputStream byteInputStream = new ByteArrayInputStream(IOUtils.toByteArray(inputStream)); String annoTxt = generateAnnotation(oriText,machineGroup,annoDicts);//加了注释之后的文本 String lineText = FileContentUtil.readLineAt(byteInputStream,lineIndex);//第三行应该是状态注释 byteInputStream.reset(); if(isAnnotation(lineText,machineGroup,annoDicts)){ finishedStream = FileContentUtil.replaceAtLine(byteInputStream,lineIndex,annoTxt); }else{ finishedStream = FileContentUtil.insertLine(byteInputStream,lineIndex,annoTxt); } finishedStream.reset(); } return finishedStream; } } blade-service/blade-mdm/src/main/java/org/springblade/mdm/test/OssTestController.java
@@ -7,12 +7,15 @@ import io.swagger.v3.oas.annotations.tags.Tag; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.io.IOUtils; import org.springblade.core.oss.OssTemplate; import org.springblade.core.oss.model.BladeFile; import org.springblade.core.tenant.annotation.NonDS; import org.springblade.core.tool.api.R; import org.springblade.core.tool.utils.FileUtil; import org.springblade.mdm.program.service.ProgramAnnotationService; import org.springblade.mdm.utils.FileContentUtil; import org.springblade.system.pojo.entity.Dict; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -38,6 +41,7 @@ @Slf4j public class OssTestController { private final OssTemplate ossTemplate; private final ProgramAnnotationService programAnnotationService; @GetMapping("/readzip") @ApiOperationSupport(order = 2) @Operation(summary = "读zip") @@ -86,4 +90,45 @@ return R.data(bfile.getLink()+","+bfile.getName()); } @GetMapping("/replace2") @ApiOperationSupport(order = 2) @Operation(summary = "替换内容2") public R<String> replace() throws IOException { String ossName = "upload/20250816/fb971fa2186b5572443687e9fa425123.txt";//这是里面已有的文件 String filename = "CP3-1-1-1.txt"; String machineGroup = "FANUC"; List<Dict> annoDicts = programAnnotationService.getAnnotionList(); BladeFile bfile = null; try(InputStream ins = ossTemplate.statFileStream(ossName);){ byte[] bytes = IOUtils.toByteArray(ins); ByteArrayInputStream byteins = new ByteArrayInputStream(bytes); String annoTxt = programAnnotationService.generateAnnotation("GH",machineGroup,annoDicts); int statusLineIndex = 2; String line2 = FileContentUtil.readLineAt(byteins,statusLineIndex);//第三行应该是状态注释 byteins.reset(); InputStream finishedStream; if(programAnnotationService.isAnnotation(line2,machineGroup,annoDicts)){ finishedStream = FileContentUtil.replaceAtLine(byteins,statusLineIndex,annoTxt); }else{ finishedStream = FileContentUtil.insertLine(byteins,statusLineIndex,annoTxt); } try(finishedStream) { finishedStream.reset(); bfile = ossTemplate.putFile(filename, finishedStream); //替换原有的文件地址 //flowProgramFile.setOssName(bfile.getName()); } } /* InputStream ins = ossTemplate.statFileStream(ossName); InputStream newins = FileContentUtil.replaceAtLine(fis,2,"GHTEST"); BladeFile bfile = ossTemplate.putFile("replaceok.txt",newins); */ return R.data(bfile.getLink()+","+bfile.getName()); } }