yangys
2025-09-19 e70c88930c51c7afeb3cc2ac72fbe6fad86a942c
注释都是括号问题修复
已修改8个文件
124 ■■■■■ 文件已修改
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/MesSyncService.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/service/ReceiveFileCheckService.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/DNCSendBackService.java 39 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcProgramExportDNCService.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/programannotation/AbstractProcessor.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/programannotation/AnnotationProcessor.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/programannotation/ProcessorHelper.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/test/MyTestController.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/MesSyncService.java
@@ -59,7 +59,7 @@
        updateBatchById(syncList);
    }
    int postData(JSONObject bodyJson){
    public int postData(JSONObject bodyJson){
        HttpClient client = HttpClient.newBuilder()
            .connectTimeout(Duration.ofSeconds(10))
            .build();
@@ -78,8 +78,8 @@
            HttpResponse<String> response = client.send(
                request, HttpResponse.BodyHandlers.ofString());
            System.out.println("Status Code: " + response.statusCode());
            System.out.println("Response Body: " + response.body());
            log.info("mes返回状态码{}",response.statusCode());
            log.info("mes返回body{}",response.body());
            return response.statusCode();
blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/service/ReceiveFileCheckService.java
@@ -11,6 +11,7 @@
import org.springblade.mdm.machinefile.entity.FileSendRecord;
import org.springblade.mdm.machinefile.entity.MachineFile;
import org.springblade.mdm.program.service.ProgramAnnotationService;
import org.springblade.mdm.program.service.ProgramOnMachineService;
import org.springblade.mdm.program.service.programannotation.AnnotationUtil;
import org.springblade.mdm.utils.FileContentUtil;
import org.springblade.mdm.utils.ProgramFileNameParser;
@@ -42,7 +43,7 @@
    @Autowired
    private MachineService machineService;
    @Autowired
    private ParamService paramService;
    private ProgramOnMachineService programOnMachineService;
    @Autowired
    private FileSendRecordService fileSendRecordService;
    /**
@@ -89,7 +90,7 @@
                            FileSendRecord sendFile = optFile.get();
                            ProgramNameVO sendProgNameVO =  ProgramFileNameParser.parseProgramName(sendFile.getName());
                            if(progNameVO.getSegmentCount() != sendProgNameVO.getSegmentCount()){
                                //段数不匹配
                                //段数不匹配下发记录
                                excepType = MachineFile.EXCEPTION_NOT_MATCH_SEND;
                            }
                        }
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/DNCSendBackService.java
@@ -38,13 +38,11 @@
import org.springframework.web.multipart.MultipartFile;
import java.io.*;
import java.lang.annotation.Annotation;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.StandardOpenOption;
import java.time.Duration;
import java.util.*;
import java.util.regex.Pattern;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
@@ -66,7 +64,6 @@
    private final DncBackFileService dncBackFileService;
    private final MachineService machineService;
    private final ParamService paramService;
    private final MachineAnnotationConfig machineAnnotationConfig;
    /**
     * 偏离单文件末尾的模式:P+数字
@@ -138,15 +135,7 @@
            //目录列表,即程序包列表
            for(String entryName : dirEntryNameList){
                DncSendBackData progData = new DncSendBackData();
                String folderName = StringUtils.removeEnd(entryName,"/");
                //PackageAndProcessEdition pkgAndEdition = parseProgramPackageFromFolderName(folderName);
                String packageName = folderName;//pkgAndEdition.getProgramPackageName();
                //String processEdition = pkgAndEdition.getProcessEdition();
                /*
                if(StringUtils.isBlank(packageName) || StringUtils.isBlank(processEdition)){
                    throw new ServiceException("包内文件夹名格式错误,应该为[零组件号-工序号-工序版次]:"+folderName);
                }*/
                String packageName = StringUtils.removeEnd(entryName,"/");
                progData.setProgramName(packageName);
                Optional<String> optFilename = fileEntryNameList.stream().filter(n -> n.startsWith(entryName)).findFirst();
@@ -162,7 +151,6 @@
                    String sendPathLine = FileContentUtil.readLineAt(bais,defAnnoProperties.getSendPathLineIndex());//状态注释行
                    bais.reset();
                    if(statusLine.contains("GH")){
                        //固化,不应回传,忽略
                        log.warn("状态{},不应回传,忽略",statusLine);
@@ -174,24 +162,14 @@
                        throw new ServiceException("根据下发路径未找到程序对应的机床:"+sendPathLine);
                    }
                    if(statusLine.contains("SQ")){
                    if(statusLine.contains(AnnotationUtil.SQ)){
                        //试切
                        programPackageNode = ncNodeService.getLastEditionTryingProgramPackage(packageName);//TODO 还需根据机床组(如何获取?根据下发路径获取机床,进而获取),,processEdition
                    }else if(statusLine.contains("PL")){
                        //偏离
                    }else if(statusLine.contains(AnnotationUtil.LG)){
                        //临时更改单
                        programPackageNode =ncNodeService.getLastEditionDeviationProgramPackage(packageName);
                    }else{
                        //查询是否车床/现场编制,是车床可以放过,按试切处理,
                        //TODO 现场编制的程序,打包时必须在文件中增加下发路径(加入后)
                        programPackageNode = ncNodeService.getLastEditionTryingProgramPackage(packageName);
                        if(programPackageNode!=null){
                            String chechuangVal = paramService.turninngValue();
                            if(StringUtils.equals(machine.getMachineSpec(),chechuangVal)){
                                //车床
                                ProgramAnnotation pa = AnnotationUtil.getProgramAnnotationFormat(machine.getControlSystem(),annotionDictList);
                                statusLine = pa.addAnnotation(ProgramAnnotationService.SQ);
                            }
                        }
                        throw new ServiceException("状态注释不在范围内:"+statusLine+",仅试切、临时更改单可以回传");
                    }
                    if(programPackageNode != null) {
@@ -289,10 +267,7 @@
            //根据内部文件,读取和分析程序包和程序文件数据
            List<String> dirList = entryNameList.stream().filter(s -> s.endsWith("/")).toList();
            for(String dir : dirList){
                String folderName = StringUtils.removeEnd(dir,"/");
                //PackageAndProcessEdition pkgAndEdition = folderName;//parseProgramPackageFromFolderName(folderName);
                String programPackageName = folderName; //pkgAndEdition.getProgramPackageName();
                String programPackageName = StringUtils.removeEnd(dir,"/");
                Optional<NcNode> optPackageNode = allAcceptPackages.stream().filter(node -> StringUtils.equals(node.getName(),programPackageName)).findFirst();
@@ -332,7 +307,7 @@
                            FlowProgramFile newFlowFile = new FlowProgramFile();
                            newFlowFile.setProgramName(packageNode.getName());
                            newFlowFile.setProcessInstanceId(null);//先置为空,启动流程后设置该值
                            newFlowFile.setFileType("program");
                            newFlowFile.setFileType(FlowProgramFile.TYPE_PROGRAM);
                            newFlowFile.setName(fileName);
                            InputStream ins = zipFile.getInputStream(zipFile.getEntry(entryName));
                            BladeFile newOssFile = ossTemplate.putFile("mdm",fileName,ins);
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcProgramExportDNCService.java
@@ -21,10 +21,7 @@
import org.springblade.mdm.program.entity.NcProgramApproved;
import org.springblade.mdm.program.entity.NcProgramExchange;
import org.springblade.mdm.program.mapper.NcProgramExchangeMapper;
import org.springblade.mdm.program.service.programannotation.AnnotationData;
import org.springblade.mdm.program.service.programannotation.AnnotationProcessor;
import org.springblade.mdm.program.service.programannotation.MachineAnnotationConfig;
import org.springblade.mdm.program.service.programannotation.ProcessorHelper;
import org.springblade.mdm.program.service.programannotation.*;
import org.springblade.system.feign.IDictClient;
import org.springframework.stereotype.Service;
@@ -108,11 +105,11 @@
        FlowProgramFile programFile;
        NcNodeHis programPackageNode = this.ncNodeHisService.getById(approved.getNcNodeId());
        String status = "SQ";
        String status = AnnotationUtil.SQ;
        if(programPackageNode.isDeviationProgram()){
            status = "PL";
            status = AnnotationUtil.LG;
        }else if(programPackageNode.hasCured()){
            status = "GH";
            status = AnnotationUtil.GH;
        }
        long deviationSerial = -1;//偏离单序号 ,-1为非偏离单,不需要加入
        if(packageNodeHis.isDeviationProgram()) {
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/programannotation/AbstractProcessor.java
@@ -18,7 +18,29 @@
    private ProgramAnnotationService programAnnotationService;
    protected AnnotationProperties annotationProperties;
    @Override
    public InputStream putSendPathAnnotation(String sendPath, InputStream inputStream,List<DictBiz> annoDicts) throws IOException{
        InputStream finishedStream;
        try(inputStream){
            ByteArrayInputStream byteInputStream =  new ByteArrayInputStream(IOUtils.toByteArray(inputStream));
            //1加入发送路径的注释
            String sendPathAnnotation = AnnotationUtil.generateAnnotation(sendPath,getControlSystem(),annoDicts);//加了注释之后的文本
            String sendDirLine = FileContentUtil.readLineAt(byteInputStream,annotationProperties.getSendPathLineIndex());//第2行是发送路径
            byteInputStream.reset();
            if(AnnotationUtil.isAnnotation(sendDirLine,getControlSystem(),annoDicts)){
                finishedStream = FileContentUtil.replaceAtLine(byteInputStream,annotationProperties.getSendPathLineIndex(),sendPathAnnotation);
            }else{
                finishedStream = FileContentUtil.insertLine(byteInputStream,annotationProperties.getSendPathLineIndex(),sendPathAnnotation);
            }
            finishedStream.reset();
        }
        return finishedStream;
    }
    @Override
    public InputStream putFilenameAnnotation(String fileName, InputStream inputStream) throws IOException {
        List<DictBiz> annoDicts = programAnnotationService.getAnnotionDictList();
@@ -47,6 +69,7 @@
            ByteArrayInputStream byteInputStream =  new ByteArrayInputStream(IOUtils.toByteArray(inputStream));
            //1加入发送路径的注释
            /*
            String sendPathAnnotation = AnnotationUtil.generateAnnotation(annoData.getSendPath(),getControlSystem(),annoDicts);//加了注释之后的文本
            String sendDirLine = FileContentUtil.readLineAt(byteInputStream,annotationProperties.getSendPathLineIndex());//第2行是发送路径
@@ -62,6 +85,13 @@
            }
            insAfterSetSendDir.reset();
            */
            InputStream insAfterSetSendDir = putSendPathAnnotation(annoData.getSendPath(),byteInputStream,annoDicts);
            String statusLine = FileContentUtil.readLineAt(insAfterSetSendDir,annotationProperties.getStatusLineIndex());//状态注释
            insAfterSetSendDir.reset();
            //加入状态注释行
            String statusAnnotation = AnnotationUtil.generateAnnotation(annoData.getProgramStatus(),getControlSystem(),annoDicts);//注释后的状态文本
            if(AnnotationUtil.isAnnotation(statusLine,getControlSystem(),annoDicts)){
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/programannotation/AnnotationProcessor.java
@@ -1,7 +1,10 @@
package org.springblade.mdm.program.service.programannotation;
import org.springblade.system.pojo.entity.DictBiz;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
public interface AnnotationProcessor {
@@ -9,6 +12,9 @@
    void setControlSystem(String controlSystemDictVal);
    void setAnnotationProperties(AnnotationProperties annotationProperties);
    String getControlSystem();
    InputStream putSendPathAnnotation(String sendPath, InputStream inputStream, List<DictBiz> annoDicts) throws IOException;
    InputStream putAnnotation(AnnotationData annoData, InputStream inputStream) throws IOException;
    InputStream putFilenameAnnotation(String programName, InputStream inputStream) throws IOException;
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/programannotation/ProcessorHelper.java
@@ -13,11 +13,12 @@
        if(props != null){
            processor = SpringUtil.getBean(props.getBeanId());
            processor.setAnnotationProperties(props);
        }else{
            processor = SpringUtil.getBean(DefaultProcessor.class);
            processor.setAnnotationProperties(AnnotationProperties.getDefault());
        }
        processor.setControlSystem(controlSystem);
        return processor;
    }
}
blade-service/blade-mdm/src/main/java/org/springblade/mdm/test/MyTestController.java
@@ -1,5 +1,7 @@
package org.springblade.mdm.test;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.mail.MessagingException;
@@ -10,9 +12,11 @@
import org.apache.neethi.AssertionBuilderFactory;
import org.apache.ws.commons.schema.XmlSchemaSerializer;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.DateUtil;
import org.springblade.core.tool.utils.SpringUtil;
import org.springblade.mdm.basesetting.machine.entity.Machine;
import org.springblade.mdm.commons.service.InternalEmailService;
import org.springblade.mdm.flow.entity.MesSync;
import org.springblade.mdm.flow.excution.events.CureFinishedEvent;
import org.springblade.mdm.flow.service.MesSyncService;
import org.springblade.mdm.flow.service.WIthdrawService;
@@ -151,4 +155,24 @@
        SpringUtil.publishEvent(e);
    }
    @GetMapping("/call-mes")
    public void callMess(){
        JSONObject jsonObject = new JSONObject();
        JSONArray dataList = new JSONArray();
        JSONObject item = new JSONObject();
        item.put("operationId","id1");
        item.put("programNo","00001");
        item.put("curedTime", DateUtil.formatDateTime(new Date()));
        dataList.add(item);
        jsonObject.put("batchData", dataList);
        log.info("mestest data:{}",jsonObject);
        int code = mesSyncService.postData(jsonObject);
        log.info("mestest response:{}",code);
    }
}