yangys
2025-08-16 87895ab581b2f44e3492e4395dce5fc7e8341363
替换注化
已修改3个文件
97 ■■■■■ 文件已修改
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/task/cure/CureFinishOperateTask.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/ProgramAnnotationService.java 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/test/OssTestController.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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());
    }
}